Version Description
Download this release
Release Info
Developer | yuvalo |
Plugin | WP Google Analytics Events |
Version | 2.7.1 |
Comparing to | |
See all releases |
Code changes from version 2.7.0 to 2.7.1
- ga-scroll-event.php +3 -3
- include/Activation.php +1 -1
- include/EventClasses.php +1 -1
- include/TrackingTable.php +8 -1
- readme.txt +6 -2
- trunk/click-tracking-page.png +0 -0
- trunk/css/style.css +0 -910
- trunk/css/third-party/images/ui-icons_444444_256x240.png +0 -0
- trunk/css/third-party/images/ui-icons_555555_256x240.png +0 -0
- trunk/css/third-party/images/ui-icons_777620_256x240.png +0 -0
- trunk/css/third-party/images/ui-icons_777777_256x240.png +0 -0
- trunk/css/third-party/images/ui-icons_cc0000_256x240.png +0 -0
- trunk/css/third-party/images/ui-icons_ffffff_256x240.png +0 -0
- trunk/css/third-party/jquery-ui.min.css +0 -7
- trunk/css/third-party/jquery.comiseo.daterangepicker.css +0 -116
- trunk/css/third-party/jquery.modal.min.css +0 -1
- trunk/ga-scroll-event.php +0 -644
- trunk/images/250g10.png +0 -0
- trunk/images/WPGAE_Logo-177x78.png +0 -0
- trunk/images/bg_icon_pro_features.png +0 -0
- trunk/images/bg_icon_support.png +0 -0
- trunk/images/close.png +0 -0
- trunk/images/ga-help.png +0 -0
- trunk/images/icon.png +0 -0
- trunk/images/icon_block.png +0 -0
- trunk/images/icon_lock.png +0 -0
- trunk/images/icon_video.png +0 -0
- trunk/images/menu-icon.png +0 -0
- trunk/images/wpflow-logo-banner-corp.png +0 -0
- trunk/images/wpflow-logo-banner.png +0 -0
- trunk/include/Activation.php +0 -189
- trunk/include/EventClasses.php +0 -322
- trunk/include/Settings.php +0 -810
- trunk/include/Snippets.php +0 -150
- trunk/include/TrackingTable.php +0 -131
- trunk/include/ga-events-pro-settings-default.json +0 -1
- trunk/include/install.php +0 -22
- trunk/include/notice.php +0 -166
- trunk/include/saved-snippets.php +0 -54
- trunk/js/admin.js +0 -180
- trunk/js/ajax-settings.js +0 -138
- trunk/js/dist/admin-scripts-libs-min.js +0 -1
- trunk/js/dist/admin-scripts-libs.js +0 -11004
ga-scroll-event.php
CHANGED
@@ -3,8 +3,8 @@
|
|
3 |
/*
|
4 |
Plugin Name: WP Google Analytics Events
|
5 |
Plugin URI: http://wpflow.com
|
6 |
-
Description:
|
7 |
-
Version: 2.7.
|
8 |
Author: PineWise
|
9 |
Author URI: http://wpflow.com
|
10 |
License: GPLv2
|
@@ -29,7 +29,7 @@ plugin_dir_url(__FILE__));
|
|
29 |
// Current version number
|
30 |
if (!defined('GA_EVENTS_VERSION'))
|
31 |
define('GA_EVENTS_VERSION',
|
32 |
-
'2.7.
|
33 |
|
34 |
// Dependencies
|
35 |
|
3 |
/*
|
4 |
Plugin Name: WP Google Analytics Events
|
5 |
Plugin URI: http://wpflow.com
|
6 |
+
Description: No-Code Custom Event Tracking for Google Analytics.
|
7 |
+
Version: 2.7.1
|
8 |
Author: PineWise
|
9 |
Author URI: http://wpflow.com
|
10 |
License: GPLv2
|
29 |
// Current version number
|
30 |
if (!defined('GA_EVENTS_VERSION'))
|
31 |
define('GA_EVENTS_VERSION',
|
32 |
+
'2.7.1');
|
33 |
|
34 |
// Dependencies
|
35 |
|
include/Activation.php
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
class GAEActivation
|
4 |
{
|
5 |
|
1 |
<?php
|
2 |
+
require_once("Settings.php");
|
3 |
class GAEActivation
|
4 |
{
|
5 |
|
include/EventClasses.php
CHANGED
@@ -97,7 +97,7 @@ class WPGAEGeneralEvent {
|
|
97 |
|
98 |
public static function set_cache_settings() {
|
99 |
$cached = static::prepare_cache_settings();
|
100 |
-
if (sizeof($cached)
|
101 |
static::update_cached_options($cached);
|
102 |
}
|
103 |
}
|
97 |
|
98 |
public static function set_cache_settings() {
|
99 |
$cached = static::prepare_cache_settings();
|
100 |
+
if (sizeof($cached) >= 0 ) {
|
101 |
static::update_cached_options($cached);
|
102 |
}
|
103 |
}
|
include/TrackingTable.php
CHANGED
@@ -124,7 +124,14 @@ class WPGAE_Tracking_Table extends WP_List_Table {
|
|
124 |
if ($action == "delete") {
|
125 |
$posts = isset( $_POST['wpgae_event'] ) ? (array) $_POST['wpgae_event'] : array();
|
126 |
global $wpgae;
|
127 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
}
|
129 |
|
130 |
}
|
124 |
if ($action == "delete") {
|
125 |
$posts = isset( $_POST['wpgae_event'] ) ? (array) $_POST['wpgae_event'] : array();
|
126 |
global $wpgae;
|
127 |
+
foreach (get_declared_classes() as $class) {
|
128 |
+
if (is_subclass_of($class, WPGAEGeneralEvent::class)) {
|
129 |
+
if ($this->wpgae_post_type == $class::get_wpgae_post_type() ) {
|
130 |
+
$class::deletePostsById($posts);
|
131 |
+
break;
|
132 |
+
}
|
133 |
+
}
|
134 |
+
}
|
135 |
}
|
136 |
|
137 |
}
|
readme.txt
CHANGED
@@ -1,8 +1,8 @@
|
|
1 |
-
=== WP Google Analytics Events ===
|
2 |
Contributors: yuvalo
|
3 |
Tags: analytics, google, events, ga, google analytics, tracking
|
4 |
Tested up to: 5.9
|
5 |
-
Stable tag: 2.7.
|
6 |
License: GPLv2
|
7 |
Requires at least: 3.0
|
8 |
|
@@ -107,6 +107,10 @@ If you are looking for more in-depth support, we encourage you to check out [WP
|
|
107 |
|
108 |
== Changelog ==
|
109 |
|
|
|
|
|
|
|
|
|
110 |
= Version 2.7.0 =
|
111 |
1. We added the Google Analytics reports section to each dashboard.
|
112 |
|
1 |
+
=== WP Google Analytics Events - No-Code Custom Event Tracking for Google Analytics ===
|
2 |
Contributors: yuvalo
|
3 |
Tags: analytics, google, events, ga, google analytics, tracking
|
4 |
Tested up to: 5.9
|
5 |
+
Stable tag: 2.7.1
|
6 |
License: GPLv2
|
7 |
Requires at least: 3.0
|
8 |
|
107 |
|
108 |
== Changelog ==
|
109 |
|
110 |
+
|
111 |
+
= Version 2.7.1 =
|
112 |
+
1. Fixing an issue with bulk actions where cached settings would not update.
|
113 |
+
|
114 |
= Version 2.7.0 =
|
115 |
1. We added the Google Analytics reports section to each dashboard.
|
116 |
|
trunk/click-tracking-page.png
DELETED
Binary file
|
trunk/css/style.css
DELETED
@@ -1,910 +0,0 @@
|
|
1 |
-
.ga_main{}
|
2 |
-
.ga_main .form-table td{}
|
3 |
-
.ga_main .form-table tbody tr th{
|
4 |
-
display: none;
|
5 |
-
}
|
6 |
-
.ga_main .form-table tbody tr td{
|
7 |
-
padding: 0;
|
8 |
-
/* width: 100%; */
|
9 |
-
display: block;
|
10 |
-
margin-bottom: 1.4em;
|
11 |
-
}
|
12 |
-
|
13 |
-
.wpgae-gs-form {
|
14 |
-
/*padding-left: 5px;*/
|
15 |
-
padding-top: 5px;
|
16 |
-
background-color: white;
|
17 |
-
margin-top: 4px;
|
18 |
-
}
|
19 |
-
|
20 |
-
.wpgae-gs-form-tabs {
|
21 |
-
/*padding-left: 5px;*/
|
22 |
-
padding-top: 5px;
|
23 |
-
background-color: white;
|
24 |
-
margin-top: 4px;
|
25 |
-
float: left;
|
26 |
-
display: inline-block;
|
27 |
-
padding-left: 10px;
|
28 |
-
padding-right: 10px;
|
29 |
-
}
|
30 |
-
|
31 |
-
/*.wpgae-gs-form-tabs .bulkactions {*/
|
32 |
-
/*margin-left: 10px;*/
|
33 |
-
/*}*/
|
34 |
-
.wpgae-gs-form-tabs .wpgae-gs-internal {
|
35 |
-
margin-left: 0px;
|
36 |
-
}
|
37 |
-
|
38 |
-
.ga_main #submit {
|
39 |
-
margin-left:30px;
|
40 |
-
}
|
41 |
-
|
42 |
-
.wpgae-gs-internal {
|
43 |
-
margin-left: 30px;
|
44 |
-
}
|
45 |
-
.wpgae-gs-form .nav-tab-wrapper{
|
46 |
-
border-bottom: 4px solid #2271b1 !important;
|
47 |
-
}
|
48 |
-
|
49 |
-
.wpgae-gs-form select {
|
50 |
-
margin-left: -3px;
|
51 |
-
}
|
52 |
-
.wpgae-gs-form .nav-tab {
|
53 |
-
background-color: white;
|
54 |
-
min-width: 300px;
|
55 |
-
font-size: 24px;
|
56 |
-
margin-left: 0.2em;
|
57 |
-
text-align: center;
|
58 |
-
}
|
59 |
-
.wpgae-gs-form .nav-tab-active {
|
60 |
-
background-color: #2271b1;
|
61 |
-
color: white;
|
62 |
-
border-bottom: 0px #2271b1;
|
63 |
-
}
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
/* The switch - the box around the slider */
|
68 |
-
.wpgae-gs-form .switch {
|
69 |
-
position: relative;
|
70 |
-
display: inline-block;
|
71 |
-
width: 60px;
|
72 |
-
height: 34px;
|
73 |
-
}
|
74 |
-
|
75 |
-
.wpgae-gs-form .toggle-control {
|
76 |
-
margin-left: 2px;
|
77 |
-
}
|
78 |
-
|
79 |
-
.ga_events_report table {
|
80 |
-
margin-left: 0 !important;
|
81 |
-
margin-top: 0 !important;
|
82 |
-
}
|
83 |
-
|
84 |
-
/* Remove blue outline around update button when new row added*/
|
85 |
-
#ga_events_options .btn-update:focus{
|
86 |
-
box-shadow: none;
|
87 |
-
color: #0073aa;
|
88 |
-
}
|
89 |
-
|
90 |
-
.ga_main .form-table {
|
91 |
-
margin-left: 30px;
|
92 |
-
margin-top: 20px;
|
93 |
-
}
|
94 |
-
|
95 |
-
.ga_main ga-file-action {
|
96 |
-
display: block;
|
97 |
-
float: left;
|
98 |
-
margin-right: 10px;
|
99 |
-
}
|
100 |
-
|
101 |
-
.ga_main #nofollow_tags_tagsinput{
|
102 |
-
width: 269px;
|
103 |
-
margin-top: 5px;
|
104 |
-
}
|
105 |
-
|
106 |
-
.ga_main #wpgae-dl-type {
|
107 |
-
vertical-align: middle;
|
108 |
-
margin-left: 10px;
|
109 |
-
}
|
110 |
-
|
111 |
-
.ga_main .form-table .ga-gs-input {
|
112 |
-
width: 235px;
|
113 |
-
}
|
114 |
-
|
115 |
-
.ga_main .form-table .ga-events-table{
|
116 |
-
|
117 |
-
width: 100%;
|
118 |
-
|
119 |
-
display: block;
|
120 |
-
}
|
121 |
-
.ga_main .form-table .ga-events-table thead tr th{
|
122 |
-
display:table-cell;
|
123 |
-
padding: 12px 12px 12px 12px;
|
124 |
-
}
|
125 |
-
.ga_main .form-table .ga-events-table tr td{
|
126 |
-
padding: 15px 10px;
|
127 |
-
display: table-cell;
|
128 |
-
text-align: center;
|
129 |
-
}
|
130 |
-
|
131 |
-
|
132 |
-
.wpgae-gs-internal .page-title-action {
|
133 |
-
top: 20px;
|
134 |
-
margin-left: 0px;
|
135 |
-
}
|
136 |
-
.wpgae-gs-internal .page-title-action:active {
|
137 |
-
top: 20px;
|
138 |
-
margin-left: 0px;
|
139 |
-
}
|
140 |
-
|
141 |
-
.ga-events-table .fa{
|
142 |
-
font-size: 20px;
|
143 |
-
}
|
144 |
-
|
145 |
-
.ga_main label {
|
146 |
-
min-width: 290px;
|
147 |
-
display: inline-block;
|
148 |
-
}
|
149 |
-
|
150 |
-
.ga-events-table input[type=number],
|
151 |
-
.ga-events-table input[type=text]{
|
152 |
-
width: 100%;
|
153 |
-
}
|
154 |
-
|
155 |
-
.link_class {
|
156 |
-
display: none;
|
157 |
-
}
|
158 |
-
.ga_events_track_links {
|
159 |
-
margin-right: 10px;
|
160 |
-
}
|
161 |
-
.ga_events_link_type {
|
162 |
-
margin-left: 20px;
|
163 |
-
}
|
164 |
-
#ga_events_nofollow_input{
|
165 |
-
margin-right: 10px;
|
166 |
-
}
|
167 |
-
|
168 |
-
#ga_events_nofollow_add{
|
169 |
-
margin-left: 20px;
|
170 |
-
text-decoration: none;
|
171 |
-
}
|
172 |
-
|
173 |
-
.nofollow_tags, .tagsinput{
|
174 |
-
margin-left: 290px;
|
175 |
-
}
|
176 |
-
|
177 |
-
.settings_content{
|
178 |
-
position: fixed;
|
179 |
-
width: 100%;
|
180 |
-
height: 100%;
|
181 |
-
left: 0;
|
182 |
-
background-color: rgba(0, 0, 0, 0.57);
|
183 |
-
top: 0;
|
184 |
-
display: none;
|
185 |
-
}
|
186 |
-
.settings_content form{
|
187 |
-
display: block;
|
188 |
-
margin: 0 auto;
|
189 |
-
width: 400px;
|
190 |
-
padding: 20px;
|
191 |
-
margin-top: 22%;
|
192 |
-
background: #FFFFFF;
|
193 |
-
position: relative;
|
194 |
-
}
|
195 |
-
.settings_content img{
|
196 |
-
width: 18px;
|
197 |
-
position: absolute;
|
198 |
-
right: 10px;
|
199 |
-
top: 11px;
|
200 |
-
}
|
201 |
-
.popup {
|
202 |
-
position: fixed;
|
203 |
-
width: 100%;
|
204 |
-
height: 100%;
|
205 |
-
left: 0;
|
206 |
-
background-color: rgba(0, 0, 0, 0.57);
|
207 |
-
top: 0;
|
208 |
-
z-index: 99;
|
209 |
-
}
|
210 |
-
.popup h1{
|
211 |
-
text-align: center;
|
212 |
-
color: red;
|
213 |
-
display: block;
|
214 |
-
margin: 0 auto;
|
215 |
-
width: 400px;
|
216 |
-
padding: 20px;
|
217 |
-
margin-top: 15%;
|
218 |
-
background: #FFFFFF;
|
219 |
-
position: relative;
|
220 |
-
}
|
221 |
-
a.btn_close_popup img {
|
222 |
-
width: 23px;
|
223 |
-
position: absolute;
|
224 |
-
right: 8px;
|
225 |
-
top: 6px;
|
226 |
-
}
|
227 |
-
|
228 |
-
.ga_main .form-table th {
|
229 |
-
width: 0px !important;
|
230 |
-
padding-left: 12px;
|
231 |
-
}
|
232 |
-
|
233 |
-
.ga-btn-save {
|
234 |
-
margin-left: 28px !important;
|
235 |
-
}
|
236 |
-
|
237 |
-
.ga-tooltip{
|
238 |
-
width: 16px;
|
239 |
-
height: 16px;
|
240 |
-
background: url(../images/ga-help.png) no-repeat;
|
241 |
-
display: inline-block;
|
242 |
-
margin-left: 5px;
|
243 |
-
vertical-align:middle;
|
244 |
-
cursor: help;
|
245 |
-
border-radius: 10px;
|
246 |
-
}
|
247 |
-
|
248 |
-
.ui-tooltip, .arrow:after {
|
249 |
-
background: #356aa0;
|
250 |
-
border: 2px solid white;
|
251 |
-
}
|
252 |
-
.ui-tooltip {
|
253 |
-
padding: 10px 20px;
|
254 |
-
color: white;
|
255 |
-
border-radius: 20px;
|
256 |
-
box-shadow: 0 0 7px #356aa0;
|
257 |
-
max-width:350px;
|
258 |
-
}
|
259 |
-
.arrow {
|
260 |
-
width: 70px;
|
261 |
-
height: 16px;
|
262 |
-
overflow: hidden;
|
263 |
-
position: absolute;
|
264 |
-
left: 50%;
|
265 |
-
margin-left: -35px;
|
266 |
-
bottom: -16px;
|
267 |
-
}
|
268 |
-
.arrow.top {
|
269 |
-
top: -16px;
|
270 |
-
bottom: auto;
|
271 |
-
}
|
272 |
-
.arrow.left {
|
273 |
-
left: 20%;
|
274 |
-
}
|
275 |
-
.arrow:after {
|
276 |
-
content: "";
|
277 |
-
position: absolute;
|
278 |
-
z-index:9999;
|
279 |
-
left: 20px;
|
280 |
-
top: -20px;
|
281 |
-
width: 25px;
|
282 |
-
height: 25px;
|
283 |
-
box-shadow: 6px 5px 9px -9px #356aa0;
|
284 |
-
-webkit-transform: rotate(45deg);
|
285 |
-
-moz-transform: rotate(45deg);
|
286 |
-
-ms-transform: rotate(45deg);
|
287 |
-
-o-transform: rotate(45deg);
|
288 |
-
tranform: rotate(45deg);
|
289 |
-
}
|
290 |
-
.arrow.top:after {
|
291 |
-
bottom: -20px;
|
292 |
-
top: auto;
|
293 |
-
}
|
294 |
-
|
295 |
-
div.tagsinput { border:1px solid #CCC; background: #FFF; padding:5px; width:300px; height:100px; overflow-y: auto;}
|
296 |
-
div.tagsinput span.tag { border: 1px solid #292a2d; -moz-border-radius:2px; -webkit-border-radius:2px; display: block; float: left; padding: 5px; text-decoration:none; background: #356aa0; color: #ffffff; margin-right: 5px; margin-bottom:5px;font-family: helvetica; font-size:13px;}
|
297 |
-
div.tagsinput span.tag a { font-weight: bold; color: #82ad2b; text-decoration:none; font-size: 11px; }
|
298 |
-
div.tagsinput input { width:80px; margin:0px; font-family: helvetica; font-size: 13px; border:1px solid transparent; padding:5px; background: transparent; color: #000; outline:0px; margin-right:5px; margin-bottom:5px; }
|
299 |
-
div.tagsinput div { display:block; float: left; }
|
300 |
-
.tags_clear { clear: both; width: 100%; height: 0px; }
|
301 |
-
.not_valid {background: #FBD8DB !important; color: #90111A !important;}
|
302 |
-
|
303 |
-
.wpgae-container__warning{
|
304 |
-
padding: 10px 20px;
|
305 |
-
background-color: #fff;
|
306 |
-
}
|
307 |
-
|
308 |
-
.wpgae-alert-holder{
|
309 |
-
display: flex;
|
310 |
-
margin-bottom: .8em;
|
311 |
-
}
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
.wpgae-alert-new{
|
316 |
-
width: 100%;
|
317 |
-
padding: 0 12px;
|
318 |
-
border-left: 4px solid #4b8813;
|
319 |
-
background: #fff;
|
320 |
-
box-shadow: 0 1px 2px rgba(0,0,0,.2);
|
321 |
-
}
|
322 |
-
|
323 |
-
.wpgae-alert{
|
324 |
-
width: 100%;
|
325 |
-
padding: 0 12px;
|
326 |
-
border-left: 4px solid #929eaa;
|
327 |
-
background: #fff;
|
328 |
-
box-shadow: 0 1px 2px rgba(0,0,0,.2);
|
329 |
-
}
|
330 |
-
|
331 |
-
.wpga_meta {
|
332 |
-
min-height: 320px;
|
333 |
-
}
|
334 |
-
.wpgae_event_form_fields {
|
335 |
-
line-height: 28px;
|
336 |
-
height: 45px;
|
337 |
-
}
|
338 |
-
.wpga_meta label {
|
339 |
-
display: inline-block;
|
340 |
-
float: left;
|
341 |
-
clear: left;
|
342 |
-
width: 115px;
|
343 |
-
text-align: left;
|
344 |
-
margin-right: 10px;
|
345 |
-
font-size: 15px;
|
346 |
-
height: 28px;
|
347 |
-
}
|
348 |
-
.wpga_meta input {
|
349 |
-
display: inline-block;
|
350 |
-
float: left;
|
351 |
-
height: 28px;
|
352 |
-
padding-left: 4px;
|
353 |
-
}
|
354 |
-
|
355 |
-
.wpga_meta input[type=checkbox]{
|
356 |
-
height: 15px;
|
357 |
-
top: 12px;
|
358 |
-
}
|
359 |
-
|
360 |
-
|
361 |
-
.wpga_meta select {
|
362 |
-
display: inline-block;
|
363 |
-
float: left;
|
364 |
-
height: 28px;
|
365 |
-
}
|
366 |
-
|
367 |
-
#wpgae_form_buttons {
|
368 |
-
clear: both;
|
369 |
-
display: block;
|
370 |
-
}
|
371 |
-
|
372 |
-
#wpgae_form_buttons .delete {
|
373 |
-
color: #fff;
|
374 |
-
background-color: #dc3545;
|
375 |
-
border-color: #dc3545;
|
376 |
-
}
|
377 |
-
|
378 |
-
#wpgae_form_buttons input[type=submit] {
|
379 |
-
float: right;
|
380 |
-
}
|
381 |
-
|
382 |
-
.wpgae-inner-label {
|
383 |
-
min-width: 30px !important;
|
384 |
-
}
|
385 |
-
|
386 |
-
.ga_events_sidebar {
|
387 |
-
float:right;
|
388 |
-
width: 250px;
|
389 |
-
display: inline-block;
|
390 |
-
margin-top:52px;
|
391 |
-
margin-right: 40px;
|
392 |
-
}
|
393 |
-
|
394 |
-
.wpcta {
|
395 |
-
text-align: center;
|
396 |
-
}
|
397 |
-
|
398 |
-
.ga_events_banner li {
|
399 |
-
list-style-type: none !important;
|
400 |
-
font-size: 14px;
|
401 |
-
}
|
402 |
-
|
403 |
-
.ga_events_banner li i {
|
404 |
-
margin-right: 5px;
|
405 |
-
}
|
406 |
-
|
407 |
-
.ga_events_banner th {
|
408 |
-
text-align: center;
|
409 |
-
font-size: 19px;
|
410 |
-
background-color: #32373c;
|
411 |
-
color: white !important;
|
412 |
-
}
|
413 |
-
|
414 |
-
|
415 |
-
.ga_events_banner form {
|
416 |
-
background-color: #96D0B5;
|
417 |
-
padding: 0px !important;
|
418 |
-
}
|
419 |
-
|
420 |
-
.ga_events_banner .features td{
|
421 |
-
padding: 0px 10px !important;
|
422 |
-
}
|
423 |
-
|
424 |
-
.ga_events_banner .button-large {
|
425 |
-
font-size: 17px;
|
426 |
-
line-height: 30px;
|
427 |
-
height: 32px;
|
428 |
-
}
|
429 |
-
|
430 |
-
.ga_events_banner form .form-content {
|
431 |
-
padding: 10px 0 10px 3%;
|
432 |
-
}
|
433 |
-
|
434 |
-
.ga_events_banner form .clear {
|
435 |
-
display: block !important;
|
436 |
-
width: 100% !important;
|
437 |
-
background-color: #22636A;
|
438 |
-
padding: 10px 0 10px;
|
439 |
-
}
|
440 |
-
|
441 |
-
.ga_events_banner form .btn-subscribe {
|
442 |
-
display: block;
|
443 |
-
margin: auto;
|
444 |
-
}
|
445 |
-
|
446 |
-
|
447 |
-
#ga_events_options {
|
448 |
-
/*float: left;*/
|
449 |
-
/*width: 560px;*/
|
450 |
-
}
|
451 |
-
.ga-main-wrapper {
|
452 |
-
background: white;
|
453 |
-
overflow: hidden;
|
454 |
-
}
|
455 |
-
|
456 |
-
.ga-main-wrapper-flex {
|
457 |
-
display: flex;
|
458 |
-
gap: 100px;
|
459 |
-
}
|
460 |
-
|
461 |
-
.plugin-title a[href^="https://wpflow.com/upgrade"]{
|
462 |
-
color: #F7691D !important;
|
463 |
-
}
|
464 |
-
.plugin-title a[href^="https://wpflow.com/upgrade"]:hover {
|
465 |
-
color: #cf471c !important;
|
466 |
-
}
|
467 |
-
|
468 |
-
a[href="admin.php?page=wp-google-analytics-events-upgrade"] {
|
469 |
-
color: #F7691D !important;
|
470 |
-
}
|
471 |
-
|
472 |
-
a[href="admin.php?page=wp-google-analytics-events-upgrade"]:hover {
|
473 |
-
color: #cf471c !important;
|
474 |
-
}
|
475 |
-
|
476 |
-
|
477 |
-
.ga_events_top {
|
478 |
-
clear: both;
|
479 |
-
display: flex;
|
480 |
-
justify-content: center;
|
481 |
-
}
|
482 |
-
|
483 |
-
|
484 |
-
.ga_events_featurebox {
|
485 |
-
width: 370px;
|
486 |
-
min-height: 252px;
|
487 |
-
background-color: white;
|
488 |
-
display: inline-block;
|
489 |
-
float: left;
|
490 |
-
margin: 10px 18px 0px 0px;
|
491 |
-
position: relative;
|
492 |
-
}
|
493 |
-
|
494 |
-
.ga_events_box_general {
|
495 |
-
background-image: url(../images/bg_icon_pro_features.png);
|
496 |
-
background-position: right;
|
497 |
-
background-repeat: no-repeat;
|
498 |
-
}
|
499 |
-
|
500 |
-
.ga_events_box_support {
|
501 |
-
background-image: url(../images/bg_icon_support.png);
|
502 |
-
background-position: -1px 125px;
|
503 |
-
background-repeat: no-repeat;
|
504 |
-
}
|
505 |
-
.ga_events_box_title {
|
506 |
-
line-height: 47px;
|
507 |
-
border-bottom: 1px solid gainsboro;
|
508 |
-
}
|
509 |
-
|
510 |
-
.ga_events_box_title span {
|
511 |
-
margin-left: 20px;
|
512 |
-
font-size: 20px;
|
513 |
-
font-weight: bold;
|
514 |
-
}
|
515 |
-
|
516 |
-
.ga_events_box_video .ga_events_box_title {
|
517 |
-
background-image: url(../images/icon_video.png);
|
518 |
-
background-position: 97%;
|
519 |
-
background-repeat: no-repeat;
|
520 |
-
}
|
521 |
-
|
522 |
-
.ga_events_box_body span{
|
523 |
-
margin-left: 20px;
|
524 |
-
color: #495A6B;
|
525 |
-
display: block;
|
526 |
-
}
|
527 |
-
.ga_events_box_list {
|
528 |
-
margin-top: 20px;
|
529 |
-
}
|
530 |
-
.ga_events_box_li_title {
|
531 |
-
font-weight: bold;
|
532 |
-
display: block;
|
533 |
-
}
|
534 |
-
|
535 |
-
.ga_events_box_li_icon {
|
536 |
-
margin-left: 20px;
|
537 |
-
float: left;
|
538 |
-
}
|
539 |
-
.ga_events_box_li_content {
|
540 |
-
display: inline-block;
|
541 |
-
float: left;
|
542 |
-
max-width: 315px;
|
543 |
-
}
|
544 |
-
|
545 |
-
.ga_events_box_list li {
|
546 |
-
height: 38px;
|
547 |
-
}
|
548 |
-
|
549 |
-
.ga_events_featurebox .btn {
|
550 |
-
float: right;
|
551 |
-
position: absolute;
|
552 |
-
bottom: 5px;
|
553 |
-
right: 5px;
|
554 |
-
margin-right: 10px;
|
555 |
-
margin-bottm: 5px;
|
556 |
-
background: #3498DC;
|
557 |
-
background-image: -webkit-linear-gradient(top, #3498DC, #3498DC);
|
558 |
-
background-image: -moz-linear-gradient(top, #3498DC, #3498DC);
|
559 |
-
background-image: -ms-linear-gradient(top, #3498DC, #3498DC);
|
560 |
-
background-image: -o-linear-gradient(top, #3498DC, #3498DC);
|
561 |
-
background-image: linear-gradient(to bottom, #3498DC, #3498DC);
|
562 |
-
-webkit-border-radius: 5px;
|
563 |
-
-moz-border-radius: 5px;
|
564 |
-
border-radius: 5px;
|
565 |
-
font-family: Arial;
|
566 |
-
color: #ffffff;
|
567 |
-
font-size: 16px;
|
568 |
-
padding: 10px 33px 10px 33px;
|
569 |
-
text-decoration: none;
|
570 |
-
}
|
571 |
-
|
572 |
-
.ga_events_featurebox .btn:hover {
|
573 |
-
background: #3cb0fd;
|
574 |
-
background-image: -webkit-linear-gradient(top, #3cb0fd, #3498db);
|
575 |
-
background-image: -moz-linear-gradient(top, #3cb0fd, #3498db);
|
576 |
-
background-image: -ms-linear-gradient(top, #3cb0fd, #3498db);
|
577 |
-
background-image: -o-linear-gradient(top, #3cb0fd, #3498db);
|
578 |
-
background-image: linear-gradient(to bottom, #3cb0fd, #3498db);
|
579 |
-
text-decoration: none;
|
580 |
-
}
|
581 |
-
|
582 |
-
.ga_events_box_video .btn {
|
583 |
-
background: #E94D3D !important;
|
584 |
-
background: #E94D3D;
|
585 |
-
background-image: -webkit-linear-gradient(top, #E94D3D, #E94D3D);
|
586 |
-
background-image: -moz-linear-gradient(top, #E94D3D, #E94D3D);
|
587 |
-
background-image: -ms-linear-gradient(top, #E94D3D, #E94D3D);
|
588 |
-
background-image: -o-linear-gradient(top, #E94D3D, #E94D3D);
|
589 |
-
background-image: linear-gradient(to bottom, #E94D3D, #E94D3D);
|
590 |
-
}
|
591 |
-
|
592 |
-
.ga_events_box_video .btn:hover {
|
593 |
-
background: #E94D3D !important;
|
594 |
-
background: #E94D3D;
|
595 |
-
background-image: -webkit-linear-gradient(top, #E94D3D, #E94D3D);
|
596 |
-
background-image: -moz-linear-gradient(top, #E94D3D, #E94D3D);
|
597 |
-
background-image: -ms-linear-gradient(top, #E94D3D, #E94D3D);
|
598 |
-
background-image: -o-linear-gradient(top, #E94D3D, #E94D3D);
|
599 |
-
background-image: linear-gradient(to bottom, #E94D3D, #E94D3D);
|
600 |
-
}
|
601 |
-
|
602 |
-
|
603 |
-
.toggle-control {
|
604 |
-
display: block;
|
605 |
-
position: relative;
|
606 |
-
padding-left: 35px;
|
607 |
-
margin-bottom: 18px;
|
608 |
-
cursor: pointer;
|
609 |
-
font-size: 12px;
|
610 |
-
-webkit-user-select: none;
|
611 |
-
-moz-user-select: none;
|
612 |
-
-ms-user-select: none;
|
613 |
-
user-select: none;
|
614 |
-
min-width: 0px !important;
|
615 |
-
}
|
616 |
-
.toggle-control input {
|
617 |
-
position: absolute;
|
618 |
-
opacity: 0;
|
619 |
-
cursor: pointer;
|
620 |
-
height: 0;
|
621 |
-
width: 0;
|
622 |
-
}
|
623 |
-
.toggle-control input:checked ~ .control {
|
624 |
-
background-color: #2271b1;
|
625 |
-
}
|
626 |
-
.toggle-control input:checked ~ .control:after {
|
627 |
-
left: 17px;
|
628 |
-
}
|
629 |
-
.toggle-control .control {
|
630 |
-
position: absolute;
|
631 |
-
top: 0;
|
632 |
-
left: 0;
|
633 |
-
height: 20px;
|
634 |
-
width: 32px;
|
635 |
-
border-radius: 10px;
|
636 |
-
background-color: darkgray;
|
637 |
-
transition: background-color 0.15s ease-in;
|
638 |
-
}
|
639 |
-
.toggle-control .control:after {
|
640 |
-
content: "";
|
641 |
-
position: absolute;
|
642 |
-
left: 3px;
|
643 |
-
top: 3px;
|
644 |
-
width: 14px;
|
645 |
-
height: 14px;
|
646 |
-
border-radius: 10px;
|
647 |
-
background: white;
|
648 |
-
transition: left 0.15s ease-in;
|
649 |
-
}
|
650 |
-
|
651 |
-
/*
|
652 |
-
Reports
|
653 |
-
*/
|
654 |
-
|
655 |
-
.ga-reports-no-auth {
|
656 |
-
display: none;
|
657 |
-
min-height: 400px;
|
658 |
-
}
|
659 |
-
|
660 |
-
.ga-reports-no-auth .btn-primary {
|
661 |
-
margin-top: 20px;
|
662 |
-
/*background: #0073aa;*/
|
663 |
-
}
|
664 |
-
|
665 |
-
.ga-content {
|
666 |
-
margin-left: 30px;
|
667 |
-
margin-top: 30px;
|
668 |
-
}
|
669 |
-
.ga-reports-section {
|
670 |
-
display: none;
|
671 |
-
flex-wrap: wrap;
|
672 |
-
background-color: #f6f7f7;
|
673 |
-
padding-left: 50px;
|
674 |
-
padding-right: 50px;
|
675 |
-
padding-bottom: 20px;
|
676 |
-
}
|
677 |
-
|
678 |
-
|
679 |
-
.ga-report-date {
|
680 |
-
margin-top: 10px;
|
681 |
-
margin-left: 20px;
|
682 |
-
margin-right: 20px;
|
683 |
-
padding-top: 20px;
|
684 |
-
padding-right: 20px;
|
685 |
-
padding-left: 20px;
|
686 |
-
padding-bottom: 20px;
|
687 |
-
background-color: white;
|
688 |
-
box-shadow: 0 4px 6px -1px rgb(0 0 0 / 10%), 0 2px 4px -1px rgb(0 0 0 / 6%);
|
689 |
-
flex: 1;
|
690 |
-
}
|
691 |
-
|
692 |
-
.ga-view-form {
|
693 |
-
display: none;
|
694 |
-
padding-bottom: 30px;
|
695 |
-
}
|
696 |
-
|
697 |
-
.ga-view-form #view-selector {
|
698 |
-
margin-top: 30px;
|
699 |
-
margin-left: 30px;
|
700 |
-
/*box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);*/
|
701 |
-
|
702 |
-
}
|
703 |
-
.ga-view-form #view-selector .shr-a-shr-fc-shr-fb-shr-cb {
|
704 |
-
min-width: 200px;
|
705 |
-
/*margin-left: 20px;*/
|
706 |
-
}
|
707 |
-
|
708 |
-
.ga-view-form #ga-save-view {
|
709 |
-
margin-left: 30px;
|
710 |
-
margin-top: 15px;
|
711 |
-
}
|
712 |
-
|
713 |
-
|
714 |
-
/*
|
715 |
-
Report Tabs
|
716 |
-
*/
|
717 |
-
|
718 |
-
|
719 |
-
|
720 |
-
.ga-flex-break {
|
721 |
-
flex-basis: 100%;
|
722 |
-
height: 100px;
|
723 |
-
}
|
724 |
-
|
725 |
-
|
726 |
-
.ga-reports {
|
727 |
-
padding-bottom: 40px;
|
728 |
-
}
|
729 |
-
.ga-reports-section .top-chart {
|
730 |
-
width: 90%;
|
731 |
-
margin: 0 auto;
|
732 |
-
}
|
733 |
-
.ga-reports-section .ga-report-full h2 {
|
734 |
-
margin-top: 20px;
|
735 |
-
margin-bottom: 40px;
|
736 |
-
}
|
737 |
-
@media screen and (min-width: 980px) {
|
738 |
-
|
739 |
-
.ga-report-side {
|
740 |
-
flex: 1;
|
741 |
-
padding-left: 20px;
|
742 |
-
padding-right: 20px;
|
743 |
-
}
|
744 |
-
.ga-report-side div {
|
745 |
-
/*padding-left: 20px;*/
|
746 |
-
/*padding-right: 20px;*/
|
747 |
-
}
|
748 |
-
}
|
749 |
-
@media screen and (max-width: 980px) {
|
750 |
-
.ga-reports-section {
|
751 |
-
flex-direction: row;
|
752 |
-
}
|
753 |
-
.ga-report-side {
|
754 |
-
/*display: block;*/
|
755 |
-
/*width: 100%;*/
|
756 |
-
/*float: left;*/
|
757 |
-
}
|
758 |
-
}
|
759 |
-
.ga-report-side h2 {
|
760 |
-
text-align: center;
|
761 |
-
}
|
762 |
-
|
763 |
-
.ga-report-side div {
|
764 |
-
background-color: white;
|
765 |
-
/*margin: 0 auto;*/
|
766 |
-
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
767 |
-
}
|
768 |
-
|
769 |
-
|
770 |
-
.ga-report-full {
|
771 |
-
flex: 1;
|
772 |
-
margin-left: 20px;
|
773 |
-
margin-right: 20px;
|
774 |
-
background-color: white;
|
775 |
-
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
776 |
-
padding-bottom: 20px;
|
777 |
-
}
|
778 |
-
.ga-report-full h2 {
|
779 |
-
margin-left: 30px;
|
780 |
-
}
|
781 |
-
|
782 |
-
.ga-reports-foot {
|
783 |
-
padding-bottom: 40px;
|
784 |
-
clear: both;
|
785 |
-
}
|
786 |
-
|
787 |
-
.ga-report-ad {
|
788 |
-
flex-basis: 900px;
|
789 |
-
background-color: white;
|
790 |
-
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
|
791 |
-
padding-bottom: 20px;
|
792 |
-
margin: 0 auto;
|
793 |
-
}
|
794 |
-
|
795 |
-
#ga-report-ad-title {
|
796 |
-
border-bottom: 2px solid #CBD2D9;
|
797 |
-
padding-top: 5px;
|
798 |
-
padding-bottom: 5px;
|
799 |
-
font-size: 24px;
|
800 |
-
font-weight: 200;
|
801 |
-
padding-left: 25px;
|
802 |
-
}
|
803 |
-
|
804 |
-
#ga-report-ad-content {
|
805 |
-
display: flex;
|
806 |
-
flex-wrap: wrap;
|
807 |
-
justify-content: space-evenly;
|
808 |
-
padding-top: 20px;
|
809 |
-
align-items: center;
|
810 |
-
}
|
811 |
-
.icon-trending-up {
|
812 |
-
width: 1.5rem;
|
813 |
-
vertical-align: middle;
|
814 |
-
}
|
815 |
-
.icon-trending-up .primary{
|
816 |
-
fill: #A5B3BB;
|
817 |
-
}
|
818 |
-
|
819 |
-
.icon-trending-up .secondary{
|
820 |
-
fill: #A5B3BB;
|
821 |
-
}
|
822 |
-
|
823 |
-
|
824 |
-
.ga-report-ad-content-item {
|
825 |
-
font-size: 16px;
|
826 |
-
line-height: 36px;
|
827 |
-
}
|
828 |
-
|
829 |
-
.ga-report-ad-content-item img {
|
830 |
-
margin-top: 16px;
|
831 |
-
}
|
832 |
-
|
833 |
-
.ga-report-ad-content-item span {
|
834 |
-
margin-left: 5px;
|
835 |
-
}
|
836 |
-
|
837 |
-
.ga-report-ad-content-item .button-primary {
|
838 |
-
font-size: 16px;
|
839 |
-
}
|
840 |
-
|
841 |
-
.ga-report-ad-content-item .btn-title {
|
842 |
-
margin-left: 0;
|
843 |
-
}
|
844 |
-
|
845 |
-
.ga-ad-icon-primary {
|
846 |
-
fill: #d6e9f8;
|
847 |
-
}
|
848 |
-
|
849 |
-
.ga-report-side .google-visualization-table-table{
|
850 |
-
font-size: 16px;
|
851 |
-
line-height: 25px;
|
852 |
-
}
|
853 |
-
|
854 |
-
.ga-report-side .google-visualization-table-th{
|
855 |
-
background: #2271b1;
|
856 |
-
color: white;
|
857 |
-
}
|
858 |
-
.ga-report-side .google-visualization-table .gradient {
|
859 |
-
background-image: none;
|
860 |
-
}
|
861 |
-
|
862 |
-
.ga-report-side .google-visualization-table {
|
863 |
-
min-height: 391px;
|
864 |
-
}
|
865 |
-
|
866 |
-
.ga-reports-section .google-visualization-table-table tr td{
|
867 |
-
padding: 5px !important;
|
868 |
-
}
|
869 |
-
|
870 |
-
.ga-reports-section th {
|
871 |
-
display: table-cell !important;
|
872 |
-
text-align: center;
|
873 |
-
}
|
874 |
-
.ga-reports-section .google-visualization-table-seq, .google-visualization-table-type-number {
|
875 |
-
text-align: center;
|
876 |
-
}
|
877 |
-
|
878 |
-
.ga-reports-section .google-visualization-table-type-number {
|
879 |
-
text-align: center !important;
|
880 |
-
max-width: 50px;
|
881 |
-
}
|
882 |
-
|
883 |
-
|
884 |
-
.ga-reports-section td {
|
885 |
-
display: table-cell !important;
|
886 |
-
font-size: 16px;
|
887 |
-
line-height: 25px;
|
888 |
-
}
|
889 |
-
.ga-reports-section table {
|
890 |
-
font-size: 16px;
|
891 |
-
line-height: 25px;
|
892 |
-
}
|
893 |
-
.ga-reports-row {
|
894 |
-
overflow:auto;
|
895 |
-
margin-bottom: 100px;
|
896 |
-
}
|
897 |
-
.ga-top-chart-text {
|
898 |
-
padding-left: 10px !important;
|
899 |
-
}
|
900 |
-
|
901 |
-
.google-visualization-table-type-number{
|
902 |
-
min-width:100px;
|
903 |
-
}
|
904 |
-
|
905 |
-
.ga-top-chart-text-empty {
|
906 |
-
padding-left: 10px !important;
|
907 |
-
text-align: center;
|
908 |
-
font-size: 20px !important;
|
909 |
-
opacity: 60%;
|
910 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
trunk/css/third-party/images/ui-icons_444444_256x240.png
DELETED
Binary file
|
trunk/css/third-party/images/ui-icons_555555_256x240.png
DELETED
Binary file
|
trunk/css/third-party/images/ui-icons_777620_256x240.png
DELETED
Binary file
|
trunk/css/third-party/images/ui-icons_777777_256x240.png
DELETED
Binary file
|
trunk/css/third-party/images/ui-icons_cc0000_256x240.png
DELETED
Binary file
|
trunk/css/third-party/images/ui-icons_ffffff_256x240.png
DELETED
Binary file
|
trunk/css/third-party/jquery-ui.min.css
DELETED
@@ -1,7 +0,0 @@
|
|
1 |
-
/*! jQuery UI - v1.13.0 - 2021-12-08
|
2 |
-
* http://jqueryui.com
|
3 |
-
* Includes: draggable.css, core.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css
|
4 |
-
* To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=base&cornerRadiusShadow=8px&offsetLeftShadow=0px&offsetTopShadow=0px&thicknessShadow=5px&opacityShadow=30&bgImgOpacityShadow=0&bgTextureShadow=flat&bgColorShadow=666666&opacityOverlay=30&bgImgOpacityOverlay=0&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=cc0000&fcError=5f3f3f&borderColorError=f1a899&bgTextureError=flat&bgColorError=fddfdf&iconColorHighlight=777620&fcHighlight=777620&borderColorHighlight=dad55e&bgTextureHighlight=flat&bgColorHighlight=fffa90&iconColorActive=ffffff&fcActive=ffffff&borderColorActive=003eff&bgTextureActive=flat&bgColorActive=007fff&iconColorHover=555555&fcHover=2b2b2b&borderColorHover=cccccc&bgTextureHover=flat&bgColorHover=ededed&iconColorDefault=777777&fcDefault=454545&borderColorDefault=c5c5c5&bgTextureDefault=flat&bgColorDefault=f6f6f6&iconColorContent=444444&fcContent=333333&borderColorContent=dddddd&bgTextureContent=flat&bgColorContent=ffffff&iconColorHeader=444444&fcHeader=333333&borderColorHeader=dddddd&bgTextureHeader=flat&bgColorHeader=e9e9e9&cornerRadius=3px&fwDefault=normal&fsDefault=1em&ffDefault=Arial%2CHelvetica%2Csans-serif
|
5 |
-
* Copyright jQuery Foundation and other contributors; Licensed MIT */
|
6 |
-
|
7 |
-
.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;-ms-filter:"alpha(opacity=0)"}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;-ms-filter:"alpha(opacity=25)";opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:pointer;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;-ms-filter:"alpha(opacity=70)";font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;-ms-filter:"alpha(opacity=35)";background-image:none}.ui-state-disabled .ui-icon{-ms-filter:"alpha(opacity=35)"}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-icon-blank.ui-icon-blank.ui-icon-blank{background-image:none}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;-ms-filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
trunk/css/third-party/jquery.comiseo.daterangepicker.css
DELETED
@@ -1,116 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* Copyright (c) 2017 Tamble, Inc.
|
3 |
-
* Licensed under MIT (https://github.com/tamble/jquery-ui-daterangepicker/raw/master/LICENSE.txt)
|
4 |
-
*/
|
5 |
-
|
6 |
-
.comiseo-daterangepicker-triggerbutton.ui-button {
|
7 |
-
text-align: left;
|
8 |
-
min-width: 18em;
|
9 |
-
}
|
10 |
-
|
11 |
-
.comiseo-daterangepicker-triggerbutton .ui-button-icon { /* fix v1.12 */
|
12 |
-
position: absolute;
|
13 |
-
right: 0.5em;
|
14 |
-
top: 50%;
|
15 |
-
margin-top: -8px;
|
16 |
-
}
|
17 |
-
|
18 |
-
.comiseo-daterangepicker {
|
19 |
-
position: absolute;
|
20 |
-
padding: 5px;
|
21 |
-
}
|
22 |
-
|
23 |
-
.comiseo-daterangepicker-mask {
|
24 |
-
margin: 0;
|
25 |
-
padding: 0;
|
26 |
-
position: fixed;
|
27 |
-
left: 0;
|
28 |
-
top: 0;
|
29 |
-
height: 100%;
|
30 |
-
width: 100%;
|
31 |
-
/* required for IE */
|
32 |
-
background-color: #fff;
|
33 |
-
opacity: 0;
|
34 |
-
filter: alpha(opacity = 0);
|
35 |
-
}
|
36 |
-
|
37 |
-
.comiseo-daterangepicker-presets,
|
38 |
-
.comiseo-daterangepicker-calendar {
|
39 |
-
display: table-cell;
|
40 |
-
vertical-align: top;
|
41 |
-
height: 230px;
|
42 |
-
}
|
43 |
-
|
44 |
-
.comiseo-daterangepicker-right .comiseo-daterangepicker-presets {
|
45 |
-
padding: 2px 7px 7px 2px;
|
46 |
-
}
|
47 |
-
|
48 |
-
.comiseo-daterangepicker-left .comiseo-daterangepicker-presets {
|
49 |
-
padding: 2px 2px 7px 7px;
|
50 |
-
}
|
51 |
-
|
52 |
-
.comiseo-daterangepicker-presets .ui-menu {
|
53 |
-
padding: 2px; /* fix v1.11 */
|
54 |
-
white-space: nowrap;
|
55 |
-
}
|
56 |
-
|
57 |
-
.comiseo-daterangepicker-presets .ui-menu-item { /* fix v1.11 */
|
58 |
-
padding: 0;
|
59 |
-
}
|
60 |
-
|
61 |
-
.comiseo-daterangepicker-presets .ui-menu-item > * { /* fix v1.11 */
|
62 |
-
text-decoration: none;
|
63 |
-
display: block;
|
64 |
-
padding: 2px 0.4em;
|
65 |
-
line-height: 1.5;
|
66 |
-
min-height: 0; /* support: IE7 */
|
67 |
-
}
|
68 |
-
|
69 |
-
.comiseo-daterangepicker .ui-widget-content,
|
70 |
-
.comiseo-daterangepicker .ui-datepicker .ui-state-highlight {
|
71 |
-
border-width: 0;
|
72 |
-
}
|
73 |
-
|
74 |
-
.comiseo-daterangepicker > .comiseo-daterangepicker-main.ui-widget-content {
|
75 |
-
border-bottom-width: 1px;
|
76 |
-
}
|
77 |
-
|
78 |
-
.comiseo-daterangepicker .ui-datepicker .ui-datepicker-today .ui-state-highlight {
|
79 |
-
border-width: 1px;
|
80 |
-
}
|
81 |
-
|
82 |
-
.comiseo-daterangepicker-right .comiseo-daterangepicker-calendar {
|
83 |
-
border-left-width: 1px;
|
84 |
-
padding-left: 5px;
|
85 |
-
}
|
86 |
-
|
87 |
-
.comiseo-daterangepicker-left .comiseo-daterangepicker-calendar {
|
88 |
-
border-right-width: 1px;
|
89 |
-
padding-right: 5px;
|
90 |
-
}
|
91 |
-
|
92 |
-
.comiseo-daterangepicker-right .comiseo-daterangepicker-buttonpanel {
|
93 |
-
float: left;
|
94 |
-
}
|
95 |
-
|
96 |
-
.comiseo-daterangepicker-left .comiseo-daterangepicker-buttonpanel {
|
97 |
-
float: right;
|
98 |
-
}
|
99 |
-
|
100 |
-
.comiseo-daterangepicker-buttonpanel > button {
|
101 |
-
margin-top: 6px;
|
102 |
-
}
|
103 |
-
|
104 |
-
.comiseo-daterangepicker-right .comiseo-daterangepicker-buttonpanel > button {
|
105 |
-
margin-right: 6px;
|
106 |
-
}
|
107 |
-
|
108 |
-
.comiseo-daterangepicker-left .comiseo-daterangepicker-buttonpanel > button {
|
109 |
-
margin-left: 6px;
|
110 |
-
}
|
111 |
-
|
112 |
-
/* themeable styles */
|
113 |
-
.comiseo-daterangepicker-calendar .ui-state-highlight a.ui-state-default {
|
114 |
-
background: #b0c4de;
|
115 |
-
color: #fff;
|
116 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
trunk/css/third-party/jquery.modal.min.css
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
.blocker{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;overflow:auto;z-index:1;padding:20px;box-sizing:border-box;background-color:#000;background-color:rgba(0,0,0,0.75);text-align:center}.blocker:before{content:"";display:inline-block;height:100%;vertical-align:middle;margin-right:-0.05em}.blocker.behind{background-color:transparent}.modal{display:none;vertical-align:middle;position:relative;z-index:2;max-width:500px;box-sizing:border-box;width:90%;background:#fff;padding:15px 30px;-webkit-border-radius:8px;-moz-border-radius:8px;-o-border-radius:8px;-ms-border-radius:8px;border-radius:8px;-webkit-box-shadow:0 0 10px #000;-moz-box-shadow:0 0 10px #000;-o-box-shadow:0 0 10px #000;-ms-box-shadow:0 0 10px #000;box-shadow:0 0 10px #000;text-align:left}.modal a.close-modal{position:absolute;top:-12.5px;right:-12.5px;display:block;width:30px;height:30px;text-indent:-9999px;background-size:contain;background-repeat:no-repeat;background-position:center center;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAA3hJREFUaAXlm8+K00Acx7MiCIJH/yw+gA9g25O49SL4AO3Bp1jw5NvktC+wF88qevK4BU97EmzxUBCEolK/n5gp3W6TTJPfpNPNF37MNsl85/vN/DaTmU6PknC4K+pniqeKJ3k8UnkvDxXJzzy+q/yaxxeVHxW/FNHjgRSeKt4rFoplzaAuHHDBGR2eS9G54reirsmienDCTRt7xwsp+KAoEmt9nLaGitZxrBbPFNaGfPloGw2t4JVamSt8xYW6Dg1oCYo3Yv+rCGViV160oMkcd8SYKnYV1Nb1aEOjCe6L5ZOiLfF120EjWhuBu3YIZt1NQmujnk5F4MgOpURzLfAwOBSTmzp3fpDxuI/pabxpqOoz2r2HLAb0GMbZKlNV5/Hg9XJypguryA7lPF5KMdTZQzHjqxNPhWhzIuAruOl1eNqKEx1tSh5rfbxdw7mOxCq4qS68ZTjKS1YVvilu559vWvFHhh4rZrdyZ69Vmpgdj8fJbDZLJpNJ0uv1cnr/gjrUhQMuI+ANjyuwftQ0bbL6Erp0mM/ny8Fg4M3LtdRxgMtKl3jwmIHVxYXChFy94/Rmpa/pTbNUhstKV+4Rr8lLQ9KlUvJKLyG8yvQ2s9SBy1Jb7jV5a0yapfF6apaZLjLLcWtd4sNrmJUMHyM+1xibTjH82Zh01TNlhsrOhdKTe00uAzZQmN6+KW+sDa/JD2PSVQ873m29yf+1Q9VDzfEYlHi1G5LKBBWZbtEsHbFwb1oYDwr1ZiF/2bnCSg1OBE/pfr9/bWx26UxJL3ONPISOLKUvQza0LZUxSKyjpdTGa/vDEr25rddbMM0Q3O6Lx3rqFvU+x6UrRKQY7tyrZecmD9FODy8uLizTmilwNj0kraNcAJhOp5aGVwsAGD5VmJBrWWbJSgWT9zrzWepQF47RaGSiKfeGx6Szi3gzmX/HHbihwBser4B9UJYpFBNX4R6vTn3VQnez0SymnrHQMsRYGTr1dSk34ljRqS/EMd2pLQ8YBp3a1PLfcqCpo8gtHkZFHKkTX6fs3MY0blKnth66rKCnU0VRGu37ONrQaA4eZDFtWAu2fXj9zjFkxTBOo8F7t926gTp/83Kyzzcy2kZD6xiqxTYnHLRFm3vHiRSwNSjkz3hoIzo8lCKWUlg/YtGs7tObunDAZfpDLbfEI15zsEIY3U/x/gHHc/G1zltnAgAAAABJRU5ErkJggg==')}.modal-spinner{display:none;position:fixed;top:50%;left:50%;transform:translateY(-50%) translateX(-50%);padding:12px 16px;border-radius:5px;background-color:#111;height:20px}.modal-spinner>div{border-radius:100px;background-color:#fff;height:20px;width:2px;margin:0 1px;display:inline-block;-webkit-animation:sk-stretchdelay 1.2s infinite ease-in-out;animation:sk-stretchdelay 1.2s infinite ease-in-out}.modal-spinner .rect2{-webkit-animation-delay:-1.1s;animation-delay:-1.1s}.modal-spinner .rect3{-webkit-animation-delay:-1.0s;animation-delay:-1.0s}.modal-spinner .rect4{-webkit-animation-delay:-0.9s;animation-delay:-0.9s}@-webkit-keyframes sk-stretchdelay{0%,40%,100%{-webkit-transform:scaleY(0.5)}20%{-webkit-transform:scaleY(1.0)}}@keyframes sk-stretchdelay{0%,40%,100%{transform:scaleY(0.5);-webkit-transform:scaleY(0.5)}20%{transform:scaleY(1.0);-webkit-transform:scaleY(1.0)}}
|
|
trunk/ga-scroll-event.php
DELETED
@@ -1,644 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
/*
|
4 |
-
Plugin Name: WP Google Analytics Events
|
5 |
-
Plugin URI: http://wpflow.com
|
6 |
-
Description: Adds the Google Analytics code to your website and enables you to send events on scroll or click.
|
7 |
-
Version: 2.7.0
|
8 |
-
Author: PineWise
|
9 |
-
Author URI: http://wpflow.com
|
10 |
-
License: GPLv2
|
11 |
-
*/
|
12 |
-
|
13 |
-
defined('ABSPATH') or die('Direct access not allowed!');
|
14 |
-
|
15 |
-
/* ------------------------------------------------------------------------ *
|
16 |
-
* Setup
|
17 |
-
* ------------------------------------------------------------------------ */
|
18 |
-
|
19 |
-
// Script debugging
|
20 |
-
define('GAE_SCRIPT_DEBUG',
|
21 |
-
false);
|
22 |
-
|
23 |
-
// Paths
|
24 |
-
define('GAE_PLUGIN_PATH',
|
25 |
-
plugin_dir_path(__FILE__));
|
26 |
-
define('GAE_PLUGIN_URL',
|
27 |
-
plugin_dir_url(__FILE__));
|
28 |
-
|
29 |
-
// Current version number
|
30 |
-
if (!defined('GA_EVENTS_VERSION'))
|
31 |
-
define('GA_EVENTS_VERSION',
|
32 |
-
'2.7.0');
|
33 |
-
|
34 |
-
// Dependencies
|
35 |
-
|
36 |
-
require_once(GAE_PLUGIN_PATH . '/include/Activation.php');
|
37 |
-
|
38 |
-
// Activation hook
|
39 |
-
register_activation_hook(__FILE__,
|
40 |
-
array('GAEActivation', 'start_activation'));
|
41 |
-
|
42 |
-
|
43 |
-
/* ------------------------------------------------------------------------ *
|
44 |
-
* Main plugin class
|
45 |
-
* ------------------------------------------------------------------------ */
|
46 |
-
if (!class_exists('GaEvents')) {
|
47 |
-
|
48 |
-
class GAEvents
|
49 |
-
{
|
50 |
-
|
51 |
-
function __construct()
|
52 |
-
{
|
53 |
-
if (is_admin()) {
|
54 |
-
$this->init_hooks();
|
55 |
-
$this->do_settings();
|
56 |
-
$this->load_admin_scripts();
|
57 |
-
$this->load_admin_styles();
|
58 |
-
include( dirname( __FILE__ ) . '/include/notice.php' );
|
59 |
-
|
60 |
-
|
61 |
-
}
|
62 |
-
require_once(GAE_PLUGIN_PATH . '/include/Snippets.php');
|
63 |
-
$this->include_snippet();
|
64 |
-
$this->load_front_end_scripts();
|
65 |
-
}
|
66 |
-
|
67 |
-
function init_hooks()
|
68 |
-
{
|
69 |
-
require_once(GAE_PLUGIN_PATH . '/include/EventClasses.php');
|
70 |
-
require_once(GAE_PLUGIN_PATH . '/include/Settings.php');
|
71 |
-
|
72 |
-
add_action('init', 'WPGAEGClickEvent::wpgae_register_click_event_post_type');
|
73 |
-
add_action('init', 'WPGAEGScrollEvent::wpgae_register_scroll_event_post_type');
|
74 |
-
|
75 |
-
add_action('wp_ajax_wpflow_add_event', 'wpflow_event_ajax_handler');
|
76 |
-
add_action('wp_ajax_wpflow_edit_event', 'wpflow_event_ajax_handler');
|
77 |
-
add_action('wp_ajax_wpflow_delete_event', 'wpflow_event_ajax_handler');
|
78 |
-
add_action('wp_ajax_wpflow_delete_event', 'wpflow_event_ajax_handler');
|
79 |
-
add_action( 'wp_ajax_wpflow_save_view', 'wpflow_event_ajax_handler' );
|
80 |
-
add_action( 'wp_ajax_wpflow_ga_disconnect', 'wpflow_ga_disconnect_event_ajax_handler' );
|
81 |
-
add_action('wp_ajax_wpflow_deactivate_event', array($this, 'wpflow_plugin_deactivation_handler'));
|
82 |
-
|
83 |
-
function wpflow_event_ajax_handler()
|
84 |
-
{
|
85 |
-
/**
|
86 |
-
* The Ajax Handler for the plugin.
|
87 |
-
* Note that all metadata updates through the save_post hook and not showing here.
|
88 |
-
*/
|
89 |
-
// Handle the ajax request
|
90 |
-
|
91 |
-
if (isset($_POST["action"]) && $_POST["action"] == "wpflow_save_view") {
|
92 |
-
check_ajax_referer( 'wpflow_save_view', "ajax_nonce", true);
|
93 |
-
} else {
|
94 |
-
check_ajax_referer( 'wpflow_add_event', "ajax_nonce", true);
|
95 |
-
}
|
96 |
-
|
97 |
-
if (isset($_POST["action"]) && $_POST["action"] == "wpflow_add_event") {
|
98 |
-
if (!isset($_POST['wpgae_type'])) {
|
99 |
-
wp_die("wpgae_type cannot be empty");
|
100 |
-
}
|
101 |
-
|
102 |
-
$post_type = sanitize_text_field($_POST['wpgae_type']);
|
103 |
-
$postarr = array(
|
104 |
-
'post_type' => $post_type,
|
105 |
-
'post_status' => 'publish'
|
106 |
-
);
|
107 |
-
|
108 |
-
$post_id = wp_insert_post($postarr);
|
109 |
-
} else if (isset($_POST["action"]) && $_POST["action"] == "wpflow_delete_event") {
|
110 |
-
$post = wp_delete_post(intval($_POST["event_id"]), true);
|
111 |
-
WPGAEGeneralEvent::update_cache_by_post_type($post->post_type);
|
112 |
-
} else if (isset($_POST["action"]) && $_POST["action"] == "wpflow_edit_event") {
|
113 |
-
if (isset($_POST["event_id"]) && $_POST["event_id"]) {
|
114 |
-
$post_id = get_post(intval($_POST["event_id"]));
|
115 |
-
wp_update_post($post_id);
|
116 |
-
}
|
117 |
-
} else if (isset($_POST["action"]) && $_POST["action"] == "wpflow_save_view") {
|
118 |
-
if (isset($_POST['viewId']) && $_POST['viewId']) {
|
119 |
-
$view_id = $_POST['viewId'];
|
120 |
-
$options = get_option( 'ga_events_options' );
|
121 |
-
$options['ga_view_id'] = $view_id;
|
122 |
-
update_option('ga_events_options', $options );
|
123 |
-
}
|
124 |
-
}
|
125 |
-
wp_die(); // All ajax handlers die when finished
|
126 |
-
}
|
127 |
-
|
128 |
-
function validateClickAndScrollForm($post_data)
|
129 |
-
{
|
130 |
-
/**
|
131 |
-
* Event Tracking rules -
|
132 |
-
* 1. Selector and Type cannot be empty - plugin restriction
|
133 |
-
* 2. Event Category and action cannot be empty - Google Analytics restrictions
|
134 |
-
* 3. Value can either be set to a number or not set at all
|
135 |
-
* 4. If the selector is not of type advanced, no spaces or . or # are allowed
|
136 |
-
*/
|
137 |
-
$form_issues = array();
|
138 |
-
|
139 |
-
if (array_key_exists("wpgae_event_selector", $post_data) && $post_data["wpgae_event_selector"] != "") {
|
140 |
-
if (!array_key_exists("wpgae_event_type", $post_data) || $post_data["wpgae_event_type"] != "advanced") {
|
141 |
-
if ($post_data["wpgae_event_selector"] != sanitize_html_class($post_data["wpgae_event_selector"])) {
|
142 |
-
array_push($form_issues, 'Cannot use non alphabetical or numerical values other than "_" and "-" when
|
143 |
-
Selector is set to Class or Id');
|
144 |
-
}
|
145 |
-
}
|
146 |
-
} else {
|
147 |
-
array_push($form_issues, "Selector cannot be empty");
|
148 |
-
}
|
149 |
-
if (sizeof($form_issues) > 0) {
|
150 |
-
wp_send_json_error($form_issues);
|
151 |
-
wp_die();
|
152 |
-
}
|
153 |
-
}
|
154 |
-
|
155 |
-
add_action('wp_ajax_wpflow_get_event_json', 'wpflow_get_event_json_callback');
|
156 |
-
|
157 |
-
function wpflow_get_event_json_callback()
|
158 |
-
{
|
159 |
-
|
160 |
-
// retrieve post_id, and sanitize it to enhance security
|
161 |
-
$post_id = intval($_POST['post_id']);
|
162 |
-
|
163 |
-
// Check if the input was a valid integer
|
164 |
-
if ($post_id == 0) {
|
165 |
-
|
166 |
-
$response['error'] = 'true';
|
167 |
-
$response['result'] = 'Invalid Input';
|
168 |
-
|
169 |
-
} else {
|
170 |
-
|
171 |
-
// get the post
|
172 |
-
$thispost = get_post($post_id);
|
173 |
-
// check if post exists
|
174 |
-
if (!is_object($thispost)) {
|
175 |
-
|
176 |
-
$response['error'] = 'true';
|
177 |
-
$response['result'] = 'There is no post with the ID ' . $post_id;
|
178 |
-
|
179 |
-
} else {
|
180 |
-
|
181 |
-
$post_meta = get_post_meta($thispost->ID);
|
182 |
-
$response["meta"] = $post_meta;
|
183 |
-
$response['error'] = 'false';
|
184 |
-
$response['result'] = wpautop($thispost->post_content);
|
185 |
-
|
186 |
-
}
|
187 |
-
|
188 |
-
}
|
189 |
-
|
190 |
-
wp_send_json($response);
|
191 |
-
|
192 |
-
}
|
193 |
-
|
194 |
-
}
|
195 |
-
|
196 |
-
|
197 |
-
function do_settings()
|
198 |
-
{
|
199 |
-
$settings_instance = new GAESettings();
|
200 |
-
|
201 |
-
// Handle import options button from general settings
|
202 |
-
add_action('admin_init',
|
203 |
-
array($settings_instance, 'upgrade_settings'));
|
204 |
-
|
205 |
-
// Handle import options button from general settings
|
206 |
-
add_action('admin_init',
|
207 |
-
array($settings_instance, 'ga_events_import_settings'));
|
208 |
-
|
209 |
-
// Handle export options button from general settings
|
210 |
-
add_action('admin_init',
|
211 |
-
array($settings_instance, 'ga_events_download_settings'));
|
212 |
-
|
213 |
-
// add plugin menu
|
214 |
-
add_action('admin_menu',
|
215 |
-
array($settings_instance, 'ga_events_menu'));
|
216 |
-
|
217 |
-
// Initialise plugin options
|
218 |
-
add_action('admin_init',
|
219 |
-
array($settings_instance, 'ga_events_initialize_plugin_options'));
|
220 |
-
|
221 |
-
add_filter("admin_footer", array($settings_instance, 'ga_events_feedback_form_html'));
|
222 |
-
|
223 |
-
// Display settings link next to plugin listing on plugins page
|
224 |
-
$plugin = plugin_basename(__FILE__);
|
225 |
-
add_filter("plugin_action_links_$plugin",
|
226 |
-
array($settings_instance, 'plugin_add_settings_link'));
|
227 |
-
|
228 |
-
// Add Ajax functionality for the admin UI
|
229 |
-
add_action('wp_ajax_wpflow_update', 'wpflow_ajax_update_handler');
|
230 |
-
|
231 |
-
add_action( 'wp_ajax_wpflow_save_view', 'wpflow_event_ajax_handler' );
|
232 |
-
add_action( 'wp_ajax_wpflow_ga_disconnect', 'wpflow_ga_disconnect_event_ajax_handler' );
|
233 |
-
|
234 |
-
function wpflow_ga_disconnect_event_ajax_handler() {
|
235 |
-
|
236 |
-
if (isset($_POST["action"]) && $_POST["action"] == "wpflow_ga_disconnect") {
|
237 |
-
check_ajax_referer( 'wpflow_ga_disconnect', "ajax_nonce", true);
|
238 |
-
$options = get_option( 'ga_events_options' );
|
239 |
-
$update_options = $options;
|
240 |
-
if (isset($options['ga_view_id'])) {
|
241 |
-
$update_options['ga_view_id'] = -1;
|
242 |
-
$update = update_option('ga_events_options', $update_options );
|
243 |
-
}
|
244 |
-
}
|
245 |
-
wp_die(); // All ajax handlers die when finished
|
246 |
-
}
|
247 |
-
|
248 |
-
|
249 |
-
function wpflow_ajax_update_handler()
|
250 |
-
{
|
251 |
-
// Handle the ajax request
|
252 |
-
check_ajax_referer('wpflow-nounce');
|
253 |
-
wp_die(); // All ajax handlers die when finished
|
254 |
-
}
|
255 |
-
}
|
256 |
-
|
257 |
-
function load_admin_scripts()
|
258 |
-
{
|
259 |
-
|
260 |
-
$ga_options = get_option('ga_events_options');
|
261 |
-
$debug_mode = isset($ga_options['script_debug_mode']) ? $ga_options['script_debug_mode'] : '0';
|
262 |
-
|
263 |
-
|
264 |
-
// This condition need to be checked in localize_placeholder function too!
|
265 |
-
if (GAE_SCRIPT_DEBUG || $debug_mode) {
|
266 |
-
add_action('admin_enqueue_scripts',
|
267 |
-
array($this, 'enqueue_admin_scripts_debug'));
|
268 |
-
} else {
|
269 |
-
add_action('admin_enqueue_scripts',
|
270 |
-
array($this, 'enqueue_admin_scripts'));
|
271 |
-
}
|
272 |
-
}
|
273 |
-
|
274 |
-
function load_front_end_scripts()
|
275 |
-
{
|
276 |
-
|
277 |
-
$ga_options = get_option('ga_events_options');
|
278 |
-
$debug_mode = isset($ga_options['script_debug_mode']) ? $ga_options['script_debug_mode'] : '0';
|
279 |
-
|
280 |
-
if (GAE_SCRIPT_DEBUG || $debug_mode == '1') {
|
281 |
-
add_action('wp_enqueue_scripts',
|
282 |
-
array($this, 'enqueue_front_end_scripts_debug'));
|
283 |
-
} else {
|
284 |
-
add_action('wp_enqueue_scripts',
|
285 |
-
array($this, 'enqueue_front_end_scripts'));
|
286 |
-
}
|
287 |
-
}
|
288 |
-
|
289 |
-
function load_admin_styles()
|
290 |
-
{
|
291 |
-
|
292 |
-
add_action('admin_enqueue_scripts',
|
293 |
-
array($this, 'enqueue_admin_styles'));
|
294 |
-
}
|
295 |
-
|
296 |
-
/* --------------------------------------------------------------------- *
|
297 |
-
* Custom Post Types
|
298 |
-
* --------------------------------------------------------------------- */
|
299 |
-
|
300 |
-
/* --------------------------------------------------------------------- *
|
301 |
-
* Register and enqueue admin scripts
|
302 |
-
* --------------------------------------------------------------------- */
|
303 |
-
|
304 |
-
function enqueue_admin_scripts($hook)
|
305 |
-
{
|
306 |
-
$screen = get_current_screen();
|
307 |
-
|
308 |
-
if (strpos($hook, "wp-google-analytics-events") == false && $screen->id !== "plugins") {
|
309 |
-
return;
|
310 |
-
}
|
311 |
-
|
312 |
-
|
313 |
-
wp_register_script( 'admin_bundle_libs',
|
314 |
-
GAE_PLUGIN_URL . 'js/dist/admin-scripts-libs.js',
|
315 |
-
array( 'jquery' ),
|
316 |
-
true );
|
317 |
-
|
318 |
-
wp_register_script('admin_bundle',
|
319 |
-
GAE_PLUGIN_URL . 'js/dist/admin-scripts.min.js',
|
320 |
-
array('jquery', 'jquery-ui-tooltip','admin_bundle_libs'),
|
321 |
-
true);
|
322 |
-
|
323 |
-
|
324 |
-
// Localize plugin options in database for use in main JS script
|
325 |
-
wp_localize_script('admin_bundle',
|
326 |
-
'ga_options',
|
327 |
-
get_option('ga_events_options'));
|
328 |
-
|
329 |
-
|
330 |
-
wp_enqueue_script('admin_bundle');
|
331 |
-
|
332 |
-
$wpflow_nonce = wp_create_nonce('wpflow-nounce');
|
333 |
-
wp_localize_script('admin_bundle', 'wpflow_ajax', array(
|
334 |
-
'ajax_url' => admin_url('admin-ajax.php'),
|
335 |
-
'nonce' => $wpflow_nonce, // It is common practice to comma after
|
336 |
-
));
|
337 |
-
|
338 |
-
$options = get_option( 'ga_events_options' );
|
339 |
-
if (isset($options['ga_view_id']) && $options['ga_view_id'] != -1 ) {
|
340 |
-
wp_localize_script('admin_bundle', 'ga_reports', $this->get_ga_reports_localization());
|
341 |
-
}
|
342 |
-
}
|
343 |
-
|
344 |
-
/* --------------------------------------------------------------------- *
|
345 |
-
* Register and enqueue admin scripts - DEBUGGING!
|
346 |
-
* --------------------------------------------------------------------- */
|
347 |
-
|
348 |
-
function enqueue_admin_scripts_debug($hook)
|
349 |
-
{
|
350 |
-
$screen = get_current_screen();
|
351 |
-
|
352 |
-
if (strpos($hook, "wp-google-analytics-events" ) == false && $screen->id != "plugins") {
|
353 |
-
return;
|
354 |
-
}
|
355 |
-
// Localize plugin options in database for use in main JS script
|
356 |
-
wp_localize_script('gae_mapper',
|
357 |
-
'ga_options',
|
358 |
-
get_option('ga_events_options'));
|
359 |
-
|
360 |
-
// Needed for the admin UI
|
361 |
-
wp_enqueue_script('jquery_modal',
|
362 |
-
GAE_PLUGIN_URL . 'js/third-party/jquery.modal.min.js',
|
363 |
-
array('jquery'),
|
364 |
-
false);
|
365 |
-
|
366 |
-
// wp_enqueue_script('jquery_form_validator',
|
367 |
-
// GAE_PLUGIN_URL . 'js/third-party/jquery.form-validator.min.js',
|
368 |
-
// array('jquery'),
|
369 |
-
// false);
|
370 |
-
|
371 |
-
// Admin JS
|
372 |
-
|
373 |
-
wp_enqueue_script( 'reports_js',
|
374 |
-
GAE_PLUGIN_URL . 'js/reports.js',
|
375 |
-
array( 'jquery', 'admin_bundle_libs' ),
|
376 |
-
'1.0',
|
377 |
-
true );
|
378 |
-
|
379 |
-
wp_enqueue_script('admin_js',
|
380 |
-
GAE_PLUGIN_URL . 'js/admin.js',
|
381 |
-
array('jquery', 'jquery-ui-tooltip'),
|
382 |
-
'1.0',
|
383 |
-
true);
|
384 |
-
|
385 |
-
wp_register_script( 'admin_bundle_libs',
|
386 |
-
GAE_PLUGIN_URL . 'js/dist/admin-scripts-libs.js', array('jquery'),
|
387 |
-
false );
|
388 |
-
|
389 |
-
// Ajax for settings
|
390 |
-
wp_enqueue_script('ajax_settings_js',
|
391 |
-
GAE_PLUGIN_URL . 'js/ajax-settings.js',
|
392 |
-
array('jquery'),
|
393 |
-
'1.0',
|
394 |
-
false);
|
395 |
-
|
396 |
-
$wpflow_nonce = wp_create_nonce('wpflow-nounce');
|
397 |
-
|
398 |
-
wp_localize_script('ajax_settings_js', 'wpflow_ajax', array(
|
399 |
-
'ajax_url' => admin_url('admin-ajax.php'),
|
400 |
-
'nonce' => $wpflow_nonce, // It is common practice to comma after
|
401 |
-
));
|
402 |
-
|
403 |
-
if (isset($options['ga_view_id']) && $options['ga_view_id'] != -1 ) {
|
404 |
-
wp_localize_script('admin_js', 'ga_reports', $this->get_ga_reports_localization());
|
405 |
-
}
|
406 |
-
}
|
407 |
-
|
408 |
-
|
409 |
-
function get_ga_reports_localization() {
|
410 |
-
$options = get_option( 'ga_events_options' );
|
411 |
-
$click_categories = "";
|
412 |
-
$click_labels = "";
|
413 |
-
$click_actions = "";
|
414 |
-
$i=0;
|
415 |
-
foreach ($options['click_elements'] as $click_event) {
|
416 |
-
if ($i > 0) {
|
417 |
-
if ( !empty($click_categories) ){ $click_categories = $click_categories.','; }
|
418 |
-
if ( !empty($click_labels) ){ $click_labels = $click_labels.','; }
|
419 |
-
if ( !empty($click_actions) ){ $click_actions = $click_actions.','; }
|
420 |
-
}
|
421 |
-
if ( !empty($click_event['category']) ) { $click_categories = $click_categories.'ga:eventCategory=='.$click_event['category'];}
|
422 |
-
if ( !empty($click_event['label']) ) {$click_labels = $click_labels.'ga:eventLabel=='.$click_event['label']; }
|
423 |
-
if ( !empty($click_event['action']) ) {$click_actions = $click_actions.'ga:eventAction=='.$click_event['action']; }
|
424 |
-
$i++;
|
425 |
-
}
|
426 |
-
$scroll_categories = "";
|
427 |
-
$scroll_labels = "";
|
428 |
-
$scroll_actions = "";
|
429 |
-
$i=0;
|
430 |
-
foreach ($options['scroll_elements'] as $scroll_event) {
|
431 |
-
if ($i > 0) {
|
432 |
-
if ( !empty($scroll_categories) ){ $scroll_categories = $scroll_categories.','; }
|
433 |
-
if ( !empty($scroll_labels) ){ $scroll_labels = $scroll_labels.','; }
|
434 |
-
if ( !empty($scroll_actions) ){ $scroll_actions = $scroll_actions.','; }
|
435 |
-
}
|
436 |
-
if ( !empty($scroll_event['category']) ) { $scroll_categories = $scroll_categories.'ga:eventCategory=='.$scroll_event['category'];}
|
437 |
-
if ( !empty($scroll_event['label']) ) {$scroll_labels = $scroll_labels.'ga:eventLabel=='.$scroll_event['label']; }
|
438 |
-
if ( !empty($scroll_event['action']) ) {$scroll_actions = $scroll_actions.'ga:eventAction=='.$scroll_event['action']; }
|
439 |
-
$i++;
|
440 |
-
}
|
441 |
-
|
442 |
-
return array(
|
443 |
-
'ga_view_id' => $options['ga_view_id'],
|
444 |
-
'clicksCategories' => $click_categories,
|
445 |
-
'clicksLabels' => $click_labels,
|
446 |
-
'clicksActions' => $click_actions,
|
447 |
-
'scrollCategories' => $scroll_categories,
|
448 |
-
'scrollLabels' => $scroll_labels,
|
449 |
-
'scrollActions' => $scroll_actions,
|
450 |
-
);
|
451 |
-
}
|
452 |
-
|
453 |
-
|
454 |
-
|
455 |
-
function enqueue_front_end_scripts()
|
456 |
-
{
|
457 |
-
|
458 |
-
// Get plugin options from the database. Needed for conditional enqueueing
|
459 |
-
$ga_options = get_option('ga_events_options');
|
460 |
-
|
461 |
-
/* --------------------------------------------------------------- *
|
462 |
-
* Register frontend scripts
|
463 |
-
* ---------------------------------------------------------------- */
|
464 |
-
|
465 |
-
wp_register_script('ga_events_frontend_bundle',
|
466 |
-
GAE_PLUGIN_URL . 'js/dist/frontend-scripts.min.js',
|
467 |
-
array('jquery'),
|
468 |
-
'1.0',
|
469 |
-
true);
|
470 |
-
|
471 |
-
// Localize plugin options in database for use in main JS script
|
472 |
-
wp_localize_script('ga_events_frontend_bundle',
|
473 |
-
'ga_options',
|
474 |
-
prepare_ga_options_for_frontend());
|
475 |
-
|
476 |
-
|
477 |
-
$this->localize_placeholders();
|
478 |
-
/* ------------------------------------------------------------- *
|
479 |
-
* Enqueue frontend scripts
|
480 |
-
* -------------------------------------------------------------- */
|
481 |
-
|
482 |
-
wp_enqueue_script('ga_events_frontend_bundle');
|
483 |
-
}
|
484 |
-
|
485 |
-
function enqueue_front_end_scripts_debug()
|
486 |
-
{
|
487 |
-
|
488 |
-
// Get plugin options from the database. Needed for conditional enqueueing
|
489 |
-
$ga_options = get_option('ga_events_options');
|
490 |
-
|
491 |
-
/* --------------------------------------------------------------------- *
|
492 |
-
* Register frontend scripts
|
493 |
-
* --------------------------------------------------------------------- */
|
494 |
-
|
495 |
-
wp_register_script('ga_events_main_script',
|
496 |
-
GAE_PLUGIN_URL . 'js/main.js',
|
497 |
-
array('jquery'),
|
498 |
-
'1.0',
|
499 |
-
false);
|
500 |
-
|
501 |
-
// Localize plugin options in database for use in main JS script
|
502 |
-
wp_localize_script('ga_events_main_script',
|
503 |
-
'ga_options',
|
504 |
-
prepare_ga_options_for_frontend());
|
505 |
-
|
506 |
-
$this->localize_placeholders();
|
507 |
-
|
508 |
-
/* --------------------------------------------------------------------- *
|
509 |
-
* Enqueue frontend scripts
|
510 |
-
* --------------------------------------------------------------------- */
|
511 |
-
|
512 |
-
// Tracking is disabled for selected roles so we load tracking
|
513 |
-
wp_enqueue_script('ga_events_main_script');
|
514 |
-
}
|
515 |
-
|
516 |
-
function enqueue_admin_styles($hook)
|
517 |
-
{
|
518 |
-
if (strpos($hook, "wp-google-analytics-events") == false) {
|
519 |
-
return;
|
520 |
-
}
|
521 |
-
wp_enqueue_style('wpgae_font_awesome',
|
522 |
-
'//maxcdn.bootstrapcdn.com/font-awesome/latest/css/font-awesome.min.css');
|
523 |
-
|
524 |
-
wp_enqueue_style('wpgae_admin_styles',
|
525 |
-
GAE_PLUGIN_URL . 'css/style.css',
|
526 |
-
array('wpgae_font_awesome'));
|
527 |
-
|
528 |
-
wp_enqueue_style('wpgae_jquery_modal_styles',
|
529 |
-
GAE_PLUGIN_URL . 'css/third-party/jquery.modal.min.css');
|
530 |
-
|
531 |
-
wp_enqueue_style( 'wpgae_jquery_ui_styles',
|
532 |
-
GAE_PLUGIN_URL . 'css/third-party/jquery-ui.min.css');
|
533 |
-
|
534 |
-
wp_enqueue_style( 'wpgae_jquery_daterangepicker_styles',
|
535 |
-
GAE_PLUGIN_URL . 'css/third-party/jquery.comiseo.daterangepicker.css');
|
536 |
-
|
537 |
-
}
|
538 |
-
|
539 |
-
function include_snippet()
|
540 |
-
{
|
541 |
-
add_action('wp_head',
|
542 |
-
array('GAESnippets', 'add_snippet_to_header'),
|
543 |
-
0);
|
544 |
-
}
|
545 |
-
|
546 |
-
function localize_placeholders() {
|
547 |
-
|
548 |
-
global $wp_query;
|
549 |
-
|
550 |
-
$page_title = ! empty( $wp_query->post->post_title ) ? $wp_query->post->post_title : '';
|
551 |
-
|
552 |
-
$translation_array = array(
|
553 |
-
// home page is home page not page title
|
554 |
-
'is_front_page' => is_front_page(),
|
555 |
-
'page_title' => $page_title,
|
556 |
-
);
|
557 |
-
|
558 |
-
$ga_options = get_option( 'ga_events_options' );
|
559 |
-
$debug_mode = isset($ga_options[ 'script_debug_mode' ]) ? $ga_options[ 'script_debug_mode' ] : '0';
|
560 |
-
|
561 |
-
// These need to be conditional on GAE_SCRIPT_DEBUG
|
562 |
-
if ( GAE_SCRIPT_DEBUG || $debug_mode ) {
|
563 |
-
// gae_mapper is bundled with admin and frontend scripts
|
564 |
-
wp_localize_script( 'ga_events_main_script',
|
565 |
-
'gaePlaceholders',
|
566 |
-
$translation_array );
|
567 |
-
} else {
|
568 |
-
wp_localize_script( 'admin_bundle',
|
569 |
-
'gaePlaceholders',
|
570 |
-
$translation_array );
|
571 |
-
|
572 |
-
wp_localize_script( 'ga_events_frontend_bundle',
|
573 |
-
'gaePlaceholders',
|
574 |
-
$translation_array );
|
575 |
-
}
|
576 |
-
}
|
577 |
-
|
578 |
-
function isAdvancedModeOn()
|
579 |
-
{
|
580 |
-
$wpgae_options = get_option('ga_events_options');
|
581 |
-
if (isset($wpgae_options['advanced']) && $wpgae_options["advanced"] == 1) {
|
582 |
-
return true;
|
583 |
-
}
|
584 |
-
return false;
|
585 |
-
|
586 |
-
}
|
587 |
-
|
588 |
-
function wpflow_plugin_deactivation_handler() {
|
589 |
-
print (var_dump($_POST));
|
590 |
-
$current_plugin_version = GA_EVENTS_VERSION;
|
591 |
-
$current_user = wp_get_current_user();
|
592 |
-
$user_diaplay_name = $current_user->display_name;
|
593 |
-
$user_email = isset($current_user->user_email) && $current_user->user_email != "" ? $current_user->user_email : "" ;
|
594 |
-
$from = isset($user_diaplay_name) ? $user_diaplay_name." <".$user_email.">" : $user_email;
|
595 |
-
|
596 |
-
$headers[] = "Content-Type: text/html; charset=UTF-8";
|
597 |
-
$headers[] = "From: ".$from;
|
598 |
-
$headers[] = "Reply-To: ".$from;
|
599 |
-
|
600 |
-
$feedback = isset($_POST["feedback"]) ? sanitize_text_field($_POST["feedback"]) : "";
|
601 |
-
$helptext = isset($_POST["helpme-text"]) ? sanitize_text_field($_POST["helpme-text"]): "";
|
602 |
-
$site_info = home_url();
|
603 |
-
|
604 |
-
// Include version information
|
605 |
-
// Include wordpress version information
|
606 |
-
|
607 |
-
$text = "Feedback From for version: ".$current_plugin_version."<br>";
|
608 |
-
$text .= "Reason for deactivation: ".$feedback."<br>";
|
609 |
-
$text .= "Help me with: ".$helptext."<br>";
|
610 |
-
$text .= "website: ".$site_info."<br>";
|
611 |
-
$subject = $current_plugin_version." - Deactivation Feedback";
|
612 |
-
wp_mail( 'feedback@wpflow.com', $subject, $text, $headers );
|
613 |
-
error_log($text);
|
614 |
-
|
615 |
-
wp_die(); // All ajax handlers die when finished
|
616 |
-
|
617 |
-
}
|
618 |
-
}
|
619 |
-
|
620 |
-
/*
|
621 |
-
* Remove sensitive data from the frontend
|
622 |
-
*/
|
623 |
-
function prepare_ga_options_for_frontend()
|
624 |
-
{
|
625 |
-
$sensitive_options = array("script_debug_mode");
|
626 |
-
$ga_options = get_option('ga_events_options');
|
627 |
-
foreach ($sensitive_options as $key_to_remove) {
|
628 |
-
if (array_key_exists($key_to_remove, $ga_options)) {
|
629 |
-
unset($ga_options[$key_to_remove]);
|
630 |
-
}
|
631 |
-
}
|
632 |
-
if (! array_key_exists("force_snippet", $ga_options)) {
|
633 |
-
$ga_options['force_snippet'] = "none";
|
634 |
-
}
|
635 |
-
return $ga_options;
|
636 |
-
}
|
637 |
-
|
638 |
-
}
|
639 |
-
|
640 |
-
|
641 |
-
|
642 |
-
|
643 |
-
$wpgae = new GaEvents();
|
644 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
trunk/images/250g10.png
DELETED
Binary file
|
trunk/images/WPGAE_Logo-177x78.png
DELETED
Binary file
|
trunk/images/bg_icon_pro_features.png
DELETED
Binary file
|
trunk/images/bg_icon_support.png
DELETED
Binary file
|
trunk/images/close.png
DELETED
Binary file
|
trunk/images/ga-help.png
DELETED
Binary file
|
trunk/images/icon.png
DELETED
Binary file
|
trunk/images/icon_block.png
DELETED
Binary file
|
trunk/images/icon_lock.png
DELETED
Binary file
|
trunk/images/icon_video.png
DELETED
Binary file
|
trunk/images/menu-icon.png
DELETED
Binary file
|
trunk/images/wpflow-logo-banner-corp.png
DELETED
Binary file
|
trunk/images/wpflow-logo-banner.png
DELETED
Binary file
|
trunk/include/Activation.php
DELETED
@@ -1,189 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class GAEActivation
|
4 |
-
{
|
5 |
-
|
6 |
-
// intial values for plugin options. NB strings used for boolean values
|
7 |
-
// for good reason
|
8 |
-
private static $default_options = array(
|
9 |
-
'link_clicks_delay' => '120',
|
10 |
-
'gtm' => '0',
|
11 |
-
'anonymizeip' => '0',
|
12 |
-
'advanced' => '0',
|
13 |
-
'script_debug_mode' => '0',
|
14 |
-
'snippet_type' => 'gst',
|
15 |
-
'tracking_id' => '',
|
16 |
-
'gtm_id' => '',
|
17 |
-
'domain' => '',
|
18 |
-
'tel_link_tracking' => '0',
|
19 |
-
'email_link_tracking' => '0',
|
20 |
-
'download_tracking' => '0',
|
21 |
-
'download_tracking_type' => array("pdf", "mp3", "pptx", "docx"),
|
22 |
-
'force_snippet' => "none",
|
23 |
-
// Roles for which tracking is disabled
|
24 |
-
'scroll_elements' => array(),
|
25 |
-
'click_elements' => array(),
|
26 |
-
);
|
27 |
-
|
28 |
-
public static function start_activation()
|
29 |
-
{
|
30 |
-
// Decide whether to upgrade from previous version
|
31 |
-
if (GA_EVENTS_VERSION !== get_option('GA_EVENTS_version') && false !== get_option('ga_events_options')) {
|
32 |
-
self::GA_EVENTS_upgrade();
|
33 |
-
} else {
|
34 |
-
self::initialize_options();
|
35 |
-
}
|
36 |
-
}
|
37 |
-
|
38 |
-
private static function initialize_options()
|
39 |
-
{
|
40 |
-
|
41 |
-
update_option('GA_EVENTS_version',
|
42 |
-
GA_EVENTS_VERSION);
|
43 |
-
|
44 |
-
if (!get_option('ga_events_options')) {
|
45 |
-
update_option('ga_events_options',
|
46 |
-
self::$default_options);
|
47 |
-
}
|
48 |
-
|
49 |
-
$triggerreview = mktime(0, 0, 0, date('m') , date('d') + 10 , date('Y'));
|
50 |
-
update_option( 'ga_events_activation_date', $triggerreview, '', 'yes' );
|
51 |
-
|
52 |
-
wpgae_reactivate_notice();
|
53 |
-
}
|
54 |
-
|
55 |
-
public static function GA_EVENTS_upgrade()
|
56 |
-
{
|
57 |
-
$existing_values = get_option('ga_events_options');
|
58 |
-
$installed_version = get_option('GA_EVENTS_version');
|
59 |
-
if (!isset($installed_version)) {
|
60 |
-
$installed_version == "0.0.0";
|
61 |
-
}
|
62 |
-
|
63 |
-
|
64 |
-
if (version_compare(GA_EVENTS_VERSION, $installed_version) > 0) {
|
65 |
-
if (version_compare("2.6.0", $installed_version) > 0) {
|
66 |
-
$updated = static::version_2_6_0_upgrade($existing_values);
|
67 |
-
}
|
68 |
-
}
|
69 |
-
|
70 |
-
|
71 |
-
if (version_compare(GA_EVENTS_VERSION, $installed_version) > 0) {
|
72 |
-
if (version_compare("2.6.1", $installed_version) > 0) {
|
73 |
-
if (isset($updated)) {
|
74 |
-
$updated = static::version_2_6_1_upgrade($updated);
|
75 |
-
} else {
|
76 |
-
$updated = static::version_2_6_1_upgrade($existing_values);
|
77 |
-
}
|
78 |
-
}
|
79 |
-
}
|
80 |
-
|
81 |
-
|
82 |
-
// last value in array_merge overwrites others
|
83 |
-
if (isset($updated)) {
|
84 |
-
// last value in array_merge overwrites others
|
85 |
-
update_option('ga_events_options',
|
86 |
-
$updated);
|
87 |
-
}
|
88 |
-
update_option('GA_EVENTS_version',
|
89 |
-
GA_EVENTS_VERSION);
|
90 |
-
}
|
91 |
-
|
92 |
-
private static function version_2_6_1_upgrade($existing_values) {
|
93 |
-
$existing_values['download_tracking_type'] = array("pdf", "mp3", "pptx", "docx");
|
94 |
-
return $existing_values;
|
95 |
-
}
|
96 |
-
|
97 |
-
private static function version_2_6_0_upgrade($existing_values)
|
98 |
-
{
|
99 |
-
// Conditionally determine the desired snippet type based on existing
|
100 |
-
// values
|
101 |
-
$default_snippet = 'universal';
|
102 |
-
|
103 |
-
if (array_key_exists("exclude_snippet", $existing_values) && $existing_values['exclude_snippet'] == 1) { // The "include_snippet" value is misleading
|
104 |
-
$default_snippet = 'none';
|
105 |
-
}
|
106 |
-
|
107 |
-
if (array_key_exists("gst", $existing_values) && $existing_values['gst'] == 1) {
|
108 |
-
$default_snippet = 'none';
|
109 |
-
}
|
110 |
-
|
111 |
-
if (array_key_exists("gtm", $existing_values) && $existing_values['gtm'] == 1) {
|
112 |
-
$default_snippet = 'none';
|
113 |
-
}
|
114 |
-
|
115 |
-
if ((!array_key_exists("universal", $existing_values) || $existing_values['universal'] == 0) && (!array_key_exists("include_snippet", $existing_values) || $existing_values['include_snippet'] == 0) && (!array_key_exists("gst", $existing_values) || $existing_values['gst']) == 0 && (!array_key_exists("gtm", $existing_values) || $existing_values['gtm'] == 0)) {
|
116 |
-
$default_snippet = 'legacy';
|
117 |
-
}
|
118 |
-
|
119 |
-
// New key=>value pairs for options array
|
120 |
-
$new_options = array(
|
121 |
-
'snippet_type' => $default_snippet,
|
122 |
-
'gtm_id' => '',
|
123 |
-
);
|
124 |
-
|
125 |
-
// We need to modify click and scroll options to associative array on update
|
126 |
-
$keys = array('selector', 'type', 'category', 'action', 'label', 'bounce', 'value');
|
127 |
-
if (array_key_exists("click", $existing_values)) {
|
128 |
-
foreach ($existing_values['click'] as &$click_item) {
|
129 |
-
// We need a way to migrate the old settings which are sub optimal.
|
130 |
-
// That is why we are doing the migration this way
|
131 |
-
$new_click_array = array();
|
132 |
-
for ($i = 0; $i < sizeof($keys); $i++) {
|
133 |
-
if (isset($click_item[$i])) {
|
134 |
-
$new_click_array[$keys[$i]] = $click_item[$i];
|
135 |
-
}
|
136 |
-
}
|
137 |
-
$click_item = $new_click_array;
|
138 |
-
}
|
139 |
-
}
|
140 |
-
|
141 |
-
if (array_key_exists("divs", $existing_values)) {
|
142 |
-
foreach ($existing_values['divs'] as &$scroll_item) {
|
143 |
-
$new_scroll_array = array();
|
144 |
-
for ($i = 0; $i < sizeof($keys); $i++) {
|
145 |
-
if (isset($scroll_item[$i])) {
|
146 |
-
$new_scroll_array[$keys[$i]] = $scroll_item[$i];
|
147 |
-
}
|
148 |
-
}
|
149 |
-
$scroll_item = $new_scroll_array;
|
150 |
-
}
|
151 |
-
}
|
152 |
-
|
153 |
-
$updated = array(
|
154 |
-
'anonymizeip' => static::assign_if_set('anonymizeip', $existing_values),
|
155 |
-
'advanced' => static::assign_if_set('advanced', $existing_values),
|
156 |
-
'snippet_type' => $default_snippet,
|
157 |
-
'tracking_id' => static::assign_if_set('id', $existing_values),
|
158 |
-
'gtm_id' => '',
|
159 |
-
'domain' => static::assign_if_set('domain', $existing_values),
|
160 |
-
'click_elements' => array(),
|
161 |
-
'scroll_elements' => array(),
|
162 |
-
'script_debug_mode' => '1'
|
163 |
-
);
|
164 |
-
|
165 |
-
$updated["link_clicks_delay"] = array_key_exists("link_clicks_delay", $existing_values) ? $existing_values["link_clicks_delay"] : 120;
|
166 |
-
|
167 |
-
|
168 |
-
if (isset($existing_values["click"])) {
|
169 |
-
$click_events = WPGAEGClickEvent::convert_and_save_cached_settings($existing_values["click"]);
|
170 |
-
if (isset($click_events)) {
|
171 |
-
$updated["click_elements"] = WPGAEGClickEvent::prepare_cache_settings();
|
172 |
-
}
|
173 |
-
}
|
174 |
-
|
175 |
-
if (isset($existing_values["divs"])) {
|
176 |
-
$scroll_elements = WPGAEGScrollEvent::convert_and_save_cached_settings($existing_values["divs"]);
|
177 |
-
if (isset($scroll_elements)) {
|
178 |
-
$updated["scroll_elements"] = WPGAEGScrollEvent::prepare_cache_settings();
|
179 |
-
}
|
180 |
-
}
|
181 |
-
|
182 |
-
return $updated;
|
183 |
-
}
|
184 |
-
|
185 |
-
protected static function assign_if_set($param, $the_array)
|
186 |
-
{
|
187 |
-
return array_key_exists($param, $the_array) && !empty($the_array[$param]) ? $the_array[$param] : "";
|
188 |
-
}
|
189 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
trunk/include/EventClasses.php
DELETED
@@ -1,322 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class WPGAEGeneralEvent {
|
4 |
-
protected static $my_options;
|
5 |
-
protected static $wpgae_post_type;
|
6 |
-
protected static $wpgae_post_columns;
|
7 |
-
protected $event;
|
8 |
-
|
9 |
-
|
10 |
-
public function create_event() {
|
11 |
-
$postarr = array(
|
12 |
-
'post_type' => $this->post_type,
|
13 |
-
'post_status' => 'publish'
|
14 |
-
);
|
15 |
-
|
16 |
-
$post_id = wp_insert_post($postarr);
|
17 |
-
foreach($this->event as $key=> $value) {
|
18 |
-
if (array_key_exists("value", $value)) {
|
19 |
-
update_post_meta(
|
20 |
-
$post_id,
|
21 |
-
$key,
|
22 |
-
$value["value"]
|
23 |
-
);
|
24 |
-
} else if ($value["type"] == "checkbox") {
|
25 |
-
update_post_meta(
|
26 |
-
$post_id,
|
27 |
-
$key,
|
28 |
-
false
|
29 |
-
);
|
30 |
-
}
|
31 |
-
}
|
32 |
-
|
33 |
-
}
|
34 |
-
public static function get_wpgae_post_type() {
|
35 |
-
return static::$wpgae_post_type;
|
36 |
-
}
|
37 |
-
public static function get_wpgae_post_columns() {
|
38 |
-
return static::$wpgae_post_columns;
|
39 |
-
}
|
40 |
-
|
41 |
-
public static function get_posts() {
|
42 |
-
return get_posts(array(
|
43 |
-
'post_type' => static::get_wpgae_post_type(),
|
44 |
-
'post_status' => 'publish',
|
45 |
-
'numberposts' => -1
|
46 |
-
// 'order' => 'ASC'
|
47 |
-
));
|
48 |
-
}
|
49 |
-
public static function save_event($post_id) {
|
50 |
-
foreach(static::get_wpgae_post_columns() as $key=> $value) {
|
51 |
-
if (array_key_exists($key, $_POST)) {
|
52 |
-
update_post_meta(
|
53 |
-
$post_id,
|
54 |
-
$key,
|
55 |
-
$_POST[$key]
|
56 |
-
);
|
57 |
-
} else if ($value["type"] == "checkbox") {
|
58 |
-
update_post_meta(
|
59 |
-
$post_id,
|
60 |
-
$key,
|
61 |
-
false
|
62 |
-
);
|
63 |
-
}
|
64 |
-
}
|
65 |
-
static::set_cache_settings();
|
66 |
-
}
|
67 |
-
|
68 |
-
|
69 |
-
public static function update_cached_options($new_settings) {
|
70 |
-
$plugin_options = get_option( 'ga_events_options' );
|
71 |
-
$plugin_options[static::$my_options] = $new_settings;
|
72 |
-
update_option('ga_events_options', $plugin_options);
|
73 |
-
}
|
74 |
-
|
75 |
-
public static function prepare_cache_settings() {
|
76 |
-
$cached = array();
|
77 |
-
$posts = $tracking_entries = static::get_posts();
|
78 |
-
|
79 |
-
foreach($posts as $post) {
|
80 |
-
$event = array();
|
81 |
-
$post_id = $post->ID;
|
82 |
-
$post_meta = get_post_meta($post_id);
|
83 |
-
foreach(static::get_wpgae_post_columns() as $key=> $value) {
|
84 |
-
if (array_key_exists("settings", $value)) {
|
85 |
-
$setting = $value["settings"];
|
86 |
-
if (array_key_exists($key, $post_meta)) {
|
87 |
-
$event[$setting] = $post_meta[$key][0];
|
88 |
-
}
|
89 |
-
}
|
90 |
-
}
|
91 |
-
if (array_key_exists("name", $event)) {
|
92 |
-
array_push($cached, $event);
|
93 |
-
}
|
94 |
-
}
|
95 |
-
return $cached;
|
96 |
-
}
|
97 |
-
|
98 |
-
public static function set_cache_settings() {
|
99 |
-
$cached = static::prepare_cache_settings();
|
100 |
-
if (sizeof($cached) > 0 ) {
|
101 |
-
static::update_cached_options($cached);
|
102 |
-
}
|
103 |
-
}
|
104 |
-
|
105 |
-
static public function deletePostsById($post_ids)
|
106 |
-
{
|
107 |
-
$posts_to_delete = array_map('sanitize_key', $post_ids);
|
108 |
-
// Todo: Make sure that we have permisssion to do so
|
109 |
-
foreach($posts_to_delete as $post) {
|
110 |
-
wp_delete_post($post, true);
|
111 |
-
}
|
112 |
-
static::set_cache_settings();
|
113 |
-
}
|
114 |
-
|
115 |
-
static public function delete_all_event_posts() {
|
116 |
-
$posts = static::get_posts();
|
117 |
-
$post_ids = array();
|
118 |
-
foreach($posts as $post) {
|
119 |
-
array_push($post_ids, $post->ID);
|
120 |
-
}
|
121 |
-
static::deletePostsById($post_ids);
|
122 |
-
}
|
123 |
-
|
124 |
-
static public function update_cache_by_post_type($post_type)
|
125 |
-
{
|
126 |
-
foreach (get_declared_classes() as $class) {
|
127 |
-
if (is_subclass_of($class, WPGAEGeneralEvent::class)) {
|
128 |
-
if ($post_type == $class::get_wpgae_post_type()) {
|
129 |
-
$class::set_cache_settings();
|
130 |
-
}
|
131 |
-
}
|
132 |
-
}
|
133 |
-
}
|
134 |
-
}
|
135 |
-
|
136 |
-
|
137 |
-
class WPGAEGClickEvent extends WPGAEGeneralEvent{
|
138 |
-
protected $event;
|
139 |
-
protected static $keys = array('selector', 'type', 'category', 'action', 'label', 'bounce', 'value');
|
140 |
-
protected static $my_options = "click_elements";
|
141 |
-
protected static $wpgae_post_type = "wpgae_click_event";
|
142 |
-
protected static $wpgae_post_columns = array (
|
143 |
-
'_wpgae_click_selector_meta_key' => array('title' => 'Selector', 'type' => 'input', "settings"=> "name"),
|
144 |
-
'_wpgae_click_type_meta_key' => array('title' => 'Type', 'type' => 'input', "settings"=> "type"),
|
145 |
-
'_wpgae_click_category_meta_key' => array('title' => 'Event Category', 'type' => 'input', "settings"=> "category"),
|
146 |
-
'_wpgae_click_action_meta_key' => array('title' => 'Event Action', 'type' => 'input', "settings"=> "action"),
|
147 |
-
'_wpgae_click_label_meta_key' => array('title' => 'Event Label', 'type' => 'input', "settings"=> "label"),
|
148 |
-
'_wpgae_click_value_meta_key' => array('title' => 'Event Value', 'type' => 'input', "settings"=> "value"),
|
149 |
-
'_wpgae_click_bounce_meta_key' => array('title' => 'Non-Interaction', 'type' => 'input', "settings"=> "bounce"),
|
150 |
-
);
|
151 |
-
|
152 |
-
function __construct($event_array)
|
153 |
-
{
|
154 |
-
// Create an instance of the class based off of the post columns static object.
|
155 |
-
$this->post_type = static::$wpgae_post_type;
|
156 |
-
$this->event = static::$wpgae_post_columns;
|
157 |
-
if (array_key_exists("selector", $event_array) && isset($event_array["selector"])) {
|
158 |
-
$this->event["_wpgae_click_selector_meta_key"]["value"] = $event_array["selector"];
|
159 |
-
}
|
160 |
-
if (array_key_exists("type", $event_array) && isset($event_array["type"])) {
|
161 |
-
$this->event["_wpgae_click_type_meta_key"]["value"] = $event_array["type"];
|
162 |
-
}
|
163 |
-
if (array_key_exists("category", $event_array) && isset($event_array["category"])) {
|
164 |
-
$this->event["_wpgae_click_category_meta_key"]["value"] = $event_array["category"];
|
165 |
-
}
|
166 |
-
if (array_key_exists("action", $event_array) && isset($event_array["action"])) {
|
167 |
-
$this->event["_wpgae_click_action_meta_key"]["value"] = $event_array["action"];
|
168 |
-
}
|
169 |
-
if (array_key_exists("label", $event_array) && isset($event_array["label"])) {
|
170 |
-
$this->event["_wpgae_click_label_meta_key"]["value"] = $event_array["label"];
|
171 |
-
}
|
172 |
-
if (array_key_exists("value", $event_array) && isset($event_array["value"])) {
|
173 |
-
$this->event["_wpgae_click_value_meta_key"]["value"] = $event_array["value"];
|
174 |
-
}
|
175 |
-
if (array_key_exists("bounce", $event_array) && isset($event_array["bounce"])) {
|
176 |
-
$this->event["_wpgae_click_bounce_meta_key"]["value"] = $event_array["bounce"];
|
177 |
-
}
|
178 |
-
|
179 |
-
}
|
180 |
-
|
181 |
-
static function convert_and_save_cached_settings($cached) {
|
182 |
-
if (sizeof($cached) > 0) {
|
183 |
-
foreach($cached as $event) {
|
184 |
-
if (array_key_exists("selector", $event) && isset($event["selector"]) && $event["selector"] != "") {
|
185 |
-
if (strpos($event['selector'], "'") !== false) {
|
186 |
-
$event['selector'] = str_replace("'", '"', $event['selector']);
|
187 |
-
}
|
188 |
-
$new_event = new WPGAEGClickEvent($event);
|
189 |
-
$new_event->create_event();
|
190 |
-
}
|
191 |
-
}
|
192 |
-
return static::prepare_cache_settings();
|
193 |
-
}
|
194 |
-
}
|
195 |
-
|
196 |
-
static function wpgae_register_click_event_post_type()
|
197 |
-
{
|
198 |
-
$labels = array(
|
199 |
-
'name' => 'Click Tracking',
|
200 |
-
'singular_name' => 'Click Event',
|
201 |
-
'add_new' => 'Add New',
|
202 |
-
'add_new_item' => 'Add New Click Event',
|
203 |
-
'edit_item' => 'Edit Click Event',
|
204 |
-
'new_item' => 'New Click Event',
|
205 |
-
'all_items' => 'Click Tracking',
|
206 |
-
'view_item' => 'View Click Event',
|
207 |
-
'search_items' => 'Search Click Events',
|
208 |
-
'not_found' => 'No Click Events found',
|
209 |
-
'not_found_in_trash' => 'No Click Events found in Trash',
|
210 |
-
'parent_item_colon' => '',
|
211 |
-
'menu_name' => 'Click Events'
|
212 |
-
);
|
213 |
-
|
214 |
-
$args = array(
|
215 |
-
'labels' => $labels,
|
216 |
-
'public' => false,
|
217 |
-
'publicly_queryable' => false,
|
218 |
-
'show_ui' => false,
|
219 |
-
'show_in_menu' => false,
|
220 |
-
'query_var' => true,
|
221 |
-
'rewrite' => array('slug' => 'click-event'),
|
222 |
-
'capability_type' => 'post',
|
223 |
-
'has_archive' => true,
|
224 |
-
'hierarchical' => false,
|
225 |
-
'menu_position' => null,
|
226 |
-
'supports' => false
|
227 |
-
);
|
228 |
-
register_post_type('wpgae_click_event', $args);
|
229 |
-
|
230 |
-
add_action('save_post_wpgae_click_event', 'WPGAEGClickEvent::save_event');
|
231 |
-
}
|
232 |
-
}
|
233 |
-
|
234 |
-
class WPGAEGScrollEvent extends WPGAEGeneralEvent{
|
235 |
-
protected $event;
|
236 |
-
protected static $keys = array('selector', 'type', 'category', 'action', 'label', 'bounce', 'value');
|
237 |
-
protected static $my_options = "scroll_elements";
|
238 |
-
protected static $wpgae_post_type = "wpgae_scroll_event";
|
239 |
-
protected static $wpgae_post_columns = array (
|
240 |
-
'_wpgae_scroll_selector_meta_key' => array('title' => 'Selector', 'type' => 'input', "settings"=> "name"),
|
241 |
-
'_wpgae_scroll_type_meta_key' => array('title' => 'Type', 'type' => 'input', "settings"=> "type"),
|
242 |
-
'_wpgae_scroll_category_meta_key' => array('title' => 'Event Category', 'type' => 'input', "settings"=> "category"),
|
243 |
-
'_wpgae_scroll_action_meta_key' => array('title' => 'Event Action', 'type' => 'input', "settings"=> "action"),
|
244 |
-
'_wpgae_scroll_label_meta_key' => array('title' => 'Event Label', 'type' => 'input', "settings"=> "label"),
|
245 |
-
'_wpgae_scroll_value_meta_key' => array('title' => 'Event Value', 'type' => 'input', "settings"=> "value"),
|
246 |
-
'_wpgae_scroll_bounce_meta_key' => array('title' => 'Non-Interaction', 'type' => 'input', "settings"=> "bounce"),
|
247 |
-
);
|
248 |
-
|
249 |
-
function __construct($event_array)
|
250 |
-
{
|
251 |
-
// Create an instance of the class based off of the post columns static object.
|
252 |
-
$this->post_type = static::$wpgae_post_type;
|
253 |
-
$this->event = static::$wpgae_post_columns;
|
254 |
-
if (array_key_exists("selector", $event_array) && isset($event_array["selector"])) {
|
255 |
-
$this->event["_wpgae_scroll_selector_meta_key"]["value"] = $event_array["selector"];
|
256 |
-
}
|
257 |
-
if (array_key_exists("type", $event_array) && isset($event_array["type"])) {
|
258 |
-
$this->event["_wpgae_scroll_type_meta_key"]["value"] = $event_array["type"];
|
259 |
-
}
|
260 |
-
if (array_key_exists("category", $event_array) && isset($event_array["category"])) {
|
261 |
-
$this->event["_wpgae_scroll_category_meta_key"]["value"] = $event_array["category"];
|
262 |
-
}
|
263 |
-
if (array_key_exists("action", $event_array) && isset($event_array["action"])) {
|
264 |
-
$this->event["_wpgae_scroll_action_meta_key"]["value"] = $event_array["action"];
|
265 |
-
}
|
266 |
-
if (array_key_exists("label", $event_array) && isset($event_array["label"])) {
|
267 |
-
$this->event["_wpgae_scroll_label_meta_key"]["value"] = $event_array["label"];
|
268 |
-
}
|
269 |
-
if (array_key_exists("value", $event_array) && isset($event_array["value"])) {
|
270 |
-
$this->event["_wpgae_scroll_value_meta_key"]["value"] = $event_array["value"];
|
271 |
-
}
|
272 |
-
if (array_key_exists("bounce", $event_array) && isset($event_array["bounce"])) {
|
273 |
-
$this->event["_wpgae_scroll_bounce_meta_key"]["value"] = $event_array["bounce"];
|
274 |
-
}
|
275 |
-
|
276 |
-
}
|
277 |
-
static function convert_and_save_cached_settings($cached) {
|
278 |
-
if (sizeof($cached) > 0) {
|
279 |
-
foreach($cached as $event) {
|
280 |
-
$new_event = new WPGAEGScrollEvent($event);
|
281 |
-
$new_event->create_event();
|
282 |
-
}
|
283 |
-
return static::prepare_cache_settings();
|
284 |
-
}
|
285 |
-
}
|
286 |
-
|
287 |
-
static function wpgae_register_scroll_event_post_type()
|
288 |
-
{
|
289 |
-
$labels = array(
|
290 |
-
'name' => 'Scroll Tracking',
|
291 |
-
'singular_name' => 'Scroll Event',
|
292 |
-
'add_new' => 'Add New',
|
293 |
-
'add_new_item' => 'Add New Scroll Event',
|
294 |
-
'edit_item' => 'Edit Scroll Event',
|
295 |
-
'new_item' => 'New Scroll Event',
|
296 |
-
'all_items' => 'Scroll Tracking',
|
297 |
-
'view_item' => 'View Scroll Event',
|
298 |
-
'search_items' => 'Search Scroll Events',
|
299 |
-
'not_found' => 'No Scroll Events found',
|
300 |
-
'not_found_in_trash' => 'No Scroll Events found in Trash',
|
301 |
-
'parent_item_colon' => '',
|
302 |
-
'menu_name' => 'Scroll Events'
|
303 |
-
);
|
304 |
-
|
305 |
-
$args = array(
|
306 |
-
'labels' => $labels,
|
307 |
-
'public' => false,
|
308 |
-
'publicly_queryable' => false,
|
309 |
-
'show_ui' => false,
|
310 |
-
'show_in_menu' => false,
|
311 |
-
'query_var' => true,
|
312 |
-
'rewrite' => array('slug' => 'scroll-event'),
|
313 |
-
'capability_type' => 'post',
|
314 |
-
'has_archive' => true,
|
315 |
-
'hierarchical' => false,
|
316 |
-
'menu_position' => null,
|
317 |
-
'supports' => false
|
318 |
-
);
|
319 |
-
register_post_type('wpgae_scroll_event', $args);
|
320 |
-
add_action('save_post_wpgae_scroll_event', 'WPGAEGScrollEvent::save_event');
|
321 |
-
}
|
322 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
trunk/include/Settings.php
DELETED
@@ -1,810 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
defined( 'ABSPATH' ) or die( 'Direct access not allowed!' );
|
3 |
-
|
4 |
-
class GAESettings {
|
5 |
-
|
6 |
-
function upgrade_settings() {
|
7 |
-
$installed_version = get_option('GA_EVENTS_version');
|
8 |
-
if (!isset($installed_version) || $installed_version != GA_EVENTS_VERSION) {
|
9 |
-
GAEActivation::start_activation();
|
10 |
-
}
|
11 |
-
}
|
12 |
-
|
13 |
-
/* ------------------------------------------------------------------------ *
|
14 |
-
* Menu Section
|
15 |
-
* ------------------------------------------------------------------------ */
|
16 |
-
|
17 |
-
function ga_events_menu() {
|
18 |
-
|
19 |
-
add_menu_page( 'WP Google Analytics Settings',
|
20 |
-
'WP GA Events',
|
21 |
-
'manage_options',
|
22 |
-
'wp-google-analytics-events',
|
23 |
-
array( $this, 'ga_events_render_settings_page' ), // callback
|
24 |
-
GAE_PLUGIN_URL . 'images/menu-icon.png'
|
25 |
-
);
|
26 |
-
|
27 |
-
add_submenu_page( 'wp-google-analytics-events',
|
28 |
-
'General Settings',
|
29 |
-
'General Settings',
|
30 |
-
'manage_options',
|
31 |
-
'wp-google-analytics-events',
|
32 |
-
array( $this, 'ga_events_render_settings_page' ) );
|
33 |
-
|
34 |
-
add_submenu_page( 'wp-google-analytics-events',
|
35 |
-
'Click Tracking',
|
36 |
-
'Click Tracking',
|
37 |
-
'manage_options',
|
38 |
-
'wp-google-analytics-events-click',
|
39 |
-
array( $this, 'ga_events_render_settings_page' ) );
|
40 |
-
|
41 |
-
add_submenu_page( 'wp-google-analytics-events',
|
42 |
-
'Scroll Tracking',
|
43 |
-
'Scroll Tracking',
|
44 |
-
'manage_options',
|
45 |
-
'wp-google-analytics-events-scroll',
|
46 |
-
array( $this, 'ga_events_render_settings_page' ) );
|
47 |
-
|
48 |
-
add_submenu_page( 'wp-google-analytics-events',
|
49 |
-
"Getting Started Guide",
|
50 |
-
"Getting Started Guide",
|
51 |
-
'manage_options',
|
52 |
-
'wp-google-analytics-events-getstarted',
|
53 |
-
array( $this, 'ga_events_render_settings_page' ) );
|
54 |
-
|
55 |
-
add_submenu_page( 'wp-google-analytics-events',
|
56 |
-
"What's New",
|
57 |
-
"What's New",
|
58 |
-
'manage_options',
|
59 |
-
'wp-google-analytics-events-whatsnew',
|
60 |
-
array( $this, 'ga_events_render_settings_page' ) );
|
61 |
-
|
62 |
-
add_submenu_page('wp-google-analytics-events','Upgrade','Upgrade Now', 'manage_options', 'wp-google-analytics-events-upgrade', 'ga_events_settings_page' );
|
63 |
-
|
64 |
-
}
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
function ga_events_render_settings_page() {
|
69 |
-
?>
|
70 |
-
<div class="wrap ga_main">
|
71 |
-
<h2>WP Google Analytics Events</h2>
|
72 |
-
<?php
|
73 |
-
// Determine which tab we are on
|
74 |
-
$active_page = isset( $_GET[ 'page' ] ) ? $_GET[ 'page' ] : 'wp-google-analytics-events';
|
75 |
-
?>
|
76 |
-
<h2 class="nav-tab-wrapper">
|
77 |
-
<!-- General Settings -->
|
78 |
-
<a href="?page=wp-google-analytics-events" class="nav-tab <?php echo $active_page == 'wp-google-analytics-events' ? 'nav-tab-active' : ''; ?>">General Settings</a>
|
79 |
-
|
80 |
-
<!-- Click tracking -->
|
81 |
-
<a href="?page=wp-google-analytics-events-click" class="nav-tab <?php echo $active_page == 'wp-google-analytics-events-click' ? 'nav-tab-active' : ''; ?>">Click Tracking</a>
|
82 |
-
|
83 |
-
<!-- Scroll tracking -->
|
84 |
-
<a href="?page=wp-google-analytics-events-scroll" class="nav-tab <?php echo $active_page == 'wp-google-analytics-events-scroll' ? 'nav-tab-active' : ''; ?>">Scroll Tracking</a>
|
85 |
-
|
86 |
-
<!-- Getting Started Guide -->
|
87 |
-
<a href="?page=wp-google-analytics-events-getstarted" class="nav-tab <?php echo $active_page == 'wp-google-analytics-events-getstarted' ? 'nav-tab-active' : ''; ?>">Getting Started Guide</a>
|
88 |
-
|
89 |
-
<!-- What's new -->
|
90 |
-
<a href="?page=wp-google-analytics-events-whatsnew&wpgae_whatsnew_notify=2" class="nav-tab <?php echo $active_page == 'wp-google-analytics-events-whatsnew' ? 'nav-tab-active' : ''; ?>">What's New</a>
|
91 |
-
|
92 |
-
<!-- Plugin Support -->
|
93 |
-
<a href="https://wordpress.org/support/plugin/wp-google-analytics-events/" target="_blank" class="nav-tab">Plugin Support</a>
|
94 |
-
</h2>
|
95 |
-
|
96 |
-
|
97 |
-
<?php if ($active_page == 'wp-google-analytics-events') {
|
98 |
-
$ga_events_report = "";
|
99 |
-
if (isset($_GET['report']) && $_GET['report'] == 'true') {
|
100 |
-
$ga_events_report = "ga_events_report";
|
101 |
-
}
|
102 |
-
echo "<div class='wpgae-gs-form ".$ga_events_report."'><form id='ga_events_options' method='post' action='options.php'>";
|
103 |
-
}
|
104 |
-
?>
|
105 |
-
|
106 |
-
<?php
|
107 |
-
settings_fields( 'ga_events_options_group' );
|
108 |
-
|
109 |
-
if ( $active_page == 'wp-google-analytics-events-click' ) {
|
110 |
-
if ( file_exists( GAE_PLUGIN_PATH . '/templates/click-elements-input-table.php' ) ) {
|
111 |
-
include GAE_PLUGIN_PATH . '/templates/click-elements-input-table.php';
|
112 |
-
}
|
113 |
-
} else if ( $active_page == 'wp-google-analytics-events-scroll' ) {
|
114 |
-
if ( file_exists( GAE_PLUGIN_PATH . '/templates/scroll-elements-input-table.php' ) ) {
|
115 |
-
include GAE_PLUGIN_PATH . '/templates/scroll-elements-input-table.php';
|
116 |
-
}
|
117 |
-
} else if ( $active_page == 'wp-google-analytics-events-getstarted' ) {
|
118 |
-
do_settings_sections( 'ga_events_getstarted' );
|
119 |
-
} else if ( $active_page == 'wp-google-analytics-events-whatsnew' ) {
|
120 |
-
do_settings_sections( 'ga_events_whatsnew' );
|
121 |
-
} else if ($active_page == 'wp-google-analytics-events' && isset($_GET['report']) && $_GET['report'] == 'true') {
|
122 |
-
settings_fields( 'ga_events_general_reports_group' );
|
123 |
-
do_settings_sections( 'ga_events_general_reports_group' );
|
124 |
-
} else {
|
125 |
-
|
126 |
-
do_settings_sections( 'ga_events_options_group' );
|
127 |
-
}
|
128 |
-
|
129 |
-
// Save button on Genral Settings tab
|
130 |
-
if ( $active_page == 'wp-google-analytics-events' && !isset($_GET['report']) ) {
|
131 |
-
submit_button();
|
132 |
-
}
|
133 |
-
|
134 |
-
// use non-ajax on click tracking page - disabled
|
135 |
-
if ( $active_page == 'wp-google-analytics-events-click' ) {
|
136 |
-
//submit_button();
|
137 |
-
}
|
138 |
-
?>
|
139 |
-
|
140 |
-
<?php echo $active_page == 'wp-google-analytics-events' ? "</form></div>" : '';
|
141 |
-
// Save button on Genral Settings tab
|
142 |
-
if ( $active_page == 'wp-google-analytics-events' && !(isset($_GET['report']) && $_GET['report'] == 'true') ) {
|
143 |
-
?>
|
144 |
-
<div class="wrap ga_events_banner ga_events_sidebar">
|
145 |
-
<!-- <div class="wrap ga_events_sidebar">-->
|
146 |
-
<table class="form-table widefat" >
|
147 |
-
<thead>
|
148 |
-
<th>Need More Features?</th>
|
149 |
-
</thead>
|
150 |
-
<tbody>
|
151 |
-
<tr class="features">
|
152 |
-
<td>
|
153 |
-
<ul>
|
154 |
-
<li><i class="fa fa-check-square-o fa-lg"></i><strong>Link Tracking</strong></li>
|
155 |
-
<li title="Dynamic Event Data"><i class="fa fa-check-square-o fa-lg"></i><strong>Placeholders</strong></li>
|
156 |
-
<li><i class="fa fa-check-square-o fa-lg"></i><strong>Track your Self-Hosted Media video and audio</strong></li>
|
157 |
-
<li><i class="fa fa-check-square-o fa-lg"></i><strong>YouTube Video Tracking</strong></li>
|
158 |
-
<li><i class="fa fa-check-square-o fa-lg"></i><strong>Vimeo Video support</strong></li>
|
159 |
-
<li><i class="fa fa-check-square-o fa-lg"></i><strong>Allow non-admin users to manage the plugin</strong></li>
|
160 |
-
<li><i class="fa fa-check-square-o fa-lg"></i><strong>HTML Tag support</strong></li>
|
161 |
-
<li><i class="fa fa-check-square-o fa-lg"></i><strong>Access to our Pro Support Team</strong></li>
|
162 |
-
</ul>
|
163 |
-
</td>
|
164 |
-
</tr>
|
165 |
-
<tr class="tfoot">
|
166 |
-
<td>
|
167 |
-
<div class="wpcta">
|
168 |
-
<a class="button-primary button-large" target="_blank" href="https://wpflow.com/upgrade/?utm_source=wpadmin&utm_medium=banner&utm_campaign=genreal">
|
169 |
-
<span class="btn-title ">
|
170 |
-
Upgrade Now
|
171 |
-
</span>
|
172 |
-
</a>
|
173 |
-
</div>
|
174 |
-
</td>
|
175 |
-
</tr>
|
176 |
-
</tbody>
|
177 |
-
</table>
|
178 |
-
|
179 |
-
</div>
|
180 |
-
</div>
|
181 |
-
<div class="settings_content">
|
182 |
-
<form action="" method="post" enctype="multipart/form-data">
|
183 |
-
<a href="#" class="btn_close"><img src="<?php echo GAE_PLUGIN_URL ?>images/close.png"></a>
|
184 |
-
<input type="file" name="ga_settings_import">
|
185 |
-
<input type="hidden" name="ga_events_action" value="import_settings" />
|
186 |
-
<?php
|
187 |
-
wp_nonce_field( 'ga_events_import_nonce',
|
188 |
-
'ga_events_import_nonce' );
|
189 |
-
?>
|
190 |
-
<input type="submit" name="set_settings">
|
191 |
-
</form>
|
192 |
-
</div>
|
193 |
-
<?php } ?>
|
194 |
-
<?php
|
195 |
-
}
|
196 |
-
|
197 |
-
|
198 |
-
/* ------------------------------------------------------------------------ *
|
199 |
-
* Setting Registration
|
200 |
-
* ------------------------------------------------------------------------ */
|
201 |
-
|
202 |
-
function ga_events_initialize_plugin_options() {
|
203 |
-
|
204 |
-
register_setting( 'ga_events_options_group',
|
205 |
-
'ga_events_options',
|
206 |
-
array( $this, 'update_settings_callback' ) );
|
207 |
-
|
208 |
-
register_setting( 'ga_events_general_reports_group',
|
209 |
-
'ga_events_options',
|
210 |
-
array($this, 'update_settings_callback' ) );
|
211 |
-
|
212 |
-
/* ------------------------------------------------------------------------ *
|
213 |
-
* Settings sections
|
214 |
-
* ------------------------------------------------------------------------ */
|
215 |
-
|
216 |
-
add_settings_section( 'ga_events_main',
|
217 |
-
'',
|
218 |
-
array( $this, 'ga_events_section_text' ),
|
219 |
-
'ga_events_options_group' );
|
220 |
-
|
221 |
-
add_settings_section( 'ga_events_main_reports',
|
222 |
-
'',
|
223 |
-
array( $this, 'ga_events_section_text' ),
|
224 |
-
'ga_events_general_reports_group' );
|
225 |
-
|
226 |
-
|
227 |
-
add_settings_section( 'ga_events_getstarted_section',
|
228 |
-
"",
|
229 |
-
array( $this, 'ga_events_getstarted_section_content' ),
|
230 |
-
'ga_events_getstarted' );
|
231 |
-
|
232 |
-
add_settings_section( 'ga_events_whatsnew_section',
|
233 |
-
"",
|
234 |
-
array( $this, 'ga_events_whatsnew_section_content' ),
|
235 |
-
'ga_events_whatsnew' );
|
236 |
-
|
237 |
-
/* ------------------------------------------------------------------------ *
|
238 |
-
* Settings Fields
|
239 |
-
* ------------------------------------------------------------------------ */
|
240 |
-
|
241 |
-
// GA id field
|
242 |
-
add_settings_field( 'ga_events_id',
|
243 |
-
'',
|
244 |
-
array( $this, 'ga_events_tracking_id_input' ), // Rendering callback
|
245 |
-
'ga_events_options_group', // page name
|
246 |
-
'ga_events_main' ); // section name
|
247 |
-
// Domain field
|
248 |
-
add_settings_field( 'ga_events_domain',
|
249 |
-
'',
|
250 |
-
array( $this, 'ga_events_setting_domain_input' ), // Callback
|
251 |
-
'ga_events_options_group',
|
252 |
-
'ga_events_main' );
|
253 |
-
|
254 |
-
// Anonymize IP checkbox
|
255 |
-
add_settings_field( 'ga_events_anonymizeip',
|
256 |
-
'',
|
257 |
-
array($this, 'ga_events_setting_anon_input'),
|
258 |
-
'ga_events_options_group',
|
259 |
-
'ga_events_main' );
|
260 |
-
|
261 |
-
// Snippet type select menu input
|
262 |
-
add_settings_field( 'ga_events_snippet_type',
|
263 |
-
'',
|
264 |
-
array($this, 'ga_events_setting_snippet_type_input'),
|
265 |
-
'ga_events_options_group',
|
266 |
-
'ga_events_main' );
|
267 |
-
|
268 |
-
// GTM ID input
|
269 |
-
add_settings_field( 'ga_events_gtm_id',
|
270 |
-
'',
|
271 |
-
array($this, 'ga_events_setting_gtm_id_input'),
|
272 |
-
'ga_events_options_group',
|
273 |
-
'ga_events_main' );
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
// Download Tracking options checkbox
|
278 |
-
add_settings_field( 'ga_events_download_tracking',
|
279 |
-
'',
|
280 |
-
array($this, 'ga_events_setting_download_tracking_input'),
|
281 |
-
'ga_events_options_group',
|
282 |
-
'ga_events_main' );
|
283 |
-
|
284 |
-
// Email Links Tracking options checkbox
|
285 |
-
add_settings_field( 'email_link_tracking',
|
286 |
-
'',
|
287 |
-
array($this, 'ga_events_setting_email_link_tracking_input'),
|
288 |
-
'ga_events_options_group',
|
289 |
-
'ga_events_main' );
|
290 |
-
|
291 |
-
// // Tel Links Tracking options checkbox
|
292 |
-
// add_settings_field( 'tel_link_tracking',
|
293 |
-
// '',
|
294 |
-
// array($this, 'ga_events_setting_tel_link_tracking_input'),
|
295 |
-
// 'ga_events_options_group',
|
296 |
-
// 'ga_events_main' );
|
297 |
-
|
298 |
-
// Advanced options checkbox
|
299 |
-
add_settings_field( 'ga_events_advanced',
|
300 |
-
'',
|
301 |
-
array($this, 'ga_events_setting_adv_input'),
|
302 |
-
'ga_events_options_group',
|
303 |
-
'ga_events_main' );
|
304 |
-
|
305 |
-
// Force Snippet
|
306 |
-
add_settings_field( 'ga_events_force_tracking_code',
|
307 |
-
'',
|
308 |
-
array($this, 'ga_events_force_tracking_code_input'),
|
309 |
-
'ga_events_options_group',
|
310 |
-
'ga_events_main' );
|
311 |
-
|
312 |
-
// Script debug mode
|
313 |
-
add_settings_field( 'ga_events_script_debug_mode',
|
314 |
-
'',
|
315 |
-
array($this, 'ga_events_setting_script_debug_mode_input'),
|
316 |
-
'ga_events_options_group',
|
317 |
-
'ga_events_main' );
|
318 |
-
|
319 |
-
// Signout ga GA client
|
320 |
-
add_settings_field( 'ga_events_signout_ga_settings',
|
321 |
-
'',
|
322 |
-
array($this, 'ga_events_settings_signout_ga'),
|
323 |
-
'ga_events_options_group',
|
324 |
-
'ga_events_main' );
|
325 |
-
|
326 |
-
// Export settings
|
327 |
-
add_settings_field( 'ga_events_download_settings',
|
328 |
-
'',
|
329 |
-
array($this, 'ga_events_settings_download'),
|
330 |
-
'ga_events_options_group',
|
331 |
-
'ga_events_main' );
|
332 |
-
|
333 |
-
// Import settings
|
334 |
-
add_settings_field( 'ga_events_upload_settings',
|
335 |
-
'',
|
336 |
-
array($this, 'ga_events_settings_upload'),
|
337 |
-
'ga_events_options_group', // needed?
|
338 |
-
'ga_events_main' );
|
339 |
-
|
340 |
-
// Let settings callback know we're on general settings page
|
341 |
-
add_settings_field( 'ga_events_confirm_general_settings_page',
|
342 |
-
'',
|
343 |
-
array($this, 'ga_events_settings_confirm_general_settings_page'),
|
344 |
-
'ga_events_options_group', // needed?
|
345 |
-
'ga_events_main' );
|
346 |
-
|
347 |
-
add_settings_field( 'ga_events_general_reports_section',
|
348 |
-
'',
|
349 |
-
array($this, 'ga_events_general_reports_section'),
|
350 |
-
'ga_events_general_reports_group', 'ga_events_main_reports');
|
351 |
-
|
352 |
-
|
353 |
-
}
|
354 |
-
|
355 |
-
function update_settings_callback( $input ) {
|
356 |
-
|
357 |
-
// Very useful for debugging
|
358 |
-
// error_log( print_r( $input,
|
359 |
-
// true ) );
|
360 |
-
|
361 |
-
$options = get_option( 'ga_events_options' );
|
362 |
-
$updated = $options;
|
363 |
-
|
364 |
-
// Loop through each of the incoming options
|
365 |
-
foreach ( $input as $key => $value ) {
|
366 |
-
|
367 |
-
if ( isset( $input[ $key ] ) ) {
|
368 |
-
|
369 |
-
// Sanitize input
|
370 |
-
$updated[ $key ] = $this->strip_tags_deep( $input[ $key ] );
|
371 |
-
}
|
372 |
-
}
|
373 |
-
// This code is only run if we are on the general settins page
|
374 |
-
// otherwise these settings would get updated by changes on other
|
375 |
-
// pages as we only have one callback covering all the settings pages
|
376 |
-
if ( isset( $input[ 'which_page' ] ) && $input[ 'which_page' ] == 'general-settings' ) {
|
377 |
-
|
378 |
-
|
379 |
-
// The case of the empty checkboxes - anonymize ip
|
380 |
-
if ( ! isset( $input[ 'anonymizeip' ] ) ) {
|
381 |
-
$updated[ 'anonymizeip' ] = '0';
|
382 |
-
}
|
383 |
-
|
384 |
-
// The case of the empty checkboxes - download tracking
|
385 |
-
if ( ! isset( $input[ 'download_tracking' ] ) ) {
|
386 |
-
$updated[ 'download_tracking' ] = '0';
|
387 |
-
}
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
// The case of the empty checkboxes - email links tracking
|
392 |
-
if ( ! isset( $input[ 'email_link_tracking' ] ) ) {
|
393 |
-
$updated[ 'email_link_tracking' ] = '0';
|
394 |
-
}
|
395 |
-
|
396 |
-
// // The case of the empty checkboxes - tel links tracking
|
397 |
-
// if ( ! isset( $input[ 'tel_link_tracking' ] ) ) {
|
398 |
-
// $updated[ 'tel_link_tracking' ] = '0';
|
399 |
-
// }
|
400 |
-
|
401 |
-
// The case of the empty checkboxes - advanced mode
|
402 |
-
if ( ! isset( $input[ 'advanced' ] ) ) {
|
403 |
-
$updated[ 'advanced' ] = '0';
|
404 |
-
}
|
405 |
-
|
406 |
-
// The case of the empty checkboxes - script debug mode
|
407 |
-
if ( ! isset( $input[ 'script_debug_mode' ] ) ) {
|
408 |
-
$updated[ 'script_debug_mode' ] = '0';
|
409 |
-
}
|
410 |
-
|
411 |
-
}
|
412 |
-
|
413 |
-
// Remove page identifier
|
414 |
-
unset( $updated[ 'which_page' ] );
|
415 |
-
|
416 |
-
// Return new modified options array
|
417 |
-
return $updated;
|
418 |
-
}
|
419 |
-
|
420 |
-
function ga_events_feedback_form_html() {
|
421 |
-
$screen = get_current_screen();
|
422 |
-
if ($screen->id == "plugins") {
|
423 |
-
if ( file_exists( GAE_PLUGIN_PATH . '/templates/feedback-modal.php' ) ) {
|
424 |
-
include GAE_PLUGIN_PATH . '/templates/feedback-modal.php';
|
425 |
-
}
|
426 |
-
}
|
427 |
-
}
|
428 |
-
|
429 |
-
/* ------------------------------------------------------------------------ *
|
430 |
-
* Section Callbacks
|
431 |
-
* ------------------------------------------------------------------------ */
|
432 |
-
|
433 |
-
function ga_events_section_text() {
|
434 |
-
$active_page = isset( $_GET[ 'page' ] ) ? $_GET[ 'page' ] : 'wp-google-analytics-events';
|
435 |
-
$wpgae_section_title = "General Settings";
|
436 |
-
|
437 |
-
$is_report_tab = isset($_GET['report']) && $_GET['report'] == 'true';
|
438 |
-
$report_link = '?page='.$active_page.'&report=true';
|
439 |
-
$settings_link = '?page='.$active_page;
|
440 |
-
|
441 |
-
$report_class = "";
|
442 |
-
if ($is_report_tab) {
|
443 |
-
$report_class = "ga_events_report";
|
444 |
-
}
|
445 |
-
|
446 |
-
?>
|
447 |
-
<div class="ga-main-wrapper <?php echo $is_report_tab ? "" :"ga-main-wrapper-flex" ?>">
|
448 |
-
|
449 |
-
<div class='wpgae-gs-form <?php echo $report_class; ?>'>
|
450 |
-
<div class="wpgae-gs-internal">
|
451 |
-
<h2><?= $wpgae_section_title ?></h2>
|
452 |
-
<a href='http://wpflow.com/documentation/'>Need Help?</a>
|
453 |
-
<span style='margin-left:8px;'>
|
454 |
-
<a href='https://wordpress.org/support/plugin/wp-google-analytics-events/'>Support</a>
|
455 |
-
</span>
|
456 |
-
</div>
|
457 |
-
<div class="ga_main ga_main_settings">
|
458 |
-
<h2 class="nav-tab-wrapper">
|
459 |
-
<a href="<?= $report_link ?>" class="nav-tab <?php if ($is_report_tab) { echo "nav-tab-active"; } ?>">Reports</a>
|
460 |
-
<a href="<?= $settings_link ?>" class="nav-tab <?php if (!$is_report_tab) { echo "nav-tab-active"; } ?>">Settings</a>
|
461 |
-
</h2>
|
462 |
-
</div>
|
463 |
-
|
464 |
-
<?php
|
465 |
-
}
|
466 |
-
|
467 |
-
function ga_events_clicks_section_text() {
|
468 |
-
?>
|
469 |
-
<p>Click Events</p>
|
470 |
-
<?php
|
471 |
-
}
|
472 |
-
|
473 |
-
function ga_events_scrolls_section_text() {
|
474 |
-
?>
|
475 |
-
<p>Scroll Events</p>
|
476 |
-
<?php
|
477 |
-
}
|
478 |
-
|
479 |
-
function ga_events_getstarted_section_content() {
|
480 |
-
if ( file_exists( GAE_PLUGIN_PATH . '/templates/getting-started-guide-section.php' ) ) {
|
481 |
-
include GAE_PLUGIN_PATH . '/templates/getting-started-guide-section.php';
|
482 |
-
}
|
483 |
-
}
|
484 |
-
|
485 |
-
function ga_events_whatsnew_section_content() {
|
486 |
-
if ( file_exists( GAE_PLUGIN_PATH . '/templates/whats-new-section-content.php' ) ) {
|
487 |
-
include GAE_PLUGIN_PATH . '/templates/whats-new-section-content.php';
|
488 |
-
}
|
489 |
-
}
|
490 |
-
|
491 |
-
/* ------------------------------------------------------------------------ *
|
492 |
-
* Field Callbacks
|
493 |
-
* ------------------------------------------------------------------------ */
|
494 |
-
|
495 |
-
// General Settings page begins
|
496 |
-
|
497 |
-
function ga_events_tracking_id_input() {
|
498 |
-
// Read the social options collection.
|
499 |
-
$options = get_option( 'ga_events_options' );
|
500 |
-
|
501 |
-
// Make sure the element is defined in the options. If not, set an empty string.
|
502 |
-
$id = isset( $options[ 'tracking_id' ] ) ? $options[ 'tracking_id' ] : '';
|
503 |
-
|
504 |
-
// Output HTML
|
505 |
-
?>
|
506 |
-
<h4>Google Analytics</h4>
|
507 |
-
<label>Google Analytics Tracking ID</label><input class='ga-gs-input' name='ga_events_options[tracking_id]' type='text' value="<?php echo $id; ?>" />
|
508 |
-
<?php
|
509 |
-
}
|
510 |
-
|
511 |
-
function ga_events_setting_domain_input() {
|
512 |
-
$options = get_option( 'ga_events_options' );
|
513 |
-
$domain = isset( $options[ 'domain' ] ) ? $options[ 'domain' ] : '';
|
514 |
-
echo "<label>Domain (optional)</label>";
|
515 |
-
|
516 |
-
echo "<input id='domain' class='ga-gs-input' name='ga_events_options[domain]' type='text' value='$domain' />";
|
517 |
-
}
|
518 |
-
|
519 |
-
function ga_events_setting_anon_input() {
|
520 |
-
$options = get_option( 'ga_events_options' );
|
521 |
-
$value = isset( $options[ 'anonymizeip' ] ) ? $options[ 'anonymizeip' ] : '0';
|
522 |
-
echo "<label>IP Anonymization </i>" . $this->ga_tooltip( 'Tell Google Analytics not to log IP Addresses. Requires code snippet to be selected (but not GTM container).' ) . "</label>";
|
523 |
-
echo "<label class='toggle-control'>";
|
524 |
-
echo "<input id='anonymizeip' name='ga_events_options[anonymizeip]' type='checkbox' value='1' " . checked( $value,
|
525 |
-
1,
|
526 |
-
false ) . " />";
|
527 |
-
echo "<span class='control'></span>";
|
528 |
-
echo "</label>";
|
529 |
-
}
|
530 |
-
|
531 |
-
function ga_events_setting_snippet_type_input() {
|
532 |
-
|
533 |
-
$options = get_option( 'ga_events_options' );
|
534 |
-
|
535 |
-
/*
|
536 |
-
* TO DO Needs testing with upgrade
|
537 |
-
* Should have been set in upgrade function in wp-google-analytics-events.php
|
538 |
-
*/
|
539 |
-
$defaultOption = isset( $options[ 'snippet_type' ] ) ? $options[ 'snippet_type' ] : 'none';
|
540 |
-
echo "<label>Snippet type to add: " . $this->ga_tooltip( 'The Google Analytics snippet to add if any.' ) . "</label>";
|
541 |
-
?>
|
542 |
-
<select id="snippet_type" class='ga-gs-input' name='ga_events_options[snippet_type]'>
|
543 |
-
<option value="gtm" <?php selected($defaultOption, 'gtm') ?>>Google Tag Manager Container</option>
|
544 |
-
<option value="gst" <?php selected($defaultOption, 'gst') ?>>Global Site Tag (gtag.js)</option>
|
545 |
-
<option value="universal" <?php selected($defaultOption, 'universal') ?>>Universal (analytics.js)</option>
|
546 |
-
<option value="legacy" <?php selected($defaultOption, 'legacy') ?>>Legacy (ga.js)</option>
|
547 |
-
<option value='none' <?php selected($defaultOption, 'none') ?>>None</option>
|
548 |
-
</select>
|
549 |
-
<?php
|
550 |
-
}
|
551 |
-
|
552 |
-
function ga_events_setting_gtm_id_input() {
|
553 |
-
$options = get_option( 'ga_events_options' );
|
554 |
-
$gtm_id = isset( $options[ 'gtm_id' ] ) ? $options[ 'gtm_id' ] : '';
|
555 |
-
echo "<label>Google Tag Manager Container ID" . $this->ga_tooltip( 'Your GTM container ID, which you can get from your GTM account' ) . "</label>";
|
556 |
-
echo "<input id='gtm_id' class='ga-gs-input' name='ga_events_options[gtm_id]' type='text' value='$gtm_id' />";
|
557 |
-
}
|
558 |
-
|
559 |
-
function ga_events_setting_download_tracking_input() {
|
560 |
-
$options = get_option( 'ga_events_options' );
|
561 |
-
$value = isset( $options[ 'download_tracking' ] ) ? $options[ 'download_tracking' ] : '0';
|
562 |
-
echo "<br /><hr /><br /><h4>Download and Email Tracking</h4>";
|
563 |
-
echo "<label>Track Downloads (PDF, MP3, PPTX, DOCX): </label>";
|
564 |
-
echo "<label class='toggle-control'>";
|
565 |
-
echo "<input id='download_tracking' name='ga_events_options[download_tracking]' type='checkbox' value='1'" . checked( $value,
|
566 |
-
'1',
|
567 |
-
false ) . " />";
|
568 |
-
echo "<span class='control'></span>";
|
569 |
-
echo "</label>";
|
570 |
-
}
|
571 |
-
|
572 |
-
function ga_events_setting_email_link_tracking_input() {
|
573 |
-
$options = get_option( 'ga_events_options' );
|
574 |
-
$value = isset( $options[ 'email_link_tracking' ] ) ? $options[ 'email_link_tracking' ] : '0';
|
575 |
-
echo "<label>Track Email Links (mailto:): </label>";
|
576 |
-
echo "<label class='toggle-control'>";
|
577 |
-
echo "<input id='email_link_tracking' name='ga_events_options[email_link_tracking]' type='checkbox' value='1'" . checked( $value,
|
578 |
-
'1',
|
579 |
-
false ) . " />";
|
580 |
-
echo "<span class='control'></span>";
|
581 |
-
echo "</label>";
|
582 |
-
}
|
583 |
-
|
584 |
-
function ga_events_setting_adv_input() {
|
585 |
-
$options = get_option( 'ga_events_options' );
|
586 |
-
$value = isset( $options[ 'advanced' ] ) ? $options[ 'advanced' ] : '0';
|
587 |
-
echo "<br /><hr /><br /><h4>Advanced Settings</h4>";
|
588 |
-
echo "<label>Advanced Mode " . $this->ga_tooltip( 'Enable Advanced Selectors' ) . "</label>";
|
589 |
-
echo "<label class='toggle-control'>";
|
590 |
-
echo "<input id='advanced' name='ga_events_options[advanced]' type='checkbox' value='1' " . checked( $value,
|
591 |
-
'1',
|
592 |
-
false ) . " />";
|
593 |
-
echo "<span class='control'></span>";
|
594 |
-
echo "</label>";
|
595 |
-
}
|
596 |
-
|
597 |
-
|
598 |
-
function ga_events_force_tracking_code_input() {
|
599 |
-
|
600 |
-
$options = get_option( 'ga_events_options' );
|
601 |
-
$track = isset( $options[ 'advanced' ] ) && $options[ 'advanced' ] == true;
|
602 |
-
|
603 |
-
/*
|
604 |
-
* TO DO Needs testing with upgrade
|
605 |
-
* Should have been set in upgrade function in wp-google-analytics-events.php
|
606 |
-
*/
|
607 |
-
$defaultOption = isset( $options[ 'force_snippet' ] ) ? $options[ 'force_snippet' ] : 'none';
|
608 |
-
echo $track ? "<div id='forcesnopperwrap'>" : "<div style='display:none;' id='forcesnopperwrap'>";
|
609 |
-
|
610 |
-
echo "<label>Force the plugin to use this code snippet: " . $this->ga_tooltip( 'Please see docs for help with deciding this option' ) . "</label>";
|
611 |
-
?>
|
612 |
-
<select id="force_snippet" name='ga_events_options[force_snippet]'>
|
613 |
-
<option value="gtm" <?php selected($defaultOption, 'gtm') ?>>Google Tag Manager Container</option>
|
614 |
-
<option value="gst" <?php selected($defaultOption, 'gst') ?>>Global Site Tag (gtag.js)</option>
|
615 |
-
<option value="universal" <?php selected($defaultOption, 'universal') ?>>Universal (analytics.js)</option>
|
616 |
-
<option value='none' <?php selected($defaultOption, 'none') ?>>None</option>
|
617 |
-
</select>
|
618 |
-
</div>
|
619 |
-
<?php
|
620 |
-
}
|
621 |
-
|
622 |
-
|
623 |
-
|
624 |
-
function ga_events_setting_script_debug_mode_input() {
|
625 |
-
$options = get_option( 'ga_events_options' );
|
626 |
-
$value = isset( $options[ 'script_debug_mode' ] ) ? $options[ 'script_debug_mode' ] : '0';
|
627 |
-
echo "<label>Support Friendly Scripts " . $this->ga_tooltip( 'Uncheck for script minimization' ) . "</label>";
|
628 |
-
echo "<label class='toggle-control'>";
|
629 |
-
echo "<input id='script_debug_mode' name='ga_events_options[script_debug_mode]' type='checkbox' value='1' " . checked( $value,
|
630 |
-
'1',
|
631 |
-
false ) . " />";
|
632 |
-
echo "<span class='control'></span>";
|
633 |
-
echo "</label>";
|
634 |
-
}
|
635 |
-
|
636 |
-
function ga_events_settings_download() {
|
637 |
-
echo '<br /><hr /><br /><a class="button" style="margin-right: 20px;" href="http://' . $_SERVER[ "HTTP_HOST" ] . $_SERVER[ "REQUEST_URI" ] . '&download=1">Export settings</a> <a href="#" class="button btn_upload">Import settings</a>';
|
638 |
-
}
|
639 |
-
|
640 |
-
function ga_events_settings_signout_ga() {
|
641 |
-
$ajax_nonce = wp_create_nonce( "wpflow_ga_disconnect" );
|
642 |
-
$options = get_option( 'ga_events_options' );
|
643 |
-
$advanced = isset( $options[ 'advanced' ] ) && $options[ 'advanced' ] == true;
|
644 |
-
echo $advanced ? '<div id="wpflow_gs_reports_section">' : '<div id="wpflow_gs_reports_section" style="display: none">';
|
645 |
-
echo '<br /><hr/><br /><h4>Reports</h4><div><a class="button btn_signout_ga" href="#" data-delete-nonce="'.$ajax_nonce.'">Sign-out of Google Analytics</a></div></div>';
|
646 |
-
}
|
647 |
-
|
648 |
-
function ga_events_settings_upload() {
|
649 |
-
echo '';
|
650 |
-
}
|
651 |
-
|
652 |
-
function ga_events_settings_confirm_general_settings_page() {
|
653 |
-
?>
|
654 |
-
<input type="hidden" name='ga_events_options[which_page]' value="general-settings">
|
655 |
-
<?php
|
656 |
-
}
|
657 |
-
|
658 |
-
/*
|
659 |
-
Reports Tabs
|
660 |
-
*/
|
661 |
-
function ga_events_general_reports_section() {
|
662 |
-
require_once( GAE_PLUGIN_PATH . '/templates/reports.php' );
|
663 |
-
}
|
664 |
-
|
665 |
-
|
666 |
-
// General settings page ends
|
667 |
-
// What's new section
|
668 |
-
function ga_events_setting_whatsnew_input() {
|
669 |
-
|
670 |
-
// Currently not used
|
671 |
-
}
|
672 |
-
|
673 |
-
// Callback for adding settings link next to listing on plugins page
|
674 |
-
function plugin_add_settings_link( $links ) {
|
675 |
-
$upgrade = '<a target="_blank" href="https://wpflow.com/upgrade?utm_source=wpadmin&utm_medium=link&utm_campaign=plugin-settings"">' . __('Upgrade', 'General') . '</a>';
|
676 |
-
$settings_link = '<a href="admin.php?page=wp-google-analytics-events">' . __( 'Settings' ) . '</a>';
|
677 |
-
array_unshift( $links,
|
678 |
-
$settings_link );
|
679 |
-
array_unshift( $links,
|
680 |
-
$upgrade );
|
681 |
-
return $links;
|
682 |
-
}
|
683 |
-
|
684 |
-
/* ------------------------------------------------------------------------ *
|
685 |
-
* Helpers
|
686 |
-
* ------------------------------------------------------------------------ */
|
687 |
-
|
688 |
-
function ga_events_download_settings() {
|
689 |
-
|
690 |
-
if ( isset( $_GET[ 'download' ] ) && isset( $_GET[ 'page' ] ) ) {
|
691 |
-
if ( $_GET[ 'page' ] == 'wp-google-analytics-events' ) {
|
692 |
-
$options = get_option( 'ga_events_options' );
|
693 |
-
// the version number currently has its own option in db. Un comment below if needed.
|
694 |
-
//$options[ 'GA_EVENTS_version' ] = get_option( 'GA_EVENTS_version' );
|
695 |
-
$settings = json_encode( $options );
|
696 |
-
|
697 |
-
nocache_headers();
|
698 |
-
header( 'Content-Type: application/json; charset=utf-8' );
|
699 |
-
header( 'Content-Disposition: attachment; filename=ga-events-pro-settings-export-' . date( 'm-d-Y' ) . '.json' );
|
700 |
-
header( "Expires: 0" );
|
701 |
-
|
702 |
-
echo $settings;
|
703 |
-
exit;
|
704 |
-
}
|
705 |
-
}
|
706 |
-
}
|
707 |
-
|
708 |
-
function ga_events_import_settings() {
|
709 |
-
|
710 |
-
if ( empty( $_POST[ 'ga_events_action' ] ) || 'import_settings' != $_POST[ 'ga_events_action' ] ) {
|
711 |
-
return;
|
712 |
-
}
|
713 |
-
|
714 |
-
if ( ! wp_verify_nonce( $_POST[ 'ga_events_import_nonce' ],
|
715 |
-
'ga_events_import_nonce' ) ) {
|
716 |
-
return;
|
717 |
-
}
|
718 |
-
|
719 |
-
$temp = explode( '.',
|
720 |
-
$_FILES[ 'ga_settings_import' ][ 'name' ] );
|
721 |
-
$extension = end( $temp );
|
722 |
-
|
723 |
-
if ( $extension != 'json' ) {
|
724 |
-
wp_die( __( 'Please upload a valid .json file' ) );
|
725 |
-
}
|
726 |
-
|
727 |
-
$import_file = $_FILES[ 'ga_settings_import' ][ 'tmp_name' ];
|
728 |
-
|
729 |
-
if ( empty( $import_file ) ) {
|
730 |
-
wp_die( __( 'Please upload a file to import' ) );
|
731 |
-
}
|
732 |
-
|
733 |
-
// Retrieve the settings from the file and convert the json object to an array.
|
734 |
-
$settings = json_decode( file_get_contents( $import_file ),
|
735 |
-
true );
|
736 |
-
|
737 |
-
|
738 |
-
WPGAEGClickEvent::delete_all_event_posts();
|
739 |
-
WPGAEGScrollEvent::delete_all_event_posts();
|
740 |
-
|
741 |
-
|
742 |
-
if (isset($settings["click_elements"])) {
|
743 |
-
$new_click_elements = $settings["click_elements"];
|
744 |
-
foreach($new_click_elements as &$item) {
|
745 |
-
$item["selector"] = $item["name"];
|
746 |
-
unset($item["name"]);
|
747 |
-
}
|
748 |
-
$click_elements = WPGAEGClickEvent::convert_and_save_cached_settings($new_click_elements);
|
749 |
-
}
|
750 |
-
|
751 |
-
if (isset($settings["scroll_elements"])) {
|
752 |
-
$new_scroll_elements = $settings["scroll_elements"];
|
753 |
-
foreach($new_scroll_elements as &$item) {
|
754 |
-
$item["selector"] = $item["name"];
|
755 |
-
unset($item["name"]);
|
756 |
-
}
|
757 |
-
$scroll_elements = WPGAEGScrollEvent::convert_and_save_cached_settings($new_scroll_elements);
|
758 |
-
}
|
759 |
-
// die(var_dump($settings));
|
760 |
-
update_option( 'ga_events_options',
|
761 |
-
$settings );
|
762 |
-
|
763 |
-
wp_safe_redirect( admin_url( 'admin.php?page=wp-google-analytics-events' ) );
|
764 |
-
exit;
|
765 |
-
}
|
766 |
-
|
767 |
-
function ga_tooltip( $content = '' ) {
|
768 |
-
$html = '<span class="ga-tooltip" title="' . $content . '"></span>';
|
769 |
-
return $html;
|
770 |
-
}
|
771 |
-
|
772 |
-
function createCheckbox( $name, $id, $value, $label, $isChecked = false ) {
|
773 |
-
$html = '<input type="checkbox" id="' . $id . '" name="' . $name . '" value="' . $value . '" ';
|
774 |
-
$html .= $isChecked ? 'checked>' : '>';
|
775 |
-
$html .= $label . '    ';
|
776 |
-
return $html;
|
777 |
-
}
|
778 |
-
|
779 |
-
function is_selected( $value, $stored ) {
|
780 |
-
if ( $stored == $value ) {
|
781 |
-
return "selected";
|
782 |
-
}
|
783 |
-
return "";
|
784 |
-
}
|
785 |
-
|
786 |
-
function create_dropdown( $name, $id, $options = array(), $selected = 'unknown' ) {
|
787 |
-
$html = '';
|
788 |
-
if ( ! empty( $options ) ) {
|
789 |
-
$html .= "<select id='$id' name='$name'>";
|
790 |
-
|
791 |
-
foreach ( $options as $key => $value ) {
|
792 |
-
$html .= $selected == $key ? "<option selected value='$key' >$value</option>" : "<option value='$key' >$value</option>";
|
793 |
-
}
|
794 |
-
|
795 |
-
$html .= "</select>";
|
796 |
-
}
|
797 |
-
return $html;
|
798 |
-
}
|
799 |
-
|
800 |
-
function strip_tags_deep( $value ) {
|
801 |
-
$value = is_array( $value ) ?
|
802 |
-
array_map( array( $this, 'strip_tags_deep' ),
|
803 |
-
$value ) :
|
804 |
-
strip_tags( $value );
|
805 |
-
|
806 |
-
return $value;
|
807 |
-
}
|
808 |
-
|
809 |
-
}
|
810 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
trunk/include/Snippets.php
DELETED
@@ -1,150 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
class GAESnippets {
|
4 |
-
|
5 |
-
static function add_google_tag_manager_container()
|
6 |
-
{
|
7 |
-
$options = get_option('ga_events_options');
|
8 |
-
$gtm_id = isset($options['gtm_id']) ? $options['gtm_id'] : '';
|
9 |
-
if (isset($gtm_id) && $gtm_id != "") {
|
10 |
-
|
11 |
-
echo <<<EOF
|
12 |
-
<!-- Google Tag Manager -->
|
13 |
-
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
14 |
-
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
15 |
-
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
16 |
-
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
|
17 |
-
})(window,document,'script','dataLayer','$gtm_id');</script>
|
18 |
-
<!-- End Google Tag Manager -->
|
19 |
-
|
20 |
-
EOF;
|
21 |
-
// TODO discuss this implementtion with Yuval as it requires theme modification
|
22 |
-
add_action('wp_after_body',
|
23 |
-
'add_google_tag_manager_noscript');
|
24 |
-
}
|
25 |
-
}
|
26 |
-
|
27 |
-
static function add_google_tag_manager_noscript() {
|
28 |
-
$options = get_option('ga_events_options');
|
29 |
-
$gtm_id = isset($options['gtm_id']) ? $options['gtm_id'] : '';
|
30 |
-
// This part is for running GA without JS on page. However this plugin requires JS, so the snippet is strictly redundant, although GA detetcts its absence
|
31 |
-
echo <<<EOF
|
32 |
-
<!-- Google Tag Manager (noscript) -->
|
33 |
-
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=$gtm_id"
|
34 |
-
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
35 |
-
<!-- End Google Tag Manager (noscript) -->
|
36 |
-
EOF;
|
37 |
-
}
|
38 |
-
|
39 |
-
static function add_global_site_tag() {
|
40 |
-
$options = get_option( 'ga_events_options' );
|
41 |
-
$id = $options[ 'tracking_id' ];
|
42 |
-
if (isset($id) && $id != "") {
|
43 |
-
$anonymize_ip = $options['anonymizeip'];
|
44 |
-
$anonymize_ip_string = (isset($anonymize_ip) && $anonymize_ip) ? "{ 'anonymize_ip': true }" : "{ 'anonymize_ip': false }";
|
45 |
-
echo <<<EOF
|
46 |
-
<!-- Global site tag (gtag.js) - Google Analytics -->
|
47 |
-
<script async src="https://www.googletagmanager.com/gtag/js?id=$id"></script>
|
48 |
-
<script>
|
49 |
-
window.dataLayer = window.dataLayer || [];
|
50 |
-
function gtag() {
|
51 |
-
dataLayer.push(arguments);
|
52 |
-
}
|
53 |
-
gtag('js', new Date());
|
54 |
-
|
55 |
-
gtag('config', '$id', $anonymize_ip_string );
|
56 |
-
</script>
|
57 |
-
|
58 |
-
EOF;
|
59 |
-
}
|
60 |
-
}
|
61 |
-
|
62 |
-
static function add_universal_tag()
|
63 |
-
{
|
64 |
-
$options = get_option('ga_events_options');
|
65 |
-
|
66 |
-
$id = $options['tracking_id'];
|
67 |
-
if (isset($id) && $id != "") {
|
68 |
-
if (isset($options['domain']) && $options['domain'] != "") {
|
69 |
-
$domain = $options['domain'];
|
70 |
-
} else {
|
71 |
-
$domain = 'auto';
|
72 |
-
}
|
73 |
-
$ga_create_call = (isset($options['anonymizeip']) && $options['anonymizeip']) ? "ga('create','$id', '$domain', {anonymizeIp: true});" : "ga('create','$id', '$domain');";
|
74 |
-
|
75 |
-
echo <<<EOF
|
76 |
-
<script>
|
77 |
-
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
78 |
-
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
79 |
-
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
80 |
-
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
81 |
-
$ga_create_call
|
82 |
-
ga('send', 'pageview');
|
83 |
-
</script>
|
84 |
-
|
85 |
-
EOF;
|
86 |
-
}
|
87 |
-
}
|
88 |
-
|
89 |
-
static function add_legacy_tag() {
|
90 |
-
// Legacy at time of writing means the ga.js api
|
91 |
-
$options = get_option( 'ga_events_options' );
|
92 |
-
|
93 |
-
$id = $options[ 'tracking_id' ];
|
94 |
-
if (isset($id) && $id != "") {
|
95 |
-
|
96 |
-
if (isset($options['domain']) && $options['domain'] != "") {
|
97 |
-
$domain = $options['domain'];
|
98 |
-
} else {
|
99 |
-
$domain = 'auto';
|
100 |
-
}
|
101 |
-
if ($domain == 'auto') {
|
102 |
-
$domain = $_SERVER['SERVER_NAME'];
|
103 |
-
}
|
104 |
-
$anon = (isset($options['anonymizeip']) && $options['anonymizeip']) ? "_gaq.push (['_gat._anonymizeIp'])" : "";
|
105 |
-
|
106 |
-
echo <<<EOF
|
107 |
-
<script type='text/javascript'>
|
108 |
-
var _gaq = _gaq || [];
|
109 |
-
_gaq.push(['_setAccount', '$id']);
|
110 |
-
$anon
|
111 |
-
_gaq.push(['_setAllowLinker', true]);
|
112 |
-
_gaq.push(['_trackPageview']);
|
113 |
-
|
114 |
-
(function() {
|
115 |
-
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
116 |
-
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
117 |
-
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
118 |
-
})();
|
119 |
-
</script>
|
120 |
-
|
121 |
-
EOF;
|
122 |
-
}
|
123 |
-
}
|
124 |
-
|
125 |
-
/*
|
126 |
-
* Insert tracking snippet of type chosen by user
|
127 |
-
*/
|
128 |
-
|
129 |
-
static function add_snippet_to_header() {
|
130 |
-
$options = get_option( 'ga_events_options' );
|
131 |
-
$snippet_type = $options[ 'snippet_type' ];
|
132 |
-
|
133 |
-
// Add snippet based on snippet_type in options
|
134 |
-
switch ( $snippet_type ) {
|
135 |
-
case 'gtm':
|
136 |
-
self::add_google_tag_manager_container();
|
137 |
-
break;
|
138 |
-
case 'gst':
|
139 |
-
self::add_global_site_tag();
|
140 |
-
break;
|
141 |
-
case 'universal':
|
142 |
-
self::add_universal_tag();
|
143 |
-
break;
|
144 |
-
case 'legacy':
|
145 |
-
self::add_legacy_tag();
|
146 |
-
break;
|
147 |
-
}
|
148 |
-
}
|
149 |
-
|
150 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
trunk/include/TrackingTable.php
DELETED
@@ -1,131 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
if( ! class_exists( 'WP_List_Table' ) ) {
|
4 |
-
require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
|
5 |
-
}
|
6 |
-
|
7 |
-
|
8 |
-
class WPGAE_Tracking_Table extends WP_List_Table {
|
9 |
-
|
10 |
-
protected $wpgae_post_type;
|
11 |
-
protected $wpgae_post_columns;
|
12 |
-
protected $wpgae_first_column;
|
13 |
-
|
14 |
-
|
15 |
-
function get_columns(){
|
16 |
-
$columns = array();
|
17 |
-
$columns['cb'] = '<input type="checkbox" />';
|
18 |
-
foreach($this->wpgae_post_columns as $key => $value) {
|
19 |
-
$columns[$key] = $value["title"];
|
20 |
-
}
|
21 |
-
return $columns;
|
22 |
-
}
|
23 |
-
|
24 |
-
function getData() {
|
25 |
-
if (isset($_POST["s"]) && $_POST["s"] != "") {
|
26 |
-
$meta_query = array(
|
27 |
-
'relation' => 'OR'
|
28 |
-
);
|
29 |
-
|
30 |
-
foreach($this->wpgae_post_columns as $key => $value) {
|
31 |
-
$entry = array(
|
32 |
-
'key' => $key,
|
33 |
-
'value' => $_POST["s"],
|
34 |
-
'compare' => 'LIKE'
|
35 |
-
);
|
36 |
-
array_push($meta_query, $entry);
|
37 |
-
}
|
38 |
-
|
39 |
-
$tracking_entries = get_posts(array(
|
40 |
-
'post_type' => $this->wpgae_post_type,
|
41 |
-
'post_status' => 'publish',
|
42 |
-
'numberposts' => -1,
|
43 |
-
'meta_query' => $meta_query
|
44 |
-
// 'order' => 'ASC'
|
45 |
-
));
|
46 |
-
|
47 |
-
|
48 |
-
if (isset($tracking_entries)) {
|
49 |
-
return $tracking_entries;
|
50 |
-
}
|
51 |
-
}
|
52 |
-
else {
|
53 |
-
$tracking_entries = get_posts(array(
|
54 |
-
'post_type' => $this->wpgae_post_type,
|
55 |
-
'post_status' => 'publish',
|
56 |
-
'numberposts' => -1
|
57 |
-
// 'order' => 'ASC'
|
58 |
-
));
|
59 |
-
|
60 |
-
if (isset($tracking_entries)) {
|
61 |
-
return $tracking_entries;
|
62 |
-
}
|
63 |
-
}
|
64 |
-
}
|
65 |
-
|
66 |
-
function getColumnData($post, $column_name) {
|
67 |
-
if ($column_name == "cb") {
|
68 |
-
return column_cb($post);
|
69 |
-
}
|
70 |
-
// Todo - can we optimize this so we query the post meta just once?
|
71 |
-
$post_meta = get_post_meta($post->ID);
|
72 |
-
if (isset($post_meta[$column_name]) && isset($post_meta[$column_name][0])) {
|
73 |
-
$column_data = $post_meta[$column_name][0];
|
74 |
-
$column_type = $this->wpgae_post_columns[$column_name]["type"];
|
75 |
-
if ($column_type == "checkbox") {
|
76 |
-
return $column_data ? "<i class='far fa-check-square' style='font-style: normal;font-family:FontAwesome'></i>": "";
|
77 |
-
}
|
78 |
-
return $column_data;
|
79 |
-
} else {
|
80 |
-
return "";
|
81 |
-
}
|
82 |
-
}
|
83 |
-
|
84 |
-
function column_cb($item) {
|
85 |
-
return sprintf(
|
86 |
-
'<input type="checkbox" name="wpgae_event[]" value="%s" />', $item->ID
|
87 |
-
);
|
88 |
-
}
|
89 |
-
|
90 |
-
function prepare_items() {
|
91 |
-
$columns = $this->get_columns();
|
92 |
-
$hidden = array();
|
93 |
-
$sortable = array();
|
94 |
-
$this->_column_headers = array($columns, $hidden, $sortable, $this->wpgae_first_column);
|
95 |
-
$this->items = $this->getData();
|
96 |
-
|
97 |
-
$this->process_bulk_action();
|
98 |
-
}
|
99 |
-
|
100 |
-
function column_default( $item, $column_name ) {
|
101 |
-
if (array_key_exists($column_name, $this->wpgae_post_columns)) {
|
102 |
-
return $this->getColumnData($item, $column_name);
|
103 |
-
}
|
104 |
-
return print_r( $item, true ) ; //Show the whole array for troubleshooting purposes
|
105 |
-
}
|
106 |
-
//
|
107 |
-
function get_bulk_actions() {
|
108 |
-
$actions = array(
|
109 |
-
'delete' => 'Delete'
|
110 |
-
);
|
111 |
-
return $actions;
|
112 |
-
}
|
113 |
-
|
114 |
-
function process_bulk_action() {
|
115 |
-
if ( isset( $_POST['_wpnonce'] ) && ! empty( $_POST['_wpnonce'] ) ) {
|
116 |
-
$nonce = filter_input( INPUT_POST, '_wpnonce', FILTER_SANITIZE_STRING );
|
117 |
-
$action = 'bulk-' . $this->_args['plural'];
|
118 |
-
|
119 |
-
if ( ! wp_verify_nonce( $nonce, $action ) )
|
120 |
-
wp_die( 'Nope, not this time' );
|
121 |
-
}
|
122 |
-
$action = $this->current_action();
|
123 |
-
|
124 |
-
if ($action == "delete") {
|
125 |
-
$posts = isset( $_POST['wpgae_event'] ) ? (array) $_POST['wpgae_event'] : array();
|
126 |
-
global $wpgae;
|
127 |
-
WPGAEGeneralEvent::deletePostsById($posts);
|
128 |
-
}
|
129 |
-
|
130 |
-
}
|
131 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
trunk/include/ga-events-pro-settings-default.json
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
{"link_clicks_delay":"0","gtm":"0","anonymizeip":"0","advanced":"0","script_debug_mode":"0","snippet_type":"universal","tracking_id":"","license":"","status":"","gtm_id":"","domain":"","excluded_roles":[],"nofollow_links":[],"scroll_elements":[],"click_elements":[],"youtube_videos":[],"vimeo_videos":[],"permitted_roles":["administrator"],"link_tracking":{"track_links":"0","type":"all","class":""}}
|
|
trunk/include/install.php
DELETED
@@ -1,22 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
function ga_events_install() {
|
3 |
-
|
4 |
-
// intial values for plugin options
|
5 |
-
$ga_events_options = array(
|
6 |
-
'link_clicks_delay' => 120,
|
7 |
-
'gtm' => false,
|
8 |
-
'anonymizeip' => false,
|
9 |
-
'advanced' => false,
|
10 |
-
'snippet_type' => 'universal',
|
11 |
-
'id' => '',
|
12 |
-
'status' => '',
|
13 |
-
'gtm_id' => '',
|
14 |
-
'domain' => '',
|
15 |
-
'force_snippet' => "none",
|
16 |
-
// Roles for which tracking is disabled
|
17 |
-
'scroll_track_elements' => array(),
|
18 |
-
'click_track_elements' => array(),
|
19 |
-
// Roles with permission to modify plugin options
|
20 |
-
'roles' => array( 'administrator' ),
|
21 |
-
);
|
22 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
trunk/include/notice.php
DELETED
@@ -1,166 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Notice
|
4 |
-
*
|
5 |
-
* Notice related functionality goes in this file.
|
6 |
-
*
|
7 |
-
* @since 1.0.0
|
8 |
-
* @package WP
|
9 |
-
*/
|
10 |
-
// Exit if accessed directly.
|
11 |
-
if ( ! defined( 'ABSPATH' ) ) {
|
12 |
-
exit;
|
13 |
-
}
|
14 |
-
|
15 |
-
function whatsnew_admin_notice__success() {
|
16 |
-
|
17 |
-
global $current_user;
|
18 |
-
$user_id = $current_user->ID;
|
19 |
-
$was_ignored = get_user_meta($user_id, 'wpgae_whatsnew_ignore_notice', true);
|
20 |
-
/* Check that the user hasn't already clicked to ignore the message */
|
21 |
-
if (! $was_ignored && current_user_can( 'manage_options' ) ) {
|
22 |
-
echo '<div class="notice notice-success"><p>';
|
23 |
-
printf(__('Learn about what\'s new in <strong><a href="%s">WP Google Analytics Events</a></strong>'), 'admin.php?page=wp-google-analytics-events-whatsnew&wpgae_whatsnew_notify=1');
|
24 |
-
|
25 |
-
$active_page = isset( $_GET[ 'page' ] ) ? '&page='.esc_html( $_GET[ 'page' ] ): '';
|
26 |
-
printf(__('<a href="%s" style="float:right;">Close</a>'), '?wpgae_whatsnew_notify=1'.$active_page);
|
27 |
-
|
28 |
-
|
29 |
-
echo "</p></div>";
|
30 |
-
}
|
31 |
-
}
|
32 |
-
add_action( 'admin_notices', 'whatsnew_admin_notice__success' );
|
33 |
-
|
34 |
-
function wpgae_whatsnew_notify() {
|
35 |
-
global $current_user;
|
36 |
-
$user_id = $current_user->ID;
|
37 |
-
/* If user clicks to ignore the notice, add that to their user meta */
|
38 |
-
if ( isset($_GET['wpgae_whatsnew_notify']) && '1' == $_GET['wpgae_whatsnew_notify'] ) {
|
39 |
-
update_user_meta($user_id, 'wpgae_whatsnew_ignore_notice', true);
|
40 |
-
}
|
41 |
-
}
|
42 |
-
add_action('admin_init', 'wpgae_whatsnew_notify');
|
43 |
-
|
44 |
-
|
45 |
-
/*
|
46 |
-
Upon plugin activation, reset 'wpgae_whatsnew_ignore_notice' for all admin users.
|
47 |
-
* This functions was called inside ga_events_install funtion.
|
48 |
-
*/
|
49 |
-
function wpgae_reactivate_notice(){
|
50 |
-
|
51 |
-
$args = array(
|
52 |
-
'role' => 'administrator'
|
53 |
-
);
|
54 |
-
|
55 |
-
$admins = get_users($args);
|
56 |
-
|
57 |
-
foreach ($admins as $user) {
|
58 |
-
update_user_meta($user->ID, 'wpgae_whatsnew_ignore_notice', false);
|
59 |
-
delete_user_meta( $user->ID, 'ga_events_review_dismiss', "true" );
|
60 |
-
|
61 |
-
}
|
62 |
-
}
|
63 |
-
|
64 |
-
if ( ! function_exists( 'ga_events_review_notice' ) ) {
|
65 |
-
// Add an admin notice.
|
66 |
-
add_action( 'admin_notices', 'ga_events_review_notice' );
|
67 |
-
|
68 |
-
/**
|
69 |
-
* Admin Notice to Encourage a Review or Donation.
|
70 |
-
*
|
71 |
-
* @author Matt Cromwell
|
72 |
-
* @version 1.0.0
|
73 |
-
*/
|
74 |
-
function ga_events_review_notice() {
|
75 |
-
// Define your Plugin name, review url, and donation url.
|
76 |
-
$plugin_name = 'WP Google Analytics Events';
|
77 |
-
$review_url = 'https://wordpress.org/support/view/plugin-reviews/wp-google-analytics-events';
|
78 |
-
$donate_url = 'https://wpflow.com/upgrade';
|
79 |
-
// Get current user.
|
80 |
-
global $current_user, $pagenow ;
|
81 |
-
$user_id = $current_user->ID;
|
82 |
-
// Get today's timestamp.
|
83 |
-
$today = mktime( 0, 0, 0, date('m') , date('d'), date('Y') );
|
84 |
-
$actdate = get_option( 'ga_events_activation_date', false );
|
85 |
-
$installed = ( ! empty( $actdate ) ? $actdate : '999999999999999' );
|
86 |
-
if ( $installed <= $today ) {
|
87 |
-
// Make sure we're on the plugins page.
|
88 |
-
// If the user hasn't already dismissed our alert,
|
89 |
-
// Output the activation banner.
|
90 |
-
$nag_admin_dismiss_url = 'plugins.php?ga_events_review_dismiss=0';
|
91 |
-
$user_meta = get_user_meta( $user_id, 'ga_events_review_dismiss' );
|
92 |
-
if ( empty($user_meta) && current_user_can( 'manage_options' ) ) {
|
93 |
-
?>
|
94 |
-
<div class="update-nag">
|
95 |
-
|
96 |
-
<style>
|
97 |
-
div.review {
|
98 |
-
position: relative;
|
99 |
-
margin-left: 35px;
|
100 |
-
height: 80px;
|
101 |
-
display:block;
|
102 |
-
}
|
103 |
-
div.review span.ga-events-icon {
|
104 |
-
color: white;
|
105 |
-
position: absolute;
|
106 |
-
left: -30px;
|
107 |
-
/*padding: 9px;*/
|
108 |
-
/*top: -8px;*/
|
109 |
-
}
|
110 |
-
div.review strong {
|
111 |
-
color: #66BB6A;
|
112 |
-
}
|
113 |
-
div.review a.dismiss {
|
114 |
-
float: right;
|
115 |
-
text-decoration: none;
|
116 |
-
color: #000000;
|
117 |
-
}
|
118 |
-
.review a {
|
119 |
-
color:#ED494D;
|
120 |
-
}
|
121 |
-
.ga-events-notice-text {
|
122 |
-
display: inline-block;
|
123 |
-
margin-left: 170px;
|
124 |
-
margin-top: 24px;
|
125 |
-
}
|
126 |
-
|
127 |
-
</style>
|
128 |
-
<?php
|
129 |
-
// For testing purposes
|
130 |
-
//echo '<p>Today = ' . $today . '</p>';
|
131 |
-
//echo '<p>Installed = ' . $installed . '</p>';
|
132 |
-
?>
|
133 |
-
|
134 |
-
<div class="review">
|
135 |
-
<span class="ga-events-icon">
|
136 |
-
<img src="<?php echo plugins_url( 'images/WPGAE_Logo-177x78.png', dirname(__FILE__)) ?>">
|
137 |
-
</span>
|
138 |
-
<span class="ga-events-notice-text">
|
139 |
-
<?php echo wp_kses( sprintf( __( 'Thank you for using <strong>' . $plugin_name . '</strong>? We would love to hear about <a href="https://wpflow.com/contact">your experience</a> with the plugin. Need more features? <a href="https://wpflow.com/upgrade/?utm_source=wpadmin&utm_medium=banner&utm_campaign=anotice" target="_blank">Upgrade Now</a> to unlock.', 'ga_events_text' ), esc_url( $donate_url ), esc_url( $review_url ) ), array( 'strong' => array(), 'a' => array( 'href' => array(), 'target' => array() ) ) ); ?>
|
140 |
-
</span>
|
141 |
-
<a href="<?php echo admin_url( $nag_admin_dismiss_url ); ?>" class="dismiss"><span class="dashicons dashicons-dismiss"></span></a>
|
142 |
-
</div>
|
143 |
-
|
144 |
-
</div>
|
145 |
-
|
146 |
-
<?php }
|
147 |
-
}
|
148 |
-
}
|
149 |
-
}
|
150 |
-
if ( function_exists( 'ga_events_ignore_review_notice' ) ) {
|
151 |
-
// Function to force the Review Admin Notice to stay dismissed correctly.
|
152 |
-
add_action('admin_init', 'ga_events_ignore_review_notice');
|
153 |
-
/**
|
154 |
-
* Ignore review notice.
|
155 |
-
*
|
156 |
-
* @since 1.0.0
|
157 |
-
*/
|
158 |
-
}
|
159 |
-
function ga_events_ignore_review_notice() {
|
160 |
-
if ( isset( $_GET[ 'ga_events_review_dismiss' ] ) && '0' == $_GET[ 'ga_events_review_dismiss' ] ) {
|
161 |
-
// Get the global user.
|
162 |
-
global $current_user;
|
163 |
-
$user_id = $current_user->ID;
|
164 |
-
add_user_meta( $user_id, 'ga_events_review_dismiss', 'true', true );
|
165 |
-
}
|
166 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
trunk/include/saved-snippets.php
DELETED
@@ -1,54 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
function ga_events_get_settings(){
|
6 |
-
$options = get_option('ga_events_options');
|
7 |
-
$current = json_encode($options);
|
8 |
-
|
9 |
-
return $current;
|
10 |
-
}
|
11 |
-
|
12 |
-
/*
|
13 |
-
* Define shortcode for scroll events
|
14 |
-
*/
|
15 |
-
|
16 |
-
function ga_events_short_scroll( $attr, $content ) {
|
17 |
-
|
18 |
-
$cat = isset( $attr[ 'cat' ] ) ? $attr[ 'cat' ] : 'Default Category';
|
19 |
-
$action = isset( $attr[ 'action' ] ) ? $attr[ 'action' ] : 'Default Action';
|
20 |
-
$label = isset( $attr[ 'label' ] ) ? $attr[ 'label' ] : 'Default Label';
|
21 |
-
$bounce = isset( $attr[ 'bounce' ] ) ? $attr[ 'bounce' ] : 'false';
|
22 |
-
$evalue = isset( $attr[ 'evalue' ] ) ? $attr[ 'evalue' ] : '';
|
23 |
-
|
24 |
-
if ( ! empty( $content ) ) {
|
25 |
-
$new_content = add_class_to_element( $content, 'scrollevent', $cat, $action, $label, $bounce, $evalue );
|
26 |
-
return $new_content;
|
27 |
-
}
|
28 |
-
}
|
29 |
-
|
30 |
-
add_shortcode( 'scrollevent', 'ga_events_short_scroll' );
|
31 |
-
|
32 |
-
/*
|
33 |
-
* Define shortcode for click events
|
34 |
-
*/
|
35 |
-
|
36 |
-
function ga_events_short_click( $attr, $content ) {
|
37 |
-
|
38 |
-
$cat = isset( $attr[ 'cat' ] ) ? $attr[ 'cat' ] : 'Default Category';
|
39 |
-
$action = isset( $attr[ 'action' ] ) ? $attr[ 'action' ] : 'Default Action';
|
40 |
-
$label = isset( $attr[ 'label' ] ) ? $attr[ 'label' ] : 'Default Label';
|
41 |
-
$bounce = isset( $attr[ 'bounce' ] ) ? $attr[ 'bounce' ] : 'false';
|
42 |
-
$evalue = isset( $attr[ 'evalue' ] ) ? $attr[ 'evalue' ] : '';
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
if ( ! empty( $content ) ) {
|
47 |
-
$new_content = add_class_to_element( $content, 'clickevent', $cat, $action, $label, $bounce, $evalue );
|
48 |
-
return $new_content;
|
49 |
-
}
|
50 |
-
}
|
51 |
-
|
52 |
-
add_shortcode( 'clickevent', 'ga_events_short_click' );
|
53 |
-
|
54 |
-
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
trunk/js/admin.js
DELETED
@@ -1,180 +0,0 @@
|
|
1 |
-
/**
|
2 |
-
* Created with IntelliJ IDEA.
|
3 |
-
* User: yuval
|
4 |
-
* Date: 2/25/15
|
5 |
-
* Time: 1:08 PM
|
6 |
-
* To change this template use File | Settings | File Templates.
|
7 |
-
*/
|
8 |
-
|
9 |
-
jQuery(document).ready(function($){
|
10 |
-
|
11 |
-
var snippet_type = $('#snippet_type');
|
12 |
-
var anonymizeip = $('#anonymizeip');
|
13 |
-
var anonymizeip_checkbox = $('#anonymizeip')[0];
|
14 |
-
var gtm_id = $('#gtm_id');
|
15 |
-
var script_debug_mode_input = $('#script_debug_mode');
|
16 |
-
|
17 |
-
// Helpers to avoid repetition
|
18 |
-
function disable_element(el){
|
19 |
-
el.attr("disabled", true);
|
20 |
-
}
|
21 |
-
|
22 |
-
function enable_element(el){
|
23 |
-
el.removeAttr("disabled");
|
24 |
-
}
|
25 |
-
|
26 |
-
function set_checked_value(el, bool){
|
27 |
-
el.checked = bool;
|
28 |
-
}
|
29 |
-
|
30 |
-
// set up tooltips
|
31 |
-
$.widget.bridge('gaetooltip', $.ui.tooltip);
|
32 |
-
|
33 |
-
$('.ga-tooltip').gaetooltip({position: {
|
34 |
-
my: "left bottom-10",
|
35 |
-
at: "right top",
|
36 |
-
collision: "none"
|
37 |
-
}
|
38 |
-
})
|
39 |
-
|
40 |
-
$('#advanced:checkbox').on('change', function (){
|
41 |
-
var checked = $(this).is(':checked');
|
42 |
-
if (checked){
|
43 |
-
$('#forcesnopperwrap').show();
|
44 |
-
$('#wpflow_gs_reports_section').show();
|
45 |
-
} else {
|
46 |
-
$('#forcesnopperwrap').hide();
|
47 |
-
$('#wpflow_gs_reports_section').hide();
|
48 |
-
}
|
49 |
-
});
|
50 |
-
|
51 |
-
$('.btn_upload').on('click', function (e){
|
52 |
-
$('.settings_content').slideDown();
|
53 |
-
e.preventDefault();
|
54 |
-
});
|
55 |
-
|
56 |
-
$('.btn_close').on('click', function (e){
|
57 |
-
$('.settings_content').slideUp();
|
58 |
-
e.preventDefault();
|
59 |
-
});
|
60 |
-
|
61 |
-
$('.popup').on('click', function (e){
|
62 |
-
$('.popup').slideUp();
|
63 |
-
e.preventDefault();
|
64 |
-
});
|
65 |
-
|
66 |
-
|
67 |
-
/*
|
68 |
-
* The following section deals with the snippet type options in the admin UI
|
69 |
-
*/
|
70 |
-
|
71 |
-
// If page loads and snippet type is 'none' or 'gtm', disable anonymize IP checkbox
|
72 |
-
if (snippet_type.val()=== 'none' || snippet_type.val()=== 'gtm'){
|
73 |
-
set_checked_value(anonymizeip_checkbox, false);
|
74 |
-
disable_element(anonymizeip);
|
75 |
-
}
|
76 |
-
|
77 |
-
// If page loads and snippet_type is 'gtm', enable gtm_id
|
78 |
-
if (snippet_type.val()=== 'gtm'){
|
79 |
-
enable_element(gtm_id);
|
80 |
-
} else {
|
81 |
-
disable_element(gtm_id);
|
82 |
-
}
|
83 |
-
|
84 |
-
// When the snippet type option is changed
|
85 |
-
snippet_type.on('change', function (){
|
86 |
-
// Store current value
|
87 |
-
var val = $(this).val();
|
88 |
-
|
89 |
-
// If 'none' is selected, disable anonymize zip checkbox and ?
|
90 |
-
if (val === 'none' || val === 'gtm'){
|
91 |
-
set_checked_value(anonymizeip_checkbox, false);
|
92 |
-
disable_element(anonymizeip);
|
93 |
-
} else {
|
94 |
-
enable_element(anonymizeip);
|
95 |
-
}
|
96 |
-
|
97 |
-
// If gtm snippet is selected
|
98 |
-
if (val === 'gtm'){
|
99 |
-
enable_element(gtm_id);
|
100 |
-
} else {
|
101 |
-
disable_element(gtm_id);
|
102 |
-
}
|
103 |
-
});
|
104 |
-
|
105 |
-
// Snippet section ends
|
106 |
-
|
107 |
-
// The following section deals with the import settings functinality in
|
108 |
-
// general settings
|
109 |
-
$('.btn_upload').on('click', function (e){
|
110 |
-
$('.settings_content').slideDown();
|
111 |
-
e.preventDefault();
|
112 |
-
});
|
113 |
-
|
114 |
-
$('.btn_close').on('click', function (e){
|
115 |
-
$('.settings_content').slideUp();
|
116 |
-
e.preventDefault();
|
117 |
-
});
|
118 |
-
|
119 |
-
$('.popup').on('click', function (e){
|
120 |
-
$('.popup').slideUp();
|
121 |
-
e.preventDefault();
|
122 |
-
});
|
123 |
-
|
124 |
-
// import section ends
|
125 |
-
|
126 |
-
// GA client Signout section
|
127 |
-
|
128 |
-
// If page loads and there is no gaAccessToken then disable signout button.
|
129 |
-
if (!sessionStorage.getItem('gaAccessToken')) {
|
130 |
-
disable_element($('.btn_signout_ga'));
|
131 |
-
}
|
132 |
-
|
133 |
-
|
134 |
-
// Disable checkbox for admin options management permission
|
135 |
-
$('input[name="ga_events_options[permitted_roles][]"][value="administrator"]').css({'pointer-events': 'none',
|
136 |
-
'opacity': 0.5}).prop('checked', true);
|
137 |
-
|
138 |
-
$('.divs-istracktime:checkbox').on('change', function (){
|
139 |
-
var checkbox = $(this);
|
140 |
-
var checked = checkbox.is(':checked');
|
141 |
-
var index = checkbox.data('track');
|
142 |
-
var trackValue = "#track-elem" + index;
|
143 |
-
var eventValue = "#eventValue" + index;
|
144 |
-
if (checked){
|
145 |
-
$(trackValue).show();
|
146 |
-
$(eventValue).attr("disabled", true);
|
147 |
-
} else {
|
148 |
-
$(trackValue).hide();
|
149 |
-
$(eventValue).removeAttr("disabled");
|
150 |
-
}
|
151 |
-
|
152 |
-
});
|
153 |
-
|
154 |
-
$('#empty-istracktime:checkbox').on('change', function (){
|
155 |
-
var checkbox = $(this);
|
156 |
-
var checked = checkbox.is(':checked');
|
157 |
-
var trackValue = "#empty-trackelem";
|
158 |
-
var eventValue = "#empty-eventValue";
|
159 |
-
if (checked){
|
160 |
-
$(trackValue).show();
|
161 |
-
$(eventValue).attr("disabled", true);
|
162 |
-
} else {
|
163 |
-
$(trackValue).hide();
|
164 |
-
$(eventValue).removeAttr("disabled");
|
165 |
-
}
|
166 |
-
|
167 |
-
});
|
168 |
-
|
169 |
-
$('.divs-istracktime').trigger('change');
|
170 |
-
|
171 |
-
function isUrlValid(url){
|
172 |
-
return /^(https?|s?ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(url);
|
173 |
-
}
|
174 |
-
|
175 |
-
|
176 |
-
jQuery('body').on('click','a[href="admin.php?page=wp-google-analytics-events-upgrade"]', function (e) {
|
177 |
-
e.preventDefault();
|
178 |
-
window.open('https://wpflow.com/upgrade/?utm_source=wpadmin&utm_medium=banner&utm_campaign=nav', '_blank');
|
179 |
-
});
|
180 |
-
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
trunk/js/ajax-settings.js
DELETED
@@ -1,138 +0,0 @@
|
|
1 |
-
/*global
|
2 |
-
$, wpflow_ajax, jslint, alert
|
3 |
-
*/
|
4 |
-
var gaeAjax = ( function ( $ ) {
|
5 |
-
|
6 |
-
$(document).ready( function ( $ ) {
|
7 |
-
|
8 |
-
// Handle twitter bootstrap modals
|
9 |
-
if (typeof $.fn.modal.noConflict !== "undefined") {
|
10 |
-
var bootstrapModal = $.fn.modal.noConflict();
|
11 |
-
}
|
12 |
-
|
13 |
-
// Form Submit
|
14 |
-
$(".wpgae-event-form").on('submit', submitEventForm);
|
15 |
-
// Populate and Show the edit event modal
|
16 |
-
$(".ga_main .edit a").on('click', openAndPoplulateEventModal);
|
17 |
-
// Populate and Show the Delete event modal
|
18 |
-
$(".ga_main .delete a").on('click', openAndPoplulateEventModal);
|
19 |
-
$("#ga-save-view").on('click', saveGAView);
|
20 |
-
$('.btn_signout_ga').on('click', signOutFromGoogleAnalytics);
|
21 |
-
|
22 |
-
$('.deactivate a[href*="wp-google-analytics-events"], #wpgae-modal-cancel a').on('click', function(e) {
|
23 |
-
e.preventDefault();
|
24 |
-
$("#wpgae-modal-content, #wpgae-modal-background").toggleClass("active");
|
25 |
-
$("#wpgae-just-deactivate").attr("href", this.href);
|
26 |
-
});
|
27 |
-
|
28 |
-
$('#wpgae-feedback-form').on('submit', function (e) {
|
29 |
-
e.preventDefault(); // avoid to execute the actual submit of the form.
|
30 |
-
var form = $(this);
|
31 |
-
|
32 |
-
$.ajax({
|
33 |
-
type: "POST",
|
34 |
-
url: wpflow_ajax.ajax_url,
|
35 |
-
data: form.serialize(), // serializes the form's elements.
|
36 |
-
success: function(data)
|
37 |
-
{
|
38 |
-
window.location = $("#wpgae-just-deactivate").attr("href");
|
39 |
-
}
|
40 |
-
});
|
41 |
-
|
42 |
-
});
|
43 |
-
|
44 |
-
});
|
45 |
-
|
46 |
-
|
47 |
-
function openAndPoplulateEventModal(e) {
|
48 |
-
e.preventDefault();
|
49 |
-
var id_post = $(this).attr('id');
|
50 |
-
var modalId = "#" + $(this).data("action");
|
51 |
-
$.ajax({
|
52 |
-
type: 'POST',
|
53 |
-
url: wpflow_ajax.ajax_url,
|
54 |
-
data: {
|
55 |
-
'post_id': id_post,
|
56 |
-
'action': 'wpflow_get_event_json'
|
57 |
-
},
|
58 |
-
success: function (result) {
|
59 |
-
$(modalId).modal();
|
60 |
-
populateMetaEditForm(modalId, result.meta);
|
61 |
-
$(modalId + " #event_id").val(id_post);
|
62 |
-
},
|
63 |
-
error: function () {
|
64 |
-
alert("Error updating event");
|
65 |
-
}
|
66 |
-
});
|
67 |
-
}
|
68 |
-
|
69 |
-
function saveGAView(e) {
|
70 |
-
var nonce = $(this).data("nonce");
|
71 |
-
$.ajax({
|
72 |
-
type: "post", url: wpflow_ajax.ajax_url, data: {
|
73 |
-
'viewId': $(this).val(), 'action': 'wpflow_save_view', 'ajax_nonce': nonce,
|
74 |
-
}, success: function (data) {
|
75 |
-
window.location.reload();
|
76 |
-
}
|
77 |
-
});
|
78 |
-
}
|
79 |
-
|
80 |
-
function signOutFromGoogleAnalytics(e) {
|
81 |
-
e.preventDefault();
|
82 |
-
var nonce = $(this).data("delete-nonce");
|
83 |
-
$.ajax({
|
84 |
-
type: "post", url: wpflow_ajax.ajax_url, data: {
|
85 |
-
'viewId': $(this).val(), 'action': 'wpflow_ga_disconnect', 'ajax_nonce': nonce,
|
86 |
-
},
|
87 |
-
success: function (data) {
|
88 |
-
var redirect_url = btoa( window.location.protocol+ "//" + window.location.host+window.location.pathname+window.location.search);
|
89 |
-
var accessToken = btoa(sessionStorage.getItem('gaAccessToken'));
|
90 |
-
sessionStorage.removeItem('gaAccessToken');
|
91 |
-
sessionStorage.removeItem('gaTokenCreated');
|
92 |
-
// var encodedRedirectUrl = encodeURIComponent(redirect_url);
|
93 |
-
// var encodedAccessToken = encodeURIComponent(accessToken);
|
94 |
-
window.location = 'https://auth.wpflow.com/ga/sign_out/?redirectUrl=' + redirect_url + '&accessToken=' + accessToken;
|
95 |
-
}
|
96 |
-
});
|
97 |
-
}
|
98 |
-
|
99 |
-
function submitEventForm(e) {
|
100 |
-
e.preventDefault();
|
101 |
-
var form = $(this);
|
102 |
-
|
103 |
-
$.ajax({
|
104 |
-
type: "post",
|
105 |
-
url: wpflow_ajax.ajax_url,
|
106 |
-
data: form.serialize(),
|
107 |
-
success: function (data) {
|
108 |
-
window.location.reload();
|
109 |
-
}
|
110 |
-
});
|
111 |
-
}
|
112 |
-
|
113 |
-
function populateMetaEditForm(modal, meta) {
|
114 |
-
if (typeof meta !== "undefined") {
|
115 |
-
for (var input in meta) {
|
116 |
-
if (meta.hasOwnProperty(input)) {
|
117 |
-
if ($(modal + " #" + input).is(":checkbox")) {
|
118 |
-
if (meta[input][0] === "true") {
|
119 |
-
$(modal + " #" + input).attr("checked", true);
|
120 |
-
} else {
|
121 |
-
$(modal + " #" + input).removeAttr("checked", false);
|
122 |
-
}
|
123 |
-
} else {
|
124 |
-
$(modal + " #" + input).val(meta[input][0]);
|
125 |
-
}
|
126 |
-
}
|
127 |
-
}
|
128 |
-
}
|
129 |
-
}
|
130 |
-
|
131 |
-
} )( jQuery );
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
trunk/js/dist/admin-scripts-libs-min.js
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
!function(t,e){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(!t.document)throw new Error("jQuery requires a window with a document");return e(t)}:e(t)}("undefined"!=typeof window?window:this,function(t,e){"use strict";var i=[],n=Object.getPrototypeOf,s=i.slice,o=i.flat?function(t){return i.flat.call(t)}:function(t){return i.concat.apply([],t)},r=i.push,a=i.indexOf,l={},u=l.toString,c=l.hasOwnProperty,h=c.toString,d=h.call(Object),p={},f=function(t){return"function"==typeof t&&"number"!=typeof t.nodeType&&"function"!=typeof t.item},g=function(t){return null!=t&&t===t.window},m=t.document,v={type:!0,src:!0,nonce:!0,noModule:!0};function y(t,e,i){var n,s,o=(i=i||m).createElement("script");if(o.text=t,e)for(n in v)(s=e[n]||e.getAttribute&&e.getAttribute(n))&&o.setAttribute(n,s);i.head.appendChild(o).parentNode.removeChild(o)}function _(t){return null==t?t+"":"object"==typeof t||"function"==typeof t?l[u.call(t)]||"object":typeof t}var b=function(t,e){return new b.fn.init(t,e)};function w(t){var e=!!t&&"length"in t&&t.length,i=_(t);return!f(t)&&!g(t)&&("array"===i||0===e||"number"==typeof e&&e>0&&e-1 in t)}b.fn=b.prototype={jquery:"3.6.0",constructor:b,length:0,toArray:function(){return s.call(this)},get:function(t){return null==t?s.call(this):t<0?this[t+this.length]:this[t]},pushStack:function(t){var e=b.merge(this.constructor(),t);return e.prevObject=this,e},each:function(t){return b.each(this,t)},map:function(t){return this.pushStack(b.map(this,function(e,i){return t.call(e,i,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(b.grep(this,function(t,e){return(e+1)%2}))},odd:function(){return this.pushStack(b.grep(this,function(t,e){return e%2}))},eq:function(t){var e=this.length,i=+t+(t<0?e:0);return this.pushStack(i>=0&&i<e?[this[i]]:[])},end:function(){return this.prevObject||this.constructor()},push:r,sort:i.sort,splice:i.splice},b.extend=b.fn.extend=function(){var t,e,i,n,s,o,r=arguments[0]||{},a=1,l=arguments.length,u=!1;for("boolean"==typeof r&&(u=r,r=arguments[a]||{},a++),"object"==typeof r||f(r)||(r={}),a===l&&(r=this,a--);a<l;a++)if(null!=(t=arguments[a]))for(e in t)n=t[e],"__proto__"!==e&&r!==n&&(u&&n&&(b.isPlainObject(n)||(s=Array.isArray(n)))?(i=r[e],o=s&&!Array.isArray(i)?[]:s||b.isPlainObject(i)?i:{},s=!1,r[e]=b.extend(u,o,n)):void 0!==n&&(r[e]=n));return r},b.extend({expando:"jQuery"+("3.6.0"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(t){throw new Error(t)},noop:function(){},isPlainObject:function(t){var e,i;return!(!t||"[object Object]"!==u.call(t))&&(!(e=n(t))||"function"==typeof(i=c.call(e,"constructor")&&e.constructor)&&h.call(i)===d)},isEmptyObject:function(t){var e;for(e in t)return!1;return!0},globalEval:function(t,e,i){y(t,{nonce:e&&e.nonce},i)},each:function(t,e){var i,n=0;if(w(t))for(i=t.length;n<i&&!1!==e.call(t[n],n,t[n]);n++);else for(n in t)if(!1===e.call(t[n],n,t[n]))break;return t},makeArray:function(t,e){var i=e||[];return null!=t&&(w(Object(t))?b.merge(i,"string"==typeof t?[t]:t):r.call(i,t)),i},inArray:function(t,e,i){return null==e?-1:a.call(e,t,i)},merge:function(t,e){for(var i=+e.length,n=0,s=t.length;n<i;n++)t[s++]=e[n];return t.length=s,t},grep:function(t,e,i){for(var n=[],s=0,o=t.length,r=!i;s<o;s++)!e(t[s],s)!==r&&n.push(t[s]);return n},map:function(t,e,i){var n,s,r=0,a=[];if(w(t))for(n=t.length;r<n;r++)null!=(s=e(t[r],r,i))&&a.push(s);else for(r in t)null!=(s=e(t[r],r,i))&&a.push(s);return o(a)},guid:1,support:p}),"function"==typeof Symbol&&(b.fn[Symbol.iterator]=i[Symbol.iterator]),b.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(t,e){l["[object "+e+"]"]=e.toLowerCase()});var x=function(t){var e,i,n,s,o,r,a,l,u,c,h,d,p,f,g,m,v,y,_,b="sizzle"+1*new Date,w=t.document,x=0,k=0,C=lt(),S=lt(),D=lt(),T=lt(),M=function(t,e){return t===e&&(h=!0),0},j={}.hasOwnProperty,A=[],O=A.pop,E=A.push,P=A.push,I=A.slice,N=function(t,e){for(var i=0,n=t.length;i<n;i++)if(t[i]===e)return i;return-1},F="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",R="(?:\\\\[\\da-fA-F]{1,6}"+L+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",H="\\["+L+"*("+R+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+L+"*\\]",z=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+H+")*)|.*)\\)|)",W=new RegExp(L+"+","g"),Y=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),U=new RegExp("^"+L+"*,"+L+"*"),q=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),B=new RegExp(L+"|>"),V=new RegExp(z),$=new RegExp("^"+R+"$"),G={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+H),PSEUDO:new RegExp("^"+z),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+F+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},K=/HTML$/i,X=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,Q=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,tt=/[+~]/,et=new RegExp("\\\\[\\da-fA-F]{1,6}"+L+"?|\\\\([^\\r\\n\\f])","g"),it=function(t,e){var i="0x"+t.slice(1)-65536;return e||(i<0?String.fromCharCode(i+65536):String.fromCharCode(i>>10|55296,1023&i|56320))},nt=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,st=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},ot=function(){d()},rt=bt(function(t){return!0===t.disabled&&"fieldset"===t.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{P.apply(A=I.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(t){P={apply:A.length?function(t,e){E.apply(t,I.call(e))}:function(t,e){for(var i=t.length,n=0;t[i++]=e[n++];);t.length=i-1}}}function at(t,e,n,s){var o,a,u,c,h,f,v,y=e&&e.ownerDocument,w=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==w&&9!==w&&11!==w)return n;if(!s&&(d(e),e=e||p,g)){if(11!==w&&(h=Q.exec(t)))if(o=h[1]){if(9===w){if(!(u=e.getElementById(o)))return n;if(u.id===o)return n.push(u),n}else if(y&&(u=y.getElementById(o))&&_(e,u)&&u.id===o)return n.push(u),n}else{if(h[2])return P.apply(n,e.getElementsByTagName(t)),n;if((o=h[3])&&i.getElementsByClassName&&e.getElementsByClassName)return P.apply(n,e.getElementsByClassName(o)),n}if(i.qsa&&!T[t+" "]&&(!m||!m.test(t))&&(1!==w||"object"!==e.nodeName.toLowerCase())){if(v=t,y=e,1===w&&(B.test(t)||q.test(t))){for((y=tt.test(t)&&vt(e.parentNode)||e)===e&&i.scope||((c=e.getAttribute("id"))?c=c.replace(nt,st):e.setAttribute("id",c=b)),a=(f=r(t)).length;a--;)f[a]=(c?"#"+c:":scope")+" "+_t(f[a]);v=f.join(",")}try{return P.apply(n,y.querySelectorAll(v)),n}catch(e){T(t,!0)}finally{c===b&&e.removeAttribute("id")}}}return l(t.replace(Y,"$1"),e,n,s)}function lt(){var t=[];return function e(i,s){return t.push(i+" ")>n.cacheLength&&delete e[t.shift()],e[i+" "]=s}}function ut(t){return t[b]=!0,t}function ct(t){var e=p.createElement("fieldset");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e),e=null}}function ht(t,e){for(var i=t.split("|"),s=i.length;s--;)n.attrHandle[i[s]]=e}function dt(t,e){var i=e&&t,n=i&&1===t.nodeType&&1===e.nodeType&&t.sourceIndex-e.sourceIndex;if(n)return n;if(i)for(;i=i.nextSibling;)if(i===e)return-1;return t?1:-1}function pt(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function ft(t){return function(e){var i=e.nodeName.toLowerCase();return("input"===i||"button"===i)&&e.type===t}}function gt(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&rt(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function mt(t){return ut(function(e){return e=+e,ut(function(i,n){for(var s,o=t([],i.length,e),r=o.length;r--;)i[s=o[r]]&&(i[s]=!(n[s]=i[s]))})})}function vt(t){return t&&void 0!==t.getElementsByTagName&&t}for(e in i=at.support={},o=at.isXML=function(t){var e=t&&t.namespaceURI,i=t&&(t.ownerDocument||t).documentElement;return!K.test(e||i&&i.nodeName||"HTML")},d=at.setDocument=function(t){var e,s,r=t?t.ownerDocument||t:w;return r!=p&&9===r.nodeType&&r.documentElement?(f=(p=r).documentElement,g=!o(p),w!=p&&(s=p.defaultView)&&s.top!==s&&(s.addEventListener?s.addEventListener("unload",ot,!1):s.attachEvent&&s.attachEvent("onunload",ot)),i.scope=ct(function(t){return f.appendChild(t).appendChild(p.createElement("div")),void 0!==t.querySelectorAll&&!t.querySelectorAll(":scope fieldset div").length}),i.attributes=ct(function(t){return t.className="i",!t.getAttribute("className")}),i.getElementsByTagName=ct(function(t){return t.appendChild(p.createComment("")),!t.getElementsByTagName("*").length}),i.getElementsByClassName=Z.test(p.getElementsByClassName),i.getById=ct(function(t){return f.appendChild(t).id=b,!p.getElementsByName||!p.getElementsByName(b).length}),i.getById?(n.filter.ID=function(t){var e=t.replace(et,it);return function(t){return t.getAttribute("id")===e}},n.find.ID=function(t,e){if(void 0!==e.getElementById&&g){var i=e.getElementById(t);return i?[i]:[]}}):(n.filter.ID=function(t){var e=t.replace(et,it);return function(t){var i=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return i&&i.value===e}},n.find.ID=function(t,e){if(void 0!==e.getElementById&&g){var i,n,s,o=e.getElementById(t);if(o){if((i=o.getAttributeNode("id"))&&i.value===t)return[o];for(s=e.getElementsByName(t),n=0;o=s[n++];)if((i=o.getAttributeNode("id"))&&i.value===t)return[o]}return[]}}),n.find.TAG=i.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):i.qsa?e.querySelectorAll(t):void 0}:function(t,e){var i,n=[],s=0,o=e.getElementsByTagName(t);if("*"===t){for(;i=o[s++];)1===i.nodeType&&n.push(i);return n}return o},n.find.CLASS=i.getElementsByClassName&&function(t,e){if(void 0!==e.getElementsByClassName&&g)return e.getElementsByClassName(t)},v=[],m=[],(i.qsa=Z.test(p.querySelectorAll))&&(ct(function(t){var e;f.appendChild(t).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",t.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+L+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||m.push("\\["+L+"*(?:value|"+F+")"),t.querySelectorAll("[id~="+b+"-]").length||m.push("~="),(e=p.createElement("input")).setAttribute("name",""),t.appendChild(e),t.querySelectorAll("[name='']").length||m.push("\\["+L+"*name"+L+"*="+L+"*(?:''|\"\")"),t.querySelectorAll(":checked").length||m.push(":checked"),t.querySelectorAll("a#"+b+"+*").length||m.push(".#.+[+~]"),t.querySelectorAll("\\\f"),m.push("[\\r\\n\\f]")}),ct(function(t){t.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var e=p.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&m.push("name"+L+"*[*^$|!~]?="),2!==t.querySelectorAll(":enabled").length&&m.push(":enabled",":disabled"),f.appendChild(t).disabled=!0,2!==t.querySelectorAll(":disabled").length&&m.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),m.push(",.*:")})),(i.matchesSelector=Z.test(y=f.matches||f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&ct(function(t){i.disconnectedMatch=y.call(t,"*"),y.call(t,"[s!='']:x"),v.push("!=",z)}),m=m.length&&new RegExp(m.join("|")),v=v.length&&new RegExp(v.join("|")),e=Z.test(f.compareDocumentPosition),_=e||Z.test(f.contains)?function(t,e){var i=9===t.nodeType?t.documentElement:t,n=e&&e.parentNode;return t===n||!(!n||1!==n.nodeType||!(i.contains?i.contains(n):t.compareDocumentPosition&&16&t.compareDocumentPosition(n)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},M=e?function(t,e){if(t===e)return h=!0,0;var n=!t.compareDocumentPosition-!e.compareDocumentPosition;return n||(1&(n=(t.ownerDocument||t)==(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!i.sortDetached&&e.compareDocumentPosition(t)===n?t==p||t.ownerDocument==w&&_(w,t)?-1:e==p||e.ownerDocument==w&&_(w,e)?1:c?N(c,t)-N(c,e):0:4&n?-1:1)}:function(t,e){if(t===e)return h=!0,0;var i,n=0,s=t.parentNode,o=e.parentNode,r=[t],a=[e];if(!s||!o)return t==p?-1:e==p?1:s?-1:o?1:c?N(c,t)-N(c,e):0;if(s===o)return dt(t,e);for(i=t;i=i.parentNode;)r.unshift(i);for(i=e;i=i.parentNode;)a.unshift(i);for(;r[n]===a[n];)n++;return n?dt(r[n],a[n]):r[n]==w?-1:a[n]==w?1:0},p):p},at.matches=function(t,e){return at(t,null,null,e)},at.matchesSelector=function(t,e){if(d(t),i.matchesSelector&&g&&!T[e+" "]&&(!v||!v.test(e))&&(!m||!m.test(e)))try{var n=y.call(t,e);if(n||i.disconnectedMatch||t.document&&11!==t.document.nodeType)return n}catch(t){T(e,!0)}return at(e,p,null,[t]).length>0},at.contains=function(t,e){return(t.ownerDocument||t)!=p&&d(t),_(t,e)},at.attr=function(t,e){(t.ownerDocument||t)!=p&&d(t);var s=n.attrHandle[e.toLowerCase()],o=s&&j.call(n.attrHandle,e.toLowerCase())?s(t,e,!g):void 0;return void 0!==o?o:i.attributes||!g?t.getAttribute(e):(o=t.getAttributeNode(e))&&o.specified?o.value:null},at.escape=function(t){return(t+"").replace(nt,st)},at.error=function(t){throw new Error("Syntax error, unrecognized expression: "+t)},at.uniqueSort=function(t){var e,n=[],s=0,o=0;if(h=!i.detectDuplicates,c=!i.sortStable&&t.slice(0),t.sort(M),h){for(;e=t[o++];)e===t[o]&&(s=n.push(o));for(;s--;)t.splice(n[s],1)}return c=null,t},s=at.getText=function(t){var e,i="",n=0,o=t.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof t.textContent)return t.textContent;for(t=t.firstChild;t;t=t.nextSibling)i+=s(t)}else if(3===o||4===o)return t.nodeValue}else for(;e=t[n++];)i+=s(e);return i},(n=at.selectors={cacheLength:50,createPseudo:ut,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(et,it),t[3]=(t[3]||t[4]||t[5]||"").replace(et,it),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||at.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&at.error(t[0]),t},PSEUDO:function(t){var e,i=!t[6]&&t[2];return G.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":i&&V.test(i)&&(e=r(i,!0))&&(e=i.indexOf(")",i.length-e)-i.length)&&(t[0]=t[0].slice(0,e),t[2]=i.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(et,it).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=C[t+" "];return e||(e=new RegExp("(^|"+L+")"+t+"("+L+"|$)"))&&C(t,function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(t,e,i){return function(n){var s=at.attr(n,t);return null==s?"!="===e:!e||(s+="","="===e?s===i:"!="===e?s!==i:"^="===e?i&&0===s.indexOf(i):"*="===e?i&&s.indexOf(i)>-1:"$="===e?i&&s.slice(-i.length)===i:"~="===e?(" "+s.replace(W," ")+" ").indexOf(i)>-1:"|="===e&&(s===i||s.slice(0,i.length+1)===i+"-"))}},CHILD:function(t,e,i,n,s){var o="nth"!==t.slice(0,3),r="last"!==t.slice(-4),a="of-type"===e;return 1===n&&0===s?function(t){return!!t.parentNode}:function(e,i,l){var u,c,h,d,p,f,g=o!==r?"nextSibling":"previousSibling",m=e.parentNode,v=a&&e.nodeName.toLowerCase(),y=!l&&!a,_=!1;if(m){if(o){for(;g;){for(d=e;d=d[g];)if(a?d.nodeName.toLowerCase()===v:1===d.nodeType)return!1;f=g="only"===t&&!f&&"nextSibling"}return!0}if(f=[r?m.firstChild:m.lastChild],r&&y){for(_=(p=(u=(c=(h=(d=m)[b]||(d[b]={}))[d.uniqueID]||(h[d.uniqueID]={}))[t]||[])[0]===x&&u[1])&&u[2],d=p&&m.childNodes[p];d=++p&&d&&d[g]||(_=p=0)||f.pop();)if(1===d.nodeType&&++_&&d===e){c[t]=[x,p,_];break}}else if(y&&(_=p=(u=(c=(h=(d=e)[b]||(d[b]={}))[d.uniqueID]||(h[d.uniqueID]={}))[t]||[])[0]===x&&u[1]),!1===_)for(;(d=++p&&d&&d[g]||(_=p=0)||f.pop())&&((a?d.nodeName.toLowerCase()!==v:1!==d.nodeType)||!++_||(y&&((c=(h=d[b]||(d[b]={}))[d.uniqueID]||(h[d.uniqueID]={}))[t]=[x,_]),d!==e)););return(_-=s)===n||_%n==0&&_/n>=0}}},PSEUDO:function(t,e){var i,s=n.pseudos[t]||n.setFilters[t.toLowerCase()]||at.error("unsupported pseudo: "+t);return s[b]?s(e):s.length>1?(i=[t,t,"",e],n.setFilters.hasOwnProperty(t.toLowerCase())?ut(function(t,i){for(var n,o=s(t,e),r=o.length;r--;)t[n=N(t,o[r])]=!(i[n]=o[r])}):function(t){return s(t,0,i)}):s}},pseudos:{not:ut(function(t){var e=[],i=[],n=a(t.replace(Y,"$1"));return n[b]?ut(function(t,e,i,s){for(var o,r=n(t,null,s,[]),a=t.length;a--;)(o=r[a])&&(t[a]=!(e[a]=o))}):function(t,s,o){return e[0]=t,n(e,null,o,i),e[0]=null,!i.pop()}}),has:ut(function(t){return function(e){return at(t,e).length>0}}),contains:ut(function(t){return t=t.replace(et,it),function(e){return(e.textContent||s(e)).indexOf(t)>-1}}),lang:ut(function(t){return $.test(t||"")||at.error("unsupported lang: "+t),t=t.replace(et,it).toLowerCase(),function(e){var i;do{if(i=g?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(i=i.toLowerCase())===t||0===i.indexOf(t+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var i=t.location&&t.location.hash;return i&&i.slice(1)===e.id},root:function(t){return t===f},focus:function(t){return t===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(t.type||t.href||~t.tabIndex)},enabled:gt(!1),disabled:gt(!0),checked:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&!!t.checked||"option"===e&&!!t.selected},selected:function(t){return t.parentNode&&t.parentNode.selectedIndex,!0===t.selected},empty:function(t){for(t=t.firstChild;t;t=t.nextSibling)if(t.nodeType<6)return!1;return!0},parent:function(t){return!n.pseudos.empty(t)},header:function(t){return J.test(t.nodeName)},input:function(t){return X.test(t.nodeName)},button:function(t){var e=t.nodeName.toLowerCase();return"input"===e&&"button"===t.type||"button"===e},text:function(t){var e;return"input"===t.nodeName.toLowerCase()&&"text"===t.type&&(null==(e=t.getAttribute("type"))||"text"===e.toLowerCase())},first:mt(function(){return[0]}),last:mt(function(t,e){return[e-1]}),eq:mt(function(t,e,i){return[i<0?i+e:i]}),even:mt(function(t,e){for(var i=0;i<e;i+=2)t.push(i);return t}),odd:mt(function(t,e){for(var i=1;i<e;i+=2)t.push(i);return t}),lt:mt(function(t,e,i){for(var n=i<0?i+e:i>e?e:i;--n>=0;)t.push(n);return t}),gt:mt(function(t,e,i){for(var n=i<0?i+e:i;++n<e;)t.push(n);return t})}}).pseudos.nth=n.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})n.pseudos[e]=pt(e);for(e in{submit:!0,reset:!0})n.pseudos[e]=ft(e);function yt(){}function _t(t){for(var e=0,i=t.length,n="";e<i;e++)n+=t[e].value;return n}function bt(t,e,i){var n=e.dir,s=e.next,o=s||n,r=i&&"parentNode"===o,a=k++;return e.first?function(e,i,s){for(;e=e[n];)if(1===e.nodeType||r)return t(e,i,s);return!1}:function(e,i,l){var u,c,h,d=[x,a];if(l){for(;e=e[n];)if((1===e.nodeType||r)&&t(e,i,l))return!0}else for(;e=e[n];)if(1===e.nodeType||r)if(c=(h=e[b]||(e[b]={}))[e.uniqueID]||(h[e.uniqueID]={}),s&&s===e.nodeName.toLowerCase())e=e[n]||e;else{if((u=c[o])&&u[0]===x&&u[1]===a)return d[2]=u[2];if(c[o]=d,d[2]=t(e,i,l))return!0}return!1}}function wt(t){return t.length>1?function(e,i,n){for(var s=t.length;s--;)if(!t[s](e,i,n))return!1;return!0}:t[0]}function xt(t,e,i,n,s){for(var o,r=[],a=0,l=t.length,u=null!=e;a<l;a++)(o=t[a])&&(i&&!i(o,n,s)||(r.push(o),u&&e.push(a)));return r}function kt(t,e,i,n,s,o){return n&&!n[b]&&(n=kt(n)),s&&!s[b]&&(s=kt(s,o)),ut(function(o,r,a,l){var u,c,h,d=[],p=[],f=r.length,g=o||function(t,e,i){for(var n=0,s=e.length;n<s;n++)at(t,e[n],i);return i}(e||"*",a.nodeType?[a]:a,[]),m=!t||!o&&e?g:xt(g,d,t,a,l),v=i?s||(o?t:f||n)?[]:r:m;if(i&&i(m,v,a,l),n)for(u=xt(v,p),n(u,[],a,l),c=u.length;c--;)(h=u[c])&&(v[p[c]]=!(m[p[c]]=h));if(o){if(s||t){if(s){for(u=[],c=v.length;c--;)(h=v[c])&&u.push(m[c]=h);s(null,v=[],u,l)}for(c=v.length;c--;)(h=v[c])&&(u=s?N(o,h):d[c])>-1&&(o[u]=!(r[u]=h))}}else v=xt(v===r?v.splice(f,v.length):v),s?s(null,r,v,l):P.apply(r,v)})}function Ct(t){for(var e,i,s,o=t.length,r=n.relative[t[0].type],a=r||n.relative[" "],l=r?1:0,c=bt(function(t){return t===e},a,!0),h=bt(function(t){return N(e,t)>-1},a,!0),d=[function(t,i,n){var s=!r&&(n||i!==u)||((e=i).nodeType?c(t,i,n):h(t,i,n));return e=null,s}];l<o;l++)if(i=n.relative[t[l].type])d=[bt(wt(d),i)];else{if((i=n.filter[t[l].type].apply(null,t[l].matches))[b]){for(s=++l;s<o&&!n.relative[t[s].type];s++);return kt(l>1&&wt(d),l>1&&_t(t.slice(0,l-1).concat({value:" "===t[l-2].type?"*":""})).replace(Y,"$1"),i,l<s&&Ct(t.slice(l,s)),s<o&&Ct(t=t.slice(s)),s<o&&_t(t))}d.push(i)}return wt(d)}return yt.prototype=n.filters=n.pseudos,n.setFilters=new yt,r=at.tokenize=function(t,e){var i,s,o,r,a,l,u,c=S[t+" "];if(c)return e?0:c.slice(0);for(a=t,l=[],u=n.preFilter;a;){for(r in i&&!(s=U.exec(a))||(s&&(a=a.slice(s[0].length)||a),l.push(o=[])),i=!1,(s=q.exec(a))&&(i=s.shift(),o.push({value:i,type:s[0].replace(Y," ")}),a=a.slice(i.length)),n.filter)!(s=G[r].exec(a))||u[r]&&!(s=u[r](s))||(i=s.shift(),o.push({value:i,type:r,matches:s}),a=a.slice(i.length));if(!i)break}return e?a.length:a?at.error(t):S(t,l).slice(0)},a=at.compile=function(t,e){var i,s=[],o=[],a=D[t+" "];if(!a){for(e||(e=r(t)),i=e.length;i--;)(a=Ct(e[i]))[b]?s.push(a):o.push(a);(a=D(t,function(t,e){var i=e.length>0,s=t.length>0,o=function(o,r,a,l,c){var h,f,m,v=0,y="0",_=o&&[],b=[],w=u,k=o||s&&n.find.TAG("*",c),C=x+=null==w?1:Math.random()||.1,S=k.length;for(c&&(u=r==p||r||c);y!==S&&null!=(h=k[y]);y++){if(s&&h){for(f=0,r||h.ownerDocument==p||(d(h),a=!g);m=t[f++];)if(m(h,r||p,a)){l.push(h);break}c&&(x=C)}i&&((h=!m&&h)&&v--,o&&_.push(h))}if(v+=y,i&&y!==v){for(f=0;m=e[f++];)m(_,b,r,a);if(o){if(v>0)for(;y--;)_[y]||b[y]||(b[y]=O.call(l));b=xt(b)}P.apply(l,b),c&&!o&&b.length>0&&v+e.length>1&&at.uniqueSort(l)}return c&&(x=C,u=w),_};return i?ut(o):o}(o,s))).selector=t}return a},l=at.select=function(t,e,i,s){var o,l,u,c,h,d="function"==typeof t&&t,p=!s&&r(t=d.selector||t);if(i=i||[],1===p.length){if((l=p[0]=p[0].slice(0)).length>2&&"ID"===(u=l[0]).type&&9===e.nodeType&&g&&n.relative[l[1].type]){if(!(e=(n.find.ID(u.matches[0].replace(et,it),e)||[])[0]))return i;d&&(e=e.parentNode),t=t.slice(l.shift().value.length)}for(o=G.needsContext.test(t)?0:l.length;o--&&(u=l[o],!n.relative[c=u.type]);)if((h=n.find[c])&&(s=h(u.matches[0].replace(et,it),tt.test(l[0].type)&&vt(e.parentNode)||e))){if(l.splice(o,1),!(t=s.length&&_t(l)))return P.apply(i,s),i;break}}return(d||a(t,p))(s,e,!g,i,!e||tt.test(t)&&vt(e.parentNode)||e),i},i.sortStable=b.split("").sort(M).join("")===b,i.detectDuplicates=!!h,d(),i.sortDetached=ct(function(t){return 1&t.compareDocumentPosition(p.createElement("fieldset"))}),ct(function(t){return t.innerHTML="<a href='#'></a>","#"===t.firstChild.getAttribute("href")})||ht("type|href|height|width",function(t,e,i){if(!i)return t.getAttribute(e,"type"===e.toLowerCase()?1:2)}),i.attributes&&ct(function(t){return t.innerHTML="<input/>",t.firstChild.setAttribute("value",""),""===t.firstChild.getAttribute("value")})||ht("value",function(t,e,i){if(!i&&"input"===t.nodeName.toLowerCase())return t.defaultValue}),ct(function(t){return null==t.getAttribute("disabled")})||ht(F,function(t,e,i){var n;if(!i)return!0===t[e]?e.toLowerCase():(n=t.getAttributeNode(e))&&n.specified?n.value:null}),at}(t);b.find=x,b.expr=x.selectors,b.expr[":"]=b.expr.pseudos,b.uniqueSort=b.unique=x.uniqueSort,b.text=x.getText,b.isXMLDoc=x.isXML,b.contains=x.contains,b.escapeSelector=x.escape;var k=function(t,e,i){for(var n=[],s=void 0!==i;(t=t[e])&&9!==t.nodeType;)if(1===t.nodeType){if(s&&b(t).is(i))break;n.push(t)}return n},C=function(t,e){for(var i=[];t;t=t.nextSibling)1===t.nodeType&&t!==e&&i.push(t);return i},S=b.expr.match.needsContext;function D(t,e){return t.nodeName&&t.nodeName.toLowerCase()===e.toLowerCase()}var T=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function M(t,e,i){return f(e)?b.grep(t,function(t,n){return!!e.call(t,n,t)!==i}):e.nodeType?b.grep(t,function(t){return t===e!==i}):"string"!=typeof e?b.grep(t,function(t){return a.call(e,t)>-1!==i}):b.filter(e,t,i)}b.filter=function(t,e,i){var n=e[0];return i&&(t=":not("+t+")"),1===e.length&&1===n.nodeType?b.find.matchesSelector(n,t)?[n]:[]:b.find.matches(t,b.grep(e,function(t){return 1===t.nodeType}))},b.fn.extend({find:function(t){var e,i,n=this.length,s=this;if("string"!=typeof t)return this.pushStack(b(t).filter(function(){for(e=0;e<n;e++)if(b.contains(s[e],this))return!0}));for(i=this.pushStack([]),e=0;e<n;e++)b.find(t,s[e],i);return n>1?b.uniqueSort(i):i},filter:function(t){return this.pushStack(M(this,t||[],!1))},not:function(t){return this.pushStack(M(this,t||[],!0))},is:function(t){return!!M(this,"string"==typeof t&&S.test(t)?b(t):t||[],!1).length}});var j,A=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(b.fn.init=function(t,e,i){var n,s;if(!t)return this;if(i=i||j,"string"==typeof t){if(!(n="<"===t[0]&&">"===t[t.length-1]&&t.length>=3?[null,t,null]:A.exec(t))||!n[1]&&e)return!e||e.jquery?(e||i).find(t):this.constructor(e).find(t);if(n[1]){if(e=e instanceof b?e[0]:e,b.merge(this,b.parseHTML(n[1],e&&e.nodeType?e.ownerDocument||e:m,!0)),T.test(n[1])&&b.isPlainObject(e))for(n in e)f(this[n])?this[n](e[n]):this.attr(n,e[n]);return this}return(s=m.getElementById(n[2]))&&(this[0]=s,this.length=1),this}return t.nodeType?(this[0]=t,this.length=1,this):f(t)?void 0!==i.ready?i.ready(t):t(b):b.makeArray(t,this)}).prototype=b.fn,j=b(m);var O=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};function P(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}b.fn.extend({has:function(t){var e=b(t,this),i=e.length;return this.filter(function(){for(var t=0;t<i;t++)if(b.contains(this,e[t]))return!0})},closest:function(t,e){var i,n=0,s=this.length,o=[],r="string"!=typeof t&&b(t);if(!S.test(t))for(;n<s;n++)for(i=this[n];i&&i!==e;i=i.parentNode)if(i.nodeType<11&&(r?r.index(i)>-1:1===i.nodeType&&b.find.matchesSelector(i,t))){o.push(i);break}return this.pushStack(o.length>1?b.uniqueSort(o):o)},index:function(t){return t?"string"==typeof t?a.call(b(t),this[0]):a.call(this,t.jquery?t[0]:t):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(t,e){return this.pushStack(b.uniqueSort(b.merge(this.get(),b(t,e))))},addBack:function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}}),b.each({parent:function(t){var e=t.parentNode;return e&&11!==e.nodeType?e:null},parents:function(t){return k(t,"parentNode")},parentsUntil:function(t,e,i){return k(t,"parentNode",i)},next:function(t){return P(t,"nextSibling")},prev:function(t){return P(t,"previousSibling")},nextAll:function(t){return k(t,"nextSibling")},prevAll:function(t){return k(t,"previousSibling")},nextUntil:function(t,e,i){return k(t,"nextSibling",i)},prevUntil:function(t,e,i){return k(t,"previousSibling",i)},siblings:function(t){return C((t.parentNode||{}).firstChild,t)},children:function(t){return C(t.firstChild)},contents:function(t){return null!=t.contentDocument&&n(t.contentDocument)?t.contentDocument:(D(t,"template")&&(t=t.content||t),b.merge([],t.childNodes))}},function(t,e){b.fn[t]=function(i,n){var s=b.map(this,e,i);return"Until"!==t.slice(-5)&&(n=i),n&&"string"==typeof n&&(s=b.filter(n,s)),this.length>1&&(E[t]||b.uniqueSort(s),O.test(t)&&s.reverse()),this.pushStack(s)}});var I=/[^\x20\t\r\n\f]+/g;function N(t){return t}function F(t){throw t}function L(t,e,i,n){var s;try{t&&f(s=t.promise)?s.call(t).done(e).fail(i):t&&f(s=t.then)?s.call(t,e,i):e.apply(void 0,[t].slice(n))}catch(t){i.apply(void 0,[t])}}b.Callbacks=function(t){t="string"==typeof t?function(t){var e={};return b.each(t.match(I)||[],function(t,i){e[i]=!0}),e}(t):b.extend({},t);var e,i,n,s,o=[],r=[],a=-1,l=function(){for(s=s||t.once,n=e=!0;r.length;a=-1)for(i=r.shift();++a<o.length;)!1===o[a].apply(i[0],i[1])&&t.stopOnFalse&&(a=o.length,i=!1);t.memory||(i=!1),e=!1,s&&(o=i?[]:"")},u={add:function(){return o&&(i&&!e&&(a=o.length-1,r.push(i)),function e(i){b.each(i,function(i,n){f(n)?t.unique&&u.has(n)||o.push(n):n&&n.length&&"string"!==_(n)&&e(n)})}(arguments),i&&!e&&l()),this},remove:function(){return b.each(arguments,function(t,e){for(var i;(i=b.inArray(e,o,i))>-1;)o.splice(i,1),i<=a&&a--}),this},has:function(t){return t?b.inArray(t,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return s=r=[],o=i="",this},disabled:function(){return!o},lock:function(){return s=r=[],i||e||(o=i=""),this},locked:function(){return!!s},fireWith:function(t,i){return s||(i=[t,(i=i||[]).slice?i.slice():i],r.push(i),e||l()),this},fire:function(){return u.fireWith(this,arguments),this},fired:function(){return!!n}};return u},b.extend({Deferred:function(e){var i=[["notify","progress",b.Callbacks("memory"),b.Callbacks("memory"),2],["resolve","done",b.Callbacks("once memory"),b.Callbacks("once memory"),0,"resolved"],["reject","fail",b.Callbacks("once memory"),b.Callbacks("once memory"),1,"rejected"]],n="pending",s={state:function(){return n},always:function(){return o.done(arguments).fail(arguments),this},catch:function(t){return s.then(null,t)},pipe:function(){var t=arguments;return b.Deferred(function(e){b.each(i,function(i,n){var s=f(t[n[4]])&&t[n[4]];o[n[1]](function(){var t=s&&s.apply(this,arguments);t&&f(t.promise)?t.promise().progress(e.notify).done(e.resolve).fail(e.reject):e[n[0]+"With"](this,s?[t]:arguments)})}),t=null}).promise()},then:function(e,n,s){var o=0;function r(e,i,n,s){return function(){var a=this,l=arguments,u=function(){var t,u;if(!(e<o)){if((t=n.apply(a,l))===i.promise())throw new TypeError("Thenable self-resolution");u=t&&("object"==typeof t||"function"==typeof t)&&t.then,f(u)?s?u.call(t,r(o,i,N,s),r(o,i,F,s)):(o++,u.call(t,r(o,i,N,s),r(o,i,F,s),r(o,i,N,i.notifyWith))):(n!==N&&(a=void 0,l=[t]),(s||i.resolveWith)(a,l))}},c=s?u:function(){try{u()}catch(t){b.Deferred.exceptionHook&&b.Deferred.exceptionHook(t,c.stackTrace),e+1>=o&&(n!==F&&(a=void 0,l=[t]),i.rejectWith(a,l))}};e?c():(b.Deferred.getStackHook&&(c.stackTrace=b.Deferred.getStackHook()),t.setTimeout(c))}}return b.Deferred(function(t){i[0][3].add(r(0,t,f(s)?s:N,t.notifyWith)),i[1][3].add(r(0,t,f(e)?e:N)),i[2][3].add(r(0,t,f(n)?n:F))}).promise()},promise:function(t){return null!=t?b.extend(t,s):s}},o={};return b.each(i,function(t,e){var r=e[2],a=e[5];s[e[1]]=r.add,a&&r.add(function(){n=a},i[3-t][2].disable,i[3-t][3].disable,i[0][2].lock,i[0][3].lock),r.add(e[3].fire),o[e[0]]=function(){return o[e[0]+"With"](this===o?void 0:this,arguments),this},o[e[0]+"With"]=r.fireWith}),s.promise(o),e&&e.call(o,o),o},when:function(t){var e=arguments.length,i=e,n=Array(i),o=s.call(arguments),r=b.Deferred(),a=function(t){return function(i){n[t]=this,o[t]=arguments.length>1?s.call(arguments):i,--e||r.resolveWith(n,o)}};if(e<=1&&(L(t,r.done(a(i)).resolve,r.reject,!e),"pending"===r.state()||f(o[i]&&o[i].then)))return r.then();for(;i--;)L(o[i],a(i),r.reject);return r.promise()}});var R=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;b.Deferred.exceptionHook=function(e,i){t.console&&t.console.warn&&e&&R.test(e.name)&&t.console.warn("jQuery.Deferred exception: "+e.message,e.stack,i)},b.readyException=function(e){t.setTimeout(function(){throw e})};var H=b.Deferred();function z(){m.removeEventListener("DOMContentLoaded",z),t.removeEventListener("load",z),b.ready()}b.fn.ready=function(t){return H.then(t).catch(function(t){b.readyException(t)}),this},b.extend({isReady:!1,readyWait:1,ready:function(t){(!0===t?--b.readyWait:b.isReady)||(b.isReady=!0,!0!==t&&--b.readyWait>0||H.resolveWith(m,[b]))}}),b.ready.then=H.then,"complete"===m.readyState||"loading"!==m.readyState&&!m.documentElement.doScroll?t.setTimeout(b.ready):(m.addEventListener("DOMContentLoaded",z),t.addEventListener("load",z));var W=function(t,e,i,n,s,o,r){var a=0,l=t.length,u=null==i;if("object"===_(i))for(a in s=!0,i)W(t,e,a,i[a],!0,o,r);else if(void 0!==n&&(s=!0,f(n)||(r=!0),u&&(r?(e.call(t,n),e=null):(u=e,e=function(t,e,i){return u.call(b(t),i)})),e))for(;a<l;a++)e(t[a],i,r?n:n.call(t[a],a,e(t[a],i)));return s?t:u?e.call(t):l?e(t[0],i):o},Y=/^-ms-/,U=/-([a-z])/g;function q(t,e){return e.toUpperCase()}function B(t){return t.replace(Y,"ms-").replace(U,q)}var V=function(t){return 1===t.nodeType||9===t.nodeType||!+t.nodeType};function $(){this.expando=b.expando+$.uid++}$.uid=1,$.prototype={cache:function(t){var e=t[this.expando];return e||(e={},V(t)&&(t.nodeType?t[this.expando]=e:Object.defineProperty(t,this.expando,{value:e,configurable:!0}))),e},set:function(t,e,i){var n,s=this.cache(t);if("string"==typeof e)s[B(e)]=i;else for(n in e)s[B(n)]=e[n];return s},get:function(t,e){return void 0===e?this.cache(t):t[this.expando]&&t[this.expando][B(e)]},access:function(t,e,i){return void 0===e||e&&"string"==typeof e&&void 0===i?this.get(t,e):(this.set(t,e,i),void 0!==i?i:e)},remove:function(t,e){var i,n=t[this.expando];if(void 0!==n){if(void 0!==e){i=(e=Array.isArray(e)?e.map(B):(e=B(e))in n?[e]:e.match(I)||[]).length;for(;i--;)delete n[e[i]]}(void 0===e||b.isEmptyObject(n))&&(t.nodeType?t[this.expando]=void 0:delete t[this.expando])}},hasData:function(t){var e=t[this.expando];return void 0!==e&&!b.isEmptyObject(e)}};var G=new $,K=new $,X=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,J=/[A-Z]/g;function Z(t,e,i){var n;if(void 0===i&&1===t.nodeType)if(n="data-"+e.replace(J,"-$&").toLowerCase(),"string"==typeof(i=t.getAttribute(n))){try{i=function(t){return"true"===t||"false"!==t&&("null"===t?null:t===+t+""?+t:X.test(t)?JSON.parse(t):t)}(i)}catch(t){}K.set(t,e,i)}else i=void 0;return i}b.extend({hasData:function(t){return K.hasData(t)||G.hasData(t)},data:function(t,e,i){return K.access(t,e,i)},removeData:function(t,e){K.remove(t,e)},_data:function(t,e,i){return G.access(t,e,i)},_removeData:function(t,e){G.remove(t,e)}}),b.fn.extend({data:function(t,e){var i,n,s,o=this[0],r=o&&o.attributes;if(void 0===t){if(this.length&&(s=K.get(o),1===o.nodeType&&!G.get(o,"hasDataAttrs"))){for(i=r.length;i--;)r[i]&&0===(n=r[i].name).indexOf("data-")&&(n=B(n.slice(5)),Z(o,n,s[n]));G.set(o,"hasDataAttrs",!0)}return s}return"object"==typeof t?this.each(function(){K.set(this,t)}):W(this,function(e){var i;if(o&&void 0===e)return void 0!==(i=K.get(o,t))?i:void 0!==(i=Z(o,t))?i:void 0;this.each(function(){K.set(this,t,e)})},null,e,arguments.length>1,null,!0)},removeData:function(t){return this.each(function(){K.remove(this,t)})}}),b.extend({queue:function(t,e,i){var n;if(t)return e=(e||"fx")+"queue",n=G.get(t,e),i&&(!n||Array.isArray(i)?n=G.access(t,e,b.makeArray(i)):n.push(i)),n||[]},dequeue:function(t,e){e=e||"fx";var i=b.queue(t,e),n=i.length,s=i.shift(),o=b._queueHooks(t,e);"inprogress"===s&&(s=i.shift(),n--),s&&("fx"===e&&i.unshift("inprogress"),delete o.stop,s.call(t,function(){b.dequeue(t,e)},o)),!n&&o&&o.empty.fire()},_queueHooks:function(t,e){var i=e+"queueHooks";return G.get(t,i)||G.access(t,i,{empty:b.Callbacks("once memory").add(function(){G.remove(t,[e+"queue",i])})})}}),b.fn.extend({queue:function(t,e){var i=2;return"string"!=typeof t&&(e=t,t="fx",i--),arguments.length<i?b.queue(this[0],t):void 0===e?this:this.each(function(){var i=b.queue(this,t,e);b._queueHooks(this,t),"fx"===t&&"inprogress"!==i[0]&&b.dequeue(this,t)})},dequeue:function(t){return this.each(function(){b.dequeue(this,t)})},clearQueue:function(t){return this.queue(t||"fx",[])},promise:function(t,e){var i,n=1,s=b.Deferred(),o=this,r=this.length,a=function(){--n||s.resolveWith(o,[o])};for("string"!=typeof t&&(e=t,t=void 0),t=t||"fx";r--;)(i=G.get(o[r],t+"queueHooks"))&&i.empty&&(n++,i.empty.add(a));return a(),s.promise(e)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,tt=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),et=["Top","Right","Bottom","Left"],it=m.documentElement,nt=function(t){return b.contains(t.ownerDocument,t)},st={composed:!0};it.getRootNode&&(nt=function(t){return b.contains(t.ownerDocument,t)||t.getRootNode(st)===t.ownerDocument});var ot=function(t,e){return"none"===(t=e||t).style.display||""===t.style.display&&nt(t)&&"none"===b.css(t,"display")};function rt(t,e,i,n){var s,o,r=20,a=n?function(){return n.cur()}:function(){return b.css(t,e,"")},l=a(),u=i&&i[3]||(b.cssNumber[e]?"":"px"),c=t.nodeType&&(b.cssNumber[e]||"px"!==u&&+l)&&tt.exec(b.css(t,e));if(c&&c[3]!==u){for(l/=2,u=u||c[3],c=+l||1;r--;)b.style(t,e,c+u),(1-o)*(1-(o=a()/l||.5))<=0&&(r=0),c/=o;c*=2,b.style(t,e,c+u),i=i||[]}return i&&(c=+c||+l||0,s=i[1]?c+(i[1]+1)*i[2]:+i[2],n&&(n.unit=u,n.start=c,n.end=s)),s}var at={};function lt(t){var e,i=t.ownerDocument,n=t.nodeName,s=at[n];return s||(e=i.body.appendChild(i.createElement(n)),s=b.css(e,"display"),e.parentNode.removeChild(e),"none"===s&&(s="block"),at[n]=s,s)}function ut(t,e){for(var i,n,s=[],o=0,r=t.length;o<r;o++)(n=t[o]).style&&(i=n.style.display,e?("none"===i&&(s[o]=G.get(n,"display")||null,s[o]||(n.style.display="")),""===n.style.display&&ot(n)&&(s[o]=lt(n))):"none"!==i&&(s[o]="none",G.set(n,"display",i)));for(o=0;o<r;o++)null!=s[o]&&(t[o].style.display=s[o]);return t}b.fn.extend({show:function(){return ut(this,!0)},hide:function(){return ut(this)},toggle:function(t){return"boolean"==typeof t?t?this.show():this.hide():this.each(function(){ot(this)?b(this).show():b(this).hide()})}});var ct,ht,dt=/^(?:checkbox|radio)$/i,pt=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,ft=/^$|^module$|\/(?:java|ecma)script/i;ct=m.createDocumentFragment().appendChild(m.createElement("div")),(ht=m.createElement("input")).setAttribute("type","radio"),ht.setAttribute("checked","checked"),ht.setAttribute("name","t"),ct.appendChild(ht),p.checkClone=ct.cloneNode(!0).cloneNode(!0).lastChild.checked,ct.innerHTML="<textarea>x</textarea>",p.noCloneChecked=!!ct.cloneNode(!0).lastChild.defaultValue,ct.innerHTML="<option></option>",p.option=!!ct.lastChild;var gt={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function mt(t,e){var i;return i=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[],void 0===e||e&&D(t,e)?b.merge([t],i):i}function vt(t,e){for(var i=0,n=t.length;i<n;i++)G.set(t[i],"globalEval",!e||G.get(e[i],"globalEval"))}gt.tbody=gt.tfoot=gt.colgroup=gt.caption=gt.thead,gt.th=gt.td,p.option||(gt.optgroup=gt.option=[1,"<select multiple='multiple'>","</select>"]);var yt=/<|&#?\w+;/;function _t(t,e,i,n,s){for(var o,r,a,l,u,c,h=e.createDocumentFragment(),d=[],p=0,f=t.length;p<f;p++)if((o=t[p])||0===o)if("object"===_(o))b.merge(d,o.nodeType?[o]:o);else if(yt.test(o)){for(r=r||h.appendChild(e.createElement("div")),a=(pt.exec(o)||["",""])[1].toLowerCase(),l=gt[a]||gt._default,r.innerHTML=l[1]+b.htmlPrefilter(o)+l[2],c=l[0];c--;)r=r.lastChild;b.merge(d,r.childNodes),(r=h.firstChild).textContent=""}else d.push(e.createTextNode(o));for(h.textContent="",p=0;o=d[p++];)if(n&&b.inArray(o,n)>-1)s&&s.push(o);else if(u=nt(o),r=mt(h.appendChild(o),"script"),u&&vt(r),i)for(c=0;o=r[c++];)ft.test(o.type||"")&&i.push(o);return h}var bt=/^([^.]*)(?:\.(.+)|)/;function wt(){return!0}function xt(){return!1}function kt(t,e){return t===function(){try{return m.activeElement}catch(t){}}()==("focus"===e)}function Ct(t,e,i,n,s,o){var r,a;if("object"==typeof e){for(a in"string"!=typeof i&&(n=n||i,i=void 0),e)Ct(t,a,i,n,e[a],o);return t}if(null==n&&null==s?(s=i,n=i=void 0):null==s&&("string"==typeof i?(s=n,n=void 0):(s=n,n=i,i=void 0)),!1===s)s=xt;else if(!s)return t;return 1===o&&(r=s,(s=function(t){return b().off(t),r.apply(this,arguments)}).guid=r.guid||(r.guid=b.guid++)),t.each(function(){b.event.add(this,e,s,n,i)})}function St(t,e,i){i?(G.set(t,e,!1),b.event.add(t,e,{namespace:!1,handler:function(t){var n,o,r=G.get(this,e);if(1&t.isTrigger&&this[e]){if(r.length)(b.event.special[e]||{}).delegateType&&t.stopPropagation();else if(r=s.call(arguments),G.set(this,e,r),n=i(this,e),this[e](),r!==(o=G.get(this,e))||n?G.set(this,e,!1):o={},r!==o)return t.stopImmediatePropagation(),t.preventDefault(),o&&o.value}else r.length&&(G.set(this,e,{value:b.event.trigger(b.extend(r[0],b.Event.prototype),r.slice(1),this)}),t.stopImmediatePropagation())}})):void 0===G.get(t,e)&&b.event.add(t,e,wt)}b.event={global:{},add:function(t,e,i,n,s){var o,r,a,l,u,c,h,d,p,f,g,m=G.get(t);if(V(t))for(i.handler&&(i=(o=i).handler,s=o.selector),s&&b.find.matchesSelector(it,s),i.guid||(i.guid=b.guid++),(l=m.events)||(l=m.events=Object.create(null)),(r=m.handle)||(r=m.handle=function(e){return void 0!==b&&b.event.triggered!==e.type?b.event.dispatch.apply(t,arguments):void 0}),u=(e=(e||"").match(I)||[""]).length;u--;)p=g=(a=bt.exec(e[u])||[])[1],f=(a[2]||"").split(".").sort(),p&&(h=b.event.special[p]||{},p=(s?h.delegateType:h.bindType)||p,h=b.event.special[p]||{},c=b.extend({type:p,origType:g,data:n,handler:i,guid:i.guid,selector:s,needsContext:s&&b.expr.match.needsContext.test(s),namespace:f.join(".")},o),(d=l[p])||((d=l[p]=[]).delegateCount=0,h.setup&&!1!==h.setup.call(t,n,f,r)||t.addEventListener&&t.addEventListener(p,r)),h.add&&(h.add.call(t,c),c.handler.guid||(c.handler.guid=i.guid)),s?d.splice(d.delegateCount++,0,c):d.push(c),b.event.global[p]=!0)},remove:function(t,e,i,n,s){var o,r,a,l,u,c,h,d,p,f,g,m=G.hasData(t)&&G.get(t);if(m&&(l=m.events)){for(u=(e=(e||"").match(I)||[""]).length;u--;)if(p=g=(a=bt.exec(e[u])||[])[1],f=(a[2]||"").split(".").sort(),p){for(h=b.event.special[p]||{},d=l[p=(n?h.delegateType:h.bindType)||p]||[],a=a[2]&&new RegExp("(^|\\.)"+f.join("\\.(?:.*\\.|)")+"(\\.|$)"),r=o=d.length;o--;)c=d[o],!s&&g!==c.origType||i&&i.guid!==c.guid||a&&!a.test(c.namespace)||n&&n!==c.selector&&("**"!==n||!c.selector)||(d.splice(o,1),c.selector&&d.delegateCount--,h.remove&&h.remove.call(t,c));r&&!d.length&&(h.teardown&&!1!==h.teardown.call(t,f,m.handle)||b.removeEvent(t,p,m.handle),delete l[p])}else for(p in l)b.event.remove(t,p+e[u],i,n,!0);b.isEmptyObject(l)&&G.remove(t,"handle events")}},dispatch:function(t){var e,i,n,s,o,r,a=new Array(arguments.length),l=b.event.fix(t),u=(G.get(this,"events")||Object.create(null))[l.type]||[],c=b.event.special[l.type]||{};for(a[0]=l,e=1;e<arguments.length;e++)a[e]=arguments[e];if(l.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,l)){for(r=b.event.handlers.call(this,l,u),e=0;(s=r[e++])&&!l.isPropagationStopped();)for(l.currentTarget=s.elem,i=0;(o=s.handlers[i++])&&!l.isImmediatePropagationStopped();)l.rnamespace&&!1!==o.namespace&&!l.rnamespace.test(o.namespace)||(l.handleObj=o,l.data=o.data,void 0!==(n=((b.event.special[o.origType]||{}).handle||o.handler).apply(s.elem,a))&&!1===(l.result=n)&&(l.preventDefault(),l.stopPropagation()));return c.postDispatch&&c.postDispatch.call(this,l),l.result}},handlers:function(t,e){var i,n,s,o,r,a=[],l=e.delegateCount,u=t.target;if(l&&u.nodeType&&!("click"===t.type&&t.button>=1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&("click"!==t.type||!0!==u.disabled)){for(o=[],r={},i=0;i<l;i++)void 0===r[s=(n=e[i]).selector+" "]&&(r[s]=n.needsContext?b(s,this).index(u)>-1:b.find(s,this,null,[u]).length),r[s]&&o.push(n);o.length&&a.push({elem:u,handlers:o})}return u=this,l<e.length&&a.push({elem:u,handlers:e.slice(l)}),a},addProp:function(t,e){Object.defineProperty(b.Event.prototype,t,{enumerable:!0,configurable:!0,get:f(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(t){return t[b.expando]?t:new b.Event(t)},special:{load:{noBubble:!0},click:{setup:function(t){var e=this||t;return dt.test(e.type)&&e.click&&D(e,"input")&&St(e,"click",wt),!1},trigger:function(t){var e=this||t;return dt.test(e.type)&&e.click&&D(e,"input")&&St(e,"click"),!0},_default:function(t){var e=t.target;return dt.test(e.type)&&e.click&&D(e,"input")&&G.get(e,"click")||D(e,"a")}},beforeunload:{postDispatch:function(t){void 0!==t.result&&t.originalEvent&&(t.originalEvent.returnValue=t.result)}}}},b.removeEvent=function(t,e,i){t.removeEventListener&&t.removeEventListener(e,i)},b.Event=function(t,e){if(!(this instanceof b.Event))return new b.Event(t,e);t&&t.type?(this.originalEvent=t,this.type=t.type,this.isDefaultPrevented=t.defaultPrevented||void 0===t.defaultPrevented&&!1===t.returnValue?wt:xt,this.target=t.target&&3===t.target.nodeType?t.target.parentNode:t.target,this.currentTarget=t.currentTarget,this.relatedTarget=t.relatedTarget):this.type=t,e&&b.extend(this,e),this.timeStamp=t&&t.timeStamp||Date.now(),this[b.expando]=!0},b.Event.prototype={constructor:b.Event,isDefaultPrevented:xt,isPropagationStopped:xt,isImmediatePropagationStopped:xt,isSimulated:!1,preventDefault:function(){var t=this.originalEvent;this.isDefaultPrevented=wt,t&&!this.isSimulated&&t.preventDefault()},stopPropagation:function(){var t=this.originalEvent;this.isPropagationStopped=wt,t&&!this.isSimulated&&t.stopPropagation()},stopImmediatePropagation:function(){var t=this.originalEvent;this.isImmediatePropagationStopped=wt,t&&!this.isSimulated&&t.stopImmediatePropagation(),this.stopPropagation()}},b.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,char:!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},b.event.addProp),b.each({focus:"focusin",blur:"focusout"},function(t,e){b.event.special[t]={setup:function(){return St(this,t,kt),!1},trigger:function(){return St(this,t),!0},_default:function(){return!0},delegateType:e}}),b.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(t,e){b.event.special[t]={delegateType:e,bindType:e,handle:function(t){var i,n=t.relatedTarget,s=t.handleObj;return n&&(n===this||b.contains(this,n))||(t.type=s.origType,i=s.handler.apply(this,arguments),t.type=e),i}}}),b.fn.extend({on:function(t,e,i,n){return Ct(this,t,e,i,n)},one:function(t,e,i,n){return Ct(this,t,e,i,n,1)},off:function(t,e,i){var n,s;if(t&&t.preventDefault&&t.handleObj)return n=t.handleObj,b(t.delegateTarget).off(n.namespace?n.origType+"."+n.namespace:n.origType,n.selector,n.handler),this;if("object"==typeof t){for(s in t)this.off(s,e,t[s]);return this}return!1!==e&&"function"!=typeof e||(i=e,e=void 0),!1===i&&(i=xt),this.each(function(){b.event.remove(this,t,i,e)})}});var Dt=/<script|<style|<link/i,Tt=/checked\s*(?:[^=]|=\s*.checked.)/i,Mt=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function jt(t,e){return D(t,"table")&&D(11!==e.nodeType?e:e.firstChild,"tr")&&b(t).children("tbody")[0]||t}function At(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Ot(t){return"true/"===(t.type||"").slice(0,5)?t.type=t.type.slice(5):t.removeAttribute("type"),t}function Et(t,e){var i,n,s,o,r,a;if(1===e.nodeType){if(G.hasData(t)&&(a=G.get(t).events))for(s in G.remove(e,"handle events"),a)for(i=0,n=a[s].length;i<n;i++)b.event.add(e,s,a[s][i]);K.hasData(t)&&(o=K.access(t),r=b.extend({},o),K.set(e,r))}}function Pt(t,e,i,n){e=o(e);var s,r,a,l,u,c,h=0,d=t.length,g=d-1,m=e[0],v=f(m);if(v||d>1&&"string"==typeof m&&!p.checkClone&&Tt.test(m))return t.each(function(s){var o=t.eq(s);v&&(e[0]=m.call(this,s,o.html())),Pt(o,e,i,n)});if(d&&(r=(s=_t(e,t[0].ownerDocument,!1,t,n)).firstChild,1===s.childNodes.length&&(s=r),r||n)){for(l=(a=b.map(mt(s,"script"),At)).length;h<d;h++)u=s,h!==g&&(u=b.clone(u,!0,!0),l&&b.merge(a,mt(u,"script"))),i.call(t[h],u,h);if(l)for(c=a[a.length-1].ownerDocument,b.map(a,Ot),h=0;h<l;h++)u=a[h],ft.test(u.type||"")&&!G.access(u,"globalEval")&&b.contains(c,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?b._evalUrl&&!u.noModule&&b._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},c):y(u.textContent.replace(Mt,""),u,c))}return t}function It(t,e,i){for(var n,s=e?b.filter(e,t):t,o=0;null!=(n=s[o]);o++)i||1!==n.nodeType||b.cleanData(mt(n)),n.parentNode&&(i&&nt(n)&&vt(mt(n,"script")),n.parentNode.removeChild(n));return t}b.extend({htmlPrefilter:function(t){return t},clone:function(t,e,i){var n,s,o,r,a,l,u,c=t.cloneNode(!0),h=nt(t);if(!(p.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||b.isXMLDoc(t)))for(r=mt(c),n=0,s=(o=mt(t)).length;n<s;n++)a=o[n],l=r[n],u=void 0,"input"===(u=l.nodeName.toLowerCase())&&dt.test(a.type)?l.checked=a.checked:"input"!==u&&"textarea"!==u||(l.defaultValue=a.defaultValue);if(e)if(i)for(o=o||mt(t),r=r||mt(c),n=0,s=o.length;n<s;n++)Et(o[n],r[n]);else Et(t,c);return(r=mt(c,"script")).length>0&&vt(r,!h&&mt(t,"script")),c},cleanData:function(t){for(var e,i,n,s=b.event.special,o=0;void 0!==(i=t[o]);o++)if(V(i)){if(e=i[G.expando]){if(e.events)for(n in e.events)s[n]?b.event.remove(i,n):b.removeEvent(i,n,e.handle);i[G.expando]=void 0}i[K.expando]&&(i[K.expando]=void 0)}}}),b.fn.extend({detach:function(t){return It(this,t,!0)},remove:function(t){return It(this,t)},text:function(t){return W(this,function(t){return void 0===t?b.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=t)})},null,t,arguments.length)},append:function(){return Pt(this,arguments,function(t){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||jt(this,t).appendChild(t)})},prepend:function(){return Pt(this,arguments,function(t){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var e=jt(this,t);e.insertBefore(t,e.firstChild)}})},before:function(){return Pt(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this)})},after:function(){return Pt(this,arguments,function(t){this.parentNode&&this.parentNode.insertBefore(t,this.nextSibling)})},empty:function(){for(var t,e=0;null!=(t=this[e]);e++)1===t.nodeType&&(b.cleanData(mt(t,!1)),t.textContent="");return this},clone:function(t,e){return t=null!=t&&t,e=null==e?t:e,this.map(function(){return b.clone(this,t,e)})},html:function(t){return W(this,function(t){var e=this[0]||{},i=0,n=this.length;if(void 0===t&&1===e.nodeType)return e.innerHTML;if("string"==typeof t&&!Dt.test(t)&&!gt[(pt.exec(t)||["",""])[1].toLowerCase()]){t=b.htmlPrefilter(t);try{for(;i<n;i++)1===(e=this[i]||{}).nodeType&&(b.cleanData(mt(e,!1)),e.innerHTML=t);e=0}catch(t){}}e&&this.empty().append(t)},null,t,arguments.length)},replaceWith:function(){var t=[];return Pt(this,arguments,function(e){var i=this.parentNode;b.inArray(this,t)<0&&(b.cleanData(mt(this)),i&&i.replaceChild(e,this))},t)}}),b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(t,e){b.fn[t]=function(t){for(var i,n=[],s=b(t),o=s.length-1,a=0;a<=o;a++)i=a===o?this:this.clone(!0),b(s[a])[e](i),r.apply(n,i.get());return this.pushStack(n)}});var Nt=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),Ft=function(e){var i=e.ownerDocument.defaultView;return i&&i.opener||(i=t),i.getComputedStyle(e)},Lt=function(t,e,i){var n,s,o={};for(s in e)o[s]=t.style[s],t.style[s]=e[s];for(s in n=i.call(t),e)t.style[s]=o[s];return n},Rt=new RegExp(et.join("|"),"i");function Ht(t,e,i){var n,s,o,r,a=t.style;return(i=i||Ft(t))&&(""!==(r=i.getPropertyValue(e)||i[e])||nt(t)||(r=b.style(t,e)),!p.pixelBoxStyles()&&Nt.test(r)&&Rt.test(e)&&(n=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=i.width,a.width=n,a.minWidth=s,a.maxWidth=o)),void 0!==r?r+"":r}function zt(t,e){return{get:function(){if(!t())return(this.get=e).apply(this,arguments);delete this.get}}}!function(){function e(){if(c){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",it.appendChild(u).appendChild(c);var e=t.getComputedStyle(c);n="1%"!==e.top,l=12===i(e.marginLeft),c.style.right="60%",r=36===i(e.right),s=36===i(e.width),c.style.position="absolute",o=12===i(c.offsetWidth/3),it.removeChild(u),c=null}}function i(t){return Math.round(parseFloat(t))}var n,s,o,r,a,l,u=m.createElement("div"),c=m.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",p.clearCloneStyle="content-box"===c.style.backgroundClip,b.extend(p,{boxSizingReliable:function(){return e(),s},pixelBoxStyles:function(){return e(),r},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),l},scrollboxSize:function(){return e(),o},reliableTrDimensions:function(){var e,i,n,s;return null==a&&(e=m.createElement("table"),i=m.createElement("tr"),n=m.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",i.style.cssText="border:1px solid",i.style.height="1px",n.style.height="9px",n.style.display="block",it.appendChild(e).appendChild(i).appendChild(n),s=t.getComputedStyle(i),a=parseInt(s.height,10)+parseInt(s.borderTopWidth,10)+parseInt(s.borderBottomWidth,10)===i.offsetHeight,it.removeChild(e)),a}}))}();var Wt=["Webkit","Moz","ms"],Yt=m.createElement("div").style,Ut={};function qt(t){var e=b.cssProps[t]||Ut[t];return e||(t in Yt?t:Ut[t]=function(t){for(var e=t[0].toUpperCase()+t.slice(1),i=Wt.length;i--;)if((t=Wt[i]+e)in Yt)return t}(t)||t)}var Bt=/^(none|table(?!-c[ea]).+)/,Vt=/^--/,$t={position:"absolute",visibility:"hidden",display:"block"},Gt={letterSpacing:"0",fontWeight:"400"};function Kt(t,e,i){var n=tt.exec(e);return n?Math.max(0,n[2]-(i||0))+(n[3]||"px"):e}function Xt(t,e,i,n,s,o){var r="width"===e?1:0,a=0,l=0;if(i===(n?"border":"content"))return 0;for(;r<4;r+=2)"margin"===i&&(l+=b.css(t,i+et[r],!0,s)),n?("content"===i&&(l-=b.css(t,"padding"+et[r],!0,s)),"margin"!==i&&(l-=b.css(t,"border"+et[r]+"Width",!0,s))):(l+=b.css(t,"padding"+et[r],!0,s),"padding"!==i?l+=b.css(t,"border"+et[r]+"Width",!0,s):a+=b.css(t,"border"+et[r]+"Width",!0,s));return!n&&o>=0&&(l+=Math.max(0,Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-o-l-a-.5))||0),l}function Jt(t,e,i){var n=Ft(t),s=(!p.boxSizingReliable()||i)&&"border-box"===b.css(t,"boxSizing",!1,n),o=s,r=Ht(t,e,n),a="offset"+e[0].toUpperCase()+e.slice(1);if(Nt.test(r)){if(!i)return r;r="auto"}return(!p.boxSizingReliable()&&s||!p.reliableTrDimensions()&&D(t,"tr")||"auto"===r||!parseFloat(r)&&"inline"===b.css(t,"display",!1,n))&&t.getClientRects().length&&(s="border-box"===b.css(t,"boxSizing",!1,n),(o=a in t)&&(r=t[a])),(r=parseFloat(r)||0)+Xt(t,e,i||(s?"border":"content"),o,n,r)+"px"}function Zt(t,e,i,n,s){return new Zt.prototype.init(t,e,i,n,s)}b.extend({cssHooks:{opacity:{get:function(t,e){if(e){var i=Ht(t,"opacity");return""===i?"1":i}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(t,e,i,n){if(t&&3!==t.nodeType&&8!==t.nodeType&&t.style){var s,o,r,a=B(e),l=Vt.test(e),u=t.style;if(l||(e=qt(a)),r=b.cssHooks[e]||b.cssHooks[a],void 0===i)return r&&"get"in r&&void 0!==(s=r.get(t,!1,n))?s:u[e];"string"===(o=typeof i)&&(s=tt.exec(i))&&s[1]&&(i=rt(t,e,s),o="number"),null!=i&&i==i&&("number"!==o||l||(i+=s&&s[3]||(b.cssNumber[a]?"":"px")),p.clearCloneStyle||""!==i||0!==e.indexOf("background")||(u[e]="inherit"),r&&"set"in r&&void 0===(i=r.set(t,i,n))||(l?u.setProperty(e,i):u[e]=i))}},css:function(t,e,i,n){var s,o,r,a=B(e);return Vt.test(e)||(e=qt(a)),(r=b.cssHooks[e]||b.cssHooks[a])&&"get"in r&&(s=r.get(t,!0,i)),void 0===s&&(s=Ht(t,e,n)),"normal"===s&&e in Gt&&(s=Gt[e]),""===i||i?(o=parseFloat(s),!0===i||isFinite(o)?o||0:s):s}}),b.each(["height","width"],function(t,e){b.cssHooks[e]={get:function(t,i,n){if(i)return!Bt.test(b.css(t,"display"))||t.getClientRects().length&&t.getBoundingClientRect().width?Jt(t,e,n):Lt(t,$t,function(){return Jt(t,e,n)})},set:function(t,i,n){var s,o=Ft(t),r=!p.scrollboxSize()&&"absolute"===o.position,a=(r||n)&&"border-box"===b.css(t,"boxSizing",!1,o),l=n?Xt(t,e,n,a,o):0;return a&&r&&(l-=Math.ceil(t["offset"+e[0].toUpperCase()+e.slice(1)]-parseFloat(o[e])-Xt(t,e,"border",!1,o)-.5)),l&&(s=tt.exec(i))&&"px"!==(s[3]||"px")&&(t.style[e]=i,i=b.css(t,e)),Kt(0,i,l)}}}),b.cssHooks.marginLeft=zt(p.reliableMarginLeft,function(t,e){if(e)return(parseFloat(Ht(t,"marginLeft"))||t.getBoundingClientRect().left-Lt(t,{marginLeft:0},function(){return t.getBoundingClientRect().left}))+"px"}),b.each({margin:"",padding:"",border:"Width"},function(t,e){b.cssHooks[t+e]={expand:function(i){for(var n=0,s={},o="string"==typeof i?i.split(" "):[i];n<4;n++)s[t+et[n]+e]=o[n]||o[n-2]||o[0];return s}},"margin"!==t&&(b.cssHooks[t+e].set=Kt)}),b.fn.extend({css:function(t,e){return W(this,function(t,e,i){var n,s,o={},r=0;if(Array.isArray(e)){for(n=Ft(t),s=e.length;r<s;r++)o[e[r]]=b.css(t,e[r],!1,n);return o}return void 0!==i?b.style(t,e,i):b.css(t,e)},t,e,arguments.length>1)}}),b.Tween=Zt,Zt.prototype={constructor:Zt,init:function(t,e,i,n,s,o){this.elem=t,this.prop=i,this.easing=s||b.easing._default,this.options=e,this.start=this.now=this.cur(),this.end=n,this.unit=o||(b.cssNumber[i]?"":"px")},cur:function(){var t=Zt.propHooks[this.prop];return t&&t.get?t.get(this):Zt.propHooks._default.get(this)},run:function(t){var e,i=Zt.propHooks[this.prop];return this.options.duration?this.pos=e=b.easing[this.easing](t,this.options.duration*t,0,1,this.options.duration):this.pos=e=t,this.now=(this.end-this.start)*e+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),i&&i.set?i.set(this):Zt.propHooks._default.set(this),this}},Zt.prototype.init.prototype=Zt.prototype,Zt.propHooks={_default:{get:function(t){var e;return 1!==t.elem.nodeType||null!=t.elem[t.prop]&&null==t.elem.style[t.prop]?t.elem[t.prop]:(e=b.css(t.elem,t.prop,""))&&"auto"!==e?e:0},set:function(t){b.fx.step[t.prop]?b.fx.step[t.prop](t):1!==t.elem.nodeType||!b.cssHooks[t.prop]&&null==t.elem.style[qt(t.prop)]?t.elem[t.prop]=t.now:b.style(t.elem,t.prop,t.now+t.unit)}}},Zt.propHooks.scrollTop=Zt.propHooks.scrollLeft={set:function(t){t.elem.nodeType&&t.elem.parentNode&&(t.elem[t.prop]=t.now)}},b.easing={linear:function(t){return t},swing:function(t){return.5-Math.cos(t*Math.PI)/2},_default:"swing"},b.fx=Zt.prototype.init,b.fx.step={};var Qt,te,ee=/^(?:toggle|show|hide)$/,ie=/queueHooks$/;function ne(){te&&(!1===m.hidden&&t.requestAnimationFrame?t.requestAnimationFrame(ne):t.setTimeout(ne,b.fx.interval),b.fx.tick())}function se(){return t.setTimeout(function(){Qt=void 0}),Qt=Date.now()}function oe(t,e){var i,n=0,s={height:t};for(e=e?1:0;n<4;n+=2-e)s["margin"+(i=et[n])]=s["padding"+i]=t;return e&&(s.opacity=s.width=t),s}function re(t,e,i){for(var n,s=(ae.tweeners[e]||[]).concat(ae.tweeners["*"]),o=0,r=s.length;o<r;o++)if(n=s[o].call(i,e,t))return n}function ae(t,e,i){var n,s,o=0,r=ae.prefilters.length,a=b.Deferred().always(function(){delete l.elem}),l=function(){if(s)return!1;for(var e=Qt||se(),i=Math.max(0,u.startTime+u.duration-e),n=1-(i/u.duration||0),o=0,r=u.tweens.length;o<r;o++)u.tweens[o].run(n);return a.notifyWith(t,[u,n,i]),n<1&&r?i:(r||a.notifyWith(t,[u,1,0]),a.resolveWith(t,[u]),!1)},u=a.promise({elem:t,props:b.extend({},e),opts:b.extend(!0,{specialEasing:{},easing:b.easing._default},i),originalProperties:e,originalOptions:i,startTime:Qt||se(),duration:i.duration,tweens:[],createTween:function(e,i){var n=b.Tween(t,u.opts,e,i,u.opts.specialEasing[e]||u.opts.easing);return u.tweens.push(n),n},stop:function(e){var i=0,n=e?u.tweens.length:0;if(s)return this;for(s=!0;i<n;i++)u.tweens[i].run(1);return e?(a.notifyWith(t,[u,1,0]),a.resolveWith(t,[u,e])):a.rejectWith(t,[u,e]),this}}),c=u.props;for(!function(t,e){var i,n,s,o,r;for(i in t)if(s=e[n=B(i)],o=t[i],Array.isArray(o)&&(s=o[1],o=t[i]=o[0]),i!==n&&(t[n]=o,delete t[i]),(r=b.cssHooks[n])&&"expand"in r)for(i in o=r.expand(o),delete t[n],o)i in t||(t[i]=o[i],e[i]=s);else e[n]=s}(c,u.opts.specialEasing);o<r;o++)if(n=ae.prefilters[o].call(u,t,c,u.opts))return f(n.stop)&&(b._queueHooks(u.elem,u.opts.queue).stop=n.stop.bind(n)),n;return b.map(c,re,u),f(u.opts.start)&&u.opts.start.call(t,u),u.progress(u.opts.progress).done(u.opts.done,u.opts.complete).fail(u.opts.fail).always(u.opts.always),b.fx.timer(b.extend(l,{elem:t,anim:u,queue:u.opts.queue})),u}b.Animation=b.extend(ae,{tweeners:{"*":[function(t,e){var i=this.createTween(t,e);return rt(i.elem,t,tt.exec(e),i),i}]},tweener:function(t,e){f(t)?(e=t,t=["*"]):t=t.match(I);for(var i,n=0,s=t.length;n<s;n++)i=t[n],ae.tweeners[i]=ae.tweeners[i]||[],ae.tweeners[i].unshift(e)},prefilters:[function(t,e,i){var n,s,o,r,a,l,u,c,h="width"in e||"height"in e,d=this,p={},f=t.style,g=t.nodeType&&ot(t),m=G.get(t,"fxshow");for(n in i.queue||(null==(r=b._queueHooks(t,"fx")).unqueued&&(r.unqueued=0,a=r.empty.fire,r.empty.fire=function(){r.unqueued||a()}),r.unqueued++,d.always(function(){d.always(function(){r.unqueued--,b.queue(t,"fx").length||r.empty.fire()})})),e)if(s=e[n],ee.test(s)){if(delete e[n],o=o||"toggle"===s,s===(g?"hide":"show")){if("show"!==s||!m||void 0===m[n])continue;g=!0}p[n]=m&&m[n]||b.style(t,n)}if((l=!b.isEmptyObject(e))||!b.isEmptyObject(p))for(n in h&&1===t.nodeType&&(i.overflow=[f.overflow,f.overflowX,f.overflowY],null==(u=m&&m.display)&&(u=G.get(t,"display")),"none"===(c=b.css(t,"display"))&&(u?c=u:(ut([t],!0),u=t.style.display||u,c=b.css(t,"display"),ut([t]))),("inline"===c||"inline-block"===c&&null!=u)&&"none"===b.css(t,"float")&&(l||(d.done(function(){f.display=u}),null==u&&(c=f.display,u="none"===c?"":c)),f.display="inline-block")),i.overflow&&(f.overflow="hidden",d.always(function(){f.overflow=i.overflow[0],f.overflowX=i.overflow[1],f.overflowY=i.overflow[2]})),l=!1,p)l||(m?"hidden"in m&&(g=m.hidden):m=G.access(t,"fxshow",{display:u}),o&&(m.hidden=!g),g&&ut([t],!0),d.done(function(){for(n in g||ut([t]),G.remove(t,"fxshow"),p)b.style(t,n,p[n])})),l=re(g?m[n]:0,n,d),n in m||(m[n]=l.start,g&&(l.end=l.start,l.start=0))}],prefilter:function(t,e){e?ae.prefilters.unshift(t):ae.prefilters.push(t)}}),b.speed=function(t,e,i){var n=t&&"object"==typeof t?b.extend({},t):{complete:i||!i&&e||f(t)&&t,duration:t,easing:i&&e||e&&!f(e)&&e};return b.fx.off?n.duration=0:"number"!=typeof n.duration&&(n.duration in b.fx.speeds?n.duration=b.fx.speeds[n.duration]:n.duration=b.fx.speeds._default),null!=n.queue&&!0!==n.queue||(n.queue="fx"),n.old=n.complete,n.complete=function(){f(n.old)&&n.old.call(this),n.queue&&b.dequeue(this,n.queue)},n},b.fn.extend({fadeTo:function(t,e,i,n){return this.filter(ot).css("opacity",0).show().end().animate({opacity:e},t,i,n)},animate:function(t,e,i,n){var s=b.isEmptyObject(t),o=b.speed(e,i,n),r=function(){var e=ae(this,b.extend({},t),o);(s||G.get(this,"finish"))&&e.stop(!0)};return r.finish=r,s||!1===o.queue?this.each(r):this.queue(o.queue,r)},stop:function(t,e,i){var n=function(t){var e=t.stop;delete t.stop,e(i)};return"string"!=typeof t&&(i=e,e=t,t=void 0),e&&this.queue(t||"fx",[]),this.each(function(){var e=!0,s=null!=t&&t+"queueHooks",o=b.timers,r=G.get(this);if(s)r[s]&&r[s].stop&&n(r[s]);else for(s in r)r[s]&&r[s].stop&&ie.test(s)&&n(r[s]);for(s=o.length;s--;)o[s].elem!==this||null!=t&&o[s].queue!==t||(o[s].anim.stop(i),e=!1,o.splice(s,1));!e&&i||b.dequeue(this,t)})},finish:function(t){return!1!==t&&(t=t||"fx"),this.each(function(){var e,i=G.get(this),n=i[t+"queue"],s=i[t+"queueHooks"],o=b.timers,r=n?n.length:0;for(i.finish=!0,b.queue(this,t,[]),s&&s.stop&&s.stop.call(this,!0),e=o.length;e--;)o[e].elem===this&&o[e].queue===t&&(o[e].anim.stop(!0),o.splice(e,1));for(e=0;e<r;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete i.finish})}}),b.each(["toggle","show","hide"],function(t,e){var i=b.fn[e];b.fn[e]=function(t,n,s){return null==t||"boolean"==typeof t?i.apply(this,arguments):this.animate(oe(e,!0),t,n,s)}}),b.each({slideDown:oe("show"),slideUp:oe("hide"),slideToggle:oe("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(t,e){b.fn[t]=function(t,i,n){return this.animate(e,t,i,n)}}),b.timers=[],b.fx.tick=function(){var t,e=0,i=b.timers;for(Qt=Date.now();e<i.length;e++)(t=i[e])()||i[e]!==t||i.splice(e--,1);i.length||b.fx.stop(),Qt=void 0},b.fx.timer=function(t){b.timers.push(t),b.fx.start()},b.fx.interval=13,b.fx.start=function(){te||(te=!0,ne())},b.fx.stop=function(){te=null},b.fx.speeds={slow:600,fast:200,_default:400},b.fn.delay=function(e,i){return e=b.fx&&b.fx.speeds[e]||e,i=i||"fx",this.queue(i,function(i,n){var s=t.setTimeout(i,e);n.stop=function(){t.clearTimeout(s)}})},function(){var t=m.createElement("input"),e=m.createElement("select").appendChild(m.createElement("option"));t.type="checkbox",p.checkOn=""!==t.value,p.optSelected=e.selected,(t=m.createElement("input")).value="t",t.type="radio",p.radioValue="t"===t.value}();var le,ue=b.expr.attrHandle;b.fn.extend({attr:function(t,e){return W(this,b.attr,t,e,arguments.length>1)},removeAttr:function(t){return this.each(function(){b.removeAttr(this,t)})}}),b.extend({attr:function(t,e,i){var n,s,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===t.getAttribute?b.prop(t,e,i):(1===o&&b.isXMLDoc(t)||(s=b.attrHooks[e.toLowerCase()]||(b.expr.match.bool.test(e)?le:void 0)),void 0!==i?null===i?void b.removeAttr(t,e):s&&"set"in s&&void 0!==(n=s.set(t,i,e))?n:(t.setAttribute(e,i+""),i):s&&"get"in s&&null!==(n=s.get(t,e))?n:null==(n=b.find.attr(t,e))?void 0:n)},attrHooks:{type:{set:function(t,e){if(!p.radioValue&&"radio"===e&&D(t,"input")){var i=t.value;return t.setAttribute("type",e),i&&(t.value=i),e}}}},removeAttr:function(t,e){var i,n=0,s=e&&e.match(I);if(s&&1===t.nodeType)for(;i=s[n++];)t.removeAttribute(i)}}),le={set:function(t,e,i){return!1===e?b.removeAttr(t,i):t.setAttribute(i,i),i}},b.each(b.expr.match.bool.source.match(/\w+/g),function(t,e){var i=ue[e]||b.find.attr;ue[e]=function(t,e,n){var s,o,r=e.toLowerCase();return n||(o=ue[r],ue[r]=s,s=null!=i(t,e,n)?r:null,ue[r]=o),s}});var ce=/^(?:input|select|textarea|button)$/i,he=/^(?:a|area)$/i;function de(t){return(t.match(I)||[]).join(" ")}function pe(t){return t.getAttribute&&t.getAttribute("class")||""}function fe(t){return Array.isArray(t)?t:"string"==typeof t&&t.match(I)||[]}b.fn.extend({prop:function(t,e){return W(this,b.prop,t,e,arguments.length>1)},removeProp:function(t){return this.each(function(){delete this[b.propFix[t]||t]})}}),b.extend({prop:function(t,e,i){var n,s,o=t.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&b.isXMLDoc(t)||(e=b.propFix[e]||e,s=b.propHooks[e]),void 0!==i?s&&"set"in s&&void 0!==(n=s.set(t,i,e))?n:t[e]=i:s&&"get"in s&&null!==(n=s.get(t,e))?n:t[e]},propHooks:{tabIndex:{get:function(t){var e=b.find.attr(t,"tabindex");return e?parseInt(e,10):ce.test(t.nodeName)||he.test(t.nodeName)&&t.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),p.optSelected||(b.propHooks.selected={get:function(t){var e=t.parentNode;return e&&e.parentNode&&e.parentNode.selectedIndex,null},set:function(t){var e=t.parentNode;e&&(e.selectedIndex,e.parentNode&&e.parentNode.selectedIndex)}}),b.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){b.propFix[this.toLowerCase()]=this}),b.fn.extend({addClass:function(t){var e,i,n,s,o,r,a,l=0;if(f(t))return this.each(function(e){b(this).addClass(t.call(this,e,pe(this)))});if((e=fe(t)).length)for(;i=this[l++];)if(s=pe(i),n=1===i.nodeType&&" "+de(s)+" "){for(r=0;o=e[r++];)n.indexOf(" "+o+" ")<0&&(n+=o+" ");s!==(a=de(n))&&i.setAttribute("class",a)}return this},removeClass:function(t){var e,i,n,s,o,r,a,l=0;if(f(t))return this.each(function(e){b(this).removeClass(t.call(this,e,pe(this)))});if(!arguments.length)return this.attr("class","");if((e=fe(t)).length)for(;i=this[l++];)if(s=pe(i),n=1===i.nodeType&&" "+de(s)+" "){for(r=0;o=e[r++];)for(;n.indexOf(" "+o+" ")>-1;)n=n.replace(" "+o+" "," ");s!==(a=de(n))&&i.setAttribute("class",a)}return this},toggleClass:function(t,e){var i=typeof t,n="string"===i||Array.isArray(t);return"boolean"==typeof e&&n?e?this.addClass(t):this.removeClass(t):f(t)?this.each(function(i){b(this).toggleClass(t.call(this,i,pe(this),e),e)}):this.each(function(){var e,s,o,r;if(n)for(s=0,o=b(this),r=fe(t);e=r[s++];)o.hasClass(e)?o.removeClass(e):o.addClass(e);else void 0!==t&&"boolean"!==i||((e=pe(this))&&G.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===t?"":G.get(this,"__className__")||""))})},hasClass:function(t){var e,i,n=0;for(e=" "+t+" ";i=this[n++];)if(1===i.nodeType&&(" "+de(pe(i))+" ").indexOf(e)>-1)return!0;return!1}});var ge=/\r/g;b.fn.extend({val:function(t){var e,i,n,s=this[0];return arguments.length?(n=f(t),this.each(function(i){var s;1===this.nodeType&&(null==(s=n?t.call(this,i,b(this).val()):t)?s="":"number"==typeof s?s+="":Array.isArray(s)&&(s=b.map(s,function(t){return null==t?"":t+""})),(e=b.valHooks[this.type]||b.valHooks[this.nodeName.toLowerCase()])&&"set"in e&&void 0!==e.set(this,s,"value")||(this.value=s))})):s?(e=b.valHooks[s.type]||b.valHooks[s.nodeName.toLowerCase()])&&"get"in e&&void 0!==(i=e.get(s,"value"))?i:"string"==typeof(i=s.value)?i.replace(ge,""):null==i?"":i:void 0}}),b.extend({valHooks:{option:{get:function(t){var e=b.find.attr(t,"value");return null!=e?e:de(b.text(t))}},select:{get:function(t){var e,i,n,s=t.options,o=t.selectedIndex,r="select-one"===t.type,a=r?null:[],l=r?o+1:s.length;for(n=o<0?l:r?o:0;n<l;n++)if(((i=s[n]).selected||n===o)&&!i.disabled&&(!i.parentNode.disabled||!D(i.parentNode,"optgroup"))){if(e=b(i).val(),r)return e;a.push(e)}return a},set:function(t,e){for(var i,n,s=t.options,o=b.makeArray(e),r=s.length;r--;)((n=s[r]).selected=b.inArray(b.valHooks.option.get(n),o)>-1)&&(i=!0);return i||(t.selectedIndex=-1),o}}}}),b.each(["radio","checkbox"],function(){b.valHooks[this]={set:function(t,e){if(Array.isArray(e))return t.checked=b.inArray(b(t).val(),e)>-1}},p.checkOn||(b.valHooks[this].get=function(t){return null===t.getAttribute("value")?"on":t.value})}),p.focusin="onfocusin"in t;var me=/^(?:focusinfocus|focusoutblur)$/,ve=function(t){t.stopPropagation()};b.extend(b.event,{trigger:function(e,i,n,s){var o,r,a,l,u,h,d,p,v=[n||m],y=c.call(e,"type")?e.type:e,_=c.call(e,"namespace")?e.namespace.split("."):[];if(r=p=a=n=n||m,3!==n.nodeType&&8!==n.nodeType&&!me.test(y+b.event.triggered)&&(y.indexOf(".")>-1&&(_=y.split("."),y=_.shift(),_.sort()),u=y.indexOf(":")<0&&"on"+y,(e=e[b.expando]?e:new b.Event(y,"object"==typeof e&&e)).isTrigger=s?2:3,e.namespace=_.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+_.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),i=null==i?[e]:b.makeArray(i,[e]),d=b.event.special[y]||{},s||!d.trigger||!1!==d.trigger.apply(n,i))){if(!s&&!d.noBubble&&!g(n)){for(l=d.delegateType||y,me.test(l+y)||(r=r.parentNode);r;r=r.parentNode)v.push(r),a=r;a===(n.ownerDocument||m)&&v.push(a.defaultView||a.parentWindow||t)}for(o=0;(r=v[o++])&&!e.isPropagationStopped();)p=r,e.type=o>1?l:d.bindType||y,(h=(G.get(r,"events")||Object.create(null))[e.type]&&G.get(r,"handle"))&&h.apply(r,i),(h=u&&r[u])&&h.apply&&V(r)&&(e.result=h.apply(r,i),!1===e.result&&e.preventDefault());return e.type=y,s||e.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),i)||!V(n)||u&&f(n[y])&&!g(n)&&((a=n[u])&&(n[u]=null),b.event.triggered=y,e.isPropagationStopped()&&p.addEventListener(y,ve),n[y](),e.isPropagationStopped()&&p.removeEventListener(y,ve),b.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(t,e,i){var n=b.extend(new b.Event,i,{type:t,isSimulated:!0});b.event.trigger(n,null,e)}}),b.fn.extend({trigger:function(t,e){return this.each(function(){b.event.trigger(t,e,this)})},triggerHandler:function(t,e){var i=this[0];if(i)return b.event.trigger(t,e,i,!0)}}),p.focusin||b.each({focus:"focusin",blur:"focusout"},function(t,e){var i=function(t){b.event.simulate(e,t.target,b.event.fix(t))};b.event.special[e]={setup:function(){var n=this.ownerDocument||this.document||this,s=G.access(n,e);s||n.addEventListener(t,i,!0),G.access(n,e,(s||0)+1)},teardown:function(){var n=this.ownerDocument||this.document||this,s=G.access(n,e)-1;s?G.access(n,e,s):(n.removeEventListener(t,i,!0),G.remove(n,e))}}});var ye=t.location,_e={guid:Date.now()},be=/\?/;b.parseXML=function(e){var i,n;if(!e||"string"!=typeof e)return null;try{i=(new t.DOMParser).parseFromString(e,"text/xml")}catch(t){}return n=i&&i.getElementsByTagName("parsererror")[0],i&&!n||b.error("Invalid XML: "+(n?b.map(n.childNodes,function(t){return t.textContent}).join("\n"):e)),i};var we=/\[\]$/,xe=/\r?\n/g,ke=/^(?:submit|button|image|reset|file)$/i,Ce=/^(?:input|select|textarea|keygen)/i;function Se(t,e,i,n){var s;if(Array.isArray(e))b.each(e,function(e,s){i||we.test(t)?n(t,s):Se(t+"["+("object"==typeof s&&null!=s?e:"")+"]",s,i,n)});else if(i||"object"!==_(e))n(t,e);else for(s in e)Se(t+"["+s+"]",e[s],i,n)}b.param=function(t,e){var i,n=[],s=function(t,e){var i=f(e)?e():e;n[n.length]=encodeURIComponent(t)+"="+encodeURIComponent(null==i?"":i)};if(null==t)return"";if(Array.isArray(t)||t.jquery&&!b.isPlainObject(t))b.each(t,function(){s(this.name,this.value)});else for(i in t)Se(i,t[i],e,s);return n.join("&")},b.fn.extend({serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var t=b.prop(this,"elements");return t?b.makeArray(t):this}).filter(function(){var t=this.type;return this.name&&!b(this).is(":disabled")&&Ce.test(this.nodeName)&&!ke.test(t)&&(this.checked||!dt.test(t))}).map(function(t,e){var i=b(this).val();return null==i?null:Array.isArray(i)?b.map(i,function(t){return{name:e.name,value:t.replace(xe,"\r\n")}}):{name:e.name,value:i.replace(xe,"\r\n")}}).get()}});var De=/%20/g,Te=/#.*$/,Me=/([?&])_=[^&]*/,je=/^(.*?):[ \t]*([^\r\n]*)$/gm,Ae=/^(?:GET|HEAD)$/,Oe=/^\/\//,Ee={},Pe={},Ie="*/".concat("*"),Ne=m.createElement("a");function Fe(t){return function(e,i){"string"!=typeof e&&(i=e,e="*");var n,s=0,o=e.toLowerCase().match(I)||[];if(f(i))for(;n=o[s++];)"+"===n[0]?(n=n.slice(1)||"*",(t[n]=t[n]||[]).unshift(i)):(t[n]=t[n]||[]).push(i)}}function Le(t,e,i,n){var s={},o=t===Pe;function r(a){var l;return s[a]=!0,b.each(t[a]||[],function(t,a){var u=a(e,i,n);return"string"!=typeof u||o||s[u]?o?!(l=u):void 0:(e.dataTypes.unshift(u),r(u),!1)}),l}return r(e.dataTypes[0])||!s["*"]&&r("*")}function Re(t,e){var i,n,s=b.ajaxSettings.flatOptions||{};for(i in e)void 0!==e[i]&&((s[i]?t:n||(n={}))[i]=e[i]);return n&&b.extend(!0,t,n),t}Ne.href=ye.href,b.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ye.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(ye.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Ie,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":b.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(t,e){return e?Re(Re(t,b.ajaxSettings),e):Re(b.ajaxSettings,t)},ajaxPrefilter:Fe(Ee),ajaxTransport:Fe(Pe),ajax:function(e,i){"object"==typeof e&&(i=e,e=void 0),i=i||{};var n,s,o,r,a,l,u,c,h,d,p=b.ajaxSetup({},i),f=p.context||p,g=p.context&&(f.nodeType||f.jquery)?b(f):b.event,v=b.Deferred(),y=b.Callbacks("once memory"),_=p.statusCode||{},w={},x={},k="canceled",C={readyState:0,getResponseHeader:function(t){var e;if(u){if(!r)for(r={};e=je.exec(o);)r[e[1].toLowerCase()+" "]=(r[e[1].toLowerCase()+" "]||[]).concat(e[2]);e=r[t.toLowerCase()+" "]}return null==e?null:e.join(", ")},getAllResponseHeaders:function(){return u?o:null},setRequestHeader:function(t,e){return null==u&&(t=x[t.toLowerCase()]=x[t.toLowerCase()]||t,w[t]=e),this},overrideMimeType:function(t){return null==u&&(p.mimeType=t),this},statusCode:function(t){var e;if(t)if(u)C.always(t[C.status]);else for(e in t)_[e]=[_[e],t[e]];return this},abort:function(t){var e=t||k;return n&&n.abort(e),S(0,e),this}};if(v.promise(C),p.url=((e||p.url||ye.href)+"").replace(Oe,ye.protocol+"//"),p.type=i.method||i.type||p.method||p.type,p.dataTypes=(p.dataType||"*").toLowerCase().match(I)||[""],null==p.crossDomain){l=m.createElement("a");try{l.href=p.url,l.href=l.href,p.crossDomain=Ne.protocol+"//"+Ne.host!=l.protocol+"//"+l.host}catch(t){p.crossDomain=!0}}if(p.data&&p.processData&&"string"!=typeof p.data&&(p.data=b.param(p.data,p.traditional)),Le(Ee,p,i,C),u)return C;for(h in(c=b.event&&p.global)&&0==b.active++&&b.event.trigger("ajaxStart"),p.type=p.type.toUpperCase(),p.hasContent=!Ae.test(p.type),s=p.url.replace(Te,""),p.hasContent?p.data&&p.processData&&0===(p.contentType||"").indexOf("application/x-www-form-urlencoded")&&(p.data=p.data.replace(De,"+")):(d=p.url.slice(s.length),p.data&&(p.processData||"string"==typeof p.data)&&(s+=(be.test(s)?"&":"?")+p.data,delete p.data),!1===p.cache&&(s=s.replace(Me,"$1"),d=(be.test(s)?"&":"?")+"_="+_e.guid+++d),p.url=s+d),p.ifModified&&(b.lastModified[s]&&C.setRequestHeader("If-Modified-Since",b.lastModified[s]),b.etag[s]&&C.setRequestHeader("If-None-Match",b.etag[s])),(p.data&&p.hasContent&&!1!==p.contentType||i.contentType)&&C.setRequestHeader("Content-Type",p.contentType),C.setRequestHeader("Accept",p.dataTypes[0]&&p.accepts[p.dataTypes[0]]?p.accepts[p.dataTypes[0]]+("*"!==p.dataTypes[0]?", "+Ie+"; q=0.01":""):p.accepts["*"]),p.headers)C.setRequestHeader(h,p.headers[h]);if(p.beforeSend&&(!1===p.beforeSend.call(f,C,p)||u))return C.abort();if(k="abort",y.add(p.complete),C.done(p.success),C.fail(p.error),n=Le(Pe,p,i,C)){if(C.readyState=1,c&&g.trigger("ajaxSend",[C,p]),u)return C;p.async&&p.timeout>0&&(a=t.setTimeout(function(){C.abort("timeout")},p.timeout));try{u=!1,n.send(w,S)}catch(t){if(u)throw t;S(-1,t)}}else S(-1,"No Transport");function S(e,i,r,l){var h,d,m,w,x,k=i;u||(u=!0,a&&t.clearTimeout(a),n=void 0,o=l||"",C.readyState=e>0?4:0,h=e>=200&&e<300||304===e,r&&(w=function(t,e,i){for(var n,s,o,r,a=t.contents,l=t.dataTypes;"*"===l[0];)l.shift(),void 0===n&&(n=t.mimeType||e.getResponseHeader("Content-Type"));if(n)for(s in a)if(a[s]&&a[s].test(n)){l.unshift(s);break}if(l[0]in i)o=l[0];else{for(s in i){if(!l[0]||t.converters[s+" "+l[0]]){o=s;break}r||(r=s)}o=o||r}if(o)return o!==l[0]&&l.unshift(o),i[o]}(p,C,r)),!h&&b.inArray("script",p.dataTypes)>-1&&b.inArray("json",p.dataTypes)<0&&(p.converters["text script"]=function(){}),w=function(t,e,i,n){var s,o,r,a,l,u={},c=t.dataTypes.slice();if(c[1])for(r in t.converters)u[r.toLowerCase()]=t.converters[r];for(o=c.shift();o;)if(t.responseFields[o]&&(i[t.responseFields[o]]=e),!l&&n&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(!(r=u[l+" "+o]||u["* "+o]))for(s in u)if((a=s.split(" "))[1]===o&&(r=u[l+" "+a[0]]||u["* "+a[0]])){!0===r?r=u[s]:!0!==u[s]&&(o=a[0],c.unshift(a[1]));break}if(!0!==r)if(r&&t.throws)e=r(e);else try{e=r(e)}catch(t){return{state:"parsererror",error:r?t:"No conversion from "+l+" to "+o}}}return{state:"success",data:e}}(p,w,C,h),h?(p.ifModified&&((x=C.getResponseHeader("Last-Modified"))&&(b.lastModified[s]=x),(x=C.getResponseHeader("etag"))&&(b.etag[s]=x)),204===e||"HEAD"===p.type?k="nocontent":304===e?k="notmodified":(k=w.state,d=w.data,h=!(m=w.error))):(m=k,!e&&k||(k="error",e<0&&(e=0))),C.status=e,C.statusText=(i||k)+"",h?v.resolveWith(f,[d,k,C]):v.rejectWith(f,[C,k,m]),C.statusCode(_),_=void 0,c&&g.trigger(h?"ajaxSuccess":"ajaxError",[C,p,h?d:m]),y.fireWith(f,[C,k]),c&&(g.trigger("ajaxComplete",[C,p]),--b.active||b.event.trigger("ajaxStop")))}return C},getJSON:function(t,e,i){return b.get(t,e,i,"json")},getScript:function(t,e){return b.get(t,void 0,e,"script")}}),b.each(["get","post"],function(t,e){b[e]=function(t,i,n,s){return f(i)&&(s=s||n,n=i,i=void 0),b.ajax(b.extend({url:t,type:e,dataType:s,data:i,success:n},b.isPlainObject(t)&&t))}}),b.ajaxPrefilter(function(t){var e;for(e in t.headers)"content-type"===e.toLowerCase()&&(t.contentType=t.headers[e]||"")}),b._evalUrl=function(t,e,i){return b.ajax({url:t,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(t){b.globalEval(t,e,i)}})},b.fn.extend({wrapAll:function(t){var e;return this[0]&&(f(t)&&(t=t.call(this[0])),e=b(t,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&e.insertBefore(this[0]),e.map(function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t}).append(this)),this},wrapInner:function(t){return f(t)?this.each(function(e){b(this).wrapInner(t.call(this,e))}):this.each(function(){var e=b(this),i=e.contents();i.length?i.wrapAll(t):e.append(t)})},wrap:function(t){var e=f(t);return this.each(function(i){b(this).wrapAll(e?t.call(this,i):t)})},unwrap:function(t){return this.parent(t).not("body").each(function(){b(this).replaceWith(this.childNodes)}),this}}),b.expr.pseudos.hidden=function(t){return!b.expr.pseudos.visible(t)},b.expr.pseudos.visible=function(t){return!!(t.offsetWidth||t.offsetHeight||t.getClientRects().length)},b.ajaxSettings.xhr=function(){try{return new t.XMLHttpRequest}catch(t){}};var He={0:200,1223:204},ze=b.ajaxSettings.xhr();p.cors=!!ze&&"withCredentials"in ze,p.ajax=ze=!!ze,b.ajaxTransport(function(e){var i,n;if(p.cors||ze&&!e.crossDomain)return{send:function(s,o){var r,a=e.xhr();if(a.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(r in e.xhrFields)a[r]=e.xhrFields[r];for(r in e.mimeType&&a.overrideMimeType&&a.overrideMimeType(e.mimeType),e.crossDomain||s["X-Requested-With"]||(s["X-Requested-With"]="XMLHttpRequest"),s)a.setRequestHeader(r,s[r]);i=function(t){return function(){i&&(i=n=a.onload=a.onerror=a.onabort=a.ontimeout=a.onreadystatechange=null,"abort"===t?a.abort():"error"===t?"number"!=typeof a.status?o(0,"error"):o(a.status,a.statusText):o(He[a.status]||a.status,a.statusText,"text"!==(a.responseType||"text")||"string"!=typeof a.responseText?{binary:a.response}:{text:a.responseText},a.getAllResponseHeaders()))}},a.onload=i(),n=a.onerror=a.ontimeout=i("error"),void 0!==a.onabort?a.onabort=n:a.onreadystatechange=function(){4===a.readyState&&t.setTimeout(function(){i&&n()})},i=i("abort");try{a.send(e.hasContent&&e.data||null)}catch(t){if(i)throw t}},abort:function(){i&&i()}}}),b.ajaxPrefilter(function(t){t.crossDomain&&(t.contents.script=!1)}),b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(t){return b.globalEval(t),t}}}),b.ajaxPrefilter("script",function(t){void 0===t.cache&&(t.cache=!1),t.crossDomain&&(t.type="GET")}),b.ajaxTransport("script",function(t){var e,i;if(t.crossDomain||t.scriptAttrs)return{send:function(n,s){e=b("<script>").attr(t.scriptAttrs||{}).prop({charset:t.scriptCharset,src:t.url}).on("load error",i=function(t){e.remove(),i=null,t&&s("error"===t.type?404:200,t.type)}),m.head.appendChild(e[0])},abort:function(){i&&i()}}});var We,Ye=[],Ue=/(=)\?(?=&|$)|\?\?/;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=Ye.pop()||b.expando+"_"+_e.guid++;return this[t]=!0,t}}),b.ajaxPrefilter("json jsonp",function(e,i,n){var s,o,r,a=!1!==e.jsonp&&(Ue.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ue.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return s=e.jsonpCallback=f(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ue,"$1"+s):!1!==e.jsonp&&(e.url+=(be.test(e.url)?"&":"?")+e.jsonp+"="+s),e.converters["script json"]=function(){return r||b.error(s+" was not called"),r[0]},e.dataTypes[0]="json",o=t[s],t[s]=function(){r=arguments},n.always(function(){void 0===o?b(t).removeProp(s):t[s]=o,e[s]&&(e.jsonpCallback=i.jsonpCallback,Ye.push(s)),r&&f(o)&&o(r[0]),r=o=void 0}),"script"}),p.createHTMLDocument=((We=m.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===We.childNodes.length),b.parseHTML=function(t,e,i){return"string"!=typeof t?[]:("boolean"==typeof e&&(i=e,e=!1),e||(p.createHTMLDocument?((n=(e=m.implementation.createHTMLDocument("")).createElement("base")).href=m.location.href,e.head.appendChild(n)):e=m),o=!i&&[],(s=T.exec(t))?[e.createElement(s[1])]:(s=_t([t],e,o),o&&o.length&&b(o).remove(),b.merge([],s.childNodes)));var n,s,o},b.fn.load=function(t,e,i){var n,s,o,r=this,a=t.indexOf(" ");return a>-1&&(n=de(t.slice(a)),t=t.slice(0,a)),f(e)?(i=e,e=void 0):e&&"object"==typeof e&&(s="POST"),r.length>0&&b.ajax({url:t,type:s||"GET",dataType:"html",data:e}).done(function(t){o=arguments,r.html(n?b("<div>").append(b.parseHTML(t)).find(n):t)}).always(i&&function(t,e){r.each(function(){i.apply(this,o||[t.responseText,e,t])})}),this},b.expr.pseudos.animated=function(t){return b.grep(b.timers,function(e){return t===e.elem}).length},b.offset={setOffset:function(t,e,i){var n,s,o,r,a,l,u=b.css(t,"position"),c=b(t),h={};"static"===u&&(t.style.position="relative"),a=c.offset(),o=b.css(t,"top"),l=b.css(t,"left"),("absolute"===u||"fixed"===u)&&(o+l).indexOf("auto")>-1?(r=(n=c.position()).top,s=n.left):(r=parseFloat(o)||0,s=parseFloat(l)||0),f(e)&&(e=e.call(t,i,b.extend({},a))),null!=e.top&&(h.top=e.top-a.top+r),null!=e.left&&(h.left=e.left-a.left+s),"using"in e?e.using.call(t,h):c.css(h)}},b.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){b.offset.setOffset(this,t,e)});var e,i,n=this[0];return n?n.getClientRects().length?(e=n.getBoundingClientRect(),i=n.ownerDocument.defaultView,{top:e.top+i.pageYOffset,left:e.left+i.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var t,e,i,n=this[0],s={top:0,left:0};if("fixed"===b.css(n,"position"))e=n.getBoundingClientRect();else{for(e=this.offset(),i=n.ownerDocument,t=n.offsetParent||i.documentElement;t&&(t===i.body||t===i.documentElement)&&"static"===b.css(t,"position");)t=t.parentNode;t&&t!==n&&1===t.nodeType&&((s=b(t).offset()).top+=b.css(t,"borderTopWidth",!0),s.left+=b.css(t,"borderLeftWidth",!0))}return{top:e.top-s.top-b.css(n,"marginTop",!0),left:e.left-s.left-b.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent;t&&"static"===b.css(t,"position");)t=t.offsetParent;return t||it})}}),b.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,e){var i="pageYOffset"===e;b.fn[t]=function(n){return W(this,function(t,n,s){var o;if(g(t)?o=t:9===t.nodeType&&(o=t.defaultView),void 0===s)return o?o[e]:t[n];o?o.scrollTo(i?o.pageXOffset:s,i?s:o.pageYOffset):t[n]=s},t,n,arguments.length)}}),b.each(["top","left"],function(t,e){b.cssHooks[e]=zt(p.pixelPosition,function(t,i){if(i)return i=Ht(t,e),Nt.test(i)?b(t).position()[e]+"px":i})}),b.each({Height:"height",Width:"width"},function(t,e){b.each({padding:"inner"+t,content:e,"":"outer"+t},function(i,n){b.fn[n]=function(s,o){var r=arguments.length&&(i||"boolean"!=typeof s),a=i||(!0===s||!0===o?"margin":"border");return W(this,function(e,i,s){var o;return g(e)?0===n.indexOf("outer")?e["inner"+t]:e.document.documentElement["client"+t]:9===e.nodeType?(o=e.documentElement,Math.max(e.body["scroll"+t],o["scroll"+t],e.body["offset"+t],o["offset"+t],o["client"+t])):void 0===s?b.css(e,i,a):b.style(e,i,s,a)},e,r?s:void 0,r)}})}),b.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){b.fn[e]=function(t){return this.on(e,t)}}),b.fn.extend({bind:function(t,e,i){return this.on(t,null,e,i)},unbind:function(t,e){return this.off(t,null,e)},delegate:function(t,e,i,n){return this.on(e,t,i,n)},undelegate:function(t,e,i){return 1===arguments.length?this.off(t,"**"):this.off(e,t||"**",i)},hover:function(t,e){return this.mouseenter(t).mouseleave(e||t)}}),b.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(t,e){b.fn[e]=function(t,i){return arguments.length>0?this.on(e,null,t,i):this.trigger(e)}});var qe=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;b.proxy=function(t,e){var i,n,o;if("string"==typeof e&&(i=t[e],e=t,t=i),f(t))return n=s.call(arguments,2),(o=function(){return t.apply(e||this,n.concat(s.call(arguments)))}).guid=t.guid=t.guid||b.guid++,o},b.holdReady=function(t){t?b.readyWait++:b.ready(!0)},b.isArray=Array.isArray,b.parseJSON=JSON.parse,b.nodeName=D,b.isFunction=f,b.isWindow=g,b.camelCase=B,b.type=_,b.now=Date.now,b.isNumeric=function(t){var e=b.type(t);return("number"===e||"string"===e)&&!isNaN(t-parseFloat(t))},b.trim=function(t){return null==t?"":(t+"").replace(qe,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return b});var Be=t.jQuery,Ve=t.$;return b.noConflict=function(e){return t.$===b&&(t.$=Ve),e&&t.jQuery===b&&(t.jQuery=Be),b},void 0===e&&(t.jQuery=t.$=b),b});var gapi=window.gapi=window.gapi||{};gapi._bs=(new Date).getTime(),function(){var n,aa=function(t){var e=0;return function(){return e<t.length?{done:!1,value:t[e++]}:{done:!0}}},ba="function"==typeof Object.defineProperties?Object.defineProperty:function(t,e,i){return t==Array.prototype||t==Object.prototype?t:(t[e]=i.value,t)},ca=function(t){t=["object"==typeof globalThis&&globalThis,t,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var e=0;e<t.length;++e){var i=t[e];if(i&&i.Math==Math)return i}throw Error("Cannot find global object")},da=ca(this),ha=function(t,e){if(e)t:{var i=da;t=t.split(".");for(var n=0;n<t.length-1;n++){var s=t[n];if(!(s in i))break t;i=i[s]}(e=e(n=i[t=t[t.length-1]]))!=n&&null!=e&&ba(i,t,{configurable:!0,writable:!0,value:e})}};ha("Symbol",function(t){if(t)return t;var e=function(t,e){this.ca=t,ba(this,"description",{configurable:!0,writable:!0,value:e})};e.prototype.toString=function(){return this.ca};var i="jscomp_symbol_"+(1e9*Math.random()>>>0)+"_",n=0,s=function(t){if(this instanceof s)throw new TypeError("Symbol is not a constructor");return new e(i+(t||"")+"_"+n++,t)};return s}),ha("Symbol.iterator",function(t){if(t)return t;t=Symbol("Symbol.iterator");for(var e="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),i=0;i<e.length;i++){var n=da[e[i]];"function"==typeof n&&"function"!=typeof n.prototype[t]&&ba(n.prototype,t,{configurable:!0,writable:!0,value:function(){return ia(aa(this))}})}return t});var ia=function(t){return(t={next:t})[Symbol.iterator]=function(){return this},t},ja=function(t,e){t instanceof String&&(t+="");var i=0,n=!1,s={next:function(){if(!n&&i<t.length){var s=i++;return{value:e(s,t[s]),done:!1}}return n=!0,{done:!0,value:void 0}}};return s[Symbol.iterator]=function(){return s},s};ha("Array.prototype.keys",function(t){return t||function(){return ja(this,function(t){return t})}});var p=this||self,ka=function(t){var e=typeof t;return"object"!=e?e:t?Array.isArray(t)?"array":e:"null"},la=function(t){var e=ka(t);return"array"==e||"object"==e&&"number"==typeof t.length},ma=function(t){var e=typeof t;return"object"==e&&null!=t||"function"==e},na="closure_uid_"+(1e9*Math.random()>>>0),oa=0,pa=function(t,e,i){return t.call.apply(t.bind,arguments)},qa=function(t,e,i){if(!t)throw Error();if(2<arguments.length){var n=Array.prototype.slice.call(arguments,2);return function(){var i=Array.prototype.slice.call(arguments);return Array.prototype.unshift.apply(i,n),t.apply(e,i)}}return function(){return t.apply(e,arguments)}},ra=function(t,e,i){return(ra=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?pa:qa).apply(null,arguments)},sa=function(t,e){function i(){}i.prototype=e.prototype,t.pa=e.prototype,t.prototype=new i,t.prototype.constructor=t,t.B=function(t,i,n){for(var s=Array(arguments.length-2),o=2;o<arguments.length;o++)s[o-2]=arguments[o];return e.prototype[i].apply(t,s)}},ta=function(t){return t},ua=function(t){var e=null,i=p.trustedTypes;if(!i||!i.createPolicy)return e;try{e=i.createPolicy(t,{createHTML:ta,createScript:ta,createScriptURL:ta})}catch(t){p.console&&p.console.error(t.message)}return e},va;function t(e){if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var i=Error().stack;i&&(this.stack=i)}e&&(this.message=String(e))}sa(t,Error),t.prototype.name="CustomError";var wa=function(e,i){for(var n="",s=(e=e.split("%s")).length-1,o=0;o<s;o++)n+=e[o]+(o<i.length?i[o]:"%s");t.call(this,n+e[s])};sa(wa,t),wa.prototype.name="AssertionError";var xa=function(t,e,i,n){var s="Assertion failed";if(i){s+=": "+i;var o=n}else t&&(s+=": "+t,o=e);throw new wa(""+s,o||[])},w=function(t,e,i){return t||xa("",null,e,Array.prototype.slice.call(arguments,2)),t},ya=function(t,e){throw new wa("Failure"+(t?": "+t:""),Array.prototype.slice.call(arguments,1))},za=function(t,e,i){"string"!=typeof t&&xa("Expected string but got %s: %s.",[ka(t),t],e,Array.prototype.slice.call(arguments,2))},Aa=Array.prototype.forEach?function(t,e){w(null!=t.length),Array.prototype.forEach.call(t,e,void 0)}:function(t,e){for(var i=t.length,n="string"==typeof t?t.split(""):t,s=0;s<i;s++)s in n&&e.call(void 0,n[s],s,t)},Ea;function Ba(t){var e=t.length;if(0<e){for(var i=Array(e),n=0;n<e;n++)i[n]=t[n];return i}return[]}function Da(t,e){for(var i in t)e.call(void 0,t[i],i,t)}var x=function(t,e){this.S=t===Fa&&e||"",this.da=Ga};x.prototype.F=!0,x.prototype.D=function(){return this.S},x.prototype.toString=function(){return"Const{"+this.S+"}"};var Ha=function(t){return t instanceof x&&t.constructor===x&&t.da===Ga?t.S:(ya("expected object of type Const, got '"+t+"'"),"type_error:Const")},Ga={},Fa={},z=function(t,e){this.P=e===Ia?t:""};z.prototype.F=!0,z.prototype.D=function(){return this.P.toString()},z.prototype.toString=function(){return this.P.toString()};var Ja=function(t){return t instanceof z&&t.constructor===z?t.P:(ya("expected object of type SafeUrl, got '"+t+"' of type "+ka(t)),"type_error:SafeUrl")},Ka=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i,La=function(t){return t instanceof z?t:(t="object"==typeof t&&t.F?t.D():String(t),w(Ka.test(t),"%s does not match the safe URL pattern",t)||(t="about:invalid#zClosurez"),new z(t,Ia))},Ia={},Ma={},Na=function(t,e,i){this.O=i===Ma?t:"",this.F=!0};Na.prototype.D=function(){return this.O.toString()},Na.prototype.toString=function(){return this.O.toString()};var Oa=function(t,e){t:{try{var i=t&&t.ownerDocument,n=i&&(i.defaultView||i.parentWindow);if((n=n||p).Element&&n.Location){var s=n;break t}}catch(t){}s=null}if(s&&void 0!==s[e]&&(!t||!(t instanceof s[e])&&(t instanceof s.Location||t instanceof s.Element))){if(ma(t))try{var o=t.constructor.displayName||t.constructor.name||Object.prototype.toString.call(t)}catch(t){o="<object could not be stringified>"}else o=void 0===t?"undefined":null===t?"null":typeof t;ya("Argument is not a %s (or a non-Element, non-Location mock); got: %s",e,o)}return t},Qa=function(t,e){Da(e,function(e,i){e&&"object"==typeof e&&e.F&&(e=e.D()),"style"==i?t.style.cssText=e:"class"==i?t.className=e:"for"==i?t.htmlFor=e:Pa.hasOwnProperty(i)?t.setAttribute(Pa[i],e):0==i.lastIndexOf("aria-",0)||0==i.lastIndexOf("data-",0)?t.setAttribute(i,e):t[i]=e})},Pa={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",frameborder:"frameBorder",height:"height",maxlength:"maxLength",nonce:"nonce",role:"role",rowspan:"rowSpan",type:"type",usemap:"useMap",valign:"vAlign",width:"width"},Ra=function(t,e,i,n){function s(i){i&&e.appendChild("string"==typeof i?t.createTextNode(i):i)}for(;n<i.length;n++){var o=i[n];if(!la(o)||ma(o)&&0<o.nodeType)s(o);else{t:{if(o&&"number"==typeof o.length){if(ma(o)){var r="function"==typeof o.item||"string"==typeof o.item;break t}if("function"==typeof o){r="function"==typeof o.item;break t}}r=!1}Aa(r?Ba(o):o,s)}}},Sa=function(t,e){return e=String(e),"application/xhtml+xml"===t.contentType&&(e=e.toLowerCase()),t.createElement(e)},Ta=function(t){return w(t,"Node cannot be null or undefined."),9==t.nodeType?t:t.ownerDocument||t.document},Ua=function(t){this.C=t||p.document||document};n=Ua.prototype,n.getElementsByTagName=function(t,e){return(e||this.C).getElementsByTagName(String(t))},n.ga=function(t,e,i){var n=this.C,s=arguments,o=s[1],r=Sa(n,String(s[0]));return o&&("string"==typeof o?r.className=o:Array.isArray(o)?r.className=o.join(" "):Qa(r,o)),2<s.length&&Ra(n,r,s,2),r},n.createElement=function(t){return Sa(this.C,t)},n.createTextNode=function(t){return this.C.createTextNode(String(t))},n.appendChild=function(t,e){w(null!=t&&null!=e,"goog.dom.appendChild expects non-null arguments"),t.appendChild(e)},n.append=function(t,e){Ra(Ta(t),t,arguments,1)},n.canHaveChildren=function(t){if(1!=t.nodeType)return!1;switch(t.tagName){case"APPLET":case"AREA":case"BASE":case"BR":case"COL":case"COMMAND":case"EMBED":case"FRAME":case"HR":case"IMG":case"INPUT":case"IFRAME":case"ISINDEX":case"KEYGEN":case"LINK":case"NOFRAMES":case"NOSCRIPT":case"META":case"OBJECT":case"PARAM":case"SCRIPT":case"SOURCE":case"STYLE":case"TRACK":case"WBR":return!1}return!0},n.removeNode=function(t){return t&&t.parentNode?t.parentNode.removeChild(t):null},n.contains=function(t,e){if(!t||!e)return!1;if(t.contains&&1==e.nodeType)return t==e||t.contains(e);if(void 0!==t.compareDocumentPosition)return t==e||!!(16&t.compareDocumentPosition(e));for(;e&&t!=e;)e=e.parentNode;return e==t};var A=window,B=document,Va=A.location,Wa=function(){},Xa=/\[native code\]/,C=function(t,e,i){return t[e]=t[e]||i},Ya=function(t){for(var e=0;e<this.length;e++)if(this[e]===t)return e;return-1},$a=function(t){t=t.sort();for(var e=[],i=void 0,n=0;n<t.length;n++){var s=t[n];s!=i&&e.push(s),i=s}return e},ab=/&/g,bb=/</g,cb=/>/g,db=/"/g,eb=/'/g,fb=function(t){return String(t).replace(ab,"&").replace(bb,"<").replace(cb,">").replace(db,""").replace(eb,"'")},D=function(){var t;if((t=Object.create)&&Xa.test(t))t=t(null);else for(var e in t={})t[e]=void 0;return t},E=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},gb=function(t){if(Xa.test(Object.keys))return Object.keys(t);var e,i=[];for(e in t)E(t,e)&&i.push(e);return i},F=function(t,e){for(var i in t=t||{})E(t,i)&&(e[i]=t[i])},hb=function(t){return function(){A.setTimeout(t,0)}},G=function(t,e){if(!t)throw Error(e||"")},H=C(A,"gapi",{}),J=function(t,e,i){var n=new RegExp("([#].*&|[#])"+e+"=([^&#]*)","g");if(e=new RegExp("([?#].*&|[?#])"+e+"=([^&#]*)","g"),t=t&&(n.exec(t)||e.exec(t)))try{i=decodeURIComponent(t[2])}catch(t){}return i},ib=new RegExp(/^/.source+/([a-zA-Z][-+.a-zA-Z0-9]*:)?/.source+/(\/\/[^\/?#]*)?/.source+/([^?#]*)?/.source+/(\?([^#]*))?/.source+/(#((#|[^#])*))?/.source+/$/.source),jb=/[\ud800-\udbff][\udc00-\udfff]|[^!-~]/g,kb=new RegExp(/(%([^0-9a-fA-F%]|[0-9a-fA-F]([^0-9a-fA-F%])?)?)*/.source+/%($|[^0-9a-fA-F]|[0-9a-fA-F]($|[^0-9a-fA-F]))/.source,"g"),lb=/%([a-f]|[0-9a-fA-F][a-f])/g,mb=/^(https?|ftp|file|chrome-extension):$/i,nb=function(t){t=(t=(t=String(t)).replace(jb,function(t){try{return encodeURIComponent(t)}catch(e){return encodeURIComponent(t.replace(/^[^%]+$/g,"�"))}}).replace(kb,function(t){return t.replace(/%/g,"%25")}).replace(lb,function(t){return t.toUpperCase()})).match(ib)||[];var e=D(),i=function(t){return t.replace(/\\/g,"%5C").replace(/\^/g,"%5E").replace(/`/g,"%60").replace(/\{/g,"%7B").replace(/\|/g,"%7C").replace(/\}/g,"%7D")},n=!!(t[1]||"").match(mb);return e.B=i((t[1]||"")+(t[2]||"")+(t[3]||(t[2]&&n?"/":""))),n=function(t){return i(t.replace(/\?/g,"%3F").replace(/#/g,"%23"))},e.query=t[5]?[n(t[5])]:[],e.j=t[7]?[n(t[7])]:[],e},ob=function(t){return t.B+(0<t.query.length?"?"+t.query.join("&"):"")+(0<t.j.length?"#"+t.j.join("&"):"")},pb=function(t,e){var i=[];if(t)for(var n in t)if(E(t,n)&&null!=t[n]){var s=e?e(t[n]):t[n];i.push(encodeURIComponent(n)+"="+encodeURIComponent(s))}return i},qb=function(t,e,i,n){return(t=nb(t)).query.push.apply(t.query,pb(e,n)),t.j.push.apply(t.j,pb(i,n)),ob(t)},rb=new RegExp(/\/?\??#?/.source+"("+/[\/?#]/i.source+"|"+/[\uD800-\uDBFF]/i.source+"|"+/%[c-f][0-9a-f](%[89ab][0-9a-f]){0,2}(%[89ab]?)?/i.source+"|"+/%[0-9a-f]?/i.source+")$","i"),sb=function(t,e){var i=nb(e);e=i.B,i.query.length&&(e+="?"+i.query.join("")),i.j.length&&(e+="#"+i.j.join(""));var n="";2e3<e.length&&(n=e,e=(e=e.substr(0,2e3)).replace(rb,""),n=n.substr(e.length));var s=t.createElement("div");if(t=t.createElement("a"),e=(i=nb(e)).B,i.query.length&&(e+="?"+i.query.join("")),i.j.length&&(e+="#"+i.j.join("")),e=new z(e,Ia),Oa(t,"HTMLAnchorElement"),e=e instanceof z?e:La(e),t.href=Ja(e),s.appendChild(t),e=s.innerHTML,i=new x(Fa,"Assignment to self."),za(Ha(i),"must provide justification"),w(!/^[\s\xa0]*$/.test(Ha(i)),"must provide non-empty justification"),void 0===Ea&&(Ea=ua("gapi#html")),e=(i=Ea)?i.createHTML(e):e,e=new Na(e,null,Ma),null!==s&&void 0!==s.tagName){if("script"===s.tagName.toLowerCase())throw Error("Use setTextContent with a SafeScript.");if("style"===s.tagName.toLowerCase())throw Error("Use setTextContent with a SafeStyleSheet.")}return e instanceof Na&&e.constructor===Na?e=e.O:(ya("expected object of type SafeHtml, got '"+e+"' of type "+ka(e)),e="type_error:SafeHtml"),s.innerHTML=e,e=String(s.firstChild.href),s.parentNode&&s.parentNode.removeChild(s),n=(i=nb(e+n)).B,i.query.length&&(n+="?"+i.query.join("")),i.j.length&&(n+="#"+i.j.join("")),n},tb=/^https?:\/\/[^\/%\\?#\s]+\/[^\s]*$/i,ub,vb=function(t,e,i,n){A[i+"EventListener"]?A[i+"EventListener"](t,e,!1):A[n+"tachEvent"]&&A[n+"tachEvent"]("on"+t,e)},wb=function(){var t=B.readyState;return"complete"===t||"interactive"===t&&-1==navigator.userAgent.indexOf("MSIE")},zb=function(t){var e=xb;if(!wb())try{e()}catch(t){}yb(t)},yb=function(t){if(wb())t();else{var e=!1,i=function(){if(!e)return e=!0,t.apply(this,arguments)};A.addEventListener?(A.addEventListener("load",i,!1),A.addEventListener("DOMContentLoaded",i,!1)):A.attachEvent&&(A.attachEvent("onreadystatechange",function(){wb()&&i.apply(this,arguments)}),A.attachEvent("onload",i))}},Ab=function(t){for(;t.firstChild;)t.removeChild(t.firstChild)},Bb={button:!0,div:!0,span:!0},L;L=C(A,"___jsl",D()),C(L,"I",0),C(L,"hel",10);var Cb=function(t){return L.dpo?L.h:J(t,"jsh",L.h)},Db=function(t){var e=C(L,"sws",[]);e.push.apply(e,t)},Eb=function(t){return C(L,"watt",D())[t]},Fb=function(t){var e=C(L,"PQ",[]);L.PQ=[];var i=e.length;if(0===i)t();else for(var n=0,s=function(){++n===i&&t()},o=0;o<i;o++)e[o](s)},Gb=function(t){return C(C(L,"H",D()),t,D())},Hb=C(L,"perf",D()),Ib=C(Hb,"g",D()),Jb=C(Hb,"i",D());C(Hb,"r",[]),D(),D();var Kb=function(t,e,i){var n=Hb.r;"function"==typeof n?n(t,e,i):n.push([t,e,i])},M=function(t,e,i){Ib[t]=!e&&Ib[t]||i||(new Date).getTime(),Kb(t)},Mb=function(t,e,i){e&&0<e.length&&(e=Lb(e),i&&0<i.length&&(e+="___"+Lb(i)),28<e.length&&(e=e.substr(0,28)+(e.length-28)),i=e,e=C(Jb,"_p",D()),C(e,i,D())[t]=(new Date).getTime(),Kb(t,"_p",i))},Lb=function(t){return t.join("__").replace(/\./g,"_").replace(/\-/g,"_").replace(/,/g,"_")},Nb=D(),Ob=[],N=function(t){throw Error("Bad hint"+(t?": "+t:""))};Ob.push(["jsl",function(t){for(var e in t)if(E(t,e)){var i=t[e];"object"==typeof i?L[e]=C(L,e,[]).concat(i):C(L,e,i)}(e=t.u)&&((t=C(L,"us",[])).push(e),(e=/^https:(.*)$/.exec(e))&&t.push("http:"+e[1]))}]);var Pb=/^(\/[a-zA-Z0-9_\-]+)+$/,Qb=[/\/amp\//,/\/amp$/,/^\/amp$/],Rb=/^[a-zA-Z0-9\-_\.,!]+$/,Sb=/^gapi\.loaded_[0-9]+$/,Tb=/^[a-zA-Z0-9,._-]+$/,Xb=function(t,e,i,n,s){var o=t.split(";"),r=o.shift(),a=Nb[r],l=null;a?l=a(o,e,i,n):N("no hint processor for: "+r),l||N("failed to generate load url"),i=(e=l).match(Ub),(n=e.match(Vb))&&1===n.length&&Wb.test(e)&&i&&1===i.length||N("failed sanity: "+t);try{if(t="?",s&&0<s.length){for(i=e=0,n={};i<s.length;){var u=s[i++];o=void 0,o=ma(u)?"o"+(Object.prototype.hasOwnProperty.call(u,na)&&u[na]||(u[na]=++oa)):(typeof u).charAt(0)+u,Object.prototype.hasOwnProperty.call(n,o)||(n[o]=!0,s[e++]=u)}s.length=e,l=l+"?le="+s.join(","),t="&"}if(L.rol){var c=L.ol;c&&c.length&&(l=""+l+t+"ol="+c.length)}}catch(t){}return l},$b=function(t,e,i,n){t=Yb(t),Sb.test(i)||N("invalid_callback"),e=Zb(e),n=n&&n.length?Zb(n):null;var s=function(t){return encodeURIComponent(t).replace(/%2C/g,",")};return[encodeURIComponent(t.pathPrefix).replace(/%2C/g,",").replace(/%2F/g,"/"),"/k=",s(t.version),"/m=",s(e),n?"/exm="+s(n):"","/rt=j/sv=1/d=1/ed=1",t.U?"/am="+s(t.U):"",t.$?"/rs="+s(t.$):"",t.ba?"/t="+s(t.ba):"","/cb=",s(i)].join("")},Yb=function(t){"/"!==t.charAt(0)&&N("relative path");for(var e=t.substring(1).split("/"),i=[];e.length;){if((t=e.shift()).length&&0!=t.indexOf(".")){if(0<t.indexOf("=")){e.unshift(t);break}}else N("empty/relative directory");i.push(t)}t={};for(var n=0,s=e.length;n<s;++n){var o=e[n].split("="),r=decodeURIComponent(o[0]),a=decodeURIComponent(o[1]);2==o.length&&r&&a&&(t[r]=t[r]||a)}for(e="/"+i.join("/"),Pb.test(e)||N("invalid_prefix"),i=0,n=Qb.length;i<n;++i)Qb[i].test(e)&&N("invalid_prefix");return{pathPrefix:e,version:i=ac(t,"k",!0),U:n=ac(t,"am"),$:s=ac(t,"rs"),ba:t=ac(t,"t")}},Zb=function(t){for(var e=[],i=0,n=t.length;i<n;++i){var s=t[i].replace(/\./g,"_").replace(/-/g,"_");Tb.test(s)&&e.push(s)}return e.join(",")},ac=function(t,e,i){if(!(t=t[e])&&i&&N("missing: "+e),t){if(Rb.test(t))return t;N("invalid: "+e)}return null},Wb=/^https?:\/\/[a-z0-9_.-]+\.google(rs)?\.com(:\d+)?\/[a-zA-Z0-9_.,!=\-\/]+$/,Vb=/\/cb=/g,Ub=/\/\//g,bc=function(){var t=Cb(Va.href);if(!t)throw Error("Bad hint");return t};Nb.m=function(t,e,i,n){return(t=t[0])||N("missing_hint"),"https://apis.google.com"+$b(t,e,i,n)};var cc=decodeURI("%73cript"),dc=/^[-+_0-9\/A-Za-z]+={0,2}$/,ec=function(t,e){for(var i=[],n=0;n<t.length;++n){var s=t[n];s&&0>Ya.call(e,s)&&i.push(s)}return i},fc=function(){var t=L.nonce;return void 0!==t?t&&t===String(t)&&t.match(dc)?t:L.nonce=null:B.querySelector&&(t=B.querySelector("script[nonce]"))?(t=t.nonce||t.getAttribute("nonce")||"")&&t===String(t)&&t.match(dc)?L.nonce=t:L.nonce=null:null},ic=function(t){if("loading"!=B.readyState)gc(t);else{var e=fc(),i="";null!==e&&(i=' nonce="'+e+'"'),t="<"+cc+' src="'+encodeURI(t)+'"'+i+"></"+cc+">",B.write(hc?hc.createHTML(t):t)}},gc=function(t){var e=B.createElement(cc);e.setAttribute("src",hc?hc.createScriptURL(t):t),null!==(t=fc())&&e.setAttribute("nonce",t),e.async="true",(t=B.getElementsByTagName(cc)[0])?t.parentNode.insertBefore(e,t):(B.head||B.body||B.documentElement).appendChild(e)},jc=function(t,e){var i=e&&e._c;if(i)for(var n=0;n<Ob.length;n++){var s=Ob[n][0],o=Ob[n][1];o&&E(i,s)&&o(i[s],t,e)}},lc=function(t,e,i){kc(function(){var i=e===Cb(Va.href)?C(H,"_",D()):D();i=C(Gb(e),"_",i),t(i)},i)},nc=function(t,e){var i=e||{};"function"==typeof e&&((i={}).callback=e),jc(t,i),e=[],t?e=t.split(":"):i.features&&(e=i.features);var n=i.h||bc(),s=C(L,"ah",D());if(s["::"]&&e.length){t=[];for(var o=null;o=e.shift();){var r=o.split(".");r=s[o]||s[r[1]&&"ns:"+r[0]||""]||n;var a=t.length&&t[t.length-1]||null,l=a;a&&a.hint==r||(l={hint:r,features:[]},t.push(l)),l.features.push(o)}var u=t.length;if(1<u){var c=i.callback;c&&(i.callback=function(){0==--u&&c()})}for(;e=t.shift();)mc(e.features,i,e.hint)}else mc(e||[],i,n)},mc=function(t,e,i){t=$a(t)||[];var n=e.callback,s=e.config,o=e.timeout,r=e.ontimeout,a=e.onerror,l=void 0;"function"==typeof a&&(l=a);var u=null,c=!1;if(o&&!r||!o&&r)throw"Timeout requires both the timeout parameter and ontimeout parameter to be set";a=C(Gb(i),"r",[]).sort();var h=C(Gb(i),"L",[]).sort(),d=L.le,p=[].concat(a),f=function(t,e){if(c)return 0;A.clearTimeout(u),h.push.apply(h,g);var n=((H||{}).config||{}).update;if(n?n(s):s&&C(L,"cu",[]).push(s),e){Mb("me0",t,p);try{lc(e,i,l)}finally{Mb("me1",t,p)}}return 1};0<o&&(u=A.setTimeout(function(){c=!0,r()},o));var g=ec(t,h);if(g.length){g=ec(t,a);var m=C(L,"CP",[]),v=m.length;if(m[v]=function(t){if(!t)return 0;Mb("ml1",g,p);var e=function(e){m[v]=null,f(g,t)&&Fb(function(){n&&n(),e()})},i=function(){var t=m[v+1];t&&t()};0<v&&m[v-1]?m[v]=function(){e(i)}:e(i)},g.length){var y="loaded_"+L.I++;H[y]=function(t){m[v](t),H[y]=null},t=Xb(i,g,"gapi."+y,a,d),a.push.apply(a,g),Mb("ml0",g,p),e.sync||A.___gapisync?ic(t):gc(t)}else m[v](Wa)}else f(g)&&n&&n()},hc=ua("gapi#gapi"),kc=function(t,e){if(L.hee&&0<L.hel)try{return t()}catch(t){e&&e(t),L.hel--,nc("debug_error",function(){try{window.___jsl.hefn(t)}catch(e){throw t}})}else try{return t()}catch(t){throw e&&e(t),t}},oc=H.load;oc&&C(L,"ol",[]).push(oc),H.load=function(t,e){return kc(function(){return nc(t,e)})};var pc=function(t){var e=window.___jsl=window.___jsl||{};return e[t]=e[t]||[],e[t]},qc=function(t){var e=window.___jsl=window.___jsl||{};return e.cfg=!t&&e.cfg||{},e.cfg},rc=function(t){return"object"==typeof t&&/\[native code\]/.test(t.push)},P=function(t,e,i){if(e&&"object"==typeof e)for(var n in e)!Object.prototype.hasOwnProperty.call(e,n)||i&&"___goc"===n&&void 0===e[n]||(t[n]&&e[n]&&"object"==typeof t[n]&&"object"==typeof e[n]&&!rc(t[n])&&!rc(e[n])?P(t[n],e[n]):e[n]&&"object"==typeof e[n]?(t[n]=rc(e[n])?[]:{},P(t[n],e[n])):t[n]=e[n])},sc=function(t){if(t&&!/^\s+$/.test(t)){for(;0==t.charCodeAt(t.length-1);)t=t.substring(0,t.length-1);try{var e=window.JSON.parse(t)}catch(t){}if("object"==typeof e)return e;try{e=new Function("return ("+t+"\n)")()}catch(t){}if("object"==typeof e)return e;try{e=new Function("return ({"+t+"\n})")()}catch(t){}return"object"==typeof e?e:{}}},tc=function(t,e){var i={___goc:void 0};t.length&&t[t.length-1]&&Object.hasOwnProperty.call(t[t.length-1],"___goc")&&void 0===t[t.length-1].___goc&&(i=t.pop()),P(i,e),t.push(i)},uc=function(t){qc(!0);var e=window.___gcfg,i=pc("cu"),n=window.___gu;e&&e!==n&&(tc(i,e),window.___gu=e),e=pc("cu");var s=document.scripts||document.getElementsByTagName("script")||[];n=[];var o=[];o.push.apply(o,pc("us"));for(var r=0;r<s.length;++r)for(var a=s[r],l=0;l<o.length;++l)a.src&&0==a.src.indexOf(o[l])&&n.push(a);for(0==n.length&&0<s.length&&s[s.length-1].src&&n.push(s[s.length-1]),s=0;s<n.length;++s)n[s].getAttribute("gapi_processed")||(n[s].setAttribute("gapi_processed",!0),(o=n[s])?o=3==(r=o.nodeType)||4==r?o.nodeValue:o.textContent||"":o=void 0,(o=sc(o))&&e.push(o));for(t&&tc(i,t),t=0,e=(n=pc("cd")).length;t<e;++t)P(qc(),n[t],!0);for(t=0,e=(n=pc("ci")).length;t<e;++t)P(qc(),n[t],!0);for(t=0,e=i.length;t<e;++t)P(qc(),i[t],!0)},Q=function(t){var e=qc();if(!t)return e;for(var i=0,n=(t=t.split("/")).length;e&&"object"==typeof e&&i<n;++i)e=e[t[i]];return i===t.length&&void 0!==e?e:void 0},vc=function(t,e){var i;if("string"==typeof t){for(var n=i={},s=0,o=(t=t.split("/")).length;s<o-1;++s){n=n[t[s]]={}}n[t[s]]=e}else i=t;uc(i)},wc=function(){var t=window.__GOOGLEAPIS;t&&(t.googleapis&&!t["googleapis.config"]&&(t["googleapis.config"]=t.googleapis),C(L,"ci",[]).push(t),window.__GOOGLEAPIS=void 0)},xc={callback:1,clientid:1,cookiepolicy:1,openidrealm:-1,includegrantedscopes:-1,requestvisibleactions:1,scope:1},yc=!1,zc=D(),Ac=function(){if(!yc){for(var t=document.getElementsByTagName("meta"),e=0;e<t.length;++e){var i=t[e].name.toLowerCase();if(0==i.lastIndexOf("google-signin-",0)){i=i.substring(14);var n=t[e].content;xc[i]&&n&&(zc[i]=n)}}if(window.self!==window.top)for(var s in t=document.location.toString(),xc)0<xc[s]&&(e=J(t,s,""))&&(zc[s]=e);yc=!0}return s=D(),F(zc,s),s},Bc=function(t){return!!(t.clientid&&t.scope&&t.callback)},Cc=function(){this.i=window.console};Cc.prototype.log=function(t){this.i&&this.i.log&&this.i.log(t)},Cc.prototype.error=function(t){this.i&&(this.i.error?this.i.error(t):this.i.log&&this.i.log(t))},Cc.prototype.warn=function(t){this.i&&(this.i.warn?this.i.warn(t):this.i.log&&this.i.log(t))},Cc.prototype.debug=function(){};var Dc=new Cc,Ec=function(){return!!L.oa},Fc=function(){},R=C(L,"rw",D()),Gc=function(t){for(var e in R)t(R[e])},Hc=function(t,e){(t=R[t])&&t.state<e&&(t.state=e)},S=function(t){var e=window.___jsl=window.___jsl||{};if(e.cfg=e.cfg||{},e=e.cfg,!t)return e;for(var i=0,n=(t=t.split("/")).length;e&&"object"==typeof e&&i<n;++i)e=e[t[i]];return i===t.length&&void 0!==e?e:void 0},Ic=/^https?:\/\/(?:\w|[\-\.])+\.google\.(?:\w|[\-:\.])+(?:\/[^\?#]*)?\/u\/(\d)\//,Jc=/^https?:\/\/(?:\w|[\-\.])+\.google\.(?:\w|[\-:\.])+(?:\/[^\?#]*)?\/b\/(\d{10,21})\//,Kc=function(t){var e=S("googleapis.config/sessionIndex");if("string"==typeof e&&254<e.length&&(e=null),null==e&&(e=window.__X_GOOG_AUTHUSER),"string"==typeof e&&254<e.length&&(e=null),null==e){var i=window.google;i&&(e=i.authuser)}return"string"==typeof e&&254<e.length&&(e=null),null==e&&(t=t||window.location.href,null==(e=J(t,"authuser")||null)&&(e=(e=t.match(Ic))?e[1]:null)),null==e?null:(254<(e=String(e)).length&&(e=null),e)},Lc=function(t){var e=S("googleapis.config/sessionDelegate");return"string"==typeof e&&21<e.length&&(e=null),null==e&&(e=(t=(t||window.location.href).match(Jc))?t[1]:null),null==e?null:(21<(e=String(e)).length&&(e=null),e)},Mc,T,U=void 0,V=function(t){try{return p.JSON.parse.call(p.JSON,t)}catch(t){return!1}},W=function(t){return Object.prototype.toString.call(t)},Nc=W(0),Oc=W(new Date(0)),Pc=W(!0),Qc=W(""),Rc=W({}),Sc=W([]),X=function(t,e){if(e)for(var i=0,n=e.length;i<n;++i)if(t===e[i])throw new TypeError("Converting circular structure to JSON");if("undefined"!==(n=typeof t)){(i=Array.prototype.slice.call(e||[],0))[i.length]=t,e=[];var s=W(t);if(null!=t&&"function"==typeof t.toJSON&&(Object.prototype.hasOwnProperty.call(t,"toJSON")||(s!==Sc||t.constructor!==Array&&t.constructor!==Object)&&(s!==Rc||t.constructor!==Array&&t.constructor!==Object)&&s!==Qc&&s!==Nc&&s!==Pc&&s!==Oc))return X(t.toJSON.call(t),i);if(null==t)e[e.length]="null";else if(s===Nc)t=Number(t),isNaN(t)||isNaN(t-t)?t="null":-0===t&&0>1/t&&(t="-0"),e[e.length]=String(t);else if(s===Pc)e[e.length]=String(!!Number(t));else{if(s===Oc)return X(t.toISOString.call(t),i);if(s===Sc&&W(t.length)===Nc){e[e.length]="[";var o=0;for(n=Number(t.length)>>0;o<n;++o)o&&(e[e.length]=","),e[e.length]=X(t[o],i)||"null";e[e.length]="]"}else if(s==Qc&&W(t.length)===Nc){for(e[e.length]='"',o=0,i=Number(t.length)>>0;o<i;++o)n=String.prototype.charAt.call(t,o),s=String.prototype.charCodeAt.call(t,o),e[e.length]="\b"===n?"\\b":"\f"===n?"\\f":"\n"===n?"\\n":"\r"===n?"\\r":"\t"===n?"\\t":"\\"===n||'"'===n?"\\"+n:31>=s?"\\u"+(s+65536).toString(16).substr(1):32<=s&&65535>=s?n:"�";e[e.length]='"'}else{if("object"!==n)return;for(o in e[e.length]="{",n=0,t)Object.prototype.hasOwnProperty.call(t,o)&&(void 0!==(s=X(t[o],i))&&(n++&&(e[e.length]=","),e[e.length]=X(o),e[e.length]=":",e[e.length]=s));e[e.length]="}"}}return e.join("")}},Tc=/[\0-\x07\x0b\x0e-\x1f]/,Uc=/^([^"]*"([^\\"]|\\.)*")*[^"]*"([^"\\]|\\.)*[\0-\x1f]/,Vc=/^([^"]*"([^\\"]|\\.)*")*[^"]*"([^"\\]|\\.)*\\[^\\\/"bfnrtu]/,Wc=/^([^"]*"([^\\"]|\\.)*")*[^"]*"([^"\\]|\\.)*\\u([0-9a-fA-F]{0,3}[^0-9a-fA-F])/,Xc=/"([^\0-\x1f\\"]|\\[\\\/"bfnrt]|\\u[0-9a-fA-F]{4})*"/g,Yc=/-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][-+]?[0-9]+)?/g,Zc=/[ \t\n\r]+/g,$c=/[^"]:/,ad=/""/g,bd=/true|false|null/g,cd=/00/,dd=/[\{]([^0\}]|0[^:])/,ed=/(^|\[)[,:]|[,:](\]|\}|[,:]|$)/,fd=/[^\[,:][\[\{]/,gd=/^(\{|\}|\[|\]|,|:|0)+/,hd=/\u2028/g,id=/\u2029/g,jd=function(a){if(a=String(a),Tc.test(a)||Uc.test(a)||Vc.test(a)||Wc.test(a))return!1;var b=a.replace(Xc,'""');if(b=b.replace(Yc,"0"),b=b.replace(Zc,""),$c.test(b))return!1;if(b=b.replace(ad,"0"),b=b.replace(bd,"0"),cd.test(b)||dd.test(b)||ed.test(b)||fd.test(b)||!b||(b=b.replace(gd,"")))return!1;a=a.replace(hd,"\\u2028").replace(id,"\\u2029"),b=void 0;try{b=U?[V(a)]:eval("(function (var_args) {\n return Array.prototype.slice.call(arguments, 0);\n})(\n"+a+"\n)")}catch(t){return!1}return!(!b||1!==b.length)&&b[0]},kd=function(){var t=((p.document||{}).scripts||[]).length;if((void 0===Mc||void 0===U||T!==t)&&-1!==T){Mc=U=!1,T=-1;try{try{U=!!p.JSON&&'{"a":[3,true,"1970-01-01T00:00:00.000Z"]}'===p.JSON.stringify.call(p.JSON,{a:[3,!0,new Date(0)],c:function(){}})&&!0===V("true")&&3===V('[{"a":3}]')[0].a}catch(t){}Mc=U&&!V("[00]")&&!V('""')&&!V('"\\0"')&&!V('"\\v"')}finally{T=t}}},ld=function(t){return-1!==T&&(kd(),(Mc?V:jd)(t))},md=function(t){if(-1!==T)return kd(),U?p.JSON.stringify.call(p.JSON,t):X(t)},nd=!Date.prototype.toISOString||"function"!=typeof Date.prototype.toISOString||"1970-01-01T00:00:00.000Z"!==new Date(0).toISOString(),od=function(){var t=Date.prototype.getUTCFullYear.call(this);return[0>t?"-"+String(1e6-t).substr(1):9999>=t?String(1e4+t).substr(1):"+"+String(1e6+t).substr(1),"-",String(101+Date.prototype.getUTCMonth.call(this)).substr(1),"-",String(100+Date.prototype.getUTCDate.call(this)).substr(1),"T",String(100+Date.prototype.getUTCHours.call(this)).substr(1),":",String(100+Date.prototype.getUTCMinutes.call(this)).substr(1),":",String(100+Date.prototype.getUTCSeconds.call(this)).substr(1),".",String(1e3+Date.prototype.getUTCMilliseconds.call(this)).substr(1),"Z"].join("")};Date.prototype.toISOString=nd?od:Date.prototype.toISOString;var pd=function(){this.blockSize=-1},qd=function(){this.blockSize=-1,this.blockSize=64,this.g=[],this.L=[],this.ea=[],this.H=[],this.H[0]=128;for(var t=1;t<this.blockSize;++t)this.H[t]=0;this.J=this.v=0,this.reset()};sa(qd,pd),qd.prototype.reset=function(){this.g[0]=1732584193,this.g[1]=4023233417,this.g[2]=2562383102,this.g[3]=271733878,this.g[4]=3285377520,this.J=this.v=0};var rd=function(t,e,i){i||(i=0);var n=t.ea;if("string"==typeof e)for(var s=0;16>s;s++)n[s]=e.charCodeAt(i)<<24|e.charCodeAt(i+1)<<16|e.charCodeAt(i+2)<<8|e.charCodeAt(i+3),i+=4;else for(s=0;16>s;s++)n[s]=e[i]<<24|e[i+1]<<16|e[i+2]<<8|e[i+3],i+=4;for(s=16;80>s;s++){var o=n[s-3]^n[s-8]^n[s-14]^n[s-16];n[s]=4294967295&(o<<1|o>>>31)}e=t.g[0],i=t.g[1];var r=t.g[2],a=t.g[3],l=t.g[4];for(s=0;80>s;s++){if(40>s)if(20>s){o=a^i&(r^a);var u=1518500249}else o=i^r^a,u=1859775393;else 60>s?(o=i&r|a&(i|r),u=2400959708):(o=i^r^a,u=3395469782);o=(e<<5|e>>>27)+o+l+u+n[s]&4294967295,l=a,a=r,r=4294967295&(i<<30|i>>>2),i=e,e=o}t.g[0]=t.g[0]+e&4294967295,t.g[1]=t.g[1]+i&4294967295,t.g[2]=t.g[2]+r&4294967295,t.g[3]=t.g[3]+a&4294967295,t.g[4]=t.g[4]+l&4294967295};qd.prototype.update=function(t,e){if(null!=t){void 0===e&&(e=t.length);for(var i=e-this.blockSize,n=0,s=this.L,o=this.v;n<e;){if(0==o)for(;n<=i;)rd(this,t,n),n+=this.blockSize;if("string"==typeof t){for(;n<e;)if(s[o]=t.charCodeAt(n),++n,++o==this.blockSize){rd(this,s),o=0;break}}else for(;n<e;)if(s[o]=t[n],++n,++o==this.blockSize){rd(this,s),o=0;break}}this.v=o,this.J+=e}},qd.prototype.digest=function(){var t=[],e=8*this.J;56>this.v?this.update(this.H,56-this.v):this.update(this.H,this.blockSize-(this.v-56));for(var i=this.blockSize-1;56<=i;i--)this.L[i]=255&e,e/=256;for(rd(this,this.L),i=e=0;5>i;i++)for(var n=24;0<=n;n-=8)t[e]=this.g[i]>>n&255,++e;return t};var sd=function(){this.R=new qd};sd.prototype.reset=function(){this.R.reset()};var td=A.crypto,ud=!1,vd=0,wd=0,xd=1,yd=0,zd="",Ad=function(t){var e=(t=t||A.event).screenX+t.clientX<<16;e+=t.screenY+t.clientY,e*=(new Date).getTime()%1e6,xd=xd*e%yd,0<vd&&++wd==vd&&vb("mousemove",Ad,"remove","de")},Bd=function(t){for(var e=new sd,i=[],n=0,s=(t=unescape(encodeURIComponent(t))).length;n<s;++n)i.push(t.charCodeAt(n));for(e.R.update(i),e=e.R.digest(),t="",i=0;i<e.length;i++)t+="0123456789ABCDEF".charAt(Math.floor(e[i]/16))+"0123456789ABCDEF".charAt(e[i]%16);return t};ud=!!td&&"function"==typeof td.getRandomValues,ud||(yd=1e6*(screen.width*screen.width+screen.height),zd=Bd(B.cookie+"|"+B.location+"|"+(new Date).getTime()+"|"+Math.random()),vd=S("random/maxObserveMousemove")||0,0!=vd&&vb("mousemove",Ad,"add","at"));var Cd=function(){var t=L.onl;if(!t){t=D(),L.onl=t;var e=D();t.e=function(t){var i=e[t];i&&(delete e[t],i())},t.a=function(t,i){e[t]=i},t.r=function(t){delete e[t]}}return t},Dd=function(t,e){return"function"==typeof(e=e.onload)?(Cd().a(t,e),e):null},Ed=function(t){return G(/^\w+$/.test(t),"Unsupported id - "+t),'onload="window.___jsl.onl.e("'+t+'")"'},Fd=function(t){Cd().r(t)},Gd={allowtransparency:"true",frameborder:"0",hspace:"0",marginheight:"0",marginwidth:"0",scrolling:"no",style:"",tabindex:"0",vspace:"0",width:"100%"},Hd={allowtransparency:!0,onload:!0},Id=0,Jd=function(t){G(!t||tb.test(t),"Illegal url for new iframe - "+t)},Kd=function(t,e,i,n,s){Jd(i.src);var o,r=Dd(n,i),a=r?Ed(n):"";try{document.all&&(o=t.createElement('<iframe frameborder="'+fb(String(i.frameborder))+'" scrolling="'+fb(String(i.scrolling))+'" '+a+' name="'+fb(String(i.name))+'"/>'))}catch(t){}finally{o||(o=(t?new Ua(Ta(t)):va||(va=new Ua)).ga("IFRAME"),r&&(o.onload=function(){o.onload=null,r.call(this)},Fd(n)))}for(var l in o.setAttribute("ng-non-bindable",""),i)t=i[l],"style"===l&&"object"==typeof t?F(t,o.style):Hd[l]||o.setAttribute(l,String(t));return(l=s&&s.beforeNode||null)||s&&s.dontclear||Ab(e),e.insertBefore(o,l),o=l?l.previousSibling:e.lastChild,i.allowtransparency&&(o.allowTransparency=!0),o},Ld=/^:[\w]+$/,Md=/:([a-zA-Z_]+):/g,Nd=function(){var t=Kc()||"0",e=Lc(),i=Kc(void 0)||t,n=Lc(void 0),s="";i&&(s+="u/"+encodeURIComponent(String(i))+"/"),n&&(s+="b/"+encodeURIComponent(String(n))+"/"),i=s||null,(s=(n=!1===S("isLoggedIn"))?"_/im/":"")&&(i="");var o=S("iframes/:socialhost:"),r=S("iframes/:im_socialhost:");return ub={socialhost:o,ctx_socialhost:n?r:o,session_index:t,session_delegate:e,session_prefix:i,im_prefix:s}},Od=function(t,e){return Nd()[e]||""},Pd=function(t){return function(e,i){return t?Nd()[i]||t[i]||"":Nd()[i]||""}},Qd=function(t){var e;return t.match(/^https?%3A/i)&&(e=decodeURIComponent(t)),sb(document,e||t)},Rd=function(t){t=t||"canonical";for(var e=document.getElementsByTagName("link"),i=0,n=e.length;i<n;i++){var s=e[i],o=s.getAttribute("rel");if(o&&o.toLowerCase()==t&&(s=s.getAttribute("href"))&&(s=Qd(s))&&null!=s.match(/^https?:\/\/[\w\-_\.]+/i))return s}return window.location.href},Sd={se:"0"},Td={post:!0},Ud={style:"position:absolute;top:-10000px;width:450px;margin:0px;border-style:none"},Vd="onPlusOne _ready _close _open _resizeMe _renderstart oncircled drefresh erefresh".split(" "),Wd=C(L,"WI",D()),Xd=function(t,e,i){var n,s={},o=n=t;for(var r in"plus"==t&&e.action&&(n=t+"_"+e.action,o=t+"/"+e.action),(n=Q("iframes/"+n+"/url"))||(n=":im_socialhost:/:session_prefix::im_prefix:_/widget/render/"+o+"?usegapi=1"),Sd)s[r]=r+"/"+(e[r]||Sd[r])+"/";if(s=sb(B,n.replace(Md,Pd(s))),r="iframes/"+t+"/params/",F(e,o={}),(n=Q("lang")||Q("gwidget/lang"))&&(o.hl=n),Td[t]||(o.origin=window.location.origin||window.location.protocol+"//"+window.location.host),o.exp=Q(r+"exp"),r=Q(r+"location"))for(n=0;n<r.length;n++){var a=r[n];o[a]=A.location[a]}switch(t){case"plus":case"follow":r=o.href,n=e.action?void 0:"publisher",r=(r="string"==typeof r?r:void 0)?Qd(r):Rd(n),o.url=r,delete o.href;break;case"plusone":r=(r=e.href)?Qd(r):Rd(),o.url=r,r=e.db,n=Q(),null==r&&n&&(null==(r=n.db)&&(r=n.gwidget&&n.gwidget.db)),o.db=r||void 0,r=e.ecp,n=Q(),null==r&&n&&(null==(r=n.ecp)&&(r=n.gwidget&&n.gwidget.ecp)),o.ecp=r||void 0,delete o.href;break;case"signin":o.url=Rd()}for(var l in L.ILI&&(o.iloader="1"),delete o["data-onload"],delete o.rd,Sd)o[l]&&delete o[l];for(var u in o.gsrc=Q("iframes/:source:"),void 0!==(l=Q("inline/css"))&&0<i&&l>=i&&(o.ic="1"),l=/^#|^fr-/,i={},o)E(o,u)&&l.test(u)&&(i[u.replace(l,"")]=o[u],delete o[u]);for(var c in u="q"==Q("iframes/"+t+"/params/si")?o:i,l=Ac())!E(l,c)||E(o,c)||E(i,c)||(u[c]=l[c]);for(var h in c=[].concat(Vd),(u=Q("iframes/"+t+"/methods"))&&"object"==typeof u&&Xa.test(u.push)&&(c=c.concat(u)),e)E(e,h)&&/^on/.test(h)&&("plus"!=t||"onconnect"!=h)&&(c.push(h),delete o[h]);return delete o.callback,i._methods=c.join(","),qb(s,o,i)},Yd=["style","data-gapiscan"],$d=function(t){for(var e=D(),i=0!=t.nodeName.toLowerCase().indexOf("g:"),n=0,s=t.attributes.length;n<s;n++){var o=t.attributes[n],r=o.name,a=o.value;0<=Ya.call(Yd,r)||i&&0!=r.indexOf("data-")||"null"===a||"specified"in o&&!o.specified||(i&&(r=r.substr(5)),e[r.toLowerCase()]=a)}return t=t.style,(i=Zd(t&&t.height))&&(e.height=String(i)),(t=Zd(t&&t.width))&&(e.width=String(t)),e},Zd=function(t){var e=void 0;return"number"==typeof t?e=t:"string"==typeof t&&(e=parseInt(t,10)),e},ce=function(){var t=L.drw;Gc(function(e){if(t!==e.id&&4!=e.state&&"share"!=e.type){var i=e.id,n=e.type,s=e.url;e=e.userParams;var o=B.getElementById(i);if(o){var r=Xd(n,e,0);r?(o=o.parentNode,ae(s)!==ae(r)&&(e.dontclear=!0,e.rd=!0,e.ri=!0,e.type=n,be(o,e),(n=R[o.lastChild.id])&&(n.oid=i),Hc(i,4))):delete R[i]}else delete R[i]}})},ae=function(t){var e=RegExp("(\\?|&)ic=1");return t.replace(/#.*/,"").replace(e,"")},de,ee,Y,fe,ge,he=/(?:^|\s)g-((\S)*)(?:$|\s)/,ie={plusone:!0,autocomplete:!0,profile:!0,signin:!0,signin2:!0};de=C(L,"SW",D()),ee=C(L,"SA",D()),Y=C(L,"SM",D()),fe=C(L,"FW",[]),ge=null;var je=function(t,e){return("string"==typeof t?document.getElementById(t):t)||e},le=function(t,e){ke(void 0,!1,t,e)},ke=function(t,e,i,n){M("ps0",!0),i=je(i,B);var s=B.documentMode;if(i.querySelectorAll&&(!s||8<s)){s=n?[n]:gb(de).concat(gb(ee)).concat(gb(Y));for(var o=[],r=0;r<s.length;r++){var a=s[r];o.push(".g-"+a,"g\\:"+a)}s=i.querySelectorAll(o.join(","))}else s=i.getElementsByTagName("*");for(i=D(),o=0;o<s.length;o++){var l=r=s[o];a=n;var u=l.nodeName.toLowerCase(),c=void 0;if(l.getAttribute("data-gapiscan"))a=null;else{var h=u.indexOf("g:");0==h?c=u.substr(2):(h=(h=String(l.className||l.getAttribute("class")))&&he.exec(h))&&(c=h[1]),a=!c||!(de[c]||ee[c]||Y[c])||a&&c!==a?null:c}a&&(ie[a]||0==r.nodeName.toLowerCase().indexOf("g:")||0!=gb($d(r)).length)&&(r.setAttribute("data-gapiscan",!0),C(i,a,[]).push(r))}if(e)for(var d in i)for(e=i[d],n=0;n<e.length;n++)e[n].setAttribute("data-onload",!0);for(var p in i)fe.push(p);if(M("ps1",!0),(d=fe.join(":"))||t)try{H.load(d,t)}catch(t){return void Dc.log(t)}if(me(ge||{}))for(var f in i){for(p=0,e=(t=i[f]).length;p<e;p++)t[p].removeAttribute("data-gapiscan");ne(f)}else{for(f in n=[],i)for(p=0,e=(t=i[f]).length;p<e;p++)s=t[p],oe(f,s,$d(s),n,e);pe(d,n)}},qe=function(t){var e=C(H,t,{});e.go||(e.go=function(e){return le(e,t)},e.render=function(e,i){return(i=i||{}).type=t,be(e,i)})},re=function(t){de[t]=!0},se=function(t){ee[t]=!0},te=function(t){Y[t]=!0},ne=function(t,e){var i=Eb(t);e&&i?(i(e),(i=e.iframeNode)&&i.setAttribute("data-gapiattached",!0)):H.load(t,function(){var i=Eb(t),n=e&&e.iframeNode,s=e&&e.userParams;n&&i?(i(e),n.setAttribute("data-gapiattached",!0)):(i=H[t].go)("signin2"==t?n:n&&n.parentNode,s)})},me=function(){return!1},pe=function(){},oe=function(t,e,i,n,s,o,r){switch(ue(e,t,o)){case 0:t=Y[t]?t+"_annotation":t,(n={}).iframeNode=e,n.userParams=i,ne(t,n);break;case 1:if(e.parentNode){for(var a in i)if((o=E(i,a))&&(o=!(!(o=i[a])||"object"!=typeof o||o.toString&&o.toString!==Object.prototype.toString&&o.toString!==Array.prototype.toString)),o)try{i[a]=md(i[a])}catch(t){delete i[a]}if(o=!0,i.dontclear&&(o=!1),delete i.dontclear,Fc(),a=Xd(t,i,s),(s=r||{}).allowPost=1,s.attributes=Ud,s.dontclear=!o,(r={}).userParams=i,r.url=a,r.type=t,i.rd)var l=e;else l=document.createElement("div"),e.setAttribute("data-gapistub",!0),l.style.cssText="position:absolute;width:450px;left:-10000px;",e.parentNode.insertBefore(l,e);r.siteElement=l,l.id||(e=l,C(Wd,t,0),o="___"+t+"_"+Wd[t]++,e.id=o),(e=D())[">type"]=t,F(i,e),o=a,i=l,e=(a=s||{}).attributes||{},G(!(a.allowPost||a.forcePost)||!e.onload,"onload is not supported by post iframe (allowPost or forcePost)"),s=e=o,Ld.test(e)&&(s=S("iframes/"+s.substring(1)+"/url"),G(!!s,"Unknown iframe url config for - "+e)),o=sb(B,s.replace(Md,Od)),e=i.ownerDocument||B,s=a;var u=0;do{l=s.id||["I",Id++,"_",(new Date).getTime()].join("")}while(e.getElementById(l)&&5>++u);G(5>u,"Error creating iframe id"),s=l,l=a,u={};var c={};e.documentMode&&9>e.documentMode&&(u.hostiemode=e.documentMode),F(l.queryParams||{},u),F(l.fragmentParams||{},c);var h=l.pfname,d=D();S("iframes/dropLegacyIdParam")||(d.id=s),d._gfid=s,d.parent=e.location.protocol+"//"+e.location.host;var p=J(e.location.href,"parent");if(!(h=h||"")&&p&&(p=J(e.location.href,"_gfid","")||J(e.location.href,"id",""),h=J(e.location.href,"pfname",""),h=p?h+"/"+p:""),h||(p=ld(J(e.location.href,"jcp","")))&&"object"==typeof p&&(h=(h=p.id)?p.pfname+"/"+h:""),d.pfname=h,l.connectWithJsonParam&&((p={}).jcp=md(d),d=p),!(p=J(o,"rpctoken")||u.rpctoken||c.rpctoken)){if(!(p=l.rpctoken)){p=String;var f=(h=Math).round;if(ud){var g=new A.Uint32Array(1);td.getRandomValues(g),g=Number("0."+g[0])}else g=xd,g+=parseInt(zd.substr(0,20),16),zd=Bd(zd),g/=yd+Math.pow(16,20);p=p(f.call(h,1e8*g))}d.rpctoken=p}if(l.rpctoken=p,F(d,l.connectWithQueryParams?u:c),p=e.location.href,d=D(),(h=J(p,"_bsh",L.bsh))&&(d._bsh=h),(p=Cb(p))&&(d.jsh=p),l.hintInFragment?F(d,c):F(d,u),u=qb(o,u,c,l.paramsSerializer),o=a,c=D(),F(Gd,c),F(o.attributes,c),c.name=c.id=s,c.src=u,a.eurl=u,o=!!(a=(l=a)||{}).allowPost,a.forcePost||o&&2e3<u.length){if(o=nb(u),c.src="",l.dropDataPostorigin||(c["data-postorigin"]=u),a=Kd(e,i,c,s),-1!=navigator.userAgent.indexOf("WebKit")){var m=a.contentWindow.document;m.open(),u=m.createElement("div"),(c={}).name=d=s+"_inner",c.src="",c.style="display:none",Kd(e,u,c,d,l)}for(u=(l=o.query[0])?l.split("&"):[],l=[],c=0;c<u.length;c++)d=u[c].split("=",2),l.push([decodeURIComponent(d[0]),decodeURIComponent(d[1])]);for(o.query=[],u=ob(o),G(tb.test(u),"Invalid URL: "+u),(o=e.createElement("form")).method="POST",o.target=s,o.style.display="none",s=u instanceof z?u:La(u),Oa(o,"HTMLFormElement").action=Ja(s),s=0;s<l.length;s++)(u=e.createElement("input")).type="hidden",u.name=l[s][0],u.value=l[s][1],o.appendChild(u);i.appendChild(o),o.submit(),o.parentNode.removeChild(o),m&&m.close(),m=a}else m=Kd(e,i,c,s,l);r.iframeNode=m,r.id=m.getAttribute("id"),m=r.id,(i=D()).id=m,i.userParams=r.userParams,i.url=r.url,i.type=r.type,i.state=1,R[m]=i,m=r}else m=null;m&&((r=m.id)&&n.push(r),ne(t,m))}},ue=function(t,e,i){if(t&&1===t.nodeType&&e){if(i)return 1;if(Y[e]){if(Bb[t.nodeName.toLowerCase()])return(t=t.innerHTML)&&t.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")?0:1}else{if(ee[e])return 0;if(de[e])return 1}}return null},be=function(t,e){var i=e.type;delete e.type;var n=je(t);if(n){for(var s in t={},e)E(e,s)&&(t[s.toLowerCase()]=e[s]);t.rd=1,(e=!!t.ri)&&delete t.ri,oe(i,n,t,s=[],0,e,void 0),pe(i,s)}else Dc.log("string"=="gapi."+i+".render: missing element "+typeof t?t:"")};C(H,"platform",{}).go=le,me=function(t){for(var e=["_c","jsl","h"],i=0;i<e.length&&t;i++)t=t[e[i]];return e=Cb(Va.href),!t||0!=t.indexOf("n;")&&0!=e.indexOf("n;")&&t!==e},pe=function(t,e){ve(t,e)};var xb=function(t){ke(t,!0)},we=function(t,e){e=e||[];for(var i=0;i<e.length;++i)t(e[i]);for(t=0;t<e.length;t++)qe(e[t])};Ob.push(["platform",function(t,e,i){if(ge=i,e&&fe.push(e),we(re,t),we(se,i._c.annotation),we(te,i._c.bimodal),wc(),uc(),"explicit"!=Q("parsetags")){if(Db(t),Bc(Ac())&&!Q("disableRealtimeCallback")&&Fc(),i&&(t=i.callback)){var n=hb(t);delete i.callback}zb(function(){xb(n)})}}]),H._pl=!0;var xe=function(t){if(t=(t=R[t])?t.oid:void 0){var e=B.getElementById(t);e&&e.parentNode.removeChild(e),delete R[t],xe(t)}},ye=/^\{h:'/,ze=/^!_/,Ae="",ve=function(t,e){function i(){vb("message",n,"remove","de")}function n(n){var o=n.data,r=n.origin;if(Be(o,e)){var a=s;s=!1,a&&M("rqe"),Ce(t,function(){a&&M("rqd"),i();for(var t=C(L,"RPMQ",[]),e=0;e<t.length;e++)t[e]({data:o,origin:r})})}}if(0!==e.length){Ae=J(Va.href,"pfname","");var s=!0;vb("message",n,"add","at"),nc(t,i)}},Be=function(t,e){if(t=String(t),ye.test(t))return!0;var i=!1;if(ze.test(t)&&(i=!0,t=t.substr(2)),!/^\{/.test(t))return!1;var n=ld(t);if(!n)return!1;if(t=n.f,n.s&&t&&-1!=Ya.call(e,t)){if(("_renderstart"===n.s||n.s===Ae+"/"+t+"::_renderstart")&&(n=n.a&&n.a[i?0:1],e=B.getElementById(t),Hc(t,2),n&&e&&n.width&&n.height)){t:{if(i=e.parentNode,t=n||{},Ec()){var s=e.id;if(s){if(1===(n=(n=R[s])?n.state:void 0)||4===n)break t;xe(s)}}(n=i.nextSibling)&&n.getAttribute&&n.getAttribute("data-gapistub")&&(i.parentNode.removeChild(n),i.style.cssText=""),n=t.width;var o=t.height,r=i.style;r.textIndent="0",r.margin="0",r.padding="0",r.background="transparent",r.borderStyle="none",r.cssFloat="none",r.styleFloat="none",r.lineHeight="normal",r.fontSize="1px",r.verticalAlign="baseline",(i=i.style).display="inline-block",(r=e.style).position="static",r.left="0",r.top="0",r.visibility="visible",n&&(i.width=r.width=n+"px"),o&&(i.height=r.height=o+"px"),t.verticalAlign&&(i.verticalAlign=t.verticalAlign),s&&Hc(s,3)}e["data-csi-wdt"]=(new Date).getTime()}return!0}return!1},Ce=function(t,e){nc(t,e)},De=function(t,e){this.N=t,t=e||{},this.ha=Number(t.maxAge)||0,this.W=t.domain,this.Y=t.path,this.ia=!!t.secure};De.prototype.read=function(){for(var t=this.N+"=",e=document.cookie.split(/;\s*/),i=0;i<e.length;++i){var n=e[i];if(0==n.indexOf(t))return n.substr(t.length)}},De.prototype.write=function(t,e){if(!Ee.test(this.N))throw"Invalid cookie name";if(!Fe.test(t))throw"Invalid cookie value";if(t=this.N+"="+t,this.W&&(t+=";domain="+this.W),this.Y&&(t+=";path="+this.Y),0<=(e="number"==typeof e?e:this.ha)){var i=new Date;i.setSeconds(i.getSeconds()+e),t+=";expires="+i.toUTCString()}return this.ia&&(t+=";secure"),document.cookie=t,!0},De.prototype.clear=function(){this.write("",0)};var Fe=/^[-+/_=.:|%&a-zA-Z0-9@]*$/,Ee=/^[A-Z_][A-Z0-9_]{0,63}$/;De.iterate=function(t){for(var e=document.cookie.split(/;\s*/),i=0;i<e.length;++i){var n=e[i].split("=");t(n.shift(),n.join("="))}};var Ge=function(t){this.G=t};Ge.prototype.read=function(){if(Z.hasOwnProperty(this.G))return Z[this.G]},Ge.prototype.write=function(t){return Z[this.G]=t,!0},Ge.prototype.clear=function(){delete Z[this.G]};var Z={};Ge.iterate=function(t){for(var e in Z)Z.hasOwnProperty(e)&&t(e,Z[e])};var He="https:"===window.location.protocol,Ie=He||"http:"===window.location.protocol?De:Ge,Je=function(t){var e=t.substr(1),i="",n=window.location.hostname;if(""!==e){if(i=parseInt(e,10),isNaN(i))return null;if((e=n.split(".")).length<i-1)return null;e.length==i-1&&(n="."+n)}else n="";return{l:"S"==t.charAt(0),domain:n,o:i}},Ke=function(){var t,e=null;return Ie.iterate(function(i,n){0===i.indexOf("G_AUTHUSER_")&&(i=Je(i.substring(11)),!t||i.l&&!t.l||i.l==t.l&&i.o>t.o)&&(t=i,e=n)}),{fa:t,K:e}};function Le(t){if(0!==t.indexOf("GCSC"))return null;var e={X:!1};if(!(t=t.substr(4)))return e;var i=t.charAt(0),n=(t=t.substr(1)).lastIndexOf("_");if(-1==n)return e;var s=Je(t.substr(n+1));return null==s?e:"_"!==(t=t.substring(0,n)).charAt(0)?e:!(n="E"===i&&s.l)&&("U"!==i||s.l)||n&&!He?e:{X:!0,l:n,la:t.substr(1),domain:s.domain,o:s.o}}var Me=function(t){return t&&(t=t.split("="))[1]?t[1].split("|"):[]},Ne=function(t){return{clientId:(t=t.split(":"))[0].split("=")[1],ka:Me(t[1]),na:Me(t[2]),ma:Me(t[3])}},Oe=function(){var t,e=Ke(),i=e.fa;if(null!==(e=e.K)&&(Ie.iterate(function(e,n){(e=Le(e))&&e.X&&e.l==i.l&&e.o==i.o&&(t=n)}),t)){var n=Ne(t),s=n&&n.ka[Number(e)];if(n=n&&n.clientId,s)return{K:e,ja:s,clientId:n}}return null},Qe=function(){this.V=Pe};n=Qe.prototype,n.aa=function(){this.M||(this.A=0,this.M=!0,this.Z())},n.Z=function(){this.M&&(this.V()?this.A=this.T:this.A=Math.min(2*(this.A||this.T),120),window.setTimeout(ra(this.Z,this),1e3*this.A))},n.A=0,n.T=2,n.V=null,n.M=!1;for(var Re=0;64>Re;++Re);var Se=null;Ec=function(){return L.oa=!0},Fc=function(){L.oa=!0;var t=Oe();(t=t&&t.K)&&vc("googleapis.config/sessionIndex",t),Se||(Se=C(L,"ss",new Qe)),(t=Se).aa&&t.aa()};var Pe=function(){var t=Oe(),e=t&&t.ja||null,i=t&&t.clientId;return nc("auth",{callback:function(){var t=A.gapi.auth,n={client_id:i,session_state:e};t.checkSessionState(n,function(e){var i=n.session_state,s=!!Q("isLoggedIn");(s=s!==(e=!Q("debug/forceIm")&&(i&&e||!i&&!e)))&&(vc("isLoggedIn",e),Fc(),ce(),e||((e=t.signOut)?e():(e=t.setToken)&&e(null))),e=Ac();var o=Q("savedUserState");o=o!=(i=t._guss(e.cookiepolicy))&&void 0!==o,vc("savedUserState",i),(s||o)&&Bc(e)&&!Q("disableRealtimeCallback")&&t._pimf(e,!0)})}}),!0};M("bs0",!0,window.gapi._bs),M("bs1",!0),delete window.gapi._bs}.call(this),gapi.load("client",{callback:window.gapi_onload,_c:{jsl:{ci:{deviceType:"desktop","oauth-flow":{authUrl:"https://accounts.google.com/o/oauth2/auth",proxyUrl:"https://accounts.google.com/o/oauth2/postmessageRelay",disableOpt:!0,idpIframeUrl:"https://accounts.google.com/o/oauth2/iframe",usegapi:!1},debug:{reportExceptionRate:.05,forceIm:!1,rethrowException:!1,host:"https://apis.google.com"},enableMultilogin:!0,"googleapis.config":{auth:{useFirstPartyAuthV2:!0}},inline:{css:1},disableRealtimeCallback:!1,drive_share:{skipInitCommand:!0},csi:{rate:.01},client:{cors:!1},signInDeprecation:{rate:0},include_granted_scopes:!0,llang:"en",iframes:{youtube:{params:{location:["search","hash"]},url:":socialhost:/:session_prefix:_/widget/render/youtube?usegapi=1",methods:["scroll","openwindow"]},ytsubscribe:{url:"https://www.youtube.com/subscribe_embed?usegapi=1"},plus_circle:{params:{url:""},url:":socialhost:/:session_prefix::se:_/widget/plus/circle?usegapi=1"},plus_share:{params:{url:""},url:":socialhost:/:session_prefix::se:_/+1/sharebutton?plusShare=true&usegapi=1"},rbr_s:{params:{url:""},url:":socialhost:/:session_prefix::se:_/widget/render/recobarsimplescroller"},":source:":"3p",playemm:{url:"https://play.google.com/work/embedded/search?usegapi=1&usegapi=1"},savetoandroidpay:{url:"https://pay.google.com/gp/v/widget/save"},blogger:{params:{location:["search","hash"]},url:":socialhost:/:session_prefix:_/widget/render/blogger?usegapi=1",methods:["scroll","openwindow"]},evwidget:{params:{url:""},url:":socialhost:/:session_prefix:_/events/widget?usegapi=1"},partnersbadge:{url:"https://www.gstatic.com/partners/badge/templates/badge.html?usegapi=1"},dataconnector:{url:"https://dataconnector.corp.google.com/:session_prefix:ui/widgetview?usegapi=1"},surveyoptin:{url:"https://www.google.com/shopping/customerreviews/optin?usegapi=1"},":socialhost:":"https://apis.google.com",shortlists:{url:""},hangout:{url:"https://talkgadget.google.com/:session_prefix:talkgadget/_/widget"},plus_followers:{params:{url:""},url:":socialhost:/_/im/_/widget/render/plus/followers?usegapi=1"},post:{params:{url:""},url:":socialhost:/:session_prefix::im_prefix:_/widget/render/post?usegapi=1"},":gplus_url:":"https://plus.google.com",signin:{params:{url:""},url:":socialhost:/:session_prefix:_/widget/render/signin?usegapi=1",methods:["onauth"]},rbr_i:{params:{url:""},url:":socialhost:/:session_prefix::se:_/widget/render/recobarinvitation"},share:{url:":socialhost:/:session_prefix::im_prefix:_/widget/render/share?usegapi=1"},plusone:{params:{count:"",size:"",url:""},url:":socialhost:/:session_prefix::se:_/+1/fastbutton?usegapi=1"},comments:{params:{location:["search","hash"]},url:":socialhost:/:session_prefix:_/widget/render/comments?usegapi=1",methods:["scroll","openwindow"]},":im_socialhost:":"https://plus.googleapis.com",backdrop:{url:"https://clients3.google.com/cast/chromecast/home/widget/backdrop?usegapi=1"},visibility:{params:{url:""},url:":socialhost:/:session_prefix:_/widget/render/visibility?usegapi=1"},autocomplete:{params:{url:""},url:":socialhost:/:session_prefix:_/widget/render/autocomplete"},additnow:{url:"https://apis.google.com/marketplace/button?usegapi=1",methods:["launchurl"]},":signuphost:":"https://plus.google.com",ratingbadge:{url:"https://www.google.com/shopping/customerreviews/badge?usegapi=1"},appcirclepicker:{url:":socialhost:/:session_prefix:_/widget/render/appcirclepicker"},follow:{url:":socialhost:/:session_prefix:_/widget/render/follow?usegapi=1"},community:{url:":ctx_socialhost:/:session_prefix::im_prefix:_/widget/render/community?usegapi=1"},sharetoclassroom:{url:"https://classroom.google.com/sharewidget?usegapi=1"},ytshare:{params:{url:""},url:":socialhost:/:session_prefix:_/widget/render/ytshare?usegapi=1"},plus:{url:":socialhost:/:session_prefix:_/widget/render/badge?usegapi=1"},family_creation:{params:{url:""},url:"https://families.google.com/webcreation?usegapi=1&usegapi=1"},commentcount:{url:":socialhost:/:session_prefix:_/widget/render/commentcount?usegapi=1"},configurator:{url:":socialhost:/:session_prefix:_/plusbuttonconfigurator?usegapi=1"},zoomableimage:{url:"https://ssl.gstatic.com/microscope/embed/"},appfinder:{url:"https://workspace.google.com/:session_prefix:marketplace/appfinder?usegapi=1"},savetowallet:{url:"https://pay.google.com/gp/v/widget/save"},person:{url:":socialhost:/:session_prefix:_/widget/render/person?usegapi=1"},savetodrive:{url:"https://drive.google.com/savetodrivebutton?usegapi=1",methods:["save"]},page:{url:":socialhost:/:session_prefix:_/widget/render/page?usegapi=1"},card:{url:":socialhost:/:session_prefix:_/hovercard/card"}}},h:"m;/_/scs/apps-static/_/js/k=oz.gapi.en.-F_i8pxym_s.O/am=AQ/d=1/rs=AGLTcCOcSmYYH6pFUBh5t_7PICWuDXqniQ/m=__features__",u:"https://apis.google.com/js/client:platform.js",hee:!0,dpo:!1,le:[]},platform:["additnow","backdrop","blogger","comments","commentcount","community","donation","family_creation","follow","hangout","health","page","partnersbadge","person","playemm","playreview","plus","plusone","post","ratingbadge","savetoandroidpay","savetodrive","savetowallet","sharetoclassroom","shortlists","signin2","surveyoptin","visibility","youtube","ytsubscribe","zoomableimage"],annotation:["interactivepost","recobar","signin2","autocomplete","profile"]}}),function(){"use strict";var t;function e(t){var e=0;return function(){return e<t.length?{done:!1,value:t[e++]}:{done:!0}}}var i="function"==typeof Object.defineProperties?Object.defineProperty:function(t,e,i){return t==Array.prototype||t==Object.prototype?t:(t[e]=i.value,t)};var n=function(t){t=["object"==typeof globalThis&&globalThis,t,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var e=0;e<t.length;++e){var i=t[e];if(i&&i.Math==Math)return i}throw Error("Cannot find global object")}(this);function s(t,e){if(e)t:{var s=n;t=t.split(".");for(var o=0;o<t.length-1;o++){var r=t[o];if(!(r in s))break t;s=s[r]}(e=e(o=s[t=t[t.length-1]]))!=o&&null!=e&&i(s,t,{configurable:!0,writable:!0,value:e})}}function o(t){return(t={next:t})[Symbol.iterator]=function(){return this},t}function r(t){var i="undefined"!=typeof Symbol&&Symbol.iterator&&t[Symbol.iterator];return i?i.call(t):{next:e(t)}}function a(t){if(!(t instanceof Array)){t=r(t);for(var e,i=[];!(e=t.next()).done;)i.push(e.value);t=i}return t}s("Symbol",function(t){function e(t,e){this.g=t,i(this,"description",{configurable:!0,writable:!0,value:e})}if(t)return t;e.prototype.toString=function(){return this.g};var n="jscomp_symbol_"+(1e9*Math.random()>>>0)+"_",s=0;return function t(i){if(this instanceof t)throw new TypeError("Symbol is not a constructor");return new e(n+(i||"")+"_"+s++,i)}}),s("Symbol.iterator",function(t){if(t)return t;t=Symbol("Symbol.iterator");for(var s="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),r=0;r<s.length;r++){var a=n[s[r]];"function"==typeof a&&"function"!=typeof a.prototype[t]&&i(a.prototype,t,{configurable:!0,writable:!0,value:function(){return o(e(this))}})}return t}),s("Symbol.asyncIterator",function(t){return t||Symbol("Symbol.asyncIterator")});var l,u="function"==typeof Object.create?Object.create:function(t){function e(){}return e.prototype=t,new e},c=function(){if("undefined"!=typeof Reflect&&Reflect.construct){if(function(){function t(){}return new t,Reflect.construct(t,[],function(){}),new t instanceof t}())return Reflect.construct;var t=Reflect.construct;return function(e,i,n){return e=t(e,i),n&&Reflect.setPrototypeOf(e,n.prototype),e}}return function(t,e,i){return void 0===i&&(i=t),i=u(i.prototype||Object.prototype),Function.prototype.apply.call(t,i,e)||i}}();if("function"==typeof Object.setPrototypeOf)l=Object.setPrototypeOf;else{var h;t:{var d={};try{d.__proto__={a:!0},h=d.a;break t}catch(t){}h=!1}l=h?function(t,e){if(t.__proto__=e,t.__proto__!==e)throw new TypeError(t+" is not extensible");return t}:null}var p=l;function f(t,e){if(t.prototype=u(e.prototype),t.prototype.constructor=t,p)p(t,e);else for(var i in e)if("prototype"!=i)if(Object.defineProperties){var n=Object.getOwnPropertyDescriptor(e,i);n&&Object.defineProperty(t,i,n)}else t[i]=e[i];t.ma=e.prototype}function g(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function m(t,e,i){if(null==t)throw new TypeError("The 'this' value for String.prototype."+i+" must not be null or undefined");if(e instanceof RegExp)throw new TypeError("First argument to String.prototype."+i+" must not be a regular expression");return t+""}function v(t,e,i){t instanceof String&&(t=String(t));for(var n=t.length,s=0;s<n;s++){var o=t[s];if(e.call(i,o,s,t))return{S:s,X:o}}return{S:-1,X:void 0}}function y(t,e){t instanceof String&&(t+="");var i=0,n=!1,s={next:function(){if(!n&&i<t.length){var s=i++;return{value:e(s,t[s]),done:!1}}return n=!0,{done:!0,value:void 0}}};return s[Symbol.iterator]=function(){return s},s}s("Reflect",function(t){return t||{}}),s("Reflect.construct",function(){return c}),s("Reflect.setPrototypeOf",function(t){return t||(p?function(t,e){try{return p(t,e),!0}catch(t){return!1}}:null)}),s("WeakMap",function(t){function e(t){if(this.g=(u+=Math.random()+1).toString(),t){t=r(t);for(var e;!(e=t.next()).done;)e=e.value,this.set(e[0],e[1])}}function n(){}function s(t){var e=typeof t;return"object"===e&&null!==t||"function"===e}function o(t){if(!g(t,l)){var e=new n;i(t,l,{value:e})}}function a(t){var e=Object[t];e&&(Object[t]=function(t){return t instanceof n?t:(Object.isExtensible(t)&&o(t),e(t))})}if(function(){if(!t||!Object.seal)return!1;try{var e=Object.seal({}),i=Object.seal({}),n=new t([[e,2],[i,3]]);return 2==n.get(e)&&3==n.get(i)&&(n.delete(e),n.set(i,4),!n.has(e)&&4==n.get(i))}catch(t){return!1}}())return t;var l="$jscomp_hidden_"+Math.random();a("freeze"),a("preventExtensions"),a("seal");var u=0;return e.prototype.set=function(t,e){if(!s(t))throw Error("Invalid WeakMap key");if(o(t),!g(t,l))throw Error("WeakMap key fail: "+t);return t[l][this.g]=e,this},e.prototype.get=function(t){return s(t)&&g(t,l)?t[l][this.g]:void 0},e.prototype.has=function(t){return s(t)&&g(t,l)&&g(t[l],this.g)},e.prototype.delete=function(t){return!!(s(t)&&g(t,l)&&g(t[l],this.g))&&delete t[l][this.g]},e}),s("Map",function(t){function e(){var t={};return t.A=t.next=t.head=t}function i(t,e){var i=t.g;return o(function(){if(i){for(;i.head!=t.g;)i=i.A;for(;i.next!=i.head;)return i=i.next,{done:!1,value:e(i)};i=null}return{done:!0,value:void 0}})}function n(t,e){var i=e&&typeof e;"object"==i||"function"==i?a.has(e)?i=a.get(e):(i=""+ ++l,a.set(e,i)):i="p_"+e;var n=t.h[i];if(n&&g(t.h,i))for(t=0;t<n.length;t++){var s=n[t];if(e!=e&&s.key!=s.key||e===s.key)return{id:i,list:n,index:t,u:s}}return{id:i,list:n,index:-1,u:void 0}}function s(t){if(this.h={},this.g=e(),this.size=0,t){t=r(t);for(var i;!(i=t.next()).done;)i=i.value,this.set(i[0],i[1])}}if(function(){if(!t||"function"!=typeof t||!t.prototype.entries||"function"!=typeof Object.seal)return!1;try{var e=Object.seal({x:4}),i=new t(r([[e,"s"]]));if("s"!=i.get(e)||1!=i.size||i.get({x:4})||i.set({x:4},"t")!=i||2!=i.size)return!1;var n=i.entries(),s=n.next();return!s.done&&s.value[0]==e&&"s"==s.value[1]&&!((s=n.next()).done||4!=s.value[0].x||"t"!=s.value[1]||!n.next().done)}catch(t){return!1}}())return t;var a=new WeakMap;s.prototype.set=function(t,e){var i=n(this,t=0===t?0:t);return i.list||(i.list=this.h[i.id]=[]),i.u?i.u.value=e:(i.u={next:this.g,A:this.g.A,head:this.g,key:t,value:e},i.list.push(i.u),this.g.A.next=i.u,this.g.A=i.u,this.size++),this},s.prototype.delete=function(t){return!(!(t=n(this,t)).u||!t.list)&&(t.list.splice(t.index,1),t.list.length||delete this.h[t.id],t.u.A.next=t.u.next,t.u.next.A=t.u.A,t.u.head=null,this.size--,!0)},s.prototype.clear=function(){this.h={},this.g=this.g.A=e(),this.size=0},s.prototype.has=function(t){return!!n(this,t).u},s.prototype.get=function(t){return(t=n(this,t).u)&&t.value},s.prototype.entries=function(){return i(this,function(t){return[t.key,t.value]})},s.prototype.keys=function(){return i(this,function(t){return t.key})},s.prototype.values=function(){return i(this,function(t){return t.value})},s.prototype.forEach=function(t,e){for(var i,n=this.entries();!(i=n.next()).done;)i=i.value,t.call(e,i[1],i[0],this)},s.prototype[Symbol.iterator]=s.prototype.entries;var l=0;return s}),s("String.prototype.endsWith",function(t){return t||function(t,e){var i=m(this,t,"endsWith");void 0===e&&(e=i.length),e=Math.max(0,Math.min(0|e,i.length));for(var n=t.length;0<n&&0<e;)if(i[--e]!=t[--n])return!1;return 0>=n}}),s("Array.prototype.find",function(t){return t||function(t,e){return v(this,t,e).X}}),s("String.prototype.startsWith",function(t){return t||function(t,e){var i=m(this,t,"startsWith"),n=i.length,s=t.length;e=Math.max(0,Math.min(0|e,i.length));for(var o=0;o<s&&e<n;)if(i[e++]!=t[o++])return!1;return o>=s}}),s("String.prototype.repeat",function(t){return t||function(t){var e=m(this,null,"repeat");if(0>t||1342177279<t)throw new RangeError("Invalid count value");t|=0;for(var i="";t;)1&t&&(i+=e),(t>>>=1)&&(e+=e);return i}}),s("Array.prototype.keys",function(t){return t||function(){return y(this,function(t){return t})}}),s("Array.from",function(t){return t||function(t,e,i){e=null!=e?e:function(t){return t};var n=[],s="undefined"!=typeof Symbol&&Symbol.iterator&&t[Symbol.iterator];if("function"==typeof s){t=s.call(t);for(var o=0;!(s=t.next()).done;)n.push(e.call(i,s.value,o++))}else for(s=t.length,o=0;o<s;o++)n.push(e.call(i,t[o],o));return n}}),s("Array.prototype.values",function(t){return t||function(){return y(this,function(t,e){return e})}}),s("String.prototype.trimLeft",function(t){return t||function(){return this.replace(/^[\s\xa0]+/,"")}}),s("String.prototype.trimStart",function(t){return t||String.prototype.trimLeft}),s("Object.setPrototypeOf",function(t){return t||p});var _="function"==typeof Object.assign?Object.assign:function(t,e){for(var i=1;i<arguments.length;i++){var n=arguments[i];if(n)for(var s in n)g(n,s)&&(t[s]=n[s])}return t};function b(t,e){for(;t;){var i=Reflect.getOwnPropertyDescriptor(t,e);if(i)return i;t=Reflect.getPrototypeOf(t)}}function w(t,e){return t=void 0!==t?String(t):" ",0<e&&t?t.repeat(Math.ceil(e/t.length)).substring(0,e):""}function x(t){return t||Array.prototype.copyWithin}function k(t){return t||Array.prototype.fill}s("Object.assign",function(t){return t||_}),s("Promise",function(t){function e(t){this.g=0,this.i=void 0,this.h=[],this.s=!1;var e=this.j();try{t(e.resolve,e.reject)}catch(t){e.reject(t)}}function i(){this.g=null}function s(t){return t instanceof e?t:new e(function(e){e(t)})}if(t)return t;i.prototype.h=function(t){if(null==this.g){this.g=[];var e=this;this.i(function(){e.l()})}this.g.push(t)};var o=n.setTimeout;i.prototype.i=function(t){o(t,0)},i.prototype.l=function(){for(;this.g&&this.g.length;){var t=this.g;this.g=[];for(var e=0;e<t.length;++e){var i=t[e];t[e]=null;try{i()}catch(t){this.j(t)}}}this.g=null},i.prototype.j=function(t){this.i(function(){throw t})},e.prototype.j=function(){function t(t){return function(n){i||(i=!0,t.call(e,n))}}var e=this,i=!1;return{resolve:t(this.J),reject:t(this.l)}},e.prototype.J=function(t){if(t===this)this.l(new TypeError("A Promise cannot resolve to itself"));else if(t instanceof e)this.Y(t);else{t:switch(typeof t){case"object":var i=null!=t;break t;case"function":i=!0;break t;default:i=!1}i?this.I(t):this.o(t)}},e.prototype.I=function(t){var e=void 0;try{e=t.then}catch(t){return void this.l(t)}"function"==typeof e?this.Z(e,t):this.o(t)},e.prototype.l=function(t){this.v(2,t)},e.prototype.o=function(t){this.v(1,t)},e.prototype.v=function(t,e){if(0!=this.g)throw Error("Cannot settle("+t+", "+e+"): Promise already settled in state"+this.g);this.g=t,this.i=e,2===this.g&&this.L(),this.C()},e.prototype.L=function(){var t=this;o(function(){if(t.D()){var e=n.console;void 0!==e&&e.error(t.i)}},1)},e.prototype.D=function(){if(this.s)return!1;var t=n.CustomEvent,e=n.Event,i=n.dispatchEvent;return void 0===i||("function"==typeof t?t=new t("unhandledrejection",{cancelable:!0}):"function"==typeof e?t=new e("unhandledrejection",{cancelable:!0}):(t=n.document.createEvent("CustomEvent")).initCustomEvent("unhandledrejection",!1,!0,t),t.promise=this,t.reason=this.i,i(t))},e.prototype.C=function(){if(null!=this.h){for(var t=0;t<this.h.length;++t)a.h(this.h[t]);this.h=null}};var a=new i;return e.prototype.Y=function(t){var e=this.j();t.K(e.resolve,e.reject)},e.prototype.Z=function(t,e){var i=this.j();try{t.call(e,i.resolve,i.reject)}catch(t){i.reject(t)}},e.prototype.then=function(t,i){function n(t,e){return"function"==typeof t?function(e){try{s(t(e))}catch(t){o(t)}}:e}var s,o,r=new e(function(t,e){s=t,o=e});return this.K(n(t,s),n(i,o)),r},e.prototype.catch=function(t){return this.then(void 0,t)},e.prototype.K=function(t,e){function i(){switch(n.g){case 1:t(n.i);break;case 2:e(n.i);break;default:throw Error("Unexpected state: "+n.g)}}var n=this;null==this.h?a.h(i):this.h.push(i),this.s=!0},e.resolve=s,e.reject=function(t){return new e(function(e,i){i(t)})},e.race=function(t){return new e(function(e,i){for(var n=r(t),o=n.next();!o.done;o=n.next())s(o.value).K(e,i)})},e.all=function(t){var i=r(t),n=i.next();return n.done?s([]):new e(function(t,e){function o(e){return function(i){r[e]=i,0==--a&&t(r)}}var r=[],a=0;do{r.push(void 0),a++,s(n.value).K(o(r.length-1),e),n=i.next()}while(!n.done)})},e}),s("Object.is",function(t){return t||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e}}),s("Array.prototype.includes",function(t){return t||function(t,e){var i=this;i instanceof String&&(i=String(i));var n=i.length;for(0>(e=e||0)&&(e=Math.max(e+n,0));e<n;e++){var s=i[e];if(s===t||Object.is(s,t))return!0}return!1}}),s("String.prototype.includes",function(t){return t||function(t,e){return-1!==m(this,t,"includes").indexOf(t,e||0)}}),s("Array.prototype.copyWithin",function(t){function e(t){return 1/0===(t=Number(t))||-1/0===t?t:0|t}return t||function(t,i,n){var s=this.length;if(t=e(t),i=e(i),n=void 0===n?s:e(n),t=0>t?Math.max(s+t,0):Math.min(t,s),i=0>i?Math.max(s+i,0):Math.min(i,s),n=0>n?Math.max(s+n,0):Math.min(n,s),t<i)for(;i<n;)i in this?this[t++]=this[i++]:(delete this[t++],i++);else for(t+=(n=Math.min(n,s+i-t))-i;n>i;)--n in this?this[--t]=this[n]:delete this[--t];return this}}),s("Array.prototype.entries",function(t){return t||function(){return y(this,function(t,e){return[t,e]})}}),s("Array.prototype.fill",function(t){return t||function(t,e,i){var n=this.length||0;for(0>e&&(e=Math.max(0,n+e)),(null==i||i>n)&&(i=n),0>(i=Number(i))&&(i=Math.max(0,n+i)),e=Number(e||0);e<i;e++)this[e]=t;return this}}),s("Array.prototype.findIndex",function(t){return t||function(t,e){return v(this,t,e).S}}),s("Array.prototype.flat",function(t){return t||function(t){t=void 0===t?1:t;for(var e=[],i=0;i<this.length;i++){var n=this[i];Array.isArray(n)&&0<t?(n=Array.prototype.flat.call(n,t-1),e.push.apply(e,n)):e.push(n)}return e}}),s("Array.prototype.flatMap",function(t){return t||function(t,e){for(var i=[],n=0;n<this.length;n++){var s=t.call(e,this[n],n,this);Array.isArray(s)?i.push.apply(i,s):i.push(s)}return i}}),s("Array.of",function(t){return t||function(t){return Array.from(arguments)}}),s("globalThis",function(t){return t||n}),s("Math.acosh",function(t){return t||function(t){return t=Number(t),Math.log(t+Math.sqrt(t*t-1))}}),s("Math.asinh",function(t){return t||function(t){if(0===(t=Number(t)))return t;var e=Math.log(Math.abs(t)+Math.sqrt(t*t+1));return 0>t?-e:e}}),s("Math.log1p",function(t){return t||function(t){if(.25>(t=Number(t))&&-.25<t){for(var e=t,i=1,n=t,s=0,o=1;s!=n;)n=(s=n)+(o*=-1)*(e*=t)/++i;return n}return Math.log(1+t)}}),s("Math.atanh",function(t){if(t)return t;var e=Math.log1p;return function(t){return t=Number(t),(e(t)-e(-t))/2}}),s("Math.cbrt",function(t){return t||function(t){if(0===t)return t;t=Number(t);var e=Math.pow(Math.abs(t),1/3);return 0>t?-e:e}}),s("Math.clz32",function(t){return t||function(t){if(0===(t=Number(t)>>>0))return 32;var e=0;return 0==(4294901760&t)&&(t<<=16,e+=16),0==(4278190080&t)&&(t<<=8,e+=8),0==(4026531840&t)&&(t<<=4,e+=4),0==(3221225472&t)&&(t<<=2,e+=2),0==(2147483648&t)&&e++,e}}),s("Math.cosh",function(t){if(t)return t;var e=Math.exp;return function(t){return t=Number(t),(e(t)+e(-t))/2}}),s("Math.expm1",function(t){return t||function(t){if(.25>(t=Number(t))&&-.25<t){for(var e=t,i=1,n=t,s=0;s!=n;)n=(s=n)+(e*=t/++i);return n}return Math.exp(t)-1}}),s("Math.fround",function(t){if(t)return t;if("function"!=typeof Float32Array)return function(t){return t};var e=new Float32Array(1);return function(t){return e[0]=t,e[0]}}),s("Math.hypot",function(t){return t||function(t){if(2>arguments.length)return arguments.length?Math.abs(arguments[0]):0;var e,i,n;for(e=n=0;e<arguments.length;e++)n=Math.max(n,Math.abs(arguments[e]));if(1e100<n||1e-100>n){if(!n)return n;for(e=i=0;e<arguments.length;e++){var s=Number(arguments[e])/n;i+=s*s}return Math.sqrt(i)*n}for(e=i=0;e<arguments.length;e++)i+=(s=Number(arguments[e]))*s;return Math.sqrt(i)}}),s("Math.imul",function(t){return t||function(t,e){var i=65535&(t=Number(t)),n=65535&(e=Number(e));return i*n+((t>>>16&65535)*n+i*(e>>>16&65535)<<16>>>0)|0}}),s("Math.log10",function(t){return t||function(t){return Math.log(t)/Math.LN10}}),s("Math.log2",function(t){return t||function(t){return Math.log(t)/Math.LN2}}),s("Math.sign",function(t){return t||function(t){return 0===(t=Number(t))||isNaN(t)?t:0<t?1:-1}}),s("Math.sinh",function(t){if(t)return t;var e=Math.exp;return function(t){return 0===(t=Number(t))?t:(e(t)-e(-t))/2}}),s("Math.tanh",function(t){return t||function(t){if(0===(t=Number(t)))return t;var e=Math.exp(-2*Math.abs(t));return e=(1-e)/(1+e),0>t?-e:e}}),s("Math.trunc",function(t){return t||function(t){if(t=Number(t),isNaN(t)||1/0===t||-1/0===t||0===t)return t;var e=Math.floor(Math.abs(t));return 0>t?-e:e}}),s("Number.EPSILON",function(){return Math.pow(2,-52)}),s("Number.MAX_SAFE_INTEGER",function(){return 9007199254740991}),s("Number.MIN_SAFE_INTEGER",function(){return-9007199254740991}),s("Number.isFinite",function(t){return t||function(t){return"number"==typeof t&&(!isNaN(t)&&1/0!==t&&-1/0!==t)}}),s("Number.isInteger",function(t){return t||function(t){return!!Number.isFinite(t)&&t===Math.floor(t)}}),s("Number.isNaN",function(t){return t||function(t){return"number"==typeof t&&isNaN(t)}}),s("Number.isSafeInteger",function(t){return t||function(t){return Number.isInteger(t)&&Math.abs(t)<=Number.MAX_SAFE_INTEGER}}),s("Number.parseFloat",function(t){return t||parseFloat}),s("Number.parseInt",function(t){return t||parseInt}),s("Object.entries",function(t){return t||function(t){var e,i=[];for(e in t)g(t,e)&&i.push([e,t[e]]);return i}}),s("Object.fromEntries",function(t){return t||function(t){var e={};if(!(Symbol.iterator in t))throw new TypeError(t+" is not iterable");for(var i=(t=t[Symbol.iterator].call(t)).next();!i.done;i=t.next()){if(i=i.value,Object(i)!==i)throw new TypeError("iterable for fromEntries should yield objects");e[i[0]]=i[1]}return e}}),s("Object.getOwnPropertySymbols",function(t){return t||function(){return[]}}),s("Reflect.ownKeys",function(t){return t||function(t){var e=[],i=Object.getOwnPropertyNames(t);t=Object.getOwnPropertySymbols(t);for(var n=0;n<i.length;n++)("jscomp_symbol_"==i[n].substring(0,14)?t:e).push(i[n]);return e.concat(t)}}),s("Object.getOwnPropertyDescriptors",function(t){return t||function(t){for(var e={},i=Reflect.ownKeys(t),n=0;n<i.length;n++)e[i[n]]=Object.getOwnPropertyDescriptor(t,i[n]);return e}}),s("Object.values",function(t){return t||function(t){var e,i=[];for(e in t)g(t,e)&&i.push(t[e]);return i}}),s("Promise.allSettled",function(t){function e(t){return{status:"fulfilled",value:t}}function i(t){return{status:"rejected",reason:t}}return t||function(t){var n=this;return t=Array.from(t,function(t){return n.resolve(t).then(e,i)}),n.all(t)}}),s("Promise.prototype.finally",function(t){return t||function(t){return this.then(function(e){return Promise.resolve(t()).then(function(){return e})},function(e){return Promise.resolve(t()).then(function(){throw e})})}}),s("AggregateError",function(t){function e(t,e){"stack"in(e=Error(e))&&(this.stack=e.stack),this.errors=t,this.message=e.message}return t||(f(e,Error),e.prototype.name="AggregateError",e)}),s("Promise.any",function(t){return t||function(t){return t=t instanceof Array?t:Array.from(t),Promise.all(t.map(function(t){return Promise.resolve(t).then(function(t){throw t},function(t){return t})})).then(function(t){throw new AggregateError(t,"All promises were rejected")},function(t){return t})}}),s("Reflect.apply",function(t){if(t)return t;var e=Function.prototype.apply;return function(t,i,n){return e.call(t,i,n)}}),s("Reflect.defineProperty",function(t){return t||function(t,e,i){try{Object.defineProperty(t,e,i);var n=Object.getOwnPropertyDescriptor(t,e);return!!n&&(n.configurable===(i.configurable||!1)&&n.enumerable===(i.enumerable||!1)&&("value"in n?n.value===i.value&&n.writable===(i.writable||!1):n.get===i.get&&n.set===i.set))}catch(t){return!1}}}),s("Reflect.deleteProperty",function(t){return t||function(t,e){if(!g(t,e))return!0;try{return delete t[e]}catch(t){return!1}}}),s("Reflect.getOwnPropertyDescriptor",function(t){return t||Object.getOwnPropertyDescriptor}),s("Reflect.getPrototypeOf",function(t){return t||Object.getPrototypeOf}),s("Reflect.get",function(t){return t||function(t,e,i){if(2>=arguments.length)return t[e];var n=b(t,e);return n?n.get?n.get.call(i):n.value:void 0}}),s("Reflect.has",function(t){return t||function(t,e){return e in t}}),s("Reflect.isExtensible",function(t){return t||("function"==typeof Object.isExtensible?Object.isExtensible:function(){return!0})}),s("Reflect.preventExtensions",function(t){return t||("function"!=typeof Object.preventExtensions?function(){return!1}:function(t){return Object.preventExtensions(t),!Object.isExtensible(t)})}),s("Reflect.set",function(t){return t||function(t,e,i,n){var s=b(t,e);return s?s.set?(s.set.call(3<arguments.length?n:t,i),!0):!(!s.writable||Object.isFrozen(t))&&(t[e]=i,!0):!!Reflect.isExtensible(t)&&(t[e]=i,!0)}}),s("Set",function(t){function e(t){if(this.g=new Map,t){t=r(t);for(var e;!(e=t.next()).done;)this.add(e.value)}this.size=this.g.size}return function(){if(!t||"function"!=typeof t||!t.prototype.entries||"function"!=typeof Object.seal)return!1;try{var e=Object.seal({x:4}),i=new t(r([e]));if(!i.has(e)||1!=i.size||i.add(e)!=i||1!=i.size||i.add({x:4})!=i||2!=i.size)return!1;var n=i.entries(),s=n.next();return!s.done&&s.value[0]==e&&s.value[1]==e&&(!(s=n.next()).done&&s.value[0]!=e&&4==s.value[0].x&&s.value[1]==s.value[0]&&n.next().done)}catch(t){return!1}}()?t:(e.prototype.add=function(t){return t=0===t?0:t,this.g.set(t,t),this.size=this.g.size,this},e.prototype.delete=function(t){return t=this.g.delete(t),this.size=this.g.size,t},e.prototype.clear=function(){this.g.clear(),this.size=0},e.prototype.has=function(t){return this.g.has(t)},e.prototype.entries=function(){return this.g.entries()},e.prototype.values=function(){return this.g.values()},e.prototype.keys=e.prototype.values,e.prototype[Symbol.iterator]=e.prototype.values,e.prototype.forEach=function(t,e){var i=this;this.g.forEach(function(n){return t.call(e,n,n,i)})},e)}),s("String.prototype.codePointAt",function(t){return t||function(t){var e=m(this,null,"codePointAt"),i=e.length;if(0<=(t=Number(t)||0)&&t<i){t|=0;var n=e.charCodeAt(t);return 55296>n||56319<n||t+1===i?n:56320>(t=e.charCodeAt(t+1))||57343<t?n:1024*(n-55296)+t+9216}}}),s("String.fromCodePoint",function(t){return t||function(t){for(var e="",i=0;i<arguments.length;i++){var n=Number(arguments[i]);if(0>n||1114111<n||n!==Math.floor(n))throw new RangeError("invalid_code_point "+n);65535>=n?e+=String.fromCharCode(n):(n-=65536,e+=String.fromCharCode(n>>>10&1023|55296),e+=String.fromCharCode(1023&n|56320))}return e}}),s("String.prototype.matchAll",function(t){return t||function(t){if(t instanceof RegExp&&!t.global)throw new TypeError("RegExp passed into String.prototype.matchAll() must have global tag.");var e=new RegExp(t,t instanceof RegExp?void 0:"g"),i=this,n=!1,s={next:function(){if(n)return{value:void 0,done:!0};var t=e.exec(i);return t?(""===t[0]&&(e.lastIndex+=1),{value:t,done:!1}):(n=!0,{value:void 0,done:!0})}};return s[Symbol.iterator]=function(){return s},s}}),s("String.prototype.padEnd",function(t){return t||function(t,e){var i=m(this,null,"padStart");return i+w(e,t-i.length)}}),s("String.prototype.padStart",function(t){return t||function(t,e){var i=m(this,null,"padStart");return w(e,t-i.length)+i}}),s("String.prototype.replaceAll",function(t){return t||function(t,e){if(t instanceof RegExp&&!t.global)throw new TypeError("String.prototype.replaceAll called with a non-global RegExp argument.");return t instanceof RegExp?this.replace(t,e):this.replace(new RegExp(String(t).replace(/([-()\[\]{}+?*.$\^|,:#<!\\])/g,"\\$1").replace(/\x08/g,"\\x08"),"g"),e)}}),s("String.prototype.trimRight",function(t){return t||function(){return this.replace(/[\s\xa0]+$/,"")}}),s("String.prototype.trimEnd",function(t){return t||String.prototype.trimRight}),s("Int8Array.prototype.copyWithin",x),s("Uint8Array.prototype.copyWithin",x),s("Uint8ClampedArray.prototype.copyWithin",x),s("Int16Array.prototype.copyWithin",x),s("Uint16Array.prototype.copyWithin",x),s("Int32Array.prototype.copyWithin",x),s("Uint32Array.prototype.copyWithin",x),s("Float32Array.prototype.copyWithin",x),s("Float64Array.prototype.copyWithin",x),s("Int8Array.prototype.fill",k),s("Uint8Array.prototype.fill",k),s("Uint8ClampedArray.prototype.fill",k),s("Int16Array.prototype.fill",k),s("Uint16Array.prototype.fill",k),s("Int32Array.prototype.fill",k),s("Uint32Array.prototype.fill",k),s("Float32Array.prototype.fill",k),s("Float64Array.prototype.fill",k),s("WeakSet",function(t){function e(t){if(this.g=new WeakMap,t){t=r(t);for(var e;!(e=t.next()).done;)this.add(e.value)}}return function(){if(!t||!Object.seal)return!1;try{var e=Object.seal({}),i=Object.seal({}),n=new t([e]);return!(!n.has(e)||n.has(i))&&(n.delete(e),n.add(i),!n.has(e)&&n.has(i))}catch(t){return!1}}()?t:(e.prototype.add=function(t){return this.g.set(t,!0),this},e.prototype.has=function(t){return this.g.has(t)},e.prototype.delete=function(t){return this.g.delete(t)},e)});var C=this||self;function S(t){t=t.split(".");for(var e=C,i=0;i<t.length;i++)if(null==(e=e[t[i]]))return null;return e}function D(){}function T(t){var e=typeof t;return"object"==e&&null!=t||"function"==e}function M(t,e,i){return t.call.apply(t.bind,arguments)}function j(t,e,i){if(!t)throw Error();if(2<arguments.length){var n=Array.prototype.slice.call(arguments,2);return function(){var i=Array.prototype.slice.call(arguments);return Array.prototype.unshift.apply(i,n),t.apply(e,i)}}return function(){return t.apply(e,arguments)}}function A(t,e,i){return(A=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?M:j).apply(null,arguments)}function O(t,e){t=t.split(".");var i,n=C;t[0]in n||void 0===n.execScript||n.execScript("var "+t[0]);for(;t.length&&(i=t.shift());)t.length||void 0===e?n=n[i]&&n[i]!==Object.prototype[i]?n[i]:n[i]={}:n[i]=e}function E(t,e){function i(){}i.prototype=e.prototype,t.ma=e.prototype,t.prototype=new i,t.prototype.constructor=t,t.na=function(t,i,n){for(var s=Array(arguments.length-2),o=2;o<arguments.length;o++)s[o-2]=arguments[o];return e.prototype[i].apply(t,s)}}function P(t){return t}function I(t){if(Error.captureStackTrace)Error.captureStackTrace(this,I);else{var e=Error().stack;e&&(this.stack=e)}t&&(this.message=String(t))}function N(t,e){this.g=t===z&&e||"",this.h=H}function F(t){return t instanceof N&&t.constructor===N&&t.h===H?t.g:"type_error:Const"}function L(t){return new N(z,t)}E(I,Error),I.prototype.name="CustomError",N.prototype.T=!0,N.prototype.R=function(){return this.g};var R,H={},z={},W={m:{}};function Y(t,e){this.g=e===G?t:""}function U(t){return t instanceof Y&&t.constructor===Y?t.g:"type_error:TrustedResourceUrl"}W.m.N={ia:{"gstatic.com":{loader:L("https://www.gstatic.com/charts/%{version}/loader.js"),debug:L("https://www.gstatic.com/charts/debug/%{version}/js/jsapi_debug_%{package}_module.js"),debug_i18n:L("https://www.gstatic.com/charts/debug/%{version}/i18n/jsapi_debug_i18n_%{package}_module__%{language}.js"),compiled:L("https://www.gstatic.com/charts/%{version}/js/jsapi_compiled_%{package}_module.js"),compiled_i18n:L("https://www.gstatic.com/charts/%{version}/i18n/jsapi_compiled_i18n_%{package}_module__%{language}.js"),css:L("https://www.gstatic.com/charts/%{version}/css/%{subdir}/%{filename}"),css2:L("https://www.gstatic.com/charts/%{version}/css/%{subdir1}/%{subdir2}/%{filename}"),third_party:L("https://www.gstatic.com/charts/%{version}/third_party/%{subdir}/%{filename}"),third_party2:L("https://www.gstatic.com/charts/%{version}/third_party/%{subdir1}/%{subdir2}/%{filename}"),third_party_gen:L("https://www.gstatic.com/charts/%{version}/third_party/%{subdir}/%{filename}")},"gstatic.cn":{loader:L("https://www.gstatic.cn/charts/%{version}/loader.js"),debug:L("https://www.gstatic.cn/charts/debug/%{version}/js/jsapi_debug_%{package}_module.js"),debug_i18n:L("https://www.gstatic.cn/charts/debug/%{version}/i18n/jsapi_debug_i18n_%{package}_module__%{language}.js"),compiled:L("https://www.gstatic.cn/charts/%{version}/js/jsapi_compiled_%{package}_module.js"),compiled_i18n:L("https://www.gstatic.cn/charts/%{version}/i18n/jsapi_compiled_i18n_%{package}_module__%{language}.js"),css:L("https://www.gstatic.cn/charts/%{version}/css/%{subdir}/%{filename}"),css2:L("https://www.gstatic.cn/charts/%{version}/css/%{subdir1}/%{subdir2}/%{filename}"),third_party:L("https://www.gstatic.cn/charts/%{version}/third_party/%{subdir}/%{filename}"),third_party2:L("https://www.gstatic.cn/charts/%{version}/third_party/%{subdir1}/%{subdir2}/%{filename}"),third_party_gen:L("https://www.gstatic.cn/charts/%{version}/third_party/%{subdir}/%{filename}")}},ea:["default"],qa:{default:[],graphics:["default"],ui:["graphics"],ui_base:["graphics"],flashui:["ui"],fw:["ui"],geo:["ui"],annotatedtimeline:["annotationchart"],annotationchart:["ui","controls","corechart","table"],areachart:"browserchart",bar:["fw","dygraph","webfontloader"],barchart:"browserchart",browserchart:["ui"],bubbles:["fw","d3"],calendar:["fw"],charteditor:"ui corechart imagechart annotatedtimeline gauge geochart motionchart orgchart table".split(" "),charteditor_base:"ui_base corechart imagechart annotatedtimeline gauge geochart motionchart orgchart table_base".split(" "),circles:["fw","d3"],clusterchart:["corechart","d3"],columnchart:"browserchart",controls:["ui"],controls_base:["ui_base"],corechart:["ui"],gantt:["fw","dygraph"],gauge:["ui"],geochart:["geo"],geomap:["flashui","geo"],geomap_base:["ui_base"],helloworld:["fw"],imagechart:["ui"],imageareachart:"imagechart",imagebarchart:"imagechart",imagelinechart:"imagechart",imagepiechart:"imagechart",imagesparkline:"imagechart",line:["fw","dygraph","webfontloader"],linechart:"browserchart",map:["geo"],matrix:["vegachart"],motionchart:["flashui"],orgchart:["ui"],overtimecharts:["ui","corechart"],piechart:"browserchart",sankey:["fw","d3","d3.sankey"],scatter:["fw","dygraph","webfontloader"],scatterchart:"browserchart",sunburst:["fw","d3"],streamgraph:["fw","d3"],table:["ui"],table_base:["ui_base"],timeline:["fw","ui","dygraph"],treemap:["ui"],vegachart:["graphics"],wordtree:["ui"]},Ba:{d3:{subdir1:"d3",subdir2:"v5",filename:"d3.js"},"d3.sankey":{subdir1:"d3_sankey",subdir2:"v4",filename:"d3.sankey.js"},webfontloader:{subdir:"webfontloader",filename:"webfont.js"}},Aa:{dygraph:{subdir:"dygraphs",filename:"dygraph-tickers-combined.js"}},pa:{default:[{subdir:"core",filename:"tooltip.css"}],annotationchart:[{subdir:"annotationchart",filename:"annotationchart.css"}],charteditor:[{subdir:"charteditor",filename:"charteditor.css"}],charteditor_base:[{subdir:"charteditor_base",filename:"charteditor_base.css"}],controls:[{subdir:"controls",filename:"controls.css"}],imagesparkline:[{subdir:"imagechart",filename:"imagesparkline.css"}],orgchart:[{subdir:"orgchart",filename:"orgchart.css"}],table:[{subdir:"table",filename:"table.css"},{subdir:"util",filename:"format.css"}],table_base:[{subdir:"util",filename:"format.css"},{subdir:"table",filename:"table_base.css"}],ui:[{subdir:"util",filename:"util.css"}],ui_base:[{subdir:"util",filename:"util_base.css"}]}},W.m.$={ga:{"chrome-frame":{versions:{"1.0.0":{uncompressed:"CFInstall.js",compressed:"CFInstall.min.js"},"1.0.1":{uncompressed:"CFInstall.js",compressed:"CFInstall.min.js"},"1.0.2":{uncompressed:"CFInstall.js",compressed:"CFInstall.min.js"}},aliases:{1:"1.0.2","1.0":"1.0.2"}},swfobject:{versions:{2.1:{uncompressed:"swfobject_src.js",compressed:"swfobject.js"},2.2:{uncompressed:"swfobject_src.js",compressed:"swfobject.js"}},aliases:{2:"2.2"}},"ext-core":{versions:{"3.1.0":{uncompressed:"ext-core-debug.js",compressed:"ext-core.js"},"3.0.0":{uncompressed:"ext-core-debug.js",compressed:"ext-core.js"}},aliases:{3:"3.1.0","3.0":"3.0.0",3.1:"3.1.0"}},scriptaculous:{versions:{"1.8.3":{uncompressed:"scriptaculous.js",compressed:"scriptaculous.js"},"1.9.0":{uncompressed:"scriptaculous.js",compressed:"scriptaculous.js"},"1.8.1":{uncompressed:"scriptaculous.js",compressed:"scriptaculous.js"},"1.8.2":{uncompressed:"scriptaculous.js",compressed:"scriptaculous.js"}},aliases:{1:"1.9.0",1.8:"1.8.3",1.9:"1.9.0"}},webfont:{versions:{"1.0.12":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.13":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.14":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.15":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.10":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.11":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.27":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.28":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.29":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.23":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.24":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.25":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.26":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.21":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.22":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.3":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.4":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.5":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.6":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.9":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.16":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.17":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.0":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.18":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.1":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.19":{uncompressed:"webfont_debug.js",compressed:"webfont.js"},"1.0.2":{uncompressed:"webfont_debug.js",compressed:"webfont.js"}},aliases:{1:"1.0.29","1.0":"1.0.29"}},jqueryui:{versions:{"1.8.17":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.8.16":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.8.15":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.8.14":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.8.4":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.8.13":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.8.5":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.8.12":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.8.6":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.8.11":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.8.7":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.8.10":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.8.8":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.8.9":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.6.0":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.7.0":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.5.2":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.8.0":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.7.1":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.5.3":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.8.1":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.7.2":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.8.2":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"},"1.7.3":{uncompressed:"jquery-ui.js",compressed:"jquery-ui.min.js"}},aliases:{1:"1.8.17",1.5:"1.5.3",1.6:"1.6.0",1.7:"1.7.3",1.8:"1.8.17","1.8.3":"1.8.4"}},mootools:{versions:{"1.3.0":{uncompressed:"mootools.js",compressed:"mootools-yui-compressed.js"},"1.2.1":{uncompressed:"mootools.js",compressed:"mootools-yui-compressed.js"},"1.1.2":{uncompressed:"mootools.js",compressed:"mootools-yui-compressed.js"},"1.4.0":{uncompressed:"mootools.js",compressed:"mootools-yui-compressed.js"},"1.3.1":{uncompressed:"mootools.js",compressed:"mootools-yui-compressed.js"},"1.2.2":{uncompressed:"mootools.js",compressed:"mootools-yui-compressed.js"},"1.4.1":{uncompressed:"mootools.js",compressed:"mootools-yui-compressed.js"},"1.3.2":{uncompressed:"mootools.js",compressed:"mootools-yui-compressed.js"},"1.2.3":{uncompressed:"mootools.js",compressed:"mootools-yui-compressed.js"},"1.4.2":{uncompressed:"mootools.js",compressed:"mootools-yui-compressed.js"},"1.2.4":{uncompressed:"mootools.js",compressed:"mootools-yui-compressed.js"},"1.2.5":{uncompressed:"mootools.js",compressed:"mootools-yui-compressed.js"},"1.1.1":{uncompressed:"mootools.js",compressed:"mootools-yui-compressed.js"}},aliases:{1:"1.1.2",1.1:"1.1.2",1.2:"1.2.5",1.3:"1.3.2",1.4:"1.4.2",1.11:"1.1.1"}},yui:{versions:{"2.8.0r4":{uncompressed:"build/yuiloader/yuiloader.js",compressed:"build/yuiloader/yuiloader-min.js"},"2.9.0":{uncompressed:"build/yuiloader/yuiloader.js",compressed:"build/yuiloader/yuiloader-min.js"},"2.8.1":{uncompressed:"build/yuiloader/yuiloader.js",compressed:"build/yuiloader/yuiloader-min.js"},"2.6.0":{uncompressed:"build/yuiloader/yuiloader.js",compressed:"build/yuiloader/yuiloader-min.js"},"2.7.0":{uncompressed:"build/yuiloader/yuiloader.js",compressed:"build/yuiloader/yuiloader-min.js"},"3.3.0":{uncompressed:"build/yui/yui.js",compressed:"build/yui/yui-min.js"},"2.8.2r1":{uncompressed:"build/yuiloader/yuiloader.js",compressed:"build/yuiloader/yuiloader-min.js"}},aliases:{2:"2.9.0",2.6:"2.6.0",2.7:"2.7.0",2.8:"2.8.2r1","2.8.0":"2.8.0r4","2.8.2":"2.8.2r1",2.9:"2.9.0",3:"3.3.0",3.3:"3.3.0"}},prototype:{versions:{"1.6.1.0":{uncompressed:"prototype.js",compressed:"prototype.js"},"1.6.0.2":{uncompressed:"prototype.js",compressed:"prototype.js"},"1.7.0.0":{uncompressed:"prototype.js",compressed:"prototype.js"},"1.6.0.3":{uncompressed:"prototype.js",compressed:"prototype.js"}},aliases:{1:"1.7.0.0",1.6:"1.6.1.0","1.6.0":"1.6.0.3","1.6.1":"1.6.1.0",1.7:"1.7.0.0","1.7.0":"1.7.0.0"}},jquery:{versions:{"1.2.3":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.2.6":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.3.0":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.3.1":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.3.2":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.4.0":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.4.1":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.4.2":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.4.3":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.4.4":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.5.0":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.5.1":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.5.2":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.6.0":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.6.1":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.6.2":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.6.3":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.6.4":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.7.0":{uncompressed:"jquery.js",compressed:"jquery.min.js"},"1.7.1":{uncompressed:"jquery.js",compressed:"jquery.min.js"}},aliases:{1:"1.7.1",1.2:"1.2.6",1.3:"1.3.2",1.4:"1.4.4",1.5:"1.5.2",1.6:"1.6.4",1.7:"1.7.1"}},dojo:{versions:{"1.3.0":{uncompressed:"dojo/dojo.xd.js.uncompressed.js",compressed:"dojo/dojo.xd.js"},"1.4.0":{uncompressed:"dojo/dojo.xd.js.uncompressed.js",compressed:"dojo/dojo.xd.js"},"1.3.1":{uncompressed:"dojo/dojo.xd.js.uncompressed.js",compressed:"dojo/dojo.xd.js"},"1.5.0":{uncompressed:"dojo/dojo.xd.js.uncompressed.js",compressed:"dojo/dojo.xd.js"},"1.4.1":{uncompressed:"dojo/dojo.xd.js.uncompressed.js",compressed:"dojo/dojo.xd.js"},"1.3.2":{uncompressed:"dojo/dojo.xd.js.uncompressed.js",compressed:"dojo/dojo.xd.js"},"1.2.3":{uncompressed:"dojo/dojo.xd.js.uncompressed.js",compressed:"dojo/dojo.xd.js"},"1.6.0":{uncompressed:"dojo/dojo.xd.js.uncompressed.js",compressed:"dojo/dojo.xd.js"},"1.5.1":{uncompressed:"dojo/dojo.xd.js.uncompressed.js",compressed:"dojo/dojo.xd.js"},"1.7.0":{uncompressed:"dojo/dojo.js.uncompressed.js",compressed:"dojo/dojo.js"},"1.6.1":{uncompressed:"dojo/dojo.xd.js.uncompressed.js",compressed:"dojo/dojo.xd.js"},"1.4.3":{uncompressed:"dojo/dojo.xd.js.uncompressed.js",compressed:"dojo/dojo.xd.js"},"1.7.1":{uncompressed:"dojo/dojo.js.uncompressed.js",compressed:"dojo/dojo.js"},"1.7.2":{uncompressed:"dojo/dojo.js.uncompressed.js",compressed:"dojo/dojo.js"},"1.2.0":{uncompressed:"dojo/dojo.xd.js.uncompressed.js",compressed:"dojo/dojo.xd.js"},"1.1.1":{uncompressed:"dojo/dojo.xd.js.uncompressed.js",compressed:"dojo/dojo.xd.js"}},aliases:{1:"1.6.1",1.1:"1.1.1",1.2:"1.2.3",1.3:"1.3.2",1.4:"1.4.3",1.5:"1.5.1",1.6:"1.6.1",1.7:"1.7.2"}}}},W.m.aa={af:!0,am:!0,az:!0,ar:!0,arb:"ar",bg:!0,bn:!0,ca:!0,cs:!0,cmn:"zh",da:!0,de:!0,el:!0,en:!0,en_gb:!0,es:!0,es_419:!0,et:!0,eu:!0,fa:!0,fi:!0,fil:!0,fr:!0,fr_ca:!0,gl:!0,ka:!0,gu:!0,he:"iw",hi:!0,hr:!0,hu:!0,hy:!0,id:!0,in:"id",is:!0,it:!0,iw:!0,ja:!0,ji:"yi",jv:!1,jw:"jv",km:!0,kn:!0,ko:!0,lo:!0,lt:!0,lv:!0,ml:!0,mn:!0,mo:"ro",mr:!0,ms:!0,nb:"no",ne:!0,nl:!0,no:!0,pl:!0,pt:"pt_br",pt_br:!0,pt_pt:!0,ro:!0,ru:!0,si:!0,sk:!0,sl:!0,sr:!0,sv:!0,sw:!0,swh:"sw",ta:!0,te:!0,th:!0,tl:"fil",tr:!0,uk:!0,ur:!0,vi:!0,yi:!1,zh:"zh_cn",zh_cn:!0,zh_hk:!0,zh_tw:!0,zsm:"ms",zu:!0},W.m.M={},W.m.M.O={1:"1.0","1.0":"current",1.1:"upcoming",1.2:"testing",41:"pre-45",42:"pre-45",43:"pre-45",44:"pre-45",46:"46.1",46.1:"46.2",48:"48.1",current:"51",upcoming:"51"},Y.prototype.T=!0,Y.prototype.R=function(){return this.g.toString()},Y.prototype.toString=function(){return this.g+""};var q=/%{(\w+)}/g,B=/^((https:)?\/\/[0-9a-z.:[\]-]+\/|\/[^/\\]|[^:/\\%]+\/|[^:/\\%]*[?#]|about:blank#)/i,V=/^([^?#]*)(\?[^#]*)?(#[\s\S]*)?/;function $(t,e,i){return t=function(t,e){var i=F(t);if(!B.test(i))throw Error("Invalid TrustedResourceUrl format: "+i);return K(t=i.replace(q,function(t,n){if(!Object.prototype.hasOwnProperty.call(e,n))throw Error('Found marker, "'+n+'", in format string, "'+i+'", but no valid label mapping found in args: '+JSON.stringify(e));return(t=e[n])instanceof N?F(t):encodeURIComponent(String(t))}))}(t,e),e=(t=V.exec(U(t).toString()))[3]||"",K(t[1]+X("?",t[2]||"",i)+X("#",e,void 0))}var G={};function K(t){if(void 0===R){var e=null,i=C.trustedTypes;if(i&&i.createPolicy){try{e=i.createPolicy("goog#html",{createHTML:P,createScript:P,createScriptURL:P})}catch(t){C.console&&C.console.error(t.message)}R=e}else R=e}return new Y(t=(e=R)?e.createScriptURL(t):t,G)}function X(t,e,i){if(null==i)return e;if("string"==typeof i)return i?t+encodeURIComponent(i):"";for(var n in i)if(Object.prototype.hasOwnProperty.call(i,n)){var s=i[n];s=Array.isArray(s)?s:[s];for(var o=0;o<s.length;o++){var r=s[o];null!=r&&(e||(e=t),e+=(e.length>t.length?"&":"")+encodeURIComponent(n)+"="+encodeURIComponent(String(r)))}}return e}var J=Array.prototype.some?function(t,e){return Array.prototype.some.call(t,e,void 0)}:function(t,e){for(var i=t.length,n="string"==typeof t?t.split(""):t,s=0;s<i;s++)if(s in n&&e.call(void 0,n[s],s,t))return!0;return!1};var Z,Q="constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" ");t:{var tt=C.navigator;if(tt){var et=tt.userAgent;if(et){Z=et;break t}}Z=""}var it=/^[\w+/_-]+[=]{0,2}$/;function nt(t,e){this.g=t[C.Symbol.iterator](),this.h=e,this.i=0}nt.prototype[Symbol.iterator]=function(){return this},nt.prototype.next=function(){var t=this.g.next();return{value:t.done?void 0:this.h.call(void 0,t.value,this.i++),done:t.done}};var st="StopIteration"in C?C.StopIteration:{message:"StopIteration",stack:""};function ot(){}function rt(t){if(t instanceof lt||t instanceof ut||t instanceof ct)return t;if("function"==typeof t.next)return new lt(function(){return at(t)});if("function"==typeof t[Symbol.iterator])return new lt(function(){return t[Symbol.iterator]()});if("function"==typeof t.F)return new lt(function(){return at(t.F())});throw Error("Not an iterator or iterable.")}function at(t){if(!(t instanceof ot))return t;var e=!1;return{next:function(){for(var i;!e;)try{i=t.next();break}catch(t){if(t!==st)throw t;e=!0}return{value:i,done:e}}}}function lt(t){this.g=t}function ut(t){this.h=t}function ct(t){lt.call(this,function(){return t}),this.h=t}function ht(t,e){this.h={},this.g=[],this.i=this.size=0;var i=arguments.length;if(1<i){if(i%2)throw Error("Uneven number of arguments");for(var n=0;n<i;n+=2)this.set(arguments[n],arguments[n+1])}else if(t)if(t instanceof ht)for(i=t.G(),n=0;n<i.length;n++)this.set(i[n],t.get(i[n]));else for(n in t)this.set(n,t[n])}function dt(t){if(t.size!=t.g.length){for(var e=0,i=0;e<t.g.length;){var n=t.g[e];pt(t.h,n)&&(t.g[i++]=n),e++}t.g.length=i}if(t.size!=t.g.length){var s={};for(i=e=0;e<t.g.length;)pt(s,n=t.g[e])||(t.g[i++]=n,s[n]=1),e++;t.g.length=i}}function pt(t,e){return Object.prototype.hasOwnProperty.call(t,e)}ot.prototype.next=function(){return ot.prototype.g.call(this)},ot.prototype.g=function(){throw st},ot.prototype.F=function(){return this},lt.prototype.F=function(){return new ut(this.g())},lt.prototype[Symbol.iterator]=function(){return new ct(this.g())},lt.prototype.i=function(){return new ct(this.g())},f(ut,ot),ut.prototype.g=function(){var t=this.h.next();if(t.done)throw st;return t.value},ut.prototype.next=function(){return ut.prototype.g.call(this)},ut.prototype[Symbol.iterator]=function(){return new ct(this.h)},ut.prototype.i=function(){return new ct(this.h)},f(ct,lt),ct.prototype.next=function(){return this.h.next()},(t=ht.prototype).H=function(){dt(this);for(var t=[],e=0;e<this.g.length;e++)t.push(this.h[this.g[e]]);return t},t.G=function(){return dt(this),this.g.concat()},t.has=function(t){return pt(this.h,t)},t.get=function(t,e){return pt(this.h,t)?this.h[t]:e},t.set=function(t,e){pt(this.h,t)||(this.size+=1,this.g.push(t),this.i++),this.h[t]=e},t.forEach=function(t,e){for(var i=this.G(),n=0;n<i.length;n++){var s=i[n],o=this.get(s);t.call(e,o,s,this)}},t.keys=function(){return rt(this.F(!0)).i()},t.values=function(){return rt(this.F(!1)).i()},t.entries=function(){var t=this;return function(t,e){return new nt(t,e)}(this.keys(),function(e){return[e,t.get(e)]})},t.F=function(t){dt(this);var e=0,i=this.i,n=this,s=new ot;return s.g=function(){if(i!=n.i)throw Error("The map has changed since the iterator was created");if(e>=n.g.length)throw st;var s=n.g[e++];return t?s:n.h[s]},s.next=s.g.bind(s),s};var ft=/^(?:([^:/?#.]+):)?(?:\/\/(?:([^\\/?#]*)@)?([^\\/?#]*?)(?::([0-9]+))?(?=[\\/?#]|$))?([^?#]+)?(?:\?([^#]*))?(?:#([\s\S]*))?$/;function gt(t){var e;this.g=this.s=this.j="",this.v=null,this.o=this.h="",this.l=!1,t instanceof gt?(this.l=t.l,mt(this,t.j),this.s=t.s,this.g=t.g,vt(this,t.v),this.h=t.h,yt(this,Ot(t.i)),this.o=t.o):t&&(e=String(t).match(ft))?(this.l=!1,mt(this,e[1]||"",!0),this.s=_t(e[2]||""),this.g=_t(e[3]||"",!0),vt(this,e[4]),this.h=_t(e[5]||"",!0),yt(this,e[6]||"",!0),this.o=_t(e[7]||"")):(this.l=!1,this.i=new Tt(null,this.l))}function mt(t,e,i){t.j=i?_t(e,!0):e,t.j&&(t.j=t.j.replace(/:$/,""))}function vt(t,e){if(e){if(e=Number(e),isNaN(e)||0>e)throw Error("Bad port number "+e);t.v=e}else t.v=null}function yt(t,e,i){e instanceof Tt?(t.i=e,function(t,e){e&&!t.j&&(Mt(t),t.i=null,t.g.forEach(function(t,e){var i=e.toLowerCase();if(e!=i&&(jt(this,e),jt(this,i),0<t.length)){this.i=null;var n=(e=this.g).set;i=Et(this,i);var s=t.length;if(0<s){for(var o=Array(s),r=0;r<s;r++)o[r]=t[r];s=o}else s=[];n.call(e,i,s),this.h+=t.length}},t)),t.j=e}(t.i,t.l)):(i||(e=bt(e,St)),t.i=new Tt(e,t.l))}function _t(t,e){return t?e?decodeURI(t.replace(/%25/g,"%2525")):decodeURIComponent(t):""}function bt(t,e,i){return"string"==typeof t?(t=encodeURI(t).replace(e,wt),i&&(t=t.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),t):null}function wt(t){return"%"+((t=t.charCodeAt(0))>>4&15).toString(16)+(15&t).toString(16)}gt.prototype.toString=function(){var t=[],e=this.j;e&&t.push(bt(e,xt,!0),":");var i=this.g;return(i||"file"==e)&&(t.push("//"),(e=this.s)&&t.push(bt(e,xt,!0),"@"),t.push(encodeURIComponent(String(i)).replace(/%25([0-9a-fA-F]{2})/g,"%$1")),null!=(i=this.v)&&t.push(":",String(i))),(i=this.h)&&(this.g&&"/"!=i.charAt(0)&&t.push("/"),t.push(bt(i,"/"==i.charAt(0)?Ct:kt,!0))),(i=this.i.toString())&&t.push("?",i),(i=this.o)&&t.push("#",bt(i,Dt)),t.join("")},gt.prototype.resolve=function(t){var e=new gt(this),i=!!t.j;i?mt(e,t.j):i=!!t.s,i?e.s=t.s:i=!!t.g,i?e.g=t.g:i=null!=t.v;var n=t.h;if(i)vt(e,t.v);else if(i=!!t.h){if("/"!=n.charAt(0))if(this.g&&!this.h)n="/"+n;else{var s=e.h.lastIndexOf("/");-1!=s&&(n=e.h.substr(0,s+1)+n)}if(".."==(s=n)||"."==s)n="";else if(-1!=s.indexOf("./")||-1!=s.indexOf("/.")){n=0==s.lastIndexOf("/",0),s=s.split("/");for(var o=[],r=0;r<s.length;){var a=s[r++];"."==a?n&&r==s.length&&o.push(""):".."==a?((1<o.length||1==o.length&&""!=o[0])&&o.pop(),n&&r==s.length&&o.push("")):(o.push(a),n=!0)}n=o.join("/")}else n=s}return i?e.h=n:i=""!==t.i.toString(),i?yt(e,Ot(t.i)):i=!!t.o,i&&(e.o=t.o),e};var xt=/[#\/\?@]/g,kt=/[#\?:]/g,Ct=/[#\?]/g,St=/[#\?@]/g,Dt=/#/g;function Tt(t,e){this.h=this.g=null,this.i=t||null,this.j=!!e}function Mt(t){t.g||(t.g=new ht,t.h=0,t.i&&function(t,e){if(t){t=t.split("&");for(var i=0;i<t.length;i++){var n=t[i].indexOf("="),s=null;if(0<=n){var o=t[i].substring(0,n);s=t[i].substring(n+1)}else o=t[i];e(o,s?decodeURIComponent(s.replace(/\+/g," ")):"")}}}(t.i,function(e,i){t.add(decodeURIComponent(e.replace(/\+/g," ")),i)}))}function jt(t,e){Mt(t),e=Et(t,e),t.g.has(e)&&(t.i=null,t.h-=t.g.get(e).length,pt((t=t.g).h,e)&&(delete t.h[e],--t.size,t.i++,t.g.length>2*t.size&&dt(t)))}function At(t,e){return Mt(t),e=Et(t,e),t.g.has(e)}function Ot(t){var e=new Tt;return e.i=t.i,t.g&&(e.g=new ht(t.g),e.h=t.h),e}function Et(t,e){return e=String(e),t.j&&(e=e.toLowerCase()),e}(t=Tt.prototype).add=function(t,e){Mt(this),this.i=null,t=Et(this,t);var i=this.g.get(t);return i||this.g.set(t,i=[]),i.push(e),this.h+=1,this},t.forEach=function(t,e){Mt(this),this.g.forEach(function(i,n){i.forEach(function(i){t.call(e,i,n,this)},this)},this)},t.G=function(){Mt(this);for(var t=this.g.H(),e=this.g.G(),i=[],n=0;n<e.length;n++)for(var s=t[n],o=0;o<s.length;o++)i.push(e[n]);return i},t.H=function(t){Mt(this);var e=[];if("string"==typeof t)At(this,t)&&(e=e.concat(this.g.get(Et(this,t))));else{t=this.g.H();for(var i=0;i<t.length;i++)e=e.concat(t[i])}return e},t.set=function(t,e){return Mt(this),this.i=null,At(this,t=Et(this,t))&&(this.h-=this.g.get(t).length),this.g.set(t,[e]),this.h+=1,this},t.get=function(t,e){return t&&0<(t=this.H(t)).length?String(t[0]):e},t.toString=function(){if(this.i)return this.i;if(!this.g)return"";for(var t=[],e=this.g.G(),i=0;i<e.length;i++){var n=e[i],s=encodeURIComponent(String(n));n=this.H(n);for(var o=0;o<n.length;o++){var r=s;""!==n[o]&&(r+="="+encodeURIComponent(String(n[o]))),t.push(r)}}return this.i=t.join("&")};var Pt,It={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",frameborder:"frameBorder",height:"height",maxlength:"maxLength",nonce:"nonce",role:"role",rowspan:"rowSpan",type:"type",usemap:"useMap",valign:"vAlign",width:"width"};function Nt(t,e){return e=String(e),"application/xhtml+xml"===t.contentType&&(e=e.toLowerCase()),t.createElement(e)}function Ft(t){this.g=t||C.document||document}function Lt(t,e){this.i=t,this.j=e,this.h=0,this.g=null}function Rt(t,e){t.j(e),100>t.h&&(t.h++,e.next=t.g,t.g=e)}function Ht(t){C.setTimeout(function(){throw t},0)}function zt(){this.h=this.g=null}function Wt(){var t=$t,e=null;return t.g&&(e=t.g,t.g=t.g.next,t.g||(t.h=null),e.next=null),e}Lt.prototype.get=function(){if(0<this.h){this.h--;var t=this.g;this.g=t.next,t.next=null}else t=this.i();return t},zt.prototype.add=function(t,e){var i=Ut.get();i.set(t,e),this.h?this.h.next=i:this.g=i,this.h=i};var Yt,Ut=new Lt(function(){return new qt},function(t){return t.reset()});function qt(){this.next=this.g=this.h=null}function Bt(t,e){Yt||function(){if(C.Promise&&C.Promise.resolve){var t=C.Promise.resolve(void 0);Yt=function(){t.then(Gt)}}else Yt=function(){var t=Gt;"function"!=typeof C.setImmediate||C.Window&&C.Window.prototype&&-1==Z.indexOf("Edge")&&C.Window.prototype.setImmediate==C.setImmediate?(Pt||(Pt=function(){var t=C.MessageChannel;if(void 0===t&&"undefined"!=typeof window&&window.postMessage&&window.addEventListener&&-1==Z.indexOf("Presto")&&(t=function(){var t=Nt(document,"IFRAME");t.style.display="none",document.documentElement.appendChild(t);var e=t.contentWindow;(t=e.document).open(),t.close();var i="callImmediate"+Math.random(),n="file:"==e.location.protocol?"*":e.location.protocol+"//"+e.location.host;t=A(function(t){"*"!=n&&t.origin!=n||t.data!=i||this.port1.onmessage()},this),e.addEventListener("message",t,!1),this.port1={},this.port2={postMessage:function(){e.postMessage(i,n)}}}),void 0!==t&&-1==Z.indexOf("Trident")&&-1==Z.indexOf("MSIE")){var e=new t,i={},n=i;return e.port1.onmessage=function(){if(void 0!==i.next){var t=(i=i.next).P;i.P=null,t()}},function(t){n.next={P:t},n=n.next,e.port2.postMessage(0)}}return function(t){C.setTimeout(t,0)}}()),Pt(t)):C.setImmediate(t)}}(),Vt||(Yt(),Vt=!0),$t.add(t,e)}qt.prototype.set=function(t,e){this.h=t,this.g=e,this.next=null},qt.prototype.reset=function(){this.next=this.g=this.h=null};var Vt=!1,$t=new zt;function Gt(){for(var t;t=Wt();){try{t.h.call(t.g)}catch(t){Ht(t)}Rt(Ut,t)}Vt=!1}function Kt(t){if(!t)return!1;try{return!!t.$goog_Thenable}catch(t){return!1}}function Xt(t){if(this.g=0,this.s=void 0,this.j=this.h=this.i=null,this.l=this.o=!1,t!=D)try{var e=this;t.call(void 0,function(t){ee(e,2,t)},function(t){ee(e,3,t)})}catch(t){ee(this,3,t)}}function Jt(){this.next=this.i=this.h=this.j=this.g=null,this.l=!1}Jt.prototype.reset=function(){this.i=this.h=this.j=this.g=null,this.l=!1};var Zt=new Lt(function(){return new Jt},function(t){t.reset()});function Qt(t,e,i){var n=Zt.get();return n.j=t,n.h=e,n.i=i,n}function te(t,e){t.h||2!=t.g&&3!=t.g||ie(t),t.j?t.j.next=e:t.h=e,t.j=e}function ee(t,e,i){if(0==t.g){t===i&&(e=3,i=new TypeError("Promise cannot resolve to itself")),t.g=1;t:{var n=i,s=t.C,o=t.D;if(n instanceof Xt){te(n,Qt(s||D,o||null,t));var r=!0}else if(Kt(n))n.then(s,o,t),r=!0;else{if(T(n))try{var a=n.then;if("function"==typeof a){!function(t,e,i,n,s){function o(t){r||(r=!0,n.call(s,t))}var r=!1;try{e.call(t,function(t){r||(r=!0,i.call(s,t))},o)}catch(t){o(t)}}(n,a,s,o,t),r=!0;break t}}catch(e){o.call(t,e),r=!0;break t}r=!1}}r||(t.s=i,t.g=e,t.i=null,ie(t),3!=e||i instanceof ae||function(t,e){t.l=!0,Bt(function(){t.l&&re.call(null,e)})}(t,i))}}function ie(t){t.o||(t.o=!0,Bt(t.v,t))}function ne(t){var e=null;return t.h&&(e=t.h,t.h=e.next,e.next=null),t.h||(t.j=null),e}function se(t,e,i,n){if(3==i&&e.h&&!e.l)for(;t&&t.l;t=t.i)t.l=!1;if(e.g)e.g.i=null,oe(e,i,n);else try{e.l?e.j.call(e.i):oe(e,i,n)}catch(t){re.call(null,t)}Rt(Zt,e)}function oe(t,e,i){2==e?t.j.call(t.i,i):t.h&&t.h.call(t.i,i)}Xt.prototype.then=function(t,e,i){return function(t,e,i,n){var s=Qt(null,null,null);return s.g=new Xt(function(t,o){s.j=e?function(i){try{var s=e.call(n,i);t(s)}catch(t){o(t)}}:t,s.h=i?function(e){try{var s=i.call(n,e);void 0===s&&e instanceof ae?o(e):t(s)}catch(t){o(t)}}:o}),s.g.i=t,te(t,s),s.g}(this,"function"==typeof t?t:null,"function"==typeof e?e:null,i)},Xt.prototype.$goog_Thenable=!0,Xt.prototype.cancel=function(t){if(0==this.g){var e=new ae(t);Bt(function(){!function t(e,i){if(0==e.g)if(e.i){var n=e.i;if(n.h){for(var s=0,o=null,r=null,a=n.h;a&&(a.l||(s++,a.g==e&&(o=a),!(o&&1<s)));a=a.next)o||(r=a);o&&(0==n.g&&1==s?t(n,i):(r?((s=r).next==n.j&&(n.j=s),s.next=s.next.next):ne(n),se(n,o,3,i)))}e.i=null}else ee(e,3,i)}(this,e)},this)}},Xt.prototype.C=function(t){this.g=0,ee(this,2,t)},Xt.prototype.D=function(t){this.g=0,ee(this,3,t)},Xt.prototype.v=function(){for(var t;t=ne(this);)se(this,t,this.g,this.s);this.o=!1};var re=Ht;function ae(t){I.call(this,t)}function le(t){var e=ye;this.l=[],this.J=e,this.I=t||null,this.j=this.i=!1,this.h=void 0,this.C=this.L=this.s=!1,this.o=0,this.g=null,this.v=0}function ue(t,e,i){t.i=!0,t.h=i,t.j=!e,pe(t)}function ce(t){if(t.i){if(!t.C)throw new fe(t);t.C=!1}}function he(t,e,i,n){t.l.push([e,i,n]),t.i&&pe(t)}function de(t){return J(t.l,function(t){return"function"==typeof t[1]})}function pe(t){if(t.o&&t.i&&de(t)){var e=t.o,i=ve[e];i&&(C.clearTimeout(i.g),delete ve[e]),t.o=0}t.g&&(t.g.v--,delete t.g),e=t.h;for(var n=i=!1;t.l.length&&!t.s;){var s=t.l.shift(),o=s[0],r=s[1];if(s=s[2],o=t.j?r:o)try{var a=o.call(s||t.I,e);void 0!==a&&(t.j=t.j&&(a==e||a instanceof Error),t.h=e=a),(Kt(e)||"function"==typeof C.Promise&&e instanceof C.Promise)&&(n=!0,t.s=!0)}catch(n){e=n,t.j=!0,de(t)||(i=!0)}}t.h=e,n&&(a=A(t.D,t,!0),n=A(t.D,t,!1),e instanceof le?(he(e,a,n),e.L=!0):e.then(a,n)),i&&(e=new me(e),ve[e.g]=e,t.o=e.g)}function fe(){I.call(this)}function ge(){I.call(this)}function me(t){this.g=C.setTimeout(A(this.i,this),0),this.h=t}E(ae,I),ae.prototype.name="cancel",le.prototype.cancel=function(t){if(this.i)this.h instanceof le&&this.h.cancel();else{if(this.g){var e=this.g;delete this.g,t?e.cancel(t):(e.v--,0>=e.v&&e.cancel())}this.J?this.J.call(this.I,this):this.C=!0,this.i||(t=new ge(this),ce(this),ue(this,!1,t))}},le.prototype.D=function(t,e){this.s=!1,ue(this,t,e)},le.prototype.then=function(t,e,i){var n,s,o=new Xt(function(t,e){s=t,n=e});return he(this,s,function(t){t instanceof ge?o.cancel():n(t)}),o.then(t,e,i)},le.prototype.$goog_Thenable=!0,E(fe,I),fe.prototype.message="Deferred has already fired",fe.prototype.name="AlreadyCalledError",E(ge,I),ge.prototype.message="Deferred was canceled",ge.prototype.name="CanceledError",me.prototype.i=function(){throw delete ve[this.g],this.h};var ve={};function ye(){if(this&&this.U){var t=this.U;t&&"SCRIPT"==t.tagName&&_e(t,!0,this.W)}}function _e(t,e,i){null!=i&&C.clearTimeout(i),t.onload=D,t.onerror=D,t.onreadystatechange=D,e&&window.setTimeout(function(){t&&t.parentNode&&t.parentNode.removeChild(t)},0)}function be(t,e){var i="Jsloader error (code #"+t+")";e&&(i+=": "+e),I.call(this,i),this.code=t}function we(t){var e={timeout:3e4,attributes:{async:!1,defer:!1}},i=e.document||document,n=U(t).toString(),s=Nt(new Ft(i).g,"SCRIPT"),o={U:s,W:void 0},r=new le(o),a=null,l=null!=e.timeout?e.timeout:5e3;return 0<l&&(a=window.setTimeout(function(){_e(s,!0);var t=new be(1,"Timeout reached for loading script "+n);ce(r),ue(r,!1,t)},l),o.W=a),s.onload=s.onreadystatechange=function(){s.readyState&&"loaded"!=s.readyState&&"complete"!=s.readyState||(_e(s,e.oa||!1,a),ce(r),ue(r,!0,null))},s.onerror=function(){_e(s,!0,a);var t=new be(0,"Error while loading script "+n);ce(r),ue(r,!1,t)},function(t,e){for(var i,n,s=1;s<arguments.length;s++){for(i in n=arguments[s])t[i]=n[i];for(var o=0;o<Q.length;o++)i=Q[o],Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}}(o=e.attributes||{},{type:"text/javascript",charset:"UTF-8"}),function(t,e){!function(t,e){for(var i in t)e.call(void 0,t[i],i,t)}(e,function(e,i){e&&"object"==typeof e&&e.T&&(e=e.R()),"style"==i?t.style.cssText=e:"class"==i?t.className=e:"for"==i?t.htmlFor=e:It.hasOwnProperty(i)?t.setAttribute(It[i],e):0==i.lastIndexOf("aria-",0)||0==i.lastIndexOf("data-",0)?t.setAttribute(i,e):t[i]=e})}(s,o),s.src=U(t),function(t){var e=(t.ownerDocument&&t.ownerDocument.defaultView||C).document;e.querySelector&&(e=e.querySelector("script[nonce]"))&&(e=e.nonce||e.getAttribute("nonce"))&&it.test(e)||(e=""),e&&t.setAttribute("nonce",e)}(s),function(t){var e;return(e=(t||document).getElementsByTagName("HEAD"))&&0!==e.length?e[0]:t.documentElement}(i).appendChild(s),r}function xe(t,e,i){var n=we(t=$(t,e,i=i||{}));return new Promise(function(t){he(n,t,null,void 0)})}E(be,I),W.m.B={};var ke,Ce,Se,De="",Te="",Me=null;function je(){Te=De="",Me=Ce=ke=null,S("google.load")||(O("google.load",Ue),O("google.setOnLoadCallback",W.V));var t=document.getElementsByTagName("script"),e=(t=new gt(t=(document.currentScript||t[t.length-1]).getAttribute("src"))).g;Se=e=e.match(/^www\.gstatic\.cn/)?"gstatic.cn":"gstatic.com",Ae(t)}function Ae(t){var e=(t=new Tt(t.i.toString())).get("callback");if("string"==typeof e&&(e=Ye(e),new Promise(function(t){"undefined"==typeof window||"complete"===document.readyState?t():window.addEventListener?(document.addEventListener("DOMContentLoaded",t,!0),window.addEventListener("load",t,!0)):window.attachEvent?window.attachEvent("onload",t):"function"!=typeof window.onload?window.onload=t:window.onload=function(e){window.onload&&window.onload(e),t()}}).then(e)),"string"==typeof(t=t.get("autoload")))try{if(""!==t){var i=JSON.parse(t).modules;for(t=0;t<i.length;t++){var n=i[t];Ue(n.name,n.version,n)}}}catch(t){throw Error("Autoload failed with: "+t)}}function Oe(t){var e,i=t,n=t.match(/^testing-/);n&&(i=i.replace(/^testing-/,"")),t=i;do{if(i===W.m.M.O[i])throw Error("Infinite loop in version mapping: "+i);(e=W.m.M.O[i])&&(i=e)}while(e);return e=(n?"testing-":"")+i,{version:"pre-45"==i?t:e,ha:e}}function Ee(t){"string"==typeof t&&(t=[t]),Array.isArray(t)&&0!==t.length||(t=W.m.N.ea);var e=[];return t.forEach(function(t){t=t.toLowerCase(),e=e.concat(t.split(/[\s,]+\s*/))}),e}function Pe(t){for(var e=(t=t||"").replace(/-/g,"_").toLowerCase();"string"==typeof e;)t=e,(e=W.m.aa[e])===t&&(e=!1);return e||(t.match(/_[^_]+$/)?t=Pe(t=t.replace(/_[^_]+$/,"")):t="en"),t}function Ie(t){return t=t||"",""!==De&&De!==t&&(console.warn(" Attempting to load version '"+t+"' of Google Charts, but the previously loaded '"+De+"' will be used instead."),t=De),De=t||""}function Ne(t){return t=t||"",""!==Te&&Te!==t&&(console.warn(" Attempting to load Google Charts for language '"+t+"', but the previously loaded '"+Te+"' will be used instead."),t=Te),"en"===t&&(t=""),Te=t||""}function Fe(t,e){(e=function(t){var e,i={};for(e in t)i[e]=t[e];return i}(e)).domain=Se,e.callback=Ye(e.callback),t=Ie(t);var i=e.language;if(i=Ne(Pe(i)),e.language=i,!ke){if(e.enableUrlSettings&&window.URLSearchParams)try{t=new URLSearchParams(top.location.search).get("charts-version")||t}catch(t){console.info("Failed to get charts-version from top URL",t)}ke=function(t){var e=W.m.N.ia[Se].loader,i=Oe(t);return xe(e,{version:i.ha}).then(function(){var e=S("google.charts.loader.VersionSpecific.load")||S("google.charts.loader.publicLoad")||S("google.charts.versionSpecific.load");if(!e)throw Error("Bad version: "+t);Me=function(t){if(null==(t=e(i.version,t))||null==t.then){var n=S("google.charts.loader.publicSetOnLoadCallback")||S("google.charts.versionSpecific.setOnLoadCallback");(t=new Promise(function(t){n(t)})).then=n}return t}})}(t)}return e.packages=Ee(e.packages),Ce=ke.then(function(){return Me(e)})}W.la=function(t){return W.load(Object.assign({},t,{safeMode:!0}))},O("google.charts.safeLoad",W.la),W.load=function(t){for(var e=[],i=0;i<arguments.length;++i)e[i]=arguments[i];"visualization"===e[i=0]&&i++;var n="current";"string"!=typeof e[i]&&"number"!=typeof e[i]||(n=String(e[i]),i++);var s={};return T(e[i])&&(s=e[i]),Fe(n,s)},O("google.charts.load",W.load),W.V=function(t){if(!Ce)throw Error("Must call google.charts.load before google.charts.setOnLoadCallback");return t?Ce.then(t):Ce},O("google.charts.setOnLoadCallback",W.V);var Le=L("https://maps.googleapis.com/maps/api/js?jsapiRedirect=true"),Re=L("https://maps-api-ssl.google.com/maps?jsapiRedirect=true&file=googleapi");var He=L("https://www.gstatic.com/inputtools/js/ita/inputtools_3.js");var ze=L("https://ajax.googleapis.com/ajax/libs/%{module}/%{version}/%{file}");function We(t,e,i){var n=W.m.$.ga[t];if(n){if(e=function(t,e){var i;do{if(t===e[t])throw Error("Infinite loop in version mapping for version "+t);(i=e[t])&&(t=i)}while(i);return t}(e,n.aliases),!(n=n.versions[e]))throw Error("Unknown version, "+e+", of "+t+".");var s={module:t,version:e||"",file:n.compressed};e=U(function(t){return $(t.format,t.ba,t.ya||{})}({format:ze,ba:s})).toString(),console.warn("Loading modules with the jsapi loader is deprecated.\nPlease load "+t+" directly from "+e+"."),Ce=new Promise(function(t){var e=Ye(i&&i.callback);xe(ze,s).then(e).then(t)})}else setTimeout(function(){throw Error('Module "'+t+'" is not supported.')},0)}function Ye(t){return function(){if("function"==typeof t)t();else if("string"==typeof t&&""!==t)try{var e=S(t);if("function"!=typeof e)throw Error("Type of '"+t+"' is "+typeof e+".");e()}catch(e){throw Error("Callback of "+t+" failed with: "+e)}}}function Ue(t){for(var e=[],i=0;i<arguments.length;++i)e[i]=arguments[i];switch(e[0]){case"maps":(function(t,e,i){console.warn("Loading Maps API with the jsapi loader is deprecated."),t=(i=i||{}).key||i.client;var n=i.libraries,s=function(t){for(var e={},i=0;i<t.length;i++){var n=t[i];e[n[0]]=n[1]}return e}(i.other_params?i.other_params.split("&").map(function(t){return t.split("=")}):[]),o=Object.assign({},{key:t,ua:n},s),r="2"===e?Re:Le;Ce=new Promise(function(t){var e=Ye(i&&i.callback);xe(r,{},o).then(e).then(t)})}).apply(null,a(e));break;case"elements":(function(t,e,i){T(i)&&i.packages?(Array.isArray(i.packages)?i.packages:[i.packages]).includes("inputtools")?(console.warn('Loading "elements" with the jsapi loader is deprecated.\nPlease load '+He+" directly."),Ce=new Promise(function(t){var e=Ye(i&&i.callback);xe(He,{},{}).then(e).then(t)})):console.error('Loading "elements" other than "inputtools" is unsupported.'):console.error("google.load of elements was invoked without specifying packages")}).apply(null,a(e));break;case"visualization":W.load.apply(W,a(e));break;default:We.apply(null,a(e))}}O("google.loader.LoadFailure",!1),Se?console.warn("Google Charts loader.js should only be loaded once."):je(),W.m.B.sa=je,W.m.B.va=Oe,W.m.B.wa=Pe,W.m.B.xa=Ee,W.m.B.Da=Ie,W.m.B.Ca=Ne,W.m.B.za=Ae,W.m.B.ra=function(){return Me}}.call(this),function(t){var e=new Array,n=new Array;t.fn.doAutosize=function(e){var i=t(this).data("minwidth"),n=t(this).data("maxwidth"),s="",o=t(this),r=t("#"+t(this).data("tester_id"));if(s!==(s=o.val())){var a=s.replace(/&/g,"&").replace(/\s/g," ").replace(/</g,"<").replace(/>/g,">");r.html(a);var l=r.width(),u=l+e.comfortZone>=i?l+e.comfortZone:i;(u<o.width()&&u>=i||u>i&&u<n)&&o.width(u)}},t.fn.resetAutosize=function(e){var i=t(this).data("minwidth")||e.minInputWidth||t(this).width(),n=t(this).data("maxwidth")||e.maxInputWidth||t(this).closest(".tagsinput").width()-e.inputPadding,s=t(this),o=t("<tester/>").css({position:"absolute",top:-9999,left:-9999,width:"auto",fontSize:s.css("fontSize"),fontFamily:s.css("fontFamily"),fontWeight:s.css("fontWeight"),letterSpacing:s.css("letterSpacing"),whiteSpace:"nowrap"}),r=t(this).attr("id")+"_autosize_tester";!t("#"+r).length>0&&(o.attr("id",r),o.appendTo("body")),s.data("minwidth",i),s.data("maxwidth",n),s.data("tester_id",r),s.css("width",i)},t.fn.addTag=function(i,s){return s=jQuery.extend({focus:!1,callback:!0},s),this.each(function(){var o=t(this).attr("id"),r=t(this).val().split(e[o]);if(""==r[0]&&(r=new Array),i=jQuery.trim(i),s.unique)1==(a=t(this).tagExist(i))&&t("#"+o+"_tag").addClass("not_valid");else var a=!1;if(""!=i&&1!=a){if(t("<span>").addClass("tag").append(t("<span>").text(i).append(" "),t("<a>",{href:"#",title:"Removing tag",text:"x"}).click(function(){return t("#"+o).removeTag(escape(i))})).insertBefore("#"+o+"_addTag"),r.push(i),t("#"+o+"_tag").val(""),s.focus?t("#"+o+"_tag").focus():t("#"+o+"_tag").blur(),t.fn.tagsInput.updateTagsField(this,r),s.callback&&n[o]&&n[o].onAddTag)n[o].onAddTag.call(this,i);if(n[o]&&n[o].onChange){var l=r.length;n[o].onChange.call(this,t(this),r[l-1])}}}),!1},t.fn.removeTag=function(s){return s=unescape(s),this.each(function(){var o=t(this).attr("id"),r=t(this).val().split(e[o]);for(t("#"+o+"_tagsinput .tag").remove(),str="",i=0;i<r.length;i++)r[i]!=s&&(str=str+e[o]+r[i]);(t.fn.tagsInput.importTags(this,str),n[o]&&n[o].onRemoveTag)&&n[o].onRemoveTag.call(this,s)}),!1},t.fn.tagExist=function(i){var n=t(this).attr("id"),s=t(this).val().split(e[n]);return jQuery.inArray(i,s)>=0},t.fn.importTags=function(e){var i=t(this).attr("id");t("#"+i+"_tagsinput .tag").remove(),t.fn.tagsInput.importTags(this,e)},t.fn.tagsInput=function(i){var o=jQuery.extend({interactive:!0,defaultText:"add a tag",minChars:0,width:"300px",height:"100px",autocomplete:{selectFirst:!1},hide:!0,delimiter:",",unique:!0,removeWithBackspace:!0,placeholderColor:"#666666",autosize:!0,comfortZone:20,inputPadding:12},i),r=0;return this.each(function(){if(void 0===t(this).attr("data-tagsinput-init")){t(this).attr("data-tagsinput-init",!0),o.hide&&t(this).hide();var i=t(this).attr("id");i&&!e[t(this).attr("id")]||(i=t(this).attr("id","tags"+(new Date).getTime()+r++).attr("id"));var a=jQuery.extend({pid:i,real_input:"#"+i,holder:"#"+i+"_tagsinput",input_wrapper:"#"+i+"_addTag",fake_input:"#"+i+"_tag"},o);e[i]=a.delimiter,(o.onAddTag||o.onRemoveTag||o.onChange)&&(n[i]=new Array,n[i].onAddTag=o.onAddTag,n[i].onRemoveTag=o.onRemoveTag,n[i].onChange=o.onChange);var l='<div id="'+i+'_tagsinput" class="tagsinput"><div id="'+i+'_addTag">';if(o.interactive&&(l=l+'<input id="'+i+'_tag" value="" data-default="'+o.defaultText+'" />'),t(l+='</div><div class="tags_clear"></div></div>').insertAfter(this),t(a.holder).css("width",o.width),t(a.holder).css("min-height",o.height),t(a.holder).css("height",o.height),""!=t(a.real_input).val()&&t.fn.tagsInput.importTags(t(a.real_input),t(a.real_input).val()),o.interactive){if(t(a.fake_input).val(t(a.fake_input).attr("data-default")),t(a.fake_input).css("color",o.placeholderColor),t(a.fake_input).resetAutosize(o),t(a.holder).bind("click",a,function(e){t(e.data.fake_input).focus()}),t(a.fake_input).bind("focus",a,function(e){t(e.data.fake_input).val()==t(e.data.fake_input).attr("data-default")&&t(e.data.fake_input).val(""),t(e.data.fake_input).css("color","#000000")}),null!=o.autocomplete_url){for(attrname in autocomplete_options={source:o.autocomplete_url},o.autocomplete)autocomplete_options[attrname]=o.autocomplete[attrname];void 0!==jQuery.Autocompleter?(t(a.fake_input).autocomplete(o.autocomplete_url,o.autocomplete),t(a.fake_input).bind("result",a,function(e,n,s){n&&t("#"+i).addTag(n[0]+"",{focus:!0,unique:o.unique})})):void 0!==jQuery.ui.autocomplete&&(t(a.fake_input).autocomplete(autocomplete_options),t(a.fake_input).bind("autocompleteselect",a,function(e,i){return t(e.data.real_input).addTag(i.item.value,{focus:!0,unique:o.unique}),!1}))}else t(a.fake_input).bind("blur",a,function(e){var i=t(this).attr("data-default");return""!=t(e.data.fake_input).val()&&t(e.data.fake_input).val()!=i?e.data.minChars<=t(e.data.fake_input).val().length&&(!e.data.maxChars||e.data.maxChars>=t(e.data.fake_input).val().length)&&t(e.data.real_input).addTag(t(e.data.fake_input).val(),{focus:!0,unique:o.unique}):(t(e.data.fake_input).val(t(e.data.fake_input).attr("data-default")),t(e.data.fake_input).css("color",o.placeholderColor)),!1});t(a.fake_input).bind("keypress",a,function(e){if(s(e))return e.preventDefault(),e.data.minChars<=t(e.data.fake_input).val().length&&(!e.data.maxChars||e.data.maxChars>=t(e.data.fake_input).val().length)&&t(e.data.real_input).addTag(t(e.data.fake_input).val(),{focus:!0,unique:o.unique}),t(e.data.fake_input).resetAutosize(o),!1;e.data.autosize&&t(e.data.fake_input).doAutosize(o)}),a.removeWithBackspace&&t(a.fake_input).bind("keydown",function(e){if(8==e.keyCode&&""==t(this).val()){e.preventDefault();var i=t(this).closest(".tagsinput").find(".tag:last").text(),n=t(this).attr("id").replace(/_tag$/,"");i=i.replace(/[\s]+x$/,""),t("#"+n).removeTag(escape(i)),t(this).trigger("focus")}}),t(a.fake_input).blur(),a.unique&&t(a.fake_input).keydown(function(e){(8==e.keyCode||String.fromCharCode(e.which).match(/\w+|[������������,/]+/))&&t(this).removeClass("not_valid")})}}}),this},t.fn.tagsInput.updateTagsField=function(i,n){var s=t(i).attr("id");t(i).val(n.join(e[s]))},t.fn.tagsInput.importTags=function(s,o){t(s).val("");var r=t(s).attr("id"),a=o.split(e[r]);for(i=0;i<a.length;i++)t(s).addTag(a[i],{focus:!1,callback:!1});n[r]&&n[r].onChange&&n[r].onChange.call(s,s,a[i])};var s=function(e){var i=!1;return 13==e.which||("string"==typeof e.data.delimiter?e.which==e.data.delimiter.charCodeAt(0)&&(i=!0):t.each(e.data.delimiter,function(t,n){e.which==n.charCodeAt(0)&&(i=!0)}),i)}}(jQuery),function(t,e){"function"==typeof define&&define.amd?define(["jquery"],function(t){return e(t)}):"object"==typeof module&&module.exports?module.exports=e(require("jquery")):e(t.jQuery)}(this,function(t){!function(t,e,i){function n(t,e){this.$form=t,this.$input=e,this.reset(),e.on("change paste",this.reset.bind(this))}var s=function(){return!1},o=null,r={numHalted:0,haltValidation:function(e){this.numHalted++,t.formUtils.haltValidation=!0,e.unbind("submit",s).bind("submit",s).find('*[type="submit"]').addClass("disabled").attr("disabled","disabled")},unHaltValidation:function(e){this.numHalted--,0===this.numHalted&&(t.formUtils.haltValidation=!1,e.unbind("submit",s).find('*[type="submit"]').removeClass("disabled").removeAttr("disabled","disabled"))}};n.prototype.reset=function(){this.haltedFormValidation=!1,this.hasRun=!1,this.isRunning=!1,this.result=void 0},n.prototype.run=function(t,e){return"keyup"===t?null:this.isRunning?(o=t,this.haltedFormValidation||(r.haltValidation(),this.haltedFormValidation=!0),null):this.hasRun?this.result:(o=t,r.haltValidation(this.$form),this.haltedFormValidation=!0,this.isRunning=!0,this.$input.attr("disabled","disabled").addClass("async-validation"),this.$form.addClass("async-validation"),e(function(t){this.done(t)}.bind(this)),null)},n.prototype.done=function(t){this.result=t,this.hasRun=!0,this.isRunning=!1,this.$input.removeAttr("disabled").removeClass("async-validation"),this.$form.removeClass("async-validation"),this.haltedFormValidation&&(r.unHaltValidation(this.$form),"submit"===o?this.$form.trigger("submit"):this.$input.trigger("validation.revalidate"))},n.loadInstance=function(t,e,i){var s,o=e.get(0);return o.asyncValidators||(o.asyncValidators={}),o.asyncValidators[t]?s=o.asyncValidators[t]:(s=new n(i,e),o.asyncValidators[t]=s),s},t.formUtils=t.extend(t.formUtils||{},{asyncValidation:function(t,e,i){return this.warn("Use of deprecated function $.formUtils.asyncValidation, use $.formUtils.addAsyncValidator() instead"),n.loadInstance(t,e,i)},addAsyncValidator:function(e){var i=t.extend({},e),s=i.validatorFunction;i.async=!0,i.validatorFunction=function(t,e,o,r,a,l){return n.loadInstance(this.name,e,a).run(l,function(n){s.apply(i,[n,t,e,o,r,a,l])})},this.addValidator(i)}}),t(e).bind("validatorsLoaded formValidationSetup",function(e,i){i||(i=t("form")),i.find("[data-validation]").each(function(){var e=t(this);e.valAttr("async",!1),t.each(t.split(e.attr("data-validation")),function(i,n){var s=t.formUtils.validators["validate_"+n];s&&s.async&&e.valAttr("async","yes")})})})}(t,window),function(t,e){"use strict";function i(e){e&&"custom"===e.errorMessagePosition&&"function"==typeof e.errorMessageCustom&&(t.formUtils.warn("Use of deprecated function errorMessageCustom, use config.submitErrorMessageCallback instead"),e.submitErrorMessageCallback=function(t,i){e.errorMessageCustom(t,e.language.errorTitle,i,e)})}function n(e){if(e.errorMessagePosition&&"object"==typeof e.errorMessagePosition){t.formUtils.warn("Deprecated use of config parameter errorMessagePosition, use config.submitErrorMessageCallback instead");var i=e.errorMessagePosition;e.errorMessagePosition="top",e.submitErrorMessageCallback=function(){return i}}}function s(e){var i={se:"sv",cz:"cs",dk:"da"};if(e.lang in i){var n=i[e.lang];t.formUtils.warn('Deprecated use of lang code "'+e.lang+'" use "'+n+'" instead'),e.lang=n}}t.fn.validateForm=function(e,i){return t.formUtils.warn("Use of deprecated function $.validateForm, use $.isValid instead"),this.isValid(e,i,!0)},t(window).on("formValidationPluginInit",function(t,e){s(e),i(e),n(e)}).on("validatorsLoaded formValidationSetup",function(e,i){i||(i=t("form")),function(e){var i=e.find("[data-validation-if-checked]");i.length&&t.formUtils.warn('Detected use of attribute "data-validation-if-checked" which is deprecated. Use "data-validation-depends-on" provided by module "logic"'),i.on("beforeValidation",function(){var i=t(this),n=i.valAttr("if-checked"),s=t('input[name="'+n+'"]',e),o=s.is(":checked"),r=(t.formUtils.getValue(s)||"").toString(),a=i.valAttr("if-checked-value");(!o||a&&a!==r)&&i.valAttr("skipped",!0)})}(i)})}(t),function(t){"use strict";var e={resolveErrorMessage:function(t,e,i,n,s){var o=n.validationErrorMsgAttribute+"-"+i.replace("validate_",""),r=t.attr(o);return r||((r=t.attr(n.validationErrorMsgAttribute))||((r="function"!=typeof e.errorMessageKey?s[e.errorMessageKey]:s[e.errorMessageKey(n)])||(r=e.errorMessage))),r},getParentContainer:function(e){if(e.valAttr("error-msg-container"))return t(e.valAttr("error-msg-container"));var i=e.parent();return"checkbox"===e.attr("type")&&e.closest(".checkbox").length?i=e.closest(".checkbox").parent():"radio"===e.attr("type")&&e.closest(".radio").length&&(i=e.closest(".radio").parent()),i.closest(".input-group").length&&(i=i.closest(".input-group").parent()),i},applyInputErrorStyling:function(t,e){t.addClass(e.errorElementClass).removeClass(e.successElementClass),this.getParentContainer(t).addClass(e.inputParentClassOnError).removeClass(e.inputParentClassOnSuccess),""!==e.borderColorOnError&&t.css("border-color",e.borderColorOnError)},applyInputSuccessStyling:function(t,e){t.addClass(e.successElementClass),this.getParentContainer(t).addClass(e.inputParentClassOnSuccess)},removeInputStylingAndMessage:function(t,i){t.removeClass(i.successElementClass).removeClass(i.errorElementClass).css("border-color","");var n=e.getParentContainer(t);if(n.removeClass(i.inputParentClassOnError).removeClass(i.inputParentClassOnSuccess),"function"==typeof i.inlineErrorMessageCallback){var s=i.inlineErrorMessageCallback(t,!1,i);s&&s.html("")}else n.find("."+i.errorMessageClass).remove()},removeAllMessagesAndStyling:function(i,n){if("function"==typeof n.submitErrorMessageCallback){var s=n.submitErrorMessageCallback(i,!1,n);s&&s.html("")}else i.find("."+n.errorMessageClass+".alert").remove();i.find("."+n.errorElementClass+",."+n.successElementClass).each(function(){e.removeInputStylingAndMessage(t(this),n)})},setInlineMessage:function(e,i,n){this.applyInputErrorStyling(e,n);var s,o=document.getElementById(e.attr("name")+"_err_msg"),r=!1,a=function(n){t.formUtils.$win.trigger("validationErrorDisplay",[e,n]),n.html(i)},l=function(){var o=!1;r.find("."+n.errorMessageClass).each(function(){if(this.inputReferer===e[0])return o=t(this),!1}),o?i?a(o):o.remove():""!==i&&(s=t('<div class="'+n.errorMessageClass+' alert"></div>'),a(s),s[0].inputReferer=e[0],r.prepend(s))};if(o)t.formUtils.warn("Using deprecated element reference "+o.id),r=t(o),l();else if("function"==typeof n.inlineErrorMessageCallback){if(!(r=n.inlineErrorMessageCallback(e,i,n)))return;l()}else{var u=this.getParentContainer(e);0===(s=u.find("."+n.errorMessageClass+".help-block")).length&&(s=t("<span></span>").addClass("help-block").addClass(n.errorMessageClass)).appendTo(u),a(s)}},setMessageInTopOfForm:function(e,i,n,s){var o='<div class="{errorMessageClass} alert alert-danger"><strong>{errorTitle}</strong><ul>{fields}</ul></div>',r=!1;if("function"!=typeof n.submitErrorMessageCallback||(r=n.submitErrorMessageCallback(e,i,n))){var a={errorTitle:s.errorTitle,fields:"",errorMessageClass:n.errorMessageClass};t.each(i,function(t,e){a.fields+="<li>"+e+"</li>"}),t.each(a,function(t,e){o=o.replace("{"+t+"}",e)}),r?r.html(o):e.children().eq(0).before(t(o))}}};t.formUtils=t.extend(t.formUtils||{},{dialogs:e})}(t),function(t,e,i){"use strict";var n=0;t.fn.validateOnBlur=function(e,i){var n=this,s=this.find("*[data-validation]");return s.each(function(){var s=t(this);if(s.is("[type=radio]")){var o=n.find('[type=radio][name="'+s.attr("name")+'"]');o.bind("blur.validation",function(){s.validateInputOnBlur(e,i,!0,"blur")}),i.validateCheckboxRadioOnClick&&o.bind("click.validation",function(){s.validateInputOnBlur(e,i,!0,"click")})}}),s.bind("blur.validation",function(){t(this).validateInputOnBlur(e,i,!0,"blur")}),i.validateCheckboxRadioOnClick&&this.find("input[type=checkbox][data-validation],input[type=radio][data-validation]").bind("click.validation",function(){t(this).validateInputOnBlur(e,i,!0,"click")}),this},t.fn.validateOnEvent=function(e,i){if(0!==this.length)return("FORM"===this[0].nodeName?this.find("*[data-validation-event]"):this).each(function(){var n=t(this),s=n.valAttr("event");s&&n.unbind(s+".validation").bind(s+".validation",function(n){9!==(n||{}).keyCode&&t(this).validateInputOnBlur(e,i,!0,s)})}),this},t.fn.showHelpOnFocus=function(e){return e||(e="data-validation-help"),this.find("textarea,input").each(function(){var i=t(this),s="jquery_form_help_"+ ++n,o=i.attr(e);i.removeClass("has-help-text").unbind("focus.help").unbind("blur.help"),o&&i.addClass("has-help-txt").bind("focus.help",function(){var e=i.parent().find("."+s);0===e.length&&(e=t("<span />").addClass(s).addClass("help").addClass("help-block").text(o).hide(),i.after(e)),e.fadeIn()}).bind("blur.help",function(){t(this).parent().find("."+s).fadeOut("slow")})}),this},t.fn.validate=function(e,i,n){var s=t.extend({},t.formUtils.LANG,n||{});this.each(function(){var n=t(this),o=(n.closest("form").get(0)||{}).validationConfig||t.formUtils.defaultConfig();n.one("validation",function(t,i){"function"==typeof e&&e(i,this,t)}),n.validateInputOnBlur(s,t.extend({},o,i||{}),!0)})},t.fn.willPostponeValidation=function(){return(this.valAttr("suggestion-nr")||this.valAttr("postpone")||this.hasClass("hasDatepicker"))&&!e.postponedValidation},t.fn.validateInputOnBlur=function(i,n,s,o){if(t.formUtils.eventType=o,this.willPostponeValidation()){var r=this,a=this.valAttr("postpone")||200;return e.postponedValidation=function(){r.validateInputOnBlur(i,n,s,o),e.postponedValidation=!1},setTimeout(function(){e.postponedValidation&&e.postponedValidation()},a),this}i=t.extend({},t.formUtils.LANG,i||{}),t.formUtils.dialogs.removeInputStylingAndMessage(this,n);var l=this,u=l.closest("form"),c=t.formUtils.validateInput(l,i,n,u,o),h=function(){l.validateInputOnBlur(i,n,!1,"blur.revalidated")};return"blur"===o&&l.unbind("validation.revalidate",h).one("validation.revalidate",h),s&&l.removeKeyUpValidation(),c.shouldChangeDisplay&&(c.isValid?t.formUtils.dialogs.applyInputSuccessStyling(l,n):t.formUtils.dialogs.setInlineMessage(l,c.errorMsg,n)),!c.isValid&&s&&l.validateOnKeyUp(i,n),this},t.fn.validateOnKeyUp=function(e,i){return this.each(function(){var n=t(this);n.valAttr("has-keyup-event")||n.valAttr("has-keyup-event","true").bind("keyup.validation",function(t){9!==t.keyCode&&n.validateInputOnBlur(e,i,!1,"keyup")})}),this},t.fn.removeKeyUpValidation=function(){return this.each(function(){t(this).valAttr("has-keyup-event",!1).unbind("keyup.validation")}),this},t.fn.valAttr=function(t,e){return void 0===e?this.attr("data-validation-"+t):!1===e||null===e?this.removeAttr("data-validation-"+t):(t=t.length>0?"-"+t:"",this.attr("data-validation"+t,e))},t.fn.isValid=function(e,i,n){if(t.formUtils.isLoadingModules){var s=this;return setTimeout(function(){s.isValid(e,i,n)},200),null}i=t.extend({},t.formUtils.defaultConfig(),i||{}),e=t.extend({},t.formUtils.LANG,e||{}),n=!1!==n,t.formUtils.errorDisplayPreventedWhenHalted&&(delete t.formUtils.errorDisplayPreventedWhenHalted,n=!1);var o=function(e,s){t.inArray(e,a)<0&&a.push(e),l.push(s),s.valAttr("current-error",e),n&&t.formUtils.dialogs.applyInputErrorStyling(s,i)},r=[],a=[],l=[],u=this;if(n&&t.formUtils.dialogs.removeAllMessagesAndStyling(u,i),u.find("input,textarea,select").filter(':not([type="submit"],[type="button"])').each(function(){var n=t(this),s=n.attr("type"),a="radio"===s||"checkbox"===s,l=n.attr("name");if(!function(e,n){return"submit"===n||"button"===n||"reset"===n||t.inArray(e,i.ignore||[])>-1}(l,s)&&(!a||t.inArray(l,r)<0)){a&&r.push(l);var c=t.formUtils.validateInput(n,e,i,u,"submit");c.isValid?c.isValid&&c.shouldChangeDisplay&&(n.valAttr("current-error",!1),t.formUtils.dialogs.applyInputSuccessStyling(n,i)):o(c.errorMsg,n)}}),"function"==typeof i.onValidate){var c=i.onValidate(u);t.isArray(c)?t.each(c,function(t,e){o(e.message,e.element)}):c&&c.element&&c.message&&o(c.message,c.element)}return t.formUtils.isValidatingEntireForm=!1,l.length>0&&n&&("top"===i.errorMessagePosition?t.formUtils.dialogs.setMessageInTopOfForm(u,a,i,e):t.each(l,function(e,n){t.formUtils.dialogs.setInlineMessage(n,n.valAttr("current-error"),i)}),i.scrollToTopOnError&&t.formUtils.$win.scrollTop(u.offset().top-20)),!n&&t.formUtils.haltValidation&&(t.formUtils.errorDisplayPreventedWhenHalted=!0),0===l.length&&!t.formUtils.haltValidation},t.fn.restrictLength=function(e){return new t.formUtils.lengthRestriction(this,e),this},t.fn.addSuggestions=function(e){var i=!1;return this.find("input").each(function(){var n=t(this);(i=t.split(n.attr("data-suggestions"))).length>0&&!n.hasClass("has-suggestions")&&(t.formUtils.suggest(n,i,e),n.addClass("has-suggestions"))}),this}}(t,window),function(t){"use strict";t.formUtils=t.extend(t.formUtils||{},{isLoadingModules:!1,loadedModules:{},registerLoadedModule:function(e){this.loadedModules[t.trim(e).toLowerCase()]=!0},hasLoadedModule:function(e){return t.trim(e).toLowerCase()in this.loadedModules},loadModules:function(e,i,n){if(t.formUtils.isLoadingModules)setTimeout(function(){t.formUtils.loadModules(e,i,n)},100);else{var s=function(e,i){var s=t.split(e),o=s.length,r=function(){0===--o&&(t.formUtils.isLoadingModules=!1,"function"==typeof n&&n())};o>0&&(t.formUtils.isLoadingModules=!0);var a="?_="+(new Date).getTime(),l=document.getElementsByTagName("head")[0]||document.getElementsByTagName("body")[0];t.each(s,function(e,n){if(0===(n=t.trim(n)).length||t.formUtils.hasLoadedModule(n))r();else{var s=i+n+(".js"===n.slice(-3)?"":".js"),o=document.createElement("SCRIPT");"function"==typeof define&&define.amd?require([s+(".dev.js"===s.slice(-7)?a:"")],r):(o.type="text/javascript",o.onload=r,o.src=s+(".dev.js"===s.slice(-7)?a:""),o.onerror=function(){t.formUtils.warn("Unable to load form validation module "+s,!0),r()},o.onreadystatechange=function(){"complete"!==this.readyState&&"loaded"!==this.readyState||(r(),this.onload=null,this.onreadystatechange=null)},l.appendChild(o))}})};if(i)s(e,i);else{var o=function(){var i=!1;return t('script[src*="form-validator"]').each(function(){if(!(this.src.split("form-validator")[1].split("node_modules").length>1))return"/"===(i=this.src.substr(0,this.src.lastIndexOf("/"))+"/")&&(i=""),!1}),!1!==i&&(s(e,i),!0)};o()||t(function(){o()||"function"==typeof n&&n()})}}}})}(t),function(t){"use strict";t.split=function(e,i,n){n=void 0===n||!0===n;var s=new RegExp("[,|"+(n?"\\s":"")+"-]\\s*","g");if("function"!=typeof i){if(!e)return[];var o=[];return t.each(e.split(i||s),function(e,i){(i=t.trim(i)).length&&o.push(i)}),o}e&&t.each(e.split(s),function(e,n){if((n=t.trim(n)).length)return i(n,e)})},t.validate=function(e){var i=t.extend(t.formUtils.defaultConfig(),{form:"form",validateOnEvent:!1,validateOnBlur:!0,validateCheckboxRadioOnClick:!0,showHelpOnFocus:!0,addSuggestions:!0,modules:"",onModulesLoaded:null,language:!1,onSuccess:!1,onError:!1,onElementValidate:!1});if(e=t.extend(i,e||{}),t(window).trigger("formValidationPluginInit",[e]),e.lang&&"en"!==e.lang){var n="lang/"+e.lang+".js";e.modules+=e.modules.length?","+n:n}t(e.form).each(function(i,n){n.validationConfig=e;var s=t(n);s.trigger("formValidationSetup",[s,e]),s.find(".has-help-txt").unbind("focus.validation").unbind("blur.validation"),s.removeClass("has-validation-callback").unbind("submit.validation").unbind("reset.validation").find("input[data-validation],textarea[data-validation]").unbind("blur.validation"),s.bind("submit.validation",function(i){var n=t(this),s=function(){return i.stopImmediatePropagation(),!1};if(t.formUtils.haltValidation)return s();if(t.formUtils.isLoadingModules)return setTimeout(function(){n.trigger("submit.validation")},200),s();var o=n.isValid(e.language,e);return t.formUtils.haltValidation?s():o&&"function"==typeof e.onSuccess?!1===e.onSuccess(n)?s():void 0:o||"function"!=typeof e.onError?!!o||s():(e.onError(n),s())}).bind("reset.validation",function(){t.formUtils.dialogs.removeAllMessagesAndStyling(s,e)}).addClass("has-validation-callback"),e.showHelpOnFocus&&s.showHelpOnFocus(),e.addSuggestions&&s.addSuggestions(),e.validateOnBlur&&(s.validateOnBlur(e.language,e),s.bind("html5ValidationAttrsFound",function(){s.validateOnBlur(e.language,e)})),e.validateOnEvent&&s.validateOnEvent(e.language,e)}),""!==e.modules&&t.formUtils.loadModules(e.modules,null,function(){"function"==typeof e.onModulesLoaded&&e.onModulesLoaded();var i="string"==typeof e.form?t(e.form):e.form;t.formUtils.$win.trigger("validatorsLoaded",[i,e])})}}(t),function(t,e){"use strict";var i=t(e);t.formUtils=t.extend(t.formUtils||{},{$win:i,defaultConfig:function(){return{ignore:[],errorElementClass:"error",successElementClass:"valid",borderColorOnError:"#b94a48",errorMessageClass:"form-error",validationRuleAttribute:"data-validation",validationErrorMsgAttribute:"data-validation-error-msg",errorMessagePosition:"inline",errorMessageTemplate:{container:'<div class="{errorMessageClass} alert alert-danger">{messages}</div>',messages:"<strong>{errorTitle}</strong><ul>{fields}</ul>",field:"<li>{msg}</li>"},scrollToTopOnError:!0,dateFormat:"yyyy-mm-dd",addValidClassOnAll:!1,decimalSeparator:".",inputParentClassOnError:"has-error",inputParentClassOnSuccess:"has-success",validateHiddenInputs:!1,inlineErrorMessageCallback:!1,submitErrorMessageCallback:!1}},validators:{},sanitizers:{},_events:{load:[],valid:[],invalid:[]},haltValidation:!1,addValidator:function(t){var e=0===t.name.indexOf("validate_")?t.name:"validate_"+t.name;void 0===t.validateOnKeyUp&&(t.validateOnKeyUp=!0),this.validators[e]=t},addSanitizer:function(t){this.sanitizers[t.name]=t},warn:function(t,i){"console"in e?"function"==typeof e.console.warn?e.console.warn(t):"function"==typeof e.console.log&&e.console.log(t):i&&alert(t)},getValue:function(t,e){var i=e?e.find(t):t;if(i.length>0){var n=i.eq(0).attr("type");return"radio"===n||"checkbox"===n?i.filter(":checked").val()||"":i.val()||""}return!1},validateInput:function(e,i,n,s,o){n=n||t.formUtils.defaultConfig(),i=i||t.formUtils.LANG,s.length||(s=e.parent());var r=this.getValue(e);e.valAttr("skipped",!1).one("beforeValidation",function(){(e.attr("disabled")||!e.is(":visible")&&!n.validateHiddenInputs)&&e.valAttr("skipped",1)}).trigger("beforeValidation",[r,i,n]);var a="true"===e.valAttr("optional"),l=!r&&a,u=e.attr(n.validationRuleAttribute),c=!0,h="",d={isValid:!0,shouldChangeDisplay:!0,errorMsg:""};if(!u||l||e.valAttr("skipped"))return d.shouldChangeDisplay=n.addValidClassOnAll,d;var p=e.valAttr("ignore");return p&&t.each(p.split(""),function(t,e){r=r.replace(new RegExp("\\"+e,"g"),"")}),t.split(u,function(a){0!==a.indexOf("validate_")&&(a="validate_"+a);var l=t.formUtils.validators[a];if(!l)throw new Error('Using undefined validator "'+a+'". Maybe you have forgotten to load the module that "'+a+'" belongs to?');if("validate_checkbox_group"===a&&(e=s.find('[name="'+e.attr("name")+'"]:eq(0)')),("keyup"!==o||l.validateOnKeyUp)&&(c=l.validatorFunction(r,e,n,i,s,o)),!c)return n.validateOnBlur&&e.validateOnKeyUp(i,n),h=t.formUtils.dialogs.resolveErrorMessage(e,l,a,n,i),!1}),!1===c?(e.trigger("validation",!1),d.errorMsg=h,d.isValid=!1,d.shouldChangeDisplay=!0):null===c?d.shouldChangeDisplay=!1:(e.trigger("validation",!0),d.shouldChangeDisplay=!0),"function"==typeof n.onElementValidate&&null!==h&&n.onElementValidate(d.isValid,e,s,h),e.trigger("afterValidation",[d,o]),d},parseDate:function(e,i,n){var s,o,r,a,l=i.replace(/[a-zA-Z]/gi,"").substring(0,1),u="^",c=i.split(l||null);if(t.each(c,function(t,e){u+=(t>0?"\\"+l:"")+"(\\d{"+e.length+"})"}),u+="$",n){var h=[];t.each(e.split(l),function(t,e){1===e.length&&(e="0"+e),h.push(e)}),e=h.join(l)}if(null===(s=e.match(new RegExp(u))))return!1;var d=function(e,i,n){for(var s=0;s<i.length;s++)if(i[s].substring(0,1)===e)return t.formUtils.parseDateInt(n[s+1]);return-1};return r=d("m",c,s),o=d("d",c,s),a=d("y",c,s),!(2===r&&o>28&&(a%4!=0||a%100==0&&a%400!=0)||2===r&&o>29&&(a%4==0||a%100!=0&&a%400==0)||r>12||0===r)&&!(this.isShortMonth(r)&&o>30||!this.isShortMonth(r)&&o>31||0===o)&&[a,r,o]},parseDateInt:function(t){return 0===t.indexOf("0")&&(t=t.replace("0","")),parseInt(t,10)},isShortMonth:function(t){return t%2==0&&t<7||t%2!=0&&t>7},lengthRestriction:function(e,i){var n=parseInt(i.text(),10),s=0,o=function(){var t=e.val().length;if(t>n){var o=e.scrollTop();e.val(e.val().substring(0,n)),e.scrollTop(o)}(s=n-t)<0&&(s=0),i.text(s)};t(e).bind("keydown keyup keypress focus blur",o).bind("cut paste",function(){setTimeout(o,100)}),t(document).bind("ready",o)},numericRangeCheck:function(e,i){var n=t.split(i),s=parseInt(i.substr(3),10);return 1===n.length&&-1===i.indexOf("min")&&-1===i.indexOf("max")&&(n=[i,i]),2===n.length&&(e<parseInt(n[0],10)||e>parseInt(n[1],10))?["out",n[0],n[1]]:0===i.indexOf("min")&&e<s?["min",s]:0===i.indexOf("max")&&e>s?["max",s]:["ok"]},_numSuggestionElements:0,_selectedSuggestion:null,_previousTypedVal:null,suggest:function(e,n,s){var o={css:{maxHeight:"150px",background:"#FFF",lineHeight:"150%",textDecoration:"underline",overflowX:"hidden",overflowY:"auto",border:"#CCC solid 1px",borderTop:"none",cursor:"pointer"},activeSuggestionCSS:{background:"#E9E9E9"}},r=function(t,e){var i=e.offset();t.css({width:e.outerWidth(),left:i.left+"px",top:i.top+e.outerHeight()+"px"})};s&&t.extend(o,s),o.css.position="absolute",o.css["z-index"]=9999,e.attr("autocomplete","off"),0===this._numSuggestionElements&&i.bind("resize",function(){t(".jquery-form-suggestions").each(function(){var e=t(this),i=e.attr("data-suggest-container");r(e,t(".suggestions-"+i).eq(0))})}),this._numSuggestionElements++;var a=function(e){var i=e.valAttr("suggestion-nr");t.formUtils._selectedSuggestion=null,t.formUtils._previousTypedVal=null,t(".jquery-form-suggestion-"+i).fadeOut("fast")};return e.data("suggestions",n).valAttr("suggestion-nr",this._numSuggestionElements).unbind("focus.suggest").bind("focus.suggest",function(){t(this).trigger("keyup"),t.formUtils._selectedSuggestion=null}).unbind("keyup.suggest").bind("keyup.suggest",function(){var i=t(this),n=[],s=t.trim(i.val()).toLocaleLowerCase();if(s!==t.formUtils._previousTypedVal){t.formUtils._previousTypedVal=s;var l=!1,u=i.valAttr("suggestion-nr"),c=t(".jquery-form-suggestion-"+u);if(c.scrollTop(0),""!==s){var h=s.length>2;t.each(i.data("suggestions"),function(t,e){var i=e.toLocaleLowerCase();return i===s?(n.push("<strong>"+e+"</strong>"),l=!0,!1):void((0===i.indexOf(s)||h&&i.indexOf(s)>-1)&&n.push(e.replace(new RegExp(s,"gi"),"<strong>$&</strong>")))})}l||0===n.length&&c.length>0?c.hide():n.length>0&&0===c.length?(c=t("<div></div>").css(o.css).appendTo("body"),e.addClass("suggestions-"+u),c.attr("data-suggest-container",u).addClass("jquery-form-suggestions").addClass("jquery-form-suggestion-"+u)):n.length>0&&!c.is(":visible")&&c.show(),n.length>0&&s.length!==n[0].length&&(r(c,i),c.html(""),t.each(n,function(e,n){t("<div></div>").append(n).css({overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",padding:"5px"}).addClass("form-suggest-element").appendTo(c).click(function(){i.focus(),i.val(t(this).text()),i.trigger("change"),a(i)})}))}}).unbind("keydown.validation").bind("keydown.validation",function(e){var i,n,s=e.keyCode?e.keyCode:e.which,r=t(this);if(13===s&&null!==t.formUtils._selectedSuggestion){if(i=r.valAttr("suggestion-nr"),(n=t(".jquery-form-suggestion-"+i)).length>0){var l=n.find("div").eq(t.formUtils._selectedSuggestion).text();r.val(l),r.trigger("change"),a(r),e.preventDefault()}}else{i=r.valAttr("suggestion-nr");var u=(n=t(".jquery-form-suggestion-"+i)).children();if(u.length>0&&t.inArray(s,[38,40])>-1){38===s?(null===t.formUtils._selectedSuggestion?t.formUtils._selectedSuggestion=u.length-1:t.formUtils._selectedSuggestion--,t.formUtils._selectedSuggestion<0&&(t.formUtils._selectedSuggestion=u.length-1)):40===s&&(null===t.formUtils._selectedSuggestion?t.formUtils._selectedSuggestion=0:t.formUtils._selectedSuggestion++,t.formUtils._selectedSuggestion>u.length-1&&(t.formUtils._selectedSuggestion=0));var c=n.innerHeight(),h=n.scrollTop(),d=n.children().eq(0).outerHeight()*t.formUtils._selectedSuggestion;return(d<h||d>h+c)&&n.scrollTop(d),u.removeClass("active-suggestion").css("background","none").eq(t.formUtils._selectedSuggestion).addClass("active-suggestion").css(o.activeSuggestionCSS),e.preventDefault(),!1}}}).unbind("blur.suggest").bind("blur.suggest",function(){a(t(this))}),e},LANG:{errorTitle:"Form submission failed!",requiredField:"This is a required field",requiredFields:"You have not answered all required fields",badTime:"You have not given a correct time",badEmail:"You have not given a correct e-mail address",badTelephone:"You have not given a correct phone number",badSecurityAnswer:"You have not given a correct answer to the security question",badDate:"You have not given a correct date",lengthBadStart:"The input value must be between ",lengthBadEnd:" characters",lengthTooLongStart:"The input value is longer than ",lengthTooShortStart:"The input value is shorter than ",notConfirmed:"Input values could not be confirmed",badDomain:"Incorrect domain value",badUrl:"The input value is not a correct URL",badCustomVal:"The input value is incorrect",andSpaces:" and spaces ",badInt:"The input value was not a correct number",badSecurityNumber:"Your social security number was incorrect",badUKVatAnswer:"Incorrect UK VAT Number",badUKNin:"Incorrect UK NIN",badUKUtr:"Incorrect UK UTR Number",badStrength:"The password isn't strong enough",badNumberOfSelectedOptionsStart:"You have to choose at least ",badNumberOfSelectedOptionsEnd:" answers",badAlphaNumeric:"The input value can only contain alphanumeric characters ",badAlphaNumericExtra:" and ",wrongFileSize:"The file you are trying to upload is too large (max %s)",wrongFileType:"Only files of type %s is allowed",groupCheckedRangeStart:"Please choose between ",groupCheckedTooFewStart:"Please choose at least ",groupCheckedTooManyStart:"Please choose a maximum of ",groupCheckedEnd:" item(s)",badCreditCard:"The credit card number is not correct",badCVV:"The CVV number was not correct",wrongFileDim:"Incorrect image dimensions,",imageTooTall:"the image can not be taller than",imageTooWide:"the image can not be wider than",imageTooSmall:"the image was too small",min:"min",max:"max",imageRatioNotAccepted:"Image ratio is not be accepted",badBrazilTelephoneAnswer:"The phone number entered is invalid",badBrazilCEPAnswer:"The CEP entered is invalid",badBrazilCPFAnswer:"The CPF entered is invalid",badPlPesel:"The PESEL entered is invalid",badPlNip:"The NIP entered is invalid",badPlRegon:"The REGON entered is invalid",badreCaptcha:"Please confirm that you are not a bot",passwordComplexityStart:"Password must contain at least ",passwordComplexitySeparator:", ",passwordComplexityUppercaseInfo:" uppercase letter(s)",passwordComplexityLowercaseInfo:" lowercase letter(s)",passwordComplexitySpecialCharsInfo:" special character(s)",passwordComplexityNumericCharsInfo:" numeric character(s)",passwordComplexityEnd:"."}})}(t,window),function(t){t.formUtils.addValidator({name:"email",validatorFunction:function(e){var i=e.toLowerCase().split("@"),n=i[0],s=i[1];if(n&&s){if(0===n.indexOf('"')){var o=n.length;if((n=n.replace(/\"/g,"")).length!==o-2)return!1}return t.formUtils.validators.validate_domain.validatorFunction(i[1])&&0!==n.indexOf(".")&&"."!==n.substring(n.length-1,n.length)&&-1===n.indexOf("..")&&!/[^\w\+\.\-\#\-\_\~\!\$\&\'\(\)\*\+\,\;\=\:]/.test(n)}return!1},errorMessage:"",errorMessageKey:"badEmail"}),t.formUtils.addValidator({name:"domain",validatorFunction:function(t){return t.length>0&&t.length<=253&&!/[^a-zA-Z0-9]/.test(t.slice(-2))&&!/[^a-zA-Z0-9]/.test(t.substr(0,1))&&!/[^a-zA-Z0-9\.\-]/.test(t)&&1===t.split("..").length&&t.split(".").length>1},errorMessage:"",errorMessageKey:"badDomain"}),t.formUtils.addValidator({name:"required",validatorFunction:function(e,i,n,s,o){switch(i.attr("type")){case"checkbox":return i.is(":checked");case"radio":return o.find('input[name="'+i.attr("name")+'"]').filter(":checked").length>0;default:return""!==t.trim(e)}},errorMessage:"",errorMessageKey:function(t){return"top"===t.errorMessagePosition||"function"==typeof t.errorMessagePosition?"requiredFields":"requiredField"}}),t.formUtils.addValidator({name:"length",validatorFunction:function(e,i,n,s){var o=i.valAttr("length"),r=i.attr("type");if(void 0===o)return alert('Please add attribute "data-validation-length" to '+i[0].nodeName+" named "+i.attr("name")),!0;var a,l="file"===r&&void 0!==i.get(0).files?i.get(0).files.length:e.length,u=t.formUtils.numericRangeCheck(l,o);switch(u[0]){case"out":this.errorMessage=s.lengthBadStart+o+s.lengthBadEnd,a=!1;break;case"min":this.errorMessage=s.lengthTooShortStart+u[1]+s.lengthBadEnd,a=!1;break;case"max":this.errorMessage=s.lengthTooLongStart+u[1]+s.lengthBadEnd,a=!1;break;default:a=!0}return a},errorMessage:"",errorMessageKey:""}),t.formUtils.addValidator({name:"url",validatorFunction:function(e){if(/^(https?|ftp):\/\/((((\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])(\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])(\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/(((\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/((\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|\[|\]|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#(((\w|-|\.|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(e)){var i=e.split("://")[1],n=i.indexOf("/");return n>-1&&(i=i.substr(0,n)),t.formUtils.validators.validate_domain.validatorFunction(i)}return!1},errorMessage:"",errorMessageKey:"badUrl"}),t.formUtils.addValidator({name:"number",validatorFunction:function(t,e,i){if(""!==t){var n,s,o=e.valAttr("allowing")||"",r=e.valAttr("decimal-separator")||i.decimalSeparator,a=!1,l=e.valAttr("step")||"",u=!1;if((e.attr("data-sanitize")||"").match(/(^|[\s])numberFormat([\s]|$)/i)){if(!window.numeral)throw new ReferenceError("The data-sanitize value numberFormat cannot be used without the numeral library. Please see Data Validation in http://www.formvalidator.net for more information.");t.length&&(t=String(numeral().unformat(t)))}if(-1===o.indexOf("number")&&(o+=",number"),-1===o.indexOf("negative")&&0===t.indexOf("-"))return!1;if(o.indexOf("range")>-1&&(n=parseFloat(o.substring(o.indexOf("[")+1,o.indexOf(";"))),s=parseFloat(o.substring(o.indexOf(";")+1,o.indexOf("]"))),a=!0),""!==l&&(u=!0),","===r){if(t.indexOf(".")>-1)return!1;t=t.replace(",",".")}if(""===t.replace(/[0-9-]/g,"")&&(!a||t>=n&&t<=s)&&(!u||t%l==0))return!0;if(o.indexOf("float")>-1&&null!==t.match(new RegExp("^([0-9-]+)\\.([0-9]+)$"))&&(!a||t>=n&&t<=s)&&(!u||t%l==0))return!0}return!1},errorMessage:"",errorMessageKey:"badInt"}),t.formUtils.addValidator({name:"alphanumeric",validatorFunction:function(e,i,n,s){var o="^([a-zA-Z0-9",r="]+)$",a=i.valAttr("allowing"),l="",u=!1;if(a){l=o+a+r;var c=a.replace(/\\/g,"");c.indexOf(" ")>-1&&(u=!0,c=c.replace(" ",""),c+=s.andSpaces||t.formUtils.LANG.andSpaces),s.badAlphaNumericAndExtraAndSpaces&&s.badAlphaNumericAndExtra?this.errorMessage=u?s.badAlphaNumericAndExtraAndSpaces+c:s.badAlphaNumericAndExtra+c+s.badAlphaNumericExtra:this.errorMessage=s.badAlphaNumeric+s.badAlphaNumericExtra+c}else l=o+r,this.errorMessage=s.badAlphaNumeric;return new RegExp(l).test(e)},errorMessage:"",errorMessageKey:""}),t.formUtils.addValidator({name:"custom",validatorFunction:function(t,e){return new RegExp(e.valAttr("regexp")).test(t)},errorMessage:"",errorMessageKey:"badCustomVal"}),t.formUtils.addValidator({name:"date",validatorFunction:function(e,i,n){var s=i.valAttr("format")||n.dateFormat||"yyyy-mm-dd",o="false"===i.valAttr("require-leading-zero");return!1!==t.formUtils.parseDate(e,s,o)},errorMessage:"",errorMessageKey:"badDate"}),t.formUtils.addValidator({name:"checkbox_group",validatorFunction:function(e,i,n,s,o){var r=!0,a=i.attr("name"),l=t('input[type=checkbox][name^="'+a+'"]',o),u=l.filter(":checked").length,c=i.valAttr("qty");if(void 0===c){var h=i.get(0).nodeName;alert('Attribute "data-validation-qty" is missing from '+h+" named "+i.attr("name"))}var d=t.formUtils.numericRangeCheck(u,c);switch(d[0]){case"out":this.errorMessage=s.groupCheckedRangeStart+c+s.groupCheckedEnd,r=!1;break;case"min":this.errorMessage=s.groupCheckedTooFewStart+d[1]+(s.groupCheckedTooFewEnd||s.groupCheckedEnd),r=!1;break;case"max":this.errorMessage=s.groupCheckedTooManyStart+d[1]+(s.groupCheckedTooManyEnd||s.groupCheckedEnd),r=!1;break;default:r=!0}if(!r){var p=function(){l.unbind("click",p),l.filter("*[data-validation]").validateInputOnBlur(s,n,!1,"blur")};l.bind("click",p)}return r}})}(t)}),function(t){"object"==typeof module&&"object"==typeof module.exports?t(require("jquery"),window,document):t(jQuery,window,document)}(function(t,e,i,n){var s=[],o=function(){return s.length?s[s.length-1]:null},r=function(){var t,e=!1;for(t=s.length-1;t>=0;t--)s[t].$blocker&&(s[t].$blocker.toggleClass("current",!e).toggleClass("behind",e),e=!0)};t.modal=function(e,i){var n,r;if(this.$body=t("body"),this.options=t.extend({},t.modal.defaults,i),this.options.doFade=!isNaN(parseInt(this.options.fadeDuration,10)),this.$blocker=null,this.options.closeExisting)for(;t.modal.isActive();)t.modal.close();if(s.push(this),e.is("a"))if(r=e.attr("href"),this.anchor=e,/^#/.test(r)){if(this.$elm=t(r),1!==this.$elm.length)return null;this.$body.append(this.$elm),this.open()}else this.$elm=t("<div>"),this.$body.append(this.$elm),n=function(t,e){e.elm.remove()},this.showSpinner(),e.trigger(t.modal.AJAX_SEND),t.get(r).done(function(i){if(t.modal.isActive()){e.trigger(t.modal.AJAX_SUCCESS);var s=o();s.$elm.empty().append(i).on(t.modal.CLOSE,n),s.hideSpinner(),s.open(),e.trigger(t.modal.AJAX_COMPLETE)}}).fail(function(){e.trigger(t.modal.AJAX_FAIL),o().hideSpinner(),s.pop(),e.trigger(t.modal.AJAX_COMPLETE)});else this.$elm=e,this.anchor=e,this.$body.append(this.$elm),this.open()},t.modal.prototype={constructor:t.modal,open:function(){var e=this;this.block(),this.anchor.blur(),this.options.doFade?setTimeout(function(){e.show()},this.options.fadeDuration*this.options.fadeDelay):this.show(),t(i).off("keydown.modal").on("keydown.modal",function(t){var e=o();27===t.which&&e.options.escapeClose&&e.close()}),this.options.clickClose&&this.$blocker.click(function(e){e.target===this&&t.modal.close()})},close:function(){s.pop(),this.unblock(),this.hide(),t.modal.isActive()||t(i).off("keydown.modal")},block:function(){this.$elm.trigger(t.modal.BEFORE_BLOCK,[this._ctx()]),this.$body.css("overflow","hidden"),this.$blocker=t('<div class="'+this.options.blockerClass+' blocker current"></div>').appendTo(this.$body),r(),this.options.doFade&&this.$blocker.css("opacity",0).animate({opacity:1},this.options.fadeDuration),this.$elm.trigger(t.modal.BLOCK,[this._ctx()])},unblock:function(e){!e&&this.options.doFade?this.$blocker.fadeOut(this.options.fadeDuration,this.unblock.bind(this,!0)):(this.$blocker.children().appendTo(this.$body),this.$blocker.remove(),this.$blocker=null,r(),t.modal.isActive()||this.$body.css("overflow",""))},show:function(){this.$elm.trigger(t.modal.BEFORE_OPEN,[this._ctx()]),this.options.showClose&&(this.closeButton=t('<a href="#close-modal" rel="modal:close" class="close-modal '+this.options.closeClass+'">'+this.options.closeText+"</a>"),this.$elm.append(this.closeButton)),this.$elm.addClass(this.options.modalClass).appendTo(this.$blocker),this.options.doFade?this.$elm.css({opacity:0,display:"inline-block"}).animate({opacity:1},this.options.fadeDuration):this.$elm.css("display","inline-block"),this.$elm.trigger(t.modal.OPEN,[this._ctx()])},hide:function(){this.$elm.trigger(t.modal.BEFORE_CLOSE,[this._ctx()]),this.closeButton&&this.closeButton.remove();var e=this;this.options.doFade?this.$elm.fadeOut(this.options.fadeDuration,function(){e.$elm.trigger(t.modal.AFTER_CLOSE,[e._ctx()])}):this.$elm.hide(0,function(){e.$elm.trigger(t.modal.AFTER_CLOSE,[e._ctx()])}),this.$elm.trigger(t.modal.CLOSE,[this._ctx()])},showSpinner:function(){this.options.showSpinner&&(this.spinner=this.spinner||t('<div class="'+this.options.modalClass+'-spinner"></div>').append(this.options.spinnerHtml),this.$body.append(this.spinner),this.spinner.show())},hideSpinner:function(){this.spinner&&this.spinner.remove()},_ctx:function(){return{elm:this.$elm,$elm:this.$elm,$blocker:this.$blocker,options:this.options}}},t.modal.close=function(e){if(t.modal.isActive()){e&&e.preventDefault();var i=o();return i.close(),i.$elm}},t.modal.isActive=function(){return s.length>0},t.modal.getCurrent=o,t.modal.defaults={closeExisting:!0,escapeClose:!0,clickClose:!0,closeText:"Close",closeClass:"",modalClass:"modal",blockerClass:"jquery-modal",spinnerHtml:'<div class="rect1"></div><div class="rect2"></div><div class="rect3"></div><div class="rect4"></div>',showSpinner:!0,showClose:!0,fadeDuration:null,fadeDelay:1},t.modal.BEFORE_BLOCK="modal:before-block",t.modal.BLOCK="modal:block",t.modal.BEFORE_OPEN="modal:before-open",t.modal.OPEN="modal:open",t.modal.BEFORE_CLOSE="modal:before-close",t.modal.CLOSE="modal:close",t.modal.AFTER_CLOSE="modal:after-close",t.modal.AJAX_SEND="modal:ajax:send",t.modal.AJAX_SUCCESS="modal:ajax:success",t.modal.AJAX_FAIL="modal:ajax:fail",t.modal.AJAX_COMPLETE="modal:ajax:complete",t.fn.modal=function(e){return 1===this.length&&new t.modal(this,e),this},t(i).on("click.modal",'a[rel~="modal:close"]',t.modal.close),t(i).on("click.modal",'a[rel~="modal:open"]',function(e){e.preventDefault(),t(this).modal()})}),function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(t){"use strict";t.ui=t.ui||{},t.ui.version="1.13.0";var e,i,n,s,o,r,a,l,u,c,h,d,p,f=0,g=Array.prototype.hasOwnProperty,m=Array.prototype.slice;function v(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function y(e,i){return parseInt(t.css(e,i),10)||0}function _(t){return null!=t&&t===t.window}t.cleanData=(e=t.cleanData,function(i){for(var n,s,o=0;null!=(s=i[o]);o++)(n=t._data(s,"events"))&&n.remove&&t(s).triggerHandler("remove");e(i)}),t.widget=function(e,i,n){var s,o,r,a={},l=e.split(".")[0],u=l+"-"+(e=e.split(".")[1]);return n||(n=i,i=t.Widget),Array.isArray(n)&&(n=t.extend.apply(null,[{}].concat(n))),t.expr.pseudos[u.toLowerCase()]=function(e){return!!t.data(e,u)},t[l]=t[l]||{},s=t[l][e],o=t[l][e]=function(t,e){if(!this._createWidget)return new o(t,e);arguments.length&&this._createWidget(t,e)},t.extend(o,s,{version:n.version,_proto:t.extend({},n),_childConstructors:[]}),(r=new i).options=t.widget.extend({},r.options),t.each(n,function(t,e){function n(){return i.prototype[t].apply(this,arguments)}function s(e){return i.prototype[t].apply(this,e)}a[t]="function"==typeof e?function(){var t,i=this._super,o=this._superApply;return this._super=n,this._superApply=s,t=e.apply(this,arguments),this._super=i,this._superApply=o,t}:e}),o.prototype=t.widget.extend(r,{widgetEventPrefix:s&&r.widgetEventPrefix||e},a,{constructor:o,namespace:l,widgetName:e,widgetFullName:u}),s?(t.each(s._childConstructors,function(e,i){var n=i.prototype;t.widget(n.namespace+"."+n.widgetName,o,i._proto)}),delete s._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,n,s=m.call(arguments,1),o=0,r=s.length;o<r;o++)for(i in s[o])n=s[o][i],g.call(s[o],i)&&void 0!==n&&(t.isPlainObject(n)?e[i]=t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):e[i]=n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(s){var o="string"==typeof s,r=m.call(arguments,1),a=this;return o?this.length||"instance"!==s?this.each(function(){var i,o=t.data(this,n);return"instance"===s?(a=o,!1):o?"function"!=typeof o[s]||"_"===s.charAt(0)?t.error("no such method '"+s+"' for "+e+" widget instance"):(i=o[s].apply(o,r))!==o&&void 0!==i?(a=i&&i.jquery?a.pushStack(i.get()):i,!1):void 0:t.error("cannot call methods on "+e+" prior to initialization; attempted to call method '"+s+"'")}):a=void 0:(r.length&&(s=t.widget.extend.apply(null,[s].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(s||{}),e._init&&e._init()):t.data(this,n,new i(s,this))})),a}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=f++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var n,s,o,r=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(r={},e=(n=e.split(".")).shift(),n.length){for(s=r[e]=t.widget.extend({},this.options[e]),o=0;o<n.length-1;o++)s[n[o]]=s[n[o]]||{},s=s[n[o]];if(e=n.pop(),1===arguments.length)return void 0===s[e]?null:s[e];s[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];r[e]=i}return this._setOptions(r),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,n,s;for(i in e)s=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&s&&s.length&&(n=t(s.get()),this._removeClass(s,i),n.addClass(this._classes({element:n,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(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(e){var i=[],n=this;function s(s,o){for(var r,a=0;a<s.length;a++)r=n.classesElementLookup[s[a]]||t(),r=e.add?(e.element.each(function(e,i){t.map(n.classesElementLookup,function(t){return t}).some(function(t){return t.is(i)})||n._on(t(i),{remove:"_untrackClassesElement"})}),t(t.uniqueSort(r.get().concat(e.element.get())))):t(r.not(e.element).get()),n.classesElementLookup[s[a]]=r,i.push(s[a]),o&&e.classes[s[a]]&&i.push(e.classes[s[a]])}return(e=t.extend({element:this.element,classes:this.options.classes||{}},e)).keys&&s(e.keys.match(/\S+/g)||[],!0),e.extra&&s(e.extra.match(/\S+/g)||[]),i.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(n,s){-1!==t.inArray(e.target,s)&&(i.classesElementLookup[n]=t(s.not(e.target).get()))}),this._off(t(e.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,n){var s="string"==typeof t||null===t;return(i={extra:s?e:i,keys:s?t:e,element:s?this.element:t,add:n="boolean"==typeof n?n:i}).element.toggleClass(this._classes(i),n),this},_on:function(e,i,n){var s,o=this;"boolean"!=typeof e&&(n=i,i=e,e=!1),n?(i=s=t(i),this.bindings=this.bindings.add(i)):(n=i,i=this.element,s=this.widget()),t.each(n,function(n,r){function a(){if(e||!0!==o.options.disabled&&!t(this).hasClass("ui-state-disabled"))return("string"==typeof r?o[r]:r).apply(o,arguments)}"string"!=typeof r&&(a.guid=r.guid=r.guid||a.guid||t.guid++);var l;n=(l=n.match(/^([\w:-]*)\s*(.*)$/))[1]+o.eventNamespace;(l=l[2])?s.on(n,l,a):i.on(n,a)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,n){var s,o,r=this.options[e];if(n=n||{},(i=t.Event(i)).type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(s in o)s in i||(i[s]=o[s]);return this.element.trigger(i,n),!("function"==typeof r&&!1===r.apply(this.element[0],[i].concat(n))||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(n,s,o){var r,a=(s="string"==typeof s?{effect:s}:s)?!0!==s&&"number"!=typeof s&&s.effect||i:e;"number"==typeof(s=s||{})?s={duration:s}:!0===s&&(s={}),r=!t.isEmptyObject(s),s.complete=o,s.delay&&n.delay(s.delay),r&&t.effects&&t.effects.effect[a]?n[e](s):a!==e&&n[a]?n[a](s.duration,s.easing,o):n.queue(function(i){t(this)[e](),o&&o.call(n[0]),i()})}}),t.widget,n=Math.max,s=Math.abs,o=/left|center|right/,r=/top|center|bottom/,a=/[\+\-]\d+(\.[\d]+)?%?/,l=/^\w+/,u=/%$/,c=t.fn.position,t.position={scrollbarWidth:function(){if(void 0!==i)return i;var e,n=t("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>"),s=n.children()[0];return t("body").append(n),e=s.offsetWidth,n.css("overflow","scroll"),e===(s=s.offsetWidth)&&(s=n[0].clientWidth),n.remove(),i=e-s},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),n=e.isWindow||e.isDocument?"":e.element.css("overflow-y");i="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth;return{width:"scroll"===n||"auto"===n&&e.height<e.element[0].scrollHeight?t.position.scrollbarWidth():0,height:i?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),n=_(i[0]),s=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:n,isDocument:s,offset:n||s?{left:0,top:0}:t(e).offset(),scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(e){if(!e||!e.of)return c.apply(this,arguments);var i,u,h,d,p,f,g="string"==typeof(e=t.extend({},e)).of?t(document).find(e.of):t(e.of),m=t.position.getWithinInfo(e.within),b=t.position.getScrollInfo(m),w=(e.collision||"flip").split(" "),x={},k=9===(f=(k=g)[0]).nodeType?{width:k.width(),height:k.height(),offset:{top:0,left:0}}:_(f)?{width:k.width(),height:k.height(),offset:{top:k.scrollTop(),left:k.scrollLeft()}}:f.preventDefault?{width:0,height:0,offset:{top:f.pageY,left:f.pageX}}:{width:k.outerWidth(),height:k.outerHeight(),offset:k.offset()};return g[0].preventDefault&&(e.at="left top"),u=k.width,h=k.height,p=t.extend({},d=k.offset),t.each(["my","at"],function(){var t,i,n=(e[this]||"").split(" ");(n=1===n.length?o.test(n[0])?n.concat(["center"]):r.test(n[0])?["center"].concat(n):["center","center"]:n)[0]=o.test(n[0])?n[0]:"center",n[1]=r.test(n[1])?n[1]:"center",t=a.exec(n[0]),i=a.exec(n[1]),x[this]=[t?t[0]:0,i?i[0]:0],e[this]=[l.exec(n[0])[0],l.exec(n[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===e.at[0]?p.left+=u:"center"===e.at[0]&&(p.left+=u/2),"bottom"===e.at[1]?p.top+=h:"center"===e.at[1]&&(p.top+=h/2),i=v(x.at,u,h),p.left+=i[0],p.top+=i[1],this.each(function(){var o,r,a=t(this),l=a.outerWidth(),c=a.outerHeight(),f=y(this,"marginLeft"),_=y(this,"marginTop"),k=l+f+y(this,"marginRight")+b.width,C=c+_+y(this,"marginBottom")+b.height,S=t.extend({},p),D=v(x.my,a.outerWidth(),a.outerHeight());"right"===e.my[0]?S.left-=l:"center"===e.my[0]&&(S.left-=l/2),"bottom"===e.my[1]?S.top-=c:"center"===e.my[1]&&(S.top-=c/2),S.left+=D[0],S.top+=D[1],o={marginLeft:f,marginTop:_},t.each(["left","top"],function(n,s){t.ui.position[w[n]]&&t.ui.position[w[n]][s](S,{targetWidth:u,targetHeight:h,elemWidth:l,elemHeight:c,collisionPosition:o,collisionWidth:k,collisionHeight:C,offset:[i[0]+D[0],i[1]+D[1]],my:e.my,at:e.at,within:m,elem:a})}),e.using&&(r=function(t){var i=d.left-S.left,o=i+u-l,r=d.top-S.top,p=r+h-c,f={target:{element:g,left:d.left,top:d.top,width:u,height:h},element:{element:a,left:S.left,top:S.top,width:l,height:c},horizontal:o<0?"left":0<i?"right":"center",vertical:p<0?"top":0<r?"bottom":"middle"};u<l&&s(i+o)<u&&(f.horizontal="center"),h<c&&s(r+p)<h&&(f.vertical="middle"),n(s(i),s(o))>n(s(r),s(p))?f.important="horizontal":f.important="vertical",e.using.call(this,t,f)}),a.offset(t.extend(S,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,o=i.width,r=t.left-e.collisionPosition.marginLeft,a=s-r,l=r+e.collisionWidth-o-s;e.collisionWidth>o?0<a&&l<=0?(i=t.left+a+e.collisionWidth-o-s,t.left+=a-i):t.left=!(0<l&&a<=0)&&l<a?s+o-e.collisionWidth:s:0<a?t.left+=a:0<l?t.left-=l:t.left=n(t.left-r,t.left)},top:function(t,e){var i=e.within,s=i.isWindow?i.scrollTop:i.offset.top,o=e.within.height,r=t.top-e.collisionPosition.marginTop,a=s-r,l=r+e.collisionHeight-o-s;e.collisionHeight>o?0<a&&l<=0?(i=t.top+a+e.collisionHeight-o-s,t.top+=a-i):t.top=!(0<l&&a<=0)&&l<a?s+o-e.collisionHeight:s:0<a?t.top+=a:0<l?t.top-=l:t.top=n(t.top-r,t.top)}},flip:{left:function(t,e){var i=(u=e.within).offset.left+u.scrollLeft,n=u.width,o=u.isWindow?u.scrollLeft:u.offset.left,r=(c=t.left-e.collisionPosition.marginLeft)-o,a=c+e.collisionWidth-n-o,l="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,u="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,c=-2*e.offset[0];r<0?((i=t.left+l+u+c+e.collisionWidth-n-i)<0||i<s(r))&&(t.left+=l+u+c):0<a&&(0<(o=t.left-e.collisionPosition.marginLeft+l+u+c-o)||s(o)<a)&&(t.left+=l+u+c)},top:function(t,e){var i=(u=e.within).offset.top+u.scrollTop,n=u.height,o=u.isWindow?u.scrollTop:u.offset.top,r=(c=t.top-e.collisionPosition.marginTop)-o,a=c+e.collisionHeight-n-o,l="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,u="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,c=-2*e.offset[1];r<0?((i=t.top+l+u+c+e.collisionHeight-n-i)<0||i<s(r))&&(t.top+=l+u+c):0<a&&(0<(o=t.top-e.collisionPosition.marginTop+l+u+c-o)||s(o)<a)&&(t.top+=l+u+c)}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}},t.ui.position,t.extend(t.expr.pseudos,{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,n){return!!t.data(e,n[3])}}),t.fn.extend({disableSelection:(h="onselectstart"in document.createElement("div")?"selectstart":"mousedown",function(){return this.on(h+".ui-disableSelection",function(t){t.preventDefault()})}),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(e,i){var n,s,o,r,a=e.nodeName.toLowerCase();return"area"===a?(s=(n=e.parentNode).name,!(!e.href||!s||"map"!==n.nodeName.toLowerCase())&&0<(s=t("img[usemap='#"+s+"']")).length&&s.is(":visible")):(/^(input|select|textarea|button|object)$/.test(a)?(o=!e.disabled)&&(r=t(e).closest("fieldset")[0])&&(o=!r.disabled):o="a"===a&&e.href||i,o&&t(e).is(":visible")&&function(t){for(var e=t.css("visibility");"inherit"===e;)e=(t=t.parent()).css("visibility");return"visible"===e}(t(e)))},t.extend(t.expr.pseudos,{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn._form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){var t;this.form=this.element._form(),this.form.length&&((t=this.form.data("ui-form-reset-instances")||[]).length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t))},_unbindFormResetHandler:function(){var e;this.form.length&&((e=this.form.data("ui-form-reset-instances")).splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset"))}},t.expr.pseudos||(t.expr.pseudos=t.expr[":"]),t.uniqueSort||(t.uniqueSort=t.unique),t.escapeSelector||(d=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,p=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t},t.escapeSelector=function(t){return(t+"").replace(d,p)}),t.fn.even&&t.fn.odd||t.fn.extend({even:function(){return this.filter(function(t){return t%2==0})},odd:function(){return this.filter(function(t){return t%2==1})}}),t.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},t.fn.labels=function(){var e,i,n;return this.length?this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(i=this.eq(0).parents("label"),(e=this.attr("id"))&&(n=(n=this.eq(0).parents().last()).add((n.length?n:this).siblings()),e="label[for='"+t.escapeSelector(e)+"']",i=i.add(n.find(e).addBack(e))),this.pushStack(i)):this.pushStack([])},t.fn.scrollParent=function(e){var i=this.css("position"),n="absolute"===i,s=e?/(auto|scroll|hidden)/:/(auto|scroll)/;e=this.parents().filter(function(){var e=t(this);return(!n||"static"!==e.css("position"))&&s.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&e.length?e:t(this[0].ownerDocument||document)},t.extend(t.expr.pseudos,{tabbable:function(e){var i=t.attr(e,"tabindex"),n=null!=i;return(!n||0<=i)&&t.ui.focusable(e,n)}}),t.fn.extend({uniqueId:(b=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++b)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var b,w=!1;function x(t,e,i){return e<=t&&t<e+i}t(document).on("mouseup",function(){w=!1}),t.widget("ui.mouse",{version:"1.13.0",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){if(!0===t.data(i.target,e.widgetName+".preventClickEvent"))return t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!w){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,n=1===e.which,s=!("string"!=typeof this.options.cancel||!e.target.nodeName)&&t(e.target).closest(this.options.cancel).length;return!(n&&!s&&this._mouseCapture(e))||(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=!1!==this._mouseStart(e),!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),w=!0))}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||document.documentMode<9)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=!1!==this._mouseStart(this._mouseDownEvent,e),this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,w=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,n){var s,o=t.ui[e].prototype;for(s in n)o.plugins[s]=o.plugins[s]||[],o.plugins[s].push([i,n[s]])},call:function(t,e,i,n){var s,o=t.plugins[e];if(o&&(n||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(s=0;s<o.length;s++)t.options[o[s][0]]&&o[s][1].apply(t.element,i)}},t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return(e=e||t.body).nodeName?e:t.body},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.13.0",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){(this.helper||this.element).is(".ui-draggable-dragging")?this.destroyOnClear=!0:(this._removeHandleClassName(),this._mouseDestroy())},_mouseCapture:function(e){var i=this.options;return!(this.helper||i.disabled||0<t(e.target).closest(".ui-resizable-handle").length||(this.handle=this._getHandle(e),!this.handle||(this._blurActiveElement(e),this._blockFrames(!0===i.iframeFix?"iframe":i.iframeFix),0)))},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("<div>").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]);t(e.target).closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=0<this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),!1===this._trigger("start",e)?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){if(i=this._uiHash(),!1===this._trigger("drag",e,i))return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=i.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,n=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(n=t.ui.ddmanager.drop(this,e)),this.dropped&&(n=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!n||"valid"===this.options.revert&&n||!0===this.options.revert||"function"==typeof this.options.revert&&this.options.revert.call(this.element,n)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){!1!==i._trigger("stop",e)&&i._clear()}):!1!==this._trigger("stop",e)&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return!this.options.handle||!!t(e.target).closest(this.element.find(this.options.handle)).length},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,n="function"==typeof i.helper;return(e=n?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element).parents("body").length||e.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),n&&e[0]===this.element[0]&&this._setPositionRelative(),e[0]===this.element[0]||/(fixed|absolute)/.test(e.css("position"))||e.css("position","absolute"),e},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),{top:(e=this._isRootNode(this.offsetParent[0])?{top:0,left:0}:e).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,n,s=this.options,o=this.document[0];this.relativeContainer=null,s.containment?"window"!==s.containment?"document"!==s.containment?s.containment.constructor!==Array?("parent"===s.containment&&(s.containment=this.helper[0].parentNode),(n=(i=t(s.containment))[0])&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(n.scrollWidth,n.offsetWidth):n.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(n.scrollHeight,n.offsetHeight):n.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i)):this.containment=s.containment:this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]:this.containment=null},_convertPositionTo:function(t,e){e=e||this.position;var i="absolute"===t?1:-1;t=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:t?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:t?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,n=this.options,s=this._isRootNode(this.scrollParent[0]),o=t.pageX,r=t.pageY;return s&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(i=this.relativeContainer?(i=this.relativeContainer.offset(),[this.containment[0]+i.left,this.containment[1]+i.top,this.containment[2]+i.left,this.containment[3]+i.top]):this.containment,t.pageX-this.offset.click.left<i[0]&&(o=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(r=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(o=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(r=i[3]+this.offset.click.top)),n.grid&&(t=n.grid[1]?this.originalPageY+Math.round((r-this.originalPageY)/n.grid[1])*n.grid[1]:this.originalPageY,r=!i||t-this.offset.click.top>=i[1]||t-this.offset.click.top>i[3]?t:t-this.offset.click.top>=i[1]?t-n.grid[1]:t+n.grid[1],t=n.grid[0]?this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0]:this.originalPageX,o=!i||t-this.offset.click.left>=i[0]||t-this.offset.click.left>i[2]?t:t-this.offset.click.left>=i[0]?t-n.grid[0]:t+n.grid[0]),"y"===n.axis&&(o=this.originalPageX),"x"===n.axis&&(r=this.originalPageY)),{top:r-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,n){return n=n||this._uiHash(),t.ui.plugin.call(this,e,[i,n,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),n.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,n)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,n){var s=t.extend({},i,{item:n.element});n.sortables=[],t(n.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(n.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,s))})},stop:function(e,i,n){var s=t.extend({},i,{item:n.element});n.cancelHelperRemoval=!1,t.each(n.sortables,function(){var t=this;t.isOver?(t.isOver=0,n.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,s))})},drag:function(e,i,n){t.each(n.sortables,function(){var s=!1,o=this;o.positionAbs=n.positionAbs,o.helperProportions=n.helperProportions,o.offset.click=n.offset.click,o._intersectsWith(o.containerCache)&&(s=!0,t.each(n.sortables,function(){return this.positionAbs=n.positionAbs,this.helperProportions=n.helperProportions,this.offset.click=n.offset.click,s=(this===o||!this._intersectsWith(this.containerCache)||!t.contains(o.element[0],this.element[0]))&&s})),s?(o.isOver||(o.isOver=1,n._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=n.offset.click.top,o.offset.click.left=n.offset.click.left,o.offset.parent.left-=n.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=n.offset.parent.top-o.offset.parent.top,n._trigger("toSortable",e),n.dropped=o.element,t.each(n.sortables,function(){this.refreshPositions()}),n.currentItem=n.element,o.fromOutside=n),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(n._parent),n._refreshOffsets(e),i.position=n._generatePosition(e,!0),n._trigger("fromSortable",e),n.dropped=!1,t.each(n.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,n){var s=t("body");n=n.options;s.css("cursor")&&(n._cursor=s.css("cursor")),s.css("cursor",n.cursor)},stop:function(e,i,n){(n=n.options)._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,n){i=t(i.helper),n=n.options,i.css("opacity")&&(n._opacity=i.css("opacity")),i.css("opacity",n.opacity)},stop:function(e,i,n){(n=n.options)._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,n){var s=n.options,o=!1,r=n.scrollParentNotHidden[0],a=n.document[0];r!==a&&"HTML"!==r.tagName?(s.axis&&"x"===s.axis||(n.overflowOffset.top+r.offsetHeight-e.pageY<s.scrollSensitivity?r.scrollTop=o=r.scrollTop+s.scrollSpeed:e.pageY-n.overflowOffset.top<s.scrollSensitivity&&(r.scrollTop=o=r.scrollTop-s.scrollSpeed)),s.axis&&"y"===s.axis||(n.overflowOffset.left+r.offsetWidth-e.pageX<s.scrollSensitivity?r.scrollLeft=o=r.scrollLeft+s.scrollSpeed:e.pageX-n.overflowOffset.left<s.scrollSensitivity&&(r.scrollLeft=o=r.scrollLeft-s.scrollSpeed))):(s.axis&&"x"===s.axis||(e.pageY-t(a).scrollTop()<s.scrollSensitivity?o=t(a).scrollTop(t(a).scrollTop()-s.scrollSpeed):t(window).height()-(e.pageY-t(a).scrollTop())<s.scrollSensitivity&&(o=t(a).scrollTop(t(a).scrollTop()+s.scrollSpeed))),s.axis&&"y"===s.axis||(e.pageX-t(a).scrollLeft()<s.scrollSensitivity?o=t(a).scrollLeft(t(a).scrollLeft()-s.scrollSpeed):t(window).width()-(e.pageX-t(a).scrollLeft())<s.scrollSensitivity&&(o=t(a).scrollLeft(t(a).scrollLeft()+s.scrollSpeed)))),!1!==o&&t.ui.ddmanager&&!s.dropBehaviour&&t.ui.ddmanager.prepareOffsets(n,e)}}),t.ui.plugin.add("draggable","snap",{start:function(e,i,n){var s=n.options;n.snapElements=[],t(s.snap.constructor!==String?s.snap.items||":data(ui-draggable)":s.snap).each(function(){var e=t(this),i=e.offset();this!==n.element[0]&&n.snapElements.push({item:this,width:e.outerWidth(),height:e.outerHeight(),top:i.top,left:i.left})})},drag:function(e,i,n){for(var s,o,r,a,l,u,c,h,d,p=n.options,f=p.snapTolerance,g=i.offset.left,m=g+n.helperProportions.width,v=i.offset.top,y=v+n.helperProportions.height,_=n.snapElements.length-1;0<=_;_--)u=(l=n.snapElements[_].left-n.margins.left)+n.snapElements[_].width,h=(c=n.snapElements[_].top-n.margins.top)+n.snapElements[_].height,m<l-f||u+f<g||y<c-f||h+f<v||!t.contains(n.snapElements[_].item.ownerDocument,n.snapElements[_].item)?(n.snapElements[_].snapping&&n.options.snap.release&&n.options.snap.release.call(n.element,e,t.extend(n._uiHash(),{snapItem:n.snapElements[_].item})),n.snapElements[_].snapping=!1):("inner"!==p.snapMode&&(s=Math.abs(c-y)<=f,o=Math.abs(h-v)<=f,r=Math.abs(l-m)<=f,a=Math.abs(u-g)<=f,s&&(i.position.top=n._convertPositionTo("relative",{top:c-n.helperProportions.height,left:0}).top),o&&(i.position.top=n._convertPositionTo("relative",{top:h,left:0}).top),r&&(i.position.left=n._convertPositionTo("relative",{top:0,left:l-n.helperProportions.width}).left),a&&(i.position.left=n._convertPositionTo("relative",{top:0,left:u}).left)),d=s||o||r||a,"outer"!==p.snapMode&&(s=Math.abs(c-v)<=f,o=Math.abs(h-y)<=f,r=Math.abs(l-g)<=f,a=Math.abs(u-m)<=f,s&&(i.position.top=n._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=n._convertPositionTo("relative",{top:h-n.helperProportions.height,left:0}).top),r&&(i.position.left=n._convertPositionTo("relative",{top:0,left:l}).left),a&&(i.position.left=n._convertPositionTo("relative",{top:0,left:u-n.helperProportions.width}).left)),!n.snapElements[_].snapping&&(s||o||r||a||d)&&n.options.snap.snap&&n.options.snap.snap.call(n.element,e,t.extend(n._uiHash(),{snapItem:n.snapElements[_].item})),n.snapElements[_].snapping=s||o||r||a||d)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,n){var s;n=n.options;(n=t.makeArray(t(n.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)})).length&&(s=parseInt(t(n[0]).css("zIndex"),10)||0,t(n).each(function(e){t(this).css("zIndex",s+e)}),this.css("zIndex",s+n.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,n){i=t(i.helper),n=n.options,i.css("zIndex")&&(n._zIndex=i.css("zIndex")),i.css("zIndex",n.zIndex)},stop:function(e,i,n){(n=n.options)._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.droppable",{version:"1.13.0",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,e=this.options,i=e.accept;this.isover=!1,this.isout=!0,this.accept="function"==typeof i?i:function(t){return t.is(i)},this.proportions=function(){if(!arguments.length)return t=t||{width:this.element[0].offsetWidth,height:this.element[0].offsetHeight};t=arguments[0]},this._addToManager(e.scope),e.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;e<t.length;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){var n;"accept"===e?this.accept="function"==typeof i?i:function(t){return t.is(i)}:"scope"===e&&(n=t.ui.ddmanager.droppables[this.options.scope],this._splice(n),this._addToManager(i)),this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var n=i||t.ui.ddmanager.current,s=!1;return!(!n||(n.currentItem||n.element)[0]===this.element[0])&&(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");if(i.options.greedy&&!i.options.disabled&&i.options.scope===n.options.scope&&i.accept.call(i.element[0],n.currentItem||n.element)&&t.ui.intersect(n,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e))return!(s=!0)}),!s&&!!this.accept.call(this.element[0],n.currentItem||n.element)&&(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(n)),this.element))},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}}),t.ui.intersect=function(t,e,i,n){if(!e.offset)return!1;var s=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=s+t.helperProportions.width,a=o+t.helperProportions.height,l=e.offset.left,u=e.offset.top,c=l+e.proportions().width,h=u+e.proportions().height;switch(i){case"fit":return l<=s&&r<=c&&u<=o&&a<=h;case"intersect":return l<s+t.helperProportions.width/2&&r-t.helperProportions.width/2<c&&u<o+t.helperProportions.height/2&&a-t.helperProportions.height/2<h;case"pointer":return x(n.pageY,u,e.proportions().height)&&x(n.pageX,l,e.proportions().width);case"touch":return(u<=o&&o<=h||u<=a&&a<=h||o<u&&h<a)&&(l<=s&&s<=c||l<=r&&r<=c||s<l&&c<r);default:return!1}},!(t.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(e,i){var n,s,o=t.ui.ddmanager.droppables[e.options.scope]||[],r=i?i.type:null,a=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(n=0;n<o.length;n++)if(!(o[n].options.disabled||e&&!o[n].accept.call(o[n].element[0],e.currentItem||e.element))){for(s=0;s<a.length;s++)if(a[s]===o[n].element[0]){o[n].proportions().height=0;continue t}o[n].visible="none"!==o[n].element.css("display"),o[n].visible&&("mousedown"===r&&o[n]._activate.call(o[n],i),o[n].offset=o[n].element.offset(),o[n].proportions({width:o[n].element[0].offsetWidth,height:o[n].element[0].offsetHeight}))}},drop:function(e,i){var n=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&t.ui.intersect(e,this,this.options.tolerance,i)&&(n=this._drop.call(this,i)||n),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),n},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){var n,s,o,r;this.options.disabled||this.greedyChild||!this.visible||(r=!(o=t.ui.intersect(e,this,this.options.tolerance,i))&&this.isover?"isout":o&&!this.isover?"isover":null)&&(this.options.greedy&&(s=this.options.scope,(o=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===s})).length&&((n=t(o[0]).droppable("instance")).greedyChild="isover"===r)),n&&"isover"===r&&(n.isover=!1,n.isout=!0,n._out.call(n,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),n&&"isout"===r&&(n.isout=!1,n.isover=!0,n._over.call(n,i)))})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}})!==t.uiBackCompat&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.resizable",t.ui.mouse,{version:"1.13.0",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var n=i&&"left"===i?"scrollLeft":"scrollTop";i=!1;if(0<e[n])return!0;try{e[n]=1,i=0<e[n],e[n]=0}catch(e){}return i},_create:function(){var e,i=this.options,n=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper'></div>").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(n._removeClass("ui-resizable-autohide"),n._handles.show())}).on("mouseleave",function(){i.disabled||n.resizing||(n._addClass("ui-resizable-autohide"),n._handles.hide())}),this._mouseInit()},_destroy:function(){function e(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable")}var i;return this._mouseDestroy(),this._addedHandles.remove(),this.elementIsWrapper&&(e(this.element),i=this.element,this.originalElement.css({position:i.css("position"),width:i.outerWidth(),height:i.outerHeight(),top:i.css("top"),left:i.css("left")}).insertAfter(i),i.remove()),this.originalElement.css("resize",this.originalResizeStyle),e(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var e,i,n,s,o,r=this.options,a=this;if(this.handles=r.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this._addedHandles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),n=this.handles.split(","),this.handles={},i=0;i<n.length;i++)s="ui-resizable-"+(e=String.prototype.trim.call(n[i])),o=t("<div>"),this._addClass(o,"ui-resizable-handle "+s),o.css({zIndex:r.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.children(this.handles[e]).length||(this.element.append(o),this._addedHandles=this._addedHandles.add(o));this._renderAxis=function(e){var i,n,s;for(i in e=e||this.element,this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:a._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(n=t(this.handles[i],this.element),s=/sw|ne|nw|se|n|s/.test(i)?n.outerHeight():n.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){a.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),a.axis=o&&o[1]?o[1]:"se")}),r.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(e){var i,n,s=!1;for(i in this.handles)(n=t(this.handles[i])[0])!==e.target&&!t.contains(n,e.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(e){var i,n,s=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),n=this._num(this.helper.css("top")),s.containment&&(i+=t(s.containment).scrollLeft()||0,n+=t(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:n},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:n},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i=this.originalMousePosition,n=this.axis,s=e.pageX-i.left||0;i=e.pageY-i.top||0,n=this._change[n];return this._updatePrevProperties(),n&&(i=n.apply(this,[e,s,i]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),i=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(i)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges())),!1},_mouseStop:function(e){this.resizing=!1;var i,n,s,o=this.options,r=this;return this._helper&&(s=(i=(n=this._proportionallyResizeElements).length&&/textarea/i.test(n[0].nodeName))&&this._hasScroll(n[0],"left")?0:r.sizeDiff.height,n=i?0:r.sizeDiff.width,i={width:r.helper.width()-n,height:r.helper.height()-s},n=parseFloat(r.element.css("left"))+(r.position.left-r.originalPosition.left)||null,s=parseFloat(r.element.css("top"))+(r.position.top-r.originalPosition.top)||null,o.animate||this.element.css(t.extend(i,{top:s,left:n})),r.helper.height(r.size.height),r.helper.width(r.size.width),this._helper&&!o.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,n=this.options,s={minWidth:this._isNumber(n.minWidth)?n.minWidth:0,maxWidth:this._isNumber(n.maxWidth)?n.maxWidth:1/0,minHeight:this._isNumber(n.minHeight)?n.minHeight:0,maxHeight:this._isNumber(n.maxHeight)?n.maxHeight:1/0};(this._aspectRatio||t)&&(e=s.minHeight*this.aspectRatio,i=s.minWidth/this.aspectRatio,n=s.maxHeight*this.aspectRatio,t=s.maxWidth/this.aspectRatio,e>s.minWidth&&(s.minWidth=e),i>s.minHeight&&(s.minHeight=i),n<s.maxWidth&&(s.maxWidth=n),t<s.maxHeight&&(s.maxHeight=t)),this._vBoundaries=s},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,n=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===n&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===n&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,n=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,s=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,r=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,l=this.originalPosition.top+this.originalSize.height,u=/sw|nw|w/.test(i);i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),r&&(t.height=e.minHeight),n&&(t.width=e.maxWidth),s&&(t.height=e.maxHeight),o&&u&&(t.left=a-e.minWidth),n&&u&&(t.left=a-e.maxWidth),r&&i&&(t.top=l-e.minHeight),s&&i&&(t.top=l-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],n=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],s=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(n[e])||0,i[e]+=parseFloat(s[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e<this._proportionallyResizeElements.length;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div></div>").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var n=this.originalSize;return{top:this.originalPosition.top+i,height:n.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,n){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,n]))},sw:function(e,i,n){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,n]))},ne:function(e,i,n){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,n]))},nw:function(e,i,n){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,n]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),n=i.options,s=i._proportionallyResizeElements,o=(a=s.length&&/textarea/i.test(s[0].nodeName))&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,a={width:i.size.width-r,height:i.size.height-o};r=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(a,o&&r?{top:o,left:r}:{}),{duration:n.animateDuration,easing:n.animateEasing,step:function(){var n={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&t(s[0]).css({width:n.width,height:n.height}),i._updateCache(n),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,n=t(this).resizable("instance"),s=n.options,o=n.element,r=s.containment,a=r instanceof t?r.get(0):/parent/.test(r)?o.parent().get(0):r;a&&(n.containerElement=t(a),/document/.test(r)||r===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(a),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=n._num(e.css("padding"+s))}),n.containerOffset=e.offset(),n.containerPosition=e.position(),n.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=n.containerOffset,o=n.containerSize.height,r=n.containerSize.width,r=n._hasScroll(a,"left")?a.scrollWidth:r,o=n._hasScroll(a)?a.scrollHeight:o,n.parentData={element:a,left:s.left,top:s.top,width:r,height:o}))},resize:function(e){var i=t(this).resizable("instance"),n=i.options,s=i.containerOffset,o=i.position,r=i._aspectRatio||e.shiftKey,a={top:0,left:0},l=i.containerElement;e=!0;l[0]!==document&&/static/.test(l.css("position"))&&(a=s),o.left<(i._helper?s.left:0)&&(i.size.width=i.size.width+(i._helper?i.position.left-s.left:i.position.left-a.left),r&&(i.size.height=i.size.width/i.aspectRatio,e=!1),i.position.left=n.helper?s.left:0),o.top<(i._helper?s.top:0)&&(i.size.height=i.size.height+(i._helper?i.position.top-s.top:i.position.top),r&&(i.size.width=i.size.height*i.aspectRatio,e=!1),i.position.top=i._helper?s.top:0),n=i.containerElement.get(0)===i.element.parent().get(0),o=/relative|absolute/.test(i.containerElement.css("position")),n&&o?(i.offset.left=i.parentData.left+i.position.left,i.offset.top=i.parentData.top+i.position.top):(i.offset.left=i.element.offset().left,i.offset.top=i.element.offset().top),o=Math.abs(i.sizeDiff.width+(i._helper?i.offset.left-a.left:i.offset.left-s.left)),s=Math.abs(i.sizeDiff.height+(i._helper?i.offset.top-a.top:i.offset.top-s.top)),o+i.size.width>=i.parentData.width&&(i.size.width=i.parentData.width-o,r&&(i.size.height=i.size.width/i.aspectRatio,e=!1)),s+i.size.height>=i.parentData.height&&(i.size.height=i.parentData.height-s,r&&(i.size.width=i.size.height*i.aspectRatio,e=!1)),e||(i.position.left=i.prevPosition.left,i.position.top=i.prevPosition.top,i.size.width=i.prevSize.width,i.size.height=i.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,n=e.containerOffset,s=e.containerPosition,o=e.containerElement,r=(l=t(e.helper)).offset(),a=l.outerWidth()-e.sizeDiff.width,l=l.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-s.left-n.left,width:a,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-s.left-n.left,width:a,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance").options;t(e.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var n=t(this).resizable("instance"),s=n.options,o=n.originalSize,r=n.originalPosition,a={height:n.size.height-o.height||0,width:n.size.width-o.width||0,top:n.position.top-r.top||0,left:n.position.left-r.left||0};t(s.alsoResize).each(function(){var e=t(this),n=t(this).data("ui-resizable-alsoresize"),s={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(n[e]||0)+(a[e]||0);i&&0<=i&&(s[e]=i||null)}),e.css(s)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),!1!==t.uiBackCompat&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),n=i.options,s=i.size,o=i.originalSize,r=i.originalPosition,a=i.axis,l="number"==typeof n.grid?[n.grid,n.grid]:n.grid,u=l[0]||1,c=l[1]||1,h=Math.round((s.width-o.width)/u)*u,d=Math.round((s.height-o.height)/c)*c,p=o.width+h,f=o.height+d,g=n.maxWidth&&n.maxWidth<p,m=n.maxHeight&&n.maxHeight<f,v=n.minWidth&&n.minWidth>p;s=n.minHeight&&n.minHeight>f;n.grid=l,v&&(p+=u),s&&(f+=c),g&&(p-=u),m&&(f-=c),/^(se|s|e)$/.test(a)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(a)?(i.size.width=p,i.size.height=f,i.position.top=r.top-d):/^(sw)$/.test(a)?(i.size.width=p,i.size.height=f,i.position.left=r.left-h):((f-c<=0||p-u<=0)&&(e=i._getPaddingPlusBorderDimensions(this)),0<f-c?(i.size.height=f,i.position.top=r.top-d):(f=c-e.height,i.size.height=f,i.position.top=r.top+o.height-f),0<p-u?(i.size.width=p,i.position.left=r.left-h):(p=u-e.width,i.size.width=p,i.position.left=r.left+o.width-p))}}),t.ui.resizable,t.widget("ui.selectable",t.ui.mouse,{version:"1.13.0",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),n={left:(n=i.offset()).left-e.elementPos.left,top:n.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,n=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(n.filter,this.element[0]),this._trigger("start",e),t(n.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),n.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var n=t.data(this,"selectable-item");n.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(n.$element,"ui-selected"),n.selected=!1,i._addClass(n.$element,"ui-unselecting"),n.unselecting=!0,i._trigger("unselecting",e,{unselecting:n.element}))}),t(e.target).parents().addBack().each(function(){var n,s=t.data(this,"selectable-item");if(s)return n=!e.metaKey&&!e.ctrlKey||!s.$element.hasClass("ui-selected"),i._removeClass(s.$element,n?"ui-unselecting":"ui-selected")._addClass(s.$element,n?"ui-selecting":"ui-unselecting"),s.unselecting=!n,s.selecting=n,(s.selected=n)?i._trigger("selecting",e,{selecting:s.element}):i._trigger("unselecting",e,{unselecting:s.element}),!1}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,n=this,s=this.options,o=this.opos[0],r=this.opos[1],a=e.pageX,l=e.pageY;return a<o&&(i=a,a=o,o=i),l<r&&(i=l,l=r,r=i),this.helper.css({left:o,top:r,width:a-o,height:l-r}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),u=!1,c={};i&&i.element!==n.element[0]&&(c.left=i.left+n.elementPos.left,c.right=i.right+n.elementPos.left,c.top=i.top+n.elementPos.top,c.bottom=i.bottom+n.elementPos.top,"touch"===s.tolerance?u=!(c.left>a||c.right<o||c.top>l||c.bottom<r):"fit"===s.tolerance&&(u=c.left>o&&c.right<a&&c.top>r&&c.bottom<l),u?(i.selected&&(n._removeClass(i.$element,"ui-selected"),i.selected=!1),i.unselecting&&(n._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1),i.selecting||(n._addClass(i.$element,"ui-selecting"),i.selecting=!0,n._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(n._removeClass(i.$element,"ui-selecting"),i.selecting=!1,n._addClass(i.$element,"ui-selected"),i.selected=!0):(n._removeClass(i.$element,"ui-selecting"),i.selecting=!1,i.startselected&&(n._addClass(i.$element,"ui-unselecting"),i.unselecting=!0),n._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(n._removeClass(i.$element,"ui-selected"),i.selected=!1,n._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,n._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var n=t.data(this,"selectable-item");i._removeClass(n.$element,"ui-unselecting"),n.unselecting=!1,n.startselected=!1,i._trigger("unselected",e,{unselected:n.element})}),t(".ui-selecting",this.element[0]).each(function(){var n=t.data(this,"selectable-item");i._removeClass(n.$element,"ui-selecting")._addClass(n.$element,"ui-selected"),n.selecting=!1,n.selected=!0,n.startselected=!0,i._trigger("selected",e,{selected:n.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),t.widget("ui.sortable",t.ui.mouse,{version:"1.13.0",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return e<=t&&t<e+i},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var e=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),t.each(this.items,function(){e._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;0<=t;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var n=null,s=!1,o=this;return!(this.reverting||this.options.disabled||"static"===this.options.type||(this._refreshItems(e),t(e.target).parents().each(function(){if(t.data(this,o.widgetName+"-item")===o)return n=t(this),!1}),!(n=t.data(e.target,o.widgetName+"-item")===o?t(e.target):n)||this.options.handle&&!i&&(t(this.options.handle,n).find("*").addBack().each(function(){this===e.target&&(s=!0)}),!s)||(this.currentItem=n,this._removeCurrentsFromItems(),0)))},_mouseStart:function(e,i,n){var s,o,r=this.options;if((this.currentContainer=this).refreshPositions(),this.appendTo=t("parent"!==r.appendTo?r.appendTo:this.currentItem.parent()),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),r.cursorAt&&this._adjustOffsetFromHelper(r.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),this.scrollParent=this.placeholder.scrollParent(),t.extend(this.offset,{parent:this._getParentOffset()}),r.containment&&this._setContainment(),r.cursor&&"auto"!==r.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",r.cursor),this.storedStylesheet=t("<style>*{ cursor: "+r.cursor+" !important; }</style>").appendTo(o)),r.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",r.zIndex)),r.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",r.opacity)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!n)for(s=this.containers.length-1;0<=s;s--)this.containers[s]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!r.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this.helper.parent().is(this.appendTo)||(this.helper.detach().appendTo(this.appendTo),this.offset.parent=this._getParentOffset()),this.position=this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,this.lastPositionAbs=this.positionAbs=this._convertPositionTo("absolute"),this._mouseDrag(e),!0},_scroll:function(t){var e=this.options,i=!1;return this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<e.scrollSensitivity?this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop+e.scrollSpeed:t.pageY-this.overflowOffset.top<e.scrollSensitivity&&(this.scrollParent[0].scrollTop=i=this.scrollParent[0].scrollTop-e.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<e.scrollSensitivity?this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft+e.scrollSpeed:t.pageX-this.overflowOffset.left<e.scrollSensitivity&&(this.scrollParent[0].scrollLeft=i=this.scrollParent[0].scrollLeft-e.scrollSpeed)):(t.pageY-this.document.scrollTop()<e.scrollSensitivity?i=this.document.scrollTop(this.document.scrollTop()-e.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<e.scrollSensitivity&&(i=this.document.scrollTop(this.document.scrollTop()+e.scrollSpeed)),t.pageX-this.document.scrollLeft()<e.scrollSensitivity?i=this.document.scrollLeft(this.document.scrollLeft()-e.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<e.scrollSensitivity&&(i=this.document.scrollLeft(this.document.scrollLeft()+e.scrollSpeed))),i},_mouseDrag:function(e){var i,n,s,o,r=this.options;if(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),this._contactContainers(e),null!==this.innermostContainer)for(r.scroll&&!1!==this._scroll(e)&&(this._refreshItemPositions(!0),t.ui.ddmanager&&!r.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.dragDirection={vertical:this._getDragVerticalDirection(),horizontal:this._getDragHorizontalDirection()},i=this.items.length-1;0<=i;i--)if(s=(n=this.items[i]).item[0],(o=this._intersectsWithPointer(n))&&n.instance===this.currentContainer&&!(s===this.currentItem[0]||this.placeholder[1===o?"next":"prev"]()[0]===s||t.contains(this.placeholder[0],s)||"semi-dynamic"===this.options.type&&t.contains(this.element[0],s))){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(n))break;this._rearrange(e,n),this._trigger("change",e,this._uiHash());break}return t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){var n,s,o,r;if(e)return t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert?(s=(n=this).placeholder.offset(),r={},(o=this.options.axis)&&"x"!==o||(r.left=s.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(r.top=s.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(r,parseInt(this.options.revert,10)||500,function(){n._clear(e)})):this._clear(e,i),!1},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;0<=e;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),n=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&n.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!n.length&&e.key&&n.push(e.key+"="),n.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),n=[];return e=e||{},i.each(function(){n.push(t(e.item||this).attr(e.attribute||"id")||"")}),n},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,n=this.positionAbs.top,s=n+this.helperProportions.height,o=t.left,r=o+t.width,a=t.top,l=a+t.height,u=this.offset.click.top,c=this.offset.click.left;u="x"===this.options.axis||a<n+u&&n+u<l,c="y"===this.options.axis||o<e+c&&e+c<r;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?u&&c:o<e+this.helperProportions.width/2&&i-this.helperProportions.width/2<r&&a<n+this.helperProportions.height/2&&s-this.helperProportions.height/2<l},_intersectsWithPointer:function(t){var e="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height);t="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width);return!(!e||!t)&&(e=this.dragDirection.vertical,t=this.dragDirection.horizontal,this.floating?"right"===t||"down"===e?2:1:e&&("down"===e?2:1))},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),n=this.dragDirection.vertical;t=this.dragDirection.horizontal;return this.floating&&t?"right"===t&&i||"left"===t&&!i:n&&("down"===n&&e||"up"===n&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!=t&&(0<t?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!=t&&(0<t?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){var i,n,s,o,r=[],a=[],l=this._connectWith();if(l&&e)for(i=l.length-1;0<=i;i--)for(n=(s=t(l[i],this.document[0])).length-1;0<=n;n--)(o=t.data(s[n],this.widgetFullName))&&o!==this&&!o.options.disabled&&a.push(["function"==typeof o.options.items?o.options.items.call(o.element):t(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);function u(){r.push(this)}for(a.push(["function"==typeof this.options.items?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),i=a.length-1;0<=i;i--)a[i][0].each(u);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;i<e.length;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,n,s,o,r,a,l,u,c=this.items,h=[["function"==typeof this.options.items?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;0<=i;i--)for(n=(s=t(d[i],this.document[0])).length-1;0<=n;n--)(o=t.data(s[n],this.widgetFullName))&&o!==this&&!o.options.disabled&&(h.push(["function"==typeof o.options.items?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=h.length-1;0<=i;i--)for(r=h[i][1],u=(a=h[i][n=0]).length;n<u;n++)(l=t(a[n])).data(this.widgetName+"-item",r),c.push({item:l,instance:r,width:0,height:0,left:0,top:0})},_refreshItemPositions:function(e){for(var i,n,s=this.items.length-1;0<=s;s--)i=this.items[s],this.currentContainer&&i.instance!==this.currentContainer&&i.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,i.item):i.item,e||(i.width=n.outerWidth(),i.height=n.outerHeight()),n=n.offset(),i.left=n.left,i.top=n.top)},refreshPositions:function(t){var e,i;if(this.floating=!!this.items.length&&("x"===this.options.axis||this._isFloating(this.items[0].item)),null!==this.innermostContainer&&this._refreshItemPositions(t),this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(e=this.containers.length-1;0<=e;e--)i=this.containers[e].element.offset(),this.containers[e].containerCache.left=i.left,this.containers[e].containerCache.top=i.top,this.containers[e].containerCache.width=this.containers[e].element.outerWidth(),this.containers[e].containerCache.height=this.containers[e].element.outerHeight();return this},_createPlaceholder:function(e){var i,n,s=(e=e||this).options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,n=e.currentItem[0].nodeName.toLowerCase(),s.placeholder={element:function(){var s=t("<"+n+">",e.document[0]);return e._addClass(s,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(s,"ui-sortable-helper"),"tbody"===n?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("<tr>",e.document[0]).appendTo(s)):"tr"===n?e._createTrPlaceholder(e.currentItem,s):"img"===n&&s.attr("src",e.currentItem.attr("src")),i||s.css("visibility","hidden"),s},update:function(t,o){i&&!s.forcePlaceholderSize||(o.height()&&(!s.forcePlaceholderSize||"tbody"!==n&&"tr"!==n)||o.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),o.width()||o.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var n=this;e.children().each(function(){t("<td> </td>",n.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){for(var i,n,s,o,r,a,l,u,c,h=null,d=null,p=this.containers.length-1;0<=p;p--)t.contains(this.currentItem[0],this.containers[p].element[0])||(this._intersectsWith(this.containers[p].containerCache)?h&&t.contains(this.containers[p].element[0],h.element[0])||(h=this.containers[p],d=p):this.containers[p].containerCache.over&&(this.containers[p]._trigger("out",e,this._uiHash(this)),this.containers[p].containerCache.over=0));if(this.innermostContainer=h)if(1===this.containers.length)this.containers[d].containerCache.over||(this.containers[d]._trigger("over",e,this._uiHash(this)),this.containers[d].containerCache.over=1);else{for(n=1e4,s=null,o=(u=h.floating||this._isFloating(this.currentItem))?"left":"top",r=u?"width":"height",c=u?"pageX":"pageY",i=this.items.length-1;0<=i;i--)t.contains(this.containers[d].element[0],this.items[i].item[0])&&this.items[i].item[0]!==this.currentItem[0]&&(a=this.items[i].item.offset()[o],l=!1,e[c]-a>this.items[i][r]/2&&(l=!0),Math.abs(e[c]-a)<n&&(n=Math.abs(e[c]-a),s=this.items[i],this.direction=l?"up":"down"));(s||this.options.dropOnEmpty)&&(this.currentContainer!==this.containers[d]?(s?this._rearrange(e,s,null,!0):this._rearrange(e,null,this.containers[d].element,!0),this._trigger("change",e,this._uiHash()),this.containers[d]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[d],this.options.placeholder.update(this.currentContainer,this.placeholder),this.scrollParent=this.placeholder.scrollParent(),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this.containers[d]._trigger("over",e,this._uiHash(this)),this.containers[d].containerCache.over=1):this.currentContainer.containerCache.over||(this.containers[d]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1))}},_createHelper:function(e){var i=this.options;return(e="function"==typeof i.helper?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem).parents("body").length||this.appendTo[0].appendChild(e[0]),e[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),e[0].style.width&&!i.forceHelperSize||e.width(this.currentItem.width()),e[0].style.height&&!i.forceHelperSize||e.height(this.currentItem.height()),e},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),"left"in(t=Array.isArray(t)?{left:+t[0],top:+t[1]||0}:t)&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),{top:(e=this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie?{top:0,left:0}:e).top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),"document"!==n.containment&&"window"!==n.containment||(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),n="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(n?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(n?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i=i||this.position;var n="absolute"===e?1:-1,s="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent;e=/(html|body)/i.test(s[0].tagName);return{top:i.top+this.offset.relative.top*n+this.offset.parent.top*n-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():e?0:s.scrollTop())*n,left:i.left+this.offset.relative.left*n+this.offset.parent.left*n-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():e?0:s.scrollLeft())*n}},_generatePosition:function(e){var i=this.options,n=e.pageX,s=e.pageY,o="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,r=/(html|body)/i.test(o[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(n=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(s=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(n=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(s=this.containment[3]+this.offset.click.top)),i.grid&&(e=this.originalPageY+Math.round((s-this.originalPageY)/i.grid[1])*i.grid[1],s=!this.containment||e-this.offset.click.top>=this.containment[1]&&e-this.offset.click.top<=this.containment[3]?e:e-this.offset.click.top>=this.containment[1]?e-i.grid[1]:e+i.grid[1],e=this.originalPageX+Math.round((n-this.originalPageX)/i.grid[0])*i.grid[0],n=!this.containment||e-this.offset.click.left>=this.containment[0]&&e-this.offset.click.left<=this.containment[2]?e:e-this.offset.click.left>=this.containment[0]?e-i.grid[0]:e+i.grid[0])),{top:s-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():r?0:o.scrollTop()),left:n-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():r?0:o.scrollLeft())}},_rearrange:function(t,e,i,n){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var s=this.counter;this._delay(function(){s===this.counter&&this.refreshPositions(!n)})},_clear:function(t,e){this.reverting=!1;var i,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(i in this._storedCSS)"auto"!==this._storedCSS[i]&&"static"!==this._storedCSS[i]||(this._storedCSS[i]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();function s(t,e,i){return function(n){i._trigger(t,n,e._uiHash(e))}}for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),i=this.containers.length-1;0<=i;i--)e||n.push(s("deactivate",this,this.containers[i])),this.containers[i].containerCache.over&&(n.push(s("out",this,this.containers[i])),this.containers[i].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(i=0;i<n.length;i++)n[i].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){!1===t.Widget.prototype._trigger.apply(this,arguments)&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}}),t.widget("ui.accordion",{version:"1.13.0",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:function(t){return t.find("> li > :first-child").add(t.find("> :not(li)").even())},heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||!1!==e.active&&null!=e.active||(e.active=0),this._processPanels(),e.active<0&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i=this.options.icons;i&&(e=t("<span>"),this._addClass(e,"ui-accordion-header-icon","ui-icon "+i.header),e.prependTo(this.headers),e=this.active.children(".ui-accordion-header-icon"),this._removeClass(e,i.header)._addClass(e,null,i.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){"active"!==t?("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||!1!==this.options.active||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons())):this._activate(e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,n=this.headers.length,s=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(s+1)%n];break;case i.LEFT:case i.UP:o=this.headers[(s-1+n)%n];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[n-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),!1===e.active&&!0===e.collapsible||!this.headers.length?(e.active=!1,this.active=t()):!1===e.active?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;"function"==typeof this.options.header?this.headers=this.options.header(this.element):this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,n=i.heightStyle,s=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),n=e.next(),s=n.uniqueId().attr("id");e.attr("aria-controls",s),n.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===n?(e=s.height(),this.element.siblings(":visible").each(function(){var i=t(this),n=i.css("position");"absolute"!==n&&"fixed"!==n&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===n&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){(e=this._findActive(e)[0])!==this.active[0]&&(e=e||this.active[0],this._eventHandler({target:e,currentTarget:e,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i=this.options,n=this.active,s=t(e.currentTarget),o=s[0]===n[0],r=o&&i.collapsible,a=r?t():s.next(),l=n.next();a={oldHeader:n,oldPanel:l,newHeader:r?t():s,newPanel:a};e.preventDefault(),o&&!i.collapsible||!1===this._trigger("beforeActivate",e,a)||(i.active=!r&&this.headers.index(s),this.active=o?t():s,this._toggle(a),this._removeClass(n,"ui-accordion-header-active","ui-state-active"),i.icons&&(n=n.children(".ui-accordion-header-icon"),this._removeClass(n,null,i.icons.activeHeader)._addClass(n,null,i.icons.header)),o||(this._removeClass(s,"ui-accordion-header-collapsed")._addClass(s,"ui-accordion-header-active","ui-state-active"),i.icons&&(o=s.children(".ui-accordion-header-icon"),this._removeClass(o,null,i.icons.header)._addClass(o,null,i.icons.activeHeader)),this._addClass(s.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,n=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=n,this.options.animate?this._animate(i,n,e):(n.hide(),i.show(),this._toggleComplete(e)),n.attr({"aria-hidden":"true"}),n.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&n.length?n.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var n,s,o,r=this,a=0,l=t.css("box-sizing"),u=t.length&&(!e.length||t.index()<e.index()),c=this.options.animate||{},h=u&&c.down||c;u=function(){r._toggleComplete(i)};return s=(s="string"==typeof h?h:s)||h.easing||c.easing,o=(o="number"==typeof h?h:o)||h.duration||c.duration,e.length?t.length?(n=t.show().outerHeight(),e.animate(this.hideProps,{duration:o,easing:s,step:function(t,e){e.now=Math.round(t)}}),void t.hide().animate(this.showProps,{duration:o,easing:s,complete:u,step:function(t,i){i.now=Math.round(t),"height"!==i.prop?"content-box"===l&&(a+=i.now):"content"!==r.options.heightStyle&&(i.now=Math.round(n-e.outerHeight()-a),a=0)}})):e.animate(this.hideProps,o,s,u):t.animate(this.showProps,o,s,u)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),t.widget("ui.menu",{version:"1.13.0",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(e){var i=t(e.target),n=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&n.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(e){this._delay(function(){t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]))||this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(e){var i,n;this.previousFilter||e.clientX===this.lastMousePosition.x&&e.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:e.clientX,y:e.clientY},i=t(e.target).closest(".ui-menu-item"),n=t(e.currentTarget),i[0]===n[0]&&(n.is(".ui-state-active")||(this._removeClass(n.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,n))))},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),e.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,n,s,o=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:i=this.previousFilter||"",s=o=!1,n=96<=e.keyCode&&e.keyCode<=105?(e.keyCode-96).toString():String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===i?s=!0:n=i+n,i=this._filterMenuItems(n),(i=s&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i).length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}o&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,n=this,s=this.options.icons.submenu,o=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),i=o.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),o=t("<span>").data("ui-menu-submenu-caret",!0);n._addClass(o,"ui-menu-icon","ui-icon "+s),i.attr("aria-haspopup","true").prepend(o),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(i,"ui-menu","ui-widget ui-widget-content ui-front"),(e=o.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var e=t(this);n._isDivider(e)&&n._addClass(e,"ui-menu-divider","ui-widget-content")}),o=(i=e.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(i,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),e.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,n,s;this._hasScroll()&&(n=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,i=e.offset().top-this.activeMenu.offset().top-n-s,n=this.activeMenu.scrollTop(),s=this.activeMenu.height(),e=e.outerHeight(),i<0?this.activeMenu.scrollTop(n+i):s<i+e&&this.activeMenu.scrollTop(n+i-s+e))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var n=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));n.length||(n=this.element),this._close(n),this.blur(e),this._removeClass(n.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=n},i?0:this.delay)},_close:function(t){(t=t||(this.active?this.active.parent():this.element)).find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this._menuItems(this.active.children(".ui-menu")).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_menuItems:function(t){return(t||this.element).find(this.options.items).filter(".ui-menu-item")},_move:function(t,e,i){var n;(n=this.active?"first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").last():this.active[t+"All"](".ui-menu-item").first():n)&&n.length&&this.active||(n=this._menuItems(this.activeMenu)[e]()),this.focus(i,n)},nextPage:function(e){var i,n,s;this.active?this.isLastItem()||(this._hasScroll()?(n=this.active.offset().top,s=this.element.innerHeight(),0===t.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.nextAll(".ui-menu-item").each(function(){return(i=t(this)).offset().top-n-s<0}),this.focus(e,i)):this.focus(e,this._menuItems(this.activeMenu)[this.active?"last":"first"]())):this.next(e)},previousPage:function(e){var i,n,s;this.active?this.isFirstItem()||(this._hasScroll()?(n=this.active.offset().top,s=this.element.innerHeight(),0===t.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.prevAll(".ui-menu-item").each(function(){return 0<(i=t(this)).offset().top-n+s}),this.focus(e,i)):this.focus(e,this._menuItems(this.activeMenu).first())):this.next(e)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)},_filterMenuItems:function(e){e=e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&");var i=new RegExp("^"+e,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return i.test(String.prototype.trim.call(t(this).children(".ui-menu-item-wrapper").text()))})}}),t.widget("ui.autocomplete",{version:"1.13.0",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,n,s="textarea"===(o=this.element[0].nodeName.toLowerCase()),o="input"===o;this.isMultiLine=s||!o&&this._isContentEditable(this.element),this.valueMethod=this.element[s||o?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(s){if(this.element.prop("readOnly"))i=n=e=!0;else{i=n=e=!1;var o=t.ui.keyCode;switch(s.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",s);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",s);break;case o.UP:e=!0,this._keyEvent("previous",s);break;case o.DOWN:e=!0,this._keyEvent("next",s);break;case o.ENTER:this.menu.active&&(e=!0,s.preventDefault(),this.menu.select(s));break;case o.TAB:this.menu.active&&this.menu.select(s);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(s),s.preventDefault());break;default:i=!0,this._searchTimeout(s)}}},keypress:function(n){if(e)return e=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||n.preventDefault());if(!i){var s=t.ui.keyCode;switch(n.keyCode){case s.PAGE_UP:this._move("previousPage",n);break;case s.PAGE_DOWN:this._move("nextPage",n);break;case s.UP:this._keyEvent("previous",n);break;case s.DOWN:this._keyEvent("next",n)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=t("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(e,i){var n;if(this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)});n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),(n=i.item.attr("aria-label")||n.value)&&String.prototype.trim.call(n).length&&(this.liveRegion.children().hide(),t("<div>").text(n).appendTo(this.liveRegion))},menuselect:function(e,i){var n=i.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=n})),!1!==this._trigger("select",e,{item:n})&&this._value(n.value),this.term=this._value(),this.close(e),this.selectedItem=n}}),this.liveRegion=t("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return(e=(e=e&&(e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)))&&e[0]?e:this.element.closest(".ui-front, dialog")).length?e:this.document[0].body},_initSource:function(){var e,i,n=this;Array.isArray(this.options.source)?(e=this.options.source,this.source=function(i,n){n(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,s){n.xhr&&n.xhr.abort(),n.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){s(t)},error:function(){s([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),n=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;e&&(i||n)||(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):!1!==this._trigger("search",e)?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var t=++this.requestIndex;return function(e){t===this.requestIndex&&this.__response(e),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")}.bind(this)},__response:function(t){t=t&&this._normalize(t),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:t.map(e,function(e){return"string"==typeof e?{label:e,value:e}:t.extend({},e,{label:e.label||e.value,value:e.value||e.label})})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(e,i){var n=this;t.each(i,function(t,i){n._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(e,i){return t("<li>").append(t("<div>").text(i.label)).appendTo(e)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var n=new RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return n.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1<t?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("<div>").text(e).appendTo(this.liveRegion))}}),t.ui.autocomplete;var k,C,S,D=/ui-corner-([a-z]){2,6}/g;function T(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:"",selectMonthLabel:"Select month",selectYearLabel:"Select year"},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,onUpdateDatepicker:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=M(t("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function M(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,j)}function j(){t.datepicker._isDisabledDatepicker((C.inline?C.dpDiv.parent():C.input)[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function A(e,i){for(var n in t.extend(e,i),i)null==i[n]&&(e[n]=i[n]);return e}function O(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.widget("ui.controlgroup",{version:"1.13.0",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(n,s){var o,r={};if(s)return"controlgroupLabel"===n?((o=e.element.find(s)).each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),void(i=i.concat(o.get()))):void(t.fn[n]&&(r=e["_"+n+"Options"]?e["_"+n+"Options"]("middle"):{classes:{}},e.element.find(s).each(function(){var s=t(this),o=s[n]("instance"),a=t.widget.extend({},r);"button"===n&&s.parent(".ui-spinner").length||((o=o||s[n]()[n]("instance"))&&(a.classes=e._resolveClassesValues(a.classes,o)),s[n](a),a=s[n]("widget"),t.data(a[0],"ui-controlgroup-data",o||s[n]("instance")),i.push(a[0]))})))}),this.childWidgets=t(t.uniqueSort(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this).data("ui-controlgroup-data");i&&i[e]&&i[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label,this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,n={classes:{}};return n.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],n},_spinnerOptions:function(t){return(t=this._buildSimpleOptions(t,"ui-spinner")).classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var n={};return t.each(e,function(t){var s=i.options.classes[t]||"";s=String.prototype.trim.call(s.replace(D,""));n[t]=(s+" "+e[t]).replace(/\s+/g," ")}),n},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,(e=this.options.onlyVisible?e.filter(":visible"):e).length&&(t.each(["first","last"],function(t,n){var s,o=e[n]().data("ui-controlgroup-data");o&&i["_"+o.widgetName+"Options"]?((s=i["_"+o.widgetName+"Options"](1===e.length?"only":n)).classes=i._resolveClassesValues(s.classes,o),o.element[o.widgetName](s)):i._updateCornerClass(e[n](),n)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.13.0",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i=this,n=this._super()||{};return this._readType(),e=this.element.labels(),this.label=t(e[e.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){i.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),null!=(e=this.element[0].disabled)&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e=this.element[0].name,i="input[name='"+t.escapeSelector(e)+"']";return e?(this.form.length?t(this.form[0].elements).filter(i):t(i).filter(function(){return 0===t(this)._form().length})).not(this.element):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){if("label"!==t||e){if(this._super(t,e),"disabled"===t)return this._toggleClass(this.label,null,"ui-state-disabled",e),void(this.element[0].disabled=e);this.refresh()}},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t("<span>"),this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.13.0",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),null!=(t=this.element[0].disabled)&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(e){e.keyCode===t.ui.keyCode.SPACE&&(e.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(e,i){var n="iconPosition"!==e,s=n?this.options.iconPosition:i;e="top"===s||"bottom"===s;this.icon?n&&this._removeClass(this.icon,null,this.options.icon):(this.icon=t("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),n&&this._addClass(this.icon,null,i),this._attachIcon(s),e?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(s))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=(void 0===t.showLabel?this.options:t).showLabel,i=(void 0===t.icon?this.options:t).icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),(this.element[0].disabled=e)&&this.element.trigger("blur"))},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),!1!==t.uiBackCompat&&(t.widget("ui.button",t.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){"text"!==t?("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments)):this._super("showLabel",e)}}),t.fn.button=(k=t.fn.button,function(e){var i="string"==typeof e,n=Array.prototype.slice.call(arguments,1),s=this;return i?this.length||"instance"!==e?this.each(function(){var i=t(this).attr("type"),o=t.data(this,"ui-"+("checkbox"!==i&&"radio"!==i?"button":"checkboxradio"));return"instance"===e?(s=o,!1):o?"function"!=typeof o[e]||"_"===e.charAt(0)?t.error("no such method '"+e+"' for button widget instance"):(i=o[e].apply(o,n))!==o&&void 0!==i?(s=i&&i.jquery?s.pushStack(i.get()):i,!1):void 0:t.error("cannot call methods on button prior to initialization; attempted to call method '"+e+"'")}):s=void 0:(n.length&&(e=t.widget.extend.apply(null,[e].concat(n))),this.each(function(){var i,n="checkbox"!==(i=t(this).attr("type"))&&"radio"!==i?"button":"checkboxradio";(i=t.data(this,"ui-"+n))?(i.option(e||{}),i._init&&i._init()):"button"!=n?t(this).checkboxradio(t.extend({icon:!1},e)):k.call(t(this),e)})),s}),t.fn.buttonset=function(){return t.ui.controlgroup||t.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),t.ui.button,t.extend(t.ui,{datepicker:{version:"1.13.0"}}),t.extend(T.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return A(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var n,s=e.nodeName.toLowerCase(),o="div"===s||"span"===s;e.id||(this.uuid+=1,e.id="dp"+this.uuid),(n=this._newInst(t(e),o)).settings=t.extend({},i||{}),"input"===s?this._connectDatepicker(e,n):o&&this._inlineDatepicker(e,n)},_newInst:function(e,i){return{id:e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1"),input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?M(t("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,i){var n=t(e);i.append=t([]),i.trigger=t([]),n.hasClass(this.markerClassName)||(this._attachments(n,i),n.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(i),t.data(e,"datepicker",i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var n,s=this._get(i,"appendText"),o=this._get(i,"isRTL");i.append&&i.append.remove(),s&&(i.append=t("<span>").addClass(this._appendClass).text(s),e[o?"before":"after"](i.append)),e.off("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),"focus"!==(n=this._get(i,"showOn"))&&"both"!==n||e.on("focus",this._showDatepicker),"button"!==n&&"both"!==n||(s=this._get(i,"buttonText"),n=this._get(i,"buttonImage"),this._get(i,"buttonImageOnly")?i.trigger=t("<img>").addClass(this._triggerClass).attr({src:n,alt:s,title:s}):(i.trigger=t("<button type='button'>").addClass(this._triggerClass),n?i.trigger.html(t("<img>").attr({src:n,alt:s,title:s})):i.trigger.text(s)),e[o?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():(t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]&&t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])),!1}))},_autoSize:function(t){var e,i,n,s,o,r;this._get(t,"autoSize")&&!t.inline&&(o=new Date(2009,11,20),(r=this._get(t,"dateFormat")).match(/[DM]/)&&(e=function(t){for(s=n=i=0;s<t.length;s++)t[s].length>i&&(i=t[s].length,n=s);return n},o.setMonth(e(this._get(t,r.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,r.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length))},_inlineDatepicker:function(e,i){var n=t(e);n.hasClass(this.markerClassName)||(n.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,n,s,o){var r,a=this._dialogInst;return a||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t("<input type='text' id='"+r+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),(a=this._dialogInst=this._newInst(this._dialogInput,!1)).settings={},t.data(this._dialogInput[0],"datepicker",a)),A(a.settings,s||{}),i=i&&i.constructor===Date?this._formatDate(a,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(r=document.documentElement.clientWidth,s=document.documentElement.clientHeight,i=document.documentElement.scrollLeft||document.body.scrollLeft,o=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[r/2-100+i,s/2-150+o]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),a.settings.onSelect=n,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",a),this},_destroyDatepicker:function(e){var i,n=t(e),s=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(s.append.remove(),s.trigger.remove(),n.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):"div"!==i&&"span"!==i||n.removeClass(this.markerClassName).empty(),C===s&&(C=null,this._curInst=null))},_enableDatepicker:function(e){var i,n=t(e),s=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&("input"===(i=e.nodeName.toLowerCase())?(e.disabled=!1,s.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):"div"!==i&&"span"!==i||((n=n.children("."+this._inlineClass)).children().removeClass("ui-state-disabled"),n.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,n=t(e),s=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&("input"===(i=e.nodeName.toLowerCase())?(e.disabled=!0,s.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):"div"!==i&&"span"!==i||((n=n.children("."+this._inlineClass)).children().addClass("ui-state-disabled"),n.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;e<this._disabledInputs.length;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(e){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,n){var s,o,r=this._getInst(e);if(2===arguments.length&&"string"==typeof i)return"defaults"===i?t.extend({},t.datepicker._defaults):r?"all"===i?t.extend({},r.settings):this._get(r,i):null;s=i||{},"string"==typeof i&&((s={})[i]=n),r&&(this._curInst===r&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),i=this._getMinMaxDate(r,"min"),n=this._getMinMaxDate(r,"max"),A(r.settings,s),null!==i&&void 0!==s.dateFormat&&void 0===s.minDate&&(r.settings.minDate=this._formatDate(r,i)),null!==n&&void 0!==s.dateFormat&&void 0===s.maxDate&&(r.settings.maxDate=this._formatDate(r,n)),"disabled"in s&&(s.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),r),this._autoSize(r),this._setDate(r,o),this._updateAlternate(r),this._updateDatepicker(r))},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){(t=this._getInst(t))&&this._updateDatepicker(t)},_setDateDatepicker:function(t,e){(t=this._getInst(t))&&(this._setDate(t,e),this._updateDatepicker(t),this._updateAlternate(t))},_getDateDatepicker:function(t,e){return(t=this._getInst(t))&&!t.inline&&this._setDateFromField(t,e),t?this._getDate(t):null},_doKeyDown:function(e){var i,n,s=t.datepicker._getInst(e.target),o=!0,r=s.dpDiv.is(".ui-datepicker-rtl");if(s._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),o=!1;break;case 13:return(n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",s.dpDiv))[0]&&t.datepicker._selectDay(e.target,s.selectedMonth,s.selectedYear,n[0]),(i=t.datepicker._get(s,"onSelect"))?(n=t.datepicker._formatDate(s),i.apply(s.input?s.input[0]:null,[n,s])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(s,"stepBigMonths"):-t.datepicker._get(s,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(s,"stepBigMonths"):+t.datepicker._get(s,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),o=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),o=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),o=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(s,"stepBigMonths"):-t.datepicker._get(s,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),o=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),o=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(s,"stepBigMonths"):+t.datepicker._get(s,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),o=e.ctrlKey||e.metaKey;break;default:o=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):o=!1;o&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,n=t.datepicker._getInst(e.target);if(t.datepicker._get(n,"constrainInput"))return i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),n=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||n<" "||!i||-1<i.indexOf(n)},_doKeyUp:function(e){if((e=t.datepicker._getInst(e.target)).input.val()!==e.lastVal)try{t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),e.input?e.input.val():null,t.datepicker._getFormatConfig(e))&&(t.datepicker._setDateFromField(e),t.datepicker._updateAlternate(e),t.datepicker._updateDatepicker(e))}catch(e){}return!0},_showDatepicker:function(e){var i,n,s,o;"input"!==(e=e.target||e).nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),t.datepicker._isDisabledDatepicker(e)||t.datepicker._lastInput===e||(o=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==o&&(t.datepicker._curInst.dpDiv.stop(!0,!0),o&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),!1!==(n=(s=t.datepicker._get(o,"beforeShow"))?s.apply(e,[e,o]):{})&&(A(o.settings,n),o.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(o),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),i=!1,t(e).parents().each(function(){return!(i|="fixed"===t(this).css("position"))}),s={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,o.dpDiv.empty(),o.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(o),s=t.datepicker._checkOffset(o,s,i),o.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":i?"fixed":"absolute",display:"none",left:s.left+"px",top:s.top+"px"}),o.inline||(n=t.datepicker._get(o,"showAnim"),s=t.datepicker._get(o,"duration"),o.dpDiv.css("z-index",function(t){for(var e,i;t.length&&t[0]!==document;){if(("absolute"===(e=t.css("position"))||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[n]?o.dpDiv.show(n,t.datepicker._get(o,"showOptions"),s):o.dpDiv[n||"show"](n?s:null),t.datepicker._shouldFocusInput(o)&&o.input.trigger("focus"),t.datepicker._curInst=o)))},_updateDatepicker:function(e){this.maxRows=4,(C=e).dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,n=this._getNumberOfMonths(e),s=n[1],o=e.dpDiv.find("."+this._dayOverClass+" a"),r=t.datepicker._get(e,"onUpdateDatepicker");0<o.length&&j.apply(o.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),1<s&&e.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",17*s+"em"),e.dpDiv[(1!==n[0]||1!==n[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year").first().replaceWith(e.yearshtml),i=e.yearshtml=null},0)),r&&r.apply(e.input?e.input[0]:null,[e])},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,n){var s=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),r=e.input?e.input.outerWidth():0,a=e.input?e.input.outerHeight():0,l=document.documentElement.clientWidth+(n?0:t(document).scrollLeft()),u=document.documentElement.clientHeight+(n?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?s-r:0,i.left-=n&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=n&&i.top===e.input.offset().top+a?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+s>l&&s<l?Math.abs(i.left+s-l):0),i.top-=Math.min(i.top,i.top+o>u&&o<u?Math.abs(o+a):0),i},_findPos:function(e){for(var i=this._getInst(e),n=this._get(i,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.pseudos.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return[(i=t(e).offset()).left,i.top]},_hideDatepicker:function(e){var i,n,s=this._curInst;!s||e&&s!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(s,"showAnim"),n=this._get(s,"duration"),e=function(){t.datepicker._tidyDialog(s)},t.effects&&(t.effects.effect[i]||t.effects[i])?s.dpDiv.hide(i,t.datepicker._get(s,"showOptions"),n,e):s.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?n:null,e),i||e(),this._datepickerShowing=!1,(e=this._get(s,"onClose"))&&e.apply(s.input?s.input[0]:null,[s.input?s.input.val():"",s]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){var i;t.datepicker._curInst&&(i=t(e.target),e=t.datepicker._getInst(i[0]),(i[0].id===t.datepicker._mainDivId||0!==i.parents("#"+t.datepicker._mainDivId).length||i.hasClass(t.datepicker.markerClassName)||i.closest("."+t.datepicker._triggerClass).length||!t.datepicker._datepickerShowing||t.datepicker._inDialog&&t.blockUI)&&(!i.hasClass(t.datepicker.markerClassName)||t.datepicker._curInst===e)||t.datepicker._hideDatepicker())},_adjustDate:function(e,i,n){var s=t(e);e=this._getInst(s[0]);this._isDisabledDatepicker(s[0])||(this._adjustInstDate(e,i,n),this._updateDatepicker(e))},_gotoToday:function(e){var i=t(e),n=this._getInst(i[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(e=new Date,n.selectedDay=e.getDate(),n.drawMonth=n.selectedMonth=e.getMonth(),n.drawYear=n.selectedYear=e.getFullYear()),this._notifyChange(n),this._adjustDate(i)},_selectMonthYear:function(e,i,n){var s=t(e);(e=this._getInst(s[0]))["selected"+("M"===n?"Month":"Year")]=e["draw"+("M"===n?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(e),this._adjustDate(s)},_selectDay:function(e,i,n,s){var o=t(e);t(s).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||((o=this._getInst(o[0])).selectedDay=o.currentDay=parseInt(t("a",s).attr("data-date")),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=n,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){e=t(e),this._selectDate(e,"")},_selectDate:function(e,i){var n=t(e);e=this._getInst(n[0]);i=null!=i?i:this._formatDate(e),e.input&&e.input.val(i),this._updateAlternate(e),(n=this._get(e,"onSelect"))?n.apply(e.input?e.input[0]:null,[i,e]):e.input&&e.input.trigger("change"),e.inline?this._updateDatepicker(e):(this._hideDatepicker(),this._lastInput=e.input[0],"object"!=typeof e.input[0]&&e.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,n,s=this._get(e,"altField");s&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),n=this._getDate(e),e=this.formatDate(i,n,this._getFormatConfig(e)),t(document).find(s).val(e))},noWeekends:function(t){return[0<(t=t.getDay())&&t<6,""]},iso8601Week:function(t){var e=new Date(t.getTime());return e.setDate(e.getDate()+4-(e.getDay()||7)),t=e.getTime(),e.setMonth(0),e.setDate(1),Math.floor(Math.round((t-e)/864e5)/7)+1},parseDate:function(e,i,n){if(null==e||null==i)throw"Invalid arguments";if(""===(i="object"==typeof i?i.toString():i+""))return null;for(var s,o,r,a=0,l="string"!=typeof(l=(n?n.shortYearCutoff:null)||this._defaults.shortYearCutoff)?l:(new Date).getFullYear()%100+parseInt(l,10),u=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,c=(n?n.dayNames:null)||this._defaults.dayNames,h=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,d=(n?n.monthNames:null)||this._defaults.monthNames,p=-1,f=-1,g=-1,m=-1,v=!1,y=function(t){return(t=x+1<e.length&&e.charAt(x+1)===t)&&x++,t},_=function(t){var e=y(t);e="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,e=new RegExp("^\\d{"+("y"===t?e:1)+","+e+"}");if(!(e=i.substring(a).match(e)))throw"Missing number at position "+a;return a+=e[0].length,parseInt(e[0],10)},b=function(e,n,s){var o=-1;n=t.map(y(e)?s:n,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(n,function(t,e){var n=e[1];if(i.substr(a,n.length).toLowerCase()===n.toLowerCase())return o=e[0],a+=n.length,!1}),-1!==o)return o+1;throw"Unknown name at position "+a},w=function(){if(i.charAt(a)!==e.charAt(x))throw"Unexpected literal at position "+a;a++},x=0;x<e.length;x++)if(v)"'"!==e.charAt(x)||y("'")?w():v=!1;else switch(e.charAt(x)){case"d":g=_("d");break;case"D":b("D",u,c);break;case"o":m=_("o");break;case"m":f=_("m");break;case"M":f=b("M",h,d);break;case"y":p=_("y");break;case"@":p=(r=new Date(_("@"))).getFullYear(),f=r.getMonth()+1,g=r.getDate();break;case"!":p=(r=new Date((_("!")-this._ticksTo1970)/1e4)).getFullYear(),f=r.getMonth()+1,g=r.getDate();break;case"'":y("'")?w():v=!0;break;default:w()}if(a<i.length&&(o=i.substr(a),!/^\s+/.test(o)))throw"Extra/unparsed characters found in date: "+o;if(-1===p?p=(new Date).getFullYear():p<100&&(p+=(new Date).getFullYear()-(new Date).getFullYear()%100+(p<=l?0:-100)),-1<m)for(f=1,g=m;!(g<=(s=this._getDaysInMonth(p,f-1)));)f++,g-=s;if((r=this._daylightSavingAdjust(new Date(p,f-1,g))).getFullYear()!==p||r.getMonth()+1!==f||r.getDate()!==g)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*60*60*1e7,formatDate:function(t,e,i){if(!e)return"";function n(t,e,i){var n=""+e;if(c(t))for(;n.length<i;)n="0"+n;return n}function s(t,e,i,n){return(c(t)?n:i)[e]}var o,r=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,l=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,u=(i?i.monthNames:null)||this._defaults.monthNames,c=function(e){return(e=o+1<t.length&&t.charAt(o+1)===e)&&o++,e},h="",d=!1;if(e)for(o=0;o<t.length;o++)if(d)"'"!==t.charAt(o)||c("'")?h+=t.charAt(o):d=!1;else switch(t.charAt(o)){case"d":h+=n("d",e.getDate(),2);break;case"D":h+=s("D",e.getDay(),r,a);break;case"o":h+=n("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":h+=n("m",e.getMonth()+1,2);break;case"M":h+=s("M",e.getMonth(),l,u);break;case"y":h+=c("y")?e.getFullYear():(e.getFullYear()%100<10?"0":"")+e.getFullYear()%100;break;case"@":h+=e.getTime();break;case"!":h+=1e4*e.getTime()+this._ticksTo1970;break;case"'":c("'")?h+="'":d=!0;break;default:h+=t.charAt(o)}return h},_possibleChars:function(t){for(var e="",i=!1,n=function(e){return(e=s+1<t.length&&t.charAt(s+1)===e)&&s++,e},s=0;s<t.length;s++)if(i)"'"!==t.charAt(s)||n("'")?e+=t.charAt(s):i=!1;else switch(t.charAt(s)){case"d":case"m":case"y":case"@":e+="0123456789";break;case"D":case"M":return null;case"'":n("'")?e+="'":i=!0;break;default:e+=t.charAt(s)}return e},_get:function(t,e){return(void 0!==t.settings[e]?t.settings:this._defaults)[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),n=t.lastVal=t.input?t.input.val():null,s=this._getDefaultDate(t),o=s,r=this._getFormatConfig(t);try{o=this.parseDate(i,n,r)||s}catch(t){n=e?"":n}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=n?o.getDate():0,t.currentMonth=n?o.getMonth():0,t.currentYear=n?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,n){var s,o;return(i=(i=null==i||""===i?n:"string"==typeof i?function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(i){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,s=n.getFullYear(),o=n.getMonth(),r=n.getDate(),a=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=a.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(s,o));break;case"y":case"Y":s+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(s,o))}l=a.exec(i)}return new Date(s,o,r)}(i):"number"==typeof i?isNaN(i)?n:(s=i,(o=new Date).setDate(o.getDate()+s),o):new Date(i.getTime()))&&"Invalid Date"===i.toString()?n:i)&&(i.setHours(0),i.setMinutes(0),i.setSeconds(0),i.setMilliseconds(0)),this._daylightSavingAdjust(i)},_daylightSavingAdjust:function(t){return t?(t.setHours(12<t.getHours()?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var n=!e,s=t.selectedMonth,o=t.selectedYear;e=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=e.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=e.getMonth(),t.drawYear=t.selectedYear=t.currentYear=e.getFullYear(),s===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(n?"":this._formatDate(t))},_getDate:function(t){return!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay))},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),n="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(n,-i,"M")},next:function(){t.datepicker._adjustDate(n,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(n)},selectDay:function(){return t.datepicker._selectDay(n,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(n,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(n,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(e){var i,n,s,o,r,a,l,u,c,h,d,p,f,g,m,v,y,_,b,w,x,k,C,S,D,T,M,j,A,O,E,P,I=new Date,N=this._daylightSavingAdjust(new Date(I.getFullYear(),I.getMonth(),I.getDate())),F=this._get(e,"isRTL"),L=this._get(e,"showButtonPanel"),R=this._get(e,"hideIfNoPrevNext"),H=this._get(e,"navigationAsDateFormat"),z=this._getNumberOfMonths(e),W=this._get(e,"showCurrentAtPos"),Y=(I=this._get(e,"stepMonths"),1!==z[0]||1!==z[1]),U=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),q=this._getMinMaxDate(e,"min"),B=this._getMinMaxDate(e,"max"),V=e.drawMonth-W,$=e.drawYear;if(V<0&&(V+=12,$--),B)for(i=this._daylightSavingAdjust(new Date(B.getFullYear(),B.getMonth()-z[0]*z[1]+1,B.getDate())),i=q&&i<q?q:i;this._daylightSavingAdjust(new Date($,V,1))>i;)--V<0&&(V=11,$--);for(e.drawMonth=V,e.drawYear=$,W=this._get(e,"prevText"),W=H?this.formatDate(W,this._daylightSavingAdjust(new Date($,V-I,1)),this._getFormatConfig(e)):W,n=this._canAdjustMonth(e,-1,$,V)?t("<a>").attr({class:"ui-datepicker-prev ui-corner-all","data-handler":"prev","data-event":"click",title:W}).append(t("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(F?"e":"w")).text(W))[0].outerHTML:R?"":t("<a>").attr({class:"ui-datepicker-prev ui-corner-all ui-state-disabled",title:W}).append(t("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(F?"e":"w")).text(W))[0].outerHTML,W=this._get(e,"nextText"),W=H?this.formatDate(W,this._daylightSavingAdjust(new Date($,V+I,1)),this._getFormatConfig(e)):W,s=this._canAdjustMonth(e,1,$,V)?t("<a>").attr({class:"ui-datepicker-next ui-corner-all","data-handler":"next","data-event":"click",title:W}).append(t("<span>").addClass("ui-icon ui-icon-circle-triangle-"+(F?"w":"e")).text(W))[0].outerHTML:R?"":t("<a>").attr({class:"ui-datepicker-next ui-corner-all ui-state-disabled",title:W}).append(t("<span>").attr("class","ui-icon ui-icon-circle-triangle-"+(F?"w":"e")).text(W))[0].outerHTML,I=this._get(e,"currentText"),R=this._get(e,"gotoCurrent")&&e.currentDay?U:N,I=H?this.formatDate(I,R,this._getFormatConfig(e)):I,W="",e.inline||(W=t("<button>").attr({type:"button",class:"ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all","data-handler":"hide","data-event":"click"}).text(this._get(e,"closeText"))[0].outerHTML),H="",L&&(H=t("<div class='ui-datepicker-buttonpane ui-widget-content'>").append(F?W:"").append(this._isInRange(e,R)?t("<button>").attr({type:"button",class:"ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all","data-handler":"today","data-event":"click"}).text(I):"").append(F?"":W)[0].outerHTML),o=parseInt(this._get(e,"firstDay"),10),o=isNaN(o)?0:o,r=this._get(e,"showWeek"),a=this._get(e,"dayNames"),l=this._get(e,"dayNamesMin"),u=this._get(e,"monthNames"),c=this._get(e,"monthNamesShort"),h=this._get(e,"beforeShowDay"),d=this._get(e,"showOtherMonths"),p=this._get(e,"selectOtherMonths"),f=this._getDefaultDate(e),g="",v=0;v<z[0];v++){for(y="",this.maxRows=4,_=0;_<z[1];_++){if(b=this._daylightSavingAdjust(new Date($,V,e.selectedDay)),w=" ui-corner-all",x="",Y){if(x+="<div class='ui-datepicker-group",1<z[1])switch(_){case 0:x+=" ui-datepicker-group-first",w=" ui-corner-"+(F?"right":"left");break;case z[1]-1:x+=" ui-datepicker-group-last",w=" ui-corner-"+(F?"left":"right");break;default:x+=" ui-datepicker-group-middle",w=""}x+="'>"}for(x+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+w+"'>"+(/all|left/.test(w)&&0===v?F?s:n:"")+(/all|right/.test(w)&&0===v?F?n:s:"")+this._generateMonthYearHeader(e,V,$,q,B,0<v||0<_,u,c)+"</div><table class='ui-datepicker-calendar'><thead><tr>",k=r?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"",m=0;m<7;m++)k+="<th scope='col'"+(5<=(m+o+6)%7?" class='ui-datepicker-week-end'":"")+"><span title='"+a[C=(m+o)%7]+"'>"+l[C]+"</span></th>";for(x+=k+"</tr></thead><tbody>",D=this._getDaysInMonth($,V),$===e.selectedYear&&V===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,D)),S=(this._getFirstDayOfMonth($,V)-o+7)%7,D=Math.ceil((S+D)/7),T=Y&&this.maxRows>D?this.maxRows:D,this.maxRows=T,M=this._daylightSavingAdjust(new Date($,V,1-S)),j=0;j<T;j++){for(x+="<tr>",A=r?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(M)+"</td>":"",m=0;m<7;m++)O=h?h.apply(e.input?e.input[0]:null,[M]):[!0,""],P=(E=M.getMonth()!==V)&&!p||!O[0]||q&&M<q||B&&B<M,A+="<td class='"+(5<=(m+o+6)%7?" ui-datepicker-week-end":"")+(E?" ui-datepicker-other-month":"")+(M.getTime()===b.getTime()&&V===e.selectedMonth&&e._keyEvent||f.getTime()===M.getTime()&&f.getTime()===b.getTime()?" "+this._dayOverClass:"")+(P?" "+this._unselectableClass+" ui-state-disabled":"")+(E&&!d?"":" "+O[1]+(M.getTime()===U.getTime()?" "+this._currentClass:"")+(M.getTime()===N.getTime()?" ui-datepicker-today":""))+"'"+(E&&!d||!O[2]?"":" title='"+O[2].replace(/'/g,"'")+"'")+(P?"":" data-handler='selectDay' data-event='click' data-month='"+M.getMonth()+"' data-year='"+M.getFullYear()+"'")+">"+(E&&!d?" ":P?"<span class='ui-state-default'>"+M.getDate()+"</span>":"<a class='ui-state-default"+(M.getTime()===N.getTime()?" ui-state-highlight":"")+(M.getTime()===U.getTime()?" ui-state-active":"")+(E?" ui-priority-secondary":"")+"' href='#' aria-current='"+(M.getTime()===U.getTime()?"true":"false")+"' data-date='"+M.getDate()+"'>"+M.getDate()+"</a>")+"</td>",M.setDate(M.getDate()+1),M=this._daylightSavingAdjust(M);x+=A+"</tr>"}11<++V&&(V=0,$++),y+=x+="</tbody></table>"+(Y?"</div>"+(0<z[0]&&_===z[1]-1?"<div class='ui-datepicker-row-break'></div>":""):"")}g+=y}return g+=H,e._keyEvent=!1,g},_generateMonthYearHeader:function(t,e,i,n,s,o,r,a){var l,u,c,h,d,p,f=this._get(t,"changeMonth"),g=this._get(t,"changeYear"),m=this._get(t,"showMonthAfterYear"),v=this._get(t,"selectMonthLabel"),y=this._get(t,"selectYearLabel"),_="<div class='ui-datepicker-title'>",b="";if(o||!f)b+="<span class='ui-datepicker-month'>"+r[e]+"</span>";else{for(l=n&&n.getFullYear()===i,u=s&&s.getFullYear()===i,b+="<select class='ui-datepicker-month' aria-label='"+v+"' data-handler='selectMonth' data-event='change'>",c=0;c<12;c++)(!l||c>=n.getMonth())&&(!u||c<=s.getMonth())&&(b+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+a[c]+"</option>");b+="</select>"}if(m||(_+=b+(!o&&f&&g?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!g)_+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(r=this._get(t,"yearRange").split(":"),h=(new Date).getFullYear(),d=(v=function(t){return t=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?h+parseInt(t,10):parseInt(t,10),isNaN(t)?h:t})(r[0]),p=Math.max(d,v(r[1]||"")),d=n?Math.max(d,n.getFullYear()):d,p=s?Math.min(p,s.getFullYear()):p,t.yearshtml+="<select class='ui-datepicker-year' aria-label='"+y+"' data-handler='selectYear' data-event='change'>";d<=p;d++)t.yearshtml+="<option value='"+d+"'"+(d===i?" selected='selected'":"")+">"+d+"</option>";t.yearshtml+="</select>",_+=t.yearshtml,t.yearshtml=null}return _+=this._get(t,"yearSuffix"),m&&(_+=(!o&&f&&g?"":" ")+b),_+"</div>"},_adjustInstDate:function(t,e,i){var n=t.selectedYear+("Y"===i?e:0),s=t.selectedMonth+("M"===i?e:0);e=Math.min(t.selectedDay,this._getDaysInMonth(n,s))+("D"===i?e:0),e=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(n,s,e)));t.selectedDay=e.getDate(),t.drawMonth=t.selectedMonth=e.getMonth(),t.drawYear=t.selectedYear=e.getFullYear(),"M"!==i&&"Y"!==i||this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min");e=i&&e<i?i:e;return(t=this._getMinMaxDate(t,"max"))&&t<e?t:e},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){return null==(t=this._get(t,"numberOfMonths"))?[1,1]:"number"==typeof t?[1,t]:t},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,n){var s=this._getNumberOfMonths(t);s=this._daylightSavingAdjust(new Date(i,n+(e<0?e:s[0]*s[1]),1));return e<0&&s.setDate(this._getDaysInMonth(s.getFullYear(),s.getMonth())),this._isInRange(t,s)},_isInRange:function(t,e){var i=this._getMinMaxDate(t,"min"),n=this._getMinMaxDate(t,"max"),s=null,o=null,r=this._get(t,"yearRange");return r&&(t=r.split(":"),r=(new Date).getFullYear(),s=parseInt(t[0],10),o=parseInt(t[1],10),t[0].match(/[+\-].*/)&&(s+=r),t[1].match(/[+\-].*/)&&(o+=r)),(!i||e.getTime()>=i.getTime())&&(!n||e.getTime()<=n.getTime())&&(!s||e.getFullYear()>=s)&&(!o||e.getFullYear()<=o)},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return{shortYearCutoff:e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,n){return e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear),e=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(n,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay)),this.formatDate(this._get(t,"dateFormat"),e,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"==typeof e&&("isDisabled"===e||"getDate"===e||"widget"===e)||"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)})},t.datepicker=new T,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.13.0",t.datepicker,t.widget("ui.dialog",{version:"1.13.0",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;i<0&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),(t=e.parent.children().eq(e.index)).length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&!1!==this._trigger("beforeClose",e)&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var n=!1,s=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get();return(s=Math.max.apply(null,s))>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",s+1),n=!0),n&&!i&&this._trigger("focus",e),n},open:function(){var e=this;this._isOpen?this._moveToTop()&&this._focusTabbable():(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"))},_focusTabbable:function(){var t=this._focusedElement;(t=(t=(t=(t=(t=t||this.element.find("[autofocus]")).length?t:this.element.find(":tabbable")).length?t:this.uiDialogButtonPane.find(":tabbable")).length?t:this.uiDialogTitlebarClose.filter(":tabbable")).length?t:this.uiDialog).eq(0).trigger("focus")},_restoreTabbableFocus:function(){var e=t.ui.safeActiveElement(this.document[0]);this.uiDialog[0]===e||t.contains(this.uiDialog[0],e)||this._focusTabbable()},_keepFocus:function(t){t.preventDefault(),this._restoreTabbableFocus(),this._delay(this._restoreTabbableFocus)},_createWrapper:function(){this.uiDialog=t("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),void this.close(e);var i,n,s;e.keyCode!==t.ui.keyCode.TAB||e.isDefaultPrevented()||(i=this.uiDialog.find(":tabbable"),n=i.first(),s=i.last(),e.target!==s[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==n[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){s.trigger("focus")}),e.preventDefault()):(this._delay(function(){n.trigger("focus")}),e.preventDefault()))},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("<button type='button'></button>").button({label:t("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=t("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||Array.isArray(i)&&!i.length?this._removeClass(this.uiDialog,"ui-dialog-buttons"):(t.each(i,function(i,n){var s;n=t.extend({type:"button"},n="function"==typeof n?{click:n,text:i}:n),s=n.click,i={icon:n.icon,iconPosition:n.iconPosition,showLabel:n.showLabel,icons:n.icons,text:n.text},delete n.click,delete n.icon,delete n.iconPosition,delete n.showLabel,delete n.icons,"boolean"==typeof n.text&&delete n.text,t("<button></button>",n).button(i).appendTo(e.uiButtonSet).on("click",function(){s.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog))},_makeDraggable:function(){var e=this,i=this.options;function n(t){return{position:t.position,offset:t.offset}}this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(i,s){e._addClass(t(this),"ui-dialog-dragging"),e._blockFrames(),e._trigger("dragStart",i,n(s))},drag:function(t,i){e._trigger("drag",t,n(i))},stop:function(s,o){var r=o.offset.left-e.document.scrollLeft(),a=o.offset.top-e.document.scrollTop();i.position={my:"left top",at:"left"+(0<=r?"+":"")+r+" top"+(0<=a?"+":"")+a,of:e.window},e._removeClass(t(this),"ui-dialog-dragging"),e._unblockFrames(),e._trigger("dragStop",s,n(o))}})},_makeResizable:function(){var e=this,i=this.options,n=i.resizable,s=this.uiDialog.css("position");n="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";function o(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:i.maxWidth,maxHeight:i.maxHeight,minWidth:i.minWidth,minHeight:this._minHeight(),handles:n,start:function(i,n){e._addClass(t(this),"ui-dialog-resizing"),e._blockFrames(),e._trigger("resizeStart",i,o(n))},resize:function(t,i){e._trigger("resize",t,o(i))},stop:function(n,s){var r=(a=e.uiDialog.offset()).left-e.document.scrollLeft(),a=a.top-e.document.scrollTop();i.height=e.uiDialog.height(),i.width=e.uiDialog.width(),i.position={my:"left top",at:"left"+(0<=r?"+":"")+r+" top"+(0<=a?"+":"")+a,of:e.window},e._removeClass(t(this),"ui-dialog-resizing"),e._unblockFrames(),e._trigger("resizeStop",n,o(s))}}).css("position",s)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||this.document.data("ui-dialog-instances",t=[]),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,n=!1,s={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(n=!0),t in i.resizableRelatedOptions&&(s[t]=e)}),n&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",s)},_setOption:function(e,i){var n,s=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("<a>").text(""+this.options.closeText).html()}),"draggable"===e&&((n=s.is(":data(ui-draggable)"))&&!i&&s.draggable("destroy"),!n&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&((n=s.is(":data(ui-resizable)"))&&!i&&s.resizable("destroy"),n&&"string"==typeof i&&s.resizable("option","handles",i),n||!1===i||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,n=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),n.minWidth>n.width&&(n.width=n.minWidth),t=this.uiDialog.css({height:"auto",width:n.width}).outerHeight(),e=Math.max(0,n.minHeight-t),i="number"==typeof n.maxHeight?Math.max(0,n.maxHeight-t):"none","auto"===n.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,n.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("<div>").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return!!t(e.target).closest(".ui-dialog").length||!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){var e,i;this.options.modal&&(e=t.fn.jquery.substring(0,4),i=!0,this._delay(function(){i=!1}),this.document.data("ui-dialog-overlays")||this.document.on("focusin.ui-dialog",function(t){var n;i||(n=this._trackingInstances()[0])._allowInteraction(t)||(t.preventDefault(),n._focusTabbable(),"3.4."!==e&&"3.5."!==e||n._delay(n._restoreTabbableFocus))}.bind(this)),this.overlay=t("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1))},_destroyOverlay:function(){var t;this.options.modal&&this.overlay&&((t=this.document.data("ui-dialog-overlays")-1)?this.document.data("ui-dialog-overlays",t):(this.document.off("focusin.ui-dialog"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null)}}),!1!==t.uiBackCompat&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.progressbar",{version:"1.13.0",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){if(void 0===t)return this.options.value;this.options.value=this._constrainedValue(t),this._refreshValue()},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=!1===t,"number"!=typeof t&&(t=0),!this.indeterminate&&Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"1.13.0",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=t()},_drawButton:function(){var e,i=this,n=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.trigger("focus"),t.preventDefault()}}),this.element.hide(),this.button=t("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),e=t("<span>").appendTo(this.button),this._addClass(e,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(n).appendTo(this.button),!1!==this.options.width&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){i._rendered||i._refreshMenu()})},_drawMenu:function(){var e=this;this.menu=t("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=t("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,i){t.preventDefault(),e._setSelection(),e._select(i.item.data("ui-selectmenu-item"),t)},focus:function(t,i){i=i.item.data("ui-selectmenu-item"),null!=e.focusIndex&&i.index!==e.focusIndex&&(e._trigger("focus",t,{item:i}),e.isOpen||e._select(i,t)),e.focusIndex=i.index,e.button.attr("aria-activedescendant",e.menuItems.eq(i.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t=this.element.find("option");this.menu.empty(),this._parseOptions(t),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,t.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(t.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(e){var i=t("<span>");return this._setText(i,e.label),this._addClass(i,"ui-selectmenu-text"),i},_renderMenu:function(e,i){var n=this,s="";t.each(i,function(i,o){var r;o.optgroup!==s&&(r=t("<li>",{text:o.optgroup}),n._addClass(r,"ui-selectmenu-optgroup","ui-menu-divider"+(o.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),r.appendTo(e),s=o.optgroup),n._renderItemData(e,o)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(e,i){var n=t("<li>"),s=t("<div>",{title:i.element.attr("title")});return i.disabled&&this._addClass(n,null,"ui-state-disabled"),this._setText(s,i.label),n.append(s).appendTo(e)},_setText:function(t,e){e?t.text(e):t.html(" ")},_move:function(t,e){var i,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),n+=":not(.ui-state-disabled)"),(n="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](n).eq(-1):i[t+"All"](n).eq(0)).length&&this.menuInstance.focus(e,n)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?((t=window.getSelection()).removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(e){this.isOpen&&(t(e.target).closest(".ui-selectmenu-menu, #"+t.escapeSelector(this.ids.button)).length||this.close(e))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection()).rangeCount&&(this.range=t.getRangeAt(0)):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(e){var i=!0;switch(e.keyCode){case t.ui.keyCode.TAB:case t.ui.keyCode.ESCAPE:this.close(e),i=!1;break;case t.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case t.ui.keyCode.UP:e.altKey?this._toggle(e):this._move("prev",e);break;case t.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move("next",e);break;case t.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case t.ui.keyCode.LEFT:this._move("prev",e);break;case t.ui.keyCode.RIGHT:this._move("next",e);break;case t.ui.keyCode.HOME:case t.ui.keyCode.PAGE_UP:this._move("first",e);break;case t.ui.keyCode.END:case t.ui.keyCode.PAGE_DOWN:this._move("last",e);break;default:this.menu.trigger(e),i=!1}i&&e.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){t=this.menuItems.eq(t.index).attr("id"),this.button.attr({"aria-labelledby":t,"aria-activedescendant":t}),this.menu.attr("aria-activedescendant",t)},_setOption:function(t,e){var i;"icons"===t&&(i=this.button.find("span.ui-icon"),this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)),this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var e=this.options.appendTo;return(e=(e=e&&(e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)))&&e[0]?e:this.element.closest(".ui-front, dialog")).length?e:this.document[0].body},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;!1!==t?(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t)):this.button.css("width","")},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(e){var i=this,n=[];e.each(function(e,s){s.hidden||n.push(i._parseOption(t(s),e))}),this.items=n},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),t.widget("ui.slider",t.ui.mouse,{version:"1.13.0",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i=this.options,n=this.element.find(".ui-slider-handle"),s=[],o=i.values&&i.values.length||1;for(n.length>o&&(n.slice(o).remove(),n=n.slice(0,o)),e=n.length;e<o;e++)s.push("<span tabindex='0'></span>");this.handles=n.add(t(s.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(!0===e.range&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:Array.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==e.range&&"max"!==e.range||this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,n,s,o,r,a,l=this,u=this.options;return!u.disabled&&(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),a={x:e.pageX,y:e.pageY},i=this._normValueFromMouse(a),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var r=Math.abs(i-l.values(e));(r<n||n===r&&(e===l._lastChangedValue||l.values(e)===u.min))&&(n=r,s=t(this),o=e)}),!1!==this._start(e,o)&&(this._mouseSliding=!0,this._handleIndex=o,this._addClass(s,null,"ui-state-active"),s.trigger("focus"),r=s.offset(),a=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=a?{left:0,top:0}:{left:e.pageX-r.left-s.width()/2,top:e.pageY-r.top-s.height()/2-(parseInt(s.css("borderTopWidth"),10)||0)-(parseInt(s.css("borderBottomWidth"),10)||0)+(parseInt(s.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,o,i),this._animateOff=!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY};e=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,e),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e;return(t=1<(t=(t="horizontal"===this.orientation?(e=this.elementSize.width,t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)))/e)?1:t)<0&&(t=0),"vertical"===this.orientation&&(t=1-t),e=this._valueMax()-this._valueMin(),e=this._valueMin()+t*e,this._trimAlignValue(e)},_uiHash:function(t,e,i){var n={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(n.value=void 0!==e?e:this.values(t),n.values=i||this.values()),n},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var n,s=this.value(),o=this.values();this._hasMultipleValues()&&(n=this.values(e?0:1),s=this.values(e),2===this.options.values.length&&!0===this.options.range&&(i=0===e?Math.min(n,i):Math.max(n,i)),o[e]=i),i!==s&&!1!==this._trigger("slide",t,this._uiHash(e,i,o))&&(this._hasMultipleValues()?this.values(e,i):this.value(i))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),void this._change(null,0)):this._value()},values:function(t,e){var i,n,s;if(1<arguments.length)return this.options.values[t]=this._trimAlignValue(e),this._refreshValue(),void this._change(null,t);if(!arguments.length)return this._values();if(!Array.isArray(t))return this._hasMultipleValues()?this._values(t):this.value();for(i=this.options.values,n=t,s=0;s<i.length;s+=1)i[s]=this._trimAlignValue(n[s]),this._change(null,s);this._refreshValue()},_setOption:function(t,e){var i,n=0;switch("range"===t&&!0===this.options.range&&("min"===e?(this.options.value=this._values(0),this.options.values=null):"max"===e&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),Array.isArray(this.options.values)&&(n=this.options.values.length),this._super(t,e),t){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(e),this.handles.css("horizontal"===e?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),i=n-1;0<=i;i--)this._change(null,i);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return this._trimAlignValue(t)},_values:function(t){var e,i;if(arguments.length)return t=this.options.values[t],this._trimAlignValue(t);if(this._hasMultipleValues()){for(e=this.options.values.slice(),i=0;i<e.length;i+=1)e[i]=this._trimAlignValue(e[i]);return e}return[]},_trimAlignValue:function(t){if(t<=this._valueMin())return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=0<this.options.step?this.options.step:1,i=(t-this._valueMin())%e;t-=i;return 2*Math.abs(i)>=e&&(t+=0<i?e:-e),parseFloat(t.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step;(t=Math.round((t-e)/i)*i+e)>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var e=t.toString();return-1===(t=e.indexOf("."))?0:e.length-t-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,n,s,o,r=this.options.range,a=this.options,l=this,u=!this._animateOff&&a.animate,c={};this._hasMultipleValues()?this.handles.each(function(n){i=(l.values(n)-l._valueMin())/(l._valueMax()-l._valueMin())*100,c["horizontal"===l.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[u?"animate":"css"](c,a.animate),!0===l.options.range&&("horizontal"===l.orientation?(0===n&&l.range.stop(1,1)[u?"animate":"css"]({left:i+"%"},a.animate),1===n&&l.range[u?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:a.animate})):(0===n&&l.range.stop(1,1)[u?"animate":"css"]({bottom:i+"%"},a.animate),1===n&&l.range[u?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:a.animate}))),e=i}):(n=this.value(),s=this._valueMin(),o=this._valueMax(),i=o!==s?(n-s)/(o-s)*100:0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[u?"animate":"css"](c,a.animate),"min"===r&&"horizontal"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({width:i+"%"},a.animate),"max"===r&&"horizontal"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({width:100-i+"%"},a.animate),"min"===r&&"vertical"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({height:i+"%"},a.animate),"max"===r&&"vertical"===this.orientation&&this.range.stop(1,1)[u?"animate":"css"]({height:100-i+"%"},a.animate))},_handleEvents:{keydown:function(e){var i,n,s,o=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),!1===this._start(e,o)))return}switch(s=this.options.step,i=n=this._hasMultipleValues()?this.values(o):this.value(),e.keyCode){case t.ui.keyCode.HOME:n=this._valueMin();break;case t.ui.keyCode.END:n=this._valueMax();break;case t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(i+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(i-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(i===this._valueMax())return;n=this._trimAlignValue(i+s);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(i===this._valueMin())return;n=this._trimAlignValue(i-s)}this._slide(e,o,n)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}}),t.widget("ui.spinner",{version:"1.13.0",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,n){var s=i.attr(n);null!=s&&s.length&&(e[n]=s)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){this.cancelBlur?delete this.cancelBlur:(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t))},mousewheel:function(e,i){var n=t.ui.safeActiveElement(this.document[0]);if(this.element[0]===n&&i){if(!this.spinning&&!this._start(e))return!1;this._spin((0<i?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()}},"mousedown .ui-spinner-button":function(e){var i;function n(){this.element[0]===t.ui.safeActiveElement(this.document[0])||(this.element.trigger("focus"),this.previous=i,this._delay(function(){this.previous=i}))}i=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),n.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,n.call(this)}),!1!==this._start(e)&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){if(t(e.currentTarget).hasClass("ui-state-active"))return!1!==this._start(e)&&void this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&0<this.uiSpinner.height()&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,n=t.ui.keyCode;switch(e.keyCode){case n.UP:return this._repeat(null,1,e),!0;case n.DOWN:return this._repeat(null,-1,e),!0;case n.PAGE_UP:return this._repeat(null,i.page,e),!0;case n.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return!(!this.spinning&&!1===this._trigger("start",t))&&(this.counter||(this.counter=1),this.spinning=!0)},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&!1===this._trigger("spin",e,{value:i})||(this._value(i),this.counter++)},_increment:function(t){var e=this.options.incremental;return e?"function"==typeof e?e(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min?Math.max(t,this._precisionOf(this.options.min)):t},_precisionOf:function(t){var e=t.toString();return-1===(t=e.indexOf("."))?0:e.length-t-1},_adjustValue:function(t){var e=this.options,i=null!==e.min?e.min:0,n=t-i;return t=i+Math.round(n/e.step)*e.step,t=parseFloat(t.toFixed(this._precision())),null!==e.max&&t>e.max?e.max:null!==e.min&&t<e.min?e.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i;if("culture"===t||"numberFormat"===t)return i=this._parse(this.element.val()),this.options[t]=e,void this.element.val(this._format(i));"max"!==t&&"min"!==t&&"step"!==t||"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(i=this.buttons.first().find(".ui-icon"),this._removeClass(i,null,this.options.icons.up),this._addClass(i,null,e.up),i=this.buttons.last().find(".ui-icon"),this._removeClass(i,null,this.options.icons.down),this._addClass(i,null,e.down)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:O(function(t){this._super(t)}),_parse:function(t){return""===(t="string"==typeof t&&""!==t?window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t:t)||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null!==t&&t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&null!==(i=this._parse(t))&&(e||(i=this._adjustValue(i)),t=this._format(i)),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:O(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:O(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:O(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:O(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){if(!arguments.length)return this._parse(this.element.val());O(this._value).call(this,t)},widget:function(){return this.uiSpinner}}),!1!==t.uiBackCompat&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.13.0",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:(S=/#.*$/,function(t){var e=t.href.replace(S,""),i=location.href.replace(S,"");try{e=decodeURIComponent(e)}catch(t){}try{i=decodeURIComponent(i)}catch(t){}return 1<t.hash.length&&e===i}),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),Array.isArray(i.disabled)&&(i.disabled=t.uniqueSort(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),!1!==this.options.active&&this.anchors.length?this.active=this._findActive(i.active):this.active=t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,n=location.hash.substring(1);return null===e&&(n&&this.tabs.each(function(i,s){if(t(s).attr("aria-controls")===n)return e=i,!1}),null!==(e=null===e?this.tabs.index(this.tabs.filter(".ui-tabs-active")):e)&&-1!==e||(e=!!this.tabs.length&&0)),!1!==e&&-1===(e=this.tabs.index(this.tabs.eq(e)))&&(e=!i&&0),e=!i&&!1===e&&this.anchors.length?0:e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),n=this.tabs.index(i),s=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:n++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:s=!1,n--;break;case t.ui.keyCode.END:n=this.anchors.length-1;break;case t.ui.keyCode.HOME:n=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),void this._activate(n);case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),void this._activate(n!==this.options.active&&n);default:return}e.preventDefault(),clearTimeout(this.activating),n=this._focusNextTab(n,s),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(n).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",n)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){for(var n=this.tabs.length-1;-1!==t.inArray(e=(e=n<e?0:e)<0?n:e,this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){"active"!==t?(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||!1!==this.options.active||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e)):this._activate(e)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),!1!==e.active&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,n=this.anchors,s=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,n){var s,o,r,a=t(n).uniqueId().attr("id"),l=t(n).closest("li"),u=l.attr("aria-controls");e._isLocal(n)?(r=(s=n.hash).substring(1),o=e.element.find(e._sanitizeSelector(s))):(r=l.attr("aria-controls")||t({}).uniqueId()[0].id,(o=e.element.find(s="#"+r)).length||(o=e._createPanel(r)).insertAfter(e.panels[i-1]||e.tablist),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),u&&l.data("ui-tabs-aria-controls",u),l.attr({"aria-controls":r,"aria-labelledby":a}),o.attr("aria-labelledby",a)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(n.not(this.anchors)),this._off(s.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("<div>").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,n;for(Array.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;i=this.tabs[n];n++)i=t(i),!0===e||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!0===e)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,n=this.element.parent();"fill"===e?(i=n.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),n=e.css("position");"absolute"!==n&&"fixed"!==n&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,n=this.active,s=t(e.currentTarget).closest("li"),o=s[0]===n[0],r=o&&i.collapsible,a=r?t():this._getPanelForTab(s),l=n.length?this._getPanelForTab(n):t();n={oldTab:n,oldPanel:l,newTab:r?t():s,newPanel:a};e.preventDefault(),s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||o&&!i.collapsible||!1===this._trigger("beforeActivate",e,n)||(i.active=!r&&this.tabs.index(s),this.active=o?t():s,this.xhr&&this.xhr.abort(),l.length||a.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),e),this._toggle(e,n))},_toggle:function(e,i){var n=this,s=i.newPanel,o=i.oldPanel;function r(){n.running=!1,n._trigger("activate",e,i)}function a(){n._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),s.length&&n.options.show?n._show(s,n.options.show,r):(s.show(),r())}this.running=!0,o.length&&this.options.hide?this._hide(o,this.options.hide,function(){n._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),a()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),o.hide(),a()),o.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),s.length&&o.length?i.oldTab.attr("tabIndex",-1):s.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),s.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){(e=this._findActive(e))[0]!==this.active[0]&&(e=(e=e.length?e:this.active).find(".ui-tabs-anchor")[0],this._eventHandler({target:e,currentTarget:e,preventDefault:t.noop}))},_findActive:function(e){return!1===e?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e?this.anchors.index(this.anchors.filter("[href$='"+t.escapeSelector(e)+"']")):e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;!1!==i&&(i=void 0!==e&&(e=this._getIndex(e),Array.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(!0!==i){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=Array.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){function n(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(o,"ui-tabs-loading"),r.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr}e=this._getIndex(e);var s=this,o=this.tabs.eq(e),r=(e=o.find(".ui-tabs-anchor"),this._getPanelForTab(o)),a={tab:o,panel:r};this._isLocal(e[0])||(this.xhr=t.ajax(this._ajaxSettings(e,i,a)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(o,"ui-tabs-loading"),r.attr("aria-busy","true"),this.xhr.done(function(t,e,o){setTimeout(function(){r.html(t),s._trigger("load",i,a),n(o,e)},1)}).fail(function(t,e){setTimeout(function(){n(t,e)},1)})))},_ajaxSettings:function(e,i,n){var s=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return s._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},n))}}},_getPanelForTab:function(e){return e=t(e).attr("aria-controls"),this.element.find(this._sanitizeSelector("#"+e))}}),!1!==t.uiBackCompat&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.13.0",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title");return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(t,e){var i=(t.attr("aria-describedby")||"").split(/\s+/);i.push(e),t.data("ui-tooltip-id",e).attr("aria-describedby",String.prototype.trim.call(i.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),n=(e.attr("aria-describedby")||"").split(/\s+/);-1!==(i=t.inArray(i,n))&&n.splice(i,1),e.removeData("ui-tooltip-id"),(n=String.prototype.trim.call(n.join(" ")))?e.attr("aria-describedby",n):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var n=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){n._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,n){var s=t.Event("blur");s.target=s.currentTarget=n.element[0],e.close(s,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);if(e.is("[title]"))return e.data("ui-tooltip-title",e.attr("title")).removeAttr("title")}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,n=t(e?e.target:this.element).closest(this.options.items);n.length&&!n.data("ui-tooltip-id")&&(n.attr("title")&&n.data("ui-tooltip-title",n.attr("title")),n.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&n.parents().each(function(){var e,n=t(this);n.data("ui-tooltip-open")&&((e=t.Event("blur")).target=e.currentTarget=this,i.close(e,!0)),n.attr("title")&&(n.uniqueId(),i.parents[this.id]={element:this,title:n.attr("title")},n.attr("title",""))}),this._registerCloseHandlers(e,n),this._updateContent(n,e))},_updateContent:function(t,e){var i=this.options.content,n=this,s=e?e.type:null;if("string"==typeof i||i.nodeType||i.jquery)return this._open(e,t,i);(i=i.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=s),this._open(e,t,i))})}))&&this._open(e,t,i)},_open:function(e,i,n){var s,o,r,a=t.extend({},this.options.position);function l(t){a.of=t,o.is(":hidden")||o.position(a)}n&&((s=this._find(i))?s.tooltip.find(".ui-tooltip-content").html(n):(i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),s=this._tooltip(i),o=s.tooltip,this._addDescribedBy(i,o.attr("id")),o.find(".ui-tooltip-content").html(n),this.liveRegion.children().hide(),(n=t("<div>").html(o.find(".ui-tooltip-content").html())).removeAttr("name").find("[name]").removeAttr("name"),n.removeAttr("id").find("[id]").removeAttr("id"),n.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:l}),l(e)):o.position(t.extend({of:i},this.options.position)),o.hide(),this._show(o,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){o.is(":visible")&&(l(a.of),clearInterval(r))},13)),this._trigger("open",e,{tooltip:o})))},_registerCloseHandlers:function(e,i){var n={keyup:function(e){e.keyCode===t.ui.keyCode.ESCAPE&&((e=t.Event(e)).currentTarget=i[0],this.close(e,!0))}};i[0]!==this.element[0]&&(n.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(n.mouseleave="close"),e&&"focusin"!==e.type||(n.focusout="close"),this._on(!0,i,n)},close:function(e){var i,n=this,s=t(e?e.currentTarget:this.element),o=this._find(s);o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),s.data("ui-tooltip-title")&&!s.attr("title")&&s.attr("title",s.data("ui-tooltip-title")),this._removeDescribedBy(s),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){n._removeTooltip(t(this))}),s.removeData("ui-tooltip-open"),this._off(s,"mouseleave focusout keyup"),s[0]!==this.element[0]&&this._off(s,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete n.parents[e]}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1))):s.removeData("ui-tooltip-open")},_tooltip:function(e){var i=t("<div>").attr("role","tooltip"),n=t("<div>").appendTo(i),s=i.uniqueId().attr("id");return this._addClass(n,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[s]={element:e,tooltip:i}},_find:function(t){return(t=t.data("ui-tooltip-id"))?this.tooltips[t]:null},_removeTooltip:function(t){clearInterval(this.delayedShow),t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){return(t=t.closest(".ui-front, dialog")).length?t:this.document[0].body},_destroy:function(){var e=this;t.each(this.tooltips,function(i,n){var s=t.Event("blur");n=n.element;s.target=s.currentTarget=n[0],e.close(s,!0),t("#"+i).remove(),n.data("ui-tooltip-title")&&(n.attr("title")||n.attr("title",n.data("ui-tooltip-title")),n.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),!1!==t.uiBackCompat&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip}),function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.moment=e()}(this,function(){"use strict";var t,e;function i(){return t.apply(null,arguments)}function n(t){return t instanceof Array||"[object Array]"===Object.prototype.toString.call(t)}function s(t){return null!=t&&"[object Object]"===Object.prototype.toString.call(t)}function o(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function r(t){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(t).length;for(var e in t)if(o(t,e))return;return 1}function a(t){return void 0===t}function l(t){return"number"==typeof t||"[object Number]"===Object.prototype.toString.call(t)}function u(t){return t instanceof Date||"[object Date]"===Object.prototype.toString.call(t)}function c(t,e){for(var i=[],n=0;n<t.length;++n)i.push(e(t[n],n));return i}function h(t,e){for(var i in e)o(e,i)&&(t[i]=e[i]);return o(e,"toString")&&(t.toString=e.toString),o(e,"valueOf")&&(t.valueOf=e.valueOf),t}function d(t,e,i,n){return De(t,e,i,n,!0).utc()}function p(t){return null==t._pf&&(t._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidEra:null,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],era:null,meridiem:null,rfc2822:!1,weekdayMismatch:!1}),t._pf}function f(t){if(null==t._isValid){var i=p(t),n=e.call(i.parsedDateParts,function(t){return null!=t}),s=!isNaN(t._d.getTime())&&i.overflow<0&&!i.empty&&!i.invalidEra&&!i.invalidMonth&&!i.invalidWeekday&&!i.weekdayMismatch&&!i.nullInput&&!i.invalidFormat&&!i.userInvalidated&&(!i.meridiem||i.meridiem&&n);if(t._strict&&(s=s&&0===i.charsLeftOver&&0===i.unusedTokens.length&&void 0===i.bigHour),null!=Object.isFrozen&&Object.isFrozen(t))return s;t._isValid=s}return t._isValid}function g(t){var e=d(NaN);return null!=t?h(p(e),t):p(e).userInvalidated=!0,e}e=Array.prototype.some?Array.prototype.some:function(t){for(var e=Object(this),i=e.length>>>0,n=0;n<i;n++)if(n in e&&t.call(this,e[n],n,e))return!0;return!1};var m=i.momentProperties=[],v=!1;function y(t,e){var i,n,s;if(a(e._isAMomentObject)||(t._isAMomentObject=e._isAMomentObject),a(e._i)||(t._i=e._i),a(e._f)||(t._f=e._f),a(e._l)||(t._l=e._l),a(e._strict)||(t._strict=e._strict),a(e._tzm)||(t._tzm=e._tzm),a(e._isUTC)||(t._isUTC=e._isUTC),a(e._offset)||(t._offset=e._offset),a(e._pf)||(t._pf=p(e)),a(e._locale)||(t._locale=e._locale),0<m.length)for(i=0;i<m.length;i++)a(s=e[n=m[i]])||(t[n]=s);return t}function _(t){y(this,t),this._d=new Date(null!=t._d?t._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===v&&(v=!0,i.updateOffset(this),v=!1)}function b(t){return t instanceof _||null!=t&&null!=t._isAMomentObject}function w(t){!1===i.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+t)}function x(t,e){var n=!0;return h(function(){if(null!=i.deprecationHandler&&i.deprecationHandler(null,t),n){for(var s,r,a=[],l=0;l<arguments.length;l++){if(s="","object"==typeof arguments[l]){for(r in s+="\n["+l+"] ",arguments[0])o(arguments[0],r)&&(s+=r+": "+arguments[0][r]+", ");s=s.slice(0,-2)}else s=arguments[l];a.push(s)}w(t+"\nArguments: "+Array.prototype.slice.call(a).join("")+"\n"+(new Error).stack),n=!1}return e.apply(this,arguments)},e)}var k,C={};function S(t,e){null!=i.deprecationHandler&&i.deprecationHandler(t,e),C[t]||(w(e),C[t]=!0)}function D(t){return"undefined"!=typeof Function&&t instanceof Function||"[object Function]"===Object.prototype.toString.call(t)}function T(t,e){var i,n=h({},t);for(i in e)o(e,i)&&(s(t[i])&&s(e[i])?(n[i]={},h(n[i],t[i]),h(n[i],e[i])):null!=e[i]?n[i]=e[i]:delete n[i]);for(i in t)o(t,i)&&!o(e,i)&&s(t[i])&&(n[i]=h({},n[i]));return n}function M(t){null!=t&&this.set(t)}function j(t,e,i){var n=""+Math.abs(t),s=e-n.length;return(0<=t?i?"+":"":"-")+Math.pow(10,Math.max(0,s)).toString().substr(1)+n}i.suppressDeprecationWarnings=!1,i.deprecationHandler=null,k=Object.keys?Object.keys:function(t){var e,i=[];for(e in t)o(t,e)&&i.push(e);return i};var A=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,O=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,E={},P={};function I(t,e,i,n){var s="string"==typeof n?function(){return this[n]()}:n;t&&(P[t]=s),e&&(P[e[0]]=function(){return j(s.apply(this,arguments),e[1],e[2])}),i&&(P[i]=function(){return this.localeData().ordinal(s.apply(this,arguments),t)})}function N(t,e){return t.isValid()?(e=F(e,t.localeData()),E[e]=E[e]||function(t){for(var e,i=t.match(A),n=0,s=i.length;n<s;n++)P[i[n]]?i[n]=P[i[n]]:i[n]=(e=i[n]).match(/\[[\s\S]/)?e.replace(/^\[|\]$/g,""):e.replace(/\\/g,"");return function(e){for(var n="",o=0;o<s;o++)n+=D(i[o])?i[o].call(e,t):i[o];return n}}(e),E[e](t)):t.localeData().invalidDate()}function F(t,e){var i=5;function n(t){return e.longDateFormat(t)||t}for(O.lastIndex=0;0<=i&&O.test(t);)t=t.replace(O,n),O.lastIndex=0,--i;return t}var L={};function R(t,e){var i=t.toLowerCase();L[i]=L[i+"s"]=L[e]=t}function H(t){return"string"==typeof t?L[t]||L[t.toLowerCase()]:void 0}function z(t){var e,i,n={};for(i in t)o(t,i)&&(e=H(i))&&(n[e]=t[i]);return n}var W={};function Y(t,e){W[t]=e}function U(t){return t%4==0&&t%100!=0||t%400==0}function q(t){return t<0?Math.ceil(t)||0:Math.floor(t)}function B(t){var e=+t,i=0;return 0!=e&&isFinite(e)&&(i=q(e)),i}function V(t,e){return function(n){return null!=n?(G(this,t,n),i.updateOffset(this,e),this):$(this,t)}}function $(t,e){return t.isValid()?t._d["get"+(t._isUTC?"UTC":"")+e]():NaN}function G(t,e,i){t.isValid()&&!isNaN(i)&&("FullYear"===e&&U(t.year())&&1===t.month()&&29===t.date()?(i=B(i),t._d["set"+(t._isUTC?"UTC":"")+e](i,t.month(),Mt(i,t.month()))):t._d["set"+(t._isUTC?"UTC":"")+e](i))}var K,X=/\d/,J=/\d\d/,Z=/\d{3}/,Q=/\d{4}/,tt=/[+-]?\d{6}/,et=/\d\d?/,it=/\d\d\d\d?/,nt=/\d\d\d\d\d\d?/,st=/\d{1,3}/,ot=/\d{1,4}/,rt=/[+-]?\d{1,6}/,at=/\d+/,lt=/[+-]?\d+/,ut=/Z|[+-]\d\d:?\d\d/gi,ct=/Z|[+-]\d\d(?::?\d\d)?/gi,ht=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i;function dt(t,e,i){K[t]=D(e)?e:function(t,n){return t&&i?i:e}}function pt(t,e){return o(K,t)?K[t](e._strict,e._locale):new RegExp(ft(t.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(t,e,i,n,s){return e||i||n||s})))}function ft(t){return t.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}K={};var gt={};function mt(t,e){var i,n=e;for("string"==typeof t&&(t=[t]),l(e)&&(n=function(t,i){i[e]=B(t)}),i=0;i<t.length;i++)gt[t[i]]=n}function vt(t,e){mt(t,function(t,i,n,s){n._w=n._w||{},e(t,n._w,n,s)})}var yt,_t=0,bt=1,wt=2,xt=3,kt=4,Ct=5,St=6,Dt=7,Tt=8;function Mt(t,e){if(isNaN(t)||isNaN(e))return NaN;var i=(e%12+12)%12;return t+=(e-i)/12,1==i?U(t)?29:28:31-i%7%2}yt=Array.prototype.indexOf?Array.prototype.indexOf:function(t){for(var e=0;e<this.length;++e)if(this[e]===t)return e;return-1},I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(t){return this.localeData().monthsShort(this,t)}),I("MMMM",0,0,function(t){return this.localeData().months(this,t)}),R("month","M"),Y("month",8),dt("M",et),dt("MM",et,J),dt("MMM",function(t,e){return e.monthsShortRegex(t)}),dt("MMMM",function(t,e){return e.monthsRegex(t)}),mt(["M","MM"],function(t,e){e[bt]=B(t)-1}),mt(["MMM","MMMM"],function(t,e,i,n){var s=i._locale.monthsParse(t,n,i._strict);null!=s?e[bt]=s:p(i).invalidMonth=t});var jt="January_February_March_April_May_June_July_August_September_October_November_December".split("_"),At="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),Ot=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Et=ht,Pt=ht;function It(t,e){var i;if(!t.isValid())return t;if("string"==typeof e)if(/^\d+$/.test(e))e=B(e);else if(!l(e=t.localeData().monthsParse(e)))return t;return i=Math.min(t.date(),Mt(t.year(),e)),t._d["set"+(t._isUTC?"UTC":"")+"Month"](e,i),t}function Nt(t){return null!=t?(It(this,t),i.updateOffset(this,!0),this):$(this,"Month")}function Ft(){function t(t,e){return e.length-t.length}for(var e,i=[],n=[],s=[],o=0;o<12;o++)e=d([2e3,o]),i.push(this.monthsShort(e,"")),n.push(this.months(e,"")),s.push(this.months(e,"")),s.push(this.monthsShort(e,""));for(i.sort(t),n.sort(t),s.sort(t),o=0;o<12;o++)i[o]=ft(i[o]),n[o]=ft(n[o]);for(o=0;o<24;o++)s[o]=ft(s[o]);this._monthsRegex=new RegExp("^("+s.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+i.join("|")+")","i")}function Lt(t){return U(t)?366:365}I("Y",0,0,function(){var t=this.year();return t<=9999?j(t,4):"+"+t}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),R("year","y"),Y("year",1),dt("Y",lt),dt("YY",et,J),dt("YYYY",ot,Q),dt("YYYYY",rt,tt),dt("YYYYYY",rt,tt),mt(["YYYYY","YYYYYY"],_t),mt("YYYY",function(t,e){e[_t]=2===t.length?i.parseTwoDigitYear(t):B(t)}),mt("YY",function(t,e){e[_t]=i.parseTwoDigitYear(t)}),mt("Y",function(t,e){e[_t]=parseInt(t,10)}),i.parseTwoDigitYear=function(t){return B(t)+(68<B(t)?1900:2e3)};var Rt=V("FullYear",!0);function Ht(t){var e,i;return t<100&&0<=t?((i=Array.prototype.slice.call(arguments))[0]=t+400,e=new Date(Date.UTC.apply(null,i)),isFinite(e.getUTCFullYear())&&e.setUTCFullYear(t)):e=new Date(Date.UTC.apply(null,arguments)),e}function zt(t,e,i){var n=7+e-i;return n-(7+Ht(t,0,n).getUTCDay()-e)%7-1}function Wt(t,e,i,n,s){var o,r=1+7*(e-1)+(7+i-n)%7+zt(t,n,s),a=r<=0?Lt(o=t-1)+r:r>Lt(t)?(o=t+1,r-Lt(t)):(o=t,r);return{year:o,dayOfYear:a}}function Yt(t,e,i){var n,s,o=zt(t.year(),e,i),r=Math.floor((t.dayOfYear()-o-1)/7)+1;return r<1?n=r+Ut(s=t.year()-1,e,i):r>Ut(t.year(),e,i)?(n=r-Ut(t.year(),e,i),s=t.year()+1):(s=t.year(),n=r),{week:n,year:s}}function Ut(t,e,i){var n=zt(t,e,i),s=zt(t+1,e,i);return(Lt(t)-n+s)/7}function qt(t,e){return t.slice(e,7).concat(t.slice(0,e))}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),R("week","w"),R("isoWeek","W"),Y("week",5),Y("isoWeek",5),dt("w",et),dt("ww",et,J),dt("W",et),dt("WW",et,J),vt(["w","ww","W","WW"],function(t,e,i,n){e[n.substr(0,1)]=B(t)}),I("d",0,"do","day"),I("dd",0,0,function(t){return this.localeData().weekdaysMin(this,t)}),I("ddd",0,0,function(t){return this.localeData().weekdaysShort(this,t)}),I("dddd",0,0,function(t){return this.localeData().weekdays(this,t)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),R("day","d"),R("weekday","e"),R("isoWeekday","E"),Y("day",11),Y("weekday",11),Y("isoWeekday",11),dt("d",et),dt("e",et),dt("E",et),dt("dd",function(t,e){return e.weekdaysMinRegex(t)}),dt("ddd",function(t,e){return e.weekdaysShortRegex(t)}),dt("dddd",function(t,e){return e.weekdaysRegex(t)}),vt(["dd","ddd","dddd"],function(t,e,i,n){var s=i._locale.weekdaysParse(t,n,i._strict);null!=s?e.d=s:p(i).invalidWeekday=t}),vt(["d","e","E"],function(t,e,i,n){e[n]=B(t)});var Bt="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),Vt="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),$t="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Gt=ht,Kt=ht,Xt=ht;function Jt(){function t(t,e){return e.length-t.length}for(var e,i,n,s,o=[],r=[],a=[],l=[],u=0;u<7;u++)e=d([2e3,1]).day(u),i=ft(this.weekdaysMin(e,"")),n=ft(this.weekdaysShort(e,"")),s=ft(this.weekdays(e,"")),o.push(i),r.push(n),a.push(s),l.push(i),l.push(n),l.push(s);o.sort(t),r.sort(t),a.sort(t),l.sort(t),this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+a.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+r.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+o.join("|")+")","i")}function Zt(){return this.hours()%12||12}function Qt(t,e){I(t,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),e)})}function te(t,e){return e._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,Zt),I("k",["kk",2],0,function(){return this.hours()||24}),I("hmm",0,0,function(){return""+Zt.apply(this)+j(this.minutes(),2)}),I("hmmss",0,0,function(){return""+Zt.apply(this)+j(this.minutes(),2)+j(this.seconds(),2)}),I("Hmm",0,0,function(){return""+this.hours()+j(this.minutes(),2)}),I("Hmmss",0,0,function(){return""+this.hours()+j(this.minutes(),2)+j(this.seconds(),2)}),Qt("a",!0),Qt("A",!1),R("hour","h"),Y("hour",13),dt("a",te),dt("A",te),dt("H",et),dt("h",et),dt("k",et),dt("HH",et,J),dt("hh",et,J),dt("kk",et,J),dt("hmm",it),dt("hmmss",nt),dt("Hmm",it),dt("Hmmss",nt),mt(["H","HH"],xt),mt(["k","kk"],function(t,e,i){var n=B(t);e[xt]=24===n?0:n}),mt(["a","A"],function(t,e,i){i._isPm=i._locale.isPM(t),i._meridiem=t}),mt(["h","hh"],function(t,e,i){e[xt]=B(t),p(i).bigHour=!0}),mt("hmm",function(t,e,i){var n=t.length-2;e[xt]=B(t.substr(0,n)),e[kt]=B(t.substr(n)),p(i).bigHour=!0}),mt("hmmss",function(t,e,i){var n=t.length-4,s=t.length-2;e[xt]=B(t.substr(0,n)),e[kt]=B(t.substr(n,2)),e[Ct]=B(t.substr(s)),p(i).bigHour=!0}),mt("Hmm",function(t,e,i){var n=t.length-2;e[xt]=B(t.substr(0,n)),e[kt]=B(t.substr(n))}),mt("Hmmss",function(t,e,i){var n=t.length-4,s=t.length-2;e[xt]=B(t.substr(0,n)),e[kt]=B(t.substr(n,2)),e[Ct]=B(t.substr(s))});var ee,ie=V("Hours",!0),ne={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:jt,monthsShort:At,week:{dow:0,doy:6},weekdays:Bt,weekdaysMin:$t,weekdaysShort:Vt,meridiemParse:/[ap]\.?m?\.?/i},se={},oe={};function re(t){return t?t.toLowerCase().replace("_","-"):t}function ae(t){var e;if(void 0===se[t]&&"undefined"!=typeof module&&module&&module.exports)try{e=ee._abbr,require("./locale/"+t),le(e)}catch(e){se[t]=null}return se[t]}function le(t,e){var i;return t&&((i=a(e)?ce(t):ue(t,e))?ee=i:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+t+" not found. Did you forget to load it?")),ee._abbr}function ue(t,e){if(null===e)return delete se[t],null;var i,n=ne;if(e.abbr=t,null!=se[t])S("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),n=se[t]._config;else if(null!=e.parentLocale)if(null!=se[e.parentLocale])n=se[e.parentLocale]._config;else{if(null==(i=ae(e.parentLocale)))return oe[e.parentLocale]||(oe[e.parentLocale]=[]),oe[e.parentLocale].push({name:t,config:e}),null;n=i._config}return se[t]=new M(T(n,e)),oe[t]&&oe[t].forEach(function(t){ue(t.name,t.config)}),le(t),se[t]}function ce(t){var e;if(t&&t._locale&&t._locale._abbr&&(t=t._locale._abbr),!t)return ee;if(!n(t)){if(e=ae(t))return e;t=[t]}return function(t){for(var e,i,n,s,o=0;o<t.length;){for(e=(s=re(t[o]).split("-")).length,i=(i=re(t[o+1]))?i.split("-"):null;0<e;){if(n=ae(s.slice(0,e).join("-")))return n;if(i&&i.length>=e&&function(t,e){for(var i=Math.min(t.length,e.length),n=0;n<i;n+=1)if(t[n]!==e[n])return n;return i}(s,i)>=e-1)break;e--}o++}return ee}(t)}function he(t){var e,i=t._a;return i&&-2===p(t).overflow&&(e=i[bt]<0||11<i[bt]?bt:i[wt]<1||i[wt]>Mt(i[_t],i[bt])?wt:i[xt]<0||24<i[xt]||24===i[xt]&&(0!==i[kt]||0!==i[Ct]||0!==i[St])?xt:i[kt]<0||59<i[kt]?kt:i[Ct]<0||59<i[Ct]?Ct:i[St]<0||999<i[St]?St:-1,p(t)._overflowDayOfYear&&(e<_t||wt<e)&&(e=wt),p(t)._overflowWeeks&&-1===e&&(e=Dt),p(t)._overflowWeekday&&-1===e&&(e=Tt),p(t).overflow=e),t}var de=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,pe=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,fe=/Z|[+-]\d\d(?::?\d\d)?/,ge=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],me=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],ve=/^\/?Date\((-?\d+)/i,ye=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,_e={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function be(t){var e,i,n,s,o,r,a=t._i,l=de.exec(a)||pe.exec(a);if(l){for(p(t).iso=!0,e=0,i=ge.length;e<i;e++)if(ge[e][1].exec(l[1])){s=ge[e][0],n=!1!==ge[e][2];break}if(null==s)return void(t._isValid=!1);if(l[3]){for(e=0,i=me.length;e<i;e++)if(me[e][1].exec(l[3])){o=(l[2]||" ")+me[e][0];break}if(null==o)return void(t._isValid=!1)}if(!n&&null!=o)return void(t._isValid=!1);if(l[4]){if(!fe.exec(l[4]))return void(t._isValid=!1);r="Z"}t._f=s+(o||"")+(r||""),Ce(t)}else t._isValid=!1}function we(t){var e,i,n,s,o=ye.exec(t._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(o){if(n=e=function(t,e,i,n,s,o){var r=[function(t){var e=parseInt(t,10);return e<=49?2e3+e:e<=999?1900+e:e}(t),At.indexOf(e),parseInt(i,10),parseInt(n,10),parseInt(s,10)];return o&&r.push(parseInt(o,10)),r}(o[4],o[3],o[2],o[5],o[6],o[7]),s=t,(i=o[1])&&Vt.indexOf(i)!==new Date(n[0],n[1],n[2]).getDay()&&(p(s).weekdayMismatch=!0,!void(s._isValid=!1)))return;t._a=e,t._tzm=function(t,e,i){if(t)return _e[t];if(e)return 0;var n=parseInt(i,10),s=n%100;return(n-s)/100*60+s}(o[8],o[9],o[10]),t._d=Ht.apply(null,t._a),t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),p(t).rfc2822=!0}else t._isValid=!1}function xe(t,e,i){return null!=t?t:null!=e?e:i}function ke(t){var e,n,s,o,r,a,l,u=[];if(!t._d){for(a=t,l=new Date(i.now()),s=a._useUTC?[l.getUTCFullYear(),l.getUTCMonth(),l.getUTCDate()]:[l.getFullYear(),l.getMonth(),l.getDate()],t._w&&null==t._a[wt]&&null==t._a[bt]&&function(t){var e,i,n,s,o,r,a,l,u;null!=(e=t._w).GG||null!=e.W||null!=e.E?(o=1,r=4,i=xe(e.GG,t._a[_t],Yt(Te(),1,4).year),n=xe(e.W,1),((s=xe(e.E,1))<1||7<s)&&(l=!0)):(o=t._locale._week.dow,r=t._locale._week.doy,u=Yt(Te(),o,r),i=xe(e.gg,t._a[_t],u.year),n=xe(e.w,u.week),null!=e.d?((s=e.d)<0||6<s)&&(l=!0):null!=e.e?(s=e.e+o,(e.e<0||6<e.e)&&(l=!0)):s=o),n<1||n>Ut(i,o,r)?p(t)._overflowWeeks=!0:null!=l?p(t)._overflowWeekday=!0:(a=Wt(i,n,s,o,r),t._a[_t]=a.year,t._dayOfYear=a.dayOfYear)}(t),null!=t._dayOfYear&&(r=xe(t._a[_t],s[_t]),(t._dayOfYear>Lt(r)||0===t._dayOfYear)&&(p(t)._overflowDayOfYear=!0),n=Ht(r,0,t._dayOfYear),t._a[bt]=n.getUTCMonth(),t._a[wt]=n.getUTCDate()),e=0;e<3&&null==t._a[e];++e)t._a[e]=u[e]=s[e];for(;e<7;e++)t._a[e]=u[e]=null==t._a[e]?2===e?1:0:t._a[e];24===t._a[xt]&&0===t._a[kt]&&0===t._a[Ct]&&0===t._a[St]&&(t._nextDay=!0,t._a[xt]=0),t._d=(t._useUTC?Ht:function(t,e,i,n,s,o,r){var a;return t<100&&0<=t?(a=new Date(t+400,e,i,n,s,o,r),isFinite(a.getFullYear())&&a.setFullYear(t)):a=new Date(t,e,i,n,s,o,r),a}).apply(null,u),o=t._useUTC?t._d.getUTCDay():t._d.getDay(),null!=t._tzm&&t._d.setUTCMinutes(t._d.getUTCMinutes()-t._tzm),t._nextDay&&(t._a[xt]=24),t._w&&void 0!==t._w.d&&t._w.d!==o&&(p(t).weekdayMismatch=!0)}}function Ce(t){if(t._f!==i.ISO_8601)if(t._f!==i.RFC_2822){t._a=[],p(t).empty=!0;for(var e,n,s,r,a,l,u,c=""+t._i,h=c.length,d=0,f=F(t._f,t._locale).match(A)||[],g=0;g<f.length;g++)n=f[g],(e=(c.match(pt(n,t))||[])[0])&&(0<(s=c.substr(0,c.indexOf(e))).length&&p(t).unusedInput.push(s),c=c.slice(c.indexOf(e)+e.length),d+=e.length),P[n]?(e?p(t).empty=!1:p(t).unusedTokens.push(n),a=n,u=t,null!=(l=e)&&o(gt,a)&>[a](l,u._a,u,a)):t._strict&&!e&&p(t).unusedTokens.push(n);p(t).charsLeftOver=h-d,0<c.length&&p(t).unusedInput.push(c),t._a[xt]<=12&&!0===p(t).bigHour&&0<t._a[xt]&&(p(t).bigHour=void 0),p(t).parsedDateParts=t._a.slice(0),p(t).meridiem=t._meridiem,t._a[xt]=function(t,e,i){var n;return null==i?e:null!=t.meridiemHour?t.meridiemHour(e,i):(null!=t.isPM&&((n=t.isPM(i))&&e<12&&(e+=12),n||12!==e||(e=0)),e)}(t._locale,t._a[xt],t._meridiem),null!==(r=p(t).era)&&(t._a[_t]=t._locale.erasConvertYear(r,t._a[_t])),ke(t),he(t)}else we(t);else be(t)}function Se(t){var e,o,r=t._i,d=t._f;return t._locale=t._locale||ce(t._l),null===r||void 0===d&&""===r?g({nullInput:!0}):("string"==typeof r&&(t._i=r=t._locale.preparse(r)),b(r)?new _(he(r)):(u(r)?t._d=r:n(d)?function(t){var e,i,n,s,o,r,a=!1;if(0===t._f.length)return p(t).invalidFormat=!0,t._d=new Date(NaN);for(s=0;s<t._f.length;s++)o=0,r=!1,e=y({},t),null!=t._useUTC&&(e._useUTC=t._useUTC),e._f=t._f[s],Ce(e),f(e)&&(r=!0),o+=p(e).charsLeftOver,o+=10*p(e).unusedTokens.length,p(e).score=o,a?o<n&&(n=o,i=e):(null==n||o<n||r)&&(n=o,i=e,r&&(a=!0));h(t,i||e)}(t):d?Ce(t):a(o=(e=t)._i)?e._d=new Date(i.now()):u(o)?e._d=new Date(o.valueOf()):"string"==typeof o?function(t){var e=ve.exec(t._i);null===e?(be(t),!1===t._isValid&&(delete t._isValid,we(t),!1===t._isValid&&(delete t._isValid,t._strict?t._isValid=!1:i.createFromInputFallback(t)))):t._d=new Date(+e[1])}(e):n(o)?(e._a=c(o.slice(0),function(t){return parseInt(t,10)}),ke(e)):s(o)?function(t){var e,i;t._d||(i=void 0===(e=z(t._i)).day?e.date:e.day,t._a=c([e.year,e.month,i,e.hour,e.minute,e.second,e.millisecond],function(t){return t&&parseInt(t,10)}),ke(t))}(e):l(o)?e._d=new Date(o):i.createFromInputFallback(e),f(t)||(t._d=null),t))}function De(t,e,i,o,a){var l,u={};return!0!==e&&!1!==e||(o=e,e=void 0),!0!==i&&!1!==i||(o=i,i=void 0),(s(t)&&r(t)||n(t)&&0===t.length)&&(t=void 0),u._isAMomentObject=!0,u._useUTC=u._isUTC=a,u._l=i,u._i=t,u._f=e,u._strict=o,(l=new _(he(Se(u))))._nextDay&&(l.add(1,"d"),l._nextDay=void 0),l}function Te(t,e,i,n){return De(t,e,i,n,!1)}i.createFromInputFallback=x("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(t){t._d=new Date(t._i+(t._useUTC?" UTC":""))}),i.ISO_8601=function(){},i.RFC_2822=function(){};var Me=x("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=Te.apply(null,arguments);return this.isValid()&&t.isValid()?t<this?this:t:g()}),je=x("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var t=Te.apply(null,arguments);return this.isValid()&&t.isValid()?this<t?this:t:g()});function Ae(t,e){var i,s;if(1===e.length&&n(e[0])&&(e=e[0]),!e.length)return Te();for(i=e[0],s=1;s<e.length;++s)e[s].isValid()&&!e[s][t](i)||(i=e[s]);return i}var Oe=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ee(t){var e=z(t),i=e.year||0,n=e.quarter||0,s=e.month||0,r=e.week||e.isoWeek||0,a=e.day||0,l=e.hour||0,u=e.minute||0,c=e.second||0,h=e.millisecond||0;this._isValid=function(t){var e,i,n=!1;for(e in t)if(o(t,e)&&(-1===yt.call(Oe,e)||null!=t[e]&&isNaN(t[e])))return!1;for(i=0;i<Oe.length;++i)if(t[Oe[i]]){if(n)return!1;parseFloat(t[Oe[i]])!==B(t[Oe[i]])&&(n=!0)}return!0}(e),this._milliseconds=+h+1e3*c+6e4*u+1e3*l*60*60,this._days=+a+7*r,this._months=+s+3*n+12*i,this._data={},this._locale=ce(),this._bubble()}function Pe(t){return t instanceof Ee}function Ie(t){return t<0?-1*Math.round(-1*t):Math.round(t)}function Ne(t,e){I(t,0,0,function(){var t=this.utcOffset(),i="+";return t<0&&(t=-t,i="-"),i+j(~~(t/60),2)+e+j(~~t%60,2)})}Ne("Z",":"),Ne("ZZ",""),dt("Z",ct),dt("ZZ",ct),mt(["Z","ZZ"],function(t,e,i){i._useUTC=!0,i._tzm=Le(ct,t)});var Fe=/([\+\-]|\d\d)/gi;function Le(t,e){var i,n,s=(e||"").match(t);return null===s?null:0===(n=60*(i=((s[s.length-1]||[])+"").match(Fe)||["-",0,0])[1]+B(i[2]))?0:"+"===i[0]?n:-n}function Re(t,e){var n,s;return e._isUTC?(n=e.clone(),s=(b(t)||u(t)?t.valueOf():Te(t).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+s),i.updateOffset(n,!1),n):Te(t).local()}function He(t){return-Math.round(t._d.getTimezoneOffset())}function ze(){return!!this.isValid()&&this._isUTC&&0===this._offset}i.updateOffset=function(){};var We=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,Ye=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ue(t,e){var i,n,s,r=t,a=null;return Pe(t)?r={ms:t._milliseconds,d:t._days,M:t._months}:l(t)||!isNaN(+t)?(r={},e?r[e]=+t:r.milliseconds=+t):(a=We.exec(t))?(i="-"===a[1]?-1:1,r={y:0,d:B(a[wt])*i,h:B(a[xt])*i,m:B(a[kt])*i,s:B(a[Ct])*i,ms:B(Ie(1e3*a[St]))*i}):(a=Ye.exec(t))?(i="-"===a[1]?-1:1,r={y:qe(a[2],i),M:qe(a[3],i),w:qe(a[4],i),d:qe(a[5],i),h:qe(a[6],i),m:qe(a[7],i),s:qe(a[8],i)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(s=function(t,e){var i;return t.isValid()&&e.isValid()?(e=Re(e,t),t.isBefore(e)?i=Be(t,e):((i=Be(e,t)).milliseconds=-i.milliseconds,i.months=-i.months),i):{milliseconds:0,months:0}}(Te(r.from),Te(r.to)),(r={}).ms=s.milliseconds,r.M=s.months),n=new Ee(r),Pe(t)&&o(t,"_locale")&&(n._locale=t._locale),Pe(t)&&o(t,"_isValid")&&(n._isValid=t._isValid),n}function qe(t,e){var i=t&&parseFloat(t.replace(",","."));return(isNaN(i)?0:i)*e}function Be(t,e){var i={};return i.months=e.month()-t.month()+12*(e.year()-t.year()),t.clone().add(i.months,"M").isAfter(e)&&--i.months,i.milliseconds=e-t.clone().add(i.months,"M"),i}function Ve(t,e){return function(i,n){var s;return null===n||isNaN(+n)||(S(e,"moment()."+e+"(period, number) is deprecated. Please use moment()."+e+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),s=i,i=n,n=s),$e(this,Ue(i,n),t),this}}function $e(t,e,n,s){var o=e._milliseconds,r=Ie(e._days),a=Ie(e._months);t.isValid()&&(s=null==s||s,a&&It(t,$(t,"Month")+a*n),r&&G(t,"Date",$(t,"Date")+r*n),o&&t._d.setTime(t._d.valueOf()+o*n),s&&i.updateOffset(t,r||a))}Ue.fn=Ee.prototype,Ue.invalid=function(){return Ue(NaN)};var Ge=Ve(1,"add"),Ke=Ve(-1,"subtract");function Xe(t){return"string"==typeof t||t instanceof String}function Je(t,e){if(t.date()<e.date())return-Je(e,t);var i=12*(e.year()-t.year())+(e.month()-t.month()),n=t.clone().add(i,"months");return-(i+(e-n<0?(e-n)/(n-t.clone().add(i-1,"months")):(e-n)/(t.clone().add(1+i,"months")-n)))||0}function Ze(t){var e;return void 0===t?this._locale._abbr:(null!=(e=ce(t))&&(this._locale=e),this)}i.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",i.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Qe=x("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(t){return void 0===t?this.localeData():this.locale(t)});function ti(){return this._locale}var ei=126227808e5;function ii(t,e){return(t%e+e)%e}function ni(t,e,i){return t<100&&0<=t?new Date(t+400,e,i)-ei:new Date(t,e,i).valueOf()}function si(t,e,i){return t<100&&0<=t?Date.UTC(t+400,e,i)-ei:Date.UTC(t,e,i)}function oi(t,e){return e.erasAbbrRegex(t)}function ri(){for(var t=[],e=[],i=[],n=[],s=this.eras(),o=0,r=s.length;o<r;++o)e.push(ft(s[o].name)),t.push(ft(s[o].abbr)),i.push(ft(s[o].narrow)),n.push(ft(s[o].name)),n.push(ft(s[o].abbr)),n.push(ft(s[o].narrow));this._erasRegex=new RegExp("^("+n.join("|")+")","i"),this._erasNameRegex=new RegExp("^("+e.join("|")+")","i"),this._erasAbbrRegex=new RegExp("^("+t.join("|")+")","i"),this._erasNarrowRegex=new RegExp("^("+i.join("|")+")","i")}function ai(t,e){I(0,[t,t.length],0,e)}function li(t,e,i,n,s){var o;return null==t?Yt(this,n,s).year:((o=Ut(t,n,s))<e&&(e=o),function(t,e,i,n,s){var o=Wt(t,e,i,n,s),r=Ht(o.year,0,o.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}.call(this,t,e,i,n,s))}I("N",0,0,"eraAbbr"),I("NN",0,0,"eraAbbr"),I("NNN",0,0,"eraAbbr"),I("NNNN",0,0,"eraName"),I("NNNNN",0,0,"eraNarrow"),I("y",["y",1],"yo","eraYear"),I("y",["yy",2],0,"eraYear"),I("y",["yyy",3],0,"eraYear"),I("y",["yyyy",4],0,"eraYear"),dt("N",oi),dt("NN",oi),dt("NNN",oi),dt("NNNN",function(t,e){return e.erasNameRegex(t)}),dt("NNNNN",function(t,e){return e.erasNarrowRegex(t)}),mt(["N","NN","NNN","NNNN","NNNNN"],function(t,e,i,n){var s=i._locale.erasParse(t,n,i._strict);s?p(i).era=s:p(i).invalidEra=t}),dt("y",at),dt("yy",at),dt("yyy",at),dt("yyyy",at),dt("yo",function(t,e){return e._eraYearOrdinalRegex||at}),mt(["y","yy","yyy","yyyy"],_t),mt(["yo"],function(t,e,i,n){var s;i._locale._eraYearOrdinalRegex&&(s=t.match(i._locale._eraYearOrdinalRegex)),i._locale.eraYearOrdinalParse?e[_t]=i._locale.eraYearOrdinalParse(t,s):e[_t]=parseInt(t,10)}),I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),ai("gggg","weekYear"),ai("ggggg","weekYear"),ai("GGGG","isoWeekYear"),ai("GGGGG","isoWeekYear"),R("weekYear","gg"),R("isoWeekYear","GG"),Y("weekYear",1),Y("isoWeekYear",1),dt("G",lt),dt("g",lt),dt("GG",et,J),dt("gg",et,J),dt("GGGG",ot,Q),dt("gggg",ot,Q),dt("GGGGG",rt,tt),dt("ggggg",rt,tt),vt(["gggg","ggggg","GGGG","GGGGG"],function(t,e,i,n){e[n.substr(0,2)]=B(t)}),vt(["gg","GG"],function(t,e,n,s){e[s]=i.parseTwoDigitYear(t)}),I("Q",0,"Qo","quarter"),R("quarter","Q"),Y("quarter",7),dt("Q",X),mt("Q",function(t,e){e[bt]=3*(B(t)-1)}),I("D",["DD",2],"Do","date"),R("date","D"),Y("date",9),dt("D",et),dt("DD",et,J),dt("Do",function(t,e){return t?e._dayOfMonthOrdinalParse||e._ordinalParse:e._dayOfMonthOrdinalParseLenient}),mt(["D","DD"],wt),mt("Do",function(t,e){e[wt]=B(t.match(et)[0])});var ui=V("Date",!0);I("DDD",["DDDD",3],"DDDo","dayOfYear"),R("dayOfYear","DDD"),Y("dayOfYear",4),dt("DDD",st),dt("DDDD",Z),mt(["DDD","DDDD"],function(t,e,i){i._dayOfYear=B(t)}),I("m",["mm",2],0,"minute"),R("minute","m"),Y("minute",14),dt("m",et),dt("mm",et,J),mt(["m","mm"],kt);var ci=V("Minutes",!1);I("s",["ss",2],0,"second"),R("second","s"),Y("second",15),dt("s",et),dt("ss",et,J),mt(["s","ss"],Ct);var hi,di,pi=V("Seconds",!1);for(I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),I(0,["SSS",3],0,"millisecond"),I(0,["SSSS",4],0,function(){return 10*this.millisecond()}),I(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),I(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),I(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),I(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),I(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),R("millisecond","ms"),Y("millisecond",16),dt("S",st,X),dt("SS",st,J),dt("SSS",st,Z),hi="SSSS";hi.length<=9;hi+="S")dt(hi,at);function fi(t,e){e[St]=B(1e3*("0."+t))}for(hi="S";hi.length<=9;hi+="S")mt(hi,fi);di=V("Milliseconds",!1),I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var gi=_.prototype;function mi(t){return t}gi.add=Ge,gi.calendar=function(t,e){1===arguments.length&&(arguments[0]?function(t){return b(t)||u(t)||Xe(t)||l(t)||function(t){var e=n(t),i=!1;return e&&(i=0===t.filter(function(e){return!l(e)&&Xe(t)}).length),e&&i}(t)||function(t){var e,i=s(t)&&!r(t),n=!1,a=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"];for(e=0;e<a.length;e+=1)n=n||o(t,a[e]);return i&&n}(t)||null==t}(arguments[0])?(t=arguments[0],e=void 0):function(t){for(var e=s(t)&&!r(t),i=!1,n=["sameDay","nextDay","lastDay","nextWeek","lastWeek","sameElse"],a=0;a<n.length;a+=1)i=i||o(t,n[a]);return e&&i}(arguments[0])&&(e=arguments[0],t=void 0):e=t=void 0);var a=t||Te(),c=Re(a,this).startOf("day"),h=i.calendarFormat(this,c)||"sameElse",d=e&&(D(e[h])?e[h].call(this,a):e[h]);return this.format(d||this.localeData().calendar(h,this,Te(a)))},gi.clone=function(){return new _(this)},gi.diff=function(t,e,i){var n,s,o;if(!this.isValid())return NaN;if(!(n=Re(t,this)).isValid())return NaN;switch(s=6e4*(n.utcOffset()-this.utcOffset()),e=H(e)){case"year":o=Je(this,n)/12;break;case"month":o=Je(this,n);break;case"quarter":o=Je(this,n)/3;break;case"second":o=(this-n)/1e3;break;case"minute":o=(this-n)/6e4;break;case"hour":o=(this-n)/36e5;break;case"day":o=(this-n-s)/864e5;break;case"week":o=(this-n-s)/6048e5;break;default:o=this-n}return i?o:q(o)},gi.endOf=function(t){var e,n;if(void 0===(t=H(t))||"millisecond"===t||!this.isValid())return this;switch(n=this._isUTC?si:ni,t){case"year":e=n(this.year()+1,0,1)-1;break;case"quarter":e=n(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":e=n(this.year(),this.month()+1,1)-1;break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":e=n(this.year(),this.month(),this.date()+1)-1;break;case"hour":e=this._d.valueOf(),e+=36e5-ii(e+(this._isUTC?0:6e4*this.utcOffset()),36e5)-1;break;case"minute":e=this._d.valueOf(),e+=6e4-ii(e,6e4)-1;break;case"second":e=this._d.valueOf(),e+=1e3-ii(e,1e3)-1}return this._d.setTime(e),i.updateOffset(this,!0),this},gi.format=function(t){var e=N(this,t=t||(this.isUtc()?i.defaultFormatUtc:i.defaultFormat));return this.localeData().postformat(e)},gi.from=function(t,e){return this.isValid()&&(b(t)&&t.isValid()||Te(t).isValid())?Ue({to:this,from:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},gi.fromNow=function(t){return this.from(Te(),t)},gi.to=function(t,e){return this.isValid()&&(b(t)&&t.isValid()||Te(t).isValid())?Ue({from:this,to:t}).locale(this.locale()).humanize(!e):this.localeData().invalidDate()},gi.toNow=function(t){return this.to(Te(),t)},gi.get=function(t){return D(this[t=H(t)])?this[t]():this},gi.invalidAt=function(){return p(this).overflow},gi.isAfter=function(t,e){var i=b(t)?t:Te(t);return!(!this.isValid()||!i.isValid())&&("millisecond"===(e=H(e)||"millisecond")?this.valueOf()>i.valueOf():i.valueOf()<this.clone().startOf(e).valueOf())},gi.isBefore=function(t,e){var i=b(t)?t:Te(t);return!(!this.isValid()||!i.isValid())&&("millisecond"===(e=H(e)||"millisecond")?this.valueOf()<i.valueOf():this.clone().endOf(e).valueOf()<i.valueOf())},gi.isBetween=function(t,e,i,n){var s=b(t)?t:Te(t),o=b(e)?e:Te(e);return!!(this.isValid()&&s.isValid()&&o.isValid())&&("("===(n=n||"()")[0]?this.isAfter(s,i):!this.isBefore(s,i))&&(")"===n[1]?this.isBefore(o,i):!this.isAfter(o,i))},gi.isSame=function(t,e){var i,n=b(t)?t:Te(t);return!(!this.isValid()||!n.isValid())&&("millisecond"===(e=H(e)||"millisecond")?this.valueOf()===n.valueOf():(i=n.valueOf(),this.clone().startOf(e).valueOf()<=i&&i<=this.clone().endOf(e).valueOf()))},gi.isSameOrAfter=function(t,e){return this.isSame(t,e)||this.isAfter(t,e)},gi.isSameOrBefore=function(t,e){return this.isSame(t,e)||this.isBefore(t,e)},gi.isValid=function(){return f(this)},gi.lang=Qe,gi.locale=Ze,gi.localeData=ti,gi.max=je,gi.min=Me,gi.parsingFlags=function(){return h({},p(this))},gi.set=function(t,e){if("object"==typeof t)for(var i=function(t){var e,i=[];for(e in t)o(t,e)&&i.push({unit:e,priority:W[e]});return i.sort(function(t,e){return t.priority-e.priority}),i}(t=z(t)),n=0;n<i.length;n++)this[i[n].unit](t[i[n].unit]);else if(D(this[t=H(t)]))return this[t](e);return this},gi.startOf=function(t){var e,n;if(void 0===(t=H(t))||"millisecond"===t||!this.isValid())return this;switch(n=this._isUTC?si:ni,t){case"year":e=n(this.year(),0,1);break;case"quarter":e=n(this.year(),this.month()-this.month()%3,1);break;case"month":e=n(this.year(),this.month(),1);break;case"week":e=n(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":e=n(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":e=n(this.year(),this.month(),this.date());break;case"hour":e=this._d.valueOf(),e-=ii(e+(this._isUTC?0:6e4*this.utcOffset()),36e5);break;case"minute":e=this._d.valueOf(),e-=ii(e,6e4);break;case"second":e=this._d.valueOf(),e-=ii(e,1e3)}return this._d.setTime(e),i.updateOffset(this,!0),this},gi.subtract=Ke,gi.toArray=function(){var t=this;return[t.year(),t.month(),t.date(),t.hour(),t.minute(),t.second(),t.millisecond()]},gi.toObject=function(){var t=this;return{years:t.year(),months:t.month(),date:t.date(),hours:t.hours(),minutes:t.minutes(),seconds:t.seconds(),milliseconds:t.milliseconds()}},gi.toDate=function(){return new Date(this.valueOf())},gi.toISOString=function(t){if(!this.isValid())return null;var e=!0!==t,i=e?this.clone().utc():this;return i.year()<0||9999<i.year()?N(i,e?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):D(Date.prototype.toISOString)?e?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",N(i,"Z")):N(i,e?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},gi.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var t,e,i,n="moment",s="";return this.isLocal()||(n=0===this.utcOffset()?"moment.utc":"moment.parseZone",s="Z"),t="["+n+'("]',e=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=s+'[")]',this.format(t+e+"-MM-DD[T]HH:mm:ss.SSS"+i)},"undefined"!=typeof Symbol&&null!=Symbol.for&&(gi[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),gi.toJSON=function(){return this.isValid()?this.toISOString():null},gi.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},gi.unix=function(){return Math.floor(this.valueOf()/1e3)},gi.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},gi.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},gi.eraName=function(){for(var t,e=this.localeData().eras(),i=0,n=e.length;i<n;++i){if(t=this.clone().startOf("day").valueOf(),e[i].since<=t&&t<=e[i].until)return e[i].name;if(e[i].until<=t&&t<=e[i].since)return e[i].name}return""},gi.eraNarrow=function(){for(var t,e=this.localeData().eras(),i=0,n=e.length;i<n;++i){if(t=this.clone().startOf("day").valueOf(),e[i].since<=t&&t<=e[i].until)return e[i].narrow;if(e[i].until<=t&&t<=e[i].since)return e[i].narrow}return""},gi.eraAbbr=function(){for(var t,e=this.localeData().eras(),i=0,n=e.length;i<n;++i){if(t=this.clone().startOf("day").valueOf(),e[i].since<=t&&t<=e[i].until)return e[i].abbr;if(e[i].until<=t&&t<=e[i].since)return e[i].abbr}return""},gi.eraYear=function(){for(var t,e,n=this.localeData().eras(),s=0,o=n.length;s<o;++s)if(t=n[s].since<=n[s].until?1:-1,e=this.clone().startOf("day").valueOf(),n[s].since<=e&&e<=n[s].until||n[s].until<=e&&e<=n[s].since)return(this.year()-i(n[s].since).year())*t+n[s].offset;return this.year()},gi.year=Rt,gi.isLeapYear=function(){return U(this.year())},gi.weekYear=function(t){return li.call(this,t,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},gi.isoWeekYear=function(t){return li.call(this,t,this.isoWeek(),this.isoWeekday(),1,4)},gi.quarter=gi.quarters=function(t){return null==t?Math.ceil((this.month()+1)/3):this.month(3*(t-1)+this.month()%3)},gi.month=Nt,gi.daysInMonth=function(){return Mt(this.year(),this.month())},gi.week=gi.weeks=function(t){var e=this.localeData().week(this);return null==t?e:this.add(7*(t-e),"d")},gi.isoWeek=gi.isoWeeks=function(t){var e=Yt(this,1,4).week;return null==t?e:this.add(7*(t-e),"d")},gi.weeksInYear=function(){var t=this.localeData()._week;return Ut(this.year(),t.dow,t.doy)},gi.weeksInWeekYear=function(){var t=this.localeData()._week;return Ut(this.weekYear(),t.dow,t.doy)},gi.isoWeeksInYear=function(){return Ut(this.year(),1,4)},gi.isoWeeksInISOWeekYear=function(){return Ut(this.isoWeekYear(),1,4)},gi.date=ui,gi.day=gi.days=function(t){if(!this.isValid())return null!=t?this:NaN;var e,i,n=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=t?(e=t,i=this.localeData(),t="string"!=typeof e?e:isNaN(e)?"number"==typeof(e=i.weekdaysParse(e))?e:null:parseInt(e,10),this.add(t-n,"d")):n},gi.weekday=function(t){if(!this.isValid())return null!=t?this:NaN;var e=(this.day()+7-this.localeData()._week.dow)%7;return null==t?e:this.add(t-e,"d")},gi.isoWeekday=function(t){if(!this.isValid())return null!=t?this:NaN;if(null==t)return this.day()||7;var e,i,n=(e=t,i=this.localeData(),"string"==typeof e?i.weekdaysParse(e)%7||7:isNaN(e)?null:e);return this.day(this.day()%7?n:n-7)},gi.dayOfYear=function(t){var e=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==t?e:this.add(t-e,"d")},gi.hour=gi.hours=ie,gi.minute=gi.minutes=ci,gi.second=gi.seconds=pi,gi.millisecond=gi.milliseconds=di,gi.utcOffset=function(t,e,n){var s,o=this._offset||0;if(!this.isValid())return null!=t?this:NaN;if(null==t)return this._isUTC?o:He(this);if("string"==typeof t){if(null===(t=Le(ct,t)))return this}else Math.abs(t)<16&&!n&&(t*=60);return!this._isUTC&&e&&(s=He(this)),this._offset=t,this._isUTC=!0,null!=s&&this.add(s,"m"),o!==t&&(!e||this._changeInProgress?$e(this,Ue(t-o,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,i.updateOffset(this,!0),this._changeInProgress=null)),this},gi.utc=function(t){return this.utcOffset(0,t)},gi.local=function(t){return this._isUTC&&(this.utcOffset(0,t),this._isUTC=!1,t&&this.subtract(He(this),"m")),this},gi.parseZone=function(){var t;return null!=this._tzm?this.utcOffset(this._tzm,!1,!0):"string"==typeof this._i&&(null!=(t=Le(ut,this._i))?this.utcOffset(t):this.utcOffset(0,!0)),this},gi.hasAlignedHourOffset=function(t){return!!this.isValid()&&(t=t?Te(t).utcOffset():0,(this.utcOffset()-t)%60==0)},gi.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},gi.isLocal=function(){return!!this.isValid()&&!this._isUTC},gi.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},gi.isUtc=ze,gi.isUTC=ze,gi.zoneAbbr=function(){return this._isUTC?"UTC":""},gi.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},gi.dates=x("dates accessor is deprecated. Use date instead.",ui),gi.months=x("months accessor is deprecated. Use month instead",Nt),gi.years=x("years accessor is deprecated. Use year instead",Rt),gi.zone=x("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(t,e){return null!=t?("string"!=typeof t&&(t=-t),this.utcOffset(t,e),this):-this.utcOffset()}),gi.isDSTShifted=x("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!a(this._isDSTShifted))return this._isDSTShifted;var t,e={};return y(e,this),(e=Se(e))._a?(t=(e._isUTC?d:Te)(e._a),this._isDSTShifted=this.isValid()&&0<function(t,e,i){for(var n=Math.min(t.length,e.length),s=Math.abs(t.length-e.length),o=0,r=0;r<n;r++)B(t[r])!==B(e[r])&&o++;return o+s}(e._a,t.toArray())):this._isDSTShifted=!1,this._isDSTShifted});var vi=M.prototype;function yi(t,e,i,n){var s=ce(),o=d().set(n,e);return s[i](o,t)}function _i(t,e,i){if(l(t)&&(e=t,t=void 0),t=t||"",null!=e)return yi(t,e,i,"month");for(var n=[],s=0;s<12;s++)n[s]=yi(t,s,i,"month");return n}function bi(t,e,i,n){"boolean"==typeof t?l(e)&&(i=e,e=void 0):(e=t,t=!1,l(i=e)&&(i=e,e=void 0)),e=e||"";var s,o=ce(),r=t?o._week.dow:0,a=[];if(null!=i)return yi(e,(i+r)%7,n,"day");for(s=0;s<7;s++)a[s]=yi(e,(s+r)%7,n,"day");return a}vi.calendar=function(t,e,i){var n=this._calendar[t]||this._calendar.sameElse;return D(n)?n.call(e,i):n},vi.longDateFormat=function(t){var e=this._longDateFormat[t],i=this._longDateFormat[t.toUpperCase()];return e||!i?e:(this._longDateFormat[t]=i.match(A).map(function(t){return"MMMM"===t||"MM"===t||"DD"===t||"dddd"===t?t.slice(1):t}).join(""),this._longDateFormat[t])},vi.invalidDate=function(){return this._invalidDate},vi.ordinal=function(t){return this._ordinal.replace("%d",t)},vi.preparse=mi,vi.postformat=mi,vi.relativeTime=function(t,e,i,n){var s=this._relativeTime[i];return D(s)?s(t,e,i,n):s.replace(/%d/i,t)},vi.pastFuture=function(t,e){var i=this._relativeTime[0<t?"future":"past"];return D(i)?i(e):i.replace(/%s/i,e)},vi.set=function(t){var e,i;for(i in t)o(t,i)&&(D(e=t[i])?this[i]=e:this["_"+i]=e);this._config=t,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},vi.eras=function(t,e){for(var n,s=this._eras||ce("en")._eras,o=0,r=s.length;o<r;++o){switch(typeof s[o].since){case"string":n=i(s[o].since).startOf("day"),s[o].since=n.valueOf()}switch(typeof s[o].until){case"undefined":s[o].until=1/0;break;case"string":n=i(s[o].until).startOf("day").valueOf(),s[o].until=n.valueOf()}}return s},vi.erasParse=function(t,e,i){var n,s,o,r,a,l=this.eras();for(t=t.toUpperCase(),n=0,s=l.length;n<s;++n)if(o=l[n].name.toUpperCase(),r=l[n].abbr.toUpperCase(),a=l[n].narrow.toUpperCase(),i)switch(e){case"N":case"NN":case"NNN":if(r===t)return l[n];break;case"NNNN":if(o===t)return l[n];break;case"NNNNN":if(a===t)return l[n]}else if(0<=[o,r,a].indexOf(t))return l[n]},vi.erasConvertYear=function(t,e){var n=t.since<=t.until?1:-1;return void 0===e?i(t.since).year():i(t.since).year()+(e-t.offset)*n},vi.erasAbbrRegex=function(t){return o(this,"_erasAbbrRegex")||ri.call(this),t?this._erasAbbrRegex:this._erasRegex},vi.erasNameRegex=function(t){return o(this,"_erasNameRegex")||ri.call(this),t?this._erasNameRegex:this._erasRegex},vi.erasNarrowRegex=function(t){return o(this,"_erasNarrowRegex")||ri.call(this),t?this._erasNarrowRegex:this._erasRegex},vi.months=function(t,e){return t?n(this._months)?this._months[t.month()]:this._months[(this._months.isFormat||Ot).test(e)?"format":"standalone"][t.month()]:n(this._months)?this._months:this._months.standalone},vi.monthsShort=function(t,e){return t?n(this._monthsShort)?this._monthsShort[t.month()]:this._monthsShort[Ot.test(e)?"format":"standalone"][t.month()]:n(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},vi.monthsParse=function(t,e,i){var n,s,o;if(this._monthsParseExact)return function(t,e,i){var n,s,o,r=t.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],n=0;n<12;++n)o=d([2e3,n]),this._shortMonthsParse[n]=this.monthsShort(o,"").toLocaleLowerCase(),this._longMonthsParse[n]=this.months(o,"").toLocaleLowerCase();return i?"MMM"===e?-1!==(s=yt.call(this._shortMonthsParse,r))?s:null:-1!==(s=yt.call(this._longMonthsParse,r))?s:null:"MMM"===e?-1!==(s=yt.call(this._shortMonthsParse,r))||-1!==(s=yt.call(this._longMonthsParse,r))?s:null:-1!==(s=yt.call(this._longMonthsParse,r))||-1!==(s=yt.call(this._shortMonthsParse,r))?s:null}.call(this,t,e,i);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),n=0;n<12;n++){if(s=d([2e3,n]),i&&!this._longMonthsParse[n]&&(this._longMonthsParse[n]=new RegExp("^"+this.months(s,"").replace(".","")+"$","i"),this._shortMonthsParse[n]=new RegExp("^"+this.monthsShort(s,"").replace(".","")+"$","i")),i||this._monthsParse[n]||(o="^"+this.months(s,"")+"|^"+this.monthsShort(s,""),this._monthsParse[n]=new RegExp(o.replace(".",""),"i")),i&&"MMMM"===e&&this._longMonthsParse[n].test(t))return n;if(i&&"MMM"===e&&this._shortMonthsParse[n].test(t))return n;if(!i&&this._monthsParse[n].test(t))return n}},vi.monthsRegex=function(t){return this._monthsParseExact?(o(this,"_monthsRegex")||Ft.call(this),t?this._monthsStrictRegex:this._monthsRegex):(o(this,"_monthsRegex")||(this._monthsRegex=Pt),this._monthsStrictRegex&&t?this._monthsStrictRegex:this._monthsRegex)},vi.monthsShortRegex=function(t){return this._monthsParseExact?(o(this,"_monthsRegex")||Ft.call(this),t?this._monthsShortStrictRegex:this._monthsShortRegex):(o(this,"_monthsShortRegex")||(this._monthsShortRegex=Et),this._monthsShortStrictRegex&&t?this._monthsShortStrictRegex:this._monthsShortRegex)},vi.week=function(t){return Yt(t,this._week.dow,this._week.doy).week},vi.firstDayOfYear=function(){return this._week.doy},vi.firstDayOfWeek=function(){return this._week.dow},vi.weekdays=function(t,e){var i=n(this._weekdays)?this._weekdays:this._weekdays[t&&!0!==t&&this._weekdays.isFormat.test(e)?"format":"standalone"];return!0===t?qt(i,this._week.dow):t?i[t.day()]:i},vi.weekdaysMin=function(t){return!0===t?qt(this._weekdaysMin,this._week.dow):t?this._weekdaysMin[t.day()]:this._weekdaysMin},vi.weekdaysShort=function(t){return!0===t?qt(this._weekdaysShort,this._week.dow):t?this._weekdaysShort[t.day()]:this._weekdaysShort},vi.weekdaysParse=function(t,e,i){var n,s,o;if(this._weekdaysParseExact)return function(t,e,i){var n,s,o,r=t.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],n=0;n<7;++n)o=d([2e3,1]).day(n),this._minWeekdaysParse[n]=this.weekdaysMin(o,"").toLocaleLowerCase(),this._shortWeekdaysParse[n]=this.weekdaysShort(o,"").toLocaleLowerCase(),this._weekdaysParse[n]=this.weekdays(o,"").toLocaleLowerCase();return i?"dddd"===e?-1!==(s=yt.call(this._weekdaysParse,r))?s:null:"ddd"===e?-1!==(s=yt.call(this._shortWeekdaysParse,r))?s:null:-1!==(s=yt.call(this._minWeekdaysParse,r))?s:null:"dddd"===e?-1!==(s=yt.call(this._weekdaysParse,r))||-1!==(s=yt.call(this._shortWeekdaysParse,r))||-1!==(s=yt.call(this._minWeekdaysParse,r))?s:null:"ddd"===e?-1!==(s=yt.call(this._shortWeekdaysParse,r))||-1!==(s=yt.call(this._weekdaysParse,r))||-1!==(s=yt.call(this._minWeekdaysParse,r))?s:null:-1!==(s=yt.call(this._minWeekdaysParse,r))||-1!==(s=yt.call(this._weekdaysParse,r))||-1!==(s=yt.call(this._shortWeekdaysParse,r))?s:null}.call(this,t,e,i);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),n=0;n<7;n++){if(s=d([2e3,1]).day(n),i&&!this._fullWeekdaysParse[n]&&(this._fullWeekdaysParse[n]=new RegExp("^"+this.weekdays(s,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[n]=new RegExp("^"+this.weekdaysShort(s,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[n]=new RegExp("^"+this.weekdaysMin(s,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[n]||(o="^"+this.weekdays(s,"")+"|^"+this.weekdaysShort(s,"")+"|^"+this.weekdaysMin(s,""),this._weekdaysParse[n]=new RegExp(o.replace(".",""),"i")),i&&"dddd"===e&&this._fullWeekdaysParse[n].test(t))return n;if(i&&"ddd"===e&&this._shortWeekdaysParse[n].test(t))return n;if(i&&"dd"===e&&this._minWeekdaysParse[n].test(t))return n;if(!i&&this._weekdaysParse[n].test(t))return n}},vi.weekdaysRegex=function(t){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||Jt.call(this),t?this._weekdaysStrictRegex:this._weekdaysRegex):(o(this,"_weekdaysRegex")||(this._weekdaysRegex=Gt),this._weekdaysStrictRegex&&t?this._weekdaysStrictRegex:this._weekdaysRegex)},vi.weekdaysShortRegex=function(t){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||Jt.call(this),t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(o(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Kt),this._weekdaysShortStrictRegex&&t?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},vi.weekdaysMinRegex=function(t){return this._weekdaysParseExact?(o(this,"_weekdaysRegex")||Jt.call(this),t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(o(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Xt),this._weekdaysMinStrictRegex&&t?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},vi.isPM=function(t){return"p"===(t+"").toLowerCase().charAt(0)},vi.meridiem=function(t,e,i){return 11<t?i?"pm":"PM":i?"am":"AM"},le("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(t){var e=t%10;return t+(1===B(t%100/10)?"th":1==e?"st":2==e?"nd":3==e?"rd":"th")}}),i.lang=x("moment.lang is deprecated. Use moment.locale instead.",le),i.langData=x("moment.langData is deprecated. Use moment.localeData instead.",ce);var wi=Math.abs;function xi(t,e,i,n){var s=Ue(e,i);return t._milliseconds+=n*s._milliseconds,t._days+=n*s._days,t._months+=n*s._months,t._bubble()}function ki(t){return t<0?Math.floor(t):Math.ceil(t)}function Ci(t){return 4800*t/146097}function Si(t){return 146097*t/4800}function Di(t){return function(){return this.as(t)}}var Ti=Di("ms"),Mi=Di("s"),ji=Di("m"),Ai=Di("h"),Oi=Di("d"),Ei=Di("w"),Pi=Di("M"),Ii=Di("Q"),Ni=Di("y");function Fi(t){return function(){return this.isValid()?this._data[t]:NaN}}var Li=Fi("milliseconds"),Ri=Fi("seconds"),Hi=Fi("minutes"),zi=Fi("hours"),Wi=Fi("days"),Yi=Fi("months"),Ui=Fi("years"),qi=Math.round,Bi={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};var Vi=Math.abs;function $i(t){return(0<t)-(t<0)||+t}function Gi(){if(!this.isValid())return this.localeData().invalidDate();var t,e,i,n,s,o,r,a,l=Vi(this._milliseconds)/1e3,u=Vi(this._days),c=Vi(this._months),h=this.asSeconds();return h?(t=q(l/60),e=q(t/60),l%=60,t%=60,i=q(c/12),c%=12,n=l?l.toFixed(3).replace(/\.?0+$/,""):"",s=h<0?"-":"",o=$i(this._months)!==$i(h)?"-":"",r=$i(this._days)!==$i(h)?"-":"",a=$i(this._milliseconds)!==$i(h)?"-":"",s+"P"+(i?o+i+"Y":"")+(c?o+c+"M":"")+(u?r+u+"D":"")+(e||t||l?"T":"")+(e?a+e+"H":"")+(t?a+t+"M":"")+(l?a+n+"S":"")):"P0D"}var Ki=Ee.prototype;return Ki.isValid=function(){return this._isValid},Ki.abs=function(){var t=this._data;return this._milliseconds=wi(this._milliseconds),this._days=wi(this._days),this._months=wi(this._months),t.milliseconds=wi(t.milliseconds),t.seconds=wi(t.seconds),t.minutes=wi(t.minutes),t.hours=wi(t.hours),t.months=wi(t.months),t.years=wi(t.years),this},Ki.add=function(t,e){return xi(this,t,e,1)},Ki.subtract=function(t,e){return xi(this,t,e,-1)},Ki.as=function(t){if(!this.isValid())return NaN;var e,i,n=this._milliseconds;if("month"===(t=H(t))||"quarter"===t||"year"===t)switch(e=this._days+n/864e5,i=this._months+Ci(e),t){case"month":return i;case"quarter":return i/3;case"year":return i/12}else switch(e=this._days+Math.round(Si(this._months)),t){case"week":return e/7+n/6048e5;case"day":return e+n/864e5;case"hour":return 24*e+n/36e5;case"minute":return 1440*e+n/6e4;case"second":return 86400*e+n/1e3;case"millisecond":return Math.floor(864e5*e)+n;default:throw new Error("Unknown unit "+t)}},Ki.asMilliseconds=Ti,Ki.asSeconds=Mi,Ki.asMinutes=ji,Ki.asHours=Ai,Ki.asDays=Oi,Ki.asWeeks=Ei,Ki.asMonths=Pi,Ki.asQuarters=Ii,Ki.asYears=Ni,Ki.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*B(this._months/12):NaN},Ki._bubble=function(){var t,e,i,n,s,o=this._milliseconds,r=this._days,a=this._months,l=this._data;return 0<=o&&0<=r&&0<=a||o<=0&&r<=0&&a<=0||(o+=864e5*ki(Si(a)+r),a=r=0),l.milliseconds=o%1e3,t=q(o/1e3),l.seconds=t%60,e=q(t/60),l.minutes=e%60,i=q(e/60),l.hours=i%24,r+=q(i/24),a+=s=q(Ci(r)),r-=ki(Si(s)),n=q(a/12),a%=12,l.days=r,l.months=a,l.years=n,this},Ki.clone=function(){return Ue(this)},Ki.get=function(t){return t=H(t),this.isValid()?this[t+"s"]():NaN},Ki.milliseconds=Li,Ki.seconds=Ri,Ki.minutes=Hi,Ki.hours=zi,Ki.days=Wi,Ki.weeks=function(){return q(this.days()/7)},Ki.months=Yi,Ki.years=Ui,Ki.humanize=function(t,e){if(!this.isValid())return this.localeData().invalidDate();var i,n,s=!1,o=Bi;return"object"==typeof t&&(e=t,t=!1),"boolean"==typeof t&&(s=t),"object"==typeof e&&(o=Object.assign({},Bi,e),null!=e.s&&null==e.ss&&(o.ss=e.s-1)),n=function(t,e,i,n){var s=Ue(t).abs(),o=qi(s.as("s")),r=qi(s.as("m")),a=qi(s.as("h")),l=qi(s.as("d")),u=qi(s.as("M")),c=qi(s.as("w")),h=qi(s.as("y")),d=(o<=i.ss?["s",o]:o<i.s&&["ss",o])||r<=1&&["m"]||r<i.m&&["mm",r]||a<=1&&["h"]||a<i.h&&["hh",a]||l<=1&&["d"]||l<i.d&&["dd",l];return null!=i.w&&(d=d||c<=1&&["w"]||c<i.w&&["ww",c]),(d=d||u<=1&&["M"]||u<i.M&&["MM",u]||h<=1&&["y"]||["yy",h])[2]=e,d[3]=0<+t,d[4]=n,function(t,e,i,n,s){return s.relativeTime(e||1,!!i,t,n)}.apply(null,d)}(this,!s,o,i=this.localeData()),s&&(n=i.pastFuture(+this,n)),i.postformat(n)},Ki.toISOString=Gi,Ki.toString=Gi,Ki.toJSON=Gi,Ki.locale=Ze,Ki.localeData=ti,Ki.toIsoString=x("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Gi),Ki.lang=Qe,I("X",0,0,"unix"),I("x",0,0,"valueOf"),dt("x",lt),dt("X",/[+-]?\d+(\.\d{1,3})?/),mt("X",function(t,e,i){i._d=new Date(1e3*parseFloat(t))}),mt("x",function(t,e,i){i._d=new Date(B(t))}),i.version="2.29.1",t=Te,i.fn=gi,i.min=function(){return Ae("isBefore",[].slice.call(arguments,0))},i.max=function(){return Ae("isAfter",[].slice.call(arguments,0))},i.now=function(){return Date.now?Date.now():+new Date},i.utc=d,i.unix=function(t){return Te(1e3*t)},i.months=function(t,e){return _i(t,e,"months")},i.isDate=u,i.locale=le,i.invalid=g,i.duration=Ue,i.isMoment=b,i.weekdays=function(t,e,i){return bi(t,e,i,"weekdays")},i.parseZone=function(){return Te.apply(null,arguments).parseZone()},i.localeData=ce,i.isDuration=Pe,i.monthsShort=function(t,e){return _i(t,e,"monthsShort")},i.weekdaysMin=function(t,e,i){return bi(t,e,i,"weekdaysMin")},i.defineLocale=ue,i.updateLocale=function(t,e){var i,n,s;return null!=e?(s=ne,null!=se[t]&&null!=se[t].parentLocale?se[t].set(T(se[t]._config,e)):(null!=(n=ae(t))&&(s=n._config),e=T(s,e),null==n&&(e.abbr=t),(i=new M(e)).parentLocale=se[t],se[t]=i),le(t)):null!=se[t]&&(null!=se[t].parentLocale?(se[t]=se[t].parentLocale,t===le()&&le(t)):null!=se[t]&&delete se[t]),se[t]},i.locales=function(){return k(se)},i.weekdaysShort=function(t,e,i){return bi(t,e,i,"weekdaysShort")},i.normalizeUnits=H,i.relativeTimeRounding=function(t){return void 0===t?qi:"function"==typeof t&&(qi=t,!0)},i.relativeTimeThreshold=function(t,e){return void 0!==Bi[t]&&(void 0===e?Bi[t]:(Bi[t]=e,"s"===t&&(Bi.ss=e-1),!0))},i.calendarFormat=function(t,e){var i=t.diff(e,"days",!0);return i<-6?"sameElse":i<-1?"lastWeek":i<0?"lastDay":i<1?"sameDay":i<2?"nextDay":i<7?"nextWeek":"sameElse"},i.prototype=gi,i.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},i}),function(t,e,i){function n(e,n,s){var o,r,a,l;return a=t("<div></div>").addClass(e+"-presets"),l=t("<ul></ul>"),t.ui.menu.prototype.options.items===i?(o='<li><a href="#">',r="</a></li>"):(o="<li><div>",r="</div></li>"),t.each(n.presetRanges,function(){t(o+this.text+r).data("dateStart",this.dateStart).data("dateEnd",this.dateEnd).click(s).appendTo(l)}),a.append(l),l.menu().data("ui-menu").delay=0,{getElement:function(){return a}}}function s(i,s,r){function a(){if(r.autoFitCalendars){var i=t(e).width(),n=b.outerWidth(!0),s=C.getElement(),o=s.datepicker("option","numberOfMonths"),l=o;if(n>i){for(;1<o&&b.outerWidth(!0)>i;)s.datepicker("option","numberOfMonths",--o);o!==l&&(a.monthWidth=(n-b.outerWidth(!0))/(l-o))}else for(;o<a.numberOfMonths&&i-b.outerWidth(!0)>=a.monthWidth;)s.datepicker("option","numberOfMonths",++o);g(),T=!1}}function l(e){var i=r.dateFormat;return t.datepicker.formatDate(i,e.start)+(+e.end!=+e.start?r.rangeSplitter+t.datepicker.formatDate(i,e.end):"")}function u(e){var i=r.altFormat,n={};return n.start=t.datepicker.formatDate(i,e.start),n.end=t.datepicker.formatDate(i,e.end),JSON.stringify(n)}function c(){var t=d();t?(x.setLabel(l(t)),C.setRange(t)):C.reset()}function h(t,e){var n=t||C.getRange();n.start&&(n.end||(n.end=n.start),t&&C.setRange(n),x.setLabel(l(n)),i.val(u(n)).change(),r.onChange&&r.onChange(),s._trigger("change",e,{instance:s}))}function d(){return function(e){var i=r.altFormat,n=null;if(e)try{n=JSON.parse(e,function(e,n){return e?t.datepicker.parseDate(i,n):n})}catch(t){}return n}(i.val())}function p(t){x.reset(),C.reset(),r.onClear&&r.onClear(),s._trigger("clear",t,{instance:s})}function f(e){var i=(n=t(this)).data("dateStart")().startOf("day").toDate(),n=n.data("dateEnd")().startOf("day").toDate();return C.setRange({start:i,end:n}),r.applyOnMenuSelect&&(y(e),h(null,e)),!1}function g(){b.position({my:"left top",at:"left bottom"+(0>r.verticalOffset?r.verticalOffset:"+"+r.verticalOffset),of:x.getElement(),collision:"flipfit flipfit",using:function(t,e){var i,n=j,s=e.element.top+e.element.height/2,o=e.target.top+e.target.height/2,a=A;(j=e.element.left+e.element.width/2>e.target.left+e.target.width/2?1:0)!==n&&(r.mirrorOnCollision&&(i=0===j?k:C,b.children().first().append(i.getElement())),b.removeClass("comiseo-daterangepicker-"+M[n]),b.addClass("comiseo-daterangepicker-"+M[j])),b.css({left:t.left,top:t.top}),(A=s>o?3:2)!==a&&(null!==a&&x.getElement().removeClass("comiseo-daterangepicker-"+M[a]),x.getElement().addClass("comiseo-daterangepicker-"+M[A])),n=3===A&&e.element.top-e.target.top!==e.target.height+r.verticalOffset||2===A&&e.target.top-e.element.top!==e.element.height+r.verticalOffset,x.getElement().toggleClass("comiseo-daterangepicker-vfit",n)}})}function m(e){switch(e.which){case t.ui.keyCode.UP:case t.ui.keyCode.DOWN:e.preventDefault(),e.stopPropagation(),v(e);break;case t.ui.keyCode.ESCAPE:e.preventDefault(),e.stopPropagation(),y(e),c();break;case t.ui.keyCode.TAB:y(e)}}function v(t){D||(x.getElement().addClass("comiseo-daterangepicker-active"),w.show(),D=!0,T&&a(),C.scrollToRangeStart(),b.show(),g()),r.onOpen&&r.onOpen(),s._trigger("open",t,{instance:s})}function y(t){D&&(b.hide(),w.hide(),x.getElement().removeClass("comiseo-daterangepicker-active"),D=!1),r.onClose&&r.onClose(),s._trigger("close",t,{instance:s})}function _(t){D?(y(t),c()):v(t)}var b,w,x,k,C,S,D=!1,T=!1,M=["left","right","top","bottom"],j=1,A=null;return x=function(e,i,n){function s(t){r.button("option","label",t)}var r,a;return a="drp_autogen"+o++,t('label[for="'+e.attr("id")+'"]').attr("for",a),r=t('<button type="button"></button>').addClass(i+"-triggerbutton").attr({title:e.attr("title"),tabindex:e.attr("tabindex"),id:a}).button({icons:{secondary:n.icon},icon:n.icon,iconPosition:"end",label:n.initialText}),{getElement:function(){return r},getLabel:function(){return r.button("option","label")},setLabel:s,reset:function(){e.val("").change(),s(n.initialText)},enforceOptions:function(){r.button("option",{icons:{secondary:n.icon},icon:n.icon,iconPosition:"end",label:n.initialText})}}}(i,"comiseo-daterangepicker",r),k=n("comiseo-daterangepicker",r,f),C=function(e,i){function n(e,n){var s=t.datepicker.parseDate(i.datepickerOptions.dateFormat||t.datepicker._defaults.dateFormat,e);!a.start||a.end?(a.start=s,a.end=null):s<a.start?(a.end=a.start,a.start=s):a.end=s,i.datepickerOptions.hasOwnProperty("onSelect")&&i.datepickerOptions.onSelect(e,n)}function s(t){var e=[!0,a.start&&(+t==+a.start||a.end&&a.start<=t&&t<=a.end)?"ui-state-highlight":""],n=[!0,"",""];return i.datepickerOptions.hasOwnProperty("beforeShowDay")&&(n=i.datepickerOptions.beforeShowDay(t)),[e[0]&&n[0],e[1]+" "+n[1],n[2]]}function o(){r.datepicker("refresh"),r.datepicker("setDate",null)}var r,a={start:null,end:null};return(r=t("<div></div>",{class:e+"-calendar ui-widget-content"})).datepicker(t.extend({},i.datepickerOptions,{beforeShowDay:s,onSelect:n})),function t(){setTimeout(function(){o(),t()},moment().endOf("day")-moment())}(),{getElement:function(){return r},scrollToRangeStart:function(){a.start&&r.datepicker("setDate",a.start)},getRange:function(){return a},setRange:function(t){a=t,o()},refresh:o,reset:function(){a={start:null,end:null},o()},enforceOptions:function(){r.datepicker("option",t.extend({},i.datepickerOptions,{beforeShowDay:s,onSelect:n}))}}}("comiseo-daterangepicker",r),a.numberOfMonths=r.datepickerOptions.numberOfMonths,a.numberOfMonths instanceof Array&&(r.autoFitCalendars=!1),S=function(e,i,n){var s,o,r,a;return s=t("<div></div>").addClass(e+"-buttonpanel"),i.applyButtonText&&(o=t('<button type="button" class="ui-priority-primary"></button>').text(i.applyButtonText).button(),s.append(o)),i.clearButtonText&&(r=t('<button type="button" class="ui-priority-secondary"></button>').text(i.clearButtonText).button(),s.append(r)),i.cancelButtonText&&(a=t('<button type="button" class="ui-priority-secondary"></button>').text(i.cancelButtonText).button(),s.append(a)),n&&(o&&o.click(n.onApply),r&&r.click(n.onClear),a&&a.click(n.onCancel)),{getElement:function(){return s},enforceOptions:function(){o&&o.button("option","label",i.applyButtonText),r&&r.button("option","label",i.clearButtonText),a&&a.button("option","label",i.cancelButtonText)}}}("comiseo-daterangepicker",r,{onApply:function(t){y(t),h(null,t)},onClear:function(t){y(t),p(t)},onCancel:function(t){s._trigger("cancel",t,{instance:s}),y(t),c()}}),b=t("<div></div>",{class:"comiseo-daterangepicker comiseo-daterangepicker-"+M[j]+" ui-widget ui-widget-content ui-corner-all ui-front"}).append(t("<div></div>",{class:"comiseo-daterangepicker-main ui-widget-content"}).append(k.getElement()).append(C.getElement())).append(t('<div class="ui-helper-clearfix"></div>').append(S.getElement())).hide(),i.hide().after(x.getElement()),w=t("<div></div>",{class:"ui-front comiseo-daterangepicker-mask"}).hide(),t("body").append(w).append(b),a(),c(),x.getElement().click(_),x.getElement().keydown(m),w.click(function(t){y(t),c()}),t(e).resize(function(){D?a():T=!0}),{toggle:_,destroy:function(){b.remove(),x.getElement().remove(),i.show()},open:v,close:y,setRange:h,getRange:d,clearRange:p,reset:c,enforceOptions:function(){var t=k;k=n("comiseo-daterangepicker",r,f),t.getElement().replaceWith(k.getElement()),C.enforceOptions(),S.enforceOptions(),x.enforceOptions(),(t=d())&&x.setLabel(l(t))},getContainer:function(){return b}}}var o=0;t.widget("comiseo.daterangepicker",{version:"0.6.0-beta.1",options:{presetRanges:[{text:"Today",dateStart:function(){return moment()},dateEnd:function(){return moment()}},{text:"Yesterday",dateStart:function(){return moment().subtract("days",1)},dateEnd:function(){return moment().subtract("days",1)}},{text:"Last 7 Days",dateStart:function(){return moment().subtract("days",6)},dateEnd:function(){return moment()}},{text:"Last Week (Mo-Su)",dateStart:function(){return moment().subtract("days",7).isoWeekday(1)},dateEnd:function(){return moment().subtract("days",7).isoWeekday(7)}},{text:"Month to Date",dateStart:function(){return moment().startOf("month")},dateEnd:function(){return moment()}},{text:"Previous Month",dateStart:function(){return moment().subtract("month",1).startOf("month")},dateEnd:function(){return moment().subtract("month",1).endOf("month")}},{text:"Year to Date",dateStart:function(){return moment().startOf("year")},dateEnd:function(){return moment()}}],initialText:"Select date range...",icon:"ui-icon-triangle-1-s",applyButtonText:"Apply",clearButtonText:"Clear",cancelButtonText:"Cancel",rangeSplitter:" - ",dateFormat:"M d, yy",altFormat:"yy-mm-dd",verticalOffset:0,mirrorOnCollision:!0,autoFitCalendars:!0,applyOnMenuSelect:!0,open:null,close:null,change:null,clear:null,cancel:null,onOpen:null,onClose:null,onChange:null,onClear:null,datepickerOptions:{numberOfMonths:3,maxDate:0}},_create:function(){this._dateRangePicker=s(this.element,this,this.options)},_destroy:function(){this._dateRangePicker.destroy()},_setOptions:function(t){this._super(t),this._dateRangePicker.enforceOptions()},open:function(){this._dateRangePicker.open()},close:function(){this._dateRangePicker.close()},setRange:function(t){this._dateRangePicker.setRange(t)},getRange:function(){return this._dateRangePicker.getRange()},clearRange:function(){this._dateRangePicker.clearRange()},widget:function(){return this._dateRangePicker.getContainer()}})}(jQuery,window);
|
|
trunk/js/dist/admin-scripts-libs.js
DELETED
@@ -1,11565 +0,0 @@
|
|
1 |
-
/*!
|
2 |
-
* jQuery JavaScript Library v3.6.0
|
3 |
-
* https://jquery.com/
|
4 |
-
*
|
5 |
-
* Includes Sizzle.js
|
6 |
-
* https://sizzlejs.com/
|
7 |
-
*
|
8 |
-
* Copyright OpenJS Foundation and other contributors
|
9 |
-
* Released under the MIT license
|
10 |
-
* https://jquery.org/license
|
11 |
-
*
|
12 |
-
* Date: 2021-03-02T17:08Z
|
13 |
-
*/
|
14 |
-
( function( global, factory ) {
|
15 |
-
|
16 |
-
"use strict";
|
17 |
-
|
18 |
-
if ( typeof module === "object" && typeof module.exports === "object" ) {
|
19 |
-
|
20 |
-
// For CommonJS and CommonJS-like environments where a proper `window`
|
21 |
-
// is present, execute the factory and get jQuery.
|
22 |
-
// For environments that do not have a `window` with a `document`
|
23 |
-
// (such as Node.js), expose a factory as module.exports.
|
24 |
-
// This accentuates the need for the creation of a real `window`.
|
25 |
-
// e.g. var jQuery = require("jquery")(window);
|
26 |
-
// See ticket #14549 for more info.
|
27 |
-
module.exports = global.document ?
|
28 |
-
factory( global, true ) :
|
29 |
-
function( w ) {
|
30 |
-
if ( !w.document ) {
|
31 |
-
throw new Error( "jQuery requires a window with a document" );
|
32 |
-
}
|
33 |
-
return factory( w );
|
34 |
-
};
|
35 |
-
} else {
|
36 |
-
factory( global );
|
37 |
-
}
|
38 |
-
|
39 |
-
// Pass this if window is not defined yet
|
40 |
-
} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
|
41 |
-
|
42 |
-
// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
|
43 |
-
// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
|
44 |
-
// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
|
45 |
-
// enough that all such attempts are guarded in a try block.
|
46 |
-
"use strict";
|
47 |
-
|
48 |
-
var arr = [];
|
49 |
-
|
50 |
-
var getProto = Object.getPrototypeOf;
|
51 |
-
|
52 |
-
var slice = arr.slice;
|
53 |
-
|
54 |
-
var flat = arr.flat ? function( array ) {
|
55 |
-
return arr.flat.call( array );
|
56 |
-
} : function( array ) {
|
57 |
-
return arr.concat.apply( [], array );
|
58 |
-
};
|
59 |
-
|
60 |
-
|
61 |
-
var push = arr.push;
|
62 |
-
|
63 |
-
var indexOf = arr.indexOf;
|
64 |
-
|
65 |
-
var class2type = {};
|
66 |
-
|
67 |
-
var toString = class2type.toString;
|
68 |
-
|
69 |
-
var hasOwn = class2type.hasOwnProperty;
|
70 |
-
|
71 |
-
var fnToString = hasOwn.toString;
|
72 |
-
|
73 |
-
var ObjectFunctionString = fnToString.call( Object );
|
74 |
-
|
75 |
-
var support = {};
|
76 |
-
|
77 |
-
var isFunction = function isFunction( obj ) {
|
78 |
-
|
79 |
-
// Support: Chrome <=57, Firefox <=52
|
80 |
-
// In some browsers, typeof returns "function" for HTML <object> elements
|
81 |
-
// (i.e., `typeof document.createElement( "object" ) === "function"`).
|
82 |
-
// We don't want to classify *any* DOM node as a function.
|
83 |
-
// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
|
84 |
-
// Plus for old WebKit, typeof returns "function" for HTML collections
|
85 |
-
// (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
|
86 |
-
return typeof obj === "function" && typeof obj.nodeType !== "number" &&
|
87 |
-
typeof obj.item !== "function";
|
88 |
-
};
|
89 |
-
|
90 |
-
|
91 |
-
var isWindow = function isWindow( obj ) {
|
92 |
-
return obj != null && obj === obj.window;
|
93 |
-
};
|
94 |
-
|
95 |
-
|
96 |
-
var document = window.document;
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
var preservedScriptAttributes = {
|
101 |
-
type: true,
|
102 |
-
src: true,
|
103 |
-
nonce: true,
|
104 |
-
noModule: true
|
105 |
-
};
|
106 |
-
|
107 |
-
function DOMEval( code, node, doc ) {
|
108 |
-
doc = doc || document;
|
109 |
-
|
110 |
-
var i, val,
|
111 |
-
script = doc.createElement( "script" );
|
112 |
-
|
113 |
-
script.text = code;
|
114 |
-
if ( node ) {
|
115 |
-
for ( i in preservedScriptAttributes ) {
|
116 |
-
|
117 |
-
// Support: Firefox 64+, Edge 18+
|
118 |
-
// Some browsers don't support the "nonce" property on scripts.
|
119 |
-
// On the other hand, just using `getAttribute` is not enough as
|
120 |
-
// the `nonce` attribute is reset to an empty string whenever it
|
121 |
-
// becomes browsing-context connected.
|
122 |
-
// See https://github.com/whatwg/html/issues/2369
|
123 |
-
// See https://html.spec.whatwg.org/#nonce-attributes
|
124 |
-
// The `node.getAttribute` check was added for the sake of
|
125 |
-
// `jQuery.globalEval` so that it can fake a nonce-containing node
|
126 |
-
// via an object.
|
127 |
-
val = node[ i ] || node.getAttribute && node.getAttribute( i );
|
128 |
-
if ( val ) {
|
129 |
-
script.setAttribute( i, val );
|
130 |
-
}
|
131 |
-
}
|
132 |
-
}
|
133 |
-
doc.head.appendChild( script ).parentNode.removeChild( script );
|
134 |
-
}
|
135 |
-
|
136 |
-
|
137 |
-
function toType( obj ) {
|
138 |
-
if ( obj == null ) {
|
139 |
-
return obj + "";
|
140 |
-
}
|
141 |
-
|
142 |
-
// Support: Android <=2.3 only (functionish RegExp)
|
143 |
-
return typeof obj === "object" || typeof obj === "function" ?
|
144 |
-
class2type[ toString.call( obj ) ] || "object" :
|
145 |
-
typeof obj;
|
146 |
-
}
|
147 |
-
/* global Symbol */
|
148 |
-
// Defining this global in .eslintrc.json would create a danger of using the global
|
149 |
-
// unguarded in another place, it seems safer to define global only for this module
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
var
|
154 |
-
version = "3.6.0",
|
155 |
-
|
156 |
-
// Define a local copy of jQuery
|
157 |
-
jQuery = function( selector, context ) {
|
158 |
-
|
159 |
-
// The jQuery object is actually just the init constructor 'enhanced'
|
160 |
-
// Need init if jQuery is called (just allow error to be thrown if not included)
|
161 |
-
return new jQuery.fn.init( selector, context );
|
162 |
-
};
|
163 |
-
|
164 |
-
jQuery.fn = jQuery.prototype = {
|
165 |
-
|
166 |
-
// The current version of jQuery being used
|
167 |
-
jquery: version,
|
168 |
-
|
169 |
-
constructor: jQuery,
|
170 |
-
|
171 |
-
// The default length of a jQuery object is 0
|
172 |
-
length: 0,
|
173 |
-
|
174 |
-
toArray: function() {
|
175 |
-
return slice.call( this );
|
176 |
-
},
|
177 |
-
|
178 |
-
// Get the Nth element in the matched element set OR
|
179 |
-
// Get the whole matched element set as a clean array
|
180 |
-
get: function( num ) {
|
181 |
-
|
182 |
-
// Return all the elements in a clean array
|
183 |
-
if ( num == null ) {
|
184 |
-
return slice.call( this );
|
185 |
-
}
|
186 |
-
|
187 |
-
// Return just the one element from the set
|
188 |
-
return num < 0 ? this[ num + this.length ] : this[ num ];
|
189 |
-
},
|
190 |
-
|
191 |
-
// Take an array of elements and push it onto the stack
|
192 |
-
// (returning the new matched element set)
|
193 |
-
pushStack: function( elems ) {
|
194 |
-
|
195 |
-
// Build a new jQuery matched element set
|
196 |
-
var ret = jQuery.merge( this.constructor(), elems );
|
197 |
-
|
198 |
-
// Add the old object onto the stack (as a reference)
|
199 |
-
ret.prevObject = this;
|
200 |
-
|
201 |
-
// Return the newly-formed element set
|
202 |
-
return ret;
|
203 |
-
},
|
204 |
-
|
205 |
-
// Execute a callback for every element in the matched set.
|
206 |
-
each: function( callback ) {
|
207 |
-
return jQuery.each( this, callback );
|
208 |
-
},
|
209 |
-
|
210 |
-
map: function( callback ) {
|
211 |
-
return this.pushStack( jQuery.map( this, function( elem, i ) {
|
212 |
-
return callback.call( elem, i, elem );
|
213 |
-
} ) );
|
214 |
-
},
|
215 |
-
|
216 |
-
slice: function() {
|
217 |
-
return this.pushStack( slice.apply( this, arguments ) );
|
218 |
-
},
|
219 |
-
|
220 |
-
first: function() {
|
221 |
-
return this.eq( 0 );
|
222 |
-
},
|
223 |
-
|
224 |
-
last: function() {
|
225 |
-
return this.eq( -1 );
|
226 |
-
},
|
227 |
-
|
228 |
-
even: function() {
|
229 |
-
return this.pushStack( jQuery.grep( this, function( _elem, i ) {
|
230 |
-
return ( i + 1 ) % 2;
|
231 |
-
} ) );
|
232 |
-
},
|
233 |
-
|
234 |
-
odd: function() {
|
235 |
-
return this.pushStack( jQuery.grep( this, function( _elem, i ) {
|
236 |
-
return i % 2;
|
237 |
-
} ) );
|
238 |
-
},
|
239 |
-
|
240 |
-
eq: function( i ) {
|
241 |
-
var len = this.length,
|
242 |
-
j = +i + ( i < 0 ? len : 0 );
|
243 |
-
return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
|
244 |
-
},
|
245 |
-
|
246 |
-
end: function() {
|
247 |
-
return this.prevObject || this.constructor();
|
248 |
-
},
|
249 |
-
|
250 |
-
// For internal use only.
|
251 |
-
// Behaves like an Array's method, not like a jQuery method.
|
252 |
-
push: push,
|
253 |
-
sort: arr.sort,
|
254 |
-
splice: arr.splice
|
255 |
-
};
|
256 |
-
|
257 |
-
jQuery.extend = jQuery.fn.extend = function() {
|
258 |
-
var options, name, src, copy, copyIsArray, clone,
|
259 |
-
target = arguments[ 0 ] || {},
|
260 |
-
i = 1,
|
261 |
-
length = arguments.length,
|
262 |
-
deep = false;
|
263 |
-
|
264 |
-
// Handle a deep copy situation
|
265 |
-
if ( typeof target === "boolean" ) {
|
266 |
-
deep = target;
|
267 |
-
|
268 |
-
// Skip the boolean and the target
|
269 |
-
target = arguments[ i ] || {};
|
270 |
-
i++;
|
271 |
-
}
|
272 |
-
|
273 |
-
// Handle case when target is a string or something (possible in deep copy)
|
274 |
-
if ( typeof target !== "object" && !isFunction( target ) ) {
|
275 |
-
target = {};
|
276 |
-
}
|
277 |
-
|
278 |
-
// Extend jQuery itself if only one argument is passed
|
279 |
-
if ( i === length ) {
|
280 |
-
target = this;
|
281 |
-
i--;
|
282 |
-
}
|
283 |
-
|
284 |
-
for ( ; i < length; i++ ) {
|
285 |
-
|
286 |
-
// Only deal with non-null/undefined values
|
287 |
-
if ( ( options = arguments[ i ] ) != null ) {
|
288 |
-
|
289 |
-
// Extend the base object
|
290 |
-
for ( name in options ) {
|
291 |
-
copy = options[ name ];
|
292 |
-
|
293 |
-
// Prevent Object.prototype pollution
|
294 |
-
// Prevent never-ending loop
|
295 |
-
if ( name === "__proto__" || target === copy ) {
|
296 |
-
continue;
|
297 |
-
}
|
298 |
-
|
299 |
-
// Recurse if we're merging plain objects or arrays
|
300 |
-
if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
|
301 |
-
( copyIsArray = Array.isArray( copy ) ) ) ) {
|
302 |
-
src = target[ name ];
|
303 |
-
|
304 |
-
// Ensure proper type for the source value
|
305 |
-
if ( copyIsArray && !Array.isArray( src ) ) {
|
306 |
-
clone = [];
|
307 |
-
} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
|
308 |
-
clone = {};
|
309 |
-
} else {
|
310 |
-
clone = src;
|
311 |
-
}
|
312 |
-
copyIsArray = false;
|
313 |
-
|
314 |
-
// Never move original objects, clone them
|
315 |
-
target[ name ] = jQuery.extend( deep, clone, copy );
|
316 |
-
|
317 |
-
// Don't bring in undefined values
|
318 |
-
} else if ( copy !== undefined ) {
|
319 |
-
target[ name ] = copy;
|
320 |
-
}
|
321 |
-
}
|
322 |
-
}
|
323 |
-
}
|
324 |
-
|
325 |
-
// Return the modified object
|
326 |
-
return target;
|
327 |
-
};
|
328 |
-
|
329 |
-
jQuery.extend( {
|
330 |
-
|
331 |
-
// Unique for each copy of jQuery on the page
|
332 |
-
expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
|
333 |
-
|
334 |
-
// Assume jQuery is ready without the ready module
|
335 |
-
isReady: true,
|
336 |
-
|
337 |
-
error: function( msg ) {
|
338 |
-
throw new Error( msg );
|
339 |
-
},
|
340 |
-
|
341 |
-
noop: function() {},
|
342 |
-
|
343 |
-
isPlainObject: function( obj ) {
|
344 |
-
var proto, Ctor;
|
345 |
-
|
346 |
-
// Detect obvious negatives
|
347 |
-
// Use toString instead of jQuery.type to catch host objects
|
348 |
-
if ( !obj || toString.call( obj ) !== "[object Object]" ) {
|
349 |
-
return false;
|
350 |
-
}
|
351 |
-
|
352 |
-
proto = getProto( obj );
|
353 |
-
|
354 |
-
// Objects with no prototype (e.g., `Object.create( null )`) are plain
|
355 |
-
if ( !proto ) {
|
356 |
-
return true;
|
357 |
-
}
|
358 |
-
|
359 |
-
// Objects with prototype are plain iff they were constructed by a global Object function
|
360 |
-
Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
|
361 |
-
return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
|
362 |
-
},
|
363 |
-
|
364 |
-
isEmptyObject: function( obj ) {
|
365 |
-
var name;
|
366 |
-
|
367 |
-
for ( name in obj ) {
|
368 |
-
return false;
|
369 |
-
}
|
370 |
-
return true;
|
371 |
-
},
|
372 |
-
|
373 |
-
// Evaluates a script in a provided context; falls back to the global one
|
374 |
-
// if not specified.
|
375 |
-
globalEval: function( code, options, doc ) {
|
376 |
-
DOMEval( code, { nonce: options && options.nonce }, doc );
|
377 |
-
},
|
378 |
-
|
379 |
-
each: function( obj, callback ) {
|
380 |
-
var length, i = 0;
|
381 |
-
|
382 |
-
if ( isArrayLike( obj ) ) {
|
383 |
-
length = obj.length;
|
384 |
-
for ( ; i < length; i++ ) {
|
385 |
-
if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
|
386 |
-
break;
|
387 |
-
}
|
388 |
-
}
|
389 |
-
} else {
|
390 |
-
for ( i in obj ) {
|
391 |
-
if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
|
392 |
-
break;
|
393 |
-
}
|
394 |
-
}
|
395 |
-
}
|
396 |
-
|
397 |
-
return obj;
|
398 |
-
},
|
399 |
-
|
400 |
-
// results is for internal usage only
|
401 |
-
makeArray: function( arr, results ) {
|
402 |
-
var ret = results || [];
|
403 |
-
|
404 |
-
if ( arr != null ) {
|
405 |
-
if ( isArrayLike( Object( arr ) ) ) {
|
406 |
-
jQuery.merge( ret,
|
407 |
-
typeof arr === "string" ?
|
408 |
-
[ arr ] : arr
|
409 |
-
);
|
410 |
-
} else {
|
411 |
-
push.call( ret, arr );
|
412 |
-
}
|
413 |
-
}
|
414 |
-
|
415 |
-
return ret;
|
416 |
-
},
|
417 |
-
|
418 |
-
inArray: function( elem, arr, i ) {
|
419 |
-
return arr == null ? -1 : indexOf.call( arr, elem, i );
|
420 |
-
},
|
421 |
-
|
422 |
-
// Support: Android <=4.0 only, PhantomJS 1 only
|
423 |
-
// push.apply(_, arraylike) throws on ancient WebKit
|
424 |
-
merge: function( first, second ) {
|
425 |
-
var len = +second.length,
|
426 |
-
j = 0,
|
427 |
-
i = first.length;
|
428 |
-
|
429 |
-
for ( ; j < len; j++ ) {
|
430 |
-
first[ i++ ] = second[ j ];
|
431 |
-
}
|
432 |
-
|
433 |
-
first.length = i;
|
434 |
-
|
435 |
-
return first;
|
436 |
-
},
|
437 |
-
|
438 |
-
grep: function( elems, callback, invert ) {
|
439 |
-
var callbackInverse,
|
440 |
-
matches = [],
|
441 |
-
i = 0,
|
442 |
-
length = elems.length,
|
443 |
-
callbackExpect = !invert;
|
444 |
-
|
445 |
-
// Go through the array, only saving the items
|
446 |
-
// that pass the validator function
|
447 |
-
for ( ; i < length; i++ ) {
|
448 |
-
callbackInverse = !callback( elems[ i ], i );
|
449 |
-
if ( callbackInverse !== callbackExpect ) {
|
450 |
-
matches.push( elems[ i ] );
|
451 |
-
}
|
452 |
-
}
|
453 |
-
|
454 |
-
return matches;
|
455 |
-
},
|
456 |
-
|
457 |
-
// arg is for internal usage only
|
458 |
-
map: function( elems, callback, arg ) {
|
459 |
-
var length, value,
|
460 |
-
i = 0,
|
461 |
-
ret = [];
|
462 |
-
|
463 |
-
// Go through the array, translating each of the items to their new values
|
464 |
-
if ( isArrayLike( elems ) ) {
|
465 |
-
length = elems.length;
|
466 |
-
for ( ; i < length; i++ ) {
|
467 |
-
value = callback( elems[ i ], i, arg );
|
468 |
-
|
469 |
-
if ( value != null ) {
|
470 |
-
ret.push( value );
|
471 |
-
}
|
472 |
-
}
|
473 |
-
|
474 |
-
// Go through every key on the object,
|
475 |
-
} else {
|
476 |
-
for ( i in elems ) {
|
477 |
-
value = callback( elems[ i ], i, arg );
|
478 |
-
|
479 |
-
if ( value != null ) {
|
480 |
-
ret.push( value );
|
481 |
-
}
|
482 |
-
}
|
483 |
-
}
|
484 |
-
|
485 |
-
// Flatten any nested arrays
|
486 |
-
return flat( ret );
|
487 |
-
},
|
488 |
-
|
489 |
-
// A global GUID counter for objects
|
490 |
-
guid: 1,
|
491 |
-
|
492 |
-
// jQuery.support is not used in Core but other projects attach their
|
493 |
-
// properties to it so it needs to exist.
|
494 |
-
support: support
|
495 |
-
} );
|
496 |
-
|
497 |
-
if ( typeof Symbol === "function" ) {
|
498 |
-
jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
|
499 |
-
}
|
500 |
-
|
501 |
-
// Populate the class2type map
|
502 |
-
jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
|
503 |
-
function( _i, name ) {
|
504 |
-
class2type[ "[object " + name + "]" ] = name.toLowerCase();
|
505 |
-
} );
|
506 |
-
|
507 |
-
function isArrayLike( obj ) {
|
508 |
-
|
509 |
-
// Support: real iOS 8.2 only (not reproducible in simulator)
|
510 |
-
// `in` check used to prevent JIT error (gh-2145)
|
511 |
-
// hasOwn isn't used here due to false negatives
|
512 |
-
// regarding Nodelist length in IE
|
513 |
-
var length = !!obj && "length" in obj && obj.length,
|
514 |
-
type = toType( obj );
|
515 |
-
|
516 |
-
if ( isFunction( obj ) || isWindow( obj ) ) {
|
517 |
-
return false;
|
518 |
-
}
|
519 |
-
|
520 |
-
return type === "array" || length === 0 ||
|
521 |
-
typeof length === "number" && length > 0 && ( length - 1 ) in obj;
|
522 |
-
}
|
523 |
-
var Sizzle =
|
524 |
-
/*!
|
525 |
-
* Sizzle CSS Selector Engine v2.3.6
|
526 |
-
* https://sizzlejs.com/
|
527 |
-
*
|
528 |
-
* Copyright JS Foundation and other contributors
|
529 |
-
* Released under the MIT license
|
530 |
-
* https://js.foundation/
|
531 |
-
*
|
532 |
-
* Date: 2021-02-16
|
533 |
-
*/
|
534 |
-
( function( window ) {
|
535 |
-
var i,
|
536 |
-
support,
|
537 |
-
Expr,
|
538 |
-
getText,
|
539 |
-
isXML,
|
540 |
-
tokenize,
|
541 |
-
compile,
|
542 |
-
select,
|
543 |
-
outermostContext,
|
544 |
-
sortInput,
|
545 |
-
hasDuplicate,
|
546 |
-
|
547 |
-
// Local document vars
|
548 |
-
setDocument,
|
549 |
-
document,
|
550 |
-
docElem,
|
551 |
-
documentIsHTML,
|
552 |
-
rbuggyQSA,
|
553 |
-
rbuggyMatches,
|
554 |
-
matches,
|
555 |
-
contains,
|
556 |
-
|
557 |
-
// Instance-specific data
|
558 |
-
expando = "sizzle" + 1 * new Date(),
|
559 |
-
preferredDoc = window.document,
|
560 |
-
dirruns = 0,
|
561 |
-
done = 0,
|
562 |
-
classCache = createCache(),
|
563 |
-
tokenCache = createCache(),
|
564 |
-
compilerCache = createCache(),
|
565 |
-
nonnativeSelectorCache = createCache(),
|
566 |
-
sortOrder = function( a, b ) {
|
567 |
-
if ( a === b ) {
|
568 |
-
hasDuplicate = true;
|
569 |
-
}
|
570 |
-
return 0;
|
571 |
-
},
|
572 |
-
|
573 |
-
// Instance methods
|
574 |
-
hasOwn = ( {} ).hasOwnProperty,
|
575 |
-
arr = [],
|
576 |
-
pop = arr.pop,
|
577 |
-
pushNative = arr.push,
|
578 |
-
push = arr.push,
|
579 |
-
slice = arr.slice,
|
580 |
-
|
581 |
-
// Use a stripped-down indexOf as it's faster than native
|
582 |
-
// https://jsperf.com/thor-indexof-vs-for/5
|
583 |
-
indexOf = function( list, elem ) {
|
584 |
-
var i = 0,
|
585 |
-
len = list.length;
|
586 |
-
for ( ; i < len; i++ ) {
|
587 |
-
if ( list[ i ] === elem ) {
|
588 |
-
return i;
|
589 |
-
}
|
590 |
-
}
|
591 |
-
return -1;
|
592 |
-
},
|
593 |
-
|
594 |
-
booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" +
|
595 |
-
"ismap|loop|multiple|open|readonly|required|scoped",
|
596 |
-
|
597 |
-
// Regular expressions
|
598 |
-
|
599 |
-
// http://www.w3.org/TR/css3-selectors/#whitespace
|
600 |
-
whitespace = "[\\x20\\t\\r\\n\\f]",
|
601 |
-
|
602 |
-
// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
|
603 |
-
identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
|
604 |
-
"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
|
605 |
-
|
606 |
-
// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
|
607 |
-
attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
|
608 |
-
|
609 |
-
// Operator (capture 2)
|
610 |
-
"*([*^$|!~]?=)" + whitespace +
|
611 |
-
|
612 |
-
// "Attribute values must be CSS identifiers [capture 5]
|
613 |
-
// or strings [capture 3 or capture 4]"
|
614 |
-
"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
|
615 |
-
whitespace + "*\\]",
|
616 |
-
|
617 |
-
pseudos = ":(" + identifier + ")(?:\\((" +
|
618 |
-
|
619 |
-
// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
|
620 |
-
// 1. quoted (capture 3; capture 4 or capture 5)
|
621 |
-
"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
|
622 |
-
|
623 |
-
// 2. simple (capture 6)
|
624 |
-
"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
|
625 |
-
|
626 |
-
// 3. anything else (capture 2)
|
627 |
-
".*" +
|
628 |
-
")\\)|)",
|
629 |
-
|
630 |
-
// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
|
631 |
-
rwhitespace = new RegExp( whitespace + "+", "g" ),
|
632 |
-
rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" +
|
633 |
-
whitespace + "+$", "g" ),
|
634 |
-
|
635 |
-
rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
|
636 |
-
rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace +
|
637 |
-
"*" ),
|
638 |
-
rdescend = new RegExp( whitespace + "|>" ),
|
639 |
-
|
640 |
-
rpseudo = new RegExp( pseudos ),
|
641 |
-
ridentifier = new RegExp( "^" + identifier + "$" ),
|
642 |
-
|
643 |
-
matchExpr = {
|
644 |
-
"ID": new RegExp( "^#(" + identifier + ")" ),
|
645 |
-
"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
|
646 |
-
"TAG": new RegExp( "^(" + identifier + "|[*])" ),
|
647 |
-
"ATTR": new RegExp( "^" + attributes ),
|
648 |
-
"PSEUDO": new RegExp( "^" + pseudos ),
|
649 |
-
"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
|
650 |
-
whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
|
651 |
-
whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
|
652 |
-
"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
|
653 |
-
|
654 |
-
// For use in libraries implementing .is()
|
655 |
-
// We use this for POS matching in `select`
|
656 |
-
"needsContext": new RegExp( "^" + whitespace +
|
657 |
-
"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
|
658 |
-
"*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
|
659 |
-
},
|
660 |
-
|
661 |
-
rhtml = /HTML$/i,
|
662 |
-
rinputs = /^(?:input|select|textarea|button)$/i,
|
663 |
-
rheader = /^h\d$/i,
|
664 |
-
|
665 |
-
rnative = /^[^{]+\{\s*\[native \w/,
|
666 |
-
|
667 |
-
// Easily-parseable/retrievable ID or TAG or CLASS selectors
|
668 |
-
rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
|
669 |
-
|
670 |
-
rsibling = /[+~]/,
|
671 |
-
|
672 |
-
// CSS escapes
|
673 |
-
// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
|
674 |
-
runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ),
|
675 |
-
funescape = function( escape, nonHex ) {
|
676 |
-
var high = "0x" + escape.slice( 1 ) - 0x10000;
|
677 |
-
|
678 |
-
return nonHex ?
|
679 |
-
|
680 |
-
// Strip the backslash prefix from a non-hex escape sequence
|
681 |
-
nonHex :
|
682 |
-
|
683 |
-
// Replace a hexadecimal escape sequence with the encoded Unicode code point
|
684 |
-
// Support: IE <=11+
|
685 |
-
// For values outside the Basic Multilingual Plane (BMP), manually construct a
|
686 |
-
// surrogate pair
|
687 |
-
high < 0 ?
|
688 |
-
String.fromCharCode( high + 0x10000 ) :
|
689 |
-
String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
|
690 |
-
},
|
691 |
-
|
692 |
-
// CSS string/identifier serialization
|
693 |
-
// https://drafts.csswg.org/cssom/#common-serializing-idioms
|
694 |
-
rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
|
695 |
-
fcssescape = function( ch, asCodePoint ) {
|
696 |
-
if ( asCodePoint ) {
|
697 |
-
|
698 |
-
// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
|
699 |
-
if ( ch === "\0" ) {
|
700 |
-
return "\uFFFD";
|
701 |
-
}
|
702 |
-
|
703 |
-
// Control characters and (dependent upon position) numbers get escaped as code points
|
704 |
-
return ch.slice( 0, -1 ) + "\\" +
|
705 |
-
ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
|
706 |
-
}
|
707 |
-
|
708 |
-
// Other potentially-special ASCII characters get backslash-escaped
|
709 |
-
return "\\" + ch;
|
710 |
-
},
|
711 |
-
|
712 |
-
// Used for iframes
|
713 |
-
// See setDocument()
|
714 |
-
// Removing the function wrapper causes a "Permission Denied"
|
715 |
-
// error in IE
|
716 |
-
unloadHandler = function() {
|
717 |
-
setDocument();
|
718 |
-
},
|
719 |
-
|
720 |
-
inDisabledFieldset = addCombinator(
|
721 |
-
function( elem ) {
|
722 |
-
return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
|
723 |
-
},
|
724 |
-
{ dir: "parentNode", next: "legend" }
|
725 |
-
);
|
726 |
-
|
727 |
-
// Optimize for push.apply( _, NodeList )
|
728 |
-
try {
|
729 |
-
push.apply(
|
730 |
-
( arr = slice.call( preferredDoc.childNodes ) ),
|
731 |
-
preferredDoc.childNodes
|
732 |
-
);
|
733 |
-
|
734 |
-
// Support: Android<4.0
|
735 |
-
// Detect silently failing push.apply
|
736 |
-
// eslint-disable-next-line no-unused-expressions
|
737 |
-
arr[ preferredDoc.childNodes.length ].nodeType;
|
738 |
-
} catch ( e ) {
|
739 |
-
push = { apply: arr.length ?
|
740 |
-
|
741 |
-
// Leverage slice if possible
|
742 |
-
function( target, els ) {
|
743 |
-
pushNative.apply( target, slice.call( els ) );
|
744 |
-
} :
|
745 |
-
|
746 |
-
// Support: IE<9
|
747 |
-
// Otherwise append directly
|
748 |
-
function( target, els ) {
|
749 |
-
var j = target.length,
|
750 |
-
i = 0;
|
751 |
-
|
752 |
-
// Can't trust NodeList.length
|
753 |
-
while ( ( target[ j++ ] = els[ i++ ] ) ) {}
|
754 |
-
target.length = j - 1;
|
755 |
-
}
|
756 |
-
};
|
757 |
-
}
|
758 |
-
|
759 |
-
function Sizzle( selector, context, results, seed ) {
|
760 |
-
var m, i, elem, nid, match, groups, newSelector,
|
761 |
-
newContext = context && context.ownerDocument,
|
762 |
-
|
763 |
-
// nodeType defaults to 9, since context defaults to document
|
764 |
-
nodeType = context ? context.nodeType : 9;
|
765 |
-
|
766 |
-
results = results || [];
|
767 |
-
|
768 |
-
// Return early from calls with invalid selector or context
|
769 |
-
if ( typeof selector !== "string" || !selector ||
|
770 |
-
nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
|
771 |
-
|
772 |
-
return results;
|
773 |
-
}
|
774 |
-
|
775 |
-
// Try to shortcut find operations (as opposed to filters) in HTML documents
|
776 |
-
if ( !seed ) {
|
777 |
-
setDocument( context );
|
778 |
-
context = context || document;
|
779 |
-
|
780 |
-
if ( documentIsHTML ) {
|
781 |
-
|
782 |
-
// If the selector is sufficiently simple, try using a "get*By*" DOM method
|
783 |
-
// (excepting DocumentFragment context, where the methods don't exist)
|
784 |
-
if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {
|
785 |
-
|
786 |
-
// ID selector
|
787 |
-
if ( ( m = match[ 1 ] ) ) {
|
788 |
-
|
789 |
-
// Document context
|
790 |
-
if ( nodeType === 9 ) {
|
791 |
-
if ( ( elem = context.getElementById( m ) ) ) {
|
792 |
-
|
793 |
-
// Support: IE, Opera, Webkit
|
794 |
-
// TODO: identify versions
|
795 |
-
// getElementById can match elements by name instead of ID
|
796 |
-
if ( elem.id === m ) {
|
797 |
-
results.push( elem );
|
798 |
-
return results;
|
799 |
-
}
|
800 |
-
} else {
|
801 |
-
return results;
|
802 |
-
}
|
803 |
-
|
804 |
-
// Element context
|
805 |
-
} else {
|
806 |
-
|
807 |
-
// Support: IE, Opera, Webkit
|
808 |
-
// TODO: identify versions
|
809 |
-
// getElementById can match elements by name instead of ID
|
810 |
-
if ( newContext && ( elem = newContext.getElementById( m ) ) &&
|
811 |
-
contains( context, elem ) &&
|
812 |
-
elem.id === m ) {
|
813 |
-
|
814 |
-
results.push( elem );
|
815 |
-
return results;
|
816 |
-
}
|
817 |
-
}
|
818 |
-
|
819 |
-
// Type selector
|
820 |
-
} else if ( match[ 2 ] ) {
|
821 |
-
push.apply( results, context.getElementsByTagName( selector ) );
|
822 |
-
return results;
|
823 |
-
|
824 |
-
// Class selector
|
825 |
-
} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&
|
826 |
-
context.getElementsByClassName ) {
|
827 |
-
|
828 |
-
push.apply( results, context.getElementsByClassName( m ) );
|
829 |
-
return results;
|
830 |
-
}
|
831 |
-
}
|
832 |
-
|
833 |
-
// Take advantage of querySelectorAll
|
834 |
-
if ( support.qsa &&
|
835 |
-
!nonnativeSelectorCache[ selector + " " ] &&
|
836 |
-
( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&
|
837 |
-
|
838 |
-
// Support: IE 8 only
|
839 |
-
// Exclude object elements
|
840 |
-
( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) {
|
841 |
-
|
842 |
-
newSelector = selector;
|
843 |
-
newContext = context;
|
844 |
-
|
845 |
-
// qSA considers elements outside a scoping root when evaluating child or
|
846 |
-
// descendant combinators, which is not what we want.
|
847 |
-
// In such cases, we work around the behavior by prefixing every selector in the
|
848 |
-
// list with an ID selector referencing the scope context.
|
849 |
-
// The technique has to be used as well when a leading combinator is used
|
850 |
-
// as such selectors are not recognized by querySelectorAll.
|
851 |
-
// Thanks to Andrew Dupont for this technique.
|
852 |
-
if ( nodeType === 1 &&
|
853 |
-
( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {
|
854 |
-
|
855 |
-
// Expand context for sibling selectors
|
856 |
-
newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
|
857 |
-
context;
|
858 |
-
|
859 |
-
// We can use :scope instead of the ID hack if the browser
|
860 |
-
// supports it & if we're not changing the context.
|
861 |
-
if ( newContext !== context || !support.scope ) {
|
862 |
-
|
863 |
-
// Capture the context ID, setting it first if necessary
|
864 |
-
if ( ( nid = context.getAttribute( "id" ) ) ) {
|
865 |
-
nid = nid.replace( rcssescape, fcssescape );
|
866 |
-
} else {
|
867 |
-
context.setAttribute( "id", ( nid = expando ) );
|
868 |
-
}
|
869 |
-
}
|
870 |
-
|
871 |
-
// Prefix every selector in the list
|
872 |
-
groups = tokenize( selector );
|
873 |
-
i = groups.length;
|
874 |
-
while ( i-- ) {
|
875 |
-
groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " +
|
876 |
-
toSelector( groups[ i ] );
|
877 |
-
}
|
878 |
-
newSelector = groups.join( "," );
|
879 |
-
}
|
880 |
-
|
881 |
-
try {
|
882 |
-
push.apply( results,
|
883 |
-
newContext.querySelectorAll( newSelector )
|
884 |
-
);
|
885 |
-
return results;
|
886 |
-
} catch ( qsaError ) {
|
887 |
-
nonnativeSelectorCache( selector, true );
|
888 |
-
} finally {
|
889 |
-
if ( nid === expando ) {
|
890 |
-
context.removeAttribute( "id" );
|
891 |
-
}
|
892 |
-
}
|
893 |
-
}
|
894 |
-
}
|
895 |
-
}
|
896 |
-
|
897 |
-
// All others
|
898 |
-
return select( selector.replace( rtrim, "$1" ), context, results, seed );
|
899 |
-
}
|
900 |
-
|
901 |
-
/**
|
902 |
-
* Create key-value caches of limited size
|
903 |
-
* @returns {function(string, object)} Returns the Object data after storing it on itself with
|
904 |
-
* property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
|
905 |
-
* deleting the oldest entry
|
906 |
-
*/
|
907 |
-
function createCache() {
|
908 |
-
var keys = [];
|
909 |
-
|
910 |
-
function cache( key, value ) {
|
911 |
-
|
912 |
-
// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
|
913 |
-
if ( keys.push( key + " " ) > Expr.cacheLength ) {
|
914 |
-
|
915 |
-
// Only keep the most recent entries
|
916 |
-
delete cache[ keys.shift() ];
|
917 |
-
}
|
918 |
-
return ( cache[ key + " " ] = value );
|
919 |
-
}
|
920 |
-
return cache;
|
921 |
-
}
|
922 |
-
|
923 |
-
/**
|
924 |
-
* Mark a function for special use by Sizzle
|
925 |
-
* @param {Function} fn The function to mark
|
926 |
-
*/
|
927 |
-
function markFunction( fn ) {
|
928 |
-
fn[ expando ] = true;
|
929 |
-
return fn;
|
930 |
-
}
|
931 |
-
|
932 |
-
/**
|
933 |
-
* Support testing using an element
|
934 |
-
* @param {Function} fn Passed the created element and returns a boolean result
|
935 |
-
*/
|
936 |
-
function assert( fn ) {
|
937 |
-
var el = document.createElement( "fieldset" );
|
938 |
-
|
939 |
-
try {
|
940 |
-
return !!fn( el );
|
941 |
-
} catch ( e ) {
|
942 |
-
return false;
|
943 |
-
} finally {
|
944 |
-
|
945 |
-
// Remove from its parent by default
|
946 |
-
if ( el.parentNode ) {
|
947 |
-
el.parentNode.removeChild( el );
|
948 |
-
}
|
949 |
-
|
950 |
-
// release memory in IE
|
951 |
-
el = null;
|
952 |
-
}
|
953 |
-
}
|
954 |
-
|
955 |
-
/**
|
956 |
-
* Adds the same handler for all of the specified attrs
|
957 |
-
* @param {String} attrs Pipe-separated list of attributes
|
958 |
-
* @param {Function} handler The method that will be applied
|
959 |
-
*/
|
960 |
-
function addHandle( attrs, handler ) {
|
961 |
-
var arr = attrs.split( "|" ),
|
962 |
-
i = arr.length;
|
963 |
-
|
964 |
-
while ( i-- ) {
|
965 |
-
Expr.attrHandle[ arr[ i ] ] = handler;
|
966 |
-
}
|
967 |
-
}
|
968 |
-
|
969 |
-
/**
|
970 |
-
* Checks document order of two siblings
|
971 |
-
* @param {Element} a
|
972 |
-
* @param {Element} b
|
973 |
-
* @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
|
974 |
-
*/
|
975 |
-
function siblingCheck( a, b ) {
|
976 |
-
var cur = b && a,
|
977 |
-
diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
|
978 |
-
a.sourceIndex - b.sourceIndex;
|
979 |
-
|
980 |
-
// Use IE sourceIndex if available on both nodes
|
981 |
-
if ( diff ) {
|
982 |
-
return diff;
|
983 |
-
}
|
984 |
-
|
985 |
-
// Check if b follows a
|
986 |
-
if ( cur ) {
|
987 |
-
while ( ( cur = cur.nextSibling ) ) {
|
988 |
-
if ( cur === b ) {
|
989 |
-
return -1;
|
990 |
-
}
|
991 |
-
}
|
992 |
-
}
|
993 |
-
|
994 |
-
return a ? 1 : -1;
|
995 |
-
}
|
996 |
-
|
997 |
-
/**
|
998 |
-
* Returns a function to use in pseudos for input types
|
999 |
-
* @param {String} type
|
1000 |
-
*/
|
1001 |
-
function createInputPseudo( type ) {
|
1002 |
-
return function( elem ) {
|
1003 |
-
var name = elem.nodeName.toLowerCase();
|
1004 |
-
return name === "input" && elem.type === type;
|
1005 |
-
};
|
1006 |
-
}
|
1007 |
-
|
1008 |
-
/**
|
1009 |
-
* Returns a function to use in pseudos for buttons
|
1010 |
-
* @param {String} type
|
1011 |
-
*/
|
1012 |
-
function createButtonPseudo( type ) {
|
1013 |
-
return function( elem ) {
|
1014 |
-
var name = elem.nodeName.toLowerCase();
|
1015 |
-
return ( name === "input" || name === "button" ) && elem.type === type;
|
1016 |
-
};
|
1017 |
-
}
|
1018 |
-
|
1019 |
-
/**
|
1020 |
-
* Returns a function to use in pseudos for :enabled/:disabled
|
1021 |
-
* @param {Boolean} disabled true for :disabled; false for :enabled
|
1022 |
-
*/
|
1023 |
-
function createDisabledPseudo( disabled ) {
|
1024 |
-
|
1025 |
-
// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
|
1026 |
-
return function( elem ) {
|
1027 |
-
|
1028 |
-
// Only certain elements can match :enabled or :disabled
|
1029 |
-
// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
|
1030 |
-
// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
|
1031 |
-
if ( "form" in elem ) {
|
1032 |
-
|
1033 |
-
// Check for inherited disabledness on relevant non-disabled elements:
|
1034 |
-
// * listed form-associated elements in a disabled fieldset
|
1035 |
-
// https://html.spec.whatwg.org/multipage/forms.html#category-listed
|
1036 |
-
// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
|
1037 |
-
// * option elements in a disabled optgroup
|
1038 |
-
// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
|
1039 |
-
// All such elements have a "form" property.
|
1040 |
-
if ( elem.parentNode && elem.disabled === false ) {
|
1041 |
-
|
1042 |
-
// Option elements defer to a parent optgroup if present
|
1043 |
-
if ( "label" in elem ) {
|
1044 |
-
if ( "label" in elem.parentNode ) {
|
1045 |
-
return elem.parentNode.disabled === disabled;
|
1046 |
-
} else {
|
1047 |
-
return elem.disabled === disabled;
|
1048 |
-
}
|
1049 |
-
}
|
1050 |
-
|
1051 |
-
// Support: IE 6 - 11
|
1052 |
-
// Use the isDisabled shortcut property to check for disabled fieldset ancestors
|
1053 |
-
return elem.isDisabled === disabled ||
|
1054 |
-
|
1055 |
-
// Where there is no isDisabled, check manually
|
1056 |
-
/* jshint -W018 */
|
1057 |
-
elem.isDisabled !== !disabled &&
|
1058 |
-
inDisabledFieldset( elem ) === disabled;
|
1059 |
-
}
|
1060 |
-
|
1061 |
-
return elem.disabled === disabled;
|
1062 |
-
|
1063 |
-
// Try to winnow out elements that can't be disabled before trusting the disabled property.
|
1064 |
-
// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
|
1065 |
-
// even exist on them, let alone have a boolean value.
|
1066 |
-
} else if ( "label" in elem ) {
|
1067 |
-
return elem.disabled === disabled;
|
1068 |
-
}
|
1069 |
-
|
1070 |
-
// Remaining elements are neither :enabled nor :disabled
|
1071 |
-
return false;
|
1072 |
-
};
|
1073 |
-
}
|
1074 |
-
|
1075 |
-
/**
|
1076 |
-
* Returns a function to use in pseudos for positionals
|
1077 |
-
* @param {Function} fn
|
1078 |
-
*/
|
1079 |
-
function createPositionalPseudo( fn ) {
|
1080 |
-
return markFunction( function( argument ) {
|
1081 |
-
argument = +argument;
|
1082 |
-
return markFunction( function( seed, matches ) {
|
1083 |
-
var j,
|
1084 |
-
matchIndexes = fn( [], seed.length, argument ),
|
1085 |
-
i = matchIndexes.length;
|
1086 |
-
|
1087 |
-
// Match elements found at the specified indexes
|
1088 |
-
while ( i-- ) {
|
1089 |
-
if ( seed[ ( j = matchIndexes[ i ] ) ] ) {
|
1090 |
-
seed[ j ] = !( matches[ j ] = seed[ j ] );
|
1091 |
-
}
|
1092 |
-
}
|
1093 |
-
} );
|
1094 |
-
} );
|
1095 |
-
}
|
1096 |
-
|
1097 |
-
/**
|
1098 |
-
* Checks a node for validity as a Sizzle context
|
1099 |
-
* @param {Element|Object=} context
|
1100 |
-
* @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
|
1101 |
-
*/
|
1102 |
-
function testContext( context ) {
|
1103 |
-
return context && typeof context.getElementsByTagName !== "undefined" && context;
|
1104 |
-
}
|
1105 |
-
|
1106 |
-
// Expose support vars for convenience
|
1107 |
-
support = Sizzle.support = {};
|
1108 |
-
|
1109 |
-
/**
|
1110 |
-
* Detects XML nodes
|
1111 |
-
* @param {Element|Object} elem An element or a document
|
1112 |
-
* @returns {Boolean} True iff elem is a non-HTML XML node
|
1113 |
-
*/
|
1114 |
-
isXML = Sizzle.isXML = function( elem ) {
|
1115 |
-
var namespace = elem && elem.namespaceURI,
|
1116 |
-
docElem = elem && ( elem.ownerDocument || elem ).documentElement;
|
1117 |
-
|
1118 |
-
// Support: IE <=8
|
1119 |
-
// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
|
1120 |
-
// https://bugs.jquery.com/ticket/4833
|
1121 |
-
return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" );
|
1122 |
-
};
|
1123 |
-
|
1124 |
-
/**
|
1125 |
-
* Sets document-related variables once based on the current document
|
1126 |
-
* @param {Element|Object} [doc] An element or document object to use to set the document
|
1127 |
-
* @returns {Object} Returns the current document
|
1128 |
-
*/
|
1129 |
-
setDocument = Sizzle.setDocument = function( node ) {
|
1130 |
-
var hasCompare, subWindow,
|
1131 |
-
doc = node ? node.ownerDocument || node : preferredDoc;
|
1132 |
-
|
1133 |
-
// Return early if doc is invalid or already selected
|
1134 |
-
// Support: IE 11+, Edge 17 - 18+
|
1135 |
-
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1136 |
-
// two documents; shallow comparisons work.
|
1137 |
-
// eslint-disable-next-line eqeqeq
|
1138 |
-
if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {
|
1139 |
-
return document;
|
1140 |
-
}
|
1141 |
-
|
1142 |
-
// Update global variables
|
1143 |
-
document = doc;
|
1144 |
-
docElem = document.documentElement;
|
1145 |
-
documentIsHTML = !isXML( document );
|
1146 |
-
|
1147 |
-
// Support: IE 9 - 11+, Edge 12 - 18+
|
1148 |
-
// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
|
1149 |
-
// Support: IE 11+, Edge 17 - 18+
|
1150 |
-
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1151 |
-
// two documents; shallow comparisons work.
|
1152 |
-
// eslint-disable-next-line eqeqeq
|
1153 |
-
if ( preferredDoc != document &&
|
1154 |
-
( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
|
1155 |
-
|
1156 |
-
// Support: IE 11, Edge
|
1157 |
-
if ( subWindow.addEventListener ) {
|
1158 |
-
subWindow.addEventListener( "unload", unloadHandler, false );
|
1159 |
-
|
1160 |
-
// Support: IE 9 - 10 only
|
1161 |
-
} else if ( subWindow.attachEvent ) {
|
1162 |
-
subWindow.attachEvent( "onunload", unloadHandler );
|
1163 |
-
}
|
1164 |
-
}
|
1165 |
-
|
1166 |
-
// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,
|
1167 |
-
// Safari 4 - 5 only, Opera <=11.6 - 12.x only
|
1168 |
-
// IE/Edge & older browsers don't support the :scope pseudo-class.
|
1169 |
-
// Support: Safari 6.0 only
|
1170 |
-
// Safari 6.0 supports :scope but it's an alias of :root there.
|
1171 |
-
support.scope = assert( function( el ) {
|
1172 |
-
docElem.appendChild( el ).appendChild( document.createElement( "div" ) );
|
1173 |
-
return typeof el.querySelectorAll !== "undefined" &&
|
1174 |
-
!el.querySelectorAll( ":scope fieldset div" ).length;
|
1175 |
-
} );
|
1176 |
-
|
1177 |
-
/* Attributes
|
1178 |
-
---------------------------------------------------------------------- */
|
1179 |
-
|
1180 |
-
// Support: IE<8
|
1181 |
-
// Verify that getAttribute really returns attributes and not properties
|
1182 |
-
// (excepting IE8 booleans)
|
1183 |
-
support.attributes = assert( function( el ) {
|
1184 |
-
el.className = "i";
|
1185 |
-
return !el.getAttribute( "className" );
|
1186 |
-
} );
|
1187 |
-
|
1188 |
-
/* getElement(s)By*
|
1189 |
-
---------------------------------------------------------------------- */
|
1190 |
-
|
1191 |
-
// Check if getElementsByTagName("*") returns only elements
|
1192 |
-
support.getElementsByTagName = assert( function( el ) {
|
1193 |
-
el.appendChild( document.createComment( "" ) );
|
1194 |
-
return !el.getElementsByTagName( "*" ).length;
|
1195 |
-
} );
|
1196 |
-
|
1197 |
-
// Support: IE<9
|
1198 |
-
support.getElementsByClassName = rnative.test( document.getElementsByClassName );
|
1199 |
-
|
1200 |
-
// Support: IE<10
|
1201 |
-
// Check if getElementById returns elements by name
|
1202 |
-
// The broken getElementById methods don't pick up programmatically-set names,
|
1203 |
-
// so use a roundabout getElementsByName test
|
1204 |
-
support.getById = assert( function( el ) {
|
1205 |
-
docElem.appendChild( el ).id = expando;
|
1206 |
-
return !document.getElementsByName || !document.getElementsByName( expando ).length;
|
1207 |
-
} );
|
1208 |
-
|
1209 |
-
// ID filter and find
|
1210 |
-
if ( support.getById ) {
|
1211 |
-
Expr.filter[ "ID" ] = function( id ) {
|
1212 |
-
var attrId = id.replace( runescape, funescape );
|
1213 |
-
return function( elem ) {
|
1214 |
-
return elem.getAttribute( "id" ) === attrId;
|
1215 |
-
};
|
1216 |
-
};
|
1217 |
-
Expr.find[ "ID" ] = function( id, context ) {
|
1218 |
-
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
|
1219 |
-
var elem = context.getElementById( id );
|
1220 |
-
return elem ? [ elem ] : [];
|
1221 |
-
}
|
1222 |
-
};
|
1223 |
-
} else {
|
1224 |
-
Expr.filter[ "ID" ] = function( id ) {
|
1225 |
-
var attrId = id.replace( runescape, funescape );
|
1226 |
-
return function( elem ) {
|
1227 |
-
var node = typeof elem.getAttributeNode !== "undefined" &&
|
1228 |
-
elem.getAttributeNode( "id" );
|
1229 |
-
return node && node.value === attrId;
|
1230 |
-
};
|
1231 |
-
};
|
1232 |
-
|
1233 |
-
// Support: IE 6 - 7 only
|
1234 |
-
// getElementById is not reliable as a find shortcut
|
1235 |
-
Expr.find[ "ID" ] = function( id, context ) {
|
1236 |
-
if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
|
1237 |
-
var node, i, elems,
|
1238 |
-
elem = context.getElementById( id );
|
1239 |
-
|
1240 |
-
if ( elem ) {
|
1241 |
-
|
1242 |
-
// Verify the id attribute
|
1243 |
-
node = elem.getAttributeNode( "id" );
|
1244 |
-
if ( node && node.value === id ) {
|
1245 |
-
return [ elem ];
|
1246 |
-
}
|
1247 |
-
|
1248 |
-
// Fall back on getElementsByName
|
1249 |
-
elems = context.getElementsByName( id );
|
1250 |
-
i = 0;
|
1251 |
-
while ( ( elem = elems[ i++ ] ) ) {
|
1252 |
-
node = elem.getAttributeNode( "id" );
|
1253 |
-
if ( node && node.value === id ) {
|
1254 |
-
return [ elem ];
|
1255 |
-
}
|
1256 |
-
}
|
1257 |
-
}
|
1258 |
-
|
1259 |
-
return [];
|
1260 |
-
}
|
1261 |
-
};
|
1262 |
-
}
|
1263 |
-
|
1264 |
-
// Tag
|
1265 |
-
Expr.find[ "TAG" ] = support.getElementsByTagName ?
|
1266 |
-
function( tag, context ) {
|
1267 |
-
if ( typeof context.getElementsByTagName !== "undefined" ) {
|
1268 |
-
return context.getElementsByTagName( tag );
|
1269 |
-
|
1270 |
-
// DocumentFragment nodes don't have gEBTN
|
1271 |
-
} else if ( support.qsa ) {
|
1272 |
-
return context.querySelectorAll( tag );
|
1273 |
-
}
|
1274 |
-
} :
|
1275 |
-
|
1276 |
-
function( tag, context ) {
|
1277 |
-
var elem,
|
1278 |
-
tmp = [],
|
1279 |
-
i = 0,
|
1280 |
-
|
1281 |
-
// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
|
1282 |
-
results = context.getElementsByTagName( tag );
|
1283 |
-
|
1284 |
-
// Filter out possible comments
|
1285 |
-
if ( tag === "*" ) {
|
1286 |
-
while ( ( elem = results[ i++ ] ) ) {
|
1287 |
-
if ( elem.nodeType === 1 ) {
|
1288 |
-
tmp.push( elem );
|
1289 |
-
}
|
1290 |
-
}
|
1291 |
-
|
1292 |
-
return tmp;
|
1293 |
-
}
|
1294 |
-
return results;
|
1295 |
-
};
|
1296 |
-
|
1297 |
-
// Class
|
1298 |
-
Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) {
|
1299 |
-
if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
|
1300 |
-
return context.getElementsByClassName( className );
|
1301 |
-
}
|
1302 |
-
};
|
1303 |
-
|
1304 |
-
/* QSA/matchesSelector
|
1305 |
-
---------------------------------------------------------------------- */
|
1306 |
-
|
1307 |
-
// QSA and matchesSelector support
|
1308 |
-
|
1309 |
-
// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
|
1310 |
-
rbuggyMatches = [];
|
1311 |
-
|
1312 |
-
// qSa(:focus) reports false when true (Chrome 21)
|
1313 |
-
// We allow this because of a bug in IE8/9 that throws an error
|
1314 |
-
// whenever `document.activeElement` is accessed on an iframe
|
1315 |
-
// So, we allow :focus to pass through QSA all the time to avoid the IE error
|
1316 |
-
// See https://bugs.jquery.com/ticket/13378
|
1317 |
-
rbuggyQSA = [];
|
1318 |
-
|
1319 |
-
if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {
|
1320 |
-
|
1321 |
-
// Build QSA regex
|
1322 |
-
// Regex strategy adopted from Diego Perini
|
1323 |
-
assert( function( el ) {
|
1324 |
-
|
1325 |
-
var input;
|
1326 |
-
|
1327 |
-
// Select is set to empty string on purpose
|
1328 |
-
// This is to test IE's treatment of not explicitly
|
1329 |
-
// setting a boolean content attribute,
|
1330 |
-
// since its presence should be enough
|
1331 |
-
// https://bugs.jquery.com/ticket/12359
|
1332 |
-
docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
|
1333 |
-
"<select id='" + expando + "-\r\\' msallowcapture=''>" +
|
1334 |
-
"<option selected=''></option></select>";
|
1335 |
-
|
1336 |
-
// Support: IE8, Opera 11-12.16
|
1337 |
-
// Nothing should be selected when empty strings follow ^= or $= or *=
|
1338 |
-
// The test attribute must be unknown in Opera but "safe" for WinRT
|
1339 |
-
// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
|
1340 |
-
if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) {
|
1341 |
-
rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
|
1342 |
-
}
|
1343 |
-
|
1344 |
-
// Support: IE8
|
1345 |
-
// Boolean attributes and "value" are not treated correctly
|
1346 |
-
if ( !el.querySelectorAll( "[selected]" ).length ) {
|
1347 |
-
rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
|
1348 |
-
}
|
1349 |
-
|
1350 |
-
// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
|
1351 |
-
if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
|
1352 |
-
rbuggyQSA.push( "~=" );
|
1353 |
-
}
|
1354 |
-
|
1355 |
-
// Support: IE 11+, Edge 15 - 18+
|
1356 |
-
// IE 11/Edge don't find elements on a `[name='']` query in some cases.
|
1357 |
-
// Adding a temporary attribute to the document before the selection works
|
1358 |
-
// around the issue.
|
1359 |
-
// Interestingly, IE 10 & older don't seem to have the issue.
|
1360 |
-
input = document.createElement( "input" );
|
1361 |
-
input.setAttribute( "name", "" );
|
1362 |
-
el.appendChild( input );
|
1363 |
-
if ( !el.querySelectorAll( "[name='']" ).length ) {
|
1364 |
-
rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
|
1365 |
-
whitespace + "*(?:''|\"\")" );
|
1366 |
-
}
|
1367 |
-
|
1368 |
-
// Webkit/Opera - :checked should return selected option elements
|
1369 |
-
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
|
1370 |
-
// IE8 throws error here and will not see later tests
|
1371 |
-
if ( !el.querySelectorAll( ":checked" ).length ) {
|
1372 |
-
rbuggyQSA.push( ":checked" );
|
1373 |
-
}
|
1374 |
-
|
1375 |
-
// Support: Safari 8+, iOS 8+
|
1376 |
-
// https://bugs.webkit.org/show_bug.cgi?id=136851
|
1377 |
-
// In-page `selector#id sibling-combinator selector` fails
|
1378 |
-
if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
|
1379 |
-
rbuggyQSA.push( ".#.+[+~]" );
|
1380 |
-
}
|
1381 |
-
|
1382 |
-
// Support: Firefox <=3.6 - 5 only
|
1383 |
-
// Old Firefox doesn't throw on a badly-escaped identifier.
|
1384 |
-
el.querySelectorAll( "\\\f" );
|
1385 |
-
rbuggyQSA.push( "[\\r\\n\\f]" );
|
1386 |
-
} );
|
1387 |
-
|
1388 |
-
assert( function( el ) {
|
1389 |
-
el.innerHTML = "<a href='' disabled='disabled'></a>" +
|
1390 |
-
"<select disabled='disabled'><option/></select>";
|
1391 |
-
|
1392 |
-
// Support: Windows 8 Native Apps
|
1393 |
-
// The type and name attributes are restricted during .innerHTML assignment
|
1394 |
-
var input = document.createElement( "input" );
|
1395 |
-
input.setAttribute( "type", "hidden" );
|
1396 |
-
el.appendChild( input ).setAttribute( "name", "D" );
|
1397 |
-
|
1398 |
-
// Support: IE8
|
1399 |
-
// Enforce case-sensitivity of name attribute
|
1400 |
-
if ( el.querySelectorAll( "[name=d]" ).length ) {
|
1401 |
-
rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
|
1402 |
-
}
|
1403 |
-
|
1404 |
-
// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
|
1405 |
-
// IE8 throws error here and will not see later tests
|
1406 |
-
if ( el.querySelectorAll( ":enabled" ).length !== 2 ) {
|
1407 |
-
rbuggyQSA.push( ":enabled", ":disabled" );
|
1408 |
-
}
|
1409 |
-
|
1410 |
-
// Support: IE9-11+
|
1411 |
-
// IE's :disabled selector does not pick up the children of disabled fieldsets
|
1412 |
-
docElem.appendChild( el ).disabled = true;
|
1413 |
-
if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
|
1414 |
-
rbuggyQSA.push( ":enabled", ":disabled" );
|
1415 |
-
}
|
1416 |
-
|
1417 |
-
// Support: Opera 10 - 11 only
|
1418 |
-
// Opera 10-11 does not throw on post-comma invalid pseudos
|
1419 |
-
el.querySelectorAll( "*,:x" );
|
1420 |
-
rbuggyQSA.push( ",.*:" );
|
1421 |
-
} );
|
1422 |
-
}
|
1423 |
-
|
1424 |
-
if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||
|
1425 |
-
docElem.webkitMatchesSelector ||
|
1426 |
-
docElem.mozMatchesSelector ||
|
1427 |
-
docElem.oMatchesSelector ||
|
1428 |
-
docElem.msMatchesSelector ) ) ) ) {
|
1429 |
-
|
1430 |
-
assert( function( el ) {
|
1431 |
-
|
1432 |
-
// Check to see if it's possible to do matchesSelector
|
1433 |
-
// on a disconnected node (IE 9)
|
1434 |
-
support.disconnectedMatch = matches.call( el, "*" );
|
1435 |
-
|
1436 |
-
// This should fail with an exception
|
1437 |
-
// Gecko does not error, returns false instead
|
1438 |
-
matches.call( el, "[s!='']:x" );
|
1439 |
-
rbuggyMatches.push( "!=", pseudos );
|
1440 |
-
} );
|
1441 |
-
}
|
1442 |
-
|
1443 |
-
rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
|
1444 |
-
rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) );
|
1445 |
-
|
1446 |
-
/* Contains
|
1447 |
-
---------------------------------------------------------------------- */
|
1448 |
-
hasCompare = rnative.test( docElem.compareDocumentPosition );
|
1449 |
-
|
1450 |
-
// Element contains another
|
1451 |
-
// Purposefully self-exclusive
|
1452 |
-
// As in, an element does not contain itself
|
1453 |
-
contains = hasCompare || rnative.test( docElem.contains ) ?
|
1454 |
-
function( a, b ) {
|
1455 |
-
var adown = a.nodeType === 9 ? a.documentElement : a,
|
1456 |
-
bup = b && b.parentNode;
|
1457 |
-
return a === bup || !!( bup && bup.nodeType === 1 && (
|
1458 |
-
adown.contains ?
|
1459 |
-
adown.contains( bup ) :
|
1460 |
-
a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
|
1461 |
-
) );
|
1462 |
-
} :
|
1463 |
-
function( a, b ) {
|
1464 |
-
if ( b ) {
|
1465 |
-
while ( ( b = b.parentNode ) ) {
|
1466 |
-
if ( b === a ) {
|
1467 |
-
return true;
|
1468 |
-
}
|
1469 |
-
}
|
1470 |
-
}
|
1471 |
-
return false;
|
1472 |
-
};
|
1473 |
-
|
1474 |
-
/* Sorting
|
1475 |
-
---------------------------------------------------------------------- */
|
1476 |
-
|
1477 |
-
// Document order sorting
|
1478 |
-
sortOrder = hasCompare ?
|
1479 |
-
function( a, b ) {
|
1480 |
-
|
1481 |
-
// Flag for duplicate removal
|
1482 |
-
if ( a === b ) {
|
1483 |
-
hasDuplicate = true;
|
1484 |
-
return 0;
|
1485 |
-
}
|
1486 |
-
|
1487 |
-
// Sort on method existence if only one input has compareDocumentPosition
|
1488 |
-
var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
|
1489 |
-
if ( compare ) {
|
1490 |
-
return compare;
|
1491 |
-
}
|
1492 |
-
|
1493 |
-
// Calculate position if both inputs belong to the same document
|
1494 |
-
// Support: IE 11+, Edge 17 - 18+
|
1495 |
-
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1496 |
-
// two documents; shallow comparisons work.
|
1497 |
-
// eslint-disable-next-line eqeqeq
|
1498 |
-
compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?
|
1499 |
-
a.compareDocumentPosition( b ) :
|
1500 |
-
|
1501 |
-
// Otherwise we know they are disconnected
|
1502 |
-
1;
|
1503 |
-
|
1504 |
-
// Disconnected nodes
|
1505 |
-
if ( compare & 1 ||
|
1506 |
-
( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {
|
1507 |
-
|
1508 |
-
// Choose the first element that is related to our preferred document
|
1509 |
-
// Support: IE 11+, Edge 17 - 18+
|
1510 |
-
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1511 |
-
// two documents; shallow comparisons work.
|
1512 |
-
// eslint-disable-next-line eqeqeq
|
1513 |
-
if ( a == document || a.ownerDocument == preferredDoc &&
|
1514 |
-
contains( preferredDoc, a ) ) {
|
1515 |
-
return -1;
|
1516 |
-
}
|
1517 |
-
|
1518 |
-
// Support: IE 11+, Edge 17 - 18+
|
1519 |
-
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1520 |
-
// two documents; shallow comparisons work.
|
1521 |
-
// eslint-disable-next-line eqeqeq
|
1522 |
-
if ( b == document || b.ownerDocument == preferredDoc &&
|
1523 |
-
contains( preferredDoc, b ) ) {
|
1524 |
-
return 1;
|
1525 |
-
}
|
1526 |
-
|
1527 |
-
// Maintain original order
|
1528 |
-
return sortInput ?
|
1529 |
-
( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
|
1530 |
-
0;
|
1531 |
-
}
|
1532 |
-
|
1533 |
-
return compare & 4 ? -1 : 1;
|
1534 |
-
} :
|
1535 |
-
function( a, b ) {
|
1536 |
-
|
1537 |
-
// Exit early if the nodes are identical
|
1538 |
-
if ( a === b ) {
|
1539 |
-
hasDuplicate = true;
|
1540 |
-
return 0;
|
1541 |
-
}
|
1542 |
-
|
1543 |
-
var cur,
|
1544 |
-
i = 0,
|
1545 |
-
aup = a.parentNode,
|
1546 |
-
bup = b.parentNode,
|
1547 |
-
ap = [ a ],
|
1548 |
-
bp = [ b ];
|
1549 |
-
|
1550 |
-
// Parentless nodes are either documents or disconnected
|
1551 |
-
if ( !aup || !bup ) {
|
1552 |
-
|
1553 |
-
// Support: IE 11+, Edge 17 - 18+
|
1554 |
-
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1555 |
-
// two documents; shallow comparisons work.
|
1556 |
-
/* eslint-disable eqeqeq */
|
1557 |
-
return a == document ? -1 :
|
1558 |
-
b == document ? 1 :
|
1559 |
-
/* eslint-enable eqeqeq */
|
1560 |
-
aup ? -1 :
|
1561 |
-
bup ? 1 :
|
1562 |
-
sortInput ?
|
1563 |
-
( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
|
1564 |
-
0;
|
1565 |
-
|
1566 |
-
// If the nodes are siblings, we can do a quick check
|
1567 |
-
} else if ( aup === bup ) {
|
1568 |
-
return siblingCheck( a, b );
|
1569 |
-
}
|
1570 |
-
|
1571 |
-
// Otherwise we need full lists of their ancestors for comparison
|
1572 |
-
cur = a;
|
1573 |
-
while ( ( cur = cur.parentNode ) ) {
|
1574 |
-
ap.unshift( cur );
|
1575 |
-
}
|
1576 |
-
cur = b;
|
1577 |
-
while ( ( cur = cur.parentNode ) ) {
|
1578 |
-
bp.unshift( cur );
|
1579 |
-
}
|
1580 |
-
|
1581 |
-
// Walk down the tree looking for a discrepancy
|
1582 |
-
while ( ap[ i ] === bp[ i ] ) {
|
1583 |
-
i++;
|
1584 |
-
}
|
1585 |
-
|
1586 |
-
return i ?
|
1587 |
-
|
1588 |
-
// Do a sibling check if the nodes have a common ancestor
|
1589 |
-
siblingCheck( ap[ i ], bp[ i ] ) :
|
1590 |
-
|
1591 |
-
// Otherwise nodes in our document sort first
|
1592 |
-
// Support: IE 11+, Edge 17 - 18+
|
1593 |
-
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1594 |
-
// two documents; shallow comparisons work.
|
1595 |
-
/* eslint-disable eqeqeq */
|
1596 |
-
ap[ i ] == preferredDoc ? -1 :
|
1597 |
-
bp[ i ] == preferredDoc ? 1 :
|
1598 |
-
/* eslint-enable eqeqeq */
|
1599 |
-
0;
|
1600 |
-
};
|
1601 |
-
|
1602 |
-
return document;
|
1603 |
-
};
|
1604 |
-
|
1605 |
-
Sizzle.matches = function( expr, elements ) {
|
1606 |
-
return Sizzle( expr, null, null, elements );
|
1607 |
-
};
|
1608 |
-
|
1609 |
-
Sizzle.matchesSelector = function( elem, expr ) {
|
1610 |
-
setDocument( elem );
|
1611 |
-
|
1612 |
-
if ( support.matchesSelector && documentIsHTML &&
|
1613 |
-
!nonnativeSelectorCache[ expr + " " ] &&
|
1614 |
-
( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
|
1615 |
-
( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
|
1616 |
-
|
1617 |
-
try {
|
1618 |
-
var ret = matches.call( elem, expr );
|
1619 |
-
|
1620 |
-
// IE 9's matchesSelector returns false on disconnected nodes
|
1621 |
-
if ( ret || support.disconnectedMatch ||
|
1622 |
-
|
1623 |
-
// As well, disconnected nodes are said to be in a document
|
1624 |
-
// fragment in IE 9
|
1625 |
-
elem.document && elem.document.nodeType !== 11 ) {
|
1626 |
-
return ret;
|
1627 |
-
}
|
1628 |
-
} catch ( e ) {
|
1629 |
-
nonnativeSelectorCache( expr, true );
|
1630 |
-
}
|
1631 |
-
}
|
1632 |
-
|
1633 |
-
return Sizzle( expr, document, null, [ elem ] ).length > 0;
|
1634 |
-
};
|
1635 |
-
|
1636 |
-
Sizzle.contains = function( context, elem ) {
|
1637 |
-
|
1638 |
-
// Set document vars if needed
|
1639 |
-
// Support: IE 11+, Edge 17 - 18+
|
1640 |
-
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1641 |
-
// two documents; shallow comparisons work.
|
1642 |
-
// eslint-disable-next-line eqeqeq
|
1643 |
-
if ( ( context.ownerDocument || context ) != document ) {
|
1644 |
-
setDocument( context );
|
1645 |
-
}
|
1646 |
-
return contains( context, elem );
|
1647 |
-
};
|
1648 |
-
|
1649 |
-
Sizzle.attr = function( elem, name ) {
|
1650 |
-
|
1651 |
-
// Set document vars if needed
|
1652 |
-
// Support: IE 11+, Edge 17 - 18+
|
1653 |
-
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
1654 |
-
// two documents; shallow comparisons work.
|
1655 |
-
// eslint-disable-next-line eqeqeq
|
1656 |
-
if ( ( elem.ownerDocument || elem ) != document ) {
|
1657 |
-
setDocument( elem );
|
1658 |
-
}
|
1659 |
-
|
1660 |
-
var fn = Expr.attrHandle[ name.toLowerCase() ],
|
1661 |
-
|
1662 |
-
// Don't get fooled by Object.prototype properties (jQuery #13807)
|
1663 |
-
val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
|
1664 |
-
fn( elem, name, !documentIsHTML ) :
|
1665 |
-
undefined;
|
1666 |
-
|
1667 |
-
return val !== undefined ?
|
1668 |
-
val :
|
1669 |
-
support.attributes || !documentIsHTML ?
|
1670 |
-
elem.getAttribute( name ) :
|
1671 |
-
( val = elem.getAttributeNode( name ) ) && val.specified ?
|
1672 |
-
val.value :
|
1673 |
-
null;
|
1674 |
-
};
|
1675 |
-
|
1676 |
-
Sizzle.escape = function( sel ) {
|
1677 |
-
return ( sel + "" ).replace( rcssescape, fcssescape );
|
1678 |
-
};
|
1679 |
-
|
1680 |
-
Sizzle.error = function( msg ) {
|
1681 |
-
throw new Error( "Syntax error, unrecognized expression: " + msg );
|
1682 |
-
};
|
1683 |
-
|
1684 |
-
/**
|
1685 |
-
* Document sorting and removing duplicates
|
1686 |
-
* @param {ArrayLike} results
|
1687 |
-
*/
|
1688 |
-
Sizzle.uniqueSort = function( results ) {
|
1689 |
-
var elem,
|
1690 |
-
duplicates = [],
|
1691 |
-
j = 0,
|
1692 |
-
i = 0;
|
1693 |
-
|
1694 |
-
// Unless we *know* we can detect duplicates, assume their presence
|
1695 |
-
hasDuplicate = !support.detectDuplicates;
|
1696 |
-
sortInput = !support.sortStable && results.slice( 0 );
|
1697 |
-
results.sort( sortOrder );
|
1698 |
-
|
1699 |
-
if ( hasDuplicate ) {
|
1700 |
-
while ( ( elem = results[ i++ ] ) ) {
|
1701 |
-
if ( elem === results[ i ] ) {
|
1702 |
-
j = duplicates.push( i );
|
1703 |
-
}
|
1704 |
-
}
|
1705 |
-
while ( j-- ) {
|
1706 |
-
results.splice( duplicates[ j ], 1 );
|
1707 |
-
}
|
1708 |
-
}
|
1709 |
-
|
1710 |
-
// Clear input after sorting to release objects
|
1711 |
-
// See https://github.com/jquery/sizzle/pull/225
|
1712 |
-
sortInput = null;
|
1713 |
-
|
1714 |
-
return results;
|
1715 |
-
};
|
1716 |
-
|
1717 |
-
/**
|
1718 |
-
* Utility function for retrieving the text value of an array of DOM nodes
|
1719 |
-
* @param {Array|Element} elem
|
1720 |
-
*/
|
1721 |
-
getText = Sizzle.getText = function( elem ) {
|
1722 |
-
var node,
|
1723 |
-
ret = "",
|
1724 |
-
i = 0,
|
1725 |
-
nodeType = elem.nodeType;
|
1726 |
-
|
1727 |
-
if ( !nodeType ) {
|
1728 |
-
|
1729 |
-
// If no nodeType, this is expected to be an array
|
1730 |
-
while ( ( node = elem[ i++ ] ) ) {
|
1731 |
-
|
1732 |
-
// Do not traverse comment nodes
|
1733 |
-
ret += getText( node );
|
1734 |
-
}
|
1735 |
-
} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
|
1736 |
-
|
1737 |
-
// Use textContent for elements
|
1738 |
-
// innerText usage removed for consistency of new lines (jQuery #11153)
|
1739 |
-
if ( typeof elem.textContent === "string" ) {
|
1740 |
-
return elem.textContent;
|
1741 |
-
} else {
|
1742 |
-
|
1743 |
-
// Traverse its children
|
1744 |
-
for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
|
1745 |
-
ret += getText( elem );
|
1746 |
-
}
|
1747 |
-
}
|
1748 |
-
} else if ( nodeType === 3 || nodeType === 4 ) {
|
1749 |
-
return elem.nodeValue;
|
1750 |
-
}
|
1751 |
-
|
1752 |
-
// Do not include comment or processing instruction nodes
|
1753 |
-
|
1754 |
-
return ret;
|
1755 |
-
};
|
1756 |
-
|
1757 |
-
Expr = Sizzle.selectors = {
|
1758 |
-
|
1759 |
-
// Can be adjusted by the user
|
1760 |
-
cacheLength: 50,
|
1761 |
-
|
1762 |
-
createPseudo: markFunction,
|
1763 |
-
|
1764 |
-
match: matchExpr,
|
1765 |
-
|
1766 |
-
attrHandle: {},
|
1767 |
-
|
1768 |
-
find: {},
|
1769 |
-
|
1770 |
-
relative: {
|
1771 |
-
">": { dir: "parentNode", first: true },
|
1772 |
-
" ": { dir: "parentNode" },
|
1773 |
-
"+": { dir: "previousSibling", first: true },
|
1774 |
-
"~": { dir: "previousSibling" }
|
1775 |
-
},
|
1776 |
-
|
1777 |
-
preFilter: {
|
1778 |
-
"ATTR": function( match ) {
|
1779 |
-
match[ 1 ] = match[ 1 ].replace( runescape, funescape );
|
1780 |
-
|
1781 |
-
// Move the given value to match[3] whether quoted or unquoted
|
1782 |
-
match[ 3 ] = ( match[ 3 ] || match[ 4 ] ||
|
1783 |
-
match[ 5 ] || "" ).replace( runescape, funescape );
|
1784 |
-
|
1785 |
-
if ( match[ 2 ] === "~=" ) {
|
1786 |
-
match[ 3 ] = " " + match[ 3 ] + " ";
|
1787 |
-
}
|
1788 |
-
|
1789 |
-
return match.slice( 0, 4 );
|
1790 |
-
},
|
1791 |
-
|
1792 |
-
"CHILD": function( match ) {
|
1793 |
-
|
1794 |
-
/* matches from matchExpr["CHILD"]
|
1795 |
-
1 type (only|nth|...)
|
1796 |
-
2 what (child|of-type)
|
1797 |
-
3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
|
1798 |
-
4 xn-component of xn+y argument ([+-]?\d*n|)
|
1799 |
-
5 sign of xn-component
|
1800 |
-
6 x of xn-component
|
1801 |
-
7 sign of y-component
|
1802 |
-
8 y of y-component
|
1803 |
-
*/
|
1804 |
-
match[ 1 ] = match[ 1 ].toLowerCase();
|
1805 |
-
|
1806 |
-
if ( match[ 1 ].slice( 0, 3 ) === "nth" ) {
|
1807 |
-
|
1808 |
-
// nth-* requires argument
|
1809 |
-
if ( !match[ 3 ] ) {
|
1810 |
-
Sizzle.error( match[ 0 ] );
|
1811 |
-
}
|
1812 |
-
|
1813 |
-
// numeric x and y parameters for Expr.filter.CHILD
|
1814 |
-
// remember that false/true cast respectively to 0/1
|
1815 |
-
match[ 4 ] = +( match[ 4 ] ?
|
1816 |
-
match[ 5 ] + ( match[ 6 ] || 1 ) :
|
1817 |
-
2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) );
|
1818 |
-
match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
|
1819 |
-
|
1820 |
-
// other types prohibit arguments
|
1821 |
-
} else if ( match[ 3 ] ) {
|
1822 |
-
Sizzle.error( match[ 0 ] );
|
1823 |
-
}
|
1824 |
-
|
1825 |
-
return match;
|
1826 |
-
},
|
1827 |
-
|
1828 |
-
"PSEUDO": function( match ) {
|
1829 |
-
var excess,
|
1830 |
-
unquoted = !match[ 6 ] && match[ 2 ];
|
1831 |
-
|
1832 |
-
if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) {
|
1833 |
-
return null;
|
1834 |
-
}
|
1835 |
-
|
1836 |
-
// Accept quoted arguments as-is
|
1837 |
-
if ( match[ 3 ] ) {
|
1838 |
-
match[ 2 ] = match[ 4 ] || match[ 5 ] || "";
|
1839 |
-
|
1840 |
-
// Strip excess characters from unquoted arguments
|
1841 |
-
} else if ( unquoted && rpseudo.test( unquoted ) &&
|
1842 |
-
|
1843 |
-
// Get excess from tokenize (recursively)
|
1844 |
-
( excess = tokenize( unquoted, true ) ) &&
|
1845 |
-
|
1846 |
-
// advance to the next closing parenthesis
|
1847 |
-
( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) {
|
1848 |
-
|
1849 |
-
// excess is a negative index
|
1850 |
-
match[ 0 ] = match[ 0 ].slice( 0, excess );
|
1851 |
-
match[ 2 ] = unquoted.slice( 0, excess );
|
1852 |
-
}
|
1853 |
-
|
1854 |
-
// Return only captures needed by the pseudo filter method (type and argument)
|
1855 |
-
return match.slice( 0, 3 );
|
1856 |
-
}
|
1857 |
-
},
|
1858 |
-
|
1859 |
-
filter: {
|
1860 |
-
|
1861 |
-
"TAG": function( nodeNameSelector ) {
|
1862 |
-
var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
|
1863 |
-
return nodeNameSelector === "*" ?
|
1864 |
-
function() {
|
1865 |
-
return true;
|
1866 |
-
} :
|
1867 |
-
function( elem ) {
|
1868 |
-
return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
|
1869 |
-
};
|
1870 |
-
},
|
1871 |
-
|
1872 |
-
"CLASS": function( className ) {
|
1873 |
-
var pattern = classCache[ className + " " ];
|
1874 |
-
|
1875 |
-
return pattern ||
|
1876 |
-
( pattern = new RegExp( "(^|" + whitespace +
|
1877 |
-
")" + className + "(" + whitespace + "|$)" ) ) && classCache(
|
1878 |
-
className, function( elem ) {
|
1879 |
-
return pattern.test(
|
1880 |
-
typeof elem.className === "string" && elem.className ||
|
1881 |
-
typeof elem.getAttribute !== "undefined" &&
|
1882 |
-
elem.getAttribute( "class" ) ||
|
1883 |
-
""
|
1884 |
-
);
|
1885 |
-
} );
|
1886 |
-
},
|
1887 |
-
|
1888 |
-
"ATTR": function( name, operator, check ) {
|
1889 |
-
return function( elem ) {
|
1890 |
-
var result = Sizzle.attr( elem, name );
|
1891 |
-
|
1892 |
-
if ( result == null ) {
|
1893 |
-
return operator === "!=";
|
1894 |
-
}
|
1895 |
-
if ( !operator ) {
|
1896 |
-
return true;
|
1897 |
-
}
|
1898 |
-
|
1899 |
-
result += "";
|
1900 |
-
|
1901 |
-
/* eslint-disable max-len */
|
1902 |
-
|
1903 |
-
return operator === "=" ? result === check :
|
1904 |
-
operator === "!=" ? result !== check :
|
1905 |
-
operator === "^=" ? check && result.indexOf( check ) === 0 :
|
1906 |
-
operator === "*=" ? check && result.indexOf( check ) > -1 :
|
1907 |
-
operator === "$=" ? check && result.slice( -check.length ) === check :
|
1908 |
-
operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
|
1909 |
-
operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
|
1910 |
-
false;
|
1911 |
-
/* eslint-enable max-len */
|
1912 |
-
|
1913 |
-
};
|
1914 |
-
},
|
1915 |
-
|
1916 |
-
"CHILD": function( type, what, _argument, first, last ) {
|
1917 |
-
var simple = type.slice( 0, 3 ) !== "nth",
|
1918 |
-
forward = type.slice( -4 ) !== "last",
|
1919 |
-
ofType = what === "of-type";
|
1920 |
-
|
1921 |
-
return first === 1 && last === 0 ?
|
1922 |
-
|
1923 |
-
// Shortcut for :nth-*(n)
|
1924 |
-
function( elem ) {
|
1925 |
-
return !!elem.parentNode;
|
1926 |
-
} :
|
1927 |
-
|
1928 |
-
function( elem, _context, xml ) {
|
1929 |
-
var cache, uniqueCache, outerCache, node, nodeIndex, start,
|
1930 |
-
dir = simple !== forward ? "nextSibling" : "previousSibling",
|
1931 |
-
parent = elem.parentNode,
|
1932 |
-
name = ofType && elem.nodeName.toLowerCase(),
|
1933 |
-
useCache = !xml && !ofType,
|
1934 |
-
diff = false;
|
1935 |
-
|
1936 |
-
if ( parent ) {
|
1937 |
-
|
1938 |
-
// :(first|last|only)-(child|of-type)
|
1939 |
-
if ( simple ) {
|
1940 |
-
while ( dir ) {
|
1941 |
-
node = elem;
|
1942 |
-
while ( ( node = node[ dir ] ) ) {
|
1943 |
-
if ( ofType ?
|
1944 |
-
node.nodeName.toLowerCase() === name :
|
1945 |
-
node.nodeType === 1 ) {
|
1946 |
-
|
1947 |
-
return false;
|
1948 |
-
}
|
1949 |
-
}
|
1950 |
-
|
1951 |
-
// Reverse direction for :only-* (if we haven't yet done so)
|
1952 |
-
start = dir = type === "only" && !start && "nextSibling";
|
1953 |
-
}
|
1954 |
-
return true;
|
1955 |
-
}
|
1956 |
-
|
1957 |
-
start = [ forward ? parent.firstChild : parent.lastChild ];
|
1958 |
-
|
1959 |
-
// non-xml :nth-child(...) stores cache data on `parent`
|
1960 |
-
if ( forward && useCache ) {
|
1961 |
-
|
1962 |
-
// Seek `elem` from a previously-cached index
|
1963 |
-
|
1964 |
-
// ...in a gzip-friendly way
|
1965 |
-
node = parent;
|
1966 |
-
outerCache = node[ expando ] || ( node[ expando ] = {} );
|
1967 |
-
|
1968 |
-
// Support: IE <9 only
|
1969 |
-
// Defend against cloned attroperties (jQuery gh-1709)
|
1970 |
-
uniqueCache = outerCache[ node.uniqueID ] ||
|
1971 |
-
( outerCache[ node.uniqueID ] = {} );
|
1972 |
-
|
1973 |
-
cache = uniqueCache[ type ] || [];
|
1974 |
-
nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
|
1975 |
-
diff = nodeIndex && cache[ 2 ];
|
1976 |
-
node = nodeIndex && parent.childNodes[ nodeIndex ];
|
1977 |
-
|
1978 |
-
while ( ( node = ++nodeIndex && node && node[ dir ] ||
|
1979 |
-
|
1980 |
-
// Fallback to seeking `elem` from the start
|
1981 |
-
( diff = nodeIndex = 0 ) || start.pop() ) ) {
|
1982 |
-
|
1983 |
-
// When found, cache indexes on `parent` and break
|
1984 |
-
if ( node.nodeType === 1 && ++diff && node === elem ) {
|
1985 |
-
uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
|
1986 |
-
break;
|
1987 |
-
}
|
1988 |
-
}
|
1989 |
-
|
1990 |
-
} else {
|
1991 |
-
|
1992 |
-
// Use previously-cached element index if available
|
1993 |
-
if ( useCache ) {
|
1994 |
-
|
1995 |
-
// ...in a gzip-friendly way
|
1996 |
-
node = elem;
|
1997 |
-
outerCache = node[ expando ] || ( node[ expando ] = {} );
|
1998 |
-
|
1999 |
-
// Support: IE <9 only
|
2000 |
-
// Defend against cloned attroperties (jQuery gh-1709)
|
2001 |
-
uniqueCache = outerCache[ node.uniqueID ] ||
|
2002 |
-
( outerCache[ node.uniqueID ] = {} );
|
2003 |
-
|
2004 |
-
cache = uniqueCache[ type ] || [];
|
2005 |
-
nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
|
2006 |
-
diff = nodeIndex;
|
2007 |
-
}
|
2008 |
-
|
2009 |
-
// xml :nth-child(...)
|
2010 |
-
// or :nth-last-child(...) or :nth(-last)?-of-type(...)
|
2011 |
-
if ( diff === false ) {
|
2012 |
-
|
2013 |
-
// Use the same loop as above to seek `elem` from the start
|
2014 |
-
while ( ( node = ++nodeIndex && node && node[ dir ] ||
|
2015 |
-
( diff = nodeIndex = 0 ) || start.pop() ) ) {
|
2016 |
-
|
2017 |
-
if ( ( ofType ?
|
2018 |
-
node.nodeName.toLowerCase() === name :
|
2019 |
-
node.nodeType === 1 ) &&
|
2020 |
-
++diff ) {
|
2021 |
-
|
2022 |
-
// Cache the index of each encountered element
|
2023 |
-
if ( useCache ) {
|
2024 |
-
outerCache = node[ expando ] ||
|
2025 |
-
( node[ expando ] = {} );
|
2026 |
-
|
2027 |
-
// Support: IE <9 only
|
2028 |
-
// Defend against cloned attroperties (jQuery gh-1709)
|
2029 |
-
uniqueCache = outerCache[ node.uniqueID ] ||
|
2030 |
-
( outerCache[ node.uniqueID ] = {} );
|
2031 |
-
|
2032 |
-
uniqueCache[ type ] = [ dirruns, diff ];
|
2033 |
-
}
|
2034 |
-
|
2035 |
-
if ( node === elem ) {
|
2036 |
-
break;
|
2037 |
-
}
|
2038 |
-
}
|
2039 |
-
}
|
2040 |
-
}
|
2041 |
-
}
|
2042 |
-
|
2043 |
-
// Incorporate the offset, then check against cycle size
|
2044 |
-
diff -= last;
|
2045 |
-
return diff === first || ( diff % first === 0 && diff / first >= 0 );
|
2046 |
-
}
|
2047 |
-
};
|
2048 |
-
},
|
2049 |
-
|
2050 |
-
"PSEUDO": function( pseudo, argument ) {
|
2051 |
-
|
2052 |
-
// pseudo-class names are case-insensitive
|
2053 |
-
// http://www.w3.org/TR/selectors/#pseudo-classes
|
2054 |
-
// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
|
2055 |
-
// Remember that setFilters inherits from pseudos
|
2056 |
-
var args,
|
2057 |
-
fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
|
2058 |
-
Sizzle.error( "unsupported pseudo: " + pseudo );
|
2059 |
-
|
2060 |
-
// The user may use createPseudo to indicate that
|
2061 |
-
// arguments are needed to create the filter function
|
2062 |
-
// just as Sizzle does
|
2063 |
-
if ( fn[ expando ] ) {
|
2064 |
-
return fn( argument );
|
2065 |
-
}
|
2066 |
-
|
2067 |
-
// But maintain support for old signatures
|
2068 |
-
if ( fn.length > 1 ) {
|
2069 |
-
args = [ pseudo, pseudo, "", argument ];
|
2070 |
-
return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
|
2071 |
-
markFunction( function( seed, matches ) {
|
2072 |
-
var idx,
|
2073 |
-
matched = fn( seed, argument ),
|
2074 |
-
i = matched.length;
|
2075 |
-
while ( i-- ) {
|
2076 |
-
idx = indexOf( seed, matched[ i ] );
|
2077 |
-
seed[ idx ] = !( matches[ idx ] = matched[ i ] );
|
2078 |
-
}
|
2079 |
-
} ) :
|
2080 |
-
function( elem ) {
|
2081 |
-
return fn( elem, 0, args );
|
2082 |
-
};
|
2083 |
-
}
|
2084 |
-
|
2085 |
-
return fn;
|
2086 |
-
}
|
2087 |
-
},
|
2088 |
-
|
2089 |
-
pseudos: {
|
2090 |
-
|
2091 |
-
// Potentially complex pseudos
|
2092 |
-
"not": markFunction( function( selector ) {
|
2093 |
-
|
2094 |
-
// Trim the selector passed to compile
|
2095 |
-
// to avoid treating leading and trailing
|
2096 |
-
// spaces as combinators
|
2097 |
-
var input = [],
|
2098 |
-
results = [],
|
2099 |
-
matcher = compile( selector.replace( rtrim, "$1" ) );
|
2100 |
-
|
2101 |
-
return matcher[ expando ] ?
|
2102 |
-
markFunction( function( seed, matches, _context, xml ) {
|
2103 |
-
var elem,
|
2104 |
-
unmatched = matcher( seed, null, xml, [] ),
|
2105 |
-
i = seed.length;
|
2106 |
-
|
2107 |
-
// Match elements unmatched by `matcher`
|
2108 |
-
while ( i-- ) {
|
2109 |
-
if ( ( elem = unmatched[ i ] ) ) {
|
2110 |
-
seed[ i ] = !( matches[ i ] = elem );
|
2111 |
-
}
|
2112 |
-
}
|
2113 |
-
} ) :
|
2114 |
-
function( elem, _context, xml ) {
|
2115 |
-
input[ 0 ] = elem;
|
2116 |
-
matcher( input, null, xml, results );
|
2117 |
-
|
2118 |
-
// Don't keep the element (issue #299)
|
2119 |
-
input[ 0 ] = null;
|
2120 |
-
return !results.pop();
|
2121 |
-
};
|
2122 |
-
} ),
|
2123 |
-
|
2124 |
-
"has": markFunction( function( selector ) {
|
2125 |
-
return function( elem ) {
|
2126 |
-
return Sizzle( selector, elem ).length > 0;
|
2127 |
-
};
|
2128 |
-
} ),
|
2129 |
-
|
2130 |
-
"contains": markFunction( function( text ) {
|
2131 |
-
text = text.replace( runescape, funescape );
|
2132 |
-
return function( elem ) {
|
2133 |
-
return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;
|
2134 |
-
};
|
2135 |
-
} ),
|
2136 |
-
|
2137 |
-
// "Whether an element is represented by a :lang() selector
|
2138 |
-
// is based solely on the element's language value
|
2139 |
-
// being equal to the identifier C,
|
2140 |
-
// or beginning with the identifier C immediately followed by "-".
|
2141 |
-
// The matching of C against the element's language value is performed case-insensitively.
|
2142 |
-
// The identifier C does not have to be a valid language name."
|
2143 |
-
// http://www.w3.org/TR/selectors/#lang-pseudo
|
2144 |
-
"lang": markFunction( function( lang ) {
|
2145 |
-
|
2146 |
-
// lang value must be a valid identifier
|
2147 |
-
if ( !ridentifier.test( lang || "" ) ) {
|
2148 |
-
Sizzle.error( "unsupported lang: " + lang );
|
2149 |
-
}
|
2150 |
-
lang = lang.replace( runescape, funescape ).toLowerCase();
|
2151 |
-
return function( elem ) {
|
2152 |
-
var elemLang;
|
2153 |
-
do {
|
2154 |
-
if ( ( elemLang = documentIsHTML ?
|
2155 |
-
elem.lang :
|
2156 |
-
elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) {
|
2157 |
-
|
2158 |
-
elemLang = elemLang.toLowerCase();
|
2159 |
-
return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
|
2160 |
-
}
|
2161 |
-
} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );
|
2162 |
-
return false;
|
2163 |
-
};
|
2164 |
-
} ),
|
2165 |
-
|
2166 |
-
// Miscellaneous
|
2167 |
-
"target": function( elem ) {
|
2168 |
-
var hash = window.location && window.location.hash;
|
2169 |
-
return hash && hash.slice( 1 ) === elem.id;
|
2170 |
-
},
|
2171 |
-
|
2172 |
-
"root": function( elem ) {
|
2173 |
-
return elem === docElem;
|
2174 |
-
},
|
2175 |
-
|
2176 |
-
"focus": function( elem ) {
|
2177 |
-
return elem === document.activeElement &&
|
2178 |
-
( !document.hasFocus || document.hasFocus() ) &&
|
2179 |
-
!!( elem.type || elem.href || ~elem.tabIndex );
|
2180 |
-
},
|
2181 |
-
|
2182 |
-
// Boolean properties
|
2183 |
-
"enabled": createDisabledPseudo( false ),
|
2184 |
-
"disabled": createDisabledPseudo( true ),
|
2185 |
-
|
2186 |
-
"checked": function( elem ) {
|
2187 |
-
|
2188 |
-
// In CSS3, :checked should return both checked and selected elements
|
2189 |
-
// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
|
2190 |
-
var nodeName = elem.nodeName.toLowerCase();
|
2191 |
-
return ( nodeName === "input" && !!elem.checked ) ||
|
2192 |
-
( nodeName === "option" && !!elem.selected );
|
2193 |
-
},
|
2194 |
-
|
2195 |
-
"selected": function( elem ) {
|
2196 |
-
|
2197 |
-
// Accessing this property makes selected-by-default
|
2198 |
-
// options in Safari work properly
|
2199 |
-
if ( elem.parentNode ) {
|
2200 |
-
// eslint-disable-next-line no-unused-expressions
|
2201 |
-
elem.parentNode.selectedIndex;
|
2202 |
-
}
|
2203 |
-
|
2204 |
-
return elem.selected === true;
|
2205 |
-
},
|
2206 |
-
|
2207 |
-
// Contents
|
2208 |
-
"empty": function( elem ) {
|
2209 |
-
|
2210 |
-
// http://www.w3.org/TR/selectors/#empty-pseudo
|
2211 |
-
// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
|
2212 |
-
// but not by others (comment: 8; processing instruction: 7; etc.)
|
2213 |
-
// nodeType < 6 works because attributes (2) do not appear as children
|
2214 |
-
for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
|
2215 |
-
if ( elem.nodeType < 6 ) {
|
2216 |
-
return false;
|
2217 |
-
}
|
2218 |
-
}
|
2219 |
-
return true;
|
2220 |
-
},
|
2221 |
-
|
2222 |
-
"parent": function( elem ) {
|
2223 |
-
return !Expr.pseudos[ "empty" ]( elem );
|
2224 |
-
},
|
2225 |
-
|
2226 |
-
// Element/input types
|
2227 |
-
"header": function( elem ) {
|
2228 |
-
return rheader.test( elem.nodeName );
|
2229 |
-
},
|
2230 |
-
|
2231 |
-
"input": function( elem ) {
|
2232 |
-
return rinputs.test( elem.nodeName );
|
2233 |
-
},
|
2234 |
-
|
2235 |
-
"button": function( elem ) {
|
2236 |
-
var name = elem.nodeName.toLowerCase();
|
2237 |
-
return name === "input" && elem.type === "button" || name === "button";
|
2238 |
-
},
|
2239 |
-
|
2240 |
-
"text": function( elem ) {
|
2241 |
-
var attr;
|
2242 |
-
return elem.nodeName.toLowerCase() === "input" &&
|
2243 |
-
elem.type === "text" &&
|
2244 |
-
|
2245 |
-
// Support: IE<8
|
2246 |
-
// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
|
2247 |
-
( ( attr = elem.getAttribute( "type" ) ) == null ||
|
2248 |
-
attr.toLowerCase() === "text" );
|
2249 |
-
},
|
2250 |
-
|
2251 |
-
// Position-in-collection
|
2252 |
-
"first": createPositionalPseudo( function() {
|
2253 |
-
return [ 0 ];
|
2254 |
-
} ),
|
2255 |
-
|
2256 |
-
"last": createPositionalPseudo( function( _matchIndexes, length ) {
|
2257 |
-
return [ length - 1 ];
|
2258 |
-
} ),
|
2259 |
-
|
2260 |
-
"eq": createPositionalPseudo( function( _matchIndexes, length, argument ) {
|
2261 |
-
return [ argument < 0 ? argument + length : argument ];
|
2262 |
-
} ),
|
2263 |
-
|
2264 |
-
"even": createPositionalPseudo( function( matchIndexes, length ) {
|
2265 |
-
var i = 0;
|
2266 |
-
for ( ; i < length; i += 2 ) {
|
2267 |
-
matchIndexes.push( i );
|
2268 |
-
}
|
2269 |
-
return matchIndexes;
|
2270 |
-
} ),
|
2271 |
-
|
2272 |
-
"odd": createPositionalPseudo( function( matchIndexes, length ) {
|
2273 |
-
var i = 1;
|
2274 |
-
for ( ; i < length; i += 2 ) {
|
2275 |
-
matchIndexes.push( i );
|
2276 |
-
}
|
2277 |
-
return matchIndexes;
|
2278 |
-
} ),
|
2279 |
-
|
2280 |
-
"lt": createPositionalPseudo( function( matchIndexes, length, argument ) {
|
2281 |
-
var i = argument < 0 ?
|
2282 |
-
argument + length :
|
2283 |
-
argument > length ?
|
2284 |
-
length :
|
2285 |
-
argument;
|
2286 |
-
for ( ; --i >= 0; ) {
|
2287 |
-
matchIndexes.push( i );
|
2288 |
-
}
|
2289 |
-
return matchIndexes;
|
2290 |
-
} ),
|
2291 |
-
|
2292 |
-
"gt": createPositionalPseudo( function( matchIndexes, length, argument ) {
|
2293 |
-
var i = argument < 0 ? argument + length : argument;
|
2294 |
-
for ( ; ++i < length; ) {
|
2295 |
-
matchIndexes.push( i );
|
2296 |
-
}
|
2297 |
-
return matchIndexes;
|
2298 |
-
} )
|
2299 |
-
}
|
2300 |
-
};
|
2301 |
-
|
2302 |
-
Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ];
|
2303 |
-
|
2304 |
-
// Add button/input type pseudos
|
2305 |
-
for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
|
2306 |
-
Expr.pseudos[ i ] = createInputPseudo( i );
|
2307 |
-
}
|
2308 |
-
for ( i in { submit: true, reset: true } ) {
|
2309 |
-
Expr.pseudos[ i ] = createButtonPseudo( i );
|
2310 |
-
}
|
2311 |
-
|
2312 |
-
// Easy API for creating new setFilters
|
2313 |
-
function setFilters() {}
|
2314 |
-
setFilters.prototype = Expr.filters = Expr.pseudos;
|
2315 |
-
Expr.setFilters = new setFilters();
|
2316 |
-
|
2317 |
-
tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
|
2318 |
-
var matched, match, tokens, type,
|
2319 |
-
soFar, groups, preFilters,
|
2320 |
-
cached = tokenCache[ selector + " " ];
|
2321 |
-
|
2322 |
-
if ( cached ) {
|
2323 |
-
return parseOnly ? 0 : cached.slice( 0 );
|
2324 |
-
}
|
2325 |
-
|
2326 |
-
soFar = selector;
|
2327 |
-
groups = [];
|
2328 |
-
preFilters = Expr.preFilter;
|
2329 |
-
|
2330 |
-
while ( soFar ) {
|
2331 |
-
|
2332 |
-
// Comma and first run
|
2333 |
-
if ( !matched || ( match = rcomma.exec( soFar ) ) ) {
|
2334 |
-
if ( match ) {
|
2335 |
-
|
2336 |
-
// Don't consume trailing commas as valid
|
2337 |
-
soFar = soFar.slice( match[ 0 ].length ) || soFar;
|
2338 |
-
}
|
2339 |
-
groups.push( ( tokens = [] ) );
|
2340 |
-
}
|
2341 |
-
|
2342 |
-
matched = false;
|
2343 |
-
|
2344 |
-
// Combinators
|
2345 |
-
if ( ( match = rcombinators.exec( soFar ) ) ) {
|
2346 |
-
matched = match.shift();
|
2347 |
-
tokens.push( {
|
2348 |
-
value: matched,
|
2349 |
-
|
2350 |
-
// Cast descendant combinators to space
|
2351 |
-
type: match[ 0 ].replace( rtrim, " " )
|
2352 |
-
} );
|
2353 |
-
soFar = soFar.slice( matched.length );
|
2354 |
-
}
|
2355 |
-
|
2356 |
-
// Filters
|
2357 |
-
for ( type in Expr.filter ) {
|
2358 |
-
if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||
|
2359 |
-
( match = preFilters[ type ]( match ) ) ) ) {
|
2360 |
-
matched = match.shift();
|
2361 |
-
tokens.push( {
|
2362 |
-
value: matched,
|
2363 |
-
type: type,
|
2364 |
-
matches: match
|
2365 |
-
} );
|
2366 |
-
soFar = soFar.slice( matched.length );
|
2367 |
-
}
|
2368 |
-
}
|
2369 |
-
|
2370 |
-
if ( !matched ) {
|
2371 |
-
break;
|
2372 |
-
}
|
2373 |
-
}
|
2374 |
-
|
2375 |
-
// Return the length of the invalid excess
|
2376 |
-
// if we're just parsing
|
2377 |
-
// Otherwise, throw an error or return tokens
|
2378 |
-
return parseOnly ?
|
2379 |
-
soFar.length :
|
2380 |
-
soFar ?
|
2381 |
-
Sizzle.error( selector ) :
|
2382 |
-
|
2383 |
-
// Cache the tokens
|
2384 |
-
tokenCache( selector, groups ).slice( 0 );
|
2385 |
-
};
|
2386 |
-
|
2387 |
-
function toSelector( tokens ) {
|
2388 |
-
var i = 0,
|
2389 |
-
len = tokens.length,
|
2390 |
-
selector = "";
|
2391 |
-
for ( ; i < len; i++ ) {
|
2392 |
-
selector += tokens[ i ].value;
|
2393 |
-
}
|
2394 |
-
return selector;
|
2395 |
-
}
|
2396 |
-
|
2397 |
-
function addCombinator( matcher, combinator, base ) {
|
2398 |
-
var dir = combinator.dir,
|
2399 |
-
skip = combinator.next,
|
2400 |
-
key = skip || dir,
|
2401 |
-
checkNonElements = base && key === "parentNode",
|
2402 |
-
doneName = done++;
|
2403 |
-
|
2404 |
-
return combinator.first ?
|
2405 |
-
|
2406 |
-
// Check against closest ancestor/preceding element
|
2407 |
-
function( elem, context, xml ) {
|
2408 |
-
while ( ( elem = elem[ dir ] ) ) {
|
2409 |
-
if ( elem.nodeType === 1 || checkNonElements ) {
|
2410 |
-
return matcher( elem, context, xml );
|
2411 |
-
}
|
2412 |
-
}
|
2413 |
-
return false;
|
2414 |
-
} :
|
2415 |
-
|
2416 |
-
// Check against all ancestor/preceding elements
|
2417 |
-
function( elem, context, xml ) {
|
2418 |
-
var oldCache, uniqueCache, outerCache,
|
2419 |
-
newCache = [ dirruns, doneName ];
|
2420 |
-
|
2421 |
-
// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
|
2422 |
-
if ( xml ) {
|
2423 |
-
while ( ( elem = elem[ dir ] ) ) {
|
2424 |
-
if ( elem.nodeType === 1 || checkNonElements ) {
|
2425 |
-
if ( matcher( elem, context, xml ) ) {
|
2426 |
-
return true;
|
2427 |
-
}
|
2428 |
-
}
|
2429 |
-
}
|
2430 |
-
} else {
|
2431 |
-
while ( ( elem = elem[ dir ] ) ) {
|
2432 |
-
if ( elem.nodeType === 1 || checkNonElements ) {
|
2433 |
-
outerCache = elem[ expando ] || ( elem[ expando ] = {} );
|
2434 |
-
|
2435 |
-
// Support: IE <9 only
|
2436 |
-
// Defend against cloned attroperties (jQuery gh-1709)
|
2437 |
-
uniqueCache = outerCache[ elem.uniqueID ] ||
|
2438 |
-
( outerCache[ elem.uniqueID ] = {} );
|
2439 |
-
|
2440 |
-
if ( skip && skip === elem.nodeName.toLowerCase() ) {
|
2441 |
-
elem = elem[ dir ] || elem;
|
2442 |
-
} else if ( ( oldCache = uniqueCache[ key ] ) &&
|
2443 |
-
oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
|
2444 |
-
|
2445 |
-
// Assign to newCache so results back-propagate to previous elements
|
2446 |
-
return ( newCache[ 2 ] = oldCache[ 2 ] );
|
2447 |
-
} else {
|
2448 |
-
|
2449 |
-
// Reuse newcache so results back-propagate to previous elements
|
2450 |
-
uniqueCache[ key ] = newCache;
|
2451 |
-
|
2452 |
-
// A match means we're done; a fail means we have to keep checking
|
2453 |
-
if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
|
2454 |
-
return true;
|
2455 |
-
}
|
2456 |
-
}
|
2457 |
-
}
|
2458 |
-
}
|
2459 |
-
}
|
2460 |
-
return false;
|
2461 |
-
};
|
2462 |
-
}
|
2463 |
-
|
2464 |
-
function elementMatcher( matchers ) {
|
2465 |
-
return matchers.length > 1 ?
|
2466 |
-
function( elem, context, xml ) {
|
2467 |
-
var i = matchers.length;
|
2468 |
-
while ( i-- ) {
|
2469 |
-
if ( !matchers[ i ]( elem, context, xml ) ) {
|
2470 |
-
return false;
|
2471 |
-
}
|
2472 |
-
}
|
2473 |
-
return true;
|
2474 |
-
} :
|
2475 |
-
matchers[ 0 ];
|
2476 |
-
}
|
2477 |
-
|
2478 |
-
function multipleContexts( selector, contexts, results ) {
|
2479 |
-
var i = 0,
|
2480 |
-
len = contexts.length;
|
2481 |
-
for ( ; i < len; i++ ) {
|
2482 |
-
Sizzle( selector, contexts[ i ], results );
|
2483 |
-
}
|
2484 |
-
return results;
|
2485 |
-
}
|
2486 |
-
|
2487 |
-
function condense( unmatched, map, filter, context, xml ) {
|
2488 |
-
var elem,
|
2489 |
-
newUnmatched = [],
|
2490 |
-
i = 0,
|
2491 |
-
len = unmatched.length,
|
2492 |
-
mapped = map != null;
|
2493 |
-
|
2494 |
-
for ( ; i < len; i++ ) {
|
2495 |
-
if ( ( elem = unmatched[ i ] ) ) {
|
2496 |
-
if ( !filter || filter( elem, context, xml ) ) {
|
2497 |
-
newUnmatched.push( elem );
|
2498 |
-
if ( mapped ) {
|
2499 |
-
map.push( i );
|
2500 |
-
}
|
2501 |
-
}
|
2502 |
-
}
|
2503 |
-
}
|
2504 |
-
|
2505 |
-
return newUnmatched;
|
2506 |
-
}
|
2507 |
-
|
2508 |
-
function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
|
2509 |
-
if ( postFilter && !postFilter[ expando ] ) {
|
2510 |
-
postFilter = setMatcher( postFilter );
|
2511 |
-
}
|
2512 |
-
if ( postFinder && !postFinder[ expando ] ) {
|
2513 |
-
postFinder = setMatcher( postFinder, postSelector );
|
2514 |
-
}
|
2515 |
-
return markFunction( function( seed, results, context, xml ) {
|
2516 |
-
var temp, i, elem,
|
2517 |
-
preMap = [],
|
2518 |
-
postMap = [],
|
2519 |
-
preexisting = results.length,
|
2520 |
-
|
2521 |
-
// Get initial elements from seed or context
|
2522 |
-
elems = seed || multipleContexts(
|
2523 |
-
selector || "*",
|
2524 |
-
context.nodeType ? [ context ] : context,
|
2525 |
-
[]
|
2526 |
-
),
|
2527 |
-
|
2528 |
-
// Prefilter to get matcher input, preserving a map for seed-results synchronization
|
2529 |
-
matcherIn = preFilter && ( seed || !selector ) ?
|
2530 |
-
condense( elems, preMap, preFilter, context, xml ) :
|
2531 |
-
elems,
|
2532 |
-
|
2533 |
-
matcherOut = matcher ?
|
2534 |
-
|
2535 |
-
// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
|
2536 |
-
postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
|
2537 |
-
|
2538 |
-
// ...intermediate processing is necessary
|
2539 |
-
[] :
|
2540 |
-
|
2541 |
-
// ...otherwise use results directly
|
2542 |
-
results :
|
2543 |
-
matcherIn;
|
2544 |
-
|
2545 |
-
// Find primary matches
|
2546 |
-
if ( matcher ) {
|
2547 |
-
matcher( matcherIn, matcherOut, context, xml );
|
2548 |
-
}
|
2549 |
-
|
2550 |
-
// Apply postFilter
|
2551 |
-
if ( postFilter ) {
|
2552 |
-
temp = condense( matcherOut, postMap );
|
2553 |
-
postFilter( temp, [], context, xml );
|
2554 |
-
|
2555 |
-
// Un-match failing elements by moving them back to matcherIn
|
2556 |
-
i = temp.length;
|
2557 |
-
while ( i-- ) {
|
2558 |
-
if ( ( elem = temp[ i ] ) ) {
|
2559 |
-
matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );
|
2560 |
-
}
|
2561 |
-
}
|
2562 |
-
}
|
2563 |
-
|
2564 |
-
if ( seed ) {
|
2565 |
-
if ( postFinder || preFilter ) {
|
2566 |
-
if ( postFinder ) {
|
2567 |
-
|
2568 |
-
// Get the final matcherOut by condensing this intermediate into postFinder contexts
|
2569 |
-
temp = [];
|
2570 |
-
i = matcherOut.length;
|
2571 |
-
while ( i-- ) {
|
2572 |
-
if ( ( elem = matcherOut[ i ] ) ) {
|
2573 |
-
|
2574 |
-
// Restore matcherIn since elem is not yet a final match
|
2575 |
-
temp.push( ( matcherIn[ i ] = elem ) );
|
2576 |
-
}
|
2577 |
-
}
|
2578 |
-
postFinder( null, ( matcherOut = [] ), temp, xml );
|
2579 |
-
}
|
2580 |
-
|
2581 |
-
// Move matched elements from seed to results to keep them synchronized
|
2582 |
-
i = matcherOut.length;
|
2583 |
-
while ( i-- ) {
|
2584 |
-
if ( ( elem = matcherOut[ i ] ) &&
|
2585 |
-
( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {
|
2586 |
-
|
2587 |
-
seed[ temp ] = !( results[ temp ] = elem );
|
2588 |
-
}
|
2589 |
-
}
|
2590 |
-
}
|
2591 |
-
|
2592 |
-
// Add elements to results, through postFinder if defined
|
2593 |
-
} else {
|
2594 |
-
matcherOut = condense(
|
2595 |
-
matcherOut === results ?
|
2596 |
-
matcherOut.splice( preexisting, matcherOut.length ) :
|
2597 |
-
matcherOut
|
2598 |
-
);
|
2599 |
-
if ( postFinder ) {
|
2600 |
-
postFinder( null, results, matcherOut, xml );
|
2601 |
-
} else {
|
2602 |
-
push.apply( results, matcherOut );
|
2603 |
-
}
|
2604 |
-
}
|
2605 |
-
} );
|
2606 |
-
}
|
2607 |
-
|
2608 |
-
function matcherFromTokens( tokens ) {
|
2609 |
-
var checkContext, matcher, j,
|
2610 |
-
len = tokens.length,
|
2611 |
-
leadingRelative = Expr.relative[ tokens[ 0 ].type ],
|
2612 |
-
implicitRelative = leadingRelative || Expr.relative[ " " ],
|
2613 |
-
i = leadingRelative ? 1 : 0,
|
2614 |
-
|
2615 |
-
// The foundational matcher ensures that elements are reachable from top-level context(s)
|
2616 |
-
matchContext = addCombinator( function( elem ) {
|
2617 |
-
return elem === checkContext;
|
2618 |
-
}, implicitRelative, true ),
|
2619 |
-
matchAnyContext = addCombinator( function( elem ) {
|
2620 |
-
return indexOf( checkContext, elem ) > -1;
|
2621 |
-
}, implicitRelative, true ),
|
2622 |
-
matchers = [ function( elem, context, xml ) {
|
2623 |
-
var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
|
2624 |
-
( checkContext = context ).nodeType ?
|
2625 |
-
matchContext( elem, context, xml ) :
|
2626 |
-
matchAnyContext( elem, context, xml ) );
|
2627 |
-
|
2628 |
-
// Avoid hanging onto element (issue #299)
|
2629 |
-
checkContext = null;
|
2630 |
-
return ret;
|
2631 |
-
} ];
|
2632 |
-
|
2633 |
-
for ( ; i < len; i++ ) {
|
2634 |
-
if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {
|
2635 |
-
matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
|
2636 |
-
} else {
|
2637 |
-
matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );
|
2638 |
-
|
2639 |
-
// Return special upon seeing a positional matcher
|
2640 |
-
if ( matcher[ expando ] ) {
|
2641 |
-
|
2642 |
-
// Find the next relative operator (if any) for proper handling
|
2643 |
-
j = ++i;
|
2644 |
-
for ( ; j < len; j++ ) {
|
2645 |
-
if ( Expr.relative[ tokens[ j ].type ] ) {
|
2646 |
-
break;
|
2647 |
-
}
|
2648 |
-
}
|
2649 |
-
return setMatcher(
|
2650 |
-
i > 1 && elementMatcher( matchers ),
|
2651 |
-
i > 1 && toSelector(
|
2652 |
-
|
2653 |
-
// If the preceding token was a descendant combinator, insert an implicit any-element `*`
|
2654 |
-
tokens
|
2655 |
-
.slice( 0, i - 1 )
|
2656 |
-
.concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
|
2657 |
-
).replace( rtrim, "$1" ),
|
2658 |
-
matcher,
|
2659 |
-
i < j && matcherFromTokens( tokens.slice( i, j ) ),
|
2660 |
-
j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
|
2661 |
-
j < len && toSelector( tokens )
|
2662 |
-
);
|
2663 |
-
}
|
2664 |
-
matchers.push( matcher );
|
2665 |
-
}
|
2666 |
-
}
|
2667 |
-
|
2668 |
-
return elementMatcher( matchers );
|
2669 |
-
}
|
2670 |
-
|
2671 |
-
function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
|
2672 |
-
var bySet = setMatchers.length > 0,
|
2673 |
-
byElement = elementMatchers.length > 0,
|
2674 |
-
superMatcher = function( seed, context, xml, results, outermost ) {
|
2675 |
-
var elem, j, matcher,
|
2676 |
-
matchedCount = 0,
|
2677 |
-
i = "0",
|
2678 |
-
unmatched = seed && [],
|
2679 |
-
setMatched = [],
|
2680 |
-
contextBackup = outermostContext,
|
2681 |
-
|
2682 |
-
// We must always have either seed elements or outermost context
|
2683 |
-
elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ),
|
2684 |
-
|
2685 |
-
// Use integer dirruns iff this is the outermost matcher
|
2686 |
-
dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
|
2687 |
-
len = elems.length;
|
2688 |
-
|
2689 |
-
if ( outermost ) {
|
2690 |
-
|
2691 |
-
// Support: IE 11+, Edge 17 - 18+
|
2692 |
-
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
2693 |
-
// two documents; shallow comparisons work.
|
2694 |
-
// eslint-disable-next-line eqeqeq
|
2695 |
-
outermostContext = context == document || context || outermost;
|
2696 |
-
}
|
2697 |
-
|
2698 |
-
// Add elements passing elementMatchers directly to results
|
2699 |
-
// Support: IE<9, Safari
|
2700 |
-
// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
|
2701 |
-
for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
|
2702 |
-
if ( byElement && elem ) {
|
2703 |
-
j = 0;
|
2704 |
-
|
2705 |
-
// Support: IE 11+, Edge 17 - 18+
|
2706 |
-
// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
|
2707 |
-
// two documents; shallow comparisons work.
|
2708 |
-
// eslint-disable-next-line eqeqeq
|
2709 |
-
if ( !context && elem.ownerDocument != document ) {
|
2710 |
-
setDocument( elem );
|
2711 |
-
xml = !documentIsHTML;
|
2712 |
-
}
|
2713 |
-
while ( ( matcher = elementMatchers[ j++ ] ) ) {
|
2714 |
-
if ( matcher( elem, context || document, xml ) ) {
|
2715 |
-
results.push( elem );
|
2716 |
-
break;
|
2717 |
-
}
|
2718 |
-
}
|
2719 |
-
if ( outermost ) {
|
2720 |
-
dirruns = dirrunsUnique;
|
2721 |
-
}
|
2722 |
-
}
|
2723 |
-
|
2724 |
-
// Track unmatched elements for set filters
|
2725 |
-
if ( bySet ) {
|
2726 |
-
|
2727 |
-
// They will have gone through all possible matchers
|
2728 |
-
if ( ( elem = !matcher && elem ) ) {
|
2729 |
-
matchedCount--;
|
2730 |
-
}
|
2731 |
-
|
2732 |
-
// Lengthen the array for every element, matched or not
|
2733 |
-
if ( seed ) {
|
2734 |
-
unmatched.push( elem );
|
2735 |
-
}
|
2736 |
-
}
|
2737 |
-
}
|
2738 |
-
|
2739 |
-
// `i` is now the count of elements visited above, and adding it to `matchedCount`
|
2740 |
-
// makes the latter nonnegative.
|
2741 |
-
matchedCount += i;
|
2742 |
-
|
2743 |
-
// Apply set filters to unmatched elements
|
2744 |
-
// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
|
2745 |
-
// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
|
2746 |
-
// no element matchers and no seed.
|
2747 |
-
// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
|
2748 |
-
// case, which will result in a "00" `matchedCount` that differs from `i` but is also
|
2749 |
-
// numerically zero.
|
2750 |
-
if ( bySet && i !== matchedCount ) {
|
2751 |
-
j = 0;
|
2752 |
-
while ( ( matcher = setMatchers[ j++ ] ) ) {
|
2753 |
-
matcher( unmatched, setMatched, context, xml );
|
2754 |
-
}
|
2755 |
-
|
2756 |
-
if ( seed ) {
|
2757 |
-
|
2758 |
-
// Reintegrate element matches to eliminate the need for sorting
|
2759 |
-
if ( matchedCount > 0 ) {
|
2760 |
-
while ( i-- ) {
|
2761 |
-
if ( !( unmatched[ i ] || setMatched[ i ] ) ) {
|
2762 |
-
setMatched[ i ] = pop.call( results );
|
2763 |
-
}
|
2764 |
-
}
|
2765 |
-
}
|
2766 |
-
|
2767 |
-
// Discard index placeholder values to get only actual matches
|
2768 |
-
setMatched = condense( setMatched );
|
2769 |
-
}
|
2770 |
-
|
2771 |
-
// Add matches to results
|
2772 |
-
push.apply( results, setMatched );
|
2773 |
-
|
2774 |
-
// Seedless set matches succeeding multiple successful matchers stipulate sorting
|
2775 |
-
if ( outermost && !seed && setMatched.length > 0 &&
|
2776 |
-
( matchedCount + setMatchers.length ) > 1 ) {
|
2777 |
-
|
2778 |
-
Sizzle.uniqueSort( results );
|
2779 |
-
}
|
2780 |
-
}
|
2781 |
-
|
2782 |
-
// Override manipulation of globals by nested matchers
|
2783 |
-
if ( outermost ) {
|
2784 |
-
dirruns = dirrunsUnique;
|
2785 |
-
outermostContext = contextBackup;
|
2786 |
-
}
|
2787 |
-
|
2788 |
-
return unmatched;
|
2789 |
-
};
|
2790 |
-
|
2791 |
-
return bySet ?
|
2792 |
-
markFunction( superMatcher ) :
|
2793 |
-
superMatcher;
|
2794 |
-
}
|
2795 |
-
|
2796 |
-
compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
|
2797 |
-
var i,
|
2798 |
-
setMatchers = [],
|
2799 |
-
elementMatchers = [],
|
2800 |
-
cached = compilerCache[ selector + " " ];
|
2801 |
-
|
2802 |
-
if ( !cached ) {
|
2803 |
-
|
2804 |
-
// Generate a function of recursive functions that can be used to check each element
|
2805 |
-
if ( !match ) {
|
2806 |
-
match = tokenize( selector );
|
2807 |
-
}
|
2808 |
-
i = match.length;
|
2809 |
-
while ( i-- ) {
|
2810 |
-
cached = matcherFromTokens( match[ i ] );
|
2811 |
-
if ( cached[ expando ] ) {
|
2812 |
-
setMatchers.push( cached );
|
2813 |
-
} else {
|
2814 |
-
elementMatchers.push( cached );
|
2815 |
-
}
|
2816 |
-
}
|
2817 |
-
|
2818 |
-
// Cache the compiled function
|
2819 |
-
cached = compilerCache(
|
2820 |
-
selector,
|
2821 |
-
matcherFromGroupMatchers( elementMatchers, setMatchers )
|
2822 |
-
);
|
2823 |
-
|
2824 |
-
// Save selector and tokenization
|
2825 |
-
cached.selector = selector;
|
2826 |
-
}
|
2827 |
-
return cached;
|
2828 |
-
};
|
2829 |
-
|
2830 |
-
/**
|
2831 |
-
* A low-level selection function that works with Sizzle's compiled
|
2832 |
-
* selector functions
|
2833 |
-
* @param {String|Function} selector A selector or a pre-compiled
|
2834 |
-
* selector function built with Sizzle.compile
|
2835 |
-
* @param {Element} context
|
2836 |
-
* @param {Array} [results]
|
2837 |
-
* @param {Array} [seed] A set of elements to match against
|
2838 |
-
*/
|
2839 |
-
select = Sizzle.select = function( selector, context, results, seed ) {
|
2840 |
-
var i, tokens, token, type, find,
|
2841 |
-
compiled = typeof selector === "function" && selector,
|
2842 |
-
match = !seed && tokenize( ( selector = compiled.selector || selector ) );
|
2843 |
-
|
2844 |
-
results = results || [];
|
2845 |
-
|
2846 |
-
// Try to minimize operations if there is only one selector in the list and no seed
|
2847 |
-
// (the latter of which guarantees us context)
|
2848 |
-
if ( match.length === 1 ) {
|
2849 |
-
|
2850 |
-
// Reduce context if the leading compound selector is an ID
|
2851 |
-
tokens = match[ 0 ] = match[ 0 ].slice( 0 );
|
2852 |
-
if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
|
2853 |
-
context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
|
2854 |
-
|
2855 |
-
context = ( Expr.find[ "ID" ]( token.matches[ 0 ]
|
2856 |
-
.replace( runescape, funescape ), context ) || [] )[ 0 ];
|
2857 |
-
if ( !context ) {
|
2858 |
-
return results;
|
2859 |
-
|
2860 |
-
// Precompiled matchers will still verify ancestry, so step up a level
|
2861 |
-
} else if ( compiled ) {
|
2862 |
-
context = context.parentNode;
|
2863 |
-
}
|
2864 |
-
|
2865 |
-
selector = selector.slice( tokens.shift().value.length );
|
2866 |
-
}
|
2867 |
-
|
2868 |
-
// Fetch a seed set for right-to-left matching
|
2869 |
-
i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length;
|
2870 |
-
while ( i-- ) {
|
2871 |
-
token = tokens[ i ];
|
2872 |
-
|
2873 |
-
// Abort if we hit a combinator
|
2874 |
-
if ( Expr.relative[ ( type = token.type ) ] ) {
|
2875 |
-
break;
|
2876 |
-
}
|
2877 |
-
if ( ( find = Expr.find[ type ] ) ) {
|
2878 |
-
|
2879 |
-
// Search, expanding context for leading sibling combinators
|
2880 |
-
if ( ( seed = find(
|
2881 |
-
token.matches[ 0 ].replace( runescape, funescape ),
|
2882 |
-
rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||
|
2883 |
-
context
|
2884 |
-
) ) ) {
|
2885 |
-
|
2886 |
-
// If seed is empty or no tokens remain, we can return early
|
2887 |
-
tokens.splice( i, 1 );
|
2888 |
-
selector = seed.length && toSelector( tokens );
|
2889 |
-
if ( !selector ) {
|
2890 |
-
push.apply( results, seed );
|
2891 |
-
return results;
|
2892 |
-
}
|
2893 |
-
|
2894 |
-
break;
|
2895 |
-
}
|
2896 |
-
}
|
2897 |
-
}
|
2898 |
-
}
|
2899 |
-
|
2900 |
-
// Compile and execute a filtering function if one is not provided
|
2901 |
-
// Provide `match` to avoid retokenization if we modified the selector above
|
2902 |
-
( compiled || compile( selector, match ) )(
|
2903 |
-
seed,
|
2904 |
-
context,
|
2905 |
-
!documentIsHTML,
|
2906 |
-
results,
|
2907 |
-
!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
|
2908 |
-
);
|
2909 |
-
return results;
|
2910 |
-
};
|
2911 |
-
|
2912 |
-
// One-time assignments
|
2913 |
-
|
2914 |
-
// Sort stability
|
2915 |
-
support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
|
2916 |
-
|
2917 |
-
// Support: Chrome 14-35+
|
2918 |
-
// Always assume duplicates if they aren't passed to the comparison function
|
2919 |
-
support.detectDuplicates = !!hasDuplicate;
|
2920 |
-
|
2921 |
-
// Initialize against the default document
|
2922 |
-
setDocument();
|
2923 |
-
|
2924 |
-
// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
|
2925 |
-
// Detached nodes confoundingly follow *each other*
|
2926 |
-
support.sortDetached = assert( function( el ) {
|
2927 |
-
|
2928 |
-
// Should return 1, but returns 4 (following)
|
2929 |
-
return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
|
2930 |
-
} );
|
2931 |
-
|
2932 |
-
// Support: IE<8
|
2933 |
-
// Prevent attribute/property "interpolation"
|
2934 |
-
// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
|
2935 |
-
if ( !assert( function( el ) {
|
2936 |
-
el.innerHTML = "<a href='#'></a>";
|
2937 |
-
return el.firstChild.getAttribute( "href" ) === "#";
|
2938 |
-
} ) ) {
|
2939 |
-
addHandle( "type|href|height|width", function( elem, name, isXML ) {
|
2940 |
-
if ( !isXML ) {
|
2941 |
-
return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
|
2942 |
-
}
|
2943 |
-
} );
|
2944 |
-
}
|
2945 |
-
|
2946 |
-
// Support: IE<9
|
2947 |
-
// Use defaultValue in place of getAttribute("value")
|
2948 |
-
if ( !support.attributes || !assert( function( el ) {
|
2949 |
-
el.innerHTML = "<input/>";
|
2950 |
-
el.firstChild.setAttribute( "value", "" );
|
2951 |
-
return el.firstChild.getAttribute( "value" ) === "";
|
2952 |
-
} ) ) {
|
2953 |
-
addHandle( "value", function( elem, _name, isXML ) {
|
2954 |
-
if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
|
2955 |
-
return elem.defaultValue;
|
2956 |
-
}
|
2957 |
-
} );
|
2958 |
-
}
|
2959 |
-
|
2960 |
-
// Support: IE<9
|
2961 |
-
// Use getAttributeNode to fetch booleans when getAttribute lies
|
2962 |
-
if ( !assert( function( el ) {
|
2963 |
-
return el.getAttribute( "disabled" ) == null;
|
2964 |
-
} ) ) {
|
2965 |
-
addHandle( booleans, function( elem, name, isXML ) {
|
2966 |
-
var val;
|
2967 |
-
if ( !isXML ) {
|
2968 |
-
return elem[ name ] === true ? name.toLowerCase() :
|
2969 |
-
( val = elem.getAttributeNode( name ) ) && val.specified ?
|
2970 |
-
val.value :
|
2971 |
-
null;
|
2972 |
-
}
|
2973 |
-
} );
|
2974 |
-
}
|
2975 |
-
|
2976 |
-
return Sizzle;
|
2977 |
-
|
2978 |
-
} )( window );
|
2979 |
-
|
2980 |
-
|
2981 |
-
|
2982 |
-
jQuery.find = Sizzle;
|
2983 |
-
jQuery.expr = Sizzle.selectors;
|
2984 |
-
|
2985 |
-
// Deprecated
|
2986 |
-
jQuery.expr[ ":" ] = jQuery.expr.pseudos;
|
2987 |
-
jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
|
2988 |
-
jQuery.text = Sizzle.getText;
|
2989 |
-
jQuery.isXMLDoc = Sizzle.isXML;
|
2990 |
-
jQuery.contains = Sizzle.contains;
|
2991 |
-
jQuery.escapeSelector = Sizzle.escape;
|
2992 |
-
|
2993 |
-
|
2994 |
-
|
2995 |
-
|
2996 |
-
var dir = function( elem, dir, until ) {
|
2997 |
-
var matched = [],
|
2998 |
-
truncate = until !== undefined;
|
2999 |
-
|
3000 |
-
while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
|
3001 |
-
if ( elem.nodeType === 1 ) {
|
3002 |
-
if ( truncate && jQuery( elem ).is( until ) ) {
|
3003 |
-
break;
|
3004 |
-
}
|
3005 |
-
matched.push( elem );
|
3006 |
-
}
|
3007 |
-
}
|
3008 |
-
return matched;
|
3009 |
-
};
|
3010 |
-
|
3011 |
-
|
3012 |
-
var siblings = function( n, elem ) {
|
3013 |
-
var matched = [];
|
3014 |
-
|
3015 |
-
for ( ; n; n = n.nextSibling ) {
|
3016 |
-
if ( n.nodeType === 1 && n !== elem ) {
|
3017 |
-
matched.push( n );
|
3018 |
-
}
|
3019 |
-
}
|
3020 |
-
|
3021 |
-
return matched;
|
3022 |
-
};
|
3023 |
-
|
3024 |
-
|
3025 |
-
var rneedsContext = jQuery.expr.match.needsContext;
|
3026 |
-
|
3027 |
-
|
3028 |
-
|
3029 |
-
function nodeName( elem, name ) {
|
3030 |
-
|
3031 |
-
return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
|
3032 |
-
|
3033 |
-
}
|
3034 |
-
var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
|
3035 |
-
|
3036 |
-
|
3037 |
-
|
3038 |
-
// Implement the identical functionality for filter and not
|
3039 |
-
function winnow( elements, qualifier, not ) {
|
3040 |
-
if ( isFunction( qualifier ) ) {
|
3041 |
-
return jQuery.grep( elements, function( elem, i ) {
|
3042 |
-
return !!qualifier.call( elem, i, elem ) !== not;
|
3043 |
-
} );
|
3044 |
-
}
|
3045 |
-
|
3046 |
-
// Single element
|
3047 |
-
if ( qualifier.nodeType ) {
|
3048 |
-
return jQuery.grep( elements, function( elem ) {
|
3049 |
-
return ( elem === qualifier ) !== not;
|
3050 |
-
} );
|
3051 |
-
}
|
3052 |
-
|
3053 |
-
// Arraylike of elements (jQuery, arguments, Array)
|
3054 |
-
if ( typeof qualifier !== "string" ) {
|
3055 |
-
return jQuery.grep( elements, function( elem ) {
|
3056 |
-
return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
|
3057 |
-
} );
|
3058 |
-
}
|
3059 |
-
|
3060 |
-
// Filtered directly for both simple and complex selectors
|
3061 |
-
return jQuery.filter( qualifier, elements, not );
|
3062 |
-
}
|
3063 |
-
|
3064 |
-
jQuery.filter = function( expr, elems, not ) {
|
3065 |
-
var elem = elems[ 0 ];
|
3066 |
-
|
3067 |
-
if ( not ) {
|
3068 |
-
expr = ":not(" + expr + ")";
|
3069 |
-
}
|
3070 |
-
|
3071 |
-
if ( elems.length === 1 && elem.nodeType === 1 ) {
|
3072 |
-
return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
|
3073 |
-
}
|
3074 |
-
|
3075 |
-
return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
|
3076 |
-
return elem.nodeType === 1;
|
3077 |
-
} ) );
|
3078 |
-
};
|
3079 |
-
|
3080 |
-
jQuery.fn.extend( {
|
3081 |
-
find: function( selector ) {
|
3082 |
-
var i, ret,
|
3083 |
-
len = this.length,
|
3084 |
-
self = this;
|
3085 |
-
|
3086 |
-
if ( typeof selector !== "string" ) {
|
3087 |
-
return this.pushStack( jQuery( selector ).filter( function() {
|
3088 |
-
for ( i = 0; i < len; i++ ) {
|
3089 |
-
if ( jQuery.contains( self[ i ], this ) ) {
|
3090 |
-
return true;
|
3091 |
-
}
|
3092 |
-
}
|
3093 |
-
} ) );
|
3094 |
-
}
|
3095 |
-
|
3096 |
-
ret = this.pushStack( [] );
|
3097 |
-
|
3098 |
-
for ( i = 0; i < len; i++ ) {
|
3099 |
-
jQuery.find( selector, self[ i ], ret );
|
3100 |
-
}
|
3101 |
-
|
3102 |
-
return len > 1 ? jQuery.uniqueSort( ret ) : ret;
|
3103 |
-
},
|
3104 |
-
filter: function( selector ) {
|
3105 |
-
return this.pushStack( winnow( this, selector || [], false ) );
|
3106 |
-
},
|
3107 |
-
not: function( selector ) {
|
3108 |
-
return this.pushStack( winnow( this, selector || [], true ) );
|
3109 |
-
},
|
3110 |
-
is: function( selector ) {
|
3111 |
-
return !!winnow(
|
3112 |
-
this,
|
3113 |
-
|
3114 |
-
// If this is a positional/relative selector, check membership in the returned set
|
3115 |
-
// so $("p:first").is("p:last") won't return true for a doc with two "p".
|
3116 |
-
typeof selector === "string" && rneedsContext.test( selector ) ?
|
3117 |
-
jQuery( selector ) :
|
3118 |
-
selector || [],
|
3119 |
-
false
|
3120 |
-
).length;
|
3121 |
-
}
|
3122 |
-
} );
|
3123 |
-
|
3124 |
-
|
3125 |
-
// Initialize a jQuery object
|
3126 |
-
|
3127 |
-
|
3128 |
-
// A central reference to the root jQuery(document)
|
3129 |
-
var rootjQuery,
|
3130 |
-
|
3131 |
-
// A simple way to check for HTML strings
|
3132 |
-
// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
|
3133 |
-
// Strict HTML recognition (#11290: must start with <)
|
3134 |
-
// Shortcut simple #id case for speed
|
3135 |
-
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
|
3136 |
-
|
3137 |
-
init = jQuery.fn.init = function( selector, context, root ) {
|
3138 |
-
var match, elem;
|
3139 |
-
|
3140 |
-
// HANDLE: $(""), $(null), $(undefined), $(false)
|
3141 |
-
if ( !selector ) {
|
3142 |
-
return this;
|
3143 |
-
}
|
3144 |
-
|
3145 |
-
// Method init() accepts an alternate rootjQuery
|
3146 |
-
// so migrate can support jQuery.sub (gh-2101)
|
3147 |
-
root = root || rootjQuery;
|
3148 |
-
|
3149 |
-
// Handle HTML strings
|
3150 |
-
if ( typeof selector === "string" ) {
|
3151 |
-
if ( selector[ 0 ] === "<" &&
|
3152 |
-
selector[ selector.length - 1 ] === ">" &&
|
3153 |
-
selector.length >= 3 ) {
|
3154 |
-
|
3155 |
-
// Assume that strings that start and end with <> are HTML and skip the regex check
|
3156 |
-
match = [ null, selector, null ];
|
3157 |
-
|
3158 |
-
} else {
|
3159 |
-
match = rquickExpr.exec( selector );
|
3160 |
-
}
|
3161 |
-
|
3162 |
-
// Match html or make sure no context is specified for #id
|
3163 |
-
if ( match && ( match[ 1 ] || !context ) ) {
|
3164 |
-
|
3165 |
-
// HANDLE: $(html) -> $(array)
|
3166 |
-
if ( match[ 1 ] ) {
|
3167 |
-
context = context instanceof jQuery ? context[ 0 ] : context;
|
3168 |
-
|
3169 |
-
// Option to run scripts is true for back-compat
|
3170 |
-
// Intentionally let the error be thrown if parseHTML is not present
|
3171 |
-
jQuery.merge( this, jQuery.parseHTML(
|
3172 |
-
match[ 1 ],
|
3173 |
-
context && context.nodeType ? context.ownerDocument || context : document,
|
3174 |
-
true
|
3175 |
-
) );
|
3176 |
-
|
3177 |
-
// HANDLE: $(html, props)
|
3178 |
-
if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
|
3179 |
-
for ( match in context ) {
|
3180 |
-
|
3181 |
-
// Properties of context are called as methods if possible
|
3182 |
-
if ( isFunction( this[ match ] ) ) {
|
3183 |
-
this[ match ]( context[ match ] );
|
3184 |
-
|
3185 |
-
// ...and otherwise set as attributes
|
3186 |
-
} else {
|
3187 |
-
this.attr( match, context[ match ] );
|
3188 |
-
}
|
3189 |
-
}
|
3190 |
-
}
|
3191 |
-
|
3192 |
-
return this;
|
3193 |
-
|
3194 |
-
// HANDLE: $(#id)
|
3195 |
-
} else {
|
3196 |
-
elem = document.getElementById( match[ 2 ] );
|
3197 |
-
|
3198 |
-
if ( elem ) {
|
3199 |
-
|
3200 |
-
// Inject the element directly into the jQuery object
|
3201 |
-
this[ 0 ] = elem;
|
3202 |
-
this.length = 1;
|
3203 |
-
}
|
3204 |
-
return this;
|
3205 |
-
}
|
3206 |
-
|
3207 |
-
// HANDLE: $(expr, $(...))
|
3208 |
-
} else if ( !context || context.jquery ) {
|
3209 |
-
return ( context || root ).find( selector );
|
3210 |
-
|
3211 |
-
// HANDLE: $(expr, context)
|
3212 |
-
// (which is just equivalent to: $(context).find(expr)
|
3213 |
-
} else {
|
3214 |
-
return this.constructor( context ).find( selector );
|
3215 |
-
}
|
3216 |
-
|
3217 |
-
// HANDLE: $(DOMElement)
|
3218 |
-
} else if ( selector.nodeType ) {
|
3219 |
-
this[ 0 ] = selector;
|
3220 |
-
this.length = 1;
|
3221 |
-
return this;
|
3222 |
-
|
3223 |
-
// HANDLE: $(function)
|
3224 |
-
// Shortcut for document ready
|
3225 |
-
} else if ( isFunction( selector ) ) {
|
3226 |
-
return root.ready !== undefined ?
|
3227 |
-
root.ready( selector ) :
|
3228 |
-
|
3229 |
-
// Execute immediately if ready is not present
|
3230 |
-
selector( jQuery );
|
3231 |
-
}
|
3232 |
-
|
3233 |
-
return jQuery.makeArray( selector, this );
|
3234 |
-
};
|
3235 |
-
|
3236 |
-
// Give the init function the jQuery prototype for later instantiation
|
3237 |
-
init.prototype = jQuery.fn;
|
3238 |
-
|
3239 |
-
// Initialize central reference
|
3240 |
-
rootjQuery = jQuery( document );
|
3241 |
-
|
3242 |
-
|
3243 |
-
var rparentsprev = /^(?:parents|prev(?:Until|All))/,
|
3244 |
-
|
3245 |
-
// Methods guaranteed to produce a unique set when starting from a unique set
|
3246 |
-
guaranteedUnique = {
|
3247 |
-
children: true,
|
3248 |
-
contents: true,
|
3249 |
-
next: true,
|
3250 |
-
prev: true
|
3251 |
-
};
|
3252 |
-
|
3253 |
-
jQuery.fn.extend( {
|
3254 |
-
has: function( target ) {
|
3255 |
-
var targets = jQuery( target, this ),
|
3256 |
-
l = targets.length;
|
3257 |
-
|
3258 |
-
return this.filter( function() {
|
3259 |
-
var i = 0;
|
3260 |
-
for ( ; i < l; i++ ) {
|
3261 |
-
if ( jQuery.contains( this, targets[ i ] ) ) {
|
3262 |
-
return true;
|
3263 |
-
}
|
3264 |
-
}
|
3265 |
-
} );
|
3266 |
-
},
|
3267 |
-
|
3268 |
-
closest: function( selectors, context ) {
|
3269 |
-
var cur,
|
3270 |
-
i = 0,
|
3271 |
-
l = this.length,
|
3272 |
-
matched = [],
|
3273 |
-
targets = typeof selectors !== "string" && jQuery( selectors );
|
3274 |
-
|
3275 |
-
// Positional selectors never match, since there's no _selection_ context
|
3276 |
-
if ( !rneedsContext.test( selectors ) ) {
|
3277 |
-
for ( ; i < l; i++ ) {
|
3278 |
-
for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
|
3279 |
-
|
3280 |
-
// Always skip document fragments
|
3281 |
-
if ( cur.nodeType < 11 && ( targets ?
|
3282 |
-
targets.index( cur ) > -1 :
|
3283 |
-
|
3284 |
-
// Don't pass non-elements to Sizzle
|
3285 |
-
cur.nodeType === 1 &&
|
3286 |
-
jQuery.find.matchesSelector( cur, selectors ) ) ) {
|
3287 |
-
|
3288 |
-
matched.push( cur );
|
3289 |
-
break;
|
3290 |
-
}
|
3291 |
-
}
|
3292 |
-
}
|
3293 |
-
}
|
3294 |
-
|
3295 |
-
return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
|
3296 |
-
},
|
3297 |
-
|
3298 |
-
// Determine the position of an element within the set
|
3299 |
-
index: function( elem ) {
|
3300 |
-
|
3301 |
-
// No argument, return index in parent
|
3302 |
-
if ( !elem ) {
|
3303 |
-
return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
|
3304 |
-
}
|
3305 |
-
|
3306 |
-
// Index in selector
|
3307 |
-
if ( typeof elem === "string" ) {
|
3308 |
-
return indexOf.call( jQuery( elem ), this[ 0 ] );
|
3309 |
-
}
|
3310 |
-
|
3311 |
-
// Locate the position of the desired element
|
3312 |
-
return indexOf.call( this,
|
3313 |
-
|
3314 |
-
// If it receives a jQuery object, the first element is used
|
3315 |
-
elem.jquery ? elem[ 0 ] : elem
|
3316 |
-
);
|
3317 |
-
},
|
3318 |
-
|
3319 |
-
add: function( selector, context ) {
|
3320 |
-
return this.pushStack(
|
3321 |
-
jQuery.uniqueSort(
|
3322 |
-
jQuery.merge( this.get(), jQuery( selector, context ) )
|
3323 |
-
)
|
3324 |
-
);
|
3325 |
-
},
|
3326 |
-
|
3327 |
-
addBack: function( selector ) {
|
3328 |
-
return this.add( selector == null ?
|
3329 |
-
this.prevObject : this.prevObject.filter( selector )
|
3330 |
-
);
|
3331 |
-
}
|
3332 |
-
} );
|
3333 |
-
|
3334 |
-
function sibling( cur, dir ) {
|
3335 |
-
while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
|
3336 |
-
return cur;
|
3337 |
-
}
|
3338 |
-
|
3339 |
-
jQuery.each( {
|
3340 |
-
parent: function( elem ) {
|
3341 |
-
var parent = elem.parentNode;
|
3342 |
-
return parent && parent.nodeType !== 11 ? parent : null;
|
3343 |
-
},
|
3344 |
-
parents: function( elem ) {
|
3345 |
-
return dir( elem, "parentNode" );
|
3346 |
-
},
|
3347 |
-
parentsUntil: function( elem, _i, until ) {
|
3348 |
-
return dir( elem, "parentNode", until );
|
3349 |
-
},
|
3350 |
-
next: function( elem ) {
|
3351 |
-
return sibling( elem, "nextSibling" );
|
3352 |
-
},
|
3353 |
-
prev: function( elem ) {
|
3354 |
-
return sibling( elem, "previousSibling" );
|
3355 |
-
},
|
3356 |
-
nextAll: function( elem ) {
|
3357 |
-
return dir( elem, "nextSibling" );
|
3358 |
-
},
|
3359 |
-
prevAll: function( elem ) {
|
3360 |
-
return dir( elem, "previousSibling" );
|
3361 |
-
},
|
3362 |
-
nextUntil: function( elem, _i, until ) {
|
3363 |
-
return dir( elem, "nextSibling", until );
|
3364 |
-
},
|
3365 |
-
prevUntil: function( elem, _i, until ) {
|
3366 |
-
return dir( elem, "previousSibling", until );
|
3367 |
-
},
|
3368 |
-
siblings: function( elem ) {
|
3369 |
-
return siblings( ( elem.parentNode || {} ).firstChild, elem );
|
3370 |
-
},
|
3371 |
-
children: function( elem ) {
|
3372 |
-
return siblings( elem.firstChild );
|
3373 |
-
},
|
3374 |
-
contents: function( elem ) {
|
3375 |
-
if ( elem.contentDocument != null &&
|
3376 |
-
|
3377 |
-
// Support: IE 11+
|
3378 |
-
// <object> elements with no `data` attribute has an object
|
3379 |
-
// `contentDocument` with a `null` prototype.
|
3380 |
-
getProto( elem.contentDocument ) ) {
|
3381 |
-
|
3382 |
-
return elem.contentDocument;
|
3383 |
-
}
|
3384 |
-
|
3385 |
-
// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
|
3386 |
-
// Treat the template element as a regular one in browsers that
|
3387 |
-
// don't support it.
|
3388 |
-
if ( nodeName( elem, "template" ) ) {
|
3389 |
-
elem = elem.content || elem;
|
3390 |
-
}
|
3391 |
-
|
3392 |
-
return jQuery.merge( [], elem.childNodes );
|
3393 |
-
}
|
3394 |
-
}, function( name, fn ) {
|
3395 |
-
jQuery.fn[ name ] = function( until, selector ) {
|
3396 |
-
var matched = jQuery.map( this, fn, until );
|
3397 |
-
|
3398 |
-
if ( name.slice( -5 ) !== "Until" ) {
|
3399 |
-
selector = until;
|
3400 |
-
}
|
3401 |
-
|
3402 |
-
if ( selector && typeof selector === "string" ) {
|
3403 |
-
matched = jQuery.filter( selector, matched );
|
3404 |
-
}
|
3405 |
-
|
3406 |
-
if ( this.length > 1 ) {
|
3407 |
-
|
3408 |
-
// Remove duplicates
|
3409 |
-
if ( !guaranteedUnique[ name ] ) {
|
3410 |
-
jQuery.uniqueSort( matched );
|
3411 |
-
}
|
3412 |
-
|
3413 |
-
// Reverse order for parents* and prev-derivatives
|
3414 |
-
if ( rparentsprev.test( name ) ) {
|
3415 |
-
matched.reverse();
|
3416 |
-
}
|
3417 |
-
}
|
3418 |
-
|
3419 |
-
return this.pushStack( matched );
|
3420 |
-
};
|
3421 |
-
} );
|
3422 |
-
var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
|
3423 |
-
|
3424 |
-
|
3425 |
-
|
3426 |
-
// Convert String-formatted options into Object-formatted ones
|
3427 |
-
function createOptions( options ) {
|
3428 |
-
var object = {};
|
3429 |
-
jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
|
3430 |
-
object[ flag ] = true;
|
3431 |
-
} );
|
3432 |
-
return object;
|
3433 |
-
}
|
3434 |
-
|
3435 |
-
/*
|
3436 |
-
* Create a callback list using the following parameters:
|
3437 |
-
*
|
3438 |
-
* options: an optional list of space-separated options that will change how
|
3439 |
-
* the callback list behaves or a more traditional option object
|
3440 |
-
*
|
3441 |
-
* By default a callback list will act like an event callback list and can be
|
3442 |
-
* "fired" multiple times.
|
3443 |
-
*
|
3444 |
-
* Possible options:
|
3445 |
-
*
|
3446 |
-
* once: will ensure the callback list can only be fired once (like a Deferred)
|
3447 |
-
*
|
3448 |
-
* memory: will keep track of previous values and will call any callback added
|
3449 |
-
* after the list has been fired right away with the latest "memorized"
|
3450 |
-
* values (like a Deferred)
|
3451 |
-
*
|
3452 |
-
* unique: will ensure a callback can only be added once (no duplicate in the list)
|
3453 |
-
*
|
3454 |
-
* stopOnFalse: interrupt callings when a callback returns false
|
3455 |
-
*
|
3456 |
-
*/
|
3457 |
-
jQuery.Callbacks = function( options ) {
|
3458 |
-
|
3459 |
-
// Convert options from String-formatted to Object-formatted if needed
|
3460 |
-
// (we check in cache first)
|
3461 |
-
options = typeof options === "string" ?
|
3462 |
-
createOptions( options ) :
|
3463 |
-
jQuery.extend( {}, options );
|
3464 |
-
|
3465 |
-
var // Flag to know if list is currently firing
|
3466 |
-
firing,
|
3467 |
-
|
3468 |
-
// Last fire value for non-forgettable lists
|
3469 |
-
memory,
|
3470 |
-
|
3471 |
-
// Flag to know if list was already fired
|
3472 |
-
fired,
|
3473 |
-
|
3474 |
-
// Flag to prevent firing
|
3475 |
-
locked,
|
3476 |
-
|
3477 |
-
// Actual callback list
|
3478 |
-
list = [],
|
3479 |
-
|
3480 |
-
// Queue of execution data for repeatable lists
|
3481 |
-
queue = [],
|
3482 |
-
|
3483 |
-
// Index of currently firing callback (modified by add/remove as needed)
|
3484 |
-
firingIndex = -1,
|
3485 |
-
|
3486 |
-
// Fire callbacks
|
3487 |
-
fire = function() {
|
3488 |
-
|
3489 |
-
// Enforce single-firing
|
3490 |
-
locked = locked || options.once;
|
3491 |
-
|
3492 |
-
// Execute callbacks for all pending executions,
|
3493 |
-
// respecting firingIndex overrides and runtime changes
|
3494 |
-
fired = firing = true;
|
3495 |
-
for ( ; queue.length; firingIndex = -1 ) {
|
3496 |
-
memory = queue.shift();
|
3497 |
-
while ( ++firingIndex < list.length ) {
|
3498 |
-
|
3499 |
-
// Run callback and check for early termination
|
3500 |
-
if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
|
3501 |
-
options.stopOnFalse ) {
|
3502 |
-
|
3503 |
-
// Jump to end and forget the data so .add doesn't re-fire
|
3504 |
-
firingIndex = list.length;
|
3505 |
-
memory = false;
|
3506 |
-
}
|
3507 |
-
}
|
3508 |
-
}
|
3509 |
-
|
3510 |
-
// Forget the data if we're done with it
|
3511 |
-
if ( !options.memory ) {
|
3512 |
-
memory = false;
|
3513 |
-
}
|
3514 |
-
|
3515 |
-
firing = false;
|
3516 |
-
|
3517 |
-
// Clean up if we're done firing for good
|
3518 |
-
if ( locked ) {
|
3519 |
-
|
3520 |
-
// Keep an empty list if we have data for future add calls
|
3521 |
-
if ( memory ) {
|
3522 |
-
list = [];
|
3523 |
-
|
3524 |
-
// Otherwise, this object is spent
|
3525 |
-
} else {
|
3526 |
-
list = "";
|
3527 |
-
}
|
3528 |
-
}
|
3529 |
-
},
|
3530 |
-
|
3531 |
-
// Actual Callbacks object
|
3532 |
-
self = {
|
3533 |
-
|
3534 |
-
// Add a callback or a collection of callbacks to the list
|
3535 |
-
add: function() {
|
3536 |
-
if ( list ) {
|
3537 |
-
|
3538 |
-
// If we have memory from a past run, we should fire after adding
|
3539 |
-
if ( memory && !firing ) {
|
3540 |
-
firingIndex = list.length - 1;
|
3541 |
-
queue.push( memory );
|
3542 |
-
}
|
3543 |
-
|
3544 |
-
( function add( args ) {
|
3545 |
-
jQuery.each( args, function( _, arg ) {
|
3546 |
-
if ( isFunction( arg ) ) {
|
3547 |
-
if ( !options.unique || !self.has( arg ) ) {
|
3548 |
-
list.push( arg );
|
3549 |
-
}
|
3550 |
-
} else if ( arg && arg.length && toType( arg ) !== "string" ) {
|
3551 |
-
|
3552 |
-
// Inspect recursively
|
3553 |
-
add( arg );
|
3554 |
-
}
|
3555 |
-
} );
|
3556 |
-
} )( arguments );
|
3557 |
-
|
3558 |
-
if ( memory && !firing ) {
|
3559 |
-
fire();
|
3560 |
-
}
|
3561 |
-
}
|
3562 |
-
return this;
|
3563 |
-
},
|
3564 |
-
|
3565 |
-
// Remove a callback from the list
|
3566 |
-
remove: function() {
|
3567 |
-
jQuery.each( arguments, function( _, arg ) {
|
3568 |
-
var index;
|
3569 |
-
while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
|
3570 |
-
list.splice( index, 1 );
|
3571 |
-
|
3572 |
-
// Handle firing indexes
|
3573 |
-
if ( index <= firingIndex ) {
|
3574 |
-
firingIndex--;
|
3575 |
-
}
|
3576 |
-
}
|
3577 |
-
} );
|
3578 |
-
return this;
|
3579 |
-
},
|
3580 |
-
|
3581 |
-
// Check if a given callback is in the list.
|
3582 |
-
// If no argument is given, return whether or not list has callbacks attached.
|
3583 |
-
has: function( fn ) {
|
3584 |
-
return fn ?
|
3585 |
-
jQuery.inArray( fn, list ) > -1 :
|
3586 |
-
list.length > 0;
|
3587 |
-
},
|
3588 |
-
|
3589 |
-
// Remove all callbacks from the list
|
3590 |
-
empty: function() {
|
3591 |
-
if ( list ) {
|
3592 |
-
list = [];
|
3593 |
-
}
|
3594 |
-
return this;
|
3595 |
-
},
|
3596 |
-
|
3597 |
-
// Disable .fire and .add
|
3598 |
-
// Abort any current/pending executions
|
3599 |
-
// Clear all callbacks and values
|
3600 |
-
disable: function() {
|
3601 |
-
locked = queue = [];
|
3602 |
-
list = memory = "";
|
3603 |
-
return this;
|
3604 |
-
},
|
3605 |
-
disabled: function() {
|
3606 |
-
return !list;
|
3607 |
-
},
|
3608 |
-
|
3609 |
-
// Disable .fire
|
3610 |
-
// Also disable .add unless we have memory (since it would have no effect)
|
3611 |
-
// Abort any pending executions
|
3612 |
-
lock: function() {
|
3613 |
-
locked = queue = [];
|
3614 |
-
if ( !memory && !firing ) {
|
3615 |
-
list = memory = "";
|
3616 |
-
}
|
3617 |
-
return this;
|
3618 |
-
},
|
3619 |
-
locked: function() {
|
3620 |
-
return !!locked;
|
3621 |
-
},
|
3622 |
-
|
3623 |
-
// Call all callbacks with the given context and arguments
|
3624 |
-
fireWith: function( context, args ) {
|
3625 |
-
if ( !locked ) {
|
3626 |
-
args = args || [];
|
3627 |
-
args = [ context, args.slice ? args.slice() : args ];
|
3628 |
-
queue.push( args );
|
3629 |
-
if ( !firing ) {
|
3630 |
-
fire();
|
3631 |
-
}
|
3632 |
-
}
|
3633 |
-
return this;
|
3634 |
-
},
|
3635 |
-
|
3636 |
-
// Call all the callbacks with the given arguments
|
3637 |
-
fire: function() {
|
3638 |
-
self.fireWith( this, arguments );
|
3639 |
-
return this;
|
3640 |
-
},
|
3641 |
-
|
3642 |
-
// To know if the callbacks have already been called at least once
|
3643 |
-
fired: function() {
|
3644 |
-
return !!fired;
|
3645 |
-
}
|
3646 |
-
};
|
3647 |
-
|
3648 |
-
return self;
|
3649 |
-
};
|
3650 |
-
|
3651 |
-
|
3652 |
-
function Identity( v ) {
|
3653 |
-
return v;
|
3654 |
-
}
|
3655 |
-
function Thrower( ex ) {
|
3656 |
-
throw ex;
|
3657 |
-
}
|
3658 |
-
|
3659 |
-
function adoptValue( value, resolve, reject, noValue ) {
|
3660 |
-
var method;
|
3661 |
-
|
3662 |
-
try {
|
3663 |
-
|
3664 |
-
// Check for promise aspect first to privilege synchronous behavior
|
3665 |
-
if ( value && isFunction( ( method = value.promise ) ) ) {
|
3666 |
-
method.call( value ).done( resolve ).fail( reject );
|
3667 |
-
|
3668 |
-
// Other thenables
|
3669 |
-
} else if ( value && isFunction( ( method = value.then ) ) ) {
|
3670 |
-
method.call( value, resolve, reject );
|
3671 |
-
|
3672 |
-
// Other non-thenables
|
3673 |
-
} else {
|
3674 |
-
|
3675 |
-
// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
|
3676 |
-
// * false: [ value ].slice( 0 ) => resolve( value )
|
3677 |
-
// * true: [ value ].slice( 1 ) => resolve()
|
3678 |
-
resolve.apply( undefined, [ value ].slice( noValue ) );
|
3679 |
-
}
|
3680 |
-
|
3681 |
-
// For Promises/A+, convert exceptions into rejections
|
3682 |
-
// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
|
3683 |
-
// Deferred#then to conditionally suppress rejection.
|
3684 |
-
} catch ( value ) {
|
3685 |
-
|
3686 |
-
// Support: Android 4.0 only
|
3687 |
-
// Strict mode functions invoked without .call/.apply get global-object context
|
3688 |
-
reject.apply( undefined, [ value ] );
|
3689 |
-
}
|
3690 |
-
}
|
3691 |
-
|
3692 |
-
jQuery.extend( {
|
3693 |
-
|
3694 |
-
Deferred: function( func ) {
|
3695 |
-
var tuples = [
|
3696 |
-
|
3697 |
-
// action, add listener, callbacks,
|
3698 |
-
// ... .then handlers, argument index, [final state]
|
3699 |
-
[ "notify", "progress", jQuery.Callbacks( "memory" ),
|
3700 |
-
jQuery.Callbacks( "memory" ), 2 ],
|
3701 |
-
[ "resolve", "done", jQuery.Callbacks( "once memory" ),
|
3702 |
-
jQuery.Callbacks( "once memory" ), 0, "resolved" ],
|
3703 |
-
[ "reject", "fail", jQuery.Callbacks( "once memory" ),
|
3704 |
-
jQuery.Callbacks( "once memory" ), 1, "rejected" ]
|
3705 |
-
],
|
3706 |
-
state = "pending",
|
3707 |
-
promise = {
|
3708 |
-
state: function() {
|
3709 |
-
return state;
|
3710 |
-
},
|
3711 |
-
always: function() {
|
3712 |
-
deferred.done( arguments ).fail( arguments );
|
3713 |
-
return this;
|
3714 |
-
},
|
3715 |
-
"catch": function( fn ) {
|
3716 |
-
return promise.then( null, fn );
|
3717 |
-
},
|
3718 |
-
|
3719 |
-
// Keep pipe for back-compat
|
3720 |
-
pipe: function( /* fnDone, fnFail, fnProgress */ ) {
|
3721 |
-
var fns = arguments;
|
3722 |
-
|
3723 |
-
return jQuery.Deferred( function( newDefer ) {
|
3724 |
-
jQuery.each( tuples, function( _i, tuple ) {
|
3725 |
-
|
3726 |
-
// Map tuples (progress, done, fail) to arguments (done, fail, progress)
|
3727 |
-
var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
|
3728 |
-
|
3729 |
-
// deferred.progress(function() { bind to newDefer or newDefer.notify })
|
3730 |
-
// deferred.done(function() { bind to newDefer or newDefer.resolve })
|
3731 |
-
// deferred.fail(function() { bind to newDefer or newDefer.reject })
|
3732 |
-
deferred[ tuple[ 1 ] ]( function() {
|
3733 |
-
var returned = fn && fn.apply( this, arguments );
|
3734 |
-
if ( returned && isFunction( returned.promise ) ) {
|
3735 |
-
returned.promise()
|
3736 |
-
.progress( newDefer.notify )
|
3737 |
-
.done( newDefer.resolve )
|
3738 |
-
.fail( newDefer.reject );
|
3739 |
-
} else {
|
3740 |
-
newDefer[ tuple[ 0 ] + "With" ](
|
3741 |
-
this,
|
3742 |
-
fn ? [ returned ] : arguments
|
3743 |
-
);
|
3744 |
-
}
|
3745 |
-
} );
|
3746 |
-
} );
|
3747 |
-
fns = null;
|
3748 |
-
} ).promise();
|
3749 |
-
},
|
3750 |
-
then: function( onFulfilled, onRejected, onProgress ) {
|
3751 |
-
var maxDepth = 0;
|
3752 |
-
function resolve( depth, deferred, handler, special ) {
|
3753 |
-
return function() {
|
3754 |
-
var that = this,
|
3755 |
-
args = arguments,
|
3756 |
-
mightThrow = function() {
|
3757 |
-
var returned, then;
|
3758 |
-
|
3759 |
-
// Support: Promises/A+ section 2.3.3.3.3
|
3760 |
-
// https://promisesaplus.com/#point-59
|
3761 |
-
// Ignore double-resolution attempts
|
3762 |
-
if ( depth < maxDepth ) {
|
3763 |
-
return;
|
3764 |
-
}
|
3765 |
-
|
3766 |
-
returned = handler.apply( that, args );
|
3767 |
-
|
3768 |
-
// Support: Promises/A+ section 2.3.1
|
3769 |
-
// https://promisesaplus.com/#point-48
|
3770 |
-
if ( returned === deferred.promise() ) {
|
3771 |
-
throw new TypeError( "Thenable self-resolution" );
|
3772 |
-
}
|
3773 |
-
|
3774 |
-
// Support: Promises/A+ sections 2.3.3.1, 3.5
|
3775 |
-
// https://promisesaplus.com/#point-54
|
3776 |
-
// https://promisesaplus.com/#point-75
|
3777 |
-
// Retrieve `then` only once
|
3778 |
-
then = returned &&
|
3779 |
-
|
3780 |
-
// Support: Promises/A+ section 2.3.4
|
3781 |
-
// https://promisesaplus.com/#point-64
|
3782 |
-
// Only check objects and functions for thenability
|
3783 |
-
( typeof returned === "object" ||
|
3784 |
-
typeof returned === "function" ) &&
|
3785 |
-
returned.then;
|
3786 |
-
|
3787 |
-
// Handle a returned thenable
|
3788 |
-
if ( isFunction( then ) ) {
|
3789 |
-
|
3790 |
-
// Special processors (notify) just wait for resolution
|
3791 |
-
if ( special ) {
|
3792 |
-
then.call(
|
3793 |
-
returned,
|
3794 |
-
resolve( maxDepth, deferred, Identity, special ),
|
3795 |
-
resolve( maxDepth, deferred, Thrower, special )
|
3796 |
-
);
|
3797 |
-
|
3798 |
-
// Normal processors (resolve) also hook into progress
|
3799 |
-
} else {
|
3800 |
-
|
3801 |
-
// ...and disregard older resolution values
|
3802 |
-
maxDepth++;
|
3803 |
-
|
3804 |
-
then.call(
|
3805 |
-
returned,
|
3806 |
-
resolve( maxDepth, deferred, Identity, special ),
|
3807 |
-
resolve( maxDepth, deferred, Thrower, special ),
|
3808 |
-
resolve( maxDepth, deferred, Identity,
|
3809 |
-
deferred.notifyWith )
|
3810 |
-
);
|
3811 |
-
}
|
3812 |
-
|
3813 |
-
// Handle all other returned values
|
3814 |
-
} else {
|
3815 |
-
|
3816 |
-
// Only substitute handlers pass on context
|
3817 |
-
// and multiple values (non-spec behavior)
|
3818 |
-
if ( handler !== Identity ) {
|
3819 |
-
that = undefined;
|
3820 |
-
args = [ returned ];
|
3821 |
-
}
|
3822 |
-
|
3823 |
-
// Process the value(s)
|
3824 |
-
// Default process is resolve
|
3825 |
-
( special || deferred.resolveWith )( that, args );
|
3826 |
-
}
|
3827 |
-
},
|
3828 |
-
|
3829 |
-
// Only normal processors (resolve) catch and reject exceptions
|
3830 |
-
process = special ?
|
3831 |
-
mightThrow :
|
3832 |
-
function() {
|
3833 |
-
try {
|
3834 |
-
mightThrow();
|
3835 |
-
} catch ( e ) {
|
3836 |
-
|
3837 |
-
if ( jQuery.Deferred.exceptionHook ) {
|
3838 |
-
jQuery.Deferred.exceptionHook( e,
|
3839 |
-
process.stackTrace );
|
3840 |
-
}
|
3841 |
-
|
3842 |
-
// Support: Promises/A+ section 2.3.3.3.4.1
|
3843 |
-
// https://promisesaplus.com/#point-61
|
3844 |
-
// Ignore post-resolution exceptions
|
3845 |
-
if ( depth + 1 >= maxDepth ) {
|
3846 |
-
|
3847 |
-
// Only substitute handlers pass on context
|
3848 |
-
// and multiple values (non-spec behavior)
|
3849 |
-
if ( handler !== Thrower ) {
|
3850 |
-
that = undefined;
|
3851 |
-
args = [ e ];
|
3852 |
-
}
|
3853 |
-
|
3854 |
-
deferred.rejectWith( that, args );
|
3855 |
-
}
|
3856 |
-
}
|
3857 |
-
};
|
3858 |
-
|
3859 |
-
// Support: Promises/A+ section 2.3.3.3.1
|
3860 |
-
// https://promisesaplus.com/#point-57
|
3861 |
-
// Re-resolve promises immediately to dodge false rejection from
|
3862 |
-
// subsequent errors
|
3863 |
-
if ( depth ) {
|
3864 |
-
process();
|
3865 |
-
} else {
|
3866 |
-
|
3867 |
-
// Call an optional hook to record the stack, in case of exception
|
3868 |
-
// since it's otherwise lost when execution goes async
|
3869 |
-
if ( jQuery.Deferred.getStackHook ) {
|
3870 |
-
process.stackTrace = jQuery.Deferred.getStackHook();
|
3871 |
-
}
|
3872 |
-
window.setTimeout( process );
|
3873 |
-
}
|
3874 |
-
};
|
3875 |
-
}
|
3876 |
-
|
3877 |
-
return jQuery.Deferred( function( newDefer ) {
|
3878 |
-
|
3879 |
-
// progress_handlers.add( ... )
|
3880 |
-
tuples[ 0 ][ 3 ].add(
|
3881 |
-
resolve(
|
3882 |
-
0,
|
3883 |
-
newDefer,
|
3884 |
-
isFunction( onProgress ) ?
|
3885 |
-
onProgress :
|
3886 |
-
Identity,
|
3887 |
-
newDefer.notifyWith
|
3888 |
-
)
|
3889 |
-
);
|
3890 |
-
|
3891 |
-
// fulfilled_handlers.add( ... )
|
3892 |
-
tuples[ 1 ][ 3 ].add(
|
3893 |
-
resolve(
|
3894 |
-
0,
|
3895 |
-
newDefer,
|
3896 |
-
isFunction( onFulfilled ) ?
|
3897 |
-
onFulfilled :
|
3898 |
-
Identity
|
3899 |
-
)
|
3900 |
-
);
|
3901 |
-
|
3902 |
-
// rejected_handlers.add( ... )
|
3903 |
-
tuples[ 2 ][ 3 ].add(
|
3904 |
-
resolve(
|
3905 |
-
0,
|
3906 |
-
newDefer,
|
3907 |
-
isFunction( onRejected ) ?
|
3908 |
-
onRejected :
|
3909 |
-
Thrower
|
3910 |
-
)
|
3911 |
-
);
|
3912 |
-
} ).promise();
|
3913 |
-
},
|
3914 |
-
|
3915 |
-
// Get a promise for this deferred
|
3916 |
-
// If obj is provided, the promise aspect is added to the object
|
3917 |
-
promise: function( obj ) {
|
3918 |
-
return obj != null ? jQuery.extend( obj, promise ) : promise;
|
3919 |
-
}
|
3920 |
-
},
|
3921 |
-
deferred = {};
|
3922 |
-
|
3923 |
-
// Add list-specific methods
|
3924 |
-
jQuery.each( tuples, function( i, tuple ) {
|
3925 |
-
var list = tuple[ 2 ],
|
3926 |
-
stateString = tuple[ 5 ];
|
3927 |
-
|
3928 |
-
// promise.progress = list.add
|
3929 |
-
// promise.done = list.add
|
3930 |
-
// promise.fail = list.add
|
3931 |
-
promise[ tuple[ 1 ] ] = list.add;
|
3932 |
-
|
3933 |
-
// Handle state
|
3934 |
-
if ( stateString ) {
|
3935 |
-
list.add(
|
3936 |
-
function() {
|
3937 |
-
|
3938 |
-
// state = "resolved" (i.e., fulfilled)
|
3939 |
-
// state = "rejected"
|
3940 |
-
state = stateString;
|
3941 |
-
},
|
3942 |
-
|
3943 |
-
// rejected_callbacks.disable
|
3944 |
-
// fulfilled_callbacks.disable
|
3945 |
-
tuples[ 3 - i ][ 2 ].disable,
|
3946 |
-
|
3947 |
-
// rejected_handlers.disable
|
3948 |
-
// fulfilled_handlers.disable
|
3949 |
-
tuples[ 3 - i ][ 3 ].disable,
|
3950 |
-
|
3951 |
-
// progress_callbacks.lock
|
3952 |
-
tuples[ 0 ][ 2 ].lock,
|
3953 |
-
|
3954 |
-
// progress_handlers.lock
|
3955 |
-
tuples[ 0 ][ 3 ].lock
|
3956 |
-
);
|
3957 |
-
}
|
3958 |
-
|
3959 |
-
// progress_handlers.fire
|
3960 |
-
// fulfilled_handlers.fire
|
3961 |
-
// rejected_handlers.fire
|
3962 |
-
list.add( tuple[ 3 ].fire );
|
3963 |
-
|
3964 |
-
// deferred.notify = function() { deferred.notifyWith(...) }
|
3965 |
-
// deferred.resolve = function() { deferred.resolveWith(...) }
|
3966 |
-
// deferred.reject = function() { deferred.rejectWith(...) }
|
3967 |
-
deferred[ tuple[ 0 ] ] = function() {
|
3968 |
-
deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
|
3969 |
-
return this;
|
3970 |
-
};
|
3971 |
-
|
3972 |
-
// deferred.notifyWith = list.fireWith
|
3973 |
-
// deferred.resolveWith = list.fireWith
|
3974 |
-
// deferred.rejectWith = list.fireWith
|
3975 |
-
deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
|
3976 |
-
} );
|
3977 |
-
|
3978 |
-
// Make the deferred a promise
|
3979 |
-
promise.promise( deferred );
|
3980 |
-
|
3981 |
-
// Call given func if any
|
3982 |
-
if ( func ) {
|
3983 |
-
func.call( deferred, deferred );
|
3984 |
-
}
|
3985 |
-
|
3986 |
-
// All done!
|
3987 |
-
return deferred;
|
3988 |
-
},
|
3989 |
-
|
3990 |
-
// Deferred helper
|
3991 |
-
when: function( singleValue ) {
|
3992 |
-
var
|
3993 |
-
|
3994 |
-
// count of uncompleted subordinates
|
3995 |
-
remaining = arguments.length,
|
3996 |
-
|
3997 |
-
// count of unprocessed arguments
|
3998 |
-
i = remaining,
|
3999 |
-
|
4000 |
-
// subordinate fulfillment data
|
4001 |
-
resolveContexts = Array( i ),
|
4002 |
-
resolveValues = slice.call( arguments ),
|
4003 |
-
|
4004 |
-
// the primary Deferred
|
4005 |
-
primary = jQuery.Deferred(),
|
4006 |
-
|
4007 |
-
// subordinate callback factory
|
4008 |
-
updateFunc = function( i ) {
|
4009 |
-
return function( value ) {
|
4010 |
-
resolveContexts[ i ] = this;
|
4011 |
-
resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
|
4012 |
-
if ( !( --remaining ) ) {
|
4013 |
-
primary.resolveWith( resolveContexts, resolveValues );
|
4014 |
-
}
|
4015 |
-
};
|
4016 |
-
};
|
4017 |
-
|
4018 |
-
// Single- and empty arguments are adopted like Promise.resolve
|
4019 |
-
if ( remaining <= 1 ) {
|
4020 |
-
adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,
|
4021 |
-
!remaining );
|
4022 |
-
|
4023 |
-
// Use .then() to unwrap secondary thenables (cf. gh-3000)
|
4024 |
-
if ( primary.state() === "pending" ||
|
4025 |
-
isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
|
4026 |
-
|
4027 |
-
return primary.then();
|
4028 |
-
}
|
4029 |
-
}
|
4030 |
-
|
4031 |
-
// Multiple arguments are aggregated like Promise.all array elements
|
4032 |
-
while ( i-- ) {
|
4033 |
-
adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );
|
4034 |
-
}
|
4035 |
-
|
4036 |
-
return primary.promise();
|
4037 |
-
}
|
4038 |
-
} );
|
4039 |
-
|
4040 |
-
|
4041 |
-
// These usually indicate a programmer mistake during development,
|
4042 |
-
// warn about them ASAP rather than swallowing them by default.
|
4043 |
-
var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
|
4044 |
-
|
4045 |
-
jQuery.Deferred.exceptionHook = function( error, stack ) {
|
4046 |
-
|
4047 |
-
// Support: IE 8 - 9 only
|
4048 |
-
// Console exists when dev tools are open, which can happen at any time
|
4049 |
-
if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
|
4050 |
-
window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
|
4051 |
-
}
|
4052 |
-
};
|
4053 |
-
|
4054 |
-
|
4055 |
-
|
4056 |
-
|
4057 |
-
jQuery.readyException = function( error ) {
|
4058 |
-
window.setTimeout( function() {
|
4059 |
-
throw error;
|
4060 |
-
} );
|
4061 |
-
};
|
4062 |
-
|
4063 |
-
|
4064 |
-
|
4065 |
-
|
4066 |
-
// The deferred used on DOM ready
|
4067 |
-
var readyList = jQuery.Deferred();
|
4068 |
-
|
4069 |
-
jQuery.fn.ready = function( fn ) {
|
4070 |
-
|
4071 |
-
readyList
|
4072 |
-
.then( fn )
|
4073 |
-
|
4074 |
-
// Wrap jQuery.readyException in a function so that the lookup
|
4075 |
-
// happens at the time of error handling instead of callback
|
4076 |
-
// registration.
|
4077 |
-
.catch( function( error ) {
|
4078 |
-
jQuery.readyException( error );
|
4079 |
-
} );
|
4080 |
-
|
4081 |
-
return this;
|
4082 |
-
};
|
4083 |
-
|
4084 |
-
jQuery.extend( {
|
4085 |
-
|
4086 |
-
// Is the DOM ready to be used? Set to true once it occurs.
|
4087 |
-
isReady: false,
|
4088 |
-
|
4089 |
-
// A counter to track how many items to wait for before
|
4090 |
-
// the ready event fires. See #6781
|
4091 |
-
readyWait: 1,
|
4092 |
-
|
4093 |
-
// Handle when the DOM is ready
|
4094 |
-
ready: function( wait ) {
|
4095 |
-
|
4096 |
-
// Abort if there are pending holds or we're already ready
|
4097 |
-
if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
|
4098 |
-
return;
|
4099 |
-
}
|
4100 |
-
|
4101 |
-
// Remember that the DOM is ready
|
4102 |
-
jQuery.isReady = true;
|
4103 |
-
|
4104 |
-
// If a normal DOM Ready event fired, decrement, and wait if need be
|
4105 |
-
if ( wait !== true && --jQuery.readyWait > 0 ) {
|
4106 |
-
return;
|
4107 |
-
}
|
4108 |
-
|
4109 |
-
// If there are functions bound, to execute
|
4110 |
-
readyList.resolveWith( document, [ jQuery ] );
|
4111 |
-
}
|
4112 |
-
} );
|
4113 |
-
|
4114 |
-
jQuery.ready.then = readyList.then;
|
4115 |
-
|
4116 |
-
// The ready event handler and self cleanup method
|
4117 |
-
function completed() {
|
4118 |
-
document.removeEventListener( "DOMContentLoaded", completed );
|
4119 |
-
window.removeEventListener( "load", completed );
|
4120 |
-
jQuery.ready();
|
4121 |
-
}
|
4122 |
-
|
4123 |
-
// Catch cases where $(document).ready() is called
|
4124 |
-
// after the browser event has already occurred.
|
4125 |
-
// Support: IE <=9 - 10 only
|
4126 |
-
// Older IE sometimes signals "interactive" too soon
|
4127 |
-
if ( document.readyState === "complete" ||
|
4128 |
-
( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
|
4129 |
-
|
4130 |
-
// Handle it asynchronously to allow scripts the opportunity to delay ready
|
4131 |
-
window.setTimeout( jQuery.ready );
|
4132 |
-
|
4133 |
-
} else {
|
4134 |
-
|
4135 |
-
// Use the handy event callback
|
4136 |
-
document.addEventListener( "DOMContentLoaded", completed );
|
4137 |
-
|
4138 |
-
// A fallback to window.onload, that will always work
|
4139 |
-
window.addEventListener( "load", completed );
|
4140 |
-
}
|
4141 |
-
|
4142 |
-
|
4143 |
-
|
4144 |
-
|
4145 |
-
// Multifunctional method to get and set values of a collection
|
4146 |
-
// The value/s can optionally be executed if it's a function
|
4147 |
-
var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
|
4148 |
-
var i = 0,
|
4149 |
-
len = elems.length,
|
4150 |
-
bulk = key == null;
|
4151 |
-
|
4152 |
-
// Sets many values
|
4153 |
-
if ( toType( key ) === "object" ) {
|
4154 |
-
chainable = true;
|
4155 |
-
for ( i in key ) {
|
4156 |
-
access( elems, fn, i, key[ i ], true, emptyGet, raw );
|
4157 |
-
}
|
4158 |
-
|
4159 |
-
// Sets one value
|
4160 |
-
} else if ( value !== undefined ) {
|
4161 |
-
chainable = true;
|
4162 |
-
|
4163 |
-
if ( !isFunction( value ) ) {
|
4164 |
-
raw = true;
|
4165 |
-
}
|
4166 |
-
|
4167 |
-
if ( bulk ) {
|
4168 |
-
|
4169 |
-
// Bulk operations run against the entire set
|
4170 |
-
if ( raw ) {
|
4171 |
-
fn.call( elems, value );
|
4172 |
-
fn = null;
|
4173 |
-
|
4174 |
-
// ...except when executing function values
|
4175 |
-
} else {
|
4176 |
-
bulk = fn;
|
4177 |
-
fn = function( elem, _key, value ) {
|
4178 |
-
return bulk.call( jQuery( elem ), value );
|
4179 |
-
};
|
4180 |
-
}
|
4181 |
-
}
|
4182 |
-
|
4183 |
-
if ( fn ) {
|
4184 |
-
for ( ; i < len; i++ ) {
|
4185 |
-
fn(
|
4186 |
-
elems[ i ], key, raw ?
|
4187 |
-
value :
|
4188 |
-
value.call( elems[ i ], i, fn( elems[ i ], key ) )
|
4189 |
-
);
|
4190 |
-
}
|
4191 |
-
}
|
4192 |
-
}
|
4193 |
-
|
4194 |
-
if ( chainable ) {
|
4195 |
-
return elems;
|
4196 |
-
}
|
4197 |
-
|
4198 |
-
// Gets
|
4199 |
-
if ( bulk ) {
|
4200 |
-
return fn.call( elems );
|
4201 |
-
}
|
4202 |
-
|
4203 |
-
return len ? fn( elems[ 0 ], key ) : emptyGet;
|
4204 |
-
};
|
4205 |
-
|
4206 |
-
|
4207 |
-
// Matches dashed string for camelizing
|
4208 |
-
var rmsPrefix = /^-ms-/,
|
4209 |
-
rdashAlpha = /-([a-z])/g;
|
4210 |
-
|
4211 |
-
// Used by camelCase as callback to replace()
|
4212 |
-
function fcamelCase( _all, letter ) {
|
4213 |
-
return letter.toUpperCase();
|
4214 |
-
}
|
4215 |
-
|
4216 |
-
// Convert dashed to camelCase; used by the css and data modules
|
4217 |
-
// Support: IE <=9 - 11, Edge 12 - 15
|
4218 |
-
// Microsoft forgot to hump their vendor prefix (#9572)
|
4219 |
-
function camelCase( string ) {
|
4220 |
-
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
|
4221 |
-
}
|
4222 |
-
var acceptData = function( owner ) {
|
4223 |
-
|
4224 |
-
// Accepts only:
|
4225 |
-
// - Node
|
4226 |
-
// - Node.ELEMENT_NODE
|
4227 |
-
// - Node.DOCUMENT_NODE
|
4228 |
-
// - Object
|
4229 |
-
// - Any
|
4230 |
-
return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
|
4231 |
-
};
|
4232 |
-
|
4233 |
-
|
4234 |
-
|
4235 |
-
|
4236 |
-
function Data() {
|
4237 |
-
this.expando = jQuery.expando + Data.uid++;
|
4238 |
-
}
|
4239 |
-
|
4240 |
-
Data.uid = 1;
|
4241 |
-
|
4242 |
-
Data.prototype = {
|
4243 |
-
|
4244 |
-
cache: function( owner ) {
|
4245 |
-
|
4246 |
-
// Check if the owner object already has a cache
|
4247 |
-
var value = owner[ this.expando ];
|
4248 |
-
|
4249 |
-
// If not, create one
|
4250 |
-
if ( !value ) {
|
4251 |
-
value = {};
|
4252 |
-
|
4253 |
-
// We can accept data for non-element nodes in modern browsers,
|
4254 |
-
// but we should not, see #8335.
|
4255 |
-
// Always return an empty object.
|
4256 |
-
if ( acceptData( owner ) ) {
|
4257 |
-
|
4258 |
-
// If it is a node unlikely to be stringify-ed or looped over
|
4259 |
-
// use plain assignment
|
4260 |
-
if ( owner.nodeType ) {
|
4261 |
-
owner[ this.expando ] = value;
|
4262 |
-
|
4263 |
-
// Otherwise secure it in a non-enumerable property
|
4264 |
-
// configurable must be true to allow the property to be
|
4265 |
-
// deleted when data is removed
|
4266 |
-
} else {
|
4267 |
-
Object.defineProperty( owner, this.expando, {
|
4268 |
-
value: value,
|
4269 |
-
configurable: true
|
4270 |
-
} );
|
4271 |
-
}
|
4272 |
-
}
|
4273 |
-
}
|
4274 |
-
|
4275 |
-
return value;
|
4276 |
-
},
|
4277 |
-
set: function( owner, data, value ) {
|
4278 |
-
var prop,
|
4279 |
-
cache = this.cache( owner );
|
4280 |
-
|
4281 |
-
// Handle: [ owner, key, value ] args
|
4282 |
-
// Always use camelCase key (gh-2257)
|
4283 |
-
if ( typeof data === "string" ) {
|
4284 |
-
cache[ camelCase( data ) ] = value;
|
4285 |
-
|
4286 |
-
// Handle: [ owner, { properties } ] args
|
4287 |
-
} else {
|
4288 |
-
|
4289 |
-
// Copy the properties one-by-one to the cache object
|
4290 |
-
for ( prop in data ) {
|
4291 |
-
cache[ camelCase( prop ) ] = data[ prop ];
|
4292 |
-
}
|
4293 |
-
}
|
4294 |
-
return cache;
|
4295 |
-
},
|
4296 |
-
get: function( owner, key ) {
|
4297 |
-
return key === undefined ?
|
4298 |
-
this.cache( owner ) :
|
4299 |
-
|
4300 |
-
// Always use camelCase key (gh-2257)
|
4301 |
-
owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
|
4302 |
-
},
|
4303 |
-
access: function( owner, key, value ) {
|
4304 |
-
|
4305 |
-
// In cases where either:
|
4306 |
-
//
|
4307 |
-
// 1. No key was specified
|
4308 |
-
// 2. A string key was specified, but no value provided
|
4309 |
-
//
|
4310 |
-
// Take the "read" path and allow the get method to determine
|
4311 |
-
// which value to return, respectively either:
|
4312 |
-
//
|
4313 |
-
// 1. The entire cache object
|
4314 |
-
// 2. The data stored at the key
|
4315 |
-
//
|
4316 |
-
if ( key === undefined ||
|
4317 |
-
( ( key && typeof key === "string" ) && value === undefined ) ) {
|
4318 |
-
|
4319 |
-
return this.get( owner, key );
|
4320 |
-
}
|
4321 |
-
|
4322 |
-
// When the key is not a string, or both a key and value
|
4323 |
-
// are specified, set or extend (existing objects) with either:
|
4324 |
-
//
|
4325 |
-
// 1. An object of properties
|
4326 |
-
// 2. A key and value
|
4327 |
-
//
|
4328 |
-
this.set( owner, key, value );
|
4329 |
-
|
4330 |
-
// Since the "set" path can have two possible entry points
|
4331 |
-
// return the expected data based on which path was taken[*]
|
4332 |
-
return value !== undefined ? value : key;
|
4333 |
-
},
|
4334 |
-
remove: function( owner, key ) {
|
4335 |
-
var i,
|
4336 |
-
cache = owner[ this.expando ];
|
4337 |
-
|
4338 |
-
if ( cache === undefined ) {
|
4339 |
-
return;
|
4340 |
-
}
|
4341 |
-
|
4342 |
-
if ( key !== undefined ) {
|
4343 |
-
|
4344 |
-
// Support array or space separated string of keys
|
4345 |
-
if ( Array.isArray( key ) ) {
|
4346 |
-
|
4347 |
-
// If key is an array of keys...
|
4348 |
-
// We always set camelCase keys, so remove that.
|
4349 |
-
key = key.map( camelCase );
|
4350 |
-
} else {
|
4351 |
-
key = camelCase( key );
|
4352 |
-
|
4353 |
-
// If a key with the spaces exists, use it.
|
4354 |
-
// Otherwise, create an array by matching non-whitespace
|
4355 |
-
key = key in cache ?
|
4356 |
-
[ key ] :
|
4357 |
-
( key.match( rnothtmlwhite ) || [] );
|
4358 |
-
}
|
4359 |
-
|
4360 |
-
i = key.length;
|
4361 |
-
|
4362 |
-
while ( i-- ) {
|
4363 |
-
delete cache[ key[ i ] ];
|
4364 |
-
}
|
4365 |
-
}
|
4366 |
-
|
4367 |
-
// Remove the expando if there's no more data
|
4368 |
-
if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
|
4369 |
-
|
4370 |
-
// Support: Chrome <=35 - 45
|
4371 |
-
// Webkit & Blink performance suffers when deleting properties
|
4372 |
-
// from DOM nodes, so set to undefined instead
|
4373 |
-
// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
|
4374 |
-
if ( owner.nodeType ) {
|
4375 |
-
owner[ this.expando ] = undefined;
|
4376 |
-
} else {
|
4377 |
-
delete owner[ this.expando ];
|
4378 |
-
}
|
4379 |
-
}
|
4380 |
-
},
|
4381 |
-
hasData: function( owner ) {
|
4382 |
-
var cache = owner[ this.expando ];
|
4383 |
-
return cache !== undefined && !jQuery.isEmptyObject( cache );
|
4384 |
-
}
|
4385 |
-
};
|
4386 |
-
var dataPriv = new Data();
|
4387 |
-
|
4388 |
-
var dataUser = new Data();
|
4389 |
-
|
4390 |
-
|
4391 |
-
|
4392 |
-
// Implementation Summary
|
4393 |
-
//
|
4394 |
-
// 1. Enforce API surface and semantic compatibility with 1.9.x branch
|
4395 |
-
// 2. Improve the module's maintainability by reducing the storage
|
4396 |
-
// paths to a single mechanism.
|
4397 |
-
// 3. Use the same single mechanism to support "private" and "user" data.
|
4398 |
-
// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
|
4399 |
-
// 5. Avoid exposing implementation details on user objects (eg. expando properties)
|
4400 |
-
// 6. Provide a clear path for implementation upgrade to WeakMap in 2014
|
4401 |
-
|
4402 |
-
var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
|
4403 |
-
rmultiDash = /[A-Z]/g;
|
4404 |
-
|
4405 |
-
function getData( data ) {
|
4406 |
-
if ( data === "true" ) {
|
4407 |
-
return true;
|
4408 |
-
}
|
4409 |
-
|
4410 |
-
if ( data === "false" ) {
|
4411 |
-
return false;
|
4412 |
-
}
|
4413 |
-
|
4414 |
-
if ( data === "null" ) {
|
4415 |
-
return null;
|
4416 |
-
}
|
4417 |
-
|
4418 |
-
// Only convert to a number if it doesn't change the string
|
4419 |
-
if ( data === +data + "" ) {
|
4420 |
-
return +data;
|
4421 |
-
}
|
4422 |
-
|
4423 |
-
if ( rbrace.test( data ) ) {
|
4424 |
-
return JSON.parse( data );
|
4425 |
-
}
|
4426 |
-
|
4427 |
-
return data;
|
4428 |
-
}
|
4429 |
-
|
4430 |
-
function dataAttr( elem, key, data ) {
|
4431 |
-
var name;
|
4432 |
-
|
4433 |
-
// If nothing was found internally, try to fetch any
|
4434 |
-
// data from the HTML5 data-* attribute
|
4435 |
-
if ( data === undefined && elem.nodeType === 1 ) {
|
4436 |
-
name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
|
4437 |
-
data = elem.getAttribute( name );
|
4438 |
-
|
4439 |
-
if ( typeof data === "string" ) {
|
4440 |
-
try {
|
4441 |
-
data = getData( data );
|
4442 |
-
} catch ( e ) {}
|
4443 |
-
|
4444 |
-
// Make sure we set the data so it isn't changed later
|
4445 |
-
dataUser.set( elem, key, data );
|
4446 |
-
} else {
|
4447 |
-
data = undefined;
|
4448 |
-
}
|
4449 |
-
}
|
4450 |
-
return data;
|
4451 |
-
}
|
4452 |
-
|
4453 |
-
jQuery.extend( {
|
4454 |
-
hasData: function( elem ) {
|
4455 |
-
return dataUser.hasData( elem ) || dataPriv.hasData( elem );
|
4456 |
-
},
|
4457 |
-
|
4458 |
-
data: function( elem, name, data ) {
|
4459 |
-
return dataUser.access( elem, name, data );
|
4460 |
-
},
|
4461 |
-
|
4462 |
-
removeData: function( elem, name ) {
|
4463 |
-
dataUser.remove( elem, name );
|
4464 |
-
},
|
4465 |
-
|
4466 |
-
// TODO: Now that all calls to _data and _removeData have been replaced
|
4467 |
-
// with direct calls to dataPriv methods, these can be deprecated.
|
4468 |
-
_data: function( elem, name, data ) {
|
4469 |
-
return dataPriv.access( elem, name, data );
|
4470 |
-
},
|
4471 |
-
|
4472 |
-
_removeData: function( elem, name ) {
|
4473 |
-
dataPriv.remove( elem, name );
|
4474 |
-
}
|
4475 |
-
} );
|
4476 |
-
|
4477 |
-
jQuery.fn.extend( {
|
4478 |
-
data: function( key, value ) {
|
4479 |
-
var i, name, data,
|
4480 |
-
elem = this[ 0 ],
|
4481 |
-
attrs = elem && elem.attributes;
|
4482 |
-
|
4483 |
-
// Gets all values
|
4484 |
-
if ( key === undefined ) {
|
4485 |
-
if ( this.length ) {
|
4486 |
-
data = dataUser.get( elem );
|
4487 |
-
|
4488 |
-
if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
|
4489 |
-
i = attrs.length;
|
4490 |
-
while ( i-- ) {
|
4491 |
-
|
4492 |
-
// Support: IE 11 only
|
4493 |
-
// The attrs elements can be null (#14894)
|
4494 |
-
if ( attrs[ i ] ) {
|
4495 |
-
name = attrs[ i ].name;
|
4496 |
-
if ( name.indexOf( "data-" ) === 0 ) {
|
4497 |
-
name = camelCase( name.slice( 5 ) );
|
4498 |
-
dataAttr( elem, name, data[ name ] );
|
4499 |
-
}
|
4500 |
-
}
|
4501 |
-
}
|
4502 |
-
dataPriv.set( elem, "hasDataAttrs", true );
|
4503 |
-
}
|
4504 |
-
}
|
4505 |
-
|
4506 |
-
return data;
|
4507 |
-
}
|
4508 |
-
|
4509 |
-
// Sets multiple values
|
4510 |
-
if ( typeof key === "object" ) {
|
4511 |
-
return this.each( function() {
|
4512 |
-
dataUser.set( this, key );
|
4513 |
-
} );
|
4514 |
-
}
|
4515 |
-
|
4516 |
-
return access( this, function( value ) {
|
4517 |
-
var data;
|
4518 |
-
|
4519 |
-
// The calling jQuery object (element matches) is not empty
|
4520 |
-
// (and therefore has an element appears at this[ 0 ]) and the
|
4521 |
-
// `value` parameter was not undefined. An empty jQuery object
|
4522 |
-
// will result in `undefined` for elem = this[ 0 ] which will
|
4523 |
-
// throw an exception if an attempt to read a data cache is made.
|
4524 |
-
if ( elem && value === undefined ) {
|
4525 |
-
|
4526 |
-
// Attempt to get data from the cache
|
4527 |
-
// The key will always be camelCased in Data
|
4528 |
-
data = dataUser.get( elem, key );
|
4529 |
-
if ( data !== undefined ) {
|
4530 |
-
return data;
|
4531 |
-
}
|
4532 |
-
|
4533 |
-
// Attempt to "discover" the data in
|
4534 |
-
// HTML5 custom data-* attrs
|
4535 |
-
data = dataAttr( elem, key );
|
4536 |
-
if ( data !== undefined ) {
|
4537 |
-
return data;
|
4538 |
-
}
|
4539 |
-
|
4540 |
-
// We tried really hard, but the data doesn't exist.
|
4541 |
-
return;
|
4542 |
-
}
|
4543 |
-
|
4544 |
-
// Set the data...
|
4545 |
-
this.each( function() {
|
4546 |
-
|
4547 |
-
// We always store the camelCased key
|
4548 |
-
dataUser.set( this, key, value );
|
4549 |
-
} );
|
4550 |
-
}, null, value, arguments.length > 1, null, true );
|
4551 |
-
},
|
4552 |
-
|
4553 |
-
removeData: function( key ) {
|
4554 |
-
return this.each( function() {
|
4555 |
-
dataUser.remove( this, key );
|
4556 |
-
} );
|
4557 |
-
}
|
4558 |
-
} );
|
4559 |
-
|
4560 |
-
|
4561 |
-
jQuery.extend( {
|
4562 |
-
queue: function( elem, type, data ) {
|
4563 |
-
var queue;
|
4564 |
-
|
4565 |
-
if ( elem ) {
|
4566 |
-
type = ( type || "fx" ) + "queue";
|
4567 |
-
queue = dataPriv.get( elem, type );
|
4568 |
-
|
4569 |
-
// Speed up dequeue by getting out quickly if this is just a lookup
|
4570 |
-
if ( data ) {
|
4571 |
-
if ( !queue || Array.isArray( data ) ) {
|
4572 |
-
queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
|
4573 |
-
} else {
|
4574 |
-
queue.push( data );
|
4575 |
-
}
|
4576 |
-
}
|
4577 |
-
return queue || [];
|
4578 |
-
}
|
4579 |
-
},
|
4580 |
-
|
4581 |
-
dequeue: function( elem, type ) {
|
4582 |
-
type = type || "fx";
|
4583 |
-
|
4584 |
-
var queue = jQuery.queue( elem, type ),
|
4585 |
-
startLength = queue.length,
|
4586 |
-
fn = queue.shift(),
|
4587 |
-
hooks = jQuery._queueHooks( elem, type ),
|
4588 |
-
next = function() {
|
4589 |
-
jQuery.dequeue( elem, type );
|
4590 |
-
};
|
4591 |
-
|
4592 |
-
// If the fx queue is dequeued, always remove the progress sentinel
|
4593 |
-
if ( fn === "inprogress" ) {
|
4594 |
-
fn = queue.shift();
|
4595 |
-
startLength--;
|
4596 |
-
}
|
4597 |
-
|
4598 |
-
if ( fn ) {
|
4599 |
-
|
4600 |
-
// Add a progress sentinel to prevent the fx queue from being
|
4601 |
-
// automatically dequeued
|
4602 |
-
if ( type === "fx" ) {
|
4603 |
-
queue.unshift( "inprogress" );
|
4604 |
-
}
|
4605 |
-
|
4606 |
-
// Clear up the last queue stop function
|
4607 |
-
delete hooks.stop;
|
4608 |
-
fn.call( elem, next, hooks );
|
4609 |
-
}
|
4610 |
-
|
4611 |
-
if ( !startLength && hooks ) {
|
4612 |
-
hooks.empty.fire();
|
4613 |
-
}
|
4614 |
-
},
|
4615 |
-
|
4616 |
-
// Not public - generate a queueHooks object, or return the current one
|
4617 |
-
_queueHooks: function( elem, type ) {
|
4618 |
-
var key = type + "queueHooks";
|
4619 |
-
return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
|
4620 |
-
empty: jQuery.Callbacks( "once memory" ).add( function() {
|
4621 |
-
dataPriv.remove( elem, [ type + "queue", key ] );
|
4622 |
-
} )
|
4623 |
-
} );
|
4624 |
-
}
|
4625 |
-
} );
|
4626 |
-
|
4627 |
-
jQuery.fn.extend( {
|
4628 |
-
queue: function( type, data ) {
|
4629 |
-
var setter = 2;
|
4630 |
-
|
4631 |
-
if ( typeof type !== "string" ) {
|
4632 |
-
data = type;
|
4633 |
-
type = "fx";
|
4634 |
-
setter--;
|
4635 |
-
}
|
4636 |
-
|
4637 |
-
if ( arguments.length < setter ) {
|
4638 |
-
return jQuery.queue( this[ 0 ], type );
|
4639 |
-
}
|
4640 |
-
|
4641 |
-
return data === undefined ?
|
4642 |
-
this :
|
4643 |
-
this.each( function() {
|
4644 |
-
var queue = jQuery.queue( this, type, data );
|
4645 |
-
|
4646 |
-
// Ensure a hooks for this queue
|
4647 |
-
jQuery._queueHooks( this, type );
|
4648 |
-
|
4649 |
-
if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
|
4650 |
-
jQuery.dequeue( this, type );
|
4651 |
-
}
|
4652 |
-
} );
|
4653 |
-
},
|
4654 |
-
dequeue: function( type ) {
|
4655 |
-
return this.each( function() {
|
4656 |
-
jQuery.dequeue( this, type );
|
4657 |
-
} );
|
4658 |
-
},
|
4659 |
-
clearQueue: function( type ) {
|
4660 |
-
return this.queue( type || "fx", [] );
|
4661 |
-
},
|
4662 |
-
|
4663 |
-
// Get a promise resolved when queues of a certain type
|
4664 |
-
// are emptied (fx is the type by default)
|
4665 |
-
promise: function( type, obj ) {
|
4666 |
-
var tmp,
|
4667 |
-
count = 1,
|
4668 |
-
defer = jQuery.Deferred(),
|
4669 |
-
elements = this,
|
4670 |
-
i = this.length,
|
4671 |
-
resolve = function() {
|
4672 |
-
if ( !( --count ) ) {
|
4673 |
-
defer.resolveWith( elements, [ elements ] );
|
4674 |
-
}
|
4675 |
-
};
|
4676 |
-
|
4677 |
-
if ( typeof type !== "string" ) {
|
4678 |
-
obj = type;
|
4679 |
-
type = undefined;
|
4680 |
-
}
|
4681 |
-
type = type || "fx";
|
4682 |
-
|
4683 |
-
while ( i-- ) {
|
4684 |
-
tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
|
4685 |
-
if ( tmp && tmp.empty ) {
|
4686 |
-
count++;
|
4687 |
-
tmp.empty.add( resolve );
|
4688 |
-
}
|
4689 |
-
}
|
4690 |
-
resolve();
|
4691 |
-
return defer.promise( obj );
|
4692 |
-
}
|
4693 |
-
} );
|
4694 |
-
var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
|
4695 |
-
|
4696 |
-
var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
|
4697 |
-
|
4698 |
-
|
4699 |
-
var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
|
4700 |
-
|
4701 |
-
var documentElement = document.documentElement;
|
4702 |
-
|
4703 |
-
|
4704 |
-
|
4705 |
-
var isAttached = function( elem ) {
|
4706 |
-
return jQuery.contains( elem.ownerDocument, elem );
|
4707 |
-
},
|
4708 |
-
composed = { composed: true };
|
4709 |
-
|
4710 |
-
// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
|
4711 |
-
// Check attachment across shadow DOM boundaries when possible (gh-3504)
|
4712 |
-
// Support: iOS 10.0-10.2 only
|
4713 |
-
// Early iOS 10 versions support `attachShadow` but not `getRootNode`,
|
4714 |
-
// leading to errors. We need to check for `getRootNode`.
|
4715 |
-
if ( documentElement.getRootNode ) {
|
4716 |
-
isAttached = function( elem ) {
|
4717 |
-
return jQuery.contains( elem.ownerDocument, elem ) ||
|
4718 |
-
elem.getRootNode( composed ) === elem.ownerDocument;
|
4719 |
-
};
|
4720 |
-
}
|
4721 |
-
var isHiddenWithinTree = function( elem, el ) {
|
4722 |
-
|
4723 |
-
// isHiddenWithinTree might be called from jQuery#filter function;
|
4724 |
-
// in that case, element will be second argument
|
4725 |
-
elem = el || elem;
|
4726 |
-
|
4727 |
-
// Inline style trumps all
|
4728 |
-
return elem.style.display === "none" ||
|
4729 |
-
elem.style.display === "" &&
|
4730 |
-
|
4731 |
-
// Otherwise, check computed style
|
4732 |
-
// Support: Firefox <=43 - 45
|
4733 |
-
// Disconnected elements can have computed display: none, so first confirm that elem is
|
4734 |
-
// in the document.
|
4735 |
-
isAttached( elem ) &&
|
4736 |
-
|
4737 |
-
jQuery.css( elem, "display" ) === "none";
|
4738 |
-
};
|
4739 |
-
|
4740 |
-
|
4741 |
-
|
4742 |
-
function adjustCSS( elem, prop, valueParts, tween ) {
|
4743 |
-
var adjusted, scale,
|
4744 |
-
maxIterations = 20,
|
4745 |
-
currentValue = tween ?
|
4746 |
-
function() {
|
4747 |
-
return tween.cur();
|
4748 |
-
} :
|
4749 |
-
function() {
|
4750 |
-
return jQuery.css( elem, prop, "" );
|
4751 |
-
},
|
4752 |
-
initial = currentValue(),
|
4753 |
-
unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
|
4754 |
-
|
4755 |
-
// Starting value computation is required for potential unit mismatches
|
4756 |
-
initialInUnit = elem.nodeType &&
|
4757 |
-
( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
|
4758 |
-
rcssNum.exec( jQuery.css( elem, prop ) );
|
4759 |
-
|
4760 |
-
if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
|
4761 |
-
|
4762 |
-
// Support: Firefox <=54
|
4763 |
-
// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
|
4764 |
-
initial = initial / 2;
|
4765 |
-
|
4766 |
-
// Trust units reported by jQuery.css
|
4767 |
-
unit = unit || initialInUnit[ 3 ];
|
4768 |
-
|
4769 |
-
// Iteratively approximate from a nonzero starting point
|
4770 |
-
initialInUnit = +initial || 1;
|
4771 |
-
|
4772 |
-
while ( maxIterations-- ) {
|
4773 |
-
|
4774 |
-
// Evaluate and update our best guess (doubling guesses that zero out).
|
4775 |
-
// Finish if the scale equals or crosses 1 (making the old*new product non-positive).
|
4776 |
-
jQuery.style( elem, prop, initialInUnit + unit );
|
4777 |
-
if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
|
4778 |
-
maxIterations = 0;
|
4779 |
-
}
|
4780 |
-
initialInUnit = initialInUnit / scale;
|
4781 |
-
|
4782 |
-
}
|
4783 |
-
|
4784 |
-
initialInUnit = initialInUnit * 2;
|
4785 |
-
jQuery.style( elem, prop, initialInUnit + unit );
|
4786 |
-
|
4787 |
-
// Make sure we update the tween properties later on
|
4788 |
-
valueParts = valueParts || [];
|
4789 |
-
}
|
4790 |
-
|
4791 |
-
if ( valueParts ) {
|
4792 |
-
initialInUnit = +initialInUnit || +initial || 0;
|
4793 |
-
|
4794 |
-
// Apply relative offset (+=/-=) if specified
|
4795 |
-
adjusted = valueParts[ 1 ] ?
|
4796 |
-
initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
|
4797 |
-
+valueParts[ 2 ];
|
4798 |
-
if ( tween ) {
|
4799 |
-
tween.unit = unit;
|
4800 |
-
tween.start = initialInUnit;
|
4801 |
-
tween.end = adjusted;
|
4802 |
-
}
|
4803 |
-
}
|
4804 |
-
return adjusted;
|
4805 |
-
}
|
4806 |
-
|
4807 |
-
|
4808 |
-
var defaultDisplayMap = {};
|
4809 |
-
|
4810 |
-
function getDefaultDisplay( elem ) {
|
4811 |
-
var temp,
|
4812 |
-
doc = elem.ownerDocument,
|
4813 |
-
nodeName = elem.nodeName,
|
4814 |
-
display = defaultDisplayMap[ nodeName ];
|
4815 |
-
|
4816 |
-
if ( display ) {
|
4817 |
-
return display;
|
4818 |
-
}
|
4819 |
-
|
4820 |
-
temp = doc.body.appendChild( doc.createElement( nodeName ) );
|
4821 |
-
display = jQuery.css( temp, "display" );
|
4822 |
-
|
4823 |
-
temp.parentNode.removeChild( temp );
|
4824 |
-
|
4825 |
-
if ( display === "none" ) {
|
4826 |
-
display = "block";
|
4827 |
-
}
|
4828 |
-
defaultDisplayMap[ nodeName ] = display;
|
4829 |
-
|
4830 |
-
return display;
|
4831 |
-
}
|
4832 |
-
|
4833 |
-
function showHide( elements, show ) {
|
4834 |
-
var display, elem,
|
4835 |
-
values = [],
|
4836 |
-
index = 0,
|
4837 |
-
length = elements.length;
|
4838 |
-
|
4839 |
-
// Determine new display value for elements that need to change
|
4840 |
-
for ( ; index < length; index++ ) {
|
4841 |
-
elem = elements[ index ];
|
4842 |
-
if ( !elem.style ) {
|
4843 |
-
continue;
|
4844 |
-
}
|
4845 |
-
|
4846 |
-
display = elem.style.display;
|
4847 |
-
if ( show ) {
|
4848 |
-
|
4849 |
-
// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
|
4850 |
-
// check is required in this first loop unless we have a nonempty display value (either
|
4851 |
-
// inline or about-to-be-restored)
|
4852 |
-
if ( display === "none" ) {
|
4853 |
-
values[ index ] = dataPriv.get( elem, "display" ) || null;
|
4854 |
-
if ( !values[ index ] ) {
|
4855 |
-
elem.style.display = "";
|
4856 |
-
}
|
4857 |
-
}
|
4858 |
-
if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
|
4859 |
-
values[ index ] = getDefaultDisplay( elem );
|
4860 |
-
}
|
4861 |
-
} else {
|
4862 |
-
if ( display !== "none" ) {
|
4863 |
-
values[ index ] = "none";
|
4864 |
-
|
4865 |
-
// Remember what we're overwriting
|
4866 |
-
dataPriv.set( elem, "display", display );
|
4867 |
-
}
|
4868 |
-
}
|
4869 |
-
}
|
4870 |
-
|
4871 |
-
// Set the display of the elements in a second loop to avoid constant reflow
|
4872 |
-
for ( index = 0; index < length; index++ ) {
|
4873 |
-
if ( values[ index ] != null ) {
|
4874 |
-
elements[ index ].style.display = values[ index ];
|
4875 |
-
}
|
4876 |
-
}
|
4877 |
-
|
4878 |
-
return elements;
|
4879 |
-
}
|
4880 |
-
|
4881 |
-
jQuery.fn.extend( {
|
4882 |
-
show: function() {
|
4883 |
-
return showHide( this, true );
|
4884 |
-
},
|
4885 |
-
hide: function() {
|
4886 |
-
return showHide( this );
|
4887 |
-
},
|
4888 |
-
toggle: function( state ) {
|
4889 |
-
if ( typeof state === "boolean" ) {
|
4890 |
-
return state ? this.show() : this.hide();
|
4891 |
-
}
|
4892 |
-
|
4893 |
-
return this.each( function() {
|
4894 |
-
if ( isHiddenWithinTree( this ) ) {
|
4895 |
-
jQuery( this ).show();
|
4896 |
-
} else {
|
4897 |
-
jQuery( this ).hide();
|
4898 |
-
}
|
4899 |
-
} );
|
4900 |
-
}
|
4901 |
-
} );
|
4902 |
-
var rcheckableType = ( /^(?:checkbox|radio)$/i );
|
4903 |
-
|
4904 |
-
var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
|
4905 |
-
|
4906 |
-
var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
|
4907 |
-
|
4908 |
-
|
4909 |
-
|
4910 |
-
( function() {
|
4911 |
-
var fragment = document.createDocumentFragment(),
|
4912 |
-
div = fragment.appendChild( document.createElement( "div" ) ),
|
4913 |
-
input = document.createElement( "input" );
|
4914 |
-
|
4915 |
-
// Support: Android 4.0 - 4.3 only
|
4916 |
-
// Check state lost if the name is set (#11217)
|
4917 |
-
// Support: Windows Web Apps (WWA)
|
4918 |
-
// `name` and `type` must use .setAttribute for WWA (#14901)
|
4919 |
-
input.setAttribute( "type", "radio" );
|
4920 |
-
input.setAttribute( "checked", "checked" );
|
4921 |
-
input.setAttribute( "name", "t" );
|
4922 |
-
|
4923 |
-
div.appendChild( input );
|
4924 |
-
|
4925 |
-
// Support: Android <=4.1 only
|
4926 |
-
// Older WebKit doesn't clone checked state correctly in fragments
|
4927 |
-
support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
|
4928 |
-
|
4929 |
-
// Support: IE <=11 only
|
4930 |
-
// Make sure textarea (and checkbox) defaultValue is properly cloned
|
4931 |
-
div.innerHTML = "<textarea>x</textarea>";
|
4932 |
-
support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
|
4933 |
-
|
4934 |
-
// Support: IE <=9 only
|
4935 |
-
// IE <=9 replaces <option> tags with their contents when inserted outside of
|
4936 |
-
// the select element.
|
4937 |
-
div.innerHTML = "<option></option>";
|
4938 |
-
support.option = !!div.lastChild;
|
4939 |
-
} )();
|
4940 |
-
|
4941 |
-
|
4942 |
-
// We have to close these tags to support XHTML (#13200)
|
4943 |
-
var wrapMap = {
|
4944 |
-
|
4945 |
-
// XHTML parsers do not magically insert elements in the
|
4946 |
-
// same way that tag soup parsers do. So we cannot shorten
|
4947 |
-
// this by omitting <tbody> or other required elements.
|
4948 |
-
thead: [ 1, "<table>", "</table>" ],
|
4949 |
-
col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
|
4950 |
-
tr: [ 2, "<table><tbody>", "</tbody></table>" ],
|
4951 |
-
td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
|
4952 |
-
|
4953 |
-
_default: [ 0, "", "" ]
|
4954 |
-
};
|
4955 |
-
|
4956 |
-
wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
|
4957 |
-
wrapMap.th = wrapMap.td;
|
4958 |
-
|
4959 |
-
// Support: IE <=9 only
|
4960 |
-
if ( !support.option ) {
|
4961 |
-
wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ];
|
4962 |
-
}
|
4963 |
-
|
4964 |
-
|
4965 |
-
function getAll( context, tag ) {
|
4966 |
-
|
4967 |
-
// Support: IE <=9 - 11 only
|
4968 |
-
// Use typeof to avoid zero-argument method invocation on host objects (#15151)
|
4969 |
-
var ret;
|
4970 |
-
|
4971 |
-
if ( typeof context.getElementsByTagName !== "undefined" ) {
|
4972 |
-
ret = context.getElementsByTagName( tag || "*" );
|
4973 |
-
|
4974 |
-
} else if ( typeof context.querySelectorAll !== "undefined" ) {
|
4975 |
-
ret = context.querySelectorAll( tag || "*" );
|
4976 |
-
|
4977 |
-
} else {
|
4978 |
-
ret = [];
|
4979 |
-
}
|
4980 |
-
|
4981 |
-
if ( tag === undefined || tag && nodeName( context, tag ) ) {
|
4982 |
-
return jQuery.merge( [ context ], ret );
|
4983 |
-
}
|
4984 |
-
|
4985 |
-
return ret;
|
4986 |
-
}
|
4987 |
-
|
4988 |
-
|
4989 |
-
// Mark scripts as having already been evaluated
|
4990 |
-
function setGlobalEval( elems, refElements ) {
|
4991 |
-
var i = 0,
|
4992 |
-
l = elems.length;
|
4993 |
-
|
4994 |
-
for ( ; i < l; i++ ) {
|
4995 |
-
dataPriv.set(
|
4996 |
-
elems[ i ],
|
4997 |
-
"globalEval",
|
4998 |
-
!refElements || dataPriv.get( refElements[ i ], "globalEval" )
|
4999 |
-
);
|
5000 |
-
}
|
5001 |
-
}
|
5002 |
-
|
5003 |
-
|
5004 |
-
var rhtml = /<|&#?\w+;/;
|
5005 |
-
|
5006 |
-
function buildFragment( elems, context, scripts, selection, ignored ) {
|
5007 |
-
var elem, tmp, tag, wrap, attached, j,
|
5008 |
-
fragment = context.createDocumentFragment(),
|
5009 |
-
nodes = [],
|
5010 |
-
i = 0,
|
5011 |
-
l = elems.length;
|
5012 |
-
|
5013 |
-
for ( ; i < l; i++ ) {
|
5014 |
-
elem = elems[ i ];
|
5015 |
-
|
5016 |
-
if ( elem || elem === 0 ) {
|
5017 |
-
|
5018 |
-
// Add nodes directly
|
5019 |
-
if ( toType( elem ) === "object" ) {
|
5020 |
-
|
5021 |
-
// Support: Android <=4.0 only, PhantomJS 1 only
|
5022 |
-
// push.apply(_, arraylike) throws on ancient WebKit
|
5023 |
-
jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
|
5024 |
-
|
5025 |
-
// Convert non-html into a text node
|
5026 |
-
} else if ( !rhtml.test( elem ) ) {
|
5027 |
-
nodes.push( context.createTextNode( elem ) );
|
5028 |
-
|
5029 |
-
// Convert html into DOM nodes
|
5030 |
-
} else {
|
5031 |
-
tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
|
5032 |
-
|
5033 |
-
// Deserialize a standard representation
|
5034 |
-
tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
|
5035 |
-
wrap = wrapMap[ tag ] || wrapMap._default;
|
5036 |
-
tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
|
5037 |
-
|
5038 |
-
// Descend through wrappers to the right content
|
5039 |
-
j = wrap[ 0 ];
|
5040 |
-
while ( j-- ) {
|
5041 |
-
tmp = tmp.lastChild;
|
5042 |
-
}
|
5043 |
-
|
5044 |
-
// Support: Android <=4.0 only, PhantomJS 1 only
|
5045 |
-
// push.apply(_, arraylike) throws on ancient WebKit
|
5046 |
-
jQuery.merge( nodes, tmp.childNodes );
|
5047 |
-
|
5048 |
-
// Remember the top-level container
|
5049 |
-
tmp = fragment.firstChild;
|
5050 |
-
|
5051 |
-
// Ensure the created nodes are orphaned (#12392)
|
5052 |
-
tmp.textContent = "";
|
5053 |
-
}
|
5054 |
-
}
|
5055 |
-
}
|
5056 |
-
|
5057 |
-
// Remove wrapper from fragment
|
5058 |
-
fragment.textContent = "";
|
5059 |
-
|
5060 |
-
i = 0;
|
5061 |
-
while ( ( elem = nodes[ i++ ] ) ) {
|
5062 |
-
|
5063 |
-
// Skip elements already in the context collection (trac-4087)
|
5064 |
-
if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
|
5065 |
-
if ( ignored ) {
|
5066 |
-
ignored.push( elem );
|
5067 |
-
}
|
5068 |
-
continue;
|
5069 |
-
}
|
5070 |
-
|
5071 |
-
attached = isAttached( elem );
|
5072 |
-
|
5073 |
-
// Append to fragment
|
5074 |
-
tmp = getAll( fragment.appendChild( elem ), "script" );
|
5075 |
-
|
5076 |
-
// Preserve script evaluation history
|
5077 |
-
if ( attached ) {
|
5078 |
-
setGlobalEval( tmp );
|
5079 |
-
}
|
5080 |
-
|
5081 |
-
// Capture executables
|
5082 |
-
if ( scripts ) {
|
5083 |
-
j = 0;
|
5084 |
-
while ( ( elem = tmp[ j++ ] ) ) {
|
5085 |
-
if ( rscriptType.test( elem.type || "" ) ) {
|
5086 |
-
scripts.push( elem );
|
5087 |
-
}
|
5088 |
-
}
|
5089 |
-
}
|
5090 |
-
}
|
5091 |
-
|
5092 |
-
return fragment;
|
5093 |
-
}
|
5094 |
-
|
5095 |
-
|
5096 |
-
var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
|
5097 |
-
|
5098 |
-
function returnTrue() {
|
5099 |
-
return true;
|
5100 |
-
}
|
5101 |
-
|
5102 |
-
function returnFalse() {
|
5103 |
-
return false;
|
5104 |
-
}
|
5105 |
-
|
5106 |
-
// Support: IE <=9 - 11+
|
5107 |
-
// focus() and blur() are asynchronous, except when they are no-op.
|
5108 |
-
// So expect focus to be synchronous when the element is already active,
|
5109 |
-
// and blur to be synchronous when the element is not already active.
|
5110 |
-
// (focus and blur are always synchronous in other supported browsers,
|
5111 |
-
// this just defines when we can count on it).
|
5112 |
-
function expectSync( elem, type ) {
|
5113 |
-
return ( elem === safeActiveElement() ) === ( type === "focus" );
|
5114 |
-
}
|
5115 |
-
|
5116 |
-
// Support: IE <=9 only
|
5117 |
-
// Accessing document.activeElement can throw unexpectedly
|
5118 |
-
// https://bugs.jquery.com/ticket/13393
|
5119 |
-
function safeActiveElement() {
|
5120 |
-
try {
|
5121 |
-
return document.activeElement;
|
5122 |
-
} catch ( err ) { }
|
5123 |
-
}
|
5124 |
-
|
5125 |
-
function on( elem, types, selector, data, fn, one ) {
|
5126 |
-
var origFn, type;
|
5127 |
-
|
5128 |
-
// Types can be a map of types/handlers
|
5129 |
-
if ( typeof types === "object" ) {
|
5130 |
-
|
5131 |
-
// ( types-Object, selector, data )
|
5132 |
-
if ( typeof selector !== "string" ) {
|
5133 |
-
|
5134 |
-
// ( types-Object, data )
|
5135 |
-
data = data || selector;
|
5136 |
-
selector = undefined;
|
5137 |
-
}
|
5138 |
-
for ( type in types ) {
|
5139 |
-
on( elem, type, selector, data, types[ type ], one );
|
5140 |
-
}
|
5141 |
-
return elem;
|
5142 |
-
}
|
5143 |
-
|
5144 |
-
if ( data == null && fn == null ) {
|
5145 |
-
|
5146 |
-
// ( types, fn )
|
5147 |
-
fn = selector;
|
5148 |
-
data = selector = undefined;
|
5149 |
-
} else if ( fn == null ) {
|
5150 |
-
if ( typeof selector === "string" ) {
|
5151 |
-
|
5152 |
-
// ( types, selector, fn )
|
5153 |
-
fn = data;
|
5154 |
-
data = undefined;
|
5155 |
-
} else {
|
5156 |
-
|
5157 |
-
// ( types, data, fn )
|
5158 |
-
fn = data;
|
5159 |
-
data = selector;
|
5160 |
-
selector = undefined;
|
5161 |
-
}
|
5162 |
-
}
|
5163 |
-
if ( fn === false ) {
|
5164 |
-
fn = returnFalse;
|
5165 |
-
} else if ( !fn ) {
|
5166 |
-
return elem;
|
5167 |
-
}
|
5168 |
-
|
5169 |
-
if ( one === 1 ) {
|
5170 |
-
origFn = fn;
|
5171 |
-
fn = function( event ) {
|
5172 |
-
|
5173 |
-
// Can use an empty set, since event contains the info
|
5174 |
-
jQuery().off( event );
|
5175 |
-
return origFn.apply( this, arguments );
|
5176 |
-
};
|
5177 |
-
|
5178 |
-
// Use same guid so caller can remove using origFn
|
5179 |
-
fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
|
5180 |
-
}
|
5181 |
-
return elem.each( function() {
|
5182 |
-
jQuery.event.add( this, types, fn, data, selector );
|
5183 |
-
} );
|
5184 |
-
}
|
5185 |
-
|
5186 |
-
/*
|
5187 |
-
* Helper functions for managing events -- not part of the public interface.
|
5188 |
-
* Props to Dean Edwards' addEvent library for many of the ideas.
|
5189 |
-
*/
|
5190 |
-
jQuery.event = {
|
5191 |
-
|
5192 |
-
global: {},
|
5193 |
-
|
5194 |
-
add: function( elem, types, handler, data, selector ) {
|
5195 |
-
|
5196 |
-
var handleObjIn, eventHandle, tmp,
|
5197 |
-
events, t, handleObj,
|
5198 |
-
special, handlers, type, namespaces, origType,
|
5199 |
-
elemData = dataPriv.get( elem );
|
5200 |
-
|
5201 |
-
// Only attach events to objects that accept data
|
5202 |
-
if ( !acceptData( elem ) ) {
|
5203 |
-
return;
|
5204 |
-
}
|
5205 |
-
|
5206 |
-
// Caller can pass in an object of custom data in lieu of the handler
|
5207 |
-
if ( handler.handler ) {
|
5208 |
-
handleObjIn = handler;
|
5209 |
-
handler = handleObjIn.handler;
|
5210 |
-
selector = handleObjIn.selector;
|
5211 |
-
}
|
5212 |
-
|
5213 |
-
// Ensure that invalid selectors throw exceptions at attach time
|
5214 |
-
// Evaluate against documentElement in case elem is a non-element node (e.g., document)
|
5215 |
-
if ( selector ) {
|
5216 |
-
jQuery.find.matchesSelector( documentElement, selector );
|
5217 |
-
}
|
5218 |
-
|
5219 |
-
// Make sure that the handler has a unique ID, used to find/remove it later
|
5220 |
-
if ( !handler.guid ) {
|
5221 |
-
handler.guid = jQuery.guid++;
|
5222 |
-
}
|
5223 |
-
|
5224 |
-
// Init the element's event structure and main handler, if this is the first
|
5225 |
-
if ( !( events = elemData.events ) ) {
|
5226 |
-
events = elemData.events = Object.create( null );
|
5227 |
-
}
|
5228 |
-
if ( !( eventHandle = elemData.handle ) ) {
|
5229 |
-
eventHandle = elemData.handle = function( e ) {
|
5230 |
-
|
5231 |
-
// Discard the second event of a jQuery.event.trigger() and
|
5232 |
-
// when an event is called after a page has unloaded
|
5233 |
-
return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
|
5234 |
-
jQuery.event.dispatch.apply( elem, arguments ) : undefined;
|
5235 |
-
};
|
5236 |
-
}
|
5237 |
-
|
5238 |
-
// Handle multiple events separated by a space
|
5239 |
-
types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
|
5240 |
-
t = types.length;
|
5241 |
-
while ( t-- ) {
|
5242 |
-
tmp = rtypenamespace.exec( types[ t ] ) || [];
|
5243 |
-
type = origType = tmp[ 1 ];
|
5244 |
-
namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
|
5245 |
-
|
5246 |
-
// There *must* be a type, no attaching namespace-only handlers
|
5247 |
-
if ( !type ) {
|
5248 |
-
continue;
|
5249 |
-
}
|
5250 |
-
|
5251 |
-
// If event changes its type, use the special event handlers for the changed type
|
5252 |
-
special = jQuery.event.special[ type ] || {};
|
5253 |
-
|
5254 |
-
// If selector defined, determine special event api type, otherwise given type
|
5255 |
-
type = ( selector ? special.delegateType : special.bindType ) || type;
|
5256 |
-
|
5257 |
-
// Update special based on newly reset type
|
5258 |
-
special = jQuery.event.special[ type ] || {};
|
5259 |
-
|
5260 |
-
// handleObj is passed to all event handlers
|
5261 |
-
handleObj = jQuery.extend( {
|
5262 |
-
type: type,
|
5263 |
-
origType: origType,
|
5264 |
-
data: data,
|
5265 |
-
handler: handler,
|
5266 |
-
guid: handler.guid,
|
5267 |
-
selector: selector,
|
5268 |
-
needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
|
5269 |
-
namespace: namespaces.join( "." )
|
5270 |
-
}, handleObjIn );
|
5271 |
-
|
5272 |
-
// Init the event handler queue if we're the first
|
5273 |
-
if ( !( handlers = events[ type ] ) ) {
|
5274 |
-
handlers = events[ type ] = [];
|
5275 |
-
handlers.delegateCount = 0;
|
5276 |
-
|
5277 |
-
// Only use addEventListener if the special events handler returns false
|
5278 |
-
if ( !special.setup ||
|
5279 |
-
special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
|
5280 |
-
|
5281 |
-
if ( elem.addEventListener ) {
|
5282 |
-
elem.addEventListener( type, eventHandle );
|
5283 |
-
}
|
5284 |
-
}
|
5285 |
-
}
|
5286 |
-
|
5287 |
-
if ( special.add ) {
|
5288 |
-
special.add.call( elem, handleObj );
|
5289 |
-
|
5290 |
-
if ( !handleObj.handler.guid ) {
|
5291 |
-
handleObj.handler.guid = handler.guid;
|
5292 |
-
}
|
5293 |
-
}
|
5294 |
-
|
5295 |
-
// Add to the element's handler list, delegates in front
|
5296 |
-
if ( selector ) {
|
5297 |
-
handlers.splice( handlers.delegateCount++, 0, handleObj );
|
5298 |
-
} else {
|
5299 |
-
handlers.push( handleObj );
|
5300 |
-
}
|
5301 |
-
|
5302 |
-
// Keep track of which events have ever been used, for event optimization
|
5303 |
-
jQuery.event.global[ type ] = true;
|
5304 |
-
}
|
5305 |
-
|
5306 |
-
},
|
5307 |
-
|
5308 |
-
// Detach an event or set of events from an element
|
5309 |
-
remove: function( elem, types, handler, selector, mappedTypes ) {
|
5310 |
-
|
5311 |
-
var j, origCount, tmp,
|
5312 |
-
events, t, handleObj,
|
5313 |
-
special, handlers, type, namespaces, origType,
|
5314 |
-
elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
|
5315 |
-
|
5316 |
-
if ( !elemData || !( events = elemData.events ) ) {
|
5317 |
-
return;
|
5318 |
-
}
|
5319 |
-
|
5320 |
-
// Once for each type.namespace in types; type may be omitted
|
5321 |
-
types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
|
5322 |
-
t = types.length;
|
5323 |
-
while ( t-- ) {
|
5324 |
-
tmp = rtypenamespace.exec( types[ t ] ) || [];
|
5325 |
-
type = origType = tmp[ 1 ];
|
5326 |
-
namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
|
5327 |
-
|
5328 |
-
// Unbind all events (on this namespace, if provided) for the element
|
5329 |
-
if ( !type ) {
|
5330 |
-
for ( type in events ) {
|
5331 |
-
jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
|
5332 |
-
}
|
5333 |
-
continue;
|
5334 |
-
}
|
5335 |
-
|
5336 |
-
special = jQuery.event.special[ type ] || {};
|
5337 |
-
type = ( selector ? special.delegateType : special.bindType ) || type;
|
5338 |
-
handlers = events[ type ] || [];
|
5339 |
-
tmp = tmp[ 2 ] &&
|
5340 |
-
new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
|
5341 |
-
|
5342 |
-
// Remove matching events
|
5343 |
-
origCount = j = handlers.length;
|
5344 |
-
while ( j-- ) {
|
5345 |
-
handleObj = handlers[ j ];
|
5346 |
-
|
5347 |
-
if ( ( mappedTypes || origType === handleObj.origType ) &&
|
5348 |
-
( !handler || handler.guid === handleObj.guid ) &&
|
5349 |
-
( !tmp || tmp.test( handleObj.namespace ) ) &&
|
5350 |
-
( !selector || selector === handleObj.selector ||
|
5351 |
-
selector === "**" && handleObj.selector ) ) {
|
5352 |
-
handlers.splice( j, 1 );
|
5353 |
-
|
5354 |
-
if ( handleObj.selector ) {
|
5355 |
-
handlers.delegateCount--;
|
5356 |
-
}
|
5357 |
-
if ( special.remove ) {
|
5358 |
-
special.remove.call( elem, handleObj );
|
5359 |
-
}
|
5360 |
-
}
|
5361 |
-
}
|
5362 |
-
|
5363 |
-
// Remove generic event handler if we removed something and no more handlers exist
|
5364 |
-
// (avoids potential for endless recursion during removal of special event handlers)
|
5365 |
-
if ( origCount && !handlers.length ) {
|
5366 |
-
if ( !special.teardown ||
|
5367 |
-
special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
|
5368 |
-
|
5369 |
-
jQuery.removeEvent( elem, type, elemData.handle );
|
5370 |
-
}
|
5371 |
-
|
5372 |
-
delete events[ type ];
|
5373 |
-
}
|
5374 |
-
}
|
5375 |
-
|
5376 |
-
// Remove data and the expando if it's no longer used
|
5377 |
-
if ( jQuery.isEmptyObject( events ) ) {
|
5378 |
-
dataPriv.remove( elem, "handle events" );
|
5379 |
-
}
|
5380 |
-
},
|
5381 |
-
|
5382 |
-
dispatch: function( nativeEvent ) {
|
5383 |
-
|
5384 |
-
var i, j, ret, matched, handleObj, handlerQueue,
|
5385 |
-
args = new Array( arguments.length ),
|
5386 |
-
|
5387 |
-
// Make a writable jQuery.Event from the native event object
|
5388 |
-
event = jQuery.event.fix( nativeEvent ),
|
5389 |
-
|
5390 |
-
handlers = (
|
5391 |
-
dataPriv.get( this, "events" ) || Object.create( null )
|
5392 |
-
)[ event.type ] || [],
|
5393 |
-
special = jQuery.event.special[ event.type ] || {};
|
5394 |
-
|
5395 |
-
// Use the fix-ed jQuery.Event rather than the (read-only) native event
|
5396 |
-
args[ 0 ] = event;
|
5397 |
-
|
5398 |
-
for ( i = 1; i < arguments.length; i++ ) {
|
5399 |
-
args[ i ] = arguments[ i ];
|
5400 |
-
}
|
5401 |
-
|
5402 |
-
event.delegateTarget = this;
|
5403 |
-
|
5404 |
-
// Call the preDispatch hook for the mapped type, and let it bail if desired
|
5405 |
-
if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
|
5406 |
-
return;
|
5407 |
-
}
|
5408 |
-
|
5409 |
-
// Determine handlers
|
5410 |
-
handlerQueue = jQuery.event.handlers.call( this, event, handlers );
|
5411 |
-
|
5412 |
-
// Run delegates first; they may want to stop propagation beneath us
|
5413 |
-
i = 0;
|
5414 |
-
while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
|
5415 |
-
event.currentTarget = matched.elem;
|
5416 |
-
|
5417 |
-
j = 0;
|
5418 |
-
while ( ( handleObj = matched.handlers[ j++ ] ) &&
|
5419 |
-
!event.isImmediatePropagationStopped() ) {
|
5420 |
-
|
5421 |
-
// If the event is namespaced, then each handler is only invoked if it is
|
5422 |
-
// specially universal or its namespaces are a superset of the event's.
|
5423 |
-
if ( !event.rnamespace || handleObj.namespace === false ||
|
5424 |
-
event.rnamespace.test( handleObj.namespace ) ) {
|
5425 |
-
|
5426 |
-
event.handleObj = handleObj;
|
5427 |
-
event.data = handleObj.data;
|
5428 |
-
|
5429 |
-
ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
|
5430 |
-
handleObj.handler ).apply( matched.elem, args );
|
5431 |
-
|
5432 |
-
if ( ret !== undefined ) {
|
5433 |
-
if ( ( event.result = ret ) === false ) {
|
5434 |
-
event.preventDefault();
|
5435 |
-
event.stopPropagation();
|
5436 |
-
}
|
5437 |
-
}
|
5438 |
-
}
|
5439 |
-
}
|
5440 |
-
}
|
5441 |
-
|
5442 |
-
// Call the postDispatch hook for the mapped type
|
5443 |
-
if ( special.postDispatch ) {
|
5444 |
-
special.postDispatch.call( this, event );
|
5445 |
-
}
|
5446 |
-
|
5447 |
-
return event.result;
|
5448 |
-
},
|
5449 |
-
|
5450 |
-
handlers: function( event, handlers ) {
|
5451 |
-
var i, handleObj, sel, matchedHandlers, matchedSelectors,
|
5452 |
-
handlerQueue = [],
|
5453 |
-
delegateCount = handlers.delegateCount,
|
5454 |
-
cur = event.target;
|
5455 |
-
|
5456 |
-
// Find delegate handlers
|
5457 |
-
if ( delegateCount &&
|
5458 |
-
|
5459 |
-
// Support: IE <=9
|
5460 |
-
// Black-hole SVG <use> instance trees (trac-13180)
|
5461 |
-
cur.nodeType &&
|
5462 |
-
|
5463 |
-
// Support: Firefox <=42
|
5464 |
-
// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
|
5465 |
-
// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
|
5466 |
-
// Support: IE 11 only
|
5467 |
-
// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
|
5468 |
-
!( event.type === "click" && event.button >= 1 ) ) {
|
5469 |
-
|
5470 |
-
for ( ; cur !== this; cur = cur.parentNode || this ) {
|
5471 |
-
|
5472 |
-
// Don't check non-elements (#13208)
|
5473 |
-
// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
|
5474 |
-
if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
|
5475 |
-
matchedHandlers = [];
|
5476 |
-
matchedSelectors = {};
|
5477 |
-
for ( i = 0; i < delegateCount; i++ ) {
|
5478 |
-
handleObj = handlers[ i ];
|
5479 |
-
|
5480 |
-
// Don't conflict with Object.prototype properties (#13203)
|
5481 |
-
sel = handleObj.selector + " ";
|
5482 |
-
|
5483 |
-
if ( matchedSelectors[ sel ] === undefined ) {
|
5484 |
-
matchedSelectors[ sel ] = handleObj.needsContext ?
|
5485 |
-
jQuery( sel, this ).index( cur ) > -1 :
|
5486 |
-
jQuery.find( sel, this, null, [ cur ] ).length;
|
5487 |
-
}
|
5488 |
-
if ( matchedSelectors[ sel ] ) {
|
5489 |
-
matchedHandlers.push( handleObj );
|
5490 |
-
}
|
5491 |
-
}
|
5492 |
-
if ( matchedHandlers.length ) {
|
5493 |
-
handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
|
5494 |
-
}
|
5495 |
-
}
|
5496 |
-
}
|
5497 |
-
}
|
5498 |
-
|
5499 |
-
// Add the remaining (directly-bound) handlers
|
5500 |
-
cur = this;
|
5501 |
-
if ( delegateCount < handlers.length ) {
|
5502 |
-
handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
|
5503 |
-
}
|
5504 |
-
|
5505 |
-
return handlerQueue;
|
5506 |
-
},
|
5507 |
-
|
5508 |
-
addProp: function( name, hook ) {
|
5509 |
-
Object.defineProperty( jQuery.Event.prototype, name, {
|
5510 |
-
enumerable: true,
|
5511 |
-
configurable: true,
|
5512 |
-
|
5513 |
-
get: isFunction( hook ) ?
|
5514 |
-
function() {
|
5515 |
-
if ( this.originalEvent ) {
|
5516 |
-
return hook( this.originalEvent );
|
5517 |
-
}
|
5518 |
-
} :
|
5519 |
-
function() {
|
5520 |
-
if ( this.originalEvent ) {
|
5521 |
-
return this.originalEvent[ name ];
|
5522 |
-
}
|
5523 |
-
},
|
5524 |
-
|
5525 |
-
set: function( value ) {
|
5526 |
-
Object.defineProperty( this, name, {
|
5527 |
-
enumerable: true,
|
5528 |
-
configurable: true,
|
5529 |
-
writable: true,
|
5530 |
-
value: value
|
5531 |
-
} );
|
5532 |
-
}
|
5533 |
-
} );
|
5534 |
-
},
|
5535 |
-
|
5536 |
-
fix: function( originalEvent ) {
|
5537 |
-
return originalEvent[ jQuery.expando ] ?
|
5538 |
-
originalEvent :
|
5539 |
-
new jQuery.Event( originalEvent );
|
5540 |
-
},
|
5541 |
-
|
5542 |
-
special: {
|
5543 |
-
load: {
|
5544 |
-
|
5545 |
-
// Prevent triggered image.load events from bubbling to window.load
|
5546 |
-
noBubble: true
|
5547 |
-
},
|
5548 |
-
click: {
|
5549 |
-
|
5550 |
-
// Utilize native event to ensure correct state for checkable inputs
|
5551 |
-
setup: function( data ) {
|
5552 |
-
|
5553 |
-
// For mutual compressibility with _default, replace `this` access with a local var.
|
5554 |
-
// `|| data` is dead code meant only to preserve the variable through minification.
|
5555 |
-
var el = this || data;
|
5556 |
-
|
5557 |
-
// Claim the first handler
|
5558 |
-
if ( rcheckableType.test( el.type ) &&
|
5559 |
-
el.click && nodeName( el, "input" ) ) {
|
5560 |
-
|
5561 |
-
// dataPriv.set( el, "click", ... )
|
5562 |
-
leverageNative( el, "click", returnTrue );
|
5563 |
-
}
|
5564 |
-
|
5565 |
-
// Return false to allow normal processing in the caller
|
5566 |
-
return false;
|
5567 |
-
},
|
5568 |
-
trigger: function( data ) {
|
5569 |
-
|
5570 |
-
// For mutual compressibility with _default, replace `this` access with a local var.
|
5571 |
-
// `|| data` is dead code meant only to preserve the variable through minification.
|
5572 |
-
var el = this || data;
|
5573 |
-
|
5574 |
-
// Force setup before triggering a click
|
5575 |
-
if ( rcheckableType.test( el.type ) &&
|
5576 |
-
el.click && nodeName( el, "input" ) ) {
|
5577 |
-
|
5578 |
-
leverageNative( el, "click" );
|
5579 |
-
}
|
5580 |
-
|
5581 |
-
// Return non-false to allow normal event-path propagation
|
5582 |
-
return true;
|
5583 |
-
},
|
5584 |
-
|
5585 |
-
// For cross-browser consistency, suppress native .click() on links
|
5586 |
-
// Also prevent it if we're currently inside a leveraged native-event stack
|
5587 |
-
_default: function( event ) {
|
5588 |
-
var target = event.target;
|
5589 |
-
return rcheckableType.test( target.type ) &&
|
5590 |
-
target.click && nodeName( target, "input" ) &&
|
5591 |
-
dataPriv.get( target, "click" ) ||
|
5592 |
-
nodeName( target, "a" );
|
5593 |
-
}
|
5594 |
-
},
|
5595 |
-
|
5596 |
-
beforeunload: {
|
5597 |
-
postDispatch: function( event ) {
|
5598 |
-
|
5599 |
-
// Support: Firefox 20+
|
5600 |
-
// Firefox doesn't alert if the returnValue field is not set.
|
5601 |
-
if ( event.result !== undefined && event.originalEvent ) {
|
5602 |
-
event.originalEvent.returnValue = event.result;
|
5603 |
-
}
|
5604 |
-
}
|
5605 |
-
}
|
5606 |
-
}
|
5607 |
-
};
|
5608 |
-
|
5609 |
-
// Ensure the presence of an event listener that handles manually-triggered
|
5610 |
-
// synthetic events by interrupting progress until reinvoked in response to
|
5611 |
-
// *native* events that it fires directly, ensuring that state changes have
|
5612 |
-
// already occurred before other listeners are invoked.
|
5613 |
-
function leverageNative( el, type, expectSync ) {
|
5614 |
-
|
5615 |
-
// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
|
5616 |
-
if ( !expectSync ) {
|
5617 |
-
if ( dataPriv.get( el, type ) === undefined ) {
|
5618 |
-
jQuery.event.add( el, type, returnTrue );
|
5619 |
-
}
|
5620 |
-
return;
|
5621 |
-
}
|
5622 |
-
|
5623 |
-
// Register the controller as a special universal handler for all event namespaces
|
5624 |
-
dataPriv.set( el, type, false );
|
5625 |
-
jQuery.event.add( el, type, {
|
5626 |
-
namespace: false,
|
5627 |
-
handler: function( event ) {
|
5628 |
-
var notAsync, result,
|
5629 |
-
saved = dataPriv.get( this, type );
|
5630 |
-
|
5631 |
-
if ( ( event.isTrigger & 1 ) && this[ type ] ) {
|
5632 |
-
|
5633 |
-
// Interrupt processing of the outer synthetic .trigger()ed event
|
5634 |
-
// Saved data should be false in such cases, but might be a leftover capture object
|
5635 |
-
// from an async native handler (gh-4350)
|
5636 |
-
if ( !saved.length ) {
|
5637 |
-
|
5638 |
-
// Store arguments for use when handling the inner native event
|
5639 |
-
// There will always be at least one argument (an event object), so this array
|
5640 |
-
// will not be confused with a leftover capture object.
|
5641 |
-
saved = slice.call( arguments );
|
5642 |
-
dataPriv.set( this, type, saved );
|
5643 |
-
|
5644 |
-
// Trigger the native event and capture its result
|
5645 |
-
// Support: IE <=9 - 11+
|
5646 |
-
// focus() and blur() are asynchronous
|
5647 |
-
notAsync = expectSync( this, type );
|
5648 |
-
this[ type ]();
|
5649 |
-
result = dataPriv.get( this, type );
|
5650 |
-
if ( saved !== result || notAsync ) {
|
5651 |
-
dataPriv.set( this, type, false );
|
5652 |
-
} else {
|
5653 |
-
result = {};
|
5654 |
-
}
|
5655 |
-
if ( saved !== result ) {
|
5656 |
-
|
5657 |
-
// Cancel the outer synthetic event
|
5658 |
-
event.stopImmediatePropagation();
|
5659 |
-
event.preventDefault();
|
5660 |
-
|
5661 |
-
// Support: Chrome 86+
|
5662 |
-
// In Chrome, if an element having a focusout handler is blurred by
|
5663 |
-
// clicking outside of it, it invokes the handler synchronously. If
|
5664 |
-
// that handler calls `.remove()` on the element, the data is cleared,
|
5665 |
-
// leaving `result` undefined. We need to guard against this.
|
5666 |
-
return result && result.value;
|
5667 |
-
}
|
5668 |
-
|
5669 |
-
// If this is an inner synthetic event for an event with a bubbling surrogate
|
5670 |
-
// (focus or blur), assume that the surrogate already propagated from triggering the
|
5671 |
-
// native event and prevent that from happening again here.
|
5672 |
-
// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
|
5673 |
-
// bubbling surrogate propagates *after* the non-bubbling base), but that seems
|
5674 |
-
// less bad than duplication.
|
5675 |
-
} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
|
5676 |
-
event.stopPropagation();
|
5677 |
-
}
|
5678 |
-
|
5679 |
-
// If this is a native event triggered above, everything is now in order
|
5680 |
-
// Fire an inner synthetic event with the original arguments
|
5681 |
-
} else if ( saved.length ) {
|
5682 |
-
|
5683 |
-
// ...and capture the result
|
5684 |
-
dataPriv.set( this, type, {
|
5685 |
-
value: jQuery.event.trigger(
|
5686 |
-
|
5687 |
-
// Support: IE <=9 - 11+
|
5688 |
-
// Extend with the prototype to reset the above stopImmediatePropagation()
|
5689 |
-
jQuery.extend( saved[ 0 ], jQuery.Event.prototype ),
|
5690 |
-
saved.slice( 1 ),
|
5691 |
-
this
|
5692 |
-
)
|
5693 |
-
} );
|
5694 |
-
|
5695 |
-
// Abort handling of the native event
|
5696 |
-
event.stopImmediatePropagation();
|
5697 |
-
}
|
5698 |
-
}
|
5699 |
-
} );
|
5700 |
-
}
|
5701 |
-
|
5702 |
-
jQuery.removeEvent = function( elem, type, handle ) {
|
5703 |
-
|
5704 |
-
// This "if" is needed for plain objects
|
5705 |
-
if ( elem.removeEventListener ) {
|
5706 |
-
elem.removeEventListener( type, handle );
|
5707 |
-
}
|
5708 |
-
};
|
5709 |
-
|
5710 |
-
jQuery.Event = function( src, props ) {
|
5711 |
-
|
5712 |
-
// Allow instantiation without the 'new' keyword
|
5713 |
-
if ( !( this instanceof jQuery.Event ) ) {
|
5714 |
-
return new jQuery.Event( src, props );
|
5715 |
-
}
|
5716 |
-
|
5717 |
-
// Event object
|
5718 |
-
if ( src && src.type ) {
|
5719 |
-
this.originalEvent = src;
|
5720 |
-
this.type = src.type;
|
5721 |
-
|
5722 |
-
// Events bubbling up the document may have been marked as prevented
|
5723 |
-
// by a handler lower down the tree; reflect the correct value.
|
5724 |
-
this.isDefaultPrevented = src.defaultPrevented ||
|
5725 |
-
src.defaultPrevented === undefined &&
|
5726 |
-
|
5727 |
-
// Support: Android <=2.3 only
|
5728 |
-
src.returnValue === false ?
|
5729 |
-
returnTrue :
|
5730 |
-
returnFalse;
|
5731 |
-
|
5732 |
-
// Create target properties
|
5733 |
-
// Support: Safari <=6 - 7 only
|
5734 |
-
// Target should not be a text node (#504, #13143)
|
5735 |
-
this.target = ( src.target && src.target.nodeType === 3 ) ?
|
5736 |
-
src.target.parentNode :
|
5737 |
-
src.target;
|
5738 |
-
|
5739 |
-
this.currentTarget = src.currentTarget;
|
5740 |
-
this.relatedTarget = src.relatedTarget;
|
5741 |
-
|
5742 |
-
// Event type
|
5743 |
-
} else {
|
5744 |
-
this.type = src;
|
5745 |
-
}
|
5746 |
-
|
5747 |
-
// Put explicitly provided properties onto the event object
|
5748 |
-
if ( props ) {
|
5749 |
-
jQuery.extend( this, props );
|
5750 |
-
}
|
5751 |
-
|
5752 |
-
// Create a timestamp if incoming event doesn't have one
|
5753 |
-
this.timeStamp = src && src.timeStamp || Date.now();
|
5754 |
-
|
5755 |
-
// Mark it as fixed
|
5756 |
-
this[ jQuery.expando ] = true;
|
5757 |
-
};
|
5758 |
-
|
5759 |
-
// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
|
5760 |
-
// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
|
5761 |
-
jQuery.Event.prototype = {
|
5762 |
-
constructor: jQuery.Event,
|
5763 |
-
isDefaultPrevented: returnFalse,
|
5764 |
-
isPropagationStopped: returnFalse,
|
5765 |
-
isImmediatePropagationStopped: returnFalse,
|
5766 |
-
isSimulated: false,
|
5767 |
-
|
5768 |
-
preventDefault: function() {
|
5769 |
-
var e = this.originalEvent;
|
5770 |
-
|
5771 |
-
this.isDefaultPrevented = returnTrue;
|
5772 |
-
|
5773 |
-
if ( e && !this.isSimulated ) {
|
5774 |
-
e.preventDefault();
|
5775 |
-
}
|
5776 |
-
},
|
5777 |
-
stopPropagation: function() {
|
5778 |
-
var e = this.originalEvent;
|
5779 |
-
|
5780 |
-
this.isPropagationStopped = returnTrue;
|
5781 |
-
|
5782 |
-
if ( e && !this.isSimulated ) {
|
5783 |
-
e.stopPropagation();
|
5784 |
-
}
|
5785 |
-
},
|
5786 |
-
stopImmediatePropagation: function() {
|
5787 |
-
var e = this.originalEvent;
|
5788 |
-
|
5789 |
-
this.isImmediatePropagationStopped = returnTrue;
|
5790 |
-
|
5791 |
-
if ( e && !this.isSimulated ) {
|
5792 |
-
e.stopImmediatePropagation();
|
5793 |
-
}
|
5794 |
-
|
5795 |
-
this.stopPropagation();
|
5796 |
-
}
|
5797 |
-
};
|
5798 |
-
|
5799 |
-
// Includes all common event props including KeyEvent and MouseEvent specific props
|
5800 |
-
jQuery.each( {
|
5801 |
-
altKey: true,
|
5802 |
-
bubbles: true,
|
5803 |
-
cancelable: true,
|
5804 |
-
changedTouches: true,
|
5805 |
-
ctrlKey: true,
|
5806 |
-
detail: true,
|
5807 |
-
eventPhase: true,
|
5808 |
-
metaKey: true,
|
5809 |
-
pageX: true,
|
5810 |
-
pageY: true,
|
5811 |
-
shiftKey: true,
|
5812 |
-
view: true,
|
5813 |
-
"char": true,
|
5814 |
-
code: true,
|
5815 |
-
charCode: true,
|
5816 |
-
key: true,
|
5817 |
-
keyCode: true,
|
5818 |
-
button: true,
|
5819 |
-
buttons: true,
|
5820 |
-
clientX: true,
|
5821 |
-
clientY: true,
|
5822 |
-
offsetX: true,
|
5823 |
-
offsetY: true,
|
5824 |
-
pointerId: true,
|
5825 |
-
pointerType: true,
|
5826 |
-
screenX: true,
|
5827 |
-
screenY: true,
|
5828 |
-
targetTouches: true,
|
5829 |
-
toElement: true,
|
5830 |
-
touches: true,
|
5831 |
-
which: true
|
5832 |
-
}, jQuery.event.addProp );
|
5833 |
-
|
5834 |
-
jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
|
5835 |
-
jQuery.event.special[ type ] = {
|
5836 |
-
|
5837 |
-
// Utilize native event if possible so blur/focus sequence is correct
|
5838 |
-
setup: function() {
|
5839 |
-
|
5840 |
-
// Claim the first handler
|
5841 |
-
// dataPriv.set( this, "focus", ... )
|
5842 |
-
// dataPriv.set( this, "blur", ... )
|
5843 |
-
leverageNative( this, type, expectSync );
|
5844 |
-
|
5845 |
-
// Return false to allow normal processing in the caller
|
5846 |
-
return false;
|
5847 |
-
},
|
5848 |
-
trigger: function() {
|
5849 |
-
|
5850 |
-
// Force setup before trigger
|
5851 |
-
leverageNative( this, type );
|
5852 |
-
|
5853 |
-
// Return non-false to allow normal event-path propagation
|
5854 |
-
return true;
|
5855 |
-
},
|
5856 |
-
|
5857 |
-
// Suppress native focus or blur as it's already being fired
|
5858 |
-
// in leverageNative.
|
5859 |
-
_default: function() {
|
5860 |
-
return true;
|
5861 |
-
},
|
5862 |
-
|
5863 |
-
delegateType: delegateType
|
5864 |
-
};
|
5865 |
-
} );
|
5866 |
-
|
5867 |
-
// Create mouseenter/leave events using mouseover/out and event-time checks
|
5868 |
-
// so that event delegation works in jQuery.
|
5869 |
-
// Do the same for pointerenter/pointerleave and pointerover/pointerout
|
5870 |
-
//
|
5871 |
-
// Support: Safari 7 only
|
5872 |
-
// Safari sends mouseenter too often; see:
|
5873 |
-
// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
|
5874 |
-
// for the description of the bug (it existed in older Chrome versions as well).
|
5875 |
-
jQuery.each( {
|
5876 |
-
mouseenter: "mouseover",
|
5877 |
-
mouseleave: "mouseout",
|
5878 |
-
pointerenter: "pointerover",
|
5879 |
-
pointerleave: "pointerout"
|
5880 |
-
}, function( orig, fix ) {
|
5881 |
-
jQuery.event.special[ orig ] = {
|
5882 |
-
delegateType: fix,
|
5883 |
-
bindType: fix,
|
5884 |
-
|
5885 |
-
handle: function( event ) {
|
5886 |
-
var ret,
|
5887 |
-
target = this,
|
5888 |
-
related = event.relatedTarget,
|
5889 |
-
handleObj = event.handleObj;
|
5890 |
-
|
5891 |
-
// For mouseenter/leave call the handler if related is outside the target.
|
5892 |
-
// NB: No relatedTarget if the mouse left/entered the browser window
|
5893 |
-
if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
|
5894 |
-
event.type = handleObj.origType;
|
5895 |
-
ret = handleObj.handler.apply( this, arguments );
|
5896 |
-
event.type = fix;
|
5897 |
-
}
|
5898 |
-
return ret;
|
5899 |
-
}
|
5900 |
-
};
|
5901 |
-
} );
|
5902 |
-
|
5903 |
-
jQuery.fn.extend( {
|
5904 |
-
|
5905 |
-
on: function( types, selector, data, fn ) {
|
5906 |
-
return on( this, types, selector, data, fn );
|
5907 |
-
},
|
5908 |
-
one: function( types, selector, data, fn ) {
|
5909 |
-
return on( this, types, selector, data, fn, 1 );
|
5910 |
-
},
|
5911 |
-
off: function( types, selector, fn ) {
|
5912 |
-
var handleObj, type;
|
5913 |
-
if ( types && types.preventDefault && types.handleObj ) {
|
5914 |
-
|
5915 |
-
// ( event ) dispatched jQuery.Event
|
5916 |
-
handleObj = types.handleObj;
|
5917 |
-
jQuery( types.delegateTarget ).off(
|
5918 |
-
handleObj.namespace ?
|
5919 |
-
handleObj.origType + "." + handleObj.namespace :
|
5920 |
-
handleObj.origType,
|
5921 |
-
handleObj.selector,
|
5922 |
-
handleObj.handler
|
5923 |
-
);
|
5924 |
-
return this;
|
5925 |
-
}
|
5926 |
-
if ( typeof types === "object" ) {
|
5927 |
-
|
5928 |
-
// ( types-object [, selector] )
|
5929 |
-
for ( type in types ) {
|
5930 |
-
this.off( type, selector, types[ type ] );
|
5931 |
-
}
|
5932 |
-
return this;
|
5933 |
-
}
|
5934 |
-
if ( selector === false || typeof selector === "function" ) {
|
5935 |
-
|
5936 |
-
// ( types [, fn] )
|
5937 |
-
fn = selector;
|
5938 |
-
selector = undefined;
|
5939 |
-
}
|
5940 |
-
if ( fn === false ) {
|
5941 |
-
fn = returnFalse;
|
5942 |
-
}
|
5943 |
-
return this.each( function() {
|
5944 |
-
jQuery.event.remove( this, types, fn, selector );
|
5945 |
-
} );
|
5946 |
-
}
|
5947 |
-
} );
|
5948 |
-
|
5949 |
-
|
5950 |
-
var
|
5951 |
-
|
5952 |
-
// Support: IE <=10 - 11, Edge 12 - 13 only
|
5953 |
-
// In IE/Edge using regex groups here causes severe slowdowns.
|
5954 |
-
// See https://connect.microsoft.com/IE/feedback/details/1736512/
|
5955 |
-
rnoInnerhtml = /<script|<style|<link/i,
|
5956 |
-
|
5957 |
-
// checked="checked" or checked
|
5958 |
-
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
|
5959 |
-
rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
|
5960 |
-
|
5961 |
-
// Prefer a tbody over its parent table for containing new rows
|
5962 |
-
function manipulationTarget( elem, content ) {
|
5963 |
-
if ( nodeName( elem, "table" ) &&
|
5964 |
-
nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
|
5965 |
-
|
5966 |
-
return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
|
5967 |
-
}
|
5968 |
-
|
5969 |
-
return elem;
|
5970 |
-
}
|
5971 |
-
|
5972 |
-
// Replace/restore the type attribute of script elements for safe DOM manipulation
|
5973 |
-
function disableScript( elem ) {
|
5974 |
-
elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
|
5975 |
-
return elem;
|
5976 |
-
}
|
5977 |
-
function restoreScript( elem ) {
|
5978 |
-
if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
|
5979 |
-
elem.type = elem.type.slice( 5 );
|
5980 |
-
} else {
|
5981 |
-
elem.removeAttribute( "type" );
|
5982 |
-
}
|
5983 |
-
|
5984 |
-
return elem;
|
5985 |
-
}
|
5986 |
-
|
5987 |
-
function cloneCopyEvent( src, dest ) {
|
5988 |
-
var i, l, type, pdataOld, udataOld, udataCur, events;
|
5989 |
-
|
5990 |
-
if ( dest.nodeType !== 1 ) {
|
5991 |
-
return;
|
5992 |
-
}
|
5993 |
-
|
5994 |
-
// 1. Copy private data: events, handlers, etc.
|
5995 |
-
if ( dataPriv.hasData( src ) ) {
|
5996 |
-
pdataOld = dataPriv.get( src );
|
5997 |
-
events = pdataOld.events;
|
5998 |
-
|
5999 |
-
if ( events ) {
|
6000 |
-
dataPriv.remove( dest, "handle events" );
|
6001 |
-
|
6002 |
-
for ( type in events ) {
|
6003 |
-
for ( i = 0, l = events[ type ].length; i < l; i++ ) {
|
6004 |
-
jQuery.event.add( dest, type, events[ type ][ i ] );
|
6005 |
-
}
|
6006 |
-
}
|
6007 |
-
}
|
6008 |
-
}
|
6009 |
-
|
6010 |
-
// 2. Copy user data
|
6011 |
-
if ( dataUser.hasData( src ) ) {
|
6012 |
-
udataOld = dataUser.access( src );
|
6013 |
-
udataCur = jQuery.extend( {}, udataOld );
|
6014 |
-
|
6015 |
-
dataUser.set( dest, udataCur );
|
6016 |
-
}
|
6017 |
-
}
|
6018 |
-
|
6019 |
-
// Fix IE bugs, see support tests
|
6020 |
-
function fixInput( src, dest ) {
|
6021 |
-
var nodeName = dest.nodeName.toLowerCase();
|
6022 |
-
|
6023 |
-
// Fails to persist the checked state of a cloned checkbox or radio button.
|
6024 |
-
if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
|
6025 |
-
dest.checked = src.checked;
|
6026 |
-
|
6027 |
-
// Fails to return the selected option to the default selected state when cloning options
|
6028 |
-
} else if ( nodeName === "input" || nodeName === "textarea" ) {
|
6029 |
-
dest.defaultValue = src.defaultValue;
|
6030 |
-
}
|
6031 |
-
}
|
6032 |
-
|
6033 |
-
function domManip( collection, args, callback, ignored ) {
|
6034 |
-
|
6035 |
-
// Flatten any nested arrays
|
6036 |
-
args = flat( args );
|
6037 |
-
|
6038 |
-
var fragment, first, scripts, hasScripts, node, doc,
|
6039 |
-
i = 0,
|
6040 |
-
l = collection.length,
|
6041 |
-
iNoClone = l - 1,
|
6042 |
-
value = args[ 0 ],
|
6043 |
-
valueIsFunction = isFunction( value );
|
6044 |
-
|
6045 |
-
// We can't cloneNode fragments that contain checked, in WebKit
|
6046 |
-
if ( valueIsFunction ||
|
6047 |
-
( l > 1 && typeof value === "string" &&
|
6048 |
-
!support.checkClone && rchecked.test( value ) ) ) {
|
6049 |
-
return collection.each( function( index ) {
|
6050 |
-
var self = collection.eq( index );
|
6051 |
-
if ( valueIsFunction ) {
|
6052 |
-
args[ 0 ] = value.call( this, index, self.html() );
|
6053 |
-
}
|
6054 |
-
domManip( self, args, callback, ignored );
|
6055 |
-
} );
|
6056 |
-
}
|
6057 |
-
|
6058 |
-
if ( l ) {
|
6059 |
-
fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
|
6060 |
-
first = fragment.firstChild;
|
6061 |
-
|
6062 |
-
if ( fragment.childNodes.length === 1 ) {
|
6063 |
-
fragment = first;
|
6064 |
-
}
|
6065 |
-
|
6066 |
-
// Require either new content or an interest in ignored elements to invoke the callback
|
6067 |
-
if ( first || ignored ) {
|
6068 |
-
scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
|
6069 |
-
hasScripts = scripts.length;
|
6070 |
-
|
6071 |
-
// Use the original fragment for the last item
|
6072 |
-
// instead of the first because it can end up
|
6073 |
-
// being emptied incorrectly in certain situations (#8070).
|
6074 |
-
for ( ; i < l; i++ ) {
|
6075 |
-
node = fragment;
|
6076 |
-
|
6077 |
-
if ( i !== iNoClone ) {
|
6078 |
-
node = jQuery.clone( node, true, true );
|
6079 |
-
|
6080 |
-
// Keep references to cloned scripts for later restoration
|
6081 |
-
if ( hasScripts ) {
|
6082 |
-
|
6083 |
-
// Support: Android <=4.0 only, PhantomJS 1 only
|
6084 |
-
// push.apply(_, arraylike) throws on ancient WebKit
|
6085 |
-
jQuery.merge( scripts, getAll( node, "script" ) );
|
6086 |
-
}
|
6087 |
-
}
|
6088 |
-
|
6089 |
-
callback.call( collection[ i ], node, i );
|
6090 |
-
}
|
6091 |
-
|
6092 |
-
if ( hasScripts ) {
|
6093 |
-
doc = scripts[ scripts.length - 1 ].ownerDocument;
|
6094 |
-
|
6095 |
-
// Reenable scripts
|
6096 |
-
jQuery.map( scripts, restoreScript );
|
6097 |
-
|
6098 |
-
// Evaluate executable scripts on first document insertion
|
6099 |
-
for ( i = 0; i < hasScripts; i++ ) {
|
6100 |
-
node = scripts[ i ];
|
6101 |
-
if ( rscriptType.test( node.type || "" ) &&
|
6102 |
-
!dataPriv.access( node, "globalEval" ) &&
|
6103 |
-
jQuery.contains( doc, node ) ) {
|
6104 |
-
|
6105 |
-
if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) {
|
6106 |
-
|
6107 |
-
// Optional AJAX dependency, but won't run scripts if not present
|
6108 |
-
if ( jQuery._evalUrl && !node.noModule ) {
|
6109 |
-
jQuery._evalUrl( node.src, {
|
6110 |
-
nonce: node.nonce || node.getAttribute( "nonce" )
|
6111 |
-
}, doc );
|
6112 |
-
}
|
6113 |
-
} else {
|
6114 |
-
DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
|
6115 |
-
}
|
6116 |
-
}
|
6117 |
-
}
|
6118 |
-
}
|
6119 |
-
}
|
6120 |
-
}
|
6121 |
-
|
6122 |
-
return collection;
|
6123 |
-
}
|
6124 |
-
|
6125 |
-
function remove( elem, selector, keepData ) {
|
6126 |
-
var node,
|
6127 |
-
nodes = selector ? jQuery.filter( selector, elem ) : elem,
|
6128 |
-
i = 0;
|
6129 |
-
|
6130 |
-
for ( ; ( node = nodes[ i ] ) != null; i++ ) {
|
6131 |
-
if ( !keepData && node.nodeType === 1 ) {
|
6132 |
-
jQuery.cleanData( getAll( node ) );
|
6133 |
-
}
|
6134 |
-
|
6135 |
-
if ( node.parentNode ) {
|
6136 |
-
if ( keepData && isAttached( node ) ) {
|
6137 |
-
setGlobalEval( getAll( node, "script" ) );
|
6138 |
-
}
|
6139 |
-
node.parentNode.removeChild( node );
|
6140 |
-
}
|
6141 |
-
}
|
6142 |
-
|
6143 |
-
return elem;
|
6144 |
-
}
|
6145 |
-
|
6146 |
-
jQuery.extend( {
|
6147 |
-
htmlPrefilter: function( html ) {
|
6148 |
-
return html;
|
6149 |
-
},
|
6150 |
-
|
6151 |
-
clone: function( elem, dataAndEvents, deepDataAndEvents ) {
|
6152 |
-
var i, l, srcElements, destElements,
|
6153 |
-
clone = elem.cloneNode( true ),
|
6154 |
-
inPage = isAttached( elem );
|
6155 |
-
|
6156 |
-
// Fix IE cloning issues
|
6157 |
-
if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
|
6158 |
-
!jQuery.isXMLDoc( elem ) ) {
|
6159 |
-
|
6160 |
-
// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
|
6161 |
-
destElements = getAll( clone );
|
6162 |
-
srcElements = getAll( elem );
|
6163 |
-
|
6164 |
-
for ( i = 0, l = srcElements.length; i < l; i++ ) {
|
6165 |
-
fixInput( srcElements[ i ], destElements[ i ] );
|
6166 |
-
}
|
6167 |
-
}
|
6168 |
-
|
6169 |
-
// Copy the events from the original to the clone
|
6170 |
-
if ( dataAndEvents ) {
|
6171 |
-
if ( deepDataAndEvents ) {
|
6172 |
-
srcElements = srcElements || getAll( elem );
|
6173 |
-
destElements = destElements || getAll( clone );
|
6174 |
-
|
6175 |
-
for ( i = 0, l = srcElements.length; i < l; i++ ) {
|
6176 |
-
cloneCopyEvent( srcElements[ i ], destElements[ i ] );
|
6177 |
-
}
|
6178 |
-
} else {
|
6179 |
-
cloneCopyEvent( elem, clone );
|
6180 |
-
}
|
6181 |
-
}
|
6182 |
-
|
6183 |
-
// Preserve script evaluation history
|
6184 |
-
destElements = getAll( clone, "script" );
|
6185 |
-
if ( destElements.length > 0 ) {
|
6186 |
-
setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
|
6187 |
-
}
|
6188 |
-
|
6189 |
-
// Return the cloned set
|
6190 |
-
return clone;
|
6191 |
-
},
|
6192 |
-
|
6193 |
-
cleanData: function( elems ) {
|
6194 |
-
var data, elem, type,
|
6195 |
-
special = jQuery.event.special,
|
6196 |
-
i = 0;
|
6197 |
-
|
6198 |
-
for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
|
6199 |
-
if ( acceptData( elem ) ) {
|
6200 |
-
if ( ( data = elem[ dataPriv.expando ] ) ) {
|
6201 |
-
if ( data.events ) {
|
6202 |
-
for ( type in data.events ) {
|
6203 |
-
if ( special[ type ] ) {
|
6204 |
-
jQuery.event.remove( elem, type );
|
6205 |
-
|
6206 |
-
// This is a shortcut to avoid jQuery.event.remove's overhead
|
6207 |
-
} else {
|
6208 |
-
jQuery.removeEvent( elem, type, data.handle );
|
6209 |
-
}
|
6210 |
-
}
|
6211 |
-
}
|
6212 |
-
|
6213 |
-
// Support: Chrome <=35 - 45+
|
6214 |
-
// Assign undefined instead of using delete, see Data#remove
|
6215 |
-
elem[ dataPriv.expando ] = undefined;
|
6216 |
-
}
|
6217 |
-
if ( elem[ dataUser.expando ] ) {
|
6218 |
-
|
6219 |
-
// Support: Chrome <=35 - 45+
|
6220 |
-
// Assign undefined instead of using delete, see Data#remove
|
6221 |
-
elem[ dataUser.expando ] = undefined;
|
6222 |
-
}
|
6223 |
-
}
|
6224 |
-
}
|
6225 |
-
}
|
6226 |
-
} );
|
6227 |
-
|
6228 |
-
jQuery.fn.extend( {
|
6229 |
-
detach: function( selector ) {
|
6230 |
-
return remove( this, selector, true );
|
6231 |
-
},
|
6232 |
-
|
6233 |
-
remove: function( selector ) {
|
6234 |
-
return remove( this, selector );
|
6235 |
-
},
|
6236 |
-
|
6237 |
-
text: function( value ) {
|
6238 |
-
return access( this, function( value ) {
|
6239 |
-
return value === undefined ?
|
6240 |
-
jQuery.text( this ) :
|
6241 |
-
this.empty().each( function() {
|
6242 |
-
if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
|
6243 |
-
this.textContent = value;
|
6244 |
-
}
|
6245 |
-
} );
|
6246 |
-
}, null, value, arguments.length );
|
6247 |
-
},
|
6248 |
-
|
6249 |
-
append: function() {
|
6250 |
-
return domManip( this, arguments, function( elem ) {
|
6251 |
-
if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
|
6252 |
-
var target = manipulationTarget( this, elem );
|
6253 |
-
target.appendChild( elem );
|
6254 |
-
}
|
6255 |
-
} );
|
6256 |
-
},
|
6257 |
-
|
6258 |
-
prepend: function() {
|
6259 |
-
return domManip( this, arguments, function( elem ) {
|
6260 |
-
if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
|
6261 |
-
var target = manipulationTarget( this, elem );
|
6262 |
-
target.insertBefore( elem, target.firstChild );
|
6263 |
-
}
|
6264 |
-
} );
|
6265 |
-
},
|
6266 |
-
|
6267 |
-
before: function() {
|
6268 |
-
return domManip( this, arguments, function( elem ) {
|
6269 |
-
if ( this.parentNode ) {
|
6270 |
-
this.parentNode.insertBefore( elem, this );
|
6271 |
-
}
|
6272 |
-
} );
|
6273 |
-
},
|
6274 |
-
|
6275 |
-
after: function() {
|
6276 |
-
return domManip( this, arguments, function( elem ) {
|
6277 |
-
if ( this.parentNode ) {
|
6278 |
-
this.parentNode.insertBefore( elem, this.nextSibling );
|
6279 |
-
}
|
6280 |
-
} );
|
6281 |
-
},
|
6282 |
-
|
6283 |
-
empty: function() {
|
6284 |
-
var elem,
|
6285 |
-
i = 0;
|
6286 |
-
|
6287 |
-
for ( ; ( elem = this[ i ] ) != null; i++ ) {
|
6288 |
-
if ( elem.nodeType === 1 ) {
|
6289 |
-
|
6290 |
-
// Prevent memory leaks
|
6291 |
-
jQuery.cleanData( getAll( elem, false ) );
|
6292 |
-
|
6293 |
-
// Remove any remaining nodes
|
6294 |
-
elem.textContent = "";
|
6295 |
-
}
|
6296 |
-
}
|
6297 |
-
|
6298 |
-
return this;
|
6299 |
-
},
|
6300 |
-
|
6301 |
-
clone: function( dataAndEvents, deepDataAndEvents ) {
|
6302 |
-
dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
|
6303 |
-
deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
|
6304 |
-
|
6305 |
-
return this.map( function() {
|
6306 |
-
return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
|
6307 |
-
} );
|
6308 |
-
},
|
6309 |
-
|
6310 |
-
html: function( value ) {
|
6311 |
-
return access( this, function( value ) {
|
6312 |
-
var elem = this[ 0 ] || {},
|
6313 |
-
i = 0,
|
6314 |
-
l = this.length;
|
6315 |
-
|
6316 |
-
if ( value === undefined && elem.nodeType === 1 ) {
|
6317 |
-
return elem.innerHTML;
|
6318 |
-
}
|
6319 |
-
|
6320 |
-
// See if we can take a shortcut and just use innerHTML
|
6321 |
-
if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
|
6322 |
-
!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
|
6323 |
-
|
6324 |
-
value = jQuery.htmlPrefilter( value );
|
6325 |
-
|
6326 |
-
try {
|
6327 |
-
for ( ; i < l; i++ ) {
|
6328 |
-
elem = this[ i ] || {};
|
6329 |
-
|
6330 |
-
// Remove element nodes and prevent memory leaks
|
6331 |
-
if ( elem.nodeType === 1 ) {
|
6332 |
-
jQuery.cleanData( getAll( elem, false ) );
|
6333 |
-
elem.innerHTML = value;
|
6334 |
-
}
|
6335 |
-
}
|
6336 |
-
|
6337 |
-
elem = 0;
|
6338 |
-
|
6339 |
-
// If using innerHTML throws an exception, use the fallback method
|
6340 |
-
} catch ( e ) {}
|
6341 |
-
}
|
6342 |
-
|
6343 |
-
if ( elem ) {
|
6344 |
-
this.empty().append( value );
|
6345 |
-
}
|
6346 |
-
}, null, value, arguments.length );
|
6347 |
-
},
|
6348 |
-
|
6349 |
-
replaceWith: function() {
|
6350 |
-
var ignored = [];
|
6351 |
-
|
6352 |
-
// Make the changes, replacing each non-ignored context element with the new content
|
6353 |
-
return domManip( this, arguments, function( elem ) {
|
6354 |
-
var parent = this.parentNode;
|
6355 |
-
|
6356 |
-
if ( jQuery.inArray( this, ignored ) < 0 ) {
|
6357 |
-
jQuery.cleanData( getAll( this ) );
|
6358 |
-
if ( parent ) {
|
6359 |
-
parent.replaceChild( elem, this );
|
6360 |
-
}
|
6361 |
-
}
|
6362 |
-
|
6363 |
-
// Force callback invocation
|
6364 |
-
}, ignored );
|
6365 |
-
}
|
6366 |
-
} );
|
6367 |
-
|
6368 |
-
jQuery.each( {
|
6369 |
-
appendTo: "append",
|
6370 |
-
prependTo: "prepend",
|
6371 |
-
insertBefore: "before",
|
6372 |
-
insertAfter: "after",
|
6373 |
-
replaceAll: "replaceWith"
|
6374 |
-
}, function( name, original ) {
|
6375 |
-
jQuery.fn[ name ] = function( selector ) {
|
6376 |
-
var elems,
|
6377 |
-
ret = [],
|
6378 |
-
insert = jQuery( selector ),
|
6379 |
-
last = insert.length - 1,
|
6380 |
-
i = 0;
|
6381 |
-
|
6382 |
-
for ( ; i <= last; i++ ) {
|
6383 |
-
elems = i === last ? this : this.clone( true );
|
6384 |
-
jQuery( insert[ i ] )[ original ]( elems );
|
6385 |
-
|
6386 |
-
// Support: Android <=4.0 only, PhantomJS 1 only
|
6387 |
-
// .get() because push.apply(_, arraylike) throws on ancient WebKit
|
6388 |
-
push.apply( ret, elems.get() );
|
6389 |
-
}
|
6390 |
-
|
6391 |
-
return this.pushStack( ret );
|
6392 |
-
};
|
6393 |
-
} );
|
6394 |
-
var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
|
6395 |
-
|
6396 |
-
var getStyles = function( elem ) {
|
6397 |
-
|
6398 |
-
// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
|
6399 |
-
// IE throws on elements created in popups
|
6400 |
-
// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
|
6401 |
-
var view = elem.ownerDocument.defaultView;
|
6402 |
-
|
6403 |
-
if ( !view || !view.opener ) {
|
6404 |
-
view = window;
|
6405 |
-
}
|
6406 |
-
|
6407 |
-
return view.getComputedStyle( elem );
|
6408 |
-
};
|
6409 |
-
|
6410 |
-
var swap = function( elem, options, callback ) {
|
6411 |
-
var ret, name,
|
6412 |
-
old = {};
|
6413 |
-
|
6414 |
-
// Remember the old values, and insert the new ones
|
6415 |
-
for ( name in options ) {
|
6416 |
-
old[ name ] = elem.style[ name ];
|
6417 |
-
elem.style[ name ] = options[ name ];
|
6418 |
-
}
|
6419 |
-
|
6420 |
-
ret = callback.call( elem );
|
6421 |
-
|
6422 |
-
// Revert the old values
|
6423 |
-
for ( name in options ) {
|
6424 |
-
elem.style[ name ] = old[ name ];
|
6425 |
-
}
|
6426 |
-
|
6427 |
-
return ret;
|
6428 |
-
};
|
6429 |
-
|
6430 |
-
|
6431 |
-
var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
|
6432 |
-
|
6433 |
-
|
6434 |
-
|
6435 |
-
( function() {
|
6436 |
-
|
6437 |
-
// Executing both pixelPosition & boxSizingReliable tests require only one layout
|
6438 |
-
// so they're executed at the same time to save the second computation.
|
6439 |
-
function computeStyleTests() {
|
6440 |
-
|
6441 |
-
// This is a singleton, we need to execute it only once
|
6442 |
-
if ( !div ) {
|
6443 |
-
return;
|
6444 |
-
}
|
6445 |
-
|
6446 |
-
container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
|
6447 |
-
"margin-top:1px;padding:0;border:0";
|
6448 |
-
div.style.cssText =
|
6449 |
-
"position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
|
6450 |
-
"margin:auto;border:1px;padding:1px;" +
|
6451 |
-
"width:60%;top:1%";
|
6452 |
-
documentElement.appendChild( container ).appendChild( div );
|
6453 |
-
|
6454 |
-
var divStyle = window.getComputedStyle( div );
|
6455 |
-
pixelPositionVal = divStyle.top !== "1%";
|
6456 |
-
|
6457 |
-
// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
|
6458 |
-
reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
|
6459 |
-
|
6460 |
-
// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
|
6461 |
-
// Some styles come back with percentage values, even though they shouldn't
|
6462 |
-
div.style.right = "60%";
|
6463 |
-
pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
|
6464 |
-
|
6465 |
-
// Support: IE 9 - 11 only
|
6466 |
-
// Detect misreporting of content dimensions for box-sizing:border-box elements
|
6467 |
-
boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
|
6468 |
-
|
6469 |
-
// Support: IE 9 only
|
6470 |
-
// Detect overflow:scroll screwiness (gh-3699)
|
6471 |
-
// Support: Chrome <=64
|
6472 |
-
// Don't get tricked when zoom affects offsetWidth (gh-4029)
|
6473 |
-
div.style.position = "absolute";
|
6474 |
-
scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
|
6475 |
-
|
6476 |
-
documentElement.removeChild( container );
|
6477 |
-
|
6478 |
-
// Nullify the div so it wouldn't be stored in the memory and
|
6479 |
-
// it will also be a sign that checks already performed
|
6480 |
-
div = null;
|
6481 |
-
}
|
6482 |
-
|
6483 |
-
function roundPixelMeasures( measure ) {
|
6484 |
-
return Math.round( parseFloat( measure ) );
|
6485 |
-
}
|
6486 |
-
|
6487 |
-
var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
|
6488 |
-
reliableTrDimensionsVal, reliableMarginLeftVal,
|
6489 |
-
container = document.createElement( "div" ),
|
6490 |
-
div = document.createElement( "div" );
|
6491 |
-
|
6492 |
-
// Finish early in limited (non-browser) environments
|
6493 |
-
if ( !div.style ) {
|
6494 |
-
return;
|
6495 |
-
}
|
6496 |
-
|
6497 |
-
// Support: IE <=9 - 11 only
|
6498 |
-
// Style of cloned element affects source element cloned (#8908)
|
6499 |
-
div.style.backgroundClip = "content-box";
|
6500 |
-
div.cloneNode( true ).style.backgroundClip = "";
|
6501 |
-
support.clearCloneStyle = div.style.backgroundClip === "content-box";
|
6502 |
-
|
6503 |
-
jQuery.extend( support, {
|
6504 |
-
boxSizingReliable: function() {
|
6505 |
-
computeStyleTests();
|
6506 |
-
return boxSizingReliableVal;
|
6507 |
-
},
|
6508 |
-
pixelBoxStyles: function() {
|
6509 |
-
computeStyleTests();
|
6510 |
-
return pixelBoxStylesVal;
|
6511 |
-
},
|
6512 |
-
pixelPosition: function() {
|
6513 |
-
computeStyleTests();
|
6514 |
-
return pixelPositionVal;
|
6515 |
-
},
|
6516 |
-
reliableMarginLeft: function() {
|
6517 |
-
computeStyleTests();
|
6518 |
-
return reliableMarginLeftVal;
|
6519 |
-
},
|
6520 |
-
scrollboxSize: function() {
|
6521 |
-
computeStyleTests();
|
6522 |
-
return scrollboxSizeVal;
|
6523 |
-
},
|
6524 |
-
|
6525 |
-
// Support: IE 9 - 11+, Edge 15 - 18+
|
6526 |
-
// IE/Edge misreport `getComputedStyle` of table rows with width/height
|
6527 |
-
// set in CSS while `offset*` properties report correct values.
|
6528 |
-
// Behavior in IE 9 is more subtle than in newer versions & it passes
|
6529 |
-
// some versions of this test; make sure not to make it pass there!
|
6530 |
-
//
|
6531 |
-
// Support: Firefox 70+
|
6532 |
-
// Only Firefox includes border widths
|
6533 |
-
// in computed dimensions. (gh-4529)
|
6534 |
-
reliableTrDimensions: function() {
|
6535 |
-
var table, tr, trChild, trStyle;
|
6536 |
-
if ( reliableTrDimensionsVal == null ) {
|
6537 |
-
table = document.createElement( "table" );
|
6538 |
-
tr = document.createElement( "tr" );
|
6539 |
-
trChild = document.createElement( "div" );
|
6540 |
-
|
6541 |
-
table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
|
6542 |
-
tr.style.cssText = "border:1px solid";
|
6543 |
-
|
6544 |
-
// Support: Chrome 86+
|
6545 |
-
// Height set through cssText does not get applied.
|
6546 |
-
// Computed height then comes back as 0.
|
6547 |
-
tr.style.height = "1px";
|
6548 |
-
trChild.style.height = "9px";
|
6549 |
-
|
6550 |
-
// Support: Android 8 Chrome 86+
|
6551 |
-
// In our bodyBackground.html iframe,
|
6552 |
-
// display for all div elements is set to "inline",
|
6553 |
-
// which causes a problem only in Android 8 Chrome 86.
|
6554 |
-
// Ensuring the div is display: block
|
6555 |
-
// gets around this issue.
|
6556 |
-
trChild.style.display = "block";
|
6557 |
-
|
6558 |
-
documentElement
|
6559 |
-
.appendChild( table )
|
6560 |
-
.appendChild( tr )
|
6561 |
-
.appendChild( trChild );
|
6562 |
-
|
6563 |
-
trStyle = window.getComputedStyle( tr );
|
6564 |
-
reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +
|
6565 |
-
parseInt( trStyle.borderTopWidth, 10 ) +
|
6566 |
-
parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;
|
6567 |
-
|
6568 |
-
documentElement.removeChild( table );
|
6569 |
-
}
|
6570 |
-
return reliableTrDimensionsVal;
|
6571 |
-
}
|
6572 |
-
} );
|
6573 |
-
} )();
|
6574 |
-
|
6575 |
-
|
6576 |
-
function curCSS( elem, name, computed ) {
|
6577 |
-
var width, minWidth, maxWidth, ret,
|
6578 |
-
|
6579 |
-
// Support: Firefox 51+
|
6580 |
-
// Retrieving style before computed somehow
|
6581 |
-
// fixes an issue with getting wrong values
|
6582 |
-
// on detached elements
|
6583 |
-
style = elem.style;
|
6584 |
-
|
6585 |
-
computed = computed || getStyles( elem );
|
6586 |
-
|
6587 |
-
// getPropertyValue is needed for:
|
6588 |
-
// .css('filter') (IE 9 only, #12537)
|
6589 |
-
// .css('--customProperty) (#3144)
|
6590 |
-
if ( computed ) {
|
6591 |
-
ret = computed.getPropertyValue( name ) || computed[ name ];
|
6592 |
-
|
6593 |
-
if ( ret === "" && !isAttached( elem ) ) {
|
6594 |
-
ret = jQuery.style( elem, name );
|
6595 |
-
}
|
6596 |
-
|
6597 |
-
// A tribute to the "awesome hack by Dean Edwards"
|
6598 |
-
// Android Browser returns percentage for some values,
|
6599 |
-
// but width seems to be reliably pixels.
|
6600 |
-
// This is against the CSSOM draft spec:
|
6601 |
-
// https://drafts.csswg.org/cssom/#resolved-values
|
6602 |
-
if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
|
6603 |
-
|
6604 |
-
// Remember the original values
|
6605 |
-
width = style.width;
|
6606 |
-
minWidth = style.minWidth;
|
6607 |
-
maxWidth = style.maxWidth;
|
6608 |
-
|
6609 |
-
// Put in the new values to get a computed value out
|
6610 |
-
style.minWidth = style.maxWidth = style.width = ret;
|
6611 |
-
ret = computed.width;
|
6612 |
-
|
6613 |
-
// Revert the changed values
|
6614 |
-
style.width = width;
|
6615 |
-
style.minWidth = minWidth;
|
6616 |
-
style.maxWidth = maxWidth;
|
6617 |
-
}
|
6618 |
-
}
|
6619 |
-
|
6620 |
-
return ret !== undefined ?
|
6621 |
-
|
6622 |
-
// Support: IE <=9 - 11 only
|
6623 |
-
// IE returns zIndex value as an integer.
|
6624 |
-
ret + "" :
|
6625 |
-
ret;
|
6626 |
-
}
|
6627 |
-
|
6628 |
-
|
6629 |
-
function addGetHookIf( conditionFn, hookFn ) {
|
6630 |
-
|
6631 |
-
// Define the hook, we'll check on the first run if it's really needed.
|
6632 |
-
return {
|
6633 |
-
get: function() {
|
6634 |
-
if ( conditionFn() ) {
|
6635 |
-
|
6636 |
-
// Hook not needed (or it's not possible to use it due
|
6637 |
-
// to missing dependency), remove it.
|
6638 |
-
delete this.get;
|
6639 |
-
return;
|
6640 |
-
}
|
6641 |
-
|
6642 |
-
// Hook needed; redefine it so that the support test is not executed again.
|
6643 |
-
return ( this.get = hookFn ).apply( this, arguments );
|
6644 |
-
}
|
6645 |
-
};
|
6646 |
-
}
|
6647 |
-
|
6648 |
-
|
6649 |
-
var cssPrefixes = [ "Webkit", "Moz", "ms" ],
|
6650 |
-
emptyStyle = document.createElement( "div" ).style,
|
6651 |
-
vendorProps = {};
|
6652 |
-
|
6653 |
-
// Return a vendor-prefixed property or undefined
|
6654 |
-
function vendorPropName( name ) {
|
6655 |
-
|
6656 |
-
// Check for vendor prefixed names
|
6657 |
-
var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
|
6658 |
-
i = cssPrefixes.length;
|
6659 |
-
|
6660 |
-
while ( i-- ) {
|
6661 |
-
name = cssPrefixes[ i ] + capName;
|
6662 |
-
if ( name in emptyStyle ) {
|
6663 |
-
return name;
|
6664 |
-
}
|
6665 |
-
}
|
6666 |
-
}
|
6667 |
-
|
6668 |
-
// Return a potentially-mapped jQuery.cssProps or vendor prefixed property
|
6669 |
-
function finalPropName( name ) {
|
6670 |
-
var final = jQuery.cssProps[ name ] || vendorProps[ name ];
|
6671 |
-
|
6672 |
-
if ( final ) {
|
6673 |
-
return final;
|
6674 |
-
}
|
6675 |
-
if ( name in emptyStyle ) {
|
6676 |
-
return name;
|
6677 |
-
}
|
6678 |
-
return vendorProps[ name ] = vendorPropName( name ) || name;
|
6679 |
-
}
|
6680 |
-
|
6681 |
-
|
6682 |
-
var
|
6683 |
-
|
6684 |
-
// Swappable if display is none or starts with table
|
6685 |
-
// except "table", "table-cell", or "table-caption"
|
6686 |
-
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
|
6687 |
-
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
|
6688 |
-
rcustomProp = /^--/,
|
6689 |
-
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
|
6690 |
-
cssNormalTransform = {
|
6691 |
-
letterSpacing: "0",
|
6692 |
-
fontWeight: "400"
|
6693 |
-
};
|
6694 |
-
|
6695 |
-
function setPositiveNumber( _elem, value, subtract ) {
|
6696 |
-
|
6697 |
-
// Any relative (+/-) values have already been
|
6698 |
-
// normalized at this point
|
6699 |
-
var matches = rcssNum.exec( value );
|
6700 |
-
return matches ?
|
6701 |
-
|
6702 |
-
// Guard against undefined "subtract", e.g., when used as in cssHooks
|
6703 |
-
Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
|
6704 |
-
value;
|
6705 |
-
}
|
6706 |
-
|
6707 |
-
function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
|
6708 |
-
var i = dimension === "width" ? 1 : 0,
|
6709 |
-
extra = 0,
|
6710 |
-
delta = 0;
|
6711 |
-
|
6712 |
-
// Adjustment may not be necessary
|
6713 |
-
if ( box === ( isBorderBox ? "border" : "content" ) ) {
|
6714 |
-
return 0;
|
6715 |
-
}
|
6716 |
-
|
6717 |
-
for ( ; i < 4; i += 2 ) {
|
6718 |
-
|
6719 |
-
// Both box models exclude margin
|
6720 |
-
if ( box === "margin" ) {
|
6721 |
-
delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
|
6722 |
-
}
|
6723 |
-
|
6724 |
-
// If we get here with a content-box, we're seeking "padding" or "border" or "margin"
|
6725 |
-
if ( !isBorderBox ) {
|
6726 |
-
|
6727 |
-
// Add padding
|
6728 |
-
delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
|
6729 |
-
|
6730 |
-
// For "border" or "margin", add border
|
6731 |
-
if ( box !== "padding" ) {
|
6732 |
-
delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
|
6733 |
-
|
6734 |
-
// But still keep track of it otherwise
|
6735 |
-
} else {
|
6736 |
-
extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
|
6737 |
-
}
|
6738 |
-
|
6739 |
-
// If we get here with a border-box (content + padding + border), we're seeking "content" or
|
6740 |
-
// "padding" or "margin"
|
6741 |
-
} else {
|
6742 |
-
|
6743 |
-
// For "content", subtract padding
|
6744 |
-
if ( box === "content" ) {
|
6745 |
-
delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
|
6746 |
-
}
|
6747 |
-
|
6748 |
-
// For "content" or "padding", subtract border
|
6749 |
-
if ( box !== "margin" ) {
|
6750 |
-
delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
|
6751 |
-
}
|
6752 |
-
}
|
6753 |
-
}
|
6754 |
-
|
6755 |
-
// Account for positive content-box scroll gutter when requested by providing computedVal
|
6756 |
-
if ( !isBorderBox && computedVal >= 0 ) {
|
6757 |
-
|
6758 |
-
// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
|
6759 |
-
// Assuming integer scroll gutter, subtract the rest and round down
|
6760 |
-
delta += Math.max( 0, Math.ceil(
|
6761 |
-
elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
|
6762 |
-
computedVal -
|
6763 |
-
delta -
|
6764 |
-
extra -
|
6765 |
-
0.5
|
6766 |
-
|
6767 |
-
// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
|
6768 |
-
// Use an explicit zero to avoid NaN (gh-3964)
|
6769 |
-
) ) || 0;
|
6770 |
-
}
|
6771 |
-
|
6772 |
-
return delta;
|
6773 |
-
}
|
6774 |
-
|
6775 |
-
function getWidthOrHeight( elem, dimension, extra ) {
|
6776 |
-
|
6777 |
-
// Start with computed style
|
6778 |
-
var styles = getStyles( elem ),
|
6779 |
-
|
6780 |
-
// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
|
6781 |
-
// Fake content-box until we know it's needed to know the true value.
|
6782 |
-
boxSizingNeeded = !support.boxSizingReliable() || extra,
|
6783 |
-
isBorderBox = boxSizingNeeded &&
|
6784 |
-
jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
|
6785 |
-
valueIsBorderBox = isBorderBox,
|
6786 |
-
|
6787 |
-
val = curCSS( elem, dimension, styles ),
|
6788 |
-
offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );
|
6789 |
-
|
6790 |
-
// Support: Firefox <=54
|
6791 |
-
// Return a confounding non-pixel value or feign ignorance, as appropriate.
|
6792 |
-
if ( rnumnonpx.test( val ) ) {
|
6793 |
-
if ( !extra ) {
|
6794 |
-
return val;
|
6795 |
-
}
|
6796 |
-
val = "auto";
|
6797 |
-
}
|
6798 |
-
|
6799 |
-
|
6800 |
-
// Support: IE 9 - 11 only
|
6801 |
-
// Use offsetWidth/offsetHeight for when box sizing is unreliable.
|
6802 |
-
// In those cases, the computed value can be trusted to be border-box.
|
6803 |
-
if ( ( !support.boxSizingReliable() && isBorderBox ||
|
6804 |
-
|
6805 |
-
// Support: IE 10 - 11+, Edge 15 - 18+
|
6806 |
-
// IE/Edge misreport `getComputedStyle` of table rows with width/height
|
6807 |
-
// set in CSS while `offset*` properties report correct values.
|
6808 |
-
// Interestingly, in some cases IE 9 doesn't suffer from this issue.
|
6809 |
-
!support.reliableTrDimensions() && nodeName( elem, "tr" ) ||
|
6810 |
-
|
6811 |
-
// Fall back to offsetWidth/offsetHeight when value is "auto"
|
6812 |
-
// This happens for inline elements with no explicit setting (gh-3571)
|
6813 |
-
val === "auto" ||
|
6814 |
-
|
6815 |
-
// Support: Android <=4.1 - 4.3 only
|
6816 |
-
// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
|
6817 |
-
!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
|
6818 |
-
|
6819 |
-
// Make sure the element is visible & connected
|
6820 |
-
elem.getClientRects().length ) {
|
6821 |
-
|
6822 |
-
isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
|
6823 |
-
|
6824 |
-
// Where available, offsetWidth/offsetHeight approximate border box dimensions.
|
6825 |
-
// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
|
6826 |
-
// retrieved value as a content box dimension.
|
6827 |
-
valueIsBorderBox = offsetProp in elem;
|
6828 |
-
if ( valueIsBorderBox ) {
|
6829 |
-
val = elem[ offsetProp ];
|
6830 |
-
}
|
6831 |
-
}
|
6832 |
-
|
6833 |
-
// Normalize "" and auto
|
6834 |
-
val = parseFloat( val ) || 0;
|
6835 |
-
|
6836 |
-
// Adjust for the element's box model
|
6837 |
-
return ( val +
|
6838 |
-
boxModelAdjustment(
|
6839 |
-
elem,
|
6840 |
-
dimension,
|
6841 |
-
extra || ( isBorderBox ? "border" : "content" ),
|
6842 |
-
valueIsBorderBox,
|
6843 |
-
styles,
|
6844 |
-
|
6845 |
-
// Provide the current computed size to request scroll gutter calculation (gh-3589)
|
6846 |
-
val
|
6847 |
-
)
|
6848 |
-
) + "px";
|
6849 |
-
}
|
6850 |
-
|
6851 |
-
jQuery.extend( {
|
6852 |
-
|
6853 |
-
// Add in style property hooks for overriding the default
|
6854 |
-
// behavior of getting and setting a style property
|
6855 |
-
cssHooks: {
|
6856 |
-
opacity: {
|
6857 |
-
get: function( elem, computed ) {
|
6858 |
-
if ( computed ) {
|
6859 |
-
|
6860 |
-
// We should always get a number back from opacity
|
6861 |
-
var ret = curCSS( elem, "opacity" );
|
6862 |
-
return ret === "" ? "1" : ret;
|
6863 |
-
}
|
6864 |
-
}
|
6865 |
-
}
|
6866 |
-
},
|
6867 |
-
|
6868 |
-
// Don't automatically add "px" to these possibly-unitless properties
|
6869 |
-
cssNumber: {
|
6870 |
-
"animationIterationCount": true,
|
6871 |
-
"columnCount": true,
|
6872 |
-
"fillOpacity": true,
|
6873 |
-
"flexGrow": true,
|
6874 |
-
"flexShrink": true,
|
6875 |
-
"fontWeight": true,
|
6876 |
-
"gridArea": true,
|
6877 |
-
"gridColumn": true,
|
6878 |
-
"gridColumnEnd": true,
|
6879 |
-
"gridColumnStart": true,
|
6880 |
-
"gridRow": true,
|
6881 |
-
"gridRowEnd": true,
|
6882 |
-
"gridRowStart": true,
|
6883 |
-
"lineHeight": true,
|
6884 |
-
"opacity": true,
|
6885 |
-
"order": true,
|
6886 |
-
"orphans": true,
|
6887 |
-
"widows": true,
|
6888 |
-
"zIndex": true,
|
6889 |
-
"zoom": true
|
6890 |
-
},
|
6891 |
-
|
6892 |
-
// Add in properties whose names you wish to fix before
|
6893 |
-
// setting or getting the value
|
6894 |
-
cssProps: {},
|
6895 |
-
|
6896 |
-
// Get and set the style property on a DOM Node
|
6897 |
-
style: function( elem, name, value, extra ) {
|
6898 |
-
|
6899 |
-
// Don't set styles on text and comment nodes
|
6900 |
-
if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
|
6901 |
-
return;
|
6902 |
-
}
|
6903 |
-
|
6904 |
-
// Make sure that we're working with the right name
|
6905 |
-
var ret, type, hooks,
|
6906 |
-
origName = camelCase( name ),
|
6907 |
-
isCustomProp = rcustomProp.test( name ),
|
6908 |
-
style = elem.style;
|
6909 |
-
|
6910 |
-
// Make sure that we're working with the right name. We don't
|
6911 |
-
// want to query the value if it is a CSS custom property
|
6912 |
-
// since they are user-defined.
|
6913 |
-
if ( !isCustomProp ) {
|
6914 |
-
name = finalPropName( origName );
|
6915 |
-
}
|
6916 |
-
|
6917 |
-
// Gets hook for the prefixed version, then unprefixed version
|
6918 |
-
hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
|
6919 |
-
|
6920 |
-
// Check if we're setting a value
|
6921 |
-
if ( value !== undefined ) {
|
6922 |
-
type = typeof value;
|
6923 |
-
|
6924 |
-
// Convert "+=" or "-=" to relative numbers (#7345)
|
6925 |
-
if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
|
6926 |
-
value = adjustCSS( elem, name, ret );
|
6927 |
-
|
6928 |
-
// Fixes bug #9237
|
6929 |
-
type = "number";
|
6930 |
-
}
|
6931 |
-
|
6932 |
-
// Make sure that null and NaN values aren't set (#7116)
|
6933 |
-
if ( value == null || value !== value ) {
|
6934 |
-
return;
|
6935 |
-
}
|
6936 |
-
|
6937 |
-
// If a number was passed in, add the unit (except for certain CSS properties)
|
6938 |
-
// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
|
6939 |
-
// "px" to a few hardcoded values.
|
6940 |
-
if ( type === "number" && !isCustomProp ) {
|
6941 |
-
value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
|
6942 |
-
}
|
6943 |
-
|
6944 |
-
// background-* props affect original clone's values
|
6945 |
-
if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
|
6946 |
-
style[ name ] = "inherit";
|
6947 |
-
}
|
6948 |
-
|
6949 |
-
// If a hook was provided, use that value, otherwise just set the specified value
|
6950 |
-
if ( !hooks || !( "set" in hooks ) ||
|
6951 |
-
( value = hooks.set( elem, value, extra ) ) !== undefined ) {
|
6952 |
-
|
6953 |
-
if ( isCustomProp ) {
|
6954 |
-
style.setProperty( name, value );
|
6955 |
-
} else {
|
6956 |
-
style[ name ] = value;
|
6957 |
-
}
|
6958 |
-
}
|
6959 |
-
|
6960 |
-
} else {
|
6961 |
-
|
6962 |
-
// If a hook was provided get the non-computed value from there
|
6963 |
-
if ( hooks && "get" in hooks &&
|
6964 |
-
( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
|
6965 |
-
|
6966 |
-
return ret;
|
6967 |
-
}
|
6968 |
-
|
6969 |
-
// Otherwise just get the value from the style object
|
6970 |
-
return style[ name ];
|
6971 |
-
}
|
6972 |
-
},
|
6973 |
-
|
6974 |
-
css: function( elem, name, extra, styles ) {
|
6975 |
-
var val, num, hooks,
|
6976 |
-
origName = camelCase( name ),
|
6977 |
-
isCustomProp = rcustomProp.test( name );
|
6978 |
-
|
6979 |
-
// Make sure that we're working with the right name. We don't
|
6980 |
-
// want to modify the value if it is a CSS custom property
|
6981 |
-
// since they are user-defined.
|
6982 |
-
if ( !isCustomProp ) {
|
6983 |
-
name = finalPropName( origName );
|
6984 |
-
}
|
6985 |
-
|
6986 |
-
// Try prefixed name followed by the unprefixed name
|
6987 |
-
hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
|
6988 |
-
|
6989 |
-
// If a hook was provided get the computed value from there
|
6990 |
-
if ( hooks && "get" in hooks ) {
|
6991 |
-
val = hooks.get( elem, true, extra );
|
6992 |
-
}
|
6993 |
-
|
6994 |
-
// Otherwise, if a way to get the computed value exists, use that
|
6995 |
-
if ( val === undefined ) {
|
6996 |
-
val = curCSS( elem, name, styles );
|
6997 |
-
}
|
6998 |
-
|
6999 |
-
// Convert "normal" to computed value
|
7000 |
-
if ( val === "normal" && name in cssNormalTransform ) {
|
7001 |
-
val = cssNormalTransform[ name ];
|
7002 |
-
}
|
7003 |
-
|
7004 |
-
// Make numeric if forced or a qualifier was provided and val looks numeric
|
7005 |
-
if ( extra === "" || extra ) {
|
7006 |
-
num = parseFloat( val );
|
7007 |
-
return extra === true || isFinite( num ) ? num || 0 : val;
|
7008 |
-
}
|
7009 |
-
|
7010 |
-
return val;
|
7011 |
-
}
|
7012 |
-
} );
|
7013 |
-
|
7014 |
-
jQuery.each( [ "height", "width" ], function( _i, dimension ) {
|
7015 |
-
jQuery.cssHooks[ dimension ] = {
|
7016 |
-
get: function( elem, computed, extra ) {
|
7017 |
-
if ( computed ) {
|
7018 |
-
|
7019 |
-
// Certain elements can have dimension info if we invisibly show them
|
7020 |
-
// but it must have a current display style that would benefit
|
7021 |
-
return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
|
7022 |
-
|
7023 |
-
// Support: Safari 8+
|
7024 |
-
// Table columns in Safari have non-zero offsetWidth & zero
|
7025 |
-
// getBoundingClientRect().width unless display is changed.
|
7026 |
-
// Support: IE <=11 only
|
7027 |
-
// Running getBoundingClientRect on a disconnected node
|
7028 |
-
// in IE throws an error.
|
7029 |
-
( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
|
7030 |
-
swap( elem, cssShow, function() {
|
7031 |
-
return getWidthOrHeight( elem, dimension, extra );
|
7032 |
-
} ) :
|
7033 |
-
getWidthOrHeight( elem, dimension, extra );
|
7034 |
-
}
|
7035 |
-
},
|
7036 |
-
|
7037 |
-
set: function( elem, value, extra ) {
|
7038 |
-
var matches,
|
7039 |
-
styles = getStyles( elem ),
|
7040 |
-
|
7041 |
-
// Only read styles.position if the test has a chance to fail
|
7042 |
-
// to avoid forcing a reflow.
|
7043 |
-
scrollboxSizeBuggy = !support.scrollboxSize() &&
|
7044 |
-
styles.position === "absolute",
|
7045 |
-
|
7046 |
-
// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
|
7047 |
-
boxSizingNeeded = scrollboxSizeBuggy || extra,
|
7048 |
-
isBorderBox = boxSizingNeeded &&
|
7049 |
-
jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
|
7050 |
-
subtract = extra ?
|
7051 |
-
boxModelAdjustment(
|
7052 |
-
elem,
|
7053 |
-
dimension,
|
7054 |
-
extra,
|
7055 |
-
isBorderBox,
|
7056 |
-
styles
|
7057 |
-
) :
|
7058 |
-
0;
|
7059 |
-
|
7060 |
-
// Account for unreliable border-box dimensions by comparing offset* to computed and
|
7061 |
-
// faking a content-box to get border and padding (gh-3699)
|
7062 |
-
if ( isBorderBox && scrollboxSizeBuggy ) {
|
7063 |
-
subtract -= Math.ceil(
|
7064 |
-
elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
|
7065 |
-
parseFloat( styles[ dimension ] ) -
|
7066 |
-
boxModelAdjustment( elem, dimension, "border", false, styles ) -
|
7067 |
-
0.5
|
7068 |
-
);
|
7069 |
-
}
|
7070 |
-
|
7071 |
-
// Convert to pixels if value adjustment is needed
|
7072 |
-
if ( subtract && ( matches = rcssNum.exec( value ) ) &&
|
7073 |
-
( matches[ 3 ] || "px" ) !== "px" ) {
|
7074 |
-
|
7075 |
-
elem.style[ dimension ] = value;
|
7076 |
-
value = jQuery.css( elem, dimension );
|
7077 |
-
}
|
7078 |
-
|
7079 |
-
return setPositiveNumber( elem, value, subtract );
|
7080 |
-
}
|
7081 |
-
};
|
7082 |
-
} );
|
7083 |
-
|
7084 |
-
jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
|
7085 |
-
function( elem, computed ) {
|
7086 |
-
if ( computed ) {
|
7087 |
-
return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
|
7088 |
-
elem.getBoundingClientRect().left -
|
7089 |
-
swap( elem, { marginLeft: 0 }, function() {
|
7090 |
-
return elem.getBoundingClientRect().left;
|
7091 |
-
} )
|
7092 |
-
) + "px";
|
7093 |
-
}
|
7094 |
-
}
|
7095 |
-
);
|
7096 |
-
|
7097 |
-
// These hooks are used by animate to expand properties
|
7098 |
-
jQuery.each( {
|
7099 |
-
margin: "",
|
7100 |
-
padding: "",
|
7101 |
-
border: "Width"
|
7102 |
-
}, function( prefix, suffix ) {
|
7103 |
-
jQuery.cssHooks[ prefix + suffix ] = {
|
7104 |
-
expand: function( value ) {
|
7105 |
-
var i = 0,
|
7106 |
-
expanded = {},
|
7107 |
-
|
7108 |
-
// Assumes a single number if not a string
|
7109 |
-
parts = typeof value === "string" ? value.split( " " ) : [ value ];
|
7110 |
-
|
7111 |
-
for ( ; i < 4; i++ ) {
|
7112 |
-
expanded[ prefix + cssExpand[ i ] + suffix ] =
|
7113 |
-
parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
|
7114 |
-
}
|
7115 |
-
|
7116 |
-
return expanded;
|
7117 |
-
}
|
7118 |
-
};
|
7119 |
-
|
7120 |
-
if ( prefix !== "margin" ) {
|
7121 |
-
jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
|
7122 |
-
}
|
7123 |
-
} );
|
7124 |
-
|
7125 |
-
jQuery.fn.extend( {
|
7126 |
-
css: function( name, value ) {
|
7127 |
-
return access( this, function( elem, name, value ) {
|
7128 |
-
var styles, len,
|
7129 |
-
map = {},
|
7130 |
-
i = 0;
|
7131 |
-
|
7132 |
-
if ( Array.isArray( name ) ) {
|
7133 |
-
styles = getStyles( elem );
|
7134 |
-
len = name.length;
|
7135 |
-
|
7136 |
-
for ( ; i < len; i++ ) {
|
7137 |
-
map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
|
7138 |
-
}
|
7139 |
-
|
7140 |
-
return map;
|
7141 |
-
}
|
7142 |
-
|
7143 |
-
return value !== undefined ?
|
7144 |
-
jQuery.style( elem, name, value ) :
|
7145 |
-
jQuery.css( elem, name );
|
7146 |
-
}, name, value, arguments.length > 1 );
|
7147 |
-
}
|
7148 |
-
} );
|
7149 |
-
|
7150 |
-
|
7151 |
-
function Tween( elem, options, prop, end, easing ) {
|
7152 |
-
return new Tween.prototype.init( elem, options, prop, end, easing );
|
7153 |
-
}
|
7154 |
-
jQuery.Tween = Tween;
|
7155 |
-
|
7156 |
-
Tween.prototype = {
|
7157 |
-
constructor: Tween,
|
7158 |
-
init: function( elem, options, prop, end, easing, unit ) {
|
7159 |
-
this.elem = elem;
|
7160 |
-
this.prop = prop;
|
7161 |
-
this.easing = easing || jQuery.easing._default;
|
7162 |
-
this.options = options;
|
7163 |
-
this.start = this.now = this.cur();
|
7164 |
-
this.end = end;
|
7165 |
-
this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
|
7166 |
-
},
|
7167 |
-
cur: function() {
|
7168 |
-
var hooks = Tween.propHooks[ this.prop ];
|
7169 |
-
|
7170 |
-
return hooks && hooks.get ?
|
7171 |
-
hooks.get( this ) :
|
7172 |
-
Tween.propHooks._default.get( this );
|
7173 |
-
},
|
7174 |
-
run: function( percent ) {
|
7175 |
-
var eased,
|
7176 |
-
hooks = Tween.propHooks[ this.prop ];
|
7177 |
-
|
7178 |
-
if ( this.options.duration ) {
|
7179 |
-
this.pos = eased = jQuery.easing[ this.easing ](
|
7180 |
-
percent, this.options.duration * percent, 0, 1, this.options.duration
|
7181 |
-
);
|
7182 |
-
} else {
|
7183 |
-
this.pos = eased = percent;
|
7184 |
-
}
|
7185 |
-
this.now = ( this.end - this.start ) * eased + this.start;
|
7186 |
-
|
7187 |
-
if ( this.options.step ) {
|
7188 |
-
this.options.step.call( this.elem, this.now, this );
|
7189 |
-
}
|
7190 |
-
|
7191 |
-
if ( hooks && hooks.set ) {
|
7192 |
-
hooks.set( this );
|
7193 |
-
} else {
|
7194 |
-
Tween.propHooks._default.set( this );
|
7195 |
-
}
|
7196 |
-
return this;
|
7197 |
-
}
|
7198 |
-
};
|
7199 |
-
|
7200 |
-
Tween.prototype.init.prototype = Tween.prototype;
|
7201 |
-
|
7202 |
-
Tween.propHooks = {
|
7203 |
-
_default: {
|
7204 |
-
get: function( tween ) {
|
7205 |
-
var result;
|
7206 |
-
|
7207 |
-
// Use a property on the element directly when it is not a DOM element,
|
7208 |
-
// or when there is no matching style property that exists.
|
7209 |
-
if ( tween.elem.nodeType !== 1 ||
|
7210 |
-
tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
|
7211 |
-
return tween.elem[ tween.prop ];
|
7212 |
-
}
|
7213 |
-
|
7214 |
-
// Passing an empty string as a 3rd parameter to .css will automatically
|
7215 |
-
// attempt a parseFloat and fallback to a string if the parse fails.
|
7216 |
-
// Simple values such as "10px" are parsed to Float;
|
7217 |
-
// complex values such as "rotate(1rad)" are returned as-is.
|
7218 |
-
result = jQuery.css( tween.elem, tween.prop, "" );
|
7219 |
-
|
7220 |
-
// Empty strings, null, undefined and "auto" are converted to 0.
|
7221 |
-
return !result || result === "auto" ? 0 : result;
|
7222 |
-
},
|
7223 |
-
set: function( tween ) {
|
7224 |
-
|
7225 |
-
// Use step hook for back compat.
|
7226 |
-
// Use cssHook if its there.
|
7227 |
-
// Use .style if available and use plain properties where available.
|
7228 |
-
if ( jQuery.fx.step[ tween.prop ] ) {
|
7229 |
-
jQuery.fx.step[ tween.prop ]( tween );
|
7230 |
-
} else if ( tween.elem.nodeType === 1 && (
|
7231 |
-
jQuery.cssHooks[ tween.prop ] ||
|
7232 |
-
tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
|
7233 |
-
jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
|
7234 |
-
} else {
|
7235 |
-
tween.elem[ tween.prop ] = tween.now;
|
7236 |
-
}
|
7237 |
-
}
|
7238 |
-
}
|
7239 |
-
};
|
7240 |
-
|
7241 |
-
// Support: IE <=9 only
|
7242 |
-
// Panic based approach to setting things on disconnected nodes
|
7243 |
-
Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
|
7244 |
-
set: function( tween ) {
|
7245 |
-
if ( tween.elem.nodeType && tween.elem.parentNode ) {
|
7246 |
-
tween.elem[ tween.prop ] = tween.now;
|
7247 |
-
}
|
7248 |
-
}
|
7249 |
-
};
|
7250 |
-
|
7251 |
-
jQuery.easing = {
|
7252 |
-
linear: function( p ) {
|
7253 |
-
return p;
|
7254 |
-
},
|
7255 |
-
swing: function( p ) {
|
7256 |
-
return 0.5 - Math.cos( p * Math.PI ) / 2;
|
7257 |
-
},
|
7258 |
-
_default: "swing"
|
7259 |
-
};
|
7260 |
-
|
7261 |
-
jQuery.fx = Tween.prototype.init;
|
7262 |
-
|
7263 |
-
// Back compat <1.8 extension point
|
7264 |
-
jQuery.fx.step = {};
|
7265 |
-
|
7266 |
-
|
7267 |
-
|
7268 |
-
|
7269 |
-
var
|
7270 |
-
fxNow, inProgress,
|
7271 |
-
rfxtypes = /^(?:toggle|show|hide)$/,
|
7272 |
-
rrun = /queueHooks$/;
|
7273 |
-
|
7274 |
-
function schedule() {
|
7275 |
-
if ( inProgress ) {
|
7276 |
-
if ( document.hidden === false && window.requestAnimationFrame ) {
|
7277 |
-
window.requestAnimationFrame( schedule );
|
7278 |
-
} else {
|
7279 |
-
window.setTimeout( schedule, jQuery.fx.interval );
|
7280 |
-
}
|
7281 |
-
|
7282 |
-
jQuery.fx.tick();
|
7283 |
-
}
|
7284 |
-
}
|
7285 |
-
|
7286 |
-
// Animations created synchronously will run synchronously
|
7287 |
-
function createFxNow() {
|
7288 |
-
window.setTimeout( function() {
|
7289 |
-
fxNow = undefined;
|
7290 |
-
} );
|
7291 |
-
return ( fxNow = Date.now() );
|
7292 |
-
}
|
7293 |
-
|
7294 |
-
// Generate parameters to create a standard animation
|
7295 |
-
function genFx( type, includeWidth ) {
|
7296 |
-
var which,
|
7297 |
-
i = 0,
|
7298 |
-
attrs = { height: type };
|
7299 |
-
|
7300 |
-
// If we include width, step value is 1 to do all cssExpand values,
|
7301 |
-
// otherwise step value is 2 to skip over Left and Right
|
7302 |
-
includeWidth = includeWidth ? 1 : 0;
|
7303 |
-
for ( ; i < 4; i += 2 - includeWidth ) {
|
7304 |
-
which = cssExpand[ i ];
|
7305 |
-
attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
|
7306 |
-
}
|
7307 |
-
|
7308 |
-
if ( includeWidth ) {
|
7309 |
-
attrs.opacity = attrs.width = type;
|
7310 |
-
}
|
7311 |
-
|
7312 |
-
return attrs;
|
7313 |
-
}
|
7314 |
-
|
7315 |
-
function createTween( value, prop, animation ) {
|
7316 |
-
var tween,
|
7317 |
-
collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
|
7318 |
-
index = 0,
|
7319 |
-
length = collection.length;
|
7320 |
-
for ( ; index < length; index++ ) {
|
7321 |
-
if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
|
7322 |
-
|
7323 |
-
// We're done with this property
|
7324 |
-
return tween;
|
7325 |
-
}
|
7326 |
-
}
|
7327 |
-
}
|
7328 |
-
|
7329 |
-
function defaultPrefilter( elem, props, opts ) {
|
7330 |
-
var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
|
7331 |
-
isBox = "width" in props || "height" in props,
|
7332 |
-
anim = this,
|
7333 |
-
orig = {},
|
7334 |
-
style = elem.style,
|
7335 |
-
hidden = elem.nodeType && isHiddenWithinTree( elem ),
|
7336 |
-
dataShow = dataPriv.get( elem, "fxshow" );
|
7337 |
-
|
7338 |
-
// Queue-skipping animations hijack the fx hooks
|
7339 |
-
if ( !opts.queue ) {
|
7340 |
-
hooks = jQuery._queueHooks( elem, "fx" );
|
7341 |
-
if ( hooks.unqueued == null ) {
|
7342 |
-
hooks.unqueued = 0;
|
7343 |
-
oldfire = hooks.empty.fire;
|
7344 |
-
hooks.empty.fire = function() {
|
7345 |
-
if ( !hooks.unqueued ) {
|
7346 |
-
oldfire();
|
7347 |
-
}
|
7348 |
-
};
|
7349 |
-
}
|
7350 |
-
hooks.unqueued++;
|
7351 |
-
|
7352 |
-
anim.always( function() {
|
7353 |
-
|
7354 |
-
// Ensure the complete handler is called before this completes
|
7355 |
-
anim.always( function() {
|
7356 |
-
hooks.unqueued--;
|
7357 |
-
if ( !jQuery.queue( elem, "fx" ).length ) {
|
7358 |
-
hooks.empty.fire();
|
7359 |
-
}
|
7360 |
-
} );
|
7361 |
-
} );
|
7362 |
-
}
|
7363 |
-
|
7364 |
-
// Detect show/hide animations
|
7365 |
-
for ( prop in props ) {
|
7366 |
-
value = props[ prop ];
|
7367 |
-
if ( rfxtypes.test( value ) ) {
|
7368 |
-
delete props[ prop ];
|
7369 |
-
toggle = toggle || value === "toggle";
|
7370 |
-
if ( value === ( hidden ? "hide" : "show" ) ) {
|
7371 |
-
|
7372 |
-
// Pretend to be hidden if this is a "show" and
|
7373 |
-
// there is still data from a stopped show/hide
|
7374 |
-
if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
|
7375 |
-
hidden = true;
|
7376 |
-
|
7377 |
-
// Ignore all other no-op show/hide data
|
7378 |
-
} else {
|
7379 |
-
continue;
|
7380 |
-
}
|
7381 |
-
}
|
7382 |
-
orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
|
7383 |
-
}
|
7384 |
-
}
|
7385 |
-
|
7386 |
-
// Bail out if this is a no-op like .hide().hide()
|
7387 |
-
propTween = !jQuery.isEmptyObject( props );
|
7388 |
-
if ( !propTween && jQuery.isEmptyObject( orig ) ) {
|
7389 |
-
return;
|
7390 |
-
}
|
7391 |
-
|
7392 |
-
// Restrict "overflow" and "display" styles during box animations
|
7393 |
-
if ( isBox && elem.nodeType === 1 ) {
|
7394 |
-
|
7395 |
-
// Support: IE <=9 - 11, Edge 12 - 15
|
7396 |
-
// Record all 3 overflow attributes because IE does not infer the shorthand
|
7397 |
-
// from identically-valued overflowX and overflowY and Edge just mirrors
|
7398 |
-
// the overflowX value there.
|
7399 |
-
opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
|
7400 |
-
|
7401 |
-
// Identify a display type, preferring old show/hide data over the CSS cascade
|
7402 |
-
restoreDisplay = dataShow && dataShow.display;
|
7403 |
-
if ( restoreDisplay == null ) {
|
7404 |
-
restoreDisplay = dataPriv.get( elem, "display" );
|
7405 |
-
}
|
7406 |
-
display = jQuery.css( elem, "display" );
|
7407 |
-
if ( display === "none" ) {
|
7408 |
-
if ( restoreDisplay ) {
|
7409 |
-
display = restoreDisplay;
|
7410 |
-
} else {
|
7411 |
-
|
7412 |
-
// Get nonempty value(s) by temporarily forcing visibility
|
7413 |
-
showHide( [ elem ], true );
|
7414 |
-
restoreDisplay = elem.style.display || restoreDisplay;
|
7415 |
-
display = jQuery.css( elem, "display" );
|
7416 |
-
showHide( [ elem ] );
|
7417 |
-
}
|
7418 |
-
}
|
7419 |
-
|
7420 |
-
// Animate inline elements as inline-block
|
7421 |
-
if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
|
7422 |
-
if ( jQuery.css( elem, "float" ) === "none" ) {
|
7423 |
-
|
7424 |
-
// Restore the original display value at the end of pure show/hide animations
|
7425 |
-
if ( !propTween ) {
|
7426 |
-
anim.done( function() {
|
7427 |
-
style.display = restoreDisplay;
|
7428 |
-
} );
|
7429 |
-
if ( restoreDisplay == null ) {
|
7430 |
-
display = style.display;
|
7431 |
-
restoreDisplay = display === "none" ? "" : display;
|
7432 |
-
}
|
7433 |
-
}
|
7434 |
-
style.display = "inline-block";
|
7435 |
-
}
|
7436 |
-
}
|
7437 |
-
}
|
7438 |
-
|
7439 |
-
if ( opts.overflow ) {
|
7440 |
-
style.overflow = "hidden";
|
7441 |
-
anim.always( function() {
|
7442 |
-
style.overflow = opts.overflow[ 0 ];
|
7443 |
-
style.overflowX = opts.overflow[ 1 ];
|
7444 |
-
style.overflowY = opts.overflow[ 2 ];
|
7445 |
-
} );
|
7446 |
-
}
|
7447 |
-
|
7448 |
-
// Implement show/hide animations
|
7449 |
-
propTween = false;
|
7450 |
-
for ( prop in orig ) {
|
7451 |
-
|
7452 |
-
// General show/hide setup for this element animation
|
7453 |
-
if ( !propTween ) {
|
7454 |
-
if ( dataShow ) {
|
7455 |
-
if ( "hidden" in dataShow ) {
|
7456 |
-
hidden = dataShow.hidden;
|
7457 |
-
}
|
7458 |
-
} else {
|
7459 |
-
dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
|
7460 |
-
}
|
7461 |
-
|
7462 |
-
// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
|
7463 |
-
if ( toggle ) {
|
7464 |
-
dataShow.hidden = !hidden;
|
7465 |
-
}
|
7466 |
-
|
7467 |
-
// Show elements before animating them
|
7468 |
-
if ( hidden ) {
|
7469 |
-
showHide( [ elem ], true );
|
7470 |
-
}
|
7471 |
-
|
7472 |
-
/* eslint-disable no-loop-func */
|
7473 |
-
|
7474 |
-
anim.done( function() {
|
7475 |
-
|
7476 |
-
/* eslint-enable no-loop-func */
|
7477 |
-
|
7478 |
-
// The final step of a "hide" animation is actually hiding the element
|
7479 |
-
if ( !hidden ) {
|
7480 |
-
showHide( [ elem ] );
|
7481 |
-
}
|
7482 |
-
dataPriv.remove( elem, "fxshow" );
|
7483 |
-
for ( prop in orig ) {
|
7484 |
-
jQuery.style( elem, prop, orig[ prop ] );
|
7485 |
-
}
|
7486 |
-
} );
|
7487 |
-
}
|
7488 |
-
|
7489 |
-
// Per-property setup
|
7490 |
-
propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
|
7491 |
-
if ( !( prop in dataShow ) ) {
|
7492 |
-
dataShow[ prop ] = propTween.start;
|
7493 |
-
if ( hidden ) {
|
7494 |
-
propTween.end = propTween.start;
|
7495 |
-
propTween.start = 0;
|
7496 |
-
}
|
7497 |
-
}
|
7498 |
-
}
|
7499 |
-
}
|
7500 |
-
|
7501 |
-
function propFilter( props, specialEasing ) {
|
7502 |
-
var index, name, easing, value, hooks;
|
7503 |
-
|
7504 |
-
// camelCase, specialEasing and expand cssHook pass
|
7505 |
-
for ( index in props ) {
|
7506 |
-
name = camelCase( index );
|
7507 |
-
easing = specialEasing[ name ];
|
7508 |
-
value = props[ index ];
|
7509 |
-
if ( Array.isArray( value ) ) {
|
7510 |
-
easing = value[ 1 ];
|
7511 |
-
value = props[ index ] = value[ 0 ];
|
7512 |
-
}
|
7513 |
-
|
7514 |
-
if ( index !== name ) {
|
7515 |
-
props[ name ] = value;
|
7516 |
-
delete props[ index ];
|
7517 |
-
}
|
7518 |
-
|
7519 |
-
hooks = jQuery.cssHooks[ name ];
|
7520 |
-
if ( hooks && "expand" in hooks ) {
|
7521 |
-
value = hooks.expand( value );
|
7522 |
-
delete props[ name ];
|
7523 |
-
|
7524 |
-
// Not quite $.extend, this won't overwrite existing keys.
|
7525 |
-
// Reusing 'index' because we have the correct "name"
|
7526 |
-
for ( index in value ) {
|
7527 |
-
if ( !( index in props ) ) {
|
7528 |
-
props[ index ] = value[ index ];
|
7529 |
-
specialEasing[ index ] = easing;
|
7530 |
-
}
|
7531 |
-
}
|
7532 |
-
} else {
|
7533 |
-
specialEasing[ name ] = easing;
|
7534 |
-
}
|
7535 |
-
}
|
7536 |
-
}
|
7537 |
-
|
7538 |
-
function Animation( elem, properties, options ) {
|
7539 |
-
var result,
|
7540 |
-
stopped,
|
7541 |
-
index = 0,
|
7542 |
-
length = Animation.prefilters.length,
|
7543 |
-
deferred = jQuery.Deferred().always( function() {
|
7544 |
-
|
7545 |
-
// Don't match elem in the :animated selector
|
7546 |
-
delete tick.elem;
|
7547 |
-
} ),
|
7548 |
-
tick = function() {
|
7549 |
-
if ( stopped ) {
|
7550 |
-
return false;
|
7551 |
-
}
|
7552 |
-
var currentTime = fxNow || createFxNow(),
|
7553 |
-
remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
|
7554 |
-
|
7555 |
-
// Support: Android 2.3 only
|
7556 |
-
// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
|
7557 |
-
temp = remaining / animation.duration || 0,
|
7558 |
-
percent = 1 - temp,
|
7559 |
-
index = 0,
|
7560 |
-
length = animation.tweens.length;
|
7561 |
-
|
7562 |
-
for ( ; index < length; index++ ) {
|
7563 |
-
animation.tweens[ index ].run( percent );
|
7564 |
-
}
|
7565 |
-
|
7566 |
-
deferred.notifyWith( elem, [ animation, percent, remaining ] );
|
7567 |
-
|
7568 |
-
// If there's more to do, yield
|
7569 |
-
if ( percent < 1 && length ) {
|
7570 |
-
return remaining;
|
7571 |
-
}
|
7572 |
-
|
7573 |
-
// If this was an empty animation, synthesize a final progress notification
|
7574 |
-
if ( !length ) {
|
7575 |
-
deferred.notifyWith( elem, [ animation, 1, 0 ] );
|
7576 |
-
}
|
7577 |
-
|
7578 |
-
// Resolve the animation and report its conclusion
|
7579 |
-
deferred.resolveWith( elem, [ animation ] );
|
7580 |
-
return false;
|
7581 |
-
},
|
7582 |
-
animation = deferred.promise( {
|
7583 |
-
elem: elem,
|
7584 |
-
props: jQuery.extend( {}, properties ),
|
7585 |
-
opts: jQuery.extend( true, {
|
7586 |
-
specialEasing: {},
|
7587 |
-
easing: jQuery.easing._default
|
7588 |
-
}, options ),
|
7589 |
-
originalProperties: properties,
|
7590 |
-
originalOptions: options,
|
7591 |
-
startTime: fxNow || createFxNow(),
|
7592 |
-
duration: options.duration,
|
7593 |
-
tweens: [],
|
7594 |
-
createTween: function( prop, end ) {
|
7595 |
-
var tween = jQuery.Tween( elem, animation.opts, prop, end,
|
7596 |
-
animation.opts.specialEasing[ prop ] || animation.opts.easing );
|
7597 |
-
animation.tweens.push( tween );
|
7598 |
-
return tween;
|
7599 |
-
},
|
7600 |
-
stop: function( gotoEnd ) {
|
7601 |
-
var index = 0,
|
7602 |
-
|
7603 |
-
// If we are going to the end, we want to run all the tweens
|
7604 |
-
// otherwise we skip this part
|
7605 |
-
length = gotoEnd ? animation.tweens.length : 0;
|
7606 |
-
if ( stopped ) {
|
7607 |
-
return this;
|
7608 |
-
}
|
7609 |
-
stopped = true;
|
7610 |
-
for ( ; index < length; index++ ) {
|
7611 |
-
animation.tweens[ index ].run( 1 );
|
7612 |
-
}
|
7613 |
-
|
7614 |
-
// Resolve when we played the last frame; otherwise, reject
|
7615 |
-
if ( gotoEnd ) {
|
7616 |
-
deferred.notifyWith( elem, [ animation, 1, 0 ] );
|
7617 |
-
deferred.resolveWith( elem, [ animation, gotoEnd ] );
|
7618 |
-
} else {
|
7619 |
-
deferred.rejectWith( elem, [ animation, gotoEnd ] );
|
7620 |
-
}
|
7621 |
-
return this;
|
7622 |
-
}
|
7623 |
-
} ),
|
7624 |
-
props = animation.props;
|
7625 |
-
|
7626 |
-
propFilter( props, animation.opts.specialEasing );
|
7627 |
-
|
7628 |
-
for ( ; index < length; index++ ) {
|
7629 |
-
result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
|
7630 |
-
if ( result ) {
|
7631 |
-
if ( isFunction( result.stop ) ) {
|
7632 |
-
jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
|
7633 |
-
result.stop.bind( result );
|
7634 |
-
}
|
7635 |
-
return result;
|
7636 |
-
}
|
7637 |
-
}
|
7638 |
-
|
7639 |
-
jQuery.map( props, createTween, animation );
|
7640 |
-
|
7641 |
-
if ( isFunction( animation.opts.start ) ) {
|
7642 |
-
animation.opts.start.call( elem, animation );
|
7643 |
-
}
|
7644 |
-
|
7645 |
-
// Attach callbacks from options
|
7646 |
-
animation
|
7647 |
-
.progress( animation.opts.progress )
|
7648 |
-
.done( animation.opts.done, animation.opts.complete )
|
7649 |
-
.fail( animation.opts.fail )
|
7650 |
-
.always( animation.opts.always );
|
7651 |
-
|
7652 |
-
jQuery.fx.timer(
|
7653 |
-
jQuery.extend( tick, {
|
7654 |
-
elem: elem,
|
7655 |
-
anim: animation,
|
7656 |
-
queue: animation.opts.queue
|
7657 |
-
} )
|
7658 |
-
);
|
7659 |
-
|
7660 |
-
return animation;
|
7661 |
-
}
|
7662 |
-
|
7663 |
-
jQuery.Animation = jQuery.extend( Animation, {
|
7664 |
-
|
7665 |
-
tweeners: {
|
7666 |
-
"*": [ function( prop, value ) {
|
7667 |
-
var tween = this.createTween( prop, value );
|
7668 |
-
adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
|
7669 |
-
return tween;
|
7670 |
-
} ]
|
7671 |
-
},
|
7672 |
-
|
7673 |
-
tweener: function( props, callback ) {
|
7674 |
-
if ( isFunction( props ) ) {
|
7675 |
-
callback = props;
|
7676 |
-
props = [ "*" ];
|
7677 |
-
} else {
|
7678 |
-
props = props.match( rnothtmlwhite );
|
7679 |
-
}
|
7680 |
-
|
7681 |
-
var prop,
|
7682 |
-
index = 0,
|
7683 |
-
length = props.length;
|
7684 |
-
|
7685 |
-
for ( ; index < length; index++ ) {
|
7686 |
-
prop = props[ index ];
|
7687 |
-
Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
|
7688 |
-
Animation.tweeners[ prop ].unshift( callback );
|
7689 |
-
}
|
7690 |
-
},
|
7691 |
-
|
7692 |
-
prefilters: [ defaultPrefilter ],
|
7693 |
-
|
7694 |
-
prefilter: function( callback, prepend ) {
|
7695 |
-
if ( prepend ) {
|
7696 |
-
Animation.prefilters.unshift( callback );
|
7697 |
-
} else {
|
7698 |
-
Animation.prefilters.push( callback );
|
7699 |
-
}
|
7700 |
-
}
|
7701 |
-
} );
|
7702 |
-
|
7703 |
-
jQuery.speed = function( speed, easing, fn ) {
|
7704 |
-
var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
|
7705 |
-
complete: fn || !fn && easing ||
|
7706 |
-
isFunction( speed ) && speed,
|
7707 |
-
duration: speed,
|
7708 |
-
easing: fn && easing || easing && !isFunction( easing ) && easing
|
7709 |
-
};
|
7710 |
-
|
7711 |
-
// Go to the end state if fx are off
|
7712 |
-
if ( jQuery.fx.off ) {
|
7713 |
-
opt.duration = 0;
|
7714 |
-
|
7715 |
-
} else {
|
7716 |
-
if ( typeof opt.duration !== "number" ) {
|
7717 |
-
if ( opt.duration in jQuery.fx.speeds ) {
|
7718 |
-
opt.duration = jQuery.fx.speeds[ opt.duration ];
|
7719 |
-
|
7720 |
-
} else {
|
7721 |
-
opt.duration = jQuery.fx.speeds._default;
|
7722 |
-
}
|
7723 |
-
}
|
7724 |
-
}
|
7725 |
-
|
7726 |
-
// Normalize opt.queue - true/undefined/null -> "fx"
|
7727 |
-
if ( opt.queue == null || opt.queue === true ) {
|
7728 |
-
opt.queue = "fx";
|
7729 |
-
}
|
7730 |
-
|
7731 |
-
// Queueing
|
7732 |
-
opt.old = opt.complete;
|
7733 |
-
|
7734 |
-
opt.complete = function() {
|
7735 |
-
if ( isFunction( opt.old ) ) {
|
7736 |
-
opt.old.call( this );
|
7737 |
-
}
|
7738 |
-
|
7739 |
-
if ( opt.queue ) {
|
7740 |
-
jQuery.dequeue( this, opt.queue );
|
7741 |
-
}
|
7742 |
-
};
|
7743 |
-
|
7744 |
-
return opt;
|
7745 |
-
};
|
7746 |
-
|
7747 |
-
jQuery.fn.extend( {
|
7748 |
-
fadeTo: function( speed, to, easing, callback ) {
|
7749 |
-
|
7750 |
-
// Show any hidden elements after setting opacity to 0
|
7751 |
-
return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
|
7752 |
-
|
7753 |
-
// Animate to the value specified
|
7754 |
-
.end().animate( { opacity: to }, speed, easing, callback );
|
7755 |
-
},
|
7756 |
-
animate: function( prop, speed, easing, callback ) {
|
7757 |
-
var empty = jQuery.isEmptyObject( prop ),
|
7758 |
-
optall = jQuery.speed( speed, easing, callback ),
|
7759 |
-
doAnimation = function() {
|
7760 |
-
|
7761 |
-
// Operate on a copy of prop so per-property easing won't be lost
|
7762 |
-
var anim = Animation( this, jQuery.extend( {}, prop ), optall );
|
7763 |
-
|
7764 |
-
// Empty animations, or finishing resolves immediately
|
7765 |
-
if ( empty || dataPriv.get( this, "finish" ) ) {
|
7766 |
-
anim.stop( true );
|
7767 |
-
}
|
7768 |
-
};
|
7769 |
-
|
7770 |
-
doAnimation.finish = doAnimation;
|
7771 |
-
|
7772 |
-
return empty || optall.queue === false ?
|
7773 |
-
this.each( doAnimation ) :
|
7774 |
-
this.queue( optall.queue, doAnimation );
|
7775 |
-
},
|
7776 |
-
stop: function( type, clearQueue, gotoEnd ) {
|
7777 |
-
var stopQueue = function( hooks ) {
|
7778 |
-
var stop = hooks.stop;
|
7779 |
-
delete hooks.stop;
|
7780 |
-
stop( gotoEnd );
|
7781 |
-
};
|
7782 |
-
|
7783 |
-
if ( typeof type !== "string" ) {
|
7784 |
-
gotoEnd = clearQueue;
|
7785 |
-
clearQueue = type;
|
7786 |
-
type = undefined;
|
7787 |
-
}
|
7788 |
-
if ( clearQueue ) {
|
7789 |
-
this.queue( type || "fx", [] );
|
7790 |
-
}
|
7791 |
-
|
7792 |
-
return this.each( function() {
|
7793 |
-
var dequeue = true,
|
7794 |
-
index = type != null && type + "queueHooks",
|
7795 |
-
timers = jQuery.timers,
|
7796 |
-
data = dataPriv.get( this );
|
7797 |
-
|
7798 |
-
if ( index ) {
|
7799 |
-
if ( data[ index ] && data[ index ].stop ) {
|
7800 |
-
stopQueue( data[ index ] );
|
7801 |
-
}
|
7802 |
-
} else {
|
7803 |
-
for ( index in data ) {
|
7804 |
-
if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
|
7805 |
-
stopQueue( data[ index ] );
|
7806 |
-
}
|
7807 |
-
}
|
7808 |
-
}
|
7809 |
-
|
7810 |
-
for ( index = timers.length; index--; ) {
|
7811 |
-
if ( timers[ index ].elem === this &&
|
7812 |
-
( type == null || timers[ index ].queue === type ) ) {
|
7813 |
-
|
7814 |
-
timers[ index ].anim.stop( gotoEnd );
|
7815 |
-
dequeue = false;
|
7816 |
-
timers.splice( index, 1 );
|
7817 |
-
}
|
7818 |
-
}
|
7819 |
-
|
7820 |
-
// Start the next in the queue if the last step wasn't forced.
|
7821 |
-
// Timers currently will call their complete callbacks, which
|
7822 |
-
// will dequeue but only if they were gotoEnd.
|
7823 |
-
if ( dequeue || !gotoEnd ) {
|
7824 |
-
jQuery.dequeue( this, type );
|
7825 |
-
}
|
7826 |
-
} );
|
7827 |
-
},
|
7828 |
-
finish: function( type ) {
|
7829 |
-
if ( type !== false ) {
|
7830 |
-
type = type || "fx";
|
7831 |
-
}
|
7832 |
-
return this.each( function() {
|
7833 |
-
var index,
|
7834 |
-
data = dataPriv.get( this ),
|
7835 |
-
queue = data[ type + "queue" ],
|
7836 |
-
hooks = data[ type + "queueHooks" ],
|
7837 |
-
timers = jQuery.timers,
|
7838 |
-
length = queue ? queue.length : 0;
|
7839 |
-
|
7840 |
-
// Enable finishing flag on private data
|
7841 |
-
data.finish = true;
|
7842 |
-
|
7843 |
-
// Empty the queue first
|
7844 |
-
jQuery.queue( this, type, [] );
|
7845 |
-
|
7846 |
-
if ( hooks && hooks.stop ) {
|
7847 |
-
hooks.stop.call( this, true );
|
7848 |
-
}
|
7849 |
-
|
7850 |
-
// Look for any active animations, and finish them
|
7851 |
-
for ( index = timers.length; index--; ) {
|
7852 |
-
if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
|
7853 |
-
timers[ index ].anim.stop( true );
|
7854 |
-
timers.splice( index, 1 );
|
7855 |
-
}
|
7856 |
-
}
|
7857 |
-
|
7858 |
-
// Look for any animations in the old queue and finish them
|
7859 |
-
for ( index = 0; index < length; index++ ) {
|
7860 |
-
if ( queue[ index ] && queue[ index ].finish ) {
|
7861 |
-
queue[ index ].finish.call( this );
|
7862 |
-
}
|
7863 |
-
}
|
7864 |
-
|
7865 |
-
// Turn off finishing flag
|
7866 |
-
delete data.finish;
|
7867 |
-
} );
|
7868 |
-
}
|
7869 |
-
} );
|
7870 |
-
|
7871 |
-
jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) {
|
7872 |
-
var cssFn = jQuery.fn[ name ];
|
7873 |
-
jQuery.fn[ name ] = function( speed, easing, callback ) {
|
7874 |
-
return speed == null || typeof speed === "boolean" ?
|
7875 |
-
cssFn.apply( this, arguments ) :
|
7876 |
-
this.animate( genFx( name, true ), speed, easing, callback );
|
7877 |
-
};
|
7878 |
-
} );
|
7879 |
-
|
7880 |
-
// Generate shortcuts for custom animations
|
7881 |
-
jQuery.each( {
|
7882 |
-
slideDown: genFx( "show" ),
|
7883 |
-
slideUp: genFx( "hide" ),
|
7884 |
-
slideToggle: genFx( "toggle" ),
|
7885 |
-
fadeIn: { opacity: "show" },
|
7886 |
-
fadeOut: { opacity: "hide" },
|
7887 |
-
fadeToggle: { opacity: "toggle" }
|
7888 |
-
}, function( name, props ) {
|
7889 |
-
jQuery.fn[ name ] = function( speed, easing, callback ) {
|
7890 |
-
return this.animate( props, speed, easing, callback );
|
7891 |
-
};
|
7892 |
-
} );
|
7893 |
-
|
7894 |
-
jQuery.timers = [];
|
7895 |
-
jQuery.fx.tick = function() {
|
7896 |
-
var timer,
|
7897 |
-
i = 0,
|
7898 |
-
timers = jQuery.timers;
|
7899 |
-
|
7900 |
-
fxNow = Date.now();
|
7901 |
-
|
7902 |
-
for ( ; i < timers.length; i++ ) {
|
7903 |
-
timer = timers[ i ];
|
7904 |
-
|
7905 |
-
// Run the timer and safely remove it when done (allowing for external removal)
|
7906 |
-
if ( !timer() && timers[ i ] === timer ) {
|
7907 |
-
timers.splice( i--, 1 );
|
7908 |
-
}
|
7909 |
-
}
|
7910 |
-
|
7911 |
-
if ( !timers.length ) {
|
7912 |
-
jQuery.fx.stop();
|
7913 |
-
}
|
7914 |
-
fxNow = undefined;
|
7915 |
-
};
|
7916 |
-
|
7917 |
-
jQuery.fx.timer = function( timer ) {
|
7918 |
-
jQuery.timers.push( timer );
|
7919 |
-
jQuery.fx.start();
|
7920 |
-
};
|
7921 |
-
|
7922 |
-
jQuery.fx.interval = 13;
|
7923 |
-
jQuery.fx.start = function() {
|
7924 |
-
if ( inProgress ) {
|
7925 |
-
return;
|
7926 |
-
}
|
7927 |
-
|
7928 |
-
inProgress = true;
|
7929 |
-
schedule();
|
7930 |
-
};
|
7931 |
-
|
7932 |
-
jQuery.fx.stop = function() {
|
7933 |
-
inProgress = null;
|
7934 |
-
};
|
7935 |
-
|
7936 |
-
jQuery.fx.speeds = {
|
7937 |
-
slow: 600,
|
7938 |
-
fast: 200,
|
7939 |
-
|
7940 |
-
// Default speed
|
7941 |
-
_default: 400
|
7942 |
-
};
|
7943 |
-
|
7944 |
-
|
7945 |
-
// Based off of the plugin by Clint Helfers, with permission.
|
7946 |
-
// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
|
7947 |
-
jQuery.fn.delay = function( time, type ) {
|
7948 |
-
time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
|
7949 |
-
type = type || "fx";
|
7950 |
-
|
7951 |
-
return this.queue( type, function( next, hooks ) {
|
7952 |
-
var timeout = window.setTimeout( next, time );
|
7953 |
-
hooks.stop = function() {
|
7954 |
-
window.clearTimeout( timeout );
|
7955 |
-
};
|
7956 |
-
} );
|
7957 |
-
};
|
7958 |
-
|
7959 |
-
|
7960 |
-
( function() {
|
7961 |
-
var input = document.createElement( "input" ),
|
7962 |
-
select = document.createElement( "select" ),
|
7963 |
-
opt = select.appendChild( document.createElement( "option" ) );
|
7964 |
-
|
7965 |
-
input.type = "checkbox";
|
7966 |
-
|
7967 |
-
// Support: Android <=4.3 only
|
7968 |
-
// Default value for a checkbox should be "on"
|
7969 |
-
support.checkOn = input.value !== "";
|
7970 |
-
|
7971 |
-
// Support: IE <=11 only
|
7972 |
-
// Must access selectedIndex to make default options select
|
7973 |
-
support.optSelected = opt.selected;
|
7974 |
-
|
7975 |
-
// Support: IE <=11 only
|
7976 |
-
// An input loses its value after becoming a radio
|
7977 |
-
input = document.createElement( "input" );
|
7978 |
-
input.value = "t";
|
7979 |
-
input.type = "radio";
|
7980 |
-
support.radioValue = input.value === "t";
|
7981 |
-
} )();
|
7982 |
-
|
7983 |
-
|
7984 |
-
var boolHook,
|
7985 |
-
attrHandle = jQuery.expr.attrHandle;
|
7986 |
-
|
7987 |
-
jQuery.fn.extend( {
|
7988 |
-
attr: function( name, value ) {
|
7989 |
-
return access( this, jQuery.attr, name, value, arguments.length > 1 );
|
7990 |
-
},
|
7991 |
-
|
7992 |
-
removeAttr: function( name ) {
|
7993 |
-
return this.each( function() {
|
7994 |
-
jQuery.removeAttr( this, name );
|
7995 |
-
} );
|
7996 |
-
}
|
7997 |
-
} );
|
7998 |
-
|
7999 |
-
jQuery.extend( {
|
8000 |
-
attr: function( elem, name, value ) {
|
8001 |
-
var ret, hooks,
|
8002 |
-
nType = elem.nodeType;
|
8003 |
-
|
8004 |
-
// Don't get/set attributes on text, comment and attribute nodes
|
8005 |
-
if ( nType === 3 || nType === 8 || nType === 2 ) {
|
8006 |
-
return;
|
8007 |
-
}
|
8008 |
-
|
8009 |
-
// Fallback to prop when attributes are not supported
|
8010 |
-
if ( typeof elem.getAttribute === "undefined" ) {
|
8011 |
-
return jQuery.prop( elem, name, value );
|
8012 |
-
}
|
8013 |
-
|
8014 |
-
// Attribute hooks are determined by the lowercase version
|
8015 |
-
// Grab necessary hook if one is defined
|
8016 |
-
if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
|
8017 |
-
hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
|
8018 |
-
( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
|
8019 |
-
}
|
8020 |
-
|
8021 |
-
if ( value !== undefined ) {
|
8022 |
-
if ( value === null ) {
|
8023 |
-
jQuery.removeAttr( elem, name );
|
8024 |
-
return;
|
8025 |
-
}
|
8026 |
-
|
8027 |
-
if ( hooks && "set" in hooks &&
|
8028 |
-
( ret = hooks.set( elem, value, name ) ) !== undefined ) {
|
8029 |
-
return ret;
|
8030 |
-
}
|
8031 |
-
|
8032 |
-
elem.setAttribute( name, value + "" );
|
8033 |
-
return value;
|
8034 |
-
}
|
8035 |
-
|
8036 |
-
if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
|
8037 |
-
return ret;
|
8038 |
-
}
|
8039 |
-
|
8040 |
-
ret = jQuery.find.attr( elem, name );
|
8041 |
-
|
8042 |
-
// Non-existent attributes return null, we normalize to undefined
|
8043 |
-
return ret == null ? undefined : ret;
|
8044 |
-
},
|
8045 |
-
|
8046 |
-
attrHooks: {
|
8047 |
-
type: {
|
8048 |
-
set: function( elem, value ) {
|
8049 |
-
if ( !support.radioValue && value === "radio" &&
|
8050 |
-
nodeName( elem, "input" ) ) {
|
8051 |
-
var val = elem.value;
|
8052 |
-
elem.setAttribute( "type", value );
|
8053 |
-
if ( val ) {
|
8054 |
-
elem.value = val;
|
8055 |
-
}
|
8056 |
-
return value;
|
8057 |
-
}
|
8058 |
-
}
|
8059 |
-
}
|
8060 |
-
},
|
8061 |
-
|
8062 |
-
removeAttr: function( elem, value ) {
|
8063 |
-
var name,
|
8064 |
-
i = 0,
|
8065 |
-
|
8066 |
-
// Attribute names can contain non-HTML whitespace characters
|
8067 |
-
// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
|
8068 |
-
attrNames = value && value.match( rnothtmlwhite );
|
8069 |
-
|
8070 |
-
if ( attrNames && elem.nodeType === 1 ) {
|
8071 |
-
while ( ( name = attrNames[ i++ ] ) ) {
|
8072 |
-
elem.removeAttribute( name );
|
8073 |
-
}
|
8074 |
-
}
|
8075 |
-
}
|
8076 |
-
} );
|
8077 |
-
|
8078 |
-
// Hooks for boolean attributes
|
8079 |
-
boolHook = {
|
8080 |
-
set: function( elem, value, name ) {
|
8081 |
-
if ( value === false ) {
|
8082 |
-
|
8083 |
-
// Remove boolean attributes when set to false
|
8084 |
-
jQuery.removeAttr( elem, name );
|
8085 |
-
} else {
|
8086 |
-
elem.setAttribute( name, name );
|
8087 |
-
}
|
8088 |
-
return name;
|
8089 |
-
}
|
8090 |
-
};
|
8091 |
-
|
8092 |
-
jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) {
|
8093 |
-
var getter = attrHandle[ name ] || jQuery.find.attr;
|
8094 |
-
|
8095 |
-
attrHandle[ name ] = function( elem, name, isXML ) {
|
8096 |
-
var ret, handle,
|
8097 |
-
lowercaseName = name.toLowerCase();
|
8098 |
-
|
8099 |
-
if ( !isXML ) {
|
8100 |
-
|
8101 |
-
// Avoid an infinite loop by temporarily removing this function from the getter
|
8102 |
-
handle = attrHandle[ lowercaseName ];
|
8103 |
-
attrHandle[ lowercaseName ] = ret;
|
8104 |
-
ret = getter( elem, name, isXML ) != null ?
|
8105 |
-
lowercaseName :
|
8106 |
-
null;
|
8107 |
-
attrHandle[ lowercaseName ] = handle;
|
8108 |
-
}
|
8109 |
-
return ret;
|
8110 |
-
};
|
8111 |
-
} );
|
8112 |
-
|
8113 |
-
|
8114 |
-
|
8115 |
-
|
8116 |
-
var rfocusable = /^(?:input|select|textarea|button)$/i,
|
8117 |
-
rclickable = /^(?:a|area)$/i;
|
8118 |
-
|
8119 |
-
jQuery.fn.extend( {
|
8120 |
-
prop: function( name, value ) {
|
8121 |
-
return access( this, jQuery.prop, name, value, arguments.length > 1 );
|
8122 |
-
},
|
8123 |
-
|
8124 |
-
removeProp: function( name ) {
|
8125 |
-
return this.each( function() {
|
8126 |
-
delete this[ jQuery.propFix[ name ] || name ];
|
8127 |
-
} );
|
8128 |
-
}
|
8129 |
-
} );
|
8130 |
-
|
8131 |
-
jQuery.extend( {
|
8132 |
-
prop: function( elem, name, value ) {
|
8133 |
-
var ret, hooks,
|
8134 |
-
nType = elem.nodeType;
|
8135 |
-
|
8136 |
-
// Don't get/set properties on text, comment and attribute nodes
|
8137 |
-
if ( nType === 3 || nType === 8 || nType === 2 ) {
|
8138 |
-
return;
|
8139 |
-
}
|
8140 |
-
|
8141 |
-
if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
|
8142 |
-
|
8143 |
-
// Fix name and attach hooks
|
8144 |
-
name = jQuery.propFix[ name ] || name;
|
8145 |
-
hooks = jQuery.propHooks[ name ];
|
8146 |
-
}
|
8147 |
-
|
8148 |
-
if ( value !== undefined ) {
|
8149 |
-
if ( hooks && "set" in hooks &&
|
8150 |
-
( ret = hooks.set( elem, value, name ) ) !== undefined ) {
|
8151 |
-
return ret;
|
8152 |
-
}
|
8153 |
-
|
8154 |
-
return ( elem[ name ] = value );
|
8155 |
-
}
|
8156 |
-
|
8157 |
-
if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
|
8158 |
-
return ret;
|
8159 |
-
}
|
8160 |
-
|
8161 |
-
return elem[ name ];
|
8162 |
-
},
|
8163 |
-
|
8164 |
-
propHooks: {
|
8165 |
-
tabIndex: {
|
8166 |
-
get: function( elem ) {
|
8167 |
-
|
8168 |
-
// Support: IE <=9 - 11 only
|
8169 |
-
// elem.tabIndex doesn't always return the
|
8170 |
-
// correct value when it hasn't been explicitly set
|
8171 |
-
// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
|
8172 |
-
// Use proper attribute retrieval(#12072)
|
8173 |
-
var tabindex = jQuery.find.attr( elem, "tabindex" );
|
8174 |
-
|
8175 |
-
if ( tabindex ) {
|
8176 |
-
return parseInt( tabindex, 10 );
|
8177 |
-
}
|
8178 |
-
|
8179 |
-
if (
|
8180 |
-
rfocusable.test( elem.nodeName ) ||
|
8181 |
-
rclickable.test( elem.nodeName ) &&
|
8182 |
-
elem.href
|
8183 |
-
) {
|
8184 |
-
return 0;
|
8185 |
-
}
|
8186 |
-
|
8187 |
-
return -1;
|
8188 |
-
}
|
8189 |
-
}
|
8190 |
-
},
|
8191 |
-
|
8192 |
-
propFix: {
|
8193 |
-
"for": "htmlFor",
|
8194 |
-
"class": "className"
|
8195 |
-
}
|
8196 |
-
} );
|
8197 |
-
|
8198 |
-
// Support: IE <=11 only
|
8199 |
-
// Accessing the selectedIndex property
|
8200 |
-
// forces the browser to respect setting selected
|
8201 |
-
// on the option
|
8202 |
-
// The getter ensures a default option is selected
|
8203 |
-
// when in an optgroup
|
8204 |
-
// eslint rule "no-unused-expressions" is disabled for this code
|
8205 |
-
// since it considers such accessions noop
|
8206 |
-
if ( !support.optSelected ) {
|
8207 |
-
jQuery.propHooks.selected = {
|
8208 |
-
get: function( elem ) {
|
8209 |
-
|
8210 |
-
/* eslint no-unused-expressions: "off" */
|
8211 |
-
|
8212 |
-
var parent = elem.parentNode;
|
8213 |
-
if ( parent && parent.parentNode ) {
|
8214 |
-
parent.parentNode.selectedIndex;
|
8215 |
-
}
|
8216 |
-
return null;
|
8217 |
-
},
|
8218 |
-
set: function( elem ) {
|
8219 |
-
|
8220 |
-
/* eslint no-unused-expressions: "off" */
|
8221 |
-
|
8222 |
-
var parent = elem.parentNode;
|
8223 |
-
if ( parent ) {
|
8224 |
-
parent.selectedIndex;
|
8225 |
-
|
8226 |
-
if ( parent.parentNode ) {
|
8227 |
-
parent.parentNode.selectedIndex;
|
8228 |
-
}
|
8229 |
-
}
|
8230 |
-
}
|
8231 |
-
};
|
8232 |
-
}
|
8233 |
-
|
8234 |
-
jQuery.each( [
|
8235 |
-
"tabIndex",
|
8236 |
-
"readOnly",
|
8237 |
-
"maxLength",
|
8238 |
-
"cellSpacing",
|
8239 |
-
"cellPadding",
|
8240 |
-
"rowSpan",
|
8241 |
-
"colSpan",
|
8242 |
-
"useMap",
|
8243 |
-
"frameBorder",
|
8244 |
-
"contentEditable"
|
8245 |
-
], function() {
|
8246 |
-
jQuery.propFix[ this.toLowerCase() ] = this;
|
8247 |
-
} );
|
8248 |
-
|
8249 |
-
|
8250 |
-
|
8251 |
-
|
8252 |
-
// Strip and collapse whitespace according to HTML spec
|
8253 |
-
// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
|
8254 |
-
function stripAndCollapse( value ) {
|
8255 |
-
var tokens = value.match( rnothtmlwhite ) || [];
|
8256 |
-
return tokens.join( " " );
|
8257 |
-
}
|
8258 |
-
|
8259 |
-
|
8260 |
-
function getClass( elem ) {
|
8261 |
-
return elem.getAttribute && elem.getAttribute( "class" ) || "";
|
8262 |
-
}
|
8263 |
-
|
8264 |
-
function classesToArray( value ) {
|
8265 |
-
if ( Array.isArray( value ) ) {
|
8266 |
-
return value;
|
8267 |
-
}
|
8268 |
-
if ( typeof value === "string" ) {
|
8269 |
-
return value.match( rnothtmlwhite ) || [];
|
8270 |
-
}
|
8271 |
-
return [];
|
8272 |
-
}
|
8273 |
-
|
8274 |
-
jQuery.fn.extend( {
|
8275 |
-
addClass: function( value ) {
|
8276 |
-
var classes, elem, cur, curValue, clazz, j, finalValue,
|
8277 |
-
i = 0;
|
8278 |
-
|
8279 |
-
if ( isFunction( value ) ) {
|
8280 |
-
return this.each( function( j ) {
|
8281 |
-
jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
|
8282 |
-
} );
|
8283 |
-
}
|
8284 |
-
|
8285 |
-
classes = classesToArray( value );
|
8286 |
-
|
8287 |
-
if ( classes.length ) {
|
8288 |
-
while ( ( elem = this[ i++ ] ) ) {
|
8289 |
-
curValue = getClass( elem );
|
8290 |
-
cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
|
8291 |
-
|
8292 |
-
if ( cur ) {
|
8293 |
-
j = 0;
|
8294 |
-
while ( ( clazz = classes[ j++ ] ) ) {
|
8295 |
-
if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
|
8296 |
-
cur += clazz + " ";
|
8297 |
-
}
|
8298 |
-
}
|
8299 |
-
|
8300 |
-
// Only assign if different to avoid unneeded rendering.
|
8301 |
-
finalValue = stripAndCollapse( cur );
|
8302 |
-
if ( curValue !== finalValue ) {
|
8303 |
-
elem.setAttribute( "class", finalValue );
|
8304 |
-
}
|
8305 |
-
}
|
8306 |
-
}
|
8307 |
-
}
|
8308 |
-
|
8309 |
-
return this;
|
8310 |
-
},
|
8311 |
-
|
8312 |
-
removeClass: function( value ) {
|
8313 |
-
var classes, elem, cur, curValue, clazz, j, finalValue,
|
8314 |
-
i = 0;
|
8315 |
-
|
8316 |
-
if ( isFunction( value ) ) {
|
8317 |
-
return this.each( function( j ) {
|
8318 |
-
jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
|
8319 |
-
} );
|
8320 |
-
}
|
8321 |
-
|
8322 |
-
if ( !arguments.length ) {
|
8323 |
-
return this.attr( "class", "" );
|
8324 |
-
}
|
8325 |
-
|
8326 |
-
classes = classesToArray( value );
|
8327 |
-
|
8328 |
-
if ( classes.length ) {
|
8329 |
-
while ( ( elem = this[ i++ ] ) ) {
|
8330 |
-
curValue = getClass( elem );
|
8331 |
-
|
8332 |
-
// This expression is here for better compressibility (see addClass)
|
8333 |
-
cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
|
8334 |
-
|
8335 |
-
if ( cur ) {
|
8336 |
-
j = 0;
|
8337 |
-
while ( ( clazz = classes[ j++ ] ) ) {
|
8338 |
-
|
8339 |
-
// Remove *all* instances
|
8340 |
-
while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
|
8341 |
-
cur = cur.replace( " " + clazz + " ", " " );
|
8342 |
-
}
|
8343 |
-
}
|
8344 |
-
|
8345 |
-
// Only assign if different to avoid unneeded rendering.
|
8346 |
-
finalValue = stripAndCollapse( cur );
|
8347 |
-
if ( curValue !== finalValue ) {
|
8348 |
-
elem.setAttribute( "class", finalValue );
|
8349 |
-
}
|
8350 |
-
}
|
8351 |
-
}
|
8352 |
-
}
|
8353 |
-
|
8354 |
-
return this;
|
8355 |
-
},
|
8356 |
-
|
8357 |
-
toggleClass: function( value, stateVal ) {
|
8358 |
-
var type = typeof value,
|
8359 |
-
isValidValue = type === "string" || Array.isArray( value );
|
8360 |
-
|
8361 |
-
if ( typeof stateVal === "boolean" && isValidValue ) {
|
8362 |
-
return stateVal ? this.addClass( value ) : this.removeClass( value );
|
8363 |
-
}
|
8364 |
-
|
8365 |
-
if ( isFunction( value ) ) {
|
8366 |
-
return this.each( function( i ) {
|
8367 |
-
jQuery( this ).toggleClass(
|
8368 |
-
value.call( this, i, getClass( this ), stateVal ),
|
8369 |
-
stateVal
|
8370 |
-
);
|
8371 |
-
} );
|
8372 |
-
}
|
8373 |
-
|
8374 |
-
return this.each( function() {
|
8375 |
-
var className, i, self, classNames;
|
8376 |
-
|
8377 |
-
if ( isValidValue ) {
|
8378 |
-
|
8379 |
-
// Toggle individual class names
|
8380 |
-
i = 0;
|
8381 |
-
self = jQuery( this );
|
8382 |
-
classNames = classesToArray( value );
|
8383 |
-
|
8384 |
-
while ( ( className = classNames[ i++ ] ) ) {
|
8385 |
-
|
8386 |
-
// Check each className given, space separated list
|
8387 |
-
if ( self.hasClass( className ) ) {
|
8388 |
-
self.removeClass( className );
|
8389 |
-
} else {
|
8390 |
-
self.addClass( className );
|
8391 |
-
}
|
8392 |
-
}
|
8393 |
-
|
8394 |
-
// Toggle whole class name
|
8395 |
-
} else if ( value === undefined || type === "boolean" ) {
|
8396 |
-
className = getClass( this );
|
8397 |
-
if ( className ) {
|
8398 |
-
|
8399 |
-
// Store className if set
|
8400 |
-
dataPriv.set( this, "__className__", className );
|
8401 |
-
}
|
8402 |
-
|
8403 |
-
// If the element has a class name or if we're passed `false`,
|
8404 |
-
// then remove the whole classname (if there was one, the above saved it).
|
8405 |
-
// Otherwise bring back whatever was previously saved (if anything),
|
8406 |
-
// falling back to the empty string if nothing was stored.
|
8407 |
-
if ( this.setAttribute ) {
|
8408 |
-
this.setAttribute( "class",
|
8409 |
-
className || value === false ?
|
8410 |
-
"" :
|
8411 |
-
dataPriv.get( this, "__className__" ) || ""
|
8412 |
-
);
|
8413 |
-
}
|
8414 |
-
}
|
8415 |
-
} );
|
8416 |
-
},
|
8417 |
-
|
8418 |
-
hasClass: function( selector ) {
|
8419 |
-
var className, elem,
|
8420 |
-
i = 0;
|
8421 |
-
|
8422 |
-
className = " " + selector + " ";
|
8423 |
-
while ( ( elem = this[ i++ ] ) ) {
|
8424 |
-
if ( elem.nodeType === 1 &&
|
8425 |
-
( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
|
8426 |
-
return true;
|
8427 |
-
}
|
8428 |
-
}
|
8429 |
-
|
8430 |
-
return false;
|
8431 |
-
}
|
8432 |
-
} );
|
8433 |
-
|
8434 |
-
|
8435 |
-
|
8436 |
-
|
8437 |
-
var rreturn = /\r/g;
|
8438 |
-
|
8439 |
-
jQuery.fn.extend( {
|
8440 |
-
val: function( value ) {
|
8441 |
-
var hooks, ret, valueIsFunction,
|
8442 |
-
elem = this[ 0 ];
|
8443 |
-
|
8444 |
-
if ( !arguments.length ) {
|
8445 |
-
if ( elem ) {
|
8446 |
-
hooks = jQuery.valHooks[ elem.type ] ||
|
8447 |
-
jQuery.valHooks[ elem.nodeName.toLowerCase() ];
|
8448 |
-
|
8449 |
-
if ( hooks &&
|
8450 |
-
"get" in hooks &&
|
8451 |
-
( ret = hooks.get( elem, "value" ) ) !== undefined
|
8452 |
-
) {
|
8453 |
-
return ret;
|
8454 |
-
}
|
8455 |
-
|
8456 |
-
ret = elem.value;
|
8457 |
-
|
8458 |
-
// Handle most common string cases
|
8459 |
-
if ( typeof ret === "string" ) {
|
8460 |
-
return ret.replace( rreturn, "" );
|
8461 |
-
}
|
8462 |
-
|
8463 |
-
// Handle cases where value is null/undef or number
|
8464 |
-
return ret == null ? "" : ret;
|
8465 |
-
}
|
8466 |
-
|
8467 |
-
return;
|
8468 |
-
}
|
8469 |
-
|
8470 |
-
valueIsFunction = isFunction( value );
|
8471 |
-
|
8472 |
-
return this.each( function( i ) {
|
8473 |
-
var val;
|
8474 |
-
|
8475 |
-
if ( this.nodeType !== 1 ) {
|
8476 |
-
return;
|
8477 |
-
}
|
8478 |
-
|
8479 |
-
if ( valueIsFunction ) {
|
8480 |
-
val = value.call( this, i, jQuery( this ).val() );
|
8481 |
-
} else {
|
8482 |
-
val = value;
|
8483 |
-
}
|
8484 |
-
|
8485 |
-
// Treat null/undefined as ""; convert numbers to string
|
8486 |
-
if ( val == null ) {
|
8487 |
-
val = "";
|
8488 |
-
|
8489 |
-
} else if ( typeof val === "number" ) {
|
8490 |
-
val += "";
|
8491 |
-
|
8492 |
-
} else if ( Array.isArray( val ) ) {
|
8493 |
-
val = jQuery.map( val, function( value ) {
|
8494 |
-
return value == null ? "" : value + "";
|
8495 |
-
} );
|
8496 |
-
}
|
8497 |
-
|
8498 |
-
hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
|
8499 |
-
|
8500 |
-
// If set returns undefined, fall back to normal setting
|
8501 |
-
if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
|
8502 |
-
this.value = val;
|
8503 |
-
}
|
8504 |
-
} );
|
8505 |
-
}
|
8506 |
-
} );
|
8507 |
-
|
8508 |
-
jQuery.extend( {
|
8509 |
-
valHooks: {
|
8510 |
-
option: {
|
8511 |
-
get: function( elem ) {
|
8512 |
-
|
8513 |
-
var val = jQuery.find.attr( elem, "value" );
|
8514 |
-
return val != null ?
|
8515 |
-
val :
|
8516 |
-
|
8517 |
-
// Support: IE <=10 - 11 only
|
8518 |
-
// option.text throws exceptions (#14686, #14858)
|
8519 |
-
// Strip and collapse whitespace
|
8520 |
-
// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
|
8521 |
-
stripAndCollapse( jQuery.text( elem ) );
|
8522 |
-
}
|
8523 |
-
},
|
8524 |
-
select: {
|
8525 |
-
get: function( elem ) {
|
8526 |
-
var value, option, i,
|
8527 |
-
options = elem.options,
|
8528 |
-
index = elem.selectedIndex,
|
8529 |
-
one = elem.type === "select-one",
|
8530 |
-
values = one ? null : [],
|
8531 |
-
max = one ? index + 1 : options.length;
|
8532 |
-
|
8533 |
-
if ( index < 0 ) {
|
8534 |
-
i = max;
|
8535 |
-
|
8536 |
-
} else {
|
8537 |
-
i = one ? index : 0;
|
8538 |
-
}
|
8539 |
-
|
8540 |
-
// Loop through all the selected options
|
8541 |
-
for ( ; i < max; i++ ) {
|
8542 |
-
option = options[ i ];
|
8543 |
-
|
8544 |
-
// Support: IE <=9 only
|
8545 |
-
// IE8-9 doesn't update selected after form reset (#2551)
|
8546 |
-
if ( ( option.selected || i === index ) &&
|
8547 |
-
|
8548 |
-
// Don't return options that are disabled or in a disabled optgroup
|
8549 |
-
!option.disabled &&
|
8550 |
-
( !option.parentNode.disabled ||
|
8551 |
-
!nodeName( option.parentNode, "optgroup" ) ) ) {
|
8552 |
-
|
8553 |
-
// Get the specific value for the option
|
8554 |
-
value = jQuery( option ).val();
|
8555 |
-
|
8556 |
-
// We don't need an array for one selects
|
8557 |
-
if ( one ) {
|
8558 |
-
return value;
|
8559 |
-
}
|
8560 |
-
|
8561 |
-
// Multi-Selects return an array
|
8562 |
-
values.push( value );
|
8563 |
-
}
|
8564 |
-
}
|
8565 |
-
|
8566 |
-
return values;
|
8567 |
-
},
|
8568 |
-
|
8569 |
-
set: function( elem, value ) {
|
8570 |
-
var optionSet, option,
|
8571 |
-
options = elem.options,
|
8572 |
-
values = jQuery.makeArray( value ),
|
8573 |
-
i = options.length;
|
8574 |
-
|
8575 |
-
while ( i-- ) {
|
8576 |
-
option = options[ i ];
|
8577 |
-
|
8578 |
-
/* eslint-disable no-cond-assign */
|
8579 |
-
|
8580 |
-
if ( option.selected =
|
8581 |
-
jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
|
8582 |
-
) {
|
8583 |
-
optionSet = true;
|
8584 |
-
}
|
8585 |
-
|
8586 |
-
/* eslint-enable no-cond-assign */
|
8587 |
-
}
|
8588 |
-
|
8589 |
-
// Force browsers to behave consistently when non-matching value is set
|
8590 |
-
if ( !optionSet ) {
|
8591 |
-
elem.selectedIndex = -1;
|
8592 |
-
}
|
8593 |
-
return values;
|
8594 |
-
}
|
8595 |
-
}
|
8596 |
-
}
|
8597 |
-
} );
|
8598 |
-
|
8599 |
-
// Radios and checkboxes getter/setter
|
8600 |
-
jQuery.each( [ "radio", "checkbox" ], function() {
|
8601 |
-
jQuery.valHooks[ this ] = {
|
8602 |
-
set: function( elem, value ) {
|
8603 |
-
if ( Array.isArray( value ) ) {
|
8604 |
-
return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
|
8605 |
-
}
|
8606 |
-
}
|
8607 |
-
};
|
8608 |
-
if ( !support.checkOn ) {
|
8609 |
-
jQuery.valHooks[ this ].get = function( elem ) {
|
8610 |
-
return elem.getAttribute( "value" ) === null ? "on" : elem.value;
|
8611 |
-
};
|
8612 |
-
}
|
8613 |
-
} );
|
8614 |
-
|
8615 |
-
|
8616 |
-
|
8617 |
-
|
8618 |
-
// Return jQuery for attributes-only inclusion
|
8619 |
-
|
8620 |
-
|
8621 |
-
support.focusin = "onfocusin" in window;
|
8622 |
-
|
8623 |
-
|
8624 |
-
var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
|
8625 |
-
stopPropagationCallback = function( e ) {
|
8626 |
-
e.stopPropagation();
|
8627 |
-
};
|
8628 |
-
|
8629 |
-
jQuery.extend( jQuery.event, {
|
8630 |
-
|
8631 |
-
trigger: function( event, data, elem, onlyHandlers ) {
|
8632 |
-
|
8633 |
-
var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
|
8634 |
-
eventPath = [ elem || document ],
|
8635 |
-
type = hasOwn.call( event, "type" ) ? event.type : event,
|
8636 |
-
namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
|
8637 |
-
|
8638 |
-
cur = lastElement = tmp = elem = elem || document;
|
8639 |
-
|
8640 |
-
// Don't do events on text and comment nodes
|
8641 |
-
if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
|
8642 |
-
return;
|
8643 |
-
}
|
8644 |
-
|
8645 |
-
// focus/blur morphs to focusin/out; ensure we're not firing them right now
|
8646 |
-
if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
|
8647 |
-
return;
|
8648 |
-
}
|
8649 |
-
|
8650 |
-
if ( type.indexOf( "." ) > -1 ) {
|
8651 |
-
|
8652 |
-
// Namespaced trigger; create a regexp to match event type in handle()
|
8653 |
-
namespaces = type.split( "." );
|
8654 |
-
type = namespaces.shift();
|
8655 |
-
namespaces.sort();
|
8656 |
-
}
|
8657 |
-
ontype = type.indexOf( ":" ) < 0 && "on" + type;
|
8658 |
-
|
8659 |
-
// Caller can pass in a jQuery.Event object, Object, or just an event type string
|
8660 |
-
event = event[ jQuery.expando ] ?
|
8661 |
-
event :
|
8662 |
-
new jQuery.Event( type, typeof event === "object" && event );
|
8663 |
-
|
8664 |
-
// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
|
8665 |
-
event.isTrigger = onlyHandlers ? 2 : 3;
|
8666 |
-
event.namespace = namespaces.join( "." );
|
8667 |
-
event.rnamespace = event.namespace ?
|
8668 |
-
new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
|
8669 |
-
null;
|
8670 |
-
|
8671 |
-
// Clean up the event in case it is being reused
|
8672 |
-
event.result = undefined;
|
8673 |
-
if ( !event.target ) {
|
8674 |
-
event.target = elem;
|
8675 |
-
}
|
8676 |
-
|
8677 |
-
// Clone any incoming data and prepend the event, creating the handler arg list
|
8678 |
-
data = data == null ?
|
8679 |
-
[ event ] :
|
8680 |
-
jQuery.makeArray( data, [ event ] );
|
8681 |
-
|
8682 |
-
// Allow special events to draw outside the lines
|
8683 |
-
special = jQuery.event.special[ type ] || {};
|
8684 |
-
if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
|
8685 |
-
return;
|
8686 |
-
}
|
8687 |
-
|
8688 |
-
// Determine event propagation path in advance, per W3C events spec (#9951)
|
8689 |
-
// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
|
8690 |
-
if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
|
8691 |
-
|
8692 |
-
bubbleType = special.delegateType || type;
|
8693 |
-
if ( !rfocusMorph.test( bubbleType + type ) ) {
|
8694 |
-
cur = cur.parentNode;
|
8695 |
-
}
|
8696 |
-
for ( ; cur; cur = cur.parentNode ) {
|
8697 |
-
eventPath.push( cur );
|
8698 |
-
tmp = cur;
|
8699 |
-
}
|
8700 |
-
|
8701 |
-
// Only add window if we got to document (e.g., not plain obj or detached DOM)
|
8702 |
-
if ( tmp === ( elem.ownerDocument || document ) ) {
|
8703 |
-
eventPath.push( tmp.defaultView || tmp.parentWindow || window );
|
8704 |
-
}
|
8705 |
-
}
|
8706 |
-
|
8707 |
-
// Fire handlers on the event path
|
8708 |
-
i = 0;
|
8709 |
-
while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
|
8710 |
-
lastElement = cur;
|
8711 |
-
event.type = i > 1 ?
|
8712 |
-
bubbleType :
|
8713 |
-
special.bindType || type;
|
8714 |
-
|
8715 |
-
// jQuery handler
|
8716 |
-
handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] &&
|
8717 |
-
dataPriv.get( cur, "handle" );
|
8718 |
-
if ( handle ) {
|
8719 |
-
handle.apply( cur, data );
|
8720 |
-
}
|
8721 |
-
|
8722 |
-
// Native handler
|
8723 |
-
handle = ontype && cur[ ontype ];
|
8724 |
-
if ( handle && handle.apply && acceptData( cur ) ) {
|
8725 |
-
event.result = handle.apply( cur, data );
|
8726 |
-
if ( event.result === false ) {
|
8727 |
-
event.preventDefault();
|
8728 |
-
}
|
8729 |
-
}
|
8730 |
-
}
|
8731 |
-
event.type = type;
|
8732 |
-
|
8733 |
-
// If nobody prevented the default action, do it now
|
8734 |
-
if ( !onlyHandlers && !event.isDefaultPrevented() ) {
|
8735 |
-
|
8736 |
-
if ( ( !special._default ||
|
8737 |
-
special._default.apply( eventPath.pop(), data ) === false ) &&
|
8738 |
-
acceptData( elem ) ) {
|
8739 |
-
|
8740 |
-
// Call a native DOM method on the target with the same name as the event.
|
8741 |
-
// Don't do default actions on window, that's where global variables be (#6170)
|
8742 |
-
if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
|
8743 |
-
|
8744 |
-
// Don't re-trigger an onFOO event when we call its FOO() method
|
8745 |
-
tmp = elem[ ontype ];
|
8746 |
-
|
8747 |
-
if ( tmp ) {
|
8748 |
-
elem[ ontype ] = null;
|
8749 |
-
}
|
8750 |
-
|
8751 |
-
// Prevent re-triggering of the same event, since we already bubbled it above
|
8752 |
-
jQuery.event.triggered = type;
|
8753 |
-
|
8754 |
-
if ( event.isPropagationStopped() ) {
|
8755 |
-
lastElement.addEventListener( type, stopPropagationCallback );
|
8756 |
-
}
|
8757 |
-
|
8758 |
-
elem[ type ]();
|
8759 |
-
|
8760 |
-
if ( event.isPropagationStopped() ) {
|
8761 |
-
lastElement.removeEventListener( type, stopPropagationCallback );
|
8762 |
-
}
|
8763 |
-
|
8764 |
-
jQuery.event.triggered = undefined;
|
8765 |
-
|
8766 |
-
if ( tmp ) {
|
8767 |
-
elem[ ontype ] = tmp;
|
8768 |
-
}
|
8769 |
-
}
|
8770 |
-
}
|
8771 |
-
}
|
8772 |
-
|
8773 |
-
return event.result;
|
8774 |
-
},
|
8775 |
-
|
8776 |
-
// Piggyback on a donor event to simulate a different one
|
8777 |
-
// Used only for `focus(in | out)` events
|
8778 |
-
simulate: function( type, elem, event ) {
|
8779 |
-
var e = jQuery.extend(
|
8780 |
-
new jQuery.Event(),
|
8781 |
-
event,
|
8782 |
-
{
|
8783 |
-
type: type,
|
8784 |
-
isSimulated: true
|
8785 |
-
}
|
8786 |
-
);
|
8787 |
-
|
8788 |
-
jQuery.event.trigger( e, null, elem );
|
8789 |
-
}
|
8790 |
-
|
8791 |
-
} );
|
8792 |
-
|
8793 |
-
jQuery.fn.extend( {
|
8794 |
-
|
8795 |
-
trigger: function( type, data ) {
|
8796 |
-
return this.each( function() {
|
8797 |
-
jQuery.event.trigger( type, data, this );
|
8798 |
-
} );
|
8799 |
-
},
|
8800 |
-
triggerHandler: function( type, data ) {
|
8801 |
-
var elem = this[ 0 ];
|
8802 |
-
if ( elem ) {
|
8803 |
-
return jQuery.event.trigger( type, data, elem, true );
|
8804 |
-
}
|
8805 |
-
}
|
8806 |
-
} );
|
8807 |
-
|
8808 |
-
|
8809 |
-
// Support: Firefox <=44
|
8810 |
-
// Firefox doesn't have focus(in | out) events
|
8811 |
-
// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
|
8812 |
-
//
|
8813 |
-
// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
|
8814 |
-
// focus(in | out) events fire after focus & blur events,
|
8815 |
-
// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
|
8816 |
-
// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
|
8817 |
-
if ( !support.focusin ) {
|
8818 |
-
jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
|
8819 |
-
|
8820 |
-
// Attach a single capturing handler on the document while someone wants focusin/focusout
|
8821 |
-
var handler = function( event ) {
|
8822 |
-
jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
|
8823 |
-
};
|
8824 |
-
|
8825 |
-
jQuery.event.special[ fix ] = {
|
8826 |
-
setup: function() {
|
8827 |
-
|
8828 |
-
// Handle: regular nodes (via `this.ownerDocument`), window
|
8829 |
-
// (via `this.document`) & document (via `this`).
|
8830 |
-
var doc = this.ownerDocument || this.document || this,
|
8831 |
-
attaches = dataPriv.access( doc, fix );
|
8832 |
-
|
8833 |
-
if ( !attaches ) {
|
8834 |
-
doc.addEventListener( orig, handler, true );
|
8835 |
-
}
|
8836 |
-
dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
|
8837 |
-
},
|
8838 |
-
teardown: function() {
|
8839 |
-
var doc = this.ownerDocument || this.document || this,
|
8840 |
-
attaches = dataPriv.access( doc, fix ) - 1;
|
8841 |
-
|
8842 |
-
if ( !attaches ) {
|
8843 |
-
doc.removeEventListener( orig, handler, true );
|
8844 |
-
dataPriv.remove( doc, fix );
|
8845 |
-
|
8846 |
-
} else {
|
8847 |
-
dataPriv.access( doc, fix, attaches );
|
8848 |
-
}
|
8849 |
-
}
|
8850 |
-
};
|
8851 |
-
} );
|
8852 |
-
}
|
8853 |
-
var location = window.location;
|
8854 |
-
|
8855 |
-
var nonce = { guid: Date.now() };
|
8856 |
-
|
8857 |
-
var rquery = ( /\?/ );
|
8858 |
-
|
8859 |
-
|
8860 |
-
|
8861 |
-
// Cross-browser xml parsing
|
8862 |
-
jQuery.parseXML = function( data ) {
|
8863 |
-
var xml, parserErrorElem;
|
8864 |
-
if ( !data || typeof data !== "string" ) {
|
8865 |
-
return null;
|
8866 |
-
}
|
8867 |
-
|
8868 |
-
// Support: IE 9 - 11 only
|
8869 |
-
// IE throws on parseFromString with invalid input.
|
8870 |
-
try {
|
8871 |
-
xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
|
8872 |
-
} catch ( e ) {}
|
8873 |
-
|
8874 |
-
parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
|
8875 |
-
if ( !xml || parserErrorElem ) {
|
8876 |
-
jQuery.error( "Invalid XML: " + (
|
8877 |
-
parserErrorElem ?
|
8878 |
-
jQuery.map( parserErrorElem.childNodes, function( el ) {
|
8879 |
-
return el.textContent;
|
8880 |
-
} ).join( "\n" ) :
|
8881 |
-
data
|
8882 |
-
) );
|
8883 |
-
}
|
8884 |
-
return xml;
|
8885 |
-
};
|
8886 |
-
|
8887 |
-
|
8888 |
-
var
|
8889 |
-
rbracket = /\[\]$/,
|
8890 |
-
rCRLF = /\r?\n/g,
|
8891 |
-
rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
|
8892 |
-
rsubmittable = /^(?:input|select|textarea|keygen)/i;
|
8893 |
-
|
8894 |
-
function buildParams( prefix, obj, traditional, add ) {
|
8895 |
-
var name;
|
8896 |
-
|
8897 |
-
if ( Array.isArray( obj ) ) {
|
8898 |
-
|
8899 |
-
// Serialize array item.
|
8900 |
-
jQuery.each( obj, function( i, v ) {
|
8901 |
-
if ( traditional || rbracket.test( prefix ) ) {
|
8902 |
-
|
8903 |
-
// Treat each array item as a scalar.
|
8904 |
-
add( prefix, v );
|
8905 |
-
|
8906 |
-
} else {
|
8907 |
-
|
8908 |
-
// Item is non-scalar (array or object), encode its numeric index.
|
8909 |
-
buildParams(
|
8910 |
-
prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
|
8911 |
-
v,
|
8912 |
-
traditional,
|
8913 |
-
add
|
8914 |
-
);
|
8915 |
-
}
|
8916 |
-
} );
|
8917 |
-
|
8918 |
-
} else if ( !traditional && toType( obj ) === "object" ) {
|
8919 |
-
|
8920 |
-
// Serialize object item.
|
8921 |
-
for ( name in obj ) {
|
8922 |
-
buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
|
8923 |
-
}
|
8924 |
-
|
8925 |
-
} else {
|
8926 |
-
|
8927 |
-
// Serialize scalar item.
|
8928 |
-
add( prefix, obj );
|
8929 |
-
}
|
8930 |
-
}
|
8931 |
-
|
8932 |
-
// Serialize an array of form elements or a set of
|
8933 |
-
// key/values into a query string
|
8934 |
-
jQuery.param = function( a, traditional ) {
|
8935 |
-
var prefix,
|
8936 |
-
s = [],
|
8937 |
-
add = function( key, valueOrFunction ) {
|
8938 |
-
|
8939 |
-
// If value is a function, invoke it and use its return value
|
8940 |
-
var value = isFunction( valueOrFunction ) ?
|
8941 |
-
valueOrFunction() :
|
8942 |
-
valueOrFunction;
|
8943 |
-
|
8944 |
-
s[ s.length ] = encodeURIComponent( key ) + "=" +
|
8945 |
-
encodeURIComponent( value == null ? "" : value );
|
8946 |
-
};
|
8947 |
-
|
8948 |
-
if ( a == null ) {
|
8949 |
-
return "";
|
8950 |
-
}
|
8951 |
-
|
8952 |
-
// If an array was passed in, assume that it is an array of form elements.
|
8953 |
-
if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
|
8954 |
-
|
8955 |
-
// Serialize the form elements
|
8956 |
-
jQuery.each( a, function() {
|
8957 |
-
add( this.name, this.value );
|
8958 |
-
} );
|
8959 |
-
|
8960 |
-
} else {
|
8961 |
-
|
8962 |
-
// If traditional, encode the "old" way (the way 1.3.2 or older
|
8963 |
-
// did it), otherwise encode params recursively.
|
8964 |
-
for ( prefix in a ) {
|
8965 |
-
buildParams( prefix, a[ prefix ], traditional, add );
|
8966 |
-
}
|
8967 |
-
}
|
8968 |
-
|
8969 |
-
// Return the resulting serialization
|
8970 |
-
return s.join( "&" );
|
8971 |
-
};
|
8972 |
-
|
8973 |
-
jQuery.fn.extend( {
|
8974 |
-
serialize: function() {
|
8975 |
-
return jQuery.param( this.serializeArray() );
|
8976 |
-
},
|
8977 |
-
serializeArray: function() {
|
8978 |
-
return this.map( function() {
|
8979 |
-
|
8980 |
-
// Can add propHook for "elements" to filter or add form elements
|
8981 |
-
var elements = jQuery.prop( this, "elements" );
|
8982 |
-
return elements ? jQuery.makeArray( elements ) : this;
|
8983 |
-
} ).filter( function() {
|
8984 |
-
var type = this.type;
|
8985 |
-
|
8986 |
-
// Use .is( ":disabled" ) so that fieldset[disabled] works
|
8987 |
-
return this.name && !jQuery( this ).is( ":disabled" ) &&
|
8988 |
-
rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
|
8989 |
-
( this.checked || !rcheckableType.test( type ) );
|
8990 |
-
} ).map( function( _i, elem ) {
|
8991 |
-
var val = jQuery( this ).val();
|
8992 |
-
|
8993 |
-
if ( val == null ) {
|
8994 |
-
return null;
|
8995 |
-
}
|
8996 |
-
|
8997 |
-
if ( Array.isArray( val ) ) {
|
8998 |
-
return jQuery.map( val, function( val ) {
|
8999 |
-
return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
|
9000 |
-
} );
|
9001 |
-
}
|
9002 |
-
|
9003 |
-
return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
|
9004 |
-
} ).get();
|
9005 |
-
}
|
9006 |
-
} );
|
9007 |
-
|
9008 |
-
|
9009 |
-
var
|
9010 |
-
r20 = /%20/g,
|
9011 |
-
rhash = /#.*$/,
|
9012 |
-
rantiCache = /([?&])_=[^&]*/,
|
9013 |
-
rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
|
9014 |
-
|
9015 |
-
// #7653, #8125, #8152: local protocol detection
|
9016 |
-
rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
|
9017 |
-
rnoContent = /^(?:GET|HEAD)$/,
|
9018 |
-
rprotocol = /^\/\//,
|
9019 |
-
|
9020 |
-
/* Prefilters
|
9021 |
-
* 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
|
9022 |
-
* 2) These are called:
|
9023 |
-
* - BEFORE asking for a transport
|
9024 |
-
* - AFTER param serialization (s.data is a string if s.processData is true)
|
9025 |
-
* 3) key is the dataType
|
9026 |
-
* 4) the catchall symbol "*" can be used
|
9027 |
-
* 5) execution will start with transport dataType and THEN continue down to "*" if needed
|
9028 |
-
*/
|
9029 |
-
prefilters = {},
|
9030 |
-
|
9031 |
-
/* Transports bindings
|
9032 |
-
* 1) key is the dataType
|
9033 |
-
* 2) the catchall symbol "*" can be used
|
9034 |
-
* 3) selection will start with transport dataType and THEN go to "*" if needed
|
9035 |
-
*/
|
9036 |
-
transports = {},
|
9037 |
-
|
9038 |
-
// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
|
9039 |
-
allTypes = "*/".concat( "*" ),
|
9040 |
-
|
9041 |
-
// Anchor tag for parsing the document origin
|
9042 |
-
originAnchor = document.createElement( "a" );
|
9043 |
-
|
9044 |
-
originAnchor.href = location.href;
|
9045 |
-
|
9046 |
-
// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
|
9047 |
-
function addToPrefiltersOrTransports( structure ) {
|
9048 |
-
|
9049 |
-
// dataTypeExpression is optional and defaults to "*"
|
9050 |
-
return function( dataTypeExpression, func ) {
|
9051 |
-
|
9052 |
-
if ( typeof dataTypeExpression !== "string" ) {
|
9053 |
-
func = dataTypeExpression;
|
9054 |
-
dataTypeExpression = "*";
|
9055 |
-
}
|
9056 |
-
|
9057 |
-
var dataType,
|
9058 |
-
i = 0,
|
9059 |
-
dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
|
9060 |
-
|
9061 |
-
if ( isFunction( func ) ) {
|
9062 |
-
|
9063 |
-
// For each dataType in the dataTypeExpression
|
9064 |
-
while ( ( dataType = dataTypes[ i++ ] ) ) {
|
9065 |
-
|
9066 |
-
// Prepend if requested
|
9067 |
-
if ( dataType[ 0 ] === "+" ) {
|
9068 |
-
dataType = dataType.slice( 1 ) || "*";
|
9069 |
-
( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
|
9070 |
-
|
9071 |
-
// Otherwise append
|
9072 |
-
} else {
|
9073 |
-
( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
|
9074 |
-
}
|
9075 |
-
}
|
9076 |
-
}
|
9077 |
-
};
|
9078 |
-
}
|
9079 |
-
|
9080 |
-
// Base inspection function for prefilters and transports
|
9081 |
-
function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
|
9082 |
-
|
9083 |
-
var inspected = {},
|
9084 |
-
seekingTransport = ( structure === transports );
|
9085 |
-
|
9086 |
-
function inspect( dataType ) {
|
9087 |
-
var selected;
|
9088 |
-
inspected[ dataType ] = true;
|
9089 |
-
jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
|
9090 |
-
var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
|
9091 |
-
if ( typeof dataTypeOrTransport === "string" &&
|
9092 |
-
!seekingTransport && !inspected[ dataTypeOrTransport ] ) {
|
9093 |
-
|
9094 |
-
options.dataTypes.unshift( dataTypeOrTransport );
|
9095 |
-
inspect( dataTypeOrTransport );
|
9096 |
-
return false;
|
9097 |
-
} else if ( seekingTransport ) {
|
9098 |
-
return !( selected = dataTypeOrTransport );
|
9099 |
-
}
|
9100 |
-
} );
|
9101 |
-
return selected;
|
9102 |
-
}
|
9103 |
-
|
9104 |
-
return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
|
9105 |
-
}
|
9106 |
-
|
9107 |
-
// A special extend for ajax options
|
9108 |
-
// that takes "flat" options (not to be deep extended)
|
9109 |
-
// Fixes #9887
|
9110 |
-
function ajaxExtend( target, src ) {
|
9111 |
-
var key, deep,
|
9112 |
-
flatOptions = jQuery.ajaxSettings.flatOptions || {};
|
9113 |
-
|
9114 |
-
for ( key in src ) {
|
9115 |
-
if ( src[ key ] !== undefined ) {
|
9116 |
-
( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
|
9117 |
-
}
|
9118 |
-
}
|
9119 |
-
if ( deep ) {
|
9120 |
-
jQuery.extend( true, target, deep );
|
9121 |
-
}
|
9122 |
-
|
9123 |
-
return target;
|
9124 |
-
}
|
9125 |
-
|
9126 |
-
/* Handles responses to an ajax request:
|
9127 |
-
* - finds the right dataType (mediates between content-type and expected dataType)
|
9128 |
-
* - returns the corresponding response
|
9129 |
-
*/
|
9130 |
-
function ajaxHandleResponses( s, jqXHR, responses ) {
|
9131 |
-
|
9132 |
-
var ct, type, finalDataType, firstDataType,
|
9133 |
-
contents = s.contents,
|
9134 |
-
dataTypes = s.dataTypes;
|
9135 |
-
|
9136 |
-
// Remove auto dataType and get content-type in the process
|
9137 |
-
while ( dataTypes[ 0 ] === "*" ) {
|
9138 |
-
dataTypes.shift();
|
9139 |
-
if ( ct === undefined ) {
|
9140 |
-
ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
|
9141 |
-
}
|
9142 |
-
}
|
9143 |
-
|
9144 |
-
// Check if we're dealing with a known content-type
|
9145 |
-
if ( ct ) {
|
9146 |
-
for ( type in contents ) {
|
9147 |
-
if ( contents[ type ] && contents[ type ].test( ct ) ) {
|
9148 |
-
dataTypes.unshift( type );
|
9149 |
-
break;
|
9150 |
-
}
|
9151 |
-
}
|
9152 |
-
}
|
9153 |
-
|
9154 |
-
// Check to see if we have a response for the expected dataType
|
9155 |
-
if ( dataTypes[ 0 ] in responses ) {
|
9156 |
-
finalDataType = dataTypes[ 0 ];
|
9157 |
-
} else {
|
9158 |
-
|
9159 |
-
// Try convertible dataTypes
|
9160 |
-
for ( type in responses ) {
|
9161 |
-
if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
|
9162 |
-
finalDataType = type;
|
9163 |
-
break;
|
9164 |
-
}
|
9165 |
-
if ( !firstDataType ) {
|
9166 |
-
firstDataType = type;
|
9167 |
-
}
|
9168 |
-
}
|
9169 |
-
|
9170 |
-
// Or just use first one
|
9171 |
-
finalDataType = finalDataType || firstDataType;
|
9172 |
-
}
|
9173 |
-
|
9174 |
-
// If we found a dataType
|
9175 |
-
// We add the dataType to the list if needed
|
9176 |
-
// and return the corresponding response
|
9177 |
-
if ( finalDataType ) {
|
9178 |
-
if ( finalDataType !== dataTypes[ 0 ] ) {
|
9179 |
-
dataTypes.unshift( finalDataType );
|
9180 |
-
}
|
9181 |
-
return responses[ finalDataType ];
|
9182 |
-
}
|
9183 |
-
}
|
9184 |
-
|
9185 |
-
/* Chain conversions given the request and the original response
|
9186 |
-
* Also sets the responseXXX fields on the jqXHR instance
|
9187 |
-
*/
|
9188 |
-
function ajaxConvert( s, response, jqXHR, isSuccess ) {
|
9189 |
-
var conv2, current, conv, tmp, prev,
|
9190 |
-
converters = {},
|
9191 |
-
|
9192 |
-
// Work with a copy of dataTypes in case we need to modify it for conversion
|
9193 |
-
dataTypes = s.dataTypes.slice();
|
9194 |
-
|
9195 |
-
// Create converters map with lowercased keys
|
9196 |
-
if ( dataTypes[ 1 ] ) {
|
9197 |
-
for ( conv in s.converters ) {
|
9198 |
-
converters[ conv.toLowerCase() ] = s.converters[ conv ];
|
9199 |
-
}
|
9200 |
-
}
|
9201 |
-
|
9202 |
-
current = dataTypes.shift();
|
9203 |
-
|
9204 |
-
// Convert to each sequential dataType
|
9205 |
-
while ( current ) {
|
9206 |
-
|
9207 |
-
if ( s.responseFields[ current ] ) {
|
9208 |
-
jqXHR[ s.responseFields[ current ] ] = response;
|
9209 |
-
}
|
9210 |
-
|
9211 |
-
// Apply the dataFilter if provided
|
9212 |
-
if ( !prev && isSuccess && s.dataFilter ) {
|
9213 |
-
response = s.dataFilter( response, s.dataType );
|
9214 |
-
}
|
9215 |
-
|
9216 |
-
prev = current;
|
9217 |
-
current = dataTypes.shift();
|
9218 |
-
|
9219 |
-
if ( current ) {
|
9220 |
-
|
9221 |
-
// There's only work to do if current dataType is non-auto
|
9222 |
-
if ( current === "*" ) {
|
9223 |
-
|
9224 |
-
current = prev;
|
9225 |
-
|
9226 |
-
// Convert response if prev dataType is non-auto and differs from current
|
9227 |
-
} else if ( prev !== "*" && prev !== current ) {
|
9228 |
-
|
9229 |
-
// Seek a direct converter
|
9230 |
-
conv = converters[ prev + " " + current ] || converters[ "* " + current ];
|
9231 |
-
|
9232 |
-
// If none found, seek a pair
|
9233 |
-
if ( !conv ) {
|
9234 |
-
for ( conv2 in converters ) {
|
9235 |
-
|
9236 |
-
// If conv2 outputs current
|
9237 |
-
tmp = conv2.split( " " );
|
9238 |
-
if ( tmp[ 1 ] === current ) {
|
9239 |
-
|
9240 |
-
// If prev can be converted to accepted input
|
9241 |
-
conv = converters[ prev + " " + tmp[ 0 ] ] ||
|
9242 |
-
converters[ "* " + tmp[ 0 ] ];
|
9243 |
-
if ( conv ) {
|
9244 |
-
|
9245 |
-
// Condense equivalence converters
|
9246 |
-
if ( conv === true ) {
|
9247 |
-
conv = converters[ conv2 ];
|
9248 |
-
|
9249 |
-
// Otherwise, insert the intermediate dataType
|
9250 |
-
} else if ( converters[ conv2 ] !== true ) {
|
9251 |
-
current = tmp[ 0 ];
|
9252 |
-
dataTypes.unshift( tmp[ 1 ] );
|
9253 |
-
}
|
9254 |
-
break;
|
9255 |
-
}
|
9256 |
-
}
|
9257 |
-
}
|
9258 |
-
}
|
9259 |
-
|
9260 |
-
// Apply converter (if not an equivalence)
|
9261 |
-
if ( conv !== true ) {
|
9262 |
-
|
9263 |
-
// Unless errors are allowed to bubble, catch and return them
|
9264 |
-
if ( conv && s.throws ) {
|
9265 |
-
response = conv( response );
|
9266 |
-
} else {
|
9267 |
-
try {
|
9268 |
-
response = conv( response );
|
9269 |
-
} catch ( e ) {
|
9270 |
-
return {
|
9271 |
-
state: "parsererror",
|
9272 |
-
error: conv ? e : "No conversion from " + prev + " to " + current
|
9273 |
-
};
|
9274 |
-
}
|
9275 |
-
}
|
9276 |
-
}
|
9277 |
-
}
|
9278 |
-
}
|
9279 |
-
}
|
9280 |
-
|
9281 |
-
return { state: "success", data: response };
|
9282 |
-
}
|
9283 |
-
|
9284 |
-
jQuery.extend( {
|
9285 |
-
|
9286 |
-
// Counter for holding the number of active queries
|
9287 |
-
active: 0,
|
9288 |
-
|
9289 |
-
// Last-Modified header cache for next request
|
9290 |
-
lastModified: {},
|
9291 |
-
etag: {},
|
9292 |
-
|
9293 |
-
ajaxSettings: {
|
9294 |
-
url: location.href,
|
9295 |
-
type: "GET",
|
9296 |
-
isLocal: rlocalProtocol.test( location.protocol ),
|
9297 |
-
global: true,
|
9298 |
-
processData: true,
|
9299 |
-
async: true,
|
9300 |
-
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
|
9301 |
-
|
9302 |
-
/*
|
9303 |
-
timeout: 0,
|
9304 |
-
data: null,
|
9305 |
-
dataType: null,
|
9306 |
-
username: null,
|
9307 |
-
password: null,
|
9308 |
-
cache: null,
|
9309 |
-
throws: false,
|
9310 |
-
traditional: false,
|
9311 |
-
headers: {},
|
9312 |
-
*/
|
9313 |
-
|
9314 |
-
accepts: {
|
9315 |
-
"*": allTypes,
|
9316 |
-
text: "text/plain",
|
9317 |
-
html: "text/html",
|
9318 |
-
xml: "application/xml, text/xml",
|
9319 |
-
json: "application/json, text/javascript"
|
9320 |
-
},
|
9321 |
-
|
9322 |
-
contents: {
|
9323 |
-
xml: /\bxml\b/,
|
9324 |
-
html: /\bhtml/,
|
9325 |
-
json: /\bjson\b/
|
9326 |
-
},
|
9327 |
-
|
9328 |
-
responseFields: {
|
9329 |
-
xml: "responseXML",
|
9330 |
-
text: "responseText",
|
9331 |
-
json: "responseJSON"
|
9332 |
-
},
|
9333 |
-
|
9334 |
-
// Data converters
|
9335 |
-
// Keys separate source (or catchall "*") and destination types with a single space
|
9336 |
-
converters: {
|
9337 |
-
|
9338 |
-
// Convert anything to text
|
9339 |
-
"* text": String,
|
9340 |
-
|
9341 |
-
// Text to html (true = no transformation)
|
9342 |
-
"text html": true,
|
9343 |
-
|
9344 |
-
// Evaluate text as a json expression
|
9345 |
-
"text json": JSON.parse,
|
9346 |
-
|
9347 |
-
// Parse text as xml
|
9348 |
-
"text xml": jQuery.parseXML
|
9349 |
-
},
|
9350 |
-
|
9351 |
-
// For options that shouldn't be deep extended:
|
9352 |
-
// you can add your own custom options here if
|
9353 |
-
// and when you create one that shouldn't be
|
9354 |
-
// deep extended (see ajaxExtend)
|
9355 |
-
flatOptions: {
|
9356 |
-
url: true,
|
9357 |
-
context: true
|
9358 |
-
}
|
9359 |
-
},
|
9360 |
-
|
9361 |
-
// Creates a full fledged settings object into target
|
9362 |
-
// with both ajaxSettings and settings fields.
|
9363 |
-
// If target is omitted, writes into ajaxSettings.
|
9364 |
-
ajaxSetup: function( target, settings ) {
|
9365 |
-
return settings ?
|
9366 |
-
|
9367 |
-
// Building a settings object
|
9368 |
-
ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
|
9369 |
-
|
9370 |
-
// Extending ajaxSettings
|
9371 |
-
ajaxExtend( jQuery.ajaxSettings, target );
|
9372 |
-
},
|
9373 |
-
|
9374 |
-
ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
|
9375 |
-
ajaxTransport: addToPrefiltersOrTransports( transports ),
|
9376 |
-
|
9377 |
-
// Main method
|
9378 |
-
ajax: function( url, options ) {
|
9379 |
-
|
9380 |
-
// If url is an object, simulate pre-1.5 signature
|
9381 |
-
if ( typeof url === "object" ) {
|
9382 |
-
options = url;
|
9383 |
-
url = undefined;
|
9384 |
-
}
|
9385 |
-
|
9386 |
-
// Force options to be an object
|
9387 |
-
options = options || {};
|
9388 |
-
|
9389 |
-
var transport,
|
9390 |
-
|
9391 |
-
// URL without anti-cache param
|
9392 |
-
cacheURL,
|
9393 |
-
|
9394 |
-
// Response headers
|
9395 |
-
responseHeadersString,
|
9396 |
-
responseHeaders,
|
9397 |
-
|
9398 |
-
// timeout handle
|
9399 |
-
timeoutTimer,
|
9400 |
-
|
9401 |
-
// Url cleanup var
|
9402 |
-
urlAnchor,
|
9403 |
-
|
9404 |
-
// Request state (becomes false upon send and true upon completion)
|
9405 |
-
completed,
|
9406 |
-
|
9407 |
-
// To know if global events are to be dispatched
|
9408 |
-
fireGlobals,
|
9409 |
-
|
9410 |
-
// Loop variable
|
9411 |
-
i,
|
9412 |
-
|
9413 |
-
// uncached part of the url
|
9414 |
-
uncached,
|
9415 |
-
|
9416 |
-
// Create the final options object
|
9417 |
-
s = jQuery.ajaxSetup( {}, options ),
|
9418 |
-
|
9419 |
-
// Callbacks context
|
9420 |
-
callbackContext = s.context || s,
|
9421 |
-
|
9422 |
-
// Context for global events is callbackContext if it is a DOM node or jQuery collection
|
9423 |
-
globalEventContext = s.context &&
|
9424 |
-
( callbackContext.nodeType || callbackContext.jquery ) ?
|
9425 |
-
jQuery( callbackContext ) :
|
9426 |
-
jQuery.event,
|
9427 |
-
|
9428 |
-
// Deferreds
|
9429 |
-
deferred = jQuery.Deferred(),
|
9430 |
-
completeDeferred = jQuery.Callbacks( "once memory" ),
|
9431 |
-
|
9432 |
-
// Status-dependent callbacks
|
9433 |
-
statusCode = s.statusCode || {},
|
9434 |
-
|
9435 |
-
// Headers (they are sent all at once)
|
9436 |
-
requestHeaders = {},
|
9437 |
-
requestHeadersNames = {},
|
9438 |
-
|
9439 |
-
// Default abort message
|
9440 |
-
strAbort = "canceled",
|
9441 |
-
|
9442 |
-
// Fake xhr
|
9443 |
-
jqXHR = {
|
9444 |
-
readyState: 0,
|
9445 |
-
|
9446 |
-
// Builds headers hashtable if needed
|
9447 |
-
getResponseHeader: function( key ) {
|
9448 |
-
var match;
|
9449 |
-
if ( completed ) {
|
9450 |
-
if ( !responseHeaders ) {
|
9451 |
-
responseHeaders = {};
|
9452 |
-
while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
|
9453 |
-
responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
|
9454 |
-
( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] )
|
9455 |
-
.concat( match[ 2 ] );
|
9456 |
-
}
|
9457 |
-
}
|
9458 |
-
match = responseHeaders[ key.toLowerCase() + " " ];
|
9459 |
-
}
|
9460 |
-
return match == null ? null : match.join( ", " );
|
9461 |
-
},
|
9462 |
-
|
9463 |
-
// Raw string
|
9464 |
-
getAllResponseHeaders: function() {
|
9465 |
-
return completed ? responseHeadersString : null;
|
9466 |
-
},
|
9467 |
-
|
9468 |
-
// Caches the header
|
9469 |
-
setRequestHeader: function( name, value ) {
|
9470 |
-
if ( completed == null ) {
|
9471 |
-
name = requestHeadersNames[ name.toLowerCase() ] =
|
9472 |
-
requestHeadersNames[ name.toLowerCase() ] || name;
|
9473 |
-
requestHeaders[ name ] = value;
|
9474 |
-
}
|
9475 |
-
return this;
|
9476 |
-
},
|
9477 |
-
|
9478 |
-
// Overrides response content-type header
|
9479 |
-
overrideMimeType: function( type ) {
|
9480 |
-
if ( completed == null ) {
|
9481 |
-
s.mimeType = type;
|
9482 |
-
}
|
9483 |
-
return this;
|
9484 |
-
},
|
9485 |
-
|
9486 |
-
// Status-dependent callbacks
|
9487 |
-
statusCode: function( map ) {
|
9488 |
-
var code;
|
9489 |
-
if ( map ) {
|
9490 |
-
if ( completed ) {
|
9491 |
-
|
9492 |
-
// Execute the appropriate callbacks
|
9493 |
-
jqXHR.always( map[ jqXHR.status ] );
|
9494 |
-
} else {
|
9495 |
-
|
9496 |
-
// Lazy-add the new callbacks in a way that preserves old ones
|
9497 |
-
for ( code in map ) {
|
9498 |
-
statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
|
9499 |
-
}
|
9500 |
-
}
|
9501 |
-
}
|
9502 |
-
return this;
|
9503 |
-
},
|
9504 |
-
|
9505 |
-
// Cancel the request
|
9506 |
-
abort: function( statusText ) {
|
9507 |
-
var finalText = statusText || strAbort;
|
9508 |
-
if ( transport ) {
|
9509 |
-
transport.abort( finalText );
|
9510 |
-
}
|
9511 |
-
done( 0, finalText );
|
9512 |
-
return this;
|
9513 |
-
}
|
9514 |
-
};
|
9515 |
-
|
9516 |
-
// Attach deferreds
|
9517 |
-
deferred.promise( jqXHR );
|
9518 |
-
|
9519 |
-
// Add protocol if not provided (prefilters might expect it)
|
9520 |
-
// Handle falsy url in the settings object (#10093: consistency with old signature)
|
9521 |
-
// We also use the url parameter if available
|
9522 |
-
s.url = ( ( url || s.url || location.href ) + "" )
|
9523 |
-
.replace( rprotocol, location.protocol + "//" );
|
9524 |
-
|
9525 |
-
// Alias method option to type as per ticket #12004
|
9526 |
-
s.type = options.method || options.type || s.method || s.type;
|
9527 |
-
|
9528 |
-
// Extract dataTypes list
|
9529 |
-
s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
|
9530 |
-
|
9531 |
-
// A cross-domain request is in order when the origin doesn't match the current origin.
|
9532 |
-
if ( s.crossDomain == null ) {
|
9533 |
-
urlAnchor = document.createElement( "a" );
|
9534 |
-
|
9535 |
-
// Support: IE <=8 - 11, Edge 12 - 15
|
9536 |
-
// IE throws exception on accessing the href property if url is malformed,
|
9537 |
-
// e.g. http://example.com:80x/
|
9538 |
-
try {
|
9539 |
-
urlAnchor.href = s.url;
|
9540 |
-
|
9541 |
-
// Support: IE <=8 - 11 only
|
9542 |
-
// Anchor's host property isn't correctly set when s.url is relative
|
9543 |
-
urlAnchor.href = urlAnchor.href;
|
9544 |
-
s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
|
9545 |
-
urlAnchor.protocol + "//" + urlAnchor.host;
|
9546 |
-
} catch ( e ) {
|
9547 |
-
|
9548 |
-
// If there is an error parsing the URL, assume it is crossDomain,
|
9549 |
-
// it can be rejected by the transport if it is invalid
|
9550 |
-
s.crossDomain = true;
|
9551 |
-
}
|
9552 |
-
}
|
9553 |
-
|
9554 |
-
// Convert data if not already a string
|
9555 |
-
if ( s.data && s.processData && typeof s.data !== "string" ) {
|
9556 |
-
s.data = jQuery.param( s.data, s.traditional );
|
9557 |
-
}
|
9558 |
-
|
9559 |
-
// Apply prefilters
|
9560 |
-
inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
|
9561 |
-
|
9562 |
-
// If request was aborted inside a prefilter, stop there
|
9563 |
-
if ( completed ) {
|
9564 |
-
return jqXHR;
|
9565 |
-
}
|
9566 |
-
|
9567 |
-
// We can fire global events as of now if asked to
|
9568 |
-
// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
|
9569 |
-
fireGlobals = jQuery.event && s.global;
|
9570 |
-
|
9571 |
-
// Watch for a new set of requests
|
9572 |
-
if ( fireGlobals && jQuery.active++ === 0 ) {
|
9573 |
-
jQuery.event.trigger( "ajaxStart" );
|
9574 |
-
}
|
9575 |
-
|
9576 |
-
// Uppercase the type
|
9577 |
-
s.type = s.type.toUpperCase();
|
9578 |
-
|
9579 |
-
// Determine if request has content
|
9580 |
-
s.hasContent = !rnoContent.test( s.type );
|
9581 |
-
|
9582 |
-
// Save the URL in case we're toying with the If-Modified-Since
|
9583 |
-
// and/or If-None-Match header later on
|
9584 |
-
// Remove hash to simplify url manipulation
|
9585 |
-
cacheURL = s.url.replace( rhash, "" );
|
9586 |
-
|
9587 |
-
// More options handling for requests with no content
|
9588 |
-
if ( !s.hasContent ) {
|
9589 |
-
|
9590 |
-
// Remember the hash so we can put it back
|
9591 |
-
uncached = s.url.slice( cacheURL.length );
|
9592 |
-
|
9593 |
-
// If data is available and should be processed, append data to url
|
9594 |
-
if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
|
9595 |
-
cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
|
9596 |
-
|
9597 |
-
// #9682: remove data so that it's not used in an eventual retry
|
9598 |
-
delete s.data;
|
9599 |
-
}
|
9600 |
-
|
9601 |
-
// Add or update anti-cache param if needed
|
9602 |
-
if ( s.cache === false ) {
|
9603 |
-
cacheURL = cacheURL.replace( rantiCache, "$1" );
|
9604 |
-
uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) +
|
9605 |
-
uncached;
|
9606 |
-
}
|
9607 |
-
|
9608 |
-
// Put hash and anti-cache on the URL that will be requested (gh-1732)
|
9609 |
-
s.url = cacheURL + uncached;
|
9610 |
-
|
9611 |
-
// Change '%20' to '+' if this is encoded form body content (gh-2658)
|
9612 |
-
} else if ( s.data && s.processData &&
|
9613 |
-
( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
|
9614 |
-
s.data = s.data.replace( r20, "+" );
|
9615 |
-
}
|
9616 |
-
|
9617 |
-
// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
|
9618 |
-
if ( s.ifModified ) {
|
9619 |
-
if ( jQuery.lastModified[ cacheURL ] ) {
|
9620 |
-
jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
|
9621 |
-
}
|
9622 |
-
if ( jQuery.etag[ cacheURL ] ) {
|
9623 |
-
jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
|
9624 |
-
}
|
9625 |
-
}
|
9626 |
-
|
9627 |
-
// Set the correct header, if data is being sent
|
9628 |
-
if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
|
9629 |
-
jqXHR.setRequestHeader( "Content-Type", s.contentType );
|
9630 |
-
}
|
9631 |
-
|
9632 |
-
// Set the Accepts header for the server, depending on the dataType
|
9633 |
-
jqXHR.setRequestHeader(
|
9634 |
-
"Accept",
|
9635 |
-
s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
|
9636 |
-
s.accepts[ s.dataTypes[ 0 ] ] +
|
9637 |
-
( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
|
9638 |
-
s.accepts[ "*" ]
|
9639 |
-
);
|
9640 |
-
|
9641 |
-
// Check for headers option
|
9642 |
-
for ( i in s.headers ) {
|
9643 |
-
jqXHR.setRequestHeader( i, s.headers[ i ] );
|
9644 |
-
}
|
9645 |
-
|
9646 |
-
// Allow custom headers/mimetypes and early abort
|
9647 |
-
if ( s.beforeSend &&
|
9648 |
-
( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
|
9649 |
-
|
9650 |
-
// Abort if not done already and return
|
9651 |
-
return jqXHR.abort();
|
9652 |
-
}
|
9653 |
-
|
9654 |
-
// Aborting is no longer a cancellation
|
9655 |
-
strAbort = "abort";
|
9656 |
-
|
9657 |
-
// Install callbacks on deferreds
|
9658 |
-
completeDeferred.add( s.complete );
|
9659 |
-
jqXHR.done( s.success );
|
9660 |
-
jqXHR.fail( s.error );
|
9661 |
-
|
9662 |
-
// Get transport
|
9663 |
-
transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
|
9664 |
-
|
9665 |
-
// If no transport, we auto-abort
|
9666 |
-
if ( !transport ) {
|
9667 |
-
done( -1, "No Transport" );
|
9668 |
-
} else {
|
9669 |
-
jqXHR.readyState = 1;
|
9670 |
-
|
9671 |
-
// Send global event
|
9672 |
-
if ( fireGlobals ) {
|
9673 |
-
globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
|
9674 |
-
}
|
9675 |
-
|
9676 |
-
// If request was aborted inside ajaxSend, stop there
|
9677 |
-
if ( completed ) {
|
9678 |
-
return jqXHR;
|
9679 |
-
}
|
9680 |
-
|
9681 |
-
// Timeout
|
9682 |
-
if ( s.async && s.timeout > 0 ) {
|
9683 |
-
timeoutTimer = window.setTimeout( function() {
|
9684 |
-
jqXHR.abort( "timeout" );
|
9685 |
-
}, s.timeout );
|
9686 |
-
}
|
9687 |
-
|
9688 |
-
try {
|
9689 |
-
completed = false;
|
9690 |
-
transport.send( requestHeaders, done );
|
9691 |
-
} catch ( e ) {
|
9692 |
-
|
9693 |
-
// Rethrow post-completion exceptions
|
9694 |
-
if ( completed ) {
|
9695 |
-
throw e;
|
9696 |
-
}
|
9697 |
-
|
9698 |
-
// Propagate others as results
|
9699 |
-
done( -1, e );
|
9700 |
-
}
|
9701 |
-
}
|
9702 |
-
|
9703 |
-
// Callback for when everything is done
|
9704 |
-
function done( status, nativeStatusText, responses, headers ) {
|
9705 |
-
var isSuccess, success, error, response, modified,
|
9706 |
-
statusText = nativeStatusText;
|
9707 |
-
|
9708 |
-
// Ignore repeat invocations
|
9709 |
-
if ( completed ) {
|
9710 |
-
return;
|
9711 |
-
}
|
9712 |
-
|
9713 |
-
completed = true;
|
9714 |
-
|
9715 |
-
// Clear timeout if it exists
|
9716 |
-
if ( timeoutTimer ) {
|
9717 |
-
window.clearTimeout( timeoutTimer );
|
9718 |
-
}
|
9719 |
-
|
9720 |
-
// Dereference transport for early garbage collection
|
9721 |
-
// (no matter how long the jqXHR object will be used)
|
9722 |
-
transport = undefined;
|
9723 |
-
|
9724 |
-
// Cache response headers
|
9725 |
-
responseHeadersString = headers || "";
|
9726 |
-
|
9727 |
-
// Set readyState
|
9728 |
-
jqXHR.readyState = status > 0 ? 4 : 0;
|
9729 |
-
|
9730 |
-
// Determine if successful
|
9731 |
-
isSuccess = status >= 200 && status < 300 || status === 304;
|
9732 |
-
|
9733 |
-
// Get response data
|
9734 |
-
if ( responses ) {
|
9735 |
-
response = ajaxHandleResponses( s, jqXHR, responses );
|
9736 |
-
}
|
9737 |
-
|
9738 |
-
// Use a noop converter for missing script but not if jsonp
|
9739 |
-
if ( !isSuccess &&
|
9740 |
-
jQuery.inArray( "script", s.dataTypes ) > -1 &&
|
9741 |
-
jQuery.inArray( "json", s.dataTypes ) < 0 ) {
|
9742 |
-
s.converters[ "text script" ] = function() {};
|
9743 |
-
}
|
9744 |
-
|
9745 |
-
// Convert no matter what (that way responseXXX fields are always set)
|
9746 |
-
response = ajaxConvert( s, response, jqXHR, isSuccess );
|
9747 |
-
|
9748 |
-
// If successful, handle type chaining
|
9749 |
-
if ( isSuccess ) {
|
9750 |
-
|
9751 |
-
// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
|
9752 |
-
if ( s.ifModified ) {
|
9753 |
-
modified = jqXHR.getResponseHeader( "Last-Modified" );
|
9754 |
-
if ( modified ) {
|
9755 |
-
jQuery.lastModified[ cacheURL ] = modified;
|
9756 |
-
}
|
9757 |
-
modified = jqXHR.getResponseHeader( "etag" );
|
9758 |
-
if ( modified ) {
|
9759 |
-
jQuery.etag[ cacheURL ] = modified;
|
9760 |
-
}
|
9761 |
-
}
|
9762 |
-
|
9763 |
-
// if no content
|
9764 |
-
if ( status === 204 || s.type === "HEAD" ) {
|
9765 |
-
statusText = "nocontent";
|
9766 |
-
|
9767 |
-
// if not modified
|
9768 |
-
} else if ( status === 304 ) {
|
9769 |
-
statusText = "notmodified";
|
9770 |
-
|
9771 |
-
// If we have data, let's convert it
|
9772 |
-
} else {
|
9773 |
-
statusText = response.state;
|
9774 |
-
success = response.data;
|
9775 |
-
error = response.error;
|
9776 |
-
isSuccess = !error;
|
9777 |
-
}
|
9778 |
-
} else {
|
9779 |
-
|
9780 |
-
// Extract error from statusText and normalize for non-aborts
|
9781 |
-
error = statusText;
|
9782 |
-
if ( status || !statusText ) {
|
9783 |
-
statusText = "error";
|
9784 |
-
if ( status < 0 ) {
|
9785 |
-
status = 0;
|
9786 |
-
}
|
9787 |
-
}
|
9788 |
-
}
|
9789 |
-
|
9790 |
-
// Set data for the fake xhr object
|
9791 |
-
jqXHR.status = status;
|
9792 |
-
jqXHR.statusText = ( nativeStatusText || statusText ) + "";
|
9793 |
-
|
9794 |
-
// Success/Error
|
9795 |
-
if ( isSuccess ) {
|
9796 |
-
deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
|
9797 |
-
} else {
|
9798 |
-
deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
|
9799 |
-
}
|
9800 |
-
|
9801 |
-
// Status-dependent callbacks
|
9802 |
-
jqXHR.statusCode( statusCode );
|
9803 |
-
statusCode = undefined;
|
9804 |
-
|
9805 |
-
if ( fireGlobals ) {
|
9806 |
-
globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
|
9807 |
-
[ jqXHR, s, isSuccess ? success : error ] );
|
9808 |
-
}
|
9809 |
-
|
9810 |
-
// Complete
|
9811 |
-
completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
|
9812 |
-
|
9813 |
-
if ( fireGlobals ) {
|
9814 |
-
globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
|
9815 |
-
|
9816 |
-
// Handle the global AJAX counter
|
9817 |
-
if ( !( --jQuery.active ) ) {
|
9818 |
-
jQuery.event.trigger( "ajaxStop" );
|
9819 |
-
}
|
9820 |
-
}
|
9821 |
-
}
|
9822 |
-
|
9823 |
-
return jqXHR;
|
9824 |
-
},
|
9825 |
-
|
9826 |
-
getJSON: function( url, data, callback ) {
|
9827 |
-
return jQuery.get( url, data, callback, "json" );
|
9828 |
-
},
|
9829 |
-
|
9830 |
-
getScript: function( url, callback ) {
|
9831 |
-
return jQuery.get( url, undefined, callback, "script" );
|
9832 |
-
}
|
9833 |
-
} );
|
9834 |
-
|
9835 |
-
jQuery.each( [ "get", "post" ], function( _i, method ) {
|
9836 |
-
jQuery[ method ] = function( url, data, callback, type ) {
|
9837 |
-
|
9838 |
-
// Shift arguments if data argument was omitted
|
9839 |
-
if ( isFunction( data ) ) {
|
9840 |
-
type = type || callback;
|
9841 |
-
callback = data;
|
9842 |
-
data = undefined;
|
9843 |
-
}
|
9844 |
-
|
9845 |
-
// The url can be an options object (which then must have .url)
|
9846 |
-
return jQuery.ajax( jQuery.extend( {
|
9847 |
-
url: url,
|
9848 |
-
type: method,
|
9849 |
-
dataType: type,
|
9850 |
-
data: data,
|
9851 |
-
success: callback
|
9852 |
-
}, jQuery.isPlainObject( url ) && url ) );
|
9853 |
-
};
|
9854 |
-
} );
|
9855 |
-
|
9856 |
-
jQuery.ajaxPrefilter( function( s ) {
|
9857 |
-
var i;
|
9858 |
-
for ( i in s.headers ) {
|
9859 |
-
if ( i.toLowerCase() === "content-type" ) {
|
9860 |
-
s.contentType = s.headers[ i ] || "";
|
9861 |
-
}
|
9862 |
-
}
|
9863 |
-
} );
|
9864 |
-
|
9865 |
-
|
9866 |
-
jQuery._evalUrl = function( url, options, doc ) {
|
9867 |
-
return jQuery.ajax( {
|
9868 |
-
url: url,
|
9869 |
-
|
9870 |
-
// Make this explicit, since user can override this through ajaxSetup (#11264)
|
9871 |
-
type: "GET",
|
9872 |
-
dataType: "script",
|
9873 |
-
cache: true,
|
9874 |
-
async: false,
|
9875 |
-
global: false,
|
9876 |
-
|
9877 |
-
// Only evaluate the response if it is successful (gh-4126)
|
9878 |
-
// dataFilter is not invoked for failure responses, so using it instead
|
9879 |
-
// of the default converter is kludgy but it works.
|
9880 |
-
converters: {
|
9881 |
-
"text script": function() {}
|
9882 |
-
},
|
9883 |
-
dataFilter: function( response ) {
|
9884 |
-
jQuery.globalEval( response, options, doc );
|
9885 |
-
}
|
9886 |
-
} );
|
9887 |
-
};
|
9888 |
-
|
9889 |
-
|
9890 |
-
jQuery.fn.extend( {
|
9891 |
-
wrapAll: function( html ) {
|
9892 |
-
var wrap;
|
9893 |
-
|
9894 |
-
if ( this[ 0 ] ) {
|
9895 |
-
if ( isFunction( html ) ) {
|
9896 |
-
html = html.call( this[ 0 ] );
|
9897 |
-
}
|
9898 |
-
|
9899 |
-
// The elements to wrap the target around
|
9900 |
-
wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
|
9901 |
-
|
9902 |
-
if ( this[ 0 ].parentNode ) {
|
9903 |
-
wrap.insertBefore( this[ 0 ] );
|
9904 |
-
}
|
9905 |
-
|
9906 |
-
wrap.map( function() {
|
9907 |
-
var elem = this;
|
9908 |
-
|
9909 |
-
while ( elem.firstElementChild ) {
|
9910 |
-
elem = elem.firstElementChild;
|
9911 |
-
}
|
9912 |
-
|
9913 |
-
return elem;
|
9914 |
-
} ).append( this );
|
9915 |
-
}
|
9916 |
-
|
9917 |
-
return this;
|
9918 |
-
},
|
9919 |
-
|
9920 |
-
wrapInner: function( html ) {
|
9921 |
-
if ( isFunction( html ) ) {
|
9922 |
-
return this.each( function( i ) {
|
9923 |
-
jQuery( this ).wrapInner( html.call( this, i ) );
|
9924 |
-
} );
|
9925 |
-
}
|
9926 |
-
|
9927 |
-
return this.each( function() {
|
9928 |
-
var self = jQuery( this ),
|
9929 |
-
contents = self.contents();
|
9930 |
-
|
9931 |
-
if ( contents.length ) {
|
9932 |
-
contents.wrapAll( html );
|
9933 |
-
|
9934 |
-
} else {
|
9935 |
-
self.append( html );
|
9936 |
-
}
|
9937 |
-
} );
|
9938 |
-
},
|
9939 |
-
|
9940 |
-
wrap: function( html ) {
|
9941 |
-
var htmlIsFunction = isFunction( html );
|
9942 |
-
|
9943 |
-
return this.each( function( i ) {
|
9944 |
-
jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
|
9945 |
-
} );
|
9946 |
-
},
|
9947 |
-
|
9948 |
-
unwrap: function( selector ) {
|
9949 |
-
this.parent( selector ).not( "body" ).each( function() {
|
9950 |
-
jQuery( this ).replaceWith( this.childNodes );
|
9951 |
-
} );
|
9952 |
-
return this;
|
9953 |
-
}
|
9954 |
-
} );
|
9955 |
-
|
9956 |
-
|
9957 |
-
jQuery.expr.pseudos.hidden = function( elem ) {
|
9958 |
-
return !jQuery.expr.pseudos.visible( elem );
|
9959 |
-
};
|
9960 |
-
jQuery.expr.pseudos.visible = function( elem ) {
|
9961 |
-
return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
|
9962 |
-
};
|
9963 |
-
|
9964 |
-
|
9965 |
-
|
9966 |
-
|
9967 |
-
jQuery.ajaxSettings.xhr = function() {
|
9968 |
-
try {
|
9969 |
-
return new window.XMLHttpRequest();
|
9970 |
-
} catch ( e ) {}
|
9971 |
-
};
|
9972 |
-
|
9973 |
-
var xhrSuccessStatus = {
|
9974 |
-
|
9975 |
-
// File protocol always yields status code 0, assume 200
|
9976 |
-
0: 200,
|
9977 |
-
|
9978 |
-
// Support: IE <=9 only
|
9979 |
-
// #1450: sometimes IE returns 1223 when it should be 204
|
9980 |
-
1223: 204
|
9981 |
-
},
|
9982 |
-
xhrSupported = jQuery.ajaxSettings.xhr();
|
9983 |
-
|
9984 |
-
support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
|
9985 |
-
support.ajax = xhrSupported = !!xhrSupported;
|
9986 |
-
|
9987 |
-
jQuery.ajaxTransport( function( options ) {
|
9988 |
-
var callback, errorCallback;
|
9989 |
-
|
9990 |
-
// Cross domain only allowed if supported through XMLHttpRequest
|
9991 |
-
if ( support.cors || xhrSupported && !options.crossDomain ) {
|
9992 |
-
return {
|
9993 |
-
send: function( headers, complete ) {
|
9994 |
-
var i,
|
9995 |
-
xhr = options.xhr();
|
9996 |
-
|
9997 |
-
xhr.open(
|
9998 |
-
options.type,
|
9999 |
-
options.url,
|
10000 |
-
options.async,
|
10001 |
-
options.username,
|
10002 |
-
options.password
|
10003 |
-
);
|
10004 |
-
|
10005 |
-
// Apply custom fields if provided
|
10006 |
-
if ( options.xhrFields ) {
|
10007 |
-
for ( i in options.xhrFields ) {
|
10008 |
-
xhr[ i ] = options.xhrFields[ i ];
|
10009 |
-
}
|
10010 |
-
}
|
10011 |
-
|
10012 |
-
// Override mime type if needed
|
10013 |
-
if ( options.mimeType && xhr.overrideMimeType ) {
|
10014 |
-
xhr.overrideMimeType( options.mimeType );
|
10015 |
-
}
|
10016 |
-
|
10017 |
-
// X-Requested-With header
|
10018 |
-
// For cross-domain requests, seeing as conditions for a preflight are
|
10019 |
-
// akin to a jigsaw puzzle, we simply never set it to be sure.
|
10020 |
-
// (it can always be set on a per-request basis or even using ajaxSetup)
|
10021 |
-
// For same-domain requests, won't change header if already provided.
|
10022 |
-
if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
|
10023 |
-
headers[ "X-Requested-With" ] = "XMLHttpRequest";
|
10024 |
-
}
|
10025 |
-
|
10026 |
-
// Set headers
|
10027 |
-
for ( i in headers ) {
|
10028 |
-
xhr.setRequestHeader( i, headers[ i ] );
|
10029 |
-
}
|
10030 |
-
|
10031 |
-
// Callback
|
10032 |
-
callback = function( type ) {
|
10033 |
-
return function() {
|
10034 |
-
if ( callback ) {
|
10035 |
-
callback = errorCallback = xhr.onload =
|
10036 |
-
xhr.onerror = xhr.onabort = xhr.ontimeout =
|
10037 |
-
xhr.onreadystatechange = null;
|
10038 |
-
|
10039 |
-
if ( type === "abort" ) {
|
10040 |
-
xhr.abort();
|
10041 |
-
} else if ( type === "error" ) {
|
10042 |
-
|
10043 |
-
// Support: IE <=9 only
|
10044 |
-
// On a manual native abort, IE9 throws
|
10045 |
-
// errors on any property access that is not readyState
|
10046 |
-
if ( typeof xhr.status !== "number" ) {
|
10047 |
-
complete( 0, "error" );
|
10048 |
-
} else {
|
10049 |
-
complete(
|
10050 |
-
|
10051 |
-
// File: protocol always yields status 0; see #8605, #14207
|
10052 |
-
xhr.status,
|
10053 |
-
xhr.statusText
|
10054 |
-
);
|
10055 |
-
}
|
10056 |
-
} else {
|
10057 |
-
complete(
|
10058 |
-
xhrSuccessStatus[ xhr.status ] || xhr.status,
|
10059 |
-
xhr.statusText,
|
10060 |
-
|
10061 |
-
// Support: IE <=9 only
|
10062 |
-
// IE9 has no XHR2 but throws on binary (trac-11426)
|
10063 |
-
// For XHR2 non-text, let the caller handle it (gh-2498)
|
10064 |
-
( xhr.responseType || "text" ) !== "text" ||
|
10065 |
-
typeof xhr.responseText !== "string" ?
|
10066 |
-
{ binary: xhr.response } :
|
10067 |
-
{ text: xhr.responseText },
|
10068 |
-
xhr.getAllResponseHeaders()
|
10069 |
-
);
|
10070 |
-
}
|
10071 |
-
}
|
10072 |
-
};
|
10073 |
-
};
|
10074 |
-
|
10075 |
-
// Listen to events
|
10076 |
-
xhr.onload = callback();
|
10077 |
-
errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );
|
10078 |
-
|
10079 |
-
// Support: IE 9 only
|
10080 |
-
// Use onreadystatechange to replace onabort
|
10081 |
-
// to handle uncaught aborts
|
10082 |
-
if ( xhr.onabort !== undefined ) {
|
10083 |
-
xhr.onabort = errorCallback;
|
10084 |
-
} else {
|
10085 |
-
xhr.onreadystatechange = function() {
|
10086 |
-
|
10087 |
-
// Check readyState before timeout as it changes
|
10088 |
-
if ( xhr.readyState === 4 ) {
|
10089 |
-
|
10090 |
-
// Allow onerror to be called first,
|
10091 |
-
// but that will not handle a native abort
|
10092 |
-
// Also, save errorCallback to a variable
|
10093 |
-
// as xhr.onerror cannot be accessed
|
10094 |
-
window.setTimeout( function() {
|
10095 |
-
if ( callback ) {
|
10096 |
-
errorCallback();
|
10097 |
-
}
|
10098 |
-
} );
|
10099 |
-
}
|
10100 |
-
};
|
10101 |
-
}
|
10102 |
-
|
10103 |
-
// Create the abort callback
|
10104 |
-
callback = callback( "abort" );
|
10105 |
-
|
10106 |
-
try {
|
10107 |
-
|
10108 |
-
// Do send the request (this may raise an exception)
|
10109 |
-
xhr.send( options.hasContent && options.data || null );
|
10110 |
-
} catch ( e ) {
|
10111 |
-
|
10112 |
-
// #14683: Only rethrow if this hasn't been notified as an error yet
|
10113 |
-
if ( callback ) {
|
10114 |
-
throw e;
|
10115 |
-
}
|
10116 |
-
}
|
10117 |
-
},
|
10118 |
-
|
10119 |
-
abort: function() {
|
10120 |
-
if ( callback ) {
|
10121 |
-
callback();
|
10122 |
-
}
|
10123 |
-
}
|
10124 |
-
};
|
10125 |
-
}
|
10126 |
-
} );
|
10127 |
-
|
10128 |
-
|
10129 |
-
|
10130 |
-
|
10131 |
-
// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
|
10132 |
-
jQuery.ajaxPrefilter( function( s ) {
|
10133 |
-
if ( s.crossDomain ) {
|
10134 |
-
s.contents.script = false;
|
10135 |
-
}
|
10136 |
-
} );
|
10137 |
-
|
10138 |
-
// Install script dataType
|
10139 |
-
jQuery.ajaxSetup( {
|
10140 |
-
accepts: {
|
10141 |
-
script: "text/javascript, application/javascript, " +
|
10142 |
-
"application/ecmascript, application/x-ecmascript"
|
10143 |
-
},
|
10144 |
-
contents: {
|
10145 |
-
script: /\b(?:java|ecma)script\b/
|
10146 |
-
},
|
10147 |
-
converters: {
|
10148 |
-
"text script": function( text ) {
|
10149 |
-
jQuery.globalEval( text );
|
10150 |
-
return text;
|
10151 |
-
}
|
10152 |
-
}
|
10153 |
-
} );
|
10154 |
-
|
10155 |
-
// Handle cache's special case and crossDomain
|
10156 |
-
jQuery.ajaxPrefilter( "script", function( s ) {
|
10157 |
-
if ( s.cache === undefined ) {
|
10158 |
-
s.cache = false;
|
10159 |
-
}
|
10160 |
-
if ( s.crossDomain ) {
|
10161 |
-
s.type = "GET";
|
10162 |
-
}
|
10163 |
-
} );
|
10164 |
-
|
10165 |
-
// Bind script tag hack transport
|
10166 |
-
jQuery.ajaxTransport( "script", function( s ) {
|
10167 |
-
|
10168 |
-
// This transport only deals with cross domain or forced-by-attrs requests
|
10169 |
-
if ( s.crossDomain || s.scriptAttrs ) {
|
10170 |
-
var script, callback;
|
10171 |
-
return {
|
10172 |
-
send: function( _, complete ) {
|
10173 |
-
script = jQuery( "<script>" )
|
10174 |
-
.attr( s.scriptAttrs || {} )
|
10175 |
-
.prop( { charset: s.scriptCharset, src: s.url } )
|
10176 |
-
.on( "load error", callback = function( evt ) {
|
10177 |
-
script.remove();
|
10178 |
-
callback = null;
|
10179 |
-
if ( evt ) {
|
10180 |
-
complete( evt.type === "error" ? 404 : 200, evt.type );
|
10181 |
-
}
|
10182 |
-
} );
|
10183 |
-
|
10184 |
-
// Use native DOM manipulation to avoid our domManip AJAX trickery
|
10185 |
-
document.head.appendChild( script[ 0 ] );
|
10186 |
-
},
|
10187 |
-
abort: function() {
|
10188 |
-
if ( callback ) {
|
10189 |
-
callback();
|
10190 |
-
}
|
10191 |
-
}
|
10192 |
-
};
|
10193 |
-
}
|
10194 |
-
} );
|
10195 |
-
|
10196 |
-
|
10197 |
-
|
10198 |
-
|
10199 |
-
var oldCallbacks = [],
|
10200 |
-
rjsonp = /(=)\?(?=&|$)|\?\?/;
|
10201 |
-
|
10202 |
-
// Default jsonp settings
|
10203 |
-
jQuery.ajaxSetup( {
|
10204 |
-
jsonp: "callback",
|
10205 |
-
jsonpCallback: function() {
|
10206 |
-
var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) );
|
10207 |
-
this[ callback ] = true;
|
10208 |
-
return callback;
|
10209 |
-
}
|
10210 |
-
} );
|
10211 |
-
|
10212 |
-
// Detect, normalize options and install callbacks for jsonp requests
|
10213 |
-
jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
|
10214 |
-
|
10215 |
-
var callbackName, overwritten, responseContainer,
|
10216 |
-
jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
|
10217 |
-
"url" :
|
10218 |
-
typeof s.data === "string" &&
|
10219 |
-
( s.contentType || "" )
|
10220 |
-
.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
|
10221 |
-
rjsonp.test( s.data ) && "data"
|
10222 |
-
);
|
10223 |
-
|
10224 |
-
// Handle iff the expected data type is "jsonp" or we have a parameter to set
|
10225 |
-
if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
|
10226 |
-
|
10227 |
-
// Get callback name, remembering preexisting value associated with it
|
10228 |
-
callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?
|
10229 |
-
s.jsonpCallback() :
|
10230 |
-
s.jsonpCallback;
|
10231 |
-
|
10232 |
-
// Insert callback into url or form data
|
10233 |
-
if ( jsonProp ) {
|
10234 |
-
s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
|
10235 |
-
} else if ( s.jsonp !== false ) {
|
10236 |
-
s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
|
10237 |
-
}
|
10238 |
-
|
10239 |
-
// Use data converter to retrieve json after script execution
|
10240 |
-
s.converters[ "script json" ] = function() {
|
10241 |
-
if ( !responseContainer ) {
|
10242 |
-
jQuery.error( callbackName + " was not called" );
|
10243 |
-
}
|
10244 |
-
return responseContainer[ 0 ];
|
10245 |
-
};
|
10246 |
-
|
10247 |
-
// Force json dataType
|
10248 |
-
s.dataTypes[ 0 ] = "json";
|
10249 |
-
|
10250 |
-
// Install callback
|
10251 |
-
overwritten = window[ callbackName ];
|
10252 |
-
window[ callbackName ] = function() {
|
10253 |
-
responseContainer = arguments;
|
10254 |
-
};
|
10255 |
-
|
10256 |
-
// Clean-up function (fires after converters)
|
10257 |
-
jqXHR.always( function() {
|
10258 |
-
|
10259 |
-
// If previous value didn't exist - remove it
|
10260 |
-
if ( overwritten === undefined ) {
|
10261 |
-
jQuery( window ).removeProp( callbackName );
|
10262 |
-
|
10263 |
-
// Otherwise restore preexisting value
|
10264 |
-
} else {
|
10265 |
-
window[ callbackName ] = overwritten;
|
10266 |
-
}
|
10267 |
-
|
10268 |
-
// Save back as free
|
10269 |
-
if ( s[ callbackName ] ) {
|
10270 |
-
|
10271 |
-
// Make sure that re-using the options doesn't screw things around
|
10272 |
-
s.jsonpCallback = originalSettings.jsonpCallback;
|
10273 |
-
|
10274 |
-
// Save the callback name for future use
|
10275 |
-
oldCallbacks.push( callbackName );
|
10276 |
-
}
|
10277 |
-
|
10278 |
-
// Call if it was a function and we have a response
|
10279 |
-
if ( responseContainer && isFunction( overwritten ) ) {
|
10280 |
-
overwritten( responseContainer[ 0 ] );
|
10281 |
-
}
|
10282 |
-
|
10283 |
-
responseContainer = overwritten = undefined;
|
10284 |
-
} );
|
10285 |
-
|
10286 |
-
// Delegate to script
|
10287 |
-
return "script";
|
10288 |
-
}
|
10289 |
-
} );
|
10290 |
-
|
10291 |
-
|
10292 |
-
|
10293 |
-
|
10294 |
-
// Support: Safari 8 only
|
10295 |
-
// In Safari 8 documents created via document.implementation.createHTMLDocument
|
10296 |
-
// collapse sibling forms: the second one becomes a child of the first one.
|
10297 |
-
// Because of that, this security measure has to be disabled in Safari 8.
|
10298 |
-
// https://bugs.webkit.org/show_bug.cgi?id=137337
|
10299 |
-
support.createHTMLDocument = ( function() {
|
10300 |
-
var body = document.implementation.createHTMLDocument( "" ).body;
|
10301 |
-
body.innerHTML = "<form></form><form></form>";
|
10302 |
-
return body.childNodes.length === 2;
|
10303 |
-
} )();
|
10304 |
-
|
10305 |
-
|
10306 |
-
// Argument "data" should be string of html
|
10307 |
-
// context (optional): If specified, the fragment will be created in this context,
|
10308 |
-
// defaults to document
|
10309 |
-
// keepScripts (optional): If true, will include scripts passed in the html string
|
10310 |
-
jQuery.parseHTML = function( data, context, keepScripts ) {
|
10311 |
-
if ( typeof data !== "string" ) {
|
10312 |
-
return [];
|
10313 |
-
}
|
10314 |
-
if ( typeof context === "boolean" ) {
|
10315 |
-
keepScripts = context;
|
10316 |
-
context = false;
|
10317 |
-
}
|
10318 |
-
|
10319 |
-
var base, parsed, scripts;
|
10320 |
-
|
10321 |
-
if ( !context ) {
|
10322 |
-
|
10323 |
-
// Stop scripts or inline event handlers from being executed immediately
|
10324 |
-
// by using document.implementation
|
10325 |
-
if ( support.createHTMLDocument ) {
|
10326 |
-
context = document.implementation.createHTMLDocument( "" );
|
10327 |
-
|
10328 |
-
// Set the base href for the created document
|
10329 |
-
// so any parsed elements with URLs
|
10330 |
-
// are based on the document's URL (gh-2965)
|
10331 |
-
base = context.createElement( "base" );
|
10332 |
-
base.href = document.location.href;
|
10333 |
-
context.head.appendChild( base );
|
10334 |
-
} else {
|
10335 |
-
context = document;
|
10336 |
-
}
|
10337 |
-
}
|
10338 |
-
|
10339 |
-
parsed = rsingleTag.exec( data );
|
10340 |
-
scripts = !keepScripts && [];
|
10341 |
-
|
10342 |
-
// Single tag
|
10343 |
-
if ( parsed ) {
|
10344 |
-
return [ context.createElement( parsed[ 1 ] ) ];
|
10345 |
-
}
|
10346 |
-
|
10347 |
-
parsed = buildFragment( [ data ], context, scripts );
|
10348 |
-
|
10349 |
-
if ( scripts && scripts.length ) {
|
10350 |
-
jQuery( scripts ).remove();
|
10351 |
-
}
|
10352 |
-
|
10353 |
-
return jQuery.merge( [], parsed.childNodes );
|
10354 |
-
};
|
10355 |
-
|
10356 |
-
|
10357 |
-
/**
|
10358 |
-
* Load a url into a page
|
10359 |
-
*/
|
10360 |
-
jQuery.fn.load = function( url, params, callback ) {
|
10361 |
-
var selector, type, response,
|
10362 |
-
self = this,
|
10363 |
-
off = url.indexOf( " " );
|
10364 |
-
|
10365 |
-
if ( off > -1 ) {
|
10366 |
-
selector = stripAndCollapse( url.slice( off ) );
|
10367 |
-
url = url.slice( 0, off );
|
10368 |
-
}
|
10369 |
-
|
10370 |
-
// If it's a function
|
10371 |
-
if ( isFunction( params ) ) {
|
10372 |
-
|
10373 |
-
// We assume that it's the callback
|
10374 |
-
callback = params;
|
10375 |
-
params = undefined;
|
10376 |
-
|
10377 |
-
// Otherwise, build a param string
|
10378 |
-
} else if ( params && typeof params === "object" ) {
|
10379 |
-
type = "POST";
|
10380 |
-
}
|
10381 |
-
|
10382 |
-
// If we have elements to modify, make the request
|
10383 |
-
if ( self.length > 0 ) {
|
10384 |
-
jQuery.ajax( {
|
10385 |
-
url: url,
|
10386 |
-
|
10387 |
-
// If "type" variable is undefined, then "GET" method will be used.
|
10388 |
-
// Make value of this field explicit since
|
10389 |
-
// user can override it through ajaxSetup method
|
10390 |
-
type: type || "GET",
|
10391 |
-
dataType: "html",
|
10392 |
-
data: params
|
10393 |
-
} ).done( function( responseText ) {
|
10394 |
-
|
10395 |
-
// Save response for use in complete callback
|
10396 |
-
response = arguments;
|
10397 |
-
|
10398 |
-
self.html( selector ?
|
10399 |
-
|
10400 |
-
// If a selector was specified, locate the right elements in a dummy div
|
10401 |
-
// Exclude scripts to avoid IE 'Permission Denied' errors
|
10402 |
-
jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
|
10403 |
-
|
10404 |
-
// Otherwise use the full result
|
10405 |
-
responseText );
|
10406 |
-
|
10407 |
-
// If the request succeeds, this function gets "data", "status", "jqXHR"
|
10408 |
-
// but they are ignored because response was set above.
|
10409 |
-
// If it fails, this function gets "jqXHR", "status", "error"
|
10410 |
-
} ).always( callback && function( jqXHR, status ) {
|
10411 |
-
self.each( function() {
|
10412 |
-
callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
|
10413 |
-
} );
|
10414 |
-
} );
|
10415 |
-
}
|
10416 |
-
|
10417 |
-
return this;
|
10418 |
-
};
|
10419 |
-
|
10420 |
-
|
10421 |
-
|
10422 |
-
|
10423 |
-
jQuery.expr.pseudos.animated = function( elem ) {
|
10424 |
-
return jQuery.grep( jQuery.timers, function( fn ) {
|
10425 |
-
return elem === fn.elem;
|
10426 |
-
} ).length;
|
10427 |
-
};
|
10428 |
-
|
10429 |
-
|
10430 |
-
|
10431 |
-
|
10432 |
-
jQuery.offset = {
|
10433 |
-
setOffset: function( elem, options, i ) {
|
10434 |
-
var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
|
10435 |
-
position = jQuery.css( elem, "position" ),
|
10436 |
-
curElem = jQuery( elem ),
|
10437 |
-
props = {};
|
10438 |
-
|
10439 |
-
// Set position first, in-case top/left are set even on static elem
|
10440 |
-
if ( position === "static" ) {
|
10441 |
-
elem.style.position = "relative";
|
10442 |
-
}
|
10443 |
-
|
10444 |
-
curOffset = curElem.offset();
|
10445 |
-
curCSSTop = jQuery.css( elem, "top" );
|
10446 |
-
curCSSLeft = jQuery.css( elem, "left" );
|
10447 |
-
calculatePosition = ( position === "absolute" || position === "fixed" ) &&
|
10448 |
-
( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
|
10449 |
-
|
10450 |
-
// Need to be able to calculate position if either
|
10451 |
-
// top or left is auto and position is either absolute or fixed
|
10452 |
-
if ( calculatePosition ) {
|
10453 |
-
curPosition = curElem.position();
|
10454 |
-
curTop = curPosition.top;
|
10455 |
-
curLeft = curPosition.left;
|
10456 |
-
|
10457 |
-
} else {
|
10458 |
-
curTop = parseFloat( curCSSTop ) || 0;
|
10459 |
-
curLeft = parseFloat( curCSSLeft ) || 0;
|
10460 |
-
}
|
10461 |
-
|
10462 |
-
if ( isFunction( options ) ) {
|
10463 |
-
|
10464 |
-
// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
|
10465 |
-
options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
|
10466 |
-
}
|
10467 |
-
|
10468 |
-
if ( options.top != null ) {
|
10469 |
-
props.top = ( options.top - curOffset.top ) + curTop;
|
10470 |
-
}
|
10471 |
-
if ( options.left != null ) {
|
10472 |
-
props.left = ( options.left - curOffset.left ) + curLeft;
|
10473 |
-
}
|
10474 |
-
|
10475 |
-
if ( "using" in options ) {
|
10476 |
-
options.using.call( elem, props );
|
10477 |
-
|
10478 |
-
} else {
|
10479 |
-
curElem.css( props );
|
10480 |
-
}
|
10481 |
-
}
|
10482 |
-
};
|
10483 |
-
|
10484 |
-
jQuery.fn.extend( {
|
10485 |
-
|
10486 |
-
// offset() relates an element's border box to the document origin
|
10487 |
-
offset: function( options ) {
|
10488 |
-
|
10489 |
-
// Preserve chaining for setter
|
10490 |
-
if ( arguments.length ) {
|
10491 |
-
return options === undefined ?
|
10492 |
-
this :
|
10493 |
-
this.each( function( i ) {
|
10494 |
-
jQuery.offset.setOffset( this, options, i );
|
10495 |
-
} );
|
10496 |
-
}
|
10497 |
-
|
10498 |
-
var rect, win,
|
10499 |
-
elem = this[ 0 ];
|
10500 |
-
|
10501 |
-
if ( !elem ) {
|
10502 |
-
return;
|
10503 |
-
}
|
10504 |
-
|
10505 |
-
// Return zeros for disconnected and hidden (display: none) elements (gh-2310)
|
10506 |
-
// Support: IE <=11 only
|
10507 |
-
// Running getBoundingClientRect on a
|
10508 |
-
// disconnected node in IE throws an error
|
10509 |
-
if ( !elem.getClientRects().length ) {
|
10510 |
-
return { top: 0, left: 0 };
|
10511 |
-
}
|
10512 |
-
|
10513 |
-
// Get document-relative position by adding viewport scroll to viewport-relative gBCR
|
10514 |
-
rect = elem.getBoundingClientRect();
|
10515 |
-
win = elem.ownerDocument.defaultView;
|
10516 |
-
return {
|
10517 |
-
top: rect.top + win.pageYOffset,
|
10518 |
-
left: rect.left + win.pageXOffset
|
10519 |
-
};
|
10520 |
-
},
|
10521 |
-
|
10522 |
-
// position() relates an element's margin box to its offset parent's padding box
|
10523 |
-
// This corresponds to the behavior of CSS absolute positioning
|
10524 |
-
position: function() {
|
10525 |
-
if ( !this[ 0 ] ) {
|
10526 |
-
return;
|
10527 |
-
}
|
10528 |
-
|
10529 |
-
var offsetParent, offset, doc,
|
10530 |
-
elem = this[ 0 ],
|
10531 |
-
parentOffset = { top: 0, left: 0 };
|
10532 |
-
|
10533 |
-
// position:fixed elements are offset from the viewport, which itself always has zero offset
|
10534 |
-
if ( jQuery.css( elem, "position" ) === "fixed" ) {
|
10535 |
-
|
10536 |
-
// Assume position:fixed implies availability of getBoundingClientRect
|
10537 |
-
offset = elem.getBoundingClientRect();
|
10538 |
-
|
10539 |
-
} else {
|
10540 |
-
offset = this.offset();
|
10541 |
-
|
10542 |
-
// Account for the *real* offset parent, which can be the document or its root element
|
10543 |
-
// when a statically positioned element is identified
|
10544 |
-
doc = elem.ownerDocument;
|
10545 |
-
offsetParent = elem.offsetParent || doc.documentElement;
|
10546 |
-
while ( offsetParent &&
|
10547 |
-
( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
|
10548 |
-
jQuery.css( offsetParent, "position" ) === "static" ) {
|
10549 |
-
|
10550 |
-
offsetParent = offsetParent.parentNode;
|
10551 |
-
}
|
10552 |
-
if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
|
10553 |
-
|
10554 |
-
// Incorporate borders into its offset, since they are outside its content origin
|
10555 |
-
parentOffset = jQuery( offsetParent ).offset();
|
10556 |
-
parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
|
10557 |
-
parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
|
10558 |
-
}
|
10559 |
-
}
|
10560 |
-
|
10561 |
-
// Subtract parent offsets and element margins
|
10562 |
-
return {
|
10563 |
-
top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
|
10564 |
-
left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
|
10565 |
-
};
|
10566 |
-
},
|
10567 |
-
|
10568 |
-
// This method will return documentElement in the following cases:
|
10569 |
-
// 1) For the element inside the iframe without offsetParent, this method will return
|
10570 |
-
// documentElement of the parent window
|
10571 |
-
// 2) For the hidden or detached element
|
10572 |
-
// 3) For body or html element, i.e. in case of the html node - it will return itself
|
10573 |
-
//
|
10574 |
-
// but those exceptions were never presented as a real life use-cases
|
10575 |
-
// and might be considered as more preferable results.
|
10576 |
-
//
|
10577 |
-
// This logic, however, is not guaranteed and can change at any point in the future
|
10578 |
-
offsetParent: function() {
|
10579 |
-
return this.map( function() {
|
10580 |
-
var offsetParent = this.offsetParent;
|
10581 |
-
|
10582 |
-
while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
|
10583 |
-
offsetParent = offsetParent.offsetParent;
|
10584 |
-
}
|
10585 |
-
|
10586 |
-
return offsetParent || documentElement;
|
10587 |
-
} );
|
10588 |
-
}
|
10589 |
-
} );
|
10590 |
-
|
10591 |
-
// Create scrollLeft and scrollTop methods
|
10592 |
-
jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
|
10593 |
-
var top = "pageYOffset" === prop;
|
10594 |
-
|
10595 |
-
jQuery.fn[ method ] = function( val ) {
|
10596 |
-
return access( this, function( elem, method, val ) {
|
10597 |
-
|
10598 |
-
// Coalesce documents and windows
|
10599 |
-
var win;
|
10600 |
-
if ( isWindow( elem ) ) {
|
10601 |
-
win = elem;
|
10602 |
-
} else if ( elem.nodeType === 9 ) {
|
10603 |
-
win = elem.defaultView;
|
10604 |
-
}
|
10605 |
-
|
10606 |
-
if ( val === undefined ) {
|
10607 |
-
return win ? win[ prop ] : elem[ method ];
|
10608 |
-
}
|
10609 |
-
|
10610 |
-
if ( win ) {
|
10611 |
-
win.scrollTo(
|
10612 |
-
!top ? val : win.pageXOffset,
|
10613 |
-
top ? val : win.pageYOffset
|
10614 |
-
);
|
10615 |
-
|
10616 |
-
} else {
|
10617 |
-
elem[ method ] = val;
|
10618 |
-
}
|
10619 |
-
}, method, val, arguments.length );
|
10620 |
-
};
|
10621 |
-
} );
|
10622 |
-
|
10623 |
-
// Support: Safari <=7 - 9.1, Chrome <=37 - 49
|
10624 |
-
// Add the top/left cssHooks using jQuery.fn.position
|
10625 |
-
// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
|
10626 |
-
// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
|
10627 |
-
// getComputedStyle returns percent when specified for top/left/bottom/right;
|
10628 |
-
// rather than make the css module depend on the offset module, just check for it here
|
10629 |
-
jQuery.each( [ "top", "left" ], function( _i, prop ) {
|
10630 |
-
jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
|
10631 |
-
function( elem, computed ) {
|
10632 |
-
if ( computed ) {
|
10633 |
-
computed = curCSS( elem, prop );
|
10634 |
-
|
10635 |
-
// If curCSS returns percentage, fallback to offset
|
10636 |
-
return rnumnonpx.test( computed ) ?
|
10637 |
-
jQuery( elem ).position()[ prop ] + "px" :
|
10638 |
-
computed;
|
10639 |
-
}
|
10640 |
-
}
|
10641 |
-
);
|
10642 |
-
} );
|
10643 |
-
|
10644 |
-
|
10645 |
-
// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
|
10646 |
-
jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
|
10647 |
-
jQuery.each( {
|
10648 |
-
padding: "inner" + name,
|
10649 |
-
content: type,
|
10650 |
-
"": "outer" + name
|
10651 |
-
}, function( defaultExtra, funcName ) {
|
10652 |
-
|
10653 |
-
// Margin is only for outerHeight, outerWidth
|
10654 |
-
jQuery.fn[ funcName ] = function( margin, value ) {
|
10655 |
-
var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
|
10656 |
-
extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
|
10657 |
-
|
10658 |
-
return access( this, function( elem, type, value ) {
|
10659 |
-
var doc;
|
10660 |
-
|
10661 |
-
if ( isWindow( elem ) ) {
|
10662 |
-
|
10663 |
-
// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
|
10664 |
-
return funcName.indexOf( "outer" ) === 0 ?
|
10665 |
-
elem[ "inner" + name ] :
|
10666 |
-
elem.document.documentElement[ "client" + name ];
|
10667 |
-
}
|
10668 |
-
|
10669 |
-
// Get document width or height
|
10670 |
-
if ( elem.nodeType === 9 ) {
|
10671 |
-
doc = elem.documentElement;
|
10672 |
-
|
10673 |
-
// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
|
10674 |
-
// whichever is greatest
|
10675 |
-
return Math.max(
|
10676 |
-
elem.body[ "scroll" + name ], doc[ "scroll" + name ],
|
10677 |
-
elem.body[ "offset" + name ], doc[ "offset" + name ],
|
10678 |
-
doc[ "client" + name ]
|
10679 |
-
);
|
10680 |
-
}
|
10681 |
-
|
10682 |
-
return value === undefined ?
|
10683 |
-
|
10684 |
-
// Get width or height on the element, requesting but not forcing parseFloat
|
10685 |
-
jQuery.css( elem, type, extra ) :
|
10686 |
-
|
10687 |
-
// Set width or height on the element
|
10688 |
-
jQuery.style( elem, type, value, extra );
|
10689 |
-
}, type, chainable ? margin : undefined, chainable );
|
10690 |
-
};
|
10691 |
-
} );
|
10692 |
-
} );
|
10693 |
-
|
10694 |
-
|
10695 |
-
jQuery.each( [
|
10696 |
-
"ajaxStart",
|
10697 |
-
"ajaxStop",
|
10698 |
-
"ajaxComplete",
|
10699 |
-
"ajaxError",
|
10700 |
-
"ajaxSuccess",
|
10701 |
-
"ajaxSend"
|
10702 |
-
], function( _i, type ) {
|
10703 |
-
jQuery.fn[ type ] = function( fn ) {
|
10704 |
-
return this.on( type, fn );
|
10705 |
-
};
|
10706 |
-
} );
|
10707 |
-
|
10708 |
-
|
10709 |
-
|
10710 |
-
|
10711 |
-
jQuery.fn.extend( {
|
10712 |
-
|
10713 |
-
bind: function( types, data, fn ) {
|
10714 |
-
return this.on( types, null, data, fn );
|
10715 |
-
},
|
10716 |
-
unbind: function( types, fn ) {
|
10717 |
-
return this.off( types, null, fn );
|
10718 |
-
},
|
10719 |
-
|
10720 |
-
delegate: function( selector, types, data, fn ) {
|
10721 |
-
return this.on( types, selector, data, fn );
|
10722 |
-
},
|
10723 |
-
undelegate: function( selector, types, fn ) {
|
10724 |
-
|
10725 |
-
// ( namespace ) or ( selector, types [, fn] )
|
10726 |
-
return arguments.length === 1 ?
|
10727 |
-
this.off( selector, "**" ) :
|
10728 |
-
this.off( types, selector || "**", fn );
|
10729 |
-
},
|
10730 |
-
|
10731 |
-
hover: function( fnOver, fnOut ) {
|
10732 |
-
return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
|
10733 |
-
}
|
10734 |
-
} );
|
10735 |
-
|
10736 |
-
jQuery.each(
|
10737 |
-
( "blur focus focusin focusout resize scroll click dblclick " +
|
10738 |
-
"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
|
10739 |
-
"change select submit keydown keypress keyup contextmenu" ).split( " " ),
|
10740 |
-
function( _i, name ) {
|
10741 |
-
|
10742 |
-
// Handle event binding
|
10743 |
-
jQuery.fn[ name ] = function( data, fn ) {
|
10744 |
-
return arguments.length > 0 ?
|
10745 |
-
this.on( name, null, data, fn ) :
|
10746 |
-
this.trigger( name );
|
10747 |
-
};
|
10748 |
-
}
|
10749 |
-
);
|
10750 |
-
|
10751 |
-
|
10752 |
-
|
10753 |
-
|
10754 |
-
// Support: Android <=4.0 only
|
10755 |
-
// Make sure we trim BOM and NBSP
|
10756 |
-
var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
|
10757 |
-
|
10758 |
-
// Bind a function to a context, optionally partially applying any
|
10759 |
-
// arguments.
|
10760 |
-
// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
|
10761 |
-
// However, it is not slated for removal any time soon
|
10762 |
-
jQuery.proxy = function( fn, context ) {
|
10763 |
-
var tmp, args, proxy;
|
10764 |
-
|
10765 |
-
if ( typeof context === "string" ) {
|
10766 |
-
tmp = fn[ context ];
|
10767 |
-
context = fn;
|
10768 |
-
fn = tmp;
|
10769 |
-
}
|
10770 |
-
|
10771 |
-
// Quick check to determine if target is callable, in the spec
|
10772 |
-
// this throws a TypeError, but we will just return undefined.
|
10773 |
-
if ( !isFunction( fn ) ) {
|
10774 |
-
return undefined;
|
10775 |
-
}
|
10776 |
-
|
10777 |
-
// Simulated bind
|
10778 |
-
args = slice.call( arguments, 2 );
|
10779 |
-
proxy = function() {
|
10780 |
-
return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
|
10781 |
-
};
|
10782 |
-
|
10783 |
-
// Set the guid of unique handler to the same of original handler, so it can be removed
|
10784 |
-
proxy.guid = fn.guid = fn.guid || jQuery.guid++;
|
10785 |
-
|
10786 |
-
return proxy;
|
10787 |
-
};
|
10788 |
-
|
10789 |
-
jQuery.holdReady = function( hold ) {
|
10790 |
-
if ( hold ) {
|
10791 |
-
jQuery.readyWait++;
|
10792 |
-
} else {
|
10793 |
-
jQuery.ready( true );
|
10794 |
-
}
|
10795 |
-
};
|
10796 |
-
jQuery.isArray = Array.isArray;
|
10797 |
-
jQuery.parseJSON = JSON.parse;
|
10798 |
-
jQuery.nodeName = nodeName;
|
10799 |
-
jQuery.isFunction = isFunction;
|
10800 |
-
jQuery.isWindow = isWindow;
|
10801 |
-
jQuery.camelCase = camelCase;
|
10802 |
-
jQuery.type = toType;
|
10803 |
-
|
10804 |
-
jQuery.now = Date.now;
|
10805 |
-
|
10806 |
-
jQuery.isNumeric = function( obj ) {
|
10807 |
-
|
10808 |
-
// As of jQuery 3.0, isNumeric is limited to
|
10809 |
-
// strings and numbers (primitives or objects)
|
10810 |
-
// that can be coerced to finite numbers (gh-2662)
|
10811 |
-
var type = jQuery.type( obj );
|
10812 |
-
return ( type === "number" || type === "string" ) &&
|
10813 |
-
|
10814 |
-
// parseFloat NaNs numeric-cast false positives ("")
|
10815 |
-
// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
|
10816 |
-
// subtraction forces infinities to NaN
|
10817 |
-
!isNaN( obj - parseFloat( obj ) );
|
10818 |
-
};
|
10819 |
-
|
10820 |
-
jQuery.trim = function( text ) {
|
10821 |
-
return text == null ?
|
10822 |
-
"" :
|
10823 |
-
( text + "" ).replace( rtrim, "" );
|
10824 |
-
};
|
10825 |
-
|
10826 |
-
|
10827 |
-
|
10828 |
-
// Register as a named AMD module, since jQuery can be concatenated with other
|
10829 |
-
// files that may use define, but not via a proper concatenation script that
|
10830 |
-
// understands anonymous AMD modules. A named AMD is safest and most robust
|
10831 |
-
// way to register. Lowercase jquery is used because AMD module names are
|
10832 |
-
// derived from file names, and jQuery is normally delivered in a lowercase
|
10833 |
-
// file name. Do this after creating the global so that if an AMD module wants
|
10834 |
-
// to call noConflict to hide this version of jQuery, it will work.
|
10835 |
-
|
10836 |
-
// Note that for maximum portability, libraries that are not jQuery should
|
10837 |
-
// declare themselves as anonymous modules, and avoid setting a global if an
|
10838 |
-
// AMD loader is present. jQuery is a special case. For more information, see
|
10839 |
-
// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
|
10840 |
-
|
10841 |
-
if ( typeof define === "function" && define.amd ) {
|
10842 |
-
define( "jquery", [], function() {
|
10843 |
-
return jQuery;
|
10844 |
-
} );
|
10845 |
-
}
|
10846 |
-
|
10847 |
-
|
10848 |
-
|
10849 |
-
|
10850 |
-
var
|
10851 |
-
|
10852 |
-
// Map over jQuery in case of overwrite
|
10853 |
-
_jQuery = window.jQuery,
|
10854 |
-
|
10855 |
-
// Map over the $ in case of overwrite
|
10856 |
-
_$ = window.$;
|
10857 |
-
|
10858 |
-
jQuery.noConflict = function( deep ) {
|
10859 |
-
if ( window.$ === jQuery ) {
|
10860 |
-
window.$ = _$;
|
10861 |
-
}
|
10862 |
-
|
10863 |
-
if ( deep && window.jQuery === jQuery ) {
|
10864 |
-
window.jQuery = _jQuery;
|
10865 |
-
}
|
10866 |
-
|
10867 |
-
return jQuery;
|
10868 |
-
};
|
10869 |
-
|
10870 |
-
// Expose jQuery and $ identifiers, even in AMD
|
10871 |
-
// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
|
10872 |
-
// and CommonJS for browser emulators (#13566)
|
10873 |
-
if ( typeof noGlobal === "undefined" ) {
|
10874 |
-
window.jQuery = window.$ = jQuery;
|
10875 |
-
}
|
10876 |
-
|
10877 |
-
|
10878 |
-
|
10879 |
-
|
10880 |
-
return jQuery;
|
10881 |
-
} );
|
10882 |
-
|
10883 |
-
var gapi=window.gapi=window.gapi||{};gapi._bs=new Date().getTime();(function(){/*
|
10884 |
-
|
10885 |
-
Copyright The Closure Library Authors.
|
10886 |
-
SPDX-License-Identifier: Apache-2.0
|
10887 |
-
*/
|
10888 |
-
var n,aa=function(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}},ba="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a},ca=function(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("Cannot find global object");
|
10889 |
-
},da=ca(this),ha=function(a,b){if(b)a:{var c=da;a=a.split(".");for(var d=0;d<a.length-1;d++){var e=a[d];if(!(e in c))break a;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&ba(c,a,{configurable:!0,writable:!0,value:b})}};
|
10890 |
-
ha("Symbol",function(a){if(a)return a;var b=function(f,g){this.ca=f;ba(this,"description",{configurable:!0,writable:!0,value:g})};b.prototype.toString=function(){return this.ca};var c="jscomp_symbol_"+(1E9*Math.random()>>>0)+"_",d=0,e=function(f){if(this instanceof e)throw new TypeError("Symbol is not a constructor");return new b(c+(f||"")+"_"+d++,f)};return e});
|
10891 |
-
ha("Symbol.iterator",function(a){if(a)return a;a=Symbol("Symbol.iterator");for(var b="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),c=0;c<b.length;c++){var d=da[b[c]];"function"===typeof d&&"function"!=typeof d.prototype[a]&&ba(d.prototype,a,{configurable:!0,writable:!0,value:function(){return ia(aa(this))}})}return a});
|
10892 |
-
var ia=function(a){a={next:a};a[Symbol.iterator]=function(){return this};return a},ja=function(a,b){a instanceof String&&(a+="");var c=0,d=!1,e={next:function(){if(!d&&c<a.length){var f=c++;return{value:b(f,a[f]),done:!1}}d=!0;return{done:!0,value:void 0}}};e[Symbol.iterator]=function(){return e};return e};ha("Array.prototype.keys",function(a){return a?a:function(){return ja(this,function(b){return b})}});
|
10893 |
-
var p=this||self,ka=function(a){var b=typeof a;return"object"!=b?b:a?Array.isArray(a)?"array":b:"null"},la=function(a){var b=ka(a);return"array"==b||"object"==b&&"number"==typeof a.length},ma=function(a){var b=typeof a;return"object"==b&&null!=a||"function"==b},na="closure_uid_"+(1E9*Math.random()>>>0),oa=0,pa=function(a,b,c){return a.call.apply(a.bind,arguments)},qa=function(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var e=Array.prototype.slice.call(arguments);
|
10894 |
-
Array.prototype.unshift.apply(e,d);return a.apply(b,e)}}return function(){return a.apply(b,arguments)}},ra=function(a,b,c){ra=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?pa:qa;return ra.apply(null,arguments)},sa=function(a,b){function c(){}c.prototype=b.prototype;a.pa=b.prototype;a.prototype=new c;a.prototype.constructor=a;a.B=function(d,e,f){for(var g=Array(arguments.length-2),h=2;h<arguments.length;h++)g[h-2]=arguments[h];return b.prototype[e].apply(d,
|
10895 |
-
g)}},ta=function(a){return a},ua=function(a){var b=null,c=p.trustedTypes;if(!c||!c.createPolicy)return b;try{b=c.createPolicy(a,{createHTML:ta,createScript:ta,createScriptURL:ta})}catch(d){p.console&&p.console.error(d.message)}return b};function t(a){if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var b=Error().stack;b&&(this.stack=b)}a&&(this.message=String(a))}sa(t,Error);t.prototype.name="CustomError";var va;var wa=function(a,b){a=a.split("%s");for(var c="",d=a.length-1,e=0;e<d;e++)c+=a[e]+(e<b.length?b[e]:"%s");t.call(this,c+a[d])};sa(wa,t);wa.prototype.name="AssertionError";
|
10896 |
-
var xa=function(a,b,c,d){var e="Assertion failed";if(c){e+=": "+c;var f=d}else a&&(e+=": "+a,f=b);throw new wa(""+e,f||[]);},w=function(a,b,c){a||xa("",null,b,Array.prototype.slice.call(arguments,2));return a},ya=function(a,b){throw new wa("Failure"+(a?": "+a:""),Array.prototype.slice.call(arguments,1));},za=function(a,b,c){"string"!==typeof a&&xa("Expected string but got %s: %s.",[ka(a),a],b,Array.prototype.slice.call(arguments,2))};var Aa=Array.prototype.forEach?function(a,b){w(null!=a.length);Array.prototype.forEach.call(a,b,void 0)}:function(a,b){for(var c=a.length,d="string"===typeof a?a.split(""):a,e=0;e<c;e++)e in d&&b.call(void 0,d[e],e,a)};function Ba(a){var b=a.length;if(0<b){for(var c=Array(b),d=0;d<b;d++)c[d]=a[d];return c}return[]};/*
|
10897 |
-
|
10898 |
-
SPDX-License-Identifier: Apache-2.0
|
10899 |
-
*/
|
10900 |
-
function Da(a,b){for(var c in a)b.call(void 0,a[c],c,a)};var Ea;var x=function(a,b){this.S=a===Fa&&b||"";this.da=Ga};x.prototype.F=!0;x.prototype.D=function(){return this.S};x.prototype.toString=function(){return"Const{"+this.S+"}"};var Ha=function(a){if(a instanceof x&&a.constructor===x&&a.da===Ga)return a.S;ya("expected object of type Const, got '"+a+"'");return"type_error:Const"},Ga={},Fa={};var z=function(a,b){this.P=b===Ia?a:""};z.prototype.F=!0;z.prototype.D=function(){return this.P.toString()};z.prototype.toString=function(){return this.P.toString()};
|
10901 |
-
var Ja=function(a){if(a instanceof z&&a.constructor===z)return a.P;ya("expected object of type SafeUrl, got '"+a+"' of type "+ka(a));return"type_error:SafeUrl"},Ka=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i,La=function(a){if(a instanceof z)return a;a="object"==typeof a&&a.F?a.D():String(a);w(Ka.test(a),"%s does not match the safe URL pattern",a)||(a="about:invalid#zClosurez");return new z(a,Ia)},Ia={};var Ma={},Na=function(a,b,c){this.O=c===Ma?a:"";this.F=!0};Na.prototype.D=function(){return this.O.toString()};Na.prototype.toString=function(){return this.O.toString()};var Oa=function(a,b){a:{try{var c=a&&a.ownerDocument,d=c&&(c.defaultView||c.parentWindow);d=d||p;if(d.Element&&d.Location){var e=d;break a}}catch(g){}e=null}if(e&&"undefined"!=typeof e[b]&&(!a||!(a instanceof e[b])&&(a instanceof e.Location||a instanceof e.Element))){if(ma(a))try{var f=a.constructor.displayName||a.constructor.name||Object.prototype.toString.call(a)}catch(g){f="<object could not be stringified>"}else f=void 0===a?"undefined":null===a?"null":typeof a;ya("Argument is not a %s (or a non-Element, non-Location mock); got: %s",
|
10902 |
-
b,f)}return a};var Qa=function(a,b){Da(b,function(c,d){c&&"object"==typeof c&&c.F&&(c=c.D());"style"==d?a.style.cssText=c:"class"==d?a.className=c:"for"==d?a.htmlFor=c:Pa.hasOwnProperty(d)?a.setAttribute(Pa[d],c):0==d.lastIndexOf("aria-",0)||0==d.lastIndexOf("data-",0)?a.setAttribute(d,c):a[d]=c})},Pa={cellpadding:"cellPadding",cellspacing:"cellSpacing",colspan:"colSpan",frameborder:"frameBorder",height:"height",maxlength:"maxLength",nonce:"nonce",role:"role",rowspan:"rowSpan",type:"type",usemap:"useMap",valign:"vAlign",
|
10903 |
-
width:"width"},Ra=function(a,b,c,d){function e(h){h&&b.appendChild("string"===typeof h?a.createTextNode(h):h)}for(;d<c.length;d++){var f=c[d];if(!la(f)||ma(f)&&0<f.nodeType)e(f);else{a:{if(f&&"number"==typeof f.length){if(ma(f)){var g="function"==typeof f.item||"string"==typeof f.item;break a}if("function"===typeof f){g="function"==typeof f.item;break a}}g=!1}Aa(g?Ba(f):f,e)}}},Sa=function(a,b){b=String(b);"application/xhtml+xml"===a.contentType&&(b=b.toLowerCase());return a.createElement(b)},Ta=
|
10904 |
-
function(a){w(a,"Node cannot be null or undefined.");return 9==a.nodeType?a:a.ownerDocument||a.document},Ua=function(a){this.C=a||p.document||document};n=Ua.prototype;n.getElementsByTagName=function(a,b){return(b||this.C).getElementsByTagName(String(a))};n.ga=function(a,b,c){var d=this.C,e=arguments,f=e[1],g=Sa(d,String(e[0]));f&&("string"===typeof f?g.className=f:Array.isArray(f)?g.className=f.join(" "):Qa(g,f));2<e.length&&Ra(d,g,e,2);return g};n.createElement=function(a){return Sa(this.C,a)};
|
10905 |
-
n.createTextNode=function(a){return this.C.createTextNode(String(a))};n.appendChild=function(a,b){w(null!=a&&null!=b,"goog.dom.appendChild expects non-null arguments");a.appendChild(b)};n.append=function(a,b){Ra(Ta(a),a,arguments,1)};n.canHaveChildren=function(a){if(1!=a.nodeType)return!1;switch(a.tagName){case "APPLET":case "AREA":case "BASE":case "BR":case "COL":case "COMMAND":case "EMBED":case "FRAME":case "HR":case "IMG":case "INPUT":case "IFRAME":case "ISINDEX":case "KEYGEN":case "LINK":case "NOFRAMES":case "NOSCRIPT":case "META":case "OBJECT":case "PARAM":case "SCRIPT":case "SOURCE":case "STYLE":case "TRACK":case "WBR":return!1}return!0};
|
10906 |
-
n.removeNode=function(a){return a&&a.parentNode?a.parentNode.removeChild(a):null};n.contains=function(a,b){if(!a||!b)return!1;if(a.contains&&1==b.nodeType)return a==b||a.contains(b);if("undefined"!=typeof a.compareDocumentPosition)return a==b||!!(a.compareDocumentPosition(b)&16);for(;b&&a!=b;)b=b.parentNode;return b==a};/*
|
10907 |
-
gapi.loader.OBJECT_CREATE_TEST_OVERRIDE &&*/
|
10908 |
-
var A=window,B=document,Va=A.location,Wa=function(){},Xa=/\[native code\]/,C=function(a,b,c){return a[b]=a[b]||c},Ya=function(a){for(var b=0;b<this.length;b++)if(this[b]===a)return b;return-1},$a=function(a){a=a.sort();for(var b=[],c=void 0,d=0;d<a.length;d++){var e=a[d];e!=c&&b.push(e);c=e}return b},ab=/&/g,bb=/</g,cb=/>/g,db=/"/g,eb=/'/g,fb=function(a){return String(a).replace(ab,"&").replace(bb,"<").replace(cb,">").replace(db,""").replace(eb,"'")},D=function(){var a;if((a=Object.create)&&
|
10909 |
-
Xa.test(a))a=a(null);else{a={};for(var b in a)a[b]=void 0}return a},E=function(a,b){return Object.prototype.hasOwnProperty.call(a,b)},gb=function(a){if(Xa.test(Object.keys))return Object.keys(a);var b=[],c;for(c in a)E(a,c)&&b.push(c);return b},F=function(a,b){a=a||{};for(var c in a)E(a,c)&&(b[c]=a[c])},hb=function(a){return function(){A.setTimeout(a,0)}},G=function(a,b){if(!a)throw Error(b||"");},H=C(A,"gapi",{});var J=function(a,b,c){var d=new RegExp("([#].*&|[#])"+b+"=([^&#]*)","g");b=new RegExp("([?#].*&|[?#])"+b+"=([^&#]*)","g");if(a=a&&(d.exec(a)||b.exec(a)))try{c=decodeURIComponent(a[2])}catch(e){}return c},ib=new RegExp(/^/.source+/([a-zA-Z][-+.a-zA-Z0-9]*:)?/.source+/(\/\/[^\/?#]*)?/.source+/([^?#]*)?/.source+/(\?([^#]*))?/.source+/(#((#|[^#])*))?/.source+/$/.source),jb=/[\ud800-\udbff][\udc00-\udfff]|[^!-~]/g,kb=new RegExp(/(%([^0-9a-fA-F%]|[0-9a-fA-F]([^0-9a-fA-F%])?)?)*/.source+/%($|[^0-9a-fA-F]|[0-9a-fA-F]($|[^0-9a-fA-F]))/.source,
|
10910 |
-
"g"),lb=/%([a-f]|[0-9a-fA-F][a-f])/g,mb=/^(https?|ftp|file|chrome-extension):$/i,nb=function(a){a=String(a);a=a.replace(jb,function(e){try{return encodeURIComponent(e)}catch(f){return encodeURIComponent(e.replace(/^[^%]+$/g,"\ufffd"))}}).replace(kb,function(e){return e.replace(/%/g,"%25")}).replace(lb,function(e){return e.toUpperCase()});a=a.match(ib)||[];var b=D(),c=function(e){return e.replace(/\\/g,"%5C").replace(/\^/g,"%5E").replace(/`/g,"%60").replace(/\{/g,"%7B").replace(/\|/g,"%7C").replace(/\}/g,
|
10911 |
-
"%7D")},d=!!(a[1]||"").match(mb);b.B=c((a[1]||"")+(a[2]||"")+(a[3]||(a[2]&&d?"/":"")));d=function(e){return c(e.replace(/\?/g,"%3F").replace(/#/g,"%23"))};b.query=a[5]?[d(a[5])]:[];b.j=a[7]?[d(a[7])]:[];return b},ob=function(a){return a.B+(0<a.query.length?"?"+a.query.join("&"):"")+(0<a.j.length?"#"+a.j.join("&"):"")},pb=function(a,b){var c=[];if(a)for(var d in a)if(E(a,d)&&null!=a[d]){var e=b?b(a[d]):a[d];c.push(encodeURIComponent(d)+"="+encodeURIComponent(e))}return c},qb=function(a,b,c,d){a=nb(a);
|
10912 |
-
a.query.push.apply(a.query,pb(b,d));a.j.push.apply(a.j,pb(c,d));return ob(a)},rb=new RegExp(/\/?\??#?/.source+"("+/[\/?#]/i.source+"|"+/[\uD800-\uDBFF]/i.source+"|"+/%[c-f][0-9a-f](%[89ab][0-9a-f]){0,2}(%[89ab]?)?/i.source+"|"+/%[0-9a-f]?/i.source+")$","i"),sb=function(a,b){var c=nb(b);b=c.B;c.query.length&&(b+="?"+c.query.join(""));c.j.length&&(b+="#"+c.j.join(""));var d="";2E3<b.length&&(d=b,b=b.substr(0,2E3),b=b.replace(rb,""),d=d.substr(b.length));var e=a.createElement("div");a=a.createElement("a");
|
10913 |
-
c=nb(b);b=c.B;c.query.length&&(b+="?"+c.query.join(""));c.j.length&&(b+="#"+c.j.join(""));b=new z(b,Ia);Oa(a,"HTMLAnchorElement");b=b instanceof z?b:La(b);a.href=Ja(b);e.appendChild(a);b=e.innerHTML;c=new x(Fa,"Assignment to self.");za(Ha(c),"must provide justification");w(!/^[\s\xa0]*$/.test(Ha(c)),"must provide non-empty justification");void 0===Ea&&(Ea=ua("gapi#html"));b=(c=Ea)?c.createHTML(b):b;b=new Na(b,null,Ma);if(null!==e&&void 0!==e.tagName){if("script"===e.tagName.toLowerCase())throw Error("Use setTextContent with a SafeScript.");
|
10914 |
-
if("style"===e.tagName.toLowerCase())throw Error("Use setTextContent with a SafeStyleSheet.");}b instanceof Na&&b.constructor===Na?b=b.O:(ya("expected object of type SafeHtml, got '"+b+"' of type "+ka(b)),b="type_error:SafeHtml");e.innerHTML=b;b=String(e.firstChild.href);e.parentNode&&e.parentNode.removeChild(e);c=nb(b+d);d=c.B;c.query.length&&(d+="?"+c.query.join(""));c.j.length&&(d+="#"+c.j.join(""));return d},tb=/^https?:\/\/[^\/%\\?#\s]+\/[^\s]*$/i;var ub;var vb=function(a,b,c,d){if(A[c+"EventListener"])A[c+"EventListener"](a,b,!1);else if(A[d+"tachEvent"])A[d+"tachEvent"]("on"+a,b)},wb=function(){var a=B.readyState;return"complete"===a||"interactive"===a&&-1==navigator.userAgent.indexOf("MSIE")},zb=function(a){var b=xb;if(!wb())try{b()}catch(c){}yb(a)},yb=function(a){if(wb())a();else{var b=!1,c=function(){if(!b)return b=!0,a.apply(this,arguments)};A.addEventListener?(A.addEventListener("load",c,!1),A.addEventListener("DOMContentLoaded",c,!1)):A.attachEvent&&
|
10915 |
-
(A.attachEvent("onreadystatechange",function(){wb()&&c.apply(this,arguments)}),A.attachEvent("onload",c))}},Ab=function(a){for(;a.firstChild;)a.removeChild(a.firstChild)},Bb={button:!0,div:!0,span:!0};var L;L=C(A,"___jsl",D());C(L,"I",0);C(L,"hel",10);var Cb=function(a){return L.dpo?L.h:J(a,"jsh",L.h)},Db=function(a){var b=C(L,"sws",[]);b.push.apply(b,a)},Eb=function(a){return C(L,"watt",D())[a]},Fb=function(a){var b=C(L,"PQ",[]);L.PQ=[];var c=b.length;if(0===c)a();else for(var d=0,e=function(){++d===c&&a()},f=0;f<c;f++)b[f](e)},Gb=function(a){return C(C(L,"H",D()),a,D())};var Hb=C(L,"perf",D()),Ib=C(Hb,"g",D()),Jb=C(Hb,"i",D());C(Hb,"r",[]);D();D();
|
10916 |
-
var Kb=function(a,b,c){var d=Hb.r;"function"===typeof d?d(a,b,c):d.push([a,b,c])},M=function(a,b,c){Ib[a]=!b&&Ib[a]||c||(new Date).getTime();Kb(a)},Mb=function(a,b,c){b&&0<b.length&&(b=Lb(b),c&&0<c.length&&(b+="___"+Lb(c)),28<b.length&&(b=b.substr(0,28)+(b.length-28)),c=b,b=C(Jb,"_p",D()),C(b,c,D())[a]=(new Date).getTime(),Kb(a,"_p",c))},Lb=function(a){return a.join("__").replace(/\./g,"_").replace(/\-/g,"_").replace(/,/g,"_")};var Nb=D(),Ob=[],N=function(a){throw Error("Bad hint"+(a?": "+a:""));};Ob.push(["jsl",function(a){for(var b in a)if(E(a,b)){var c=a[b];"object"==typeof c?L[b]=C(L,b,[]).concat(c):C(L,b,c)}if(b=a.u)a=C(L,"us",[]),a.push(b),(b=/^https:(.*)$/.exec(b))&&a.push("http:"+b[1])}]);var Pb=/^(\/[a-zA-Z0-9_\-]+)+$/,Qb=[/\/amp\//,/\/amp$/,/^\/amp$/],Rb=/^[a-zA-Z0-9\-_\.,!]+$/,Sb=/^gapi\.loaded_[0-9]+$/,Tb=/^[a-zA-Z0-9,._-]+$/,Xb=function(a,b,c,d,e){var f=a.split(";"),g=f.shift(),h=Nb[g],k=null;h?k=h(f,b,c,d):N("no hint processor for: "+g);k||N("failed to generate load url");b=k;c=b.match(Ub);(d=b.match(Vb))&&1===d.length&&Wb.test(b)&&c&&1===c.length||N("failed sanity: "+a);try{a="?";if(e&&0<e.length){c=b=0;for(d={};c<e.length;){var l=e[c++];f=void 0;f=ma(l)?"o"+(Object.prototype.hasOwnProperty.call(l,
|
10917 |
-
na)&&l[na]||(l[na]=++oa)):(typeof l).charAt(0)+l;Object.prototype.hasOwnProperty.call(d,f)||(d[f]=!0,e[b++]=l)}e.length=b;k=k+"?le="+e.join(",");a="&"}if(L.rol){var m=L.ol;m&&m.length&&(k=""+k+a+"ol="+m.length)}}catch(r){}return k},$b=function(a,b,c,d){a=Yb(a);Sb.test(c)||N("invalid_callback");b=Zb(b);d=d&&d.length?Zb(d):null;var e=function(f){return encodeURIComponent(f).replace(/%2C/g,",")};return[encodeURIComponent(a.pathPrefix).replace(/%2C/g,",").replace(/%2F/g,"/"),"/k=",e(a.version),"/m=",
|
10918 |
-
e(b),d?"/exm="+e(d):"","/rt=j/sv=1/d=1/ed=1",a.U?"/am="+e(a.U):"",a.$?"/rs="+e(a.$):"",a.ba?"/t="+e(a.ba):"","/cb=",e(c)].join("")},Yb=function(a){"/"!==a.charAt(0)&&N("relative path");for(var b=a.substring(1).split("/"),c=[];b.length;){a=b.shift();if(!a.length||0==a.indexOf("."))N("empty/relative directory");else if(0<a.indexOf("=")){b.unshift(a);break}c.push(a)}a={};for(var d=0,e=b.length;d<e;++d){var f=b[d].split("="),g=decodeURIComponent(f[0]),h=decodeURIComponent(f[1]);2==f.length&&g&&h&&(a[g]=
|
10919 |
-
a[g]||h)}b="/"+c.join("/");Pb.test(b)||N("invalid_prefix");c=0;for(d=Qb.length;c<d;++c)Qb[c].test(b)&&N("invalid_prefix");c=ac(a,"k",!0);d=ac(a,"am");e=ac(a,"rs");a=ac(a,"t");return{pathPrefix:b,version:c,U:d,$:e,ba:a}},Zb=function(a){for(var b=[],c=0,d=a.length;c<d;++c){var e=a[c].replace(/\./g,"_").replace(/-/g,"_");Tb.test(e)&&b.push(e)}return b.join(",")},ac=function(a,b,c){a=a[b];!a&&c&&N("missing: "+b);if(a){if(Rb.test(a))return a;N("invalid: "+b)}return null},Wb=/^https?:\/\/[a-z0-9_.-]+\.google(rs)?\.com(:\d+)?\/[a-zA-Z0-9_.,!=\-\/]+$/,
|
10920 |
-
Vb=/\/cb=/g,Ub=/\/\//g,bc=function(){var a=Cb(Va.href);if(!a)throw Error("Bad hint");return a};Nb.m=function(a,b,c,d){(a=a[0])||N("missing_hint");return"https://apis.google.com"+$b(a,b,c,d)};var cc=decodeURI("%73cript"),dc=/^[-+_0-9\/A-Za-z]+={0,2}$/,ec=function(a,b){for(var c=[],d=0;d<a.length;++d){var e=a[d];e&&0>Ya.call(b,e)&&c.push(e)}return c},fc=function(){var a=L.nonce;return void 0!==a?a&&a===String(a)&&a.match(dc)?a:L.nonce=null:B.querySelector?(a=B.querySelector("script[nonce]"))?(a=a.nonce||a.getAttribute("nonce")||"",a&&a===String(a)&&a.match(dc)?L.nonce=a:L.nonce=null):null:null},ic=function(a){if("loading"!=B.readyState)gc(a);else{var b=fc(),c="";null!==b&&(c=' nonce="'+
|
10921 |
-
b+'"');a="<"+cc+' src="'+encodeURI(a)+'"'+c+"></"+cc+">";B.write(hc?hc.createHTML(a):a)}},gc=function(a){var b=B.createElement(cc);b.setAttribute("src",hc?hc.createScriptURL(a):a);a=fc();null!==a&&b.setAttribute("nonce",a);b.async="true";(a=B.getElementsByTagName(cc)[0])?a.parentNode.insertBefore(b,a):(B.head||B.body||B.documentElement).appendChild(b)},jc=function(a,b){var c=b&&b._c;if(c)for(var d=0;d<Ob.length;d++){var e=Ob[d][0],f=Ob[d][1];f&&E(c,e)&&f(c[e],a,b)}},lc=function(a,b,c){kc(function(){var d=
|
10922 |
-
b===Cb(Va.href)?C(H,"_",D()):D();d=C(Gb(b),"_",d);a(d)},c)},nc=function(a,b){var c=b||{};"function"==typeof b&&(c={},c.callback=b);jc(a,c);b=[];a?b=a.split(":"):c.features&&(b=c.features);var d=c.h||bc(),e=C(L,"ah",D());if(e["::"]&&b.length){a=[];for(var f=null;f=b.shift();){var g=f.split(".");g=e[f]||e[g[1]&&"ns:"+g[0]||""]||d;var h=a.length&&a[a.length-1]||null,k=h;h&&h.hint==g||(k={hint:g,features:[]},a.push(k));k.features.push(f)}var l=a.length;if(1<l){var m=c.callback;m&&(c.callback=function(){0==
|
10923 |
-
--l&&m()})}for(;b=a.shift();)mc(b.features,c,b.hint)}else mc(b||[],c,d)},mc=function(a,b,c){a=$a(a)||[];var d=b.callback,e=b.config,f=b.timeout,g=b.ontimeout,h=b.onerror,k=void 0;"function"==typeof h&&(k=h);var l=null,m=!1;if(f&&!g||!f&&g)throw"Timeout requires both the timeout parameter and ontimeout parameter to be set";h=C(Gb(c),"r",[]).sort();var r=C(Gb(c),"L",[]).sort(),u=L.le,q=[].concat(h),I=function(O,ea){if(m)return 0;A.clearTimeout(l);r.push.apply(r,y);var fa=((H||{}).config||{}).update;
|
10924 |
-
fa?fa(e):e&&C(L,"cu",[]).push(e);if(ea){Mb("me0",O,q);try{lc(ea,c,k)}finally{Mb("me1",O,q)}}return 1};0<f&&(l=A.setTimeout(function(){m=!0;g()},f));var y=ec(a,r);if(y.length){y=ec(a,h);var v=C(L,"CP",[]),K=v.length;v[K]=function(O){if(!O)return 0;Mb("ml1",y,q);var ea=function(Ca){v[K]=null;I(y,O)&&Fb(function(){d&&d();Ca()})},fa=function(){var Ca=v[K+1];Ca&&Ca()};0<K&&v[K-1]?v[K]=function(){ea(fa)}:ea(fa)};if(y.length){var Za="loaded_"+L.I++;H[Za]=function(O){v[K](O);H[Za]=null};a=Xb(c,y,"gapi."+
|
10925 |
-
Za,h,u);h.push.apply(h,y);Mb("ml0",y,q);b.sync||A.___gapisync?ic(a):gc(a)}else v[K](Wa)}else I(y)&&d&&d()},hc=ua("gapi#gapi");var kc=function(a,b){if(L.hee&&0<L.hel)try{return a()}catch(c){b&&b(c),L.hel--,nc("debug_error",function(){try{window.___jsl.hefn(c)}catch(d){throw c;}})}else try{return a()}catch(c){throw b&&b(c),c;}};var oc=H.load;oc&&C(L,"ol",[]).push(oc);H.load=function(a,b){return kc(function(){return nc(a,b)})};var pc=function(a){var b=window.___jsl=window.___jsl||{};b[a]=b[a]||[];return b[a]},qc=function(a){var b=window.___jsl=window.___jsl||{};b.cfg=!a&&b.cfg||{};return b.cfg},rc=function(a){return"object"===typeof a&&/\[native code\]/.test(a.push)},P=function(a,b,c){if(b&&"object"===typeof b)for(var d in b)!Object.prototype.hasOwnProperty.call(b,d)||c&&"___goc"===d&&"undefined"===typeof b[d]||(a[d]&&b[d]&&"object"===typeof a[d]&&"object"===typeof b[d]&&!rc(a[d])&&!rc(b[d])?P(a[d],b[d]):b[d]&&"object"===
|
10926 |
-
typeof b[d]?(a[d]=rc(b[d])?[]:{},P(a[d],b[d])):a[d]=b[d])},sc=function(a){if(a&&!/^\s+$/.test(a)){for(;0==a.charCodeAt(a.length-1);)a=a.substring(0,a.length-1);try{var b=window.JSON.parse(a)}catch(c){}if("object"===typeof b)return b;try{b=(new Function("return ("+a+"\n)"))()}catch(c){}if("object"===typeof b)return b;try{b=(new Function("return ({"+a+"\n})"))()}catch(c){}return"object"===typeof b?b:{}}},tc=function(a,b){var c={___goc:void 0};a.length&&a[a.length-1]&&Object.hasOwnProperty.call(a[a.length-
|
10927 |
-
1],"___goc")&&"undefined"===typeof a[a.length-1].___goc&&(c=a.pop());P(c,b);a.push(c)},uc=function(a){qc(!0);var b=window.___gcfg,c=pc("cu"),d=window.___gu;b&&b!==d&&(tc(c,b),window.___gu=b);b=pc("cu");var e=document.scripts||document.getElementsByTagName("script")||[];d=[];var f=[];f.push.apply(f,pc("us"));for(var g=0;g<e.length;++g)for(var h=e[g],k=0;k<f.length;++k)h.src&&0==h.src.indexOf(f[k])&&d.push(h);0==d.length&&0<e.length&&e[e.length-1].src&&d.push(e[e.length-1]);for(e=0;e<d.length;++e)d[e].getAttribute("gapi_processed")||
|
10928 |
-
(d[e].setAttribute("gapi_processed",!0),(f=d[e])?(g=f.nodeType,f=3==g||4==g?f.nodeValue:f.textContent||""):f=void 0,(f=sc(f))&&b.push(f));a&&tc(c,a);d=pc("cd");a=0;for(b=d.length;a<b;++a)P(qc(),d[a],!0);d=pc("ci");a=0;for(b=d.length;a<b;++a)P(qc(),d[a],!0);a=0;for(b=c.length;a<b;++a)P(qc(),c[a],!0)},Q=function(a){var b=qc();if(!a)return b;a=a.split("/");for(var c=0,d=a.length;b&&"object"===typeof b&&c<d;++c)b=b[a[c]];return c===a.length&&void 0!==b?b:void 0},vc=function(a,b){var c;if("string"===typeof a){var d=
|
10929 |
-
c={};a=a.split("/");for(var e=0,f=a.length;e<f-1;++e){var g={};d=d[a[e]]=g}d[a[e]]=b}else c=a;uc(c)};var wc=function(){var a=window.__GOOGLEAPIS;a&&(a.googleapis&&!a["googleapis.config"]&&(a["googleapis.config"]=a.googleapis),C(L,"ci",[]).push(a),window.__GOOGLEAPIS=void 0)};var xc={callback:1,clientid:1,cookiepolicy:1,openidrealm:-1,includegrantedscopes:-1,requestvisibleactions:1,scope:1},yc=!1,zc=D(),Ac=function(){if(!yc){for(var a=document.getElementsByTagName("meta"),b=0;b<a.length;++b){var c=a[b].name.toLowerCase();if(0==c.lastIndexOf("google-signin-",0)){c=c.substring(14);var d=a[b].content;xc[c]&&d&&(zc[c]=d)}}if(window.self!==window.top){a=document.location.toString();for(var e in xc)0<xc[e]&&(b=J(a,e,""))&&(zc[e]=b)}yc=!0}e=D();F(zc,e);return e},Bc=function(a){return!!(a.clientid&&
|
10930 |
-
a.scope&&a.callback)};var Cc=function(){this.i=window.console};Cc.prototype.log=function(a){this.i&&this.i.log&&this.i.log(a)};Cc.prototype.error=function(a){this.i&&(this.i.error?this.i.error(a):this.i.log&&this.i.log(a))};Cc.prototype.warn=function(a){this.i&&(this.i.warn?this.i.warn(a):this.i.log&&this.i.log(a))};Cc.prototype.debug=function(){};var Dc=new Cc;var Ec=function(){return!!L.oa},Fc=function(){};var R=C(L,"rw",D()),Gc=function(a){for(var b in R)a(R[b])},Hc=function(a,b){(a=R[a])&&a.state<b&&(a.state=b)};var S=function(a){var b=window.___jsl=window.___jsl||{};b.cfg=b.cfg||{};b=b.cfg;if(!a)return b;a=a.split("/");for(var c=0,d=a.length;b&&"object"===typeof b&&c<d;++c)b=b[a[c]];return c===a.length&&void 0!==b?b:void 0};var Ic=/^https?:\/\/(?:\w|[\-\.])+\.google\.(?:\w|[\-:\.])+(?:\/[^\?#]*)?\/u\/(\d)\//,Jc=/^https?:\/\/(?:\w|[\-\.])+\.google\.(?:\w|[\-:\.])+(?:\/[^\?#]*)?\/b\/(\d{10,21})\//,Kc=function(a){var b=S("googleapis.config/sessionIndex");"string"===typeof b&&254<b.length&&(b=null);null==b&&(b=window.__X_GOOG_AUTHUSER);"string"===typeof b&&254<b.length&&(b=null);if(null==b){var c=window.google;c&&(b=c.authuser)}"string"===typeof b&&254<b.length&&(b=null);null==b&&(a=a||window.location.href,b=J(a,"authuser")||
|
10931 |
-
null,null==b&&(b=(b=a.match(Ic))?b[1]:null));if(null==b)return null;b=String(b);254<b.length&&(b=null);return b},Lc=function(a){var b=S("googleapis.config/sessionDelegate");"string"===typeof b&&21<b.length&&(b=null);null==b&&(b=(a=(a||window.location.href).match(Jc))?a[1]:null);if(null==b)return null;b=String(b);21<b.length&&(b=null);return b};var Mc,T,U=void 0,V=function(a){try{return p.JSON.parse.call(p.JSON,a)}catch(b){return!1}},W=function(a){return Object.prototype.toString.call(a)},Nc=W(0),Oc=W(new Date(0)),Pc=W(!0),Qc=W(""),Rc=W({}),Sc=W([]),X=function(a,b){if(b)for(var c=0,d=b.length;c<d;++c)if(a===b[c])throw new TypeError("Converting circular structure to JSON");d=typeof a;if("undefined"!==d){c=Array.prototype.slice.call(b||[],0);c[c.length]=a;b=[];var e=W(a);if(null!=a&&"function"===typeof a.toJSON&&(Object.prototype.hasOwnProperty.call(a,
|
10932 |
-
"toJSON")||(e!==Sc||a.constructor!==Array&&a.constructor!==Object)&&(e!==Rc||a.constructor!==Array&&a.constructor!==Object)&&e!==Qc&&e!==Nc&&e!==Pc&&e!==Oc))return X(a.toJSON.call(a),c);if(null==a)b[b.length]="null";else if(e===Nc)a=Number(a),isNaN(a)||isNaN(a-a)?a="null":-0===a&&0>1/a&&(a="-0"),b[b.length]=String(a);else if(e===Pc)b[b.length]=String(!!Number(a));else{if(e===Oc)return X(a.toISOString.call(a),c);if(e===Sc&&W(a.length)===Nc){b[b.length]="[";var f=0;for(d=Number(a.length)>>0;f<d;++f)f&&
|
10933 |
-
(b[b.length]=","),b[b.length]=X(a[f],c)||"null";b[b.length]="]"}else if(e==Qc&&W(a.length)===Nc){b[b.length]='"';f=0;for(c=Number(a.length)>>0;f<c;++f)d=String.prototype.charAt.call(a,f),e=String.prototype.charCodeAt.call(a,f),b[b.length]="\b"===d?"\\b":"\f"===d?"\\f":"\n"===d?"\\n":"\r"===d?"\\r":"\t"===d?"\\t":"\\"===d||'"'===d?"\\"+d:31>=e?"\\u"+(e+65536).toString(16).substr(1):32<=e&&65535>=e?d:"\ufffd";b[b.length]='"'}else if("object"===d){b[b.length]="{";d=0;for(f in a)Object.prototype.hasOwnProperty.call(a,
|
10934 |
-
f)&&(e=X(a[f],c),void 0!==e&&(d++&&(b[b.length]=","),b[b.length]=X(f),b[b.length]=":",b[b.length]=e));b[b.length]="}"}else return}return b.join("")}},Tc=/[\0-\x07\x0b\x0e-\x1f]/,Uc=/^([^"]*"([^\\"]|\\.)*")*[^"]*"([^"\\]|\\.)*[\0-\x1f]/,Vc=/^([^"]*"([^\\"]|\\.)*")*[^"]*"([^"\\]|\\.)*\\[^\\\/"bfnrtu]/,Wc=/^([^"]*"([^\\"]|\\.)*")*[^"]*"([^"\\]|\\.)*\\u([0-9a-fA-F]{0,3}[^0-9a-fA-F])/,Xc=/"([^\0-\x1f\\"]|\\[\\\/"bfnrt]|\\u[0-9a-fA-F]{4})*"/g,Yc=/-?(0|[1-9][0-9]*)(\.[0-9]+)?([eE][-+]?[0-9]+)?/g,Zc=/[ \t\n\r]+/g,
|
10935 |
-
$c=/[^"]:/,ad=/""/g,bd=/true|false|null/g,cd=/00/,dd=/[\{]([^0\}]|0[^:])/,ed=/(^|\[)[,:]|[,:](\]|\}|[,:]|$)/,fd=/[^\[,:][\[\{]/,gd=/^(\{|\}|\[|\]|,|:|0)+/,hd=/\u2028/g,id=/\u2029/g,jd=function(a){a=String(a);if(Tc.test(a)||Uc.test(a)||Vc.test(a)||Wc.test(a))return!1;var b=a.replace(Xc,'""');b=b.replace(Yc,"0");b=b.replace(Zc,"");if($c.test(b))return!1;b=b.replace(ad,"0");b=b.replace(bd,"0");if(cd.test(b)||dd.test(b)||ed.test(b)||fd.test(b)||!b||(b=b.replace(gd,"")))return!1;a=a.replace(hd,"\\u2028").replace(id,
|
10936 |
-
"\\u2029");b=void 0;try{b=U?[V(a)]:eval("(function (var_args) {\n return Array.prototype.slice.call(arguments, 0);\n})(\n"+a+"\n)")}catch(c){return!1}return b&&1===b.length?b[0]:!1},kd=function(){var a=((p.document||{}).scripts||[]).length;if((void 0===Mc||void 0===U||T!==a)&&-1!==T){Mc=U=!1;T=-1;try{try{U=!!p.JSON&&'{"a":[3,true,"1970-01-01T00:00:00.000Z"]}'===p.JSON.stringify.call(p.JSON,{a:[3,!0,new Date(0)],c:function(){}})&&!0===V("true")&&3===V('[{"a":3}]')[0].a}catch(b){}Mc=U&&!V("[00]")&&
|
10937 |
-
!V('"\u0007"')&&!V('"\\0"')&&!V('"\\v"')}finally{T=a}}},ld=function(a){if(-1===T)return!1;kd();return(Mc?V:jd)(a)},md=function(a){if(-1!==T)return kd(),U?p.JSON.stringify.call(p.JSON,a):X(a)},nd=!Date.prototype.toISOString||"function"!==typeof Date.prototype.toISOString||"1970-01-01T00:00:00.000Z"!==(new Date(0)).toISOString(),od=function(){var a=Date.prototype.getUTCFullYear.call(this);return[0>a?"-"+String(1E6-a).substr(1):9999>=a?String(1E4+a).substr(1):"+"+String(1E6+a).substr(1),"-",String(101+
|
10938 |
-
Date.prototype.getUTCMonth.call(this)).substr(1),"-",String(100+Date.prototype.getUTCDate.call(this)).substr(1),"T",String(100+Date.prototype.getUTCHours.call(this)).substr(1),":",String(100+Date.prototype.getUTCMinutes.call(this)).substr(1),":",String(100+Date.prototype.getUTCSeconds.call(this)).substr(1),".",String(1E3+Date.prototype.getUTCMilliseconds.call(this)).substr(1),"Z"].join("")};Date.prototype.toISOString=nd?od:Date.prototype.toISOString;var pd=function(){this.blockSize=-1};var qd=function(){this.blockSize=-1;this.blockSize=64;this.g=[];this.L=[];this.ea=[];this.H=[];this.H[0]=128;for(var a=1;a<this.blockSize;++a)this.H[a]=0;this.J=this.v=0;this.reset()};sa(qd,pd);qd.prototype.reset=function(){this.g[0]=1732584193;this.g[1]=4023233417;this.g[2]=2562383102;this.g[3]=271733878;this.g[4]=3285377520;this.J=this.v=0};
|
10939 |
-
var rd=function(a,b,c){c||(c=0);var d=a.ea;if("string"===typeof b)for(var e=0;16>e;e++)d[e]=b.charCodeAt(c)<<24|b.charCodeAt(c+1)<<16|b.charCodeAt(c+2)<<8|b.charCodeAt(c+3),c+=4;else for(e=0;16>e;e++)d[e]=b[c]<<24|b[c+1]<<16|b[c+2]<<8|b[c+3],c+=4;for(e=16;80>e;e++){var f=d[e-3]^d[e-8]^d[e-14]^d[e-16];d[e]=(f<<1|f>>>31)&4294967295}b=a.g[0];c=a.g[1];var g=a.g[2],h=a.g[3],k=a.g[4];for(e=0;80>e;e++){if(40>e)if(20>e){f=h^c&(g^h);var l=1518500249}else f=c^g^h,l=1859775393;else 60>e?(f=c&g|h&(c|g),l=2400959708):
|
10940 |
-
(f=c^g^h,l=3395469782);f=(b<<5|b>>>27)+f+k+l+d[e]&4294967295;k=h;h=g;g=(c<<30|c>>>2)&4294967295;c=b;b=f}a.g[0]=a.g[0]+b&4294967295;a.g[1]=a.g[1]+c&4294967295;a.g[2]=a.g[2]+g&4294967295;a.g[3]=a.g[3]+h&4294967295;a.g[4]=a.g[4]+k&4294967295};
|
10941 |
-
qd.prototype.update=function(a,b){if(null!=a){void 0===b&&(b=a.length);for(var c=b-this.blockSize,d=0,e=this.L,f=this.v;d<b;){if(0==f)for(;d<=c;)rd(this,a,d),d+=this.blockSize;if("string"===typeof a)for(;d<b;){if(e[f]=a.charCodeAt(d),++f,++d,f==this.blockSize){rd(this,e);f=0;break}}else for(;d<b;)if(e[f]=a[d],++f,++d,f==this.blockSize){rd(this,e);f=0;break}}this.v=f;this.J+=b}};
|
10942 |
-
qd.prototype.digest=function(){var a=[],b=8*this.J;56>this.v?this.update(this.H,56-this.v):this.update(this.H,this.blockSize-(this.v-56));for(var c=this.blockSize-1;56<=c;c--)this.L[c]=b&255,b/=256;rd(this,this.L);for(c=b=0;5>c;c++)for(var d=24;0<=d;d-=8)a[b]=this.g[c]>>d&255,++b;return a};var sd=function(){this.R=new qd};sd.prototype.reset=function(){this.R.reset()};var td=A.crypto,ud=!1,vd=0,wd=0,xd=1,yd=0,zd="",Ad=function(a){a=a||A.event;var b=a.screenX+a.clientX<<16;b+=a.screenY+a.clientY;b*=(new Date).getTime()%1E6;xd=xd*b%yd;0<vd&&++wd==vd&&vb("mousemove",Ad,"remove","de")},Bd=function(a){var b=new sd;a=unescape(encodeURIComponent(a));for(var c=[],d=0,e=a.length;d<e;++d)c.push(a.charCodeAt(d));b.R.update(c);b=b.R.digest();a="";for(c=0;c<b.length;c++)a+="0123456789ABCDEF".charAt(Math.floor(b[c]/16))+"0123456789ABCDEF".charAt(b[c]%16);return a};
|
10943 |
-
ud=!!td&&"function"==typeof td.getRandomValues;ud||(yd=1E6*(screen.width*screen.width+screen.height),zd=Bd(B.cookie+"|"+B.location+"|"+(new Date).getTime()+"|"+Math.random()),vd=S("random/maxObserveMousemove")||0,0!=vd&&vb("mousemove",Ad,"add","at"));var Cd=function(){var a=L.onl;if(!a){a=D();L.onl=a;var b=D();a.e=function(c){var d=b[c];d&&(delete b[c],d())};a.a=function(c,d){b[c]=d};a.r=function(c){delete b[c]}}return a},Dd=function(a,b){b=b.onload;return"function"===typeof b?(Cd().a(a,b),b):null},Ed=function(a){G(/^\w+$/.test(a),"Unsupported id - "+a);return'onload="window.___jsl.onl.e("'+a+'")"'},Fd=function(a){Cd().r(a)};var Gd={allowtransparency:"true",frameborder:"0",hspace:"0",marginheight:"0",marginwidth:"0",scrolling:"no",style:"",tabindex:"0",vspace:"0",width:"100%"},Hd={allowtransparency:!0,onload:!0},Id=0,Jd=function(a){G(!a||tb.test(a),"Illegal url for new iframe - "+a)},Kd=function(a,b,c,d,e){Jd(c.src);var f,g=Dd(d,c),h=g?Ed(d):"";try{document.all&&(f=a.createElement('<iframe frameborder="'+fb(String(c.frameborder))+'" scrolling="'+fb(String(c.scrolling))+'" '+h+' name="'+fb(String(c.name))+'"/>'))}catch(l){}finally{f||
|
10944 |
-
(f=(a?new Ua(Ta(a)):va||(va=new Ua)).ga("IFRAME"),g&&(f.onload=function(){f.onload=null;g.call(this)},Fd(d)))}f.setAttribute("ng-non-bindable","");for(var k in c)a=c[k],"style"===k&&"object"===typeof a?F(a,f.style):Hd[k]||f.setAttribute(k,String(a));(k=e&&e.beforeNode||null)||e&&e.dontclear||Ab(b);b.insertBefore(f,k);f=k?k.previousSibling:b.lastChild;c.allowtransparency&&(f.allowTransparency=!0);return f};var Ld=/^:[\w]+$/,Md=/:([a-zA-Z_]+):/g,Nd=function(){var a=Kc()||"0",b=Lc();var c=Kc(void 0)||a;var d=Lc(void 0),e="";c&&(e+="u/"+encodeURIComponent(String(c))+"/");d&&(e+="b/"+encodeURIComponent(String(d))+"/");c=e||null;(e=(d=!1===S("isLoggedIn"))?"_/im/":"")&&(c="");var f=S("iframes/:socialhost:"),g=S("iframes/:im_socialhost:");return ub={socialhost:f,ctx_socialhost:d?g:f,session_index:a,session_delegate:b,session_prefix:c,im_prefix:e}},Od=function(a,b){return Nd()[b]||""},Pd=function(a){return function(b,
|
10945 |
-
c){return a?Nd()[c]||a[c]||"":Nd()[c]||""}};var Qd=function(a){var b;a.match(/^https?%3A/i)&&(b=decodeURIComponent(a));return sb(document,b?b:a)},Rd=function(a){a=a||"canonical";for(var b=document.getElementsByTagName("link"),c=0,d=b.length;c<d;c++){var e=b[c],f=e.getAttribute("rel");if(f&&f.toLowerCase()==a&&(e=e.getAttribute("href"))&&(e=Qd(e))&&null!=e.match(/^https?:\/\/[\w\-_\.]+/i))return e}return window.location.href};var Sd={se:"0"},Td={post:!0},Ud={style:"position:absolute;top:-10000px;width:450px;margin:0px;border-style:none"},Vd="onPlusOne _ready _close _open _resizeMe _renderstart oncircled drefresh erefresh".split(" "),Wd=C(L,"WI",D()),Xd=function(a,b,c){var d;var e={};var f=d=a;"plus"==a&&b.action&&(d=a+"_"+b.action,f=a+"/"+b.action);(d=Q("iframes/"+d+"/url"))||(d=":im_socialhost:/:session_prefix::im_prefix:_/widget/render/"+f+"?usegapi=1");for(var g in Sd)e[g]=g+"/"+(b[g]||Sd[g])+"/";e=sb(B,d.replace(Md,
|
10946 |
-
Pd(e)));g="iframes/"+a+"/params/";f={};F(b,f);(d=Q("lang")||Q("gwidget/lang"))&&(f.hl=d);Td[a]||(f.origin=window.location.origin||window.location.protocol+"//"+window.location.host);f.exp=Q(g+"exp");if(g=Q(g+"location"))for(d=0;d<g.length;d++){var h=g[d];f[h]=A.location[h]}switch(a){case "plus":case "follow":g=f.href;d=b.action?void 0:"publisher";g=(g="string"==typeof g?g:void 0)?Qd(g):Rd(d);f.url=g;delete f.href;break;case "plusone":g=(g=b.href)?Qd(g):Rd();f.url=g;g=b.db;d=Q();null==g&&d&&(g=d.db,
|
10947 |
-
null==g&&(g=d.gwidget&&d.gwidget.db));f.db=g||void 0;g=b.ecp;d=Q();null==g&&d&&(g=d.ecp,null==g&&(g=d.gwidget&&d.gwidget.ecp));f.ecp=g||void 0;delete f.href;break;case "signin":f.url=Rd()}L.ILI&&(f.iloader="1");delete f["data-onload"];delete f.rd;for(var k in Sd)f[k]&&delete f[k];f.gsrc=Q("iframes/:source:");k=Q("inline/css");"undefined"!==typeof k&&0<c&&k>=c&&(f.ic="1");k=/^#|^fr-/;c={};for(var l in f)E(f,l)&&k.test(l)&&(c[l.replace(k,"")]=f[l],delete f[l]);l="q"==Q("iframes/"+a+"/params/si")?f:
|
10948 |
-
c;k=Ac();for(var m in k)!E(k,m)||E(f,m)||E(c,m)||(l[m]=k[m]);m=[].concat(Vd);(l=Q("iframes/"+a+"/methods"))&&"object"===typeof l&&Xa.test(l.push)&&(m=m.concat(l));for(var r in b)E(b,r)&&/^on/.test(r)&&("plus"!=a||"onconnect"!=r)&&(m.push(r),delete f[r]);delete f.callback;c._methods=m.join(",");return qb(e,f,c)},Yd=["style","data-gapiscan"],$d=function(a){for(var b=D(),c=0!=a.nodeName.toLowerCase().indexOf("g:"),d=0,e=a.attributes.length;d<e;d++){var f=a.attributes[d],g=f.name,h=f.value;0<=Ya.call(Yd,
|
10949 |
-
g)||c&&0!=g.indexOf("data-")||"null"===h||"specified"in f&&!f.specified||(c&&(g=g.substr(5)),b[g.toLowerCase()]=h)}a=a.style;(c=Zd(a&&a.height))&&(b.height=String(c));(a=Zd(a&&a.width))&&(b.width=String(a));return b},Zd=function(a){var b=void 0;"number"===typeof a?b=a:"string"===typeof a&&(b=parseInt(a,10));return b},ce=function(){var a=L.drw;Gc(function(b){if(a!==b.id&&4!=b.state&&"share"!=b.type){var c=b.id,d=b.type,e=b.url;b=b.userParams;var f=B.getElementById(c);if(f){var g=Xd(d,b,0);g?(f=f.parentNode,
|
10950 |
-
ae(e)!==ae(g)&&(b.dontclear=!0,b.rd=!0,b.ri=!0,b.type=d,be(f,b),(d=R[f.lastChild.id])&&(d.oid=c),Hc(c,4))):delete R[c]}else delete R[c]}})},ae=function(a){var b=RegExp("(\\?|&)ic=1");return a.replace(/#.*/,"").replace(b,"")};var de,ee,Y,fe,ge,he=/(?:^|\s)g-((\S)*)(?:$|\s)/,ie={plusone:!0,autocomplete:!0,profile:!0,signin:!0,signin2:!0};de=C(L,"SW",D());ee=C(L,"SA",D());Y=C(L,"SM",D());fe=C(L,"FW",[]);ge=null;
|
10951 |
-
var je=function(a,b){return("string"===typeof a?document.getElementById(a):a)||b},le=function(a,b){ke(void 0,!1,a,b)},ke=function(a,b,c,d){M("ps0",!0);c=je(c,B);var e=B.documentMode;if(c.querySelectorAll&&(!e||8<e)){e=d?[d]:gb(de).concat(gb(ee)).concat(gb(Y));for(var f=[],g=0;g<e.length;g++){var h=e[g];f.push(".g-"+h,"g\\:"+h)}e=c.querySelectorAll(f.join(","))}else e=c.getElementsByTagName("*");c=D();for(f=0;f<e.length;f++){g=e[f];var k=g;h=d;var l=k.nodeName.toLowerCase(),m=void 0;if(k.getAttribute("data-gapiscan"))h=
|
10952 |
-
null;else{var r=l.indexOf("g:");0==r?m=l.substr(2):(r=(r=String(k.className||k.getAttribute("class")))&&he.exec(r))&&(m=r[1]);h=!m||!(de[m]||ee[m]||Y[m])||h&&m!==h?null:m}h&&(ie[h]||0==g.nodeName.toLowerCase().indexOf("g:")||0!=gb($d(g)).length)&&(g.setAttribute("data-gapiscan",!0),C(c,h,[]).push(g))}if(b)for(var u in c)for(b=c[u],d=0;d<b.length;d++)b[d].setAttribute("data-onload",!0);for(var q in c)fe.push(q);M("ps1",!0);if((u=fe.join(":"))||a)try{H.load(u,a)}catch(y){Dc.log(y);return}if(me(ge||
|
10953 |
-
{}))for(var I in c){a=c[I];q=0;for(b=a.length;q<b;q++)a[q].removeAttribute("data-gapiscan");ne(I)}else{d=[];for(I in c)for(a=c[I],q=0,b=a.length;q<b;q++)e=a[q],oe(I,e,$d(e),d,b);pe(u,d)}},qe=function(a){var b=C(H,a,{});b.go||(b.go=function(c){return le(c,a)},b.render=function(c,d){d=d||{};d.type=a;return be(c,d)})},re=function(a){de[a]=!0},se=function(a){ee[a]=!0},te=function(a){Y[a]=!0};var ne=function(a,b){var c=Eb(a);b&&c?(c(b),(c=b.iframeNode)&&c.setAttribute("data-gapiattached",!0)):H.load(a,function(){var d=Eb(a),e=b&&b.iframeNode,f=b&&b.userParams;e&&d?(d(b),e.setAttribute("data-gapiattached",!0)):(d=H[a].go,"signin2"==a?d(e,f):d(e&&e.parentNode,f))})},me=function(){return!1},pe=function(){},oe=function(a,b,c,d,e,f,g){switch(ue(b,a,f)){case 0:a=Y[a]?a+"_annotation":a;d={};d.iframeNode=b;d.userParams=c;ne(a,d);break;case 1:if(b.parentNode){for(var h in c){if(f=E(c,h))f=c[h],
|
10954 |
-
f=!!f&&"object"===typeof f&&(!f.toString||f.toString===Object.prototype.toString||f.toString===Array.prototype.toString);if(f)try{c[h]=md(c[h])}catch(K){delete c[h]}}f=!0;c.dontclear&&(f=!1);delete c.dontclear;Fc();h=Xd(a,c,e);e=g||{};e.allowPost=1;e.attributes=Ud;e.dontclear=!f;g={};g.userParams=c;g.url=h;g.type=a;if(c.rd)var k=b;else k=document.createElement("div"),b.setAttribute("data-gapistub",!0),k.style.cssText="position:absolute;width:450px;left:-10000px;",b.parentNode.insertBefore(k,b);g.siteElement=
|
10955 |
-
k;k.id||(b=k,C(Wd,a,0),f="___"+a+"_"+Wd[a]++,b.id=f);b=D();b[">type"]=a;F(c,b);f=h;c=k;h=e||{};b=h.attributes||{};G(!(h.allowPost||h.forcePost)||!b.onload,"onload is not supported by post iframe (allowPost or forcePost)");e=b=f;Ld.test(b)&&(e=S("iframes/"+e.substring(1)+"/url"),G(!!e,"Unknown iframe url config for - "+b));f=sb(B,e.replace(Md,Od));b=c.ownerDocument||B;e=h;var l=0;do k=e.id||["I",Id++,"_",(new Date).getTime()].join("");while(b.getElementById(k)&&5>++l);G(5>l,"Error creating iframe id");
|
10956 |
-
e=k;k=h;l={};var m={};b.documentMode&&9>b.documentMode&&(l.hostiemode=b.documentMode);F(k.queryParams||{},l);F(k.fragmentParams||{},m);var r=k.pfname;var u=D();S("iframes/dropLegacyIdParam")||(u.id=e);u._gfid=e;u.parent=b.location.protocol+"//"+b.location.host;var q=J(b.location.href,"parent");r=r||"";!r&&q&&(q=J(b.location.href,"_gfid","")||J(b.location.href,"id",""),r=J(b.location.href,"pfname",""),r=q?r+"/"+q:"");r||(q=ld(J(b.location.href,"jcp","")))&&"object"==typeof q&&(r=(r=q.id)?q.pfname+
|
10957 |
-
"/"+r:"");u.pfname=r;k.connectWithJsonParam&&(q={},q.jcp=md(u),u=q);q=J(f,"rpctoken")||l.rpctoken||m.rpctoken;if(!q){if(!(q=k.rpctoken)){q=String;r=Math;var I=r.round;if(ud){var y=new A.Uint32Array(1);td.getRandomValues(y);y=Number("0."+y[0])}else y=xd,y+=parseInt(zd.substr(0,20),16),zd=Bd(zd),y/=yd+Math.pow(16,20);q=q(I.call(r,1E8*y))}u.rpctoken=q}k.rpctoken=q;F(u,k.connectWithQueryParams?l:m);q=b.location.href;u=D();(r=J(q,"_bsh",L.bsh))&&(u._bsh=r);(q=Cb(q))&&(u.jsh=q);k.hintInFragment?F(u,m):
|
10958 |
-
F(u,l);l=qb(f,l,m,k.paramsSerializer);f=h;m=D();F(Gd,m);F(f.attributes,m);m.name=m.id=e;m.src=l;h.eurl=l;h=(k=h)||{};f=!!h.allowPost;if(h.forcePost||f&&2E3<l.length){f=nb(l);m.src="";k.dropDataPostorigin||(m["data-postorigin"]=l);h=Kd(b,c,m,e);if(-1!=navigator.userAgent.indexOf("WebKit")){var v=h.contentWindow.document;v.open();l=v.createElement("div");m={};u=e+"_inner";m.name=u;m.src="";m.style="display:none";Kd(b,l,m,u,k)}l=(k=f.query[0])?k.split("&"):[];k=[];for(m=0;m<l.length;m++)u=l[m].split("=",
|
10959 |
-
2),k.push([decodeURIComponent(u[0]),decodeURIComponent(u[1])]);f.query=[];l=ob(f);G(tb.test(l),"Invalid URL: "+l);f=b.createElement("form");f.method="POST";f.target=e;f.style.display="none";e=l instanceof z?l:La(l);Oa(f,"HTMLFormElement").action=Ja(e);for(e=0;e<k.length;e++)l=b.createElement("input"),l.type="hidden",l.name=k[e][0],l.value=k[e][1],f.appendChild(l);c.appendChild(f);f.submit();f.parentNode.removeChild(f);v&&v.close();v=h}else v=Kd(b,c,m,e,k);g.iframeNode=v;g.id=v.getAttribute("id");
|
10960 |
-
v=g.id;c=D();c.id=v;c.userParams=g.userParams;c.url=g.url;c.type=g.type;c.state=1;R[v]=c;v=g}else v=null;v&&((g=v.id)&&d.push(g),ne(a,v))}},ue=function(a,b,c){if(a&&1===a.nodeType&&b){if(c)return 1;if(Y[b]){if(Bb[a.nodeName.toLowerCase()])return(a=a.innerHTML)&&a.replace(/^[\s\xa0]+|[\s\xa0]+$/g,"")?0:1}else{if(ee[b])return 0;if(de[b])return 1}}return null},be=function(a,b){var c=b.type;delete b.type;var d=je(a);if(d){a={};for(var e in b)E(b,e)&&(a[e.toLowerCase()]=b[e]);a.rd=1;(b=!!a.ri)&&delete a.ri;
|
10961 |
-
e=[];oe(c,d,a,e,0,b,void 0);pe(c,e)}else Dc.log("string"==="gapi."+c+".render: missing element "+typeof a?a:"")};C(H,"platform",{}).go=le;me=function(a){for(var b=["_c","jsl","h"],c=0;c<b.length&&a;c++)a=a[b[c]];b=Cb(Va.href);return!a||0!=a.indexOf("n;")&&0!=b.indexOf("n;")&&a!==b};pe=function(a,b){ve(a,b)};var xb=function(a){ke(a,!0)},we=function(a,b){b=b||[];for(var c=0;c<b.length;++c)a(b[c]);for(a=0;a<b.length;a++)qe(b[a])};
|
10962 |
-
Ob.push(["platform",function(a,b,c){ge=c;b&&fe.push(b);we(re,a);we(se,c._c.annotation);we(te,c._c.bimodal);wc();uc();if("explicit"!=Q("parsetags")){Db(a);Bc(Ac())&&!Q("disableRealtimeCallback")&&Fc();if(c&&(a=c.callback)){var d=hb(a);delete c.callback}zb(function(){xb(d)})}}]);H._pl=!0;var xe=function(a){a=(a=R[a])?a.oid:void 0;if(a){var b=B.getElementById(a);b&&b.parentNode.removeChild(b);delete R[a];xe(a)}};var ye=/^\{h:'/,ze=/^!_/,Ae="",ve=function(a,b){function c(){vb("message",d,"remove","de")}function d(f){var g=f.data,h=f.origin;if(Be(g,b)){var k=e;e=!1;k&&M("rqe");Ce(a,function(){k&&M("rqd");c();for(var l=C(L,"RPMQ",[]),m=0;m<l.length;m++)l[m]({data:g,origin:h})})}}if(0!==b.length){Ae=J(Va.href,"pfname","");var e=!0;vb("message",d,"add","at");nc(a,c)}},Be=function(a,b){a=String(a);if(ye.test(a))return!0;var c=!1;ze.test(a)&&(c=!0,a=a.substr(2));if(!/^\{/.test(a))return!1;var d=ld(a);if(!d)return!1;
|
10963 |
-
a=d.f;if(d.s&&a&&-1!=Ya.call(b,a)){if("_renderstart"===d.s||d.s===Ae+"/"+a+"::_renderstart")if(d=d.a&&d.a[c?0:1],b=B.getElementById(a),Hc(a,2),d&&b&&d.width&&d.height){a:{c=b.parentNode;a=d||{};if(Ec()){var e=b.id;if(e){d=(d=R[e])?d.state:void 0;if(1===d||4===d)break a;xe(e)}}(d=c.nextSibling)&&d.getAttribute&&d.getAttribute("data-gapistub")&&(c.parentNode.removeChild(d),c.style.cssText="");d=a.width;var f=a.height,g=c.style;g.textIndent="0";g.margin="0";g.padding="0";g.background="transparent";g.borderStyle=
|
10964 |
-
"none";g.cssFloat="none";g.styleFloat="none";g.lineHeight="normal";g.fontSize="1px";g.verticalAlign="baseline";c=c.style;c.display="inline-block";g=b.style;g.position="static";g.left="0";g.top="0";g.visibility="visible";d&&(c.width=g.width=d+"px");f&&(c.height=g.height=f+"px");a.verticalAlign&&(c.verticalAlign=a.verticalAlign);e&&Hc(e,3)}b["data-csi-wdt"]=(new Date).getTime()}return!0}return!1},Ce=function(a,b){nc(a,b)};var De=function(a,b){this.N=a;a=b||{};this.ha=Number(a.maxAge)||0;this.W=a.domain;this.Y=a.path;this.ia=!!a.secure};De.prototype.read=function(){for(var a=this.N+"=",b=document.cookie.split(/;\s*/),c=0;c<b.length;++c){var d=b[c];if(0==d.indexOf(a))return d.substr(a.length)}};
|
10965 |
-
De.prototype.write=function(a,b){if(!Ee.test(this.N))throw"Invalid cookie name";if(!Fe.test(a))throw"Invalid cookie value";a=this.N+"="+a;this.W&&(a+=";domain="+this.W);this.Y&&(a+=";path="+this.Y);b="number"===typeof b?b:this.ha;if(0<=b){var c=new Date;c.setSeconds(c.getSeconds()+b);a+=";expires="+c.toUTCString()}this.ia&&(a+=";secure");document.cookie=a;return!0};De.prototype.clear=function(){this.write("",0)};var Fe=/^[-+/_=.:|%&a-zA-Z0-9@]*$/,Ee=/^[A-Z_][A-Z0-9_]{0,63}$/;
|
10966 |
-
De.iterate=function(a){for(var b=document.cookie.split(/;\s*/),c=0;c<b.length;++c){var d=b[c].split("="),e=d.shift();a(e,d.join("="))}};var Ge=function(a){this.G=a};Ge.prototype.read=function(){if(Z.hasOwnProperty(this.G))return Z[this.G]};Ge.prototype.write=function(a){Z[this.G]=a;return!0};Ge.prototype.clear=function(){delete Z[this.G]};var Z={};Ge.iterate=function(a){for(var b in Z)Z.hasOwnProperty(b)&&a(b,Z[b])};var He="https:"===window.location.protocol,Ie=He||"http:"===window.location.protocol?De:Ge,Je=function(a){var b=a.substr(1),c="",d=window.location.hostname;if(""!==b){c=parseInt(b,10);if(isNaN(c))return null;b=d.split(".");if(b.length<c-1)return null;b.length==c-1&&(d="."+d)}else d="";return{l:"S"==a.charAt(0),domain:d,o:c}},Ke=function(){var a,b=null;Ie.iterate(function(c,d){0===c.indexOf("G_AUTHUSER_")&&(c=Je(c.substring(11)),!a||c.l&&!a.l||c.l==a.l&&c.o>a.o)&&(a=c,b=d)});return{fa:a,K:b}};function Le(a){if(0!==a.indexOf("GCSC"))return null;var b={X:!1};a=a.substr(4);if(!a)return b;var c=a.charAt(0);a=a.substr(1);var d=a.lastIndexOf("_");if(-1==d)return b;var e=Je(a.substr(d+1));if(null==e)return b;a=a.substring(0,d);if("_"!==a.charAt(0))return b;d="E"===c&&e.l;return!d&&("U"!==c||e.l)||d&&!He?b:{X:!0,l:d,la:a.substr(1),domain:e.domain,o:e.o}}
|
10967 |
-
var Me=function(a){if(!a)return[];a=a.split("=");return a[1]?a[1].split("|"):[]},Ne=function(a){a=a.split(":");return{clientId:a[0].split("=")[1],ka:Me(a[1]),na:Me(a[2]),ma:Me(a[3])}},Oe=function(){var a=Ke(),b=a.fa;a=a.K;if(null!==a){var c;Ie.iterate(function(f,g){(f=Le(f))&&f.X&&f.l==b.l&&f.o==b.o&&(c=g)});if(c){var d=Ne(c),e=d&&d.ka[Number(a)];d=d&&d.clientId;if(e)return{K:a,ja:e,clientId:d}}}return null};var Qe=function(){this.V=Pe};n=Qe.prototype;n.aa=function(){this.M||(this.A=0,this.M=!0,this.Z())};n.Z=function(){this.M&&(this.V()?this.A=this.T:this.A=Math.min(2*(this.A||this.T),120),window.setTimeout(ra(this.Z,this),1E3*this.A))};n.A=0;n.T=2;n.V=null;n.M=!1;for(var Re=0;64>Re;++Re);var Se=null;Ec=function(){return L.oa=!0};Fc=function(){L.oa=!0;var a=Oe();(a=a&&a.K)&&vc("googleapis.config/sessionIndex",a);Se||(Se=C(L,"ss",new Qe));a=Se;a.aa&&a.aa()};
|
10968 |
-
var Pe=function(){var a=Oe(),b=a&&a.ja||null,c=a&&a.clientId;nc("auth",{callback:function(){var d=A.gapi.auth,e={client_id:c,session_state:b};d.checkSessionState(e,function(f){var g=e.session_state,h=!!Q("isLoggedIn");f=Q("debug/forceIm")?!1:g&&f||!g&&!f;if(h=h!==f)vc("isLoggedIn",f),Fc(),ce(),f||((f=d.signOut)?f():(f=d.setToken)&&f(null));f=Ac();var k=Q("savedUserState");g=d._guss(f.cookiepolicy);k=k!=g&&"undefined"!=typeof k;vc("savedUserState",g);(h||k)&&Bc(f)&&!Q("disableRealtimeCallback")&&d._pimf(f,
|
10969 |
-
!0)})}});return!0};M("bs0",!0,window.gapi._bs);M("bs1",!0);delete window.gapi._bs;}).call(this);
|
10970 |
-
gapi.load("client",{callback:window["gapi_onload"],_c:{"jsl":{"ci":{"deviceType":"desktop","oauth-flow":{"authUrl":"https://accounts.google.com/o/oauth2/auth","proxyUrl":"https://accounts.google.com/o/oauth2/postmessageRelay","disableOpt":true,"idpIframeUrl":"https://accounts.google.com/o/oauth2/iframe","usegapi":false},"debug":{"reportExceptionRate":0.05,"forceIm":false,"rethrowException":false,"host":"https://apis.google.com"},"enableMultilogin":true,"googleapis.config":{"auth":{"useFirstPartyAuthV2":true}},"inline":{"css":1},"disableRealtimeCallback":false,"drive_share":{"skipInitCommand":true},"csi":{"rate":0.01},"client":{"cors":false},"signInDeprecation":{"rate":0.0},"include_granted_scopes":true,"llang":"en","iframes":{"youtube":{"params":{"location":["search","hash"]},"url":":socialhost:/:session_prefix:_/widget/render/youtube?usegapi\u003d1","methods":["scroll","openwindow"]},"ytsubscribe":{"url":"https://www.youtube.com/subscribe_embed?usegapi\u003d1"},"plus_circle":{"params":{"url":""},"url":":socialhost:/:session_prefix::se:_/widget/plus/circle?usegapi\u003d1"},"plus_share":{"params":{"url":""},"url":":socialhost:/:session_prefix::se:_/+1/sharebutton?plusShare\u003dtrue\u0026usegapi\u003d1"},"rbr_s":{"params":{"url":""},"url":":socialhost:/:session_prefix::se:_/widget/render/recobarsimplescroller"},":source:":"3p","playemm":{"url":"https://play.google.com/work/embedded/search?usegapi\u003d1\u0026usegapi\u003d1"},"savetoandroidpay":{"url":"https://pay.google.com/gp/v/widget/save"},"blogger":{"params":{"location":["search","hash"]},"url":":socialhost:/:session_prefix:_/widget/render/blogger?usegapi\u003d1","methods":["scroll","openwindow"]},"evwidget":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/events/widget?usegapi\u003d1"},"partnersbadge":{"url":"https://www.gstatic.com/partners/badge/templates/badge.html?usegapi\u003d1"},"dataconnector":{"url":"https://dataconnector.corp.google.com/:session_prefix:ui/widgetview?usegapi\u003d1"},"surveyoptin":{"url":"https://www.google.com/shopping/customerreviews/optin?usegapi\u003d1"},":socialhost:":"https://apis.google.com","shortlists":{"url":""},"hangout":{"url":"https://talkgadget.google.com/:session_prefix:talkgadget/_/widget"},"plus_followers":{"params":{"url":""},"url":":socialhost:/_/im/_/widget/render/plus/followers?usegapi\u003d1"},"post":{"params":{"url":""},"url":":socialhost:/:session_prefix::im_prefix:_/widget/render/post?usegapi\u003d1"},":gplus_url:":"https://plus.google.com","signin":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/signin?usegapi\u003d1","methods":["onauth"]},"rbr_i":{"params":{"url":""},"url":":socialhost:/:session_prefix::se:_/widget/render/recobarinvitation"},"share":{"url":":socialhost:/:session_prefix::im_prefix:_/widget/render/share?usegapi\u003d1"},"plusone":{"params":{"count":"","size":"","url":""},"url":":socialhost:/:session_prefix::se:_/+1/fastbutton?usegapi\u003d1"},"comments":{"params":{"location":["search","hash"]},"url":":socialhost:/:session_prefix:_/widget/render/comments?usegapi\u003d1","methods":["scroll","openwindow"]},":im_socialhost:":"https://plus.googleapis.com","backdrop":{"url":"https://clients3.google.com/cast/chromecast/home/widget/backdrop?usegapi\u003d1"},"visibility":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/visibility?usegapi\u003d1"},"autocomplete":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/autocomplete"},"additnow":{"url":"https://apis.google.com/marketplace/button?usegapi\u003d1","methods":["launchurl"]},":signuphost:":"https://plus.google.com","ratingbadge":{"url":"https://www.google.com/shopping/customerreviews/badge?usegapi\u003d1"},"appcirclepicker":{"url":":socialhost:/:session_prefix:_/widget/render/appcirclepicker"},"follow":{"url":":socialhost:/:session_prefix:_/widget/render/follow?usegapi\u003d1"},"community":{"url":":ctx_socialhost:/:session_prefix::im_prefix:_/widget/render/community?usegapi\u003d1"},"sharetoclassroom":{"url":"https://classroom.google.com/sharewidget?usegapi\u003d1"},"ytshare":{"params":{"url":""},"url":":socialhost:/:session_prefix:_/widget/render/ytshare?usegapi\u003d1"},"plus":{"url":":socialhost:/:session_prefix:_/widget/render/badge?usegapi\u003d1"},"family_creation":{"params":{"url":""},"url":"https://families.google.com/webcreation?usegapi\u003d1\u0026usegapi\u003d1"},"commentcount":{"url":":socialhost:/:session_prefix:_/widget/render/commentcount?usegapi\u003d1"},"configurator":{"url":":socialhost:/:session_prefix:_/plusbuttonconfigurator?usegapi\u003d1"},"zoomableimage":{"url":"https://ssl.gstatic.com/microscope/embed/"},"appfinder":{"url":"https://workspace.google.com/:session_prefix:marketplace/appfinder?usegapi\u003d1"},"savetowallet":{"url":"https://pay.google.com/gp/v/widget/save"},"person":{"url":":socialhost:/:session_prefix:_/widget/render/person?usegapi\u003d1"},"savetodrive":{"url":"https://drive.google.com/savetodrivebutton?usegapi\u003d1","methods":["save"]},"page":{"url":":socialhost:/:session_prefix:_/widget/render/page?usegapi\u003d1"},"card":{"url":":socialhost:/:session_prefix:_/hovercard/card"}}},"h":"m;/_/scs/apps-static/_/js/k\u003doz.gapi.en.-F_i8pxym_s.O/am\u003dAQ/d\u003d1/rs\u003dAGLTcCOcSmYYH6pFUBh5t_7PICWuDXqniQ/m\u003d__features__","u":"https://apis.google.com/js/client:platform.js","hee":true,"dpo":false,"le":[]},"platform":["additnow","backdrop","blogger","comments","commentcount","community","donation","family_creation","follow","hangout","health","page","partnersbadge","person","playemm","playreview","plus","plusone","post","ratingbadge","savetoandroidpay","savetodrive","savetowallet","sharetoclassroom","shortlists","signin2","surveyoptin","visibility","youtube","ytsubscribe","zoomableimage"],"annotation":["interactivepost","recobar","signin2","autocomplete","profile"]}});
|
10971 |
-
(function(){/*
|
10972 |
-
|
10973 |
-
Copyright The Closure Library Authors.
|
10974 |
-
SPDX-License-Identifier: Apache-2.0
|
10975 |
-
*/
|
10976 |
-
'use strict';var l;function aa(a){var b=0;return function(){return b<a.length?{done:!1,value:a[b++]}:{done:!0}}}var ba="function"==typeof Object.defineProperties?Object.defineProperty:function(a,b,c){if(a==Array.prototype||a==Object.prototype)return a;a[b]=c.value;return a};
|
10977 |
-
function ca(a){a=["object"==typeof globalThis&&globalThis,a,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var b=0;b<a.length;++b){var c=a[b];if(c&&c.Math==Math)return c}throw Error("Cannot find global object");}var p=ca(this);function q(a,b){if(b)a:{var c=p;a=a.split(".");for(var d=0;d<a.length-1;d++){var e=a[d];if(!(e in c))break a;c=c[e]}a=a[a.length-1];d=c[a];b=b(d);b!=d&&null!=b&&ba(c,a,{configurable:!0,writable:!0,value:b})}}
|
10978 |
-
q("Symbol",function(a){function b(g){if(this instanceof b)throw new TypeError("Symbol is not a constructor");return new c(d+(g||"")+"_"+e++,g)}function c(g,f){this.g=g;ba(this,"description",{configurable:!0,writable:!0,value:f})}if(a)return a;c.prototype.toString=function(){return this.g};var d="jscomp_symbol_"+(1E9*Math.random()>>>0)+"_",e=0;return b});
|
10979 |
-
q("Symbol.iterator",function(a){if(a)return a;a=Symbol("Symbol.iterator");for(var b="Array Int8Array Uint8Array Uint8ClampedArray Int16Array Uint16Array Int32Array Uint32Array Float32Array Float64Array".split(" "),c=0;c<b.length;c++){var d=p[b[c]];"function"===typeof d&&"function"!=typeof d.prototype[a]&&ba(d.prototype,a,{configurable:!0,writable:!0,value:function(){return da(aa(this))}})}return a});q("Symbol.asyncIterator",function(a){return a?a:Symbol("Symbol.asyncIterator")});
|
10980 |
-
function da(a){a={next:a};a[Symbol.iterator]=function(){return this};return a}function r(a){var b="undefined"!=typeof Symbol&&Symbol.iterator&&a[Symbol.iterator];return b?b.call(a):{next:aa(a)}}function ea(a){if(!(a instanceof Array)){a=r(a);for(var b,c=[];!(b=a.next()).done;)c.push(b.value);a=c}return a}
|
10981 |
-
var fa="function"==typeof Object.create?Object.create:function(a){function b(){}b.prototype=a;return new b},ha=function(){function a(){function c(){}new c;Reflect.construct(c,[],function(){});return new c instanceof c}if("undefined"!=typeof Reflect&&Reflect.construct){if(a())return Reflect.construct;var b=Reflect.construct;return function(c,d,e){c=b(c,d);e&&Reflect.setPrototypeOf(c,e.prototype);return c}}return function(c,d,e){void 0===e&&(e=c);e=fa(e.prototype||Object.prototype);return Function.prototype.apply.call(c,
|
10982 |
-
e,d)||e}}(),ia;if("function"==typeof Object.setPrototypeOf)ia=Object.setPrototypeOf;else{var ja;a:{var ka={a:!0},la={};try{la.__proto__=ka;ja=la.a;break a}catch(a){}ja=!1}ia=ja?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+" is not extensible");return a}:null}var t=ia;
|
10983 |
-
function ma(a,b){a.prototype=fa(b.prototype);a.prototype.constructor=a;if(t)t(a,b);else for(var c in b)if("prototype"!=c)if(Object.defineProperties){var d=Object.getOwnPropertyDescriptor(b,c);d&&Object.defineProperty(a,c,d)}else a[c]=b[c];a.ma=b.prototype}q("Reflect",function(a){return a?a:{}});q("Reflect.construct",function(){return ha});q("Reflect.setPrototypeOf",function(a){return a?a:t?function(b,c){try{return t(b,c),!0}catch(d){return!1}}:null});
|
10984 |
-
function u(a,b){return Object.prototype.hasOwnProperty.call(a,b)}
|
10985 |
-
q("WeakMap",function(a){function b(k){this.g=(h+=Math.random()+1).toString();if(k){k=r(k);for(var m;!(m=k.next()).done;)m=m.value,this.set(m[0],m[1])}}function c(){}function d(k){var m=typeof k;return"object"===m&&null!==k||"function"===m}function e(k){if(!u(k,f)){var m=new c;ba(k,f,{value:m})}}function g(k){var m=Object[k];m&&(Object[k]=function(n){if(n instanceof c)return n;Object.isExtensible(n)&&e(n);return m(n)})}if(function(){if(!a||!Object.seal)return!1;try{var k=Object.seal({}),m=Object.seal({}),
|
10986 |
-
n=new a([[k,2],[m,3]]);if(2!=n.get(k)||3!=n.get(m))return!1;n.delete(k);n.set(m,4);return!n.has(k)&&4==n.get(m)}catch(w){return!1}}())return a;var f="$jscomp_hidden_"+Math.random();g("freeze");g("preventExtensions");g("seal");var h=0;b.prototype.set=function(k,m){if(!d(k))throw Error("Invalid WeakMap key");e(k);if(!u(k,f))throw Error("WeakMap key fail: "+k);k[f][this.g]=m;return this};b.prototype.get=function(k){return d(k)&&u(k,f)?k[f][this.g]:void 0};b.prototype.has=function(k){return d(k)&&u(k,
|
10987 |
-
f)&&u(k[f],this.g)};b.prototype.delete=function(k){return d(k)&&u(k,f)&&u(k[f],this.g)?delete k[f][this.g]:!1};return b});
|
10988 |
-
q("Map",function(a){function b(){var h={};return h.A=h.next=h.head=h}function c(h,k){var m=h.g;return da(function(){if(m){for(;m.head!=h.g;)m=m.A;for(;m.next!=m.head;)return m=m.next,{done:!1,value:k(m)};m=null}return{done:!0,value:void 0}})}function d(h,k){var m=k&&typeof k;"object"==m||"function"==m?g.has(k)?m=g.get(k):(m=""+ ++f,g.set(k,m)):m="p_"+k;var n=h.h[m];if(n&&u(h.h,m))for(h=0;h<n.length;h++){var w=n[h];if(k!==k&&w.key!==w.key||k===w.key)return{id:m,list:n,index:h,u:w}}return{id:m,list:n,
|
10989 |
-
index:-1,u:void 0}}function e(h){this.h={};this.g=b();this.size=0;if(h){h=r(h);for(var k;!(k=h.next()).done;)k=k.value,this.set(k[0],k[1])}}if(function(){if(!a||"function"!=typeof a||!a.prototype.entries||"function"!=typeof Object.seal)return!1;try{var h=Object.seal({x:4}),k=new a(r([[h,"s"]]));if("s"!=k.get(h)||1!=k.size||k.get({x:4})||k.set({x:4},"t")!=k||2!=k.size)return!1;var m=k.entries(),n=m.next();if(n.done||n.value[0]!=h||"s"!=n.value[1])return!1;n=m.next();return n.done||4!=n.value[0].x||
|
10990 |
-
"t"!=n.value[1]||!m.next().done?!1:!0}catch(w){return!1}}())return a;var g=new WeakMap;e.prototype.set=function(h,k){h=0===h?0:h;var m=d(this,h);m.list||(m.list=this.h[m.id]=[]);m.u?m.u.value=k:(m.u={next:this.g,A:this.g.A,head:this.g,key:h,value:k},m.list.push(m.u),this.g.A.next=m.u,this.g.A=m.u,this.size++);return this};e.prototype.delete=function(h){h=d(this,h);return h.u&&h.list?(h.list.splice(h.index,1),h.list.length||delete this.h[h.id],h.u.A.next=h.u.next,h.u.next.A=h.u.A,h.u.head=null,this.size--,
|
10991 |
-
!0):!1};e.prototype.clear=function(){this.h={};this.g=this.g.A=b();this.size=0};e.prototype.has=function(h){return!!d(this,h).u};e.prototype.get=function(h){return(h=d(this,h).u)&&h.value};e.prototype.entries=function(){return c(this,function(h){return[h.key,h.value]})};e.prototype.keys=function(){return c(this,function(h){return h.key})};e.prototype.values=function(){return c(this,function(h){return h.value})};e.prototype.forEach=function(h,k){for(var m=this.entries(),n;!(n=m.next()).done;)n=n.value,
|
10992 |
-
h.call(k,n[1],n[0],this)};e.prototype[Symbol.iterator]=e.prototype.entries;var f=0;return e});function v(a,b,c){if(null==a)throw new TypeError("The 'this' value for String.prototype."+c+" must not be null or undefined");if(b instanceof RegExp)throw new TypeError("First argument to String.prototype."+c+" must not be a regular expression");return a+""}
|
10993 |
-
q("String.prototype.endsWith",function(a){return a?a:function(b,c){var d=v(this,b,"endsWith");void 0===c&&(c=d.length);c=Math.max(0,Math.min(c|0,d.length));for(var e=b.length;0<e&&0<c;)if(d[--c]!=b[--e])return!1;return 0>=e}});function na(a,b,c){a instanceof String&&(a=String(a));for(var d=a.length,e=0;e<d;e++){var g=a[e];if(b.call(c,g,e,a))return{S:e,X:g}}return{S:-1,X:void 0}}q("Array.prototype.find",function(a){return a?a:function(b,c){return na(this,b,c).X}});
|
10994 |
-
q("String.prototype.startsWith",function(a){return a?a:function(b,c){var d=v(this,b,"startsWith"),e=d.length,g=b.length;c=Math.max(0,Math.min(c|0,d.length));for(var f=0;f<g&&c<e;)if(d[c++]!=b[f++])return!1;return f>=g}});q("String.prototype.repeat",function(a){return a?a:function(b){var c=v(this,null,"repeat");if(0>b||1342177279<b)throw new RangeError("Invalid count value");b|=0;for(var d="";b;)if(b&1&&(d+=c),b>>>=1)c+=c;return d}});
|
10995 |
-
function oa(a,b){a instanceof String&&(a+="");var c=0,d=!1,e={next:function(){if(!d&&c<a.length){var g=c++;return{value:b(g,a[g]),done:!1}}d=!0;return{done:!0,value:void 0}}};e[Symbol.iterator]=function(){return e};return e}q("Array.prototype.keys",function(a){return a?a:function(){return oa(this,function(b){return b})}});
|
10996 |
-
q("Array.from",function(a){return a?a:function(b,c,d){c=null!=c?c:function(h){return h};var e=[],g="undefined"!=typeof Symbol&&Symbol.iterator&&b[Symbol.iterator];if("function"==typeof g){b=g.call(b);for(var f=0;!(g=b.next()).done;)e.push(c.call(d,g.value,f++))}else for(g=b.length,f=0;f<g;f++)e.push(c.call(d,b[f],f));return e}});q("Array.prototype.values",function(a){return a?a:function(){return oa(this,function(b,c){return c})}});
|
10997 |
-
q("String.prototype.trimLeft",function(a){function b(){return this.replace(/^[\s\xa0]+/,"")}return a||b});q("String.prototype.trimStart",function(a){return a||String.prototype.trimLeft});q("Object.setPrototypeOf",function(a){return a||t});var pa="function"==typeof Object.assign?Object.assign:function(a,b){for(var c=1;c<arguments.length;c++){var d=arguments[c];if(d)for(var e in d)u(d,e)&&(a[e]=d[e])}return a};q("Object.assign",function(a){return a||pa});
|
10998 |
-
q("Promise",function(a){function b(f){this.g=0;this.i=void 0;this.h=[];this.s=!1;var h=this.j();try{f(h.resolve,h.reject)}catch(k){h.reject(k)}}function c(){this.g=null}function d(f){return f instanceof b?f:new b(function(h){h(f)})}if(a)return a;c.prototype.h=function(f){if(null==this.g){this.g=[];var h=this;this.i(function(){h.l()})}this.g.push(f)};var e=p.setTimeout;c.prototype.i=function(f){e(f,0)};c.prototype.l=function(){for(;this.g&&this.g.length;){var f=this.g;this.g=[];for(var h=0;h<f.length;++h){var k=
|
10999 |
-
f[h];f[h]=null;try{k()}catch(m){this.j(m)}}}this.g=null};c.prototype.j=function(f){this.i(function(){throw f;})};b.prototype.j=function(){function f(m){return function(n){k||(k=!0,m.call(h,n))}}var h=this,k=!1;return{resolve:f(this.J),reject:f(this.l)}};b.prototype.J=function(f){if(f===this)this.l(new TypeError("A Promise cannot resolve to itself"));else if(f instanceof b)this.Y(f);else{a:switch(typeof f){case "object":var h=null!=f;break a;case "function":h=!0;break a;default:h=!1}h?this.I(f):this.o(f)}};
|
11000 |
-
b.prototype.I=function(f){var h=void 0;try{h=f.then}catch(k){this.l(k);return}"function"==typeof h?this.Z(h,f):this.o(f)};b.prototype.l=function(f){this.v(2,f)};b.prototype.o=function(f){this.v(1,f)};b.prototype.v=function(f,h){if(0!=this.g)throw Error("Cannot settle("+f+", "+h+"): Promise already settled in state"+this.g);this.g=f;this.i=h;2===this.g&&this.L();this.C()};b.prototype.L=function(){var f=this;e(function(){if(f.D()){var h=p.console;"undefined"!==typeof h&&h.error(f.i)}},1)};b.prototype.D=
|
11001 |
-
function(){if(this.s)return!1;var f=p.CustomEvent,h=p.Event,k=p.dispatchEvent;if("undefined"===typeof k)return!0;"function"===typeof f?f=new f("unhandledrejection",{cancelable:!0}):"function"===typeof h?f=new h("unhandledrejection",{cancelable:!0}):(f=p.document.createEvent("CustomEvent"),f.initCustomEvent("unhandledrejection",!1,!0,f));f.promise=this;f.reason=this.i;return k(f)};b.prototype.C=function(){if(null!=this.h){for(var f=0;f<this.h.length;++f)g.h(this.h[f]);this.h=null}};var g=new c;b.prototype.Y=
|
11002 |
-
function(f){var h=this.j();f.K(h.resolve,h.reject)};b.prototype.Z=function(f,h){var k=this.j();try{f.call(h,k.resolve,k.reject)}catch(m){k.reject(m)}};b.prototype.then=function(f,h){function k(z,I){return"function"==typeof z?function(Da){try{m(z(Da))}catch(Ea){n(Ea)}}:I}var m,n,w=new b(function(z,I){m=z;n=I});this.K(k(f,m),k(h,n));return w};b.prototype.catch=function(f){return this.then(void 0,f)};b.prototype.K=function(f,h){function k(){switch(m.g){case 1:f(m.i);break;case 2:h(m.i);break;default:throw Error("Unexpected state: "+
|
11003 |
-
m.g);}}var m=this;null==this.h?g.h(k):this.h.push(k);this.s=!0};b.resolve=d;b.reject=function(f){return new b(function(h,k){k(f)})};b.race=function(f){return new b(function(h,k){for(var m=r(f),n=m.next();!n.done;n=m.next())d(n.value).K(h,k)})};b.all=function(f){var h=r(f),k=h.next();return k.done?d([]):new b(function(m,n){function w(Da){return function(Ea){z[Da]=Ea;I--;0==I&&m(z)}}var z=[],I=0;do z.push(void 0),I++,d(k.value).K(w(z.length-1),n),k=h.next();while(!k.done)})};return b});
|
11004 |
-
q("Object.is",function(a){return a?a:function(b,c){return b===c?0!==b||1/b===1/c:b!==b&&c!==c}});q("Array.prototype.includes",function(a){return a?a:function(b
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|