Version Description
- Enhance: Minor user experience improvements and updates
- Fix: Bulk Smush notices and errors
Download this release
Release Info
Developer | vanyukov |
Plugin | Smush Image Compression and Optimization |
Version | 3.2.4 |
Comparing to | |
See all releases |
Code changes from version 3.2.2.1 to 3.2.4
- _src/js/modules/bulk-smush.js +3 -0
- _src/js/shared-ui.js +2 -2
- _src/js/smush/smush.js +3 -1
- _src/scss/app.scss +6 -0
- _src/scss/modules/_admin.scss +75 -3
- app/abstract-wp-smush-view.php +20 -13
- app/assets/css/smush-admin.min.css +367 -3
- app/assets/images/hero.png +0 -0
- app/assets/images/hero@2x.png +0 -0
- app/assets/js/smush-admin.min.js +4 -4
- app/assets/js/smush-admin.min.js.map +0 -1
_src/js/modules/bulk-smush.js
CHANGED
@@ -29,6 +29,9 @@ import Smush from '../smush/smush';
|
|
29 |
progress.removeClass( 'wp-smush-exceed-limit' );
|
30 |
progress.find( '.sui-progress-block .wp-smush-all' ).addClass('sui-hidden');
|
31 |
progress.find( '.sui-progress-block .wp-smush-cancel-bulk' ).removeClass('sui-hidden');
|
|
|
|
|
|
|
32 |
|
33 |
// Disable re-Smush and scan button.
|
34 |
// TODO: refine what is disabled.
|
29 |
progress.removeClass( 'wp-smush-exceed-limit' );
|
30 |
progress.find( '.sui-progress-block .wp-smush-all' ).addClass('sui-hidden');
|
31 |
progress.find( '.sui-progress-block .wp-smush-cancel-bulk' ).removeClass('sui-hidden');
|
32 |
+
if ( bulkWarning ) {
|
33 |
+
document.getElementById( 'bulk-smush-resume-button' ).classList.add( 'sui-hidden' );
|
34 |
+
}
|
35 |
|
36 |
// Disable re-Smush and scan button.
|
37 |
// TODO: refine what is disabled.
|
_src/js/shared-ui.js
CHANGED
@@ -7,5 +7,5 @@ require('@wpmudev/shared-ui/dist/js/_src/notifications');
|
|
7 |
require('@wpmudev/shared-ui/dist/js/_src/scores');
|
8 |
require('@wpmudev/shared-ui/dist/js/_src/select');
|
9 |
require('@wpmudev/shared-ui/dist/js/_src/tabs');
|
10 |
-
// Used on lazy load page (since 3.2.2).
|
11 |
-
require('@wpmudev/shared-ui/dist/js/_src/
|
7 |
require('@wpmudev/shared-ui/dist/js/_src/scores');
|
8 |
require('@wpmudev/shared-ui/dist/js/_src/select');
|
9 |
require('@wpmudev/shared-ui/dist/js/_src/tabs');
|
10 |
+
require('@wpmudev/shared-ui/dist/js/_src/upload'); // Used on lazy load page (since 3.2.2).
|
11 |
+
require('@wpmudev/shared-ui/dist/js/_src/reviews');
|
_src/js/smush/smush.js
CHANGED
@@ -145,7 +145,7 @@ class Smush {
|
|
145 |
jQuery( '.sui-notice-top' ).remove();
|
146 |
|
147 |
// Hide the bulk limit message.
|
148 |
-
jQuery( '.wp-smush-bulk-progress-bar-wrapper .sui-notice-warning' ).hide();
|
149 |
|
150 |
// Hide parent wrapper, if there are no other messages.
|
151 |
if ( 0 >= jQuery( 'div.smush-final-log .smush-bulk-error-row' ).length ) {
|
@@ -539,6 +539,8 @@ class Smush {
|
|
539 |
progress.find('i.sui-icon-loader').addClass('sui-icon-info')
|
540 |
.removeClass('sui-icon-loader')
|
541 |
.removeClass('sui-loading');
|
|
|
|
|
542 |
};
|
543 |
|
544 |
/**
|
145 |
jQuery( '.sui-notice-top' ).remove();
|
146 |
|
147 |
// Hide the bulk limit message.
|
148 |
+
jQuery( '.wp-smush-bulk-progress-bar-wrapper .sui-notice-warning:first-of-type' ).hide();
|
149 |
|
150 |
// Hide parent wrapper, if there are no other messages.
|
151 |
if ( 0 >= jQuery( 'div.smush-final-log .smush-bulk-error-row' ).length ) {
|
539 |
progress.find('i.sui-icon-loader').addClass('sui-icon-info')
|
540 |
.removeClass('sui-icon-loader')
|
541 |
.removeClass('sui-loading');
|
542 |
+
|
543 |
+
document.getElementById( 'bulk-smush-resume-button' ).classList.remove( 'sui-hidden' );
|
544 |
};
|
545 |
|
546 |
/**
|
_src/scss/app.scss
CHANGED
@@ -1,3 +1,6 @@
|
|
|
|
|
|
|
|
1 |
// This needs to be here.
|
2 |
@import "modules/variables";
|
3 |
|
@@ -37,6 +40,9 @@
|
|
37 |
@import "~@wpmudev/shared-ui/scss/box-selectors";
|
38 |
@import "~@wpmudev/shared-ui/scss/upload";
|
39 |
@import "~@wpmudev/shared-ui/scss/_colorpickers.scss";
|
|
|
|
|
|
|
40 |
|
41 |
// App styles
|
42 |
@import "modules/admin";
|
1 |
+
$upgrade-image: '../../app/assets/images/hero@2x.png';
|
2 |
+
$upgrade-image-mobile: '../../app/assets/images/hero.png';
|
3 |
+
|
4 |
// This needs to be here.
|
5 |
@import "modules/variables";
|
6 |
|
40 |
@import "~@wpmudev/shared-ui/scss/box-selectors";
|
41 |
@import "~@wpmudev/shared-ui/scss/upload";
|
42 |
@import "~@wpmudev/shared-ui/scss/_colorpickers.scss";
|
43 |
+
// Upgrade page (since 3.2.3).
|
44 |
+
@import "~@wpmudev/shared-ui/scss/upgrade-page";
|
45 |
+
@import "~@wpmudev/shared-ui/scss/reviews";
|
46 |
|
47 |
// App styles
|
48 |
@import "modules/admin";
|
_src/scss/modules/_admin.scss
CHANGED
@@ -4,6 +4,74 @@
|
|
4 |
|
5 |
.sui-wrap {
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
/**
|
8 |
* Lazy loading
|
9 |
*
|
@@ -355,7 +423,11 @@
|
|
355 |
// Bulk smush and directory smush (overwrite when the limit is exceeded)
|
356 |
.wp-smush-exceed-limit {
|
357 |
.wp-smush-progress-inner {
|
358 |
-
background: #
|
|
|
|
|
|
|
|
|
359 |
}
|
360 |
}
|
361 |
// Directory smush overwrites when limit exceeded
|
@@ -369,7 +441,7 @@
|
|
369 |
.sui-icon-loader {
|
370 |
@include icon( before, info );
|
371 |
&:before {
|
372 |
-
color: #
|
373 |
animation: none;
|
374 |
}
|
375 |
}
|
@@ -608,7 +680,7 @@
|
|
608 |
padding: 0 0 0 30px;
|
609 |
position: relative;
|
610 |
&:before {
|
611 |
-
color: #
|
612 |
vertical-align: middle;
|
613 |
margin-left: -30px;
|
614 |
margin-right: 10px;
|
4 |
|
5 |
.sui-wrap {
|
6 |
|
7 |
+
/**
|
8 |
+
* Upesll notices.
|
9 |
+
*
|
10 |
+
* @since 3.2.3
|
11 |
+
*/
|
12 |
+
.smush-upsell-notice {
|
13 |
+
margin-left: 130px;
|
14 |
+
@media screen and (max-width: 782px) {
|
15 |
+
margin-left: 0;
|
16 |
+
}
|
17 |
+
}
|
18 |
+
|
19 |
+
@media screen and (min-width: 1140px) {
|
20 |
+
.sui-upgrade-page-header__image {
|
21 |
+
width: 45% !important;
|
22 |
+
}
|
23 |
+
}
|
24 |
+
|
25 |
+
.sui-upgrade-page {
|
26 |
+
.sui-upgrade-page-cta__inner a:hover {
|
27 |
+
color: #fff !important;
|
28 |
+
}
|
29 |
+
|
30 |
+
.smush-stats {
|
31 |
+
position: relative;
|
32 |
+
display: flex;
|
33 |
+
justify-content: space-between;
|
34 |
+
width: 600px;
|
35 |
+
height: 100px;
|
36 |
+
border-radius: 4px;
|
37 |
+
background-color: #FFFFFF;
|
38 |
+
box-shadow: 0 0 20px 0 rgba(0,0,0,0.05);
|
39 |
+
margin: -100px auto 30px;
|
40 |
+
padding: 20px 40px;
|
41 |
+
text-align: center;
|
42 |
+
font-size: 15px;
|
43 |
+
font-weight: 500;
|
44 |
+
color: #333333;
|
45 |
+
|
46 |
+
.smush-stats-description {
|
47 |
+
color: #888888;
|
48 |
+
font-size: 12px;
|
49 |
+
text-transform: uppercase;
|
50 |
+
}
|
51 |
+
|
52 |
+
span {
|
53 |
+
font-size: 24px;
|
54 |
+
}
|
55 |
+
}
|
56 |
+
|
57 |
+
@media (max-width: 800px) {
|
58 |
+
.smush-stats {
|
59 |
+
margin-top: 0;
|
60 |
+
height: auto;
|
61 |
+
width: 75%;
|
62 |
+
flex-wrap: wrap;
|
63 |
+
}
|
64 |
+
|
65 |
+
.smush-stats-item {
|
66 |
+
flex-basis: 100%;
|
67 |
+
}
|
68 |
+
|
69 |
+
.smush-stats-item:nth-child(2) {
|
70 |
+
margin: 20px 0;
|
71 |
+
}
|
72 |
+
}
|
73 |
+
}
|
74 |
+
|
75 |
/**
|
76 |
* Lazy loading
|
77 |
*
|
423 |
// Bulk smush and directory smush (overwrite when the limit is exceeded)
|
424 |
.wp-smush-exceed-limit {
|
425 |
.wp-smush-progress-inner {
|
426 |
+
background: #FECF2F !important;
|
427 |
+
}
|
428 |
+
|
429 |
+
.sui-icon-info:before {
|
430 |
+
color: #FECF2F;
|
431 |
}
|
432 |
}
|
433 |
// Directory smush overwrites when limit exceeded
|
441 |
.sui-icon-loader {
|
442 |
@include icon( before, info );
|
443 |
&:before {
|
444 |
+
color: #FECF2F;
|
445 |
animation: none;
|
446 |
}
|
447 |
}
|
680 |
padding: 0 0 0 30px;
|
681 |
position: relative;
|
682 |
&:before {
|
683 |
+
color: #8D00B1;
|
684 |
vertical-align: middle;
|
685 |
margin-left: -30px;
|
686 |
margin-right: 10px;
|
app/abstract-wp-smush-view.php
CHANGED
@@ -54,40 +54,47 @@ abstract class WP_Smush_View {
|
|
54 |
/**
|
55 |
* WP_Smush_View constructor.
|
56 |
*
|
|
|
57 |
* @param string $title Page title.
|
58 |
-
* @param
|
59 |
-
* @param bool $
|
60 |
*/
|
61 |
-
public function __construct( $title, $
|
62 |
$this->slug = $slug;
|
63 |
$this->settings = WP_Smush_Settings::get_instance();
|
64 |
|
65 |
-
if ( ! $
|
66 |
$this->page_id = add_menu_page(
|
67 |
$title,
|
68 |
$title,
|
69 |
'manage_options',
|
70 |
$this->slug,
|
71 |
-
array( $this, 'render' ),
|
72 |
$this->get_menu_icon()
|
73 |
);
|
74 |
} else {
|
75 |
$this->page_id = add_submenu_page(
|
76 |
-
|
77 |
$title,
|
78 |
$title,
|
79 |
-
'NextGEN Manage gallery',
|
80 |
$this->slug,
|
81 |
array( $this, 'render' )
|
82 |
);
|
83 |
|
84 |
-
//
|
85 |
-
|
|
|
|
|
|
|
86 |
}
|
87 |
|
88 |
-
|
89 |
-
|
90 |
-
|
|
|
|
|
|
|
91 |
}
|
92 |
|
93 |
/**
|
@@ -636,7 +643,7 @@ abstract class WP_Smush_View {
|
|
636 |
}
|
637 |
|
638 |
// Show settings saved message.
|
639 |
-
if (
|
640 |
return;
|
641 |
}
|
642 |
|
54 |
/**
|
55 |
* WP_Smush_View constructor.
|
56 |
*
|
57 |
+
* @param string $slug Page slug.
|
58 |
* @param string $title Page title.
|
59 |
+
* @param bool $parent Does a page have a parent (will be added as a sub menu).
|
60 |
+
* @param bool $nextgen Is that a NextGen subpage.
|
61 |
*/
|
62 |
+
public function __construct( $slug, $title, $parent = false, $nextgen = false ) {
|
63 |
$this->slug = $slug;
|
64 |
$this->settings = WP_Smush_Settings::get_instance();
|
65 |
|
66 |
+
if ( ! $parent ) {
|
67 |
$this->page_id = add_menu_page(
|
68 |
$title,
|
69 |
$title,
|
70 |
'manage_options',
|
71 |
$this->slug,
|
72 |
+
$parent ? array( $this, 'render' ) : null,
|
73 |
$this->get_menu_icon()
|
74 |
);
|
75 |
} else {
|
76 |
$this->page_id = add_submenu_page(
|
77 |
+
$parent,
|
78 |
$title,
|
79 |
$title,
|
80 |
+
$nextgen ? 'NextGEN Manage gallery' : 'manage_options',
|
81 |
$this->slug,
|
82 |
array( $this, 'render' )
|
83 |
);
|
84 |
|
85 |
+
// TODO: can this be moved out to the NextGen admin class?
|
86 |
+
if ( $nextgen ) {
|
87 |
+
// Enqueue js on Post screen (Edit screen for media ).
|
88 |
+
add_action( 'admin_print_scripts-' . $this->page_id, array( WP_Smush::get_instance()->core()->nextgen->ng_admin, 'localize' ) );
|
89 |
+
}
|
90 |
}
|
91 |
|
92 |
+
// No need to load these action on parent pages, as they are just placeholders for sub pages.
|
93 |
+
if ( $parent ) {
|
94 |
+
add_filter( 'load-' . $this->page_id, array( $this, 'on_load' ) );
|
95 |
+
add_action( 'load-' . $this->page_id, array( $this, 'register_meta_boxes' ) );
|
96 |
+
add_filter( 'load-' . $this->page_id, array( $this, 'add_action_hooks' ) );
|
97 |
+
}
|
98 |
}
|
99 |
|
100 |
/**
|
643 |
}
|
644 |
|
645 |
// Show settings saved message.
|
646 |
+
if ( ! $this->settings->get_setting( WP_SMUSH_PREFIX . 'settings_updated' ) ) {
|
647 |
return;
|
648 |
}
|
649 |
|
app/assets/css/smush-admin.min.css
CHANGED
@@ -434,6 +434,7 @@
|
|
434 |
.sui-2-3-29 .sui-wrap .sui-box-selector input:checked+span:before,
|
435 |
.sui-2-3-29 .sui-wrap .sui-upload .sui-upload-image .sui-image-preview:before,
|
436 |
.sui-2-3-29 .sui-wrap .sui-upload .sui-upload-file:before,
|
|
|
437 |
.sui-2-3-29 .sui-wrap .wp-smush-progress-dialog.wp-smush-exceed-limit .sui-progress .sui-progress-icon .sui-icon-loader:before,
|
438 |
.sui-2-3-29 .sui-wrap .smush-pro-features .smush-pro-feature-title:before,
|
439 |
.sui-2-3-29 .sui-wrap .sui-button.smush-button-check-success:before,
|
@@ -10945,6 +10946,365 @@ html.sui-has-overlay {
|
|
10945 |
}
|
10946 |
}
|
10947 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10948 |
.sui-2-3-29 .sui-wrap .sui-meta-boxes-lazyload #smush-lazy-load-spinners span.sui-description:first-of-type,
|
10949 |
.sui-2-3-29 .sui-wrap .sui-meta-boxes-lazyload #smush-lazy-load-placeholder span.sui-description:first-of-type {
|
10950 |
margin-bottom: 20px;
|
@@ -11326,7 +11686,11 @@ html.sui-has-overlay {
|
|
11326 |
}
|
11327 |
|
11328 |
.sui-2-3-29 .sui-wrap .wp-smush-exceed-limit .wp-smush-progress-inner {
|
11329 |
-
background: #
|
|
|
|
|
|
|
|
|
11330 |
}
|
11331 |
|
11332 |
.sui-2-3-29 .sui-wrap .wp-smush-progress-dialog.wp-smush-exceed-limit .sui-hidden {
|
@@ -11338,7 +11702,7 @@ html.sui-has-overlay {
|
|
11338 |
}
|
11339 |
|
11340 |
.sui-2-3-29 .sui-wrap .wp-smush-progress-dialog.wp-smush-exceed-limit .sui-progress .sui-progress-icon .sui-icon-loader:before {
|
11341 |
-
color: #
|
11342 |
animation: none;
|
11343 |
}
|
11344 |
|
@@ -11572,7 +11936,7 @@ html.sui-has-overlay {
|
|
11572 |
}
|
11573 |
|
11574 |
.sui-2-3-29 .sui-wrap .smush-pro-features .smush-pro-feature-title:before {
|
11575 |
-
color: #
|
11576 |
vertical-align: middle;
|
11577 |
margin-left: -30px;
|
11578 |
margin-right: 10px;
|
434 |
.sui-2-3-29 .sui-wrap .sui-box-selector input:checked+span:before,
|
435 |
.sui-2-3-29 .sui-wrap .sui-upload .sui-upload-image .sui-image-preview:before,
|
436 |
.sui-2-3-29 .sui-wrap .sui-upload .sui-upload-file:before,
|
437 |
+
.sui-2-3-29 .sui-wrap .sui-reviews__stars:before,
|
438 |
.sui-2-3-29 .sui-wrap .wp-smush-progress-dialog.wp-smush-exceed-limit .sui-progress .sui-progress-icon .sui-icon-loader:before,
|
439 |
.sui-2-3-29 .sui-wrap .smush-pro-features .smush-pro-feature-title:before,
|
440 |
.sui-2-3-29 .sui-wrap .sui-button.smush-button-check-success:before,
|
10946 |
}
|
10947 |
}
|
10948 |
|
10949 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page {
|
10950 |
+
background: #FAFAFA;
|
10951 |
+
margin: -30px -30px 60px;
|
10952 |
+
}
|
10953 |
+
|
10954 |
+
@media (max-width: 783px) {
|
10955 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page {
|
10956 |
+
margin: -21px -10px 0;
|
10957 |
+
}
|
10958 |
+
}
|
10959 |
+
|
10960 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page__container {
|
10961 |
+
max-width: 1140px;
|
10962 |
+
margin: auto;
|
10963 |
+
display: -ms-flexbox;
|
10964 |
+
display: flex;
|
10965 |
+
}
|
10966 |
+
|
10967 |
+
@media (max-width: 800px) {
|
10968 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page__container {
|
10969 |
+
-ms-flex-wrap: wrap;
|
10970 |
+
flex-wrap: wrap;
|
10971 |
+
}
|
10972 |
+
}
|
10973 |
+
|
10974 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-header {
|
10975 |
+
background: #fff;
|
10976 |
+
margin-bottom: 60px;
|
10977 |
+
}
|
10978 |
+
|
10979 |
+
@media (max-width: 600px) {
|
10980 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-header {
|
10981 |
+
margin-bottom: 40px;
|
10982 |
+
}
|
10983 |
+
}
|
10984 |
+
|
10985 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-header__content {
|
10986 |
+
padding: 60px 60px 60px 0;
|
10987 |
+
width: 50%;
|
10988 |
+
}
|
10989 |
+
|
10990 |
+
@media (max-width: 1440px) {
|
10991 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-header__content {
|
10992 |
+
padding: 60px 30px 50px 60px;
|
10993 |
+
}
|
10994 |
+
}
|
10995 |
+
|
10996 |
+
@media (max-width: 800px) {
|
10997 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-header__content {
|
10998 |
+
-ms-flex-order: 1;
|
10999 |
+
order: 1;
|
11000 |
+
width: 100%;
|
11001 |
+
}
|
11002 |
+
}
|
11003 |
+
|
11004 |
+
@media (max-width: 600px) {
|
11005 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-header__content {
|
11006 |
+
padding: 40px 20px;
|
11007 |
+
}
|
11008 |
+
}
|
11009 |
+
|
11010 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-header__content h1 {
|
11011 |
+
font-size: 28px;
|
11012 |
+
font-family: "Roboto",Arial,sans-serif;
|
11013 |
+
}
|
11014 |
+
|
11015 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-header__content p:first-of-type {
|
11016 |
+
margin-top: 10px;
|
11017 |
+
}
|
11018 |
+
|
11019 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-header__image {
|
11020 |
+
background-image: url(../images/hero@2x.png);
|
11021 |
+
background-size: cover;
|
11022 |
+
background-position: center;
|
11023 |
+
background-repeat: no-repeat;
|
11024 |
+
width: 50%;
|
11025 |
+
}
|
11026 |
+
|
11027 |
+
@media (max-width: 800px) {
|
11028 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-header__image {
|
11029 |
+
background-image: url(../images/hero.png);
|
11030 |
+
width: 100%;
|
11031 |
+
-ms-flex-order: 0;
|
11032 |
+
order: 0;
|
11033 |
+
height: 250px;
|
11034 |
+
}
|
11035 |
+
}
|
11036 |
+
|
11037 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-header .sui-reviews {
|
11038 |
+
margin-top: 60px;
|
11039 |
+
}
|
11040 |
+
|
11041 |
+
@media (max-width: 600px) {
|
11042 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-header .sui-reviews {
|
11043 |
+
margin-top: 40px;
|
11044 |
+
}
|
11045 |
+
}
|
11046 |
+
|
11047 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-features__header {
|
11048 |
+
text-align: center;
|
11049 |
+
}
|
11050 |
+
|
11051 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-features__header h2 {
|
11052 |
+
font-family: "Roboto",Arial,sans-serif;
|
11053 |
+
font-size: 28px;
|
11054 |
+
color: #333;
|
11055 |
+
line-height: 40px;
|
11056 |
+
margin-bottom: 0;
|
11057 |
+
}
|
11058 |
+
|
11059 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-features__header p {
|
11060 |
+
margin-top: 5px;
|
11061 |
+
}
|
11062 |
+
|
11063 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-features__items {
|
11064 |
+
display: -ms-flexbox;
|
11065 |
+
display: flex;
|
11066 |
+
-ms-flex-wrap: wrap;
|
11067 |
+
flex-wrap: wrap;
|
11068 |
+
padding: 30px;
|
11069 |
+
}
|
11070 |
+
|
11071 |
+
@media (min-width: 1440px) {
|
11072 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-features__items {
|
11073 |
+
margin: 0 -60px;
|
11074 |
+
}
|
11075 |
+
}
|
11076 |
+
|
11077 |
+
@media (max-width: 600px) {
|
11078 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-features__items {
|
11079 |
+
padding: 0;
|
11080 |
+
margin: 40px 0;
|
11081 |
+
}
|
11082 |
+
}
|
11083 |
+
|
11084 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-features__item {
|
11085 |
+
-ms-flex: 0 0 50%;
|
11086 |
+
flex: 0 0 50%;
|
11087 |
+
max-width: 50%;
|
11088 |
+
padding: 30px;
|
11089 |
+
}
|
11090 |
+
|
11091 |
+
@media (max-width: 600px) {
|
11092 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-features__item {
|
11093 |
+
-ms-flex: 0 0 100%;
|
11094 |
+
flex: 0 0 100%;
|
11095 |
+
max-width: 100%;
|
11096 |
+
padding: 20px;
|
11097 |
+
text-align: center;
|
11098 |
+
}
|
11099 |
+
}
|
11100 |
+
|
11101 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-features__item i {
|
11102 |
+
height: 44px;
|
11103 |
+
width: 44px;
|
11104 |
+
text-align: center;
|
11105 |
+
background: #F9E1FF;
|
11106 |
+
border-radius: 50%;
|
11107 |
+
font-size: 20px;
|
11108 |
+
}
|
11109 |
+
|
11110 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-features__item i:before {
|
11111 |
+
color: #8D00B1;
|
11112 |
+
line-height: 44px;
|
11113 |
+
}
|
11114 |
+
|
11115 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-features__item h3 {
|
11116 |
+
font-family: "Roboto",Arial,sans-serif;
|
11117 |
+
margin-bottom: 0;
|
11118 |
+
}
|
11119 |
+
|
11120 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-features__item p:first-of-type {
|
11121 |
+
margin-top: 0;
|
11122 |
+
}
|
11123 |
+
|
11124 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-cta {
|
11125 |
+
background: #fff;
|
11126 |
+
padding: 60px;
|
11127 |
+
margin-bottom: 60px;
|
11128 |
+
}
|
11129 |
+
|
11130 |
+
@media (max-width: 600px) {
|
11131 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-cta {
|
11132 |
+
padding: 40px 20px;
|
11133 |
+
margin-bottom: 40px;
|
11134 |
+
}
|
11135 |
+
}
|
11136 |
+
|
11137 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-cta__inner {
|
11138 |
+
max-width: 600px;
|
11139 |
+
margin: auto;
|
11140 |
+
text-align: center;
|
11141 |
+
}
|
11142 |
+
|
11143 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-cta__inner h2 {
|
11144 |
+
font-family: "Roboto",Arial,sans-serif;
|
11145 |
+
font-size: 28px;
|
11146 |
+
color: #333;
|
11147 |
+
line-height: 40px;
|
11148 |
+
margin-bottom: 0;
|
11149 |
+
}
|
11150 |
+
|
11151 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-cta__inner a {
|
11152 |
+
display: block;
|
11153 |
+
font-size: 13px;
|
11154 |
+
color: #888;
|
11155 |
+
line-height: 22px;
|
11156 |
+
margin-top: 15px;
|
11157 |
+
}
|
11158 |
+
|
11159 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-cta__inner a:focus,
|
11160 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-cta__inner a:hover {
|
11161 |
+
color: #666;
|
11162 |
+
}
|
11163 |
+
|
11164 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-cta__inner .sui-hidden-desktop {
|
11165 |
+
display: none;
|
11166 |
+
}
|
11167 |
+
|
11168 |
+
@media (max-width: 600px) {
|
11169 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-cta__inner .sui-hidden-desktop {
|
11170 |
+
display: inline-block;
|
11171 |
+
}
|
11172 |
+
|
11173 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-cta__inner .sui-button:not(.sui-hidden-desktop) {
|
11174 |
+
display: none;
|
11175 |
+
}
|
11176 |
+
}
|
11177 |
+
|
11178 |
+
.sui-2-3-29 .sui-wrap .sui-reviews {
|
11179 |
+
margin-left: 25px;
|
11180 |
+
}
|
11181 |
+
|
11182 |
+
.sui-2-3-29 .sui-wrap .sui-reviews__stars {
|
11183 |
+
position: relative;
|
11184 |
+
margin-right: 5px;
|
11185 |
+
}
|
11186 |
+
|
11187 |
+
.sui-2-3-29 .sui-wrap .sui-reviews__stars:before {
|
11188 |
+
content: "'";
|
11189 |
+
}
|
11190 |
+
|
11191 |
+
.sui-2-3-29 .sui-wrap .sui-reviews__stars:before {
|
11192 |
+
position: absolute;
|
11193 |
+
top: -12px;
|
11194 |
+
left: -25px;
|
11195 |
+
color: #aaa;
|
11196 |
+
}
|
11197 |
+
|
11198 |
+
.sui-2-3-29 .sui-wrap .sui-reviews__stars i:before {
|
11199 |
+
color: #FECF2F;
|
11200 |
+
}
|
11201 |
+
|
11202 |
+
.sui-2-3-29 .sui-wrap .sui-reviews__rating {
|
11203 |
+
color: #888;
|
11204 |
+
font-size: 13px;
|
11205 |
+
line-height: 22px;
|
11206 |
+
vertical-align: text-bottom;
|
11207 |
+
display: inline-block;
|
11208 |
+
}
|
11209 |
+
|
11210 |
+
.sui-2-3-29 .sui-wrap .sui-reviews a.sui-reviews__link {
|
11211 |
+
display: block;
|
11212 |
+
color: #888;
|
11213 |
+
font-size: 13px;
|
11214 |
+
line-height: 22px;
|
11215 |
+
font-weight: normal;
|
11216 |
+
font-style: italic;
|
11217 |
+
}
|
11218 |
+
|
11219 |
+
.sui-2-3-29 .sui-wrap .sui-reviews a.sui-reviews__link:focus,
|
11220 |
+
.sui-2-3-29 .sui-wrap .sui-reviews a.sui-reviews__link:hover {
|
11221 |
+
color: #666;
|
11222 |
+
}
|
11223 |
+
|
11224 |
+
.sui-2-3-29 .sui-wrap .sui-reviews a.sui-reviews__link:focus i:before,
|
11225 |
+
.sui-2-3-29 .sui-wrap .sui-reviews a.sui-reviews__link:hover i:before {
|
11226 |
+
color: #666;
|
11227 |
+
}
|
11228 |
+
|
11229 |
+
.sui-2-3-29 .sui-wrap .sui-reviews a.sui-reviews__link i {
|
11230 |
+
margin-left: 5px;
|
11231 |
+
font-size: 12px;
|
11232 |
+
line-height: 22px;
|
11233 |
+
vertical-align: middle;
|
11234 |
+
}
|
11235 |
+
|
11236 |
+
.sui-2-3-29 .sui-wrap .sui-reviews a.sui-reviews__link i:before {
|
11237 |
+
color: #888;
|
11238 |
+
}
|
11239 |
+
|
11240 |
+
.sui-2-3-29 .sui-wrap .smush-upsell-notice {
|
11241 |
+
margin-left: 130px;
|
11242 |
+
}
|
11243 |
+
|
11244 |
+
@media screen and (max-width: 782px) {
|
11245 |
+
.sui-2-3-29 .sui-wrap .smush-upsell-notice {
|
11246 |
+
margin-left: 0;
|
11247 |
+
}
|
11248 |
+
}
|
11249 |
+
|
11250 |
+
@media screen and (min-width: 1140px) {
|
11251 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page-header__image {
|
11252 |
+
width: 45% !important;
|
11253 |
+
}
|
11254 |
+
}
|
11255 |
+
|
11256 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page .sui-upgrade-page-cta__inner a:hover {
|
11257 |
+
color: #fff !important;
|
11258 |
+
}
|
11259 |
+
|
11260 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page .smush-stats {
|
11261 |
+
position: relative;
|
11262 |
+
display: -ms-flexbox;
|
11263 |
+
display: flex;
|
11264 |
+
-ms-flex-pack: justify;
|
11265 |
+
justify-content: space-between;
|
11266 |
+
width: 600px;
|
11267 |
+
height: 100px;
|
11268 |
+
border-radius: 4px;
|
11269 |
+
background-color: #FFFFFF;
|
11270 |
+
box-shadow: 0 0 20px 0 rgba(0,0,0,0.05);
|
11271 |
+
margin: -100px auto 30px;
|
11272 |
+
padding: 20px 40px;
|
11273 |
+
text-align: center;
|
11274 |
+
font-size: 15px;
|
11275 |
+
font-weight: 500;
|
11276 |
+
color: #333333;
|
11277 |
+
}
|
11278 |
+
|
11279 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page .smush-stats .smush-stats-description {
|
11280 |
+
color: #888888;
|
11281 |
+
font-size: 12px;
|
11282 |
+
text-transform: uppercase;
|
11283 |
+
}
|
11284 |
+
|
11285 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page .smush-stats span {
|
11286 |
+
font-size: 24px;
|
11287 |
+
}
|
11288 |
+
|
11289 |
+
@media (max-width: 800px) {
|
11290 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page .smush-stats {
|
11291 |
+
margin-top: 0;
|
11292 |
+
height: auto;
|
11293 |
+
width: 75%;
|
11294 |
+
-ms-flex-wrap: wrap;
|
11295 |
+
flex-wrap: wrap;
|
11296 |
+
}
|
11297 |
+
|
11298 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page .smush-stats-item {
|
11299 |
+
-ms-flex-preferred-size: 100%;
|
11300 |
+
flex-basis: 100%;
|
11301 |
+
}
|
11302 |
+
|
11303 |
+
.sui-2-3-29 .sui-wrap .sui-upgrade-page .smush-stats-item:nth-child(2) {
|
11304 |
+
margin: 20px 0;
|
11305 |
+
}
|
11306 |
+
}
|
11307 |
+
|
11308 |
.sui-2-3-29 .sui-wrap .sui-meta-boxes-lazyload #smush-lazy-load-spinners span.sui-description:first-of-type,
|
11309 |
.sui-2-3-29 .sui-wrap .sui-meta-boxes-lazyload #smush-lazy-load-placeholder span.sui-description:first-of-type {
|
11310 |
margin-bottom: 20px;
|
11686 |
}
|
11687 |
|
11688 |
.sui-2-3-29 .sui-wrap .wp-smush-exceed-limit .wp-smush-progress-inner {
|
11689 |
+
background: #FECF2F !important;
|
11690 |
+
}
|
11691 |
+
|
11692 |
+
.sui-2-3-29 .sui-wrap .wp-smush-exceed-limit .sui-icon-info:before {
|
11693 |
+
color: #FECF2F;
|
11694 |
}
|
11695 |
|
11696 |
.sui-2-3-29 .sui-wrap .wp-smush-progress-dialog.wp-smush-exceed-limit .sui-hidden {
|
11702 |
}
|
11703 |
|
11704 |
.sui-2-3-29 .sui-wrap .wp-smush-progress-dialog.wp-smush-exceed-limit .sui-progress .sui-progress-icon .sui-icon-loader:before {
|
11705 |
+
color: #FECF2F;
|
11706 |
animation: none;
|
11707 |
}
|
11708 |
|
11936 |
}
|
11937 |
|
11938 |
.sui-2-3-29 .sui-wrap .smush-pro-features .smush-pro-feature-title:before {
|
11939 |
+
color: #8D00B1;
|
11940 |
vertical-align: middle;
|
11941 |
margin-left: -30px;
|
11942 |
margin-right: 10px;
|
app/assets/images/hero.png
ADDED
Binary file
|
app/assets/images/hero@2x.png
ADDED
Binary file
|
app/assets/js/smush-admin.min.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
!function(e){var t={};function n(i){if(t[i])return t[i].exports;var s=t[i]={i:i,l:!1,exports:{}};return e[i].call(s.exports,s,s.exports,n),s.l=!0,s.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)n.d(i,s,function(t){return e[t]}.bind(null,s));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=14)}([function(e,t,n){"use strict";function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function s(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=function(){function e(t,n){var s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"media";!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.errors=[];var r=jQuery(".bulk-smush-wrapper .sui-progress-state-text");this.smushed=parseInt(r.find("span:first-child").html()),this.total=parseInt(r.find("span:last-child").html()),this.skip_resmush=!(void 0===t.data("smush")||!t.data("smush")),this.button=jQuery(t[0]),this.is_bulk=!!i(n)&&n,this.url=ajaxurl,this.log=jQuery(".smush-final-log"),this.deferred=jQuery.Deferred(),this.deferred.errors=[];var o=0<wp_smushit_data.resmush.length&&!this.skip_resmush?wp_smushit_data.unsmushed.length>0?wp_smushit_data.resmush.concat(wp_smushit_data.unsmushed):wp_smushit_data.resmush:wp_smushit_data.unsmushed;return"object"===i(o)?this.ids=o.filter(function(e,t,n){return t===n.indexOf(e)}):this.ids=o,this.is_bulk_resmush=0<wp_smushit_data.resmush.length&&!this.skip_resmush,this.status=this.button.parent().find(".smush-status"),this.smush_type=s,this.single_ajax_suffix="nextgen"===this.smush_type?"smush_manual_nextgen":"wp_smushit_manual",this.bulk_ajax_suffix="nextgen"===this.smush_type?"wp_smushit_nextgen_bulk":"wp_smushit_bulk",this.url=this.is_bulk?e.smushAddParams(this.url,{action:this.bulk_ajax_suffix}):e.smushAddParams(this.url,{action:this.single_ajax_suffix}),this.start(),this.run(),this.bind_deferred_events(),this.cancel_ajax(),this.deferred}var t,n,r;return t=e,r=[{key:"smushAddParams",value:function(e,t){return jQuery.isEmptyObject(t)||(e+=(e.indexOf("?")>=0?"&":"?")+jQuery.param(t)),e}},{key:"membership_validity",value:function(e){var t=jQuery("#wp-smush-invalid-member");void 0!==e&&void 0!==e.show_warning&&t.length>0&&(e.show_warning?t.show():t.hide())}},{key:"ajax",value:function(e,t,n,i){var s=jQuery.param({is_bulk_resmush:e,attachment_id:t,_nonce:i});return jQuery.ajax({type:"GET",data:s,url:n,timeout:wp_smushit_data.timeout,dataType:"json"})}},{key:"progress_bar",value:function(e,t,n){var i=e.parents().eq(1).find(".wp-smush-progress");"show"===n?i.html(t):i.html(wp_smush_msgs.all_done),i.toggleClass("visible")}},{key:"set_pro_savings",value:function(){var e=wp_smushit_data.savings_percent>0?wp_smushit_data.savings_percent:0,t=wp_smushit_data.savings_bytes>0?wp_smushit_data.savings_bytes:0,n=2.22058824;e>49&&(n=1.22054412),e>0&&(e*=n,t*=n),wp_smushit_data.pro_savings={percent:WP_Smush.helpers.precise_round(e,1),savings_bytes:WP_Smush.helpers.formatBytes(t,1)}}},{key:"update_stats",value:function(t){var n=void 0!==t&&"nextgen"===t,i=0;wp_smushit_data.savings_bytes=parseInt(wp_smushit_data.size_before)-parseInt(wp_smushit_data.size_after);var s=WP_Smush.helpers.formatBytes(wp_smushit_data.savings_bytes,1),r=jQuery(".wp-smush-savings .wp-smush-stats-human");n?r.html(s):(r.html(WP_Smush.helpers.getFormatFromString(s)),jQuery(".sui-summary-large.wp-smush-stats-human").html(WP_Smush.helpers.getSizeFromString(s))),wp_smushit_data.savings_percent=WP_Smush.helpers.precise_round(parseInt(wp_smushit_data.savings_bytes)/parseInt(wp_smushit_data.size_before)*100,1),isNaN(wp_smushit_data.savings_percent)||jQuery(".wp-smush-savings .wp-smush-stats-percent").html(wp_smushit_data.savings_percent),void 0!==wp_smushit_data.savings_bytes&&void 0!==wp_smushit_data.savings_resize&&(i=parseInt(wp_smushit_data.savings_bytes)-parseInt(wp_smushit_data.savings_resize))>0&&jQuery("li.super-smush-attachments span.smushed-savings").html(WP_Smush.helpers.formatBytes(i,1)),n?jQuery(".sui-summary-details span.wp-smush-total-optimised").html(wp_smushit_data.count_images):jQuery("span.smushed-items-count span.wp-smush-count-total span.wp-smush-total-optimised").html(wp_smushit_data.count_images),jQuery("span.smushed-items-count span.wp-smush-count-resize-total span.wp-smush-total-optimised").html(wp_smushit_data.count_resize);var o=jQuery("li.super-smush-attachments .smushed-count");o.length&&void 0!==wp_smushit_data.count_supersmushed&&o.html(wp_smushit_data.count_supersmushed);var a=jQuery(".smush-conversion-savings");if(a.length>0&&void 0!==wp_smushit_data.savings_conversion&&""!=wp_smushit_data.savings_conversion){var u=a.find(".wp-smush-stats");u.length>0&&u.html(WP_Smush.helpers.formatBytes(wp_smushit_data.savings_conversion,1))}var l=jQuery(".smush-resize-savings");if(l.length>0&&void 0!==wp_smushit_data.savings_resize&&""!=wp_smushit_data.savings_resize){var d=parseInt(wp_smushit_data.savings_resize),c=l.find(".wp-smush-stats"),h=l.find(".wp-smush-stats-label-message");d>0&&c.length>0&&(h.length>0&&h.hide(),c.html(WP_Smush.helpers.formatBytes(wp_smushit_data.savings_resize,1)))}if(e.set_pro_savings(),void 0!==wp_smushit_data.pro_savings){var p=jQuery(".smush-avg-pro-savings");if(p.length>0){var f=p.find(".wp-smush-stats-percent"),m=p.find(".wp-smush-stats-human");f.length>0&&void 0!==wp_smushit_data.pro_savings.percent&&""!=wp_smushit_data.pro_savings.percent&&f.html(wp_smushit_data.pro_savings.percent),m.length>0&&void 0!==wp_smushit_data.pro_savings.savings_bytes&&""!=wp_smushit_data.pro_savings.savings_bytes&&m.html(wp_smushit_data.pro_savings.savings_bytes)}}var g=jQuery(".smush-sidenav .wp-smush-remaining-count");if(g.length){var v=0;void 0!==wp_smushit_data.unsmushed&&wp_smushit_data.unsmushed.length>0&&(v+=wp_smushit_data.unsmushed.length),void 0!==wp_smushit_data.resmush&&wp_smushit_data.resmush.length>0&&(v+=wp_smushit_data.resmush.length),v>0?g.html(v):(jQuery(".sui-summary-smush .smush-stats-icon").addClass("sui-hidden"),g.removeClass("sui-tag sui-tag-warning").html(""))}}},{key:"update_image_stats",value:function(e){if(0!==e){var t=jQuery(".attachment-info .file-size");if(t.contents().filter(function(){return 3===this.nodeType}).text()!==" "+e){var n=t.contents().filter(function(){return 1===this.nodeType}).text();t.html("<strong>"+n+"</strong> "+e)}}}},{key:"update_localized_stats",value:function(e,t){"undefined"!=typeof wp_smushit_data&&("media"===t?(wp_smushit_data.count_images=parseInt(wp_smushit_data.count_images)+parseInt(e.count),e.is_lossy&&(wp_smushit_data.count_supersmushed=parseInt(wp_smushit_data.count_supersmushed)+1),wp_smushit_data.savings_resize=void 0!==e.savings_resize.bytes?parseInt(wp_smushit_data.savings_resize)+parseInt(e.savings_resize.bytes):parseInt(wp_smushit_data.savings_resize),wp_smushit_data.count_resize=void 0!==e.savings_resize.bytes?parseInt(wp_smushit_data.count_resize)+1:wp_smushit_data.count_resize,wp_smushit_data.savings_conversion=void 0!==e.savings_conversion&&void 0!==e.savings_conversion.bytes?parseInt(wp_smushit_data.savings_conversion)+parseInt(e.savings_conversion.bytes):parseInt(wp_smushit_data.savings_conversion)):"directory_smush"===t?wp_smushit_data.count_images=parseInt(wp_smushit_data.count_images)+1:"nextgen"===t&&(wp_smushit_data.count_supersmushed=parseInt(wp_smushit_data.count_supersmushed)+1,wp_smushit_data.count_images=parseInt(wp_smushit_data.count_images)+parseInt(e.count)),e.size_before>e.size_after&&(wp_smushit_data.size_before=void 0!==e.size_before?parseInt(wp_smushit_data.size_before)+parseInt(e.size_before):parseInt(wp_smushit_data.size_before),wp_smushit_data.size_after=void 0!==e.size_after?parseInt(wp_smushit_data.size_after)+parseInt(e.size_after):parseInt(wp_smushit_data.size_after)),void 0!==e.savings_resize&&(wp_smushit_data.size_before=void 0!==e.savings_resize.size_before?parseInt(wp_smushit_data.size_before)+parseInt(e.savings_resize.size_before):parseInt(wp_smushit_data.size_before),wp_smushit_data.size_after=void 0!==e.savings_resize.size_after?parseInt(wp_smushit_data.size_after)+parseInt(e.savings_resize.size_after):parseInt(wp_smushit_data.size_after)),void 0!==e.savings_conversion&&(wp_smushit_data.size_before=void 0!==e.savings_conversion.size_before?parseInt(wp_smushit_data.size_before)+parseInt(e.savings_conversion.size_before):parseInt(wp_smushit_data.size_before),wp_smushit_data.size_after=void 0!==e.savings_conversion.size_after?parseInt(wp_smushit_data.size_after)+parseInt(e.savings_conversion.size_after):parseInt(wp_smushit_data.size_after)))}},{key:"prepare_error_row",value:function(e,t,n,i,s){var r='<div class="smush-bulk-error-row"><div class="smush-bulk-image-data">'+(void 0===n?'<i class="sui-icon-photo-picture" aria-hidden="true"></i>':n)+'<span class="smush-image-name">'+("undefined"===t||void 0===t?"undefined":t)+'</span><span class="smush-image-error">'+e+"</span></div>";return"media"===s&&(r=r+'<div class="smush-bulk-image-actions"><button type="button" class="sui-button-icon sui-tooltip sui-tooltip-constrained sui-tooltip-top-right smush-ignore-image" data-tooltip="'+wp_smush_msgs.error_ignore+'" data-id="'+i+'"><i class="sui-icon-eye-hide" aria-hidden="true"></i></button></div>'),r+="</div>"}},{key:"update_smush_ids",value:function(e){if(void 0!==wp_smushit_data.unsmushed&&wp_smushit_data.unsmushed.length>0){var t=wp_smushit_data.unsmushed.indexOf(e);t>-1&&wp_smushit_data.unsmushed.splice(t,1)}if(void 0!==wp_smushit_data.resmush&&wp_smushit_data.resmush.length>0){var n=wp_smushit_data.resmush.indexOf(e);n>-1&&wp_smushit_data.resmush.splice(n,1)}}}],(n=[{key:"start",value:function(){this.button.attr("disabled","disabled"),this.button.addClass("wp-smush-started"),this.bulk_start(),this.single_start()}},{key:"bulk_start",value:function(){this.is_bulk&&(jQuery(".wp-smush-bulk-wrapper").hide(),jQuery(".sui-notice-top").remove(),jQuery(".wp-smush-bulk-progress-bar-wrapper .sui-notice-warning").hide(),0>=jQuery("div.smush-final-log .smush-bulk-error-row").length&&jQuery("div.smush-final-log").hide(),jQuery(".bulk-smush-wrapper .wp-smush-bulk-progress-bar-wrapper").show())}},{key:"single_start",value:function(){this.is_bulk||(this.show_loader(),this.status.removeClass("error"))}},{key:"enable_button",value:function(){this.button.prop("disabled",!1),jQuery(".wp-smush-all").removeAttr("disabled"),jQuery("button.wp-smush-scan, a.wp-smush-lossy-enable, button.wp-smush-resize-enable, button#wp-smush-save-settings").removeAttr("disabled")}},{key:"show_loader",value:function(){e.progress_bar(this.button,wp_smush_msgs.smushing,"show")}},{key:"hide_loader",value:function(){e.progress_bar(this.button,wp_smush_msgs.smushing,"hide")}},{key:"single_done",value:function(){if(!this.is_bulk){this.hide_loader();var t=this;this.request.done(function(n){if(void 0!==n.data){var i=t.status.parent();i.find(".smush-stats-wrapper");n.data.status&&(i.find(".smush-status-links").remove(),t.status.replaceWith(n.data.status)),e.membership_validity(n.data),n.success&&"Not processed"!==n.data?(t.status.removeClass("sui-hidden"),t.button.parent().removeClass("unsmushed").addClass("smushed"),t.button.remove()):(t.status.addClass("error"),t.status.html(n.data.error_msg),t.status.show()),i.append(n.data.stats),e.update_image_stats(n.data.new_size)}t.enable_button()}).fail(function(e){t.status.html(e.data),t.status.addClass("error"),t.enable_button()})}}},{key:"sync_stats",value:function(){var t=jQuery("div.wp-smush-bulk-progress-bar-wrapper div.wp-smush-count.tc"),n=t.html();t.html(wp_smush_msgs.sync_stats),jQuery.ajax({type:"GET",url:this.url,data:{action:"get_stats"},success:function(t){t&&void 0!==t&&(t=t.data,jQuery.extend(wp_smushit_data,{count_images:t.count_images,count_smushed:t.count_smushed,count_total:t.count_total,count_resize:t.count_resize,count_supersmushed:t.count_supersmushed,savings_bytes:t.savings_bytes,savings_conversion:t.savings_conversion,savings_resize:t.savings_resize,size_before:t.size_before,size_after:t.size_after}),e.update_stats(this.smush_type))}}).always(function(){return t.html(n)})}},{key:"bulk_done",value:function(){if(this.is_bulk){this.enable_button();var e=jQuery(".sui-summary-smush .smush-stats-icon");if(0===this.ids.length)e.addClass("sui-hidden"),jQuery(".bulk-smush-wrapper .wp-smush-all-done, .wp-smush-pagespeed-recommendation").show(),jQuery(".wp-smush-bulk-wrapper").hide(),jQuery(".wp-smush-bulk-progress-bar-wrapper").hide();else{e.removeClass("sui-icon-loader sui-loading sui-hidden").addClass("sui-icon-info sui-warning");var t=jQuery(".bulk-smush-wrapper .wp-smush-resmush-notice");t.length>0?t.show():jQuery(".bulk-smush-wrapper .wp-smush-remaining").show()}jQuery(".wp-resmush.wp-smush-action, .wp-smush-scan").removeAttr("disabled")}}},{key:"is_resolved",value:function(){return"resolved"===this.deferred.state()}},{key:"free_exceeded",value:function(){var e=jQuery(".wp-smush-bulk-progress-bar-wrapper");e.addClass("wp-smush-exceed-limit"),e.find(".sui-progress-block .wp-smush-cancel-bulk").addClass("sui-hidden"),e.find(".sui-progress-block .wp-smush-all").removeClass("sui-hidden"),e.find("i.sui-icon-loader").addClass("sui-icon-info").removeClass("sui-icon-loader").removeClass("sui-loading")}},{key:"update_remaining_count",value:function(){if(this.is_bulk_resmush){var e=jQuery(".wp-smush-resmush-notice .wp-smush-remaining-count");e.length&&void 0!==this.ids&&e.html(this.ids.length)}else{var t=jQuery(".bulk-smush-wrapper .wp-smush-remaining-count");t.length&&void 0!==this.ids&&t.html(this.ids.length)}var n=jQuery(".smush-sidenav .wp-smush-remaining-count");n.length&&void 0!==this.ids&&(this.ids.length>0?n.html(this.ids.length):(jQuery(".sui-summary-smush .smush-stats-icon").addClass("sui-hidden"),n.removeClass("sui-tag sui-tag-warning").html("")))}},{key:"update_progress",value:function(t){if(this.is_bulk_resmush||this.is_bulk){var n="";t&&void 0!==t.data&&void 0!==t.data.stats&&e.update_localized_stats(t.data.stats,this.smush_type),this.is_bulk_resmush?(t.success&&(wp_smushit_data.resmush.length>0?jQuery(".wp-smush-images-remaining").html(wp_smushit_data.resmush.length):0===wp_smushit_data.resmush.length&&0===this.ids.length&&(jQuery(".bulk-resmush-wrapper .wp-smush-all-done, .wp-smush-pagespeed-recommendation").removeClass("sui-hidden"),jQuery(".wp-smush-resmush-wrap, .wp-smush-bulk-progress-bar-wrapper").hide())),void 0!==this.ids&&void 0!==this.total&&this.total>0&&(n=(this.smushed+this.errors.length)/this.total*100)):n=(this.smushed+this.errors.length)/this.total*100,0===this.ids.length&&("nextgen"!==this.smush_type&&this.sync_stats(),jQuery(".bulk-smush-wrapper .wp-smush-all-done, .wp-smush-pagespeed-recommendation").show(),jQuery(".wp-smush-bulk-wrapper").hide()),this.update_remaining_count(),this._update_progress(this.smushed+this.errors.length,WP_Smush.helpers.precise_round(n,1)),e.update_stats(this.smush_type)}}},{key:"_update_progress",value:function(e,t){(this.is_bulk||this.is_bulk_resmush)&&(jQuery("span.wp-smush-images-percent").html(t+"%"),jQuery(".bulk-smush-wrapper .wp-smush-progress-inner").css("width",t+"%"),jQuery(".bulk-smush-wrapper .sui-progress-state-text").find("span:first-child").html(e).find("span:last-child").html(this.total))}},{key:"continue",value:function(){var e=this.button.attr("continue_smush");return void 0===e&&(e=!0),"false"!==e&&e||(e=!1),e&&this.ids.length>0&&this.is_bulk}},{key:"increment_errors",value:function(e){this.errors.push(e)}},{key:"increment_smushed",value:function(e){this.smushed=this.smushed+1}},{key:"call_ajax",value:function(){var t="";this.current_id=this.is_bulk?this.ids.shift():this.button.data("id"),e.update_smush_ids(this.current_id);var n=this.button.parent().find("#_wp_smush_nonce");n&&(t=n.val());var i=this;return this.request=e.ajax(this.is_bulk_resmush,this.current_id,this.url,t).done(function(t){if(void 0===t.success||void 0!==t.success&&!1===t.success&&void 0!==t.data&&"limit_exceeded"!==t.data.error){i.increment_errors(i.current_id);var n=e.prepare_error_row(t.data.error_message,t.data.file_name,t.data.thumbnail,i.current_id,i.smush_type);i.log.show(),i.errors.length>5?jQuery(".smush-bulk-errors-actions").removeClass("sui-hidden"):i.log.find(".smush-bulk-errors").append(n)}else void 0!==t.success&&t.success&&i.increment_smushed(i.current_id);(e.membership_validity(t.data),void 0===t.data||"limit_exceeded"!==t.data.error||i.is_resolved())?i.is_bulk?i.update_progress(t):0===i.ids.length&&i.sync_stats():(document.getElementById("bulk_smush_warning").classList.remove("sui-hidden"),i.button.attr("continue_smush",!1),wp_smushit_data.unsmushed.unshift(i.current_id),i.ids.unshift(i.current_id),i.free_exceeded());i.single_done()}).always(function(){i.continue()&&i.is_bulk?i.call_ajax():i.deferred.resolve()}),this.deferred.errors=this.errors,this.deferred}},{key:"run",value:function(){this.is_bulk&&this.ids.length>0&&this.call_ajax(),this.is_bulk||this.call_ajax()}},{key:"bind_deferred_events",value:function(){var e=this;this.deferred.done(function(){if(e.button.removeAttr("continue_smush"),e.errors.length){var t=wp_smush_msgs.error_in_bulk.replace("{{errors}}",e.errors.length).replace("{{total}}",e.total).replace("{{smushed}}",e.smushed);jQuery(".wp-smush-all-done").addClass("sui-notice-warning").removeClass("sui-notice-success").find("p").html(t)}e.bulk_done(),jQuery(".wp-smush-all:not(.wp-smush-finished), .wp-smush-scan").removeAttr("disabled")})}},{key:"cancel_ajax",value:function(){var t=this;jQuery(".wp-smush-cancel-bulk").on("click",function(){t.button.attr("continue_smush",!1),t.sync_stats(),e.update_stats(this.smush_type),t.request.abort(),t.enable_button(),t.button.removeClass("wp-smush-started"),wp_smushit_data.unsmushed.unshift(t.current_id),jQuery(".wp-smush-bulk-wrapper").show(),jQuery(".wp-smush-bulk-progress-bar-wrapper").hide()})}}])&&s(t.prototype,n),r&&s(t,r),e}();t.a=r},function(e,t,n){(function(n){var i;!function(n){"use strict";var s,r=["a[href]","area[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","iframe","object","embed","[contenteditable]",'[tabindex]:not([tabindex^="-"])'];function o(e,t){this._show=this.show.bind(this),this._hide=this.hide.bind(this),this._bindKeypress=this._bindKeypress.bind(this),this.node=e,this._listeners={},this.create(t)}function a(e){return Array.prototype.slice.call(e)}function u(e,t){return a((t||document).querySelectorAll(e))}function l(e){var t=d(e);t.length&&t[0].focus()}function d(e){return u(r.join(","),e).filter(function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)})}o.prototype.create=function(e){var t,n;return this._targets=this._targets||function(e){if(NodeList.prototype.isPrototypeOf(e))return a(e);if(Element.prototype.isPrototypeOf(e))return[e];if("string"==typeof e)return u(e)}(e)||(t=this.node,(n=a(t.parentNode.childNodes).filter(function(e){return 1===e.nodeType})).splice(n.indexOf(t),1),n),this.node.setAttribute("aria-hidden",!0),this.shown=!1,this._openers=u('[data-a11y-dialog-show="'+this.node.id+'"]'),this._openers.forEach(function(e){e.addEventListener("click",this._show)}.bind(this)),this._closers=u("[data-a11y-dialog-hide]",this.node).concat(u('[data-a11y-dialog-hide="'+this.node.id+'"]')),this._closers.forEach(function(e){e.addEventListener("click",this._hide)}.bind(this)),this._fire("create"),this},o.prototype.show=function(e){return this.shown?this:(this.node.classList.add("sui-fade-in"),this.node.classList.remove("sui-fade-out"),this.node.getElementsByClassName("sui-dialog-content")[0].className="sui-dialog-content sui-content-fade-in",this._fire("show",e),this.shown=!0,this.node.removeAttribute("aria-hidden"),this._targets.forEach(function(e){var t=e.getAttribute("aria-hidden");t&&e.setAttribute("data-a11y-dialog-original",t),e.setAttribute("aria-hidden","true")}),s=document.activeElement,l(this.node),document.addEventListener("keydown",this._bindKeypress),document.getElementsByTagName("html")[0].classList.add("sui-has-overlay"),this)},o.prototype.hide=function(e){if(!this.shown)return this;this.node.getElementsByClassName("sui-dialog-content")[0].className="sui-dialog-content sui-content-fade-out",this.node.classList.add("sui-fade-out"),this.node.classList.remove("sui-fade-in"),this._fire("hide",e),this.shown=!1;var t=this.node;return setTimeout(function(){t.setAttribute("aria-hidden","true")},300),this._targets.forEach(function(e){var t=e.getAttribute("data-a11y-dialog-original");t?(e.setAttribute("aria-hidden",t),e.removeAttribute("data-a11y-dialog-original")):e.removeAttribute("aria-hidden")}),s&&s.focus(),document.removeEventListener("keydown",this._bindKeypress),document.getElementsByTagName("html")[0].classList.remove("sui-has-overlay"),this},o.prototype.destroy=function(){return this.hide(),this._openers.forEach(function(e){e.removeEventListener("click",this._show)}.bind(this)),this._closers.forEach(function(e){e.removeEventListener("click",this._hide)}.bind(this)),this._fire("destroy"),this._listeners={},this},o.prototype.on=function(e,t){return void 0===this._listeners[e]&&(this._listeners[e]=[]),this._listeners[e].push(t),this},o.prototype.off=function(e,t){var n=this._listeners[e].indexOf(t);return n>-1&&this._listeners[e].splice(n,1),this},o.prototype._fire=function(e,t){(this._listeners[e]||[]).forEach(function(e){e(this.node,t)}.bind(this))},o.prototype._bindKeypress=function(e){this.shown&&27===e.which&&(e.preventDefault(),this.hide()),this.shown&&9===e.which&&function(e,t){var n=d(e),i=n.indexOf(document.activeElement);t.shiftKey&&0===i?(n[n.length-1].focus(),t.preventDefault()):t.shiftKey||i!==n.length-1||(n[0].focus(),t.preventDefault())}(this.node,e)},o.prototype._maintainFocus=function(e){this.shown&&!this.node.contains(e.target)&&l(this.node)},void 0!==e.exports?e.exports=o:void 0===(i=function(){return o}.apply(t,[]))||(e.exports=i)}(void 0!==n||window)}).call(this,n(2))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";t.a=function(e,t){e=parseInt(e),t=parseInt(t);var n=!1,i=0,s={scan:function(){var n=e-t;0!==t?r(n):$.post(ajaxurl,{action:"directory_smush_start"},function(){return r(n)})},cancel:function(){return n=!0,$.post(ajaxurl,{action:"directory_smush_cancel"})},getProgress:function(){if(n)return 0;var i=e-t;return Math.min(Math.round(100*parseInt(e-i)/e),99)},onFinishStep:function(n){$(".wp-smush-progress-dialog .sui-progress-state-text").html(t-i+"/"+e+" "+wp_smush_msgs.progress_smushed),WP_Smush.directory.updateProgressBar(n)},onFinish:function(){WP_Smush.directory.updateProgressBar(100),window.location.href=wp_smush_msgs.directory_url+"&scan=done"},limitReached:function(){var e=$("#wp-smush-progress-dialog");e.addClass("wp-smush-exceed-limit"),e.find("#cancel-directory-smush").attr("data-tooltip",wp_smush_msgs.bulk_resume),e.find(".sui-icon-close").removeClass("sui-icon-close").addClass("sui-icon-play"),e.find("#cancel-directory-smush").attr("id","cancel-directory-smush-disabled")},resume:function(){var e=$("#wp-smush-progress-dialog"),t=e.find("#cancel-directory-smush-disabled");e.removeClass("wp-smush-exceed-limit"),e.find(".sui-icon-play").removeClass("sui-icon-play").addClass("sui-icon-close"),t.attr("data-tooltip","Cancel"),t.attr("id","cancel-directory-smush"),s.scan()}},r=function n(r){r>=0?(t=e-r,$.post(ajaxurl,{action:"directory_smush_check_step",step:t},function(e){void 0!==e.success&&e.success?(t++,r-=1,s.onFinishStep(s.getProgress()),n(r)):void 0!==e.data.error&&"dir_smush_limit_exceeded"===e.data.error?s.limitReached():(i++,t++,r-=1,s.onFinishStep(s.getProgress()),n(r))})):$.post(ajaxurl,{action:"directory_smush_finish",items:e-i,failed:i},function(e){return s.onFinish(e)})};return s}},function(e,t,n){var i;
|
2 |
/*!
|
3 |
* jQuery JavaScript Library v3.4.1
|
4 |
* https://jquery.com/
|
@@ -48,7 +48,7 @@ function(e){var t,n,i,s,r,o,a,u,l,d,c,h,p,f,m,g,v,y,_,w="sizzle"+1*new Date,b=e.
|
|
48 |
*
|
49 |
* @version 2.31.0
|
50 |
* @date 2019-05-31T11:32:38Z
|
51 |
-
*/s=[n(4),n(20)],void 0===(r="function"==typeof(i=function(e){"use strict";if(!e.ui||!e.ui.fancytree){var t,n,i=null,s=new RegExp(/\.|\//),r=/[&<>"'\/]/g,o=/[<>"'\/]/g,a={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},u={16:!0,17:!0,18:!0},l={8:"backspace",9:"tab",10:"return",13:"return",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",59:";",61:"=",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},d={16:"shift",17:"ctrl",18:"alt",91:"meta",93:"meta"},c={0:"",1:"left",2:"middle",3:"right"},h="active expanded focus folder lazy radiogroup selected unselectable unselectableIgnore".split(" "),p={},f="columns types".split(" "),m="checkbox expanded extraClasses folder icon iconTooltip key lazy partsel radiogroup refKey selected statusNodeType title tooltip type unselectable unselectableIgnore unselectableStatus".split(" "),g={},v={},y={active:!0,children:!0,data:!0,focus:!0};for(t=0;t<h.length;t++)p[h[t]]=!0;for(t=0;t<m.length;t++)n=m[t],g[n]=!0,n!==n.toLowerCase()&&(v[n.toLowerCase()]=n);return _(e.ui,"Fancytree requires jQuery UI (http://jqueryui.com)"),Date.now||(Date.now=function(){return(new Date).getTime()}),L.prototype={_findDirectChild:function(e){var t,n,i=this.children;if(i)if("string"==typeof e){for(t=0,n=i.length;t<n;t++)if(i[t].key===e)return i[t]}else{if("number"==typeof e)return this.children[e];if(e.parent===this)return e}return null},_setChildren:function(e){_(e&&(!this.children||0===this.children.length),"only init supported"),this.children=[];for(var t=0,n=e.length;t<n;t++)this.children.push(new L(this,e[t]));this.tree._callHook("treeStructureChanged",this.tree,"setChildren")},addChildren:function(t,n){var i,s,r,o,a=this.getFirstChild(),u=this.getLastChild(),l=[];for(e.isPlainObject(t)&&(t=[t]),this.children||(this.children=[]),i=0,s=t.length;i<s;i++)l.push(new L(this,t[i]));if(o=l[0],null==n?this.children=this.children.concat(l):(n=this._findDirectChild(n),_((r=e.inArray(n,this.children))>=0,"insertBefore must be an existing child"),this.children.splice.apply(this.children,[r,0].concat(l))),a&&!n){for(i=0,s=l.length;i<s;i++)l[i].render();a!==this.getFirstChild()&&a.renderStatus(),u!==this.getLastChild()&&u.renderStatus()}else(!this.parent||this.parent.ul||this.tr)&&this.render();return 3===this.tree.options.selectMode&&this.fixSelection3FromEndNodes(),this.triggerModifyChild("add",1===l.length?l[0]:null),o},addClass:function(e){return this.toggleClass(e,!0)},addNode:function(e,t){switch(void 0!==t&&"over"!==t||(t="child"),t){case"after":return this.getParent().addChildren(e,this.getNextSibling());case"before":return this.getParent().addChildren(e,this);case"firstChild":var n=this.children?this.children[0]:null;return this.addChildren(e,n);case"child":case"over":return this.addChildren(e)}_(!1,"Invalid mode: "+t)},addPagingNode:function(t,n){var i,s;if(n=n||"child",!1!==t)return t=e.extend({title:this.tree.options.strings.moreData,statusNodeType:"paging",icon:!1},t),this.partload=!0,this.addNode(t,n);for(i=this.children.length-1;i>=0;i--)"paging"===(s=this.children[i]).statusNodeType&&this.removeChild(s);this.partload=!1},appendSibling:function(e){return this.addNode(e,"after")},applyPatch:function(t){if(null===t)return this.remove(),C(this);var n,i,s={children:!0,expanded:!0,parent:!0};for(n in t)t.hasOwnProperty(n)&&(i=t[n],s[n]||e.isFunction(i)||(g[n]?this[n]=i:this.data[n]=i));return t.hasOwnProperty("children")&&(this.removeChildren(),t.children&&this._setChildren(t.children)),this.isVisible()&&(this.renderTitle(),this.renderStatus()),t.hasOwnProperty("expanded")?this.setExpanded(t.expanded):C(this)},collapseSiblings:function(){return this.tree._callHook("nodeCollapseSiblings",this)},copyTo:function(e,t,n){return e.addNode(this.toDict(!0,n),t)},countChildren:function(e){var t,n,i,s=this.children;if(!s)return 0;if(i=s.length,!1!==e)for(t=0,n=i;t<n;t++)i+=s[t].countChildren();return i},debug:function(e){this.tree.options.debugLevel>=4&&(Array.prototype.unshift.call(arguments,this.toString()),w("log",arguments))},discard:function(){return this.warn("FancytreeNode.discard() is deprecated since 2014-02-16. Use .resetLazy() instead."),this.resetLazy()},discardMarkup:function(e){var t=e?"nodeRemoveMarkup":"nodeRemoveChildMarkup";this.tree._callHook(t,this)},error:function(e){this.tree.options.debugLevel>=1&&(Array.prototype.unshift.call(arguments,this.toString()),w("error",arguments))},findAll:function(t){t=e.isFunction(t)?t:j(t);var n=[];return this.visit(function(e){t(e)&&n.push(e)}),n},findFirst:function(t){t=e.isFunction(t)?t:j(t);var n=null;return this.visit(function(e){if(t(e))return n=e,!1}),n},findRelatedNode:function(e,t){return this.tree.findRelatedNode(this,e,t)},_changeSelectStatusAttrs:function(e){var t=!1,n=this.tree.options,s=i.evalOption("unselectable",this,this,n,!1),r=i.evalOption("unselectableStatus",this,this,n,void 0);switch(s&&null!=r&&(e=r),e){case!1:t=this.selected||this.partsel,this.selected=!1,this.partsel=!1;break;case!0:t=!this.selected||!this.partsel,this.selected=!0,this.partsel=!0;break;case void 0:t=this.selected||!this.partsel,this.selected=!1,this.partsel=!0;break;default:_(!1,"invalid state: "+e)}return t&&this.renderStatus(),t},fixSelection3AfterClick:function(e){var t=this.isSelected();this.visit(function(e){if(e._changeSelectStatusAttrs(t),e.radiogroup)return"skip"}),this.fixSelection3FromEndNodes(e)},fixSelection3FromEndNodes:function(e){var t=this.tree.options;_(3===t.selectMode,"expected selectMode 3"),function e(n){var s,r,o,a,u,l,d,c,h=n.children;if(h&&h.length){for(l=!0,d=!1,s=0,r=h.length;s<r;s++)a=e(o=h[s]),i.evalOption("unselectableIgnore",o,o,t,!1)||(!1!==a&&(d=!0),!0!==a&&(l=!1));u=!!l||!!d&&void 0}else u=null==(c=i.evalOption("unselectableStatus",n,n,t,void 0))?!!n.selected:!!c;return n.partsel&&!n.selected&&n.lazy&&null==n.children&&(u=void 0),n._changeSelectStatusAttrs(u),u}(this),this.visitParents(function(e){var n,s,r,o,a,u=e.children,l=!0,d=!1;for(n=0,s=u.length;n<s;n++)r=u[n],i.evalOption("unselectableIgnore",r,r,t,!1)||(((o=null==(a=i.evalOption("unselectableStatus",r,r,t,void 0))?!!r.selected:!!a)||r.partsel)&&(d=!0),o||(l=!1));o=!!l||!!d&&void 0,e._changeSelectStatusAttrs(o)})},fromDict:function(t){for(var n in t)g[n]?this[n]=t[n]:"data"===n?e.extend(this.data,t.data):e.isFunction(t[n])||y[n]||(this.data[n]=t[n]);t.children&&(this.removeChildren(),this.addChildren(t.children)),this.renderTitle()},getChildren:function(){if(void 0!==this.hasChildren())return this.children},getFirstChild:function(){return this.children?this.children[0]:null},getIndex:function(){return e.inArray(this,this.parent.children)},getIndexHier:function(t,n){t=t||".";var i,s=[];return e.each(this.getParentList(!1,!0),function(e,t){i=""+(t.getIndex()+1),n&&(i=("0000000"+i).substr(-n)),s.push(i)}),s.join(t)},getKeyPath:function(e){var t=this.tree.options.keyPathSeparator;return t+this.getPath(!e,"key",t)},getLastChild:function(){return this.children?this.children[this.children.length-1]:null},getLevel:function(){for(var e=0,t=this.parent;t;)e++,t=t.parent;return e},getNextSibling:function(){if(this.parent){var e,t,n=this.parent.children;for(e=0,t=n.length-1;e<t;e++)if(n[e]===this)return n[e+1]}return null},getParent:function(){return this.parent},getParentList:function(e,t){for(var n=[],i=t?this:this.parent;i;)(e||i.parent)&&n.unshift(i),i=i.parent;return n},getPath:function(t,n,i){t=!1!==t,n=n||"title",i=i||"/";var s,r=[],o=e.isFunction(n);return this.visitParents(function(e){e.parent&&(s=o?n(e):e[n],r.unshift(s))},t),r.join(i)},getPrevSibling:function(){if(this.parent){var e,t,n=this.parent.children;for(e=1,t=n.length;e<t;e++)if(n[e]===this)return n[e-1]}return null},getSelectedNodes:function(e){var t=[];return this.visit(function(n){if(n.selected&&(t.push(n),!0===e))return"skip"}),t},hasChildren:function(){if(this.lazy){if(null==this.children)return;if(0===this.children.length)return!1;if(1===this.children.length&&this.children[0].isStatusNode())return;return!0}return!(!this.children||!this.children.length)},hasFocus:function(){return this.tree.hasFocus()&&this.tree.focusNode===this},info:function(e){this.tree.options.debugLevel>=3&&(Array.prototype.unshift.call(arguments,this.toString()),w("info",arguments))},isActive:function(){return this.tree.activeNode===this},isBelowOf:function(e){return this.getIndexHier(".",5)>e.getIndexHier(".",5)},isChildOf:function(e){return this.parent&&this.parent===e},isDescendantOf:function(t){if(!t||t.tree!==this.tree)return!1;for(var n=this.parent;n;){if(n===t)return!0;n===n.parent&&e.error("Recursive parent link: "+n),n=n.parent}return!1},isExpanded:function(){return!!this.expanded},isFirstSibling:function(){var e=this.parent;return!e||e.children[0]===this},isFolder:function(){return!!this.folder},isLastSibling:function(){var e=this.parent;return!e||e.children[e.children.length-1]===this},isLazy:function(){return!!this.lazy},isLoaded:function(){return!this.lazy||void 0!==this.hasChildren()},isLoading:function(){return!!this._isLoading},isRoot:function(){return this.isRootNode()},isPartsel:function(){return!this.selected&&!!this.partsel},isPartload:function(){return!!this.partload},isRootNode:function(){return this.tree.rootNode===this},isSelected:function(){return!!this.selected},isStatusNode:function(){return!!this.statusNodeType},isPagingNode:function(){return"paging"===this.statusNodeType},isTopLevel:function(){return this.tree.rootNode===this.parent},isUndefined:function(){return void 0===this.hasChildren()},isVisible:function(){var e,t,n=this.tree.enableFilter,i=this.getParentList(!1,!1);if(n&&!this.match&&!this.subMatchCount)return this.debug("isVisible: HIDDEN ("+n+", "+this.match+", "+this.match+")"),!1;for(e=0,t=i.length;e<t;e++)if(!i[e].expanded)return this.debug("isVisible: HIDDEN (parent collapsed)"),!1;return this.debug("isVisible: VISIBLE"),!0},lazyLoad:function(e){return this.warn("FancytreeNode.lazyLoad() is deprecated since 2014-02-16. Use .load() instead."),this.load(e)},load:function(e){var t,n,i=this,s=this.isExpanded();return _(this.isLazy(),"load() requires a lazy node"),e||this.isUndefined()?(this.isLoaded()&&this.resetLazy(),!1===(n=this.tree._triggerNodeEvent("lazyLoad",this))?C(this):(_("boolean"!=typeof n,"lazyLoad event must return source in data.result"),t=this.tree._callHook("nodeLoadChildren",this,n),s?(this.expanded=!0,t.always(function(){i.render()})):t.always(function(){i.renderStatus()}),t)):C(this)},makeVisible:function(t){var n,i=this,s=[],r=new e.Deferred,o=this.getParentList(!1,!1),a=o.length,u=!(t&&!0===t.noAnimation),l=!(t&&!1===t.scrollIntoView);for(n=a-1;n>=0;n--)s.push(o[n].setExpanded(!0,t));return e.when.apply(e,s).done(function(){l?i.scrollIntoView(u).done(function(){r.resolve()}):r.resolve()}),r.promise()},moveTo:function(t,n,i){void 0===n||"over"===n?n="child":"firstChild"===n&&(t.children&&t.children.length?(n="before",t=t.children[0]):n="child");var s,r=this.tree,o=this.parent,a="child"===n?t:t.parent;if(this!==t){if(this.parent?a.isDescendantOf(this)&&e.error("Cannot move a node to its own descendant"):e.error("Cannot move system root"),a!==o&&o.triggerModifyChild("remove",this),1===this.parent.children.length){if(this.parent===a)return;this.parent.children=this.parent.lazy?[]:null,this.parent.expanded=!1}else _((s=e.inArray(this,this.parent.children))>=0,"invalid source parent"),this.parent.children.splice(s,1);if(this.parent=a,a.hasChildren())switch(n){case"child":a.children.push(this);break;case"before":_((s=e.inArray(t,a.children))>=0,"invalid target parent"),a.children.splice(s,0,this);break;case"after":_((s=e.inArray(t,a.children))>=0,"invalid target parent"),a.children.splice(s+1,0,this);break;default:e.error("Invalid mode "+n)}else a.children=[this];i&&t.visit(i,!0),a===o?a.triggerModifyChild("move",this):a.triggerModifyChild("add",this),r!==t.tree&&(this.warn("Cross-tree moveTo is experimental!"),this.visit(function(e){e.tree=t.tree},!0)),r._callHook("treeStructureChanged",r,"moveTo"),o.isDescendantOf(a)||o.render(),a.isDescendantOf(o)||a===o||a.render()}},navigate:function(t,n){var i,s=e.ui.keyCode;switch(t){case"left":case s.LEFT:if(this.expanded)return this.setExpanded(!1);break;case"right":case s.RIGHT:if(!this.expanded&&(this.children||this.lazy))return this.setExpanded()}if(i=this.findRelatedNode(t)){try{i.makeVisible({scrollIntoView:!1})}catch(e){}return!1===n?i.setFocus():i.setActive()}return this.warn("Could not find related node '"+t+"'."),C()},remove:function(){return this.parent.removeChild(this)},removeChild:function(e){return this.tree._callHook("nodeRemoveChild",this,e)},removeChildren:function(){return this.tree._callHook("nodeRemoveChildren",this)},removeClass:function(e){return this.toggleClass(e,!1)},render:function(e,t){return this.tree._callHook("nodeRender",this,e,t)},renderTitle:function(){return this.tree._callHook("nodeRenderTitle",this)},renderStatus:function(){return this.tree._callHook("nodeRenderStatus",this)},replaceWith:function(n){var i,s=this.parent,r=e.inArray(this,s.children),o=this;return _(this.isPagingNode(),"replaceWith() currently requires a paging status node"),(i=this.tree._callHook("nodeLoadChildren",this,n)).done(function(e){var n=o.children;for(t=0;t<n.length;t++)n[t].parent=s;s.children.splice.apply(s.children,[r+1,0].concat(n)),o.children=null,o.remove(),s.render()}).fail(function(){o.setExpanded()}),i},resetLazy:function(){this.removeChildren(),this.expanded=!1,this.lazy=!0,this.children=void 0,this.renderStatus()},scheduleAction:function(t,n){this.tree.timer&&(clearTimeout(this.tree.timer),this.tree.debug("clearTimeout(%o)",this.tree.timer)),this.tree.timer=null;var i=this;switch(t){case"cancel":break;case"expand":this.tree.timer=setTimeout(function(){i.tree.debug("setTimeout: trigger expand"),i.setExpanded(!0)},n);break;case"activate":this.tree.timer=setTimeout(function(){i.tree.debug("setTimeout: trigger activate"),i.setActive(!0)},n);break;default:e.error("Invalid mode "+t)}},scrollIntoView:function(t,n){if(void 0!==n&&(i=n).tree&&void 0!==i.statusNodeType)throw Error("scrollIntoView() with 'topNode' option is deprecated since 2014-05-08. Use 'options.topNode' instead.");var i,s=e.extend({effects:!0===t?{duration:200,queue:!1}:t,scrollOfs:this.tree.options.scrollOfs,scrollParent:this.tree.options.scrollParent,topNode:null},n),r=s.scrollParent,o=this.tree.$container,a=o.css("overflow-y");r?r.jquery||(r=e(r)):r=this.tree.tbody?o.scrollParent():"scroll"===a||"auto"===a?o:o.scrollParent(),r[0]!==document&&r[0]!==document.body||(this.debug("scrollIntoView(): normalizing scrollParent to 'window':",r[0]),r=e(window));var u,l,d,c=new e.Deferred,h=this,p=e(this.span).height(),f=s.scrollOfs.top||0,m=s.scrollOfs.bottom||0,g=r.height(),v=r.scrollTop(),y=r,w=r[0]===window,b=s.topNode||null,x=null;return this.isVisible()?(w?(l=e(this.span).offset().top,u=b&&b.span?e(b.span).offset().top:0,y=e("html,body")):(_(r[0]!==document&&r[0]!==document.body,"scrollParent should be a simple element or `window`, not document or body."),d=r.offset().top,l=e(this.span).offset().top-d+v,u=b?e(b.span).offset().top-d+v:0,g-=Math.max(0,r.innerHeight()-r[0].clientHeight)),l<v+f?x=l-f:l+p>v+g-m&&(x=l+p-g+m,b&&(_(b.isRootNode()||b.isVisible(),"topNode must be visible"),u<x&&(x=u-f))),null===x?c.resolveWith(this):s.effects?(s.effects.complete=function(){c.resolveWith(h)},y.stop(!0).animate({scrollTop:x},s.effects)):(y[0].scrollTop=x,c.resolveWith(this)),c.promise()):(this.warn("scrollIntoView(): node is invisible."),C())},setActive:function(e,t){return this.tree._callHook("nodeSetActive",this,e,t)},setExpanded:function(e,t){return this.tree._callHook("nodeSetExpanded",this,e,t)},setFocus:function(e){return this.tree._callHook("nodeSetFocus",this,e)},setSelected:function(e,t){return this.tree._callHook("nodeSetSelected",this,e,t)},setStatus:function(e,t,n){return this.tree._callHook("nodeSetStatus",this,e,t,n)},setTitle:function(e){this.title=e,this.renderTitle(),this.triggerModify("rename")},sortChildren:function(e,t){var n,i,s=this.children;if(s){if(e=e||function(e,t){var n=e.title.toLowerCase(),i=t.title.toLowerCase();return n===i?0:n>i?1:-1},s.sort(e),t)for(n=0,i=s.length;n<i;n++)s[n].children&&s[n].sortChildren(e,"$norender$");"$norender$"!==t&&this.render(),this.triggerModifyChild("sort")}},toDict:function(t,n){var i,s,r,o={},a=this;if(e.each(m,function(e,t){(a[t]||!1===a[t])&&(o[t]=a[t])}),e.isEmptyObject(this.data)||(o.data=e.extend({},this.data),e.isEmptyObject(o.data)&&delete o.data),n&&n(o,a),t&&this.hasChildren())for(o.children=[],i=0,s=this.children.length;i<s;i++)(r=this.children[i]).isStatusNode()||o.children.push(r.toDict(!0,n));return o},toggleClass:function(t,n){var i,s,r=t.match(/\S+/g)||[],o=0,a=!1,u=this[this.tree.statusClassPropName],l=" "+(this.extraClasses||"")+" ";for(u&&e(u).toggleClass(t,n);i=r[o++];)if(s=l.indexOf(" "+i+" ")>=0,n=void 0===n?!s:!!n)s||(l+=i+" ",a=!0);else for(;l.indexOf(" "+i+" ")>-1;)l=l.replace(" "+i+" "," ");return this.extraClasses=e.trim(l),a},toggleExpanded:function(){return this.tree._callHook("nodeToggleExpanded",this)},toggleSelected:function(){return this.tree._callHook("nodeToggleSelected",this)},toString:function(){return"FancytreeNode@"+this.key+"[title='"+this.title+"']"},triggerModifyChild:function(t,n,i){var s,r=this.tree.options.modifyChild;r&&(n&&n.parent!==this&&e.error("childNode "+n+" is not a child of "+this),s={node:this,tree:this.tree,operation:t,childNode:n||null},i&&e.extend(s,i),r({type:"modifyChild"},s))},triggerModify:function(e,t){this.parent.triggerModifyChild(e,this,t)},visit:function(e,t){var n,i,s=!0,r=this.children;if(!0===t&&(!1===(s=e(this))||"skip"===s))return s;if(r)for(n=0,i=r.length;n<i&&!1!==(s=r[n].visit(e,!0));n++);return s},visitAndLoad:function(t,n,i){var s,r,o,a=this;return!t||!0!==n||!1!==(r=t(a))&&"skip"!==r?a.children||a.lazy?(s=new e.Deferred,o=[],a.load().done(function(){for(var n=0,i=a.children.length;n<i;n++){if(!1===(r=a.children[n].visitAndLoad(t,!0,!0))){s.reject();break}"skip"!==r&&o.push(r)}e.when.apply(this,o).then(function(){s.resolve()})}),s.promise()):C():i?r:C()},visitParents:function(e,t){if(t&&!1===e(this))return!1;for(var n=this.parent;n;){if(!1===e(n))return!1;n=n.parent}return!0},visitSiblings:function(e,t){var n,i,s,r=this.parent.children;for(n=0,i=r.length;n<i;n++)if(s=r[n],(t||s!==this)&&!1===e(s))return!1;return!0},warn:function(e){this.tree.options.debugLevel>=2&&(Array.prototype.unshift.call(arguments,this.toString()),w("warn",arguments))}},D.prototype={_makeHookContext:function(t,n,i){var s,r;return void 0!==t.node?(n&&t.originalEvent!==n&&e.error("invalid args"),s=t):t.tree?s={node:t,tree:r=t.tree,widget:r.widget,options:r.widget.options,originalEvent:n,typeInfo:r.types[t.type]||{}}:t.widget?s={node:null,tree:t,widget:t.widget,options:t.widget.options,originalEvent:n}:e.error("invalid args"),i&&e.extend(s,i),s},_callHook:function(t,n,i){var s=this._makeHookContext(n),r=this[t],o=Array.prototype.slice.call(arguments,2);return e.isFunction(r)||e.error("_callHook('"+t+"') is not a function"),o.unshift(s),r.apply(this,o)},_setExpiringValue:function(e,t,n){this._tempCache[e]={value:t,expire:Date.now()+(+n||50)}},_getExpiringValue:function(e){var t=this._tempCache[e];return t&&t.expire>Date.now()?t.value:(delete this._tempCache[e],null)},_requireExtension:function(t,n,i,s){null!=i&&(i=!!i);var r=this._local.name,o=this.options.extensions,a=e.inArray(t,o)<e.inArray(r,o),u=n&&null==this.ext[t],l=!u&&null!=i&&i!==a;return _(r&&r!==t,"invalid or same name '"+r+"' (require yourself?)"),!u&&!l||(s||(u||n?(s="'"+r+"' extension requires '"+t+"'",l&&(s+=" to be registered "+(i?"before":"after")+" itself")):s="If used together, `"+t+"` must be registered "+(i?"before":"after")+" `"+r+"`"),e.error(s),!1)},activateKey:function(e,t){var n=this.getNodeByKey(e);return n?n.setActive(!0,t):this.activeNode&&this.activeNode.setActive(!1,t),n},addPagingNode:function(e,t){return this.rootNode.addPagingNode(e,t)},applyPatch:function(t){var n,i,s,r,o,a,u=t.length,l=[];for(i=0;i<u;i++)_(2===(s=t[i]).length,"patchList must be an array of length-2-arrays"),r=s[0],o=s[1],(a=null===r?this.rootNode:this.getNodeByKey(r))?(n=new e.Deferred,l.push(n),a.applyPatch(o).always(T(n,a))):this.warn("could not find node with key '"+r+"'");return e.when.apply(e,l).promise()},clear:function(e){this._callHook("treeClear",this)},count:function(){return this.rootNode.countChildren()},debug:function(e){this.options.debugLevel>=4&&(Array.prototype.unshift.call(arguments,this.toString()),w("log",arguments))},enable:function(e){!1===e?this.widget.disable():this.widget.enable()},enableUpdate:function(e){return e=!1!==e,!!this._enableUpdate==!!e?e:(this._enableUpdate=e,e?(this.debug("enableUpdate(true): redraw "),this._callHook("treeStructureChanged",this,"enableUpdate"),this.render()):this.debug("enableUpdate(false)..."),!e)},error:function(e){this.options.debugLevel>=1&&(Array.prototype.unshift.call(arguments,this.toString()),w("error",arguments))},expandAll:function(e,t){var n=this.enableUpdate(!1);e=!1!==e,this.visit(function(n){!1!==n.hasChildren()&&n.isExpanded()!==e&&n.setExpanded(e,t)}),this.enableUpdate(n)},findAll:function(e){return this.rootNode.findAll(e)},findFirst:function(e){return this.rootNode.findFirst(e)},findNextNode:function(e,t){var n,i=null,s=this.getFirstChild();function r(n){if(e(n)&&(i=n),i||n===t)return!1}return e="string"==typeof e?(n=new RegExp("^"+e,"i"),function(e){return n.test(e.title)}):e,t=t||s,this.visitRows(r,{start:t,includeSelf:!1}),i||t===s||this.visitRows(r,{start:s,includeSelf:!0}),i},findRelatedNode:function(t,n,i){var s=null,r=e.ui.keyCode;switch(n){case"parent":case r.BACKSPACE:t.parent&&t.parent.parent&&(s=t.parent);break;case"first":case r.HOME:this.visit(function(e){if(e.isVisible())return s=e,!1});break;case"last":case r.END:this.visit(function(e){e.isVisible()&&(s=e)});break;case"left":case r.LEFT:t.expanded?t.setExpanded(!1):t.parent&&t.parent.parent&&(s=t.parent);break;case"right":case r.RIGHT:t.expanded||!t.children&&!t.lazy?t.children&&t.children.length&&(s=t.children[0]):(t.setExpanded(),s=t);break;case"up":case r.UP:this.visitRows(function(e){return s=e,!1},{start:t,reverse:!0,includeSelf:!1});break;case"down":case r.DOWN:this.visitRows(function(e){return s=e,!1},{start:t,includeSelf:!1});break;default:this.tree.warn("Unknown relation '"+n+"'.")}return s},generateFormElements:function(t,n,i){i=i||{};var s,r="string"==typeof t?t:"ft_"+this._id+"[]",o="string"==typeof n?n:"ft_"+this._id+"_active",a="fancytree_result_"+this._id,u=e("#"+a),l=3===this.options.selectMode&&!1!==i.stopOnParents;function d(t){u.append(e("<input>",{type:"checkbox",name:r,value:t.key,checked:!0}))}u.length?u.empty():u=e("<div>",{id:a}).hide().insertAfter(this.$container),!1!==n&&this.activeNode&&u.append(e("<input>",{type:"radio",name:o,value:this.activeNode.key,checked:!0})),i.filter?this.visit(function(e){var t=i.filter(e);if("skip"===t)return t;!1!==t&&d(e)}):!1!==t&&(s=this.getSelectedNodes(l),e.each(s,function(e,t){d(t)}))},getActiveNode:function(){return this.activeNode},getFirstChild:function(){return this.rootNode.getFirstChild()},getFocusNode:function(){return this.focusNode},getOption:function(e){return this.widget.option(e)},getNodeByKey:function(e,t){var n,i;return!t&&(n=document.getElementById(this.options.idPrefix+e))?n.ftnode?n.ftnode:null:(t=t||this.rootNode,i=null,t.visit(function(t){if(t.key===e)return i=t,!1},!0),i)},getRootNode:function(){return this.rootNode},getSelectedNodes:function(e){return this.rootNode.getSelectedNodes(e)},hasFocus:function(){return!!this._hasFocus},info:function(e){this.options.debugLevel>=3&&(Array.prototype.unshift.call(arguments,this.toString()),w("info",arguments))},loadKeyPath:function(t,n){var i,s,r,o=this,a=new e.Deferred,u=this.getRootNode(),l=this.options.keyPathSeparator,d=[],c=e.extend({},n);for("function"==typeof n?i=n:n&&n.callback&&(i=n.callback),c.callback=function(e,t,n){i&&i.call(e,t,n),a.notifyWith(e,[{node:t,status:n}])},null==c.matchKey&&(c.matchKey=function(e,t){return e.key===t}),e.isArray(t)||(t=[t]),s=0;s<t.length;s++)(r=t[s]).charAt(0)===l&&(r=r.substr(1)),d.push(r.split(l));return setTimeout(function(){o._loadKeyPathImpl(a,c,u,d).done(function(){a.resolve()})},0),a.promise()},_loadKeyPathImpl:function(t,n,i,s){var r,o,a,u,l,d,c,h,p,f,m=this;function g(e,t){var i,s,r=e.children;if(r)for(i=0,s=r.length;i<s;i++)if(n.matchKey(r[i],t))return r[i];return null}for(c={},o=0;o<s.length;o++)for(p=s[o],h=i;p.length;){if(a=p.shift(),!(u=g(h,a))){this.warn("loadKeyPath: key not found: "+a+" (parent: "+h+")"),n.callback(this,a,"error");break}if(0===p.length){n.callback(this,u,"ok");break}if(u.lazy&&void 0===u.hasChildren()){n.callback(this,u,"loaded"),c[a=u.key]?c[a].pathSegList.push(p):c[a]={parent:u,pathSegList:[p]};break}n.callback(this,u,"loaded"),h=u}function v(e,t,i){n.callback(m,t,"loading"),t.load().done(function(){m._loadKeyPathImpl.call(m,e,n,t,i).always(T(e,m))}).fail(function(i){m.warn("loadKeyPath: error loading lazy "+t),n.callback(m,u,"error"),e.rejectWith(m)})}for(l in r=[],c)c.hasOwnProperty(l)&&(d=c[l],f=new e.Deferred,r.push(f),v(f,d.parent,d.pathSegList));return e.when.apply(e,r).promise()},reactivate:function(e){var t,n=this.activeNode;return n?(this.activeNode=null,t=n.setActive(!0,{noFocus:!0}),e&&n.setFocus(),t):C()},reload:function(e){return this._callHook("treeClear",this),this._callHook("treeLoad",this,e)},render:function(e,t){return this.rootNode.render(e,t)},selectAll:function(e){this.visit(function(t){t.setSelected(e)})},setFocus:function(e){return this._callHook("treeSetFocus",this,e)},setOption:function(e,t){return this.widget.option(e,t)},toDict:function(e,t){var n=this.rootNode.toDict(!0,t);return e?n:n.children},toString:function(){return"Fancytree@"+this._id},_triggerNodeEvent:function(e,t,n,i){var s=this._makeHookContext(t,n,i),r=this.widget._trigger(e,n,s);return!1!==r&&void 0!==s.result?s.result:r},_triggerTreeEvent:function(e,t,n){var i=this._makeHookContext(this,t,n),s=this.widget._trigger(e,t,i);return!1!==s&&void 0!==i.result?i.result:s},visit:function(e){return this.rootNode.visit(e,!1)},visitRows:function(e,t){if(!this.rootNode.children)return!1;if(t&&t.reverse)return delete t.reverse,this._visitRowsUp(e,t);var n,i,s,r=0,o=!1===(t=t||{}).includeSelf,a=!!t.includeHidden,u=!a&&this.enableFilter,l=t.start||this.rootNode.children[0];for(i=l.parent;i;){for(n=(s=i.children).indexOf(l)+r;n<s.length;n++)if(l=s[n],!u||l.match||l.subMatchCount){if(!o&&!1===e(l))return!1;if(o=!1,l.children&&l.children.length&&(a||l.expanded)&&!1===l.visit(function(t){return!u||t.match||t.subMatchCount?!1!==e(t)&&(a||!t.children||t.expanded?void 0:"skip"):"skip"},!1))return!1}l=i,i=i.parent,r=1}return!0},_visitRowsUp:function(e,t){for(var n,i,s,r=!!t.includeHidden,o=t.start||this.rootNode.children[0];;){if((n=(s=o.parent).children)[0]===o){if(!(o=s).parent)break;n=s.children}else for(i=n.indexOf(o),o=n[i-1];(r||o.expanded)&&o.children&&o.children.length;)s=o,o=(n=o.children)[n.length-1];if((r||o.isVisible())&&!1===e(o))return!1}},warn:function(e){this.options.debugLevel>=2&&(Array.prototype.unshift.call(arguments,this.toString()),w("warn",arguments))}},e.extend(D.prototype,{nodeClick:function(e){var t,n,i=e.targetType,s=e.node;if("expander"===i){if(s.isLoading())return void s.debug("Got 2nd click while loading: ignored");this._callHook("nodeToggleExpanded",e)}else if("checkbox"===i)this._callHook("nodeToggleSelected",e),e.options.focusOnSelect&&this._callHook("nodeSetFocus",e,!0);else{if(n=!1,t=!0,s.folder)switch(e.options.clickFolderMode){case 2:n=!0,t=!1;break;case 3:t=!0,n=!0}t&&(this.nodeSetFocus(e),this._callHook("nodeSetActive",e,!0)),n&&this._callHook("nodeToggleExpanded",e)}},nodeCollapseSiblings:function(e,t){var n,i,s,r=e.node;if(r.parent)for(i=0,s=(n=r.parent.children).length;i<s;i++)n[i]!==r&&n[i].expanded&&this._callHook("nodeSetExpanded",n[i],!1,t)},nodeDblclick:function(e){"title"===e.targetType&&4===e.options.clickFolderMode&&this._callHook("nodeToggleExpanded",e),"title"===e.targetType&&e.originalEvent.preventDefault()},nodeKeydown:function(t){var n,s,r,o=t.originalEvent,a=t.node,u=t.tree,c=t.options,h=o.which,p=o.key||String.fromCharCode(h),f=!!(o.altKey||o.ctrlKey||o.metaKey),m=!d[h]&&!l[h]&&!f,g=e(o.target),v=!0,y=!(o.ctrlKey||!c.autoActivate);if(a||(r=this.getActiveNode()||this.getFirstChild())&&(r.setFocus(),(a=t.node=this.focusNode).debug("Keydown force focus on active node")),c.quicksearch&&m&&!g.is(":input:enabled"))return(s=Date.now())-u.lastQuicksearchTime>500&&(u.lastQuicksearchTerm=""),u.lastQuicksearchTime=s,u.lastQuicksearchTerm+=p,(n=u.findNextNode(u.lastQuicksearchTerm,u.getActiveNode()))&&n.setActive(),void o.preventDefault();switch(i.eventToString(o)){case"+":case"=":u.nodeSetExpanded(t,!0);break;case"-":u.nodeSetExpanded(t,!1);break;case"space":a.isPagingNode()?u._triggerNodeEvent("clickPaging",t,o):i.evalOption("checkbox",a,a,c,!1)?u.nodeToggleSelected(t):u.nodeSetActive(t,!0);break;case"return":u.nodeSetActive(t,!0);break;case"home":case"end":case"backspace":case"left":case"right":case"up":case"down":a.navigate(o.which,y);break;default:v=!1}v&&o.preventDefault()},nodeLoadChildren:function(t,n){var i,s,r,o,a=t.tree,u=t.node,l=Date.now();return e.isFunction(n)&&(n=n.call(a,{type:"source"},t),_(!e.isFunction(n),"source callback must not return another function")),n.url&&(u._requestId&&u.warn("Recursive load request #"+l+" while #"+u._requestId+" is pending."),i=e.extend({},t.options.ajax,n),u._requestId=l,i.debugDelay?(s=i.debugDelay,delete i.debugDelay,e.isArray(s)&&(s=s[0]+Math.random()*(s[1]-s[0])),u.warn("nodeLoadChildren waiting debugDelay "+Math.round(s)+" ms ..."),r=e.Deferred(function(t){setTimeout(function(){e.ajax(i).done(function(){t.resolveWith(this,arguments)}).fail(function(){t.rejectWith(this,arguments)})},s)})):r=e.ajax(i),n=new e.Deferred,r.done(function(i,s,r){var o,d;if("json"!==this.dataType&&"jsonp"!==this.dataType||"string"!=typeof i||e.error("Ajax request returned a string (did you get the JSON dataType wrong?)."),u._requestId&&u._requestId>l)n.rejectWith(this,["$recursive_request"]);else{if(t.options.postProcess){try{d=a._triggerNodeEvent("postProcess",t,t.originalEvent,{response:i,error:null,dataType:this.dataType})}catch(e){d={error:e,message:""+e,details:"postProcess failed"}}if(d.error)return o=e.isPlainObject(d.error)?d.error:{message:d.error},o=a._makeHookContext(u,null,o),void n.rejectWith(this,[o]);(e.isArray(d)||e.isPlainObject(d)&&e.isArray(d.children))&&(i=d)}else i&&i.hasOwnProperty("d")&&t.options.enableAspx&&(i="string"==typeof i.d?e.parseJSON(i.d):i.d);n.resolveWith(this,[i])}}).fail(function(e,t,i){var s=a._makeHookContext(u,null,{error:e,args:Array.prototype.slice.call(arguments),message:i,details:e.status+": "+i});n.rejectWith(this,[s])})),e.isFunction(n.then)&&e.isFunction(n.catch)&&(r=n,n=new e.Deferred,r.then(function(e){n.resolve(e)},function(e){n.reject(e)})),e.isFunction(n.promise)?(a.nodeSetStatus(t,"loading"),n.done(function(e){a.nodeSetStatus(t,"ok"),u._requestId=null}).fail(function(e){var n;"$recursive_request"!==e?(e.node&&e.error&&e.message?n=e:"[object Object]"===(n=a._makeHookContext(u,null,{error:e,args:Array.prototype.slice.call(arguments),message:e?e.message||e.toString():""})).message&&(n.message=""),u.warn("Load children failed ("+n.message+")",n),!1!==a._triggerNodeEvent("loadError",n,null)&&a.nodeSetStatus(t,"error",n.message,n.details)):u.warn("Ignored response for obsolete load request #"+l+" (expected #"+u._requestId+")")})):t.options.postProcess&&(o=a._triggerNodeEvent("postProcess",t,t.originalEvent,{response:n,error:null,dataType:typeof n}),(e.isArray(o)||e.isPlainObject(o)&&e.isArray(o.children))&&(n=o)),e.when(n).done(function(n){var i,s;e.isPlainObject(n)&&(_(u.isRootNode(),"source may only be an object for root nodes (expecting an array of child objects otherwise)"),_(e.isArray(n.children),"if an object is passed as source, it must contain a 'children' array (all other properties are added to 'tree.data')"),i=n,n=n.children,delete i.children,e.each(f,function(e,t){void 0!==i[t]&&(a[t]=i[t],delete i[t])}),e.extend(a.data,i)),_(e.isArray(n),"expected array of children"),u._setChildren(n),a.options.nodata&&0===n.length&&(e.isFunction(a.options.nodata)?s=a.options.nodata.call(a,{type:"nodata"},t):!0===a.options.nodata&&u.isRootNode()?s=a.options.strings.nodata:"string"==typeof a.options.nodata&&u.isRootNode()&&(s=a.options.nodata),s&&u.setStatus("nodata",s)),a._triggerNodeEvent("loadChildren",u)})},nodeLoadKeyPath:function(e,t){},nodeRemoveChild:function(t,n){var i,s=t.node,r=e.extend({},t,{node:n}),o=s.children;if(1===o.length)return _(n===o[0],"invalid single child"),this.nodeRemoveChildren(t);this.activeNode&&(n===this.activeNode||this.activeNode.isDescendantOf(n))&&this.activeNode.setActive(!1),this.focusNode&&(n===this.focusNode||this.focusNode.isDescendantOf(n))&&(this.focusNode=null),this.nodeRemoveMarkup(r),this.nodeRemoveChildren(r),_((i=e.inArray(n,o))>=0,"invalid child"),s.triggerModifyChild("remove",n),n.visit(function(e){e.parent=null},!0),this._callHook("treeRegisterNode",this,!1,n),o.splice(i,1)},nodeRemoveChildMarkup:function(t){var n=t.node;n.ul&&(n.isRootNode()?e(n.ul).empty():(e(n.ul).remove(),n.ul=null),n.visit(function(e){e.li=e.ul=null}))},nodeRemoveChildren:function(e){var t=e.tree,n=e.node;n.children&&(this.activeNode&&this.activeNode.isDescendantOf(n)&&this.activeNode.setActive(!1),this.focusNode&&this.focusNode.isDescendantOf(n)&&(this.focusNode=null),this.nodeRemoveChildMarkup(e),n.triggerModifyChild("remove",null),n.visit(function(e){e.parent=null,t._callHook("treeRegisterNode",t,!1,e)}),n.lazy?n.children=[]:n.children=null,n.isRootNode()||(n.expanded=!1),this.nodeRenderStatus(e))},nodeRemoveMarkup:function(t){var n=t.node;n.li&&(e(n.li).remove(),n.li=null),this.nodeRemoveChildMarkup(t)},nodeRender:function(t,n,i,s,r){var o,a,u,l,d,c,h,p=t.node,f=t.tree,m=t.options,g=m.aria,v=!1,y=p.parent,w=!y,b=p.children,x=null;if(!1!==f._enableUpdate&&(w||y.ul)){if(_(w||y.ul,"parent UL must exist"),w||(p.li&&(n||p.li.parentNode!==p.parent.ul)&&(p.li.parentNode===p.parent.ul?x=p.li.nextSibling:this.debug("Unlinking "+p+" (must be child of "+p.parent+")"),this.nodeRemoveMarkup(t)),p.li?this.nodeRenderStatus(t):(v=!0,p.li=document.createElement("li"),p.li.ftnode=p,p.key&&m.generateIds&&(p.li.id=m.idPrefix+p.key),p.span=document.createElement("span"),p.span.className="fancytree-node",g&&!p.tr&&e(p.li).attr("role","treeitem"),p.li.appendChild(p.span),this.nodeRenderTitle(t),m.createNode&&m.createNode.call(f,{type:"createNode"},t)),m.renderNode&&m.renderNode.call(f,{type:"renderNode"},t)),b){if(w||p.expanded||!0===i){for(p.ul||(p.ul=document.createElement("ul"),(!0!==s||r)&&p.expanded||(p.ul.style.display="none"),g&&e(p.ul).attr("role","group"),p.li?p.li.appendChild(p.ul):p.tree.$div.append(p.ul)),l=0,d=b.length;l<d;l++)h=e.extend({},t,{node:b[l]}),this.nodeRender(h,n,i,!1,!0);for(o=p.ul.firstChild;o;)(u=o.ftnode)&&u.parent!==p?(p.debug("_fixParent: remove missing "+u,o),c=o.nextSibling,o.parentNode.removeChild(o),o=c):o=o.nextSibling;for(o=p.ul.firstChild,l=0,d=b.length-1;l<d;l++)(a=b[l])===(u=o.ftnode)?o=o.nextSibling:p.ul.insertBefore(a.li,u.li)}}else p.ul&&(this.warn("remove child markup for "+p),this.nodeRemoveChildMarkup(t));w||v&&y.ul.insertBefore(p.li,x)}},nodeRenderTitle:function(t,n){var r,o,a,u,l,d,c,h=t.node,p=t.tree,f=t.options,m=f.aria,g=h.getLevel(),v=[];void 0!==n&&(h.title=n),h.span&&!1!==p._enableUpdate&&(l=m&&!1!==h.hasChildren()?" role='button'":"",g<f.minExpandLevel?(h.lazy||(h.expanded=!0),g>1&&v.push("<span "+l+" class='fancytree-expander fancytree-expander-fixed'></span>")):v.push("<span "+l+" class='fancytree-expander'></span>"),(r=i.evalOption("checkbox",h,h,f,!1))&&!h.isStatusNode()&&(l=m?" role='checkbox'":"",o="fancytree-checkbox",("radio"===r||h.parent&&h.parent.radiogroup)&&(o+=" fancytree-radio"),v.push("<span "+l+" class='"+o+"'></span>")),void 0!==h.data.iconClass&&(h.icon?e.error("'iconClass' node option is deprecated since v2.14.0: use 'icon' only instead"):(h.warn("'iconClass' node option is deprecated since v2.14.0: use 'icon' instead"),h.icon=h.data.iconClass)),!1!==(a=i.evalOption("icon",h,h,f,!0))&&(l=m?" role='presentation'":"",c=(c=i.evalOption("iconTooltip",h,h,f,null))?" title='"+E(c)+"'":"","string"==typeof a?s.test(a)?(a="/"===a.charAt(0)?a:(f.imagePath||"")+a,v.push("<img src='"+a+"' class='fancytree-icon'"+c+" alt='' />")):v.push("<span "+l+" class='fancytree-custom-icon "+a+"'"+c+"></span>"):a.text?v.push("<span "+l+" class='fancytree-custom-icon "+(a.addClass||"")+"'"+c+">"+i.escapeHtml(a.text)+"</span>"):a.html?v.push("<span "+l+" class='fancytree-custom-icon "+(a.addClass||"")+"'"+c+">"+a.html+"</span>"):v.push("<span "+l+" class='fancytree-icon'"+c+"></span>")),u="",f.renderTitle&&(u=f.renderTitle.call(p,{type:"renderTitle"},t)||""),u||(!0===(d=i.evalOption("tooltip",h,h,f,null))&&(d=h.title),u="<span class='fancytree-title'"+(d=d?" title='"+E(d)+"'":"")+(f.titlesTabbable?" tabindex='0'":"")+">"+(f.escapeTitles?i.escapeHtml(h.title):h.title)+"</span>"),v.push(u),h.span.innerHTML=v.join(""),this.nodeRenderStatus(t),f.enhanceTitle&&(t.$title=e(">span.fancytree-title",h.span),u=f.enhanceTitle.call(p,{type:"enhanceTitle"},t)||""))},nodeRenderStatus:function(t){var n,s=t.node,r=t.tree,o=t.options,a=s.hasChildren(),u=s.isLastSibling(),l=o.aria,d=o._classNames,c=[],h=s[r.statusClassPropName];h&&!1!==r._enableUpdate&&(l&&(n=e(s.tr||s.li)),c.push(d.node),r.activeNode===s&&c.push(d.active),r.focusNode===s&&c.push(d.focused),s.expanded&&c.push(d.expanded),l&&(!1===a?n.removeAttr("aria-expanded"):n.attr("aria-expanded",Boolean(s.expanded))),s.folder&&c.push(d.folder),!1!==a&&c.push(d.hasChildren),u&&c.push(d.lastsib),s.lazy&&null==s.children&&c.push(d.lazy),s.partload&&c.push(d.partload),s.partsel&&c.push(d.partsel),i.evalOption("unselectable",s,s,o,!1)&&c.push(d.unselectable),s._isLoading&&c.push(d.loading),s._error&&c.push(d.error),s.statusNodeType&&c.push(d.statusNodePrefix+s.statusNodeType),s.selected?(c.push(d.selected),l&&n.attr("aria-selected",!0)):l&&n.attr("aria-selected",!1),s.extraClasses&&c.push(s.extraClasses),!1===a?c.push(d.combinedExpanderPrefix+"n"+(u?"l":"")):c.push(d.combinedExpanderPrefix+(s.expanded?"e":"c")+(s.lazy&&null==s.children?"d":"")+(u?"l":"")),c.push(d.combinedIconPrefix+(s.expanded?"e":"c")+(s.folder?"f":"")),h.className=c.join(" "),s.li&&e(s.li).toggleClass(d.lastsib,u))},nodeSetActive:function(t,n,i){i=i||{};var s,r=t.node,o=t.tree,a=t.options,u=!0===i.noEvents,l=!0===i.noFocus,d=!1!==i.scrollIntoView;return r===o.activeNode==(n=!1!==n)?C(r):n&&!u&&!1===this._triggerNodeEvent("beforeActivate",r,t.originalEvent)?S(r,["rejected"]):(n?(o.activeNode&&(_(o.activeNode!==r,"node was active (inconsistency)"),s=e.extend({},t,{node:o.activeNode}),o.nodeSetActive(s,!1),_(null===o.activeNode,"deactivate was out of sync?")),a.activeVisible&&r.makeVisible({scrollIntoView:d}),o.activeNode=r,o.nodeRenderStatus(t),l||o.nodeSetFocus(t),u||o._triggerNodeEvent("activate",r,t.originalEvent)):(_(o.activeNode===r,"node was not active (inconsistency)"),o.activeNode=null,this.nodeRenderStatus(t),u||t.tree._triggerNodeEvent("deactivate",r,t.originalEvent)),C(r))},nodeSetExpanded:function(t,n,i){i=i||{};var s,r,o,a,u,l,d=t.node,c=t.tree,h=t.options,p=!0===i.noAnimation,f=!0===i.noEvents;if(n=!1!==n,d.expanded&&n||!d.expanded&&!n)return C(d);if(n&&!d.lazy&&!d.hasChildren())return C(d);if(!n&&d.getLevel()<h.minExpandLevel)return S(d,["locked"]);if(!f&&!1===this._triggerNodeEvent("beforeExpand",d,t.originalEvent))return S(d,["rejected"]);if(p||d.isVisible()||(p=i.noAnimation=!0),r=new e.Deferred,n&&!d.expanded&&h.autoCollapse){u=d.getParentList(!1,!0),l=h.autoCollapse;try{for(h.autoCollapse=!1,o=0,a=u.length;o<a;o++)this._callHook("nodeCollapseSiblings",u[o],i)}finally{h.autoCollapse=l}}return r.done(function(){var e=d.getLastChild();n&&h.autoScroll&&!p&&e?e.scrollIntoView(!0,{topNode:d}).always(function(){f||t.tree._triggerNodeEvent(n?"expand":"collapse",t)}):f||t.tree._triggerNodeEvent(n?"expand":"collapse",t)}),s=function(i){var s=h._classNames,r=h.toggleEffect;if(d.expanded=n,c._callHook("treeStructureChanged",t,n?"expand":"collapse"),c._callHook("nodeRender",t,!1,!1,!0),d.ul)if("none"!==d.ul.style.display==!!d.expanded)d.warn("nodeSetExpanded: UL.style.display already set");else{if(r&&!p)return e(d.li).addClass(s.animating),void(e.isFunction(e(d.ul)[r.effect])?(c.debug("use jquery."+r.effect+" method"),e(d.ul)[r.effect]({duration:r.duration,always:function(){e(this).removeClass(s.animating),e(d.li).removeClass(s.animating),i()}})):(e(d.ul).stop(!0,!0),e(d.ul).parent().find(".ui-effects-placeholder").remove(),e(d.ul).toggle(r.effect,r.options,r.duration,function(){e(this).removeClass(s.animating),e(d.li).removeClass(s.animating),i()})));d.ul.style.display=d.expanded||!parent?"":"none"}i()},n&&d.lazy&&void 0===d.hasChildren()?d.load().done(function(){r.notifyWith&&r.notifyWith(d,["loaded"]),s(function(){r.resolveWith(d)})}).fail(function(e){s(function(){r.rejectWith(d,["load failed ("+e+")"])})}):s(function(){r.resolveWith(d)}),r.promise()},nodeSetFocus:function(t,n){var i,s=t.tree,r=t.node,o=s.options,a=!!t.originalEvent&&e(t.originalEvent.target).is(":input");if(n=!1!==n,s.focusNode){if(s.focusNode===r&&n)return;i=e.extend({},t,{node:s.focusNode}),s.focusNode=null,this._triggerNodeEvent("blur",i),this._callHook("nodeRenderStatus",i)}n&&(this.hasFocus()||(r.debug("nodeSetFocus: forcing container focus"),this._callHook("treeSetFocus",t,!0,{calledByNode:!0})),r.makeVisible({scrollIntoView:!1}),s.focusNode=r,o.titlesTabbable&&(a||e(r.span).find(".fancytree-title").focus()),o.aria&&e(s.$container).attr("aria-activedescendant",e(r.tr||r.li).uniqueId().attr("id")),this._triggerNodeEvent("focus",t),document.activeElement===s.$container.get(0)||e(document.activeElement,s.$container).length>=1||e(s.$container).focus(),o.autoScroll&&r.scrollIntoView(),this._callHook("nodeRenderStatus",t))},nodeSetSelected:function(e,t,n){n=n||{};var s=e.node,r=e.tree,o=e.options,a=!0===n.noEvents,u=s.parent;if(t=!1!==t,!i.evalOption("unselectable",s,s,o,!1)){if(s._lastSelectIntent=t,!!s.selected===t&&(3!==o.selectMode||!s.partsel||t))return t;if(!a&&!1===this._triggerNodeEvent("beforeSelect",s,e.originalEvent))return!!s.selected;t&&1===o.selectMode?(r.lastSelectedNode&&r.lastSelectedNode.setSelected(!1),s.selected=t):3!==o.selectMode||!u||u.radiogroup||s.radiogroup?u&&u.radiogroup?s.visitSiblings(function(e){e._changeSelectStatusAttrs(t&&e===s)},!0):s.selected=t:(s.selected=t,s.fixSelection3AfterClick(n)),this.nodeRenderStatus(e),r.lastSelectedNode=t?s:null,a||r._triggerNodeEvent("select",e)}},nodeSetStatus:function(t,n,i,s){var r=t.node,o=t.tree;function a(n,i){var s=r.children?r.children[0]:null;return s&&s.isStatusNode()?(e.extend(s,n),s.statusNodeType=i,o._callHook("nodeRenderTitle",s)):(r._setChildren([n]),o._callHook("treeStructureChanged",t,"setStatusNode"),r.children[0].statusNodeType=i,o.render()),r.children[0]}switch(n){case"ok":!function(){var e=r.children?r.children[0]:null;if(e&&e.isStatusNode()){try{r.ul&&(r.ul.removeChild(e.li),e.li=null)}catch(e){}1===r.children.length?r.children=[]:r.children.shift(),o._callHook("treeStructureChanged",t,"clearStatusNode")}}(),r._isLoading=!1,r._error=null,r.renderStatus();break;case"loading":r.parent||a({title:o.options.strings.loading+(i?" ("+i+")":""),checkbox:!1,tooltip:s},n),r._isLoading=!0,r._error=null,r.renderStatus();break;case"error":a({title:o.options.strings.loadError+(i?" ("+i+")":""),checkbox:!1,tooltip:s},n),r._isLoading=!1,r._error={message:i,details:s},r.renderStatus();break;case"nodata":a({title:i||o.options.strings.noData,checkbox:!1,tooltip:s},n),r._isLoading=!1,r._error=null,r.renderStatus();break;default:e.error("invalid node status "+n)}},nodeToggleExpanded:function(e){return this.nodeSetExpanded(e,!e.node.expanded)},nodeToggleSelected:function(e){var t=e.node,n=!t.selected;return t.partsel&&!t.selected&&!0===t._lastSelectIntent&&(n=!1,t.selected=!0),t._lastSelectIntent=n,this.nodeSetSelected(e,n)},treeClear:function(e){var t=e.tree;t.activeNode=null,t.focusNode=null,t.$div.find(">ul.fancytree-container").empty(),t.rootNode.children=null,t._callHook("treeStructureChanged",e,"clear")},treeCreate:function(e){},treeDestroy:function(e){this.$div.find(">ul.fancytree-container").remove(),this.$source&&this.$source.removeClass("fancytree-helper-hidden")},treeInit:function(t){var n=t.tree,i=n.options;n.$container.attr("tabindex",i.tabindex),e.each(f,function(e,t){void 0!==i[t]&&(n.info("Move option "+t+" to tree"),n[t]=i[t],delete i[t])}),i.checkboxAutoHide&&n.$container.addClass("fancytree-checkbox-auto-hide"),i.rtl?n.$container.attr("DIR","RTL").addClass("fancytree-rtl"):n.$container.removeAttr("DIR").removeClass("fancytree-rtl"),i.aria&&(n.$container.attr("role","tree"),1!==i.selectMode&&n.$container.attr("aria-multiselectable",!0)),this.treeLoad(t)},treeLoad:function(t,n){var i,s,r,o=t.tree,a=t.widget.element,u=e.extend({},t,{node:this.rootNode});if(o.rootNode.children&&this.treeClear(t),n=n||this.options.source)"string"==typeof n&&e.error("Not implemented");else switch(s=a.data("type")||"html"){case"html":(r=a.find(">ul").first()).addClass("ui-fancytree-source fancytree-helper-hidden"),n=e.ui.fancytree.parseHtml(r),this.data=e.extend(this.data,N(r));break;case"json":n=e.parseJSON(a.text()),a.contents().filter(function(){return 3===this.nodeType}).remove(),e.isPlainObject(n)&&(_(e.isArray(n.children),"if an object is passed as source, it must contain a 'children' array (all other properties are added to 'tree.data')"),i=n,n=n.children,delete i.children,e.each(f,function(e,t){void 0!==i[t]&&(o[t]=i[t],delete i[t])}),e.extend(o.data,i));break;default:e.error("Invalid data-type: "+s)}return this.nodeLoadChildren(u,n).done(function(){o._callHook("treeStructureChanged",t,"loadChildren"),o.render(),3===t.options.selectMode&&o.rootNode.fixSelection3FromEndNodes(),o.activeNode&&o.options.activeVisible&&o.activeNode.makeVisible(),o._triggerTreeEvent("init",null,{status:!0})}).fail(function(){o.render(),o._triggerTreeEvent("init",null,{status:!1})})},treeRegisterNode:function(e,t,n){e.tree._callHook("treeStructureChanged",e,t?"addNode":"removeNode")},treeSetFocus:function(t,n,i){var s;(n=!1!==n)!==this.hasFocus()&&(this._hasFocus=n,!n&&this.focusNode?this.focusNode.setFocus(!1):!n||i&&i.calledByNode||e(this.$container).focus(),this.$container.toggleClass("fancytree-treefocus",n),this._triggerTreeEvent(n?"focusTree":"blurTree"),n&&!this.activeNode&&(s=this._lastMousedownNode||this.getFirstChild())&&s.setFocus())},treeSetOption:function(t,n,i){var s=t.tree,r=!0,o=!1,a=!1;switch(n){case"aria":case"checkbox":case"icon":case"minExpandLevel":case"tabindex":o=!0,a=!0;break;case"checkboxAutoHide":s.$container.toggleClass("fancytree-checkbox-auto-hide",!!i);break;case"escapeTitles":case"tooltip":a=!0;break;case"rtl":!1===i?s.$container.removeAttr("DIR").removeClass("fancytree-rtl"):s.$container.attr("DIR","RTL").addClass("fancytree-rtl"),a=!0;break;case"source":r=!1,s._callHook("treeLoad",s,i),a=!0}s.debug("set option "+n+"="+i+" <"+typeof i+">"),r&&(this.widget._super?this.widget._super.call(this.widget,n,i):e.Widget.prototype._setOption.call(this.widget,n,i)),o&&s._callHook("treeCreate",s),a&&s.render(!0,!1)},treeStructureChanged:function(e,t){}}),e.widget("ui.fancytree",{options:{activeVisible:!0,ajax:{type:"GET",cache:!1,dataType:"json"},aria:!0,autoActivate:!0,autoCollapse:!1,autoScroll:!1,checkbox:!1,clickFolderMode:4,debugLevel:null,disabled:!1,enableAspx:!0,escapeTitles:!1,extensions:[],toggleEffect:{effect:"slideToggle",duration:200},generateIds:!1,icon:!0,idPrefix:"ft_",focusOnSelect:!1,keyboard:!0,keyPathSeparator:"/",minExpandLevel:1,nodata:!0,quicksearch:!1,rtl:!1,scrollOfs:{top:0,bottom:0},scrollParent:null,selectMode:2,strings:{loading:"Loading...",loadError:"Load error!",moreData:"More...",noData:"No data."},tabindex:"0",titlesTabbable:!1,tooltip:!1,treeId:null,_classNames:{node:"fancytree-node",folder:"fancytree-folder",animating:"fancytree-animating",combinedExpanderPrefix:"fancytree-exp-",combinedIconPrefix:"fancytree-ico-",hasChildren:"fancytree-has-children",active:"fancytree-active",selected:"fancytree-selected",expanded:"fancytree-expanded",lazy:"fancytree-lazy",focused:"fancytree-focused",partload:"fancytree-partload",partsel:"fancytree-partsel",radio:"fancytree-radio",unselectable:"fancytree-unselectable",lastsib:"fancytree-lastsib",loading:"fancytree-loading",error:"fancytree-error",statusNodePrefix:"fancytree-statusnode-"},lazyLoad:null,postProcess:null},_create:function(){this.tree=new D(this),this.$source=this.source||"json"===this.element.data("type")?this.element:this.element.find(">ul").first();var t,n,i,s=this.options,r=s.extensions;this.tree;for(i=0;i<r.length;i++)n=r[i],(t=e.ui.fancytree._extensions[n])||e.error("Could not apply extension '"+n+"' (it is not registered, did you forget to include it?)"),this.tree.options[n]=b({},t.options,this.tree.options[n]),_(void 0===this.tree.ext[n],"Extension name must not exist as Fancytree.ext attribute: '"+n+"'"),this.tree.ext[n]={},k(this.tree,0,t,n),t;void 0!==s.icons&&(!0===s.icon?(this.tree.warn("'icons' tree option is deprecated since v2.14.0: use 'icon' instead"),s.icon=s.icons):e.error("'icons' tree option is deprecated since v2.14.0: use 'icon' only instead")),void 0!==s.iconClass&&(s.icon?e.error("'iconClass' tree option is deprecated since v2.14.0: use 'icon' only instead"):(this.tree.warn("'iconClass' tree option is deprecated since v2.14.0: use 'icon' instead"),s.icon=s.iconClass)),void 0!==s.tabbable&&(s.tabindex=s.tabbable?"0":"-1",this.tree.warn("'tabbable' tree option is deprecated since v2.17.0: use 'tabindex='"+s.tabindex+"' instead")),this.tree._callHook("treeCreate",this.tree)},_init:function(){this.tree._callHook("treeInit",this.tree),this._bind()},_setOption:function(e,t){return this.tree._callHook("treeSetOption",this.tree,e,t)},destroy:function(){this._unbind(),this.tree._callHook("treeDestroy",this.tree),e.Widget.prototype.destroy.call(this)},_unbind:function(){var t=this.tree._ns;this.element.off(t),this.tree.$container.off(t),e(document).off(t)},_bind:function(){var t=this,n=this.options,s=this.tree,r=s._ns;this._unbind(),s.$container.on("focusin"+r+" focusout"+r,function(t){var n=i.getNode(t),r="focusin"===t.type;if(!r&&n&&e(t.target).is("a"))n.debug("Ignored focusout on embedded <a> element.");else{if(r){if(s._getExpiringValue("focusin"))return void s.debug("Ignored double focusin.");s._setExpiringValue("focusin",!0,50),n||(n=s._getExpiringValue("mouseDownNode"))&&s.debug("Reconstruct mouse target for focusin from recent event.")}n?s._callHook("nodeSetFocus",s._makeHookContext(n,t),r):s.tbody&&e(t.target).parents("table.fancytree-container > thead").length?s.debug("Ignore focus event outside table body.",t):s._callHook("treeSetFocus",s,r)}}).on("selectstart"+r,"span.fancytree-title",function(e){e.preventDefault()}).on("keydown"+r,function(e){if(n.disabled||!1===n.keyboard)return!0;var t,i=s.focusNode,r=s._makeHookContext(i||s,e),o=s.phase;try{return s.phase="userEvent","preventNav"===(t=i?s._triggerNodeEvent("keydown",i,e):s._triggerTreeEvent("keydown",e))?t=!0:!1!==t&&(t=s._callHook("nodeKeydown",r)),t}finally{s.phase=o}}).on("mousedown"+r,function(e){var t=i.getEventTarget(e);s._lastMousedownNode=t?t.node:null,s._setExpiringValue("mouseDownNode",s._lastMousedownNode)}).on("click"+r+" dblclick"+r,function(e){if(n.disabled)return!0;var s,r=i.getEventTarget(e),o=r.node,a=t.tree,u=a.phase;if(!o)return!0;s=a._makeHookContext(o,e);try{switch(a.phase="userEvent",e.type){case"click":return s.targetType=r.type,o.isPagingNode()?!0===a._triggerNodeEvent("clickPaging",s,e):!1!==a._triggerNodeEvent("click",s,e)&&a._callHook("nodeClick",s);case"dblclick":return s.targetType=r.type,!1!==a._triggerNodeEvent("dblclick",s,e)&&a._callHook("nodeDblclick",s)}}finally{a.phase=u}})},getActiveNode:function(){return this.tree.activeNode},getNodeByKey:function(e){return this.tree.getNodeByKey(e)},getRootNode:function(){return this.tree.rootNode},getTree:function(){return this.tree}}),i=e.ui.fancytree,e.extend(e.ui.fancytree,{version:"2.31.0",buildType:"production",debugLevel:3,_nextId:1,_nextNodeKey:1,_extensions:{},_FancytreeClass:D,_FancytreeNodeClass:L,jquerySupports:{positionMyOfs:function(t,n,i,s){var r,o,a,u=e.map(e.trim(t).split("."),function(e){return parseInt(e,10)}),l=e.map(Array.prototype.slice.call(arguments,1),function(e){return parseInt(e,10)});for(r=0;r<l.length;r++)if(o=u[r]||0,a=l[r]||0,o!==a)return o>a;return!0}(e.ui.version,1,9)},assert:function(e,t){return _(e,t)},createTree:function(t,n){return e(t).fancytree(n).fancytree("getTree")},debounce:function(e,t,n,i){var s;return 3===arguments.length&&"boolean"!=typeof n&&(i=n,n=!1),function(){var r=arguments;i=i||this,n&&!s&&t.apply(i,r),clearTimeout(s),s=setTimeout(function(){n||t.apply(i,r),s=null},e)}},debug:function(t){e.ui.fancytree.debugLevel>=4&&w("log",arguments)},error:function(t){e.ui.fancytree.debugLevel>=1&&w("error",arguments)},escapeHtml:function(e){return(""+e).replace(r,function(e){return a[e]})},fixPositionOptions:function(t){if((t.offset||(""+t.my+t.at).indexOf("%")>=0)&&e.error("expected new position syntax (but '%' is not supported)"),!e.ui.fancytree.jquerySupports.positionMyOfs){var n=/(\w+)([+-]?\d+)?\s+(\w+)([+-]?\d+)?/.exec(t.my),i=/(\w+)([+-]?\d+)?\s+(\w+)([+-]?\d+)?/.exec(t.at),s=(n[2]?+n[2]:0)+(i[2]?+i[2]:0),r=(n[4]?+n[4]:0)+(i[4]?+i[4]:0);t=e.extend({},t,{my:n[1]+" "+n[3],at:i[1]+" "+i[3]}),(s||r)&&(t.offset=s+" "+r)}return t},getEventTarget:function(t){var n,s=t&&t.target?t.target.className:"",r={node:this.getNode(t.target),type:void 0};return/\bfancytree-title\b/.test(s)?r.type="title":/\bfancytree-expander\b/.test(s)?r.type=!1===r.node.hasChildren()?"prefix":"expander":/\bfancytree-checkbox\b/.test(s)?r.type="checkbox":/\bfancytree(-custom)?-icon\b/.test(s)?r.type="icon":/\bfancytree-node\b/.test(s)?r.type="title":t&&t.target&&((n=e(t.target)).is("ul[role=group]")?((r.node&&r.node.tree||i).debug("Ignoring click on outer UL."),r.node=null):n.closest(".fancytree-title").length?r.type="title":n.closest(".fancytree-checkbox").length?r.type="checkbox":n.closest(".fancytree-expander").length&&(r.type="expander")),r},getEventTargetType:function(e){return this.getEventTarget(e).type},getNode:function(t){if(t instanceof L)return t;for(t instanceof e?t=t[0]:void 0!==t.originalEvent&&(t=t.target);t;){if(t.ftnode)return t.ftnode;t=t.parentNode}return null},getTree:function(t){var n,i=t;return t instanceof D?t:(void 0===t&&(t=0),"number"==typeof t?t=e(".fancytree-container").eq(t):"string"==typeof t?(t=e("#ft-id-"+i).eq(0)).length||(t=e(i).eq(0)):t instanceof e?t=t.eq(0):void 0!==t.originalEvent&&(t=e(t.target)),(n=(t=t.closest(":ui-fancytree")).data("ui-fancytree")||t.data("fancytree"))?n.tree:null)},evalOption:function(t,n,i,s,r){var o,a,u=n.tree,l=s[t],d=i[t];return e.isFunction(l)?(o={node:n,tree:u,widget:u.widget,options:u.widget.options,typeInfo:u.types[n.type]||{}},null==(a=l.call(u,{type:t},o))&&(a=d)):a=null==d?l:d,null==a&&(a=r),a},setSpanIcon:function(t,n,i){var s=e(t);"string"==typeof i?s.attr("class",n+" "+i):(i.text?s.text(""+i.text):i.html&&(t.innerHTML=i.html),s.attr("class",n+" "+(i.addClass||"")))},eventToString:function(e){var t=e.which,n=e.type,i=[];return e.altKey&&i.push("alt"),e.ctrlKey&&i.push("ctrl"),e.metaKey&&i.push("meta"),e.shiftKey&&i.push("shift"),"click"===n||"dblclick"===n?i.push(c[e.button]+n):"wheel"===n?i.push(n):u[t]||i.push(l[t]||String.fromCharCode(t).toLowerCase()),i.join("+")},info:function(t){e.ui.fancytree.debugLevel>=3&&w("info",arguments)},keyEventToString:function(e){return this.warn("keyEventToString() is deprecated: use eventToString()"),this.eventToString(e)},overrideMethod:function(t,n,i,s){var r,o=t[n]||e.noop;t[n]=function(){var e=s||this;try{return r=e._super,e._super=o,i.apply(e,arguments)}finally{e._super=r}}},parseHtml:function(t){var n,i,s,r,o,a,u,l,d=t.find(">li"),c=[];return d.each(function(){var d,f,g=e(this),y=g.find(">span",this).first(),_=y.length?null:g.find(">a").first(),w={tooltip:null,data:{}};for(y.length?w.title=y.html():_&&_.length?(w.title=_.html(),w.data.href=_.attr("href"),w.data.target=_.attr("target"),w.tooltip=_.attr("title")):(w.title=g.html(),(o=w.title.search(/<ul/i))>=0&&(w.title=w.title.substring(0,o))),w.title=e.trim(w.title),r=0,a=h.length;r<a;r++)w[h[r]]=void 0;for(n=this.className.split(" "),s=[],r=0,a=n.length;r<a;r++)i=n[r],p[i]?w[i]=!0:s.push(i);if(w.extraClasses=s.join(" "),(u=g.attr("title"))&&(w.tooltip=u),(u=g.attr("id"))&&(w.key=u),g.attr("hideCheckbox")&&(w.checkbox=!1),(d=N(g))&&!e.isEmptyObject(d)){for(f in v)d.hasOwnProperty(f)&&(d[v[f]]=d[f],delete d[f]);for(r=0,a=m.length;r<a;r++)u=m[r],null!=(l=d[u])&&(delete d[u],w[u]=l);e.extend(w.data,d)}(t=g.find(">ul").first()).length?w.children=e.ui.fancytree.parseHtml(t):w.children=w.lazy?void 0:null,c.push(w)}),c},registerExtension:function(t){_(null!=t.name,"extensions must have a `name` property."),_(null!=t.version,"extensions must have a `version` property."),e.ui.fancytree._extensions[t.name]=t},unescapeHtml:function(e){var t=document.createElement("div");return t.innerHTML=e,0===t.childNodes.length?"":t.childNodes[0].nodeValue},warn:function(t){e.ui.fancytree.debugLevel>=2&&w("warn",arguments)}}),e.ui.fancytree}function _(t,n){t||(n=n?": "+n:"",e.error("Fancytree assertion failed"+n))}function w(e,t){var n,i,s=window.console?window.console[e]:null;if(s)try{s.apply(window.console,t)}catch(e){for(i="",n=0;n<t.length;n++)i+=t[n];s(i)}}function b(){var t,n,i,s,r,o=arguments[0]||{},a=1,u=arguments.length;if("object"==typeof o||e.isFunction(o)||(o={}),a===u)throw Error("need at least two args");for(;a<u;a++)if(null!=(t=arguments[a]))for(n in t)if(t.hasOwnProperty(n)){if(i=o[n],s=t[n],o===s)continue;s&&e.isPlainObject(s)?(r=i&&e.isPlainObject(i)?i:{},o[n]=b(r,s)):void 0!==s&&(o[n]=s)}return o}function x(e,t,n,i,s){var r,o,a,u,l,d=(r=t[e],o=i[e],a=t.ext[s],u=function(){return r.apply(t,arguments)},l=function(e){return r.apply(t,e)},function(){var e=t._local,n=t._super,i=t._superApply;try{return t._local=a,t._super=u,t._superApply=l,o.apply(t,arguments)}finally{t._local=e,t._super=n,t._superApply=i}});return d}function k(t,n,i,s){for(var r in i)"function"==typeof i[r]?"function"==typeof t[r]?t[r]=x(r,t,0,i,s):"_"===r.charAt(0)?t.ext[s][r]=x(r,t,0,i,s):e.error("Could not override tree."+r+". Use prefix '_' to create tree."+s+"._"+r):"options"!==r&&(t.ext[s][r]=i[r])}function C(t,n){return void 0===t?e.Deferred(function(){this.resolve()}).promise():e.Deferred(function(){this.resolveWith(t,n)}).promise()}function S(t,n){return void 0===t?e.Deferred(function(){this.reject()}).promise():e.Deferred(function(){this.rejectWith(t,n)}).promise()}function T(e,t){return function(){e.resolveWith(t)}}function N(t){var n=e.extend({},t.data()),i=n.json;return delete n.fancytree,delete n.uiFancytree,i&&(delete n.json,n=e.extend(n,i)),n}function E(e){return(""+e).replace(o,function(e){return a[e]})}function j(e){return e=e.toLowerCase(),function(t){return t.title.toLowerCase().indexOf(e)>=0}}function L(t,n){var s,r,o,a;for(this.parent=t,this.tree=t.tree,this.ul=null,this.li=null,this.statusNodeType=null,this._isLoading=!1,this._error=null,this.data={},s=0,r=m.length;s<r;s++)this[o=m[s]]=n[o];for(o in null==this.unselectableIgnore&&null==this.unselectableStatus||(this.unselectable=!0),n.hideCheckbox&&e.error("'hideCheckbox' node option was removed in v2.23.0: use 'checkbox: false'"),n.data&&e.extend(this.data,n.data),n)g[o]||e.isFunction(n[o])||y[o]||(this.data[o]=n[o]);null==this.key?this.tree.options.defaultKey?(this.key=this.tree.options.defaultKey(this),_(this.key,"defaultKey() must return a unique key")):this.key="_"+i._nextNodeKey++:this.key=""+this.key,n.active&&(_(null===this.tree.activeNode,"only one active node allowed"),this.tree.activeNode=this),n.selected&&(this.tree.lastSelectedNode=this),(a=n.children)?a.length?this._setChildren(a):this.children=this.lazy?[]:null:this.children=null,this.tree._callHook("treeRegisterNode",this.tree,!0,this)}function D(t){this.widget=t,this.$div=t.element,this.options=t.options,this.options&&(void 0!==this.options.lazyload&&e.error("The 'lazyload' event is deprecated since 2014-02-25. Use 'lazyLoad' (with uppercase L) instead."),void 0!==this.options.loaderror&&e.error("The 'loaderror' event was renamed since 2014-07-03. Use 'loadError' (with uppercase E) instead."),void 0!==this.options.fx&&e.error("The 'fx' option was replaced by 'toggleEffect' since 2014-11-30."),void 0!==this.options.removeNode&&e.error("The 'removeNode' event was replaced by 'modifyChild' since 2.20 (2016-09-10).")),this.ext={},this.types={},this.columns={},this.data=N(this.$div),this._id=""+(this.options.treeId||e.ui.fancytree._nextId++),this._ns=".fancytree-"+this._id,this.activeNode=null,this.focusNode=null,this._hasFocus=null,this._tempCache={},this._lastMousedownNode=null,this._enableUpdate=!0,this.lastSelectedNode=null,this.systemFocusElement=null,this.lastQuicksearchTerm="",this.lastQuicksearchTime=0,this.viewport=null,this.statusClassPropName="span",this.ariaPropName="li",this.nodeContainerAttrName="li",this.$div.find(">ul.fancytree-container").remove();var n,s={tree:this};this.rootNode=new L(s,{title:"root",key:"root_"+this._id,children:null,expanded:!0}),this.rootNode.parent=null,n=e("<ul>",{id:"ft-id-"+this._id,class:"ui-fancytree fancytree-container fancytree-plain"}).appendTo(this.$div),this.$container=n,this.rootNode.ul=n[0],null==this.options.debugLevel&&(this.options.debugLevel=i.debugLevel)}e.ui.fancytree.warn("Fancytree: ignored duplicate include")})?i.apply(t,s):i)||(e.exports=r)},,,,,,,,,function(e,t,n){var i=i||{};window.WP_Smush=i,String.prototype.includes||(String.prototype.includes=function(e,t){return"number"!=typeof t&&(t=0),!(t+e.length>this.length)&&-1!==this.indexOf(e,t)}),n(15),n(16),n(17),n(18),n(19),n(21),n(22),n(23),n(24)},function(e,t){!function(e){"use strict";WP_Smush.helpers={init:function(){},formatBytes:function(e,t){var n=["KB","MB","GB","TB","PB"];if(Math.abs(e)<1024)return e+" B";var i=-1;do{e/=1024,++i}while(Math.abs(e)>=1024&&i<n.length-1);return e.toFixed(t)+" "+n[i]},getSizeFromString:function(e){return e.replace(/[a-zA-Z]/g,"").trim()},getFormatFromString:function(e){return e.replace(/[0-9.]/g,"").trim()},precise_round:function(e,t){var n=e>=0?1:-1;return e=e>100?100:e,Math.round(e*Math.pow(10,t)+.001*n)/Math.pow(10,t)},findPos:function(e){var t=0;if(e.offsetParent){do{t+=e.offsetTop}while(e=e.offsetParent);return[t]}},geturlparam:function(e){for(var t=window.location.search.substring(1).split("&"),n=0;n<t.length;n++){var i=t[n].split("=");if(i[0]===e)return i[1]}},resetSettings:function(){var e=new XMLHttpRequest;e.open("POST",ajaxurl+"?action=reset_settings",!0),e.setRequestHeader("Content-type","application/x-www-form-urlencoded"),e.onload=function(){if(200===e.status){var t=JSON.parse(e.response);void 0!==t.success&&t.success&&(window.location.href=wp_smush_msgs.smush_url)}else console.log("Request failed. Returned status of "+e.status)},e.send("_ajax_nonce="+smush_vars.nonce.get_smush_status)}},WP_Smush.helpers.init()}(jQuery)},function(e,t,n){"use strict";n.r(t);var i=n(0),s=function(e,t){void 0===t&&(t=100),e.fadeTo(t,0,function(){e.slideUp(t,function(){e.remove()})})};jQuery(function(e){var t=function(t,n,s,r){if("disabled"==n.attr("disabled"))return!1;t.preventDefault(),e(".wp-smush-error").remove(),e(".smush-stats-wrapper").hide();var o="grid";"smush_restore_image"==s&&(o=e(document).find("div.media-modal.wp-core-ui").length>0?"grid":window.location.search.indexOf("item")>-1?"grid":"list");var a={action:s,attachment_id:n.data("id"),mode:o,_nonce:n.data("nonce")};!function(e){var t=e.parent();t.css({opacity:"0.5"}),t.find("a").attr("disabled","disabled")}(n),i.a.progress_bar(n,wp_smush_msgs[r],"show"),e.post(ajaxurl,a,function(e){i.a.progress_bar(n,wp_smush_msgs[r],"hide"),function(e){var t=e.parent();t.css({opacity:"1"}),t.find("a").removeAttr("disabled")}(n),e.success&&void 0!==e.data.button?(void 0!==this.data&&this.data.indexOf("nextgen")>-1?n.parent().html(e.data.button):n.parents().eq(1).html(e.data.button),void 0!==e.data&&"restore"===r&&i.a.update_image_stats(e.data.new_size)):e.data.message&&n.parent().append(e.data.message)})},n=function(t){var n=e(".wp-smush-scan");n.text("").addClass("sui-button-onload sui-icon-loader sui-loading").blur();var r=n.data("type");r=void 0===r?"media":r,e(".wp-smush-all").removeAttr("data-smush");var o=e(".sui-notice-top.sui-notice-success");o.slideUp(100,function(){o.remove()}),e(".wp-smush-all").attr("disabled","disabled"),e(".wp-smush-settings-changed").hide();var a={action:"scan_for_resmush",type:r,get_ui:!0,process_settings:t,wp_smush_options_nonce:jQuery("#wp_smush_options_nonce").val()};e.get(ajaxurl,a,function(t){if(void 0!==t.data){if(void 0!==t.data.resmush_ids){wp_smushit_data.resmush=t.data.resmush_ids,"undefinied"!=typeof wp_smushit_data&&(wp_smushit_data.count_smushed=void 0!==t.data.count_smushed?t.data.count_smushed:wp_smushit_data.count_smushed,wp_smushit_data.count_supersmushed=void 0!==t.data.count_supersmushed?t.data.count_supersmushed:wp_smushit_data.count_supersmushed,wp_smushit_data.count_images=void 0!==t.data.count_image?t.data.count_image:wp_smushit_data.count_images,wp_smushit_data.size_before=void 0!==t.data.size_before?t.data.size_before:wp_smushit_data.size_before,wp_smushit_data.size_after=void 0!==t.data.size_after?t.data.size_after:wp_smushit_data.size_after,wp_smushit_data.savings_resize=void 0!==t.data.savings_resize?t.data.savings_resize:wp_smushit_data.savings_resize,wp_smushit_data.savings_conversion=void 0!==t.data.savings_conversion?t.data.savings_conversion:wp_smushit_data.savings_conversion,wp_smushit_data.count_resize=void 0!==t.data.count_resize?t.data.count_resize:wp_smushit_data.count_resize),"nextgen"===r&&(wp_smushit_data.bytes=parseInt(wp_smushit_data.size_before)-parseInt(wp_smushit_data.size_after));var n=e(".bulk-smush-wrapper .sui-notice");n.length>0&&(n.hide(),e(".wp-smush-pagespeed-recommendation").hide()),e(".wp-smush-resmush-notice").remove(),e(".wp-smush-bulk-wrapper").show()}if(void 0!==t.data.content&&e(".bulk-smush-wrapper .sui-box-body > p:first-of-type").after(t.data.content),void 0!==t.data.notice&&e(".wp-smush-page-header").after(t.data.notice),e("div.smush-final-log").hide(),void 0!==t.data.super_smush&&t.data.super_smush){var s=jQuery(".wp-smush-enable-lossy");s.length>0&&s.remove(),"undefined"!==t.data.super_smush_stats&&e(".super-smush-attachments .wp-smush-stats").html(t.data.super_smush_stats)}i.a.update_stats(r)}}).always(function(){jQuery(".bulk-smush-wrapper .wp-smush-bulk-progress-bar-wrapper").hide(),n.text(wp_smush_msgs.resmush_complete).removeClass("sui-button-onload sui-icon-loader sui-loading").addClass("smush-button-check-success"),setTimeout(function(){n.removeClass("smush-button-check-success").text(wp_smush_msgs.resmush_check)},2e3),e(".wp-smush-all").removeAttr("disabled");var t=e(".wp-smush-re-check-message");t.length&&s(t)})},r=function(t){e(t).length>0&&e("html, body").animate({scrollTop:e(t).offset().top-100},"slow")};e("#all-image-sizes").on("change",function(){e('input[name^="wp-smush-image_sizes"]').prop("checked",!0)}),e("#wp-smush-update-api-status").on("click",function(t){t.preventDefault(),e(this).addClass("sui-button-onload"),e.post(ajaxurl,{action:"recheck_api_status"},function(){location.reload()})}),e("body").on("click","a.smush-stats-details",function(t){if("disabled"==e(this).attr("disabled"))return!1;t.preventDefault();var n=e(this).find(".stats-toggle");e(this).parents().eq(1).find(".smush-stats-wrapper").slideToggle(),n.text("+"==n.text()?"-":"+")}),e("body").on("click",".wp-smush-send:not(.wp-smush-resmush)",function(t){t.preventDefault(),new i.a(e(this),!1)}),e("body").on("click",".wp-smush-remove-skipped",function(t){t.preventDefault(),e.post(ajaxurl,{action:"remove_from_skip_list",id:e(this).attr("data-id")}),s(e(this))}),e("body").on("click",".wp-smush-nextgen-send",function(t){t.preventDefault(),new i.a(e(this),!1,"nextgen")}),e("body").on("click",".wp-smush-nextgen-bulk",function(t){if(t.preventDefault(),"undefined"==typeof wp_smushit_data||0===wp_smushit_data.unsmushed.length&&0===wp_smushit_data.resmush.length)return!1;jQuery(".wp-smush-all, .wp-smush-scan").attr("disabled","disabled"),e(".wp-smush-notice.wp-smush-remaining").hide(),new i.a(e(this),!0,"nextgen")}),e("body").on("click",".wp-smush-action.wp-smush-restore",function(n){var i=e(this);t(n,i,"smush_restore_image","restore");var s=i.parents().eq(1);s.hasClass("smushed")&&s.removeClass("smushed").addClass("unsmushed")}),e("body").on("click",".wp-smush-action.wp-smush-resmush",function(n){t(n,e(this),"smush_resmush_image","smushing")}),e("body").on("click",".wp-smush-action.wp-smush-nextgen-restore",function(n){t(n,e(this),"smush_restore_nextgen_image","restore")}),e("body").on("click",".wp-smush-action.wp-smush-nextgen-resmush",function(n){t(n,e(this),"smush_resmush_nextgen_image","smushing")}),e(".wp-smush-scan").on("click",function(e){e.preventDefault(),n(!1)}),e("#wp-smush-welcome-box .smush-dismiss-welcome").on("click",function(t){t.preventDefault();var n=e(this).parents().eq(1);s(n);e.post(ajaxurl,{action:"dismiss_welcome_notice"})}),e("body").on("click",".wp-smush-notice .icon-fi-close",function(t){t.preventDefault();var n=e(this).parent();s(n)}),e("input[name=wp-smush-keep_data]").on("change",function(e){var t="keep_data-true"===e.target.id?"keep_data-false":"keep_data-true";e.target.parentNode.classList.add("active"),document.getElementById(t).parentNode.classList.remove("active")}),e("button#wp-smush-save-settings").on("click",function(t){t.preventDefault();var n="",i=e('input[name="setting-type"]');i.length>0&&(n=i.val());var s=e(this);if(s.parent().find("span.sui-icon-loader.sui-loading").removeClass("sui-hidden"),""!=n&&"network"==n){var r={action:"save_settings",wp_smush_options_nonce:e("#wp_smush_options_nonce").val()};r=jQuery.param(r)+"&"+jQuery("form#wp-smush-settings-form").serialize(),jQuery.post(ajaxurl,r).done(function(){return jQuery("form#wp-smush-settings-form").submit(),!0})}else{e(".wp-smush-hex-notice").hide(),s.attr("disabled","disabled").addClass("button-grey"),void 0!==s.attr("data-msg")&&s.attr("data-msg").length>0?s.html(s.attr("data-msg")):s.html(wp_smush_msgs.checking);var o=s.data("type");o=void 0===o?"media":o;var a={action:"scan_for_resmush",wp_smush_options_nonce:jQuery("#wp_smush_options_nonce").val(),type:o};a=jQuery.param(a)+"&"+jQuery("form#wp-smush-settings-form").serialize(),jQuery.post(ajaxurl,a).done(function(){return jQuery("form#wp-smush-settings-form").submit(),!0})}}),e("body").on("click",".wp-smush-skip-resmush",function(t){t.preventDefault();var n=jQuery(this),r=n.parents().eq(1),o=n.parent();s(o),e(".sui-notice-top.sui-notice-success").remove(),r.find(".wp-smush-all").attr("data-smush","skip_resmush"),wp_smushit_data.count_smushed=parseInt(wp_smushit_data.count_smushed)+wp_smushit_data.resmush.length,wp_smushit_data.count_supersmushed=parseInt(wp_smushit_data.count_supersmushed)+wp_smushit_data.resmush.length,wp_smushit_data.count_smushed===wp_smushit_data.count_total&&(e(".wp-smush-notice.wp-smush-all-done, .wp-smush-pagespeed-recommendation").show(),e(".wp-smush-bulk-wrapper ").hide()),e(".wp-smush-resmush-notice").remove();var a=e(".wp-smush-scan").data("type");a=void 0===a?"media":a;var u=(void 0!==wp_smushit_data.count_smushed?wp_smushit_data.count_smushed:0)/wp_smushit_data.count_total*100;u=WP_Smush.helpers.precise_round(u,1),e(".wp-smush-images-percent").html(u);var l=jQuery(".bulk-smush-wrapper .wp-smush-progress-inner");if(!(l.length<1)){l.css("width",u+"%"),e(".wp-smush-bulk-wrapper").show(),e(".wp-smush-bulk-wrapper .sui-notice").show();var d={action:"delete_resmush_list",type:a};e.post(ajaxurl,d,function(t){if(t.success&&void 0!==t.data.stats){var n=t.data.stats;"undefinied"!=typeof wp_smushit_data&&(wp_smushit_data.count_images=void 0!==n.count_images?parseInt(wp_smushit_data.count_images)+n.count_images:wp_smushit_data.count_images,wp_smushit_data.size_before=void 0!==n.size_before?parseInt(wp_smushit_data.size_before)+n.size_before:wp_smushit_data.size_before,wp_smushit_data.size_after=void 0!==n.size_after?parseInt(wp_smushit_data.size_after)+n.size_after:wp_smushit_data.size_after,wp_smushit_data.savings_resize=void 0!==n.savings_resize?parseInt(wp_smushit_data.savings_resize)+n.savings_resize:wp_smushit_data.savings_resize,wp_smushit_data.savings_conversion=void 0!==n.savings_conversion?parseInt(wp_smushit_data.savings_conversion)+n.savings_conversion:wp_smushit_data.savings_conversion,void 0!==wp_smushit_data.savings_dir_smush&&void 0!==wp_smushit_data.savings_dir_smush.orig_size&&(wp_smushit_data.size_before=void 0!==wp_smushit_data.savings_dir_smush?parseInt(wp_smushit_data.size_before)+parseInt(wp_smushit_data.savings_dir_smush.orig_size):wp_smushit_data.size_before,wp_smushit_data.size_after=void 0!==wp_smushit_data.savings_dir_smush?parseInt(wp_smushit_data.size_after)+parseInt(wp_smushit_data.savings_dir_smush.image_size):wp_smushit_data.size_after),wp_smushit_data.count_resize=void 0!==n.count_resize?parseInt(wp_smushit_data.count_resize)+n.count_resize:wp_smushit_data.count_resize);var s=e(".bulk-smush-wrapper .wp-smush-remaining-count");s.length&&void 0!==wp_smushit_data.unsmushed&&s.html(wp_smushit_data.unsmushed.length),void 0===wp_smushit_data.unsmushed&&0!==wp_smushit_data.unsmushed.length||(e(".wp-smush-bulk-wrapper .sui-notice").hide(),e(".sui-notice-success.wp-smush-all-done").show()),i.a.update_stats()}})}});var o=function(){e("#wp-smush-resize").prop("checked",!0).focus(),e("div.wp-smush-resize-settings-wrap").show(),r("#column-wp-smush-resize")},a=function(){e("#wp-smush-lossy").prop("checked",!0).focus(),r("#column-wp-smush-lossy")};if(e("a.wp-smush-lossy-enable").on("click",function(e){e.preventDefault(),a()}),e(".wp-smush-resize-enable").on("click",function(e){e.preventDefault(),o()}),window.location.hash){var u=window.location.hash.substring(1);"enable-resize"===u?o():"enable-lossy"===u&&a()}if(e("body").on("click",".wp-smush-trigger-bulk",function(t){t.preventDefault(),e(".wp-smush-all").click(),e("span.sui-notice-dismiss").click()}),e("body").on("click","#bulk-smush-top-notice-close",function(t){t.preventDefault(),e(this).parent().parent().slideUp("slow")}),e(".wp-smush-setting-row .toggle-checkbox").focus(function(){e(this).keypress(function(t){32==t.keyCode&&(t.preventDefault(),e(this).find(".toggle-checkbox").click())})}),e("body").on("blur",".wp-smush-resize-input",function(){!function(e,t,n){var i=e.find("#wp-smush-resize, #wp-smush-resize-quick-setup");if(!n)var s=e.find("#wp-smush-resize_width, #quick-setup-resize_width"),r=e.find(".sui-notice-info.wp-smush-update-width");if(!t)var o=e.find("#wp-smush-resize_height, #quick-setup-resize_height"),a=e.find(".sui-notice-info.wp-smush-update-height");var u=!1,l=!1;!i.is(":checked")||void 0===wp_smushit_data.resize_sizes||void 0===wp_smushit_data.resize_sizes.width||(!n&&void 0!==s&&parseInt(wp_smushit_data.resize_sizes.width)>parseInt(s.val())?(s.parent().addClass("sui-form-field-error"),r.show("slow"),u=!0):(s.parent().removeClass("sui-form-field-error"),r.hide(),o.hasClass("error")&&a.show("slow")),!t&&void 0!==o&&parseInt(wp_smushit_data.resize_sizes.height)>parseInt(o.val())?(o.parent().addClass("sui-form-field-error"),u||a.show("slow"),l=!0):(o.parent().removeClass("sui-form-field-error"),a.hide(),s.hasClass("error")&&r.show("slow")))}(e(this).parents().eq(4),!1,!1)}),e("body").on("click","#wp-smush-resize, #wp-smush-resize-quick-setup",function(){var t=e(this),n=e(".wp-smush-resize-settings-wrap");t.is(":checked")?n.show():n.hide()}),e("#column-wp-smush-auto").on("click","#wp-smush-auto",function(){var t=e("#column-wp-smush-auto .auto-smush-notice");e(this).is(":checked")?t.show():t.hide()}),e("body").on("click","#wp-smush-detection",function(){var t=e(this),n=e(".smush-highlighting-notice"),i=e(".smush-highlighting-warning");t.is(":checked")?n.length>0?n.show():i.show():(n.hide(),i.hide())}),e("#wp-smush-png_to_jpg").click(function(){var t=e(this),n=e(".wp-smush-png_to_jpg-wrap");t.is(":checked")?n.show():n.hide()}),e("#wp-smush-revalidate-member").on("click",function(t){t.preventDefault();var n=e(this).parents().eq(1);n.addClass("loading-notice"),e.get(ajaxurl,{action:"smush_show_warning"},function(e){n.removeClass("loading-notice").addClass("loaded-notice"),0==e?(n.attr("data-message",wp_smush_msgs.membership_valid),s(n,1e3)):(n.attr("data-message",wp_smush_msgs.membership_invalid),setTimeout(function(){n.removeClass("loaded-notice")},1e3))})}),"undefined"!=typeof wp_smush_run_re_check&&1==wp_smush_run_re_check&&e(".wp-smush-scan").length>0&&n(!1),e("li.smush-dir-savings").length>0){e.get(ajaxurl,{action:"get_dir_smush_stats"},function(t){e("li.smush-dir-savings .sui-icon-loader").hide(),t.success||void 0===t.data.message?void 0===t.data||void 0===t.data.dir_smush?(e("li.smush-dir-savings span.wp-smush-stats").append(wp_smush_msgs.ajax_error),e("li.smush-dir-savings span.wp-smush-stats span").hide()):function(t){if(void 0!==t.dir_smush){var n=e("li.smush-dir-savings span.wp-smush-stats span.wp-smush-stats-human"),i=e("li.smush-dir-savings span.wp-smush-stats span.wp-smush-stats-percent");t.dir_smush.bytes>0&&(e("li.smush-dir-savings .wp-smush-stats-label-message").hide(),n.length>0?n.html(t.dir_smush.human):t.dir_smush.bytes,t.dir_smush.percent>0&&(e("li.smush-dir-savings span.wp-smush-stats span.wp-smush-stats-sep").removeClass("sui-hidden"),i.length>0?i.html(t.dir_smush.percent+"%"):t.dir_smush.percent))}if(void 0!==t.combined_stats&&t.combined_stats.length>0){var s=t.combined_stats,r=s.smushed/s.total_count*100;(r=WP_Smush.helpers.precise_round(r,1))&&e("div.wp-smush-count-total span.wp-smush-images-percent").html(r),s.total_count&&e("span.wp-smush-count-total span.wp-smush-total-optimised").html(s.total_count),s.savings&&e("span.wp-smush-savings span.wp-smush-stats-human").html(s.savings),s.percent&&e("span.wp-smush-savings span.wp-smush-stats-percent").html(s.percent)}}(t.data):e("div.wp-smush-scan-result div.content").prepend(t.data.message)})}e(document).keyup(function(t){if(27===t.keyCode){var n=e("div.dev-overlay.wp-smush-list-dialog, div.dev-overlay.wp-smush-get-pro");if(!n.is(":visible"))return;n.find("div.close").click()}}),e("span.dismiss-recommendation").on("click",function(t){t.preventDefault();var n=e(this).parent();n.hide("slow",function(){n.remove()}),e.ajax({type:"POST",url:ajaxurl,data:{action:"hide_pagespeed_suggestion"}})}),e("div.wp-smush-api-message i.icon-fi-close").on("click",function(t){t.preventDefault();var n=e(this).parent();n.hide("slow",function(){n.remove()}),e.ajax({type:"POST",url:ajaxurl,data:{action:"hide_api_message"}})})})},function(e,t,n){"use strict";n.r(t);var i=n(0);!function(e){WP_Smush.bulk={init:function(){e(".wp-smush-all").on("click",function(t){t.preventDefault(),e(".sui-notice-top.sui-notice-success").remove(),document.getElementById("bulk_smush_warning").classList.add("sui-hidden");var n=e(".wp-smush-bulk-progress-bar-wrapper");if(n.removeClass("wp-smush-exceed-limit"),n.find(".sui-progress-block .wp-smush-all").addClass("sui-hidden"),n.find(".sui-progress-block .wp-smush-cancel-bulk").removeClass("sui-hidden"),e(".wp-resmush.wp-smush-action, .wp-smush-scan, .wp-smush-all:not(.sui-progress-close), a.wp-smush-lossy-enable, button.wp-smush-resize-enable, button#wp-smush-save-settings").attr("disabled","disabled"),"undefined"==typeof wp_smushit_data||0===wp_smushit_data.unsmushed.length&&0===wp_smushit_data.resmush.length)return!1;e(".wp-smush-remaining").hide(),n.find("i.sui-icon-info").removeClass("sui-icon-info").addClass("sui-loading").addClass("sui-icon-loader"),new i.a(e(this),!0)}),e("body").on("click",".smush-ignore-image",function(){e(this).attr("disabled",!0),e(this).attr("data-tooltip"),e(this).removeClass("sui-tooltip"),e.post(ajaxurl,{action:"ignore_bulk_image",id:e(this).attr("data-id")})})}},WP_Smush.bulk.init()}(jQuery)},function(e,t,n){(function(e){!function(){"use strict";WP_Smush.onboarding={membership:"free",onboardingModal:document.getElementById("smush-onboarding-dialog"),scanFilesModal:document.getElementById("checking-files-dialog"),settings:{first:!0,last:!1,slide:"start",value:!1},selection:{auto:!0,lossy:!0,strip_exif:!0,original:!1,lazy_load:!0,usage:!0},contentContainer:document.getElementById("smush-onboarding-content"),onboardingSlides:["start","auto","lossy","strip_exif","original","lazy_load","usage"],touchX:null,touchY:null,init:function(){if(this.onboardingModal){this.membership=document.getElementById("smush-onboarding").dataset.type,"pro"!==this.membership&&(this.onboardingSlides=["start","auto","strip_exif","lazy_load","usage"],this.selection.lossy=!1),this.renderTemplate();var t=this.onboardingModal.querySelector(".smush-onboarding-skip-link");t&&t.addEventListener("click",this.skipSetup),new e(this.onboardingModal).show()}},handleTouchStart:function(e){var t=e.touches[0];this.touchX=t.clientX,this.touchY=t.clientY},handleTouchMove:function(e){if(this.touchX&&this.touchY){var t=e.touches[0].clientX,n=e.touches[0].clientY,i=this.touchX-t,s=this.touchY-n;Math.abs(i)>Math.abs(s)&&(i>0?!1===WP_Smush.onboarding.settings.last&&WP_Smush.onboarding.next(null,"next"):!1===WP_Smush.onboarding.settings.first&&WP_Smush.onboarding.next(null,"prev")),this.touchX=null,this.touchY=null}},renderTemplate:function(e){var t=this,n=this.onboardingModal.querySelector('input[type="checkbox"]');n&&(this.selection[n.id]=n.checked);var i=WP_Smush.onboarding.template("smush-onboarding")(this.settings);i&&(this.contentContainer.innerHTML=i,void 0===e?this.contentContainer.classList.add("loaded"):(this.contentContainer.classList.remove("loaded"),this.contentContainer.classList.add(e),setTimeout(function(){t.contentContainer.classList.add("loaded"),t.contentContainer.classList.remove(e)},600))),this.onboardingModal.addEventListener("touchstart",this.handleTouchStart,!1),this.onboardingModal.addEventListener("touchmove",this.handleTouchMove,!1),this.bindSubmit()},bindSubmit:function(){var e=this.onboardingModal.querySelector('button[type="submit"]'),t=this;e&&e.addEventListener("click",function(e){e.preventDefault();var n=t.onboardingModal.querySelector('input[type="checkbox"]');n&&(t.selection[n.id]=n.checked);var i=document.getElementById("_wpnonce"),s=new XMLHttpRequest;s.open("POST",ajaxurl+"?action=smush_setup",!0),s.setRequestHeader("Content-type","application/x-www-form-urlencoded"),s.onload=function(){200===s.status?WP_Smush.onboarding.showScanDialog():console.log("Request failed. Returned status of "+s.status)},s.send("smush_settings="+JSON.stringify(t.selection)+"&_ajax_nonce="+i.value)})},next:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.onboardingSlides.indexOf(this.settings.slide),i=0;i=t?"next"===t?n+1:n-1:null!==e&&e.classList.contains("next")?n+1:n-1;var s=null!==e&&e.classList.contains("next")?"fadeInRight":"fadeInLeft";this.settings={first:0===i,last:i+1===this.onboardingSlides.length,slide:this.onboardingSlides[i],value:this.selection[this.onboardingSlides[i]]},this.renderTemplate(s)},goTo:function(e){var t=this.onboardingSlides.indexOf(e);this.settings={first:0===t,last:t+1===this.onboardingSlides.length,slide:e,value:this.selection[e]},this.renderTemplate()},skipSetup:function(){var e=document.getElementById("_wpnonce"),t=new XMLHttpRequest;t.open("POST",ajaxurl+"?action=skip_smush_setup&_ajax_nonce="+e.value),t.onload=function(){200===t.status?WP_Smush.onboarding.showScanDialog():console.log("Request failed. Returned status of "+t.status)},t.send()},showScanDialog:function(){new e(this.onboardingModal).hide();var t=new e(this.scanFilesModal);t.show();var n=document.getElementById("wp_smush_options_nonce");setTimeout(function(){var e=new XMLHttpRequest;e.open("POST",ajaxurl+"?action=scan_for_resmush",!0),e.setRequestHeader("Content-type","application/x-www-form-urlencoded"),e.onload=function(){var n=document.querySelector("#smush-onboarding-dialog");n.parentNode.removeChild(n),t.hide(),200===e.status?setTimeout(function(){location.reload()},1e3):console.log("Request failed. Returned status of "+e.status)},e.send("type=media&get_ui=false&process_settings=false&wp_smush_options_nonce="+n.value)},3e3)}},WP_Smush.onboarding.template=_.memoize(function(e){var t,n={evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g,variable:"data"};return function(i){return _.templateSettings=n,(t=t||_.template(document.getElementById(e).innerHTML))(i)}}),window.addEventListener("load",function(){return WP_Smush.onboarding.init()})}()}).call(this,n(1))},function(e,t,n){"use strict";n.r(t),function(e){var t=n(5),i=n(3);!function(n){WP_Smush.directory={selected:[],tree:[],wp_smush_msgs:[],init:function(){var e=this,t=n("#wp-smush-progress-dialog"),s=0,r=0;void 0!==wp_smushit_data.dir_smush&&(s=wp_smushit_data.dir_smush.totalSteps,r=wp_smushit_data.dir_smush.currentScanStep),this.scanner=new i.a(s,r),wp_smush_msgs&&(this.wp_smush_msgs=wp_smush_msgs),n("div.sui-wrap").on("click","button.wp-smush-browse",function(t){t.preventDefault(),n("div.wp-smush-scan-result div.wp-smush-notice").hide(),n(this).attr("disabled")||(n(this).attr("disabled","disabled"),n("div.wp-smush-info").remove(),e.showSmushDialog(),e.initFileTree())}),n("body").on("click","a.wp-smush-dir-link",function(t){n("div.sui-wrap button.wp-smush-browse").length>0&&(t.preventDefault(),e.showSmushDialog(),e.initFileTree())}),n(".wp-smush-select-dir").on("click",function(t){if(t.preventDefault(),!n(this).attr("disabled")){var s=n(this);n("div.wp-smush-list-dialog div.sui-box-body").css({opacity:"0.8"}),n("div.wp-smush-list-dialog div.sui-box-body a").unbind("click"),s.attr("disabled","disabled"),s.parent().find(".add-dir-loader").addClass("sui-icon-loader sui-loading");var r=e.tree.getSelectedNodes(),o=n('input[name="wp-smush-base-path"]').val(),a=[];r.forEach(function(e){a.push(o+"/"+e.key)});var u={action:"image_list",smush_path:a,image_list_nonce:n('input[name="image_list_nonce"]').val()};n.get(ajaxurl,u,function(t){e.hideSmushDialog(),e.scanner=new i.a(t.data,0),e.showProgressDialog(t.data),e.scanner.scan()})}}),n("#wp-smush-list-dialog").on("click",".sui-dialog-close",function(){n(".wp-smush-browse").removeAttr("disabled"),e.hideSmushDialog(),n(".wp-smush-select-dir, button.wp-smush-browse, a.wp-smush-dir-link").removeAttr("disabled"),n(".wp-smush-select-dir, .wp-smush-list-dialog .sui-box-body").css({opacity:"1"})}),t.on("click","#cancel-directory-smush, .sui-dialog-close, .wp-smush-cancel-dir",function(t){t.preventDefault(),n(this).parent().find(".add-dir-loader").addClass("sui-icon-loader sui-loading"),e.scanner.cancel().done(function(){return window.location.href=e.wp_smush_msgs.directory_url})}),t.on("click",".sui-icon-play, .wp-smush-resume-scan",function(t){t.preventDefault(),e.scanner.resume()})},initFileTree:function(){var e=this,i=n("button.wp-smush-select-dir"),s={type:"GET",url:ajaxurl,data:{action:"smush_get_directory_list",list_nonce:n('input[name="list_nonce"]').val()},cache:!1};e.tree=Object(t.createTree)(".wp-smush-list-dialog .content",{autoCollapse:!0,clickFolderMode:3,checkbox:!0,debugLevel:0,selectMode:3,tabindex:"0",keyboard:!0,quicksearch:!0,source:s,lazyLoad:function(t,r){r.result=new Promise(function(e,t){s.data.dir=r.node.key,n.ajax(s).done(function(t){return e(t)}).fail(t)}),r.result.then(i.html(e.wp_smush_msgs.add_dir))},loadChildren:function(e,t){return t.node.fixSelection3AfterClick()},select:function(){return i.attr("disabled",!+e.tree.getSelectedNodes().length)},init:function(){return i.attr("disabled",!0)}})},showSmushDialog:function(){var t=document.getElementById("wp-smush-list-dialog");new e(t).show(),n(".wp-smush-list-dialog div.close").focus()},hideSmushDialog:function(){var t=document.getElementById("wp-smush-list-dialog");new e(t).hide(),new e(document.getElementById("wp-smush-progress-dialog")).hide()},showProgressDialog:function(t){n(".wp-smush-progress-dialog .sui-progress-state-text").html("0/"+t+" "+self.wp_smush_msgs.progress_smushed);var i=document.getElementById("wp-smush-progress-dialog");new e(i).show(),n(".wp-smush-progress-dialog div.close").focus()},updateProgressBar:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e>100&&(e=100),n(".sui-progress-block .sui-progress-text span").text(e+"%"),n(".sui-progress-block .sui-progress-bar span").width(e+"%"),e>=90&&n(".sui-progress-state .sui-progress-state-text").text("Finalizing..."),t&&n(".sui-progress-state .sui-progress-state-text").text("Cancelling...")}},WP_Smush.directory.init()}(jQuery)}.call(this,n(1))},function(e,t,n){var i,s,r;
|
52 |
/*! jQuery UI - v1.12.1 - 2018-05-20
|
53 |
* http://jqueryui.com
|
54 |
* Includes: widget.js, position.js, keycode.js, scroll-parent.js, unique-id.js
|
@@ -60,7 +60,7 @@ function(e){var t,n,i,s,r,o,a,u,l,d,c,h,p,f,m,g,v,y,_,w="sizzle"+1*new Date,b=e.
|
|
60 |
* Copyright jQuery Foundation and other contributors
|
61 |
* Released under the MIT license.
|
62 |
* http://jquery.org/license
|
63 |
-
*/e.cleanData=e.cleanData||(t=e.cleanData,function(n){var i,s,r;for(r=0;null!=(s=n[r]);r++)try{(i=e._data(s,"events"))&&i.remove&&e(s).triggerHandler("remove")}catch(e){}t(n)}),e.widget=e.widget||function(t,n,i){var s,r,o,a={},u=t.split(".")[0]
|
64 |
/*!
|
65 |
* jQuery UI Position 1.12.1
|
66 |
* http://jqueryui.com
|
@@ -71,5 +71,5 @@ function(e){var t,n,i,s,r,o,a,u,l,d,c,h,p,f,m,g,v,y,_,w="sizzle"+1*new Date,b=e.
|
|
71 |
*
|
72 |
* http://api.jqueryui.com/position/
|
73 |
*/
|
74 |
-
function(){var t,n=Math.max,i=Math.abs,s=/left|center|right/,r=/top|center|bottom/,o=/[\+\-]\d+(\.[\d]+)?%?/,a=/^\w+/,u=/%$/,l=e.fn.position;function d(e,t,n){return[parseFloat(e[0])*(u.test(e[0])?t/100:1),parseFloat(e[1])*(u.test(e[1])?n/100:1)]}function c(t,n){return parseInt(e.css(t,n),10)||0}function h(t){var n=t[0];return 9===n.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(n)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:n.preventDefault?{width:0,height:0,offset:{top:n.pageY,left:n.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.position=e.position||{scrollbarWidth:function(){if(void 0!==t)return t;var n,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),r=s.children()[0];return e("body").append(s),n=r.offsetWidth,s.css("overflow","scroll"),i=r.offsetWidth,n===i&&(i=s[0].clientWidth),s.remove(),t=n-i},getScrollInfo:function(t){var n=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),s="scroll"===n||"auto"===n&&t.width<t.element[0].scrollWidth,r="scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight;return{width:r?e.position.scrollbarWidth():0,height:s?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var n=e(t||window),i=e.isWindow(n[0]),s=!!n[0]&&9===n[0].nodeType,r=!i&&!s;return{element:n,isWindow:i,isDocument:s,offset:r?e(t).offset():{left:0,top:0},scrollLeft:n.scrollLeft(),scrollTop:n.scrollTop(),width:n.outerWidth(),height:n.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return l.apply(this,arguments);t=e.extend({},t);var u,p,f,m,g,v,y=e(t.of),_=e.position.getWithinInfo(t.within),w=e.position.getScrollInfo(_),b=(t.collision||"flip").split(" "),x={};return v=h(y),y[0].preventDefault&&(t.at="left top"),p=v.width,f=v.height,m=v.offset,g=e.extend({},m),e.each(["my","at"],function(){var e,n,i=(t[this]||"").split(" ");1===i.length&&(i=s.test(i[0])?i.concat(["center"]):r.test(i[0])?["center"].concat(i):["center","center"]),i[0]=s.test(i[0])?i[0]:"center",i[1]=r.test(i[1])?i[1]:"center",e=o.exec(i[0]),n=o.exec(i[1]),x[this]=[e?e[0]:0,n?n[0]:0],t[this]=[a.exec(i[0])[0],a.exec(i[1])[0]]}),1===b.length&&(b[1]=b[0]),"right"===t.at[0]?g.left+=p:"center"===t.at[0]&&(g.left+=p/2),"bottom"===t.at[1]?g.top+=f:"center"===t.at[1]&&(g.top+=f/2),u=d(x.at,p,f),g.left+=u[0],g.top+=u[1],this.each(function(){var s,r,o=e(this),a=o.outerWidth(),l=o.outerHeight(),h=c(this,"marginLeft"),v=c(this,"marginTop"),k=a+h+c(this,"marginRight")+w.width,C=l+v+c(this,"marginBottom")+w.height,S=e.extend({},g),T=d(x.my,o.outerWidth(),o.outerHeight());"right"===t.my[0]?S.left-=a:"center"===t.my[0]&&(S.left-=a/2),"bottom"===t.my[1]?S.top-=l:"center"===t.my[1]&&(S.top-=l/2),S.left+=T[0],S.top+=T[1],s={marginLeft:h,marginTop:v},e.each(["left","top"],function(n,i){e.ui.position[b[n]]&&e.ui.position[b[n]][i](S,{targetWidth:p,targetHeight:f,elemWidth:a,elemHeight:l,collisionPosition:s,collisionWidth:k,collisionHeight:C,offset:[u[0]+T[0],u[1]+T[1]],my:t.my,at:t.at,within:_,elem:o})}),t.using&&(r=function(e){var s=m.left-S.left,r=s+p-a,u=m.top-S.top,d=u+f-l,c={target:{element:y,left:m.left,top:m.top,width:p,height:f},element:{element:o,left:S.left,top:S.top,width:a,height:l},horizontal:r<0?"left":s>0?"right":"center",vertical:d<0?"top":u>0?"bottom":"middle"};p<a&&i(s+r)<p&&(c.horizontal="center"),f<l&&i(u+d)<f&&(c.vertical="middle"),n(i(s),i(r))>n(i(u),i(d))?c.important="horizontal":c.important="vertical",t.using.call(this,e,c)}),o.offset(e.extend(S,{using:r}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,r=s.isWindow?s.scrollLeft:s.offset.left,o=s.width,a=e.left-t.collisionPosition.marginLeft,u=r-a,l=a+t.collisionWidth-o-r;t.collisionWidth>o?u>0&&l<=0?(i=e.left+u+t.collisionWidth-o-r,e.left+=u-i):e.left=l>0&&u<=0?r:u>l?r+o-t.collisionWidth:r:u>0?e.left+=u:l>0?e.left-=l:e.left=n(e.left-a,e.left)},top:function(e,t){var i,s=t.within,r=s.isWindow?s.scrollTop:s.offset.top,o=t.within.height,a=e.top-t.collisionPosition.marginTop,u=r-a,l=a+t.collisionHeight-o-r;t.collisionHeight>o?u>0&&l<=0?(i=e.top+u+t.collisionHeight-o-r,e.top+=u-i):e.top=l>0&&u<=0?r:u>l?r+o-t.collisionHeight:r:u>0?e.top+=u:l>0?e.top-=l:e.top=n(e.top-a,e.top)}},flip:{left:function(e,t){var n,s,r=t.within,o=r.offset.left+r.scrollLeft,a=r.width,u=r.isWindow?r.scrollLeft:r.offset.left,l=e.left-t.collisionPosition.marginLeft,d=l-u,c=l+t.collisionWidth-a-u,h="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];d<0?((n=e.left+h+p+f+t.collisionWidth-a-o)<0||n<i(d))&&(e.left+=h+p+f):c>0&&((s=e.left-t.collisionPosition.marginLeft+h+p+f-u)>0||i(s)<c)&&(e.left+=h+p+f)},top:function(e,t){var n,s,r=t.within,o=r.offset.top+r.scrollTop,a=r.height,u=r.isWindow?r.scrollTop:r.offset.top,l=e.top-t.collisionPosition.marginTop,d=l-u,c=l+t.collisionHeight-a-u,h="top"===t.my[1],p=h?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];d<0?((s=e.top+p+f+m+t.collisionHeight-a-o)<0||s<i(d))&&(e.top+=p+f+m):c>0&&((n=e.top-t.collisionPosition.marginTop+p+f+m-u)>0||i(n)<c)&&(e.top+=p+f+m)}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}}}(),e.ui.position,e.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},e.fn.scrollParent=function(t){var n=this.css("position"),i="absolute"===n,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,r=this.parents().filter(function(){var t=e(this);return(!i||"static"!==t.css("position"))&&s.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==n&&r.length?r:e(this[0].ownerDocument||document)},e.fn.extend({uniqueId:(n=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}})})?i.apply(t,s):i)||(e.exports=r)},function(e,t){!function(){"use strict";WP_Smush.CDN={cdnEnableButton:document.getElementById("smush-enable-cdn"),cdnDisableButton:document.getElementById("smush-cancel-cdn"),cdnStatsBox:document.querySelector(".smush-cdn-stats"),init:function(){var e=this;this.cdnEnableButton&&this.cdnEnableButton.addEventListener("click",function(t){t.currentTarget.classList.add("sui-button-onload");var n=t.currentTarget.querySelector(".sui-icon-loader");n.style.display="none",n.style.display="flex",e.toggle_cdn(!0)}),this.cdnDisableButton&&this.cdnDisableButton.addEventListener("click",function(t){t.preventDefault(),e.toggle_cdn(!1)}),this.updateStatsBox()},toggle_cdn:function(e){var t=this,n=document.getElementsByName("wp_smush_options_nonce"),i=new XMLHttpRequest;i.open("POST",ajaxurl+"?action=smush_toggle_cdn",!0),i.setRequestHeader("Content-type","application/x-www-form-urlencoded"),i.onload=function(){if(200===i.status){var e=JSON.parse(i.response);void 0!==e.success&&e.success?location.reload():void 0!==e.data.message&&t.showNotice(e.data.message)}else t.showNotice("Request failed. Returned status of "+i.status)},i.send("param="+e+"&_ajax_nonce="+n[0].value)},showNotice:function(e){if(void 0!==e){var t=document.getElementById("wp-smush-ajax-notice");t.classList.add("sui-notice-error"),t.innerHTML="<p>".concat(e,"</p>"),this.cdnEnableButton&&this.cdnEnableButton.classList.remove("sui-button-onload"),t.style.display="block",setTimeout(function(){t.style.display="none"},5e3)}},updateStatsBox:function(){var e=this;if(void 0!==this.cdnStatsBox&&this.cdnStatsBox&&window.location.search.includes("view=cdn")){this.toggleElements();var t=new XMLHttpRequest;t.open("POST",ajaxurl+"?action=get_cdn_stats",!0),t.onload=function(){if(200===t.status){var n=JSON.parse(t.response);void 0!==n.success&&n.success?e.toggleElements():void 0!==n.data.message&&e.showNotice(n.data.message)}else e.showNotice("Request failed. Returned status of "+t.status)},t.send()}},toggleElements:function(){for(var e=this.cdnStatsBox.querySelector(".sui-icon-loader"),t=this.cdnStatsBox.querySelectorAll(".wp-smush-stats > :not(.sui-icon-loader)"),n=0;n<t.length;n++)t[n].classList.toggle("sui-hidden");e.classList.toggle("sui-hidden")}},WP_Smush.CDN.init()}()},function(e,t){!function(){"use strict";WP_Smush.Lazyload={lazyloadEnableButton:document.getElementById("smush-enable-lazyload"),lazyloadDisableButton:document.getElementById("smush-cancel-lazyload"),init:function(){var e=this,t=this;this.lazyloadEnableButton&&this.lazyloadEnableButton.addEventListener("click",function(t){t.currentTarget.classList.add("sui-button-onload");var n=t.currentTarget.querySelector(".sui-icon-loader");n.style.display="none",n.offsetHeight,n.style.display="flex",e.toggle_lazy_load(!0)}),this.lazyloadDisableButton&&this.lazyloadDisableButton.addEventListener("click",function(t){t.preventDefault(),e.toggle_lazy_load(!1)});var n=document.getElementById("smush-remove-spinner");n&&n.addEventListener("click",function(t){t.preventDefault(),e.removeLoaderIcon()});var i=document.getElementById("smush-remove-placeholder");i&&i.addEventListener("click",function(t){t.preventDefault(),e.removeLoaderIcon("placeholder")});var s=document.querySelectorAll(".smush-ll-remove");s&&0<s.length&&s.forEach(function(e){e.addEventListener("click",function(e){e.preventDefault(),e.target.closest("li").style.display="none",t.remove(e.target.dataset.id,e.target.dataset.type)})})},toggle_lazy_load:function(e){var t=this,n=document.getElementsByName("wp_smush_options_nonce"),i=new XMLHttpRequest;i.open("POST",ajaxurl+"?action=smush_toggle_lazy_load",!0),i.setRequestHeader("Content-type","application/x-www-form-urlencoded"),i.onload=function(){if(200===i.status){var e=JSON.parse(i.response);void 0!==e.success&&e.success?location.reload():void 0!==e.data.message&&t.showNotice(e.data.message)}else console.log("Request failed. Returned status of "+i.status)},i.send("param="+e+"&_ajax_nonce="+n[0].value)},showNotice:function(e){if(void 0!==e){var t=document.getElementById("wp-smush-ajax-notice");t.classList.add("sui-notice-error"),t.innerHTML="<p>".concat(e,"</p>"),this.cdnEnableButton&&this.cdnEnableButton.classList.remove("sui-button-onload"),t.style.display="block",setTimeout(function(){t.style.display="none"},5e3)}},addLoaderIcon:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"spinner";e?e.open():((e=wp.media({title:"Select or upload an icon",button:{text:"Select icon"},multiple:!1})).on("select",function(){var n=e.state().get("selection").first().toJSON(),i=document.getElementById("smush-"+t+"-icon-preview");i.style.backgroundImage='url("'+n.url+'")',i.style.display="block",document.getElementById("smush-"+t+"-icon-file").setAttribute("value",n.id),document.getElementById("smush-upload-"+t).style.display="none";var s=document.getElementById("smush-remove-"+t);s.querySelector("span").innerHTML=n.filename,s.style.display="block"}),e.open())},removeLoaderIcon:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"spinner",t=document.getElementById("smush-"+e+"-icon-preview");t.style.backgroundImage="",t.style.display="none",document.getElementById("smush-upload-"+e).style.display="block",document.getElementById("smush-remove-"+e).style.display="none",document.getElementById("smush-"+e+"-icon-file").setAttribute("value","")},remove:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"spinner",n=document.getElementsByName("wp_smush_options_nonce"),i=new XMLHttpRequest;i.open("POST",ajaxurl+"?action=smush_remove_icon",!0),i.setRequestHeader("Content-type","application/x-www-form-urlencoded"),i.send("id="+e+"&type="+t+"&_ajax_nonce="+n[0].value)}},WP_Smush.Lazyload.init()}()},function(e,t,n){(function(e){!function(){"use strict";WP_Smush.restore={modal:document.getElementById("smush-restore-images-dialog"),contentContainer:document.getElementById("smush-bulk-restore-content"),settings:{slide:"start",success:0,errors:[]},items:[],success:[],errors:[],currentStep:0,totalSteps:0,init:function(){this.modal&&(this.settings={slide:"start",success:0,errors:[]},this.renderTemplate(),new e(this.modal).show())},renderTemplate:function(){var e=WP_Smush.onboarding.template("smush-bulk-restore")(this.settings);e&&(this.contentContainer.innerHTML=e),this.bindSubmit()},bindSubmit:function(){var e=this.modal.querySelector('button[id="smush-bulk-restore-button"]'),t=this;e&&e.addEventListener("click",function(e){e.preventDefault(),t.modal.querySelector(".sui-dialog-content").style.maxWidth="460px",t.settings={slide:"progress"},t.errors=[],t.renderTemplate(),t.initScan()})},cancel:function(){"start"===this.settings.slide||"finish"===this.settings.slide?new e(this.modal).hide():(this.updateProgressBar(!0),window.location.reload())},updateProgressBar:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=0;0<this.currentStep&&(t=Math.min(Math.round(100*this.currentStep/this.totalSteps),99)),t>100&&(t=100),this.modal.querySelector(".sui-progress-text span").innerHTML=t+"%",this.modal.querySelector(".sui-progress-bar span").style.width=t+"%";var n=this.modal.querySelector(".sui-progress-state-text");n.innerHTML=t>=90?"Finalizing...":e?"Cancelling...":this.currentStep+"/"+this.totalSteps+" images restored"},initScan:function(){var e=this,t=document.getElementById("_wpnonce"),n=new XMLHttpRequest;n.open("POST",ajaxurl+"?action=get_image_count",!0),n.setRequestHeader("Content-type","application/x-www-form-urlencoded"),n.onload=function(){if(200===n.status){var t=JSON.parse(n.response);void 0!==t.data.items&&(e.items=t.data.items,e.totalSteps=t.data.items.length,e.step())}else console.log("Request failed. Returned status of "+n.status)},n.send("_ajax_nonce="+t.value)},step:function(){var e=this,t=this,n=document.getElementById("_wpnonce");if(0<this.items.length){var i=this.items.pop(),s=new XMLHttpRequest;s.open("POST",ajaxurl+"?action=restore_step",!0),s.setRequestHeader("Content-type","application/x-www-form-urlencoded"),s.onload=function(){if(e.currentStep++,200===s.status){var n=JSON.parse(s.response);void 0!==n.data.success&&n.data.success?t.success.push(i):t.errors.push({id:i,src:n.data.src,thumb:n.data.thumb,link:n.data.link})}t.updateProgressBar(),t.step()},s.send("item="+i+"&_ajax_nonce="+n.value)}else this.settings={slide:"finish",success:this.success.length,errors:this.errors,total:this.totalSteps},t.renderTemplate(),0<this.errors.length&&(this.modal.querySelector(".sui-dialog-content").style.maxWidth="660px")}},WP_Smush.restore.template=_.memoize(function(e){var t,n={evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g,variable:"data"};return function(i){return _.templateSettings=n,(t=t||_.template(document.getElementById(e).innerHTML))(i)}})}()}).call(this,n(1))},function(e,t){jQuery(function(){var e=jQuery(".smush-notice"),t=e.find(".smush-notice-act"),n=e.find(".smush-notice-dismiss");function i(){e.fadeTo(100,0,function(){e.slideUp(100,function(){e.remove()})})}function s(t){e.attr("data-message",t),e.addClass("loading");jQuery.post(ajaxurl,{action:"dismiss_upgrade_notice"})}function r(e){var t={action:e};jQuery.post(ajaxurl,t)}e.fadeIn(500),t.click(function(e){i(),s(t.data("msg"))}),n.click(function(e){i(),s(t.data("msg"))}),jQuery(".wp-smush-update-info").on("click",".notice-dismiss",function(t){t.preventDefault(),e=jQuery(this),i(),r("dismiss_update_info")}),jQuery("div.wp-smush-s3support-alert").on("click",".sui-notice-dismiss > a",function(t){e=jQuery(this),i(),r("dismiss_s3support_alert")})})}]);
|
75 |
//# sourceMappingURL=smush-admin.min.js.map
|
1 |
+
!function(e){var t={};function n(i){if(t[i])return t[i].exports;var s=t[i]={i:i,l:!1,exports:{}};return e[i].call(s.exports,s,s.exports,n),s.l=!0,s.exports}n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var s in e)n.d(i,s,function(t){return e[t]}.bind(null,s));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=15)}([function(e,t,n){"use strict";function i(e){return(i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function s(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}var r=function(){function e(t,n){var s=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"media";!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.errors=[];var r=jQuery(".bulk-smush-wrapper .sui-progress-state-text");this.smushed=parseInt(r.find("span:first-child").html()),this.total=parseInt(r.find("span:last-child").html()),this.skip_resmush=!(void 0===t.data("smush")||!t.data("smush")),this.button=jQuery(t[0]),this.is_bulk=!!i(n)&&n,this.url=ajaxurl,this.log=jQuery(".smush-final-log"),this.deferred=jQuery.Deferred(),this.deferred.errors=[];var o=0<wp_smushit_data.resmush.length&&!this.skip_resmush?wp_smushit_data.unsmushed.length>0?wp_smushit_data.resmush.concat(wp_smushit_data.unsmushed):wp_smushit_data.resmush:wp_smushit_data.unsmushed;return"object"===i(o)?this.ids=o.filter(function(e,t,n){return t===n.indexOf(e)}):this.ids=o,this.is_bulk_resmush=0<wp_smushit_data.resmush.length&&!this.skip_resmush,this.status=this.button.parent().find(".smush-status"),this.smush_type=s,this.single_ajax_suffix="nextgen"===this.smush_type?"smush_manual_nextgen":"wp_smushit_manual",this.bulk_ajax_suffix="nextgen"===this.smush_type?"wp_smushit_nextgen_bulk":"wp_smushit_bulk",this.url=this.is_bulk?e.smushAddParams(this.url,{action:this.bulk_ajax_suffix}):e.smushAddParams(this.url,{action:this.single_ajax_suffix}),this.start(),this.run(),this.bind_deferred_events(),this.cancel_ajax(),this.deferred}var t,n,r;return t=e,r=[{key:"smushAddParams",value:function(e,t){return jQuery.isEmptyObject(t)||(e+=(e.indexOf("?")>=0?"&":"?")+jQuery.param(t)),e}},{key:"membership_validity",value:function(e){var t=jQuery("#wp-smush-invalid-member");void 0!==e&&void 0!==e.show_warning&&t.length>0&&(e.show_warning?t.show():t.hide())}},{key:"ajax",value:function(e,t,n,i){var s=jQuery.param({is_bulk_resmush:e,attachment_id:t,_nonce:i});return jQuery.ajax({type:"GET",data:s,url:n,timeout:wp_smushit_data.timeout,dataType:"json"})}},{key:"progress_bar",value:function(e,t,n){var i=e.parents().eq(1).find(".wp-smush-progress");"show"===n?i.html(t):i.html(wp_smush_msgs.all_done),i.toggleClass("visible")}},{key:"set_pro_savings",value:function(){var e=wp_smushit_data.savings_percent>0?wp_smushit_data.savings_percent:0,t=wp_smushit_data.savings_bytes>0?wp_smushit_data.savings_bytes:0,n=2.22058824;e>49&&(n=1.22054412),e>0&&(e*=n,t*=n),wp_smushit_data.pro_savings={percent:WP_Smush.helpers.precise_round(e,1),savings_bytes:WP_Smush.helpers.formatBytes(t,1)}}},{key:"update_stats",value:function(t){var n=void 0!==t&&"nextgen"===t,i=0;wp_smushit_data.savings_bytes=parseInt(wp_smushit_data.size_before)-parseInt(wp_smushit_data.size_after);var s=WP_Smush.helpers.formatBytes(wp_smushit_data.savings_bytes,1),r=jQuery(".wp-smush-savings .wp-smush-stats-human");n?r.html(s):(r.html(WP_Smush.helpers.getFormatFromString(s)),jQuery(".sui-summary-large.wp-smush-stats-human").html(WP_Smush.helpers.getSizeFromString(s))),wp_smushit_data.savings_percent=WP_Smush.helpers.precise_round(parseInt(wp_smushit_data.savings_bytes)/parseInt(wp_smushit_data.size_before)*100,1),isNaN(wp_smushit_data.savings_percent)||jQuery(".wp-smush-savings .wp-smush-stats-percent").html(wp_smushit_data.savings_percent),void 0!==wp_smushit_data.savings_bytes&&void 0!==wp_smushit_data.savings_resize&&(i=parseInt(wp_smushit_data.savings_bytes)-parseInt(wp_smushit_data.savings_resize))>0&&jQuery("li.super-smush-attachments span.smushed-savings").html(WP_Smush.helpers.formatBytes(i,1)),n?jQuery(".sui-summary-details span.wp-smush-total-optimised").html(wp_smushit_data.count_images):jQuery("span.smushed-items-count span.wp-smush-count-total span.wp-smush-total-optimised").html(wp_smushit_data.count_images),jQuery("span.smushed-items-count span.wp-smush-count-resize-total span.wp-smush-total-optimised").html(wp_smushit_data.count_resize);var o=jQuery("li.super-smush-attachments .smushed-count");o.length&&void 0!==wp_smushit_data.count_supersmushed&&o.html(wp_smushit_data.count_supersmushed);var a=jQuery(".smush-conversion-savings");if(a.length>0&&void 0!==wp_smushit_data.savings_conversion&&""!=wp_smushit_data.savings_conversion){var u=a.find(".wp-smush-stats");u.length>0&&u.html(WP_Smush.helpers.formatBytes(wp_smushit_data.savings_conversion,1))}var l=jQuery(".smush-resize-savings");if(l.length>0&&void 0!==wp_smushit_data.savings_resize&&""!=wp_smushit_data.savings_resize){var d=parseInt(wp_smushit_data.savings_resize),c=l.find(".wp-smush-stats"),h=l.find(".wp-smush-stats-label-message");d>0&&c.length>0&&(h.length>0&&h.hide(),c.html(WP_Smush.helpers.formatBytes(wp_smushit_data.savings_resize,1)))}if(e.set_pro_savings(),void 0!==wp_smushit_data.pro_savings){var p=jQuery(".smush-avg-pro-savings");if(p.length>0){var f=p.find(".wp-smush-stats-percent"),m=p.find(".wp-smush-stats-human");f.length>0&&void 0!==wp_smushit_data.pro_savings.percent&&""!=wp_smushit_data.pro_savings.percent&&f.html(wp_smushit_data.pro_savings.percent),m.length>0&&void 0!==wp_smushit_data.pro_savings.savings_bytes&&""!=wp_smushit_data.pro_savings.savings_bytes&&m.html(wp_smushit_data.pro_savings.savings_bytes)}}var g=jQuery(".smush-sidenav .wp-smush-remaining-count");if(g.length){var v=0;void 0!==wp_smushit_data.unsmushed&&wp_smushit_data.unsmushed.length>0&&(v+=wp_smushit_data.unsmushed.length),void 0!==wp_smushit_data.resmush&&wp_smushit_data.resmush.length>0&&(v+=wp_smushit_data.resmush.length),v>0?g.html(v):(jQuery(".sui-summary-smush .smush-stats-icon").addClass("sui-hidden"),g.removeClass("sui-tag sui-tag-warning").html(""))}}},{key:"update_image_stats",value:function(e){if(0!==e){var t=jQuery(".attachment-info .file-size");if(t.contents().filter(function(){return 3===this.nodeType}).text()!==" "+e){var n=t.contents().filter(function(){return 1===this.nodeType}).text();t.html("<strong>"+n+"</strong> "+e)}}}},{key:"update_localized_stats",value:function(e,t){"undefined"!=typeof wp_smushit_data&&("media"===t?(wp_smushit_data.count_images=parseInt(wp_smushit_data.count_images)+parseInt(e.count),e.is_lossy&&(wp_smushit_data.count_supersmushed=parseInt(wp_smushit_data.count_supersmushed)+1),wp_smushit_data.savings_resize=void 0!==e.savings_resize.bytes?parseInt(wp_smushit_data.savings_resize)+parseInt(e.savings_resize.bytes):parseInt(wp_smushit_data.savings_resize),wp_smushit_data.count_resize=void 0!==e.savings_resize.bytes?parseInt(wp_smushit_data.count_resize)+1:wp_smushit_data.count_resize,wp_smushit_data.savings_conversion=void 0!==e.savings_conversion&&void 0!==e.savings_conversion.bytes?parseInt(wp_smushit_data.savings_conversion)+parseInt(e.savings_conversion.bytes):parseInt(wp_smushit_data.savings_conversion)):"directory_smush"===t?wp_smushit_data.count_images=parseInt(wp_smushit_data.count_images)+1:"nextgen"===t&&(wp_smushit_data.count_supersmushed=parseInt(wp_smushit_data.count_supersmushed)+1,wp_smushit_data.count_images=parseInt(wp_smushit_data.count_images)+parseInt(e.count)),e.size_before>e.size_after&&(wp_smushit_data.size_before=void 0!==e.size_before?parseInt(wp_smushit_data.size_before)+parseInt(e.size_before):parseInt(wp_smushit_data.size_before),wp_smushit_data.size_after=void 0!==e.size_after?parseInt(wp_smushit_data.size_after)+parseInt(e.size_after):parseInt(wp_smushit_data.size_after)),void 0!==e.savings_resize&&(wp_smushit_data.size_before=void 0!==e.savings_resize.size_before?parseInt(wp_smushit_data.size_before)+parseInt(e.savings_resize.size_before):parseInt(wp_smushit_data.size_before),wp_smushit_data.size_after=void 0!==e.savings_resize.size_after?parseInt(wp_smushit_data.size_after)+parseInt(e.savings_resize.size_after):parseInt(wp_smushit_data.size_after)),void 0!==e.savings_conversion&&(wp_smushit_data.size_before=void 0!==e.savings_conversion.size_before?parseInt(wp_smushit_data.size_before)+parseInt(e.savings_conversion.size_before):parseInt(wp_smushit_data.size_before),wp_smushit_data.size_after=void 0!==e.savings_conversion.size_after?parseInt(wp_smushit_data.size_after)+parseInt(e.savings_conversion.size_after):parseInt(wp_smushit_data.size_after)))}},{key:"prepare_error_row",value:function(e,t,n,i,s){var r='<div class="smush-bulk-error-row"><div class="smush-bulk-image-data">'+(void 0===n?'<i class="sui-icon-photo-picture" aria-hidden="true"></i>':n)+'<span class="smush-image-name">'+("undefined"===t||void 0===t?"undefined":t)+'</span><span class="smush-image-error">'+e+"</span></div>";return"media"===s&&(r=r+'<div class="smush-bulk-image-actions"><button type="button" class="sui-button-icon sui-tooltip sui-tooltip-constrained sui-tooltip-top-right smush-ignore-image" data-tooltip="'+wp_smush_msgs.error_ignore+'" data-id="'+i+'"><i class="sui-icon-eye-hide" aria-hidden="true"></i></button></div>'),r+="</div>"}},{key:"update_smush_ids",value:function(e){if(void 0!==wp_smushit_data.unsmushed&&wp_smushit_data.unsmushed.length>0){var t=wp_smushit_data.unsmushed.indexOf(e);t>-1&&wp_smushit_data.unsmushed.splice(t,1)}if(void 0!==wp_smushit_data.resmush&&wp_smushit_data.resmush.length>0){var n=wp_smushit_data.resmush.indexOf(e);n>-1&&wp_smushit_data.resmush.splice(n,1)}}}],(n=[{key:"start",value:function(){this.button.attr("disabled","disabled"),this.button.addClass("wp-smush-started"),this.bulk_start(),this.single_start()}},{key:"bulk_start",value:function(){this.is_bulk&&(jQuery(".wp-smush-bulk-wrapper").hide(),jQuery(".sui-notice-top").remove(),jQuery(".wp-smush-bulk-progress-bar-wrapper .sui-notice-warning:first-of-type").hide(),0>=jQuery("div.smush-final-log .smush-bulk-error-row").length&&jQuery("div.smush-final-log").hide(),jQuery(".bulk-smush-wrapper .wp-smush-bulk-progress-bar-wrapper").show())}},{key:"single_start",value:function(){this.is_bulk||(this.show_loader(),this.status.removeClass("error"))}},{key:"enable_button",value:function(){this.button.prop("disabled",!1),jQuery(".wp-smush-all").removeAttr("disabled"),jQuery("button.wp-smush-scan, a.wp-smush-lossy-enable, button.wp-smush-resize-enable, button#wp-smush-save-settings").removeAttr("disabled")}},{key:"show_loader",value:function(){e.progress_bar(this.button,wp_smush_msgs.smushing,"show")}},{key:"hide_loader",value:function(){e.progress_bar(this.button,wp_smush_msgs.smushing,"hide")}},{key:"single_done",value:function(){if(!this.is_bulk){this.hide_loader();var t=this;this.request.done(function(n){if(void 0!==n.data){var i=t.status.parent();i.find(".smush-stats-wrapper");n.data.status&&(i.find(".smush-status-links").remove(),t.status.replaceWith(n.data.status)),e.membership_validity(n.data),n.success&&"Not processed"!==n.data?(t.status.removeClass("sui-hidden"),t.button.parent().removeClass("unsmushed").addClass("smushed"),t.button.remove()):(t.status.addClass("error"),t.status.html(n.data.error_msg),t.status.show()),i.append(n.data.stats),e.update_image_stats(n.data.new_size)}t.enable_button()}).fail(function(e){t.status.html(e.data),t.status.addClass("error"),t.enable_button()})}}},{key:"sync_stats",value:function(){var t=jQuery("div.wp-smush-bulk-progress-bar-wrapper div.wp-smush-count.tc"),n=t.html();t.html(wp_smush_msgs.sync_stats),jQuery.ajax({type:"GET",url:this.url,data:{action:"get_stats"},success:function(t){t&&void 0!==t&&(t=t.data,jQuery.extend(wp_smushit_data,{count_images:t.count_images,count_smushed:t.count_smushed,count_total:t.count_total,count_resize:t.count_resize,count_supersmushed:t.count_supersmushed,savings_bytes:t.savings_bytes,savings_conversion:t.savings_conversion,savings_resize:t.savings_resize,size_before:t.size_before,size_after:t.size_after}),e.update_stats(this.smush_type))}}).always(function(){return t.html(n)})}},{key:"bulk_done",value:function(){if(this.is_bulk){this.enable_button();var e=jQuery(".sui-summary-smush .smush-stats-icon");if(0===this.ids.length)e.addClass("sui-hidden"),jQuery(".bulk-smush-wrapper .wp-smush-all-done, .wp-smush-pagespeed-recommendation").show(),jQuery(".wp-smush-bulk-wrapper").hide(),jQuery(".wp-smush-bulk-progress-bar-wrapper").hide();else{e.removeClass("sui-icon-loader sui-loading sui-hidden").addClass("sui-icon-info sui-warning");var t=jQuery(".bulk-smush-wrapper .wp-smush-resmush-notice");t.length>0?t.show():jQuery(".bulk-smush-wrapper .wp-smush-remaining").show()}jQuery(".wp-resmush.wp-smush-action, .wp-smush-scan").removeAttr("disabled")}}},{key:"is_resolved",value:function(){return"resolved"===this.deferred.state()}},{key:"free_exceeded",value:function(){var e=jQuery(".wp-smush-bulk-progress-bar-wrapper");e.addClass("wp-smush-exceed-limit"),e.find(".sui-progress-block .wp-smush-cancel-bulk").addClass("sui-hidden"),e.find(".sui-progress-block .wp-smush-all").removeClass("sui-hidden"),e.find("i.sui-icon-loader").addClass("sui-icon-info").removeClass("sui-icon-loader").removeClass("sui-loading"),document.getElementById("bulk-smush-resume-button").classList.remove("sui-hidden")}},{key:"update_remaining_count",value:function(){if(this.is_bulk_resmush){var e=jQuery(".wp-smush-resmush-notice .wp-smush-remaining-count");e.length&&void 0!==this.ids&&e.html(this.ids.length)}else{var t=jQuery(".bulk-smush-wrapper .wp-smush-remaining-count");t.length&&void 0!==this.ids&&t.html(this.ids.length)}var n=jQuery(".smush-sidenav .wp-smush-remaining-count");n.length&&void 0!==this.ids&&(this.ids.length>0?n.html(this.ids.length):(jQuery(".sui-summary-smush .smush-stats-icon").addClass("sui-hidden"),n.removeClass("sui-tag sui-tag-warning").html("")))}},{key:"update_progress",value:function(t){if(this.is_bulk_resmush||this.is_bulk){var n="";t&&void 0!==t.data&&void 0!==t.data.stats&&e.update_localized_stats(t.data.stats,this.smush_type),this.is_bulk_resmush?(t.success&&(wp_smushit_data.resmush.length>0?jQuery(".wp-smush-images-remaining").html(wp_smushit_data.resmush.length):0===wp_smushit_data.resmush.length&&0===this.ids.length&&(jQuery(".bulk-resmush-wrapper .wp-smush-all-done, .wp-smush-pagespeed-recommendation").removeClass("sui-hidden"),jQuery(".wp-smush-resmush-wrap, .wp-smush-bulk-progress-bar-wrapper").hide())),void 0!==this.ids&&void 0!==this.total&&this.total>0&&(n=(this.smushed+this.errors.length)/this.total*100)):n=(this.smushed+this.errors.length)/this.total*100,0===this.ids.length&&("nextgen"!==this.smush_type&&this.sync_stats(),jQuery(".bulk-smush-wrapper .wp-smush-all-done, .wp-smush-pagespeed-recommendation").show(),jQuery(".wp-smush-bulk-wrapper").hide()),this.update_remaining_count(),this._update_progress(this.smushed+this.errors.length,WP_Smush.helpers.precise_round(n,1)),e.update_stats(this.smush_type)}}},{key:"_update_progress",value:function(e,t){(this.is_bulk||this.is_bulk_resmush)&&(jQuery("span.wp-smush-images-percent").html(t+"%"),jQuery(".bulk-smush-wrapper .wp-smush-progress-inner").css("width",t+"%"),jQuery(".bulk-smush-wrapper .sui-progress-state-text").find("span:first-child").html(e).find("span:last-child").html(this.total))}},{key:"continue",value:function(){var e=this.button.attr("continue_smush");return void 0===e&&(e=!0),"false"!==e&&e||(e=!1),e&&this.ids.length>0&&this.is_bulk}},{key:"increment_errors",value:function(e){this.errors.push(e)}},{key:"increment_smushed",value:function(e){this.smushed=this.smushed+1}},{key:"call_ajax",value:function(){var t="";this.current_id=this.is_bulk?this.ids.shift():this.button.data("id"),e.update_smush_ids(this.current_id);var n=this.button.parent().find("#_wp_smush_nonce");n&&(t=n.val());var i=this;return this.request=e.ajax(this.is_bulk_resmush,this.current_id,this.url,t).done(function(t){if(void 0===t.success||void 0!==t.success&&!1===t.success&&void 0!==t.data&&"limit_exceeded"!==t.data.error){i.increment_errors(i.current_id);var n=e.prepare_error_row(t.data.error_message,t.data.file_name,t.data.thumbnail,i.current_id,i.smush_type);i.log.show(),i.errors.length>5?jQuery(".smush-bulk-errors-actions").removeClass("sui-hidden"):i.log.find(".smush-bulk-errors").append(n)}else void 0!==t.success&&t.success&&i.increment_smushed(i.current_id);(e.membership_validity(t.data),void 0===t.data||"limit_exceeded"!==t.data.error||i.is_resolved())?i.is_bulk?i.update_progress(t):0===i.ids.length&&i.sync_stats():(document.getElementById("bulk_smush_warning").classList.remove("sui-hidden"),i.button.attr("continue_smush",!1),wp_smushit_data.unsmushed.unshift(i.current_id),i.ids.unshift(i.current_id),i.free_exceeded());i.single_done()}).always(function(){i.continue()&&i.is_bulk?i.call_ajax():i.deferred.resolve()}),this.deferred.errors=this.errors,this.deferred}},{key:"run",value:function(){this.is_bulk&&this.ids.length>0&&this.call_ajax(),this.is_bulk||this.call_ajax()}},{key:"bind_deferred_events",value:function(){var e=this;this.deferred.done(function(){if(e.button.removeAttr("continue_smush"),e.errors.length){var t=wp_smush_msgs.error_in_bulk.replace("{{errors}}",e.errors.length).replace("{{total}}",e.total).replace("{{smushed}}",e.smushed);jQuery(".wp-smush-all-done").addClass("sui-notice-warning").removeClass("sui-notice-success").find("p").html(t)}e.bulk_done(),jQuery(".wp-smush-all:not(.wp-smush-finished), .wp-smush-scan").removeAttr("disabled")})}},{key:"cancel_ajax",value:function(){var t=this;jQuery(".wp-smush-cancel-bulk").on("click",function(){t.button.attr("continue_smush",!1),t.sync_stats(),e.update_stats(this.smush_type),t.request.abort(),t.enable_button(),t.button.removeClass("wp-smush-started"),wp_smushit_data.unsmushed.unshift(t.current_id),jQuery(".wp-smush-bulk-wrapper").show(),jQuery(".wp-smush-bulk-progress-bar-wrapper").hide()})}}])&&s(t.prototype,n),r&&s(t,r),e}();t.a=r},function(e,t,n){(function(n){var i;!function(n){"use strict";var s,r=["a[href]","area[href]","input:not([disabled])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","iframe","object","embed","[contenteditable]",'[tabindex]:not([tabindex^="-"])'];function o(e,t){this._show=this.show.bind(this),this._hide=this.hide.bind(this),this._bindKeypress=this._bindKeypress.bind(this),this.node=e,this._listeners={},this.create(t)}function a(e){return Array.prototype.slice.call(e)}function u(e,t){return a((t||document).querySelectorAll(e))}function l(e){var t=d(e);t.length&&t[0].focus()}function d(e){return u(r.join(","),e).filter(function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)})}o.prototype.create=function(e){var t,n;return this._targets=this._targets||function(e){if(NodeList.prototype.isPrototypeOf(e))return a(e);if(Element.prototype.isPrototypeOf(e))return[e];if("string"==typeof e)return u(e)}(e)||(t=this.node,(n=a(t.parentNode.childNodes).filter(function(e){return 1===e.nodeType})).splice(n.indexOf(t),1),n),this.node.setAttribute("aria-hidden",!0),this.shown=!1,this._openers=u('[data-a11y-dialog-show="'+this.node.id+'"]'),this._openers.forEach(function(e){e.addEventListener("click",this._show)}.bind(this)),this._closers=u("[data-a11y-dialog-hide]",this.node).concat(u('[data-a11y-dialog-hide="'+this.node.id+'"]')),this._closers.forEach(function(e){e.addEventListener("click",this._hide)}.bind(this)),this._fire("create"),this},o.prototype.show=function(e){return this.shown?this:(this.node.classList.add("sui-fade-in"),this.node.classList.remove("sui-fade-out"),this.node.getElementsByClassName("sui-dialog-content")[0].className="sui-dialog-content sui-content-fade-in",this._fire("show",e),this.shown=!0,this.node.removeAttribute("aria-hidden"),this._targets.forEach(function(e){var t=e.getAttribute("aria-hidden");t&&e.setAttribute("data-a11y-dialog-original",t),e.setAttribute("aria-hidden","true")}),s=document.activeElement,l(this.node),document.addEventListener("keydown",this._bindKeypress),document.getElementsByTagName("html")[0].classList.add("sui-has-overlay"),this)},o.prototype.hide=function(e){if(!this.shown)return this;this.node.getElementsByClassName("sui-dialog-content")[0].className="sui-dialog-content sui-content-fade-out",this.node.classList.add("sui-fade-out"),this.node.classList.remove("sui-fade-in"),this._fire("hide",e),this.shown=!1;var t=this.node;return setTimeout(function(){t.setAttribute("aria-hidden","true")},300),this._targets.forEach(function(e){var t=e.getAttribute("data-a11y-dialog-original");t?(e.setAttribute("aria-hidden",t),e.removeAttribute("data-a11y-dialog-original")):e.removeAttribute("aria-hidden")}),s&&s.focus(),document.removeEventListener("keydown",this._bindKeypress),document.getElementsByTagName("html")[0].classList.remove("sui-has-overlay"),this},o.prototype.destroy=function(){return this.hide(),this._openers.forEach(function(e){e.removeEventListener("click",this._show)}.bind(this)),this._closers.forEach(function(e){e.removeEventListener("click",this._hide)}.bind(this)),this._fire("destroy"),this._listeners={},this},o.prototype.on=function(e,t){return void 0===this._listeners[e]&&(this._listeners[e]=[]),this._listeners[e].push(t),this},o.prototype.off=function(e,t){var n=this._listeners[e].indexOf(t);return n>-1&&this._listeners[e].splice(n,1),this},o.prototype._fire=function(e,t){(this._listeners[e]||[]).forEach(function(e){e(this.node,t)}.bind(this))},o.prototype._bindKeypress=function(e){this.shown&&27===e.which&&(e.preventDefault(),this.hide()),this.shown&&9===e.which&&function(e,t){var n=d(e),i=n.indexOf(document.activeElement);t.shiftKey&&0===i?(n[n.length-1].focus(),t.preventDefault()):t.shiftKey||i!==n.length-1||(n[0].focus(),t.preventDefault())}(this.node,e)},o.prototype._maintainFocus=function(e){this.shown&&!this.node.contains(e.target)&&l(this.node)},void 0!==e.exports?e.exports=o:void 0===(i=function(){return o}.apply(t,[]))||(e.exports=i)}(void 0!==n||window)}).call(this,n(2))},function(e,t){var n;n=function(){return this}();try{n=n||new Function("return this")()}catch(e){"object"==typeof window&&(n=window)}e.exports=n},function(e,t,n){"use strict";t.a=function(e,t){e=parseInt(e),t=parseInt(t);var n=!1,i=0,s={scan:function(){var n=e-t;0!==t?r(n):$.post(ajaxurl,{action:"directory_smush_start"},function(){return r(n)})},cancel:function(){return n=!0,$.post(ajaxurl,{action:"directory_smush_cancel"})},getProgress:function(){if(n)return 0;var i=e-t;return Math.min(Math.round(100*parseInt(e-i)/e),99)},onFinishStep:function(n){$(".wp-smush-progress-dialog .sui-progress-state-text").html(t-i+"/"+e+" "+wp_smush_msgs.progress_smushed),WP_Smush.directory.updateProgressBar(n)},onFinish:function(){WP_Smush.directory.updateProgressBar(100),window.location.href=wp_smush_msgs.directory_url+"&scan=done"},limitReached:function(){var e=$("#wp-smush-progress-dialog");e.addClass("wp-smush-exceed-limit"),e.find("#cancel-directory-smush").attr("data-tooltip",wp_smush_msgs.bulk_resume),e.find(".sui-icon-close").removeClass("sui-icon-close").addClass("sui-icon-play"),e.find("#cancel-directory-smush").attr("id","cancel-directory-smush-disabled")},resume:function(){var e=$("#wp-smush-progress-dialog"),t=e.find("#cancel-directory-smush-disabled");e.removeClass("wp-smush-exceed-limit"),e.find(".sui-icon-play").removeClass("sui-icon-play").addClass("sui-icon-close"),t.attr("data-tooltip","Cancel"),t.attr("id","cancel-directory-smush"),s.scan()}},r=function n(r){r>=0?(t=e-r,$.post(ajaxurl,{action:"directory_smush_check_step",step:t},function(e){void 0!==e.success&&e.success?(t++,r-=1,s.onFinishStep(s.getProgress()),n(r)):void 0!==e.data.error&&"dir_smush_limit_exceeded"===e.data.error?s.limitReached():(i++,t++,r-=1,s.onFinishStep(s.getProgress()),n(r))})):$.post(ajaxurl,{action:"directory_smush_finish",items:e-i,failed:i},function(e){return s.onFinish(e)})};return s}},function(e,t,n){var i;
|
2 |
/*!
|
3 |
* jQuery JavaScript Library v3.4.1
|
4 |
* https://jquery.com/
|
48 |
*
|
49 |
* @version 2.31.0
|
50 |
* @date 2019-05-31T11:32:38Z
|
51 |
+
*/s=[n(4),n(21)],void 0===(r="function"==typeof(i=function(e){"use strict";if(!e.ui||!e.ui.fancytree){var t,n,i=null,s=new RegExp(/\.|\//),r=/[&<>"'\/]/g,o=/[<>"'\/]/g,a={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},u={16:!0,17:!0,18:!0},l={8:"backspace",9:"tab",10:"return",13:"return",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",59:";",61:"=",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},d={16:"shift",17:"ctrl",18:"alt",91:"meta",93:"meta"},c={0:"",1:"left",2:"middle",3:"right"},h="active expanded focus folder lazy radiogroup selected unselectable unselectableIgnore".split(" "),p={},f="columns types".split(" "),m="checkbox expanded extraClasses folder icon iconTooltip key lazy partsel radiogroup refKey selected statusNodeType title tooltip type unselectable unselectableIgnore unselectableStatus".split(" "),g={},v={},y={active:!0,children:!0,data:!0,focus:!0};for(t=0;t<h.length;t++)p[h[t]]=!0;for(t=0;t<m.length;t++)n=m[t],g[n]=!0,n!==n.toLowerCase()&&(v[n.toLowerCase()]=n);return _(e.ui,"Fancytree requires jQuery UI (http://jqueryui.com)"),Date.now||(Date.now=function(){return(new Date).getTime()}),L.prototype={_findDirectChild:function(e){var t,n,i=this.children;if(i)if("string"==typeof e){for(t=0,n=i.length;t<n;t++)if(i[t].key===e)return i[t]}else{if("number"==typeof e)return this.children[e];if(e.parent===this)return e}return null},_setChildren:function(e){_(e&&(!this.children||0===this.children.length),"only init supported"),this.children=[];for(var t=0,n=e.length;t<n;t++)this.children.push(new L(this,e[t]));this.tree._callHook("treeStructureChanged",this.tree,"setChildren")},addChildren:function(t,n){var i,s,r,o,a=this.getFirstChild(),u=this.getLastChild(),l=[];for(e.isPlainObject(t)&&(t=[t]),this.children||(this.children=[]),i=0,s=t.length;i<s;i++)l.push(new L(this,t[i]));if(o=l[0],null==n?this.children=this.children.concat(l):(n=this._findDirectChild(n),_((r=e.inArray(n,this.children))>=0,"insertBefore must be an existing child"),this.children.splice.apply(this.children,[r,0].concat(l))),a&&!n){for(i=0,s=l.length;i<s;i++)l[i].render();a!==this.getFirstChild()&&a.renderStatus(),u!==this.getLastChild()&&u.renderStatus()}else(!this.parent||this.parent.ul||this.tr)&&this.render();return 3===this.tree.options.selectMode&&this.fixSelection3FromEndNodes(),this.triggerModifyChild("add",1===l.length?l[0]:null),o},addClass:function(e){return this.toggleClass(e,!0)},addNode:function(e,t){switch(void 0!==t&&"over"!==t||(t="child"),t){case"after":return this.getParent().addChildren(e,this.getNextSibling());case"before":return this.getParent().addChildren(e,this);case"firstChild":var n=this.children?this.children[0]:null;return this.addChildren(e,n);case"child":case"over":return this.addChildren(e)}_(!1,"Invalid mode: "+t)},addPagingNode:function(t,n){var i,s;if(n=n||"child",!1!==t)return t=e.extend({title:this.tree.options.strings.moreData,statusNodeType:"paging",icon:!1},t),this.partload=!0,this.addNode(t,n);for(i=this.children.length-1;i>=0;i--)"paging"===(s=this.children[i]).statusNodeType&&this.removeChild(s);this.partload=!1},appendSibling:function(e){return this.addNode(e,"after")},applyPatch:function(t){if(null===t)return this.remove(),C(this);var n,i,s={children:!0,expanded:!0,parent:!0};for(n in t)t.hasOwnProperty(n)&&(i=t[n],s[n]||e.isFunction(i)||(g[n]?this[n]=i:this.data[n]=i));return t.hasOwnProperty("children")&&(this.removeChildren(),t.children&&this._setChildren(t.children)),this.isVisible()&&(this.renderTitle(),this.renderStatus()),t.hasOwnProperty("expanded")?this.setExpanded(t.expanded):C(this)},collapseSiblings:function(){return this.tree._callHook("nodeCollapseSiblings",this)},copyTo:function(e,t,n){return e.addNode(this.toDict(!0,n),t)},countChildren:function(e){var t,n,i,s=this.children;if(!s)return 0;if(i=s.length,!1!==e)for(t=0,n=i;t<n;t++)i+=s[t].countChildren();return i},debug:function(e){this.tree.options.debugLevel>=4&&(Array.prototype.unshift.call(arguments,this.toString()),w("log",arguments))},discard:function(){return this.warn("FancytreeNode.discard() is deprecated since 2014-02-16. Use .resetLazy() instead."),this.resetLazy()},discardMarkup:function(e){var t=e?"nodeRemoveMarkup":"nodeRemoveChildMarkup";this.tree._callHook(t,this)},error:function(e){this.tree.options.debugLevel>=1&&(Array.prototype.unshift.call(arguments,this.toString()),w("error",arguments))},findAll:function(t){t=e.isFunction(t)?t:j(t);var n=[];return this.visit(function(e){t(e)&&n.push(e)}),n},findFirst:function(t){t=e.isFunction(t)?t:j(t);var n=null;return this.visit(function(e){if(t(e))return n=e,!1}),n},findRelatedNode:function(e,t){return this.tree.findRelatedNode(this,e,t)},_changeSelectStatusAttrs:function(e){var t=!1,n=this.tree.options,s=i.evalOption("unselectable",this,this,n,!1),r=i.evalOption("unselectableStatus",this,this,n,void 0);switch(s&&null!=r&&(e=r),e){case!1:t=this.selected||this.partsel,this.selected=!1,this.partsel=!1;break;case!0:t=!this.selected||!this.partsel,this.selected=!0,this.partsel=!0;break;case void 0:t=this.selected||!this.partsel,this.selected=!1,this.partsel=!0;break;default:_(!1,"invalid state: "+e)}return t&&this.renderStatus(),t},fixSelection3AfterClick:function(e){var t=this.isSelected();this.visit(function(e){if(e._changeSelectStatusAttrs(t),e.radiogroup)return"skip"}),this.fixSelection3FromEndNodes(e)},fixSelection3FromEndNodes:function(e){var t=this.tree.options;_(3===t.selectMode,"expected selectMode 3"),function e(n){var s,r,o,a,u,l,d,c,h=n.children;if(h&&h.length){for(l=!0,d=!1,s=0,r=h.length;s<r;s++)a=e(o=h[s]),i.evalOption("unselectableIgnore",o,o,t,!1)||(!1!==a&&(d=!0),!0!==a&&(l=!1));u=!!l||!!d&&void 0}else u=null==(c=i.evalOption("unselectableStatus",n,n,t,void 0))?!!n.selected:!!c;return n.partsel&&!n.selected&&n.lazy&&null==n.children&&(u=void 0),n._changeSelectStatusAttrs(u),u}(this),this.visitParents(function(e){var n,s,r,o,a,u=e.children,l=!0,d=!1;for(n=0,s=u.length;n<s;n++)r=u[n],i.evalOption("unselectableIgnore",r,r,t,!1)||(((o=null==(a=i.evalOption("unselectableStatus",r,r,t,void 0))?!!r.selected:!!a)||r.partsel)&&(d=!0),o||(l=!1));o=!!l||!!d&&void 0,e._changeSelectStatusAttrs(o)})},fromDict:function(t){for(var n in t)g[n]?this[n]=t[n]:"data"===n?e.extend(this.data,t.data):e.isFunction(t[n])||y[n]||(this.data[n]=t[n]);t.children&&(this.removeChildren(),this.addChildren(t.children)),this.renderTitle()},getChildren:function(){if(void 0!==this.hasChildren())return this.children},getFirstChild:function(){return this.children?this.children[0]:null},getIndex:function(){return e.inArray(this,this.parent.children)},getIndexHier:function(t,n){t=t||".";var i,s=[];return e.each(this.getParentList(!1,!0),function(e,t){i=""+(t.getIndex()+1),n&&(i=("0000000"+i).substr(-n)),s.push(i)}),s.join(t)},getKeyPath:function(e){var t=this.tree.options.keyPathSeparator;return t+this.getPath(!e,"key",t)},getLastChild:function(){return this.children?this.children[this.children.length-1]:null},getLevel:function(){for(var e=0,t=this.parent;t;)e++,t=t.parent;return e},getNextSibling:function(){if(this.parent){var e,t,n=this.parent.children;for(e=0,t=n.length-1;e<t;e++)if(n[e]===this)return n[e+1]}return null},getParent:function(){return this.parent},getParentList:function(e,t){for(var n=[],i=t?this:this.parent;i;)(e||i.parent)&&n.unshift(i),i=i.parent;return n},getPath:function(t,n,i){t=!1!==t,n=n||"title",i=i||"/";var s,r=[],o=e.isFunction(n);return this.visitParents(function(e){e.parent&&(s=o?n(e):e[n],r.unshift(s))},t),r.join(i)},getPrevSibling:function(){if(this.parent){var e,t,n=this.parent.children;for(e=1,t=n.length;e<t;e++)if(n[e]===this)return n[e-1]}return null},getSelectedNodes:function(e){var t=[];return this.visit(function(n){if(n.selected&&(t.push(n),!0===e))return"skip"}),t},hasChildren:function(){if(this.lazy){if(null==this.children)return;if(0===this.children.length)return!1;if(1===this.children.length&&this.children[0].isStatusNode())return;return!0}return!(!this.children||!this.children.length)},hasFocus:function(){return this.tree.hasFocus()&&this.tree.focusNode===this},info:function(e){this.tree.options.debugLevel>=3&&(Array.prototype.unshift.call(arguments,this.toString()),w("info",arguments))},isActive:function(){return this.tree.activeNode===this},isBelowOf:function(e){return this.getIndexHier(".",5)>e.getIndexHier(".",5)},isChildOf:function(e){return this.parent&&this.parent===e},isDescendantOf:function(t){if(!t||t.tree!==this.tree)return!1;for(var n=this.parent;n;){if(n===t)return!0;n===n.parent&&e.error("Recursive parent link: "+n),n=n.parent}return!1},isExpanded:function(){return!!this.expanded},isFirstSibling:function(){var e=this.parent;return!e||e.children[0]===this},isFolder:function(){return!!this.folder},isLastSibling:function(){var e=this.parent;return!e||e.children[e.children.length-1]===this},isLazy:function(){return!!this.lazy},isLoaded:function(){return!this.lazy||void 0!==this.hasChildren()},isLoading:function(){return!!this._isLoading},isRoot:function(){return this.isRootNode()},isPartsel:function(){return!this.selected&&!!this.partsel},isPartload:function(){return!!this.partload},isRootNode:function(){return this.tree.rootNode===this},isSelected:function(){return!!this.selected},isStatusNode:function(){return!!this.statusNodeType},isPagingNode:function(){return"paging"===this.statusNodeType},isTopLevel:function(){return this.tree.rootNode===this.parent},isUndefined:function(){return void 0===this.hasChildren()},isVisible:function(){var e,t,n=this.tree.enableFilter,i=this.getParentList(!1,!1);if(n&&!this.match&&!this.subMatchCount)return this.debug("isVisible: HIDDEN ("+n+", "+this.match+", "+this.match+")"),!1;for(e=0,t=i.length;e<t;e++)if(!i[e].expanded)return this.debug("isVisible: HIDDEN (parent collapsed)"),!1;return this.debug("isVisible: VISIBLE"),!0},lazyLoad:function(e){return this.warn("FancytreeNode.lazyLoad() is deprecated since 2014-02-16. Use .load() instead."),this.load(e)},load:function(e){var t,n,i=this,s=this.isExpanded();return _(this.isLazy(),"load() requires a lazy node"),e||this.isUndefined()?(this.isLoaded()&&this.resetLazy(),!1===(n=this.tree._triggerNodeEvent("lazyLoad",this))?C(this):(_("boolean"!=typeof n,"lazyLoad event must return source in data.result"),t=this.tree._callHook("nodeLoadChildren",this,n),s?(this.expanded=!0,t.always(function(){i.render()})):t.always(function(){i.renderStatus()}),t)):C(this)},makeVisible:function(t){var n,i=this,s=[],r=new e.Deferred,o=this.getParentList(!1,!1),a=o.length,u=!(t&&!0===t.noAnimation),l=!(t&&!1===t.scrollIntoView);for(n=a-1;n>=0;n--)s.push(o[n].setExpanded(!0,t));return e.when.apply(e,s).done(function(){l?i.scrollIntoView(u).done(function(){r.resolve()}):r.resolve()}),r.promise()},moveTo:function(t,n,i){void 0===n||"over"===n?n="child":"firstChild"===n&&(t.children&&t.children.length?(n="before",t=t.children[0]):n="child");var s,r=this.tree,o=this.parent,a="child"===n?t:t.parent;if(this!==t){if(this.parent?a.isDescendantOf(this)&&e.error("Cannot move a node to its own descendant"):e.error("Cannot move system root"),a!==o&&o.triggerModifyChild("remove",this),1===this.parent.children.length){if(this.parent===a)return;this.parent.children=this.parent.lazy?[]:null,this.parent.expanded=!1}else _((s=e.inArray(this,this.parent.children))>=0,"invalid source parent"),this.parent.children.splice(s,1);if(this.parent=a,a.hasChildren())switch(n){case"child":a.children.push(this);break;case"before":_((s=e.inArray(t,a.children))>=0,"invalid target parent"),a.children.splice(s,0,this);break;case"after":_((s=e.inArray(t,a.children))>=0,"invalid target parent"),a.children.splice(s+1,0,this);break;default:e.error("Invalid mode "+n)}else a.children=[this];i&&t.visit(i,!0),a===o?a.triggerModifyChild("move",this):a.triggerModifyChild("add",this),r!==t.tree&&(this.warn("Cross-tree moveTo is experimental!"),this.visit(function(e){e.tree=t.tree},!0)),r._callHook("treeStructureChanged",r,"moveTo"),o.isDescendantOf(a)||o.render(),a.isDescendantOf(o)||a===o||a.render()}},navigate:function(t,n){var i,s=e.ui.keyCode;switch(t){case"left":case s.LEFT:if(this.expanded)return this.setExpanded(!1);break;case"right":case s.RIGHT:if(!this.expanded&&(this.children||this.lazy))return this.setExpanded()}if(i=this.findRelatedNode(t)){try{i.makeVisible({scrollIntoView:!1})}catch(e){}return!1===n?i.setFocus():i.setActive()}return this.warn("Could not find related node '"+t+"'."),C()},remove:function(){return this.parent.removeChild(this)},removeChild:function(e){return this.tree._callHook("nodeRemoveChild",this,e)},removeChildren:function(){return this.tree._callHook("nodeRemoveChildren",this)},removeClass:function(e){return this.toggleClass(e,!1)},render:function(e,t){return this.tree._callHook("nodeRender",this,e,t)},renderTitle:function(){return this.tree._callHook("nodeRenderTitle",this)},renderStatus:function(){return this.tree._callHook("nodeRenderStatus",this)},replaceWith:function(n){var i,s=this.parent,r=e.inArray(this,s.children),o=this;return _(this.isPagingNode(),"replaceWith() currently requires a paging status node"),(i=this.tree._callHook("nodeLoadChildren",this,n)).done(function(e){var n=o.children;for(t=0;t<n.length;t++)n[t].parent=s;s.children.splice.apply(s.children,[r+1,0].concat(n)),o.children=null,o.remove(),s.render()}).fail(function(){o.setExpanded()}),i},resetLazy:function(){this.removeChildren(),this.expanded=!1,this.lazy=!0,this.children=void 0,this.renderStatus()},scheduleAction:function(t,n){this.tree.timer&&(clearTimeout(this.tree.timer),this.tree.debug("clearTimeout(%o)",this.tree.timer)),this.tree.timer=null;var i=this;switch(t){case"cancel":break;case"expand":this.tree.timer=setTimeout(function(){i.tree.debug("setTimeout: trigger expand"),i.setExpanded(!0)},n);break;case"activate":this.tree.timer=setTimeout(function(){i.tree.debug("setTimeout: trigger activate"),i.setActive(!0)},n);break;default:e.error("Invalid mode "+t)}},scrollIntoView:function(t,n){if(void 0!==n&&(i=n).tree&&void 0!==i.statusNodeType)throw Error("scrollIntoView() with 'topNode' option is deprecated since 2014-05-08. Use 'options.topNode' instead.");var i,s=e.extend({effects:!0===t?{duration:200,queue:!1}:t,scrollOfs:this.tree.options.scrollOfs,scrollParent:this.tree.options.scrollParent,topNode:null},n),r=s.scrollParent,o=this.tree.$container,a=o.css("overflow-y");r?r.jquery||(r=e(r)):r=this.tree.tbody?o.scrollParent():"scroll"===a||"auto"===a?o:o.scrollParent(),r[0]!==document&&r[0]!==document.body||(this.debug("scrollIntoView(): normalizing scrollParent to 'window':",r[0]),r=e(window));var u,l,d,c=new e.Deferred,h=this,p=e(this.span).height(),f=s.scrollOfs.top||0,m=s.scrollOfs.bottom||0,g=r.height(),v=r.scrollTop(),y=r,w=r[0]===window,b=s.topNode||null,x=null;return this.isVisible()?(w?(l=e(this.span).offset().top,u=b&&b.span?e(b.span).offset().top:0,y=e("html,body")):(_(r[0]!==document&&r[0]!==document.body,"scrollParent should be a simple element or `window`, not document or body."),d=r.offset().top,l=e(this.span).offset().top-d+v,u=b?e(b.span).offset().top-d+v:0,g-=Math.max(0,r.innerHeight()-r[0].clientHeight)),l<v+f?x=l-f:l+p>v+g-m&&(x=l+p-g+m,b&&(_(b.isRootNode()||b.isVisible(),"topNode must be visible"),u<x&&(x=u-f))),null===x?c.resolveWith(this):s.effects?(s.effects.complete=function(){c.resolveWith(h)},y.stop(!0).animate({scrollTop:x},s.effects)):(y[0].scrollTop=x,c.resolveWith(this)),c.promise()):(this.warn("scrollIntoView(): node is invisible."),C())},setActive:function(e,t){return this.tree._callHook("nodeSetActive",this,e,t)},setExpanded:function(e,t){return this.tree._callHook("nodeSetExpanded",this,e,t)},setFocus:function(e){return this.tree._callHook("nodeSetFocus",this,e)},setSelected:function(e,t){return this.tree._callHook("nodeSetSelected",this,e,t)},setStatus:function(e,t,n){return this.tree._callHook("nodeSetStatus",this,e,t,n)},setTitle:function(e){this.title=e,this.renderTitle(),this.triggerModify("rename")},sortChildren:function(e,t){var n,i,s=this.children;if(s){if(e=e||function(e,t){var n=e.title.toLowerCase(),i=t.title.toLowerCase();return n===i?0:n>i?1:-1},s.sort(e),t)for(n=0,i=s.length;n<i;n++)s[n].children&&s[n].sortChildren(e,"$norender$");"$norender$"!==t&&this.render(),this.triggerModifyChild("sort")}},toDict:function(t,n){var i,s,r,o={},a=this;if(e.each(m,function(e,t){(a[t]||!1===a[t])&&(o[t]=a[t])}),e.isEmptyObject(this.data)||(o.data=e.extend({},this.data),e.isEmptyObject(o.data)&&delete o.data),n&&n(o,a),t&&this.hasChildren())for(o.children=[],i=0,s=this.children.length;i<s;i++)(r=this.children[i]).isStatusNode()||o.children.push(r.toDict(!0,n));return o},toggleClass:function(t,n){var i,s,r=t.match(/\S+/g)||[],o=0,a=!1,u=this[this.tree.statusClassPropName],l=" "+(this.extraClasses||"")+" ";for(u&&e(u).toggleClass(t,n);i=r[o++];)if(s=l.indexOf(" "+i+" ")>=0,n=void 0===n?!s:!!n)s||(l+=i+" ",a=!0);else for(;l.indexOf(" "+i+" ")>-1;)l=l.replace(" "+i+" "," ");return this.extraClasses=e.trim(l),a},toggleExpanded:function(){return this.tree._callHook("nodeToggleExpanded",this)},toggleSelected:function(){return this.tree._callHook("nodeToggleSelected",this)},toString:function(){return"FancytreeNode@"+this.key+"[title='"+this.title+"']"},triggerModifyChild:function(t,n,i){var s,r=this.tree.options.modifyChild;r&&(n&&n.parent!==this&&e.error("childNode "+n+" is not a child of "+this),s={node:this,tree:this.tree,operation:t,childNode:n||null},i&&e.extend(s,i),r({type:"modifyChild"},s))},triggerModify:function(e,t){this.parent.triggerModifyChild(e,this,t)},visit:function(e,t){var n,i,s=!0,r=this.children;if(!0===t&&(!1===(s=e(this))||"skip"===s))return s;if(r)for(n=0,i=r.length;n<i&&!1!==(s=r[n].visit(e,!0));n++);return s},visitAndLoad:function(t,n,i){var s,r,o,a=this;return!t||!0!==n||!1!==(r=t(a))&&"skip"!==r?a.children||a.lazy?(s=new e.Deferred,o=[],a.load().done(function(){for(var n=0,i=a.children.length;n<i;n++){if(!1===(r=a.children[n].visitAndLoad(t,!0,!0))){s.reject();break}"skip"!==r&&o.push(r)}e.when.apply(this,o).then(function(){s.resolve()})}),s.promise()):C():i?r:C()},visitParents:function(e,t){if(t&&!1===e(this))return!1;for(var n=this.parent;n;){if(!1===e(n))return!1;n=n.parent}return!0},visitSiblings:function(e,t){var n,i,s,r=this.parent.children;for(n=0,i=r.length;n<i;n++)if(s=r[n],(t||s!==this)&&!1===e(s))return!1;return!0},warn:function(e){this.tree.options.debugLevel>=2&&(Array.prototype.unshift.call(arguments,this.toString()),w("warn",arguments))}},D.prototype={_makeHookContext:function(t,n,i){var s,r;return void 0!==t.node?(n&&t.originalEvent!==n&&e.error("invalid args"),s=t):t.tree?s={node:t,tree:r=t.tree,widget:r.widget,options:r.widget.options,originalEvent:n,typeInfo:r.types[t.type]||{}}:t.widget?s={node:null,tree:t,widget:t.widget,options:t.widget.options,originalEvent:n}:e.error("invalid args"),i&&e.extend(s,i),s},_callHook:function(t,n,i){var s=this._makeHookContext(n),r=this[t],o=Array.prototype.slice.call(arguments,2);return e.isFunction(r)||e.error("_callHook('"+t+"') is not a function"),o.unshift(s),r.apply(this,o)},_setExpiringValue:function(e,t,n){this._tempCache[e]={value:t,expire:Date.now()+(+n||50)}},_getExpiringValue:function(e){var t=this._tempCache[e];return t&&t.expire>Date.now()?t.value:(delete this._tempCache[e],null)},_requireExtension:function(t,n,i,s){null!=i&&(i=!!i);var r=this._local.name,o=this.options.extensions,a=e.inArray(t,o)<e.inArray(r,o),u=n&&null==this.ext[t],l=!u&&null!=i&&i!==a;return _(r&&r!==t,"invalid or same name '"+r+"' (require yourself?)"),!u&&!l||(s||(u||n?(s="'"+r+"' extension requires '"+t+"'",l&&(s+=" to be registered "+(i?"before":"after")+" itself")):s="If used together, `"+t+"` must be registered "+(i?"before":"after")+" `"+r+"`"),e.error(s),!1)},activateKey:function(e,t){var n=this.getNodeByKey(e);return n?n.setActive(!0,t):this.activeNode&&this.activeNode.setActive(!1,t),n},addPagingNode:function(e,t){return this.rootNode.addPagingNode(e,t)},applyPatch:function(t){var n,i,s,r,o,a,u=t.length,l=[];for(i=0;i<u;i++)_(2===(s=t[i]).length,"patchList must be an array of length-2-arrays"),r=s[0],o=s[1],(a=null===r?this.rootNode:this.getNodeByKey(r))?(n=new e.Deferred,l.push(n),a.applyPatch(o).always(T(n,a))):this.warn("could not find node with key '"+r+"'");return e.when.apply(e,l).promise()},clear:function(e){this._callHook("treeClear",this)},count:function(){return this.rootNode.countChildren()},debug:function(e){this.options.debugLevel>=4&&(Array.prototype.unshift.call(arguments,this.toString()),w("log",arguments))},enable:function(e){!1===e?this.widget.disable():this.widget.enable()},enableUpdate:function(e){return e=!1!==e,!!this._enableUpdate==!!e?e:(this._enableUpdate=e,e?(this.debug("enableUpdate(true): redraw "),this._callHook("treeStructureChanged",this,"enableUpdate"),this.render()):this.debug("enableUpdate(false)..."),!e)},error:function(e){this.options.debugLevel>=1&&(Array.prototype.unshift.call(arguments,this.toString()),w("error",arguments))},expandAll:function(e,t){var n=this.enableUpdate(!1);e=!1!==e,this.visit(function(n){!1!==n.hasChildren()&&n.isExpanded()!==e&&n.setExpanded(e,t)}),this.enableUpdate(n)},findAll:function(e){return this.rootNode.findAll(e)},findFirst:function(e){return this.rootNode.findFirst(e)},findNextNode:function(e,t){var n,i=null,s=this.getFirstChild();function r(n){if(e(n)&&(i=n),i||n===t)return!1}return e="string"==typeof e?(n=new RegExp("^"+e,"i"),function(e){return n.test(e.title)}):e,t=t||s,this.visitRows(r,{start:t,includeSelf:!1}),i||t===s||this.visitRows(r,{start:s,includeSelf:!0}),i},findRelatedNode:function(t,n,i){var s=null,r=e.ui.keyCode;switch(n){case"parent":case r.BACKSPACE:t.parent&&t.parent.parent&&(s=t.parent);break;case"first":case r.HOME:this.visit(function(e){if(e.isVisible())return s=e,!1});break;case"last":case r.END:this.visit(function(e){e.isVisible()&&(s=e)});break;case"left":case r.LEFT:t.expanded?t.setExpanded(!1):t.parent&&t.parent.parent&&(s=t.parent);break;case"right":case r.RIGHT:t.expanded||!t.children&&!t.lazy?t.children&&t.children.length&&(s=t.children[0]):(t.setExpanded(),s=t);break;case"up":case r.UP:this.visitRows(function(e){return s=e,!1},{start:t,reverse:!0,includeSelf:!1});break;case"down":case r.DOWN:this.visitRows(function(e){return s=e,!1},{start:t,includeSelf:!1});break;default:this.tree.warn("Unknown relation '"+n+"'.")}return s},generateFormElements:function(t,n,i){i=i||{};var s,r="string"==typeof t?t:"ft_"+this._id+"[]",o="string"==typeof n?n:"ft_"+this._id+"_active",a="fancytree_result_"+this._id,u=e("#"+a),l=3===this.options.selectMode&&!1!==i.stopOnParents;function d(t){u.append(e("<input>",{type:"checkbox",name:r,value:t.key,checked:!0}))}u.length?u.empty():u=e("<div>",{id:a}).hide().insertAfter(this.$container),!1!==n&&this.activeNode&&u.append(e("<input>",{type:"radio",name:o,value:this.activeNode.key,checked:!0})),i.filter?this.visit(function(e){var t=i.filter(e);if("skip"===t)return t;!1!==t&&d(e)}):!1!==t&&(s=this.getSelectedNodes(l),e.each(s,function(e,t){d(t)}))},getActiveNode:function(){return this.activeNode},getFirstChild:function(){return this.rootNode.getFirstChild()},getFocusNode:function(){return this.focusNode},getOption:function(e){return this.widget.option(e)},getNodeByKey:function(e,t){var n,i;return!t&&(n=document.getElementById(this.options.idPrefix+e))?n.ftnode?n.ftnode:null:(t=t||this.rootNode,i=null,t.visit(function(t){if(t.key===e)return i=t,!1},!0),i)},getRootNode:function(){return this.rootNode},getSelectedNodes:function(e){return this.rootNode.getSelectedNodes(e)},hasFocus:function(){return!!this._hasFocus},info:function(e){this.options.debugLevel>=3&&(Array.prototype.unshift.call(arguments,this.toString()),w("info",arguments))},loadKeyPath:function(t,n){var i,s,r,o=this,a=new e.Deferred,u=this.getRootNode(),l=this.options.keyPathSeparator,d=[],c=e.extend({},n);for("function"==typeof n?i=n:n&&n.callback&&(i=n.callback),c.callback=function(e,t,n){i&&i.call(e,t,n),a.notifyWith(e,[{node:t,status:n}])},null==c.matchKey&&(c.matchKey=function(e,t){return e.key===t}),e.isArray(t)||(t=[t]),s=0;s<t.length;s++)(r=t[s]).charAt(0)===l&&(r=r.substr(1)),d.push(r.split(l));return setTimeout(function(){o._loadKeyPathImpl(a,c,u,d).done(function(){a.resolve()})},0),a.promise()},_loadKeyPathImpl:function(t,n,i,s){var r,o,a,u,l,d,c,h,p,f,m=this;function g(e,t){var i,s,r=e.children;if(r)for(i=0,s=r.length;i<s;i++)if(n.matchKey(r[i],t))return r[i];return null}for(c={},o=0;o<s.length;o++)for(p=s[o],h=i;p.length;){if(a=p.shift(),!(u=g(h,a))){this.warn("loadKeyPath: key not found: "+a+" (parent: "+h+")"),n.callback(this,a,"error");break}if(0===p.length){n.callback(this,u,"ok");break}if(u.lazy&&void 0===u.hasChildren()){n.callback(this,u,"loaded"),c[a=u.key]?c[a].pathSegList.push(p):c[a]={parent:u,pathSegList:[p]};break}n.callback(this,u,"loaded"),h=u}function v(e,t,i){n.callback(m,t,"loading"),t.load().done(function(){m._loadKeyPathImpl.call(m,e,n,t,i).always(T(e,m))}).fail(function(i){m.warn("loadKeyPath: error loading lazy "+t),n.callback(m,u,"error"),e.rejectWith(m)})}for(l in r=[],c)c.hasOwnProperty(l)&&(d=c[l],f=new e.Deferred,r.push(f),v(f,d.parent,d.pathSegList));return e.when.apply(e,r).promise()},reactivate:function(e){var t,n=this.activeNode;return n?(this.activeNode=null,t=n.setActive(!0,{noFocus:!0}),e&&n.setFocus(),t):C()},reload:function(e){return this._callHook("treeClear",this),this._callHook("treeLoad",this,e)},render:function(e,t){return this.rootNode.render(e,t)},selectAll:function(e){this.visit(function(t){t.setSelected(e)})},setFocus:function(e){return this._callHook("treeSetFocus",this,e)},setOption:function(e,t){return this.widget.option(e,t)},toDict:function(e,t){var n=this.rootNode.toDict(!0,t);return e?n:n.children},toString:function(){return"Fancytree@"+this._id},_triggerNodeEvent:function(e,t,n,i){var s=this._makeHookContext(t,n,i),r=this.widget._trigger(e,n,s);return!1!==r&&void 0!==s.result?s.result:r},_triggerTreeEvent:function(e,t,n){var i=this._makeHookContext(this,t,n),s=this.widget._trigger(e,t,i);return!1!==s&&void 0!==i.result?i.result:s},visit:function(e){return this.rootNode.visit(e,!1)},visitRows:function(e,t){if(!this.rootNode.children)return!1;if(t&&t.reverse)return delete t.reverse,this._visitRowsUp(e,t);var n,i,s,r=0,o=!1===(t=t||{}).includeSelf,a=!!t.includeHidden,u=!a&&this.enableFilter,l=t.start||this.rootNode.children[0];for(i=l.parent;i;){for(n=(s=i.children).indexOf(l)+r;n<s.length;n++)if(l=s[n],!u||l.match||l.subMatchCount){if(!o&&!1===e(l))return!1;if(o=!1,l.children&&l.children.length&&(a||l.expanded)&&!1===l.visit(function(t){return!u||t.match||t.subMatchCount?!1!==e(t)&&(a||!t.children||t.expanded?void 0:"skip"):"skip"},!1))return!1}l=i,i=i.parent,r=1}return!0},_visitRowsUp:function(e,t){for(var n,i,s,r=!!t.includeHidden,o=t.start||this.rootNode.children[0];;){if((n=(s=o.parent).children)[0]===o){if(!(o=s).parent)break;n=s.children}else for(i=n.indexOf(o),o=n[i-1];(r||o.expanded)&&o.children&&o.children.length;)s=o,o=(n=o.children)[n.length-1];if((r||o.isVisible())&&!1===e(o))return!1}},warn:function(e){this.options.debugLevel>=2&&(Array.prototype.unshift.call(arguments,this.toString()),w("warn",arguments))}},e.extend(D.prototype,{nodeClick:function(e){var t,n,i=e.targetType,s=e.node;if("expander"===i){if(s.isLoading())return void s.debug("Got 2nd click while loading: ignored");this._callHook("nodeToggleExpanded",e)}else if("checkbox"===i)this._callHook("nodeToggleSelected",e),e.options.focusOnSelect&&this._callHook("nodeSetFocus",e,!0);else{if(n=!1,t=!0,s.folder)switch(e.options.clickFolderMode){case 2:n=!0,t=!1;break;case 3:t=!0,n=!0}t&&(this.nodeSetFocus(e),this._callHook("nodeSetActive",e,!0)),n&&this._callHook("nodeToggleExpanded",e)}},nodeCollapseSiblings:function(e,t){var n,i,s,r=e.node;if(r.parent)for(i=0,s=(n=r.parent.children).length;i<s;i++)n[i]!==r&&n[i].expanded&&this._callHook("nodeSetExpanded",n[i],!1,t)},nodeDblclick:function(e){"title"===e.targetType&&4===e.options.clickFolderMode&&this._callHook("nodeToggleExpanded",e),"title"===e.targetType&&e.originalEvent.preventDefault()},nodeKeydown:function(t){var n,s,r,o=t.originalEvent,a=t.node,u=t.tree,c=t.options,h=o.which,p=o.key||String.fromCharCode(h),f=!!(o.altKey||o.ctrlKey||o.metaKey),m=!d[h]&&!l[h]&&!f,g=e(o.target),v=!0,y=!(o.ctrlKey||!c.autoActivate);if(a||(r=this.getActiveNode()||this.getFirstChild())&&(r.setFocus(),(a=t.node=this.focusNode).debug("Keydown force focus on active node")),c.quicksearch&&m&&!g.is(":input:enabled"))return(s=Date.now())-u.lastQuicksearchTime>500&&(u.lastQuicksearchTerm=""),u.lastQuicksearchTime=s,u.lastQuicksearchTerm+=p,(n=u.findNextNode(u.lastQuicksearchTerm,u.getActiveNode()))&&n.setActive(),void o.preventDefault();switch(i.eventToString(o)){case"+":case"=":u.nodeSetExpanded(t,!0);break;case"-":u.nodeSetExpanded(t,!1);break;case"space":a.isPagingNode()?u._triggerNodeEvent("clickPaging",t,o):i.evalOption("checkbox",a,a,c,!1)?u.nodeToggleSelected(t):u.nodeSetActive(t,!0);break;case"return":u.nodeSetActive(t,!0);break;case"home":case"end":case"backspace":case"left":case"right":case"up":case"down":a.navigate(o.which,y);break;default:v=!1}v&&o.preventDefault()},nodeLoadChildren:function(t,n){var i,s,r,o,a=t.tree,u=t.node,l=Date.now();return e.isFunction(n)&&(n=n.call(a,{type:"source"},t),_(!e.isFunction(n),"source callback must not return another function")),n.url&&(u._requestId&&u.warn("Recursive load request #"+l+" while #"+u._requestId+" is pending."),i=e.extend({},t.options.ajax,n),u._requestId=l,i.debugDelay?(s=i.debugDelay,delete i.debugDelay,e.isArray(s)&&(s=s[0]+Math.random()*(s[1]-s[0])),u.warn("nodeLoadChildren waiting debugDelay "+Math.round(s)+" ms ..."),r=e.Deferred(function(t){setTimeout(function(){e.ajax(i).done(function(){t.resolveWith(this,arguments)}).fail(function(){t.rejectWith(this,arguments)})},s)})):r=e.ajax(i),n=new e.Deferred,r.done(function(i,s,r){var o,d;if("json"!==this.dataType&&"jsonp"!==this.dataType||"string"!=typeof i||e.error("Ajax request returned a string (did you get the JSON dataType wrong?)."),u._requestId&&u._requestId>l)n.rejectWith(this,["$recursive_request"]);else{if(t.options.postProcess){try{d=a._triggerNodeEvent("postProcess",t,t.originalEvent,{response:i,error:null,dataType:this.dataType})}catch(e){d={error:e,message:""+e,details:"postProcess failed"}}if(d.error)return o=e.isPlainObject(d.error)?d.error:{message:d.error},o=a._makeHookContext(u,null,o),void n.rejectWith(this,[o]);(e.isArray(d)||e.isPlainObject(d)&&e.isArray(d.children))&&(i=d)}else i&&i.hasOwnProperty("d")&&t.options.enableAspx&&(i="string"==typeof i.d?e.parseJSON(i.d):i.d);n.resolveWith(this,[i])}}).fail(function(e,t,i){var s=a._makeHookContext(u,null,{error:e,args:Array.prototype.slice.call(arguments),message:i,details:e.status+": "+i});n.rejectWith(this,[s])})),e.isFunction(n.then)&&e.isFunction(n.catch)&&(r=n,n=new e.Deferred,r.then(function(e){n.resolve(e)},function(e){n.reject(e)})),e.isFunction(n.promise)?(a.nodeSetStatus(t,"loading"),n.done(function(e){a.nodeSetStatus(t,"ok"),u._requestId=null}).fail(function(e){var n;"$recursive_request"!==e?(e.node&&e.error&&e.message?n=e:"[object Object]"===(n=a._makeHookContext(u,null,{error:e,args:Array.prototype.slice.call(arguments),message:e?e.message||e.toString():""})).message&&(n.message=""),u.warn("Load children failed ("+n.message+")",n),!1!==a._triggerNodeEvent("loadError",n,null)&&a.nodeSetStatus(t,"error",n.message,n.details)):u.warn("Ignored response for obsolete load request #"+l+" (expected #"+u._requestId+")")})):t.options.postProcess&&(o=a._triggerNodeEvent("postProcess",t,t.originalEvent,{response:n,error:null,dataType:typeof n}),(e.isArray(o)||e.isPlainObject(o)&&e.isArray(o.children))&&(n=o)),e.when(n).done(function(n){var i,s;e.isPlainObject(n)&&(_(u.isRootNode(),"source may only be an object for root nodes (expecting an array of child objects otherwise)"),_(e.isArray(n.children),"if an object is passed as source, it must contain a 'children' array (all other properties are added to 'tree.data')"),i=n,n=n.children,delete i.children,e.each(f,function(e,t){void 0!==i[t]&&(a[t]=i[t],delete i[t])}),e.extend(a.data,i)),_(e.isArray(n),"expected array of children"),u._setChildren(n),a.options.nodata&&0===n.length&&(e.isFunction(a.options.nodata)?s=a.options.nodata.call(a,{type:"nodata"},t):!0===a.options.nodata&&u.isRootNode()?s=a.options.strings.nodata:"string"==typeof a.options.nodata&&u.isRootNode()&&(s=a.options.nodata),s&&u.setStatus("nodata",s)),a._triggerNodeEvent("loadChildren",u)})},nodeLoadKeyPath:function(e,t){},nodeRemoveChild:function(t,n){var i,s=t.node,r=e.extend({},t,{node:n}),o=s.children;if(1===o.length)return _(n===o[0],"invalid single child"),this.nodeRemoveChildren(t);this.activeNode&&(n===this.activeNode||this.activeNode.isDescendantOf(n))&&this.activeNode.setActive(!1),this.focusNode&&(n===this.focusNode||this.focusNode.isDescendantOf(n))&&(this.focusNode=null),this.nodeRemoveMarkup(r),this.nodeRemoveChildren(r),_((i=e.inArray(n,o))>=0,"invalid child"),s.triggerModifyChild("remove",n),n.visit(function(e){e.parent=null},!0),this._callHook("treeRegisterNode",this,!1,n),o.splice(i,1)},nodeRemoveChildMarkup:function(t){var n=t.node;n.ul&&(n.isRootNode()?e(n.ul).empty():(e(n.ul).remove(),n.ul=null),n.visit(function(e){e.li=e.ul=null}))},nodeRemoveChildren:function(e){var t=e.tree,n=e.node;n.children&&(this.activeNode&&this.activeNode.isDescendantOf(n)&&this.activeNode.setActive(!1),this.focusNode&&this.focusNode.isDescendantOf(n)&&(this.focusNode=null),this.nodeRemoveChildMarkup(e),n.triggerModifyChild("remove",null),n.visit(function(e){e.parent=null,t._callHook("treeRegisterNode",t,!1,e)}),n.lazy?n.children=[]:n.children=null,n.isRootNode()||(n.expanded=!1),this.nodeRenderStatus(e))},nodeRemoveMarkup:function(t){var n=t.node;n.li&&(e(n.li).remove(),n.li=null),this.nodeRemoveChildMarkup(t)},nodeRender:function(t,n,i,s,r){var o,a,u,l,d,c,h,p=t.node,f=t.tree,m=t.options,g=m.aria,v=!1,y=p.parent,w=!y,b=p.children,x=null;if(!1!==f._enableUpdate&&(w||y.ul)){if(_(w||y.ul,"parent UL must exist"),w||(p.li&&(n||p.li.parentNode!==p.parent.ul)&&(p.li.parentNode===p.parent.ul?x=p.li.nextSibling:this.debug("Unlinking "+p+" (must be child of "+p.parent+")"),this.nodeRemoveMarkup(t)),p.li?this.nodeRenderStatus(t):(v=!0,p.li=document.createElement("li"),p.li.ftnode=p,p.key&&m.generateIds&&(p.li.id=m.idPrefix+p.key),p.span=document.createElement("span"),p.span.className="fancytree-node",g&&!p.tr&&e(p.li).attr("role","treeitem"),p.li.appendChild(p.span),this.nodeRenderTitle(t),m.createNode&&m.createNode.call(f,{type:"createNode"},t)),m.renderNode&&m.renderNode.call(f,{type:"renderNode"},t)),b){if(w||p.expanded||!0===i){for(p.ul||(p.ul=document.createElement("ul"),(!0!==s||r)&&p.expanded||(p.ul.style.display="none"),g&&e(p.ul).attr("role","group"),p.li?p.li.appendChild(p.ul):p.tree.$div.append(p.ul)),l=0,d=b.length;l<d;l++)h=e.extend({},t,{node:b[l]}),this.nodeRender(h,n,i,!1,!0);for(o=p.ul.firstChild;o;)(u=o.ftnode)&&u.parent!==p?(p.debug("_fixParent: remove missing "+u,o),c=o.nextSibling,o.parentNode.removeChild(o),o=c):o=o.nextSibling;for(o=p.ul.firstChild,l=0,d=b.length-1;l<d;l++)(a=b[l])===(u=o.ftnode)?o=o.nextSibling:p.ul.insertBefore(a.li,u.li)}}else p.ul&&(this.warn("remove child markup for "+p),this.nodeRemoveChildMarkup(t));w||v&&y.ul.insertBefore(p.li,x)}},nodeRenderTitle:function(t,n){var r,o,a,u,l,d,c,h=t.node,p=t.tree,f=t.options,m=f.aria,g=h.getLevel(),v=[];void 0!==n&&(h.title=n),h.span&&!1!==p._enableUpdate&&(l=m&&!1!==h.hasChildren()?" role='button'":"",g<f.minExpandLevel?(h.lazy||(h.expanded=!0),g>1&&v.push("<span "+l+" class='fancytree-expander fancytree-expander-fixed'></span>")):v.push("<span "+l+" class='fancytree-expander'></span>"),(r=i.evalOption("checkbox",h,h,f,!1))&&!h.isStatusNode()&&(l=m?" role='checkbox'":"",o="fancytree-checkbox",("radio"===r||h.parent&&h.parent.radiogroup)&&(o+=" fancytree-radio"),v.push("<span "+l+" class='"+o+"'></span>")),void 0!==h.data.iconClass&&(h.icon?e.error("'iconClass' node option is deprecated since v2.14.0: use 'icon' only instead"):(h.warn("'iconClass' node option is deprecated since v2.14.0: use 'icon' instead"),h.icon=h.data.iconClass)),!1!==(a=i.evalOption("icon",h,h,f,!0))&&(l=m?" role='presentation'":"",c=(c=i.evalOption("iconTooltip",h,h,f,null))?" title='"+E(c)+"'":"","string"==typeof a?s.test(a)?(a="/"===a.charAt(0)?a:(f.imagePath||"")+a,v.push("<img src='"+a+"' class='fancytree-icon'"+c+" alt='' />")):v.push("<span "+l+" class='fancytree-custom-icon "+a+"'"+c+"></span>"):a.text?v.push("<span "+l+" class='fancytree-custom-icon "+(a.addClass||"")+"'"+c+">"+i.escapeHtml(a.text)+"</span>"):a.html?v.push("<span "+l+" class='fancytree-custom-icon "+(a.addClass||"")+"'"+c+">"+a.html+"</span>"):v.push("<span "+l+" class='fancytree-icon'"+c+"></span>")),u="",f.renderTitle&&(u=f.renderTitle.call(p,{type:"renderTitle"},t)||""),u||(!0===(d=i.evalOption("tooltip",h,h,f,null))&&(d=h.title),u="<span class='fancytree-title'"+(d=d?" title='"+E(d)+"'":"")+(f.titlesTabbable?" tabindex='0'":"")+">"+(f.escapeTitles?i.escapeHtml(h.title):h.title)+"</span>"),v.push(u),h.span.innerHTML=v.join(""),this.nodeRenderStatus(t),f.enhanceTitle&&(t.$title=e(">span.fancytree-title",h.span),u=f.enhanceTitle.call(p,{type:"enhanceTitle"},t)||""))},nodeRenderStatus:function(t){var n,s=t.node,r=t.tree,o=t.options,a=s.hasChildren(),u=s.isLastSibling(),l=o.aria,d=o._classNames,c=[],h=s[r.statusClassPropName];h&&!1!==r._enableUpdate&&(l&&(n=e(s.tr||s.li)),c.push(d.node),r.activeNode===s&&c.push(d.active),r.focusNode===s&&c.push(d.focused),s.expanded&&c.push(d.expanded),l&&(!1===a?n.removeAttr("aria-expanded"):n.attr("aria-expanded",Boolean(s.expanded))),s.folder&&c.push(d.folder),!1!==a&&c.push(d.hasChildren),u&&c.push(d.lastsib),s.lazy&&null==s.children&&c.push(d.lazy),s.partload&&c.push(d.partload),s.partsel&&c.push(d.partsel),i.evalOption("unselectable",s,s,o,!1)&&c.push(d.unselectable),s._isLoading&&c.push(d.loading),s._error&&c.push(d.error),s.statusNodeType&&c.push(d.statusNodePrefix+s.statusNodeType),s.selected?(c.push(d.selected),l&&n.attr("aria-selected",!0)):l&&n.attr("aria-selected",!1),s.extraClasses&&c.push(s.extraClasses),!1===a?c.push(d.combinedExpanderPrefix+"n"+(u?"l":"")):c.push(d.combinedExpanderPrefix+(s.expanded?"e":"c")+(s.lazy&&null==s.children?"d":"")+(u?"l":"")),c.push(d.combinedIconPrefix+(s.expanded?"e":"c")+(s.folder?"f":"")),h.className=c.join(" "),s.li&&e(s.li).toggleClass(d.lastsib,u))},nodeSetActive:function(t,n,i){i=i||{};var s,r=t.node,o=t.tree,a=t.options,u=!0===i.noEvents,l=!0===i.noFocus,d=!1!==i.scrollIntoView;return r===o.activeNode==(n=!1!==n)?C(r):n&&!u&&!1===this._triggerNodeEvent("beforeActivate",r,t.originalEvent)?S(r,["rejected"]):(n?(o.activeNode&&(_(o.activeNode!==r,"node was active (inconsistency)"),s=e.extend({},t,{node:o.activeNode}),o.nodeSetActive(s,!1),_(null===o.activeNode,"deactivate was out of sync?")),a.activeVisible&&r.makeVisible({scrollIntoView:d}),o.activeNode=r,o.nodeRenderStatus(t),l||o.nodeSetFocus(t),u||o._triggerNodeEvent("activate",r,t.originalEvent)):(_(o.activeNode===r,"node was not active (inconsistency)"),o.activeNode=null,this.nodeRenderStatus(t),u||t.tree._triggerNodeEvent("deactivate",r,t.originalEvent)),C(r))},nodeSetExpanded:function(t,n,i){i=i||{};var s,r,o,a,u,l,d=t.node,c=t.tree,h=t.options,p=!0===i.noAnimation,f=!0===i.noEvents;if(n=!1!==n,d.expanded&&n||!d.expanded&&!n)return C(d);if(n&&!d.lazy&&!d.hasChildren())return C(d);if(!n&&d.getLevel()<h.minExpandLevel)return S(d,["locked"]);if(!f&&!1===this._triggerNodeEvent("beforeExpand",d,t.originalEvent))return S(d,["rejected"]);if(p||d.isVisible()||(p=i.noAnimation=!0),r=new e.Deferred,n&&!d.expanded&&h.autoCollapse){u=d.getParentList(!1,!0),l=h.autoCollapse;try{for(h.autoCollapse=!1,o=0,a=u.length;o<a;o++)this._callHook("nodeCollapseSiblings",u[o],i)}finally{h.autoCollapse=l}}return r.done(function(){var e=d.getLastChild();n&&h.autoScroll&&!p&&e?e.scrollIntoView(!0,{topNode:d}).always(function(){f||t.tree._triggerNodeEvent(n?"expand":"collapse",t)}):f||t.tree._triggerNodeEvent(n?"expand":"collapse",t)}),s=function(i){var s=h._classNames,r=h.toggleEffect;if(d.expanded=n,c._callHook("treeStructureChanged",t,n?"expand":"collapse"),c._callHook("nodeRender",t,!1,!1,!0),d.ul)if("none"!==d.ul.style.display==!!d.expanded)d.warn("nodeSetExpanded: UL.style.display already set");else{if(r&&!p)return e(d.li).addClass(s.animating),void(e.isFunction(e(d.ul)[r.effect])?(c.debug("use jquery."+r.effect+" method"),e(d.ul)[r.effect]({duration:r.duration,always:function(){e(this).removeClass(s.animating),e(d.li).removeClass(s.animating),i()}})):(e(d.ul).stop(!0,!0),e(d.ul).parent().find(".ui-effects-placeholder").remove(),e(d.ul).toggle(r.effect,r.options,r.duration,function(){e(this).removeClass(s.animating),e(d.li).removeClass(s.animating),i()})));d.ul.style.display=d.expanded||!parent?"":"none"}i()},n&&d.lazy&&void 0===d.hasChildren()?d.load().done(function(){r.notifyWith&&r.notifyWith(d,["loaded"]),s(function(){r.resolveWith(d)})}).fail(function(e){s(function(){r.rejectWith(d,["load failed ("+e+")"])})}):s(function(){r.resolveWith(d)}),r.promise()},nodeSetFocus:function(t,n){var i,s=t.tree,r=t.node,o=s.options,a=!!t.originalEvent&&e(t.originalEvent.target).is(":input");if(n=!1!==n,s.focusNode){if(s.focusNode===r&&n)return;i=e.extend({},t,{node:s.focusNode}),s.focusNode=null,this._triggerNodeEvent("blur",i),this._callHook("nodeRenderStatus",i)}n&&(this.hasFocus()||(r.debug("nodeSetFocus: forcing container focus"),this._callHook("treeSetFocus",t,!0,{calledByNode:!0})),r.makeVisible({scrollIntoView:!1}),s.focusNode=r,o.titlesTabbable&&(a||e(r.span).find(".fancytree-title").focus()),o.aria&&e(s.$container).attr("aria-activedescendant",e(r.tr||r.li).uniqueId().attr("id")),this._triggerNodeEvent("focus",t),document.activeElement===s.$container.get(0)||e(document.activeElement,s.$container).length>=1||e(s.$container).focus(),o.autoScroll&&r.scrollIntoView(),this._callHook("nodeRenderStatus",t))},nodeSetSelected:function(e,t,n){n=n||{};var s=e.node,r=e.tree,o=e.options,a=!0===n.noEvents,u=s.parent;if(t=!1!==t,!i.evalOption("unselectable",s,s,o,!1)){if(s._lastSelectIntent=t,!!s.selected===t&&(3!==o.selectMode||!s.partsel||t))return t;if(!a&&!1===this._triggerNodeEvent("beforeSelect",s,e.originalEvent))return!!s.selected;t&&1===o.selectMode?(r.lastSelectedNode&&r.lastSelectedNode.setSelected(!1),s.selected=t):3!==o.selectMode||!u||u.radiogroup||s.radiogroup?u&&u.radiogroup?s.visitSiblings(function(e){e._changeSelectStatusAttrs(t&&e===s)},!0):s.selected=t:(s.selected=t,s.fixSelection3AfterClick(n)),this.nodeRenderStatus(e),r.lastSelectedNode=t?s:null,a||r._triggerNodeEvent("select",e)}},nodeSetStatus:function(t,n,i,s){var r=t.node,o=t.tree;function a(n,i){var s=r.children?r.children[0]:null;return s&&s.isStatusNode()?(e.extend(s,n),s.statusNodeType=i,o._callHook("nodeRenderTitle",s)):(r._setChildren([n]),o._callHook("treeStructureChanged",t,"setStatusNode"),r.children[0].statusNodeType=i,o.render()),r.children[0]}switch(n){case"ok":!function(){var e=r.children?r.children[0]:null;if(e&&e.isStatusNode()){try{r.ul&&(r.ul.removeChild(e.li),e.li=null)}catch(e){}1===r.children.length?r.children=[]:r.children.shift(),o._callHook("treeStructureChanged",t,"clearStatusNode")}}(),r._isLoading=!1,r._error=null,r.renderStatus();break;case"loading":r.parent||a({title:o.options.strings.loading+(i?" ("+i+")":""),checkbox:!1,tooltip:s},n),r._isLoading=!0,r._error=null,r.renderStatus();break;case"error":a({title:o.options.strings.loadError+(i?" ("+i+")":""),checkbox:!1,tooltip:s},n),r._isLoading=!1,r._error={message:i,details:s},r.renderStatus();break;case"nodata":a({title:i||o.options.strings.noData,checkbox:!1,tooltip:s},n),r._isLoading=!1,r._error=null,r.renderStatus();break;default:e.error("invalid node status "+n)}},nodeToggleExpanded:function(e){return this.nodeSetExpanded(e,!e.node.expanded)},nodeToggleSelected:function(e){var t=e.node,n=!t.selected;return t.partsel&&!t.selected&&!0===t._lastSelectIntent&&(n=!1,t.selected=!0),t._lastSelectIntent=n,this.nodeSetSelected(e,n)},treeClear:function(e){var t=e.tree;t.activeNode=null,t.focusNode=null,t.$div.find(">ul.fancytree-container").empty(),t.rootNode.children=null,t._callHook("treeStructureChanged",e,"clear")},treeCreate:function(e){},treeDestroy:function(e){this.$div.find(">ul.fancytree-container").remove(),this.$source&&this.$source.removeClass("fancytree-helper-hidden")},treeInit:function(t){var n=t.tree,i=n.options;n.$container.attr("tabindex",i.tabindex),e.each(f,function(e,t){void 0!==i[t]&&(n.info("Move option "+t+" to tree"),n[t]=i[t],delete i[t])}),i.checkboxAutoHide&&n.$container.addClass("fancytree-checkbox-auto-hide"),i.rtl?n.$container.attr("DIR","RTL").addClass("fancytree-rtl"):n.$container.removeAttr("DIR").removeClass("fancytree-rtl"),i.aria&&(n.$container.attr("role","tree"),1!==i.selectMode&&n.$container.attr("aria-multiselectable",!0)),this.treeLoad(t)},treeLoad:function(t,n){var i,s,r,o=t.tree,a=t.widget.element,u=e.extend({},t,{node:this.rootNode});if(o.rootNode.children&&this.treeClear(t),n=n||this.options.source)"string"==typeof n&&e.error("Not implemented");else switch(s=a.data("type")||"html"){case"html":(r=a.find(">ul").first()).addClass("ui-fancytree-source fancytree-helper-hidden"),n=e.ui.fancytree.parseHtml(r),this.data=e.extend(this.data,N(r));break;case"json":n=e.parseJSON(a.text()),a.contents().filter(function(){return 3===this.nodeType}).remove(),e.isPlainObject(n)&&(_(e.isArray(n.children),"if an object is passed as source, it must contain a 'children' array (all other properties are added to 'tree.data')"),i=n,n=n.children,delete i.children,e.each(f,function(e,t){void 0!==i[t]&&(o[t]=i[t],delete i[t])}),e.extend(o.data,i));break;default:e.error("Invalid data-type: "+s)}return this.nodeLoadChildren(u,n).done(function(){o._callHook("treeStructureChanged",t,"loadChildren"),o.render(),3===t.options.selectMode&&o.rootNode.fixSelection3FromEndNodes(),o.activeNode&&o.options.activeVisible&&o.activeNode.makeVisible(),o._triggerTreeEvent("init",null,{status:!0})}).fail(function(){o.render(),o._triggerTreeEvent("init",null,{status:!1})})},treeRegisterNode:function(e,t,n){e.tree._callHook("treeStructureChanged",e,t?"addNode":"removeNode")},treeSetFocus:function(t,n,i){var s;(n=!1!==n)!==this.hasFocus()&&(this._hasFocus=n,!n&&this.focusNode?this.focusNode.setFocus(!1):!n||i&&i.calledByNode||e(this.$container).focus(),this.$container.toggleClass("fancytree-treefocus",n),this._triggerTreeEvent(n?"focusTree":"blurTree"),n&&!this.activeNode&&(s=this._lastMousedownNode||this.getFirstChild())&&s.setFocus())},treeSetOption:function(t,n,i){var s=t.tree,r=!0,o=!1,a=!1;switch(n){case"aria":case"checkbox":case"icon":case"minExpandLevel":case"tabindex":o=!0,a=!0;break;case"checkboxAutoHide":s.$container.toggleClass("fancytree-checkbox-auto-hide",!!i);break;case"escapeTitles":case"tooltip":a=!0;break;case"rtl":!1===i?s.$container.removeAttr("DIR").removeClass("fancytree-rtl"):s.$container.attr("DIR","RTL").addClass("fancytree-rtl"),a=!0;break;case"source":r=!1,s._callHook("treeLoad",s,i),a=!0}s.debug("set option "+n+"="+i+" <"+typeof i+">"),r&&(this.widget._super?this.widget._super.call(this.widget,n,i):e.Widget.prototype._setOption.call(this.widget,n,i)),o&&s._callHook("treeCreate",s),a&&s.render(!0,!1)},treeStructureChanged:function(e,t){}}),e.widget("ui.fancytree",{options:{activeVisible:!0,ajax:{type:"GET",cache:!1,dataType:"json"},aria:!0,autoActivate:!0,autoCollapse:!1,autoScroll:!1,checkbox:!1,clickFolderMode:4,debugLevel:null,disabled:!1,enableAspx:!0,escapeTitles:!1,extensions:[],toggleEffect:{effect:"slideToggle",duration:200},generateIds:!1,icon:!0,idPrefix:"ft_",focusOnSelect:!1,keyboard:!0,keyPathSeparator:"/",minExpandLevel:1,nodata:!0,quicksearch:!1,rtl:!1,scrollOfs:{top:0,bottom:0},scrollParent:null,selectMode:2,strings:{loading:"Loading...",loadError:"Load error!",moreData:"More...",noData:"No data."},tabindex:"0",titlesTabbable:!1,tooltip:!1,treeId:null,_classNames:{node:"fancytree-node",folder:"fancytree-folder",animating:"fancytree-animating",combinedExpanderPrefix:"fancytree-exp-",combinedIconPrefix:"fancytree-ico-",hasChildren:"fancytree-has-children",active:"fancytree-active",selected:"fancytree-selected",expanded:"fancytree-expanded",lazy:"fancytree-lazy",focused:"fancytree-focused",partload:"fancytree-partload",partsel:"fancytree-partsel",radio:"fancytree-radio",unselectable:"fancytree-unselectable",lastsib:"fancytree-lastsib",loading:"fancytree-loading",error:"fancytree-error",statusNodePrefix:"fancytree-statusnode-"},lazyLoad:null,postProcess:null},_create:function(){this.tree=new D(this),this.$source=this.source||"json"===this.element.data("type")?this.element:this.element.find(">ul").first();var t,n,i,s=this.options,r=s.extensions;this.tree;for(i=0;i<r.length;i++)n=r[i],(t=e.ui.fancytree._extensions[n])||e.error("Could not apply extension '"+n+"' (it is not registered, did you forget to include it?)"),this.tree.options[n]=b({},t.options,this.tree.options[n]),_(void 0===this.tree.ext[n],"Extension name must not exist as Fancytree.ext attribute: '"+n+"'"),this.tree.ext[n]={},k(this.tree,0,t,n),t;void 0!==s.icons&&(!0===s.icon?(this.tree.warn("'icons' tree option is deprecated since v2.14.0: use 'icon' instead"),s.icon=s.icons):e.error("'icons' tree option is deprecated since v2.14.0: use 'icon' only instead")),void 0!==s.iconClass&&(s.icon?e.error("'iconClass' tree option is deprecated since v2.14.0: use 'icon' only instead"):(this.tree.warn("'iconClass' tree option is deprecated since v2.14.0: use 'icon' instead"),s.icon=s.iconClass)),void 0!==s.tabbable&&(s.tabindex=s.tabbable?"0":"-1",this.tree.warn("'tabbable' tree option is deprecated since v2.17.0: use 'tabindex='"+s.tabindex+"' instead")),this.tree._callHook("treeCreate",this.tree)},_init:function(){this.tree._callHook("treeInit",this.tree),this._bind()},_setOption:function(e,t){return this.tree._callHook("treeSetOption",this.tree,e,t)},destroy:function(){this._unbind(),this.tree._callHook("treeDestroy",this.tree),e.Widget.prototype.destroy.call(this)},_unbind:function(){var t=this.tree._ns;this.element.off(t),this.tree.$container.off(t),e(document).off(t)},_bind:function(){var t=this,n=this.options,s=this.tree,r=s._ns;this._unbind(),s.$container.on("focusin"+r+" focusout"+r,function(t){var n=i.getNode(t),r="focusin"===t.type;if(!r&&n&&e(t.target).is("a"))n.debug("Ignored focusout on embedded <a> element.");else{if(r){if(s._getExpiringValue("focusin"))return void s.debug("Ignored double focusin.");s._setExpiringValue("focusin",!0,50),n||(n=s._getExpiringValue("mouseDownNode"))&&s.debug("Reconstruct mouse target for focusin from recent event.")}n?s._callHook("nodeSetFocus",s._makeHookContext(n,t),r):s.tbody&&e(t.target).parents("table.fancytree-container > thead").length?s.debug("Ignore focus event outside table body.",t):s._callHook("treeSetFocus",s,r)}}).on("selectstart"+r,"span.fancytree-title",function(e){e.preventDefault()}).on("keydown"+r,function(e){if(n.disabled||!1===n.keyboard)return!0;var t,i=s.focusNode,r=s._makeHookContext(i||s,e),o=s.phase;try{return s.phase="userEvent","preventNav"===(t=i?s._triggerNodeEvent("keydown",i,e):s._triggerTreeEvent("keydown",e))?t=!0:!1!==t&&(t=s._callHook("nodeKeydown",r)),t}finally{s.phase=o}}).on("mousedown"+r,function(e){var t=i.getEventTarget(e);s._lastMousedownNode=t?t.node:null,s._setExpiringValue("mouseDownNode",s._lastMousedownNode)}).on("click"+r+" dblclick"+r,function(e){if(n.disabled)return!0;var s,r=i.getEventTarget(e),o=r.node,a=t.tree,u=a.phase;if(!o)return!0;s=a._makeHookContext(o,e);try{switch(a.phase="userEvent",e.type){case"click":return s.targetType=r.type,o.isPagingNode()?!0===a._triggerNodeEvent("clickPaging",s,e):!1!==a._triggerNodeEvent("click",s,e)&&a._callHook("nodeClick",s);case"dblclick":return s.targetType=r.type,!1!==a._triggerNodeEvent("dblclick",s,e)&&a._callHook("nodeDblclick",s)}}finally{a.phase=u}})},getActiveNode:function(){return this.tree.activeNode},getNodeByKey:function(e){return this.tree.getNodeByKey(e)},getRootNode:function(){return this.tree.rootNode},getTree:function(){return this.tree}}),i=e.ui.fancytree,e.extend(e.ui.fancytree,{version:"2.31.0",buildType:"production",debugLevel:3,_nextId:1,_nextNodeKey:1,_extensions:{},_FancytreeClass:D,_FancytreeNodeClass:L,jquerySupports:{positionMyOfs:function(t,n,i,s){var r,o,a,u=e.map(e.trim(t).split("."),function(e){return parseInt(e,10)}),l=e.map(Array.prototype.slice.call(arguments,1),function(e){return parseInt(e,10)});for(r=0;r<l.length;r++)if(o=u[r]||0,a=l[r]||0,o!==a)return o>a;return!0}(e.ui.version,1,9)},assert:function(e,t){return _(e,t)},createTree:function(t,n){return e(t).fancytree(n).fancytree("getTree")},debounce:function(e,t,n,i){var s;return 3===arguments.length&&"boolean"!=typeof n&&(i=n,n=!1),function(){var r=arguments;i=i||this,n&&!s&&t.apply(i,r),clearTimeout(s),s=setTimeout(function(){n||t.apply(i,r),s=null},e)}},debug:function(t){e.ui.fancytree.debugLevel>=4&&w("log",arguments)},error:function(t){e.ui.fancytree.debugLevel>=1&&w("error",arguments)},escapeHtml:function(e){return(""+e).replace(r,function(e){return a[e]})},fixPositionOptions:function(t){if((t.offset||(""+t.my+t.at).indexOf("%")>=0)&&e.error("expected new position syntax (but '%' is not supported)"),!e.ui.fancytree.jquerySupports.positionMyOfs){var n=/(\w+)([+-]?\d+)?\s+(\w+)([+-]?\d+)?/.exec(t.my),i=/(\w+)([+-]?\d+)?\s+(\w+)([+-]?\d+)?/.exec(t.at),s=(n[2]?+n[2]:0)+(i[2]?+i[2]:0),r=(n[4]?+n[4]:0)+(i[4]?+i[4]:0);t=e.extend({},t,{my:n[1]+" "+n[3],at:i[1]+" "+i[3]}),(s||r)&&(t.offset=s+" "+r)}return t},getEventTarget:function(t){var n,s=t&&t.target?t.target.className:"",r={node:this.getNode(t.target),type:void 0};return/\bfancytree-title\b/.test(s)?r.type="title":/\bfancytree-expander\b/.test(s)?r.type=!1===r.node.hasChildren()?"prefix":"expander":/\bfancytree-checkbox\b/.test(s)?r.type="checkbox":/\bfancytree(-custom)?-icon\b/.test(s)?r.type="icon":/\bfancytree-node\b/.test(s)?r.type="title":t&&t.target&&((n=e(t.target)).is("ul[role=group]")?((r.node&&r.node.tree||i).debug("Ignoring click on outer UL."),r.node=null):n.closest(".fancytree-title").length?r.type="title":n.closest(".fancytree-checkbox").length?r.type="checkbox":n.closest(".fancytree-expander").length&&(r.type="expander")),r},getEventTargetType:function(e){return this.getEventTarget(e).type},getNode:function(t){if(t instanceof L)return t;for(t instanceof e?t=t[0]:void 0!==t.originalEvent&&(t=t.target);t;){if(t.ftnode)return t.ftnode;t=t.parentNode}return null},getTree:function(t){var n,i=t;return t instanceof D?t:(void 0===t&&(t=0),"number"==typeof t?t=e(".fancytree-container").eq(t):"string"==typeof t?(t=e("#ft-id-"+i).eq(0)).length||(t=e(i).eq(0)):t instanceof e?t=t.eq(0):void 0!==t.originalEvent&&(t=e(t.target)),(n=(t=t.closest(":ui-fancytree")).data("ui-fancytree")||t.data("fancytree"))?n.tree:null)},evalOption:function(t,n,i,s,r){var o,a,u=n.tree,l=s[t],d=i[t];return e.isFunction(l)?(o={node:n,tree:u,widget:u.widget,options:u.widget.options,typeInfo:u.types[n.type]||{}},null==(a=l.call(u,{type:t},o))&&(a=d)):a=null==d?l:d,null==a&&(a=r),a},setSpanIcon:function(t,n,i){var s=e(t);"string"==typeof i?s.attr("class",n+" "+i):(i.text?s.text(""+i.text):i.html&&(t.innerHTML=i.html),s.attr("class",n+" "+(i.addClass||"")))},eventToString:function(e){var t=e.which,n=e.type,i=[];return e.altKey&&i.push("alt"),e.ctrlKey&&i.push("ctrl"),e.metaKey&&i.push("meta"),e.shiftKey&&i.push("shift"),"click"===n||"dblclick"===n?i.push(c[e.button]+n):"wheel"===n?i.push(n):u[t]||i.push(l[t]||String.fromCharCode(t).toLowerCase()),i.join("+")},info:function(t){e.ui.fancytree.debugLevel>=3&&w("info",arguments)},keyEventToString:function(e){return this.warn("keyEventToString() is deprecated: use eventToString()"),this.eventToString(e)},overrideMethod:function(t,n,i,s){var r,o=t[n]||e.noop;t[n]=function(){var e=s||this;try{return r=e._super,e._super=o,i.apply(e,arguments)}finally{e._super=r}}},parseHtml:function(t){var n,i,s,r,o,a,u,l,d=t.find(">li"),c=[];return d.each(function(){var d,f,g=e(this),y=g.find(">span",this).first(),_=y.length?null:g.find(">a").first(),w={tooltip:null,data:{}};for(y.length?w.title=y.html():_&&_.length?(w.title=_.html(),w.data.href=_.attr("href"),w.data.target=_.attr("target"),w.tooltip=_.attr("title")):(w.title=g.html(),(o=w.title.search(/<ul/i))>=0&&(w.title=w.title.substring(0,o))),w.title=e.trim(w.title),r=0,a=h.length;r<a;r++)w[h[r]]=void 0;for(n=this.className.split(" "),s=[],r=0,a=n.length;r<a;r++)i=n[r],p[i]?w[i]=!0:s.push(i);if(w.extraClasses=s.join(" "),(u=g.attr("title"))&&(w.tooltip=u),(u=g.attr("id"))&&(w.key=u),g.attr("hideCheckbox")&&(w.checkbox=!1),(d=N(g))&&!e.isEmptyObject(d)){for(f in v)d.hasOwnProperty(f)&&(d[v[f]]=d[f],delete d[f]);for(r=0,a=m.length;r<a;r++)u=m[r],null!=(l=d[u])&&(delete d[u],w[u]=l);e.extend(w.data,d)}(t=g.find(">ul").first()).length?w.children=e.ui.fancytree.parseHtml(t):w.children=w.lazy?void 0:null,c.push(w)}),c},registerExtension:function(t){_(null!=t.name,"extensions must have a `name` property."),_(null!=t.version,"extensions must have a `version` property."),e.ui.fancytree._extensions[t.name]=t},unescapeHtml:function(e){var t=document.createElement("div");return t.innerHTML=e,0===t.childNodes.length?"":t.childNodes[0].nodeValue},warn:function(t){e.ui.fancytree.debugLevel>=2&&w("warn",arguments)}}),e.ui.fancytree}function _(t,n){t||(n=n?": "+n:"",e.error("Fancytree assertion failed"+n))}function w(e,t){var n,i,s=window.console?window.console[e]:null;if(s)try{s.apply(window.console,t)}catch(e){for(i="",n=0;n<t.length;n++)i+=t[n];s(i)}}function b(){var t,n,i,s,r,o=arguments[0]||{},a=1,u=arguments.length;if("object"==typeof o||e.isFunction(o)||(o={}),a===u)throw Error("need at least two args");for(;a<u;a++)if(null!=(t=arguments[a]))for(n in t)if(t.hasOwnProperty(n)){if(i=o[n],o===(s=t[n]))continue;s&&e.isPlainObject(s)?(r=i&&e.isPlainObject(i)?i:{},o[n]=b(r,s)):void 0!==s&&(o[n]=s)}return o}function x(e,t,n,i,s){var r,o,a,u,l;return r=t[e],o=i[e],a=t.ext[s],u=function(){return r.apply(t,arguments)},l=function(e){return r.apply(t,e)},function(){var e=t._local,n=t._super,i=t._superApply;try{return t._local=a,t._super=u,t._superApply=l,o.apply(t,arguments)}finally{t._local=e,t._super=n,t._superApply=i}}}function k(t,n,i,s){for(var r in i)"function"==typeof i[r]?"function"==typeof t[r]?t[r]=x(r,t,0,i,s):"_"===r.charAt(0)?t.ext[s][r]=x(r,t,0,i,s):e.error("Could not override tree."+r+". Use prefix '_' to create tree."+s+"._"+r):"options"!==r&&(t.ext[s][r]=i[r])}function C(t,n){return void 0===t?e.Deferred(function(){this.resolve()}).promise():e.Deferred(function(){this.resolveWith(t,n)}).promise()}function S(t,n){return void 0===t?e.Deferred(function(){this.reject()}).promise():e.Deferred(function(){this.rejectWith(t,n)}).promise()}function T(e,t){return function(){e.resolveWith(t)}}function N(t){var n=e.extend({},t.data()),i=n.json;return delete n.fancytree,delete n.uiFancytree,i&&(delete n.json,n=e.extend(n,i)),n}function E(e){return(""+e).replace(o,function(e){return a[e]})}function j(e){return e=e.toLowerCase(),function(t){return t.title.toLowerCase().indexOf(e)>=0}}function L(t,n){var s,r,o,a;for(this.parent=t,this.tree=t.tree,this.ul=null,this.li=null,this.statusNodeType=null,this._isLoading=!1,this._error=null,this.data={},s=0,r=m.length;s<r;s++)this[o=m[s]]=n[o];for(o in null==this.unselectableIgnore&&null==this.unselectableStatus||(this.unselectable=!0),n.hideCheckbox&&e.error("'hideCheckbox' node option was removed in v2.23.0: use 'checkbox: false'"),n.data&&e.extend(this.data,n.data),n)g[o]||e.isFunction(n[o])||y[o]||(this.data[o]=n[o]);null==this.key?this.tree.options.defaultKey?(this.key=this.tree.options.defaultKey(this),_(this.key,"defaultKey() must return a unique key")):this.key="_"+i._nextNodeKey++:this.key=""+this.key,n.active&&(_(null===this.tree.activeNode,"only one active node allowed"),this.tree.activeNode=this),n.selected&&(this.tree.lastSelectedNode=this),(a=n.children)?a.length?this._setChildren(a):this.children=this.lazy?[]:null:this.children=null,this.tree._callHook("treeRegisterNode",this.tree,!0,this)}function D(t){this.widget=t,this.$div=t.element,this.options=t.options,this.options&&(void 0!==this.options.lazyload&&e.error("The 'lazyload' event is deprecated since 2014-02-25. Use 'lazyLoad' (with uppercase L) instead."),void 0!==this.options.loaderror&&e.error("The 'loaderror' event was renamed since 2014-07-03. Use 'loadError' (with uppercase E) instead."),void 0!==this.options.fx&&e.error("The 'fx' option was replaced by 'toggleEffect' since 2014-11-30."),void 0!==this.options.removeNode&&e.error("The 'removeNode' event was replaced by 'modifyChild' since 2.20 (2016-09-10).")),this.ext={},this.types={},this.columns={},this.data=N(this.$div),this._id=""+(this.options.treeId||e.ui.fancytree._nextId++),this._ns=".fancytree-"+this._id,this.activeNode=null,this.focusNode=null,this._hasFocus=null,this._tempCache={},this._lastMousedownNode=null,this._enableUpdate=!0,this.lastSelectedNode=null,this.systemFocusElement=null,this.lastQuicksearchTerm="",this.lastQuicksearchTime=0,this.viewport=null,this.statusClassPropName="span",this.ariaPropName="li",this.nodeContainerAttrName="li",this.$div.find(">ul.fancytree-container").remove();var n,s={tree:this};this.rootNode=new L(s,{title:"root",key:"root_"+this._id,children:null,expanded:!0}),this.rootNode.parent=null,n=e("<ul>",{id:"ft-id-"+this._id,class:"ui-fancytree fancytree-container fancytree-plain"}).appendTo(this.$div),this.$container=n,this.rootNode.ul=n[0],null==this.options.debugLevel&&(this.options.debugLevel=i.debugLevel)}e.ui.fancytree.warn("Fancytree: ignored duplicate include")})?i.apply(t,s):i)||(e.exports=r)},,,,,,,,,,function(e,t,n){var i=i||{};window.WP_Smush=i,String.prototype.includes||(String.prototype.includes=function(e,t){return"number"!=typeof t&&(t=0),!(t+e.length>this.length)&&-1!==this.indexOf(e,t)}),n(16),n(17),n(18),n(19),n(20),n(22),n(23),n(24),n(25)},function(e,t){!function(e){"use strict";WP_Smush.helpers={init:function(){},formatBytes:function(e,t){var n=["KB","MB","GB","TB","PB"];if(Math.abs(e)<1024)return e+" B";var i=-1;do{e/=1024,++i}while(Math.abs(e)>=1024&&i<n.length-1);return e.toFixed(t)+" "+n[i]},getSizeFromString:function(e){return e.replace(/[a-zA-Z]/g,"").trim()},getFormatFromString:function(e){return e.replace(/[0-9.]/g,"").trim()},precise_round:function(e,t){var n=e>=0?1:-1;return e=e>100?100:e,Math.round(e*Math.pow(10,t)+.001*n)/Math.pow(10,t)},findPos:function(e){var t=0;if(e.offsetParent){do{t+=e.offsetTop}while(e=e.offsetParent);return[t]}},geturlparam:function(e){for(var t=window.location.search.substring(1).split("&"),n=0;n<t.length;n++){var i=t[n].split("=");if(i[0]===e)return i[1]}},resetSettings:function(){var e=new XMLHttpRequest;e.open("POST",ajaxurl+"?action=reset_settings",!0),e.setRequestHeader("Content-type","application/x-www-form-urlencoded"),e.onload=function(){if(200===e.status){var t=JSON.parse(e.response);void 0!==t.success&&t.success&&(window.location.href=wp_smush_msgs.smush_url)}else console.log("Request failed. Returned status of "+e.status)},e.send("_ajax_nonce="+smush_vars.nonce.get_smush_status)}},WP_Smush.helpers.init()}(jQuery)},function(e,t,n){"use strict";n.r(t);var i=n(0),s=function(e,t){void 0===t&&(t=100),e.fadeTo(t,0,function(){e.slideUp(t,function(){e.remove()})})};jQuery(function(e){var t=function(t,n,s,r){if("disabled"==n.attr("disabled"))return!1;t.preventDefault(),e(".wp-smush-error").remove(),e(".smush-stats-wrapper").hide();var o="grid";"smush_restore_image"==s&&(o=e(document).find("div.media-modal.wp-core-ui").length>0?"grid":window.location.search.indexOf("item")>-1?"grid":"list");var a={action:s,attachment_id:n.data("id"),mode:o,_nonce:n.data("nonce")};!function(e){var t=e.parent();t.css({opacity:"0.5"}),t.find("a").attr("disabled","disabled")}(n),i.a.progress_bar(n,wp_smush_msgs[r],"show"),e.post(ajaxurl,a,function(e){i.a.progress_bar(n,wp_smush_msgs[r],"hide"),function(e){var t=e.parent();t.css({opacity:"1"}),t.find("a").removeAttr("disabled")}(n),e.success&&void 0!==e.data.button?(void 0!==this.data&&this.data.indexOf("nextgen")>-1?n.parent().html(e.data.button):n.parents().eq(1).html(e.data.button),void 0!==e.data&&"restore"===r&&i.a.update_image_stats(e.data.new_size)):e.data.message&&n.parent().append(e.data.message)})},n=function(t){var n=e(".wp-smush-scan");n.text("").addClass("sui-button-onload sui-icon-loader sui-loading").blur();var r=n.data("type");r=void 0===r?"media":r,e(".wp-smush-all").removeAttr("data-smush");var o=e(".sui-notice-top.sui-notice-success");o.slideUp(100,function(){o.remove()}),e(".wp-smush-all").attr("disabled","disabled"),e(".wp-smush-settings-changed").hide();var a={action:"scan_for_resmush",type:r,get_ui:!0,process_settings:t,wp_smush_options_nonce:jQuery("#wp_smush_options_nonce").val()};e.get(ajaxurl,a,function(t){if(void 0!==t.data){if(void 0!==t.data.resmush_ids){wp_smushit_data.resmush=t.data.resmush_ids,"undefinied"!=typeof wp_smushit_data&&(wp_smushit_data.count_smushed=void 0!==t.data.count_smushed?t.data.count_smushed:wp_smushit_data.count_smushed,wp_smushit_data.count_supersmushed=void 0!==t.data.count_supersmushed?t.data.count_supersmushed:wp_smushit_data.count_supersmushed,wp_smushit_data.count_images=void 0!==t.data.count_image?t.data.count_image:wp_smushit_data.count_images,wp_smushit_data.size_before=void 0!==t.data.size_before?t.data.size_before:wp_smushit_data.size_before,wp_smushit_data.size_after=void 0!==t.data.size_after?t.data.size_after:wp_smushit_data.size_after,wp_smushit_data.savings_resize=void 0!==t.data.savings_resize?t.data.savings_resize:wp_smushit_data.savings_resize,wp_smushit_data.savings_conversion=void 0!==t.data.savings_conversion?t.data.savings_conversion:wp_smushit_data.savings_conversion,wp_smushit_data.count_resize=void 0!==t.data.count_resize?t.data.count_resize:wp_smushit_data.count_resize),"nextgen"===r&&(wp_smushit_data.bytes=parseInt(wp_smushit_data.size_before)-parseInt(wp_smushit_data.size_after));var n=e(".bulk-smush-wrapper .sui-notice");n.length>0&&(n.hide(),e(".wp-smush-pagespeed-recommendation").hide()),e(".wp-smush-resmush-notice").remove(),e(".wp-smush-bulk-wrapper").show()}if(void 0!==t.data.content&&e(".bulk-smush-wrapper .sui-box-body > p:first-of-type").after(t.data.content),void 0!==t.data.notice&&e(".wp-smush-page-header").after(t.data.notice),e("div.smush-final-log").hide(),void 0!==t.data.super_smush&&t.data.super_smush){var s=jQuery(".wp-smush-enable-lossy");s.length>0&&s.remove(),"undefined"!==t.data.super_smush_stats&&e(".super-smush-attachments .wp-smush-stats").html(t.data.super_smush_stats)}i.a.update_stats(r)}}).always(function(){jQuery(".bulk-smush-wrapper .wp-smush-bulk-progress-bar-wrapper").hide(),n.text(wp_smush_msgs.resmush_complete).removeClass("sui-button-onload sui-icon-loader sui-loading").addClass("smush-button-check-success"),setTimeout(function(){n.removeClass("smush-button-check-success").text(wp_smush_msgs.resmush_check)},2e3),e(".wp-smush-all").removeAttr("disabled");var t=e(".wp-smush-re-check-message");t.length&&s(t)})},r=function(t){e(t).length>0&&e("html, body").animate({scrollTop:e(t).offset().top-100},"slow")};e("#all-image-sizes").on("change",function(){e('input[name^="wp-smush-image_sizes"]').prop("checked",!0)}),e("#wp-smush-update-api-status").on("click",function(t){t.preventDefault(),e(this).addClass("sui-button-onload"),e.post(ajaxurl,{action:"recheck_api_status"},function(){location.reload()})}),e("body").on("click","a.smush-stats-details",function(t){if("disabled"==e(this).attr("disabled"))return!1;t.preventDefault();var n=e(this).find(".stats-toggle");e(this).parents().eq(1).find(".smush-stats-wrapper").slideToggle(),n.text("+"==n.text()?"-":"+")}),e("body").on("click",".wp-smush-send:not(.wp-smush-resmush)",function(t){t.preventDefault(),new i.a(e(this),!1)}),e("body").on("click",".wp-smush-remove-skipped",function(t){t.preventDefault(),e.post(ajaxurl,{action:"remove_from_skip_list",id:e(this).attr("data-id")}),s(e(this))}),e("body").on("click",".wp-smush-nextgen-send",function(t){t.preventDefault(),new i.a(e(this),!1,"nextgen")}),e("body").on("click",".wp-smush-nextgen-bulk",function(t){if(t.preventDefault(),"undefined"==typeof wp_smushit_data||0===wp_smushit_data.unsmushed.length&&0===wp_smushit_data.resmush.length)return!1;jQuery(".wp-smush-all, .wp-smush-scan").attr("disabled","disabled"),e(".wp-smush-notice.wp-smush-remaining").hide(),new i.a(e(this),!0,"nextgen")}),e("body").on("click",".wp-smush-action.wp-smush-restore",function(n){var i=e(this);t(n,i,"smush_restore_image","restore");var s=i.parents().eq(1);s.hasClass("smushed")&&s.removeClass("smushed").addClass("unsmushed")}),e("body").on("click",".wp-smush-action.wp-smush-resmush",function(n){t(n,e(this),"smush_resmush_image","smushing")}),e("body").on("click",".wp-smush-action.wp-smush-nextgen-restore",function(n){t(n,e(this),"smush_restore_nextgen_image","restore")}),e("body").on("click",".wp-smush-action.wp-smush-nextgen-resmush",function(n){t(n,e(this),"smush_resmush_nextgen_image","smushing")}),e(".wp-smush-scan").on("click",function(e){e.preventDefault(),n(!1)}),e("#wp-smush-welcome-box .smush-dismiss-welcome").on("click",function(t){t.preventDefault();var n=e(this).parents().eq(1);s(n);e.post(ajaxurl,{action:"dismiss_welcome_notice"})}),e("body").on("click",".wp-smush-notice .icon-fi-close",function(t){t.preventDefault();var n=e(this).parent();s(n)}),e("input[name=wp-smush-keep_data]").on("change",function(e){var t="keep_data-true"===e.target.id?"keep_data-false":"keep_data-true";e.target.parentNode.classList.add("active"),document.getElementById(t).parentNode.classList.remove("active")}),e("button#wp-smush-save-settings").on("click",function(t){t.preventDefault();var n="",i=e('input[name="setting-type"]');i.length>0&&(n=i.val());var s=e(this);if(s.parent().find("span.sui-icon-loader.sui-loading").removeClass("sui-hidden"),""!=n&&"network"==n){var r={action:"save_settings",wp_smush_options_nonce:e("#wp_smush_options_nonce").val()};r=jQuery.param(r)+"&"+jQuery("form#wp-smush-settings-form").serialize(),jQuery.post(ajaxurl,r).done(function(){return jQuery("form#wp-smush-settings-form").submit(),!0})}else{e(".wp-smush-hex-notice").hide(),s.attr("disabled","disabled").addClass("button-grey"),void 0!==s.attr("data-msg")&&s.attr("data-msg").length>0?s.html(s.attr("data-msg")):s.html(wp_smush_msgs.checking);var o=s.data("type");o=void 0===o?"media":o;var a={action:"scan_for_resmush",wp_smush_options_nonce:jQuery("#wp_smush_options_nonce").val(),type:o};a=jQuery.param(a)+"&"+jQuery("form#wp-smush-settings-form").serialize(),jQuery.post(ajaxurl,a).done(function(){return jQuery("form#wp-smush-settings-form").submit(),!0})}}),e("body").on("click",".wp-smush-skip-resmush",function(t){t.preventDefault();var n=jQuery(this),r=n.parents().eq(1),o=n.parent();s(o),e(".sui-notice-top.sui-notice-success").remove(),r.find(".wp-smush-all").attr("data-smush","skip_resmush"),wp_smushit_data.count_smushed=parseInt(wp_smushit_data.count_smushed)+wp_smushit_data.resmush.length,wp_smushit_data.count_supersmushed=parseInt(wp_smushit_data.count_supersmushed)+wp_smushit_data.resmush.length,wp_smushit_data.count_smushed===wp_smushit_data.count_total&&(e(".wp-smush-notice.wp-smush-all-done, .wp-smush-pagespeed-recommendation").show(),e(".wp-smush-bulk-wrapper ").hide()),e(".wp-smush-resmush-notice").remove();var a=e(".wp-smush-scan").data("type");a=void 0===a?"media":a;var u=(void 0!==wp_smushit_data.count_smushed?wp_smushit_data.count_smushed:0)/wp_smushit_data.count_total*100;u=WP_Smush.helpers.precise_round(u,1),e(".wp-smush-images-percent").html(u);var l=jQuery(".bulk-smush-wrapper .wp-smush-progress-inner");if(!(l.length<1)){l.css("width",u+"%"),e(".wp-smush-bulk-wrapper").show(),e(".wp-smush-bulk-wrapper .sui-notice").show();var d={action:"delete_resmush_list",type:a};e.post(ajaxurl,d,function(t){if(t.success&&void 0!==t.data.stats){var n=t.data.stats;"undefinied"!=typeof wp_smushit_data&&(wp_smushit_data.count_images=void 0!==n.count_images?parseInt(wp_smushit_data.count_images)+n.count_images:wp_smushit_data.count_images,wp_smushit_data.size_before=void 0!==n.size_before?parseInt(wp_smushit_data.size_before)+n.size_before:wp_smushit_data.size_before,wp_smushit_data.size_after=void 0!==n.size_after?parseInt(wp_smushit_data.size_after)+n.size_after:wp_smushit_data.size_after,wp_smushit_data.savings_resize=void 0!==n.savings_resize?parseInt(wp_smushit_data.savings_resize)+n.savings_resize:wp_smushit_data.savings_resize,wp_smushit_data.savings_conversion=void 0!==n.savings_conversion?parseInt(wp_smushit_data.savings_conversion)+n.savings_conversion:wp_smushit_data.savings_conversion,void 0!==wp_smushit_data.savings_dir_smush&&void 0!==wp_smushit_data.savings_dir_smush.orig_size&&(wp_smushit_data.size_before=void 0!==wp_smushit_data.savings_dir_smush?parseInt(wp_smushit_data.size_before)+parseInt(wp_smushit_data.savings_dir_smush.orig_size):wp_smushit_data.size_before,wp_smushit_data.size_after=void 0!==wp_smushit_data.savings_dir_smush?parseInt(wp_smushit_data.size_after)+parseInt(wp_smushit_data.savings_dir_smush.image_size):wp_smushit_data.size_after),wp_smushit_data.count_resize=void 0!==n.count_resize?parseInt(wp_smushit_data.count_resize)+n.count_resize:wp_smushit_data.count_resize);var s=e(".bulk-smush-wrapper .wp-smush-remaining-count");s.length&&void 0!==wp_smushit_data.unsmushed&&s.html(wp_smushit_data.unsmushed.length),void 0===wp_smushit_data.unsmushed&&0!==wp_smushit_data.unsmushed.length||(e(".wp-smush-bulk-wrapper .sui-notice").hide(),e(".sui-notice-success.wp-smush-all-done").show()),i.a.update_stats()}})}});var o=function(){e("#wp-smush-resize").prop("checked",!0).focus(),e("div.wp-smush-resize-settings-wrap").show(),r("#column-wp-smush-resize")},a=function(){e("#wp-smush-lossy").prop("checked",!0).focus(),r("#column-wp-smush-lossy")};if(e("a.wp-smush-lossy-enable").on("click",function(e){e.preventDefault(),a()}),e(".wp-smush-resize-enable").on("click",function(e){e.preventDefault(),o()}),window.location.hash){var u=window.location.hash.substring(1);"enable-resize"===u?o():"enable-lossy"===u&&a()}if(e("body").on("click",".wp-smush-trigger-bulk",function(t){t.preventDefault(),e(".wp-smush-all").click(),e("span.sui-notice-dismiss").click()}),e("body").on("click","#bulk-smush-top-notice-close",function(t){t.preventDefault(),e(this).parent().parent().slideUp("slow")}),e(".wp-smush-setting-row .toggle-checkbox").focus(function(){e(this).keypress(function(t){32==t.keyCode&&(t.preventDefault(),e(this).find(".toggle-checkbox").click())})}),e("body").on("blur",".wp-smush-resize-input",function(){!function(e,t,n){var i=e.find("#wp-smush-resize, #wp-smush-resize-quick-setup");if(!n)var s=e.find("#wp-smush-resize_width, #quick-setup-resize_width"),r=e.find(".sui-notice-info.wp-smush-update-width");if(!t)var o=e.find("#wp-smush-resize_height, #quick-setup-resize_height"),a=e.find(".sui-notice-info.wp-smush-update-height");var u=!1,l=!1;!i.is(":checked")||(void 0===wp_smushit_data.resize_sizes||void 0===wp_smushit_data.resize_sizes.width||(!n&&void 0!==s&&parseInt(wp_smushit_data.resize_sizes.width)>parseInt(s.val())?(s.parent().addClass("sui-form-field-error"),r.show("slow"),u=!0):(s.parent().removeClass("sui-form-field-error"),r.hide(),o.hasClass("error")&&a.show("slow")),!t&&void 0!==o&&parseInt(wp_smushit_data.resize_sizes.height)>parseInt(o.val())?(o.parent().addClass("sui-form-field-error"),u||a.show("slow"),l=!0):(o.parent().removeClass("sui-form-field-error"),a.hide(),s.hasClass("error")&&r.show("slow"))))}(e(this).parents().eq(4),!1,!1)}),e("body").on("click","#wp-smush-resize, #wp-smush-resize-quick-setup",function(){var t=e(this),n=e(".wp-smush-resize-settings-wrap");t.is(":checked")?n.show():n.hide()}),e("#column-wp-smush-auto").on("click","#wp-smush-auto",function(){var t=e("#column-wp-smush-auto .auto-smush-notice");e(this).is(":checked")?t.show():t.hide()}),e("body").on("click","#wp-smush-detection",function(){var t=e(this),n=e(".smush-highlighting-notice"),i=e(".smush-highlighting-warning");t.is(":checked")?n.length>0?n.show():i.show():(n.hide(),i.hide())}),e("#wp-smush-png_to_jpg").click(function(){var t=e(this),n=e(".wp-smush-png_to_jpg-wrap");t.is(":checked")?n.show():n.hide()}),e("#wp-smush-revalidate-member").on("click",function(t){t.preventDefault();var n=e(this).parents().eq(1);n.addClass("loading-notice"),e.get(ajaxurl,{action:"smush_show_warning"},function(e){n.removeClass("loading-notice").addClass("loaded-notice"),0==e?(n.attr("data-message",wp_smush_msgs.membership_valid),s(n,1e3)):(n.attr("data-message",wp_smush_msgs.membership_invalid),setTimeout(function(){n.removeClass("loaded-notice")},1e3))})}),"undefined"!=typeof wp_smush_run_re_check&&1==wp_smush_run_re_check&&e(".wp-smush-scan").length>0&&n(!1),e("li.smush-dir-savings").length>0){e.get(ajaxurl,{action:"get_dir_smush_stats"},function(t){e("li.smush-dir-savings .sui-icon-loader").hide(),t.success||void 0===t.data.message?void 0===t.data||void 0===t.data.dir_smush?(e("li.smush-dir-savings span.wp-smush-stats").append(wp_smush_msgs.ajax_error),e("li.smush-dir-savings span.wp-smush-stats span").hide()):function(t){if(void 0!==t.dir_smush){var n=e("li.smush-dir-savings span.wp-smush-stats span.wp-smush-stats-human"),i=e("li.smush-dir-savings span.wp-smush-stats span.wp-smush-stats-percent");if(t.dir_smush.bytes>0){if(e("li.smush-dir-savings .wp-smush-stats-label-message").hide(),n.length>0)n.html(t.dir_smush.human);else t.dir_smush.bytes;if(t.dir_smush.percent>0)if(e("li.smush-dir-savings span.wp-smush-stats span.wp-smush-stats-sep").removeClass("sui-hidden"),i.length>0)i.html(t.dir_smush.percent+"%");else t.dir_smush.percent}}if(void 0!==t.combined_stats&&t.combined_stats.length>0){var s=t.combined_stats,r=s.smushed/s.total_count*100;(r=WP_Smush.helpers.precise_round(r,1))&&e("div.wp-smush-count-total span.wp-smush-images-percent").html(r),s.total_count&&e("span.wp-smush-count-total span.wp-smush-total-optimised").html(s.total_count),s.savings&&e("span.wp-smush-savings span.wp-smush-stats-human").html(s.savings),s.percent&&e("span.wp-smush-savings span.wp-smush-stats-percent").html(s.percent)}}(t.data):e("div.wp-smush-scan-result div.content").prepend(t.data.message)})}e(document).keyup(function(t){if(27===t.keyCode){var n=e("div.dev-overlay.wp-smush-list-dialog, div.dev-overlay.wp-smush-get-pro");if(!n.is(":visible"))return;n.find("div.close").click()}}),e("span.dismiss-recommendation").on("click",function(t){t.preventDefault();var n=e(this).parent();n.hide("slow",function(){n.remove()}),e.ajax({type:"POST",url:ajaxurl,data:{action:"hide_pagespeed_suggestion"}})}),e("div.wp-smush-api-message i.icon-fi-close").on("click",function(t){t.preventDefault();var n=e(this).parent();n.hide("slow",function(){n.remove()}),e.ajax({type:"POST",url:ajaxurl,data:{action:"hide_api_message"}})})})},function(e,t,n){"use strict";n.r(t);var i=n(0);!function(e){WP_Smush.bulk={init:function(){e(".wp-smush-all").on("click",function(t){t.preventDefault(),e(".sui-notice-top.sui-notice-success").remove();var n=document.getElementById("bulk_smush_warning");n.classList.add("sui-hidden");var s=e(".wp-smush-bulk-progress-bar-wrapper");if(s.removeClass("wp-smush-exceed-limit"),s.find(".sui-progress-block .wp-smush-all").addClass("sui-hidden"),s.find(".sui-progress-block .wp-smush-cancel-bulk").removeClass("sui-hidden"),n&&document.getElementById("bulk-smush-resume-button").classList.add("sui-hidden"),e(".wp-resmush.wp-smush-action, .wp-smush-scan, .wp-smush-all:not(.sui-progress-close), a.wp-smush-lossy-enable, button.wp-smush-resize-enable, button#wp-smush-save-settings").attr("disabled","disabled"),"undefined"==typeof wp_smushit_data||0===wp_smushit_data.unsmushed.length&&0===wp_smushit_data.resmush.length)return!1;e(".wp-smush-remaining").hide(),s.find("i.sui-icon-info").removeClass("sui-icon-info").addClass("sui-loading").addClass("sui-icon-loader"),new i.a(e(this),!0)}),e("body").on("click",".smush-ignore-image",function(){e(this).attr("disabled",!0),e(this).attr("data-tooltip"),e(this).removeClass("sui-tooltip"),e.post(ajaxurl,{action:"ignore_bulk_image",id:e(this).attr("data-id")})})}},WP_Smush.bulk.init()}(jQuery)},function(e,t,n){(function(e){!function(){"use strict";WP_Smush.onboarding={membership:"free",onboardingModal:document.getElementById("smush-onboarding-dialog"),scanFilesModal:document.getElementById("checking-files-dialog"),settings:{first:!0,last:!1,slide:"start",value:!1},selection:{auto:!0,lossy:!0,strip_exif:!0,original:!1,lazy_load:!0,usage:!0},contentContainer:document.getElementById("smush-onboarding-content"),onboardingSlides:["start","auto","lossy","strip_exif","original","lazy_load","usage"],touchX:null,touchY:null,init:function(){if(this.onboardingModal){this.membership=document.getElementById("smush-onboarding").dataset.type,"pro"!==this.membership&&(this.onboardingSlides=["start","auto","strip_exif","lazy_load","usage"],this.selection.lossy=!1),this.renderTemplate();var t=this.onboardingModal.querySelector(".smush-onboarding-skip-link");t&&t.addEventListener("click",this.skipSetup),new e(this.onboardingModal).show()}},handleTouchStart:function(e){var t=e.touches[0];this.touchX=t.clientX,this.touchY=t.clientY},handleTouchMove:function(e){if(this.touchX&&this.touchY){var t=e.touches[0].clientX,n=e.touches[0].clientY,i=this.touchX-t,s=this.touchY-n;Math.abs(i)>Math.abs(s)&&(i>0?!1===WP_Smush.onboarding.settings.last&&WP_Smush.onboarding.next(null,"next"):!1===WP_Smush.onboarding.settings.first&&WP_Smush.onboarding.next(null,"prev")),this.touchX=null,this.touchY=null}},renderTemplate:function(e){var t=this,n=this.onboardingModal.querySelector('input[type="checkbox"]');n&&(this.selection[n.id]=n.checked);var i=WP_Smush.onboarding.template("smush-onboarding")(this.settings);i&&(this.contentContainer.innerHTML=i,void 0===e?this.contentContainer.classList.add("loaded"):(this.contentContainer.classList.remove("loaded"),this.contentContainer.classList.add(e),setTimeout(function(){t.contentContainer.classList.add("loaded"),t.contentContainer.classList.remove(e)},600))),this.onboardingModal.addEventListener("touchstart",this.handleTouchStart,!1),this.onboardingModal.addEventListener("touchmove",this.handleTouchMove,!1),this.bindSubmit()},bindSubmit:function(){var e=this.onboardingModal.querySelector('button[type="submit"]'),t=this;e&&e.addEventListener("click",function(e){e.preventDefault();var n=t.onboardingModal.querySelector('input[type="checkbox"]');n&&(t.selection[n.id]=n.checked);var i=document.getElementById("_wpnonce"),s=new XMLHttpRequest;s.open("POST",ajaxurl+"?action=smush_setup",!0),s.setRequestHeader("Content-type","application/x-www-form-urlencoded"),s.onload=function(){200===s.status?WP_Smush.onboarding.showScanDialog():console.log("Request failed. Returned status of "+s.status)},s.send("smush_settings="+JSON.stringify(t.selection)+"&_ajax_nonce="+i.value)})},next:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.onboardingSlides.indexOf(this.settings.slide),i=0;i=t?"next"===t?n+1:n-1:null!==e&&e.classList.contains("next")?n+1:n-1;var s=null!==e&&e.classList.contains("next")?"fadeInRight":"fadeInLeft";this.settings={first:0===i,last:i+1===this.onboardingSlides.length,slide:this.onboardingSlides[i],value:this.selection[this.onboardingSlides[i]]},this.renderTemplate(s)},goTo:function(e){var t=this.onboardingSlides.indexOf(e);this.settings={first:0===t,last:t+1===this.onboardingSlides.length,slide:e,value:this.selection[e]},this.renderTemplate()},skipSetup:function(){var e=document.getElementById("_wpnonce"),t=new XMLHttpRequest;t.open("POST",ajaxurl+"?action=skip_smush_setup&_ajax_nonce="+e.value),t.onload=function(){200===t.status?WP_Smush.onboarding.showScanDialog():console.log("Request failed. Returned status of "+t.status)},t.send()},showScanDialog:function(){new e(this.onboardingModal).hide();var t=new e(this.scanFilesModal);t.show();var n=document.getElementById("wp_smush_options_nonce");setTimeout(function(){var e=new XMLHttpRequest;e.open("POST",ajaxurl+"?action=scan_for_resmush",!0),e.setRequestHeader("Content-type","application/x-www-form-urlencoded"),e.onload=function(){var n=document.querySelector("#smush-onboarding-dialog");n.parentNode.removeChild(n),t.hide(),200===e.status?setTimeout(function(){location.reload()},1e3):console.log("Request failed. Returned status of "+e.status)},e.send("type=media&get_ui=false&process_settings=false&wp_smush_options_nonce="+n.value)},3e3)}},WP_Smush.onboarding.template=_.memoize(function(e){var t,n={evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g,variable:"data"};return function(i){return _.templateSettings=n,(t=t||_.template(document.getElementById(e).innerHTML))(i)}}),window.addEventListener("load",function(){return WP_Smush.onboarding.init()})}()}).call(this,n(1))},function(e,t,n){"use strict";n.r(t),function(e){var t=n(5),i=n(3);!function(n){WP_Smush.directory={selected:[],tree:[],wp_smush_msgs:[],init:function(){var e=this,t=n("#wp-smush-progress-dialog"),s=0,r=0;void 0!==wp_smushit_data.dir_smush&&(s=wp_smushit_data.dir_smush.totalSteps,r=wp_smushit_data.dir_smush.currentScanStep),this.scanner=new i.a(s,r),wp_smush_msgs&&(this.wp_smush_msgs=wp_smush_msgs),n("div.sui-wrap").on("click","button.wp-smush-browse",function(t){t.preventDefault(),n("div.wp-smush-scan-result div.wp-smush-notice").hide(),n(this).attr("disabled")||(n(this).attr("disabled","disabled"),n("div.wp-smush-info").remove(),e.showSmushDialog(),e.initFileTree())}),n("body").on("click","a.wp-smush-dir-link",function(t){n("div.sui-wrap button.wp-smush-browse").length>0&&(t.preventDefault(),e.showSmushDialog(),e.initFileTree())}),n(".wp-smush-select-dir").on("click",function(t){if(t.preventDefault(),!n(this).attr("disabled")){var s=n(this);n("div.wp-smush-list-dialog div.sui-box-body").css({opacity:"0.8"}),n("div.wp-smush-list-dialog div.sui-box-body a").unbind("click"),s.attr("disabled","disabled"),s.parent().find(".add-dir-loader").addClass("sui-icon-loader sui-loading");var r=e.tree.getSelectedNodes(),o=n('input[name="wp-smush-base-path"]').val(),a=[];r.forEach(function(e){a.push(o+"/"+e.key)});var u={action:"image_list",smush_path:a,image_list_nonce:n('input[name="image_list_nonce"]').val()};n.get(ajaxurl,u,function(t){e.hideSmushDialog(),e.scanner=new i.a(t.data,0),e.showProgressDialog(t.data),e.scanner.scan()})}}),n("#wp-smush-list-dialog").on("click",".sui-dialog-close",function(){n(".wp-smush-browse").removeAttr("disabled"),e.hideSmushDialog(),n(".wp-smush-select-dir, button.wp-smush-browse, a.wp-smush-dir-link").removeAttr("disabled"),n(".wp-smush-select-dir, .wp-smush-list-dialog .sui-box-body").css({opacity:"1"})}),t.on("click","#cancel-directory-smush, .sui-dialog-close, .wp-smush-cancel-dir",function(t){t.preventDefault(),n(this).parent().find(".add-dir-loader").addClass("sui-icon-loader sui-loading"),e.scanner.cancel().done(function(){return window.location.href=e.wp_smush_msgs.directory_url})}),t.on("click",".sui-icon-play, .wp-smush-resume-scan",function(t){t.preventDefault(),e.scanner.resume()})},initFileTree:function(){var e=this,i=n("button.wp-smush-select-dir"),s={type:"GET",url:ajaxurl,data:{action:"smush_get_directory_list",list_nonce:n('input[name="list_nonce"]').val()},cache:!1};e.tree=Object(t.createTree)(".wp-smush-list-dialog .content",{autoCollapse:!0,clickFolderMode:3,checkbox:!0,debugLevel:0,selectMode:3,tabindex:"0",keyboard:!0,quicksearch:!0,source:s,lazyLoad:function(t,r){r.result=new Promise(function(e,t){s.data.dir=r.node.key,n.ajax(s).done(function(t){return e(t)}).fail(t)}),r.result.then(i.html(e.wp_smush_msgs.add_dir))},loadChildren:function(e,t){return t.node.fixSelection3AfterClick()},select:function(){return i.attr("disabled",!+e.tree.getSelectedNodes().length)},init:function(){return i.attr("disabled",!0)}})},showSmushDialog:function(){var t=document.getElementById("wp-smush-list-dialog");new e(t).show(),n(".wp-smush-list-dialog div.close").focus()},hideSmushDialog:function(){var t=document.getElementById("wp-smush-list-dialog");new e(t).hide(),new e(document.getElementById("wp-smush-progress-dialog")).hide()},showProgressDialog:function(t){n(".wp-smush-progress-dialog .sui-progress-state-text").html("0/"+t+" "+self.wp_smush_msgs.progress_smushed);var i=document.getElementById("wp-smush-progress-dialog");new e(i).show(),n(".wp-smush-progress-dialog div.close").focus()},updateProgressBar:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];e>100&&(e=100),n(".sui-progress-block .sui-progress-text span").text(e+"%"),n(".sui-progress-block .sui-progress-bar span").width(e+"%"),e>=90&&n(".sui-progress-state .sui-progress-state-text").text("Finalizing..."),t&&n(".sui-progress-state .sui-progress-state-text").text("Cancelling...")}},WP_Smush.directory.init()}(jQuery)}.call(this,n(1))},function(e,t,n){var i,s,r;
|
52 |
/*! jQuery UI - v1.12.1 - 2018-05-20
|
53 |
* http://jqueryui.com
|
54 |
* Includes: widget.js, position.js, keycode.js, scroll-parent.js, unique-id.js
|
60 |
* Copyright jQuery Foundation and other contributors
|
61 |
* Released under the MIT license.
|
62 |
* http://jquery.org/license
|
63 |
+
*/e.cleanData=e.cleanData||(t=e.cleanData,function(n){var i,s,r;for(r=0;null!=(s=n[r]);r++)try{(i=e._data(s,"events"))&&i.remove&&e(s).triggerHandler("remove")}catch(e){}t(n)}),e.widget=e.widget||function(t,n,i){var s,r,o,a={},u=t.split(".")[0],l=u+"-"+(t=t.split(".")[1]);return i||(i=n,n=e.Widget),e.isArray(i)&&(i=e.extend.apply(null,[{}].concat(i))),e.expr[":"][l.toLowerCase()]=function(t){return!!e.data(t,l)},e[u]=e[u]||{},s=e[u][t],r=e[u][t]=function(e,t){if(!this._createWidget)return new r(e,t);arguments.length&&this._createWidget(e,t)},e.extend(r,s,{version:i.version,_proto:e.extend({},i),_childConstructors:[]}),(o=new n).options=e.widget.extend({},o.options),e.each(i,function(t,i){e.isFunction(i)?a[t]=function(){function e(){return n.prototype[t].apply(this,arguments)}function s(e){return n.prototype[t].apply(this,e)}return function(){var t,n=this._super,r=this._superApply;return this._super=e,this._superApply=s,t=i.apply(this,arguments),this._super=n,this._superApply=r,t}}():a[t]=i}),r.prototype=e.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},a,{constructor:r,namespace:u,widgetName:t,widgetFullName:l}),s?(e.each(s._childConstructors,function(t,n){var i=n.prototype;e.widget(i.namespace+"."+i.widgetName,r,n._proto)}),delete s._childConstructors):n._childConstructors.push(r),e.widget.bridge(t,r),r},e.widget.extend=function(t){for(var n,i,r=s.call(arguments,1),o=0,a=r.length;o<a;o++)for(n in r[o])i=r[o][n],r[o].hasOwnProperty(n)&&void 0!==i&&(e.isPlainObject(i)?t[n]=e.isPlainObject(t[n])?e.widget.extend({},t[n],i):e.widget.extend({},i):t[n]=i);return t},e.widget.bridge=function(t,n){var i=n.prototype.widgetFullName||t;e.fn[t]=function(r){var o="string"==typeof r,a=s.call(arguments,1),u=this;return o?this.length||"instance"!==r?this.each(function(){var n,s=e.data(this,i);return"instance"===r?(u=s,!1):s?e.isFunction(s[r])&&"_"!==r.charAt(0)?(n=s[r].apply(s,a))!==s&&void 0!==n?(u=n&&n.jquery?u.pushStack(n.get()):n,!1):void 0:e.error("no such method '"+r+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; attempted to call method '"+r+"'")}):u=void 0:(a.length&&(r=e.widget.extend.apply(null,[r].concat(a))),this.each(function(){var t=e.data(this,i);t?(t.option(r||{}),t._init&&t._init()):e.data(this,i,new n(r,this))})),u}},e.Widget=e.Widget||function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,n){n=e(n||this.defaultElement||this)[0],this.element=e(n),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),this.classesElementLookup={},n!==this&&(e.data(n,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===n&&this.destroy()}}),this.document=e(n.style?n.ownerDocument:n.document||n),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){var t=this;this._destroy(),e.each(this.classesElementLookup,function(e,n){t._removeClass(n,e)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:e.noop,widget:function(){return this.element},option:function(t,n){var i,s,r,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},i=t.split("."),t=i.shift(),i.length){for(s=o[t]=e.widget.extend({},this.options[t]),r=0;r<i.length-1;r++)s[i[r]]=s[i[r]]||{},s=s[i[r]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=n}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=n}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return"classes"===e&&this._setOptionClasses(t),this.options[e]=t,"disabled"===e&&this._setOptionDisabled(t),this},_setOptionClasses:function(t){var n,i,s;for(n in t)s=this.classesElementLookup[n],t[n]!==this.options.classes[n]&&s&&s.length&&(i=e(s.get()),this._removeClass(s,n),i.addClass(this._classes({element:i,keys:n,classes:t,add:!0})))},_setOptionDisabled:function(e){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!e),e&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(t){var n=[],i=this;function s(s,r){var o,a;for(a=0;a<s.length;a++)o=i.classesElementLookup[s[a]]||e(),o=t.add?e(e.unique(o.get().concat(t.element.get()))):e(o.not(t.element).get()),i.classesElementLookup[s[a]]=o,n.push(s[a]),r&&t.classes[s[a]]&&n.push(t.classes[s[a]])}return t=e.extend({element:this.element,classes:this.options.classes||{}},t),this._on(t.element,{remove:"_untrackClassesElement"}),t.keys&&s(t.keys.match(/\S+/g)||[],!0),t.extra&&s(t.extra.match(/\S+/g)||[]),n.join(" ")},_untrackClassesElement:function(t){var n=this;e.each(n.classesElementLookup,function(i,s){-1!==e.inArray(t.target,s)&&(n.classesElementLookup[i]=e(s.not(t.target).get()))})},_removeClass:function(e,t,n){return this._toggleClass(e,t,n,!1)},_addClass:function(e,t,n){return this._toggleClass(e,t,n,!0)},_toggleClass:function(e,t,n,i){i="boolean"==typeof i?i:n;var s="string"==typeof e||null===e,r={extra:s?t:n,keys:s?e:t,element:s?this.element:e,add:i};return r.element.toggleClass(this._classes(r),i),this},_on:function(t,n,i){var s,r=this;"boolean"!=typeof t&&(i=n,n=t,t=!1),i?(n=s=e(n),this.bindings=this.bindings.add(n)):(i=n,n=this.element,s=this.widget()),e.each(i,function(i,o){function a(){if(t||!0!==r.options.disabled&&!e(this).hasClass("ui-state-disabled"))return("string"==typeof o?r[o]:o).apply(r,arguments)}"string"!=typeof o&&(a.guid=o.guid=o.guid||a.guid||e.guid++);var u=i.match(/^([\w:-]*)\s*(.*)$/),l=u[1]+r.eventNamespace,d=u[2];d?s.on(l,d,a):n.on(l,a)})},_off:function(t,n){n=(n||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(n).off(n),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){var n=this;return setTimeout(function(){return("string"==typeof e?n[e]:e).apply(n,arguments)},t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(e(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(e(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(e(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(e(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,n,i){var s,r,o=this.options[t];if(i=i||{},(n=e.Event(n)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),n.target=this.element[0],r=n.originalEvent)for(s in r)s in n||(n[s]=r[s]);return this.element.trigger(n,i),!(e.isFunction(o)&&!1===o.apply(this.element[0],[n].concat(i))||n.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,n){e.Widget.prototype["_"+t]=function(i,s,r){var o;"string"==typeof s&&(s={effect:s});var a=s?!0===s||"number"==typeof s?n:s.effect||n:t;"number"==typeof(s=s||{})&&(s={duration:s}),o=!e.isEmptyObject(s),s.complete=r,s.delay&&i.delay(s.delay),o&&e.effects&&e.effects.effect[a]?i[t](s):a!==t&&i[a]?i[a](s.duration,s.easing,r):i.queue(function(n){e(this)[t](),r&&r.call(i[0]),n()})}}),e.widget,
|
64 |
/*!
|
65 |
* jQuery UI Position 1.12.1
|
66 |
* http://jqueryui.com
|
71 |
*
|
72 |
* http://api.jqueryui.com/position/
|
73 |
*/
|
74 |
+
function(){var t,n=Math.max,i=Math.abs,s=/left|center|right/,r=/top|center|bottom/,o=/[\+\-]\d+(\.[\d]+)?%?/,a=/^\w+/,u=/%$/,l=e.fn.position;function d(e,t,n){return[parseFloat(e[0])*(u.test(e[0])?t/100:1),parseFloat(e[1])*(u.test(e[1])?n/100:1)]}function c(t,n){return parseInt(e.css(t,n),10)||0}function h(t){var n=t[0];return 9===n.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(n)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:n.preventDefault?{width:0,height:0,offset:{top:n.pageY,left:n.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.position=e.position||{scrollbarWidth:function(){if(void 0!==t)return t;var n,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),r=s.children()[0];return e("body").append(s),n=r.offsetWidth,s.css("overflow","scroll"),n===(i=r.offsetWidth)&&(i=s[0].clientWidth),s.remove(),t=n-i},getScrollInfo:function(t){var n=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),s="scroll"===n||"auto"===n&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?e.position.scrollbarWidth():0,height:s?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var n=e(t||window),i=e.isWindow(n[0]),s=!!n[0]&&9===n[0].nodeType;return{element:n,isWindow:i,isDocument:s,offset:i||s?{left:0,top:0}:e(t).offset(),scrollLeft:n.scrollLeft(),scrollTop:n.scrollTop(),width:n.outerWidth(),height:n.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return l.apply(this,arguments);t=e.extend({},t);var u,p,f,m,g,v,y=e(t.of),_=e.position.getWithinInfo(t.within),w=e.position.getScrollInfo(_),b=(t.collision||"flip").split(" "),x={};return v=h(y),y[0].preventDefault&&(t.at="left top"),p=v.width,f=v.height,m=v.offset,g=e.extend({},m),e.each(["my","at"],function(){var e,n,i=(t[this]||"").split(" ");1===i.length&&(i=s.test(i[0])?i.concat(["center"]):r.test(i[0])?["center"].concat(i):["center","center"]),i[0]=s.test(i[0])?i[0]:"center",i[1]=r.test(i[1])?i[1]:"center",e=o.exec(i[0]),n=o.exec(i[1]),x[this]=[e?e[0]:0,n?n[0]:0],t[this]=[a.exec(i[0])[0],a.exec(i[1])[0]]}),1===b.length&&(b[1]=b[0]),"right"===t.at[0]?g.left+=p:"center"===t.at[0]&&(g.left+=p/2),"bottom"===t.at[1]?g.top+=f:"center"===t.at[1]&&(g.top+=f/2),u=d(x.at,p,f),g.left+=u[0],g.top+=u[1],this.each(function(){var s,r,o=e(this),a=o.outerWidth(),l=o.outerHeight(),h=c(this,"marginLeft"),v=c(this,"marginTop"),k=a+h+c(this,"marginRight")+w.width,C=l+v+c(this,"marginBottom")+w.height,S=e.extend({},g),T=d(x.my,o.outerWidth(),o.outerHeight());"right"===t.my[0]?S.left-=a:"center"===t.my[0]&&(S.left-=a/2),"bottom"===t.my[1]?S.top-=l:"center"===t.my[1]&&(S.top-=l/2),S.left+=T[0],S.top+=T[1],s={marginLeft:h,marginTop:v},e.each(["left","top"],function(n,i){e.ui.position[b[n]]&&e.ui.position[b[n]][i](S,{targetWidth:p,targetHeight:f,elemWidth:a,elemHeight:l,collisionPosition:s,collisionWidth:k,collisionHeight:C,offset:[u[0]+T[0],u[1]+T[1]],my:t.my,at:t.at,within:_,elem:o})}),t.using&&(r=function(e){var s=m.left-S.left,r=s+p-a,u=m.top-S.top,d=u+f-l,c={target:{element:y,left:m.left,top:m.top,width:p,height:f},element:{element:o,left:S.left,top:S.top,width:a,height:l},horizontal:r<0?"left":s>0?"right":"center",vertical:d<0?"top":u>0?"bottom":"middle"};p<a&&i(s+r)<p&&(c.horizontal="center"),f<l&&i(u+d)<f&&(c.vertical="middle"),n(i(s),i(r))>n(i(u),i(d))?c.important="horizontal":c.important="vertical",t.using.call(this,e,c)}),o.offset(e.extend(S,{using:r}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,r=s.isWindow?s.scrollLeft:s.offset.left,o=s.width,a=e.left-t.collisionPosition.marginLeft,u=r-a,l=a+t.collisionWidth-o-r;t.collisionWidth>o?u>0&&l<=0?(i=e.left+u+t.collisionWidth-o-r,e.left+=u-i):e.left=l>0&&u<=0?r:u>l?r+o-t.collisionWidth:r:u>0?e.left+=u:l>0?e.left-=l:e.left=n(e.left-a,e.left)},top:function(e,t){var i,s=t.within,r=s.isWindow?s.scrollTop:s.offset.top,o=t.within.height,a=e.top-t.collisionPosition.marginTop,u=r-a,l=a+t.collisionHeight-o-r;t.collisionHeight>o?u>0&&l<=0?(i=e.top+u+t.collisionHeight-o-r,e.top+=u-i):e.top=l>0&&u<=0?r:u>l?r+o-t.collisionHeight:r:u>0?e.top+=u:l>0?e.top-=l:e.top=n(e.top-a,e.top)}},flip:{left:function(e,t){var n,s,r=t.within,o=r.offset.left+r.scrollLeft,a=r.width,u=r.isWindow?r.scrollLeft:r.offset.left,l=e.left-t.collisionPosition.marginLeft,d=l-u,c=l+t.collisionWidth-a-u,h="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];d<0?((n=e.left+h+p+f+t.collisionWidth-a-o)<0||n<i(d))&&(e.left+=h+p+f):c>0&&((s=e.left-t.collisionPosition.marginLeft+h+p+f-u)>0||i(s)<c)&&(e.left+=h+p+f)},top:function(e,t){var n,s,r=t.within,o=r.offset.top+r.scrollTop,a=r.height,u=r.isWindow?r.scrollTop:r.offset.top,l=e.top-t.collisionPosition.marginTop,d=l-u,c=l+t.collisionHeight-a-u,h="top"===t.my[1]?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,p="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,f=-2*t.offset[1];d<0?((s=e.top+h+p+f+t.collisionHeight-a-o)<0||s<i(d))&&(e.top+=h+p+f):c>0&&((n=e.top-t.collisionPosition.marginTop+h+p+f-u)>0||i(n)<c)&&(e.top+=h+p+f)}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}}}(),e.ui.position,e.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},e.fn.scrollParent=function(t){var n=this.css("position"),i="absolute"===n,s=t?/(auto|scroll|hidden)/:/(auto|scroll)/,r=this.parents().filter(function(){var t=e(this);return(!i||"static"!==t.css("position"))&&s.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==n&&r.length?r:e(this[0].ownerDocument||document)},e.fn.extend({uniqueId:(n=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}})})?i.apply(t,s):i)||(e.exports=r)},function(e,t){!function(){"use strict";WP_Smush.CDN={cdnEnableButton:document.getElementById("smush-enable-cdn"),cdnDisableButton:document.getElementById("smush-cancel-cdn"),cdnStatsBox:document.querySelector(".smush-cdn-stats"),init:function(){var e=this;this.cdnEnableButton&&this.cdnEnableButton.addEventListener("click",function(t){t.currentTarget.classList.add("sui-button-onload");var n=t.currentTarget.querySelector(".sui-icon-loader");n.style.display="none",n.style.display="flex",e.toggle_cdn(!0)}),this.cdnDisableButton&&this.cdnDisableButton.addEventListener("click",function(t){t.preventDefault(),e.toggle_cdn(!1)}),this.updateStatsBox()},toggle_cdn:function(e){var t=this,n=document.getElementsByName("wp_smush_options_nonce"),i=new XMLHttpRequest;i.open("POST",ajaxurl+"?action=smush_toggle_cdn",!0),i.setRequestHeader("Content-type","application/x-www-form-urlencoded"),i.onload=function(){if(200===i.status){var e=JSON.parse(i.response);void 0!==e.success&&e.success?location.reload():void 0!==e.data.message&&t.showNotice(e.data.message)}else t.showNotice("Request failed. Returned status of "+i.status)},i.send("param="+e+"&_ajax_nonce="+n[0].value)},showNotice:function(e){if(void 0!==e){var t=document.getElementById("wp-smush-ajax-notice");t.classList.add("sui-notice-error"),t.innerHTML="<p>".concat(e,"</p>"),this.cdnEnableButton&&this.cdnEnableButton.classList.remove("sui-button-onload"),t.style.display="block",setTimeout(function(){t.style.display="none"},5e3)}},updateStatsBox:function(){var e=this;if(void 0!==this.cdnStatsBox&&this.cdnStatsBox&&window.location.search.includes("view=cdn")){this.toggleElements();var t=new XMLHttpRequest;t.open("POST",ajaxurl+"?action=get_cdn_stats",!0),t.onload=function(){if(200===t.status){var n=JSON.parse(t.response);void 0!==n.success&&n.success?e.toggleElements():void 0!==n.data.message&&e.showNotice(n.data.message)}else e.showNotice("Request failed. Returned status of "+t.status)},t.send()}},toggleElements:function(){for(var e=this.cdnStatsBox.querySelector(".sui-icon-loader"),t=this.cdnStatsBox.querySelectorAll(".wp-smush-stats > :not(.sui-icon-loader)"),n=0;n<t.length;n++)t[n].classList.toggle("sui-hidden");e.classList.toggle("sui-hidden")}},WP_Smush.CDN.init()}()},function(e,t){!function(){"use strict";WP_Smush.Lazyload={lazyloadEnableButton:document.getElementById("smush-enable-lazyload"),lazyloadDisableButton:document.getElementById("smush-cancel-lazyload"),init:function(){var e=this,t=this;this.lazyloadEnableButton&&this.lazyloadEnableButton.addEventListener("click",function(t){t.currentTarget.classList.add("sui-button-onload");var n=t.currentTarget.querySelector(".sui-icon-loader");n.style.display="none",n.offsetHeight,n.style.display="flex",e.toggle_lazy_load(!0)}),this.lazyloadDisableButton&&this.lazyloadDisableButton.addEventListener("click",function(t){t.preventDefault(),e.toggle_lazy_load(!1)});var n=document.getElementById("smush-remove-spinner");n&&n.addEventListener("click",function(t){t.preventDefault(),e.removeLoaderIcon()});var i=document.getElementById("smush-remove-placeholder");i&&i.addEventListener("click",function(t){t.preventDefault(),e.removeLoaderIcon("placeholder")});var s=document.querySelectorAll(".smush-ll-remove");s&&0<s.length&&s.forEach(function(e){e.addEventListener("click",function(e){e.preventDefault(),e.target.closest("li").style.display="none",t.remove(e.target.dataset.id,e.target.dataset.type)})})},toggle_lazy_load:function(e){var t=this,n=document.getElementsByName("wp_smush_options_nonce"),i=new XMLHttpRequest;i.open("POST",ajaxurl+"?action=smush_toggle_lazy_load",!0),i.setRequestHeader("Content-type","application/x-www-form-urlencoded"),i.onload=function(){if(200===i.status){var e=JSON.parse(i.response);void 0!==e.success&&e.success?location.reload():void 0!==e.data.message&&t.showNotice(e.data.message)}else console.log("Request failed. Returned status of "+i.status)},i.send("param="+e+"&_ajax_nonce="+n[0].value)},showNotice:function(e){if(void 0!==e){var t=document.getElementById("wp-smush-ajax-notice");t.classList.add("sui-notice-error"),t.innerHTML="<p>".concat(e,"</p>"),this.cdnEnableButton&&this.cdnEnableButton.classList.remove("sui-button-onload"),t.style.display="block",setTimeout(function(){t.style.display="none"},5e3)}},addLoaderIcon:function(){var e,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"spinner";e?e.open():((e=wp.media({title:"Select or upload an icon",button:{text:"Select icon"},multiple:!1})).on("select",function(){var n=e.state().get("selection").first().toJSON(),i=document.getElementById("smush-"+t+"-icon-preview");i.style.backgroundImage='url("'+n.url+'")',i.style.display="block",document.getElementById("smush-"+t+"-icon-file").setAttribute("value",n.id),document.getElementById("smush-upload-"+t).style.display="none";var s=document.getElementById("smush-remove-"+t);s.querySelector("span").innerHTML=n.filename,s.style.display="block"}),e.open())},removeLoaderIcon:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"spinner",t=document.getElementById("smush-"+e+"-icon-preview");t.style.backgroundImage="",t.style.display="none",document.getElementById("smush-upload-"+e).style.display="block",document.getElementById("smush-remove-"+e).style.display="none",document.getElementById("smush-"+e+"-icon-file").setAttribute("value","")},remove:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"spinner",n=document.getElementsByName("wp_smush_options_nonce"),i=new XMLHttpRequest;i.open("POST",ajaxurl+"?action=smush_remove_icon",!0),i.setRequestHeader("Content-type","application/x-www-form-urlencoded"),i.send("id="+e+"&type="+t+"&_ajax_nonce="+n[0].value)}},WP_Smush.Lazyload.init()}()},function(e,t,n){(function(e){!function(){"use strict";WP_Smush.restore={modal:document.getElementById("smush-restore-images-dialog"),contentContainer:document.getElementById("smush-bulk-restore-content"),settings:{slide:"start",success:0,errors:[]},items:[],success:[],errors:[],currentStep:0,totalSteps:0,init:function(){this.modal&&(this.settings={slide:"start",success:0,errors:[]},this.renderTemplate(),new e(this.modal).show())},renderTemplate:function(){var e=WP_Smush.onboarding.template("smush-bulk-restore")(this.settings);e&&(this.contentContainer.innerHTML=e),this.bindSubmit()},bindSubmit:function(){var e=this.modal.querySelector('button[id="smush-bulk-restore-button"]'),t=this;e&&e.addEventListener("click",function(e){e.preventDefault(),t.modal.querySelector(".sui-dialog-content").style.maxWidth="460px",t.settings={slide:"progress"},t.errors=[],t.renderTemplate(),t.initScan()})},cancel:function(){"start"===this.settings.slide||"finish"===this.settings.slide?new e(this.modal).hide():(this.updateProgressBar(!0),window.location.reload())},updateProgressBar:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=0;0<this.currentStep&&(t=Math.min(Math.round(100*this.currentStep/this.totalSteps),99)),t>100&&(t=100),this.modal.querySelector(".sui-progress-text span").innerHTML=t+"%",this.modal.querySelector(".sui-progress-bar span").style.width=t+"%";var n=this.modal.querySelector(".sui-progress-state-text");n.innerHTML=t>=90?"Finalizing...":e?"Cancelling...":this.currentStep+"/"+this.totalSteps+" images restored"},initScan:function(){var e=this,t=document.getElementById("_wpnonce"),n=new XMLHttpRequest;n.open("POST",ajaxurl+"?action=get_image_count",!0),n.setRequestHeader("Content-type","application/x-www-form-urlencoded"),n.onload=function(){if(200===n.status){var t=JSON.parse(n.response);void 0!==t.data.items&&(e.items=t.data.items,e.totalSteps=t.data.items.length,e.step())}else console.log("Request failed. Returned status of "+n.status)},n.send("_ajax_nonce="+t.value)},step:function(){var e=this,t=this,n=document.getElementById("_wpnonce");if(0<this.items.length){var i=this.items.pop(),s=new XMLHttpRequest;s.open("POST",ajaxurl+"?action=restore_step",!0),s.setRequestHeader("Content-type","application/x-www-form-urlencoded"),s.onload=function(){if(e.currentStep++,200===s.status){var n=JSON.parse(s.response);void 0!==n.data.success&&n.data.success?t.success.push(i):t.errors.push({id:i,src:n.data.src,thumb:n.data.thumb,link:n.data.link})}t.updateProgressBar(),t.step()},s.send("item="+i+"&_ajax_nonce="+n.value)}else this.settings={slide:"finish",success:this.success.length,errors:this.errors,total:this.totalSteps},t.renderTemplate(),0<this.errors.length&&(this.modal.querySelector(".sui-dialog-content").style.maxWidth="660px")}},WP_Smush.restore.template=_.memoize(function(e){var t,n={evaluate:/<#([\s\S]+?)#>/g,interpolate:/\{\{\{([\s\S]+?)\}\}\}/g,escape:/\{\{([^\}]+?)\}\}(?!\})/g,variable:"data"};return function(i){return _.templateSettings=n,(t=t||_.template(document.getElementById(e).innerHTML))(i)}})}()}).call(this,n(1))},function(e,t){jQuery(function(){var e=jQuery(".smush-notice"),t=e.find(".smush-notice-act"),n=e.find(".smush-notice-dismiss");function i(){e.fadeTo(100,0,function(){e.slideUp(100,function(){e.remove()})})}function s(t){e.attr("data-message",t),e.addClass("loading");jQuery.post(ajaxurl,{action:"dismiss_upgrade_notice"})}function r(e){var t={action:e};jQuery.post(ajaxurl,t)}e.fadeIn(500),t.click(function(e){i(),s(t.data("msg"))}),n.click(function(e){i(),s(t.data("msg"))}),jQuery(".wp-smush-update-info").on("click",".notice-dismiss",function(t){t.preventDefault(),e=jQuery(this),i(),r("dismiss_update_info")}),jQuery("div.wp-smush-s3support-alert").on("click",".sui-notice-dismiss > a",function(t){e=jQuery(this),i(),r("dismiss_s3support_alert")})})}]);
|
75 |
//# sourceMappingURL=smush-admin.min.js.map
|
app/assets/js/smush-admin.min.js.map
CHANGED
@@ -1 +1 @@
|
|
1 |
-
{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./_src/js/smush/smush.js","webpack:///./node_modules/@wpmudev/shared-ui/js/a11y-dialog.js","webpack:///(webpack)/buildin/global.js","webpack:///./_src/js/smush/directory-scanner.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/jquery.fancytree/dist/modules/jquery.fancytree.js","webpack:///./_src/js/app.js","webpack:///./_src/js/modules/helpers.js","webpack:///./_src/js/modules/admin.js","webpack:///./_src/js/modules/bulk-smush.js","webpack:///./_src/js/modules/onboarding.js","webpack:///./_src/js/modules/directory-smush.js","webpack:///./node_modules/jquery.fancytree/dist/modules/jquery.fancytree.ui-deps.js","webpack:///./_src/js/smush/cdn.js","webpack:///./_src/js/smush/lazy-load.js","webpack:///./_src/js/modules/bulk-restore.js","webpack:///./_src/js/modules/notice.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Smush","button","bulk","type","arguments","length","undefined","_classCallCheck","this","errors","progressBar","jQuery","smushed","parseInt","find","html","total","skip_resmush","data","is_bulk","_typeof","url","ajaxurl","log","deferred","Deferred","ids","wp_smushit_data","resmush","unsmushed","concat","filter","itm","a","indexOf","is_bulk_resmush","status","parent","smush_type","single_ajax_suffix","bulk_ajax_suffix","smushAddParams","action","start","run","bind_deferred_events","cancel_ajax","isEmptyObject","param","member_validity_notice","show_warning","show","hide","id","send_url","nonce","attachment_id","_nonce","ajax","timeout","dataType","cur_ele","txt","state","progress_button","parents","eq","wp_smush_msgs","all_done","toggleClass","savings","savings_percent","savings_bytes","orig_diff","pro_savings","percent","WP_Smush","helpers","precise_round","formatBytes","scan_type","is_nextgen","super_savings","size_before","size_after","formatted_size","statsHuman","getFormatFromString","getSizeFromString","isNaN","savings_resize","count_images","count_resize","smushedCountDiv","count_supersmushed","smush_conversion_savings","savings_conversion","conversion_savings","smush_resize_savings","savings_value","resize_savings","resize_message","set_pro_savings","smush_pro_savings","pro_savings_percent","pro_savings_bytes","sidenavCountDiv","count","addClass","removeClass","new_size","attachmentSize","contents","nodeType","text","sizeStrongEl","image_stats","is_lossy","bytes","errorMsg","fileName","thumbnail","tableDiv","error_ignore","current_id","u_index","splice","index","attr","bulk_start","single_start","remove","show_loader","prop","removeAttr","progress_bar","smushing","hide_loader","self","request","done","response","replaceWith","membership_validity","success","error_msg","append","stats","update_image_stats","enable_button","fail","message_holder","progress_message","sync_stats","extend","count_smushed","count_total","update_stats","always","statusIcon","notice","progress","resumeCountDiv","wrapperCountDiv","_res","update_localized_stats","update_remaining_count","_update_progress","width","css","continue_smush","push","nonce_value","shift","update_smush_ids","nonce_field","val","res","error","increment_errors","prepare_error_row","error_message","file_name","increment_smushed","is_resolved","update_progress","document","getElementById","classList","unshift","free_exceeded","single_done","continue","call_ajax","resolve","msg","error_in_bulk","replace","bulk_done","on","abort","global","__WEBPACK_AMD_DEFINE_RESULT__","focusedBeforeDialog","FOCUSABLE_ELEMENTS","A11yDialog","node","targets","_show","_hide","_bindKeypress","_listeners","toArray","collection","Array","slice","$$","selector","context","querySelectorAll","setFocusToFirstItem","focusableChildren","getFocusableChildren","focus","join","child","offsetWidth","offsetHeight","getClientRects","siblings","_targets","target","NodeList","isPrototypeOf","Element","collect","parentNode","childNodes","setAttribute","shown","_openers","forEach","opener","addEventListener","_closers","closer","_fire","event","add","getElementsByClassName","className","removeAttribute","original","getAttribute","activeElement","getElementsByTagName","timeout_node","setTimeout","removeEventListener","destroy","handler","off","listener","which","preventDefault","focusedItemIndex","shiftKey","trapTabKey","_maintainFocus","contains","apply","window","g","Function","e","DirectoryScanner","totalSteps","currentStep","cancelling","failedItems","obj","scan","remainingSteps","step","$","post","cancel","getProgress","Math","min","round","onFinishStep","progress_smushed","directory","updateProgressBar","onFinish","location","href","directory_url","limitReached","dialog","bulk_resume","resume","items","failed","factory","w","Error","noGlobal","arr","getProto","getPrototypeOf","class2type","toString","hasOwn","fnToString","ObjectFunctionString","support","isFunction","isWindow","preservedScriptAttributes","src","noModule","DOMEval","code","doc","script","createElement","head","appendChild","removeChild","toType","fn","init","rtrim","isArrayLike","jquery","constructor","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","first","last","len","j","end","sort","options","copy","copyIsArray","clone","deep","isPlainObject","isArray","expando","random","isReady","noop","proto","Ctor","globalEval","trim","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","guid","iterator","split","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","Date","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","els","seed","nid","match","groups","newSelector","newContext","ownerDocument","exec","qsa","test","toSelector","testContext","qsaError","keys","cache","cacheLength","markFunction","assert","el","addHandle","attrs","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","top","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","expr","elements","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","not","matcher","unmatched","has","lang","elemLang","hash","root","hasFocus","tabIndex","enabled","checked","selected","selectedIndex","empty","header","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","children","prev","sibling","closest","prevAll","addBack","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","reject","noValue","method","promise","then","Callbacks","flag","createOptions","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","disable","lock","fireWith","func","tuples","catch","pipe","fns","newDefer","tuple","returned","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","configurable","set","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","getData","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","values","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","th","div","buildFragment","scripts","selection","ignored","wrap","attached","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","err","safeActiveElement","types","one","origFn","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","trigger","Event","handleObjIn","eventHandle","events","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","prepend","insertBefore","before","after","replaceChild","appendTo","prependTo","insertAfter","replaceAll","insert","rnumnonpx","getStyles","getComputedStyle","rboxStyle","curCSS","computed","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","measure","parseFloat","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","Tween","easing","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","eased","duration","pos","fx","scrollTop","scrollLeft","linear","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","height","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","complete","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","clearTimeout","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","attrNames","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","for","class","classes","curValue","clazz","finalValue","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","responses","isSuccess","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","hover","fnOver","fnOut","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","_jQuery","_$","noConflict","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_ARRAY__","ui","fancytree","FT","TEST_IMG","REX_HTML","REX_TOOLTIP","ENTITY_MAP","&","<","\"","'","/","IGNORE_KEYCODES","16","17","18","SPECIAL_KEYCODES","8","9","10","13","19","20","27","32","33","34","35","36","37","38","39","40","45","46","59","61","96","97","98","99","100","101","102","103","104","105","106","107","109","110","111","112","113","114","115","116","117","118","119","120","121","122","123","144","145","173","186","187","188","189","190","191","192","219","220","221","222","MODIFIERS","91","93","MOUSE_BUTTONS","1","2","3","CLASS_ATTRS","CLASS_ATTR_MAP","TREE_ATTRS","NODE_ATTRS","NODE_ATTR_MAP","NODE_ATTR_LOWERCASE_MAP","NONE_NODE_DATA_MAP","_assert","getTime","FancytreeNode","_findDirectChild","ptr","cl","_setChildren","tree","_callHook","addChildren","firstNode","origFirstChild","getFirstChild","origLastChild","getLastChild","nodeList","render","renderStatus","ul","selectMode","fixSelection3FromEndNodes","triggerModifyChild","addNode","getParent","getNextSibling","addPagingNode","title","strings","moreData","statusNodeType","icon","partload","appendSibling","applyPatch","patch","_getResolvedPromise","IGNORE_MAP","removeChildren","isVisible","renderTitle","setExpanded","collapseSiblings","copyTo","toDict","countChildren","debug","debugLevel","consoleApply","discard","resetLazy","discardMarkup","includeSelf","findAll","_makeNodeTitleMatcher","visit","findFirst","findRelatedNode","where","includeHidden","_changeSelectStatusAttrs","changed","unselectable","evalOption","unselectableStatus","partsel","fixSelection3AfterClick","callOpts","isSelected","radiogroup","_walk","allSelected","someSelected","unselState","lazy","visitParents","fromDict","dict","getChildren","hasChildren","getIndex","getIndexHier","separator","digits","getParentList","substr","getKeyPath","excludeSelf","sep","keyPathSeparator","getPath","getLevel","level","dtn","ac","includeRoot","part","path","isFunc","getPrevSibling","getSelectedNodes","stopOnParents","isStatusNode","focusNode","info","isActive","activeNode","isBelowOf","otherNode","isChildOf","isDescendantOf","isExpanded","isFirstSibling","isFolder","folder","isLastSibling","isLazy","isLoaded","isLoading","_isLoading","isRoot","isRootNode","isPartsel","isPartload","rootNode","isPagingNode","isTopLevel","isUndefined","hasFilter","enableFilter","subMatchCount","lazyLoad","forceReload","wasExpanded","_triggerNodeEvent","makeVisible","deferreds","dfd","effects","noAnimation","scroll","scrollIntoView","moveTo","targetNode","prevParent","targetParent","navigate","activate","KC","LEFT","RIGHT","setFocus","setActive","childNode","force","scheduleAction","ms","x","scrollOfs","scrollParent","topNode","$scrollParent","$container","topNodeY","nodeY","containerOffsetTop","nodeHeight","span","topOfs","bottomOfs","bottom","containerHeight","$animateTarget","isParentWindow","newScrollTop","innerHeight","clientHeight","setSelected","setStatus","details","setTitle","triggerModify","sortChildren","cmp","y","recursive","wasAdded","statusElem","statusClassPropName","curClasses","extraClasses","toggleExpanded","toggleSelected","operation","modifyChild","visitAndLoad","_recursion","loaders","visitSiblings","Fancytree","_makeHookContext","ctx","widget","typeInfo","contextObject","_extraArgs","_setExpiringValue","_tempCache","expire","_getExpiringValue","entry","_requireExtension","required","thisName","_local","extList","extensions","isBefore","isMissing","ext","badOrder","activateKey","getNodeByKey","patchList","p2","patchCount","deferredList","_makeResolveFunc","clear","enable","enableUpdate","_enableUpdate","expandAll","findNextNode","startNode","reMatch","_checkNode","visitRows","BACKSPACE","HOME","END","UP","DOWN","generateFormElements","selectedName","_id","activeName","$result","_appender","getActiveNode","getFocusNode","getOption","optionName","searchRoot","idPrefix","ftnode","_hasFocus","loadKeyPath","keyPathList","optsOrCallback","pathSegList","matchKey","charAt","_loadKeyPathImpl","nodeKey","remain","remainMap","tmpParent","segList","subDfd","__findChild","__lazyload","errMsg","reactivate","noFocus","reload","selectAll","setOption","_trigger","_triggerTreeEvent","_visitRowsUp","siblingOfs","skipFirstNode","checkFilter","nodeClick","targetType","focusOnSelect","clickFolderMode","nodeSetFocus","nodeCollapseSiblings","nodeDblclick","nodeKeydown","matchNode","stamp","specialModifiers","isAlnum","$target","handled","autoActivate","quicksearch","lastQuicksearchTime","lastQuicksearchTerm","eventToString","nodeSetExpanded","nodeToggleSelected","nodeSetActive","nodeLoadChildren","requestId","_requestId","debugDelay","textStatus","errorObj","postProcess","enableAspx","errorThrown","reason","nodeSetStatus","ctxErr","metaData","noDataRes","nodata","nodeLoadKeyPath","nodeRemoveChild","subCtx","nodeRemoveChildren","nodeRemoveMarkup","nodeRemoveChildMarkup","li","nodeRenderStatus","nodeRender","collapsed","_recursive","childLI","childNode1","childNode2","aria","firstTime","successorLi","generateIds","nodeRenderTitle","createNode","renderNode","$div","nodeTitle","role","tooltip","iconTooltip","ares","minExpandLevel","iconClass","_escapeTooltip","imagePath","escapeHtml","titlesTabbable","escapeTitles","enhanceTitle","$title","$ariaElem","isLastSib","cn","_classNames","cnList","focused","Boolean","lastsib","loading","_error","statusNodePrefix","combinedExpanderPrefix","combinedIconPrefix","noEvents","_getRejectedPromise","activeVisible","_afterLoad","prevAC","autoCollapse","autoScroll","effect","toggleEffect","animating","ctx2","isInput","calledByNode","uniqueId","nodeSetSelected","_lastSelectIntent","lastSelectedNode","_setStatusNode","_clearStatusNode","loadError","noData","nodeToggleExpanded","treeClear","treeCreate","treeDestroy","$source","treeInit","checkboxAutoHide","rtl","treeLoad","$ul","element","rootCtx","parseHtml","_getElementDataAsDict","treeRegisterNode","treeSetFocus","_lastMousedownNode","treeSetOption","callDefault","callCreate","callRender","_super","Widget","_setOption","treeStructureChanged","keyboard","treeId","_create","extension","extName","_extensions","_simpleDeepMerge","_subclassObject","icons","tabbable","_init","_bind","_unbind","_ns","getNode","prevPhase","phase","et","getEventTarget","getTree","version","buildType","_nextId","_nextNodeKey","_FancytreeClass","_FancytreeNodeClass","jquerySupports","positionMyOfs","dottedVersion","major","minor","verParts","testParts","isVersionAtLeast","cond","createTree","debounce","invokeAsap","fixPositionOptions","my","at","myParts","atParts","dx","dy","tcn","getEventTargetType","orgEl","nodeObject","treeOptions","treeOpt","nodeOpt","setSpanIcon","baseClass","$span","keyEventToString","overrideMethod","instance","methodName","prevSuper","iPos","tmp2","$children","allData","lowerCaseAttr","$li","$liSpan","$liA","search","substring","registerExtension","definition","unescapeHtml","_makeVirtualFunction","prevFunc","baseFunc","_superApply","prevLocal","prevSuperApply","attrName","argArray","$el","uiFancytree","unselectableIgnore","hideCheckbox","defaultKey","lazyload","loaderror","removeNode","columns","systemFocusElement","viewport","ariaPropName","nodeContainerAttrName","fakeParent","includes","require","units","abs","u","toFixed","decimals","sign","pow","findPos","cur_top","offsetTop","geturlparam","sURLVariables","sParameterName","resetSettings","smush_url","smush_vars","get_smush_status","__webpack_exports__","_smush_smush__WEBPACK_IMPORTED_MODULE_0__","remove_element","process_smush_action","current_button","smush_action","c_element","disable_links","enable_links","run_re_check","process_settings","notices","get_ui","wp_smush_options_nonce","resmush_ids","count_image","super_smush","enable_lossy","super_smush_stats","resmush_complete","resmush_check","reCheckMessage","goToByScroll","slide_symbol","otherClass","setting_type","setting_input","checking","smush_percent","savings_dir_smush","orig_size","image_size","remainingCountDiv","scroll_and_enable_resize","scroll_and_enable_lossy","setting_hash","keypress","wrapper_div","width_only","height_only","resize_checkbox","width_input","width_error_note","height_input","height_error_note","width_error","height_error","resize_sizes","validate_resize_settings","settings_wrap","notice_wrap","warning_wrap","membership_valid","membership_invalid","wp_smush_run_re_check","dir_smush","ajax_error","stats_human","stats_percent","human","combined_stats","c_stats","total_count","update_cummulative_stats","keyup","modal","onboarding","membership","onboardingModal","scanFilesModal","slide","auto","lossy","strip_exif","lazy_load","usage","contentContainer","onboardingSlides","touchX","touchY","dataset","renderTemplate","skipButton","querySelector","skipSetup","handleTouchStart","firstTouch","handleTouchMove","xUp","yUp","xDiff","yDiff","directionClass","_this","template","bindSubmit","submitButton","showScanDialog","stringify","whereTo","newIndex","goTo","scanDialog","memoize","evaluate","interpolate","variable","templateSettings","jquery_fancytree__WEBPACK_IMPORTED_MODULE_0__","_smush_directory_scanner__WEBPACK_IMPORTED_MODULE_1__","progress_dialog","currentScanStep","scanner","Scanner","showSmushDialog","initFileTree","selectedFolders","abs_path","paths","smush_path","image_list_nonce","hideSmushDialog","showProgressDialog","smushButton","list_nonce","Promise","add_dir","loadChildren","uuid","widgetUuid","widgetSlice","existingConstructor","basePrototype","proxiedPrototype","fullName","_createWidget","_proto","_childConstructors","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","childPrototype","bridge","inputIndex","inputLength","isMethodCall","methodValue","defaultElement","eventNamespace","bindings","hoverable","focusable","classesElementLookup","_on","_getCreateOptions","_setOptionDisabled","_getCreateEventData","_destroy","_removeClass","curOption","_setOptions","_setOptionClasses","classKey","currentElements","_classes","_toggleClass","full","processClassString","checkOption","_untrackClassesElement","_addClass","suppressDisabledCheck","delegateElement","handlerProxy","eventName","_off","_delay","_hoverable","_focusable","focusout","defaultEffect","hasOptions","effectName","cachedScrollbarWidth","rhorizontal","rvertical","roffset","rposition","rpercent","_position","getOffsets","offsets","parseCss","getDimensions","outerWidth","outerHeight","scrollbarWidth","w1","w2","innerDiv","clientWidth","getScrollInfo","within","isDocument","hasOverflowX","scrollWidth","hasOverflowY","scrollHeight","getWithinInfo","withinElement","hasOffset","of","atOffset","targetWidth","targetHeight","targetOffset","basePosition","dimensions","scrollInfo","collision","horizontalOffset","verticalOffset","collisionPosition","elemWidth","elemHeight","marginTop","collisionWidth","collisionHeight","myOffset","feedback","horizontal","vertical","important","fit","newOverRight","withinOffset","collisionPosLeft","overLeft","overRight","newOverBottom","collisionPosTop","overTop","overBottom","flip","newOverLeft","offsetLeft","newOverTop","flipfit","COMMA","DELETE","ENTER","ESCAPE","PAGE_DOWN","PAGE_UP","PERIOD","SPACE","TAB","excludeStaticParent","overflowRegex","removeUniqueId","CDN","cdnEnableButton","cdnDisableButton","cdnStatsBox","loader","toggle_cdn","updateStatsBox","_this2","nonceField","showNotice","_this3","toggleElements","spinner","Lazyload","lazyloadEnableButton","lazyloadDisableButton","toggle_lazy_load","removeSpinner","removeLoaderIcon","removePlaceholder","addLoaderIcon","frame","wp","media","multiple","attachment","toJSON","imageIcon","backgroundImage","removeDiv","filename","restore","confirmButton","initScan","statusDiv","item","thumb","link","el_notice","btn_act","btn_dismiss","remove_notice","notify_wordpress","send_dismiss_request","ev"],"mappings":"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","file":"smush-admin.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 14);\n","/**\n * Smush class.\n *\n * @since 2.9.0 Moved from admin.js into a dedicated ES6 class.\n */\n\nclass Smush {\n\n\t/**\n\t * Class constructor.\n\t *\n\t * @param {object} button Button object that made the call.\n\t * @param {boolean} bulk Bulk smush or not.\n\t * @param {string} type Accepts: 'nextgen', 'media'.\n\t */\n\tconstructor( button, bulk, type = 'media' ) {\n\t\t// TODO: errors will reset after bulk smush limit is reached and user clicks continue. Might be\n\t\tthis.errors = [];\n\t\t// Smushed and total we take from the progress bar... I don't like this :-(\n\t\tconst progressBar = jQuery( '.bulk-smush-wrapper .sui-progress-state-text' );\n\t\tthis.smushed = parseInt( progressBar.find( 'span:first-child' ).html() );\n\t\tthis.total = parseInt( progressBar.find( 'span:last-child' ).html() );\n\n\t\t//If smush attribute is not defined, Need not skip re-Smush IDs.\n\t\tthis.skip_resmush = ! ( 'undefined' === typeof button.data( 'smush' ) || ! button.data( 'smush' ) );\n\n\t\tthis.button = jQuery( button[0] );\n\t\tthis.is_bulk = typeof bulk ? bulk : false;\n\t\tthis.url = ajaxurl;\n\t\tthis.log = jQuery( '.smush-final-log' );\n\t\tthis.deferred = jQuery.Deferred();\n\t\tthis.deferred.errors = [];\n\n\t\tconst ids = 0 < wp_smushit_data.resmush.length && ! this.skip_resmush ? ( wp_smushit_data.unsmushed.length > 0 ? wp_smushit_data.resmush.concat( wp_smushit_data.unsmushed ) : wp_smushit_data.resmush ) : wp_smushit_data.unsmushed;\n\t\tif ( 'object' === typeof ids ) {\n\t\t\t// If button has re-Smush class, and we do have ids that needs to re-Smushed, put them in the list.\n\t\t\tthis.ids = ids.filter( function ( itm, i, a ) {\n\t\t\t\treturn i === a.indexOf( itm );\n\t\t\t} );\n\t\t} else {\n\t\t\tthis.ids = ids;\n\t\t}\n\n\t\tthis.is_bulk_resmush = 0 < wp_smushit_data.resmush.length && ! this.skip_resmush;\n\n\t\tthis.status = this.button.parent().find( '.smush-status' );\n\n\t\t// Added for NextGen support.\n\t\tthis.smush_type = type;\n\t\tthis.single_ajax_suffix = 'nextgen' === this.smush_type ? 'smush_manual_nextgen' : 'wp_smushit_manual';\n\t\tthis.bulk_ajax_suffix = 'nextgen' === this.smush_type ? 'wp_smushit_nextgen_bulk' : 'wp_smushit_bulk';\n\t\tthis.url = this.is_bulk ? Smush.smushAddParams( this.url, { action: this.bulk_ajax_suffix } ) : Smush.smushAddParams( this.url, { action: this.single_ajax_suffix } );\n\n\t\tthis.start();\n\t\tthis.run();\n\t\tthis.bind_deferred_events();\n\n\t\t// Handle cancel ajax.\n\t\tthis.cancel_ajax();\n\n\t\treturn this.deferred;\n\t}\n\n\t/**\n\t * Add params to the URL.\n\t *\n\t * @param {string} url URL to add the params to.\n\t * @param {object} data Object with params.\n\t * @returns {*}\n\t */\n\tstatic smushAddParams( url, data ) {\n\t\tif ( ! jQuery.isEmptyObject( data ) ) {\n\t\t\turl += ( url.indexOf( '?' ) >= 0 ? '&' : '?' ) + jQuery.param( data );\n\t\t}\n\n\t\treturn url;\n\t}\n\n\t/**\n\t * Check membership validity.\n\t *\n\t * @param data\n\t * @param {int} data.show_warning\n\t */\n\tstatic membership_validity( data ) {\n\t\tconst member_validity_notice = jQuery( '#wp-smush-invalid-member' );\n\n\t\t// Check for membership warning.\n\t\tif ( 'undefined' !== typeof ( data ) && 'undefined' !== typeof ( data.show_warning ) && member_validity_notice.length > 0 ) {\n\t\t\tif ( data.show_warning ) {\n\t\t\t\tmember_validity_notice.show();\n\t\t\t} else {\n\t\t\t\tmember_validity_notice.hide();\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Send Ajax request for Smushing the image.\n\t *\n\t * @param {boolean} is_bulk_resmush\n\t * @param {int} id\n\t * @param {string} send_url\n\t * @param {string} nonce\n\t * @returns {*|jQuery.promise|void}\n\t */\n\tstatic ajax( is_bulk_resmush, id, send_url, nonce ) {\n\t\tconst param = jQuery.param({\n\t\t\tis_bulk_resmush: is_bulk_resmush,\n\t\t\tattachment_id: id,\n\t\t\t_nonce: nonce\n\t\t});\n\n\t\treturn jQuery.ajax( {\n\t\t\ttype: 'GET',\n\t\t\tdata: param,\n\t\t\turl: send_url,\n\t\t\t/** @var {array} wp_smushit_data */\n\t\t\ttimeout: wp_smushit_data.timeout,\n\t\t\tdataType: 'json'\n\t\t} );\n\t};\n\n\t/**\n\t * Show loader in button for single and bulk Smush.\n\t */\n\tstart() {\n\t\tthis.button.attr( 'disabled', 'disabled' );\n\t\tthis.button.addClass( 'wp-smush-started' );\n\n\t\tthis.bulk_start();\n\t\tthis.single_start();\n\t};\n\n\t/**\n\t * Start bulk Smush.\n\t */\n\tbulk_start() {\n\t\tif ( ! this.is_bulk ) return;\n\n\t\t// Hide the bulk div.\n\t\tjQuery( '.wp-smush-bulk-wrapper' ).hide();\n\n\t\t// Remove any global notices if there.\n\t\tjQuery( '.sui-notice-top' ).remove();\n\n\t\t// Hide the bulk limit message.\n\t\tjQuery( '.wp-smush-bulk-progress-bar-wrapper .sui-notice-warning' ).hide();\n\n\t\t// Hide parent wrapper, if there are no other messages.\n\t\tif ( 0 >= jQuery( 'div.smush-final-log .smush-bulk-error-row' ).length ) {\n\t\t\tjQuery( 'div.smush-final-log' ).hide();\n\t\t}\n\n\t\t// Show the progress bar.\n\t\tjQuery( '.bulk-smush-wrapper .wp-smush-bulk-progress-bar-wrapper' ).show();\n\t};\n\n\t/**\n\t * Start single image Smush.\n\t */\n\tsingle_start() {\n\t\tif ( this.is_bulk ) return;\n\t\tthis.show_loader();\n\t\tthis.status.removeClass( 'error' );\n\t};\n\n\t/**\n\t * Enable button.\n\t */\n\tenable_button() {\n\t\tthis.button.prop( 'disabled', false );\n\t\t// For bulk process, enable other buttons.\n\t\tjQuery( '.wp-smush-all' ).removeAttr( 'disabled' );\n\t\tjQuery( 'button.wp-smush-scan, a.wp-smush-lossy-enable, button.wp-smush-resize-enable, button#wp-smush-save-settings' ).removeAttr( 'disabled' );\n\t};\n\n\t/**\n\t * Show loader.\n\t *\n\t * @var {string} wp_smush_msgs.smushing\n\t */\n\tshow_loader() {\n\t\tSmush.progress_bar( this.button, wp_smush_msgs.smushing, 'show' );\n\t};\n\n\t/**\n\t * Hide loader.\n\t *\n\t * @var {string} wp_smush_msgs.smushing\n\t */\n\thide_loader() {\n\t\tSmush.progress_bar( this.button, wp_smush_msgs.smushing, 'hide' );\n\t};\n\n\t/**\n\t * Show/hide the progress bar for Smushing/Restore/SuperSmush.\n\t *\n\t * @param cur_ele\n\t * @param txt Message to be displayed\n\t * @param {string} state show/hide\n\t */\n\tstatic progress_bar( cur_ele, txt, state ) {\n\t\t// Update progress bar text and show it.\n\t\tconst progress_button = cur_ele.parents().eq( 1 ).find( '.wp-smush-progress' );\n\n\t\tif ( 'show' === state ) {\n\t\t\tprogress_button.html( txt );\n\t\t} else {\n\t\t\t/** @var {string} wp_smush_msgs.all_done */\n\t\t\tprogress_button.html( wp_smush_msgs.all_done );\n\t\t}\n\n\t\tprogress_button.toggleClass( 'visible' );\n\t};\n\n\t/**\n\t * Finish single image Smush.\n\t */\n\tsingle_done() {\n\t\tif ( this.is_bulk ) return;\n\n\t\tthis.hide_loader();\n\n\t\tconst self = this;\n\n\t\tthis.request.done( function ( response ) {\n\t\t\tif ( 'undefined' !== typeof response.data ) {\n\n\t\t\t\t// Check if stats div exists.\n\t\t\t\tconst parent = self.status.parent(),\n\t\t\t\t\tstats_div = parent.find( '.smush-stats-wrapper' );\n\n\t\t\t\t// If we've updated status, replace the content.\n\t\t\t\tif ( response.data.status ) {\n\t\t\t\t\t//remove Links\n\t\t\t\t\tparent.find( '.smush-status-links' ).remove();\n\t\t\t\t\tself.status.replaceWith( response.data.status );\n\t\t\t\t}\n\n\t\t\t\t// Check whether to show membership validity notice or not.\n\t\t\t\tSmush.membership_validity( response.data );\n\n\t\t\t\tif ( response.success && 'Not processed' !== response.data ) {\n\t\t\t\t\tself.status.removeClass( 'sui-hidden' );\n\t\t\t\t\tself.button.parent().removeClass( 'unsmushed' ).addClass( 'smushed' );\n\t\t\t\t\tself.button.remove();\n\t\t\t\t} else {\n\t\t\t\t\tself.status.addClass( 'error' );\n\t\t\t\t\t/** @var {string} response.data.error_msg */\n\t\t\t\t\tself.status.html( response.data.error_msg );\n\t\t\t\t\tself.status.show();\n\t\t\t\t}\n\n\t\t\t\t//if ( 'undefined' !== stats_div && stats_div.length ) {\n\t\t\t\t//\tstats_div.replaceWith( response.data.stats );\n\t\t\t\t//} else {\n\t\t\t\t\tparent.append( response.data.stats );\n\t\t\t\t//}\n\n\t\t\t\t/**\n\t\t\t\t * Update image size in attachment info panel.\n\t\t\t\t * @var {string|int} response.data.new_size\n\t\t\t\t */\n\t\t\t\tSmush.update_image_stats( response.data.new_size );\n\t\t\t}\n\t\t\tself.enable_button();\n\t\t} ).fail( function ( response ) {\n\t\t\tself.status.html( response.data );\n\t\t\tself.status.addClass( 'error' );\n\t\t\tself.enable_button();\n\t\t} );\n\t};\n\n\t/**\n\t * Set pro savings stats if not premium user.\n\t *\n\t * For non-premium users, show expected avarage savings based\n\t * on the free version savings.\n\t */\n\tstatic set_pro_savings() {\n\t\t// Default values.\n\t\tlet savings = wp_smushit_data.savings_percent > 0 ? wp_smushit_data.savings_percent : 0,\n\t\t\tsavings_bytes = wp_smushit_data.savings_bytes > 0 ? wp_smushit_data.savings_bytes : 0,\n\t\t\torig_diff = 2.22058824;\n\n\t\tif ( savings > 49 ) {\n\t\t\torig_diff = 1.22054412;\n\t\t}\n\n\t\t// Calculate Pro savings.\n\t\tif ( savings > 0 ) {\n\t\t\tsavings = orig_diff * savings;\n\t\t\tsavings_bytes = orig_diff * savings_bytes;\n\t\t}\n\n\t\twp_smushit_data.pro_savings = {\n\t\t\t'percent': WP_Smush.helpers.precise_round( savings, 1 ),\n\t\t\t'savings_bytes': WP_Smush.helpers.formatBytes( savings_bytes, 1 )\n\t\t}\n\t};\n\n\t/**\n\t * Update all stats sections based on the response.\n\t *\n\t * @param scan_type Current scan type.\n\t */\n\tstatic update_stats( scan_type ) {\n\t\tconst is_nextgen = 'undefined' !== typeof scan_type && 'nextgen' === scan_type;\n\t\tlet super_savings = 0;\n\n\t\t// Calculate updated savings in bytes.\n\t\twp_smushit_data.savings_bytes = parseInt( wp_smushit_data.size_before ) - parseInt( wp_smushit_data.size_after );\n\n\t\tconst formatted_size = WP_Smush.helpers.formatBytes( wp_smushit_data.savings_bytes, 1 );\n\t\tconst statsHuman = jQuery( '.wp-smush-savings .wp-smush-stats-human' );\n\n\t\tif ( is_nextgen ) {\n\t\t\tstatsHuman.html( formatted_size );\n\t\t} else {\n\t\t\tstatsHuman.html( WP_Smush.helpers.getFormatFromString( formatted_size ) );\n\t\t\tjQuery( '.sui-summary-large.wp-smush-stats-human' ).html( WP_Smush.helpers.getSizeFromString( formatted_size ) );\n\t\t}\n\n\t\t// Update the savings percent.\n\t\twp_smushit_data.savings_percent = WP_Smush.helpers.precise_round( ( parseInt( wp_smushit_data.savings_bytes ) / parseInt( wp_smushit_data.size_before ) ) * 100, 1 );\n\t\tif ( ! isNaN( wp_smushit_data.savings_percent ) ) {\n\t\t\tjQuery( '.wp-smush-savings .wp-smush-stats-percent' ).html( wp_smushit_data.savings_percent );\n\t\t}\n\n\t\t// Super-Smush savings.\n\t\tif ( 'undefined' !== typeof wp_smushit_data.savings_bytes && 'undefined' !== typeof wp_smushit_data.savings_resize ) {\n\t\t\tsuper_savings = parseInt( wp_smushit_data.savings_bytes ) - parseInt( wp_smushit_data.savings_resize );\n\t\t\tif ( super_savings > 0 ) {\n\t\t\t\tjQuery( 'li.super-smush-attachments span.smushed-savings' ).html( WP_Smush.helpers.formatBytes( super_savings, 1 ) );\n\t\t\t}\n\t\t}\n\n\t\t// Update image count.\n\t\tif ( is_nextgen ) {\n\t\t\tjQuery( '.sui-summary-details span.wp-smush-total-optimised' ).html( wp_smushit_data.count_images );\n\t\t} else {\n\t\t\tjQuery( 'span.smushed-items-count span.wp-smush-count-total span.wp-smush-total-optimised' ).html( wp_smushit_data.count_images );\n\t\t}\n\n\t\t// Update resize image count.\n\t\tjQuery( 'span.smushed-items-count span.wp-smush-count-resize-total span.wp-smush-total-optimised' ).html( wp_smushit_data.count_resize );\n\n\t\t// Update super-Smushed image count.\n\t\tconst smushedCountDiv = jQuery( 'li.super-smush-attachments .smushed-count' );\n\t\tif ( smushedCountDiv.length && 'undefined' !== typeof wp_smushit_data.count_supersmushed ) {\n\t\t\tsmushedCountDiv.html( wp_smushit_data.count_supersmushed );\n\t\t}\n\n\t\t// Update conversion savings.\n\t\tconst smush_conversion_savings = jQuery( '.smush-conversion-savings' );\n\t\tif ( smush_conversion_savings.length > 0 && 'undefined' !== typeof ( wp_smushit_data.savings_conversion ) && wp_smushit_data.savings_conversion != '' ) {\n\t\t\tconst conversion_savings = smush_conversion_savings.find( '.wp-smush-stats' );\n\t\t\tif ( conversion_savings.length > 0 ) {\n\t\t\t\tconversion_savings.html( WP_Smush.helpers.formatBytes( wp_smushit_data.savings_conversion, 1 ) );\n\t\t\t}\n\t\t}\n\n\t\t// Update resize savings.\n\t\tconst smush_resize_savings = jQuery( '.smush-resize-savings' );\n\t\tif ( smush_resize_savings.length > 0 && 'undefined' !== typeof ( wp_smushit_data.savings_resize ) && wp_smushit_data.savings_resize != '' ) {\n\t\t\t// Get the resize savings in number.\n\t\t\tconst savings_value = parseInt( wp_smushit_data.savings_resize );\n\t\t\tconst resize_savings = smush_resize_savings.find( '.wp-smush-stats' );\n\t\t\tconst resize_message = smush_resize_savings.find( '.wp-smush-stats-label-message' );\n\t\t\t// Replace only if value is grater than 0.\n\t\t\tif ( savings_value > 0 && resize_savings.length > 0 ) {\n\t\t\t\t// Hide message.\n\t\t\t\tif ( resize_message.length > 0 ) {\n\t\t\t\t\tresize_message.hide();\n\t\t\t\t}\n\t\t\t\tresize_savings.html( WP_Smush.helpers.formatBytes( wp_smushit_data.savings_resize, 1 ) );\n\t\t\t}\n\t\t}\n\n\t\t//Update pro Savings\n\t\tSmush.set_pro_savings();\n\n\t\t// Updating pro savings stats.\n\t\tif ( 'undefined' !== typeof wp_smushit_data.pro_savings ) {\n\t\t\t// Pro stats section.\n\t\t\tconst smush_pro_savings = jQuery( '.smush-avg-pro-savings' );\n\t\t\tif ( smush_pro_savings.length > 0 ) {\n\t\t\t\tconst pro_savings_percent = smush_pro_savings.find( '.wp-smush-stats-percent' );\n\t\t\t\tconst pro_savings_bytes = smush_pro_savings.find( '.wp-smush-stats-human' );\n\t\t\t\tif ( pro_savings_percent.length > 0 && 'undefined' !== typeof wp_smushit_data.pro_savings.percent && wp_smushit_data.pro_savings.percent != '' ) {\n\t\t\t\t\tpro_savings_percent.html( wp_smushit_data.pro_savings.percent );\n\t\t\t\t}\n\t\t\t\tif ( pro_savings_bytes.length > 0 && 'undefined' !== typeof wp_smushit_data.pro_savings.savings_bytes && wp_smushit_data.pro_savings.savings_bytes != '' ) {\n\t\t\t\t\tpro_savings_bytes.html( wp_smushit_data.pro_savings.savings_bytes );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Update remaining count.\n\t\t// Update sidebar count.\n\t\tconst sidenavCountDiv = jQuery( '.smush-sidenav .wp-smush-remaining-count' );\n\t\tif ( sidenavCountDiv.length ) {\n\t\t\tlet count = 0;\n\n\t\t\t// Unsmushed\n\t\t\tif ( 'undefined' !== typeof wp_smushit_data.unsmushed && wp_smushit_data.unsmushed.length > 0 ) {\n\t\t\t\tcount += wp_smushit_data.unsmushed.length;\n\t\t\t}\n\n\t\t\t// Re-smush\n\t\t\tif ( 'undefined' !== typeof wp_smushit_data.resmush && wp_smushit_data.resmush.length > 0 ) {\n\t\t\t\tcount += wp_smushit_data.resmush.length;\n\t\t\t}\n\n\n\t\t\tif ( count > 0 ) {\n\t\t\t\tsidenavCountDiv.html( count );\n\t\t\t} else {\n\t\t\t\tjQuery( '.sui-summary-smush .smush-stats-icon' ).addClass( 'sui-hidden' );\n\t\t\t\tsidenavCountDiv.removeClass( 'sui-tag sui-tag-warning' ).html( '' );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Update image size in attachment info panel.\n\t *\n\t * @since 2.8\n\t *\n\t * @param {int} new_size\n\t */\n\tstatic update_image_stats( new_size ) {\n\t\tif ( 0 === new_size ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst attachmentSize = jQuery( '.attachment-info .file-size' );\n\t\tconst currentSize = attachmentSize.contents().filter( function () {\n\t\t\treturn this.nodeType === 3;\n\t\t} ).text();\n\n\t\t// There is a space before the size.\n\t\tif ( currentSize !== ( ' ' + new_size ) ) {\n\t\t\tconst sizeStrongEl = attachmentSize.contents().filter( function () {\n\t\t\t\treturn this.nodeType === 1;\n\t\t\t} ).text();\n\t\t\tattachmentSize.html( '<strong>' + sizeStrongEl + '</strong> ' + new_size );\n\t\t}\n\t}\n\n\t/**\n\t * Sync stats.\n\t */\n\tsync_stats() {\n\t\tconst message_holder = jQuery( 'div.wp-smush-bulk-progress-bar-wrapper div.wp-smush-count.tc' );\n\t\t// Store the existing content in a variable.\n\t\tconst progress_message = message_holder.html();\n\t\t/** @var {string} wp_smush_msgs.sync_stats */\n\t\tmessage_holder.html( wp_smush_msgs.sync_stats );\n\n\t\t// Send ajax.\n\t\tjQuery.ajax( {\n\t\t\ttype: 'GET',\n\t\t\turl: this.url,\n\t\t\tdata: {\n\t\t\t\t'action': 'get_stats'\n\t\t\t},\n\t\t\tsuccess: function ( response ) {\n\t\t\t\tif ( response && 'undefined' !== typeof response ) {\n\t\t\t\t\tresponse = response.data;\n\t\t\t\t\tjQuery.extend( wp_smushit_data, {\n\t\t\t\t\t\tcount_images: response.count_images,\n\t\t\t\t\t\tcount_smushed: response.count_smushed,\n\t\t\t\t\t\tcount_total: response.count_total,\n\t\t\t\t\t\tcount_resize: response.count_resize,\n\t\t\t\t\t\tcount_supersmushed: response.count_supersmushed,\n\t\t\t\t\t\tsavings_bytes: response.savings_bytes,\n\t\t\t\t\t\tsavings_conversion: response.savings_conversion,\n\t\t\t\t\t\tsavings_resize: response.savings_resize,\n\t\t\t\t\t\tsize_before: response.size_before,\n\t\t\t\t\t\tsize_after: response.size_after\n\t\t\t\t\t} );\n\t\t\t\t\t// Got the stats, update it.\n\t\t\t\t\tSmush.update_stats( this.smush_type );\n\t\t\t\t}\n\t\t\t}\n\t\t} ).always( () => message_holder.html( progress_message ) );\n\t};\n\n\t/**\n\t * After the bulk Smushing has been finished.\n\t */\n\tbulk_done() {\n\t\tif ( ! this.is_bulk ) return;\n\n\t\t// Enable the button.\n\t\tthis.enable_button();\n\n\t\tconst statusIcon = jQuery( '.sui-summary-smush .smush-stats-icon' );\n\n\t\t// Show notice.\n\t\tif ( 0 === this.ids.length ) {\n\t\t\tstatusIcon.addClass( 'sui-hidden' );\n\t\t\tjQuery( '.bulk-smush-wrapper .wp-smush-all-done, .wp-smush-pagespeed-recommendation' ).show();\n\t\t\tjQuery( '.wp-smush-bulk-wrapper' ).hide();\n\t\t\t// Hide the progress bar if scan is finished.\n\t\t\tjQuery( '.wp-smush-bulk-progress-bar-wrapper' ).hide();\n\t\t} else {\n\t\t\t// Show loader.\n\t\t\tstatusIcon.removeClass( 'sui-icon-loader sui-loading sui-hidden' ).addClass( 'sui-icon-info sui-warning' );\n\n\t\t\tconst notice = jQuery( '.bulk-smush-wrapper .wp-smush-resmush-notice' );\n\n\t\t\tif ( notice.length > 0 ) {\n\t\t\t\tnotice.show();\n\t\t\t} else {\n\t\t\t\tjQuery( '.bulk-smush-wrapper .wp-smush-remaining' ).show();\n\t\t\t}\n\t\t}\n\n\t\t// Enable re-Smush and scan button.\n\t\tjQuery( '.wp-resmush.wp-smush-action, .wp-smush-scan' ).removeAttr( 'disabled' );\n\t};\n\n\tis_resolved() {\n\t\treturn 'resolved' === this.deferred.state();\n\t};\n\n\t/**\n\t * Free Smush limit exceeded.\n\t */\n\tfree_exceeded() {\n\t\tconst progress = jQuery( '.wp-smush-bulk-progress-bar-wrapper' );\n\t\tprogress.addClass( 'wp-smush-exceed-limit' );\n\t\tprogress.find( '.sui-progress-block .wp-smush-cancel-bulk' ).addClass('sui-hidden');\n\t\tprogress.find( '.sui-progress-block .wp-smush-all' ).removeClass('sui-hidden');\n\n\t\tprogress.find('i.sui-icon-loader').addClass('sui-icon-info')\n\t\t\t.removeClass('sui-icon-loader')\n\t\t\t.removeClass('sui-loading');\n\t};\n\n\t/**\n\t * Update remaining count.\n\t */\n\tupdate_remaining_count() {\n\t\tif ( this.is_bulk_resmush ) {\n\t\t\t// Re-Smush notice.\n\t\t\tconst resumeCountDiv = jQuery( '.wp-smush-resmush-notice .wp-smush-remaining-count' );\n\t\t\tif ( resumeCountDiv.length && 'undefined' !== typeof this.ids ) {\n\t\t\t\tresumeCountDiv.html( this.ids.length );\n\t\t\t}\n\t\t} else {\n\t\t\t// Smush notice.\n\t\t\tconst wrapperCountDiv = jQuery( '.bulk-smush-wrapper .wp-smush-remaining-count' );\n\t\t\tif ( wrapperCountDiv.length && 'undefined' !== typeof this.ids ) {\n\t\t\t\twrapperCountDiv.html( this.ids.length );\n\t\t\t}\n\t\t}\n\n\t\t// Update sidebar count.\n\t\tconst sidenavCountDiv = jQuery( '.smush-sidenav .wp-smush-remaining-count' );\n\t\tif ( sidenavCountDiv.length && 'undefined' !== typeof this.ids ) {\n\t\t\tif ( this.ids.length > 0 ) {\n\t\t\t\tsidenavCountDiv.html( this.ids.length );\n\t\t\t} else {\n\t\t\t\tjQuery( '.sui-summary-smush .smush-stats-icon' ).addClass( 'sui-hidden' );\n\t\t\t\tsidenavCountDiv.removeClass( 'sui-tag sui-tag-warning' ).html( '' );\n\t\t\t}\n\t\t}\n\t};\n\n\t/**\n\t * Adds the stats for the current image to existing stats.\n\t *\n\t * @param {array} image_stats\n\t * @param {string} image_stats.count\n\t * @param {boolean} image_stats.is_lossy\n\t * @param {array} image_stats.savings_resize\n\t * @param {array} image_stats.savings_conversion\n\t * @param {string} image_stats.size_before\n\t * @param {string} image_stats.size_after\n\t * @param {string} type\n\t */\n\tstatic update_localized_stats( image_stats, type ) {\n\t\t// Increase the Smush count.\n\t\tif ( 'undefined' === typeof wp_smushit_data ) return;\n\n\t\t// No need to increase attachment count, resize, conversion savings for directory Smush.\n\t\tif ( 'media' === type ) {\n\t\t\t// Increase Smushed image count.\n\t\t\twp_smushit_data.count_images = parseInt( wp_smushit_data.count_images ) + parseInt( image_stats.count );\n\n\t\t\t// Increase super Smush count, if applicable.\n\t\t\tif ( image_stats.is_lossy ) {\n\t\t\t\twp_smushit_data.count_supersmushed = parseInt( wp_smushit_data.count_supersmushed ) + 1;\n\t\t\t}\n\n\t\t\t// Add to resize savings.\n\t\t\twp_smushit_data.savings_resize = 'undefined' !== typeof image_stats.savings_resize.bytes ? parseInt( wp_smushit_data.savings_resize ) + parseInt( image_stats.savings_resize.bytes ) : parseInt( wp_smushit_data.savings_resize );\n\n\t\t\t// Update resize count.\n\t\t\twp_smushit_data.count_resize = 'undefined' !== typeof image_stats.savings_resize.bytes ? parseInt( wp_smushit_data.count_resize ) + 1 : wp_smushit_data.count_resize;\n\n\t\t\t// Add to conversion savings.\n\t\t\twp_smushit_data.savings_conversion = 'undefined' !== typeof image_stats.savings_conversion && 'undefined' !== typeof image_stats.savings_conversion.bytes ? parseInt( wp_smushit_data.savings_conversion ) + parseInt( image_stats.savings_conversion.bytes ) : parseInt( wp_smushit_data.savings_conversion );\n\t\t} else if ( 'directory_smush' === type ) {\n\t\t\t//Increase smushed image count\n\t\t\twp_smushit_data.count_images = parseInt( wp_smushit_data.count_images ) + 1;\n\t\t} else if ( 'nextgen' === type ) {\n\t\t\twp_smushit_data.count_supersmushed = parseInt( wp_smushit_data.count_supersmushed ) + 1;\n\n\t\t\t// Increase Smushed image count.\n\t\t\twp_smushit_data.count_images = parseInt( wp_smushit_data.count_images ) + parseInt( image_stats.count );\n\t\t}\n\n\t\t// If we have savings. Update savings.\n\t\tif ( image_stats.size_before > image_stats.size_after ) {\n\t\t\twp_smushit_data.size_before = 'undefined' !== typeof image_stats.size_before ? parseInt( wp_smushit_data.size_before ) + parseInt( image_stats.size_before ) : parseInt( wp_smushit_data.size_before );\n\t\t\twp_smushit_data.size_after = 'undefined' !== typeof image_stats.size_after ? parseInt( wp_smushit_data.size_after ) + parseInt( image_stats.size_after ) : parseInt( wp_smushit_data.size_after );\n\t\t}\n\n\t\t// Add stats for resizing. Update savings.\n\t\tif ( 'undefined' !== typeof image_stats.savings_resize ) {\n\t\t\twp_smushit_data.size_before = 'undefined' !== typeof image_stats.savings_resize.size_before ? parseInt( wp_smushit_data.size_before ) + parseInt( image_stats.savings_resize.size_before ) : parseInt( wp_smushit_data.size_before );\n\t\t\twp_smushit_data.size_after = 'undefined' !== typeof image_stats.savings_resize.size_after ? parseInt( wp_smushit_data.size_after ) + parseInt( image_stats.savings_resize.size_after ) : parseInt( wp_smushit_data.size_after );\n\t\t}\n\n\t\t// Add stats for conversion. Update savings.\n\t\tif ( 'undefined' !== typeof image_stats.savings_conversion ) {\n\t\t\twp_smushit_data.size_before = 'undefined' !== typeof image_stats.savings_conversion.size_before ? parseInt( wp_smushit_data.size_before ) + parseInt( image_stats.savings_conversion.size_before ) : parseInt( wp_smushit_data.size_before );\n\t\t\twp_smushit_data.size_after = 'undefined' !== typeof image_stats.savings_conversion.size_after ? parseInt( wp_smushit_data.size_after ) + parseInt( image_stats.savings_conversion.size_after ) : parseInt( wp_smushit_data.size_after );\n\t\t}\n\t};\n\n\t/**\n\t * Update progress.\n\t *\n\t * @param _res\n\t */\n\tupdate_progress( _res ) {\n\t\tif ( ! this.is_bulk_resmush && ! this.is_bulk ) return;\n\n\t\tlet progress = '';\n\n\t\t// Update localized stats.\n\t\tif ( _res && ( 'undefined' !== typeof _res.data && 'undefined' !== typeof _res.data.stats ) ) {\n\t\t\tSmush.update_localized_stats( _res.data.stats, this.smush_type );\n\t\t}\n\n\t\tif ( ! this.is_bulk_resmush ) {\n\t\t\t// Handle progress for normal bulk smush.\n\t\t\tprogress = ( ( this.smushed + this.errors.length ) / this.total ) * 100;\n\t\t} else {\n\t\t\t// If the request was successful, update the progress bar.\n\t\t\tif ( _res.success ) {\n\t\t\t\t// Handle progress for super Smush progress bar.\n\t\t\t\tif ( wp_smushit_data.resmush.length > 0 ) {\n\t\t\t\t\t// Update the count.\n\t\t\t\t\tjQuery( '.wp-smush-images-remaining' ).html( wp_smushit_data.resmush.length );\n\t\t\t\t} else if ( 0 === wp_smushit_data.resmush.length && 0 === this.ids.length ) {\n\t\t\t\t\t// If all images are re-Smushed, show the All Smushed message.\n\t\t\t\t\tjQuery( '.bulk-resmush-wrapper .wp-smush-all-done, .wp-smush-pagespeed-recommendation' ).removeClass( 'sui-hidden' );\n\n\t\t\t\t\t// Hide everything else.\n\t\t\t\t\tjQuery( '.wp-smush-resmush-wrap, .wp-smush-bulk-progress-bar-wrapper' ).hide();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle progress for normal bulk Smush. Set progress bar width.\n\t\t\tif ( 'undefined' !== typeof this.ids && 'undefined' !== typeof this.total && this.total > 0 ) {\n\t\t\t\tprogress = ( ( this.smushed + this.errors.length ) / this.total ) * 100;\n\t\t\t}\n\t\t}\n\n\t\t// No more images left. Show bulk wrapper and Smush notice.\n\t\tif ( 0 === this.ids.length ) {\n\t\t\t// Sync stats for bulk Smush media library ( skip for Nextgen ).\n\t\t\tif ( 'nextgen' !== this.smush_type ) {\n\t\t\t\tthis.sync_stats();\n\t\t\t}\n\t\t\tjQuery( '.bulk-smush-wrapper .wp-smush-all-done, .wp-smush-pagespeed-recommendation' ).show();\n\t\t\tjQuery( '.wp-smush-bulk-wrapper' ).hide();\n\t\t}\n\n\t\t// Update remaining count.\n\t\tthis.update_remaining_count();\n\n\t\t// Increase the progress bar and counter.\n\t\tthis._update_progress( this.smushed + this.errors.length, WP_Smush.helpers.precise_round( progress, 1 ) );\n\n\t\t// Update stats and counts.\n\t\tSmush.update_stats( this.smush_type );\n\t};\n\n\t/**\n\t * Update progress.\n\t *\n\t * @param {int} count Number of images Smushed.\n\t * @param {string} width Percentage complete.\n\t * @private\n\t */\n\t_update_progress( count, width ) {\n\t\tif ( ! this.is_bulk && ! this.is_bulk_resmush ) return;\n\n\t\t// Progress bar label.\n\t\tjQuery( 'span.wp-smush-images-percent' ).html( width + '%' );\n\t\t// Progress bar.\n\t\tjQuery( '.bulk-smush-wrapper .wp-smush-progress-inner' ).css( 'width', width + '%' );\n\n\t\t// Progress bar status.\n\t\tjQuery( '.bulk-smush-wrapper .sui-progress-state-text' )\n\t\t\t.find( 'span:first-child' ).html( count )\n\t\t\t.find( 'span:last-child' ).html( this.total );\n\t};\n\n\t/**\n\t * Whether to send the ajax requests further or not.\n\t *\n\t * @returns {*|boolean}\n\t */\n\tcontinue() {\n\t\tlet continue_smush = this.button.attr( 'continue_smush' );\n\n\t\tif ( 'undefined' === typeof continue_smush ) {\n\t\t\tcontinue_smush = true;\n\t\t}\n\n\t\tif ( 'false' === continue_smush || ! continue_smush ) {\n\t\t\tcontinue_smush = false;\n\t\t}\n\n\t\treturn continue_smush && this.ids.length > 0 && this.is_bulk;\n\t};\n\n\t/**\n\t * Add image ID to the errors array.\n\t *\n\t * @param {int} id\n\t */\n\tincrement_errors( id ) {\n\t\tthis.errors.push( id );\n\t};\n\n\t/**\n\t * Add image ID to smushed array.\n\t *\n\t * @param {int} id\n\t */\n\tincrement_smushed( id ) {\n\t\tthis.smushed = this.smushed + 1;\n\t}\n\n\t/**\n\t * Send ajax request for Smushing single and bulk, call update_progress on ajax response.\n\t *\n\t * @returns {*|{}}\n\t */\n\tcall_ajax() {\n\t\tlet nonce_value = '';\n\t\t// Remove from array while processing so we can continue where left off.\n\t\tthis.current_id = this.is_bulk ? this.ids.shift() : this.button.data( 'id' );\n\n\t\t// Remove the ID from respective variable as well.\n\t\tSmush.update_smush_ids( this.current_id );\n\n\t\tconst nonce_field = this.button.parent().find( '#_wp_smush_nonce' );\n\t\tif ( nonce_field ) {\n\t\t\tnonce_value = nonce_field.val();\n\t\t}\n\n\t\tconst self = this;\n\n\t\tthis.request = Smush.ajax( this.is_bulk_resmush, this.current_id, this.url, nonce_value )\n\t\t\t.done( function ( res ) {\n\t\t\t\t// If no response or success is false, do not process further. Increase the error count except if bulk request limit exceeded.\n\t\t\t\tif ( 'undefined' === typeof res.success || ( 'undefined' !== typeof res.success && false === res.success && 'undefined' !== typeof res.data && 'limit_exceeded' !== res.data.error ) ) {\n\t\t\t\t\tself.increment_errors( self.current_id );\n\n\t\t\t\t\t/** @var {string} res.data.file_name */\n\t\t\t\t\tconst error_msg = Smush.prepare_error_row( res.data.error_message, res.data.file_name, res.data.thumbnail, self.current_id, self.smush_type );\n\n\t\t\t\t\tself.log.show();\n\n\t\t\t\t\tif ( self.errors.length > 5 ) {\n\t\t\t\t\t\tjQuery('.smush-bulk-errors-actions').removeClass('sui-hidden');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Print the error on screen.\n\t\t\t\t\t\tself.log.find( '.smush-bulk-errors' ).append( error_msg );\n\t\t\t\t\t}\n\t\t\t\t} else if ( 'undefined' !== typeof res.success && res.success ) {\n\t\t\t\t\t// Increment the smushed count if image smushed without errors.\n\t\t\t\t\tself.increment_smushed( self.current_id );\n\t\t\t\t}\n\n\t\t\t\t// Check whether to show the warning notice or not.\n\t\t\t\tSmush.membership_validity( res.data );\n\n\t\t\t\t/**\n\t\t\t\t * Bulk Smush limit exceeded: Stop ajax requests, remove progress bar, append the last image ID\n\t\t\t\t * back to Smush variable, and reset variables to allow the user to continue bulk Smush.\n\t\t\t\t */\n\t\t\t\tif ( 'undefined' !== typeof res.data && 'limit_exceeded' === res.data.error && ! self.is_resolved() ) {\n\t\t\t\t\t// Show error message.\n\t\t\t\t\tconst bulkWarning = document.getElementById('bulk_smush_warning');\n\t\t\t\t\tbulkWarning.classList.remove('sui-hidden');\n\n\t\t\t\t\t// Add a data attribute to the Smush button, to stop sending ajax.\n\t\t\t\t\tself.button.attr( 'continue_smush', false );\n\n\t\t\t\t\t// Reinsert the current ID.\n\t\t\t\t\twp_smushit_data.unsmushed.unshift( self.current_id );\n\t\t\t\t\tself.ids.unshift( self.current_id );\n\n\t\t\t\t\tself.free_exceeded();\n\t\t\t\t} else if ( self.is_bulk ) {\n\t\t\t\t\tself.update_progress( res );\n\t\t\t\t} else if ( 0 === self.ids.length ) {\n\t\t\t\t\t// Sync stats anyway.\n\t\t\t\t\tself.sync_stats();\n\t\t\t\t}\n\n\t\t\t\tself.single_done();\n\t\t\t} )\n\t\t\t.always( function () {\n\t\t\t\tif ( ! self.continue() || ! self.is_bulk ) {\n\t\t\t\t\t// Calls deferred.done()\n\t\t\t\t\tself.deferred.resolve();\n\t\t\t\t} else {\n\t\t\t\t\tself.call_ajax();\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.deferred.errors = this.errors;\n\t\treturn this.deferred;\n\t};\n\n\t/**\n\t * Prepare error row. Will only allow to hide errors for WP media attachments (not nextgen).\n\t *\n\t * @since 1.9.0\n\t *\n\t * @param {string} errorMsg Error message.\n\t * @param {string} fileName File name.\n\t * @param {string} thumbnail Thumbnail for image (if available).\n\t * @param {int} id Image ID.\n\t * @param {string} type Smush type: media or netxgen.\n\t *\n\t * @returns {string}\n\t */\n\tstatic prepare_error_row( errorMsg, fileName, thumbnail, id, type ) {\n\t\tconst thumbDiv = ( 'undefined' === typeof thumbnail ) ? '<i class=\"sui-icon-photo-picture\" aria-hidden=\"true\"></i>' : thumbnail;\n\t\tconst fileLink = ( 'undefined' === fileName || 'undefined' === typeof fileName ) ? 'undefined' : fileName;\n\n\t\tlet tableDiv =\n\t\t\t'<div class=\"smush-bulk-error-row\">' +\n\t\t\t\t'<div class=\"smush-bulk-image-data\">' + thumbDiv +\n\t\t\t\t\t'<span class=\"smush-image-name\">' + fileLink + '</span>' +\n\t\t\t\t\t'<span class=\"smush-image-error\">' + errorMsg + '</span>' +\n\t\t\t\t'</div>';\n\n\t\tif ( 'media' === type ) {\n\t\t\ttableDiv = tableDiv +\n\t\t\t\t'<div class=\"smush-bulk-image-actions\">' +\n\t\t\t\t\t'<button type=\"button\" class=\"sui-button-icon sui-tooltip sui-tooltip-constrained sui-tooltip-top-right smush-ignore-image\" data-tooltip=\"' + wp_smush_msgs.error_ignore + '\" data-id=\"' + id + '\">' +\n\t\t\t\t\t\t'<i class=\"sui-icon-eye-hide\" aria-hidden=\"true\"></i>' +\n\t\t\t\t\t'</button>' +\n\t\t\t\t'</div>';\n\t\t}\n\n\t\ttableDiv = tableDiv + '</div>';\n\n\t\treturn tableDiv;\n\t};\n\n\t/**\n\t * Send ajax request for single and bulk Smushing.\n\t */\n\trun() {\n\t\t// If bulk and we have a definite number of IDs.\n\t\tif ( this.is_bulk && this.ids.length > 0 )\n\t\t\tthis.call_ajax();\n\n\t\tif ( ! this.is_bulk )\n\t\t\tthis.call_ajax();\n\t};\n\n\t/**\n\t * Show bulk Smush errors, and disable bulk Smush button on completion.\n\t */\n\tbind_deferred_events() {\n\t\tconst self = this;\n\n\t\tthis.deferred.done( function () {\n\t\t\tself.button.removeAttr( 'continue_smush' );\n\n\t\t\tif ( self.errors.length ) {\n\t\t\t\t/** @var {string} wp_smush_msgs.error_in_bulk */\n\t\t\t\tlet msg = wp_smush_msgs.error_in_bulk\n\t\t\t\t\t.replace( \"{{errors}}\", self.errors.length )\n\t\t\t\t\t.replace( \"{{total}}\", self.total )\n\t\t\t\t\t.replace( \"{{smushed}}\", self.smushed );\n\n\t\t\t\tjQuery( '.wp-smush-all-done' )\n\t\t\t\t\t.addClass( 'sui-notice-warning' )\n\t\t\t\t\t.removeClass( 'sui-notice-success' )\n\t\t\t\t\t.find( 'p' ).html( msg );\n\t\t\t}\n\n\t\t\tself.bulk_done();\n\n\t\t\t// Re-enable the buttons.\n\t\t\tjQuery( '.wp-smush-all:not(.wp-smush-finished), .wp-smush-scan' ).removeAttr( 'disabled' );\n\t\t} );\n\t};\n\n\t/**\n\t * Handles the cancel button click.\n\t * Update the UI, and enable the bulk Smush button.\n\t */\n\tcancel_ajax() {\n\t\tconst self = this;\n\n\t\tjQuery( '.wp-smush-cancel-bulk' ).on( 'click', function () {\n\t\t\t// Add a data attribute to the Smush button, to stop sending ajax.\n\t\t\tself.button.attr( 'continue_smush', false );\n\t\t\t// Sync and update stats.\n\t\t\tself.sync_stats();\n\t\t\tSmush.update_stats( this.smush_type );\n\n\t\t\tself.request.abort();\n\t\t\tself.enable_button();\n\t\t\tself.button.removeClass( 'wp-smush-started' );\n\t\t\twp_smushit_data.unsmushed.unshift( self.current_id );\n\t\t\tjQuery( '.wp-smush-bulk-wrapper' ).show();\n\n\t\t\t// Hide the progress bar.\n\t\t\tjQuery( '.wp-smush-bulk-progress-bar-wrapper' ).hide();\n\t\t} );\n\t};\n\n\t/**\n\t * Remove the current ID from the unSmushed/re-Smush variable.\n\t *\n\t * @param current_id\n\t */\n\tstatic update_smush_ids( current_id ) {\n\t\tif ( 'undefined' !== typeof wp_smushit_data.unsmushed && wp_smushit_data.unsmushed.length > 0 ) {\n\t\t\tconst u_index = wp_smushit_data.unsmushed.indexOf( current_id );\n\t\t\tif ( u_index > -1 ) {\n\t\t\t\twp_smushit_data.unsmushed.splice( u_index, 1 );\n\t\t\t}\n\t\t}\n\n\t\t// Remove from the re-Smush list.\n\t\tif ( 'undefined' !== typeof wp_smushit_data.resmush && wp_smushit_data.resmush.length > 0 ) {\n\t\t\tconst index = wp_smushit_data.resmush.indexOf( current_id );\n\t\t\tif ( index > -1 ) {\n\t\t\t\twp_smushit_data.resmush.splice( index, 1 );\n\t\t\t}\n\t\t}\n\t};\n\n}\n\nexport default Smush;\n","/* global NodeList, Element, define */\n\n(function (global) {\n 'use strict';\n\n var FOCUSABLE_ELEMENTS = ['a[href]', 'area[href]', 'input:not([disabled])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'iframe', 'object', 'embed', '[contenteditable]', '[tabindex]:not([tabindex^=\"-\"])'];\n var TAB_KEY = 9;\n var ESCAPE_KEY = 27;\n var focusedBeforeDialog;\n\n /**\n * Define the constructor to instantiate a dialog\n *\n * @constructor\n * @param {Element} node\n * @param {(NodeList | Element | string)} targets\n */\n function A11yDialog(node, targets) {\n // Prebind the functions that will be bound in addEventListener and\n // removeEventListener to avoid losing references\n this._show = this.show.bind(this);\n this._hide = this.hide.bind(this);\n // this._maintainFocus = this._maintainFocus.bind(this);\n this._bindKeypress = this._bindKeypress.bind(this);\n\n // Keep a reference of the node on the instance\n this.node = node;\n\n // Keep an object of listener types mapped to callback functions\n this._listeners = {};\n\n // Initialise everything needed for the dialog to work properly\n this.create(targets);\n }\n\n /**\n * Set up everything necessary for the dialog to be functioning\n *\n * @param {(NodeList | Element | string)} targets\n * @return {this}\n */\n A11yDialog.prototype.create = function (targets) {\n // Keep a collection of nodes to disable/enable when toggling the dialog\n this._targets = this._targets || collect(targets) || getSiblings(this.node);\n\n // Make sure the dialog element is disabled on load, and that the `shown`\n // property is synced with its value\n this.node.setAttribute('aria-hidden', true);\n this.shown = false;\n\n // Keep a collection of dialog openers, each of which will be bound a click\n // event listener to open the dialog\n this._openers = $$('[data-a11y-dialog-show=\"' + this.node.id + '\"]');\n this._openers.forEach(function (opener) {\n opener.addEventListener('click', this._show);\n }.bind(this));\n\n // Keep a collection of dialog closers, each of which will be bound a click\n // event listener to close the dialog\n this._closers = $$('[data-a11y-dialog-hide]', this.node)\n .concat($$('[data-a11y-dialog-hide=\"' + this.node.id + '\"]'));\n this._closers.forEach(function (closer) {\n closer.addEventListener('click', this._hide);\n }.bind(this));\n\n // Execute all callbacks registered for the `create` event\n this._fire('create');\n\n return this;\n };\n\n /**\n * Show the dialog element, disable all the targets (siblings), trap the\n * current focus within it, listen for some specific key presses and fire all\n * registered callbacks for `show` event\n *\n * @param {Event} event\n * @return {this}\n */\n A11yDialog.prototype.show = function (event) {\n // If the dialog is already open, abort\n if (this.shown) {\n return this;\n }\n\n this.node.classList.add('sui-fade-in');\n this.node.classList.remove('sui-fade-out');\n var content = this.node.getElementsByClassName('sui-dialog-content');\n content[0].className = 'sui-dialog-content sui-content-fade-in';\n\n // Execute all callbacks registered for the `show` event\n this._fire('show', event);\n\n this.shown = true;\n this.node.removeAttribute('aria-hidden');\n\n // Iterate over the targets to disable them by setting their `aria-hidden`\n // attribute to `true`; in case they already have this attribute, keep a\n // reference of their original value to be able to restore it later\n this._targets.forEach(function (target) {\n var original = target.getAttribute('aria-hidden');\n\n if (original) {\n target.setAttribute('data-a11y-dialog-original', original);\n }\n\n target.setAttribute('aria-hidden', 'true');\n });\n\n // Keep a reference to the currently focused element to be able to restore\n // it later, then set the focus to the first focusable child of the dialog\n // element\n focusedBeforeDialog = document.activeElement;\n setFocusToFirstItem(this.node);\n\n // Bind a focus event listener to the body element to make sure the focus\n // stays trapped inside the dialog while open, and start listening for some\n // specific key presses (TAB and ESC)\n // document.body.addEventListener('focus', this._maintainFocus, true);\n document.addEventListener('keydown', this._bindKeypress);\n\n // Add overlay class to document body.\n document.getElementsByTagName('html')[0].classList.add('sui-has-overlay');\n\n\n return this;\n };\n\n /**\n * Hide the dialog element, enable all the targets (siblings), restore the\n * focus to the previously active element, stop listening for some specific\n * key presses and fire all registered callbacks for `hide` event\n *\n * @param {Event} event\n * @return {this}\n */\n A11yDialog.prototype.hide = function (event) {\n // If the dialog is already closed, abort\n if (!this.shown) {\n return this;\n }\n\n\n var content = this.node.getElementsByClassName('sui-dialog-content');\n\n content[0].className = 'sui-dialog-content sui-content-fade-out';\n this.node.classList.add('sui-fade-out');\n this.node.classList.remove('sui-fade-in');\n\n // Execute all callbacks registered for the `hide` event\n this._fire('hide', event);\n\n this.shown = false;\n // This has been set so there is enough time for the animation to show\n var timeout_node = this.node;\n setTimeout(function () {\n timeout_node.setAttribute('aria-hidden', 'true');\n }, 300);\n\n // Iterate over the targets to enable them by remove their `aria-hidden`\n // attribute or resetting them to their initial value\n this._targets.forEach(function (target) {\n var original = target.getAttribute('data-a11y-dialog-original');\n\n\n if (original) {\n target.setAttribute('aria-hidden', original);\n target.removeAttribute('data-a11y-dialog-original');\n } else {\n target.removeAttribute('aria-hidden');\n }\n });\n\n // If their was a focused element before the dialog was opened, restore the\n // focus back to it\n if (focusedBeforeDialog) {\n focusedBeforeDialog.focus();\n }\n\n // Remove the focus event listener to the body element and stop listening\n // for specific key presses\n // document.body.removeEventListener('focus', this._maintainFocus, true);\n document.removeEventListener('keydown', this._bindKeypress);\n\n // Remove overlay class to document body.\n document.getElementsByTagName('html')[0].classList.remove('sui-has-overlay');\n\n\n return this;\n };\n\n /**\n * Destroy the current instance (after making sure the dialog has been hidden)\n * and remove all associated listeners from dialog openers and closers\n *\n * @return {this}\n */\n A11yDialog.prototype.destroy = function () {\n // Hide the dialog to avoid destroying an open instance\n this.hide();\n\n // Remove the click event listener from all dialog openers\n this._openers.forEach(function (opener) {\n opener.removeEventListener('click', this._show);\n }.bind(this));\n\n // Remove the click event listener from all dialog closers\n this._closers.forEach(function (closer) {\n closer.removeEventListener('click', this._hide);\n }.bind(this));\n\n // Execute all callbacks registered for the `destroy` event\n this._fire('destroy');\n\n // Keep an object of listener types mapped to callback functions\n this._listeners = {};\n\n return this;\n };\n\n /**\n * Register a new callback for the given event type\n *\n * @param {string} type\n * @param {Function} handler\n */\n A11yDialog.prototype.on = function (type, handler) {\n if (typeof this._listeners[type] === 'undefined') {\n this._listeners[type] = [];\n }\n\n this._listeners[type].push(handler);\n\n return this;\n };\n\n /**\n * Unregister an existing callback for the given event type\n *\n * @param {string} type\n * @param {Function} handler\n */\n A11yDialog.prototype.off = function (type, handler) {\n var index = this._listeners[type].indexOf(handler);\n\n if (index > -1) {\n this._listeners[type].splice(index, 1);\n }\n\n return this;\n };\n\n /**\n * Iterate over all registered handlers for given type and call them all with\n * the dialog element as first argument, event as second argument (if any).\n *\n * @access private\n * @param {string} type\n * @param {Event} event\n */\n A11yDialog.prototype._fire = function (type, event) {\n var listeners = this._listeners[type] || [];\n\n listeners.forEach(function (listener) {\n listener(this.node, event);\n }.bind(this));\n };\n\n /**\n * Private event handler used when listening to some specific key presses\n * (namely ESCAPE and TAB)\n *\n * @access private\n * @param {Event} event\n */\n A11yDialog.prototype._bindKeypress = function (event) {\n // If the dialog is shown and the ESCAPE key is being pressed, prevent any\n // further effects from the ESCAPE key and hide the dialog\n if (this.shown && event.which === ESCAPE_KEY) {\n event.preventDefault();\n this.hide();\n }\n\n // If the dialog is shown and the TAB key is being pressed, make sure the\n // focus stays trapped within the dialog element\n if (this.shown && event.which === TAB_KEY) {\n trapTabKey(this.node, event);\n }\n };\n\n /**\n * Private event handler used when making sure the focus stays within the\n * currently open dialog\n *\n * @access private\n * @param {Event} event\n */\n A11yDialog.prototype._maintainFocus = function (event) {\n // If the dialog is shown and the focus is not within the dialog element,\n // move it back to its first focusable child\n if (this.shown && !this.node.contains(event.target)) {\n setFocusToFirstItem(this.node);\n }\n };\n\n /**\n * Convert a NodeList into an array\n *\n * @param {NodeList} collection\n * @return {Array<Element>}\n */\n function toArray(collection) {\n return Array.prototype.slice.call(collection);\n }\n\n /**\n * Query the DOM for nodes matching the given selector, scoped to context (or\n * the whole document)\n *\n * @param {String} selector\n * @param {Element} [context = document]\n * @return {Array<Element>}\n */\n function $$(selector, context) {\n return toArray((context || document).querySelectorAll(selector));\n }\n\n /**\n * Return an array of Element based on given argument (NodeList, Element or\n * string representing a selector)\n *\n * @param {(NodeList | Element | string)} target\n * @return {Array<Element>}\n */\n function collect(target) {\n if (NodeList.prototype.isPrototypeOf(target)) {\n return toArray(target);\n }\n\n if (Element.prototype.isPrototypeOf(target)) {\n return [target];\n }\n\n if (typeof target === 'string') {\n return $$(target);\n }\n }\n\n /**\n * Set the focus to the first focusable child of the given element\n *\n * @param {Element} node\n */\n function setFocusToFirstItem(node) {\n var focusableChildren = getFocusableChildren(node);\n\n if (focusableChildren.length) {\n focusableChildren[0].focus();\n }\n }\n\n /**\n * Get the focusable children of the given element\n *\n * @param {Element} node\n * @return {Array<Element>}\n */\n function getFocusableChildren(node) {\n return $$(FOCUSABLE_ELEMENTS.join(','), node).filter(function (child) {\n return !!(child.offsetWidth || child.offsetHeight || child.getClientRects().length);\n });\n }\n\n /**\n * Trap the focus inside the given element\n *\n * @param {Element} node\n * @param {Event} event\n */\n function trapTabKey(node, event) {\n var focusableChildren = getFocusableChildren(node);\n var focusedItemIndex = focusableChildren.indexOf(document.activeElement);\n\n // If the SHIFT key is being pressed while tabbing (moving backwards) and\n // the currently focused item is the first one, move the focus to the last\n // focusable item from the dialog element\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableChildren[focusableChildren.length - 1].focus();\n event.preventDefault();\n // If the SHIFT key is not being pressed (moving forwards) and the currently\n // focused item is the last one, move the focus to the first focusable item\n // from the dialog element\n } else if (!event.shiftKey && focusedItemIndex === focusableChildren.length - 1) {\n focusableChildren[0].focus();\n event.preventDefault();\n }\n }\n\n /**\n * Retrieve siblings from given element\n *\n * @param {Element} node\n * @return {Array<Element>}\n */\n function getSiblings(node) {\n var nodes = toArray(node.parentNode.childNodes);\n var siblings = nodes.filter(function (node) {\n return node.nodeType === 1;\n });\n\n siblings.splice(siblings.indexOf(node), 1);\n\n return siblings;\n }\n\n if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = A11yDialog;\n } else if (typeof define === 'function' && define.amd) {\n define('A11yDialog', [], function () {\n return A11yDialog;\n });\n } else if (typeof global === 'object') {\n global.A11yDialog = A11yDialog;\n }\n}(typeof global !== 'undefined' ? global : window));\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/**\n * Directory scanner module that will Smush images in the Directory Smush modal.\n *\n * @since 2.8.1\n *\n * @param totalSteps\n * @param currentStep\n * @returns {{scan: scan, cancel: (function(): (*|$.promise|{})), getProgress: getProgress, onFinishStep: onFinishStep, onFinish: onFinish}}\n * @constructor\n */\n\nconst DirectoryScanner = ( totalSteps, currentStep ) => {\n\ttotalSteps = parseInt( totalSteps );\n\tcurrentStep = parseInt( currentStep );\n\n\tlet cancelling = false,\n\t\tfailedItems = 0;\n\n\tlet obj = {\n\t\tscan: function() {\n\t\t\tlet remainingSteps = totalSteps - currentStep;\n\t\t\tif ( currentStep !== 0 ) {\n\t\t\t\t// Scan started on a previous page load.\n\t\t\t\tstep( remainingSteps );\n\t\t\t} else {\n\t\t\t\t$.post( ajaxurl, { action: 'directory_smush_start' },\n\t\t\t\t\t() => step( remainingSteps ) );\n\t\t\t}\n\t\t},\n\n\t\tcancel: function() {\n\t\t\tcancelling = true;\n\t\t\treturn $.post( ajaxurl, { action: 'directory_smush_cancel' } );\n\t\t},\n\n\t\tgetProgress: function() {\n\t\t\tif ( cancelling ) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\t// O M G ... Logic at it's finest!\n\t\t\tconst remainingSteps = totalSteps - currentStep;\n\t\t\treturn Math.min( Math.round( ( parseInt( ( totalSteps - remainingSteps ) ) * 100 ) / totalSteps ), 99 );\n\t\t},\n\n\t\tonFinishStep: function( progress ) {\n\t\t\t$( '.wp-smush-progress-dialog .sui-progress-state-text' ).html( ( currentStep - failedItems ) + '/' + totalSteps + ' ' + wp_smush_msgs.progress_smushed );\n\t\t\tWP_Smush.directory.updateProgressBar( progress );\n\t\t},\n\n\t\tonFinish: function() {\n\t\t\tWP_Smush.directory.updateProgressBar( 100 );\n\t\t\twindow.location.href = wp_smush_msgs.directory_url + '&scan=done';\n\t\t},\n\n\t\tlimitReached: function() {\n\t\t\tlet dialog = $( '#wp-smush-progress-dialog' );\n\n\t\t\tdialog.addClass( 'wp-smush-exceed-limit' );\n\t\t\tdialog.find( '#cancel-directory-smush' ).attr( 'data-tooltip', wp_smush_msgs.bulk_resume );\n\t\t\tdialog.find( '.sui-icon-close' ).removeClass( 'sui-icon-close' ).addClass( 'sui-icon-play' );\n\t\t\tdialog.find( '#cancel-directory-smush' ).attr( 'id', 'cancel-directory-smush-disabled' );\n\t\t},\n\n\t\tresume: function() {\n\t\t\tlet dialog = $( '#wp-smush-progress-dialog' );\n\t\t\tlet resume = dialog.find( '#cancel-directory-smush-disabled' );\n\n\t\t\tdialog.removeClass( 'wp-smush-exceed-limit' );\n\t\t\tdialog.find( '.sui-icon-play' ).removeClass( 'sui-icon-play' ).addClass( 'sui-icon-close' );\n resume.attr( 'data-tooltip', 'Cancel' );\n resume.attr( 'id', 'cancel-directory-smush' );\n\n\t\t\tobj.scan();\n\t\t}\n\t};\n\n\t/**\n\t * Execute a scan step recursively\n\t *\n\t * Private to avoid overriding\n\t *\n\t * @param remainingSteps\n\t */\n\tconst step = function( remainingSteps ) {\n\t\tif ( remainingSteps >= 0 ) {\n\t\t\tcurrentStep = totalSteps - remainingSteps;\n\t\t\t$.post( ajaxurl, {\n\t\t\t\taction: 'directory_smush_check_step',\n\t\t\t\tstep: currentStep\n\t\t\t}, ( response ) => {\n\t\t\t\t// We're good - continue on.\n\t\t\t\tif ( 'undefined' !== typeof response.success && response.success ) {\n\t\t\t\t\tcurrentStep++;\n\t\t\t\t\tremainingSteps = remainingSteps - 1;\n\t\t\t\t\tobj.onFinishStep( obj.getProgress() );\n\t\t\t\t\tstep( remainingSteps );\n\t\t\t\t} else if ( 'undefined' !== typeof response.data.error && 'dir_smush_limit_exceeded' === response.data.error ) {\n\t\t\t\t\t// Limit reached. Stop.\n\t\t\t\t\tobj.limitReached();\n\t\t\t\t} else {\n\t\t\t\t\t// Error? never mind, continue, but count them.\n\t\t\t\t\tfailedItems++;\n\t\t\t\t\tcurrentStep++;\n\t\t\t\t\tremainingSteps = remainingSteps - 1;\n\t\t\t\t\tobj.onFinishStep( obj.getProgress() );\n\t\t\t\t\tstep( remainingSteps );\n\t\t\t\t}\n\t\t\t} );\n\t\t} else {\n\t\t\t$.post( ajaxurl, {\n\t\t\t\taction: 'directory_smush_finish',\n\t\t\t\titems: ( totalSteps - failedItems ),\n\t\t\t\tfailed: failedItems,\n\t\t\t}, ( response ) => obj.onFinish( response ) );\n\t\t}\n\t};\n\n\treturn obj;\n};\n\nexport default DirectoryScanner;\n","/*!\n * jQuery JavaScript Library v3.4.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2019-05-01T21:04Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.4.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code, options ) {\n\t\tDOMEval( code, { nonce: options && options.nonce } );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.4\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2019-04-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t(nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\") ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 && rdescend.test( selector ) ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = (elem.ownerDocument || elem).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( typeof elem.contentDocument !== \"undefined\" ) {\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"<select multiple='multiple'>\", \"</select>\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1></$2>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t// Support: IE 9-11 only\n\t// Also use offsetWidth/offsetHeight for when box sizing is unreliable\n\t// We use getClientRects() to check for hidden/disconnected.\n\t// In those cases, the computed value can be trusted to be border-box\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\t\tval === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url, options ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\n// Attach a bunch of functions for handling common AJAX events\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( { padding: \"inner\" + name, content: type, \"\": \"outer\" + name },\n\t\tfunction( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( ( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( i, name ) {\n\n\t// Handle event binding\n\tjQuery.fn[ name ] = function( data, fn ) {\n\t\treturn arguments.length > 0 ?\n\t\t\tthis.on( name, null, data, fn ) :\n\t\t\tthis.trigger( name );\n\t};\n} );\n\njQuery.fn.extend( {\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t}\n} );\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (#13566)\nif ( !noGlobal ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","/*!\n * jquery.fancytree.js\n * Tree view control with support for lazy loading and much more.\n * https://github.com/mar10/fancytree/\n *\n * Copyright (c) 2008-2019, Martin Wendt (https://wwWendt.de)\n * Released under the MIT license\n * https://github.com/mar10/fancytree/wiki/LicenseInfo\n *\n * @version 2.31.0\n * @date 2019-05-31T11:32:38Z\n */\n\n/** Core Fancytree module.\n */\n\n// UMD wrapper for the Fancytree core module\n(function(factory) {\n\tif (typeof define === \"function\" && define.amd) {\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine([\"jquery\", \"./jquery.fancytree.ui-deps\"], factory);\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\t// Node/CommonJS\n\t\trequire(\"./jquery.fancytree.ui-deps\");\n\t\tmodule.exports = factory(require(\"jquery\"));\n\t} else {\n\t\t// Browser globals\n\t\tfactory(jQuery);\n\t}\n})(function($) {\n\t\"use strict\";\n\n\t// prevent duplicate loading\n\tif ($.ui && $.ui.fancytree) {\n\t\t$.ui.fancytree.warn(\"Fancytree: ignored duplicate include\");\n\t\treturn;\n\t}\n\n\t/******************************************************************************\n\t * Private functions and variables\n\t */\n\n\tvar i,\n\t\tattr,\n\t\tFT = null, // initialized below\n\t\tTEST_IMG = new RegExp(/\\.|\\//), // strings are considered image urls if they contain '.' or '/'\n\t\tREX_HTML = /[&<>\"'/]/g, // Escape those characters\n\t\tREX_TOOLTIP = /[<>\"'/]/g, // Don't escape `&` in tooltips\n\t\tRECURSIVE_REQUEST_ERROR = \"$recursive_request\",\n\t\tENTITY_MAP = {\n\t\t\t\"&\": \"&\",\n\t\t\t\"<\": \"<\",\n\t\t\t\">\": \">\",\n\t\t\t'\"': \""\",\n\t\t\t\"'\": \"'\",\n\t\t\t\"/\": \"/\",\n\t\t},\n\t\tIGNORE_KEYCODES = { 16: true, 17: true, 18: true },\n\t\tSPECIAL_KEYCODES = {\n\t\t\t8: \"backspace\",\n\t\t\t9: \"tab\",\n\t\t\t10: \"return\",\n\t\t\t13: \"return\",\n\t\t\t// 16: null, 17: null, 18: null, // ignore shift, ctrl, alt\n\t\t\t19: \"pause\",\n\t\t\t20: \"capslock\",\n\t\t\t27: \"esc\",\n\t\t\t32: \"space\",\n\t\t\t33: \"pageup\",\n\t\t\t34: \"pagedown\",\n\t\t\t35: \"end\",\n\t\t\t36: \"home\",\n\t\t\t37: \"left\",\n\t\t\t38: \"up\",\n\t\t\t39: \"right\",\n\t\t\t40: \"down\",\n\t\t\t45: \"insert\",\n\t\t\t46: \"del\",\n\t\t\t59: \";\",\n\t\t\t61: \"=\",\n\t\t\t// 91: null, 93: null, // ignore left and right meta\n\t\t\t96: \"0\",\n\t\t\t97: \"1\",\n\t\t\t98: \"2\",\n\t\t\t99: \"3\",\n\t\t\t100: \"4\",\n\t\t\t101: \"5\",\n\t\t\t102: \"6\",\n\t\t\t103: \"7\",\n\t\t\t104: \"8\",\n\t\t\t105: \"9\",\n\t\t\t106: \"*\",\n\t\t\t107: \"+\",\n\t\t\t109: \"-\",\n\t\t\t110: \".\",\n\t\t\t111: \"/\",\n\t\t\t112: \"f1\",\n\t\t\t113: \"f2\",\n\t\t\t114: \"f3\",\n\t\t\t115: \"f4\",\n\t\t\t116: \"f5\",\n\t\t\t117: \"f6\",\n\t\t\t118: \"f7\",\n\t\t\t119: \"f8\",\n\t\t\t120: \"f9\",\n\t\t\t121: \"f10\",\n\t\t\t122: \"f11\",\n\t\t\t123: \"f12\",\n\t\t\t144: \"numlock\",\n\t\t\t145: \"scroll\",\n\t\t\t173: \"-\",\n\t\t\t186: \";\",\n\t\t\t187: \"=\",\n\t\t\t188: \",\",\n\t\t\t189: \"-\",\n\t\t\t190: \".\",\n\t\t\t191: \"/\",\n\t\t\t192: \"`\",\n\t\t\t219: \"[\",\n\t\t\t220: \"\\\\\",\n\t\t\t221: \"]\",\n\t\t\t222: \"'\",\n\t\t},\n\t\tMODIFIERS = {\n\t\t\t16: \"shift\",\n\t\t\t17: \"ctrl\",\n\t\t\t18: \"alt\",\n\t\t\t91: \"meta\",\n\t\t\t93: \"meta\",\n\t\t},\n\t\tMOUSE_BUTTONS = { 0: \"\", 1: \"left\", 2: \"middle\", 3: \"right\" },\n\t\t// Boolean attributes that can be set with equivalent class names in the LI tags\n\t\t// Note: v2.23: checkbox and hideCheckbox are *not* in this list\n\t\tCLASS_ATTRS = \"active expanded focus folder lazy radiogroup selected unselectable unselectableIgnore\".split(\n\t\t\t\" \"\n\t\t),\n\t\tCLASS_ATTR_MAP = {},\n\t\t// Top-level Fancytree attributes, that can be set by dict\n\t\tTREE_ATTRS = \"columns types\".split(\" \"),\n\t\t// TREE_ATTR_MAP = {},\n\t\t// Top-level FancytreeNode attributes, that can be set by dict\n\t\tNODE_ATTRS = \"checkbox expanded extraClasses folder icon iconTooltip key lazy partsel radiogroup refKey selected statusNodeType title tooltip type unselectable unselectableIgnore unselectableStatus\".split(\n\t\t\t\" \"\n\t\t),\n\t\tNODE_ATTR_MAP = {},\n\t\t// Mapping of lowercase -> real name (because HTML5 data-... attribute only supports lowercase)\n\t\tNODE_ATTR_LOWERCASE_MAP = {},\n\t\t// Attribute names that should NOT be added to node.data\n\t\tNONE_NODE_DATA_MAP = {\n\t\t\tactive: true,\n\t\t\tchildren: true,\n\t\t\tdata: true,\n\t\t\tfocus: true,\n\t\t};\n\n\tfor (i = 0; i < CLASS_ATTRS.length; i++) {\n\t\tCLASS_ATTR_MAP[CLASS_ATTRS[i]] = true;\n\t}\n\tfor (i = 0; i < NODE_ATTRS.length; i++) {\n\t\tattr = NODE_ATTRS[i];\n\t\tNODE_ATTR_MAP[attr] = true;\n\t\tif (attr !== attr.toLowerCase()) {\n\t\t\tNODE_ATTR_LOWERCASE_MAP[attr.toLowerCase()] = attr;\n\t\t}\n\t}\n\t// for(i=0; i<TREE_ATTRS.length; i++) {\n\t// \tTREE_ATTR_MAP[TREE_ATTRS[i]] = true;\n\t// }\n\n\tfunction _assert(cond, msg) {\n\t\t// TODO: see qunit.js extractStacktrace()\n\t\tif (!cond) {\n\t\t\tmsg = msg ? \": \" + msg : \"\";\n\t\t\t// consoleApply(\"assert\", [!!cond, msg]);\n\t\t\t$.error(\"Fancytree assertion failed\" + msg);\n\t\t}\n\t}\n\n\t_assert($.ui, \"Fancytree requires jQuery UI (http://jqueryui.com)\");\n\n\tfunction consoleApply(method, args) {\n\t\tvar i,\n\t\t\ts,\n\t\t\tfn = window.console ? window.console[method] : null;\n\n\t\tif (fn) {\n\t\t\ttry {\n\t\t\t\tfn.apply(window.console, args);\n\t\t\t} catch (e) {\n\t\t\t\t// IE 8?\n\t\t\t\ts = \"\";\n\t\t\t\tfor (i = 0; i < args.length; i++) {\n\t\t\t\t\ts += args[i];\n\t\t\t\t}\n\t\t\t\tfn(s);\n\t\t\t}\n\t\t}\n\t}\n\n\t/* support: IE8 Polyfil for Date.now() */\n\tif (!Date.now) {\n\t\tDate.now = function now() {\n\t\t\treturn new Date().getTime();\n\t\t};\n\t}\n\n\t/*Return true if x is a FancytreeNode.*/\n\tfunction _isNode(x) {\n\t\treturn !!(x.tree && x.statusNodeType !== undefined);\n\t}\n\n\t/** Return true if dotted version string is equal or higher than requested version.\n\t *\n\t * See http://jsfiddle.net/mar10/FjSAN/\n\t */\n\tfunction isVersionAtLeast(dottedVersion, major, minor, patch) {\n\t\tvar i,\n\t\t\tv,\n\t\t\tt,\n\t\t\tverParts = $.map($.trim(dottedVersion).split(\".\"), function(e) {\n\t\t\t\treturn parseInt(e, 10);\n\t\t\t}),\n\t\t\ttestParts = $.map(\n\t\t\t\tArray.prototype.slice.call(arguments, 1),\n\t\t\t\tfunction(e) {\n\t\t\t\t\treturn parseInt(e, 10);\n\t\t\t\t}\n\t\t\t);\n\n\t\tfor (i = 0; i < testParts.length; i++) {\n\t\t\tv = verParts[i] || 0;\n\t\t\tt = testParts[i] || 0;\n\t\t\tif (v !== t) {\n\t\t\t\treturn v > t;\n\t\t\t}\n\t\t}\n\t\treturn true;\n\t}\n\n\t/**\n\t * Deep-merge a list of objects (but replace array-type options).\n\t *\n\t * jQuery's $.extend(true, ...) method does a deep merge, that also merges Arrays.\n\t * This variant is used to merge extension defaults with user options, and should\n\t * merge objects, but override arrays (for example the `triggerStart: [...]` option\n\t * of ext-edit). Also `null` values are copied over and not skipped.\n\t *\n\t * See issue #876\n\t *\n\t * Example:\n\t * _simpleDeepMerge({}, o1, o2);\n\t */\n\tfunction _simpleDeepMerge() {\n\t\tvar options,\n\t\t\tname,\n\t\t\tsrc,\n\t\t\tcopy,\n\t\t\tclone,\n\t\t\ttarget = arguments[0] || {},\n\t\t\ti = 1,\n\t\t\tlength = arguments.length;\n\n\t\t// Handle case when target is a string or something (possible in deep copy)\n\t\tif (typeof target !== \"object\" && !$.isFunction(target)) {\n\t\t\ttarget = {};\n\t\t}\n\t\tif (i === length) {\n\t\t\tthrow Error(\"need at least two args\");\n\t\t}\n\t\tfor (; i < length; i++) {\n\t\t\t// Only deal with non-null/undefined values\n\t\t\tif ((options = arguments[i]) != null) {\n\t\t\t\t// Extend the base object\n\t\t\t\tfor (name in options) {\n\t\t\t\t\tif (options.hasOwnProperty(name)) {\n\t\t\t\t\t\tsrc = target[name];\n\t\t\t\t\t\tcopy = options[name];\n\t\t\t\t\t\t// Prevent never-ending loop\n\t\t\t\t\t\tif (target === copy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// Recurse if we're merging plain objects\n\t\t\t\t\t\t// (NOTE: unlike $.extend, we don't merge arrays, but replace them)\n\t\t\t\t\t\tif (copy && $.isPlainObject(copy)) {\n\t\t\t\t\t\t\tclone = src && $.isPlainObject(src) ? src : {};\n\t\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\t\ttarget[name] = _simpleDeepMerge(clone, copy);\n\t\t\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t\t} else if (copy !== undefined) {\n\t\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Return the modified object\n\t\treturn target;\n\t}\n\n\t/** Return a wrapper that calls sub.methodName() and exposes\n\t * this : tree\n\t * this._local : tree.ext.EXTNAME\n\t * this._super : base.methodName.call()\n\t * this._superApply : base.methodName.apply()\n\t */\n\tfunction _makeVirtualFunction(methodName, tree, base, extension, extName) {\n\t\t// $.ui.fancytree.debug(\"_makeVirtualFunction\", methodName, tree, base, extension, extName);\n\t\t// if(rexTestSuper && !rexTestSuper.test(func)){\n\t\t// // extension.methodName() doesn't call _super(), so no wrapper required\n\t\t// return func;\n\t\t// }\n\t\t// Use an immediate function as closure\n\t\tvar proxy = (function() {\n\t\t\tvar prevFunc = tree[methodName], // org. tree method or prev. proxy\n\t\t\t\tbaseFunc = extension[methodName], //\n\t\t\t\t_local = tree.ext[extName],\n\t\t\t\t_super = function() {\n\t\t\t\t\treturn prevFunc.apply(tree, arguments);\n\t\t\t\t},\n\t\t\t\t_superApply = function(args) {\n\t\t\t\t\treturn prevFunc.apply(tree, args);\n\t\t\t\t};\n\n\t\t\t// Return the wrapper function\n\t\t\treturn function() {\n\t\t\t\tvar prevLocal = tree._local,\n\t\t\t\t\tprevSuper = tree._super,\n\t\t\t\t\tprevSuperApply = tree._superApply;\n\n\t\t\t\ttry {\n\t\t\t\t\ttree._local = _local;\n\t\t\t\t\ttree._super = _super;\n\t\t\t\t\ttree._superApply = _superApply;\n\t\t\t\t\treturn baseFunc.apply(tree, arguments);\n\t\t\t\t} finally {\n\t\t\t\t\ttree._local = prevLocal;\n\t\t\t\t\ttree._super = prevSuper;\n\t\t\t\t\ttree._superApply = prevSuperApply;\n\t\t\t\t}\n\t\t\t};\n\t\t})(); // end of Immediate Function\n\t\treturn proxy;\n\t}\n\n\t/**\n\t * Subclass `base` by creating proxy functions\n\t */\n\tfunction _subclassObject(tree, base, extension, extName) {\n\t\t// $.ui.fancytree.debug(\"_subclassObject\", tree, base, extension, extName);\n\t\tfor (var attrName in extension) {\n\t\t\tif (typeof extension[attrName] === \"function\") {\n\t\t\t\tif (typeof tree[attrName] === \"function\") {\n\t\t\t\t\t// override existing method\n\t\t\t\t\ttree[attrName] = _makeVirtualFunction(\n\t\t\t\t\t\tattrName,\n\t\t\t\t\t\ttree,\n\t\t\t\t\t\tbase,\n\t\t\t\t\t\textension,\n\t\t\t\t\t\textName\n\t\t\t\t\t);\n\t\t\t\t} else if (attrName.charAt(0) === \"_\") {\n\t\t\t\t\t// Create private methods in tree.ext.EXTENSION namespace\n\t\t\t\t\ttree.ext[extName][attrName] = _makeVirtualFunction(\n\t\t\t\t\t\tattrName,\n\t\t\t\t\t\ttree,\n\t\t\t\t\t\tbase,\n\t\t\t\t\t\textension,\n\t\t\t\t\t\textName\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t$.error(\n\t\t\t\t\t\t\"Could not override tree.\" +\n\t\t\t\t\t\t\tattrName +\n\t\t\t\t\t\t\t\". Use prefix '_' to create tree.\" +\n\t\t\t\t\t\t\textName +\n\t\t\t\t\t\t\t\"._\" +\n\t\t\t\t\t\t\tattrName\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Create member variables in tree.ext.EXTENSION namespace\n\t\t\t\tif (attrName !== \"options\") {\n\t\t\t\t\ttree.ext[extName][attrName] = extension[attrName];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction _getResolvedPromise(context, argArray) {\n\t\tif (context === undefined) {\n\t\t\treturn $.Deferred(function() {\n\t\t\t\tthis.resolve();\n\t\t\t}).promise();\n\t\t}\n\t\treturn $.Deferred(function() {\n\t\t\tthis.resolveWith(context, argArray);\n\t\t}).promise();\n\t}\n\n\tfunction _getRejectedPromise(context, argArray) {\n\t\tif (context === undefined) {\n\t\t\treturn $.Deferred(function() {\n\t\t\t\tthis.reject();\n\t\t\t}).promise();\n\t\t}\n\t\treturn $.Deferred(function() {\n\t\t\tthis.rejectWith(context, argArray);\n\t\t}).promise();\n\t}\n\n\tfunction _makeResolveFunc(deferred, context) {\n\t\treturn function() {\n\t\t\tdeferred.resolveWith(context);\n\t\t};\n\t}\n\n\tfunction _getElementDataAsDict($el) {\n\t\t// Evaluate 'data-NAME' attributes with special treatment for 'data-json'.\n\t\tvar d = $.extend({}, $el.data()),\n\t\t\tjson = d.json;\n\n\t\tdelete d.fancytree; // added to container by widget factory (old jQuery UI)\n\t\tdelete d.uiFancytree; // added to container by widget factory\n\n\t\tif (json) {\n\t\t\tdelete d.json;\n\t\t\t// <li data-json='...'> is already returned as object (http://api.jquery.com/data/#data-html5)\n\t\t\td = $.extend(d, json);\n\t\t}\n\t\treturn d;\n\t}\n\n\tfunction _escapeTooltip(s) {\n\t\treturn (\"\" + s).replace(REX_TOOLTIP, function(s) {\n\t\t\treturn ENTITY_MAP[s];\n\t\t});\n\t}\n\n\t// TODO: use currying\n\tfunction _makeNodeTitleMatcher(s) {\n\t\ts = s.toLowerCase();\n\t\treturn function(node) {\n\t\t\treturn node.title.toLowerCase().indexOf(s) >= 0;\n\t\t};\n\t}\n\n\tfunction _makeNodeTitleStartMatcher(s) {\n\t\tvar reMatch = new RegExp(\"^\" + s, \"i\");\n\t\treturn function(node) {\n\t\t\treturn reMatch.test(node.title);\n\t\t};\n\t}\n\n\t/******************************************************************************\n\t * FancytreeNode\n\t */\n\n\t/**\n\t * Creates a new FancytreeNode\n\t *\n\t * @class FancytreeNode\n\t * @classdesc A FancytreeNode represents the hierarchical data model and operations.\n\t *\n\t * @param {FancytreeNode} parent\n\t * @param {NodeData} obj\n\t *\n\t * @property {Fancytree} tree The tree instance\n\t * @property {FancytreeNode} parent The parent node\n\t * @property {string} key Node id (must be unique inside the tree)\n\t * @property {string} title Display name (may contain HTML)\n\t * @property {object} data Contains all extra data that was passed on node creation\n\t * @property {FancytreeNode[] | null | undefined} children Array of child nodes.<br>\n\t * For lazy nodes, null or undefined means 'not yet loaded'. Use an empty array\n\t * to define a node that has no children.\n\t * @property {boolean} expanded Use isExpanded(), setExpanded() to access this property.\n\t * @property {string} extraClasses Additional CSS classes, added to the node's `<span>`.<br>\n\t * Note: use `node.add/remove/toggleClass()` to modify.\n\t * @property {boolean} folder Folder nodes have different default icons and click behavior.<br>\n\t * Note: Also non-folders may have children.\n\t * @property {string} statusNodeType null for standard nodes. Otherwise type of special system node: 'error', 'loading', 'nodata', or 'paging'.\n\t * @property {boolean} lazy True if this node is loaded on demand, i.e. on first expansion.\n\t * @property {boolean} selected Use isSelected(), setSelected() to access this property.\n\t * @property {string} tooltip Alternative description used as hover popup\n\t * @property {string} iconTooltip Description used as hover popup for icon. @since 2.27\n\t * @property {string} type Node type, used with tree.types map. @since 2.27\n\t */\n\tfunction FancytreeNode(parent, obj) {\n\t\tvar i, l, name, cl;\n\n\t\tthis.parent = parent;\n\t\tthis.tree = parent.tree;\n\t\tthis.ul = null;\n\t\tthis.li = null; // <li id='key' ftnode=this> tag\n\t\tthis.statusNodeType = null; // if this is a temp. node to display the status of its parent\n\t\tthis._isLoading = false; // if this node itself is loading\n\t\tthis._error = null; // {message: '...'} if a load error occurred\n\t\tthis.data = {};\n\n\t\t// TODO: merge this code with node.toDict()\n\t\t// copy attributes from obj object\n\t\tfor (i = 0, l = NODE_ATTRS.length; i < l; i++) {\n\t\t\tname = NODE_ATTRS[i];\n\t\t\tthis[name] = obj[name];\n\t\t}\n\t\t// unselectableIgnore and unselectableStatus imply unselectable\n\t\tif (\n\t\t\tthis.unselectableIgnore != null ||\n\t\t\tthis.unselectableStatus != null\n\t\t) {\n\t\t\tthis.unselectable = true;\n\t\t}\n\t\tif (obj.hideCheckbox) {\n\t\t\t$.error(\n\t\t\t\t\"'hideCheckbox' node option was removed in v2.23.0: use 'checkbox: false'\"\n\t\t\t);\n\t\t}\n\t\t// node.data += obj.data\n\t\tif (obj.data) {\n\t\t\t$.extend(this.data, obj.data);\n\t\t}\n\t\t// Copy all other attributes to this.data.NAME\n\t\tfor (name in obj) {\n\t\t\tif (\n\t\t\t\t!NODE_ATTR_MAP[name] &&\n\t\t\t\t!$.isFunction(obj[name]) &&\n\t\t\t\t!NONE_NODE_DATA_MAP[name]\n\t\t\t) {\n\t\t\t\t// node.data.NAME = obj.NAME\n\t\t\t\tthis.data[name] = obj[name];\n\t\t\t}\n\t\t}\n\n\t\t// Fix missing key\n\t\tif (this.key == null) {\n\t\t\t// test for null OR undefined\n\t\t\tif (this.tree.options.defaultKey) {\n\t\t\t\tthis.key = this.tree.options.defaultKey(this);\n\t\t\t\t_assert(this.key, \"defaultKey() must return a unique key\");\n\t\t\t} else {\n\t\t\t\tthis.key = \"_\" + FT._nextNodeKey++;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.key = \"\" + this.key; // Convert to string (#217)\n\t\t}\n\n\t\t// Fix tree.activeNode\n\t\t// TODO: not elegant: we use obj.active as marker to set tree.activeNode\n\t\t// when loading from a dictionary.\n\t\tif (obj.active) {\n\t\t\t_assert(\n\t\t\t\tthis.tree.activeNode === null,\n\t\t\t\t\"only one active node allowed\"\n\t\t\t);\n\t\t\tthis.tree.activeNode = this;\n\t\t}\n\t\tif (obj.selected) {\n\t\t\t// #186\n\t\t\tthis.tree.lastSelectedNode = this;\n\t\t}\n\t\t// TODO: handle obj.focus = true\n\n\t\t// Create child nodes\n\t\tcl = obj.children;\n\t\tif (cl) {\n\t\t\tif (cl.length) {\n\t\t\t\tthis._setChildren(cl);\n\t\t\t} else {\n\t\t\t\t// if an empty array was passed for a lazy node, keep it, in order to mark it 'loaded'\n\t\t\t\tthis.children = this.lazy ? [] : null;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.children = null;\n\t\t}\n\t\t// Add to key/ref map (except for root node)\n\t\t//\tif( parent ) {\n\t\tthis.tree._callHook(\"treeRegisterNode\", this.tree, true, this);\n\t\t//\t}\n\t}\n\n\tFancytreeNode.prototype = /** @lends FancytreeNode# */ {\n\t\t/* Return the direct child FancytreeNode with a given key, index. */\n\t\t_findDirectChild: function(ptr) {\n\t\t\tvar i,\n\t\t\t\tl,\n\t\t\t\tcl = this.children;\n\n\t\t\tif (cl) {\n\t\t\t\tif (typeof ptr === \"string\") {\n\t\t\t\t\tfor (i = 0, l = cl.length; i < l; i++) {\n\t\t\t\t\t\tif (cl[i].key === ptr) {\n\t\t\t\t\t\t\treturn cl[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (typeof ptr === \"number\") {\n\t\t\t\t\treturn this.children[ptr];\n\t\t\t\t} else if (ptr.parent === this) {\n\t\t\t\t\treturn ptr;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\t// TODO: activate()\n\t\t// TODO: activateSilently()\n\t\t/* Internal helper called in recursive addChildren sequence.*/\n\t\t_setChildren: function(children) {\n\t\t\t_assert(\n\t\t\t\tchildren && (!this.children || this.children.length === 0),\n\t\t\t\t\"only init supported\"\n\t\t\t);\n\t\t\tthis.children = [];\n\t\t\tfor (var i = 0, l = children.length; i < l; i++) {\n\t\t\t\tthis.children.push(new FancytreeNode(this, children[i]));\n\t\t\t}\n\t\t\tthis.tree._callHook(\n\t\t\t\t\"treeStructureChanged\",\n\t\t\t\tthis.tree,\n\t\t\t\t\"setChildren\"\n\t\t\t);\n\t\t},\n\t\t/**\n\t\t * Append (or insert) a list of child nodes.\n\t\t *\n\t\t * @param {NodeData[]} children array of child node definitions (also single child accepted)\n\t\t * @param {FancytreeNode | string | Integer} [insertBefore] child node (or key or index of such).\n\t\t * If omitted, the new children are appended.\n\t\t * @returns {FancytreeNode} first child added\n\t\t *\n\t\t * @see FancytreeNode#applyPatch\n\t\t */\n\t\taddChildren: function(children, insertBefore) {\n\t\t\tvar i,\n\t\t\t\tl,\n\t\t\t\tpos,\n\t\t\t\torigFirstChild = this.getFirstChild(),\n\t\t\t\torigLastChild = this.getLastChild(),\n\t\t\t\tfirstNode = null,\n\t\t\t\tnodeList = [];\n\n\t\t\tif ($.isPlainObject(children)) {\n\t\t\t\tchildren = [children];\n\t\t\t}\n\t\t\tif (!this.children) {\n\t\t\t\tthis.children = [];\n\t\t\t}\n\t\t\tfor (i = 0, l = children.length; i < l; i++) {\n\t\t\t\tnodeList.push(new FancytreeNode(this, children[i]));\n\t\t\t}\n\t\t\tfirstNode = nodeList[0];\n\t\t\tif (insertBefore == null) {\n\t\t\t\tthis.children = this.children.concat(nodeList);\n\t\t\t} else {\n\t\t\t\t// Returns null if insertBefore is not a direct child:\n\t\t\t\tinsertBefore = this._findDirectChild(insertBefore);\n\t\t\t\tpos = $.inArray(insertBefore, this.children);\n\t\t\t\t_assert(pos >= 0, \"insertBefore must be an existing child\");\n\t\t\t\t// insert nodeList after children[pos]\n\t\t\t\tthis.children.splice.apply(\n\t\t\t\t\tthis.children,\n\t\t\t\t\t[pos, 0].concat(nodeList)\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (origFirstChild && !insertBefore) {\n\t\t\t\t// #708: Fast path -- don't render every child of root, just the new ones!\n\t\t\t\t// #723, #729: but only if it's appended to an existing child list\n\t\t\t\tfor (i = 0, l = nodeList.length; i < l; i++) {\n\t\t\t\t\tnodeList[i].render(); // New nodes were never rendered before\n\t\t\t\t}\n\t\t\t\t// Adjust classes where status may have changed\n\t\t\t\t// Has a first child\n\t\t\t\tif (origFirstChild !== this.getFirstChild()) {\n\t\t\t\t\t// Different first child -- recompute classes\n\t\t\t\t\torigFirstChild.renderStatus();\n\t\t\t\t}\n\t\t\t\tif (origLastChild !== this.getLastChild()) {\n\t\t\t\t\t// Different last child -- recompute classes\n\t\t\t\t\torigLastChild.renderStatus();\n\t\t\t\t}\n\t\t\t} else if (!this.parent || this.parent.ul || this.tr) {\n\t\t\t\t// render if the parent was rendered (or this is a root node)\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t\tif (this.tree.options.selectMode === 3) {\n\t\t\t\tthis.fixSelection3FromEndNodes();\n\t\t\t}\n\t\t\tthis.triggerModifyChild(\n\t\t\t\t\"add\",\n\t\t\t\tnodeList.length === 1 ? nodeList[0] : null\n\t\t\t);\n\t\t\treturn firstNode;\n\t\t},\n\t\t/**\n\t\t * Add class to node's span tag and to .extraClasses.\n\t\t *\n\t\t * @param {string} className class name\n\t\t *\n\t\t * @since 2.17\n\t\t */\n\t\taddClass: function(className) {\n\t\t\treturn this.toggleClass(className, true);\n\t\t},\n\t\t/**\n\t\t * Append or prepend a node, or append a child node.\n\t\t *\n\t\t * This a convenience function that calls addChildren()\n\t\t *\n\t\t * @param {NodeData} node node definition\n\t\t * @param {string} [mode=child] 'before', 'after', 'firstChild', or 'child' ('over' is a synonym for 'child')\n\t\t * @returns {FancytreeNode} new node\n\t\t */\n\t\taddNode: function(node, mode) {\n\t\t\tif (mode === undefined || mode === \"over\") {\n\t\t\t\tmode = \"child\";\n\t\t\t}\n\t\t\tswitch (mode) {\n\t\t\t\tcase \"after\":\n\t\t\t\t\treturn this.getParent().addChildren(\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tthis.getNextSibling()\n\t\t\t\t\t);\n\t\t\t\tcase \"before\":\n\t\t\t\t\treturn this.getParent().addChildren(node, this);\n\t\t\t\tcase \"firstChild\":\n\t\t\t\t\t// Insert before the first child if any\n\t\t\t\t\tvar insertBefore = this.children ? this.children[0] : null;\n\t\t\t\t\treturn this.addChildren(node, insertBefore);\n\t\t\t\tcase \"child\":\n\t\t\t\tcase \"over\":\n\t\t\t\t\treturn this.addChildren(node);\n\t\t\t}\n\t\t\t_assert(false, \"Invalid mode: \" + mode);\n\t\t},\n\t\t/**Add child status nodes that indicate 'More...', etc.\n\t\t *\n\t\t * This also maintains the node's `partload` property.\n\t\t * @param {boolean|object} node optional node definition. Pass `false` to remove all paging nodes.\n\t\t * @param {string} [mode='child'] 'child'|firstChild'\n\t\t * @since 2.15\n\t\t */\n\t\taddPagingNode: function(node, mode) {\n\t\t\tvar i, n;\n\n\t\t\tmode = mode || \"child\";\n\t\t\tif (node === false) {\n\t\t\t\tfor (i = this.children.length - 1; i >= 0; i--) {\n\t\t\t\t\tn = this.children[i];\n\t\t\t\t\tif (n.statusNodeType === \"paging\") {\n\t\t\t\t\t\tthis.removeChild(n);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.partload = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnode = $.extend(\n\t\t\t\t{\n\t\t\t\t\ttitle: this.tree.options.strings.moreData,\n\t\t\t\t\tstatusNodeType: \"paging\",\n\t\t\t\t\ticon: false,\n\t\t\t\t},\n\t\t\t\tnode\n\t\t\t);\n\t\t\tthis.partload = true;\n\t\t\treturn this.addNode(node, mode);\n\t\t},\n\t\t/**\n\t\t * Append new node after this.\n\t\t *\n\t\t * This a convenience function that calls addNode(node, 'after')\n\t\t *\n\t\t * @param {NodeData} node node definition\n\t\t * @returns {FancytreeNode} new node\n\t\t */\n\t\tappendSibling: function(node) {\n\t\t\treturn this.addNode(node, \"after\");\n\t\t},\n\t\t/**\n\t\t * Modify existing child nodes.\n\t\t *\n\t\t * @param {NodePatch} patch\n\t\t * @returns {$.Promise}\n\t\t * @see FancytreeNode#addChildren\n\t\t */\n\t\tapplyPatch: function(patch) {\n\t\t\t// patch [key, null] means 'remove'\n\t\t\tif (patch === null) {\n\t\t\t\tthis.remove();\n\t\t\t\treturn _getResolvedPromise(this);\n\t\t\t}\n\t\t\t// TODO: make sure that root node is not collapsed or modified\n\t\t\t// copy (most) attributes to node.ATTR or node.data.ATTR\n\t\t\tvar name,\n\t\t\t\tpromise,\n\t\t\t\tv,\n\t\t\t\tIGNORE_MAP = { children: true, expanded: true, parent: true }; // TODO: should be global\n\n\t\t\tfor (name in patch) {\n\t\t\t\tif (patch.hasOwnProperty(name)) {\n\t\t\t\t\tv = patch[name];\n\t\t\t\t\tif (!IGNORE_MAP[name] && !$.isFunction(v)) {\n\t\t\t\t\t\tif (NODE_ATTR_MAP[name]) {\n\t\t\t\t\t\t\tthis[name] = v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthis.data[name] = v;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Remove and/or create children\n\t\t\tif (patch.hasOwnProperty(\"children\")) {\n\t\t\t\tthis.removeChildren();\n\t\t\t\tif (patch.children) {\n\t\t\t\t\t// only if not null and not empty list\n\t\t\t\t\t// TODO: addChildren instead?\n\t\t\t\t\tthis._setChildren(patch.children);\n\t\t\t\t}\n\t\t\t\t// TODO: how can we APPEND or INSERT child nodes?\n\t\t\t}\n\t\t\tif (this.isVisible()) {\n\t\t\t\tthis.renderTitle();\n\t\t\t\tthis.renderStatus();\n\t\t\t}\n\t\t\t// Expand collapse (final step, since this may be async)\n\t\t\tif (patch.hasOwnProperty(\"expanded\")) {\n\t\t\t\tpromise = this.setExpanded(patch.expanded);\n\t\t\t} else {\n\t\t\t\tpromise = _getResolvedPromise(this);\n\t\t\t}\n\t\t\treturn promise;\n\t\t},\n\t\t/** Collapse all sibling nodes.\n\t\t * @returns {$.Promise}\n\t\t */\n\t\tcollapseSiblings: function() {\n\t\t\treturn this.tree._callHook(\"nodeCollapseSiblings\", this);\n\t\t},\n\t\t/** Copy this node as sibling or child of `node`.\n\t\t *\n\t\t * @param {FancytreeNode} node source node\n\t\t * @param {string} [mode=child] 'before' | 'after' | 'child'\n\t\t * @param {Function} [map] callback function(NodeData) that could modify the new node\n\t\t * @returns {FancytreeNode} new\n\t\t */\n\t\tcopyTo: function(node, mode, map) {\n\t\t\treturn node.addNode(this.toDict(true, map), mode);\n\t\t},\n\t\t/** Count direct and indirect children.\n\t\t *\n\t\t * @param {boolean} [deep=true] pass 'false' to only count direct children\n\t\t * @returns {int} number of child nodes\n\t\t */\n\t\tcountChildren: function(deep) {\n\t\t\tvar cl = this.children,\n\t\t\t\ti,\n\t\t\t\tl,\n\t\t\t\tn;\n\t\t\tif (!cl) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\tn = cl.length;\n\t\t\tif (deep !== false) {\n\t\t\t\tfor (i = 0, l = n; i < l; i++) {\n\t\t\t\t\tn += cl[i].countChildren();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn n;\n\t\t},\n\t\t// TODO: deactivate()\n\t\t/** Write to browser console if debugLevel >= 4 (prepending node info)\n\t\t *\n\t\t * @param {*} msg string or object or array of such\n\t\t */\n\t\tdebug: function(msg) {\n\t\t\tif (this.tree.options.debugLevel >= 4) {\n\t\t\t\tArray.prototype.unshift.call(arguments, this.toString());\n\t\t\t\tconsoleApply(\"log\", arguments);\n\t\t\t}\n\t\t},\n\t\t/** Deprecated.\n\t\t * @deprecated since 2014-02-16. Use resetLazy() instead.\n\t\t */\n\t\tdiscard: function() {\n\t\t\tthis.warn(\n\t\t\t\t\"FancytreeNode.discard() is deprecated since 2014-02-16. Use .resetLazy() instead.\"\n\t\t\t);\n\t\t\treturn this.resetLazy();\n\t\t},\n\t\t/** Remove DOM elements for all descendents. May be called on .collapse event\n\t\t * to keep the DOM small.\n\t\t * @param {boolean} [includeSelf=false]\n\t\t */\n\t\tdiscardMarkup: function(includeSelf) {\n\t\t\tvar fn = includeSelf ? \"nodeRemoveMarkup\" : \"nodeRemoveChildMarkup\";\n\t\t\tthis.tree._callHook(fn, this);\n\t\t},\n\t\t/** Write error to browser console if debugLevel >= 1 (prepending tree info)\n\t\t *\n\t\t * @param {*} msg string or object or array of such\n\t\t */\n\t\terror: function(msg) {\n\t\t\tif (this.tree.options.debugLevel >= 1) {\n\t\t\t\tArray.prototype.unshift.call(arguments, this.toString());\n\t\t\t\tconsoleApply(\"error\", arguments);\n\t\t\t}\n\t\t},\n\t\t/**Find all nodes that match condition (excluding self).\n\t\t *\n\t\t * @param {string | function(node)} match title string to search for, or a\n\t\t * callback function that returns `true` if a node is matched.\n\t\t * @returns {FancytreeNode[]} array of nodes (may be empty)\n\t\t */\n\t\tfindAll: function(match) {\n\t\t\tmatch = $.isFunction(match) ? match : _makeNodeTitleMatcher(match);\n\t\t\tvar res = [];\n\t\t\tthis.visit(function(n) {\n\t\t\t\tif (match(n)) {\n\t\t\t\t\tres.push(n);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn res;\n\t\t},\n\t\t/**Find first node that matches condition (excluding self).\n\t\t *\n\t\t * @param {string | function(node)} match title string to search for, or a\n\t\t * callback function that returns `true` if a node is matched.\n\t\t * @returns {FancytreeNode} matching node or null\n\t\t * @see FancytreeNode#findAll\n\t\t */\n\t\tfindFirst: function(match) {\n\t\t\tmatch = $.isFunction(match) ? match : _makeNodeTitleMatcher(match);\n\t\t\tvar res = null;\n\t\t\tthis.visit(function(n) {\n\t\t\t\tif (match(n)) {\n\t\t\t\t\tres = n;\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn res;\n\t\t},\n\t\t/** Find a node relative to self.\n\t\t *\n\t\t * @param {number|string} where The keyCode that would normally trigger this move,\n\t\t *\t\tor a keyword ('down', 'first', 'last', 'left', 'parent', 'right', 'up').\n\t\t * @returns {FancytreeNode}\n\t\t * @since v2.31\n\t\t */\n\t\tfindRelatedNode: function(where, includeHidden) {\n\t\t\treturn this.tree.findRelatedNode(this, where, includeHidden);\n\t\t},\n\t\t/* Apply selection state (internal use only) */\n\t\t_changeSelectStatusAttrs: function(state) {\n\t\t\tvar changed = false,\n\t\t\t\topts = this.tree.options,\n\t\t\t\tunselectable = FT.evalOption(\n\t\t\t\t\t\"unselectable\",\n\t\t\t\t\tthis,\n\t\t\t\t\tthis,\n\t\t\t\t\topts,\n\t\t\t\t\tfalse\n\t\t\t\t),\n\t\t\t\tunselectableStatus = FT.evalOption(\n\t\t\t\t\t\"unselectableStatus\",\n\t\t\t\t\tthis,\n\t\t\t\t\tthis,\n\t\t\t\t\topts,\n\t\t\t\t\tundefined\n\t\t\t\t);\n\n\t\t\tif (unselectable && unselectableStatus != null) {\n\t\t\t\tstate = unselectableStatus;\n\t\t\t}\n\t\t\tswitch (state) {\n\t\t\t\tcase false:\n\t\t\t\t\tchanged = this.selected || this.partsel;\n\t\t\t\t\tthis.selected = false;\n\t\t\t\t\tthis.partsel = false;\n\t\t\t\t\tbreak;\n\t\t\t\tcase true:\n\t\t\t\t\tchanged = !this.selected || !this.partsel;\n\t\t\t\t\tthis.selected = true;\n\t\t\t\t\tthis.partsel = true;\n\t\t\t\t\tbreak;\n\t\t\t\tcase undefined:\n\t\t\t\t\tchanged = this.selected || !this.partsel;\n\t\t\t\t\tthis.selected = false;\n\t\t\t\t\tthis.partsel = true;\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\t_assert(false, \"invalid state: \" + state);\n\t\t\t}\n\t\t\t// this.debug(\"fixSelection3AfterLoad() _changeSelectStatusAttrs()\", state, changed);\n\t\t\tif (changed) {\n\t\t\t\tthis.renderStatus();\n\t\t\t}\n\t\t\treturn changed;\n\t\t},\n\t\t/**\n\t\t * Fix selection status, after this node was (de)selected in multi-hier mode.\n\t\t * This includes (de)selecting all children.\n\t\t */\n\t\tfixSelection3AfterClick: function(callOpts) {\n\t\t\tvar flag = this.isSelected();\n\n\t\t\t//\t\tthis.debug(\"fixSelection3AfterClick()\");\n\n\t\t\tthis.visit(function(node) {\n\t\t\t\tnode._changeSelectStatusAttrs(flag);\n\t\t\t\tif (node.radiogroup) {\n\t\t\t\t\t// #931: don't (de)select this branch\n\t\t\t\t\treturn \"skip\";\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.fixSelection3FromEndNodes(callOpts);\n\t\t},\n\t\t/**\n\t\t * Fix selection status for multi-hier mode.\n\t\t * Only end-nodes are considered to update the descendants branch and parents.\n\t\t * Should be called after this node has loaded new children or after\n\t\t * children have been modified using the API.\n\t\t */\n\t\tfixSelection3FromEndNodes: function(callOpts) {\n\t\t\tvar opts = this.tree.options;\n\n\t\t\t//\t\tthis.debug(\"fixSelection3FromEndNodes()\");\n\t\t\t_assert(opts.selectMode === 3, \"expected selectMode 3\");\n\n\t\t\t// Visit all end nodes and adjust their parent's `selected` and `partsel`\n\t\t\t// attributes. Return selection state true, false, or undefined.\n\t\t\tfunction _walk(node) {\n\t\t\t\tvar i,\n\t\t\t\t\tl,\n\t\t\t\t\tchild,\n\t\t\t\t\ts,\n\t\t\t\t\tstate,\n\t\t\t\t\tallSelected,\n\t\t\t\t\tsomeSelected,\n\t\t\t\t\tunselIgnore,\n\t\t\t\t\tunselState,\n\t\t\t\t\tchildren = node.children;\n\n\t\t\t\tif (children && children.length) {\n\t\t\t\t\t// check all children recursively\n\t\t\t\t\tallSelected = true;\n\t\t\t\t\tsomeSelected = false;\n\n\t\t\t\t\tfor (i = 0, l = children.length; i < l; i++) {\n\t\t\t\t\t\tchild = children[i];\n\t\t\t\t\t\t// the selection state of a node is not relevant; we need the end-nodes\n\t\t\t\t\t\ts = _walk(child);\n\t\t\t\t\t\t// if( !child.unselectableIgnore ) {\n\t\t\t\t\t\tunselIgnore = FT.evalOption(\n\t\t\t\t\t\t\t\"unselectableIgnore\",\n\t\t\t\t\t\t\tchild,\n\t\t\t\t\t\t\tchild,\n\t\t\t\t\t\t\topts,\n\t\t\t\t\t\t\tfalse\n\t\t\t\t\t\t);\n\t\t\t\t\t\tif (!unselIgnore) {\n\t\t\t\t\t\t\tif (s !== false) {\n\t\t\t\t\t\t\t\tsomeSelected = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (s !== true) {\n\t\t\t\t\t\t\t\tallSelected = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-nested-ternary\n\t\t\t\t\tstate = allSelected\n\t\t\t\t\t\t? true\n\t\t\t\t\t\t: someSelected\n\t\t\t\t\t\t? undefined\n\t\t\t\t\t\t: false;\n\t\t\t\t} else {\n\t\t\t\t\t// This is an end-node: simply report the status\n\t\t\t\t\tunselState = FT.evalOption(\n\t\t\t\t\t\t\"unselectableStatus\",\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\topts,\n\t\t\t\t\t\tundefined\n\t\t\t\t\t);\n\t\t\t\t\tstate = unselState == null ? !!node.selected : !!unselState;\n\t\t\t\t}\n\t\t\t\t// #939: Keep a `partsel` flag that was explicitly set on a lazy node\n\t\t\t\tif (\n\t\t\t\t\tnode.partsel &&\n\t\t\t\t\t!node.selected &&\n\t\t\t\t\tnode.lazy &&\n\t\t\t\t\tnode.children == null\n\t\t\t\t) {\n\t\t\t\t\tstate = undefined;\n\t\t\t\t}\n\t\t\t\tnode._changeSelectStatusAttrs(state);\n\t\t\t\treturn state;\n\t\t\t}\n\t\t\t_walk(this);\n\n\t\t\t// Update parent's state\n\t\t\tthis.visitParents(function(node) {\n\t\t\t\tvar i,\n\t\t\t\t\tl,\n\t\t\t\t\tchild,\n\t\t\t\t\tstate,\n\t\t\t\t\tunselIgnore,\n\t\t\t\t\tunselState,\n\t\t\t\t\tchildren = node.children,\n\t\t\t\t\tallSelected = true,\n\t\t\t\t\tsomeSelected = false;\n\n\t\t\t\tfor (i = 0, l = children.length; i < l; i++) {\n\t\t\t\t\tchild = children[i];\n\t\t\t\t\tunselIgnore = FT.evalOption(\n\t\t\t\t\t\t\"unselectableIgnore\",\n\t\t\t\t\t\tchild,\n\t\t\t\t\t\tchild,\n\t\t\t\t\t\topts,\n\t\t\t\t\t\tfalse\n\t\t\t\t\t);\n\t\t\t\t\tif (!unselIgnore) {\n\t\t\t\t\t\tunselState = FT.evalOption(\n\t\t\t\t\t\t\t\"unselectableStatus\",\n\t\t\t\t\t\t\tchild,\n\t\t\t\t\t\t\tchild,\n\t\t\t\t\t\t\topts,\n\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t);\n\t\t\t\t\t\tstate =\n\t\t\t\t\t\t\tunselState == null\n\t\t\t\t\t\t\t\t? !!child.selected\n\t\t\t\t\t\t\t\t: !!unselState;\n\t\t\t\t\t\t// When fixing the parents, we trust the sibling status (i.e.\n\t\t\t\t\t\t// we don't recurse)\n\t\t\t\t\t\tif (state || child.partsel) {\n\t\t\t\t\t\t\tsomeSelected = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!state) {\n\t\t\t\t\t\t\tallSelected = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// eslint-disable-next-line no-nested-ternary\n\t\t\t\tstate = allSelected ? true : someSelected ? undefined : false;\n\t\t\t\tnode._changeSelectStatusAttrs(state);\n\t\t\t});\n\t\t},\n\t\t// TODO: focus()\n\t\t/**\n\t\t * Update node data. If dict contains 'children', then also replace\n\t\t * the hole sub tree.\n\t\t * @param {NodeData} dict\n\t\t *\n\t\t * @see FancytreeNode#addChildren\n\t\t * @see FancytreeNode#applyPatch\n\t\t */\n\t\tfromDict: function(dict) {\n\t\t\t// copy all other attributes to this.data.xxx\n\t\t\tfor (var name in dict) {\n\t\t\t\tif (NODE_ATTR_MAP[name]) {\n\t\t\t\t\t// node.NAME = dict.NAME\n\t\t\t\t\tthis[name] = dict[name];\n\t\t\t\t} else if (name === \"data\") {\n\t\t\t\t\t// node.data += dict.data\n\t\t\t\t\t$.extend(this.data, dict.data);\n\t\t\t\t} else if (\n\t\t\t\t\t!$.isFunction(dict[name]) &&\n\t\t\t\t\t!NONE_NODE_DATA_MAP[name]\n\t\t\t\t) {\n\t\t\t\t\t// node.data.NAME = dict.NAME\n\t\t\t\t\tthis.data[name] = dict[name];\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (dict.children) {\n\t\t\t\t// recursively set children and render\n\t\t\t\tthis.removeChildren();\n\t\t\t\tthis.addChildren(dict.children);\n\t\t\t}\n\t\t\tthis.renderTitle();\n\t\t\t/*\n\t\t\tvar children = dict.children;\n\t\t\tif(children === undefined){\n\t\t\t\tthis.data = $.extend(this.data, dict);\n\t\t\t\tthis.render();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdict = $.extend({}, dict);\n\t\t\tdict.children = undefined;\n\t\t\tthis.data = $.extend(this.data, dict);\n\t\t\tthis.removeChildren();\n\t\t\tthis.addChild(children);\n\t\t\t*/\n\t\t},\n\t\t/** Return the list of child nodes (undefined for unexpanded lazy nodes).\n\t\t * @returns {FancytreeNode[] | undefined}\n\t\t */\n\t\tgetChildren: function() {\n\t\t\tif (this.hasChildren() === undefined) {\n\t\t\t\t// TODO: only required for lazy nodes?\n\t\t\t\treturn undefined; // Lazy node: unloaded, currently loading, or load error\n\t\t\t}\n\t\t\treturn this.children;\n\t\t},\n\t\t/** Return the first child node or null.\n\t\t * @returns {FancytreeNode | null}\n\t\t */\n\t\tgetFirstChild: function() {\n\t\t\treturn this.children ? this.children[0] : null;\n\t\t},\n\t\t/** Return the 0-based child index.\n\t\t * @returns {int}\n\t\t */\n\t\tgetIndex: function() {\n\t\t\t//\t\treturn this.parent.children.indexOf(this);\n\t\t\treturn $.inArray(this, this.parent.children); // indexOf doesn't work in IE7\n\t\t},\n\t\t/** Return the hierarchical child index (1-based, e.g. '3.2.4').\n\t\t * @param {string} [separator=\".\"]\n\t\t * @param {int} [digits=1]\n\t\t * @returns {string}\n\t\t */\n\t\tgetIndexHier: function(separator, digits) {\n\t\t\tseparator = separator || \".\";\n\t\t\tvar s,\n\t\t\t\tres = [];\n\t\t\t$.each(this.getParentList(false, true), function(i, o) {\n\t\t\t\ts = \"\" + (o.getIndex() + 1);\n\t\t\t\tif (digits) {\n\t\t\t\t\t// prepend leading zeroes\n\t\t\t\t\ts = (\"0000000\" + s).substr(-digits);\n\t\t\t\t}\n\t\t\t\tres.push(s);\n\t\t\t});\n\t\t\treturn res.join(separator);\n\t\t},\n\t\t/** Return the parent keys separated by options.keyPathSeparator, e.g. \"/id_1/id_17/id_32\".\n\t\t *\n\t\t * (Unlike `node.getPath()`, this method prepends a \"/\" and inverts the first argument.)\n\t\t *\n\t\t * @see FancytreeNode#getPath\n\t\t * @param {boolean} [excludeSelf=false]\n\t\t * @returns {string}\n\t\t */\n\t\tgetKeyPath: function(excludeSelf) {\n\t\t\tvar sep = this.tree.options.keyPathSeparator;\n\n\t\t\treturn sep + this.getPath(!excludeSelf, \"key\", sep);\n\t\t},\n\t\t/** Return the last child of this node or null.\n\t\t * @returns {FancytreeNode | null}\n\t\t */\n\t\tgetLastChild: function() {\n\t\t\treturn this.children\n\t\t\t\t? this.children[this.children.length - 1]\n\t\t\t\t: null;\n\t\t},\n\t\t/** Return node depth. 0: System root node, 1: visible top-level node, 2: first sub-level, ... .\n\t\t * @returns {int}\n\t\t */\n\t\tgetLevel: function() {\n\t\t\tvar level = 0,\n\t\t\t\tdtn = this.parent;\n\t\t\twhile (dtn) {\n\t\t\t\tlevel++;\n\t\t\t\tdtn = dtn.parent;\n\t\t\t}\n\t\t\treturn level;\n\t\t},\n\t\t/** Return the successor node (under the same parent) or null.\n\t\t * @returns {FancytreeNode | null}\n\t\t */\n\t\tgetNextSibling: function() {\n\t\t\t// TODO: use indexOf, if available: (not in IE6)\n\t\t\tif (this.parent) {\n\t\t\t\tvar i,\n\t\t\t\t\tl,\n\t\t\t\t\tac = this.parent.children;\n\n\t\t\t\tfor (i = 0, l = ac.length - 1; i < l; i++) {\n\t\t\t\t\t// up to length-2, so next(last) = null\n\t\t\t\t\tif (ac[i] === this) {\n\t\t\t\t\t\treturn ac[i + 1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\t/** Return the parent node (null for the system root node).\n\t\t * @returns {FancytreeNode | null}\n\t\t */\n\t\tgetParent: function() {\n\t\t\t// TODO: return null for top-level nodes?\n\t\t\treturn this.parent;\n\t\t},\n\t\t/** Return an array of all parent nodes (top-down).\n\t\t * @param {boolean} [includeRoot=false] Include the invisible system root node.\n\t\t * @param {boolean} [includeSelf=false] Include the node itself.\n\t\t * @returns {FancytreeNode[]}\n\t\t */\n\t\tgetParentList: function(includeRoot, includeSelf) {\n\t\t\tvar l = [],\n\t\t\t\tdtn = includeSelf ? this : this.parent;\n\t\t\twhile (dtn) {\n\t\t\t\tif (includeRoot || dtn.parent) {\n\t\t\t\t\tl.unshift(dtn);\n\t\t\t\t}\n\t\t\t\tdtn = dtn.parent;\n\t\t\t}\n\t\t\treturn l;\n\t\t},\n\t\t/** Return a string representing the hierachical node path, e.g. \"a/b/c\".\n\t\t * @param {boolean} [includeSelf=true]\n\t\t * @param {string | function} [part=\"title\"] node property name or callback\n\t\t * @param {string} [separator=\"/\"]\n\t\t * @returns {string}\n\t\t * @since v2.31\n\t\t */\n\t\tgetPath: function(includeSelf, part, separator) {\n\t\t\tincludeSelf = includeSelf !== false;\n\t\t\tpart = part || \"title\";\n\t\t\tseparator = separator || \"/\";\n\n\t\t\tvar val,\n\t\t\t\tpath = [],\n\t\t\t\tisFunc = $.isFunction(part);\n\n\t\t\tthis.visitParents(function(n) {\n\t\t\t\tif (n.parent) {\n\t\t\t\t\tval = isFunc ? part(n) : n[part];\n\t\t\t\t\tpath.unshift(val);\n\t\t\t\t}\n\t\t\t}, includeSelf);\n\t\t\treturn path.join(separator);\n\t\t},\n\t\t/** Return the predecessor node (under the same parent) or null.\n\t\t * @returns {FancytreeNode | null}\n\t\t */\n\t\tgetPrevSibling: function() {\n\t\t\tif (this.parent) {\n\t\t\t\tvar i,\n\t\t\t\t\tl,\n\t\t\t\t\tac = this.parent.children;\n\n\t\t\t\tfor (i = 1, l = ac.length; i < l; i++) {\n\t\t\t\t\t// start with 1, so prev(first) = null\n\t\t\t\t\tif (ac[i] === this) {\n\t\t\t\t\t\treturn ac[i - 1];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\t/**\n\t\t * Return an array of selected descendant nodes.\n\t\t * @param {boolean} [stopOnParents=false] only return the topmost selected\n\t\t * node (useful with selectMode 3)\n\t\t * @returns {FancytreeNode[]}\n\t\t */\n\t\tgetSelectedNodes: function(stopOnParents) {\n\t\t\tvar nodeList = [];\n\t\t\tthis.visit(function(node) {\n\t\t\t\tif (node.selected) {\n\t\t\t\t\tnodeList.push(node);\n\t\t\t\t\tif (stopOnParents === true) {\n\t\t\t\t\t\treturn \"skip\"; // stop processing this branch\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn nodeList;\n\t\t},\n\t\t/** Return true if node has children. Return undefined if not sure, i.e. the node is lazy and not yet loaded).\n\t\t * @returns {boolean | undefined}\n\t\t */\n\t\thasChildren: function() {\n\t\t\tif (this.lazy) {\n\t\t\t\tif (this.children == null) {\n\t\t\t\t\t// null or undefined: Not yet loaded\n\t\t\t\t\treturn undefined;\n\t\t\t\t} else if (this.children.length === 0) {\n\t\t\t\t\t// Loaded, but response was empty\n\t\t\t\t\treturn false;\n\t\t\t\t} else if (\n\t\t\t\t\tthis.children.length === 1 &&\n\t\t\t\t\tthis.children[0].isStatusNode()\n\t\t\t\t) {\n\t\t\t\t\t// Currently loading or load error\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\treturn !!(this.children && this.children.length);\n\t\t},\n\t\t/** Return true if node has keyboard focus.\n\t\t * @returns {boolean}\n\t\t */\n\t\thasFocus: function() {\n\t\t\treturn this.tree.hasFocus() && this.tree.focusNode === this;\n\t\t},\n\t\t/** Write to browser console if debugLevel >= 3 (prepending node info)\n\t\t *\n\t\t * @param {*} msg string or object or array of such\n\t\t */\n\t\tinfo: function(msg) {\n\t\t\tif (this.tree.options.debugLevel >= 3) {\n\t\t\t\tArray.prototype.unshift.call(arguments, this.toString());\n\t\t\t\tconsoleApply(\"info\", arguments);\n\t\t\t}\n\t\t},\n\t\t/** Return true if node is active (see also FancytreeNode#isSelected).\n\t\t * @returns {boolean}\n\t\t */\n\t\tisActive: function() {\n\t\t\treturn this.tree.activeNode === this;\n\t\t},\n\t\t/** Return true if node is vertically below `otherNode`, i.e. rendered in a subsequent row.\n\t\t * @param {FancytreeNode} otherNode\n\t\t * @returns {boolean}\n\t\t * @since 2.28\n\t\t */\n\t\tisBelowOf: function(otherNode) {\n\t\t\treturn this.getIndexHier(\".\", 5) > otherNode.getIndexHier(\".\", 5);\n\t\t},\n\t\t/** Return true if node is a direct child of otherNode.\n\t\t * @param {FancytreeNode} otherNode\n\t\t * @returns {boolean}\n\t\t */\n\t\tisChildOf: function(otherNode) {\n\t\t\treturn this.parent && this.parent === otherNode;\n\t\t},\n\t\t/** Return true, if node is a direct or indirect sub node of otherNode.\n\t\t * @param {FancytreeNode} otherNode\n\t\t * @returns {boolean}\n\t\t */\n\t\tisDescendantOf: function(otherNode) {\n\t\t\tif (!otherNode || otherNode.tree !== this.tree) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar p = this.parent;\n\t\t\twhile (p) {\n\t\t\t\tif (p === otherNode) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (p === p.parent) {\n\t\t\t\t\t$.error(\"Recursive parent link: \" + p);\n\t\t\t\t}\n\t\t\t\tp = p.parent;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\t/** Return true if node is expanded.\n\t\t * @returns {boolean}\n\t\t */\n\t\tisExpanded: function() {\n\t\t\treturn !!this.expanded;\n\t\t},\n\t\t/** Return true if node is the first node of its parent's children.\n\t\t * @returns {boolean}\n\t\t */\n\t\tisFirstSibling: function() {\n\t\t\tvar p = this.parent;\n\t\t\treturn !p || p.children[0] === this;\n\t\t},\n\t\t/** Return true if node is a folder, i.e. has the node.folder attribute set.\n\t\t * @returns {boolean}\n\t\t */\n\t\tisFolder: function() {\n\t\t\treturn !!this.folder;\n\t\t},\n\t\t/** Return true if node is the last node of its parent's children.\n\t\t * @returns {boolean}\n\t\t */\n\t\tisLastSibling: function() {\n\t\t\tvar p = this.parent;\n\t\t\treturn !p || p.children[p.children.length - 1] === this;\n\t\t},\n\t\t/** Return true if node is lazy (even if data was already loaded)\n\t\t * @returns {boolean}\n\t\t */\n\t\tisLazy: function() {\n\t\t\treturn !!this.lazy;\n\t\t},\n\t\t/** Return true if node is lazy and loaded. For non-lazy nodes always return true.\n\t\t * @returns {boolean}\n\t\t */\n\t\tisLoaded: function() {\n\t\t\treturn !this.lazy || this.hasChildren() !== undefined; // Also checks if the only child is a status node\n\t\t},\n\t\t/** Return true if children are currently beeing loaded, i.e. a Ajax request is pending.\n\t\t * @returns {boolean}\n\t\t */\n\t\tisLoading: function() {\n\t\t\treturn !!this._isLoading;\n\t\t},\n\t\t/*\n\t\t * @deprecated since v2.4.0: Use isRootNode() instead\n\t\t */\n\t\tisRoot: function() {\n\t\t\treturn this.isRootNode();\n\t\t},\n\t\t/** Return true if node is partially selected (tri-state).\n\t\t * @returns {boolean}\n\t\t * @since 2.23\n\t\t */\n\t\tisPartsel: function() {\n\t\t\treturn !this.selected && !!this.partsel;\n\t\t},\n\t\t/** (experimental) Return true if this is partially loaded.\n\t\t * @returns {boolean}\n\t\t * @since 2.15\n\t\t */\n\t\tisPartload: function() {\n\t\t\treturn !!this.partload;\n\t\t},\n\t\t/** Return true if this is the (invisible) system root node.\n\t\t * @returns {boolean}\n\t\t * @since 2.4\n\t\t */\n\t\tisRootNode: function() {\n\t\t\treturn this.tree.rootNode === this;\n\t\t},\n\t\t/** Return true if node is selected, i.e. has a checkmark set (see also FancytreeNode#isActive).\n\t\t * @returns {boolean}\n\t\t */\n\t\tisSelected: function() {\n\t\t\treturn !!this.selected;\n\t\t},\n\t\t/** Return true if this node is a temporarily generated system node like\n\t\t * 'loading', 'paging', or 'error' (node.statusNodeType contains the type).\n\t\t * @returns {boolean}\n\t\t */\n\t\tisStatusNode: function() {\n\t\t\treturn !!this.statusNodeType;\n\t\t},\n\t\t/** Return true if this node is a status node of type 'paging'.\n\t\t * @returns {boolean}\n\t\t * @since 2.15\n\t\t */\n\t\tisPagingNode: function() {\n\t\t\treturn this.statusNodeType === \"paging\";\n\t\t},\n\t\t/** Return true if this a top level node, i.e. a direct child of the (invisible) system root node.\n\t\t * @returns {boolean}\n\t\t * @since 2.4\n\t\t */\n\t\tisTopLevel: function() {\n\t\t\treturn this.tree.rootNode === this.parent;\n\t\t},\n\t\t/** Return true if node is lazy and not yet loaded. For non-lazy nodes always return false.\n\t\t * @returns {boolean}\n\t\t */\n\t\tisUndefined: function() {\n\t\t\treturn this.hasChildren() === undefined; // also checks if the only child is a status node\n\t\t},\n\t\t/** Return true if all parent nodes are expanded. Note: this does not check\n\t\t * whether the node is scrolled into the visible part of the screen.\n\t\t * @returns {boolean}\n\t\t */\n\t\tisVisible: function() {\n\t\t\tvar i,\n\t\t\t\tl,\n\t\t\t\tn,\n\t\t\t\thasFilter = this.tree.enableFilter,\n\t\t\t\tparents = this.getParentList(false, false);\n\n\t\t\t// TODO: check $(n.span).is(\":visible\")\n\t\t\t// i.e. return false for nodes (but not parents) that are hidden\n\t\t\t// by a filter\n\t\t\tif (hasFilter && !this.match && !this.subMatchCount) {\n\t\t\t\tthis.debug(\n\t\t\t\t\t\"isVisible: HIDDEN (\" +\n\t\t\t\t\t\thasFilter +\n\t\t\t\t\t\t\", \" +\n\t\t\t\t\t\tthis.match +\n\t\t\t\t\t\t\", \" +\n\t\t\t\t\t\tthis.match +\n\t\t\t\t\t\t\")\"\n\t\t\t\t);\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tfor (i = 0, l = parents.length; i < l; i++) {\n\t\t\t\tn = parents[i];\n\n\t\t\t\tif (!n.expanded) {\n\t\t\t\t\tthis.debug(\"isVisible: HIDDEN (parent collapsed)\");\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// if (hasFilter && !n.match && !n.subMatchCount) {\n\t\t\t\t// \tthis.debug(\"isVisible: HIDDEN (\" + hasFilter + \", \" + this.match + \", \" + this.match + \")\");\n\t\t\t\t// \treturn false;\n\t\t\t\t// }\n\t\t\t}\n\t\t\tthis.debug(\"isVisible: VISIBLE\");\n\t\t\treturn true;\n\t\t},\n\t\t/** Deprecated.\n\t\t * @deprecated since 2014-02-16: use load() instead.\n\t\t */\n\t\tlazyLoad: function(discard) {\n\t\t\tthis.warn(\n\t\t\t\t\"FancytreeNode.lazyLoad() is deprecated since 2014-02-16. Use .load() instead.\"\n\t\t\t);\n\t\t\treturn this.load(discard);\n\t\t},\n\t\t/**\n\t\t * Load all children of a lazy node if neccessary. The <i>expanded</i> state is maintained.\n\t\t * @param {boolean} [forceReload=false] Pass true to discard any existing nodes before. Otherwise this method does nothing if the node was already loaded.\n\t\t * @returns {$.Promise}\n\t\t */\n\t\tload: function(forceReload) {\n\t\t\tvar res,\n\t\t\t\tsource,\n\t\t\t\tself = this,\n\t\t\t\twasExpanded = this.isExpanded();\n\n\t\t\t_assert(this.isLazy(), \"load() requires a lazy node\");\n\t\t\t// _assert( forceReload || this.isUndefined(), \"Pass forceReload=true to re-load a lazy node\" );\n\t\t\tif (!forceReload && !this.isUndefined()) {\n\t\t\t\treturn _getResolvedPromise(this);\n\t\t\t}\n\t\t\tif (this.isLoaded()) {\n\t\t\t\tthis.resetLazy(); // also collapses\n\t\t\t}\n\t\t\t// This method is also called by setExpanded() and loadKeyPath(), so we\n\t\t\t// have to avoid recursion.\n\t\t\tsource = this.tree._triggerNodeEvent(\"lazyLoad\", this);\n\t\t\tif (source === false) {\n\t\t\t\t// #69\n\t\t\t\treturn _getResolvedPromise(this);\n\t\t\t}\n\t\t\t_assert(\n\t\t\t\ttypeof source !== \"boolean\",\n\t\t\t\t\"lazyLoad event must return source in data.result\"\n\t\t\t);\n\t\t\tres = this.tree._callHook(\"nodeLoadChildren\", this, source);\n\t\t\tif (wasExpanded) {\n\t\t\t\tthis.expanded = true;\n\t\t\t\tres.always(function() {\n\t\t\t\t\tself.render();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tres.always(function() {\n\t\t\t\t\tself.renderStatus(); // fix expander icon to 'loaded'\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t/** Expand all parents and optionally scroll into visible area as neccessary.\n\t\t * Promise is resolved, when lazy loading and animations are done.\n\t\t * @param {object} [opts] passed to `setExpanded()`.\n\t\t * Defaults to {noAnimation: false, noEvents: false, scrollIntoView: true}\n\t\t * @returns {$.Promise}\n\t\t */\n\t\tmakeVisible: function(opts) {\n\t\t\tvar i,\n\t\t\t\tself = this,\n\t\t\t\tdeferreds = [],\n\t\t\t\tdfd = new $.Deferred(),\n\t\t\t\tparents = this.getParentList(false, false),\n\t\t\t\tlen = parents.length,\n\t\t\t\teffects = !(opts && opts.noAnimation === true),\n\t\t\t\tscroll = !(opts && opts.scrollIntoView === false);\n\n\t\t\t// Expand bottom-up, so only the top node is animated\n\t\t\tfor (i = len - 1; i >= 0; i--) {\n\t\t\t\t// self.debug(\"pushexpand\" + parents[i]);\n\t\t\t\tdeferreds.push(parents[i].setExpanded(true, opts));\n\t\t\t}\n\t\t\t$.when.apply($, deferreds).done(function() {\n\t\t\t\t// All expands have finished\n\t\t\t\t// self.debug(\"expand DONE\", scroll);\n\t\t\t\tif (scroll) {\n\t\t\t\t\tself.scrollIntoView(effects).done(function() {\n\t\t\t\t\t\t// self.debug(\"scroll DONE\");\n\t\t\t\t\t\tdfd.resolve();\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tdfd.resolve();\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn dfd.promise();\n\t\t},\n\t\t/** Move this node to targetNode.\n\t\t * @param {FancytreeNode} targetNode\n\t\t * @param {string} mode <pre>\n\t\t * 'child': append this node as last child of targetNode.\n\t\t * This is the default. To be compatble with the D'n'd\n\t\t * hitMode, we also accept 'over'.\n\t\t * 'firstChild': add this node as first child of targetNode.\n\t\t * 'before': add this node as sibling before targetNode.\n\t\t * 'after': add this node as sibling after targetNode.</pre>\n\t\t * @param {function} [map] optional callback(FancytreeNode) to allow modifcations\n\t\t */\n\t\tmoveTo: function(targetNode, mode, map) {\n\t\t\tif (mode === undefined || mode === \"over\") {\n\t\t\t\tmode = \"child\";\n\t\t\t} else if (mode === \"firstChild\") {\n\t\t\t\tif (targetNode.children && targetNode.children.length) {\n\t\t\t\t\tmode = \"before\";\n\t\t\t\t\ttargetNode = targetNode.children[0];\n\t\t\t\t} else {\n\t\t\t\t\tmode = \"child\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar pos,\n\t\t\t\ttree = this.tree,\n\t\t\t\tprevParent = this.parent,\n\t\t\t\ttargetParent =\n\t\t\t\t\tmode === \"child\" ? targetNode : targetNode.parent;\n\n\t\t\tif (this === targetNode) {\n\t\t\t\treturn;\n\t\t\t} else if (!this.parent) {\n\t\t\t\t$.error(\"Cannot move system root\");\n\t\t\t} else if (targetParent.isDescendantOf(this)) {\n\t\t\t\t$.error(\"Cannot move a node to its own descendant\");\n\t\t\t}\n\t\t\tif (targetParent !== prevParent) {\n\t\t\t\tprevParent.triggerModifyChild(\"remove\", this);\n\t\t\t}\n\t\t\t// Unlink this node from current parent\n\t\t\tif (this.parent.children.length === 1) {\n\t\t\t\tif (this.parent === targetParent) {\n\t\t\t\t\treturn; // #258\n\t\t\t\t}\n\t\t\t\tthis.parent.children = this.parent.lazy ? [] : null;\n\t\t\t\tthis.parent.expanded = false;\n\t\t\t} else {\n\t\t\t\tpos = $.inArray(this, this.parent.children);\n\t\t\t\t_assert(pos >= 0, \"invalid source parent\");\n\t\t\t\tthis.parent.children.splice(pos, 1);\n\t\t\t}\n\t\t\t// Remove from source DOM parent\n\t\t\t// if(this.parent.ul){\n\t\t\t// \tthis.parent.ul.removeChild(this.li);\n\t\t\t// }\n\n\t\t\t// Insert this node to target parent's child list\n\t\t\tthis.parent = targetParent;\n\t\t\tif (targetParent.hasChildren()) {\n\t\t\t\tswitch (mode) {\n\t\t\t\t\tcase \"child\":\n\t\t\t\t\t\t// Append to existing target children\n\t\t\t\t\t\ttargetParent.children.push(this);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"before\":\n\t\t\t\t\t\t// Insert this node before target node\n\t\t\t\t\t\tpos = $.inArray(targetNode, targetParent.children);\n\t\t\t\t\t\t_assert(pos >= 0, \"invalid target parent\");\n\t\t\t\t\t\ttargetParent.children.splice(pos, 0, this);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"after\":\n\t\t\t\t\t\t// Insert this node after target node\n\t\t\t\t\t\tpos = $.inArray(targetNode, targetParent.children);\n\t\t\t\t\t\t_assert(pos >= 0, \"invalid target parent\");\n\t\t\t\t\t\ttargetParent.children.splice(pos + 1, 0, this);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\t$.error(\"Invalid mode \" + mode);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttargetParent.children = [this];\n\t\t\t}\n\t\t\t// Parent has no <ul> tag yet:\n\t\t\t// if( !targetParent.ul ) {\n\t\t\t// \t// This is the parent's first child: create UL tag\n\t\t\t// \t// (Hidden, because it will be\n\t\t\t// \ttargetParent.ul = document.createElement(\"ul\");\n\t\t\t// \ttargetParent.ul.style.display = \"none\";\n\t\t\t// \ttargetParent.li.appendChild(targetParent.ul);\n\t\t\t// }\n\t\t\t// // Issue 319: Add to target DOM parent (only if node was already rendered(expanded))\n\t\t\t// if(this.li){\n\t\t\t// \ttargetParent.ul.appendChild(this.li);\n\t\t\t// }\n\n\t\t\t// Let caller modify the nodes\n\t\t\tif (map) {\n\t\t\t\ttargetNode.visit(map, true);\n\t\t\t}\n\t\t\tif (targetParent === prevParent) {\n\t\t\t\ttargetParent.triggerModifyChild(\"move\", this);\n\t\t\t} else {\n\t\t\t\t// prevParent.triggerModifyChild(\"remove\", this);\n\t\t\t\ttargetParent.triggerModifyChild(\"add\", this);\n\t\t\t}\n\t\t\t// Handle cross-tree moves\n\t\t\tif (tree !== targetNode.tree) {\n\t\t\t\t// Fix node.tree for all source nodes\n\t\t\t\t//\t\t\t_assert(false, \"Cross-tree move is not yet implemented.\");\n\t\t\t\tthis.warn(\"Cross-tree moveTo is experimental!\");\n\t\t\t\tthis.visit(function(n) {\n\t\t\t\t\t// TODO: fix selection state and activation, ...\n\t\t\t\t\tn.tree = targetNode.tree;\n\t\t\t\t}, true);\n\t\t\t}\n\n\t\t\t// A collaposed node won't re-render children, so we have to remove it manually\n\t\t\t// if( !targetParent.expanded ){\n\t\t\t// prevParent.ul.removeChild(this.li);\n\t\t\t// }\n\t\t\ttree._callHook(\"treeStructureChanged\", tree, \"moveTo\");\n\n\t\t\t// Update HTML markup\n\t\t\tif (!prevParent.isDescendantOf(targetParent)) {\n\t\t\t\tprevParent.render();\n\t\t\t}\n\t\t\tif (\n\t\t\t\t!targetParent.isDescendantOf(prevParent) &&\n\t\t\t\ttargetParent !== prevParent\n\t\t\t) {\n\t\t\t\ttargetParent.render();\n\t\t\t}\n\t\t\t// TODO: fix selection state\n\t\t\t// TODO: fix active state\n\n\t\t\t/*\n\t\t\tvar tree = this.tree;\n\t\t\tvar opts = tree.options;\n\t\t\tvar pers = tree.persistence;\n\n\t\t\t// Always expand, if it's below minExpandLevel\n\t\t\t// tree.logDebug (\"%s._addChildNode(%o), l=%o\", this, ftnode, ftnode.getLevel());\n\t\t\tif ( opts.minExpandLevel >= ftnode.getLevel() ) {\n\t\t\t\t// tree.logDebug (\"Force expand for %o\", ftnode);\n\t\t\t\tthis.bExpanded = true;\n\t\t\t}\n\n\t\t\t// In multi-hier mode, update the parents selection state\n\t\t\t// DT issue #82: only if not initializing, because the children may not exist yet\n\t\t\t// if( !ftnode.data.isStatusNode() && opts.selectMode==3 && !isInitializing )\n\t\t\t// \tftnode._fixSelectionState();\n\n\t\t\t// In multi-hier mode, update the parents selection state\n\t\t\tif( ftnode.bSelected && opts.selectMode==3 ) {\n\t\t\t\tvar p = this;\n\t\t\t\twhile( p ) {\n\t\t\t\t\tif( !p.hasSubSel )\n\t\t\t\t\t\tp._setSubSel(true);\n\t\t\t\t\tp = p.parent;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// render this node and the new child\n\t\t\tif ( tree.bEnableUpdate )\n\t\t\t\tthis.render();\n\t\t\treturn ftnode;\n\t\t\t*/\n\t\t},\n\t\t/** Set focus relative to this node and optionally activate.\n\t\t *\n\t\t * @param {number} where The keyCode that would normally trigger this move,\n\t\t *\t\te.g. `$.ui.keyCode.LEFT` would collapse the node if it\n\t\t * is expanded or move to the parent oterwise.\n\t\t * @param {boolean} [activate=true]\n\t\t * @returns {$.Promise}\n\t\t */\n\t\tnavigate: function(where, activate) {\n\t\t\tvar node,\n\t\t\t\tKC = $.ui.keyCode;\n\n\t\t\t// Handle optional expand/collapse action for LEFT/RIGHT\n\t\t\tswitch (where) {\n\t\t\t\tcase \"left\":\n\t\t\t\tcase KC.LEFT:\n\t\t\t\t\tif (this.expanded) {\n\t\t\t\t\t\treturn this.setExpanded(false);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\tcase KC.RIGHT:\n\t\t\t\t\tif (!this.expanded && (this.children || this.lazy)) {\n\t\t\t\t\t\treturn this.setExpanded();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t// Otherwise activate or focus the related node\n\t\t\tnode = this.findRelatedNode(where);\n\t\t\tif (node) {\n\t\t\t\t// setFocus/setActive will scroll later (if autoScroll is specified)\n\t\t\t\ttry {\n\t\t\t\t\tnode.makeVisible({ scrollIntoView: false });\n\t\t\t\t} catch (e) {} // #272\n\t\t\t\tif (activate === false) {\n\t\t\t\t\treturn node.setFocus();\n\t\t\t\t}\n\t\t\t\treturn node.setActive();\n\t\t\t}\n\t\t\tthis.warn(\"Could not find related node '\" + where + \"'.\");\n\t\t\treturn _getResolvedPromise();\n\t\t},\n\t\t/**\n\t\t * Remove this node (not allowed for system root).\n\t\t */\n\t\tremove: function() {\n\t\t\treturn this.parent.removeChild(this);\n\t\t},\n\t\t/**\n\t\t * Remove childNode from list of direct children.\n\t\t * @param {FancytreeNode} childNode\n\t\t */\n\t\tremoveChild: function(childNode) {\n\t\t\treturn this.tree._callHook(\"nodeRemoveChild\", this, childNode);\n\t\t},\n\t\t/**\n\t\t * Remove all child nodes and descendents. This converts the node into a leaf.<br>\n\t\t * If this was a lazy node, it is still considered 'loaded'; call node.resetLazy()\n\t\t * in order to trigger lazyLoad on next expand.\n\t\t */\n\t\tremoveChildren: function() {\n\t\t\treturn this.tree._callHook(\"nodeRemoveChildren\", this);\n\t\t},\n\t\t/**\n\t\t * Remove class from node's span tag and .extraClasses.\n\t\t *\n\t\t * @param {string} className class name\n\t\t *\n\t\t * @since 2.17\n\t\t */\n\t\tremoveClass: function(className) {\n\t\t\treturn this.toggleClass(className, false);\n\t\t},\n\t\t/**\n\t\t * This method renders and updates all HTML markup that is required\n\t\t * to display this node in its current state.<br>\n\t\t * Note:\n\t\t * <ul>\n\t\t * <li>It should only be neccessary to call this method after the node object\n\t\t * was modified by direct access to its properties, because the common\n\t\t * API methods (node.setTitle(), moveTo(), addChildren(), remove(), ...)\n\t\t * already handle this.\n\t\t * <li> {@link FancytreeNode#renderTitle} and {@link FancytreeNode#renderStatus}\n\t\t * are implied. If changes are more local, calling only renderTitle() or\n\t\t * renderStatus() may be sufficient and faster.\n\t\t * </ul>\n\t\t *\n\t\t * @param {boolean} [force=false] re-render, even if html markup was already created\n\t\t * @param {boolean} [deep=false] also render all descendants, even if parent is collapsed\n\t\t */\n\t\trender: function(force, deep) {\n\t\t\treturn this.tree._callHook(\"nodeRender\", this, force, deep);\n\t\t},\n\t\t/** Create HTML markup for the node's outer <span> (expander, checkbox, icon, and title).\n\t\t * Implies {@link FancytreeNode#renderStatus}.\n\t\t * @see Fancytree_Hooks#nodeRenderTitle\n\t\t */\n\t\trenderTitle: function() {\n\t\t\treturn this.tree._callHook(\"nodeRenderTitle\", this);\n\t\t},\n\t\t/** Update element's CSS classes according to node state.\n\t\t * @see Fancytree_Hooks#nodeRenderStatus\n\t\t */\n\t\trenderStatus: function() {\n\t\t\treturn this.tree._callHook(\"nodeRenderStatus\", this);\n\t\t},\n\t\t/**\n\t\t * (experimental) Replace this node with `source`.\n\t\t * (Currently only available for paging nodes.)\n\t\t * @param {NodeData[]} source List of child node definitions\n\t\t * @since 2.15\n\t\t */\n\t\treplaceWith: function(source) {\n\t\t\tvar res,\n\t\t\t\tparent = this.parent,\n\t\t\t\tpos = $.inArray(this, parent.children),\n\t\t\t\tself = this;\n\n\t\t\t_assert(\n\t\t\t\tthis.isPagingNode(),\n\t\t\t\t\"replaceWith() currently requires a paging status node\"\n\t\t\t);\n\n\t\t\tres = this.tree._callHook(\"nodeLoadChildren\", this, source);\n\t\t\tres.done(function(data) {\n\t\t\t\t// New nodes are currently children of `this`.\n\t\t\t\tvar children = self.children;\n\t\t\t\t// Prepend newly loaded child nodes to `this`\n\t\t\t\t// Move new children after self\n\t\t\t\tfor (i = 0; i < children.length; i++) {\n\t\t\t\t\tchildren[i].parent = parent;\n\t\t\t\t}\n\t\t\t\tparent.children.splice.apply(\n\t\t\t\t\tparent.children,\n\t\t\t\t\t[pos + 1, 0].concat(children)\n\t\t\t\t);\n\n\t\t\t\t// Remove self\n\t\t\t\tself.children = null;\n\t\t\t\tself.remove();\n\t\t\t\t// Redraw new nodes\n\t\t\t\tparent.render();\n\t\t\t\t// TODO: set node.partload = false if this was tha last paging node?\n\t\t\t\t// parent.addPagingNode(false);\n\t\t\t}).fail(function() {\n\t\t\t\tself.setExpanded();\n\t\t\t});\n\t\t\treturn res;\n\t\t\t// $.error(\"Not implemented: replaceWith()\");\n\t\t},\n\t\t/**\n\t\t * Remove all children, collapse, and set the lazy-flag, so that the lazyLoad\n\t\t * event is triggered on next expand.\n\t\t */\n\t\tresetLazy: function() {\n\t\t\tthis.removeChildren();\n\t\t\tthis.expanded = false;\n\t\t\tthis.lazy = true;\n\t\t\tthis.children = undefined;\n\t\t\tthis.renderStatus();\n\t\t},\n\t\t/** Schedule activity for delayed execution (cancel any pending request).\n\t\t * scheduleAction('cancel') will only cancel a pending request (if any).\n\t\t * @param {string} mode\n\t\t * @param {number} ms\n\t\t */\n\t\tscheduleAction: function(mode, ms) {\n\t\t\tif (this.tree.timer) {\n\t\t\t\tclearTimeout(this.tree.timer);\n\t\t\t\tthis.tree.debug(\"clearTimeout(%o)\", this.tree.timer);\n\t\t\t}\n\t\t\tthis.tree.timer = null;\n\t\t\tvar self = this; // required for closures\n\t\t\tswitch (mode) {\n\t\t\t\tcase \"cancel\":\n\t\t\t\t\t// Simply made sure that timer was cleared\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"expand\":\n\t\t\t\t\tthis.tree.timer = setTimeout(function() {\n\t\t\t\t\t\tself.tree.debug(\"setTimeout: trigger expand\");\n\t\t\t\t\t\tself.setExpanded(true);\n\t\t\t\t\t}, ms);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"activate\":\n\t\t\t\t\tthis.tree.timer = setTimeout(function() {\n\t\t\t\t\t\tself.tree.debug(\"setTimeout: trigger activate\");\n\t\t\t\t\t\tself.setActive(true);\n\t\t\t\t\t}, ms);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\t$.error(\"Invalid mode \" + mode);\n\t\t\t}\n\t\t\t// this.tree.debug(\"setTimeout(%s, %s): %s\", mode, ms, this.tree.timer);\n\t\t},\n\t\t/**\n\t\t *\n\t\t * @param {boolean | PlainObject} [effects=false] animation options.\n\t\t * @param {object} [options=null] {topNode: null, effects: ..., parent: ...} this node will remain visible in\n\t\t * any case, even if `this` is outside the scroll pane.\n\t\t * @returns {$.Promise}\n\t\t */\n\t\tscrollIntoView: function(effects, options) {\n\t\t\tif (options !== undefined && _isNode(options)) {\n\t\t\t\tthrow Error(\n\t\t\t\t\t\"scrollIntoView() with 'topNode' option is deprecated since 2014-05-08. Use 'options.topNode' instead.\"\n\t\t\t\t);\n\t\t\t}\n\t\t\t// The scroll parent is typically the plain tree's <UL> container.\n\t\t\t// For ext-table, we choose the nearest parent that has `position: relative`\n\t\t\t// and `overflow` set.\n\t\t\t// (This default can be overridden by the local or global `scrollParent` option.)\n\t\t\tvar opts = $.extend(\n\t\t\t\t\t{\n\t\t\t\t\t\teffects:\n\t\t\t\t\t\t\teffects === true\n\t\t\t\t\t\t\t\t? { duration: 200, queue: false }\n\t\t\t\t\t\t\t\t: effects,\n\t\t\t\t\t\tscrollOfs: this.tree.options.scrollOfs,\n\t\t\t\t\t\tscrollParent: this.tree.options.scrollParent,\n\t\t\t\t\t\ttopNode: null,\n\t\t\t\t\t},\n\t\t\t\t\toptions\n\t\t\t\t),\n\t\t\t\t$scrollParent = opts.scrollParent,\n\t\t\t\t$container = this.tree.$container,\n\t\t\t\toverflowY = $container.css(\"overflow-y\");\n\n\t\t\tif (!$scrollParent) {\n\t\t\t\tif (this.tree.tbody) {\n\t\t\t\t\t$scrollParent = $container.scrollParent();\n\t\t\t\t} else if (overflowY === \"scroll\" || overflowY === \"auto\") {\n\t\t\t\t\t$scrollParent = $container;\n\t\t\t\t} else {\n\t\t\t\t\t// #922 plain tree in a non-fixed-sized UL scrolls inside its parent\n\t\t\t\t\t$scrollParent = $container.scrollParent();\n\t\t\t\t}\n\t\t\t} else if (!$scrollParent.jquery) {\n\t\t\t\t// Make sure we have a jQuery object\n\t\t\t\t$scrollParent = $($scrollParent);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t$scrollParent[0] === document ||\n\t\t\t\t$scrollParent[0] === document.body\n\t\t\t) {\n\t\t\t\t// `document` may be returned by $().scrollParent(), if nothing is found,\n\t\t\t\t// but would not work: (see #894)\n\t\t\t\tthis.debug(\n\t\t\t\t\t\"scrollIntoView(): normalizing scrollParent to 'window':\",\n\t\t\t\t\t$scrollParent[0]\n\t\t\t\t);\n\t\t\t\t$scrollParent = $(window);\n\t\t\t}\n\t\t\t// eslint-disable-next-line one-var\n\t\t\tvar topNodeY,\n\t\t\t\tnodeY,\n\t\t\t\thorzScrollbarHeight,\n\t\t\t\tcontainerOffsetTop,\n\t\t\t\tdfd = new $.Deferred(),\n\t\t\t\tself = this,\n\t\t\t\tnodeHeight = $(this.span).height(),\n\t\t\t\ttopOfs = opts.scrollOfs.top || 0,\n\t\t\t\tbottomOfs = opts.scrollOfs.bottom || 0,\n\t\t\t\tcontainerHeight = $scrollParent.height(),\n\t\t\t\tscrollTop = $scrollParent.scrollTop(),\n\t\t\t\t$animateTarget = $scrollParent,\n\t\t\t\tisParentWindow = $scrollParent[0] === window,\n\t\t\t\ttopNode = opts.topNode || null,\n\t\t\t\tnewScrollTop = null;\n\n\t\t\t// this.debug(\"scrollIntoView(), scrollTop=\" + scrollTop, opts.scrollOfs);\n\t\t\t//\t\t_assert($(this.span).is(\":visible\"), \"scrollIntoView node is invisible\"); // otherwise we cannot calc offsets\n\t\t\tif (!this.isVisible()) {\n\t\t\t\t// We cannot calc offsets for hidden elements\n\t\t\t\tthis.warn(\"scrollIntoView(): node is invisible.\");\n\t\t\t\treturn _getResolvedPromise();\n\t\t\t}\n\t\t\tif (isParentWindow) {\n\t\t\t\tnodeY = $(this.span).offset().top;\n\t\t\t\ttopNodeY =\n\t\t\t\t\ttopNode && topNode.span ? $(topNode.span).offset().top : 0;\n\t\t\t\t$animateTarget = $(\"html,body\");\n\t\t\t} else {\n\t\t\t\t_assert(\n\t\t\t\t\t$scrollParent[0] !== document &&\n\t\t\t\t\t\t$scrollParent[0] !== document.body,\n\t\t\t\t\t\"scrollParent should be a simple element or `window`, not document or body.\"\n\t\t\t\t);\n\n\t\t\t\tcontainerOffsetTop = $scrollParent.offset().top;\n\t\t\t\tnodeY =\n\t\t\t\t\t$(this.span).offset().top - containerOffsetTop + scrollTop; // relative to scroll parent\n\t\t\t\ttopNodeY = topNode\n\t\t\t\t\t? $(topNode.span).offset().top -\n\t\t\t\t\t containerOffsetTop +\n\t\t\t\t\t scrollTop\n\t\t\t\t\t: 0;\n\t\t\t\thorzScrollbarHeight = Math.max(\n\t\t\t\t\t0,\n\t\t\t\t\t$scrollParent.innerHeight() - $scrollParent[0].clientHeight\n\t\t\t\t);\n\t\t\t\tcontainerHeight -= horzScrollbarHeight;\n\t\t\t}\n\n\t\t\t// this.debug(\" scrollIntoView(), nodeY=\" + nodeY + \", containerHeight=\" + containerHeight);\n\t\t\tif (nodeY < scrollTop + topOfs) {\n\t\t\t\t// Node is above visible container area\n\t\t\t\tnewScrollTop = nodeY - topOfs;\n\t\t\t\t// this.debug(\" scrollIntoView(), UPPER newScrollTop=\" + newScrollTop);\n\t\t\t} else if (\n\t\t\t\tnodeY + nodeHeight >\n\t\t\t\tscrollTop + containerHeight - bottomOfs\n\t\t\t) {\n\t\t\t\tnewScrollTop = nodeY + nodeHeight - containerHeight + bottomOfs;\n\t\t\t\t// this.debug(\" scrollIntoView(), LOWER newScrollTop=\" + newScrollTop);\n\t\t\t\t// If a topNode was passed, make sure that it is never scrolled\n\t\t\t\t// outside the upper border\n\t\t\t\tif (topNode) {\n\t\t\t\t\t_assert(\n\t\t\t\t\t\ttopNode.isRootNode() || topNode.isVisible(),\n\t\t\t\t\t\t\"topNode must be visible\"\n\t\t\t\t\t);\n\t\t\t\t\tif (topNodeY < newScrollTop) {\n\t\t\t\t\t\tnewScrollTop = topNodeY - topOfs;\n\t\t\t\t\t\t// this.debug(\" scrollIntoView(), TOP newScrollTop=\" + newScrollTop);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newScrollTop === null) {\n\t\t\t\tdfd.resolveWith(this);\n\t\t\t} else {\n\t\t\t\t// this.debug(\" scrollIntoView(), SET newScrollTop=\" + newScrollTop);\n\t\t\t\tif (opts.effects) {\n\t\t\t\t\topts.effects.complete = function() {\n\t\t\t\t\t\tdfd.resolveWith(self);\n\t\t\t\t\t};\n\t\t\t\t\t$animateTarget.stop(true).animate(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tscrollTop: newScrollTop,\n\t\t\t\t\t\t},\n\t\t\t\t\t\topts.effects\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\t$animateTarget[0].scrollTop = newScrollTop;\n\t\t\t\t\tdfd.resolveWith(this);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dfd.promise();\n\t\t},\n\n\t\t/**Activate this node.\n\t\t *\n\t\t * The `cell` option requires the ext-table and ext-ariagrid extensions.\n\t\t *\n\t\t * @param {boolean} [flag=true] pass false to deactivate\n\t\t * @param {object} [opts] additional options. Defaults to {noEvents: false, noFocus: false, cell: null}\n\t\t * @returns {$.Promise}\n\t\t */\n\t\tsetActive: function(flag, opts) {\n\t\t\treturn this.tree._callHook(\"nodeSetActive\", this, flag, opts);\n\t\t},\n\t\t/**Expand or collapse this node. Promise is resolved, when lazy loading and animations are done.\n\t\t * @param {boolean} [flag=true] pass false to collapse\n\t\t * @param {object} [opts] additional options. Defaults to {noAnimation: false, noEvents: false}\n\t\t * @returns {$.Promise}\n\t\t */\n\t\tsetExpanded: function(flag, opts) {\n\t\t\treturn this.tree._callHook(\"nodeSetExpanded\", this, flag, opts);\n\t\t},\n\t\t/**Set keyboard focus to this node.\n\t\t * @param {boolean} [flag=true] pass false to blur\n\t\t * @see Fancytree#setFocus\n\t\t */\n\t\tsetFocus: function(flag) {\n\t\t\treturn this.tree._callHook(\"nodeSetFocus\", this, flag);\n\t\t},\n\t\t/**Select this node, i.e. check the checkbox.\n\t\t * @param {boolean} [flag=true] pass false to deselect\n\t\t * @param {object} [opts] additional options. Defaults to {noEvents: false, p\n\t\t * propagateDown: null, propagateUp: null, callback: null }\n\t\t */\n\t\tsetSelected: function(flag, opts) {\n\t\t\treturn this.tree._callHook(\"nodeSetSelected\", this, flag, opts);\n\t\t},\n\t\t/**Mark a lazy node as 'error', 'loading', 'nodata', or 'ok'.\n\t\t * @param {string} status 'error'|'empty'|'ok'\n\t\t * @param {string} [message]\n\t\t * @param {string} [details]\n\t\t */\n\t\tsetStatus: function(status, message, details) {\n\t\t\treturn this.tree._callHook(\n\t\t\t\t\"nodeSetStatus\",\n\t\t\t\tthis,\n\t\t\t\tstatus,\n\t\t\t\tmessage,\n\t\t\t\tdetails\n\t\t\t);\n\t\t},\n\t\t/**Rename this node.\n\t\t * @param {string} title\n\t\t */\n\t\tsetTitle: function(title) {\n\t\t\tthis.title = title;\n\t\t\tthis.renderTitle();\n\t\t\tthis.triggerModify(\"rename\");\n\t\t},\n\t\t/**Sort child list by title.\n\t\t * @param {function} [cmp] custom compare function(a, b) that returns -1, 0, or 1 (defaults to sort by title).\n\t\t * @param {boolean} [deep=false] pass true to sort all descendant nodes\n\t\t */\n\t\tsortChildren: function(cmp, deep) {\n\t\t\tvar i,\n\t\t\t\tl,\n\t\t\t\tcl = this.children;\n\n\t\t\tif (!cl) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcmp =\n\t\t\t\tcmp ||\n\t\t\t\tfunction(a, b) {\n\t\t\t\t\tvar x = a.title.toLowerCase(),\n\t\t\t\t\t\ty = b.title.toLowerCase();\n\n\t\t\t\t\t// eslint-disable-next-line no-nested-ternary\n\t\t\t\t\treturn x === y ? 0 : x > y ? 1 : -1;\n\t\t\t\t};\n\t\t\tcl.sort(cmp);\n\t\t\tif (deep) {\n\t\t\t\tfor (i = 0, l = cl.length; i < l; i++) {\n\t\t\t\t\tif (cl[i].children) {\n\t\t\t\t\t\tcl[i].sortChildren(cmp, \"$norender$\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (deep !== \"$norender$\") {\n\t\t\t\tthis.render();\n\t\t\t}\n\t\t\tthis.triggerModifyChild(\"sort\");\n\t\t},\n\t\t/** Convert node (or whole branch) into a plain object.\n\t\t *\n\t\t * The result is compatible with node.addChildren().\n\t\t *\n\t\t * @param {boolean} [recursive=false] include child nodes\n\t\t * @param {function} [callback] callback(dict, node) is called for every node, in order to allow modifications\n\t\t * @returns {NodeData}\n\t\t */\n\t\ttoDict: function(recursive, callback) {\n\t\t\tvar i,\n\t\t\t\tl,\n\t\t\t\tnode,\n\t\t\t\tdict = {},\n\t\t\t\tself = this;\n\n\t\t\t$.each(NODE_ATTRS, function(i, a) {\n\t\t\t\tif (self[a] || self[a] === false) {\n\t\t\t\t\tdict[a] = self[a];\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (!$.isEmptyObject(this.data)) {\n\t\t\t\tdict.data = $.extend({}, this.data);\n\t\t\t\tif ($.isEmptyObject(dict.data)) {\n\t\t\t\t\tdelete dict.data;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (callback) {\n\t\t\t\tcallback(dict, self);\n\t\t\t}\n\t\t\tif (recursive) {\n\t\t\t\tif (this.hasChildren()) {\n\t\t\t\t\tdict.children = [];\n\t\t\t\t\tfor (i = 0, l = this.children.length; i < l; i++) {\n\t\t\t\t\t\tnode = this.children[i];\n\t\t\t\t\t\tif (!node.isStatusNode()) {\n\t\t\t\t\t\t\tdict.children.push(node.toDict(true, callback));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// dict.children = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn dict;\n\t\t},\n\t\t/**\n\t\t * Set, clear, or toggle class of node's span tag and .extraClasses.\n\t\t *\n\t\t * @param {string} className class name (separate multiple classes by space)\n\t\t * @param {boolean} [flag] true/false to add/remove class. If omitted, class is toggled.\n\t\t * @returns {boolean} true if a class was added\n\t\t *\n\t\t * @since 2.17\n\t\t */\n\t\ttoggleClass: function(value, flag) {\n\t\t\tvar className,\n\t\t\t\thasClass,\n\t\t\t\trnotwhite = /\\S+/g,\n\t\t\t\tclassNames = value.match(rnotwhite) || [],\n\t\t\t\ti = 0,\n\t\t\t\twasAdded = false,\n\t\t\t\tstatusElem = this[this.tree.statusClassPropName],\n\t\t\t\tcurClasses = \" \" + (this.extraClasses || \"\") + \" \";\n\n\t\t\t// this.info(\"toggleClass('\" + value + \"', \" + flag + \")\", curClasses);\n\t\t\t// Modify DOM element directly if it already exists\n\t\t\tif (statusElem) {\n\t\t\t\t$(statusElem).toggleClass(value, flag);\n\t\t\t}\n\t\t\t// Modify node.extraClasses to make this change persistent\n\t\t\t// Toggle if flag was not passed\n\t\t\twhile ((className = classNames[i++])) {\n\t\t\t\thasClass = curClasses.indexOf(\" \" + className + \" \") >= 0;\n\t\t\t\tflag = flag === undefined ? !hasClass : !!flag;\n\t\t\t\tif (flag) {\n\t\t\t\t\tif (!hasClass) {\n\t\t\t\t\t\tcurClasses += className + \" \";\n\t\t\t\t\t\twasAdded = true;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\twhile (curClasses.indexOf(\" \" + className + \" \") > -1) {\n\t\t\t\t\t\tcurClasses = curClasses.replace(\n\t\t\t\t\t\t\t\" \" + className + \" \",\n\t\t\t\t\t\t\t\" \"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.extraClasses = $.trim(curClasses);\n\t\t\t// this.info(\"-> toggleClass('\" + value + \"', \" + flag + \"): '\" + this.extraClasses + \"'\");\n\t\t\treturn wasAdded;\n\t\t},\n\t\t/** Flip expanded status. */\n\t\ttoggleExpanded: function() {\n\t\t\treturn this.tree._callHook(\"nodeToggleExpanded\", this);\n\t\t},\n\t\t/** Flip selection status. */\n\t\ttoggleSelected: function() {\n\t\t\treturn this.tree._callHook(\"nodeToggleSelected\", this);\n\t\t},\n\t\ttoString: function() {\n\t\t\treturn \"FancytreeNode@\" + this.key + \"[title='\" + this.title + \"']\";\n\t\t\t// return \"<FancytreeNode(#\" + this.key + \", '\" + this.title + \"')>\";\n\t\t},\n\t\t/**\n\t\t * Trigger `modifyChild` event on a parent to signal that a child was modified.\n\t\t * @param {string} operation Type of change: 'add', 'remove', 'rename', 'move', 'data', ...\n\t\t * @param {FancytreeNode} [childNode]\n\t\t * @param {object} [extra]\n\t\t */\n\t\ttriggerModifyChild: function(operation, childNode, extra) {\n\t\t\tvar data,\n\t\t\t\tmodifyChild = this.tree.options.modifyChild;\n\n\t\t\tif (modifyChild) {\n\t\t\t\tif (childNode && childNode.parent !== this) {\n\t\t\t\t\t$.error(\n\t\t\t\t\t\t\"childNode \" + childNode + \" is not a child of \" + this\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tdata = {\n\t\t\t\t\tnode: this,\n\t\t\t\t\ttree: this.tree,\n\t\t\t\t\toperation: operation,\n\t\t\t\t\tchildNode: childNode || null,\n\t\t\t\t};\n\t\t\t\tif (extra) {\n\t\t\t\t\t$.extend(data, extra);\n\t\t\t\t}\n\t\t\t\tmodifyChild({ type: \"modifyChild\" }, data);\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Trigger `modifyChild` event on node.parent(!).\n\t\t * @param {string} operation Type of change: 'add', 'remove', 'rename', 'move', 'data', ...\n\t\t * @param {object} [extra]\n\t\t */\n\t\ttriggerModify: function(operation, extra) {\n\t\t\tthis.parent.triggerModifyChild(operation, this, extra);\n\t\t},\n\t\t/** Call fn(node) for all child nodes in hierarchical order (depth-first).<br>\n\t\t * Stop iteration, if fn() returns false. Skip current branch, if fn() returns \"skip\".<br>\n\t\t * Return false if iteration was stopped.\n\t\t *\n\t\t * @param {function} fn the callback function.\n\t\t * Return false to stop iteration, return \"skip\" to skip this node and\n\t\t * its children only.\n\t\t * @param {boolean} [includeSelf=false]\n\t\t * @returns {boolean}\n\t\t */\n\t\tvisit: function(fn, includeSelf) {\n\t\t\tvar i,\n\t\t\t\tl,\n\t\t\t\tres = true,\n\t\t\t\tchildren = this.children;\n\n\t\t\tif (includeSelf === true) {\n\t\t\t\tres = fn(this);\n\t\t\t\tif (res === false || res === \"skip\") {\n\t\t\t\t\treturn res;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (children) {\n\t\t\t\tfor (i = 0, l = children.length; i < l; i++) {\n\t\t\t\t\tres = children[i].visit(fn, true);\n\t\t\t\t\tif (res === false) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t/** Call fn(node) for all child nodes and recursively load lazy children.<br>\n\t\t * <b>Note:</b> If you need this method, you probably should consider to review\n\t\t * your architecture! Recursivley loading nodes is a perfect way for lazy\n\t\t * programmers to flood the server with requests ;-)\n\t\t *\n\t\t * @param {function} [fn] optional callback function.\n\t\t * Return false to stop iteration, return \"skip\" to skip this node and\n\t\t * its children only.\n\t\t * @param {boolean} [includeSelf=false]\n\t\t * @returns {$.Promise}\n\t\t * @since 2.4\n\t\t */\n\t\tvisitAndLoad: function(fn, includeSelf, _recursion) {\n\t\t\tvar dfd,\n\t\t\t\tres,\n\t\t\t\tloaders,\n\t\t\t\tnode = this;\n\n\t\t\t// node.debug(\"visitAndLoad\");\n\t\t\tif (fn && includeSelf === true) {\n\t\t\t\tres = fn(node);\n\t\t\t\tif (res === false || res === \"skip\") {\n\t\t\t\t\treturn _recursion ? res : _getResolvedPromise();\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!node.children && !node.lazy) {\n\t\t\t\treturn _getResolvedPromise();\n\t\t\t}\n\t\t\tdfd = new $.Deferred();\n\t\t\tloaders = [];\n\t\t\t// node.debug(\"load()...\");\n\t\t\tnode.load().done(function() {\n\t\t\t\t// node.debug(\"load()... done.\");\n\t\t\t\tfor (var i = 0, l = node.children.length; i < l; i++) {\n\t\t\t\t\tres = node.children[i].visitAndLoad(fn, true, true);\n\t\t\t\t\tif (res === false) {\n\t\t\t\t\t\tdfd.reject();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (res !== \"skip\") {\n\t\t\t\t\t\tloaders.push(res); // Add promise to the list\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$.when.apply(this, loaders).then(function() {\n\t\t\t\t\tdfd.resolve();\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn dfd.promise();\n\t\t},\n\t\t/** Call fn(node) for all parent nodes, bottom-up, including invisible system root.<br>\n\t\t * Stop iteration, if fn() returns false.<br>\n\t\t * Return false if iteration was stopped.\n\t\t *\n\t\t * @param {function} fn the callback function.\n\t\t * Return false to stop iteration, return \"skip\" to skip this node and children only.\n\t\t * @param {boolean} [includeSelf=false]\n\t\t * @returns {boolean}\n\t\t */\n\t\tvisitParents: function(fn, includeSelf) {\n\t\t\t// Visit parent nodes (bottom up)\n\t\t\tif (includeSelf && fn(this) === false) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar p = this.parent;\n\t\t\twhile (p) {\n\t\t\t\tif (fn(p) === false) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tp = p.parent;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\t/** Call fn(node) for all sibling nodes.<br>\n\t\t * Stop iteration, if fn() returns false.<br>\n\t\t * Return false if iteration was stopped.\n\t\t *\n\t\t * @param {function} fn the callback function.\n\t\t * Return false to stop iteration.\n\t\t * @param {boolean} [includeSelf=false]\n\t\t * @returns {boolean}\n\t\t */\n\t\tvisitSiblings: function(fn, includeSelf) {\n\t\t\tvar i,\n\t\t\t\tl,\n\t\t\t\tn,\n\t\t\t\tac = this.parent.children;\n\n\t\t\tfor (i = 0, l = ac.length; i < l; i++) {\n\t\t\t\tn = ac[i];\n\t\t\t\tif (includeSelf || n !== this) {\n\t\t\t\t\tif (fn(n) === false) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\t/** Write warning to browser console if debugLevel >= 2 (prepending node info)\n\t\t *\n\t\t * @param {*} msg string or object or array of such\n\t\t */\n\t\twarn: function(msg) {\n\t\t\tif (this.tree.options.debugLevel >= 2) {\n\t\t\t\tArray.prototype.unshift.call(arguments, this.toString());\n\t\t\t\tconsoleApply(\"warn\", arguments);\n\t\t\t}\n\t\t},\n\t};\n\n\t/******************************************************************************\n\t * Fancytree\n\t */\n\t/**\n\t * Construct a new tree object.\n\t *\n\t * @class Fancytree\n\t * @classdesc The controller behind a fancytree.\n\t * This class also contains 'hook methods': see {@link Fancytree_Hooks}.\n\t *\n\t * @param {Widget} widget\n\t *\n\t * @property {string} _id Automatically generated unique tree instance ID, e.g. \"1\".\n\t * @property {string} _ns Automatically generated unique tree namespace, e.g. \".fancytree-1\".\n\t * @property {FancytreeNode} activeNode Currently active node or null.\n\t * @property {string} ariaPropName Property name of FancytreeNode that contains the element which will receive the aria attributes.\n\t * Typically \"li\", but \"tr\" for table extension.\n\t * @property {jQueryObject} $container Outer <ul> element (or <table> element for ext-table).\n\t * @property {jQueryObject} $div A jQuery object containing the element used to instantiate the tree widget (`widget.element`)\n\t * @property {object|array} columns Recommended place to store shared column meta data. @since 2.27\n\t * @property {object} data Metadata, i.e. properties that may be passed to `source` in addition to a children array.\n\t * @property {object} ext Hash of all active plugin instances.\n\t * @property {FancytreeNode} focusNode Currently focused node or null.\n\t * @property {FancytreeNode} lastSelectedNode Used to implement selectMode 1 (single select)\n\t * @property {string} nodeContainerAttrName Property name of FancytreeNode that contains the outer element of single nodes.\n\t * Typically \"li\", but \"tr\" for table extension.\n\t * @property {FancytreeOptions} options Current options, i.e. default options + options passed to constructor.\n\t * @property {FancytreeNode} rootNode Invisible system root node.\n\t * @property {string} statusClassPropName Property name of FancytreeNode that contains the element which will receive the status classes.\n\t * Typically \"span\", but \"tr\" for table extension.\n\t * @property {object} types Map for shared type specific meta data, used with node.type attribute. @since 2.27\n\t * @property {object} viewport See ext-vieport. @since v2.31\n\t * @property {object} widget Base widget instance.\n\t */\n\tfunction Fancytree(widget) {\n\t\tthis.widget = widget;\n\t\tthis.$div = widget.element;\n\t\tthis.options = widget.options;\n\t\tif (this.options) {\n\t\t\tif (this.options.lazyload !== undefined) {\n\t\t\t\t$.error(\n\t\t\t\t\t\"The 'lazyload' event is deprecated since 2014-02-25. Use 'lazyLoad' (with uppercase L) instead.\"\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (this.options.loaderror !== undefined) {\n\t\t\t\t$.error(\n\t\t\t\t\t\"The 'loaderror' event was renamed since 2014-07-03. Use 'loadError' (with uppercase E) instead.\"\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (this.options.fx !== undefined) {\n\t\t\t\t$.error(\n\t\t\t\t\t\"The 'fx' option was replaced by 'toggleEffect' since 2014-11-30.\"\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (this.options.removeNode !== undefined) {\n\t\t\t\t$.error(\n\t\t\t\t\t\"The 'removeNode' event was replaced by 'modifyChild' since 2.20 (2016-09-10).\"\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tthis.ext = {}; // Active extension instances\n\t\tthis.types = {};\n\t\tthis.columns = {};\n\t\t// allow to init tree.data.foo from <div data-foo=''>\n\t\tthis.data = _getElementDataAsDict(this.$div);\n\t\t// TODO: use widget.uuid instead?\n\t\tthis._id = \"\" + (this.options.treeId || $.ui.fancytree._nextId++);\n\t\t// TODO: use widget.eventNamespace instead?\n\t\tthis._ns = \".fancytree-\" + this._id; // append for namespaced events\n\t\tthis.activeNode = null;\n\t\tthis.focusNode = null;\n\t\tthis._hasFocus = null;\n\t\tthis._tempCache = {};\n\t\tthis._lastMousedownNode = null;\n\t\tthis._enableUpdate = true;\n\t\tthis.lastSelectedNode = null;\n\t\tthis.systemFocusElement = null;\n\t\tthis.lastQuicksearchTerm = \"\";\n\t\tthis.lastQuicksearchTime = 0;\n\t\tthis.viewport = null; // ext-grid\n\n\t\tthis.statusClassPropName = \"span\";\n\t\tthis.ariaPropName = \"li\";\n\t\tthis.nodeContainerAttrName = \"li\";\n\n\t\t// Remove previous markup if any\n\t\tthis.$div.find(\">ul.fancytree-container\").remove();\n\n\t\t// Create a node without parent.\n\t\tvar fakeParent = { tree: this },\n\t\t\t$ul;\n\t\tthis.rootNode = new FancytreeNode(fakeParent, {\n\t\t\ttitle: \"root\",\n\t\t\tkey: \"root_\" + this._id,\n\t\t\tchildren: null,\n\t\t\texpanded: true,\n\t\t});\n\t\tthis.rootNode.parent = null;\n\n\t\t// Create root markup\n\t\t$ul = $(\"<ul>\", {\n\t\t\tid: \"ft-id-\" + this._id,\n\t\t\tclass: \"ui-fancytree fancytree-container fancytree-plain\",\n\t\t}).appendTo(this.$div);\n\t\tthis.$container = $ul;\n\t\tthis.rootNode.ul = $ul[0];\n\n\t\tif (this.options.debugLevel == null) {\n\t\t\tthis.options.debugLevel = FT.debugLevel;\n\t\t}\n\t\t// // Add container to the TAB chain\n\t\t// // See http://www.w3.org/TR/wai-aria-practices/#focus_activedescendant\n\t\t// // #577: Allow to set tabindex to \"0\", \"-1\" and \"\"\n\t\t// this.$container.attr(\"tabindex\", this.options.tabindex);\n\n\t\t// if( this.options.rtl ) {\n\t\t// \tthis.$container.attr(\"DIR\", \"RTL\").addClass(\"fancytree-rtl\");\n\t\t// // }else{\n\t\t// //\tthis.$container.attr(\"DIR\", null).removeClass(\"fancytree-rtl\");\n\t\t// }\n\t\t// if(this.options.aria){\n\t\t// \tthis.$container.attr(\"role\", \"tree\");\n\t\t// \tif( this.options.selectMode !== 1 ) {\n\t\t// \t\tthis.$container.attr(\"aria-multiselectable\", true);\n\t\t// \t}\n\t\t// }\n\t}\n\n\tFancytree.prototype = /** @lends Fancytree# */ {\n\t\t/* Return a context object that can be re-used for _callHook().\n\t\t * @param {Fancytree | FancytreeNode | EventData} obj\n\t\t * @param {Event} originalEvent\n\t\t * @param {Object} extra\n\t\t * @returns {EventData}\n\t\t */\n\t\t_makeHookContext: function(obj, originalEvent, extra) {\n\t\t\tvar ctx, tree;\n\t\t\tif (obj.node !== undefined) {\n\t\t\t\t// obj is already a context object\n\t\t\t\tif (originalEvent && obj.originalEvent !== originalEvent) {\n\t\t\t\t\t$.error(\"invalid args\");\n\t\t\t\t}\n\t\t\t\tctx = obj;\n\t\t\t} else if (obj.tree) {\n\t\t\t\t// obj is a FancytreeNode\n\t\t\t\ttree = obj.tree;\n\t\t\t\tctx = {\n\t\t\t\t\tnode: obj,\n\t\t\t\t\ttree: tree,\n\t\t\t\t\twidget: tree.widget,\n\t\t\t\t\toptions: tree.widget.options,\n\t\t\t\t\toriginalEvent: originalEvent,\n\t\t\t\t\ttypeInfo: tree.types[obj.type] || {},\n\t\t\t\t};\n\t\t\t} else if (obj.widget) {\n\t\t\t\t// obj is a Fancytree\n\t\t\t\tctx = {\n\t\t\t\t\tnode: null,\n\t\t\t\t\ttree: obj,\n\t\t\t\t\twidget: obj.widget,\n\t\t\t\t\toptions: obj.widget.options,\n\t\t\t\t\toriginalEvent: originalEvent,\n\t\t\t\t};\n\t\t\t} else {\n\t\t\t\t$.error(\"invalid args\");\n\t\t\t}\n\t\t\tif (extra) {\n\t\t\t\t$.extend(ctx, extra);\n\t\t\t}\n\t\t\treturn ctx;\n\t\t},\n\t\t/* Trigger a hook function: funcName(ctx, [...]).\n\t\t *\n\t\t * @param {string} funcName\n\t\t * @param {Fancytree|FancytreeNode|EventData} contextObject\n\t\t * @param {any} [_extraArgs] optional additional arguments\n\t\t * @returns {any}\n\t\t */\n\t\t_callHook: function(funcName, contextObject, _extraArgs) {\n\t\t\tvar ctx = this._makeHookContext(contextObject),\n\t\t\t\tfn = this[funcName],\n\t\t\t\targs = Array.prototype.slice.call(arguments, 2);\n\t\t\tif (!$.isFunction(fn)) {\n\t\t\t\t$.error(\"_callHook('\" + funcName + \"') is not a function\");\n\t\t\t}\n\t\t\targs.unshift(ctx);\n\t\t\t// this.debug(\"_hook\", funcName, ctx.node && ctx.node.toString() || ctx.tree.toString(), args);\n\t\t\treturn fn.apply(this, args);\n\t\t},\n\t\t_setExpiringValue: function(key, value, ms) {\n\t\t\tthis._tempCache[key] = {\n\t\t\t\tvalue: value,\n\t\t\t\texpire: Date.now() + (+ms || 50),\n\t\t\t};\n\t\t},\n\t\t_getExpiringValue: function(key) {\n\t\t\tvar entry = this._tempCache[key];\n\t\t\tif (entry && entry.expire > Date.now()) {\n\t\t\t\treturn entry.value;\n\t\t\t}\n\t\t\tdelete this._tempCache[key];\n\t\t\treturn null;\n\t\t},\n\t\t/* Check if current extensions dependencies are met and throw an error if not.\n\t\t *\n\t\t * This method may be called inside the `treeInit` hook for custom extensions.\n\t\t *\n\t\t * @param {string} extension name of the required extension\n\t\t * @param {boolean} [required=true] pass `false` if the extension is optional, but we want to check for order if it is present\n\t\t * @param {boolean} [before] `true` if `name` must be included before this, `false` otherwise (use `null` if order doesn't matter)\n\t\t * @param {string} [message] optional error message (defaults to a descriptve error message)\n\t\t */\n\t\t_requireExtension: function(name, required, before, message) {\n\t\t\tif (before != null) {\n\t\t\t\tbefore = !!before;\n\t\t\t}\n\t\t\tvar thisName = this._local.name,\n\t\t\t\textList = this.options.extensions,\n\t\t\t\tisBefore =\n\t\t\t\t\t$.inArray(name, extList) < $.inArray(thisName, extList),\n\t\t\t\tisMissing = required && this.ext[name] == null,\n\t\t\t\tbadOrder = !isMissing && before != null && before !== isBefore;\n\n\t\t\t_assert(\n\t\t\t\tthisName && thisName !== name,\n\t\t\t\t\"invalid or same name '\" + thisName + \"' (require yourself?)\"\n\t\t\t);\n\n\t\t\tif (isMissing || badOrder) {\n\t\t\t\tif (!message) {\n\t\t\t\t\tif (isMissing || required) {\n\t\t\t\t\t\tmessage =\n\t\t\t\t\t\t\t\"'\" +\n\t\t\t\t\t\t\tthisName +\n\t\t\t\t\t\t\t\"' extension requires '\" +\n\t\t\t\t\t\t\tname +\n\t\t\t\t\t\t\t\"'\";\n\t\t\t\t\t\tif (badOrder) {\n\t\t\t\t\t\t\tmessage +=\n\t\t\t\t\t\t\t\t\" to be registered \" +\n\t\t\t\t\t\t\t\t(before ? \"before\" : \"after\") +\n\t\t\t\t\t\t\t\t\" itself\";\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmessage =\n\t\t\t\t\t\t\t\"If used together, `\" +\n\t\t\t\t\t\t\tname +\n\t\t\t\t\t\t\t\"` must be registered \" +\n\t\t\t\t\t\t\t(before ? \"before\" : \"after\") +\n\t\t\t\t\t\t\t\" `\" +\n\t\t\t\t\t\t\tthisName +\n\t\t\t\t\t\t\t\"`\";\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$.error(message);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\t\t/** Activate node with a given key and fire focus and activate events.\n\t\t *\n\t\t * A previously activated node will be deactivated.\n\t\t * If activeVisible option is set, all parents will be expanded as necessary.\n\t\t * Pass key = false, to deactivate the current node only.\n\t\t * @param {string} key\n\t\t * @param {object} [opts] additional options. Defaults to {noEvents: false, noFocus: false}\n\t\t * @returns {FancytreeNode} activated node (null, if not found)\n\t\t */\n\t\tactivateKey: function(key, opts) {\n\t\t\tvar node = this.getNodeByKey(key);\n\t\t\tif (node) {\n\t\t\t\tnode.setActive(true, opts);\n\t\t\t} else if (this.activeNode) {\n\t\t\t\tthis.activeNode.setActive(false, opts);\n\t\t\t}\n\t\t\treturn node;\n\t\t},\n\t\t/** (experimental) Add child status nodes that indicate 'More...', ....\n\t\t * @param {boolean|object} node optional node definition. Pass `false` to remove all paging nodes.\n\t\t * @param {string} [mode='append'] 'child'|firstChild'\n\t\t * @since 2.15\n\t\t */\n\t\taddPagingNode: function(node, mode) {\n\t\t\treturn this.rootNode.addPagingNode(node, mode);\n\t\t},\n\t\t/** (experimental) Modify existing data model.\n\t\t *\n\t\t * @param {Array} patchList array of [key, NodePatch] arrays\n\t\t * @returns {$.Promise} resolved, when all patches have been applied\n\t\t * @see TreePatch\n\t\t */\n\t\tapplyPatch: function(patchList) {\n\t\t\tvar dfd,\n\t\t\t\ti,\n\t\t\t\tp2,\n\t\t\t\tkey,\n\t\t\t\tpatch,\n\t\t\t\tnode,\n\t\t\t\tpatchCount = patchList.length,\n\t\t\t\tdeferredList = [];\n\n\t\t\tfor (i = 0; i < patchCount; i++) {\n\t\t\t\tp2 = patchList[i];\n\t\t\t\t_assert(\n\t\t\t\t\tp2.length === 2,\n\t\t\t\t\t\"patchList must be an array of length-2-arrays\"\n\t\t\t\t);\n\t\t\t\tkey = p2[0];\n\t\t\t\tpatch = p2[1];\n\t\t\t\tnode = key === null ? this.rootNode : this.getNodeByKey(key);\n\t\t\t\tif (node) {\n\t\t\t\t\tdfd = new $.Deferred();\n\t\t\t\t\tdeferredList.push(dfd);\n\t\t\t\t\tnode.applyPatch(patch).always(_makeResolveFunc(dfd, node));\n\t\t\t\t} else {\n\t\t\t\t\tthis.warn(\"could not find node with key '\" + key + \"'\");\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Return a promise that is resolved, when ALL patches were applied\n\t\t\treturn $.when.apply($, deferredList).promise();\n\t\t},\n\t\t/* TODO: implement in dnd extension\n\t\tcancelDrag: function() {\n\t\t\t\tvar dd = $.ui.ddmanager.current;\n\t\t\t\tif(dd){\n\t\t\t\t\tdd.cancel();\n\t\t\t\t}\n\t\t\t},\n\t\t*/\n\t\t/** Remove all nodes.\n\t\t * @since 2.14\n\t\t */\n\t\tclear: function(source) {\n\t\t\tthis._callHook(\"treeClear\", this);\n\t\t},\n\t\t/** Return the number of nodes.\n\t\t * @returns {integer}\n\t\t */\n\t\tcount: function() {\n\t\t\treturn this.rootNode.countChildren();\n\t\t},\n\t\t/** Write to browser console if debugLevel >= 4 (prepending tree name)\n\t\t *\n\t\t * @param {*} msg string or object or array of such\n\t\t */\n\t\tdebug: function(msg) {\n\t\t\tif (this.options.debugLevel >= 4) {\n\t\t\t\tArray.prototype.unshift.call(arguments, this.toString());\n\t\t\t\tconsoleApply(\"log\", arguments);\n\t\t\t}\n\t\t},\n\t\t/** Enable (or disable) the tree control.\n\t\t *\n\t\t * @param {boolean} [flag=true] pass false to disable\n\t\t * @since 2.30\n\t\t */\n\t\tenable: function(flag) {\n\t\t\tif (flag === false) {\n\t\t\t\tthis.widget.disable();\n\t\t\t} else {\n\t\t\t\tthis.widget.enable();\n\t\t\t}\n\t\t},\n\t\t/** Temporarily suppress rendering to improve performance on bulk-updates.\n\t\t *\n\t\t * @param {boolean} flag\n\t\t * @returns {boolean} previous status\n\t\t * @since 2.19\n\t\t */\n\t\tenableUpdate: function(flag) {\n\t\t\tflag = flag !== false;\n\t\t\tif (!!this._enableUpdate === !!flag) {\n\t\t\t\treturn flag;\n\t\t\t}\n\t\t\tthis._enableUpdate = flag;\n\t\t\tif (flag) {\n\t\t\t\tthis.debug(\"enableUpdate(true): redraw \"); //, this._dirtyRoots);\n\t\t\t\tthis._callHook(\"treeStructureChanged\", this, \"enableUpdate\");\n\t\t\t\tthis.render();\n\t\t\t} else {\n\t\t\t\t// \tthis._dirtyRoots = null;\n\t\t\t\tthis.debug(\"enableUpdate(false)...\");\n\t\t\t}\n\t\t\treturn !flag; // return previous value\n\t\t},\n\t\t/** Write error to browser console if debugLevel >= 1 (prepending tree info)\n\t\t *\n\t\t * @param {*} msg string or object or array of such\n\t\t */\n\t\terror: function(msg) {\n\t\t\tif (this.options.debugLevel >= 1) {\n\t\t\t\tArray.prototype.unshift.call(arguments, this.toString());\n\t\t\t\tconsoleApply(\"error\", arguments);\n\t\t\t}\n\t\t},\n\t\t/** Expand (or collapse) all parent nodes.\n\t\t *\n\t\t * This convenience method uses `tree.visit()` and `tree.setExpanded()`\n\t\t * internally.\n\t\t *\n\t\t * @param {boolean} [flag=true] pass false to collapse\n\t\t * @param {object} [opts] passed to setExpanded()\n\t\t * @since 2.30\n\t\t */\n\t\texpandAll: function(flag, opts) {\n\t\t\tvar prev = this.enableUpdate(false);\n\n\t\t\tflag = flag !== false;\n\t\t\tthis.visit(function(node) {\n\t\t\t\tif (\n\t\t\t\t\tnode.hasChildren() !== false &&\n\t\t\t\t\tnode.isExpanded() !== flag\n\t\t\t\t) {\n\t\t\t\t\tnode.setExpanded(flag, opts);\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.enableUpdate(prev);\n\t\t},\n\t\t/**Find all nodes that matches condition.\n\t\t *\n\t\t * @param {string | function(node)} match title string to search for, or a\n\t\t * callback function that returns `true` if a node is matched.\n\t\t * @returns {FancytreeNode[]} array of nodes (may be empty)\n\t\t * @see FancytreeNode#findAll\n\t\t * @since 2.12\n\t\t */\n\t\tfindAll: function(match) {\n\t\t\treturn this.rootNode.findAll(match);\n\t\t},\n\t\t/**Find first node that matches condition.\n\t\t *\n\t\t * @param {string | function(node)} match title string to search for, or a\n\t\t * callback function that returns `true` if a node is matched.\n\t\t * @returns {FancytreeNode} matching node or null\n\t\t * @see FancytreeNode#findFirst\n\t\t * @since 2.12\n\t\t */\n\t\tfindFirst: function(match) {\n\t\t\treturn this.rootNode.findFirst(match);\n\t\t},\n\t\t/** Find the next visible node that starts with `match`, starting at `startNode`\n\t\t * and wrap-around at the end.\n\t\t *\n\t\t * @param {string|function} match\n\t\t * @param {FancytreeNode} [startNode] defaults to first node\n\t\t * @returns {FancytreeNode} matching node or null\n\t\t */\n\t\tfindNextNode: function(match, startNode) {\n\t\t\t//, visibleOnly) {\n\t\t\tvar res = null,\n\t\t\t\tfirstNode = this.getFirstChild();\n\n\t\t\tmatch =\n\t\t\t\ttypeof match === \"string\"\n\t\t\t\t\t? _makeNodeTitleStartMatcher(match)\n\t\t\t\t\t: match;\n\t\t\tstartNode = startNode || firstNode;\n\n\t\t\tfunction _checkNode(n) {\n\t\t\t\t// console.log(\"_check \" + n)\n\t\t\t\tif (match(n)) {\n\t\t\t\t\tres = n;\n\t\t\t\t}\n\t\t\t\tif (res || n === startNode) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.visitRows(_checkNode, {\n\t\t\t\tstart: startNode,\n\t\t\t\tincludeSelf: false,\n\t\t\t});\n\t\t\t// Wrap around search\n\t\t\tif (!res && startNode !== firstNode) {\n\t\t\t\tthis.visitRows(_checkNode, {\n\t\t\t\t\tstart: firstNode,\n\t\t\t\t\tincludeSelf: true,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t/** Find a node relative to another node.\n\t\t *\n\t\t * @param {FancytreeNode} node\n\t\t * @param {number|string} where The keyCode that would normally trigger this move,\n\t\t *\t\tor a keyword ('down', 'first', 'last', 'left', 'parent', 'right', 'up').\n\t\t * @param {boolean} [includeHidden=false] Not yet implemented\n\t\t * @returns {FancytreeNode|null}\n\t\t * @since v2.31\n\t\t */\n\t\tfindRelatedNode: function(node, where, includeHidden) {\n\t\t\tvar res = null,\n\t\t\t\tKC = $.ui.keyCode;\n\n\t\t\tswitch (where) {\n\t\t\t\tcase \"parent\":\n\t\t\t\tcase KC.BACKSPACE:\n\t\t\t\t\tif (node.parent && node.parent.parent) {\n\t\t\t\t\t\tres = node.parent;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"first\":\n\t\t\t\tcase KC.HOME:\n\t\t\t\t\t// First visible node\n\t\t\t\t\tthis.visit(function(n) {\n\t\t\t\t\t\tif (n.isVisible()) {\n\t\t\t\t\t\t\tres = n;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"last\":\n\t\t\t\tcase KC.END:\n\t\t\t\t\tthis.visit(function(n) {\n\t\t\t\t\t\t// last visible node\n\t\t\t\t\t\tif (n.isVisible()) {\n\t\t\t\t\t\t\tres = n;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"left\":\n\t\t\t\tcase KC.LEFT:\n\t\t\t\t\tif (node.expanded) {\n\t\t\t\t\t\tnode.setExpanded(false);\n\t\t\t\t\t} else if (node.parent && node.parent.parent) {\n\t\t\t\t\t\tres = node.parent;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"right\":\n\t\t\t\tcase KC.RIGHT:\n\t\t\t\t\tif (!node.expanded && (node.children || node.lazy)) {\n\t\t\t\t\t\tnode.setExpanded();\n\t\t\t\t\t\tres = node;\n\t\t\t\t\t} else if (node.children && node.children.length) {\n\t\t\t\t\t\tres = node.children[0];\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"up\":\n\t\t\t\tcase KC.UP:\n\t\t\t\t\tthis.visitRows(\n\t\t\t\t\t\tfunction(n) {\n\t\t\t\t\t\t\tres = n;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ start: node, reverse: true, includeSelf: false }\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"down\":\n\t\t\t\tcase KC.DOWN:\n\t\t\t\t\tthis.visitRows(\n\t\t\t\t\t\tfunction(n) {\n\t\t\t\t\t\t\tres = n;\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{ start: node, includeSelf: false }\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthis.tree.warn(\"Unknown relation '\" + where + \"'.\");\n\t\t\t}\n\t\t\treturn res;\n\t\t},\n\t\t// TODO: fromDict\n\t\t/**\n\t\t * Generate INPUT elements that can be submitted with html forms.\n\t\t *\n\t\t * In selectMode 3 only the topmost selected nodes are considered, unless\n\t\t * `opts.stopOnParents: false` is passed.\n\t\t *\n\t\t * @example\n\t\t * // Generate input elements for active and selected nodes\n\t\t * tree.generateFormElements();\n\t\t * // Generate input elements selected nodes, using a custom `name` attribute\n\t\t * tree.generateFormElements(\"cust_sel\", false);\n\t\t * // Generate input elements using a custom filter\n\t\t * tree.generateFormElements(true, true, { filter: function(node) {\n\t\t * return node.isSelected() && node.data.yes;\n\t\t * }});\n\t\t *\n\t\t * @param {boolean | string} [selected=true] Pass false to disable, pass a string to override the field name (default: 'ft_ID[]')\n\t\t * @param {boolean | string} [active=true] Pass false to disable, pass a string to override the field name (default: 'ft_ID_active')\n\t\t * @param {object} [opts] default { filter: null, stopOnParents: true }\n\t\t */\n\t\tgenerateFormElements: function(selected, active, opts) {\n\t\t\topts = opts || {};\n\n\t\t\tvar nodeList,\n\t\t\t\tselectedName =\n\t\t\t\t\ttypeof selected === \"string\"\n\t\t\t\t\t\t? selected\n\t\t\t\t\t\t: \"ft_\" + this._id + \"[]\",\n\t\t\t\tactiveName =\n\t\t\t\t\ttypeof active === \"string\"\n\t\t\t\t\t\t? active\n\t\t\t\t\t\t: \"ft_\" + this._id + \"_active\",\n\t\t\t\tid = \"fancytree_result_\" + this._id,\n\t\t\t\t$result = $(\"#\" + id),\n\t\t\t\tstopOnParents =\n\t\t\t\t\tthis.options.selectMode === 3 &&\n\t\t\t\t\topts.stopOnParents !== false;\n\n\t\t\tif ($result.length) {\n\t\t\t\t$result.empty();\n\t\t\t} else {\n\t\t\t\t$result = $(\"<div>\", {\n\t\t\t\t\tid: id,\n\t\t\t\t})\n\t\t\t\t\t.hide()\n\t\t\t\t\t.insertAfter(this.$container);\n\t\t\t}\n\t\t\tif (active !== false && this.activeNode) {\n\t\t\t\t$result.append(\n\t\t\t\t\t$(\"<input>\", {\n\t\t\t\t\t\ttype: \"radio\",\n\t\t\t\t\t\tname: activeName,\n\t\t\t\t\t\tvalue: this.activeNode.key,\n\t\t\t\t\t\tchecked: true,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t\tfunction _appender(node) {\n\t\t\t\t$result.append(\n\t\t\t\t\t$(\"<input>\", {\n\t\t\t\t\t\ttype: \"checkbox\",\n\t\t\t\t\t\tname: selectedName,\n\t\t\t\t\t\tvalue: node.key,\n\t\t\t\t\t\tchecked: true,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\t\t\tif (opts.filter) {\n\t\t\t\tthis.visit(function(node) {\n\t\t\t\t\tvar res = opts.filter(node);\n\t\t\t\t\tif (res === \"skip\") {\n\t\t\t\t\t\treturn res;\n\t\t\t\t\t}\n\t\t\t\t\tif (res !== false) {\n\t\t\t\t\t\t_appender(node);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (selected !== false) {\n\t\t\t\tnodeList = this.getSelectedNodes(stopOnParents);\n\t\t\t\t$.each(nodeList, function(idx, node) {\n\t\t\t\t\t_appender(node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t/**\n\t\t * Return the currently active node or null.\n\t\t * @returns {FancytreeNode}\n\t\t */\n\t\tgetActiveNode: function() {\n\t\t\treturn this.activeNode;\n\t\t},\n\t\t/** Return the first top level node if any (not the invisible root node).\n\t\t * @returns {FancytreeNode | null}\n\t\t */\n\t\tgetFirstChild: function() {\n\t\t\treturn this.rootNode.getFirstChild();\n\t\t},\n\t\t/**\n\t\t * Return node that has keyboard focus or null.\n\t\t * @returns {FancytreeNode}\n\t\t */\n\t\tgetFocusNode: function() {\n\t\t\treturn this.focusNode;\n\t\t},\n\t\t/**\n\t\t * Return current option value.\n\t\t * (Note: this is the preferred variant of `$().fancytree(\"option\", \"KEY\")`)\n\t\t *\n\t\t * @param {string} name option name (may contain '.')\n\t\t * @returns {any}\n\t\t */\n\t\tgetOption: function(optionName) {\n\t\t\treturn this.widget.option(optionName);\n\t\t},\n\t\t/**\n\t\t * Return node with a given key or null if not found.\n\t\t *\n\t\t * @param {string} key\n\t\t * @param {FancytreeNode} [searchRoot] only search below this node\n\t\t * @returns {FancytreeNode | null}\n\t\t */\n\t\tgetNodeByKey: function(key, searchRoot) {\n\t\t\t// Search the DOM by element ID (assuming this is faster than traversing all nodes).\n\t\t\tvar el, match;\n\t\t\t// TODO: use tree.keyMap if available\n\t\t\t// TODO: check opts.generateIds === true\n\t\t\tif (!searchRoot) {\n\t\t\t\tel = document.getElementById(this.options.idPrefix + key);\n\t\t\t\tif (el) {\n\t\t\t\t\treturn el.ftnode ? el.ftnode : null;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Not found in the DOM, but still may be in an unrendered part of tree\n\t\t\tsearchRoot = searchRoot || this.rootNode;\n\t\t\tmatch = null;\n\t\t\tsearchRoot.visit(function(node) {\n\t\t\t\tif (node.key === key) {\n\t\t\t\t\tmatch = node;\n\t\t\t\t\treturn false; // Stop iteration\n\t\t\t\t}\n\t\t\t}, true);\n\t\t\treturn match;\n\t\t},\n\t\t/** Return the invisible system root node.\n\t\t * @returns {FancytreeNode}\n\t\t */\n\t\tgetRootNode: function() {\n\t\t\treturn this.rootNode;\n\t\t},\n\t\t/**\n\t\t * Return an array of selected nodes.\n\t\t * @param {boolean} [stopOnParents=false] only return the topmost selected\n\t\t * node (useful with selectMode 3)\n\t\t * @returns {FancytreeNode[]}\n\t\t */\n\t\tgetSelectedNodes: function(stopOnParents) {\n\t\t\treturn this.rootNode.getSelectedNodes(stopOnParents);\n\t\t},\n\t\t/** Return true if the tree control has keyboard focus\n\t\t * @returns {boolean}\n\t\t */\n\t\thasFocus: function() {\n\t\t\treturn !!this._hasFocus;\n\t\t},\n\t\t/** Write to browser console if debugLevel >= 3
|
|