Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
D
DQMP
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
data
DQMP
Commits
b86ba305
Commit
b86ba305
authored
Dec 26, 2019
by
赵建伟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add vis codes
parent
182d895a
Show whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
1993 additions
and
255 deletions
+1993
-255
DqmpApplication.java
src/main/java/com/DqmpApplication.java
+1
-1
BaseController.java
...in/java/com/gmei/data/dqmp/controller/BaseController.java
+1
-1
IndexController.java
...n/java/com/gmei/data/dqmp/controller/IndexController.java
+29
-7
TblThresholdExceedAll.java
...java/com/gmei/data/dqmp/domain/TblThresholdExceedAll.java
+135
-0
TblThresholdExceedAllCriteria.java
.../gmei/data/dqmp/domain/TblThresholdExceedAllCriteria.java
+921
-0
TblThresholdExceedAllMapper.java
...om/gmei/data/dqmp/mapper/TblThresholdExceedAllMapper.java
+31
-0
DashbordService.java
...main/java/com/gmei/data/dqmp/service/DashbordService.java
+9
-0
ThresholdExceedAllService.java
...com/gmei/data/dqmp/service/ThresholdExceedAllService.java
+14
-0
CheckServiceImpl.java
...ava/com/gmei/data/dqmp/service/impl/CheckServiceImpl.java
+14
-0
DashbordServiceImpl.java
.../com/gmei/data/dqmp/service/impl/DashbordServiceImpl.java
+59
-0
ThresholdExceedAllServiceImpl.java
...data/dqmp/service/impl/ThresholdExceedAllServiceImpl.java
+82
-0
DashbordVo.java
src/main/java/com/gmei/data/dqmp/vo/DashbordVo.java
+13
-0
ThresholdExceedAllVo.java
...main/java/com/gmei/data/dqmp/vo/ThresholdExceedAllVo.java
+19
-0
generator.xml
src/main/resources/generator.xml
+3
-2
TblThresholdExceedAllMapper.xml
.../resources/mybatis/mapper/TblThresholdExceedAllMapper.xml
+307
-0
index.html
src/main/resources/templates/index.html
+17
-200
demo.html
src/main/resources/templates/static/demo.html
+0
-41
echarts.min.js
src/main/resources/templates/static/js/echarts.min.js
+0
-0
jquery-3.1.1.min.js
src/main/resources/templates/static/js/jquery-3.1.1.min.js
+4
-0
jquery-3.4.1.js
src/main/resources/templates/static/js/jquery-3.4.1.js
+0
-3
dashbord.html
src/main/resources/templates/view/dashbord.html
+114
-0
manage.html
src/main/resources/templates/view/manage.html
+220
-0
result.html
src/main/resources/templates/view/result.html
+0
-0
No files found.
src/main/java/com/DqmpApplication.java
View file @
b86ba305
...
...
@@ -20,7 +20,7 @@ public class DqmpApplication extends WebMvcConfigurationSupport{
@Override
public
void
addResourceHandlers
(
ResourceHandlerRegistry
registry
)
{
registry
.
addResourceHandler
(
"/templates/
static/**"
).
addResourceLocations
(
ResourceUtils
.
CLASSPATH_URL_PREFIX
+
"/templates/static
/"
);
registry
.
addResourceHandler
(
"/templates/
**"
).
addResourceLocations
(
ResourceUtils
.
CLASSPATH_URL_PREFIX
+
"/templates
/"
);
}
public
static
void
main
(
String
[]
args
)
{
...
...
src/main/java/com/gmei/data/dqmp/controller/BaseController.java
View file @
b86ba305
...
...
@@ -17,6 +17,6 @@ public class BaseController {
}
else
{
model
.
addAttribute
(
"result"
,
msg
);
}
return
"result"
;
return
"
view/
result"
;
}
}
src/main/java/com/gmei/data/dqmp/controller/IndexController.java
View file @
b86ba305
...
...
@@ -7,24 +7,51 @@ import org.springframework.stereotype.Controller;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
com.gmei.data.dqmp.service.DashbordService
;
import
com.gmei.data.dqmp.service.DqRuleService
;
import
com.gmei.data.dqmp.service.ThresholdExceedAllService
;
import
com.gmei.data.dqmp.vo.DashbordVo
;
import
com.gmei.data.dqmp.vo.DqReferRuleVo
;
import
com.gmei.data.dqmp.vo.DqSpecialRuleVo
;
import
com.gmei.data.dqmp.vo.DqUnblankRuleVo
;
import
com.gmei.data.dqmp.vo.DqUniqueRuleVo
;
import
com.gmei.data.dqmp.vo.DqVolatilityRuleVo
;
import
com.gmei.data.dqmp.vo.ThresholdExceedAllVo
;
@Controller
public
class
IndexController
{
@Autowired
private
DqRuleService
dqRuleService
;
@Autowired
private
DashbordService
dashbordService
;
@Autowired
private
ThresholdExceedAllService
thresholdExceedAllService
;
@GetMapping
(
"/"
)
public
String
index
()
{
return
"index"
;
}
@GetMapping
(
"/view"
)
public
String
demo
(
Model
model
)
{
DashbordVo
dashbordInfo
=
dashbordService
.
getDashbordInfo
();
model
.
addAttribute
(
"volatilityLegendData"
,
dashbordInfo
.
getVolatilityLegendData
());
model
.
addAttribute
(
"volatilitySeriesData"
,
dashbordInfo
.
getVolatilitySeriesData
());
model
.
addAttribute
(
"specialLegendData"
,
dashbordInfo
.
getSpecialLegendData
());
model
.
addAttribute
(
"specialSeriesData"
,
dashbordInfo
.
getSpecialSeriesData
());
List
<
ThresholdExceedAllVo
>
thresholdExceedAllList
=
thresholdExceedAllService
.
getThresholdExceedAllList
();
model
.
addAttribute
(
"thresholdExceedAllList"
,
thresholdExceedAllList
);
return
"view/dashbord"
;
}
/**
* 首页中功能列表
*
* @param model
* @return
*/
@GetMapping
(
"/
"
)
@GetMapping
(
"/manage
"
)
public
String
index
(
Model
model
)
{
List
<
DqUniqueRuleVo
>
uniqueList
=
dqRuleService
.
findUniqueDqRuleList
();
List
<
DqUnblankRuleVo
>
unblankList
=
dqRuleService
.
findUnblankDqRuleList
();
...
...
@@ -36,12 +63,7 @@ public class IndexController {
model
.
addAttribute
(
"referList"
,
referList
);
model
.
addAttribute
(
"volatilityList"
,
volatilityList
);
model
.
addAttribute
(
"specialList"
,
specialList
);
return
"index"
;
}
@GetMapping
(
"/demo"
)
public
String
demo
(
Model
model
)
{
return
"static/demo"
;
return
"view/manage"
;
}
}
src/main/java/com/gmei/data/dqmp/domain/TblThresholdExceedAll.java
0 → 100644
View file @
b86ba305
package
com
.
gmei
.
data
.
dqmp
.
domain
;
public
class
TblThresholdExceedAll
{
private
Integer
id
;
private
String
checkType
;
private
String
dbName
;
private
String
tbName
;
private
String
colName
;
private
Long
allNum
;
private
Long
checkNum
;
private
Double
checkRate
;
private
String
partitionDate
;
private
Integer
sqlId
;
private
String
createTime
;
public
Integer
getId
()
{
return
id
;
}
public
void
setId
(
Integer
id
)
{
this
.
id
=
id
;
}
public
String
getCheckType
()
{
return
checkType
;
}
public
void
setCheckType
(
String
checkType
)
{
this
.
checkType
=
checkType
==
null
?
null
:
checkType
.
trim
();
}
public
String
getDbName
()
{
return
dbName
;
}
public
void
setDbName
(
String
dbName
)
{
this
.
dbName
=
dbName
==
null
?
null
:
dbName
.
trim
();
}
public
String
getTbName
()
{
return
tbName
;
}
public
void
setTbName
(
String
tbName
)
{
this
.
tbName
=
tbName
==
null
?
null
:
tbName
.
trim
();
}
public
String
getColName
()
{
return
colName
;
}
public
void
setColName
(
String
colName
)
{
this
.
colName
=
colName
==
null
?
null
:
colName
.
trim
();
}
public
Long
getAllNum
()
{
return
allNum
;
}
public
void
setAllNum
(
Long
allNum
)
{
this
.
allNum
=
allNum
;
}
public
Long
getCheckNum
()
{
return
checkNum
;
}
public
void
setCheckNum
(
Long
checkNum
)
{
this
.
checkNum
=
checkNum
;
}
public
Double
getCheckRate
()
{
return
checkRate
;
}
public
void
setCheckRate
(
Double
checkRate
)
{
this
.
checkRate
=
checkRate
;
}
public
String
getPartitionDate
()
{
return
partitionDate
;
}
public
void
setPartitionDate
(
String
partitionDate
)
{
this
.
partitionDate
=
partitionDate
==
null
?
null
:
partitionDate
.
trim
();
}
public
Integer
getSqlId
()
{
return
sqlId
;
}
public
void
setSqlId
(
Integer
sqlId
)
{
this
.
sqlId
=
sqlId
;
}
public
String
getCreateTime
()
{
return
createTime
;
}
public
void
setCreateTime
(
String
createTime
)
{
this
.
createTime
=
createTime
==
null
?
null
:
createTime
.
trim
();
}
@Override
public
String
toString
()
{
StringBuilder
sb
=
new
StringBuilder
();
sb
.
append
(
getClass
().
getSimpleName
());
sb
.
append
(
" ["
);
sb
.
append
(
"Hash = "
).
append
(
hashCode
());
sb
.
append
(
", id="
).
append
(
id
);
sb
.
append
(
", checkType="
).
append
(
checkType
);
sb
.
append
(
", dbName="
).
append
(
dbName
);
sb
.
append
(
", tbName="
).
append
(
tbName
);
sb
.
append
(
", colName="
).
append
(
colName
);
sb
.
append
(
", allNum="
).
append
(
allNum
);
sb
.
append
(
", checkNum="
).
append
(
checkNum
);
sb
.
append
(
", checkRate="
).
append
(
checkRate
);
sb
.
append
(
", partitionDate="
).
append
(
partitionDate
);
sb
.
append
(
", sqlId="
).
append
(
sqlId
);
sb
.
append
(
", createTime="
).
append
(
createTime
);
sb
.
append
(
"]"
);
return
sb
.
toString
();
}
}
\ No newline at end of file
src/main/java/com/gmei/data/dqmp/domain/TblThresholdExceedAllCriteria.java
0 → 100644
View file @
b86ba305
package
com
.
gmei
.
data
.
dqmp
.
domain
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
TblThresholdExceedAllCriteria
{
protected
String
orderByClause
;
protected
boolean
distinct
;
protected
List
<
Criteria
>
oredCriteria
;
public
TblThresholdExceedAllCriteria
()
{
oredCriteria
=
new
ArrayList
<
Criteria
>();
}
public
void
setOrderByClause
(
String
orderByClause
)
{
this
.
orderByClause
=
orderByClause
;
}
public
String
getOrderByClause
()
{
return
orderByClause
;
}
public
void
setDistinct
(
boolean
distinct
)
{
this
.
distinct
=
distinct
;
}
public
boolean
isDistinct
()
{
return
distinct
;
}
public
List
<
Criteria
>
getOredCriteria
()
{
return
oredCriteria
;
}
public
void
or
(
Criteria
criteria
)
{
oredCriteria
.
add
(
criteria
);
}
public
Criteria
or
()
{
Criteria
criteria
=
createCriteriaInternal
();
oredCriteria
.
add
(
criteria
);
return
criteria
;
}
public
Criteria
createCriteria
()
{
Criteria
criteria
=
createCriteriaInternal
();
if
(
oredCriteria
.
size
()
==
0
)
{
oredCriteria
.
add
(
criteria
);
}
return
criteria
;
}
protected
Criteria
createCriteriaInternal
()
{
Criteria
criteria
=
new
Criteria
();
return
criteria
;
}
public
void
clear
()
{
oredCriteria
.
clear
();
orderByClause
=
null
;
distinct
=
false
;
}
protected
abstract
static
class
GeneratedCriteria
{
protected
List
<
Criterion
>
criteria
;
protected
GeneratedCriteria
()
{
super
();
criteria
=
new
ArrayList
<
Criterion
>();
}
public
boolean
isValid
()
{
return
criteria
.
size
()
>
0
;
}
public
List
<
Criterion
>
getAllCriteria
()
{
return
criteria
;
}
public
List
<
Criterion
>
getCriteria
()
{
return
criteria
;
}
protected
void
addCriterion
(
String
condition
)
{
if
(
condition
==
null
)
{
throw
new
RuntimeException
(
"Value for condition cannot be null"
);
}
criteria
.
add
(
new
Criterion
(
condition
));
}
protected
void
addCriterion
(
String
condition
,
Object
value
,
String
property
)
{
if
(
value
==
null
)
{
throw
new
RuntimeException
(
"Value for "
+
property
+
" cannot be null"
);
}
criteria
.
add
(
new
Criterion
(
condition
,
value
));
}
protected
void
addCriterion
(
String
condition
,
Object
value1
,
Object
value2
,
String
property
)
{
if
(
value1
==
null
||
value2
==
null
)
{
throw
new
RuntimeException
(
"Between values for "
+
property
+
" cannot be null"
);
}
criteria
.
add
(
new
Criterion
(
condition
,
value1
,
value2
));
}
public
Criteria
andIdIsNull
()
{
addCriterion
(
"id is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andIdIsNotNull
()
{
addCriterion
(
"id is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andIdEqualTo
(
Integer
value
)
{
addCriterion
(
"id ="
,
value
,
"id"
);
return
(
Criteria
)
this
;
}
public
Criteria
andIdNotEqualTo
(
Integer
value
)
{
addCriterion
(
"id <>"
,
value
,
"id"
);
return
(
Criteria
)
this
;
}
public
Criteria
andIdGreaterThan
(
Integer
value
)
{
addCriterion
(
"id >"
,
value
,
"id"
);
return
(
Criteria
)
this
;
}
public
Criteria
andIdGreaterThanOrEqualTo
(
Integer
value
)
{
addCriterion
(
"id >="
,
value
,
"id"
);
return
(
Criteria
)
this
;
}
public
Criteria
andIdLessThan
(
Integer
value
)
{
addCriterion
(
"id <"
,
value
,
"id"
);
return
(
Criteria
)
this
;
}
public
Criteria
andIdLessThanOrEqualTo
(
Integer
value
)
{
addCriterion
(
"id <="
,
value
,
"id"
);
return
(
Criteria
)
this
;
}
public
Criteria
andIdIn
(
List
<
Integer
>
values
)
{
addCriterion
(
"id in"
,
values
,
"id"
);
return
(
Criteria
)
this
;
}
public
Criteria
andIdNotIn
(
List
<
Integer
>
values
)
{
addCriterion
(
"id not in"
,
values
,
"id"
);
return
(
Criteria
)
this
;
}
public
Criteria
andIdBetween
(
Integer
value1
,
Integer
value2
)
{
addCriterion
(
"id between"
,
value1
,
value2
,
"id"
);
return
(
Criteria
)
this
;
}
public
Criteria
andIdNotBetween
(
Integer
value1
,
Integer
value2
)
{
addCriterion
(
"id not between"
,
value1
,
value2
,
"id"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckTypeIsNull
()
{
addCriterion
(
"check_type is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckTypeIsNotNull
()
{
addCriterion
(
"check_type is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckTypeEqualTo
(
String
value
)
{
addCriterion
(
"check_type ="
,
value
,
"checkType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckTypeNotEqualTo
(
String
value
)
{
addCriterion
(
"check_type <>"
,
value
,
"checkType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckTypeGreaterThan
(
String
value
)
{
addCriterion
(
"check_type >"
,
value
,
"checkType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckTypeGreaterThanOrEqualTo
(
String
value
)
{
addCriterion
(
"check_type >="
,
value
,
"checkType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckTypeLessThan
(
String
value
)
{
addCriterion
(
"check_type <"
,
value
,
"checkType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckTypeLessThanOrEqualTo
(
String
value
)
{
addCriterion
(
"check_type <="
,
value
,
"checkType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckTypeLike
(
String
value
)
{
addCriterion
(
"check_type like"
,
value
,
"checkType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckTypeNotLike
(
String
value
)
{
addCriterion
(
"check_type not like"
,
value
,
"checkType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckTypeIn
(
List
<
String
>
values
)
{
addCriterion
(
"check_type in"
,
values
,
"checkType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckTypeNotIn
(
List
<
String
>
values
)
{
addCriterion
(
"check_type not in"
,
values
,
"checkType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckTypeBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"check_type between"
,
value1
,
value2
,
"checkType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckTypeNotBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"check_type not between"
,
value1
,
value2
,
"checkType"
);
return
(
Criteria
)
this
;
}
public
Criteria
andDbNameIsNull
()
{
addCriterion
(
"db_name is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andDbNameIsNotNull
()
{
addCriterion
(
"db_name is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andDbNameEqualTo
(
String
value
)
{
addCriterion
(
"db_name ="
,
value
,
"dbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andDbNameNotEqualTo
(
String
value
)
{
addCriterion
(
"db_name <>"
,
value
,
"dbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andDbNameGreaterThan
(
String
value
)
{
addCriterion
(
"db_name >"
,
value
,
"dbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andDbNameGreaterThanOrEqualTo
(
String
value
)
{
addCriterion
(
"db_name >="
,
value
,
"dbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andDbNameLessThan
(
String
value
)
{
addCriterion
(
"db_name <"
,
value
,
"dbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andDbNameLessThanOrEqualTo
(
String
value
)
{
addCriterion
(
"db_name <="
,
value
,
"dbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andDbNameLike
(
String
value
)
{
addCriterion
(
"db_name like"
,
value
,
"dbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andDbNameNotLike
(
String
value
)
{
addCriterion
(
"db_name not like"
,
value
,
"dbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andDbNameIn
(
List
<
String
>
values
)
{
addCriterion
(
"db_name in"
,
values
,
"dbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andDbNameNotIn
(
List
<
String
>
values
)
{
addCriterion
(
"db_name not in"
,
values
,
"dbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andDbNameBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"db_name between"
,
value1
,
value2
,
"dbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andDbNameNotBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"db_name not between"
,
value1
,
value2
,
"dbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTbNameIsNull
()
{
addCriterion
(
"tb_name is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTbNameIsNotNull
()
{
addCriterion
(
"tb_name is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTbNameEqualTo
(
String
value
)
{
addCriterion
(
"tb_name ="
,
value
,
"tbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTbNameNotEqualTo
(
String
value
)
{
addCriterion
(
"tb_name <>"
,
value
,
"tbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTbNameGreaterThan
(
String
value
)
{
addCriterion
(
"tb_name >"
,
value
,
"tbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTbNameGreaterThanOrEqualTo
(
String
value
)
{
addCriterion
(
"tb_name >="
,
value
,
"tbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTbNameLessThan
(
String
value
)
{
addCriterion
(
"tb_name <"
,
value
,
"tbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTbNameLessThanOrEqualTo
(
String
value
)
{
addCriterion
(
"tb_name <="
,
value
,
"tbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTbNameLike
(
String
value
)
{
addCriterion
(
"tb_name like"
,
value
,
"tbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTbNameNotLike
(
String
value
)
{
addCriterion
(
"tb_name not like"
,
value
,
"tbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTbNameIn
(
List
<
String
>
values
)
{
addCriterion
(
"tb_name in"
,
values
,
"tbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTbNameNotIn
(
List
<
String
>
values
)
{
addCriterion
(
"tb_name not in"
,
values
,
"tbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTbNameBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"tb_name between"
,
value1
,
value2
,
"tbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andTbNameNotBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"tb_name not between"
,
value1
,
value2
,
"tbName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andColNameIsNull
()
{
addCriterion
(
"col_name is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andColNameIsNotNull
()
{
addCriterion
(
"col_name is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andColNameEqualTo
(
String
value
)
{
addCriterion
(
"col_name ="
,
value
,
"colName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andColNameNotEqualTo
(
String
value
)
{
addCriterion
(
"col_name <>"
,
value
,
"colName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andColNameGreaterThan
(
String
value
)
{
addCriterion
(
"col_name >"
,
value
,
"colName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andColNameGreaterThanOrEqualTo
(
String
value
)
{
addCriterion
(
"col_name >="
,
value
,
"colName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andColNameLessThan
(
String
value
)
{
addCriterion
(
"col_name <"
,
value
,
"colName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andColNameLessThanOrEqualTo
(
String
value
)
{
addCriterion
(
"col_name <="
,
value
,
"colName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andColNameLike
(
String
value
)
{
addCriterion
(
"col_name like"
,
value
,
"colName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andColNameNotLike
(
String
value
)
{
addCriterion
(
"col_name not like"
,
value
,
"colName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andColNameIn
(
List
<
String
>
values
)
{
addCriterion
(
"col_name in"
,
values
,
"colName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andColNameNotIn
(
List
<
String
>
values
)
{
addCriterion
(
"col_name not in"
,
values
,
"colName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andColNameBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"col_name between"
,
value1
,
value2
,
"colName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andColNameNotBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"col_name not between"
,
value1
,
value2
,
"colName"
);
return
(
Criteria
)
this
;
}
public
Criteria
andAllNumIsNull
()
{
addCriterion
(
"all_num is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andAllNumIsNotNull
()
{
addCriterion
(
"all_num is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andAllNumEqualTo
(
Long
value
)
{
addCriterion
(
"all_num ="
,
value
,
"allNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andAllNumNotEqualTo
(
Long
value
)
{
addCriterion
(
"all_num <>"
,
value
,
"allNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andAllNumGreaterThan
(
Long
value
)
{
addCriterion
(
"all_num >"
,
value
,
"allNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andAllNumGreaterThanOrEqualTo
(
Long
value
)
{
addCriterion
(
"all_num >="
,
value
,
"allNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andAllNumLessThan
(
Long
value
)
{
addCriterion
(
"all_num <"
,
value
,
"allNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andAllNumLessThanOrEqualTo
(
Long
value
)
{
addCriterion
(
"all_num <="
,
value
,
"allNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andAllNumIn
(
List
<
Long
>
values
)
{
addCriterion
(
"all_num in"
,
values
,
"allNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andAllNumNotIn
(
List
<
Long
>
values
)
{
addCriterion
(
"all_num not in"
,
values
,
"allNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andAllNumBetween
(
Long
value1
,
Long
value2
)
{
addCriterion
(
"all_num between"
,
value1
,
value2
,
"allNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andAllNumNotBetween
(
Long
value1
,
Long
value2
)
{
addCriterion
(
"all_num not between"
,
value1
,
value2
,
"allNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckNumIsNull
()
{
addCriterion
(
"check_num is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckNumIsNotNull
()
{
addCriterion
(
"check_num is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckNumEqualTo
(
Long
value
)
{
addCriterion
(
"check_num ="
,
value
,
"checkNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckNumNotEqualTo
(
Long
value
)
{
addCriterion
(
"check_num <>"
,
value
,
"checkNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckNumGreaterThan
(
Long
value
)
{
addCriterion
(
"check_num >"
,
value
,
"checkNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckNumGreaterThanOrEqualTo
(
Long
value
)
{
addCriterion
(
"check_num >="
,
value
,
"checkNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckNumLessThan
(
Long
value
)
{
addCriterion
(
"check_num <"
,
value
,
"checkNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckNumLessThanOrEqualTo
(
Long
value
)
{
addCriterion
(
"check_num <="
,
value
,
"checkNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckNumIn
(
List
<
Long
>
values
)
{
addCriterion
(
"check_num in"
,
values
,
"checkNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckNumNotIn
(
List
<
Long
>
values
)
{
addCriterion
(
"check_num not in"
,
values
,
"checkNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckNumBetween
(
Long
value1
,
Long
value2
)
{
addCriterion
(
"check_num between"
,
value1
,
value2
,
"checkNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckNumNotBetween
(
Long
value1
,
Long
value2
)
{
addCriterion
(
"check_num not between"
,
value1
,
value2
,
"checkNum"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckRateIsNull
()
{
addCriterion
(
"check_rate is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckRateIsNotNull
()
{
addCriterion
(
"check_rate is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckRateEqualTo
(
Double
value
)
{
addCriterion
(
"check_rate ="
,
value
,
"checkRate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckRateNotEqualTo
(
Double
value
)
{
addCriterion
(
"check_rate <>"
,
value
,
"checkRate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckRateGreaterThan
(
Double
value
)
{
addCriterion
(
"check_rate >"
,
value
,
"checkRate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckRateGreaterThanOrEqualTo
(
Double
value
)
{
addCriterion
(
"check_rate >="
,
value
,
"checkRate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckRateLessThan
(
Double
value
)
{
addCriterion
(
"check_rate <"
,
value
,
"checkRate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckRateLessThanOrEqualTo
(
Double
value
)
{
addCriterion
(
"check_rate <="
,
value
,
"checkRate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckRateIn
(
List
<
Double
>
values
)
{
addCriterion
(
"check_rate in"
,
values
,
"checkRate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckRateNotIn
(
List
<
Double
>
values
)
{
addCriterion
(
"check_rate not in"
,
values
,
"checkRate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckRateBetween
(
Double
value1
,
Double
value2
)
{
addCriterion
(
"check_rate between"
,
value1
,
value2
,
"checkRate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCheckRateNotBetween
(
Double
value1
,
Double
value2
)
{
addCriterion
(
"check_rate not between"
,
value1
,
value2
,
"checkRate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andPartitionDateIsNull
()
{
addCriterion
(
"partition_date is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andPartitionDateIsNotNull
()
{
addCriterion
(
"partition_date is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andPartitionDateEqualTo
(
String
value
)
{
addCriterion
(
"partition_date ="
,
value
,
"partitionDate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andPartitionDateNotEqualTo
(
String
value
)
{
addCriterion
(
"partition_date <>"
,
value
,
"partitionDate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andPartitionDateGreaterThan
(
String
value
)
{
addCriterion
(
"partition_date >"
,
value
,
"partitionDate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andPartitionDateGreaterThanOrEqualTo
(
String
value
)
{
addCriterion
(
"partition_date >="
,
value
,
"partitionDate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andPartitionDateLessThan
(
String
value
)
{
addCriterion
(
"partition_date <"
,
value
,
"partitionDate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andPartitionDateLessThanOrEqualTo
(
String
value
)
{
addCriterion
(
"partition_date <="
,
value
,
"partitionDate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andPartitionDateLike
(
String
value
)
{
addCriterion
(
"partition_date like"
,
value
,
"partitionDate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andPartitionDateNotLike
(
String
value
)
{
addCriterion
(
"partition_date not like"
,
value
,
"partitionDate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andPartitionDateIn
(
List
<
String
>
values
)
{
addCriterion
(
"partition_date in"
,
values
,
"partitionDate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andPartitionDateNotIn
(
List
<
String
>
values
)
{
addCriterion
(
"partition_date not in"
,
values
,
"partitionDate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andPartitionDateBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"partition_date between"
,
value1
,
value2
,
"partitionDate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andPartitionDateNotBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"partition_date not between"
,
value1
,
value2
,
"partitionDate"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSqlIdIsNull
()
{
addCriterion
(
"sql_id is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSqlIdIsNotNull
()
{
addCriterion
(
"sql_id is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSqlIdEqualTo
(
Integer
value
)
{
addCriterion
(
"sql_id ="
,
value
,
"sqlId"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSqlIdNotEqualTo
(
Integer
value
)
{
addCriterion
(
"sql_id <>"
,
value
,
"sqlId"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSqlIdGreaterThan
(
Integer
value
)
{
addCriterion
(
"sql_id >"
,
value
,
"sqlId"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSqlIdGreaterThanOrEqualTo
(
Integer
value
)
{
addCriterion
(
"sql_id >="
,
value
,
"sqlId"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSqlIdLessThan
(
Integer
value
)
{
addCriterion
(
"sql_id <"
,
value
,
"sqlId"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSqlIdLessThanOrEqualTo
(
Integer
value
)
{
addCriterion
(
"sql_id <="
,
value
,
"sqlId"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSqlIdIn
(
List
<
Integer
>
values
)
{
addCriterion
(
"sql_id in"
,
values
,
"sqlId"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSqlIdNotIn
(
List
<
Integer
>
values
)
{
addCriterion
(
"sql_id not in"
,
values
,
"sqlId"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSqlIdBetween
(
Integer
value1
,
Integer
value2
)
{
addCriterion
(
"sql_id between"
,
value1
,
value2
,
"sqlId"
);
return
(
Criteria
)
this
;
}
public
Criteria
andSqlIdNotBetween
(
Integer
value1
,
Integer
value2
)
{
addCriterion
(
"sql_id not between"
,
value1
,
value2
,
"sqlId"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCreateTimeIsNull
()
{
addCriterion
(
"create_time is null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCreateTimeIsNotNull
()
{
addCriterion
(
"create_time is not null"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCreateTimeEqualTo
(
String
value
)
{
addCriterion
(
"create_time ="
,
value
,
"createTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCreateTimeNotEqualTo
(
String
value
)
{
addCriterion
(
"create_time <>"
,
value
,
"createTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCreateTimeGreaterThan
(
String
value
)
{
addCriterion
(
"create_time >"
,
value
,
"createTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCreateTimeGreaterThanOrEqualTo
(
String
value
)
{
addCriterion
(
"create_time >="
,
value
,
"createTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCreateTimeLessThan
(
String
value
)
{
addCriterion
(
"create_time <"
,
value
,
"createTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCreateTimeLessThanOrEqualTo
(
String
value
)
{
addCriterion
(
"create_time <="
,
value
,
"createTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCreateTimeLike
(
String
value
)
{
addCriterion
(
"create_time like"
,
value
,
"createTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCreateTimeNotLike
(
String
value
)
{
addCriterion
(
"create_time not like"
,
value
,
"createTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCreateTimeIn
(
List
<
String
>
values
)
{
addCriterion
(
"create_time in"
,
values
,
"createTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCreateTimeNotIn
(
List
<
String
>
values
)
{
addCriterion
(
"create_time not in"
,
values
,
"createTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCreateTimeBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"create_time between"
,
value1
,
value2
,
"createTime"
);
return
(
Criteria
)
this
;
}
public
Criteria
andCreateTimeNotBetween
(
String
value1
,
String
value2
)
{
addCriterion
(
"create_time not between"
,
value1
,
value2
,
"createTime"
);
return
(
Criteria
)
this
;
}
}
public
static
class
Criteria
extends
GeneratedCriteria
{
protected
Criteria
()
{
super
();
}
}
public
static
class
Criterion
{
private
String
condition
;
private
Object
value
;
private
Object
secondValue
;
private
boolean
noValue
;
private
boolean
singleValue
;
private
boolean
betweenValue
;
private
boolean
listValue
;
private
String
typeHandler
;
public
String
getCondition
()
{
return
condition
;
}
public
Object
getValue
()
{
return
value
;
}
public
Object
getSecondValue
()
{
return
secondValue
;
}
public
boolean
isNoValue
()
{
return
noValue
;
}
public
boolean
isSingleValue
()
{
return
singleValue
;
}
public
boolean
isBetweenValue
()
{
return
betweenValue
;
}
public
boolean
isListValue
()
{
return
listValue
;
}
public
String
getTypeHandler
()
{
return
typeHandler
;
}
protected
Criterion
(
String
condition
)
{
super
();
this
.
condition
=
condition
;
this
.
typeHandler
=
null
;
this
.
noValue
=
true
;
}
protected
Criterion
(
String
condition
,
Object
value
,
String
typeHandler
)
{
super
();
this
.
condition
=
condition
;
this
.
value
=
value
;
this
.
typeHandler
=
typeHandler
;
if
(
value
instanceof
List
<?>)
{
this
.
listValue
=
true
;
}
else
{
this
.
singleValue
=
true
;
}
}
protected
Criterion
(
String
condition
,
Object
value
)
{
this
(
condition
,
value
,
null
);
}
protected
Criterion
(
String
condition
,
Object
value
,
Object
secondValue
,
String
typeHandler
)
{
super
();
this
.
condition
=
condition
;
this
.
value
=
value
;
this
.
secondValue
=
secondValue
;
this
.
typeHandler
=
typeHandler
;
this
.
betweenValue
=
true
;
}
protected
Criterion
(
String
condition
,
Object
value
,
Object
secondValue
)
{
this
(
condition
,
value
,
secondValue
,
null
);
}
}
}
\ No newline at end of file
src/main/java/com/gmei/data/dqmp/mapper/TblThresholdExceedAllMapper.java
0 → 100644
View file @
b86ba305
package
com
.
gmei
.
data
.
dqmp
.
mapper
;
import
com.gmei.data.dqmp.domain.TblThresholdExceedAll
;
import
com.gmei.data.dqmp.domain.TblThresholdExceedAllCriteria
;
import
java.util.List
;
import
org.apache.ibatis.annotations.Param
;
public
interface
TblThresholdExceedAllMapper
{
int
countByExample
(
TblThresholdExceedAllCriteria
example
);
int
deleteByExample
(
TblThresholdExceedAllCriteria
example
);
int
deleteByPrimaryKey
(
Integer
id
);
int
insert
(
TblThresholdExceedAll
record
);
int
insertSelective
(
TblThresholdExceedAll
record
);
List
<
TblThresholdExceedAll
>
selectByExample
(
TblThresholdExceedAllCriteria
example
);
TblThresholdExceedAll
selectByPrimaryKey
(
Integer
id
);
int
updateByExampleSelective
(
@Param
(
"record"
)
TblThresholdExceedAll
record
,
@Param
(
"example"
)
TblThresholdExceedAllCriteria
example
);
int
updateByExample
(
@Param
(
"record"
)
TblThresholdExceedAll
record
,
@Param
(
"example"
)
TblThresholdExceedAllCriteria
example
);
int
updateByPrimaryKeySelective
(
TblThresholdExceedAll
record
);
int
updateByPrimaryKey
(
TblThresholdExceedAll
record
);
}
\ No newline at end of file
src/main/java/com/gmei/data/dqmp/service/DashbordService.java
0 → 100644
View file @
b86ba305
package
com
.
gmei
.
data
.
dqmp
.
service
;
import
com.gmei.data.dqmp.vo.DashbordVo
;
public
interface
DashbordService
{
DashbordVo
getDashbordInfo
();
}
src/main/java/com/gmei/data/dqmp/service/ThresholdExceedAllService.java
0 → 100644
View file @
b86ba305
package
com
.
gmei
.
data
.
dqmp
.
service
;
import
java.util.List
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gmei.data.dqmp.vo.ThresholdExceedAllVo
;
public
interface
ThresholdExceedAllService
{
boolean
persistThresholdExceedAll
(
JSONObject
jsonObject
);
List
<
ThresholdExceedAllVo
>
getThresholdExceedAllList
();
}
src/main/java/com/gmei/data/dqmp/service/impl/CheckServiceImpl.java
View file @
b86ba305
...
...
@@ -12,6 +12,8 @@ import org.slf4j.LoggerFactory;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gmei.data.dqmp.common.Constants
;
import
com.gmei.data.dqmp.domain.TblResultCheckRefer
;
import
com.gmei.data.dqmp.domain.TblResultCheckUnblank
;
...
...
@@ -29,6 +31,7 @@ import com.gmei.data.dqmp.pool.JdbcConnectPool;
import
com.gmei.data.dqmp.service.CheckService
;
import
com.gmei.data.dqmp.service.DingdingService
;
import
com.gmei.data.dqmp.service.MailService
;
import
com.gmei.data.dqmp.service.ThresholdExceedAllService
;
import
com.gmei.data.dqmp.utils.CrontabUtils
;
import
com.gmei.data.dqmp.utils.DateUtils
;
...
...
@@ -49,6 +52,8 @@ public class CheckServiceImpl implements CheckService {
private
MailService
mailService
;
@Autowired
private
DingdingService
dingdingService
;
@Autowired
private
ThresholdExceedAllService
thresholdExceedAllService
;
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
CheckServiceImpl
.
class
);
/**
...
...
@@ -82,6 +87,9 @@ public class CheckServiceImpl implements CheckService {
if
(
null
!=
uniqueRate
&&
uniqueRate
<
threshold
)
{
mailService
.
sendSimpleMail
(
uniqueCheckResult
.
toString
());
dingdingService
.
sendMsgToDingding
(
uniqueCheckResult
.
toString
());
JSONObject
parseObject
=
JSONObject
.
parseObject
(
JSON
.
toJSONString
(
uniqueCheckResult
));
parseObject
.
put
(
"checkType"
,
Constants
.
CHECK_UNIQUE
);
thresholdExceedAllService
.
persistThresholdExceedAll
(
parseObject
);
}
}
uniqueCheckResult
.
setSqlId
(
id
);
...
...
@@ -96,6 +104,9 @@ public class CheckServiceImpl implements CheckService {
if
(
null
!=
unblankRate
&&
unblankRate
<
threshold
)
{
mailService
.
sendSimpleMail
(
tblResultCheckUnblank
.
toString
());
dingdingService
.
sendMsgToDingding
(
tblResultCheckUnblank
.
toString
());
JSONObject
parseObject
=
JSONObject
.
parseObject
(
JSON
.
toJSONString
(
tblResultCheckUnblank
));
parseObject
.
put
(
"checkType"
,
Constants
.
CHECK_UNBLANK
);
thresholdExceedAllService
.
persistThresholdExceedAll
(
parseObject
);
}
}
tblResultCheckUnblank
.
setSqlId
(
id
);
...
...
@@ -143,6 +154,9 @@ public class CheckServiceImpl implements CheckService {
if
(
null
!=
matchedRate
&&
matchedRate
<
threshold
)
{
mailService
.
sendSimpleMail
(
referCheckResult
.
toString
());
dingdingService
.
sendMsgToDingding
(
referCheckResult
.
toString
());
JSONObject
parseObject
=
JSONObject
.
parseObject
(
JSON
.
toJSONString
(
referCheckResult
));
parseObject
.
put
(
"checkType"
,
Constants
.
CHECK_REFER
);
thresholdExceedAllService
.
persistThresholdExceedAll
(
parseObject
);
}
}
referCheckResult
.
setSqlId
(
id
);
...
...
src/main/java/com/gmei/data/dqmp/service/impl/DashbordServiceImpl.java
0 → 100644
View file @
b86ba305
package
com
.
gmei
.
data
.
dqmp
.
service
.
impl
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.gmei.data.dqmp.domain.TblResultMonitorSpecial
;
import
com.gmei.data.dqmp.domain.TblResultMonitorSpecialCriteria
;
import
com.gmei.data.dqmp.domain.TblResultMonitorVolatility
;
import
com.gmei.data.dqmp.domain.TblResultMonitorVolatilityCriteria
;
import
com.gmei.data.dqmp.mapper.TblResultMonitorSpecialMapper
;
import
com.gmei.data.dqmp.mapper.TblResultMonitorVolatilityMapper
;
import
com.gmei.data.dqmp.service.DashbordService
;
import
com.gmei.data.dqmp.vo.DashbordVo
;
@Service
public
class
DashbordServiceImpl
implements
DashbordService
{
@Autowired
private
TblResultMonitorVolatilityMapper
tblResultMonitorVolatilityMapper
;
@Autowired
private
TblResultMonitorSpecialMapper
tblResultMonitorSpecialMapper
;
@Override
public
DashbordVo
getDashbordInfo
()
{
DashbordVo
dashbordVo
=
new
DashbordVo
();
List
<
String
>
volatilityLegendData
=
new
ArrayList
<
String
>();
List
<
Long
>
volatilitySeriesData
=
new
ArrayList
<
Long
>();
TblResultMonitorVolatilityCriteria
example
=
new
TblResultMonitorVolatilityCriteria
();
example
.
createCriteria
().
andSqlIdEqualTo
(
1
);
List
<
TblResultMonitorVolatility
>
selectByExample
=
tblResultMonitorVolatilityMapper
.
selectByExample
(
example
);
for
(
TblResultMonitorVolatility
tblResultMonitorVolatility
:
selectByExample
)
{
volatilityLegendData
.
add
(
tblResultMonitorVolatility
.
getPartitionDate
());
volatilitySeriesData
.
add
(
tblResultMonitorVolatility
.
getIndicatorValue
());
}
dashbordVo
.
setVolatilityLegendData
(
volatilityLegendData
);
dashbordVo
.
setVolatilitySeriesData
(
volatilitySeriesData
);
List
<
String
>
specialLegendData
=
new
ArrayList
<
String
>();
List
<
Long
>
specialSeriesData
=
new
ArrayList
<
Long
>();
TblResultMonitorSpecialCriteria
tblResultMonitorSpecialCriteria
=
new
TblResultMonitorSpecialCriteria
();
tblResultMonitorSpecialCriteria
.
createCriteria
()
.
andDbNameEqualTo
(
"online"
)
.
andTbNameEqualTo
(
"tl_finance_financeexpand_view"
)
.
andTimeColNameEqualTo
(
"flow_time"
)
.
andIndicatorTypeEqualTo
(
"PV"
);
List
<
TblResultMonitorSpecial
>
specialList
=
tblResultMonitorSpecialMapper
.
selectByExample
(
tblResultMonitorSpecialCriteria
);
for
(
TblResultMonitorSpecial
tblResultMonitorSpecial
:
specialList
)
{
specialLegendData
.
add
(
tblResultMonitorSpecial
.
getPartitionDate
());
specialSeriesData
.
add
(
tblResultMonitorSpecial
.
getIndicatorValue
());
}
dashbordVo
.
setSpecialLegendData
(
specialLegendData
);
dashbordVo
.
setSpecialSeriesData
(
specialSeriesData
);
return
dashbordVo
;
}
}
src/main/java/com/gmei/data/dqmp/service/impl/ThresholdExceedAllServiceImpl.java
0 → 100644
View file @
b86ba305
package
com
.
gmei
.
data
.
dqmp
.
service
.
impl
;
import
java.util.ArrayList
;
import
java.util.List
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.gmei.data.dqmp.common.Constants
;
import
com.gmei.data.dqmp.domain.TblThresholdExceedAll
;
import
com.gmei.data.dqmp.domain.TblThresholdExceedAllCriteria
;
import
com.gmei.data.dqmp.mapper.TblThresholdExceedAllMapper
;
import
com.gmei.data.dqmp.service.ThresholdExceedAllService
;
import
com.gmei.data.dqmp.utils.BeanUtils
;
import
com.gmei.data.dqmp.vo.ThresholdExceedAllVo
;
@Service
public
class
ThresholdExceedAllServiceImpl
implements
ThresholdExceedAllService
{
@Autowired
private
TblThresholdExceedAllMapper
tblThresholdExceedAllMapper
;
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
ThresholdExceedAllServiceImpl
.
class
);
@Override
public
boolean
persistThresholdExceedAll
(
JSONObject
jsonObject
)
{
boolean
rs
=
false
;
TblThresholdExceedAll
tblThresholdExceedAll
=
JSON
.
toJavaObject
(
jsonObject
,
TblThresholdExceedAll
.
class
);
String
checkType
=
jsonObject
.
getString
(
"checkType"
);
if
(
null
!=
checkType
)
{
if
(
Constants
.
CHECK_UNIQUE
.
equals
(
checkType
))
{
tblThresholdExceedAll
.
setCheckNum
(
jsonObject
.
getLong
(
"unique_num"
));
tblThresholdExceedAll
.
setCheckRate
(
jsonObject
.
getDouble
(
"unique_rate"
));
}
else
if
(
Constants
.
CHECK_UNBLANK
.
equals
(
checkType
))
{
tblThresholdExceedAll
.
setCheckNum
(
jsonObject
.
getLong
(
"unblank_num"
));
tblThresholdExceedAll
.
setCheckRate
(
jsonObject
.
getDouble
(
"unblank_rate"
));
}
else
if
(
Constants
.
CHECK_REFER
.
equals
(
checkType
))
{
tblThresholdExceedAll
.
setDbName
(
jsonObject
.
getString
(
"check_db_name"
));
tblThresholdExceedAll
.
setTbName
(
jsonObject
.
getString
(
"check_tb_name"
));
tblThresholdExceedAll
.
setColName
(
jsonObject
.
getString
(
"check_col_name"
));
tblThresholdExceedAll
.
setCheckNum
(
jsonObject
.
getLong
(
"matched_num"
));
tblThresholdExceedAll
.
setCheckRate
(
jsonObject
.
getDouble
(
"matched_rate"
));
}
else
{
logger
.
error
(
"checkType params is error: {}"
,
checkType
);
}
}
else
{
logger
.
error
(
"checkType params is null!"
);
}
int
insertSelective
=
tblThresholdExceedAllMapper
.
insertSelective
(
tblThresholdExceedAll
);
if
(
1
==
insertSelective
)
{
rs
=
true
;
}
else
{
logger
.
error
(
"insert tblThresholdExceedAll failed!"
);
}
return
rs
;
}
@Override
public
List
<
ThresholdExceedAllVo
>
getThresholdExceedAllList
()
{
List
<
ThresholdExceedAllVo
>
rsList
=
new
ArrayList
<
ThresholdExceedAllVo
>();
TblThresholdExceedAllCriteria
example
=
new
TblThresholdExceedAllCriteria
();
List
<
TblThresholdExceedAll
>
list
=
tblThresholdExceedAllMapper
.
selectByExample
(
example
);
for
(
TblThresholdExceedAll
tblThresholdExceedAll
:
list
)
{
ThresholdExceedAllVo
thresholdExceedAllVo
=
BeanUtils
.
map
(
tblThresholdExceedAll
,
ThresholdExceedAllVo
.
class
);
String
checkType
=
thresholdExceedAllVo
.
getCheckType
();
if
(
Constants
.
CHECK_UNIQUE
.
equals
(
checkType
))
{
thresholdExceedAllVo
.
setCheckType
(
"唯一性校验"
);
}
else
if
(
Constants
.
CHECK_UNBLANK
.
equals
(
checkType
))
{
thresholdExceedAllVo
.
setCheckType
(
"非空性校验"
);
}
else
if
(
Constants
.
CHECK_REFER
.
equals
(
checkType
))
{
thresholdExceedAllVo
.
setCheckType
(
"参照性校验"
);
}
else
{
logger
.
error
(
"check type is error: {}"
,
checkType
);
}
rsList
.
add
(
thresholdExceedAllVo
);
}
return
rsList
;
}
}
src/main/java/com/gmei/data/dqmp/vo/DashbordVo.java
0 → 100644
View file @
b86ba305
package
com
.
gmei
.
data
.
dqmp
.
vo
;
import
java.util.List
;
import
lombok.Data
;
@Data
public
class
DashbordVo
{
private
List
<
String
>
volatilityLegendData
;
private
List
<
Long
>
volatilitySeriesData
;
private
List
<
String
>
specialLegendData
;
private
List
<
Long
>
specialSeriesData
;
}
src/main/java/com/gmei/data/dqmp/vo/ThresholdExceedAllVo.java
0 → 100644
View file @
b86ba305
package
com
.
gmei
.
data
.
dqmp
.
vo
;
import
lombok.Data
;
@Data
public
class
ThresholdExceedAllVo
{
private
Integer
id
;
private
String
checkType
;
private
String
dbName
;
private
String
tbName
;
private
String
colName
;
private
Long
allNum
;
private
Long
checkNum
;
private
Double
checkRate
;
private
String
partitionDate
;
private
Integer
sqlId
;
private
String
createTime
;
}
src/main/resources/generator.xml
View file @
b86ba305
...
...
@@ -41,10 +41,10 @@
<table tableName="tbl_sql_monitor_volatility" domainObjectName="TblSqlMonitorVolatility"/>
<table tableName="tbl_sql_monitor_special" domainObjectName="TblSqlMonitorSpecial"/> -->
<!-- <table tableName="tbl_result_check_unique" domainObjectName="TblResultCheckUnique"/> -->
<table
tableName=
"tbl_result_check_unblank"
domainObjectName=
"TblResultCheckUnblank"
/>
<
!-- <
table tableName="tbl_result_check_unblank" domainObjectName="TblResultCheckUnblank"/>
<table tableName="tbl_result_check_refer" domainObjectName="TblResultCheckRefer"/>
<table tableName="tbl_result_monitor_volatility" domainObjectName="TblResultMonitorVolatility"/>
<table
tableName=
"tbl_result_monitor_special"
domainObjectName=
"TblResultMonitorSpecial"
/>
<table tableName="tbl_result_monitor_special" domainObjectName="TblResultMonitorSpecial"/>
-->
<!-- <table tableName="tbl_indicator_operator_info" domainObjectName="TblIndicatorOperatorInfo"/> -->
<!-- <table tableName="tbl_rule_template" domainObjectName="TblRuleTemplate"/> -->
<!-- <table tableName="tbl_rule_info_simple" domainObjectName="TblRuleInfoSimple">
...
...
@@ -54,5 +54,6 @@
<generatedKey column="id" sqlStatement="MySql" identity="true"/>
</table> -->
<!-- <table tableName="tbl_sys_param_info" domainObjectName="TblSysParamInfo"/> -->
<table
tableName=
"tbl_threshold_exceed_all"
domainObjectName=
"TblThresholdExceedAll"
/>
</context>
</generatorConfiguration>
src/main/resources/mybatis/mapper/TblThresholdExceedAllMapper.xml
0 → 100644
View file @
b86ba305
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper
namespace=
"com.gmei.data.dqmp.mapper.TblThresholdExceedAllMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"com.gmei.data.dqmp.domain.TblThresholdExceedAll"
>
<id
column=
"id"
property=
"id"
jdbcType=
"INTEGER"
/>
<result
column=
"check_type"
property=
"checkType"
jdbcType=
"VARCHAR"
/>
<result
column=
"db_name"
property=
"dbName"
jdbcType=
"VARCHAR"
/>
<result
column=
"tb_name"
property=
"tbName"
jdbcType=
"VARCHAR"
/>
<result
column=
"col_name"
property=
"colName"
jdbcType=
"VARCHAR"
/>
<result
column=
"all_num"
property=
"allNum"
jdbcType=
"BIGINT"
/>
<result
column=
"check_num"
property=
"checkNum"
jdbcType=
"BIGINT"
/>
<result
column=
"check_rate"
property=
"checkRate"
jdbcType=
"DOUBLE"
/>
<result
column=
"partition_date"
property=
"partitionDate"
jdbcType=
"VARCHAR"
/>
<result
column=
"sql_id"
property=
"sqlId"
jdbcType=
"INTEGER"
/>
<result
column=
"create_time"
property=
"createTime"
jdbcType=
"VARCHAR"
/>
</resultMap>
<sql
id=
"Example_Where_Clause"
>
<where
>
<foreach
collection=
"oredCriteria"
item=
"criteria"
separator=
"or"
>
<if
test=
"criteria.valid"
>
<trim
prefix=
"("
suffix=
")"
prefixOverrides=
"and"
>
<foreach
collection=
"criteria.criteria"
item=
"criterion"
>
<choose
>
<when
test=
"criterion.noValue"
>
and ${criterion.condition}
</when>
<when
test=
"criterion.singleValue"
>
and ${criterion.condition} #{criterion.value}
</when>
<when
test=
"criterion.betweenValue"
>
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when
test=
"criterion.listValue"
>
and ${criterion.condition}
<foreach
collection=
"criterion.value"
item=
"listItem"
open=
"("
close=
")"
separator=
","
>
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql
id=
"Update_By_Example_Where_Clause"
>
<where
>
<foreach
collection=
"example.oredCriteria"
item=
"criteria"
separator=
"or"
>
<if
test=
"criteria.valid"
>
<trim
prefix=
"("
suffix=
")"
prefixOverrides=
"and"
>
<foreach
collection=
"criteria.criteria"
item=
"criterion"
>
<choose
>
<when
test=
"criterion.noValue"
>
and ${criterion.condition}
</when>
<when
test=
"criterion.singleValue"
>
and ${criterion.condition} #{criterion.value}
</when>
<when
test=
"criterion.betweenValue"
>
and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
</when>
<when
test=
"criterion.listValue"
>
and ${criterion.condition}
<foreach
collection=
"criterion.value"
item=
"listItem"
open=
"("
close=
")"
separator=
","
>
#{listItem}
</foreach>
</when>
</choose>
</foreach>
</trim>
</if>
</foreach>
</where>
</sql>
<sql
id=
"Base_Column_List"
>
id, check_type, db_name, tb_name, col_name, all_num, check_num, check_rate, partition_date,
sql_id, create_time
</sql>
<select
id=
"selectByExample"
resultMap=
"BaseResultMap"
parameterType=
"com.gmei.data.dqmp.domain.TblThresholdExceedAllCriteria"
>
select
<if
test=
"distinct"
>
distinct
</if>
<include
refid=
"Base_Column_List"
/>
from tbl_threshold_exceed_all
<if
test=
"_parameter != null"
>
<include
refid=
"Example_Where_Clause"
/>
</if>
<if
test=
"orderByClause != null"
>
order by ${orderByClause}
</if>
</select>
<select
id=
"selectByPrimaryKey"
resultMap=
"BaseResultMap"
parameterType=
"java.lang.Integer"
>
select
<include
refid=
"Base_Column_List"
/>
from tbl_threshold_exceed_all
where id = #{id,jdbcType=INTEGER}
</select>
<delete
id=
"deleteByPrimaryKey"
parameterType=
"java.lang.Integer"
>
delete from tbl_threshold_exceed_all
where id = #{id,jdbcType=INTEGER}
</delete>
<delete
id=
"deleteByExample"
parameterType=
"com.gmei.data.dqmp.domain.TblThresholdExceedAllCriteria"
>
delete from tbl_threshold_exceed_all
<if
test=
"_parameter != null"
>
<include
refid=
"Example_Where_Clause"
/>
</if>
</delete>
<insert
id=
"insert"
parameterType=
"com.gmei.data.dqmp.domain.TblThresholdExceedAll"
>
insert into tbl_threshold_exceed_all (id, check_type, db_name,
tb_name, col_name, all_num,
check_num, check_rate, partition_date,
sql_id, create_time)
values (#{id,jdbcType=INTEGER}, #{checkType,jdbcType=VARCHAR}, #{dbName,jdbcType=VARCHAR},
#{tbName,jdbcType=VARCHAR}, #{colName,jdbcType=VARCHAR}, #{allNum,jdbcType=BIGINT},
#{checkNum,jdbcType=BIGINT}, #{checkRate,jdbcType=DOUBLE}, #{partitionDate,jdbcType=VARCHAR},
#{sqlId,jdbcType=INTEGER}, #{createTime,jdbcType=VARCHAR})
</insert>
<insert
id=
"insertSelective"
parameterType=
"com.gmei.data.dqmp.domain.TblThresholdExceedAll"
>
insert into tbl_threshold_exceed_all
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"id != null"
>
id,
</if>
<if
test=
"checkType != null"
>
check_type,
</if>
<if
test=
"dbName != null"
>
db_name,
</if>
<if
test=
"tbName != null"
>
tb_name,
</if>
<if
test=
"colName != null"
>
col_name,
</if>
<if
test=
"allNum != null"
>
all_num,
</if>
<if
test=
"checkNum != null"
>
check_num,
</if>
<if
test=
"checkRate != null"
>
check_rate,
</if>
<if
test=
"partitionDate != null"
>
partition_date,
</if>
<if
test=
"sqlId != null"
>
sql_id,
</if>
<if
test=
"createTime != null"
>
create_time,
</if>
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"id != null"
>
#{id,jdbcType=INTEGER},
</if>
<if
test=
"checkType != null"
>
#{checkType,jdbcType=VARCHAR},
</if>
<if
test=
"dbName != null"
>
#{dbName,jdbcType=VARCHAR},
</if>
<if
test=
"tbName != null"
>
#{tbName,jdbcType=VARCHAR},
</if>
<if
test=
"colName != null"
>
#{colName,jdbcType=VARCHAR},
</if>
<if
test=
"allNum != null"
>
#{allNum,jdbcType=BIGINT},
</if>
<if
test=
"checkNum != null"
>
#{checkNum,jdbcType=BIGINT},
</if>
<if
test=
"checkRate != null"
>
#{checkRate,jdbcType=DOUBLE},
</if>
<if
test=
"partitionDate != null"
>
#{partitionDate,jdbcType=VARCHAR},
</if>
<if
test=
"sqlId != null"
>
#{sqlId,jdbcType=INTEGER},
</if>
<if
test=
"createTime != null"
>
#{createTime,jdbcType=VARCHAR},
</if>
</trim>
</insert>
<select
id=
"countByExample"
parameterType=
"com.gmei.data.dqmp.domain.TblThresholdExceedAllCriteria"
resultType=
"java.lang.Integer"
>
select count(*) from tbl_threshold_exceed_all
<if
test=
"_parameter != null"
>
<include
refid=
"Example_Where_Clause"
/>
</if>
</select>
<update
id=
"updateByExampleSelective"
parameterType=
"map"
>
update tbl_threshold_exceed_all
<set
>
<if
test=
"record.id != null"
>
id = #{record.id,jdbcType=INTEGER},
</if>
<if
test=
"record.checkType != null"
>
check_type = #{record.checkType,jdbcType=VARCHAR},
</if>
<if
test=
"record.dbName != null"
>
db_name = #{record.dbName,jdbcType=VARCHAR},
</if>
<if
test=
"record.tbName != null"
>
tb_name = #{record.tbName,jdbcType=VARCHAR},
</if>
<if
test=
"record.colName != null"
>
col_name = #{record.colName,jdbcType=VARCHAR},
</if>
<if
test=
"record.allNum != null"
>
all_num = #{record.allNum,jdbcType=BIGINT},
</if>
<if
test=
"record.checkNum != null"
>
check_num = #{record.checkNum,jdbcType=BIGINT},
</if>
<if
test=
"record.checkRate != null"
>
check_rate = #{record.checkRate,jdbcType=DOUBLE},
</if>
<if
test=
"record.partitionDate != null"
>
partition_date = #{record.partitionDate,jdbcType=VARCHAR},
</if>
<if
test=
"record.sqlId != null"
>
sql_id = #{record.sqlId,jdbcType=INTEGER},
</if>
<if
test=
"record.createTime != null"
>
create_time = #{record.createTime,jdbcType=VARCHAR},
</if>
</set>
<if
test=
"_parameter != null"
>
<include
refid=
"Update_By_Example_Where_Clause"
/>
</if>
</update>
<update
id=
"updateByExample"
parameterType=
"map"
>
update tbl_threshold_exceed_all
set id = #{record.id,jdbcType=INTEGER},
check_type = #{record.checkType,jdbcType=VARCHAR},
db_name = #{record.dbName,jdbcType=VARCHAR},
tb_name = #{record.tbName,jdbcType=VARCHAR},
col_name = #{record.colName,jdbcType=VARCHAR},
all_num = #{record.allNum,jdbcType=BIGINT},
check_num = #{record.checkNum,jdbcType=BIGINT},
check_rate = #{record.checkRate,jdbcType=DOUBLE},
partition_date = #{record.partitionDate,jdbcType=VARCHAR},
sql_id = #{record.sqlId,jdbcType=INTEGER},
create_time = #{record.createTime,jdbcType=VARCHAR}
<if
test=
"_parameter != null"
>
<include
refid=
"Update_By_Example_Where_Clause"
/>
</if>
</update>
<update
id=
"updateByPrimaryKeySelective"
parameterType=
"com.gmei.data.dqmp.domain.TblThresholdExceedAll"
>
update tbl_threshold_exceed_all
<set
>
<if
test=
"checkType != null"
>
check_type = #{checkType,jdbcType=VARCHAR},
</if>
<if
test=
"dbName != null"
>
db_name = #{dbName,jdbcType=VARCHAR},
</if>
<if
test=
"tbName != null"
>
tb_name = #{tbName,jdbcType=VARCHAR},
</if>
<if
test=
"colName != null"
>
col_name = #{colName,jdbcType=VARCHAR},
</if>
<if
test=
"allNum != null"
>
all_num = #{allNum,jdbcType=BIGINT},
</if>
<if
test=
"checkNum != null"
>
check_num = #{checkNum,jdbcType=BIGINT},
</if>
<if
test=
"checkRate != null"
>
check_rate = #{checkRate,jdbcType=DOUBLE},
</if>
<if
test=
"partitionDate != null"
>
partition_date = #{partitionDate,jdbcType=VARCHAR},
</if>
<if
test=
"sqlId != null"
>
sql_id = #{sqlId,jdbcType=INTEGER},
</if>
<if
test=
"createTime != null"
>
create_time = #{createTime,jdbcType=VARCHAR},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update
id=
"updateByPrimaryKey"
parameterType=
"com.gmei.data.dqmp.domain.TblThresholdExceedAll"
>
update tbl_threshold_exceed_all
set check_type = #{checkType,jdbcType=VARCHAR},
db_name = #{dbName,jdbcType=VARCHAR},
tb_name = #{tbName,jdbcType=VARCHAR},
col_name = #{colName,jdbcType=VARCHAR},
all_num = #{allNum,jdbcType=BIGINT},
check_num = #{checkNum,jdbcType=BIGINT},
check_rate = #{checkRate,jdbcType=DOUBLE},
partition_date = #{partitionDate,jdbcType=VARCHAR},
sql_id = #{sqlId,jdbcType=INTEGER},
create_time = #{createTime,jdbcType=VARCHAR}
where id = #{id,jdbcType=INTEGER}
</update>
</mapper>
\ No newline at end of file
src/main/resources/templates/index.html
View file @
b86ba305
...
...
@@ -17,206 +17,23 @@
<div
style=
"text-align: center"
>
<h1>
数据质量管理平台
</h1>
<hr></hr>
<h2>
数据质量规则导入
</h2>
<form
action=
"/excel/importUnique"
method=
"post"
enctype=
"multipart/form-data"
>
<input
type=
"file"
name=
"file"
></input>
<button
type=
"submit"
>
唯一性质量规则上传
</button>
</form>
<form
action=
"/excel/importUnblank"
method=
"post"
enctype=
"multipart/form-data"
>
<input
type=
"file"
name=
"file"
></input>
<button
type=
"submit"
>
非空性质量规则上传
</button>
</form>
<form
action=
"/excel/importRefer"
method=
"post"
enctype=
"multipart/form-data"
>
<input
type=
"file"
name=
"file"
></input>
<button
type=
"submit"
>
参照性质量规则上传
</button>
</form>
<form
action=
"/excel/importVolatility"
method=
"post"
enctype=
"multipart/form-data"
>
<input
type=
"file"
name=
"file"
></input>
<button
type=
"submit"
>
波动性质量规则上传
</button>
</form>
<form
action=
"/excel/importSpecial"
method=
"post"
enctype=
"multipart/form-data"
>
<input
type=
"file"
name=
"file"
></input>
<button
type=
"submit"
>
特殊性质量规则上传
</button>
</form>
<hr></hr>
<h2>
数据质量规则列表查询
</h2>
<h3>
唯一性校验规则列表
</h3>
<div
class=
"tableCenter"
>
<table
class=
"table"
style=
"table-layout: fixed;"
border=
"1"
>
<tr>
<th>
序号
</th>
<th>
数据库名
</th>
<th>
数据表名
</th>
<th>
数据列名
</th>
<th>
过滤条件
</th>
<th>
预警阈值
</th>
<th>
当前状态
</th>
<th>
校验时间
</th>
<th>
备注
</th>
<th>
操作
</th>
</tr>
<tr
th:each=
"dqRule,dqRuleStat : ${uniqueList}"
>
<!-- <th th:text="${dqRuleStat.index}"></th> -->
<th
th:text=
"${dqRule.id}"
></th>
<td
th:text=
"${dqRule.dbName}"
></td>
<td
th:text=
"${dqRule.tbName}"
></td>
<th
th:text=
"${dqRule.colName}"
></th>
<th
th:text=
"${dqRule.filters}"
></th>
<th
th:text=
"${dqRule.threshold}"
></th>
<th
th:text=
"${dqRule.status}"
></th>
<th
th:text=
"${dqRule.checkTime}"
></th>
<th
th:text=
"${dqRule.comment}"
></th>
<td><a
th:href=
"@{/dqRule/del(id=${dqRule.id},checkType=${dqRule.checkType})}"
>
删除
</a></td>
</tr>
</table>
</div>
<h3>
非空性校验规则列表
</h3>
<div
class=
"tableCenter"
>
<table
class=
"table"
style=
"table-layout: fixed;"
border=
"1"
>
<tr>
<th>
序号
</th>
<th>
数据库名
</th>
<th>
数据表名
</th>
<th>
数据列名
</th>
<th>
过滤条件
</th>
<th>
预警阈值
</th>
<th>
当前状态
</th>
<th>
校验时间
</th>
<th>
备注
</th>
<th>
操作
</th>
</tr>
<tr
th:each=
"dqRule,dqRuleStat : ${unblankList}"
>
<!-- <th th:text="${dqRuleStat.index}"></th> -->
<th
th:text=
"${dqRule.id}"
></th>
<td
th:text=
"${dqRule.dbName}"
></td>
<td
th:text=
"${dqRule.tbName}"
></td>
<th
th:text=
"${dqRule.colName}"
></th>
<th
th:text=
"${dqRule.filters}"
></th>
<th
th:text=
"${dqRule.threshold}"
></th>
<th
th:text=
"${dqRule.status}"
></th>
<th
th:text=
"${dqRule.checkTime}"
></th>
<th
th:text=
"${dqRule.comment}"
></th>
<td><a
th:href=
"@{/dqRule/del(id=${dqRule.id},checkType=${dqRule.checkType})}"
>
删除
</a></td>
</tr>
</table>
</div>
<h3>
参照性校验规则列表
</h3>
<div
class=
"tableCenter"
>
<table
class=
"table"
style=
"table-layout: fixed;"
border=
"1"
>
<tr>
<th>
序号
</th>
<th>
校验数据库名
</th>
<th>
校验数据表名
</th>
<th>
校验数据列名
</th>
<th>
校验过滤条件
</th>
<th>
参照数据库名
</th>
<th>
参照数据表名
</th>
<th>
参照数据列名
</th>
<th>
参照过滤条件
</th>
<th>
预警阈值
</th>
<th>
当前状态
</th>
<th>
校验时间
</th>
<th>
备注
</th>
<th>
操作
</th>
</tr>
<tr
th:each=
"dqRule,dqRuleStat : ${referList}"
>
<!-- <th th:text="${dqRuleStat.index}"></th> -->
<th
th:text=
"${dqRule.id}"
></th>
<td
th:text=
"${dqRule.checkDbName}"
></td>
<td
th:text=
"${dqRule.checkTbName}"
></td>
<th
th:text=
"${dqRule.checkColName}"
></th>
<th
th:text=
"${dqRule.checkFilters}"
></th>
<td
th:text=
"${dqRule.referDbName}"
></td>
<td
th:text=
"${dqRule.referTbName}"
></td>
<th
th:text=
"${dqRule.referColName}"
></th>
<th
th:text=
"${dqRule.referFilters}"
></th>
<th
th:text=
"${dqRule.threshold}"
></th>
<th
th:text=
"${dqRule.status}"
></th>
<th
th:text=
"${dqRule.checkTime}"
></th>
<th
th:text=
"${dqRule.comment}"
></th>
<td><a
th:href=
"@{/dqRule/del(id=${dqRule.id},checkType=${dqRule.checkType})}"
>
删除
</a></td>
</tr>
</table>
</div>
<h3>
波动性校验规则列表
</h3>
<div
class=
"tableCenter"
>
<table
class=
"table"
style=
"table-layout: fixed;"
border=
"1"
>
<tr>
<th>
序号
</th>
<th>
数据库名
</th>
<th>
数据表名
</th>
<th>
数据列名
</th>
<th>
指标类型
</th>
<th>
过滤条件
</th>
<th>
预警阈值
</th>
<th>
当前状态
</th>
<th>
校验时间
</th>
<th>
备注
</th>
<th>
操作
</th>
</tr>
<tr
th:each=
"dqRule,dqRuleStat : ${volatilityList}"
>
<!-- <th th:text="${dqRuleStat.index}"></th> -->
<th
th:text=
"${dqRule.id}"
></th>
<td
th:text=
"${dqRule.dbName}"
></td>
<td
th:text=
"${dqRule.tbName}"
></td>
<th
th:text=
"${dqRule.colName}"
></th>
<th
th:text=
"${dqRule.indicatorType}"
></th>
<th
th:text=
"${dqRule.filters}"
></th>
<th
th:text=
"${dqRule.threshold}"
></th>
<th
th:text=
"${dqRule.status}"
></th>
<th
th:text=
"${dqRule.checkTime}"
></th>
<th
th:text=
"${dqRule.comment}"
></th>
<td><a
th:href=
"@{/dqRule/del(id=${dqRule.id},checkType=${dqRule.checkType})}"
>
删除
</a></td>
</tr>
</table>
</div>
<h3>
特殊性校验规则列表
</h3>
<div
class=
"tableCenter"
>
<table
class=
"table"
style=
"table-layout: fixed;"
border=
"1"
>
<tr>
<th>
序号
</th>
<th>
数据库名
</th>
<th>
数据表名
</th>
<th>
数据列名
</th>
<th>
数据时间列名
</th>
<th>
指标类型
</th>
<th>
数据校验起始时间
</th>
<th>
过滤条件
</th>
<th>
预警阈值
</th>
<th>
当前状态
</th>
<th>
校验时间
</th>
<th>
备注
</th>
<th>
操作
</th>
</tr>
<tr
th:each=
"dqRule,dqRuleStat : ${specialList}"
>
<!-- <th th:text="${dqRuleStat.index}"></th> -->
<th
th:text=
"${dqRule.id}"
></th>
<td
th:text=
"${dqRule.dbName}"
></td>
<td
th:text=
"${dqRule.tbName}"
></td>
<th
th:text=
"${dqRule.colName}"
></th>
<th
th:text=
"${dqRule.timeColName}"
></th>
<th
th:text=
"${dqRule.indicatorType}"
></th>
<th
th:text=
"${dqRule.startTime}"
></th>
<th
th:text=
"${dqRule.filters}"
></th>
<th
th:text=
"${dqRule.threshold}"
></th>
<th
th:text=
"${dqRule.status}"
></th>
<th
th:text=
"${dqRule.checkTime}"
></th>
<th
th:text=
"${dqRule.comment}"
></th>
<td><a
th:href=
"@{/dqRule/del(id=${dqRule.id},checkType=${dqRule.checkType})}"
>
删除
</a></td>
</tr>
</table>
</div>
<hr></hr>
<br>
<br>
<br>
<a
rel=
"external nofollow"
href=
"/view"
>
数据质量仪表盘
</a>
<br>
<br>
<br>
<a
rel=
"external nofollow"
href=
"/manage"
>
数据质量规则管理
</a>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
</div>
</body>
</html>
src/main/resources/templates/static/demo.html
deleted
100644 → 0
View file @
182d895a
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<title>
ECharts
</title>
<!-- 引入 echarts.js -->
<script
src=
"/templates/static/echarts.min.js"
></script>
</head>
<body>
123
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div
id=
"main"
style=
"width: 600px;height:400px;"
></div>
<script
type=
"text/javascript"
>
// 基于准备好的dom,初始化echarts实例
var
myChart
=
echarts
.
init
(
document
.
getElementById
(
'main'
));
// 指定图表的配置项和数据
var
option
=
{
title
:
{
text
:
'ECharts 入门示例'
},
tooltip
:
{},
legend
:
{
data
:[
'销量'
]
},
xAxis
:
{
data
:
[
"衬衫"
,
"羊毛衫"
,
"雪纺衫"
,
"裤子"
,
"高跟鞋"
,
"袜子"
]
},
yAxis
:
{},
series
:
[{
name
:
'销量'
,
type
:
'bar'
,
data
:
[
5
,
20
,
36
,
10
,
10
,
20
]
}]
};
// 使用刚指定的配置项和数据显示图表。
myChart
.
setOption
(
option
);
</script>
</body>
</html>
src/main/resources/templates/static/echarts.min.js
→
src/main/resources/templates/static/
js/
echarts.min.js
View file @
b86ba305
File moved
src/main/resources/templates/static/js/jquery-3.1.1.min.js
0 → 100644
View file @
b86ba305
/*! jQuery v3.1.1 | (c) jQuery Foundation | jquery.org/license */
!
function
(
a
,
b
){
"use strict"
;
"object"
==
typeof
module
&&
"object"
==
typeof
module
.
exports
?
module
.
exports
=
a
.
document
?
b
(
a
,
!
0
):
function
(
a
){
if
(
!
a
.
document
)
throw
new
Error
(
"jQuery requires a window with a document"
);
return
b
(
a
)}:
b
(
a
)}(
"undefined"
!=
typeof
window
?
window
:
this
,
function
(
a
,
b
){
"use strict"
;
var
c
=
[],
d
=
a
.
document
,
e
=
Object
.
getPrototypeOf
,
f
=
c
.
slice
,
g
=
c
.
concat
,
h
=
c
.
push
,
i
=
c
.
indexOf
,
j
=
{},
k
=
j
.
toString
,
l
=
j
.
hasOwnProperty
,
m
=
l
.
toString
,
n
=
m
.
call
(
Object
),
o
=
{};
function
p
(
a
,
b
){
b
=
b
||
d
;
var
c
=
b
.
createElement
(
"script"
);
c
.
text
=
a
,
b
.
head
.
appendChild
(
c
).
parentNode
.
removeChild
(
c
)}
var
q
=
"3.1.1"
,
r
=
function
(
a
,
b
){
return
new
r
.
fn
.
init
(
a
,
b
)},
s
=
/^
[\s\u
FEFF
\x
A0
]
+|
[\s\u
FEFF
\x
A0
]
+$/g
,
t
=
/^-ms-/
,
u
=
/-
([
a-z
])
/g
,
v
=
function
(
a
,
b
){
return
b
.
toUpperCase
()};
r
.
fn
=
r
.
prototype
=
{
jquery
:
q
,
constructor
:
r
,
length
:
0
,
toArray
:
function
(){
return
f
.
call
(
this
)},
get
:
function
(
a
){
return
null
==
a
?
f
.
call
(
this
):
a
<
0
?
this
[
a
+
this
.
length
]:
this
[
a
]},
pushStack
:
function
(
a
){
var
b
=
r
.
merge
(
this
.
constructor
(),
a
);
return
b
.
prevObject
=
this
,
b
},
each
:
function
(
a
){
return
r
.
each
(
this
,
a
)},
map
:
function
(
a
){
return
this
.
pushStack
(
r
.
map
(
this
,
function
(
b
,
c
){
return
a
.
call
(
b
,
c
,
b
)}))},
slice
:
function
(){
return
this
.
pushStack
(
f
.
apply
(
this
,
arguments
))},
first
:
function
(){
return
this
.
eq
(
0
)},
last
:
function
(){
return
this
.
eq
(
-
1
)},
eq
:
function
(
a
){
var
b
=
this
.
length
,
c
=+
a
+
(
a
<
0
?
b
:
0
);
return
this
.
pushStack
(
c
>=
0
&&
c
<
b
?[
this
[
c
]]:[])},
end
:
function
(){
return
this
.
prevObject
||
this
.
constructor
()},
push
:
h
,
sort
:
c
.
sort
,
splice
:
c
.
splice
},
r
.
extend
=
r
.
fn
.
extend
=
function
(){
var
a
,
b
,
c
,
d
,
e
,
f
,
g
=
arguments
[
0
]
||
{},
h
=
1
,
i
=
arguments
.
length
,
j
=!
1
;
for
(
"boolean"
==
typeof
g
&&
(
j
=
g
,
g
=
arguments
[
h
]
||
{},
h
++
),
"object"
==
typeof
g
||
r
.
isFunction
(
g
)
||
(
g
=
{}),
h
===
i
&&
(
g
=
this
,
h
--
);
h
<
i
;
h
++
)
if
(
null
!=
(
a
=
arguments
[
h
]))
for
(
b
in
a
)
c
=
g
[
b
],
d
=
a
[
b
],
g
!==
d
&&
(
j
&&
d
&&
(
r
.
isPlainObject
(
d
)
||
(
e
=
r
.
isArray
(
d
)))?(
e
?(
e
=!
1
,
f
=
c
&&
r
.
isArray
(
c
)?
c
:[]):
f
=
c
&&
r
.
isPlainObject
(
c
)?
c
:{},
g
[
b
]
=
r
.
extend
(
j
,
f
,
d
)):
void
0
!==
d
&&
(
g
[
b
]
=
d
));
return
g
},
r
.
extend
({
expando
:
"jQuery"
+
(
q
+
Math
.
random
()).
replace
(
/
\D
/g
,
""
),
isReady
:
!
0
,
error
:
function
(
a
){
throw
new
Error
(
a
)},
noop
:
function
(){},
isFunction
:
function
(
a
){
return
"function"
===
r
.
type
(
a
)},
isArray
:
Array
.
isArray
,
isWindow
:
function
(
a
){
return
null
!=
a
&&
a
===
a
.
window
},
isNumeric
:
function
(
a
){
var
b
=
r
.
type
(
a
);
return
(
"number"
===
b
||
"string"
===
b
)
&&!
isNaN
(
a
-
parseFloat
(
a
))},
isPlainObject
:
function
(
a
){
var
b
,
c
;
return
!
(
!
a
||
"[object Object]"
!==
k
.
call
(
a
))
&&
(
!
(
b
=
e
(
a
))
||
(
c
=
l
.
call
(
b
,
"constructor"
)
&&
b
.
constructor
,
"function"
==
typeof
c
&&
m
.
call
(
c
)
===
n
))},
isEmptyObject
:
function
(
a
){
var
b
;
for
(
b
in
a
)
return
!
1
;
return
!
0
},
type
:
function
(
a
){
return
null
==
a
?
a
+
""
:
"object"
==
typeof
a
||
"function"
==
typeof
a
?
j
[
k
.
call
(
a
)]
||
"object"
:
typeof
a
},
globalEval
:
function
(
a
){
p
(
a
)},
camelCase
:
function
(
a
){
return
a
.
replace
(
t
,
"ms-"
).
replace
(
u
,
v
)},
nodeName
:
function
(
a
,
b
){
return
a
.
nodeName
&&
a
.
nodeName
.
toLowerCase
()
===
b
.
toLowerCase
()},
each
:
function
(
a
,
b
){
var
c
,
d
=
0
;
if
(
w
(
a
)){
for
(
c
=
a
.
length
;
d
<
c
;
d
++
)
if
(
b
.
call
(
a
[
d
],
d
,
a
[
d
])
===!
1
)
break
}
else
for
(
d
in
a
)
if
(
b
.
call
(
a
[
d
],
d
,
a
[
d
])
===!
1
)
break
;
return
a
},
trim
:
function
(
a
){
return
null
==
a
?
""
:(
a
+
""
).
replace
(
s
,
""
)},
makeArray
:
function
(
a
,
b
){
var
c
=
b
||
[];
return
null
!=
a
&&
(
w
(
Object
(
a
))?
r
.
merge
(
c
,
"string"
==
typeof
a
?[
a
]:
a
):
h
.
call
(
c
,
a
)),
c
},
inArray
:
function
(
a
,
b
,
c
){
return
null
==
b
?
-
1
:
i
.
call
(
b
,
a
,
c
)},
merge
:
function
(
a
,
b
){
for
(
var
c
=+
b
.
length
,
d
=
0
,
e
=
a
.
length
;
d
<
c
;
d
++
)
a
[
e
++
]
=
b
[
d
];
return
a
.
length
=
e
,
a
},
grep
:
function
(
a
,
b
,
c
){
for
(
var
d
,
e
=
[],
f
=
0
,
g
=
a
.
length
,
h
=!
c
;
f
<
g
;
f
++
)
d
=!
b
(
a
[
f
],
f
),
d
!==
h
&&
e
.
push
(
a
[
f
]);
return
e
},
map
:
function
(
a
,
b
,
c
){
var
d
,
e
,
f
=
0
,
h
=
[];
if
(
w
(
a
))
for
(
d
=
a
.
length
;
f
<
d
;
f
++
)
e
=
b
(
a
[
f
],
f
,
c
),
null
!=
e
&&
h
.
push
(
e
);
else
for
(
f
in
a
)
e
=
b
(
a
[
f
],
f
,
c
),
null
!=
e
&&
h
.
push
(
e
);
return
g
.
apply
([],
h
)},
guid
:
1
,
proxy
:
function
(
a
,
b
){
var
c
,
d
,
e
;
if
(
"string"
==
typeof
b
&&
(
c
=
a
[
b
],
b
=
a
,
a
=
c
),
r
.
isFunction
(
a
))
return
d
=
f
.
call
(
arguments
,
2
),
e
=
function
(){
return
a
.
apply
(
b
||
this
,
d
.
concat
(
f
.
call
(
arguments
)))},
e
.
guid
=
a
.
guid
=
a
.
guid
||
r
.
guid
++
,
e
},
now
:
Date
.
now
,
support
:
o
}),
"function"
==
typeof
Symbol
&&
(
r
.
fn
[
Symbol
.
iterator
]
=
c
[
Symbol
.
iterator
]),
r
.
each
(
"Boolean Number String Function Array Date RegExp Object Error Symbol"
.
split
(
" "
),
function
(
a
,
b
){
j
[
"[object "
+
b
+
"]"
]
=
b
.
toLowerCase
()});
function
w
(
a
){
var
b
=!!
a
&&
"length"
in
a
&&
a
.
length
,
c
=
r
.
type
(
a
);
return
"function"
!==
c
&&!
r
.
isWindow
(
a
)
&&
(
"array"
===
c
||
0
===
b
||
"number"
==
typeof
b
&&
b
>
0
&&
b
-
1
in
a
)}
var
x
=
function
(
a
){
var
b
,
c
,
d
,
e
,
f
,
g
,
h
,
i
,
j
,
k
,
l
,
m
,
n
,
o
,
p
,
q
,
r
,
s
,
t
,
u
=
"sizzle"
+
1
*
new
Date
,
v
=
a
.
document
,
w
=
0
,
x
=
0
,
y
=
ha
(),
z
=
ha
(),
A
=
ha
(),
B
=
function
(
a
,
b
){
return
a
===
b
&&
(
l
=!
0
),
0
},
C
=
{}.
hasOwnProperty
,
D
=
[],
E
=
D
.
pop
,
F
=
D
.
push
,
G
=
D
.
push
,
H
=
D
.
slice
,
I
=
function
(
a
,
b
){
for
(
var
c
=
0
,
d
=
a
.
length
;
c
<
d
;
c
++
)
if
(
a
[
c
]
===
b
)
return
c
;
return
-
1
},
J
=
"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped"
,
K
=
"[
\\
x20
\\
t
\\
r
\
\n
\\
f]"
,
L
=
"(?:
\\\\
.|[
\\
w-]|[^
\
0-
\\
xa0])+"
,
M
=
"
\\
["
+
K
+
"*("
+
L
+
")(?:"
+
K
+
"*([*^$|!~]?=)"
+
K
+
"*(?:'((?:
\\\\
.|[^
\\\\
'])*)'|
\"
((?:
\\\\
.|[^
\\\\
\"
])*)
\"
|("
+
L
+
"))|)"
+
K
+
"*
\\
]"
,
N
=
":("
+
L
+
")(?:
\\
((('((?:
\\\\
.|[^
\\\\
'])*)'|
\"
((?:
\\\\
.|[^
\\\\
\"
])*)
\"
)|((?:
\\\\
.|[^
\\\\
()[
\\
]]|"
+
M
+
")*)|.*)
\\
)|)"
,
O
=
new
RegExp
(
K
+
"+"
,
"g"
),
P
=
new
RegExp
(
"^"
+
K
+
"+|((?:^|[^
\\\\
])(?:
\\\\
.)*)"
+
K
+
"+$"
,
"g"
),
Q
=
new
RegExp
(
"^"
+
K
+
"*,"
+
K
+
"*"
),
R
=
new
RegExp
(
"^"
+
K
+
"*([>+~]|"
+
K
+
")"
+
K
+
"*"
),
S
=
new
RegExp
(
"="
+
K
+
"*([^
\\
]'
\"
]*?)"
+
K
+
"*
\\
]"
,
"g"
),
T
=
new
RegExp
(
N
),
U
=
new
RegExp
(
"^"
+
L
+
"$"
),
V
=
{
ID
:
new
RegExp
(
"^#("
+
L
+
")"
),
CLASS
:
new
RegExp
(
"^
\\
.("
+
L
+
")"
),
TAG
:
new
RegExp
(
"^("
+
L
+
"|[*])"
),
ATTR
:
new
RegExp
(
"^"
+
M
),
PSEUDO
:
new
RegExp
(
"^"
+
N
),
CHILD
:
new
RegExp
(
"^:(only|first|last|nth|nth-last)-(child|of-type)(?:
\\
("
+
K
+
"*(even|odd|(([+-]|)(
\\
d*)n|)"
+
K
+
"*(?:([+-]|)"
+
K
+
"*(
\\
d+)|))"
+
K
+
"*
\\
)|)"
,
"i"
),
bool
:
new
RegExp
(
"^(?:"
+
J
+
")$"
,
"i"
),
needsContext
:
new
RegExp
(
"^"
+
K
+
"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:
\\
("
+
K
+
"*((?:-
\\
d)?
\\
d*)"
+
K
+
"*
\\
)|)(?=[^-]|$)"
,
"i"
)},
W
=
/^
(?:
input|select|textarea|button
)
$/i
,
X
=
/^h
\d
$/i
,
Y
=
/^
[^
{
]
+
\{\s
*
\[
native
\w
/
,
Z
=
/^
(?:
#
([\w
-
]
+
)
|
(\w
+
)
|
\.([\w
-
]
+
))
$/
,
$
=
/
[
+~
]
/
,
_
=
new
RegExp
(
"
\\\\
([
\\
da-f]{1,6}"
+
K
+
"?|("
+
K
+
")|.)"
,
"ig"
),
aa
=
function
(
a
,
b
,
c
){
var
d
=
"0x"
+
b
-
65536
;
return
d
!==
d
||
c
?
b
:
d
<
0
?
String
.
fromCharCode
(
d
+
65536
):
String
.
fromCharCode
(
d
>>
10
|
55296
,
1023
&
d
|
56320
)},
ba
=
/
([\0
-
\x
1f
\x
7f
]
|^-
?\d)
|^-$|
[^\0
-
\x
1f
\x
7f-
\u
FFFF
\w
-
]
/g
,
ca
=
function
(
a
,
b
){
return
b
?
"
\
0"
===
a
?
"
\
ufffd"
:
a
.
slice
(
0
,
-
1
)
+
"
\
\"
+a.charCodeAt(a.length-1).toString(16)+"
":"
\\
"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0&&("
form
"in a||"
label
"in a)},{dir:"
parentNode
",next:"
legend
"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"
string
"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+"
"]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("
object
"!==b.nodeName.toLowerCase()){(k=b.getAttribute("
id
"))?k=k.replace(ba,ca):b.setAttribute("
id
",k=u),o=g(a),h=o.length;while(h--)o[h]="
#
"+k+"
"+sa(o[h]);r=o.join("
,
"),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("
id
")}}}return i(a.replace(P,"
$1
"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+"
")>d.cacheLength&&delete b[a.shift()],b[c+"
"]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("
fieldset
");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("
|
"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"
input
"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("
input
"===c||"
button
"===c)&&b.type===a}}function oa(a){return function(b){return"
form
"in b?b.parentNode&&b.disabled===!1?"
label
"in b?"
label
"in b.parentNode?b.parentNode.disabled===a:b.disabled===a:b.isDisabled===a||b.isDisabled!==!a&&ea(b)===a:b.disabled===a:"
label
"in b&&b.disabled===a}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"
undefined
"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"
HTML
"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("
unload
",da,!1):e.attachEvent&&e.attachEvent("
onunload
",da)),c.attributes=ja(function(a){return a.className="
i
",!a.getAttribute("
className
")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("
*
").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("
id
")===b}},d.find.ID=function(a,b){if("
undefined
"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}}):(d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="
undefined
"!=typeof a.getAttributeNode&&a.getAttributeNode("
id
");return c&&c.value===b}},d.find.ID=function(a,b){if("
undefined
"!=typeof b.getElementById&&p){var c,d,e,f=b.getElementById(a);if(f){if(c=f.getAttributeNode("
id
"),c&&c.value===a)return[f];e=b.getElementsByName(a),d=0;while(f=e[d++])if(c=f.getAttributeNode("
id
"),c&&c.value===a)return[f]}return[]}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"
undefined
"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("
*
"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("
undefined
"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="
<
a
id
=
'"+u+"'
><
/a><select id='"+u+"-
\r\\
' msallowcapture=''><option selected=''></
option
><
/select>",a.querySelectorAll
(
"
[
msallowcapture^=''
]
"
)
.length&&q.push
(
"
[
*^$
]
="+K+"*
(?:
''|
\"\")
"
)
,a.querySelectorAll
(
"
[
selected
]
"
)
.length||q.push
(
"
\\[
"+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-
]
"
)
.length||q.push
(
"~="
)
,a.querySelectorAll
(
":checked"
)
.length||q.push
(
":checked"
)
,a.querySelectorAll
(
"a#"+u+"+*"
)
.length||q.push
(
".#.+
[
+~
]
"
)
}
)
,ja
(
function
(
a
)
{a.innerHTML="<a href='' disabled='disabled'></
a
><
select
disabled
=
'disabled'
><
option
/><
/select>";var b=n.createElement
(
"input"
)
;b.setAttribute
(
"type","hidden"
)
,a.appendChild
(
b
)
.setAttribute
(
"name","D"
)
,a.querySelectorAll
(
"
[
name=d
]
"
)
.length&&q.push
(
"name"+K+"*
[
*^$|!~
]?
="
)
,2!==a.querySelectorAll
(
":enabled"
)
.length&&q.push
(
":enabled",":disabled"
)
,o.appendChild
(
a
)
.disabled=!0,2!==a.querySelectorAll
(
":disabled"
)
.length&&q.push
(
":enabled",":disabled"
)
,a.querySelectorAll
(
"*,:x"
)
,q.push
(
",.*:"
)
}
))
,
(
c.matchesSelector=Y.test
(
s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector
))
&&ja
(
function
(
a
)
{c.disconnectedMatch=s.call
(
a,"*"
)
,s.call
(
a,"
[
s!=''
]
:x"
)
,r.push
(
"!=",N
)
}
)
,q=q.length&&new RegExp
(
q.join
(
"|"
))
,r=r.length&&new RegExp
(
r.join
(
"|"
))
,b=Y.test
(
o.compareDocumentPosition
)
,t=b||Y.test
(
o.contains
)?
function
(
a,b
)
{var c=9===a.nodeType
?
a.documentElement:a,d=b&&b.parentNode;return a===d||!
(
!d||1!==d.nodeType||!
(
c.contains
?
c.contains
(
d
)
:a.compareDocumentPosition&&16&a.compareDocumentPosition
(
d
)))
}:function
(
a,b
)
{if
(
b
)
while
(
b=b.parentNode
)
if
(
b===a
)
return!0;return!1},B=b
?
function
(
a,b
)
{if
(
a===b
)
return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d
?
d:
(
d=
(
a.ownerDocument||a
)
===
(
b.ownerDocument||b
)?
a.compareDocumentPosition
(
b
)
:1,1&d||!c.sortDetached&&b.compareDocumentPosition
(
a
)
===d
?
a===n||a.ownerDocument===v&&t
(
v,a
)?
-1:b===n||b.ownerDocument===v&&t
(
v,b
)?
1:k
?
I
(
k,a
)
-I
(
k,b
)
:0:4&d
?
-1:1
)
}:function
(
a,b
)
{if
(
a===b
)
return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=
[
a
]
,h=
[
b
]
;if
(
!e||!f
)
return a===n
?
-1:b===n
?
1:e
?
-1:f
?
1:k
?
I
(
k,a
)
-I
(
k,b
)
:0;if
(
e===f
)
return la
(
a,b
)
;c=a;while
(
c=c.parentNode
)
g.unshift
(
c
)
;c=b;while
(
c=c.parentNode
)
h.unshift
(
c
)
;while
(
g
[
d
]
===h
[
d
])
d++;return d
?
la
(
g
[
d
]
,h
[
d
])
:g
[
d
]
===v
?
-1:h
[
d
]
===v
?
1:0},n
)
:n},ga.matches=function
(
a,b
)
{return ga
(
a,null,null,b
)
},ga.matchesSelector=function
(
a,b
)
{if
((
a.ownerDocument||a
)
!==n&&m
(
a
)
,b=b.replace
(
S,"='$1']"
)
,c.matchesSelector&&p&&!A
[
b+" "
]
&&
(
!r||!r.test
(
b
))
&&
(
!q||!q.test
(
b
)))
try{var d=s.call
(
a,b
)
;if
(
d||c.disconnectedMatch||a.document&&11!==a.document.nodeType
)
return d}catch
(
e
)
{}return ga
(
b,n,null,
[
a
])
.length>0},ga.contains=function
(
a,b
)
{return
(
a.ownerDocument||a
)
!==n&&m
(
a
)
,t
(
a,b
)
},ga.attr=function
(
a,b
)
{
(
a.ownerDocument||a
)
!==n&&m
(
a
)
;var e=d.attrHandle
[
b.toLowerCase()
]
,f=e&&C.call
(
d.attrHandle,b.toLowerCase
())?
e
(
a,b,!p
)
:void 0;return void 0!==f
?
f:c.attributes||!p
?
a.getAttribute
(
b
)
:
(
f=a.getAttributeNode
(
b
))
&&f.specified
?
f.value:null},ga.escape=function
(
a
)
{return
(
a+""
)
.replace
(
ba,ca
)
},ga.error=function
(
a
)
{throw new Error
(
"Syntax error, unrecognized expression: "+a
)
},ga.uniqueSort=function
(
a
)
{var b,d=
[]
,e=0,f=0;if
(
l=!c.detectDuplicates,k=!c.sortStable&&a.slice
(
0
)
,a.sort
(
B
)
,l
)
{while
(
b=a
[
f++
])
b===a
[
f
]
&&
(
e=d.push
(
f
))
;while
(
e--
)
a.splice
(
d
[
e
]
,1
)
}return k=null,a},e=ga.getText=function
(
a
)
{var b,c="",d=0,f=a.nodeType;if
(
f
)
{if
(
1===f||9===f||11===f
)
{if
(
"string"==typeof a.textContent
)
return a.textContent;for
(
a=a.firstChild;a;a=a.nextSibling
)
c+=e
(
a
)
}else if
(
3===f||4===f
)
return a.nodeValue}else while
(
b=a
[
d++
])
c+=e
(
b
)
;return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function
(
a
)
{return a
[
1
]
=a
[
1
]
.replace
(
_,aa
)
,a
[
3
]
=
(
a
[
3
]
||a
[
4
]
||a
[
5
]
||""
)
.replace
(
_,aa
)
,"~="===a
[
2
]
&&
(
a
[
3
]
=" "+a
[
3
]
+" "
)
,a.slice
(
0,4
)
},CHILD:function
(
a
)
{return a
[
1
]
=a
[
1
]
.toLowerCase
()
,"nth"===a
[
1
]
.slice
(
0,3
)?(
a
[
3
]
||ga.error
(
a
[
0
])
,a
[
4
]
=+
(
a
[
4
]?
a
[
5
]
+
(
a
[
6
]
||1
)
:2*
(
"even"===a
[
3
]
||"odd"===a
[
3
]))
,a
[
5
]
=+
(
a
[
7
]
+a
[
8
]
||"odd"===a
[
3
]))
:a
[
3
]
&&ga.error
(
a
[
0
])
,a},PSEUDO:function
(
a
)
{var b,c=!a
[
6
]
&&a
[
2
]
;return V.CHILD.test
(
a
[
0
])?
null:
(
a
[
3
]?
a
[
2
]
=a
[
4
]
||a
[
5
]
||"":c&&T.test
(
c
)
&&
(
b=g
(
c,!0
))
&&
(
b=c.indexOf
(
"
)
",c.length-b
)
-c.length
)
&&
(
a
[
0
]
=a
[
0
]
.slice
(
0,b
)
,a
[
2
]
=c.slice
(
0,b
))
,a.slice
(
0,3
))
}},filter:{TAG:function
(
a
)
{var b=a.replace
(
_,aa
)
.toLowerCase
()
;return"*"===a
?
function
()
{return!0}:function
(
a
)
{return a.nodeName&&a.nodeName.toLowerCase
()
===b}},CLASS:function
(
a
)
{var b=y
[
a+" "
]
;return b||
(
b=new RegExp
(
"
(
^|"+K+"
)
"+a+"
(
"+K+"|$
)
"
))
&&y
(
a,function
(
a
)
{return b.test
(
"string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute
(
"class"
)
||""
)
}
)
},ATTR:function
(
a,b,c
)
{return function
(
d
)
{var e=ga.attr
(
d,a
)
;return null==e
?
"!="===b:!b||
(
e+="","="===b
?
e===c:"!="===b
?
e!==c:"^="===b
?
c&&0===e.indexOf
(
c
)
:"*="===b
?
c&&e.indexOf
(
c
)
>-1:"$="===b
?
c&&e.slice
(
-c.length
)
===c:"~="===b
?(
" "+e.replace
(
O," "
)
+" "
)
.indexOf
(
c
)
>-1:"|="===b&&
(
e===c||e.slice
(
0,c.length+1
)
===c+"-"
))
}},CHILD:function
(
a,b,c,d,e
)
{var f="nth"!==a.slice
(
0,3
)
,g="last"!==a.slice
(
-4
)
,h="of-type"===b;return 1===d&&0===e
?
function
(
a
)
{return!!a.parentNode}:function
(
b,c,i
)
{var j,k,l,m,n,o,p=f!==g
?
"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase
()
,s=!i&&!h,t=!1;if
(
q
)
{if
(
f
)
{while
(
p
)
{m=b;while
(
m=m
[
p
])
if
(
h
?
m.nodeName.toLowerCase
()
===r:1===m.nodeType
)
return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if
(
o=
[
g?q.firstChild:q.lastChild
]
,g&&s
)
{m=q,l=m
[
u
]
||
(
m
[
u
]
={}
)
,k=l
[
m.uniqueID
]
||
(
l
[
m.uniqueID
]
={}
)
,j=k
[
a
]
||
[]
,n=j
[
0
]
===w&&j
[
1
]
,t=n&&j
[
2
]
,m=n&&q.childNodes
[
n
]
;while
(
m=++n&&m&&m
[
p
]
||
(
t=n=0
)
||o.pop
())
if
(
1===m.nodeType&&++t&&m===b
)
{k
[
a
]
=
[
w,n,t
]
;break}}else if
(
s&&
(
m=b,l=m
[
u
]
||
(
m
[
u
]
={}
)
,k=l
[
m.uniqueID
]
||
(
l
[
m.uniqueID
]
={}
)
,j=k
[
a
]
||
[]
,n=j
[
0
]
===w&&j
[
1
]
,t=n
)
,t===!1
)
while
(
m=++n&&m&&m
[
p
]
||
(
t=n=0
)
||o.pop
())
if
((
h
?
m.nodeName.toLowerCase
()
===r:1===m.nodeType
)
&&++t&&
(
s&&
(
l=m
[
u
]
||
(
m
[
u
]
={}
)
,k=l
[
m.uniqueID
]
||
(
l
[
m.uniqueID
]
={}
)
,k
[
a
]
=
[
w,t
])
,m===b
))
break;return t-=e,t===d||t%d===0&&t/
d
>=
0
}}},
PSEUDO
:
function
(
a
,
b
){
var
c
,
e
=
d
.
pseudos
[
a
]
||
d
.
setFilters
[
a
.
toLowerCase
()]
||
ga
.
error
(
"unsupported pseudo: "
+
a
);
return
e
[
u
]?
e
(
b
):
e
.
length
>
1
?(
c
=
[
a
,
a
,
""
,
b
],
d
.
setFilters
.
hasOwnProperty
(
a
.
toLowerCase
())?
ia
(
function
(
a
,
c
){
var
d
,
f
=
e
(
a
,
b
),
g
=
f
.
length
;
while
(
g
--
)
d
=
I
(
a
,
f
[
g
]),
a
[
d
]
=!
(
c
[
d
]
=
f
[
g
])}):
function
(
a
){
return
e
(
a
,
0
,
c
)}):
e
}},
pseudos
:{
not
:
ia
(
function
(
a
){
var
b
=
[],
c
=
[],
d
=
h
(
a
.
replace
(
P
,
"$1"
));
return
d
[
u
]?
ia
(
function
(
a
,
b
,
c
,
e
){
var
f
,
g
=
d
(
a
,
null
,
e
,[]),
h
=
a
.
length
;
while
(
h
--
)(
f
=
g
[
h
])
&&
(
a
[
h
]
=!
(
b
[
h
]
=
f
))}):
function
(
a
,
e
,
f
){
return
b
[
0
]
=
a
,
d
(
b
,
null
,
f
,
c
),
b
[
0
]
=
null
,
!
c
.
pop
()}}),
has
:
ia
(
function
(
a
){
return
function
(
b
){
return
ga
(
a
,
b
).
length
>
0
}}),
contains
:
ia
(
function
(
a
){
return
a
=
a
.
replace
(
_
,
aa
),
function
(
b
){
return
(
b
.
textContent
||
b
.
innerText
||
e
(
b
)).
indexOf
(
a
)
>-
1
}}),
lang
:
ia
(
function
(
a
){
return
U
.
test
(
a
||
""
)
||
ga
.
error
(
"unsupported lang: "
+
a
),
a
=
a
.
replace
(
_
,
aa
).
toLowerCase
(),
function
(
b
){
var
c
;
do
if
(
c
=
p
?
b
.
lang
:
b
.
getAttribute
(
"xml:lang"
)
||
b
.
getAttribute
(
"lang"
))
return
c
=
c
.
toLowerCase
(),
c
===
a
||
0
===
c
.
indexOf
(
a
+
"-"
);
while
((
b
=
b
.
parentNode
)
&&
1
===
b
.
nodeType
);
return
!
1
}}),
target
:
function
(
b
){
var
c
=
a
.
location
&&
a
.
location
.
hash
;
return
c
&&
c
.
slice
(
1
)
===
b
.
id
},
root
:
function
(
a
){
return
a
===
o
},
focus
:
function
(
a
){
return
a
===
n
.
activeElement
&&
(
!
n
.
hasFocus
||
n
.
hasFocus
())
&&!!
(
a
.
type
||
a
.
href
||~
a
.
tabIndex
)},
enabled
:
oa
(
!
1
),
disabled
:
oa
(
!
0
),
checked
:
function
(
a
){
var
b
=
a
.
nodeName
.
toLowerCase
();
return
"input"
===
b
&&!!
a
.
checked
||
"option"
===
b
&&!!
a
.
selected
},
selected
:
function
(
a
){
return
a
.
parentNode
&&
a
.
parentNode
.
selectedIndex
,
a
.
selected
===!
0
},
empty
:
function
(
a
){
for
(
a
=
a
.
firstChild
;
a
;
a
=
a
.
nextSibling
)
if
(
a
.
nodeType
<
6
)
return
!
1
;
return
!
0
},
parent
:
function
(
a
){
return
!
d
.
pseudos
.
empty
(
a
)},
header
:
function
(
a
){
return
X
.
test
(
a
.
nodeName
)},
input
:
function
(
a
){
return
W
.
test
(
a
.
nodeName
)},
button
:
function
(
a
){
var
b
=
a
.
nodeName
.
toLowerCase
();
return
"input"
===
b
&&
"button"
===
a
.
type
||
"button"
===
b
},
text
:
function
(
a
){
var
b
;
return
"input"
===
a
.
nodeName
.
toLowerCase
()
&&
"text"
===
a
.
type
&&
(
null
==
(
b
=
a
.
getAttribute
(
"type"
))
||
"text"
===
b
.
toLowerCase
())},
first
:
pa
(
function
(){
return
[
0
]}),
last
:
pa
(
function
(
a
,
b
){
return
[
b
-
1
]}),
eq
:
pa
(
function
(
a
,
b
,
c
){
return
[
c
<
0
?
c
+
b
:
c
]}),
even
:
pa
(
function
(
a
,
b
){
for
(
var
c
=
0
;
c
<
b
;
c
+=
2
)
a
.
push
(
c
);
return
a
}),
odd
:
pa
(
function
(
a
,
b
){
for
(
var
c
=
1
;
c
<
b
;
c
+=
2
)
a
.
push
(
c
);
return
a
}),
lt
:
pa
(
function
(
a
,
b
,
c
){
for
(
var
d
=
c
<
0
?
c
+
b
:
c
;
--
d
>=
0
;)
a
.
push
(
d
);
return
a
}),
gt
:
pa
(
function
(
a
,
b
,
c
){
for
(
var
d
=
c
<
0
?
c
+
b
:
c
;
++
d
<
b
;)
a
.
push
(
d
);
return
a
})}},
d
.
pseudos
.
nth
=
d
.
pseudos
.
eq
;
for
(
b
in
{
radio
:
!
0
,
checkbox
:
!
0
,
file
:
!
0
,
password
:
!
0
,
image
:
!
0
})
d
.
pseudos
[
b
]
=
ma
(
b
);
for
(
b
in
{
submit
:
!
0
,
reset
:
!
0
})
d
.
pseudos
[
b
]
=
na
(
b
);
function
ra
(){}
ra
.
prototype
=
d
.
filters
=
d
.
pseudos
,
d
.
setFilters
=
new
ra
,
g
=
ga
.
tokenize
=
function
(
a
,
b
){
var
c
,
e
,
f
,
g
,
h
,
i
,
j
,
k
=
z
[
a
+
" "
];
if
(
k
)
return
b
?
0
:
k
.
slice
(
0
);
h
=
a
,
i
=
[],
j
=
d
.
preFilter
;
while
(
h
){
c
&&!
(
e
=
Q
.
exec
(
h
))
||
(
e
&&
(
h
=
h
.
slice
(
e
[
0
].
length
)
||
h
),
i
.
push
(
f
=
[])),
c
=!
1
,(
e
=
R
.
exec
(
h
))
&&
(
c
=
e
.
shift
(),
f
.
push
({
value
:
c
,
type
:
e
[
0
].
replace
(
P
,
" "
)}),
h
=
h
.
slice
(
c
.
length
));
for
(
g
in
d
.
filter
)
!
(
e
=
V
[
g
].
exec
(
h
))
||
j
[
g
]
&&!
(
e
=
j
[
g
](
e
))
||
(
c
=
e
.
shift
(),
f
.
push
({
value
:
c
,
type
:
g
,
matches
:
e
}),
h
=
h
.
slice
(
c
.
length
));
if
(
!
c
)
break
}
return
b
?
h
.
length
:
h
?
ga
.
error
(
a
):
z
(
a
,
i
).
slice
(
0
)};
function
sa
(
a
){
for
(
var
b
=
0
,
c
=
a
.
length
,
d
=
""
;
b
<
c
;
b
++
)
d
+=
a
[
b
].
value
;
return
d
}
function
ta
(
a
,
b
,
c
){
var
d
=
b
.
dir
,
e
=
b
.
next
,
f
=
e
||
d
,
g
=
c
&&
"parentNode"
===
f
,
h
=
x
++
;
return
b
.
first
?
function
(
b
,
c
,
e
){
while
(
b
=
b
[
d
])
if
(
1
===
b
.
nodeType
||
g
)
return
a
(
b
,
c
,
e
);
return
!
1
}:
function
(
b
,
c
,
i
){
var
j
,
k
,
l
,
m
=
[
w
,
h
];
if
(
i
){
while
(
b
=
b
[
d
])
if
((
1
===
b
.
nodeType
||
g
)
&&
a
(
b
,
c
,
i
))
return
!
0
}
else
while
(
b
=
b
[
d
])
if
(
1
===
b
.
nodeType
||
g
)
if
(
l
=
b
[
u
]
||
(
b
[
u
]
=
{}),
k
=
l
[
b
.
uniqueID
]
||
(
l
[
b
.
uniqueID
]
=
{}),
e
&&
e
===
b
.
nodeName
.
toLowerCase
())
b
=
b
[
d
]
||
b
;
else
{
if
((
j
=
k
[
f
])
&&
j
[
0
]
===
w
&&
j
[
1
]
===
h
)
return
m
[
2
]
=
j
[
2
];
if
(
k
[
f
]
=
m
,
m
[
2
]
=
a
(
b
,
c
,
i
))
return
!
0
}
return
!
1
}}
function
ua
(
a
){
return
a
.
length
>
1
?
function
(
b
,
c
,
d
){
var
e
=
a
.
length
;
while
(
e
--
)
if
(
!
a
[
e
](
b
,
c
,
d
))
return
!
1
;
return
!
0
}:
a
[
0
]}
function
va
(
a
,
b
,
c
){
for
(
var
d
=
0
,
e
=
b
.
length
;
d
<
e
;
d
++
)
ga
(
a
,
b
[
d
],
c
);
return
c
}
function
wa
(
a
,
b
,
c
,
d
,
e
){
for
(
var
f
,
g
=
[],
h
=
0
,
i
=
a
.
length
,
j
=
null
!=
b
;
h
<
i
;
h
++
)(
f
=
a
[
h
])
&&
(
c
&&!
c
(
f
,
d
,
e
)
||
(
g
.
push
(
f
),
j
&&
b
.
push
(
h
)));
return
g
}
function
xa
(
a
,
b
,
c
,
d
,
e
,
f
){
return
d
&&!
d
[
u
]
&&
(
d
=
xa
(
d
)),
e
&&!
e
[
u
]
&&
(
e
=
xa
(
e
,
f
)),
ia
(
function
(
f
,
g
,
h
,
i
){
var
j
,
k
,
l
,
m
=
[],
n
=
[],
o
=
g
.
length
,
p
=
f
||
va
(
b
||
"*"
,
h
.
nodeType
?[
h
]:
h
,[]),
q
=!
a
||!
f
&&
b
?
p
:
wa
(
p
,
m
,
a
,
h
,
i
),
r
=
c
?
e
||
(
f
?
a
:
o
||
d
)?[]:
g
:
q
;
if
(
c
&&
c
(
q
,
r
,
h
,
i
),
d
){
j
=
wa
(
r
,
n
),
d
(
j
,[],
h
,
i
),
k
=
j
.
length
;
while
(
k
--
)(
l
=
j
[
k
])
&&
(
r
[
n
[
k
]]
=!
(
q
[
n
[
k
]]
=
l
))}
if
(
f
){
if
(
e
||
a
){
if
(
e
){
j
=
[],
k
=
r
.
length
;
while
(
k
--
)(
l
=
r
[
k
])
&&
j
.
push
(
q
[
k
]
=
l
);
e
(
null
,
r
=
[],
j
,
i
)}
k
=
r
.
length
;
while
(
k
--
)(
l
=
r
[
k
])
&&
(
j
=
e
?
I
(
f
,
l
):
m
[
k
])
>-
1
&&
(
f
[
j
]
=!
(
g
[
j
]
=
l
))}}
else
r
=
wa
(
r
===
g
?
r
.
splice
(
o
,
r
.
length
):
r
),
e
?
e
(
null
,
g
,
r
,
i
):
G
.
apply
(
g
,
r
)})}
function
ya
(
a
){
for
(
var
b
,
c
,
e
,
f
=
a
.
length
,
g
=
d
.
relative
[
a
[
0
].
type
],
h
=
g
||
d
.
relative
[
" "
],
i
=
g
?
1
:
0
,
k
=
ta
(
function
(
a
){
return
a
===
b
},
h
,
!
0
),
l
=
ta
(
function
(
a
){
return
I
(
b
,
a
)
>-
1
},
h
,
!
0
),
m
=
[
function
(
a
,
c
,
d
){
var
e
=!
g
&&
(
d
||
c
!==
j
)
||
((
b
=
c
).
nodeType
?
k
(
a
,
c
,
d
):
l
(
a
,
c
,
d
));
return
b
=
null
,
e
}];
i
<
f
;
i
++
)
if
(
c
=
d
.
relative
[
a
[
i
].
type
])
m
=
[
ta
(
ua
(
m
),
c
)];
else
{
if
(
c
=
d
.
filter
[
a
[
i
].
type
].
apply
(
null
,
a
[
i
].
matches
),
c
[
u
]){
for
(
e
=++
i
;
e
<
f
;
e
++
)
if
(
d
.
relative
[
a
[
e
].
type
])
break
;
return
xa
(
i
>
1
&&
ua
(
m
),
i
>
1
&&
sa
(
a
.
slice
(
0
,
i
-
1
).
concat
({
value
:
" "
===
a
[
i
-
2
].
type
?
"*"
:
""
})).
replace
(
P
,
"$1"
),
c
,
i
<
e
&&
ya
(
a
.
slice
(
i
,
e
)),
e
<
f
&&
ya
(
a
=
a
.
slice
(
e
)),
e
<
f
&&
sa
(
a
))}
m
.
push
(
c
)}
return
ua
(
m
)}
function
za
(
a
,
b
){
var
c
=
b
.
length
>
0
,
e
=
a
.
length
>
0
,
f
=
function
(
f
,
g
,
h
,
i
,
k
){
var
l
,
o
,
q
,
r
=
0
,
s
=
"0"
,
t
=
f
&&
[],
u
=
[],
v
=
j
,
x
=
f
||
e
&&
d
.
find
.
TAG
(
"*"
,
k
),
y
=
w
+=
null
==
v
?
1
:
Math
.
random
()
||
.
1
,
z
=
x
.
length
;
for
(
k
&&
(
j
=
g
===
n
||
g
||
k
);
s
!==
z
&&
null
!=
(
l
=
x
[
s
]);
s
++
){
if
(
e
&&
l
){
o
=
0
,
g
||
l
.
ownerDocument
===
n
||
(
m
(
l
),
h
=!
p
);
while
(
q
=
a
[
o
++
])
if
(
q
(
l
,
g
||
n
,
h
)){
i
.
push
(
l
);
break
}
k
&&
(
w
=
y
)}
c
&&
((
l
=!
q
&&
l
)
&&
r
--
,
f
&&
t
.
push
(
l
))}
if
(
r
+=
s
,
c
&&
s
!==
r
){
o
=
0
;
while
(
q
=
b
[
o
++
])
q
(
t
,
u
,
g
,
h
);
if
(
f
){
if
(
r
>
0
)
while
(
s
--
)
t
[
s
]
||
u
[
s
]
||
(
u
[
s
]
=
E
.
call
(
i
));
u
=
wa
(
u
)}
G
.
apply
(
i
,
u
),
k
&&!
f
&&
u
.
length
>
0
&&
r
+
b
.
length
>
1
&&
ga
.
uniqueSort
(
i
)}
return
k
&&
(
w
=
y
,
j
=
v
),
t
};
return
c
?
ia
(
f
):
f
}
return
h
=
ga
.
compile
=
function
(
a
,
b
){
var
c
,
d
=
[],
e
=
[],
f
=
A
[
a
+
" "
];
if
(
!
f
){
b
||
(
b
=
g
(
a
)),
c
=
b
.
length
;
while
(
c
--
)
f
=
ya
(
b
[
c
]),
f
[
u
]?
d
.
push
(
f
):
e
.
push
(
f
);
f
=
A
(
a
,
za
(
e
,
d
)),
f
.
selector
=
a
}
return
f
},
i
=
ga
.
select
=
function
(
a
,
b
,
c
,
e
){
var
f
,
i
,
j
,
k
,
l
,
m
=
"function"
==
typeof
a
&&
a
,
n
=!
e
&&
g
(
a
=
m
.
selector
||
a
);
if
(
c
=
c
||
[],
1
===
n
.
length
){
if
(
i
=
n
[
0
]
=
n
[
0
].
slice
(
0
),
i
.
length
>
2
&&
"ID"
===
(
j
=
i
[
0
]).
type
&&
9
===
b
.
nodeType
&&
p
&&
d
.
relative
[
i
[
1
].
type
]){
if
(
b
=
(
d
.
find
.
ID
(
j
.
matches
[
0
].
replace
(
_
,
aa
),
b
)
||
[])[
0
],
!
b
)
return
c
;
m
&&
(
b
=
b
.
parentNode
),
a
=
a
.
slice
(
i
.
shift
().
value
.
length
)}
f
=
V
.
needsContext
.
test
(
a
)?
0
:
i
.
length
;
while
(
f
--
){
if
(
j
=
i
[
f
],
d
.
relative
[
k
=
j
.
type
])
break
;
if
((
l
=
d
.
find
[
k
])
&&
(
e
=
l
(
j
.
matches
[
0
].
replace
(
_
,
aa
),
$
.
test
(
i
[
0
].
type
)
&&
qa
(
b
.
parentNode
)
||
b
))){
if
(
i
.
splice
(
f
,
1
),
a
=
e
.
length
&&
sa
(
i
),
!
a
)
return
G
.
apply
(
c
,
e
),
c
;
break
}}}
return
(
m
||
h
(
a
,
n
))(
e
,
b
,
!
p
,
c
,
!
b
||
$
.
test
(
a
)
&&
qa
(
b
.
parentNode
)
||
b
),
c
},
c
.
sortStable
=
u
.
split
(
""
).
sort
(
B
).
join
(
""
)
===
u
,
c
.
detectDuplicates
=!!
l
,
m
(),
c
.
sortDetached
=
ja
(
function
(
a
){
return
1
&
a
.
compareDocumentPosition
(
n
.
createElement
(
"fieldset"
))}),
ja
(
function
(
a
){
return
a
.
innerHTML
=
"<a href='#'></a>"
,
"#"
===
a
.
firstChild
.
getAttribute
(
"href"
)})
||
ka
(
"type|href|height|width"
,
function
(
a
,
b
,
c
){
if
(
!
c
)
return
a
.
getAttribute
(
b
,
"type"
===
b
.
toLowerCase
()?
1
:
2
)}),
c
.
attributes
&&
ja
(
function
(
a
){
return
a
.
innerHTML
=
"<input/>"
,
a
.
firstChild
.
setAttribute
(
"value"
,
""
),
""
===
a
.
firstChild
.
getAttribute
(
"value"
)})
||
ka
(
"value"
,
function
(
a
,
b
,
c
){
if
(
!
c
&&
"input"
===
a
.
nodeName
.
toLowerCase
())
return
a
.
defaultValue
}),
ja
(
function
(
a
){
return
null
==
a
.
getAttribute
(
"disabled"
)})
||
ka
(
J
,
function
(
a
,
b
,
c
){
var
d
;
if
(
!
c
)
return
a
[
b
]
===!
0
?
b
.
toLowerCase
():(
d
=
a
.
getAttributeNode
(
b
))
&&
d
.
specified
?
d
.
value
:
null
}),
ga
}(
a
);
r
.
find
=
x
,
r
.
expr
=
x
.
selectors
,
r
.
expr
[
":"
]
=
r
.
expr
.
pseudos
,
r
.
uniqueSort
=
r
.
unique
=
x
.
uniqueSort
,
r
.
text
=
x
.
getText
,
r
.
isXMLDoc
=
x
.
isXML
,
r
.
contains
=
x
.
contains
,
r
.
escapeSelector
=
x
.
escape
;
var
y
=
function
(
a
,
b
,
c
){
var
d
=
[],
e
=
void
0
!==
c
;
while
((
a
=
a
[
b
])
&&
9
!==
a
.
nodeType
)
if
(
1
===
a
.
nodeType
){
if
(
e
&&
r
(
a
).
is
(
c
))
break
;
d
.
push
(
a
)}
return
d
},
z
=
function
(
a
,
b
){
for
(
var
c
=
[];
a
;
a
=
a
.
nextSibling
)
1
===
a
.
nodeType
&&
a
!==
b
&&
c
.
push
(
a
);
return
c
},
A
=
r
.
expr
.
match
.
needsContext
,
B
=
/^<
([
a-z
][^\/\0
>:
\x
20
\t\r\n\f]
*
)[\x
20
\t\r\n\f]
*
\/?
>
(?:
<
\/\1
>|
)
$/i
,
C
=
/^.
[^
:#
\[\.
,
]
*$/
;
function
D
(
a
,
b
,
c
){
return
r
.
isFunction
(
b
)?
r
.
grep
(
a
,
function
(
a
,
d
){
return
!!
b
.
call
(
a
,
d
,
a
)
!==
c
}):
b
.
nodeType
?
r
.
grep
(
a
,
function
(
a
){
return
a
===
b
!==
c
}):
"string"
!=
typeof
b
?
r
.
grep
(
a
,
function
(
a
){
return
i
.
call
(
b
,
a
)
>-
1
!==
c
}):
C
.
test
(
b
)?
r
.
filter
(
b
,
a
,
c
):(
b
=
r
.
filter
(
b
,
a
),
r
.
grep
(
a
,
function
(
a
){
return
i
.
call
(
b
,
a
)
>-
1
!==
c
&&
1
===
a
.
nodeType
}))}
r
.
filter
=
function
(
a
,
b
,
c
){
var
d
=
b
[
0
];
return
c
&&
(
a
=
":not("
+
a
+
")"
),
1
===
b
.
length
&&
1
===
d
.
nodeType
?
r
.
find
.
matchesSelector
(
d
,
a
)?[
d
]:[]:
r
.
find
.
matches
(
a
,
r
.
grep
(
b
,
function
(
a
){
return
1
===
a
.
nodeType
}))},
r
.
fn
.
extend
({
find
:
function
(
a
){
var
b
,
c
,
d
=
this
.
length
,
e
=
this
;
if
(
"string"
!=
typeof
a
)
return
this
.
pushStack
(
r
(
a
).
filter
(
function
(){
for
(
b
=
0
;
b
<
d
;
b
++
)
if
(
r
.
contains
(
e
[
b
],
this
))
return
!
0
}));
for
(
c
=
this
.
pushStack
([]),
b
=
0
;
b
<
d
;
b
++
)
r
.
find
(
a
,
e
[
b
],
c
);
return
d
>
1
?
r
.
uniqueSort
(
c
):
c
},
filter
:
function
(
a
){
return
this
.
pushStack
(
D
(
this
,
a
||
[],
!
1
))},
not
:
function
(
a
){
return
this
.
pushStack
(
D
(
this
,
a
||
[],
!
0
))},
is
:
function
(
a
){
return
!!
D
(
this
,
"string"
==
typeof
a
&&
A
.
test
(
a
)?
r
(
a
):
a
||
[],
!
1
).
length
}});
var
E
,
F
=
/^
(?:\s
*
(
<
[\w\W]
+>
)[^
>
]
*|#
([\w
-
]
+
))
$/
,
G
=
r
.
fn
.
init
=
function
(
a
,
b
,
c
){
var
e
,
f
;
if
(
!
a
)
return
this
;
if
(
c
=
c
||
E
,
"string"
==
typeof
a
){
if
(
e
=
"<"
===
a
[
0
]
&&
">"
===
a
[
a
.
length
-
1
]
&&
a
.
length
>=
3
?[
null
,
a
,
null
]:
F
.
exec
(
a
),
!
e
||!
e
[
1
]
&&
b
)
return
!
b
||
b
.
jquery
?(
b
||
c
).
find
(
a
):
this
.
constructor
(
b
).
find
(
a
);
if
(
e
[
1
]){
if
(
b
=
b
instanceof
r
?
b
[
0
]:
b
,
r
.
merge
(
this
,
r
.
parseHTML
(
e
[
1
],
b
&&
b
.
nodeType
?
b
.
ownerDocument
||
b
:
d
,
!
0
)),
B
.
test
(
e
[
1
])
&&
r
.
isPlainObject
(
b
))
for
(
e
in
b
)
r
.
isFunction
(
this
[
e
])?
this
[
e
](
b
[
e
]):
this
.
attr
(
e
,
b
[
e
]);
return
this
}
return
f
=
d
.
getElementById
(
e
[
2
]),
f
&&
(
this
[
0
]
=
f
,
this
.
length
=
1
),
this
}
return
a
.
nodeType
?(
this
[
0
]
=
a
,
this
.
length
=
1
,
this
):
r
.
isFunction
(
a
)?
void
0
!==
c
.
ready
?
c
.
ready
(
a
):
a
(
r
):
r
.
makeArray
(
a
,
this
)};
G
.
prototype
=
r
.
fn
,
E
=
r
(
d
);
var
H
=
/^
(?:
parents|prev
(?:
Until|All
))
/
,
I
=
{
children
:
!
0
,
contents
:
!
0
,
next
:
!
0
,
prev
:
!
0
};
r
.
fn
.
extend
({
has
:
function
(
a
){
var
b
=
r
(
a
,
this
),
c
=
b
.
length
;
return
this
.
filter
(
function
(){
for
(
var
a
=
0
;
a
<
c
;
a
++
)
if
(
r
.
contains
(
this
,
b
[
a
]))
return
!
0
})},
closest
:
function
(
a
,
b
){
var
c
,
d
=
0
,
e
=
this
.
length
,
f
=
[],
g
=
"string"
!=
typeof
a
&&
r
(
a
);
if
(
!
A
.
test
(
a
))
for
(;
d
<
e
;
d
++
)
for
(
c
=
this
[
d
];
c
&&
c
!==
b
;
c
=
c
.
parentNode
)
if
(
c
.
nodeType
<
11
&&
(
g
?
g
.
index
(
c
)
>-
1
:
1
===
c
.
nodeType
&&
r
.
find
.
matchesSelector
(
c
,
a
))){
f
.
push
(
c
);
break
}
return
this
.
pushStack
(
f
.
length
>
1
?
r
.
uniqueSort
(
f
):
f
)},
index
:
function
(
a
){
return
a
?
"string"
==
typeof
a
?
i
.
call
(
r
(
a
),
this
[
0
]):
i
.
call
(
this
,
a
.
jquery
?
a
[
0
]:
a
):
this
[
0
]
&&
this
[
0
].
parentNode
?
this
.
first
().
prevAll
().
length
:
-
1
},
add
:
function
(
a
,
b
){
return
this
.
pushStack
(
r
.
uniqueSort
(
r
.
merge
(
this
.
get
(),
r
(
a
,
b
))))},
addBack
:
function
(
a
){
return
this
.
add
(
null
==
a
?
this
.
prevObject
:
this
.
prevObject
.
filter
(
a
))}});
function
J
(
a
,
b
){
while
((
a
=
a
[
b
])
&&
1
!==
a
.
nodeType
);
return
a
}
r
.
each
({
parent
:
function
(
a
){
var
b
=
a
.
parentNode
;
return
b
&&
11
!==
b
.
nodeType
?
b
:
null
},
parents
:
function
(
a
){
return
y
(
a
,
"parentNode"
)},
parentsUntil
:
function
(
a
,
b
,
c
){
return
y
(
a
,
"parentNode"
,
c
)},
next
:
function
(
a
){
return
J
(
a
,
"nextSibling"
)},
prev
:
function
(
a
){
return
J
(
a
,
"previousSibling"
)},
nextAll
:
function
(
a
){
return
y
(
a
,
"nextSibling"
)},
prevAll
:
function
(
a
){
return
y
(
a
,
"previousSibling"
)},
nextUntil
:
function
(
a
,
b
,
c
){
return
y
(
a
,
"nextSibling"
,
c
)},
prevUntil
:
function
(
a
,
b
,
c
){
return
y
(
a
,
"previousSibling"
,
c
)},
siblings
:
function
(
a
){
return
z
((
a
.
parentNode
||
{}).
firstChild
,
a
)},
children
:
function
(
a
){
return
z
(
a
.
firstChild
)},
contents
:
function
(
a
){
return
a
.
contentDocument
||
r
.
merge
([],
a
.
childNodes
)}},
function
(
a
,
b
){
r
.
fn
[
a
]
=
function
(
c
,
d
){
var
e
=
r
.
map
(
this
,
b
,
c
);
return
"Until"
!==
a
.
slice
(
-
5
)
&&
(
d
=
c
),
d
&&
"string"
==
typeof
d
&&
(
e
=
r
.
filter
(
d
,
e
)),
this
.
length
>
1
&&
(
I
[
a
]
||
r
.
uniqueSort
(
e
),
H
.
test
(
a
)
&&
e
.
reverse
()),
this
.
pushStack
(
e
)}});
var
K
=
/
[^\x
20
\t\r\n\f]
+/g
;
function
L
(
a
){
var
b
=
{};
return
r
.
each
(
a
.
match
(
K
)
||
[],
function
(
a
,
c
){
b
[
c
]
=!
0
}),
b
}
r
.
Callbacks
=
function
(
a
){
a
=
"string"
==
typeof
a
?
L
(
a
):
r
.
extend
({},
a
);
var
b
,
c
,
d
,
e
,
f
=
[],
g
=
[],
h
=-
1
,
i
=
function
(){
for
(
e
=
a
.
once
,
d
=
b
=!
0
;
g
.
length
;
h
=-
1
){
c
=
g
.
shift
();
while
(
++
h
<
f
.
length
)
f
[
h
].
apply
(
c
[
0
],
c
[
1
])
===!
1
&&
a
.
stopOnFalse
&&
(
h
=
f
.
length
,
c
=!
1
)}
a
.
memory
||
(
c
=!
1
),
b
=!
1
,
e
&&
(
f
=
c
?[]:
""
)},
j
=
{
add
:
function
(){
return
f
&&
(
c
&&!
b
&&
(
h
=
f
.
length
-
1
,
g
.
push
(
c
)),
function
d
(
b
){
r
.
each
(
b
,
function
(
b
,
c
){
r
.
isFunction
(
c
)?
a
.
unique
&&
j
.
has
(
c
)
||
f
.
push
(
c
):
c
&&
c
.
length
&&
"string"
!==
r
.
type
(
c
)
&&
d
(
c
)})}(
arguments
),
c
&&!
b
&&
i
()),
this
},
remove
:
function
(){
return
r
.
each
(
arguments
,
function
(
a
,
b
){
var
c
;
while
((
c
=
r
.
inArray
(
b
,
f
,
c
))
>-
1
)
f
.
splice
(
c
,
1
),
c
<=
h
&&
h
--
}),
this
},
has
:
function
(
a
){
return
a
?
r
.
inArray
(
a
,
f
)
>-
1
:
f
.
length
>
0
},
empty
:
function
(){
return
f
&&
(
f
=
[]),
this
},
disable
:
function
(){
return
e
=
g
=
[],
f
=
c
=
""
,
this
},
disabled
:
function
(){
return
!
f
},
lock
:
function
(){
return
e
=
g
=
[],
c
||
b
||
(
f
=
c
=
""
),
this
},
locked
:
function
(){
return
!!
e
},
fireWith
:
function
(
a
,
c
){
return
e
||
(
c
=
c
||
[],
c
=
[
a
,
c
.
slice
?
c
.
slice
():
c
],
g
.
push
(
c
),
b
||
i
()),
this
},
fire
:
function
(){
return
j
.
fireWith
(
this
,
arguments
),
this
},
fired
:
function
(){
return
!!
d
}};
return
j
};
function
M
(
a
){
return
a
}
function
N
(
a
){
throw
a
}
function
O
(
a
,
b
,
c
){
var
d
;
try
{
a
&&
r
.
isFunction
(
d
=
a
.
promise
)?
d
.
call
(
a
).
done
(
b
).
fail
(
c
):
a
&&
r
.
isFunction
(
d
=
a
.
then
)?
d
.
call
(
a
,
b
,
c
):
b
.
call
(
void
0
,
a
)}
catch
(
a
){
c
.
call
(
void
0
,
a
)}}
r
.
extend
({
Deferred
:
function
(
b
){
var
c
=
[[
"notify"
,
"progress"
,
r
.
Callbacks
(
"memory"
),
r
.
Callbacks
(
"memory"
),
2
],[
"resolve"
,
"done"
,
r
.
Callbacks
(
"once memory"
),
r
.
Callbacks
(
"once memory"
),
0
,
"resolved"
],[
"reject"
,
"fail"
,
r
.
Callbacks
(
"once memory"
),
r
.
Callbacks
(
"once memory"
),
1
,
"rejected"
]],
d
=
"pending"
,
e
=
{
state
:
function
(){
return
d
},
always
:
function
(){
return
f
.
done
(
arguments
).
fail
(
arguments
),
this
},
"catch"
:
function
(
a
){
return
e
.
then
(
null
,
a
)},
pipe
:
function
(){
var
a
=
arguments
;
return
r
.
Deferred
(
function
(
b
){
r
.
each
(
c
,
function
(
c
,
d
){
var
e
=
r
.
isFunction
(
a
[
d
[
4
]])
&&
a
[
d
[
4
]];
f
[
d
[
1
]](
function
(){
var
a
=
e
&&
e
.
apply
(
this
,
arguments
);
a
&&
r
.
isFunction
(
a
.
promise
)?
a
.
promise
().
progress
(
b
.
notify
).
done
(
b
.
resolve
).
fail
(
b
.
reject
):
b
[
d
[
0
]
+
"With"
](
this
,
e
?[
a
]:
arguments
)})}),
a
=
null
}).
promise
()},
then
:
function
(
b
,
d
,
e
){
var
f
=
0
;
function
g
(
b
,
c
,
d
,
e
){
return
function
(){
var
h
=
this
,
i
=
arguments
,
j
=
function
(){
var
a
,
j
;
if
(
!
(
b
<
f
)){
if
(
a
=
d
.
apply
(
h
,
i
),
a
===
c
.
promise
())
throw
new
TypeError
(
"Thenable self-resolution"
);
j
=
a
&&
(
"object"
==
typeof
a
||
"function"
==
typeof
a
)
&&
a
.
then
,
r
.
isFunction
(
j
)?
e
?
j
.
call
(
a
,
g
(
f
,
c
,
M
,
e
),
g
(
f
,
c
,
N
,
e
)):(
f
++
,
j
.
call
(
a
,
g
(
f
,
c
,
M
,
e
),
g
(
f
,
c
,
N
,
e
),
g
(
f
,
c
,
M
,
c
.
notifyWith
))):(
d
!==
M
&&
(
h
=
void
0
,
i
=
[
a
]),(
e
||
c
.
resolveWith
)(
h
,
i
))}},
k
=
e
?
j
:
function
(){
try
{
j
()}
catch
(
a
){
r
.
Deferred
.
exceptionHook
&&
r
.
Deferred
.
exceptionHook
(
a
,
k
.
stackTrace
),
b
+
1
>=
f
&&
(
d
!==
N
&&
(
h
=
void
0
,
i
=
[
a
]),
c
.
rejectWith
(
h
,
i
))}};
b
?
k
():(
r
.
Deferred
.
getStackHook
&&
(
k
.
stackTrace
=
r
.
Deferred
.
getStackHook
()),
a
.
setTimeout
(
k
))}}
return
r
.
Deferred
(
function
(
a
){
c
[
0
][
3
].
add
(
g
(
0
,
a
,
r
.
isFunction
(
e
)?
e
:
M
,
a
.
notifyWith
)),
c
[
1
][
3
].
add
(
g
(
0
,
a
,
r
.
isFunction
(
b
)?
b
:
M
)),
c
[
2
][
3
].
add
(
g
(
0
,
a
,
r
.
isFunction
(
d
)?
d
:
N
))}).
promise
()},
promise
:
function
(
a
){
return
null
!=
a
?
r
.
extend
(
a
,
e
):
e
}},
f
=
{};
return
r
.
each
(
c
,
function
(
a
,
b
){
var
g
=
b
[
2
],
h
=
b
[
5
];
e
[
b
[
1
]]
=
g
.
add
,
h
&&
g
.
add
(
function
(){
d
=
h
},
c
[
3
-
a
][
2
].
disable
,
c
[
0
][
2
].
lock
),
g
.
add
(
b
[
3
].
fire
),
f
[
b
[
0
]]
=
function
(){
return
f
[
b
[
0
]
+
"With"
](
this
===
f
?
void
0
:
this
,
arguments
),
this
},
f
[
b
[
0
]
+
"With"
]
=
g
.
fireWith
}),
e
.
promise
(
f
),
b
&&
b
.
call
(
f
,
f
),
f
},
when
:
function
(
a
){
var
b
=
arguments
.
length
,
c
=
b
,
d
=
Array
(
c
),
e
=
f
.
call
(
arguments
),
g
=
r
.
Deferred
(),
h
=
function
(
a
){
return
function
(
c
){
d
[
a
]
=
this
,
e
[
a
]
=
arguments
.
length
>
1
?
f
.
call
(
arguments
):
c
,
--
b
||
g
.
resolveWith
(
d
,
e
)}};
if
(
b
<=
1
&&
(
O
(
a
,
g
.
done
(
h
(
c
)).
resolve
,
g
.
reject
),
"pending"
===
g
.
state
()
||
r
.
isFunction
(
e
[
c
]
&&
e
[
c
].
then
)))
return
g
.
then
();
while
(
c
--
)
O
(
e
[
c
],
h
(
c
),
g
.
reject
);
return
g
.
promise
()}});
var
P
=
/^
(
Eval|Internal|Range|Reference|Syntax|Type|URI
)
Error$/
;
r
.
Deferred
.
exceptionHook
=
function
(
b
,
c
){
a
.
console
&&
a
.
console
.
warn
&&
b
&&
P
.
test
(
b
.
name
)
&&
a
.
console
.
warn
(
"jQuery.Deferred exception: "
+
b
.
message
,
b
.
stack
,
c
)},
r
.
readyException
=
function
(
b
){
a
.
setTimeout
(
function
(){
throw
b
})};
var
Q
=
r
.
Deferred
();
r
.
fn
.
ready
=
function
(
a
){
return
Q
.
then
(
a
)[
"catch"
](
function
(
a
){
r
.
readyException
(
a
)}),
this
},
r
.
extend
({
isReady
:
!
1
,
readyWait
:
1
,
holdReady
:
function
(
a
){
a
?
r
.
readyWait
++
:
r
.
ready
(
!
0
)},
ready
:
function
(
a
){(
a
===!
0
?
--
r
.
readyWait
:
r
.
isReady
)
||
(
r
.
isReady
=!
0
,
a
!==!
0
&&--
r
.
readyWait
>
0
||
Q
.
resolveWith
(
d
,[
r
]))}}),
r
.
ready
.
then
=
Q
.
then
;
function
R
(){
d
.
removeEventListener
(
"DOMContentLoaded"
,
R
),
a
.
removeEventListener
(
"load"
,
R
),
r
.
ready
()}
"complete"
===
d
.
readyState
||
"loading"
!==
d
.
readyState
&&!
d
.
documentElement
.
doScroll
?
a
.
setTimeout
(
r
.
ready
):(
d
.
addEventListener
(
"DOMContentLoaded"
,
R
),
a
.
addEventListener
(
"load"
,
R
));
var
S
=
function
(
a
,
b
,
c
,
d
,
e
,
f
,
g
){
var
h
=
0
,
i
=
a
.
length
,
j
=
null
==
c
;
if
(
"object"
===
r
.
type
(
c
)){
e
=!
0
;
for
(
h
in
c
)
S
(
a
,
b
,
h
,
c
[
h
],
!
0
,
f
,
g
)}
else
if
(
void
0
!==
d
&&
(
e
=!
0
,
r
.
isFunction
(
d
)
||
(
g
=!
0
),
j
&&
(
g
?(
b
.
call
(
a
,
d
),
b
=
null
):(
j
=
b
,
b
=
function
(
a
,
b
,
c
){
return
j
.
call
(
r
(
a
),
c
)})),
b
))
for
(;
h
<
i
;
h
++
)
b
(
a
[
h
],
c
,
g
?
d
:
d
.
call
(
a
[
h
],
h
,
b
(
a
[
h
],
c
)));
return
e
?
a
:
j
?
b
.
call
(
a
):
i
?
b
(
a
[
0
],
c
):
f
},
T
=
function
(
a
){
return
1
===
a
.
nodeType
||
9
===
a
.
nodeType
||!+
a
.
nodeType
};
function
U
(){
this
.
expando
=
r
.
expando
+
U
.
uid
++
}
U
.
uid
=
1
,
U
.
prototype
=
{
cache
:
function
(
a
){
var
b
=
a
[
this
.
expando
];
return
b
||
(
b
=
{},
T
(
a
)
&&
(
a
.
nodeType
?
a
[
this
.
expando
]
=
b
:
Object
.
defineProperty
(
a
,
this
.
expando
,{
value
:
b
,
configurable
:
!
0
}))),
b
},
set
:
function
(
a
,
b
,
c
){
var
d
,
e
=
this
.
cache
(
a
);
if
(
"string"
==
typeof
b
)
e
[
r
.
camelCase
(
b
)]
=
c
;
else
for
(
d
in
b
)
e
[
r
.
camelCase
(
d
)]
=
b
[
d
];
return
e
},
get
:
function
(
a
,
b
){
return
void
0
===
b
?
this
.
cache
(
a
):
a
[
this
.
expando
]
&&
a
[
this
.
expando
][
r
.
camelCase
(
b
)]},
access
:
function
(
a
,
b
,
c
){
return
void
0
===
b
||
b
&&
"string"
==
typeof
b
&&
void
0
===
c
?
this
.
get
(
a
,
b
):(
this
.
set
(
a
,
b
,
c
),
void
0
!==
c
?
c
:
b
)},
remove
:
function
(
a
,
b
){
var
c
,
d
=
a
[
this
.
expando
];
if
(
void
0
!==
d
){
if
(
void
0
!==
b
){
r
.
isArray
(
b
)?
b
=
b
.
map
(
r
.
camelCase
):(
b
=
r
.
camelCase
(
b
),
b
=
b
in
d
?[
b
]:
b
.
match
(
K
)
||
[]),
c
=
b
.
length
;
while
(
c
--
)
delete
d
[
b
[
c
]]}(
void
0
===
b
||
r
.
isEmptyObject
(
d
))
&&
(
a
.
nodeType
?
a
[
this
.
expando
]
=
void
0
:
delete
a
[
this
.
expando
])}},
hasData
:
function
(
a
){
var
b
=
a
[
this
.
expando
];
return
void
0
!==
b
&&!
r
.
isEmptyObject
(
b
)}};
var
V
=
new
U
,
W
=
new
U
,
X
=
/^
(?:\{[\w\W]
*
\}
|
\[[\w\W]
*
\])
$/
,
Y
=
/
[
A-Z
]
/g
;
function
Z
(
a
){
return
"true"
===
a
||
"false"
!==
a
&&
(
"null"
===
a
?
null
:
a
===+
a
+
""
?
+
a
:
X
.
test
(
a
)?
JSON
.
parse
(
a
):
a
)}
function
$
(
a
,
b
,
c
){
var
d
;
if
(
void
0
===
c
&&
1
===
a
.
nodeType
)
if
(
d
=
"data-"
+
b
.
replace
(
Y
,
"-$&"
).
toLowerCase
(),
c
=
a
.
getAttribute
(
d
),
"string"
==
typeof
c
){
try
{
c
=
Z
(
c
)}
catch
(
e
){}
W
.
set
(
a
,
b
,
c
)}
else
c
=
void
0
;
return
c
}
r
.
extend
({
hasData
:
function
(
a
){
return
W
.
hasData
(
a
)
||
V
.
hasData
(
a
)},
data
:
function
(
a
,
b
,
c
){
return
W
.
access
(
a
,
b
,
c
)},
removeData
:
function
(
a
,
b
){
W
.
remove
(
a
,
b
)},
_data
:
function
(
a
,
b
,
c
){
return
V
.
access
(
a
,
b
,
c
)},
_removeData
:
function
(
a
,
b
){
V
.
remove
(
a
,
b
)}}),
r
.
fn
.
extend
({
data
:
function
(
a
,
b
){
var
c
,
d
,
e
,
f
=
this
[
0
],
g
=
f
&&
f
.
attributes
;
if
(
void
0
===
a
){
if
(
this
.
length
&&
(
e
=
W
.
get
(
f
),
1
===
f
.
nodeType
&&!
V
.
get
(
f
,
"hasDataAttrs"
))){
c
=
g
.
length
;
while
(
c
--
)
g
[
c
]
&&
(
d
=
g
[
c
].
name
,
0
===
d
.
indexOf
(
"data-"
)
&&
(
d
=
r
.
camelCase
(
d
.
slice
(
5
)),
$
(
f
,
d
,
e
[
d
])));
V
.
set
(
f
,
"hasDataAttrs"
,
!
0
)}
return
e
}
return
"object"
==
typeof
a
?
this
.
each
(
function
(){
W
.
set
(
this
,
a
)}):
S
(
this
,
function
(
b
){
var
c
;
if
(
f
&&
void
0
===
b
){
if
(
c
=
W
.
get
(
f
,
a
),
void
0
!==
c
)
return
c
;
if
(
c
=
$
(
f
,
a
),
void
0
!==
c
)
return
c
}
else
this
.
each
(
function
(){
W
.
set
(
this
,
a
,
b
)})},
null
,
b
,
arguments
.
length
>
1
,
null
,
!
0
)},
removeData
:
function
(
a
){
return
this
.
each
(
function
(){
W
.
remove
(
this
,
a
)})}}),
r
.
extend
({
queue
:
function
(
a
,
b
,
c
){
var
d
;
if
(
a
)
return
b
=
(
b
||
"fx"
)
+
"queue"
,
d
=
V
.
get
(
a
,
b
),
c
&&
(
!
d
||
r
.
isArray
(
c
)?
d
=
V
.
access
(
a
,
b
,
r
.
makeArray
(
c
)):
d
.
push
(
c
)),
d
||
[]},
dequeue
:
function
(
a
,
b
){
b
=
b
||
"fx"
;
var
c
=
r
.
queue
(
a
,
b
),
d
=
c
.
length
,
e
=
c
.
shift
(),
f
=
r
.
_queueHooks
(
a
,
b
),
g
=
function
(){
r
.
dequeue
(
a
,
b
)};
"inprogress"
===
e
&&
(
e
=
c
.
shift
(),
d
--
),
e
&&
(
"fx"
===
b
&&
c
.
unshift
(
"inprogress"
),
delete
f
.
stop
,
e
.
call
(
a
,
g
,
f
)),
!
d
&&
f
&&
f
.
empty
.
fire
()},
_queueHooks
:
function
(
a
,
b
){
var
c
=
b
+
"queueHooks"
;
return
V
.
get
(
a
,
c
)
||
V
.
access
(
a
,
c
,{
empty
:
r
.
Callbacks
(
"once memory"
).
add
(
function
(){
V
.
remove
(
a
,[
b
+
"queue"
,
c
])})})}}),
r
.
fn
.
extend
({
queue
:
function
(
a
,
b
){
var
c
=
2
;
return
"string"
!=
typeof
a
&&
(
b
=
a
,
a
=
"fx"
,
c
--
),
arguments
.
length
<
c
?
r
.
queue
(
this
[
0
],
a
):
void
0
===
b
?
this
:
this
.
each
(
function
(){
var
c
=
r
.
queue
(
this
,
a
,
b
);
r
.
_queueHooks
(
this
,
a
),
"fx"
===
a
&&
"inprogress"
!==
c
[
0
]
&&
r
.
dequeue
(
this
,
a
)})},
dequeue
:
function
(
a
){
return
this
.
each
(
function
(){
r
.
dequeue
(
this
,
a
)})},
clearQueue
:
function
(
a
){
return
this
.
queue
(
a
||
"fx"
,[])},
promise
:
function
(
a
,
b
){
var
c
,
d
=
1
,
e
=
r
.
Deferred
(),
f
=
this
,
g
=
this
.
length
,
h
=
function
(){
--
d
||
e
.
resolveWith
(
f
,[
f
])};
"string"
!=
typeof
a
&&
(
b
=
a
,
a
=
void
0
),
a
=
a
||
"fx"
;
while
(
g
--
)
c
=
V
.
get
(
f
[
g
],
a
+
"queueHooks"
),
c
&&
c
.
empty
&&
(
d
++
,
c
.
empty
.
add
(
h
));
return
h
(),
e
.
promise
(
b
)}});
var
_
=
/
[
+-
]?(?:\d
*
\.
|
)\d
+
(?:[
eE
][
+-
]?\d
+|
)
/
.
source
,
aa
=
new
RegExp
(
"^(?:([+-])=|)("
+
_
+
")([a-z%]*)$"
,
"i"
),
ba
=
[
"Top"
,
"Right"
,
"Bottom"
,
"Left"
],
ca
=
function
(
a
,
b
){
return
a
=
b
||
a
,
"none"
===
a
.
style
.
display
||
""
===
a
.
style
.
display
&&
r
.
contains
(
a
.
ownerDocument
,
a
)
&&
"none"
===
r
.
css
(
a
,
"display"
)},
da
=
function
(
a
,
b
,
c
,
d
){
var
e
,
f
,
g
=
{};
for
(
f
in
b
)
g
[
f
]
=
a
.
style
[
f
],
a
.
style
[
f
]
=
b
[
f
];
e
=
c
.
apply
(
a
,
d
||
[]);
for
(
f
in
b
)
a
.
style
[
f
]
=
g
[
f
];
return
e
};
function
ea
(
a
,
b
,
c
,
d
){
var
e
,
f
=
1
,
g
=
20
,
h
=
d
?
function
(){
return
d
.
cur
()}:
function
(){
return
r
.
css
(
a
,
b
,
""
)},
i
=
h
(),
j
=
c
&&
c
[
3
]
||
(
r
.
cssNumber
[
b
]?
""
:
"px"
),
k
=
(
r
.
cssNumber
[
b
]
||
"px"
!==
j
&&+
i
)
&&
aa
.
exec
(
r
.
css
(
a
,
b
));
if
(
k
&&
k
[
3
]
!==
j
){
j
=
j
||
k
[
3
],
c
=
c
||
[],
k
=+
i
||
1
;
do
f
=
f
||
".5"
,
k
/=
f
,
r
.
style
(
a
,
b
,
k
+
j
);
while
(
f
!==
(
f
=
h
()
/
i
)
&&
1
!==
f
&&--
g
)}
return
c
&&
(
k
=+
k
||+
i
||
0
,
e
=
c
[
1
]?
k
+
(
c
[
1
]
+
1
)
*
c
[
2
]:
+
c
[
2
],
d
&&
(
d
.
unit
=
j
,
d
.
start
=
k
,
d
.
end
=
e
)),
e
}
var
fa
=
{};
function
ga
(
a
){
var
b
,
c
=
a
.
ownerDocument
,
d
=
a
.
nodeName
,
e
=
fa
[
d
];
return
e
?
e
:(
b
=
c
.
body
.
appendChild
(
c
.
createElement
(
d
)),
e
=
r
.
css
(
b
,
"display"
),
b
.
parentNode
.
removeChild
(
b
),
"none"
===
e
&&
(
e
=
"block"
),
fa
[
d
]
=
e
,
e
)}
function
ha
(
a
,
b
){
for
(
var
c
,
d
,
e
=
[],
f
=
0
,
g
=
a
.
length
;
f
<
g
;
f
++
)
d
=
a
[
f
],
d
.
style
&&
(
c
=
d
.
style
.
display
,
b
?(
"none"
===
c
&&
(
e
[
f
]
=
V
.
get
(
d
,
"display"
)
||
null
,
e
[
f
]
||
(
d
.
style
.
display
=
""
)),
""
===
d
.
style
.
display
&&
ca
(
d
)
&&
(
e
[
f
]
=
ga
(
d
))):
"none"
!==
c
&&
(
e
[
f
]
=
"none"
,
V
.
set
(
d
,
"display"
,
c
)));
for
(
f
=
0
;
f
<
g
;
f
++
)
null
!=
e
[
f
]
&&
(
a
[
f
].
style
.
display
=
e
[
f
]);
return
a
}
r
.
fn
.
extend
({
show
:
function
(){
return
ha
(
this
,
!
0
)},
hide
:
function
(){
return
ha
(
this
)},
toggle
:
function
(
a
){
return
"boolean"
==
typeof
a
?
a
?
this
.
show
():
this
.
hide
():
this
.
each
(
function
(){
ca
(
this
)?
r
(
this
).
show
():
r
(
this
).
hide
()})}});
var
ia
=
/^
(?:
checkbox|radio
)
$/i
,
ja
=
/<
([
a-z
][^\/\0
>
\x
20
\t\r\n\f]
+
)
/i
,
ka
=
/^$|
\/(?:
java|ecma
)
script/i
,
la
=
{
option
:[
1
,
"<select multiple='multiple'>"
,
"</select>"
],
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
,
""
,
""
]};
la
.
optgroup
=
la
.
option
,
la
.
tbody
=
la
.
tfoot
=
la
.
colgroup
=
la
.
caption
=
la
.
thead
,
la
.
th
=
la
.
td
;
function
ma
(
a
,
b
){
var
c
;
return
c
=
"undefined"
!=
typeof
a
.
getElementsByTagName
?
a
.
getElementsByTagName
(
b
||
"*"
):
"undefined"
!=
typeof
a
.
querySelectorAll
?
a
.
querySelectorAll
(
b
||
"*"
):[],
void
0
===
b
||
b
&&
r
.
nodeName
(
a
,
b
)?
r
.
merge
([
a
],
c
):
c
}
function
na
(
a
,
b
){
for
(
var
c
=
0
,
d
=
a
.
length
;
c
<
d
;
c
++
)
V
.
set
(
a
[
c
],
"globalEval"
,
!
b
||
V
.
get
(
b
[
c
],
"globalEval"
))}
var
oa
=
/<|&#
?\w
+;/
;
function
pa
(
a
,
b
,
c
,
d
,
e
){
for
(
var
f
,
g
,
h
,
i
,
j
,
k
,
l
=
b
.
createDocumentFragment
(),
m
=
[],
n
=
0
,
o
=
a
.
length
;
n
<
o
;
n
++
)
if
(
f
=
a
[
n
],
f
||
0
===
f
)
if
(
"object"
===
r
.
type
(
f
))
r
.
merge
(
m
,
f
.
nodeType
?[
f
]:
f
);
else
if
(
oa
.
test
(
f
)){
g
=
g
||
l
.
appendChild
(
b
.
createElement
(
"div"
)),
h
=
(
ja
.
exec
(
f
)
||
[
""
,
""
])[
1
].
toLowerCase
(),
i
=
la
[
h
]
||
la
.
_default
,
g
.
innerHTML
=
i
[
1
]
+
r
.
htmlPrefilter
(
f
)
+
i
[
2
],
k
=
i
[
0
];
while
(
k
--
)
g
=
g
.
lastChild
;
r
.
merge
(
m
,
g
.
childNodes
),
g
=
l
.
firstChild
,
g
.
textContent
=
""
}
else
m
.
push
(
b
.
createTextNode
(
f
));
l
.
textContent
=
""
,
n
=
0
;
while
(
f
=
m
[
n
++
])
if
(
d
&&
r
.
inArray
(
f
,
d
)
>-
1
)
e
&&
e
.
push
(
f
);
else
if
(
j
=
r
.
contains
(
f
.
ownerDocument
,
f
),
g
=
ma
(
l
.
appendChild
(
f
),
"script"
),
j
&&
na
(
g
),
c
){
k
=
0
;
while
(
f
=
g
[
k
++
])
ka
.
test
(
f
.
type
||
""
)
&&
c
.
push
(
f
)}
return
l
}
!
function
(){
var
a
=
d
.
createDocumentFragment
(),
b
=
a
.
appendChild
(
d
.
createElement
(
"div"
)),
c
=
d
.
createElement
(
"input"
);
c
.
setAttribute
(
"type"
,
"radio"
),
c
.
setAttribute
(
"checked"
,
"checked"
),
c
.
setAttribute
(
"name"
,
"t"
),
b
.
appendChild
(
c
),
o
.
checkClone
=
b
.
cloneNode
(
!
0
).
cloneNode
(
!
0
).
lastChild
.
checked
,
b
.
innerHTML
=
"<textarea>x</textarea>"
,
o
.
noCloneChecked
=!!
b
.
cloneNode
(
!
0
).
lastChild
.
defaultValue
}();
var
qa
=
d
.
documentElement
,
ra
=
/^key/
,
sa
=
/^
(?:
mouse|pointer|contextmenu|drag|drop
)
|click/
,
ta
=
/^
([^
.
]
*
)(?:\.(
.+
)
|
)
/
;
function
ua
(){
return
!
0
}
function
va
(){
return
!
1
}
function
wa
(){
try
{
return
d
.
activeElement
}
catch
(
a
){}}
function
xa
(
a
,
b
,
c
,
d
,
e
,
f
){
var
g
,
h
;
if
(
"object"
==
typeof
b
){
"string"
!=
typeof
c
&&
(
d
=
d
||
c
,
c
=
void
0
);
for
(
h
in
b
)
xa
(
a
,
h
,
c
,
d
,
b
[
h
],
f
);
return
a
}
if
(
null
==
d
&&
null
==
e
?(
e
=
c
,
d
=
c
=
void
0
):
null
==
e
&&
(
"string"
==
typeof
c
?(
e
=
d
,
d
=
void
0
):(
e
=
d
,
d
=
c
,
c
=
void
0
)),
e
===!
1
)
e
=
va
;
else
if
(
!
e
)
return
a
;
return
1
===
f
&&
(
g
=
e
,
e
=
function
(
a
){
return
r
().
off
(
a
),
g
.
apply
(
this
,
arguments
)},
e
.
guid
=
g
.
guid
||
(
g
.
guid
=
r
.
guid
++
)),
a
.
each
(
function
(){
r
.
event
.
add
(
this
,
b
,
e
,
d
,
c
)})}
r
.
event
=
{
global
:{},
add
:
function
(
a
,
b
,
c
,
d
,
e
){
var
f
,
g
,
h
,
i
,
j
,
k
,
l
,
m
,
n
,
o
,
p
,
q
=
V
.
get
(
a
);
if
(
q
){
c
.
handler
&&
(
f
=
c
,
c
=
f
.
handler
,
e
=
f
.
selector
),
e
&&
r
.
find
.
matchesSelector
(
qa
,
e
),
c
.
guid
||
(
c
.
guid
=
r
.
guid
++
),(
i
=
q
.
events
)
||
(
i
=
q
.
events
=
{}),(
g
=
q
.
handle
)
||
(
g
=
q
.
handle
=
function
(
b
){
return
"undefined"
!=
typeof
r
&&
r
.
event
.
triggered
!==
b
.
type
?
r
.
event
.
dispatch
.
apply
(
a
,
arguments
):
void
0
}),
b
=
(
b
||
""
).
match
(
K
)
||
[
""
],
j
=
b
.
length
;
while
(
j
--
)
h
=
ta
.
exec
(
b
[
j
])
||
[],
n
=
p
=
h
[
1
],
o
=
(
h
[
2
]
||
""
).
split
(
"."
).
sort
(),
n
&&
(
l
=
r
.
event
.
special
[
n
]
||
{},
n
=
(
e
?
l
.
delegateType
:
l
.
bindType
)
||
n
,
l
=
r
.
event
.
special
[
n
]
||
{},
k
=
r
.
extend
({
type
:
n
,
origType
:
p
,
data
:
d
,
handler
:
c
,
guid
:
c
.
guid
,
selector
:
e
,
needsContext
:
e
&&
r
.
expr
.
match
.
needsContext
.
test
(
e
),
namespace
:
o
.
join
(
"."
)},
f
),(
m
=
i
[
n
])
||
(
m
=
i
[
n
]
=
[],
m
.
delegateCount
=
0
,
l
.
setup
&&
l
.
setup
.
call
(
a
,
d
,
o
,
g
)
!==!
1
||
a
.
addEventListener
&&
a
.
addEventListener
(
n
,
g
)),
l
.
add
&&
(
l
.
add
.
call
(
a
,
k
),
k
.
handler
.
guid
||
(
k
.
handler
.
guid
=
c
.
guid
)),
e
?
m
.
splice
(
m
.
delegateCount
++
,
0
,
k
):
m
.
push
(
k
),
r
.
event
.
global
[
n
]
=!
0
)}},
remove
:
function
(
a
,
b
,
c
,
d
,
e
){
var
f
,
g
,
h
,
i
,
j
,
k
,
l
,
m
,
n
,
o
,
p
,
q
=
V
.
hasData
(
a
)
&&
V
.
get
(
a
);
if
(
q
&&
(
i
=
q
.
events
)){
b
=
(
b
||
""
).
match
(
K
)
||
[
""
],
j
=
b
.
length
;
while
(
j
--
)
if
(
h
=
ta
.
exec
(
b
[
j
])
||
[],
n
=
p
=
h
[
1
],
o
=
(
h
[
2
]
||
""
).
split
(
"."
).
sort
(),
n
){
l
=
r
.
event
.
special
[
n
]
||
{},
n
=
(
d
?
l
.
delegateType
:
l
.
bindType
)
||
n
,
m
=
i
[
n
]
||
[],
h
=
h
[
2
]
&&
new
RegExp
(
"(^|
\\
.)"
+
o
.
join
(
"
\\
.(?:.*
\\
.|)"
)
+
"(
\\
.|$)"
),
g
=
f
=
m
.
length
;
while
(
f
--
)
k
=
m
[
f
],
!
e
&&
p
!==
k
.
origType
||
c
&&
c
.
guid
!==
k
.
guid
||
h
&&!
h
.
test
(
k
.
namespace
)
||
d
&&
d
!==
k
.
selector
&&
(
"**"
!==
d
||!
k
.
selector
)
||
(
m
.
splice
(
f
,
1
),
k
.
selector
&&
m
.
delegateCount
--
,
l
.
remove
&&
l
.
remove
.
call
(
a
,
k
));
g
&&!
m
.
length
&&
(
l
.
teardown
&&
l
.
teardown
.
call
(
a
,
o
,
q
.
handle
)
!==!
1
||
r
.
removeEvent
(
a
,
n
,
q
.
handle
),
delete
i
[
n
])}
else
for
(
n
in
i
)
r
.
event
.
remove
(
a
,
n
+
b
[
j
],
c
,
d
,
!
0
);
r
.
isEmptyObject
(
i
)
&&
V
.
remove
(
a
,
"handle events"
)}},
dispatch
:
function
(
a
){
var
b
=
r
.
event
.
fix
(
a
),
c
,
d
,
e
,
f
,
g
,
h
,
i
=
new
Array
(
arguments
.
length
),
j
=
(
V
.
get
(
this
,
"events"
)
||
{})[
b
.
type
]
||
[],
k
=
r
.
event
.
special
[
b
.
type
]
||
{};
for
(
i
[
0
]
=
b
,
c
=
1
;
c
<
arguments
.
length
;
c
++
)
i
[
c
]
=
arguments
[
c
];
if
(
b
.
delegateTarget
=
this
,
!
k
.
preDispatch
||
k
.
preDispatch
.
call
(
this
,
b
)
!==!
1
){
h
=
r
.
event
.
handlers
.
call
(
this
,
b
,
j
),
c
=
0
;
while
((
f
=
h
[
c
++
])
&&!
b
.
isPropagationStopped
()){
b
.
currentTarget
=
f
.
elem
,
d
=
0
;
while
((
g
=
f
.
handlers
[
d
++
])
&&!
b
.
isImmediatePropagationStopped
())
b
.
rnamespace
&&!
b
.
rnamespace
.
test
(
g
.
namespace
)
||
(
b
.
handleObj
=
g
,
b
.
data
=
g
.
data
,
e
=
((
r
.
event
.
special
[
g
.
origType
]
||
{}).
handle
||
g
.
handler
).
apply
(
f
.
elem
,
i
),
void
0
!==
e
&&
(
b
.
result
=
e
)
===!
1
&&
(
b
.
preventDefault
(),
b
.
stopPropagation
()))}
return
k
.
postDispatch
&&
k
.
postDispatch
.
call
(
this
,
b
),
b
.
result
}},
handlers
:
function
(
a
,
b
){
var
c
,
d
,
e
,
f
,
g
,
h
=
[],
i
=
b
.
delegateCount
,
j
=
a
.
target
;
if
(
i
&&
j
.
nodeType
&&!
(
"click"
===
a
.
type
&&
a
.
button
>=
1
))
for
(;
j
!==
this
;
j
=
j
.
parentNode
||
this
)
if
(
1
===
j
.
nodeType
&&
(
"click"
!==
a
.
type
||
j
.
disabled
!==!
0
)){
for
(
f
=
[],
g
=
{},
c
=
0
;
c
<
i
;
c
++
)
d
=
b
[
c
],
e
=
d
.
selector
+
" "
,
void
0
===
g
[
e
]
&&
(
g
[
e
]
=
d
.
needsContext
?
r
(
e
,
this
).
index
(
j
)
>-
1
:
r
.
find
(
e
,
this
,
null
,[
j
]).
length
),
g
[
e
]
&&
f
.
push
(
d
);
f
.
length
&&
h
.
push
({
elem
:
j
,
handlers
:
f
})}
return
j
=
this
,
i
<
b
.
length
&&
h
.
push
({
elem
:
j
,
handlers
:
b
.
slice
(
i
)}),
h
},
addProp
:
function
(
a
,
b
){
Object
.
defineProperty
(
r
.
Event
.
prototype
,
a
,{
enumerable
:
!
0
,
configurable
:
!
0
,
get
:
r
.
isFunction
(
b
)?
function
(){
if
(
this
.
originalEvent
)
return
b
(
this
.
originalEvent
)}:
function
(){
if
(
this
.
originalEvent
)
return
this
.
originalEvent
[
a
]},
set
:
function
(
b
){
Object
.
defineProperty
(
this
,
a
,{
enumerable
:
!
0
,
configurable
:
!
0
,
writable
:
!
0
,
value
:
b
})}})},
fix
:
function
(
a
){
return
a
[
r
.
expando
]?
a
:
new
r
.
Event
(
a
)},
special
:{
load
:{
noBubble
:
!
0
},
focus
:{
trigger
:
function
(){
if
(
this
!==
wa
()
&&
this
.
focus
)
return
this
.
focus
(),
!
1
},
delegateType
:
"focusin"
},
blur
:{
trigger
:
function
(){
if
(
this
===
wa
()
&&
this
.
blur
)
return
this
.
blur
(),
!
1
},
delegateType
:
"focusout"
},
click
:{
trigger
:
function
(){
if
(
"checkbox"
===
this
.
type
&&
this
.
click
&&
r
.
nodeName
(
this
,
"input"
))
return
this
.
click
(),
!
1
},
_default
:
function
(
a
){
return
r
.
nodeName
(
a
.
target
,
"a"
)}},
beforeunload
:{
postDispatch
:
function
(
a
){
void
0
!==
a
.
result
&&
a
.
originalEvent
&&
(
a
.
originalEvent
.
returnValue
=
a
.
result
)}}}},
r
.
removeEvent
=
function
(
a
,
b
,
c
){
a
.
removeEventListener
&&
a
.
removeEventListener
(
b
,
c
)},
r
.
Event
=
function
(
a
,
b
){
return
this
instanceof
r
.
Event
?(
a
&&
a
.
type
?(
this
.
originalEvent
=
a
,
this
.
type
=
a
.
type
,
this
.
isDefaultPrevented
=
a
.
defaultPrevented
||
void
0
===
a
.
defaultPrevented
&&
a
.
returnValue
===!
1
?
ua
:
va
,
this
.
target
=
a
.
target
&&
3
===
a
.
target
.
nodeType
?
a
.
target
.
parentNode
:
a
.
target
,
this
.
currentTarget
=
a
.
currentTarget
,
this
.
relatedTarget
=
a
.
relatedTarget
):
this
.
type
=
a
,
b
&&
r
.
extend
(
this
,
b
),
this
.
timeStamp
=
a
&&
a
.
timeStamp
||
r
.
now
(),
void
(
this
[
r
.
expando
]
=!
0
)):
new
r
.
Event
(
a
,
b
)},
r
.
Event
.
prototype
=
{
constructor
:
r
.
Event
,
isDefaultPrevented
:
va
,
isPropagationStopped
:
va
,
isImmediatePropagationStopped
:
va
,
isSimulated
:
!
1
,
preventDefault
:
function
(){
var
a
=
this
.
originalEvent
;
this
.
isDefaultPrevented
=
ua
,
a
&&!
this
.
isSimulated
&&
a
.
preventDefault
()},
stopPropagation
:
function
(){
var
a
=
this
.
originalEvent
;
this
.
isPropagationStopped
=
ua
,
a
&&!
this
.
isSimulated
&&
a
.
stopPropagation
()},
stopImmediatePropagation
:
function
(){
var
a
=
this
.
originalEvent
;
this
.
isImmediatePropagationStopped
=
ua
,
a
&&!
this
.
isSimulated
&&
a
.
stopImmediatePropagation
(),
this
.
stopPropagation
()}},
r
.
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
,
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
:
function
(
a
){
var
b
=
a
.
button
;
return
null
==
a
.
which
&&
ra
.
test
(
a
.
type
)?
null
!=
a
.
charCode
?
a
.
charCode
:
a
.
keyCode
:
!
a
.
which
&&
void
0
!==
b
&&
sa
.
test
(
a
.
type
)?
1
&
b
?
1
:
2
&
b
?
3
:
4
&
b
?
2
:
0
:
a
.
which
}},
r
.
event
.
addProp
),
r
.
each
({
mouseenter
:
"mouseover"
,
mouseleave
:
"mouseout"
,
pointerenter
:
"pointerover"
,
pointerleave
:
"pointerout"
},
function
(
a
,
b
){
r
.
event
.
special
[
a
]
=
{
delegateType
:
b
,
bindType
:
b
,
handle
:
function
(
a
){
var
c
,
d
=
this
,
e
=
a
.
relatedTarget
,
f
=
a
.
handleObj
;
return
e
&&
(
e
===
d
||
r
.
contains
(
d
,
e
))
||
(
a
.
type
=
f
.
origType
,
c
=
f
.
handler
.
apply
(
this
,
arguments
),
a
.
type
=
b
),
c
}}}),
r
.
fn
.
extend
({
on
:
function
(
a
,
b
,
c
,
d
){
return
xa
(
this
,
a
,
b
,
c
,
d
)},
one
:
function
(
a
,
b
,
c
,
d
){
return
xa
(
this
,
a
,
b
,
c
,
d
,
1
)},
off
:
function
(
a
,
b
,
c
){
var
d
,
e
;
if
(
a
&&
a
.
preventDefault
&&
a
.
handleObj
)
return
d
=
a
.
handleObj
,
r
(
a
.
delegateTarget
).
off
(
d
.
namespace
?
d
.
origType
+
"."
+
d
.
namespace
:
d
.
origType
,
d
.
selector
,
d
.
handler
),
this
;
if
(
"object"
==
typeof
a
){
for
(
e
in
a
)
this
.
off
(
e
,
b
,
a
[
e
]);
return
this
}
return
b
!==!
1
&&
"function"
!=
typeof
b
||
(
c
=
b
,
b
=
void
0
),
c
===!
1
&&
(
c
=
va
),
this
.
each
(
function
(){
r
.
event
.
remove
(
this
,
a
,
c
,
b
)})}});
var
ya
=
/<
(?!
area|br|col|embed|hr|img|input|link|meta|param
)(([
a-z
][^\/\0
>
\x
20
\t\r\n\f]
*
)[^
>
]
*
)\/
>/gi
,
za
=
/<script|<style|<link/i
,
Aa
=
/checked
\s
*
(?:[^
=
]
|=
\s
*.checked.
)
/i
,
Ba
=
/^true
\/(
.*
)
/
,
Ca
=
/^
\s
*<!
(?:\[
CDATA
\[
|--
)
|
(?:\]\]
|--
)
>
\s
*$/g
;
function
Da
(
a
,
b
){
return
r
.
nodeName
(
a
,
"table"
)
&&
r
.
nodeName
(
11
!==
b
.
nodeType
?
b
:
b
.
firstChild
,
"tr"
)?
a
.
getElementsByTagName
(
"tbody"
)[
0
]
||
a
:
a
}
function
Ea
(
a
){
return
a
.
type
=
(
null
!==
a
.
getAttribute
(
"type"
))
+
"/"
+
a
.
type
,
a
}
function
Fa
(
a
){
var
b
=
Ba
.
exec
(
a
.
type
);
return
b
?
a
.
type
=
b
[
1
]:
a
.
removeAttribute
(
"type"
),
a
}
function
Ga
(
a
,
b
){
var
c
,
d
,
e
,
f
,
g
,
h
,
i
,
j
;
if
(
1
===
b
.
nodeType
){
if
(
V
.
hasData
(
a
)
&&
(
f
=
V
.
access
(
a
),
g
=
V
.
set
(
b
,
f
),
j
=
f
.
events
)){
delete
g
.
handle
,
g
.
events
=
{};
for
(
e
in
j
)
for
(
c
=
0
,
d
=
j
[
e
].
length
;
c
<
d
;
c
++
)
r
.
event
.
add
(
b
,
e
,
j
[
e
][
c
])}
W
.
hasData
(
a
)
&&
(
h
=
W
.
access
(
a
),
i
=
r
.
extend
({},
h
),
W
.
set
(
b
,
i
))}}
function
Ha
(
a
,
b
){
var
c
=
b
.
nodeName
.
toLowerCase
();
"input"
===
c
&&
ia
.
test
(
a
.
type
)?
b
.
checked
=
a
.
checked
:
"input"
!==
c
&&
"textarea"
!==
c
||
(
b
.
defaultValue
=
a
.
defaultValue
)}
function
Ia
(
a
,
b
,
c
,
d
){
b
=
g
.
apply
([],
b
);
var
e
,
f
,
h
,
i
,
j
,
k
,
l
=
0
,
m
=
a
.
length
,
n
=
m
-
1
,
q
=
b
[
0
],
s
=
r
.
isFunction
(
q
);
if
(
s
||
m
>
1
&&
"string"
==
typeof
q
&&!
o
.
checkClone
&&
Aa
.
test
(
q
))
return
a
.
each
(
function
(
e
){
var
f
=
a
.
eq
(
e
);
s
&&
(
b
[
0
]
=
q
.
call
(
this
,
e
,
f
.
html
())),
Ia
(
f
,
b
,
c
,
d
)});
if
(
m
&&
(
e
=
pa
(
b
,
a
[
0
].
ownerDocument
,
!
1
,
a
,
d
),
f
=
e
.
firstChild
,
1
===
e
.
childNodes
.
length
&&
(
e
=
f
),
f
||
d
)){
for
(
h
=
r
.
map
(
ma
(
e
,
"script"
),
Ea
),
i
=
h
.
length
;
l
<
m
;
l
++
)
j
=
e
,
l
!==
n
&&
(
j
=
r
.
clone
(
j
,
!
0
,
!
0
),
i
&&
r
.
merge
(
h
,
ma
(
j
,
"script"
))),
c
.
call
(
a
[
l
],
j
,
l
);
if
(
i
)
for
(
k
=
h
[
h
.
length
-
1
].
ownerDocument
,
r
.
map
(
h
,
Fa
),
l
=
0
;
l
<
i
;
l
++
)
j
=
h
[
l
],
ka
.
test
(
j
.
type
||
""
)
&&!
V
.
access
(
j
,
"globalEval"
)
&&
r
.
contains
(
k
,
j
)
&&
(
j
.
src
?
r
.
_evalUrl
&&
r
.
_evalUrl
(
j
.
src
):
p
(
j
.
textContent
.
replace
(
Ca
,
""
),
k
))}
return
a
}
function
Ja
(
a
,
b
,
c
){
for
(
var
d
,
e
=
b
?
r
.
filter
(
b
,
a
):
a
,
f
=
0
;
null
!=
(
d
=
e
[
f
]);
f
++
)
c
||
1
!==
d
.
nodeType
||
r
.
cleanData
(
ma
(
d
)),
d
.
parentNode
&&
(
c
&&
r
.
contains
(
d
.
ownerDocument
,
d
)
&&
na
(
ma
(
d
,
"script"
)),
d
.
parentNode
.
removeChild
(
d
));
return
a
}
r
.
extend
({
htmlPrefilter
:
function
(
a
){
return
a
.
replace
(
ya
,
"<$1></$2>"
)},
clone
:
function
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
=
a
.
cloneNode
(
!
0
),
i
=
r
.
contains
(
a
.
ownerDocument
,
a
);
if
(
!
(
o
.
noCloneChecked
||
1
!==
a
.
nodeType
&&
11
!==
a
.
nodeType
||
r
.
isXMLDoc
(
a
)))
for
(
g
=
ma
(
h
),
f
=
ma
(
a
),
d
=
0
,
e
=
f
.
length
;
d
<
e
;
d
++
)
Ha
(
f
[
d
],
g
[
d
]);
if
(
b
)
if
(
c
)
for
(
f
=
f
||
ma
(
a
),
g
=
g
||
ma
(
h
),
d
=
0
,
e
=
f
.
length
;
d
<
e
;
d
++
)
Ga
(
f
[
d
],
g
[
d
]);
else
Ga
(
a
,
h
);
return
g
=
ma
(
h
,
"script"
),
g
.
length
>
0
&&
na
(
g
,
!
i
&&
ma
(
a
,
"script"
)),
h
},
cleanData
:
function
(
a
){
for
(
var
b
,
c
,
d
,
e
=
r
.
event
.
special
,
f
=
0
;
void
0
!==
(
c
=
a
[
f
]);
f
++
)
if
(
T
(
c
)){
if
(
b
=
c
[
V
.
expando
]){
if
(
b
.
events
)
for
(
d
in
b
.
events
)
e
[
d
]?
r
.
event
.
remove
(
c
,
d
):
r
.
removeEvent
(
c
,
d
,
b
.
handle
);
c
[
V
.
expando
]
=
void
0
}
c
[
W
.
expando
]
&&
(
c
[
W
.
expando
]
=
void
0
)}}}),
r
.
fn
.
extend
({
detach
:
function
(
a
){
return
Ja
(
this
,
a
,
!
0
)},
remove
:
function
(
a
){
return
Ja
(
this
,
a
)},
text
:
function
(
a
){
return
S
(
this
,
function
(
a
){
return
void
0
===
a
?
r
.
text
(
this
):
this
.
empty
().
each
(
function
(){
1
!==
this
.
nodeType
&&
11
!==
this
.
nodeType
&&
9
!==
this
.
nodeType
||
(
this
.
textContent
=
a
)})},
null
,
a
,
arguments
.
length
)},
append
:
function
(){
return
Ia
(
this
,
arguments
,
function
(
a
){
if
(
1
===
this
.
nodeType
||
11
===
this
.
nodeType
||
9
===
this
.
nodeType
){
var
b
=
Da
(
this
,
a
);
b
.
appendChild
(
a
)}})},
prepend
:
function
(){
return
Ia
(
this
,
arguments
,
function
(
a
){
if
(
1
===
this
.
nodeType
||
11
===
this
.
nodeType
||
9
===
this
.
nodeType
){
var
b
=
Da
(
this
,
a
);
b
.
insertBefore
(
a
,
b
.
firstChild
)}})},
before
:
function
(){
return
Ia
(
this
,
arguments
,
function
(
a
){
this
.
parentNode
&&
this
.
parentNode
.
insertBefore
(
a
,
this
)})},
after
:
function
(){
return
Ia
(
this
,
arguments
,
function
(
a
){
this
.
parentNode
&&
this
.
parentNode
.
insertBefore
(
a
,
this
.
nextSibling
)})},
empty
:
function
(){
for
(
var
a
,
b
=
0
;
null
!=
(
a
=
this
[
b
]);
b
++
)
1
===
a
.
nodeType
&&
(
r
.
cleanData
(
ma
(
a
,
!
1
)),
a
.
textContent
=
""
);
return
this
},
clone
:
function
(
a
,
b
){
return
a
=
null
!=
a
&&
a
,
b
=
null
==
b
?
a
:
b
,
this
.
map
(
function
(){
return
r
.
clone
(
this
,
a
,
b
)})},
html
:
function
(
a
){
return
S
(
this
,
function
(
a
){
var
b
=
this
[
0
]
||
{},
c
=
0
,
d
=
this
.
length
;
if
(
void
0
===
a
&&
1
===
b
.
nodeType
)
return
b
.
innerHTML
;
if
(
"string"
==
typeof
a
&&!
za
.
test
(
a
)
&&!
la
[(
ja
.
exec
(
a
)
||
[
""
,
""
])[
1
].
toLowerCase
()]){
a
=
r
.
htmlPrefilter
(
a
);
try
{
for
(;
c
<
d
;
c
++
)
b
=
this
[
c
]
||
{},
1
===
b
.
nodeType
&&
(
r
.
cleanData
(
ma
(
b
,
!
1
)),
b
.
innerHTML
=
a
);
b
=
0
}
catch
(
e
){}}
b
&&
this
.
empty
().
append
(
a
)},
null
,
a
,
arguments
.
length
)},
replaceWith
:
function
(){
var
a
=
[];
return
Ia
(
this
,
arguments
,
function
(
b
){
var
c
=
this
.
parentNode
;
r
.
inArray
(
this
,
a
)
<
0
&&
(
r
.
cleanData
(
ma
(
this
)),
c
&&
c
.
replaceChild
(
b
,
this
))},
a
)}}),
r
.
each
({
appendTo
:
"append"
,
prependTo
:
"prepend"
,
insertBefore
:
"before"
,
insertAfter
:
"after"
,
replaceAll
:
"replaceWith"
},
function
(
a
,
b
){
r
.
fn
[
a
]
=
function
(
a
){
for
(
var
c
,
d
=
[],
e
=
r
(
a
),
f
=
e
.
length
-
1
,
g
=
0
;
g
<=
f
;
g
++
)
c
=
g
===
f
?
this
:
this
.
clone
(
!
0
),
r
(
e
[
g
])[
b
](
c
),
h
.
apply
(
d
,
c
.
get
());
return
this
.
pushStack
(
d
)}});
var
Ka
=
/^margin/
,
La
=
new
RegExp
(
"^("
+
_
+
")(?!px)[a-z%]+$"
,
"i"
),
Ma
=
function
(
b
){
var
c
=
b
.
ownerDocument
.
defaultView
;
return
c
&&
c
.
opener
||
(
c
=
a
),
c
.
getComputedStyle
(
b
)};
!
function
(){
function
b
(){
if
(
i
){
i
.
style
.
cssText
=
"box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%"
,
i
.
innerHTML
=
""
,
qa
.
appendChild
(
h
);
var
b
=
a
.
getComputedStyle
(
i
);
c
=
"1%"
!==
b
.
top
,
g
=
"2px"
===
b
.
marginLeft
,
e
=
"4px"
===
b
.
width
,
i
.
style
.
marginRight
=
"50%"
,
f
=
"4px"
===
b
.
marginRight
,
qa
.
removeChild
(
h
),
i
=
null
}}
var
c
,
e
,
f
,
g
,
h
=
d
.
createElement
(
"div"
),
i
=
d
.
createElement
(
"div"
);
i
.
style
&&
(
i
.
style
.
backgroundClip
=
"content-box"
,
i
.
cloneNode
(
!
0
).
style
.
backgroundClip
=
""
,
o
.
clearCloneStyle
=
"content-box"
===
i
.
style
.
backgroundClip
,
h
.
style
.
cssText
=
"border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute"
,
h
.
appendChild
(
i
),
r
.
extend
(
o
,{
pixelPosition
:
function
(){
return
b
(),
c
},
boxSizingReliable
:
function
(){
return
b
(),
e
},
pixelMarginRight
:
function
(){
return
b
(),
f
},
reliableMarginLeft
:
function
(){
return
b
(),
g
}}))}();
function
Na
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
=
a
.
style
;
return
c
=
c
||
Ma
(
a
),
c
&&
(
g
=
c
.
getPropertyValue
(
b
)
||
c
[
b
],
""
!==
g
||
r
.
contains
(
a
.
ownerDocument
,
a
)
||
(
g
=
r
.
style
(
a
,
b
)),
!
o
.
pixelMarginRight
()
&&
La
.
test
(
g
)
&&
Ka
.
test
(
b
)
&&
(
d
=
h
.
width
,
e
=
h
.
minWidth
,
f
=
h
.
maxWidth
,
h
.
minWidth
=
h
.
maxWidth
=
h
.
width
=
g
,
g
=
c
.
width
,
h
.
width
=
d
,
h
.
minWidth
=
e
,
h
.
maxWidth
=
f
)),
void
0
!==
g
?
g
+
""
:
g
}
function
Oa
(
a
,
b
){
return
{
get
:
function
(){
return
a
()?
void
delete
this
.
get
:(
this
.
get
=
b
).
apply
(
this
,
arguments
)}}}
var
Pa
=
/^
(
none|table
(?!
-c
[
ea
])
.+
)
/
,
Qa
=
{
position
:
"absolute"
,
visibility
:
"hidden"
,
display
:
"block"
},
Ra
=
{
letterSpacing
:
"0"
,
fontWeight
:
"400"
},
Sa
=
[
"Webkit"
,
"Moz"
,
"ms"
],
Ta
=
d
.
createElement
(
"div"
).
style
;
function
Ua
(
a
){
if
(
a
in
Ta
)
return
a
;
var
b
=
a
[
0
].
toUpperCase
()
+
a
.
slice
(
1
),
c
=
Sa
.
length
;
while
(
c
--
)
if
(
a
=
Sa
[
c
]
+
b
,
a
in
Ta
)
return
a
}
function
Va
(
a
,
b
,
c
){
var
d
=
aa
.
exec
(
b
);
return
d
?
Math
.
max
(
0
,
d
[
2
]
-
(
c
||
0
))
+
(
d
[
3
]
||
"px"
):
b
}
function
Wa
(
a
,
b
,
c
,
d
,
e
){
var
f
,
g
=
0
;
for
(
f
=
c
===
(
d
?
"border"
:
"content"
)?
4
:
"width"
===
b
?
1
:
0
;
f
<
4
;
f
+=
2
)
"margin"
===
c
&&
(
g
+=
r
.
css
(
a
,
c
+
ba
[
f
],
!
0
,
e
)),
d
?(
"content"
===
c
&&
(
g
-=
r
.
css
(
a
,
"padding"
+
ba
[
f
],
!
0
,
e
)),
"margin"
!==
c
&&
(
g
-=
r
.
css
(
a
,
"border"
+
ba
[
f
]
+
"Width"
,
!
0
,
e
))):(
g
+=
r
.
css
(
a
,
"padding"
+
ba
[
f
],
!
0
,
e
),
"padding"
!==
c
&&
(
g
+=
r
.
css
(
a
,
"border"
+
ba
[
f
]
+
"Width"
,
!
0
,
e
)));
return
g
}
function
Xa
(
a
,
b
,
c
){
var
d
,
e
=!
0
,
f
=
Ma
(
a
),
g
=
"border-box"
===
r
.
css
(
a
,
"boxSizing"
,
!
1
,
f
);
if
(
a
.
getClientRects
().
length
&&
(
d
=
a
.
getBoundingClientRect
()[
b
]),
d
<=
0
||
null
==
d
){
if
(
d
=
Na
(
a
,
b
,
f
),(
d
<
0
||
null
==
d
)
&&
(
d
=
a
.
style
[
b
]),
La
.
test
(
d
))
return
d
;
e
=
g
&&
(
o
.
boxSizingReliable
()
||
d
===
a
.
style
[
b
]),
d
=
parseFloat
(
d
)
||
0
}
return
d
+
Wa
(
a
,
b
,
c
||
(
g
?
"border"
:
"content"
),
e
,
f
)
+
"px"
}
r
.
extend
({
cssHooks
:{
opacity
:{
get
:
function
(
a
,
b
){
if
(
b
){
var
c
=
Na
(
a
,
"opacity"
);
return
""
===
c
?
"1"
:
c
}}}},
cssNumber
:{
animationIterationCount
:
!
0
,
columnCount
:
!
0
,
fillOpacity
:
!
0
,
flexGrow
:
!
0
,
flexShrink
:
!
0
,
fontWeight
:
!
0
,
lineHeight
:
!
0
,
opacity
:
!
0
,
order
:
!
0
,
orphans
:
!
0
,
widows
:
!
0
,
zIndex
:
!
0
,
zoom
:
!
0
},
cssProps
:{
"float"
:
"cssFloat"
},
style
:
function
(
a
,
b
,
c
,
d
){
if
(
a
&&
3
!==
a
.
nodeType
&&
8
!==
a
.
nodeType
&&
a
.
style
){
var
e
,
f
,
g
,
h
=
r
.
camelCase
(
b
),
i
=
a
.
style
;
return
b
=
r
.
cssProps
[
h
]
||
(
r
.
cssProps
[
h
]
=
Ua
(
h
)
||
h
),
g
=
r
.
cssHooks
[
b
]
||
r
.
cssHooks
[
h
],
void
0
===
c
?
g
&&
"get"
in
g
&&
void
0
!==
(
e
=
g
.
get
(
a
,
!
1
,
d
))?
e
:
i
[
b
]:(
f
=
typeof
c
,
"string"
===
f
&&
(
e
=
aa
.
exec
(
c
))
&&
e
[
1
]
&&
(
c
=
ea
(
a
,
b
,
e
),
f
=
"number"
),
null
!=
c
&&
c
===
c
&&
(
"number"
===
f
&&
(
c
+=
e
&&
e
[
3
]
||
(
r
.
cssNumber
[
h
]?
""
:
"px"
)),
o
.
clearCloneStyle
||
""
!==
c
||
0
!==
b
.
indexOf
(
"background"
)
||
(
i
[
b
]
=
"inherit"
),
g
&&
"set"
in
g
&&
void
0
===
(
c
=
g
.
set
(
a
,
c
,
d
))
||
(
i
[
b
]
=
c
)),
void
0
)}},
css
:
function
(
a
,
b
,
c
,
d
){
var
e
,
f
,
g
,
h
=
r
.
camelCase
(
b
);
return
b
=
r
.
cssProps
[
h
]
||
(
r
.
cssProps
[
h
]
=
Ua
(
h
)
||
h
),
g
=
r
.
cssHooks
[
b
]
||
r
.
cssHooks
[
h
],
g
&&
"get"
in
g
&&
(
e
=
g
.
get
(
a
,
!
0
,
c
)),
void
0
===
e
&&
(
e
=
Na
(
a
,
b
,
d
)),
"normal"
===
e
&&
b
in
Ra
&&
(
e
=
Ra
[
b
]),
""
===
c
||
c
?(
f
=
parseFloat
(
e
),
c
===!
0
||
isFinite
(
f
)?
f
||
0
:
e
):
e
}}),
r
.
each
([
"height"
,
"width"
],
function
(
a
,
b
){
r
.
cssHooks
[
b
]
=
{
get
:
function
(
a
,
c
,
d
){
if
(
c
)
return
!
Pa
.
test
(
r
.
css
(
a
,
"display"
))
||
a
.
getClientRects
().
length
&&
a
.
getBoundingClientRect
().
width
?
Xa
(
a
,
b
,
d
):
da
(
a
,
Qa
,
function
(){
return
Xa
(
a
,
b
,
d
)})},
set
:
function
(
a
,
c
,
d
){
var
e
,
f
=
d
&&
Ma
(
a
),
g
=
d
&&
Wa
(
a
,
b
,
d
,
"border-box"
===
r
.
css
(
a
,
"boxSizing"
,
!
1
,
f
),
f
);
return
g
&&
(
e
=
aa
.
exec
(
c
))
&&
"px"
!==
(
e
[
3
]
||
"px"
)
&&
(
a
.
style
[
b
]
=
c
,
c
=
r
.
css
(
a
,
b
)),
Va
(
a
,
c
,
g
)}}}),
r
.
cssHooks
.
marginLeft
=
Oa
(
o
.
reliableMarginLeft
,
function
(
a
,
b
){
if
(
b
)
return
(
parseFloat
(
Na
(
a
,
"marginLeft"
))
||
a
.
getBoundingClientRect
().
left
-
da
(
a
,{
marginLeft
:
0
},
function
(){
return
a
.
getBoundingClientRect
().
left
}))
+
"px"
}),
r
.
each
({
margin
:
""
,
padding
:
""
,
border
:
"Width"
},
function
(
a
,
b
){
r
.
cssHooks
[
a
+
b
]
=
{
expand
:
function
(
c
){
for
(
var
d
=
0
,
e
=
{},
f
=
"string"
==
typeof
c
?
c
.
split
(
" "
):[
c
];
d
<
4
;
d
++
)
e
[
a
+
ba
[
d
]
+
b
]
=
f
[
d
]
||
f
[
d
-
2
]
||
f
[
0
];
return
e
}},
Ka
.
test
(
a
)
||
(
r
.
cssHooks
[
a
+
b
].
set
=
Va
)}),
r
.
fn
.
extend
({
css
:
function
(
a
,
b
){
return
S
(
this
,
function
(
a
,
b
,
c
){
var
d
,
e
,
f
=
{},
g
=
0
;
if
(
r
.
isArray
(
b
)){
for
(
d
=
Ma
(
a
),
e
=
b
.
length
;
g
<
e
;
g
++
)
f
[
b
[
g
]]
=
r
.
css
(
a
,
b
[
g
],
!
1
,
d
);
return
f
}
return
void
0
!==
c
?
r
.
style
(
a
,
b
,
c
):
r
.
css
(
a
,
b
)},
a
,
b
,
arguments
.
length
>
1
)}});
function
Ya
(
a
,
b
,
c
,
d
,
e
){
return
new
Ya
.
prototype
.
init
(
a
,
b
,
c
,
d
,
e
)}
r
.
Tween
=
Ya
,
Ya
.
prototype
=
{
constructor
:
Ya
,
init
:
function
(
a
,
b
,
c
,
d
,
e
,
f
){
this
.
elem
=
a
,
this
.
prop
=
c
,
this
.
easing
=
e
||
r
.
easing
.
_default
,
this
.
options
=
b
,
this
.
start
=
this
.
now
=
this
.
cur
(),
this
.
end
=
d
,
this
.
unit
=
f
||
(
r
.
cssNumber
[
c
]?
""
:
"px"
)},
cur
:
function
(){
var
a
=
Ya
.
propHooks
[
this
.
prop
];
return
a
&&
a
.
get
?
a
.
get
(
this
):
Ya
.
propHooks
.
_default
.
get
(
this
)},
run
:
function
(
a
){
var
b
,
c
=
Ya
.
propHooks
[
this
.
prop
];
return
this
.
options
.
duration
?
this
.
pos
=
b
=
r
.
easing
[
this
.
easing
](
a
,
this
.
options
.
duration
*
a
,
0
,
1
,
this
.
options
.
duration
):
this
.
pos
=
b
=
a
,
this
.
now
=
(
this
.
end
-
this
.
start
)
*
b
+
this
.
start
,
this
.
options
.
step
&&
this
.
options
.
step
.
call
(
this
.
elem
,
this
.
now
,
this
),
c
&&
c
.
set
?
c
.
set
(
this
):
Ya
.
propHooks
.
_default
.
set
(
this
),
this
}},
Ya
.
prototype
.
init
.
prototype
=
Ya
.
prototype
,
Ya
.
propHooks
=
{
_default
:{
get
:
function
(
a
){
var
b
;
return
1
!==
a
.
elem
.
nodeType
||
null
!=
a
.
elem
[
a
.
prop
]
&&
null
==
a
.
elem
.
style
[
a
.
prop
]?
a
.
elem
[
a
.
prop
]:(
b
=
r
.
css
(
a
.
elem
,
a
.
prop
,
""
),
b
&&
"auto"
!==
b
?
b
:
0
)},
set
:
function
(
a
){
r
.
fx
.
step
[
a
.
prop
]?
r
.
fx
.
step
[
a
.
prop
](
a
):
1
!==
a
.
elem
.
nodeType
||
null
==
a
.
elem
.
style
[
r
.
cssProps
[
a
.
prop
]]
&&!
r
.
cssHooks
[
a
.
prop
]?
a
.
elem
[
a
.
prop
]
=
a
.
now
:
r
.
style
(
a
.
elem
,
a
.
prop
,
a
.
now
+
a
.
unit
)}}},
Ya
.
propHooks
.
scrollTop
=
Ya
.
propHooks
.
scrollLeft
=
{
set
:
function
(
a
){
a
.
elem
.
nodeType
&&
a
.
elem
.
parentNode
&&
(
a
.
elem
[
a
.
prop
]
=
a
.
now
)}},
r
.
easing
=
{
linear
:
function
(
a
){
return
a
},
swing
:
function
(
a
){
return
.
5
-
Math
.
cos
(
a
*
Math
.
PI
)
/
2
},
_default
:
"swing"
},
r
.
fx
=
Ya
.
prototype
.
init
,
r
.
fx
.
step
=
{};
var
Za
,
$a
,
_a
=
/^
(?:
toggle|show|hide
)
$/
,
ab
=
/queueHooks$/
;
function
bb
(){
$a
&&
(
a
.
requestAnimationFrame
(
bb
),
r
.
fx
.
tick
())}
function
cb
(){
return
a
.
setTimeout
(
function
(){
Za
=
void
0
}),
Za
=
r
.
now
()}
function
db
(
a
,
b
){
var
c
,
d
=
0
,
e
=
{
height
:
a
};
for
(
b
=
b
?
1
:
0
;
d
<
4
;
d
+=
2
-
b
)
c
=
ba
[
d
],
e
[
"margin"
+
c
]
=
e
[
"padding"
+
c
]
=
a
;
return
b
&&
(
e
.
opacity
=
e
.
width
=
a
),
e
}
function
eb
(
a
,
b
,
c
){
for
(
var
d
,
e
=
(
hb
.
tweeners
[
b
]
||
[]).
concat
(
hb
.
tweeners
[
"*"
]),
f
=
0
,
g
=
e
.
length
;
f
<
g
;
f
++
)
if
(
d
=
e
[
f
].
call
(
c
,
b
,
a
))
return
d
}
function
fb
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
,
i
,
j
,
k
,
l
=
"width"
in
b
||
"height"
in
b
,
m
=
this
,
n
=
{},
o
=
a
.
style
,
p
=
a
.
nodeType
&&
ca
(
a
),
q
=
V
.
get
(
a
,
"fxshow"
);
c
.
queue
||
(
g
=
r
.
_queueHooks
(
a
,
"fx"
),
null
==
g
.
unqueued
&&
(
g
.
unqueued
=
0
,
h
=
g
.
empty
.
fire
,
g
.
empty
.
fire
=
function
(){
g
.
unqueued
||
h
()}),
g
.
unqueued
++
,
m
.
always
(
function
(){
m
.
always
(
function
(){
g
.
unqueued
--
,
r
.
queue
(
a
,
"fx"
).
length
||
g
.
empty
.
fire
()})}));
for
(
d
in
b
)
if
(
e
=
b
[
d
],
_a
.
test
(
e
)){
if
(
delete
b
[
d
],
f
=
f
||
"toggle"
===
e
,
e
===
(
p
?
"hide"
:
"show"
)){
if
(
"show"
!==
e
||!
q
||
void
0
===
q
[
d
])
continue
;
p
=!
0
}
n
[
d
]
=
q
&&
q
[
d
]
||
r
.
style
(
a
,
d
)}
if
(
i
=!
r
.
isEmptyObject
(
b
),
i
||!
r
.
isEmptyObject
(
n
)){
l
&&
1
===
a
.
nodeType
&&
(
c
.
overflow
=
[
o
.
overflow
,
o
.
overflowX
,
o
.
overflowY
],
j
=
q
&&
q
.
display
,
null
==
j
&&
(
j
=
V
.
get
(
a
,
"display"
)),
k
=
r
.
css
(
a
,
"display"
),
"none"
===
k
&&
(
j
?
k
=
j
:(
ha
([
a
],
!
0
),
j
=
a
.
style
.
display
||
j
,
k
=
r
.
css
(
a
,
"display"
),
ha
([
a
]))),(
"inline"
===
k
||
"inline-block"
===
k
&&
null
!=
j
)
&&
"none"
===
r
.
css
(
a
,
"float"
)
&&
(
i
||
(
m
.
done
(
function
(){
o
.
display
=
j
}),
null
==
j
&&
(
k
=
o
.
display
,
j
=
"none"
===
k
?
""
:
k
)),
o
.
display
=
"inline-block"
)),
c
.
overflow
&&
(
o
.
overflow
=
"hidden"
,
m
.
always
(
function
(){
o
.
overflow
=
c
.
overflow
[
0
],
o
.
overflowX
=
c
.
overflow
[
1
],
o
.
overflowY
=
c
.
overflow
[
2
]})),
i
=!
1
;
for
(
d
in
n
)
i
||
(
q
?
"hidden"
in
q
&&
(
p
=
q
.
hidden
):
q
=
V
.
access
(
a
,
"fxshow"
,{
display
:
j
}),
f
&&
(
q
.
hidden
=!
p
),
p
&&
ha
([
a
],
!
0
),
m
.
done
(
function
(){
p
||
ha
([
a
]),
V
.
remove
(
a
,
"fxshow"
);
for
(
d
in
n
)
r
.
style
(
a
,
d
,
n
[
d
])})),
i
=
eb
(
p
?
q
[
d
]:
0
,
d
,
m
),
d
in
q
||
(
q
[
d
]
=
i
.
start
,
p
&&
(
i
.
end
=
i
.
start
,
i
.
start
=
0
))}}
function
gb
(
a
,
b
){
var
c
,
d
,
e
,
f
,
g
;
for
(
c
in
a
)
if
(
d
=
r
.
camelCase
(
c
),
e
=
b
[
d
],
f
=
a
[
c
],
r
.
isArray
(
f
)
&&
(
e
=
f
[
1
],
f
=
a
[
c
]
=
f
[
0
]),
c
!==
d
&&
(
a
[
d
]
=
f
,
delete
a
[
c
]),
g
=
r
.
cssHooks
[
d
],
g
&&
"expand"
in
g
){
f
=
g
.
expand
(
f
),
delete
a
[
d
];
for
(
c
in
f
)
c
in
a
||
(
a
[
c
]
=
f
[
c
],
b
[
c
]
=
e
)}
else
b
[
d
]
=
e
}
function
hb
(
a
,
b
,
c
){
var
d
,
e
,
f
=
0
,
g
=
hb
.
prefilters
.
length
,
h
=
r
.
Deferred
().
always
(
function
(){
delete
i
.
elem
}),
i
=
function
(){
if
(
e
)
return
!
1
;
for
(
var
b
=
Za
||
cb
(),
c
=
Math
.
max
(
0
,
j
.
startTime
+
j
.
duration
-
b
),
d
=
c
/
j
.
duration
||
0
,
f
=
1
-
d
,
g
=
0
,
i
=
j
.
tweens
.
length
;
g
<
i
;
g
++
)
j
.
tweens
[
g
].
run
(
f
);
return
h
.
notifyWith
(
a
,[
j
,
f
,
c
]),
f
<
1
&&
i
?
c
:(
h
.
resolveWith
(
a
,[
j
]),
!
1
)},
j
=
h
.
promise
({
elem
:
a
,
props
:
r
.
extend
({},
b
),
opts
:
r
.
extend
(
!
0
,{
specialEasing
:{},
easing
:
r
.
easing
.
_default
},
c
),
originalProperties
:
b
,
originalOptions
:
c
,
startTime
:
Za
||
cb
(),
duration
:
c
.
duration
,
tweens
:[],
createTween
:
function
(
b
,
c
){
var
d
=
r
.
Tween
(
a
,
j
.
opts
,
b
,
c
,
j
.
opts
.
specialEasing
[
b
]
||
j
.
opts
.
easing
);
return
j
.
tweens
.
push
(
d
),
d
},
stop
:
function
(
b
){
var
c
=
0
,
d
=
b
?
j
.
tweens
.
length
:
0
;
if
(
e
)
return
this
;
for
(
e
=!
0
;
c
<
d
;
c
++
)
j
.
tweens
[
c
].
run
(
1
);
return
b
?(
h
.
notifyWith
(
a
,[
j
,
1
,
0
]),
h
.
resolveWith
(
a
,[
j
,
b
])):
h
.
rejectWith
(
a
,[
j
,
b
]),
this
}}),
k
=
j
.
props
;
for
(
gb
(
k
,
j
.
opts
.
specialEasing
);
f
<
g
;
f
++
)
if
(
d
=
hb
.
prefilters
[
f
].
call
(
j
,
a
,
k
,
j
.
opts
))
return
r
.
isFunction
(
d
.
stop
)
&&
(
r
.
_queueHooks
(
j
.
elem
,
j
.
opts
.
queue
).
stop
=
r
.
proxy
(
d
.
stop
,
d
)),
d
;
return
r
.
map
(
k
,
eb
,
j
),
r
.
isFunction
(
j
.
opts
.
start
)
&&
j
.
opts
.
start
.
call
(
a
,
j
),
r
.
fx
.
timer
(
r
.
extend
(
i
,{
elem
:
a
,
anim
:
j
,
queue
:
j
.
opts
.
queue
})),
j
.
progress
(
j
.
opts
.
progress
).
done
(
j
.
opts
.
done
,
j
.
opts
.
complete
).
fail
(
j
.
opts
.
fail
).
always
(
j
.
opts
.
always
)}
r
.
Animation
=
r
.
extend
(
hb
,{
tweeners
:{
"*"
:[
function
(
a
,
b
){
var
c
=
this
.
createTween
(
a
,
b
);
return
ea
(
c
.
elem
,
a
,
aa
.
exec
(
b
),
c
),
c
}]},
tweener
:
function
(
a
,
b
){
r
.
isFunction
(
a
)?(
b
=
a
,
a
=
[
"*"
]):
a
=
a
.
match
(
K
);
for
(
var
c
,
d
=
0
,
e
=
a
.
length
;
d
<
e
;
d
++
)
c
=
a
[
d
],
hb
.
tweeners
[
c
]
=
hb
.
tweeners
[
c
]
||
[],
hb
.
tweeners
[
c
].
unshift
(
b
)},
prefilters
:[
fb
],
prefilter
:
function
(
a
,
b
){
b
?
hb
.
prefilters
.
unshift
(
a
):
hb
.
prefilters
.
push
(
a
)}}),
r
.
speed
=
function
(
a
,
b
,
c
){
var
e
=
a
&&
"object"
==
typeof
a
?
r
.
extend
({},
a
):{
complete
:
c
||!
c
&&
b
||
r
.
isFunction
(
a
)
&&
a
,
duration
:
a
,
easing
:
c
&&
b
||
b
&&!
r
.
isFunction
(
b
)
&&
b
};
return
r
.
fx
.
off
||
d
.
hidden
?
e
.
duration
=
0
:
"number"
!=
typeof
e
.
duration
&&
(
e
.
duration
in
r
.
fx
.
speeds
?
e
.
duration
=
r
.
fx
.
speeds
[
e
.
duration
]:
e
.
duration
=
r
.
fx
.
speeds
.
_default
),
null
!=
e
.
queue
&&
e
.
queue
!==!
0
||
(
e
.
queue
=
"fx"
),
e
.
old
=
e
.
complete
,
e
.
complete
=
function
(){
r
.
isFunction
(
e
.
old
)
&&
e
.
old
.
call
(
this
),
e
.
queue
&&
r
.
dequeue
(
this
,
e
.
queue
)},
e
},
r
.
fn
.
extend
({
fadeTo
:
function
(
a
,
b
,
c
,
d
){
return
this
.
filter
(
ca
).
css
(
"opacity"
,
0
).
show
().
end
().
animate
({
opacity
:
b
},
a
,
c
,
d
)},
animate
:
function
(
a
,
b
,
c
,
d
){
var
e
=
r
.
isEmptyObject
(
a
),
f
=
r
.
speed
(
b
,
c
,
d
),
g
=
function
(){
var
b
=
hb
(
this
,
r
.
extend
({},
a
),
f
);(
e
||
V
.
get
(
this
,
"finish"
))
&&
b
.
stop
(
!
0
)};
return
g
.
finish
=
g
,
e
||
f
.
queue
===!
1
?
this
.
each
(
g
):
this
.
queue
(
f
.
queue
,
g
)},
stop
:
function
(
a
,
b
,
c
){
var
d
=
function
(
a
){
var
b
=
a
.
stop
;
delete
a
.
stop
,
b
(
c
)};
return
"string"
!=
typeof
a
&&
(
c
=
b
,
b
=
a
,
a
=
void
0
),
b
&&
a
!==!
1
&&
this
.
queue
(
a
||
"fx"
,[]),
this
.
each
(
function
(){
var
b
=!
0
,
e
=
null
!=
a
&&
a
+
"queueHooks"
,
f
=
r
.
timers
,
g
=
V
.
get
(
this
);
if
(
e
)
g
[
e
]
&&
g
[
e
].
stop
&&
d
(
g
[
e
]);
else
for
(
e
in
g
)
g
[
e
]
&&
g
[
e
].
stop
&&
ab
.
test
(
e
)
&&
d
(
g
[
e
]);
for
(
e
=
f
.
length
;
e
--
;)
f
[
e
].
elem
!==
this
||
null
!=
a
&&
f
[
e
].
queue
!==
a
||
(
f
[
e
].
anim
.
stop
(
c
),
b
=!
1
,
f
.
splice
(
e
,
1
));
!
b
&&
c
||
r
.
dequeue
(
this
,
a
)})},
finish
:
function
(
a
){
return
a
!==!
1
&&
(
a
=
a
||
"fx"
),
this
.
each
(
function
(){
var
b
,
c
=
V
.
get
(
this
),
d
=
c
[
a
+
"queue"
],
e
=
c
[
a
+
"queueHooks"
],
f
=
r
.
timers
,
g
=
d
?
d
.
length
:
0
;
for
(
c
.
finish
=!
0
,
r
.
queue
(
this
,
a
,[]),
e
&&
e
.
stop
&&
e
.
stop
.
call
(
this
,
!
0
),
b
=
f
.
length
;
b
--
;)
f
[
b
].
elem
===
this
&&
f
[
b
].
queue
===
a
&&
(
f
[
b
].
anim
.
stop
(
!
0
),
f
.
splice
(
b
,
1
));
for
(
b
=
0
;
b
<
g
;
b
++
)
d
[
b
]
&&
d
[
b
].
finish
&&
d
[
b
].
finish
.
call
(
this
);
delete
c
.
finish
})}}),
r
.
each
([
"toggle"
,
"show"
,
"hide"
],
function
(
a
,
b
){
var
c
=
r
.
fn
[
b
];
r
.
fn
[
b
]
=
function
(
a
,
d
,
e
){
return
null
==
a
||
"boolean"
==
typeof
a
?
c
.
apply
(
this
,
arguments
):
this
.
animate
(
db
(
b
,
!
0
),
a
,
d
,
e
)}}),
r
.
each
({
slideDown
:
db
(
"show"
),
slideUp
:
db
(
"hide"
),
slideToggle
:
db
(
"toggle"
),
fadeIn
:{
opacity
:
"show"
},
fadeOut
:{
opacity
:
"hide"
},
fadeToggle
:{
opacity
:
"toggle"
}},
function
(
a
,
b
){
r
.
fn
[
a
]
=
function
(
a
,
c
,
d
){
return
this
.
animate
(
b
,
a
,
c
,
d
)}}),
r
.
timers
=
[],
r
.
fx
.
tick
=
function
(){
var
a
,
b
=
0
,
c
=
r
.
timers
;
for
(
Za
=
r
.
now
();
b
<
c
.
length
;
b
++
)
a
=
c
[
b
],
a
()
||
c
[
b
]
!==
a
||
c
.
splice
(
b
--
,
1
);
c
.
length
||
r
.
fx
.
stop
(),
Za
=
void
0
},
r
.
fx
.
timer
=
function
(
a
){
r
.
timers
.
push
(
a
),
a
()?
r
.
fx
.
start
():
r
.
timers
.
pop
()},
r
.
fx
.
interval
=
13
,
r
.
fx
.
start
=
function
(){
$a
||
(
$a
=
a
.
requestAnimationFrame
?
a
.
requestAnimationFrame
(
bb
):
a
.
setInterval
(
r
.
fx
.
tick
,
r
.
fx
.
interval
))},
r
.
fx
.
stop
=
function
(){
a
.
cancelAnimationFrame
?
a
.
cancelAnimationFrame
(
$a
):
a
.
clearInterval
(
$a
),
$a
=
null
},
r
.
fx
.
speeds
=
{
slow
:
600
,
fast
:
200
,
_default
:
400
},
r
.
fn
.
delay
=
function
(
b
,
c
){
return
b
=
r
.
fx
?
r
.
fx
.
speeds
[
b
]
||
b
:
b
,
c
=
c
||
"fx"
,
this
.
queue
(
c
,
function
(
c
,
d
){
var
e
=
a
.
setTimeout
(
c
,
b
);
d
.
stop
=
function
(){
a
.
clearTimeout
(
e
)}})},
function
(){
var
a
=
d
.
createElement
(
"input"
),
b
=
d
.
createElement
(
"select"
),
c
=
b
.
appendChild
(
d
.
createElement
(
"option"
));
a
.
type
=
"checkbox"
,
o
.
checkOn
=
""
!==
a
.
value
,
o
.
optSelected
=
c
.
selected
,
a
=
d
.
createElement
(
"input"
),
a
.
value
=
"t"
,
a
.
type
=
"radio"
,
o
.
radioValue
=
"t"
===
a
.
value
}();
var
ib
,
jb
=
r
.
expr
.
attrHandle
;
r
.
fn
.
extend
({
attr
:
function
(
a
,
b
){
return
S
(
this
,
r
.
attr
,
a
,
b
,
arguments
.
length
>
1
)},
removeAttr
:
function
(
a
){
return
this
.
each
(
function
(){
r
.
removeAttr
(
this
,
a
)})}}),
r
.
extend
({
attr
:
function
(
a
,
b
,
c
){
var
d
,
e
,
f
=
a
.
nodeType
;
if
(
3
!==
f
&&
8
!==
f
&&
2
!==
f
)
return
"undefined"
==
typeof
a
.
getAttribute
?
r
.
prop
(
a
,
b
,
c
):(
1
===
f
&&
r
.
isXMLDoc
(
a
)
||
(
e
=
r
.
attrHooks
[
b
.
toLowerCase
()]
||
(
r
.
expr
.
match
.
bool
.
test
(
b
)?
ib
:
void
0
)),
void
0
!==
c
?
null
===
c
?
void
r
.
removeAttr
(
a
,
b
):
e
&&
"set"
in
e
&&
void
0
!==
(
d
=
e
.
set
(
a
,
c
,
b
))?
d
:(
a
.
setAttribute
(
b
,
c
+
""
),
c
):
e
&&
"get"
in
e
&&
null
!==
(
d
=
e
.
get
(
a
,
b
))?
d
:(
d
=
r
.
find
.
attr
(
a
,
b
),
null
==
d
?
void
0
:
d
))},
attrHooks
:{
type
:{
set
:
function
(
a
,
b
){
if
(
!
o
.
radioValue
&&
"radio"
===
b
&&
r
.
nodeName
(
a
,
"input"
)){
var
c
=
a
.
value
;
return
a
.
setAttribute
(
"type"
,
b
),
c
&&
(
a
.
value
=
c
),
b
}}}},
removeAttr
:
function
(
a
,
b
){
var
c
,
d
=
0
,
e
=
b
&&
b
.
match
(
K
);
if
(
e
&&
1
===
a
.
nodeType
)
while
(
c
=
e
[
d
++
])
a
.
removeAttribute
(
c
)}}),
ib
=
{
set
:
function
(
a
,
b
,
c
){
return
b
===!
1
?
r
.
removeAttr
(
a
,
c
):
a
.
setAttribute
(
c
,
c
),
c
}},
r
.
each
(
r
.
expr
.
match
.
bool
.
source
.
match
(
/
\w
+/g
),
function
(
a
,
b
){
var
c
=
jb
[
b
]
||
r
.
find
.
attr
;
jb
[
b
]
=
function
(
a
,
b
,
d
){
var
e
,
f
,
g
=
b
.
toLowerCase
();
return
d
||
(
f
=
jb
[
g
],
jb
[
g
]
=
e
,
e
=
null
!=
c
(
a
,
b
,
d
)?
g
:
null
,
jb
[
g
]
=
f
),
e
}});
var
kb
=
/^
(?:
input|select|textarea|button
)
$/i
,
lb
=
/^
(?:
a|area
)
$/i
;
r
.
fn
.
extend
({
prop
:
function
(
a
,
b
){
return
S
(
this
,
r
.
prop
,
a
,
b
,
arguments
.
length
>
1
)},
removeProp
:
function
(
a
){
return
this
.
each
(
function
(){
delete
this
[
r
.
propFix
[
a
]
||
a
]})}}),
r
.
extend
({
prop
:
function
(
a
,
b
,
c
){
var
d
,
e
,
f
=
a
.
nodeType
;
if
(
3
!==
f
&&
8
!==
f
&&
2
!==
f
)
return
1
===
f
&&
r
.
isXMLDoc
(
a
)
||
(
b
=
r
.
propFix
[
b
]
||
b
,
e
=
r
.
propHooks
[
b
]),
void
0
!==
c
?
e
&&
"set"
in
e
&&
void
0
!==
(
d
=
e
.
set
(
a
,
c
,
b
))?
d
:
a
[
b
]
=
c
:
e
&&
"get"
in
e
&&
null
!==
(
d
=
e
.
get
(
a
,
b
))?
d
:
a
[
b
]},
propHooks
:{
tabIndex
:{
get
:
function
(
a
){
var
b
=
r
.
find
.
attr
(
a
,
"tabindex"
);
return
b
?
parseInt
(
b
,
10
):
kb
.
test
(
a
.
nodeName
)
||
lb
.
test
(
a
.
nodeName
)
&&
a
.
href
?
0
:
-
1
}}},
propFix
:{
"for"
:
"htmlFor"
,
"class"
:
"className"
}}),
o
.
optSelected
||
(
r
.
propHooks
.
selected
=
{
get
:
function
(
a
){
var
b
=
a
.
parentNode
;
return
b
&&
b
.
parentNode
&&
b
.
parentNode
.
selectedIndex
,
null
},
set
:
function
(
a
){
var
b
=
a
.
parentNode
;
b
&&
(
b
.
selectedIndex
,
b
.
parentNode
&&
b
.
parentNode
.
selectedIndex
)}}),
r
.
each
([
"tabIndex"
,
"readOnly"
,
"maxLength"
,
"cellSpacing"
,
"cellPadding"
,
"rowSpan"
,
"colSpan"
,
"useMap"
,
"frameBorder"
,
"contentEditable"
],
function
(){
r
.
propFix
[
this
.
toLowerCase
()]
=
this
});
function
mb
(
a
){
var
b
=
a
.
match
(
K
)
||
[];
return
b
.
join
(
" "
)}
function
nb
(
a
){
return
a
.
getAttribute
&&
a
.
getAttribute
(
"class"
)
||
""
}
r
.
fn
.
extend
({
addClass
:
function
(
a
){
var
b
,
c
,
d
,
e
,
f
,
g
,
h
,
i
=
0
;
if
(
r
.
isFunction
(
a
))
return
this
.
each
(
function
(
b
){
r
(
this
).
addClass
(
a
.
call
(
this
,
b
,
nb
(
this
)))});
if
(
"string"
==
typeof
a
&&
a
){
b
=
a
.
match
(
K
)
||
[];
while
(
c
=
this
[
i
++
])
if
(
e
=
nb
(
c
),
d
=
1
===
c
.
nodeType
&&
" "
+
mb
(
e
)
+
" "
){
g
=
0
;
while
(
f
=
b
[
g
++
])
d
.
indexOf
(
" "
+
f
+
" "
)
<
0
&&
(
d
+=
f
+
" "
);
h
=
mb
(
d
),
e
!==
h
&&
c
.
setAttribute
(
"class"
,
h
)}}
return
this
},
removeClass
:
function
(
a
){
var
b
,
c
,
d
,
e
,
f
,
g
,
h
,
i
=
0
;
if
(
r
.
isFunction
(
a
))
return
this
.
each
(
function
(
b
){
r
(
this
).
removeClass
(
a
.
call
(
this
,
b
,
nb
(
this
)))});
if
(
!
arguments
.
length
)
return
this
.
attr
(
"class"
,
""
);
if
(
"string"
==
typeof
a
&&
a
){
b
=
a
.
match
(
K
)
||
[];
while
(
c
=
this
[
i
++
])
if
(
e
=
nb
(
c
),
d
=
1
===
c
.
nodeType
&&
" "
+
mb
(
e
)
+
" "
){
g
=
0
;
while
(
f
=
b
[
g
++
])
while
(
d
.
indexOf
(
" "
+
f
+
" "
)
>-
1
)
d
=
d
.
replace
(
" "
+
f
+
" "
,
" "
);
h
=
mb
(
d
),
e
!==
h
&&
c
.
setAttribute
(
"class"
,
h
)}}
return
this
},
toggleClass
:
function
(
a
,
b
){
var
c
=
typeof
a
;
return
"boolean"
==
typeof
b
&&
"string"
===
c
?
b
?
this
.
addClass
(
a
):
this
.
removeClass
(
a
):
r
.
isFunction
(
a
)?
this
.
each
(
function
(
c
){
r
(
this
).
toggleClass
(
a
.
call
(
this
,
c
,
nb
(
this
),
b
),
b
)}):
this
.
each
(
function
(){
var
b
,
d
,
e
,
f
;
if
(
"string"
===
c
){
d
=
0
,
e
=
r
(
this
),
f
=
a
.
match
(
K
)
||
[];
while
(
b
=
f
[
d
++
])
e
.
hasClass
(
b
)?
e
.
removeClass
(
b
):
e
.
addClass
(
b
)}
else
void
0
!==
a
&&
"boolean"
!==
c
||
(
b
=
nb
(
this
),
b
&&
V
.
set
(
this
,
"__className__"
,
b
),
this
.
setAttribute
&&
this
.
setAttribute
(
"class"
,
b
||
a
===!
1
?
""
:
V
.
get
(
this
,
"__className__"
)
||
""
))})},
hasClass
:
function
(
a
){
var
b
,
c
,
d
=
0
;
b
=
" "
+
a
+
" "
;
while
(
c
=
this
[
d
++
])
if
(
1
===
c
.
nodeType
&&
(
" "
+
mb
(
nb
(
c
))
+
" "
).
indexOf
(
b
)
>-
1
)
return
!
0
;
return
!
1
}});
var
ob
=
/
\r
/g
;
r
.
fn
.
extend
({
val
:
function
(
a
){
var
b
,
c
,
d
,
e
=
this
[
0
];{
if
(
arguments
.
length
)
return
d
=
r
.
isFunction
(
a
),
this
.
each
(
function
(
c
){
var
e
;
1
===
this
.
nodeType
&&
(
e
=
d
?
a
.
call
(
this
,
c
,
r
(
this
).
val
()):
a
,
null
==
e
?
e
=
""
:
"number"
==
typeof
e
?
e
+=
""
:
r
.
isArray
(
e
)
&&
(
e
=
r
.
map
(
e
,
function
(
a
){
return
null
==
a
?
""
:
a
+
""
})),
b
=
r
.
valHooks
[
this
.
type
]
||
r
.
valHooks
[
this
.
nodeName
.
toLowerCase
()],
b
&&
"set"
in
b
&&
void
0
!==
b
.
set
(
this
,
e
,
"value"
)
||
(
this
.
value
=
e
))});
if
(
e
)
return
b
=
r
.
valHooks
[
e
.
type
]
||
r
.
valHooks
[
e
.
nodeName
.
toLowerCase
()],
b
&&
"get"
in
b
&&
void
0
!==
(
c
=
b
.
get
(
e
,
"value"
))?
c
:(
c
=
e
.
value
,
"string"
==
typeof
c
?
c
.
replace
(
ob
,
""
):
null
==
c
?
""
:
c
)}}}),
r
.
extend
({
valHooks
:{
option
:{
get
:
function
(
a
){
var
b
=
r
.
find
.
attr
(
a
,
"value"
);
return
null
!=
b
?
b
:
mb
(
r
.
text
(
a
))}},
select
:{
get
:
function
(
a
){
var
b
,
c
,
d
,
e
=
a
.
options
,
f
=
a
.
selectedIndex
,
g
=
"select-one"
===
a
.
type
,
h
=
g
?
null
:[],
i
=
g
?
f
+
1
:
e
.
length
;
for
(
d
=
f
<
0
?
i
:
g
?
f
:
0
;
d
<
i
;
d
++
)
if
(
c
=
e
[
d
],(
c
.
selected
||
d
===
f
)
&&!
c
.
disabled
&&
(
!
c
.
parentNode
.
disabled
||!
r
.
nodeName
(
c
.
parentNode
,
"optgroup"
))){
if
(
b
=
r
(
c
).
val
(),
g
)
return
b
;
h
.
push
(
b
)}
return
h
},
set
:
function
(
a
,
b
){
var
c
,
d
,
e
=
a
.
options
,
f
=
r
.
makeArray
(
b
),
g
=
e
.
length
;
while
(
g
--
)
d
=
e
[
g
],(
d
.
selected
=
r
.
inArray
(
r
.
valHooks
.
option
.
get
(
d
),
f
)
>-
1
)
&&
(
c
=!
0
);
return
c
||
(
a
.
selectedIndex
=-
1
),
f
}}}}),
r
.
each
([
"radio"
,
"checkbox"
],
function
(){
r
.
valHooks
[
this
]
=
{
set
:
function
(
a
,
b
){
if
(
r
.
isArray
(
b
))
return
a
.
checked
=
r
.
inArray
(
r
(
a
).
val
(),
b
)
>-
1
}},
o
.
checkOn
||
(
r
.
valHooks
[
this
].
get
=
function
(
a
){
return
null
===
a
.
getAttribute
(
"value"
)?
"on"
:
a
.
value
})});
var
pb
=
/^
(?:
focusinfocus|focusoutblur
)
$/
;
r
.
extend
(
r
.
event
,{
trigger
:
function
(
b
,
c
,
e
,
f
){
var
g
,
h
,
i
,
j
,
k
,
m
,
n
,
o
=
[
e
||
d
],
p
=
l
.
call
(
b
,
"type"
)?
b
.
type
:
b
,
q
=
l
.
call
(
b
,
"namespace"
)?
b
.
namespace
.
split
(
"."
):[];
if
(
h
=
i
=
e
=
e
||
d
,
3
!==
e
.
nodeType
&&
8
!==
e
.
nodeType
&&!
pb
.
test
(
p
+
r
.
event
.
triggered
)
&&
(
p
.
indexOf
(
"."
)
>-
1
&&
(
q
=
p
.
split
(
"."
),
p
=
q
.
shift
(),
q
.
sort
()),
k
=
p
.
indexOf
(
":"
)
<
0
&&
"on"
+
p
,
b
=
b
[
r
.
expando
]?
b
:
new
r
.
Event
(
p
,
"object"
==
typeof
b
&&
b
),
b
.
isTrigger
=
f
?
2
:
3
,
b
.
namespace
=
q
.
join
(
"."
),
b
.
rnamespace
=
b
.
namespace
?
new
RegExp
(
"(^|
\\
.)"
+
q
.
join
(
"
\\
.(?:.*
\\
.|)"
)
+
"(
\\
.|$)"
):
null
,
b
.
result
=
void
0
,
b
.
target
||
(
b
.
target
=
e
),
c
=
null
==
c
?[
b
]:
r
.
makeArray
(
c
,[
b
]),
n
=
r
.
event
.
special
[
p
]
||
{},
f
||!
n
.
trigger
||
n
.
trigger
.
apply
(
e
,
c
)
!==!
1
)){
if
(
!
f
&&!
n
.
noBubble
&&!
r
.
isWindow
(
e
)){
for
(
j
=
n
.
delegateType
||
p
,
pb
.
test
(
j
+
p
)
||
(
h
=
h
.
parentNode
);
h
;
h
=
h
.
parentNode
)
o
.
push
(
h
),
i
=
h
;
i
===
(
e
.
ownerDocument
||
d
)
&&
o
.
push
(
i
.
defaultView
||
i
.
parentWindow
||
a
)}
g
=
0
;
while
((
h
=
o
[
g
++
])
&&!
b
.
isPropagationStopped
())
b
.
type
=
g
>
1
?
j
:
n
.
bindType
||
p
,
m
=
(
V
.
get
(
h
,
"events"
)
||
{})[
b
.
type
]
&&
V
.
get
(
h
,
"handle"
),
m
&&
m
.
apply
(
h
,
c
),
m
=
k
&&
h
[
k
],
m
&&
m
.
apply
&&
T
(
h
)
&&
(
b
.
result
=
m
.
apply
(
h
,
c
),
b
.
result
===!
1
&&
b
.
preventDefault
());
return
b
.
type
=
p
,
f
||
b
.
isDefaultPrevented
()
||
n
.
_default
&&
n
.
_default
.
apply
(
o
.
pop
(),
c
)
!==!
1
||!
T
(
e
)
||
k
&&
r
.
isFunction
(
e
[
p
])
&&!
r
.
isWindow
(
e
)
&&
(
i
=
e
[
k
],
i
&&
(
e
[
k
]
=
null
),
r
.
event
.
triggered
=
p
,
e
[
p
](),
r
.
event
.
triggered
=
void
0
,
i
&&
(
e
[
k
]
=
i
)),
b
.
result
}},
simulate
:
function
(
a
,
b
,
c
){
var
d
=
r
.
extend
(
new
r
.
Event
,
c
,{
type
:
a
,
isSimulated
:
!
0
});
r
.
event
.
trigger
(
d
,
null
,
b
)}}),
r
.
fn
.
extend
({
trigger
:
function
(
a
,
b
){
return
this
.
each
(
function
(){
r
.
event
.
trigger
(
a
,
b
,
this
)})},
triggerHandler
:
function
(
a
,
b
){
var
c
=
this
[
0
];
if
(
c
)
return
r
.
event
.
trigger
(
a
,
b
,
c
,
!
0
)}}),
r
.
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
(
a
,
b
){
r
.
fn
[
b
]
=
function
(
a
,
c
){
return
arguments
.
length
>
0
?
this
.
on
(
b
,
null
,
a
,
c
):
this
.
trigger
(
b
)}}),
r
.
fn
.
extend
({
hover
:
function
(
a
,
b
){
return
this
.
mouseenter
(
a
).
mouseleave
(
b
||
a
)}}),
o
.
focusin
=
"onfocusin"
in
a
,
o
.
focusin
||
r
.
each
({
focus
:
"focusin"
,
blur
:
"focusout"
},
function
(
a
,
b
){
var
c
=
function
(
a
){
r
.
event
.
simulate
(
b
,
a
.
target
,
r
.
event
.
fix
(
a
))};
r
.
event
.
special
[
b
]
=
{
setup
:
function
(){
var
d
=
this
.
ownerDocument
||
this
,
e
=
V
.
access
(
d
,
b
);
e
||
d
.
addEventListener
(
a
,
c
,
!
0
),
V
.
access
(
d
,
b
,(
e
||
0
)
+
1
)},
teardown
:
function
(){
var
d
=
this
.
ownerDocument
||
this
,
e
=
V
.
access
(
d
,
b
)
-
1
;
e
?
V
.
access
(
d
,
b
,
e
):(
d
.
removeEventListener
(
a
,
c
,
!
0
),
V
.
remove
(
d
,
b
))}}});
var
qb
=
a
.
location
,
rb
=
r
.
now
(),
sb
=
/
\?
/
;
r
.
parseXML
=
function
(
b
){
var
c
;
if
(
!
b
||
"string"
!=
typeof
b
)
return
null
;
try
{
c
=
(
new
a
.
DOMParser
).
parseFromString
(
b
,
"text/xml"
)}
catch
(
d
){
c
=
void
0
}
return
c
&&!
c
.
getElementsByTagName
(
"parsererror"
).
length
||
r
.
error
(
"Invalid XML: "
+
b
),
c
};
var
tb
=
/
\[\]
$/
,
ub
=
/
\r?\n
/g
,
vb
=
/^
(?:
submit|button|image|reset|file
)
$/i
,
wb
=
/^
(?:
input|select|textarea|keygen
)
/i
;
function
xb
(
a
,
b
,
c
,
d
){
var
e
;
if
(
r
.
isArray
(
b
))
r
.
each
(
b
,
function
(
b
,
e
){
c
||
tb
.
test
(
a
)?
d
(
a
,
e
):
xb
(
a
+
"["
+
(
"object"
==
typeof
e
&&
null
!=
e
?
b
:
""
)
+
"]"
,
e
,
c
,
d
)});
else
if
(
c
||
"object"
!==
r
.
type
(
b
))
d
(
a
,
b
);
else
for
(
e
in
b
)
xb
(
a
+
"["
+
e
+
"]"
,
b
[
e
],
c
,
d
)}
r
.
param
=
function
(
a
,
b
){
var
c
,
d
=
[],
e
=
function
(
a
,
b
){
var
c
=
r
.
isFunction
(
b
)?
b
():
b
;
d
[
d
.
length
]
=
encodeURIComponent
(
a
)
+
"="
+
encodeURIComponent
(
null
==
c
?
""
:
c
)};
if
(
r
.
isArray
(
a
)
||
a
.
jquery
&&!
r
.
isPlainObject
(
a
))
r
.
each
(
a
,
function
(){
e
(
this
.
name
,
this
.
value
)});
else
for
(
c
in
a
)
xb
(
c
,
a
[
c
],
b
,
e
);
return
d
.
join
(
"&"
)},
r
.
fn
.
extend
({
serialize
:
function
(){
return
r
.
param
(
this
.
serializeArray
())},
serializeArray
:
function
(){
return
this
.
map
(
function
(){
var
a
=
r
.
prop
(
this
,
"elements"
);
return
a
?
r
.
makeArray
(
a
):
this
}).
filter
(
function
(){
var
a
=
this
.
type
;
return
this
.
name
&&!
r
(
this
).
is
(
":disabled"
)
&&
wb
.
test
(
this
.
nodeName
)
&&!
vb
.
test
(
a
)
&&
(
this
.
checked
||!
ia
.
test
(
a
))}).
map
(
function
(
a
,
b
){
var
c
=
r
(
this
).
val
();
return
null
==
c
?
null
:
r
.
isArray
(
c
)?
r
.
map
(
c
,
function
(
a
){
return
{
name
:
b
.
name
,
value
:
a
.
replace
(
ub
,
"
\
r
\n
"
)}}):{
name
:
b
.
name
,
value
:
c
.
replace
(
ub
,
"
\
r
\n
"
)}}).
get
()}});
var
yb
=
/%20/g
,
zb
=
/#.*$/
,
Ab
=
/
([
?&
])
_=
[^
&
]
*/
,
Bb
=
/^
(
.*
?)
:
[
\t]
*
([^\r\n]
*
)
$/gm
,
Cb
=
/^
(?:
about|app|app-storage|.+-extension|file|res|widget
)
:$/
,
Db
=
/^
(?:
GET|HEAD
)
$/
,
Eb
=
/^
\/\/
/
,
Fb
=
{},
Gb
=
{},
Hb
=
"*/"
.
concat
(
"*"
),
Ib
=
d
.
createElement
(
"a"
);
Ib
.
href
=
qb
.
href
;
function
Jb
(
a
){
return
function
(
b
,
c
){
"string"
!=
typeof
b
&&
(
c
=
b
,
b
=
"*"
);
var
d
,
e
=
0
,
f
=
b
.
toLowerCase
().
match
(
K
)
||
[];
if
(
r
.
isFunction
(
c
))
while
(
d
=
f
[
e
++
])
"+"
===
d
[
0
]?(
d
=
d
.
slice
(
1
)
||
"*"
,(
a
[
d
]
=
a
[
d
]
||
[]).
unshift
(
c
)):(
a
[
d
]
=
a
[
d
]
||
[]).
push
(
c
)}}
function
Kb
(
a
,
b
,
c
,
d
){
var
e
=
{},
f
=
a
===
Gb
;
function
g
(
h
){
var
i
;
return
e
[
h
]
=!
0
,
r
.
each
(
a
[
h
]
||
[],
function
(
a
,
h
){
var
j
=
h
(
b
,
c
,
d
);
return
"string"
!=
typeof
j
||
f
||
e
[
j
]?
f
?
!
(
i
=
j
):
void
0
:(
b
.
dataTypes
.
unshift
(
j
),
g
(
j
),
!
1
)}),
i
}
return
g
(
b
.
dataTypes
[
0
])
||!
e
[
"*"
]
&&
g
(
"*"
)}
function
Lb
(
a
,
b
){
var
c
,
d
,
e
=
r
.
ajaxSettings
.
flatOptions
||
{};
for
(
c
in
b
)
void
0
!==
b
[
c
]
&&
((
e
[
c
]?
a
:
d
||
(
d
=
{}))[
c
]
=
b
[
c
]);
return
d
&&
r
.
extend
(
!
0
,
a
,
d
),
a
}
function
Mb
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
=
a
.
contents
,
i
=
a
.
dataTypes
;
while
(
"*"
===
i
[
0
])
i
.
shift
(),
void
0
===
d
&&
(
d
=
a
.
mimeType
||
b
.
getResponseHeader
(
"Content-Type"
));
if
(
d
)
for
(
e
in
h
)
if
(
h
[
e
]
&&
h
[
e
].
test
(
d
)){
i
.
unshift
(
e
);
break
}
if
(
i
[
0
]
in
c
)
f
=
i
[
0
];
else
{
for
(
e
in
c
){
if
(
!
i
[
0
]
||
a
.
converters
[
e
+
" "
+
i
[
0
]]){
f
=
e
;
break
}
g
||
(
g
=
e
)}
f
=
f
||
g
}
if
(
f
)
return
f
!==
i
[
0
]
&&
i
.
unshift
(
f
),
c
[
f
]}
function
Nb
(
a
,
b
,
c
,
d
){
var
e
,
f
,
g
,
h
,
i
,
j
=
{},
k
=
a
.
dataTypes
.
slice
();
if
(
k
[
1
])
for
(
g
in
a
.
converters
)
j
[
g
.
toLowerCase
()]
=
a
.
converters
[
g
];
f
=
k
.
shift
();
while
(
f
)
if
(
a
.
responseFields
[
f
]
&&
(
c
[
a
.
responseFields
[
f
]]
=
b
),
!
i
&&
d
&&
a
.
dataFilter
&&
(
b
=
a
.
dataFilter
(
b
,
a
.
dataType
)),
i
=
f
,
f
=
k
.
shift
())
if
(
"*"
===
f
)
f
=
i
;
else
if
(
"*"
!==
i
&&
i
!==
f
){
if
(
g
=
j
[
i
+
" "
+
f
]
||
j
[
"* "
+
f
],
!
g
)
for
(
e
in
j
)
if
(
h
=
e
.
split
(
" "
),
h
[
1
]
===
f
&&
(
g
=
j
[
i
+
" "
+
h
[
0
]]
||
j
[
"* "
+
h
[
0
]])){
g
===!
0
?
g
=
j
[
e
]:
j
[
e
]
!==!
0
&&
(
f
=
h
[
0
],
k
.
unshift
(
h
[
1
]));
break
}
if
(
g
!==!
0
)
if
(
g
&&
a
[
"throws"
])
b
=
g
(
b
);
else
try
{
b
=
g
(
b
)}
catch
(
l
){
return
{
state
:
"parsererror"
,
error
:
g
?
l
:
"No conversion from "
+
i
+
" to "
+
f
}}}
return
{
state
:
"success"
,
data
:
b
}}
r
.
extend
({
active
:
0
,
lastModified
:{},
etag
:{},
ajaxSettings
:{
url
:
qb
.
href
,
type
:
"GET"
,
isLocal
:
Cb
.
test
(
qb
.
protocol
),
global
:
!
0
,
processData
:
!
0
,
async
:
!
0
,
contentType
:
"application/x-www-form-urlencoded; charset=UTF-8"
,
accepts
:{
"*"
:
Hb
,
text
:
"text/plain"
,
html
:
"text/html"
,
xml
:
"application/xml, text/xml"
,
json
:
"application/json, text/javascript"
},
contents
:{
xml
:
/
\b
xml
\b
/
,
html
:
/
\b
html/
,
json
:
/
\b
json
\b
/
},
responseFields
:{
xml
:
"responseXML"
,
text
:
"responseText"
,
json
:
"responseJSON"
},
converters
:{
"* text"
:
String
,
"text html"
:
!
0
,
"text json"
:
JSON
.
parse
,
"text xml"
:
r
.
parseXML
},
flatOptions
:{
url
:
!
0
,
context
:
!
0
}},
ajaxSetup
:
function
(
a
,
b
){
return
b
?
Lb
(
Lb
(
a
,
r
.
ajaxSettings
),
b
):
Lb
(
r
.
ajaxSettings
,
a
)},
ajaxPrefilter
:
Jb
(
Fb
),
ajaxTransport
:
Jb
(
Gb
),
ajax
:
function
(
b
,
c
){
"object"
==
typeof
b
&&
(
c
=
b
,
b
=
void
0
),
c
=
c
||
{};
var
e
,
f
,
g
,
h
,
i
,
j
,
k
,
l
,
m
,
n
,
o
=
r
.
ajaxSetup
({},
c
),
p
=
o
.
context
||
o
,
q
=
o
.
context
&&
(
p
.
nodeType
||
p
.
jquery
)?
r
(
p
):
r
.
event
,
s
=
r
.
Deferred
(),
t
=
r
.
Callbacks
(
"once memory"
),
u
=
o
.
statusCode
||
{},
v
=
{},
w
=
{},
x
=
"canceled"
,
y
=
{
readyState
:
0
,
getResponseHeader
:
function
(
a
){
var
b
;
if
(
k
){
if
(
!
h
){
h
=
{};
while
(
b
=
Bb
.
exec
(
g
))
h
[
b
[
1
].
toLowerCase
()]
=
b
[
2
]}
b
=
h
[
a
.
toLowerCase
()]}
return
null
==
b
?
null
:
b
},
getAllResponseHeaders
:
function
(){
return
k
?
g
:
null
},
setRequestHeader
:
function
(
a
,
b
){
return
null
==
k
&&
(
a
=
w
[
a
.
toLowerCase
()]
=
w
[
a
.
toLowerCase
()]
||
a
,
v
[
a
]
=
b
),
this
},
overrideMimeType
:
function
(
a
){
return
null
==
k
&&
(
o
.
mimeType
=
a
),
this
},
statusCode
:
function
(
a
){
var
b
;
if
(
a
)
if
(
k
)
y
.
always
(
a
[
y
.
status
]);
else
for
(
b
in
a
)
u
[
b
]
=
[
u
[
b
],
a
[
b
]];
return
this
},
abort
:
function
(
a
){
var
b
=
a
||
x
;
return
e
&&
e
.
abort
(
b
),
A
(
0
,
b
),
this
}};
if
(
s
.
promise
(
y
),
o
.
url
=
((
b
||
o
.
url
||
qb
.
href
)
+
""
).
replace
(
Eb
,
qb
.
protocol
+
"//"
),
o
.
type
=
c
.
method
||
c
.
type
||
o
.
method
||
o
.
type
,
o
.
dataTypes
=
(
o
.
dataType
||
"*"
).
toLowerCase
().
match
(
K
)
||
[
""
],
null
==
o
.
crossDomain
){
j
=
d
.
createElement
(
"a"
);
try
{
j
.
href
=
o
.
url
,
j
.
href
=
j
.
href
,
o
.
crossDomain
=
Ib
.
protocol
+
"//"
+
Ib
.
host
!=
j
.
protocol
+
"//"
+
j
.
host
}
catch
(
z
){
o
.
crossDomain
=!
0
}}
if
(
o
.
data
&&
o
.
processData
&&
"string"
!=
typeof
o
.
data
&&
(
o
.
data
=
r
.
param
(
o
.
data
,
o
.
traditional
)),
Kb
(
Fb
,
o
,
c
,
y
),
k
)
return
y
;
l
=
r
.
event
&&
o
.
global
,
l
&&
0
===
r
.
active
++&&
r
.
event
.
trigger
(
"ajaxStart"
),
o
.
type
=
o
.
type
.
toUpperCase
(),
o
.
hasContent
=!
Db
.
test
(
o
.
type
),
f
=
o
.
url
.
replace
(
zb
,
""
),
o
.
hasContent
?
o
.
data
&&
o
.
processData
&&
0
===
(
o
.
contentType
||
""
).
indexOf
(
"application/x-www-form-urlencoded"
)
&&
(
o
.
data
=
o
.
data
.
replace
(
yb
,
"+"
)):(
n
=
o
.
url
.
slice
(
f
.
length
),
o
.
data
&&
(
f
+=
(
sb
.
test
(
f
)?
"&"
:
"?"
)
+
o
.
data
,
delete
o
.
data
),
o
.
cache
===!
1
&&
(
f
=
f
.
replace
(
Ab
,
"$1"
),
n
=
(
sb
.
test
(
f
)?
"&"
:
"?"
)
+
"_="
+
rb
++
+
n
),
o
.
url
=
f
+
n
),
o
.
ifModified
&&
(
r
.
lastModified
[
f
]
&&
y
.
setRequestHeader
(
"If-Modified-Since"
,
r
.
lastModified
[
f
]),
r
.
etag
[
f
]
&&
y
.
setRequestHeader
(
"If-None-Match"
,
r
.
etag
[
f
])),(
o
.
data
&&
o
.
hasContent
&&
o
.
contentType
!==!
1
||
c
.
contentType
)
&&
y
.
setRequestHeader
(
"Content-Type"
,
o
.
contentType
),
y
.
setRequestHeader
(
"Accept"
,
o
.
dataTypes
[
0
]
&&
o
.
accepts
[
o
.
dataTypes
[
0
]]?
o
.
accepts
[
o
.
dataTypes
[
0
]]
+
(
"*"
!==
o
.
dataTypes
[
0
]?
", "
+
Hb
+
"; q=0.01"
:
""
):
o
.
accepts
[
"*"
]);
for
(
m
in
o
.
headers
)
y
.
setRequestHeader
(
m
,
o
.
headers
[
m
]);
if
(
o
.
beforeSend
&&
(
o
.
beforeSend
.
call
(
p
,
y
,
o
)
===!
1
||
k
))
return
y
.
abort
();
if
(
x
=
"abort"
,
t
.
add
(
o
.
complete
),
y
.
done
(
o
.
success
),
y
.
fail
(
o
.
error
),
e
=
Kb
(
Gb
,
o
,
c
,
y
)){
if
(
y
.
readyState
=
1
,
l
&&
q
.
trigger
(
"ajaxSend"
,[
y
,
o
]),
k
)
return
y
;
o
.
async
&&
o
.
timeout
>
0
&&
(
i
=
a
.
setTimeout
(
function
(){
y
.
abort
(
"timeout"
)},
o
.
timeout
));
try
{
k
=!
1
,
e
.
send
(
v
,
A
)}
catch
(
z
){
if
(
k
)
throw
z
;
A
(
-
1
,
z
)}}
else
A
(
-
1
,
"No Transport"
);
function
A
(
b
,
c
,
d
,
h
){
var
j
,
m
,
n
,
v
,
w
,
x
=
c
;
k
||
(
k
=!
0
,
i
&&
a
.
clearTimeout
(
i
),
e
=
void
0
,
g
=
h
||
""
,
y
.
readyState
=
b
>
0
?
4
:
0
,
j
=
b
>=
200
&&
b
<
300
||
304
===
b
,
d
&&
(
v
=
Mb
(
o
,
y
,
d
)),
v
=
Nb
(
o
,
v
,
y
,
j
),
j
?(
o
.
ifModified
&&
(
w
=
y
.
getResponseHeader
(
"Last-Modified"
),
w
&&
(
r
.
lastModified
[
f
]
=
w
),
w
=
y
.
getResponseHeader
(
"etag"
),
w
&&
(
r
.
etag
[
f
]
=
w
)),
204
===
b
||
"HEAD"
===
o
.
type
?
x
=
"nocontent"
:
304
===
b
?
x
=
"notmodified"
:(
x
=
v
.
state
,
m
=
v
.
data
,
n
=
v
.
error
,
j
=!
n
)):(
n
=
x
,
!
b
&&
x
||
(
x
=
"error"
,
b
<
0
&&
(
b
=
0
))),
y
.
status
=
b
,
y
.
statusText
=
(
c
||
x
)
+
""
,
j
?
s
.
resolveWith
(
p
,[
m
,
x
,
y
]):
s
.
rejectWith
(
p
,[
y
,
x
,
n
]),
y
.
statusCode
(
u
),
u
=
void
0
,
l
&&
q
.
trigger
(
j
?
"ajaxSuccess"
:
"ajaxError"
,[
y
,
o
,
j
?
m
:
n
]),
t
.
fireWith
(
p
,[
y
,
x
]),
l
&&
(
q
.
trigger
(
"ajaxComplete"
,[
y
,
o
]),
--
r
.
active
||
r
.
event
.
trigger
(
"ajaxStop"
)))}
return
y
},
getJSON
:
function
(
a
,
b
,
c
){
return
r
.
get
(
a
,
b
,
c
,
"json"
)},
getScript
:
function
(
a
,
b
){
return
r
.
get
(
a
,
void
0
,
b
,
"script"
)}}),
r
.
each
([
"get"
,
"post"
],
function
(
a
,
b
){
r
[
b
]
=
function
(
a
,
c
,
d
,
e
){
return
r
.
isFunction
(
c
)
&&
(
e
=
e
||
d
,
d
=
c
,
c
=
void
0
),
r
.
ajax
(
r
.
extend
({
url
:
a
,
type
:
b
,
dataType
:
e
,
data
:
c
,
success
:
d
},
r
.
isPlainObject
(
a
)
&&
a
))}}),
r
.
_evalUrl
=
function
(
a
){
return
r
.
ajax
({
url
:
a
,
type
:
"GET"
,
dataType
:
"script"
,
cache
:
!
0
,
async
:
!
1
,
global
:
!
1
,
"throws"
:
!
0
})},
r
.
fn
.
extend
({
wrapAll
:
function
(
a
){
var
b
;
return
this
[
0
]
&&
(
r
.
isFunction
(
a
)
&&
(
a
=
a
.
call
(
this
[
0
])),
b
=
r
(
a
,
this
[
0
].
ownerDocument
).
eq
(
0
).
clone
(
!
0
),
this
[
0
].
parentNode
&&
b
.
insertBefore
(
this
[
0
]),
b
.
map
(
function
(){
var
a
=
this
;
while
(
a
.
firstElementChild
)
a
=
a
.
firstElementChild
;
return
a
}).
append
(
this
)),
this
},
wrapInner
:
function
(
a
){
return
r
.
isFunction
(
a
)?
this
.
each
(
function
(
b
){
r
(
this
).
wrapInner
(
a
.
call
(
this
,
b
))}):
this
.
each
(
function
(){
var
b
=
r
(
this
),
c
=
b
.
contents
();
c
.
length
?
c
.
wrapAll
(
a
):
b
.
append
(
a
)})},
wrap
:
function
(
a
){
var
b
=
r
.
isFunction
(
a
);
return
this
.
each
(
function
(
c
){
r
(
this
).
wrapAll
(
b
?
a
.
call
(
this
,
c
):
a
)})},
unwrap
:
function
(
a
){
return
this
.
parent
(
a
).
not
(
"body"
).
each
(
function
(){
r
(
this
).
replaceWith
(
this
.
childNodes
)}),
this
}}),
r
.
expr
.
pseudos
.
hidden
=
function
(
a
){
return
!
r
.
expr
.
pseudos
.
visible
(
a
)},
r
.
expr
.
pseudos
.
visible
=
function
(
a
){
return
!!
(
a
.
offsetWidth
||
a
.
offsetHeight
||
a
.
getClientRects
().
length
)},
r
.
ajaxSettings
.
xhr
=
function
(){
try
{
return
new
a
.
XMLHttpRequest
}
catch
(
b
){}};
var
Ob
=
{
0
:
200
,
1223
:
204
},
Pb
=
r
.
ajaxSettings
.
xhr
();
o
.
cors
=!!
Pb
&&
"withCredentials"
in
Pb
,
o
.
ajax
=
Pb
=!!
Pb
,
r
.
ajaxTransport
(
function
(
b
){
var
c
,
d
;
if
(
o
.
cors
||
Pb
&&!
b
.
crossDomain
)
return
{
send
:
function
(
e
,
f
){
var
g
,
h
=
b
.
xhr
();
if
(
h
.
open
(
b
.
type
,
b
.
url
,
b
.
async
,
b
.
username
,
b
.
password
),
b
.
xhrFields
)
for
(
g
in
b
.
xhrFields
)
h
[
g
]
=
b
.
xhrFields
[
g
];
b
.
mimeType
&&
h
.
overrideMimeType
&&
h
.
overrideMimeType
(
b
.
mimeType
),
b
.
crossDomain
||
e
[
"X-Requested-With"
]
||
(
e
[
"X-Requested-With"
]
=
"XMLHttpRequest"
);
for
(
g
in
e
)
h
.
setRequestHeader
(
g
,
e
[
g
]);
c
=
function
(
a
){
return
function
(){
c
&&
(
c
=
d
=
h
.
onload
=
h
.
onerror
=
h
.
onabort
=
h
.
onreadystatechange
=
null
,
"abort"
===
a
?
h
.
abort
():
"error"
===
a
?
"number"
!=
typeof
h
.
status
?
f
(
0
,
"error"
):
f
(
h
.
status
,
h
.
statusText
):
f
(
Ob
[
h
.
status
]
||
h
.
status
,
h
.
statusText
,
"text"
!==
(
h
.
responseType
||
"text"
)
||
"string"
!=
typeof
h
.
responseText
?{
binary
:
h
.
response
}:{
text
:
h
.
responseText
},
h
.
getAllResponseHeaders
()))}},
h
.
onload
=
c
(),
d
=
h
.
onerror
=
c
(
"error"
),
void
0
!==
h
.
onabort
?
h
.
onabort
=
d
:
h
.
onreadystatechange
=
function
(){
4
===
h
.
readyState
&&
a
.
setTimeout
(
function
(){
c
&&
d
()})},
c
=
c
(
"abort"
);
try
{
h
.
send
(
b
.
hasContent
&&
b
.
data
||
null
)}
catch
(
i
){
if
(
c
)
throw
i
}},
abort
:
function
(){
c
&&
c
()}}}),
r
.
ajaxPrefilter
(
function
(
a
){
a
.
crossDomain
&&
(
a
.
contents
.
script
=!
1
)}),
r
.
ajaxSetup
({
accepts
:{
script
:
"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
},
contents
:{
script
:
/
\b(?:
java|ecma
)
script
\b
/
},
converters
:{
"text script"
:
function
(
a
){
return
r
.
globalEval
(
a
),
a
}}}),
r
.
ajaxPrefilter
(
"script"
,
function
(
a
){
void
0
===
a
.
cache
&&
(
a
.
cache
=!
1
),
a
.
crossDomain
&&
(
a
.
type
=
"GET"
)}),
r
.
ajaxTransport
(
"script"
,
function
(
a
){
if
(
a
.
crossDomain
){
var
b
,
c
;
return
{
send
:
function
(
e
,
f
){
b
=
r
(
"<script>"
).
prop
({
charset
:
a
.
scriptCharset
,
src
:
a
.
url
}).
on
(
"load error"
,
c
=
function
(
a
){
b
.
remove
(),
c
=
null
,
a
&&
f
(
"error"
===
a
.
type
?
404
:
200
,
a
.
type
)}),
d
.
head
.
appendChild
(
b
[
0
])},
abort
:
function
(){
c
&&
c
()}}}});
var
Qb
=
[],
Rb
=
/
(
=
)\?(?=
&|$
)
|
\?\?
/
;
r
.
ajaxSetup
({
jsonp
:
"callback"
,
jsonpCallback
:
function
(){
var
a
=
Qb
.
pop
()
||
r
.
expando
+
"_"
+
rb
++
;
return
this
[
a
]
=!
0
,
a
}}),
r
.
ajaxPrefilter
(
"json jsonp"
,
function
(
b
,
c
,
d
){
var
e
,
f
,
g
,
h
=
b
.
jsonp
!==!
1
&&
(
Rb
.
test
(
b
.
url
)?
"url"
:
"string"
==
typeof
b
.
data
&&
0
===
(
b
.
contentType
||
""
).
indexOf
(
"application/x-www-form-urlencoded"
)
&&
Rb
.
test
(
b
.
data
)
&&
"data"
);
if
(
h
||
"jsonp"
===
b
.
dataTypes
[
0
])
return
e
=
b
.
jsonpCallback
=
r
.
isFunction
(
b
.
jsonpCallback
)?
b
.
jsonpCallback
():
b
.
jsonpCallback
,
h
?
b
[
h
]
=
b
[
h
].
replace
(
Rb
,
"$1"
+
e
):
b
.
jsonp
!==!
1
&&
(
b
.
url
+=
(
sb
.
test
(
b
.
url
)?
"&"
:
"?"
)
+
b
.
jsonp
+
"="
+
e
),
b
.
converters
[
"script json"
]
=
function
(){
return
g
||
r
.
error
(
e
+
" was not called"
),
g
[
0
]},
b
.
dataTypes
[
0
]
=
"json"
,
f
=
a
[
e
],
a
[
e
]
=
function
(){
g
=
arguments
},
d
.
always
(
function
(){
void
0
===
f
?
r
(
a
).
removeProp
(
e
):
a
[
e
]
=
f
,
b
[
e
]
&&
(
b
.
jsonpCallback
=
c
.
jsonpCallback
,
Qb
.
push
(
e
)),
g
&&
r
.
isFunction
(
f
)
&&
f
(
g
[
0
]),
g
=
f
=
void
0
}),
"script"
}),
o
.
createHTMLDocument
=
function
(){
var
a
=
d
.
implementation
.
createHTMLDocument
(
""
).
body
;
return
a
.
innerHTML
=
"<form></form><form></form>"
,
2
===
a
.
childNodes
.
length
}(),
r
.
parseHTML
=
function
(
a
,
b
,
c
){
if
(
"string"
!=
typeof
a
)
return
[];
"boolean"
==
typeof
b
&&
(
c
=
b
,
b
=!
1
);
var
e
,
f
,
g
;
return
b
||
(
o
.
createHTMLDocument
?(
b
=
d
.
implementation
.
createHTMLDocument
(
""
),
e
=
b
.
createElement
(
"base"
),
e
.
href
=
d
.
location
.
href
,
b
.
head
.
appendChild
(
e
)):
b
=
d
),
f
=
B
.
exec
(
a
),
g
=!
c
&&
[],
f
?[
b
.
createElement
(
f
[
1
])]:(
f
=
pa
([
a
],
b
,
g
),
g
&&
g
.
length
&&
r
(
g
).
remove
(),
r
.
merge
([],
f
.
childNodes
))},
r
.
fn
.
load
=
function
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
=
this
,
h
=
a
.
indexOf
(
" "
);
return
h
>-
1
&&
(
d
=
mb
(
a
.
slice
(
h
)),
a
=
a
.
slice
(
0
,
h
)),
r
.
isFunction
(
b
)?(
c
=
b
,
b
=
void
0
):
b
&&
"object"
==
typeof
b
&&
(
e
=
"POST"
),
g
.
length
>
0
&&
r
.
ajax
({
url
:
a
,
type
:
e
||
"GET"
,
dataType
:
"html"
,
data
:
b
}).
done
(
function
(
a
){
f
=
arguments
,
g
.
html
(
d
?
r
(
"<div>"
).
append
(
r
.
parseHTML
(
a
)).
find
(
d
):
a
)}).
always
(
c
&&
function
(
a
,
b
){
g
.
each
(
function
(){
c
.
apply
(
this
,
f
||
[
a
.
responseText
,
b
,
a
])})}),
this
},
r
.
each
([
"ajaxStart"
,
"ajaxStop"
,
"ajaxComplete"
,
"ajaxError"
,
"ajaxSuccess"
,
"ajaxSend"
],
function
(
a
,
b
){
r
.
fn
[
b
]
=
function
(
a
){
return
this
.
on
(
b
,
a
)}}),
r
.
expr
.
pseudos
.
animated
=
function
(
a
){
return
r
.
grep
(
r
.
timers
,
function
(
b
){
return
a
===
b
.
elem
}).
length
};
function
Sb
(
a
){
return
r
.
isWindow
(
a
)?
a
:
9
===
a
.
nodeType
&&
a
.
defaultView
}
r
.
offset
=
{
setOffset
:
function
(
a
,
b
,
c
){
var
d
,
e
,
f
,
g
,
h
,
i
,
j
,
k
=
r
.
css
(
a
,
"position"
),
l
=
r
(
a
),
m
=
{};
"static"
===
k
&&
(
a
.
style
.
position
=
"relative"
),
h
=
l
.
offset
(),
f
=
r
.
css
(
a
,
"top"
),
i
=
r
.
css
(
a
,
"left"
),
j
=
(
"absolute"
===
k
||
"fixed"
===
k
)
&&
(
f
+
i
).
indexOf
(
"auto"
)
>-
1
,
j
?(
d
=
l
.
position
(),
g
=
d
.
top
,
e
=
d
.
left
):(
g
=
parseFloat
(
f
)
||
0
,
e
=
parseFloat
(
i
)
||
0
),
r
.
isFunction
(
b
)
&&
(
b
=
b
.
call
(
a
,
c
,
r
.
extend
({},
h
))),
null
!=
b
.
top
&&
(
m
.
top
=
b
.
top
-
h
.
top
+
g
),
null
!=
b
.
left
&&
(
m
.
left
=
b
.
left
-
h
.
left
+
e
),
"using"
in
b
?
b
.
using
.
call
(
a
,
m
):
l
.
css
(
m
)}},
r
.
fn
.
extend
({
offset
:
function
(
a
){
if
(
arguments
.
length
)
return
void
0
===
a
?
this
:
this
.
each
(
function
(
b
){
r
.
offset
.
setOffset
(
this
,
a
,
b
)});
var
b
,
c
,
d
,
e
,
f
=
this
[
0
];
if
(
f
)
return
f
.
getClientRects
().
length
?(
d
=
f
.
getBoundingClientRect
(),
d
.
width
||
d
.
height
?(
e
=
f
.
ownerDocument
,
c
=
Sb
(
e
),
b
=
e
.
documentElement
,{
top
:
d
.
top
+
c
.
pageYOffset
-
b
.
clientTop
,
left
:
d
.
left
+
c
.
pageXOffset
-
b
.
clientLeft
}):
d
):{
top
:
0
,
left
:
0
}},
position
:
function
(){
if
(
this
[
0
]){
var
a
,
b
,
c
=
this
[
0
],
d
=
{
top
:
0
,
left
:
0
};
return
"fixed"
===
r
.
css
(
c
,
"position"
)?
b
=
c
.
getBoundingClientRect
():(
a
=
this
.
offsetParent
(),
b
=
this
.
offset
(),
r
.
nodeName
(
a
[
0
],
"html"
)
||
(
d
=
a
.
offset
()),
d
=
{
top
:
d
.
top
+
r
.
css
(
a
[
0
],
"borderTopWidth"
,
!
0
),
left
:
d
.
left
+
r
.
css
(
a
[
0
],
"borderLeftWidth"
,
!
0
)}),{
top
:
b
.
top
-
d
.
top
-
r
.
css
(
c
,
"marginTop"
,
!
0
),
left
:
b
.
left
-
d
.
left
-
r
.
css
(
c
,
"marginLeft"
,
!
0
)}}},
offsetParent
:
function
(){
return
this
.
map
(
function
(){
var
a
=
this
.
offsetParent
;
while
(
a
&&
"static"
===
r
.
css
(
a
,
"position"
))
a
=
a
.
offsetParent
;
return
a
||
qa
})}}),
r
.
each
({
scrollLeft
:
"pageXOffset"
,
scrollTop
:
"pageYOffset"
},
function
(
a
,
b
){
var
c
=
"pageYOffset"
===
b
;
r
.
fn
[
a
]
=
function
(
d
){
return
S
(
this
,
function
(
a
,
d
,
e
){
var
f
=
Sb
(
a
);
return
void
0
===
e
?
f
?
f
[
b
]:
a
[
d
]:
void
(
f
?
f
.
scrollTo
(
c
?
f
.
pageXOffset
:
e
,
c
?
e
:
f
.
pageYOffset
):
a
[
d
]
=
e
)},
a
,
d
,
arguments
.
length
)}}),
r
.
each
([
"top"
,
"left"
],
function
(
a
,
b
){
r
.
cssHooks
[
b
]
=
Oa
(
o
.
pixelPosition
,
function
(
a
,
c
){
if
(
c
)
return
c
=
Na
(
a
,
b
),
La
.
test
(
c
)?
r
(
a
).
position
()[
b
]
+
"px"
:
c
})}),
r
.
each
({
Height
:
"height"
,
Width
:
"width"
},
function
(
a
,
b
){
r
.
each
({
padding
:
"inner"
+
a
,
content
:
b
,
""
:
"outer"
+
a
},
function
(
c
,
d
){
r
.
fn
[
d
]
=
function
(
e
,
f
){
var
g
=
arguments
.
length
&&
(
c
||
"boolean"
!=
typeof
e
),
h
=
c
||
(
e
===!
0
||
f
===!
0
?
"margin"
:
"border"
);
return
S
(
this
,
function
(
b
,
c
,
e
){
var
f
;
return
r
.
isWindow
(
b
)?
0
===
d
.
indexOf
(
"outer"
)?
b
[
"inner"
+
a
]:
b
.
document
.
documentElement
[
"client"
+
a
]:
9
===
b
.
nodeType
?(
f
=
b
.
documentElement
,
Math
.
max
(
b
.
body
[
"scroll"
+
a
],
f
[
"scroll"
+
a
],
b
.
body
[
"offset"
+
a
],
f
[
"offset"
+
a
],
f
[
"client"
+
a
])):
void
0
===
e
?
r
.
css
(
b
,
c
,
h
):
r
.
style
(
b
,
c
,
e
,
h
)},
b
,
g
?
e
:
void
0
,
g
)}})}),
r
.
fn
.
extend
({
bind
:
function
(
a
,
b
,
c
){
return
this
.
on
(
a
,
null
,
b
,
c
)},
unbind
:
function
(
a
,
b
){
return
this
.
off
(
a
,
null
,
b
)},
delegate
:
function
(
a
,
b
,
c
,
d
){
return
this
.
on
(
b
,
a
,
c
,
d
)},
undelegate
:
function
(
a
,
b
,
c
){
return
1
===
arguments
.
length
?
this
.
off
(
a
,
"**"
):
this
.
off
(
b
,
a
||
"**"
,
c
)}}),
r
.
parseJSON
=
JSON
.
parse
,
"function"
==
typeof
define
&&
define
.
amd
&&
define
(
"jquery"
,[],
function
(){
return
r
});
var
Tb
=
a
.
jQuery
,
Ub
=
a
.
$
;
return
r
.
noConflict
=
function
(
b
){
return
a
.
$
===
r
&&
(
a
.
$
=
Ub
),
b
&&
a
.
jQuery
===
r
&&
(
a
.
jQuery
=
Tb
),
r
},
b
||
(
a
.
jQuery
=
a
.
$
=
r
),
r
});
src/main/resources/templates/static/js/jquery-3.4.1.js
deleted
100644 → 0
View file @
182d895a
/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
!
function
(
e
,
t
){
"use strict"
;
"object"
==
typeof
module
&&
"object"
==
typeof
module
.
exports
?
module
.
exports
=
e
.
document
?
t
(
e
,
!
0
):
function
(
e
){
if
(
!
e
.
document
)
throw
new
Error
(
"jQuery requires a window with a document"
);
return
t
(
e
)}:
t
(
e
)}(
"undefined"
!=
typeof
window
?
window
:
this
,
function
(
C
,
e
){
"use strict"
;
var
t
=
[],
E
=
C
.
document
,
r
=
Object
.
getPrototypeOf
,
s
=
t
.
slice
,
g
=
t
.
concat
,
u
=
t
.
push
,
i
=
t
.
indexOf
,
n
=
{},
o
=
n
.
toString
,
v
=
n
.
hasOwnProperty
,
a
=
v
.
toString
,
l
=
a
.
call
(
Object
),
y
=
{},
m
=
function
(
e
){
return
"function"
==
typeof
e
&&
"number"
!=
typeof
e
.
nodeType
},
x
=
function
(
e
){
return
null
!=
e
&&
e
===
e
.
window
},
c
=
{
type
:
!
0
,
src
:
!
0
,
nonce
:
!
0
,
noModule
:
!
0
};
function
b
(
e
,
t
,
n
){
var
r
,
i
,
o
=
(
n
=
n
||
E
).
createElement
(
"script"
);
if
(
o
.
text
=
e
,
t
)
for
(
r
in
c
)(
i
=
t
[
r
]
||
t
.
getAttribute
&&
t
.
getAttribute
(
r
))
&&
o
.
setAttribute
(
r
,
i
);
n
.
head
.
appendChild
(
o
).
parentNode
.
removeChild
(
o
)}
function
w
(
e
){
return
null
==
e
?
e
+
""
:
"object"
==
typeof
e
||
"function"
==
typeof
e
?
n
[
o
.
call
(
e
)]
||
"object"
:
typeof
e
}
var
f
=
"3.4.1"
,
k
=
function
(
e
,
t
){
return
new
k
.
fn
.
init
(
e
,
t
)},
p
=
/^
[\s\u
FEFF
\x
A0
]
+|
[\s\u
FEFF
\x
A0
]
+$/g
;
function
d
(
e
){
var
t
=!!
e
&&
"length"
in
e
&&
e
.
length
,
n
=
w
(
e
);
return
!
m
(
e
)
&&!
x
(
e
)
&&
(
"array"
===
n
||
0
===
t
||
"number"
==
typeof
t
&&
0
<
t
&&
t
-
1
in
e
)}
k
.
fn
=
k
.
prototype
=
{
jquery
:
f
,
constructor
:
k
,
length
:
0
,
toArray
:
function
(){
return
s
.
call
(
this
)},
get
:
function
(
e
){
return
null
==
e
?
s
.
call
(
this
):
e
<
0
?
this
[
e
+
this
.
length
]:
this
[
e
]},
pushStack
:
function
(
e
){
var
t
=
k
.
merge
(
this
.
constructor
(),
e
);
return
t
.
prevObject
=
this
,
t
},
each
:
function
(
e
){
return
k
.
each
(
this
,
e
)},
map
:
function
(
n
){
return
this
.
pushStack
(
k
.
map
(
this
,
function
(
e
,
t
){
return
n
.
call
(
e
,
t
,
e
)}))},
slice
:
function
(){
return
this
.
pushStack
(
s
.
apply
(
this
,
arguments
))},
first
:
function
(){
return
this
.
eq
(
0
)},
last
:
function
(){
return
this
.
eq
(
-
1
)},
eq
:
function
(
e
){
var
t
=
this
.
length
,
n
=+
e
+
(
e
<
0
?
t
:
0
);
return
this
.
pushStack
(
0
<=
n
&&
n
<
t
?[
this
[
n
]]:[])},
end
:
function
(){
return
this
.
prevObject
||
this
.
constructor
()},
push
:
u
,
sort
:
t
.
sort
,
splice
:
t
.
splice
},
k
.
extend
=
k
.
fn
.
extend
=
function
(){
var
e
,
t
,
n
,
r
,
i
,
o
,
a
=
arguments
[
0
]
||
{},
s
=
1
,
u
=
arguments
.
length
,
l
=!
1
;
for
(
"boolean"
==
typeof
a
&&
(
l
=
a
,
a
=
arguments
[
s
]
||
{},
s
++
),
"object"
==
typeof
a
||
m
(
a
)
||
(
a
=
{}),
s
===
u
&&
(
a
=
this
,
s
--
);
s
<
u
;
s
++
)
if
(
null
!=
(
e
=
arguments
[
s
]))
for
(
t
in
e
)
r
=
e
[
t
],
"__proto__"
!==
t
&&
a
!==
r
&&
(
l
&&
r
&&
(
k
.
isPlainObject
(
r
)
||
(
i
=
Array
.
isArray
(
r
)))?(
n
=
a
[
t
],
o
=
i
&&!
Array
.
isArray
(
n
)?[]:
i
||
k
.
isPlainObject
(
n
)?
n
:{},
i
=!
1
,
a
[
t
]
=
k
.
extend
(
l
,
o
,
r
)):
void
0
!==
r
&&
(
a
[
t
]
=
r
));
return
a
},
k
.
extend
({
expando
:
"jQuery"
+
(
f
+
Math
.
random
()).
replace
(
/
\D
/g
,
""
),
isReady
:
!
0
,
error
:
function
(
e
){
throw
new
Error
(
e
)},
noop
:
function
(){},
isPlainObject
:
function
(
e
){
var
t
,
n
;
return
!
(
!
e
||
"[object Object]"
!==
o
.
call
(
e
))
&&
(
!
(
t
=
r
(
e
))
||
"function"
==
typeof
(
n
=
v
.
call
(
t
,
"constructor"
)
&&
t
.
constructor
)
&&
a
.
call
(
n
)
===
l
)},
isEmptyObject
:
function
(
e
){
var
t
;
for
(
t
in
e
)
return
!
1
;
return
!
0
},
globalEval
:
function
(
e
,
t
){
b
(
e
,{
nonce
:
t
&&
t
.
nonce
})},
each
:
function
(
e
,
t
){
var
n
,
r
=
0
;
if
(
d
(
e
)){
for
(
n
=
e
.
length
;
r
<
n
;
r
++
)
if
(
!
1
===
t
.
call
(
e
[
r
],
r
,
e
[
r
]))
break
}
else
for
(
r
in
e
)
if
(
!
1
===
t
.
call
(
e
[
r
],
r
,
e
[
r
]))
break
;
return
e
},
trim
:
function
(
e
){
return
null
==
e
?
""
:(
e
+
""
).
replace
(
p
,
""
)},
makeArray
:
function
(
e
,
t
){
var
n
=
t
||
[];
return
null
!=
e
&&
(
d
(
Object
(
e
))?
k
.
merge
(
n
,
"string"
==
typeof
e
?[
e
]:
e
):
u
.
call
(
n
,
e
)),
n
},
inArray
:
function
(
e
,
t
,
n
){
return
null
==
t
?
-
1
:
i
.
call
(
t
,
e
,
n
)},
merge
:
function
(
e
,
t
){
for
(
var
n
=+
t
.
length
,
r
=
0
,
i
=
e
.
length
;
r
<
n
;
r
++
)
e
[
i
++
]
=
t
[
r
];
return
e
.
length
=
i
,
e
},
grep
:
function
(
e
,
t
,
n
){
for
(
var
r
=
[],
i
=
0
,
o
=
e
.
length
,
a
=!
n
;
i
<
o
;
i
++
)
!
t
(
e
[
i
],
i
)
!==
a
&&
r
.
push
(
e
[
i
]);
return
r
},
map
:
function
(
e
,
t
,
n
){
var
r
,
i
,
o
=
0
,
a
=
[];
if
(
d
(
e
))
for
(
r
=
e
.
length
;
o
<
r
;
o
++
)
null
!=
(
i
=
t
(
e
[
o
],
o
,
n
))
&&
a
.
push
(
i
);
else
for
(
o
in
e
)
null
!=
(
i
=
t
(
e
[
o
],
o
,
n
))
&&
a
.
push
(
i
);
return
g
.
apply
([],
a
)},
guid
:
1
,
support
:
y
}),
"function"
==
typeof
Symbol
&&
(
k
.
fn
[
Symbol
.
iterator
]
=
t
[
Symbol
.
iterator
]),
k
.
each
(
"Boolean Number String Function Array Date RegExp Object Error Symbol"
.
split
(
" "
),
function
(
e
,
t
){
n
[
"[object "
+
t
+
"]"
]
=
t
.
toLowerCase
()});
var
h
=
function
(
n
){
var
e
,
d
,
b
,
o
,
i
,
h
,
f
,
g
,
w
,
u
,
l
,
T
,
C
,
a
,
E
,
v
,
s
,
c
,
y
,
k
=
"sizzle"
+
1
*
new
Date
,
m
=
n
.
document
,
S
=
0
,
r
=
0
,
p
=
ue
(),
x
=
ue
(),
N
=
ue
(),
A
=
ue
(),
D
=
function
(
e
,
t
){
return
e
===
t
&&
(
l
=!
0
),
0
},
j
=
{}.
hasOwnProperty
,
t
=
[],
q
=
t
.
pop
,
L
=
t
.
push
,
H
=
t
.
push
,
O
=
t
.
slice
,
P
=
function
(
e
,
t
){
for
(
var
n
=
0
,
r
=
e
.
length
;
n
<
r
;
n
++
)
if
(
e
[
n
]
===
t
)
return
n
;
return
-
1
},
R
=
"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped"
,
M
=
"[
\\
x20
\\
t
\\
r
\
\n
\\
f]"
,
I
=
"(?:
\\\\
.|[
\\
w-]|[^
\
0-
\\
xa0])+"
,
W
=
"
\\
["
+
M
+
"*("
+
I
+
")(?:"
+
M
+
"*([*^$|!~]?=)"
+
M
+
"*(?:'((?:
\\\\
.|[^
\\\\
'])*)'|
\"
((?:
\\\\
.|[^
\\\\
\"
])*)
\"
|("
+
I
+
"))|)"
+
M
+
"*
\\
]"
,
$
=
":("
+
I
+
")(?:
\\
((('((?:
\\\\
.|[^
\\\\
'])*)'|
\"
((?:
\\\\
.|[^
\\\\
\"
])*)
\"
)|((?:
\\\\
.|[^
\\\\
()[
\\
]]|"
+
W
+
")*)|.*)
\\
)|)"
,
F
=
new
RegExp
(
M
+
"+"
,
"g"
),
B
=
new
RegExp
(
"^"
+
M
+
"+|((?:^|[^
\\\\
])(?:
\\\\
.)*)"
+
M
+
"+$"
,
"g"
),
_
=
new
RegExp
(
"^"
+
M
+
"*,"
+
M
+
"*"
),
z
=
new
RegExp
(
"^"
+
M
+
"*([>+~]|"
+
M
+
")"
+
M
+
"*"
),
U
=
new
RegExp
(
M
+
"|>"
),
X
=
new
RegExp
(
$
),
V
=
new
RegExp
(
"^"
+
I
+
"$"
),
G
=
{
ID
:
new
RegExp
(
"^#("
+
I
+
")"
),
CLASS
:
new
RegExp
(
"^
\\
.("
+
I
+
")"
),
TAG
:
new
RegExp
(
"^("
+
I
+
"|[*])"
),
ATTR
:
new
RegExp
(
"^"
+
W
),
PSEUDO
:
new
RegExp
(
"^"
+
$
),
CHILD
:
new
RegExp
(
"^:(only|first|last|nth|nth-last)-(child|of-type)(?:
\\
("
+
M
+
"*(even|odd|(([+-]|)(
\\
d*)n|)"
+
M
+
"*(?:([+-]|)"
+
M
+
"*(
\\
d+)|))"
+
M
+
"*
\\
)|)"
,
"i"
),
bool
:
new
RegExp
(
"^(?:"
+
R
+
")$"
,
"i"
),
needsContext
:
new
RegExp
(
"^"
+
M
+
"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:
\\
("
+
M
+
"*((?:-
\\
d)?
\\
d*)"
+
M
+
"*
\\
)|)(?=[^-]|$)"
,
"i"
)},
Y
=
/HTML$/i
,
Q
=
/^
(?:
input|select|textarea|button
)
$/i
,
J
=
/^h
\d
$/i
,
K
=
/^
[^
{
]
+
\{\s
*
\[
native
\w
/
,
Z
=
/^
(?:
#
([\w
-
]
+
)
|
(\w
+
)
|
\.([\w
-
]
+
))
$/
,
ee
=
/
[
+~
]
/
,
te
=
new
RegExp
(
"
\\\\
([
\\
da-f]{1,6}"
+
M
+
"?|("
+
M
+
")|.)"
,
"ig"
),
ne
=
function
(
e
,
t
,
n
){
var
r
=
"0x"
+
t
-
65536
;
return
r
!=
r
||
n
?
t
:
r
<
0
?
String
.
fromCharCode
(
r
+
65536
):
String
.
fromCharCode
(
r
>>
10
|
55296
,
1023
&
r
|
56320
)},
re
=
/
([\0
-
\x
1f
\x
7f
]
|^-
?\d)
|^-$|
[^\0
-
\x
1f
\x
7f-
\u
FFFF
\w
-
]
/g
,
ie
=
function
(
e
,
t
){
return
t
?
"
\
0"
===
e
?
"
\
ufffd"
:
e
.
slice
(
0
,
-
1
)
+
"
\
\"
+e.charCodeAt(e.length-1).toString(16)+"
":"
\\
"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"
fieldset
"===e.nodeName.toLowerCase()},{dir:"
parentNode
",next:"
legend
"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"
string
"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+"
"]&&(!v||!v.test(t))&&(1!==p||"
object
"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("
id
"))?s=s.replace(re,ie):e.setAttribute("
id
",s=k),o=(l=h(t)).length;while(o--)l[o]="
#
"+s+"
"+xe(l[o]);c=l.join("
,
"),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("
id
")}}}return g(t.replace(B,"
$1
"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+"
")>b.cacheLength&&delete e[r.shift()],e[t+"
"]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("
fieldset
");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("
|
"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"
input
"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("
input
"===t||"
button
"===t)&&e.type===n}}function ge(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&&ae(e)===t:e.disabled===t:"
label
"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"
undefined
"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"
HTML
")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("
unload
",oe,!1):n.attachEvent&&n.attachEvent("
onunload
",oe)),d.attributes=ce(function(e){return e.className="
i
",!e.getAttribute("
className
")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("
*
").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("
id
")===t}},b.find.ID=function(e,t){if("
undefined
"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="
undefined
"!=typeof e.getAttributeNode&&e.getAttributeNode("
id
");return t&&t.value===n}},b.find.ID=function(e,t){if("
undefined
"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("
id
"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("
id
"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"
undefined
"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("
*
"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("
undefined
"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="
<
a
id
=
'"+k+"'
><
/a><select id='"+k+"-
\r\\
' msallowcapture=''><option selected=''></
option
><
/select>",e.querySelectorAll
(
"
[
msallowcapture^=''
]
"
)
.length&&v.push
(
"
[
*^$
]
="+M+"*
(?:
''|
\"\")
"
)
,e.querySelectorAll
(
"
[
selected
]
"
)
.length||v.push
(
"
\\[
"+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-
]
"
)
.length||v.push
(
"~="
)
,e.querySelectorAll
(
":checked"
)
.length||v.push
(
":checked"
)
,e.querySelectorAll
(
"a#"+k+"+*"
)
.length||v.push
(
".#.+
[
+~
]
"
)
}
)
,ce
(
function
(
e
)
{e.innerHTML="<a href='' disabled='disabled'></
a
><
select
disabled
=
'disabled'
><
option
/><
/select>";var t=C.createElement
(
"input"
)
;t.setAttribute
(
"type","hidden"
)
,e.appendChild
(
t
)
.setAttribute
(
"name","D"
)
,e.querySelectorAll
(
"
[
name=d
]
"
)
.length&&v.push
(
"name"+M+"*
[
*^$|!~
]?
="
)
,2!==e.querySelectorAll
(
":enabled"
)
.length&&v.push
(
":enabled",":disabled"
)
,a.appendChild
(
e
)
.disabled=!0,2!==e.querySelectorAll
(
":disabled"
)
.length&&v.push
(
":enabled",":disabled"
)
,e.querySelectorAll
(
"*,:x"
)
,v.push
(
",.*:"
)
}
))
,
(
d.matchesSelector=K.test
(
c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector
))
&&ce
(
function
(
e
)
{d.disconnectedMatch=c.call
(
e,"*"
)
,c.call
(
e,"
[
s!=''
]
:x"
)
,s.push
(
"!=",$
)
}
)
,v=v.length&&new RegExp
(
v.join
(
"|"
))
,s=s.length&&new RegExp
(
s.join
(
"|"
))
,t=K.test
(
a.compareDocumentPosition
)
,y=t||K.test
(
a.contains
)?
function
(
e,t
)
{var n=9===e.nodeType
?
e.documentElement:e,r=t&&t.parentNode;return e===r||!
(
!r||1!==r.nodeType||!
(
n.contains
?
n.contains
(
r
)
:e.compareDocumentPosition&&16&e.compareDocumentPosition
(
r
)))
}:function
(
e,t
)
{if
(
t
)
while
(
t=t.parentNode
)
if
(
t===e
)
return!0;return!1},D=t
?
function
(
e,t
)
{if
(
e===t
)
return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||
(
1&
(
n=
(
e.ownerDocument||e
)
===
(
t.ownerDocument||t
)?
e.compareDocumentPosition
(
t
)
:1
)
||!d.sortDetached&&t.compareDocumentPosition
(
e
)
===n
?
e===C||e.ownerDocument===m&&y
(
m,e
)?
-1:t===C||t.ownerDocument===m&&y
(
m,t
)?
1:u
?
P
(
u,e
)
-P
(
u,t
)
:0:4&n
?
-1:1
)
}:function
(
e,t
)
{if
(
e===t
)
return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=
[
e
]
,s=
[
t
]
;if
(
!i||!o
)
return e===C
?
-1:t===C
?
1:i
?
-1:o
?
1:u
?
P
(
u,e
)
-P
(
u,t
)
:0;if
(
i===o
)
return pe
(
e,t
)
;n=e;while
(
n=n.parentNode
)
a.unshift
(
n
)
;n=t;while
(
n=n.parentNode
)
s.unshift
(
n
)
;while
(
a
[
r
]
===s
[
r
])
r++;return r
?
pe
(
a
[
r
]
,s
[
r
])
:a
[
r
]
===m
?
-1:s
[
r
]
===m
?
1:0}
)
,C},se.matches=function
(
e,t
)
{return se
(
e,null,null,t
)
},se.matchesSelector=function
(
e,t
)
{if
((
e.ownerDocument||e
)
!==C&&T
(
e
)
,d.matchesSelector&&E&&!A
[
t+" "
]
&&
(
!s||!s.test
(
t
))
&&
(
!v||!v.test
(
t
)))
try{var n=c.call
(
e,t
)
;if
(
n||d.disconnectedMatch||e.document&&11!==e.document.nodeType
)
return n}catch
(
e
)
{A
(
t,!0
)
}return 0<se
(
t,C,null,
[
e
])
.length},se.contains=function
(
e,t
)
{return
(
e.ownerDocument||e
)
!==C&&T
(
e
)
,y
(
e,t
)
},se.attr=function
(
e,t
)
{
(
e.ownerDocument||e
)
!==C&&T
(
e
)
;var n=b.attrHandle
[
t.toLowerCase()
]
,r=n&&j.call
(
b.attrHandle,t.toLowerCase
())?
n
(
e,t,!E
)
:void 0;return void 0!==r
?
r:d.attributes||!E
?
e.getAttribute
(
t
)
:
(
r=e.getAttributeNode
(
t
))
&&r.specified
?
r.value:null},se.escape=function
(
e
)
{return
(
e+""
)
.replace
(
re,ie
)
},se.error=function
(
e
)
{throw new Error
(
"Syntax error, unrecognized expression: "+e
)
},se.uniqueSort=function
(
e
)
{var t,n=
[]
,r=0,i=0;if
(
l=!d.detectDuplicates,u=!d.sortStable&&e.slice
(
0
)
,e.sort
(
D
)
,l
)
{while
(
t=e
[
i++
])
t===e
[
i
]
&&
(
r=n.push
(
i
))
;while
(
r--
)
e.splice
(
n
[
r
]
,1
)
}return u=null,e},o=se.getText=function
(
e
)
{var t,n="",r=0,i=e.nodeType;if
(
i
)
{if
(
1===i||9===i||11===i
)
{if
(
"string"==typeof e.textContent
)
return e.textContent;for
(
e=e.firstChild;e;e=e.nextSibling
)
n+=o
(
e
)
}else if
(
3===i||4===i
)
return e.nodeValue}else while
(
t=e
[
r++
])
n+=o
(
t
)
;return n},
(
b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function
(
e
)
{return e
[
1
]
=e
[
1
]
.replace
(
te,ne
)
,e
[
3
]
=
(
e
[
3
]
||e
[
4
]
||e
[
5
]
||""
)
.replace
(
te,ne
)
,"~="===e
[
2
]
&&
(
e
[
3
]
=" "+e
[
3
]
+" "
)
,e.slice
(
0,4
)
},CHILD:function
(
e
)
{return e
[
1
]
=e
[
1
]
.toLowerCase
()
,"nth"===e
[
1
]
.slice
(
0,3
)?(
e
[
3
]
||se.error
(
e
[
0
])
,e
[
4
]
=+
(
e
[
4
]?
e
[
5
]
+
(
e
[
6
]
||1
)
:2*
(
"even"===e
[
3
]
||"odd"===e
[
3
]))
,e
[
5
]
=+
(
e
[
7
]
+e
[
8
]
||"odd"===e
[
3
]))
:e
[
3
]
&&se.error
(
e
[
0
])
,e},PSEUDO:function
(
e
)
{var t,n=!e
[
6
]
&&e
[
2
]
;return G.CHILD.test
(
e
[
0
])?
null:
(
e
[
3
]?
e
[
2
]
=e
[
4
]
||e
[
5
]
||"":n&&X.test
(
n
)
&&
(
t=h
(
n,!0
))
&&
(
t=n.indexOf
(
"
)
",n.length-t
)
-n.length
)
&&
(
e
[
0
]
=e
[
0
]
.slice
(
0,t
)
,e
[
2
]
=n.slice
(
0,t
))
,e.slice
(
0,3
))
}},filter:{TAG:function
(
e
)
{var t=e.replace
(
te,ne
)
.toLowerCase
()
;return"*"===e
?
function
()
{return!0}:function
(
e
)
{return e.nodeName&&e.nodeName.toLowerCase
()
===t}},CLASS:function
(
e
)
{var t=p
[
e+" "
]
;return t||
(
t=new RegExp
(
"
(
^|"+M+"
)
"+e+"
(
"+M+"|$
)
"
))
&&p
(
e,function
(
e
)
{return t.test
(
"string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute
(
"class"
)
||""
)
}
)
},ATTR:function
(
n,r,i
)
{return function
(
e
)
{var t=se.attr
(
e,n
)
;return null==t
?
"!="===r:!r||
(
t+="","="===r
?
t===i:"!="===r
?
t!==i:"^="===r
?
i&&0===t.indexOf
(
i
)
:"*="===r
?
i&&-1<t.indexOf
(
i
)
:"$="===r
?
i&&t.slice
(
-i.length
)
===i:"~="===r
?
-1<
(
" "+t.replace
(
F," "
)
+" "
)
.indexOf
(
i
)
:"|="===r&&
(
t===i||t.slice
(
0,i.length+1
)
===i+"-"
))
}},CHILD:function
(
h,e,t,g,v
)
{var y="nth"!==h.slice
(
0,3
)
,m="last"!==h.slice
(
-4
)
,x="of-type"===e;return 1===g&&0===v
?
function
(
e
)
{return!!e.parentNode}:function
(
e,t,n
)
{var r,i,o,a,s,u,l=y!==m
?
"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase
()
,p=!n&&!x,d=!1;if
(
c
)
{if
(
y
)
{while
(
l
)
{a=e;while
(
a=a
[
l
])
if
(
x
?
a.nodeName.toLowerCase
()
===f:1===a.nodeType
)
return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if
(
u=
[
m?c.firstChild:c.lastChild
]
,m&&p
)
{d=
(
s=
(
r=
(
i=
(
o=
(
a=c
)[
k
]
||
(
a
[
k
]
={}
))[
a.uniqueID
]
||
(
o
[
a.uniqueID
]
={}
))[
h
]
||
[])[
0
]
===S&&r
[
1
])
&&r
[
2
]
,a=s&&c.childNodes
[
s
]
;while
(
a=++s&&a&&a
[
l
]
||
(
d=s=0
)
||u.pop
())
if
(
1===a.nodeType&&++d&&a===e
)
{i
[
h
]
=
[
S,s,d
]
;break}}else if
(
p&&
(
d=s=
(
r=
(
i=
(
o=
(
a=e
)[
k
]
||
(
a
[
k
]
={}
))[
a.uniqueID
]
||
(
o
[
a.uniqueID
]
={}
))[
h
]
||
[])[
0
]
===S&&r
[
1
])
,!1===d
)
while
(
a=++s&&a&&a
[
l
]
||
(
d=s=0
)
||u.pop
())
if
((
x
?
a.nodeName.toLowerCase
()
===f:1===a.nodeType
)
&&++d&&
(
p&&
((
i=
(
o=a
[
k
]
||
(
a
[
k
]
={}
))[
a.uniqueID
]
||
(
o
[
a.uniqueID
]
={}
))[
h
]
=
[
S,d
])
,a===e
))
break;return
(
d-=v
)
===g||d%g==0&&0<=d/g
}}},
PSEUDO
:
function
(
e
,
o
){
var
t
,
a
=
b
.
pseudos
[
e
]
||
b
.
setFilters
[
e
.
toLowerCase
()]
||
se
.
error
(
"unsupported pseudo: "
+
e
);
return
a
[
k
]?
a
(
o
):
1
<
a
.
length
?(
t
=
[
e
,
e
,
""
,
o
],
b
.
setFilters
.
hasOwnProperty
(
e
.
toLowerCase
())?
le
(
function
(
e
,
t
){
var
n
,
r
=
a
(
e
,
o
),
i
=
r
.
length
;
while
(
i
--
)
e
[
n
=
P
(
e
,
r
[
i
])]
=!
(
t
[
n
]
=
r
[
i
])}):
function
(
e
){
return
a
(
e
,
0
,
t
)}):
a
}},
pseudos
:{
not
:
le
(
function
(
e
){
var
r
=
[],
i
=
[],
s
=
f
(
e
.
replace
(
B
,
"$1"
));
return
s
[
k
]?
le
(
function
(
e
,
t
,
n
,
r
){
var
i
,
o
=
s
(
e
,
null
,
r
,[]),
a
=
e
.
length
;
while
(
a
--
)(
i
=
o
[
a
])
&&
(
e
[
a
]
=!
(
t
[
a
]
=
i
))}):
function
(
e
,
t
,
n
){
return
r
[
0
]
=
e
,
s
(
r
,
null
,
n
,
i
),
r
[
0
]
=
null
,
!
i
.
pop
()}}),
has
:
le
(
function
(
t
){
return
function
(
e
){
return
0
<
se
(
t
,
e
).
length
}}),
contains
:
le
(
function
(
t
){
return
t
=
t
.
replace
(
te
,
ne
),
function
(
e
){
return
-
1
<
(
e
.
textContent
||
o
(
e
)).
indexOf
(
t
)}}),
lang
:
le
(
function
(
n
){
return
V
.
test
(
n
||
""
)
||
se
.
error
(
"unsupported lang: "
+
n
),
n
=
n
.
replace
(
te
,
ne
).
toLowerCase
(),
function
(
e
){
var
t
;
do
{
if
(
t
=
E
?
e
.
lang
:
e
.
getAttribute
(
"xml:lang"
)
||
e
.
getAttribute
(
"lang"
))
return
(
t
=
t
.
toLowerCase
())
===
n
||
0
===
t
.
indexOf
(
n
+
"-"
)}
while
((
e
=
e
.
parentNode
)
&&
1
===
e
.
nodeType
);
return
!
1
}}),
target
:
function
(
e
){
var
t
=
n
.
location
&&
n
.
location
.
hash
;
return
t
&&
t
.
slice
(
1
)
===
e
.
id
},
root
:
function
(
e
){
return
e
===
a
},
focus
:
function
(
e
){
return
e
===
C
.
activeElement
&&
(
!
C
.
hasFocus
||
C
.
hasFocus
())
&&!!
(
e
.
type
||
e
.
href
||~
e
.
tabIndex
)},
enabled
:
ge
(
!
1
),
disabled
:
ge
(
!
0
),
checked
:
function
(
e
){
var
t
=
e
.
nodeName
.
toLowerCase
();
return
"input"
===
t
&&!!
e
.
checked
||
"option"
===
t
&&!!
e
.
selected
},
selected
:
function
(
e
){
return
e
.
parentNode
&&
e
.
parentNode
.
selectedIndex
,
!
0
===
e
.
selected
},
empty
:
function
(
e
){
for
(
e
=
e
.
firstChild
;
e
;
e
=
e
.
nextSibling
)
if
(
e
.
nodeType
<
6
)
return
!
1
;
return
!
0
},
parent
:
function
(
e
){
return
!
b
.
pseudos
.
empty
(
e
)},
header
:
function
(
e
){
return
J
.
test
(
e
.
nodeName
)},
input
:
function
(
e
){
return
Q
.
test
(
e
.
nodeName
)},
button
:
function
(
e
){
var
t
=
e
.
nodeName
.
toLowerCase
();
return
"input"
===
t
&&
"button"
===
e
.
type
||
"button"
===
t
},
text
:
function
(
e
){
var
t
;
return
"input"
===
e
.
nodeName
.
toLowerCase
()
&&
"text"
===
e
.
type
&&
(
null
==
(
t
=
e
.
getAttribute
(
"type"
))
||
"text"
===
t
.
toLowerCase
())},
first
:
ve
(
function
(){
return
[
0
]}),
last
:
ve
(
function
(
e
,
t
){
return
[
t
-
1
]}),
eq
:
ve
(
function
(
e
,
t
,
n
){
return
[
n
<
0
?
n
+
t
:
n
]}),
even
:
ve
(
function
(
e
,
t
){
for
(
var
n
=
0
;
n
<
t
;
n
+=
2
)
e
.
push
(
n
);
return
e
}),
odd
:
ve
(
function
(
e
,
t
){
for
(
var
n
=
1
;
n
<
t
;
n
+=
2
)
e
.
push
(
n
);
return
e
}),
lt
:
ve
(
function
(
e
,
t
,
n
){
for
(
var
r
=
n
<
0
?
n
+
t
:
t
<
n
?
t
:
n
;
0
<=--
r
;)
e
.
push
(
r
);
return
e
}),
gt
:
ve
(
function
(
e
,
t
,
n
){
for
(
var
r
=
n
<
0
?
n
+
t
:
n
;
++
r
<
t
;)
e
.
push
(
r
);
return
e
})}}).
pseudos
.
nth
=
b
.
pseudos
.
eq
,{
radio
:
!
0
,
checkbox
:
!
0
,
file
:
!
0
,
password
:
!
0
,
image
:
!
0
})
b
.
pseudos
[
e
]
=
de
(
e
);
for
(
e
in
{
submit
:
!
0
,
reset
:
!
0
})
b
.
pseudos
[
e
]
=
he
(
e
);
function
me
(){}
function
xe
(
e
){
for
(
var
t
=
0
,
n
=
e
.
length
,
r
=
""
;
t
<
n
;
t
++
)
r
+=
e
[
t
].
value
;
return
r
}
function
be
(
s
,
e
,
t
){
var
u
=
e
.
dir
,
l
=
e
.
next
,
c
=
l
||
u
,
f
=
t
&&
"parentNode"
===
c
,
p
=
r
++
;
return
e
.
first
?
function
(
e
,
t
,
n
){
while
(
e
=
e
[
u
])
if
(
1
===
e
.
nodeType
||
f
)
return
s
(
e
,
t
,
n
);
return
!
1
}:
function
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
=
[
S
,
p
];
if
(
n
){
while
(
e
=
e
[
u
])
if
((
1
===
e
.
nodeType
||
f
)
&&
s
(
e
,
t
,
n
))
return
!
0
}
else
while
(
e
=
e
[
u
])
if
(
1
===
e
.
nodeType
||
f
)
if
(
i
=
(
o
=
e
[
k
]
||
(
e
[
k
]
=
{}))[
e
.
uniqueID
]
||
(
o
[
e
.
uniqueID
]
=
{}),
l
&&
l
===
e
.
nodeName
.
toLowerCase
())
e
=
e
[
u
]
||
e
;
else
{
if
((
r
=
i
[
c
])
&&
r
[
0
]
===
S
&&
r
[
1
]
===
p
)
return
a
[
2
]
=
r
[
2
];
if
((
i
[
c
]
=
a
)[
2
]
=
s
(
e
,
t
,
n
))
return
!
0
}
return
!
1
}}
function
we
(
i
){
return
1
<
i
.
length
?
function
(
e
,
t
,
n
){
var
r
=
i
.
length
;
while
(
r
--
)
if
(
!
i
[
r
](
e
,
t
,
n
))
return
!
1
;
return
!
0
}:
i
[
0
]}
function
Te
(
e
,
t
,
n
,
r
,
i
){
for
(
var
o
,
a
=
[],
s
=
0
,
u
=
e
.
length
,
l
=
null
!=
t
;
s
<
u
;
s
++
)(
o
=
e
[
s
])
&&
(
n
&&!
n
(
o
,
r
,
i
)
||
(
a
.
push
(
o
),
l
&&
t
.
push
(
s
)));
return
a
}
function
Ce
(
d
,
h
,
g
,
v
,
y
,
e
){
return
v
&&!
v
[
k
]
&&
(
v
=
Ce
(
v
)),
y
&&!
y
[
k
]
&&
(
y
=
Ce
(
y
,
e
)),
le
(
function
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
,
s
=
[],
u
=
[],
l
=
t
.
length
,
c
=
e
||
function
(
e
,
t
,
n
){
for
(
var
r
=
0
,
i
=
t
.
length
;
r
<
i
;
r
++
)
se
(
e
,
t
[
r
],
n
);
return
n
}(
h
||
"*"
,
n
.
nodeType
?[
n
]:
n
,[]),
f
=!
d
||!
e
&&
h
?
c
:
Te
(
c
,
s
,
d
,
n
,
r
),
p
=
g
?
y
||
(
e
?
d
:
l
||
v
)?[]:
t
:
f
;
if
(
g
&&
g
(
f
,
p
,
n
,
r
),
v
){
i
=
Te
(
p
,
u
),
v
(
i
,[],
n
,
r
),
o
=
i
.
length
;
while
(
o
--
)(
a
=
i
[
o
])
&&
(
p
[
u
[
o
]]
=!
(
f
[
u
[
o
]]
=
a
))}
if
(
e
){
if
(
y
||
d
){
if
(
y
){
i
=
[],
o
=
p
.
length
;
while
(
o
--
)(
a
=
p
[
o
])
&&
i
.
push
(
f
[
o
]
=
a
);
y
(
null
,
p
=
[],
i
,
r
)}
o
=
p
.
length
;
while
(
o
--
)(
a
=
p
[
o
])
&&-
1
<
(
i
=
y
?
P
(
e
,
a
):
s
[
o
])
&&
(
e
[
i
]
=!
(
t
[
i
]
=
a
))}}
else
p
=
Te
(
p
===
t
?
p
.
splice
(
l
,
p
.
length
):
p
),
y
?
y
(
null
,
t
,
p
,
r
):
H
.
apply
(
t
,
p
)})}
function
Ee
(
e
){
for
(
var
i
,
t
,
n
,
r
=
e
.
length
,
o
=
b
.
relative
[
e
[
0
].
type
],
a
=
o
||
b
.
relative
[
" "
],
s
=
o
?
1
:
0
,
u
=
be
(
function
(
e
){
return
e
===
i
},
a
,
!
0
),
l
=
be
(
function
(
e
){
return
-
1
<
P
(
i
,
e
)},
a
,
!
0
),
c
=
[
function
(
e
,
t
,
n
){
var
r
=!
o
&&
(
n
||
t
!==
w
)
||
((
i
=
t
).
nodeType
?
u
(
e
,
t
,
n
):
l
(
e
,
t
,
n
));
return
i
=
null
,
r
}];
s
<
r
;
s
++
)
if
(
t
=
b
.
relative
[
e
[
s
].
type
])
c
=
[
be
(
we
(
c
),
t
)];
else
{
if
((
t
=
b
.
filter
[
e
[
s
].
type
].
apply
(
null
,
e
[
s
].
matches
))[
k
]){
for
(
n
=++
s
;
n
<
r
;
n
++
)
if
(
b
.
relative
[
e
[
n
].
type
])
break
;
return
Ce
(
1
<
s
&&
we
(
c
),
1
<
s
&&
xe
(
e
.
slice
(
0
,
s
-
1
).
concat
({
value
:
" "
===
e
[
s
-
2
].
type
?
"*"
:
""
})).
replace
(
B
,
"$1"
),
t
,
s
<
n
&&
Ee
(
e
.
slice
(
s
,
n
)),
n
<
r
&&
Ee
(
e
=
e
.
slice
(
n
)),
n
<
r
&&
xe
(
e
))}
c
.
push
(
t
)}
return
we
(
c
)}
return
me
.
prototype
=
b
.
filters
=
b
.
pseudos
,
b
.
setFilters
=
new
me
,
h
=
se
.
tokenize
=
function
(
e
,
t
){
var
n
,
r
,
i
,
o
,
a
,
s
,
u
,
l
=
x
[
e
+
" "
];
if
(
l
)
return
t
?
0
:
l
.
slice
(
0
);
a
=
e
,
s
=
[],
u
=
b
.
preFilter
;
while
(
a
){
for
(
o
in
n
&&!
(
r
=
_
.
exec
(
a
))
||
(
r
&&
(
a
=
a
.
slice
(
r
[
0
].
length
)
||
a
),
s
.
push
(
i
=
[])),
n
=!
1
,(
r
=
z
.
exec
(
a
))
&&
(
n
=
r
.
shift
(),
i
.
push
({
value
:
n
,
type
:
r
[
0
].
replace
(
B
,
" "
)}),
a
=
a
.
slice
(
n
.
length
)),
b
.
filter
)
!
(
r
=
G
[
o
].
exec
(
a
))
||
u
[
o
]
&&!
(
r
=
u
[
o
](
r
))
||
(
n
=
r
.
shift
(),
i
.
push
({
value
:
n
,
type
:
o
,
matches
:
r
}),
a
=
a
.
slice
(
n
.
length
));
if
(
!
n
)
break
}
return
t
?
a
.
length
:
a
?
se
.
error
(
e
):
x
(
e
,
s
).
slice
(
0
)},
f
=
se
.
compile
=
function
(
e
,
t
){
var
n
,
v
,
y
,
m
,
x
,
r
,
i
=
[],
o
=
[],
a
=
N
[
e
+
" "
];
if
(
!
a
){
t
||
(
t
=
h
(
e
)),
n
=
t
.
length
;
while
(
n
--
)(
a
=
Ee
(
t
[
n
]))[
k
]?
i
.
push
(
a
):
o
.
push
(
a
);(
a
=
N
(
e
,(
v
=
o
,
m
=
0
<
(
y
=
i
).
length
,
x
=
0
<
v
.
length
,
r
=
function
(
e
,
t
,
n
,
r
,
i
){
var
o
,
a
,
s
,
u
=
0
,
l
=
"0"
,
c
=
e
&&
[],
f
=
[],
p
=
w
,
d
=
e
||
x
&&
b
.
find
.
TAG
(
"*"
,
i
),
h
=
S
+=
null
==
p
?
1
:
Math
.
random
()
||
.
1
,
g
=
d
.
length
;
for
(
i
&&
(
w
=
t
===
C
||
t
||
i
);
l
!==
g
&&
null
!=
(
o
=
d
[
l
]);
l
++
){
if
(
x
&&
o
){
a
=
0
,
t
||
o
.
ownerDocument
===
C
||
(
T
(
o
),
n
=!
E
);
while
(
s
=
v
[
a
++
])
if
(
s
(
o
,
t
||
C
,
n
)){
r
.
push
(
o
);
break
}
i
&&
(
S
=
h
)}
m
&&
((
o
=!
s
&&
o
)
&&
u
--
,
e
&&
c
.
push
(
o
))}
if
(
u
+=
l
,
m
&&
l
!==
u
){
a
=
0
;
while
(
s
=
y
[
a
++
])
s
(
c
,
f
,
t
,
n
);
if
(
e
){
if
(
0
<
u
)
while
(
l
--
)
c
[
l
]
||
f
[
l
]
||
(
f
[
l
]
=
q
.
call
(
r
));
f
=
Te
(
f
)}
H
.
apply
(
r
,
f
),
i
&&!
e
&&
0
<
f
.
length
&&
1
<
u
+
y
.
length
&&
se
.
uniqueSort
(
r
)}
return
i
&&
(
S
=
h
,
w
=
p
),
c
},
m
?
le
(
r
):
r
))).
selector
=
e
}
return
a
},
g
=
se
.
select
=
function
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
,
s
,
u
,
l
=
"function"
==
typeof
e
&&
e
,
c
=!
r
&&
h
(
e
=
l
.
selector
||
e
);
if
(
n
=
n
||
[],
1
===
c
.
length
){
if
(
2
<
(
o
=
c
[
0
]
=
c
[
0
].
slice
(
0
)).
length
&&
"ID"
===
(
a
=
o
[
0
]).
type
&&
9
===
t
.
nodeType
&&
E
&&
b
.
relative
[
o
[
1
].
type
]){
if
(
!
(
t
=
(
b
.
find
.
ID
(
a
.
matches
[
0
].
replace
(
te
,
ne
),
t
)
||
[])[
0
]))
return
n
;
l
&&
(
t
=
t
.
parentNode
),
e
=
e
.
slice
(
o
.
shift
().
value
.
length
)}
i
=
G
.
needsContext
.
test
(
e
)?
0
:
o
.
length
;
while
(
i
--
){
if
(
a
=
o
[
i
],
b
.
relative
[
s
=
a
.
type
])
break
;
if
((
u
=
b
.
find
[
s
])
&&
(
r
=
u
(
a
.
matches
[
0
].
replace
(
te
,
ne
),
ee
.
test
(
o
[
0
].
type
)
&&
ye
(
t
.
parentNode
)
||
t
))){
if
(
o
.
splice
(
i
,
1
),
!
(
e
=
r
.
length
&&
xe
(
o
)))
return
H
.
apply
(
n
,
r
),
n
;
break
}}}
return
(
l
||
f
(
e
,
c
))(
r
,
t
,
!
E
,
n
,
!
t
||
ee
.
test
(
e
)
&&
ye
(
t
.
parentNode
)
||
t
),
n
},
d
.
sortStable
=
k
.
split
(
""
).
sort
(
D
).
join
(
""
)
===
k
,
d
.
detectDuplicates
=!!
l
,
T
(),
d
.
sortDetached
=
ce
(
function
(
e
){
return
1
&
e
.
compareDocumentPosition
(
C
.
createElement
(
"fieldset"
))}),
ce
(
function
(
e
){
return
e
.
innerHTML
=
"<a href='#'></a>"
,
"#"
===
e
.
firstChild
.
getAttribute
(
"href"
)})
||
fe
(
"type|href|height|width"
,
function
(
e
,
t
,
n
){
if
(
!
n
)
return
e
.
getAttribute
(
t
,
"type"
===
t
.
toLowerCase
()?
1
:
2
)}),
d
.
attributes
&&
ce
(
function
(
e
){
return
e
.
innerHTML
=
"<input/>"
,
e
.
firstChild
.
setAttribute
(
"value"
,
""
),
""
===
e
.
firstChild
.
getAttribute
(
"value"
)})
||
fe
(
"value"
,
function
(
e
,
t
,
n
){
if
(
!
n
&&
"input"
===
e
.
nodeName
.
toLowerCase
())
return
e
.
defaultValue
}),
ce
(
function
(
e
){
return
null
==
e
.
getAttribute
(
"disabled"
)})
||
fe
(
R
,
function
(
e
,
t
,
n
){
var
r
;
if
(
!
n
)
return
!
0
===
e
[
t
]?
t
.
toLowerCase
():(
r
=
e
.
getAttributeNode
(
t
))
&&
r
.
specified
?
r
.
value
:
null
}),
se
}(
C
);
k
.
find
=
h
,
k
.
expr
=
h
.
selectors
,
k
.
expr
[
":"
]
=
k
.
expr
.
pseudos
,
k
.
uniqueSort
=
k
.
unique
=
h
.
uniqueSort
,
k
.
text
=
h
.
getText
,
k
.
isXMLDoc
=
h
.
isXML
,
k
.
contains
=
h
.
contains
,
k
.
escapeSelector
=
h
.
escape
;
var
T
=
function
(
e
,
t
,
n
){
var
r
=
[],
i
=
void
0
!==
n
;
while
((
e
=
e
[
t
])
&&
9
!==
e
.
nodeType
)
if
(
1
===
e
.
nodeType
){
if
(
i
&&
k
(
e
).
is
(
n
))
break
;
r
.
push
(
e
)}
return
r
},
S
=
function
(
e
,
t
){
for
(
var
n
=
[];
e
;
e
=
e
.
nextSibling
)
1
===
e
.
nodeType
&&
e
!==
t
&&
n
.
push
(
e
);
return
n
},
N
=
k
.
expr
.
match
.
needsContext
;
function
A
(
e
,
t
){
return
e
.
nodeName
&&
e
.
nodeName
.
toLowerCase
()
===
t
.
toLowerCase
()}
var
D
=
/^<
([
a-z
][^\/\0
>:
\x
20
\t\r\n\f]
*
)[\x
20
\t\r\n\f]
*
\/?
>
(?:
<
\/\1
>|
)
$/i
;
function
j
(
e
,
n
,
r
){
return
m
(
n
)?
k
.
grep
(
e
,
function
(
e
,
t
){
return
!!
n
.
call
(
e
,
t
,
e
)
!==
r
}):
n
.
nodeType
?
k
.
grep
(
e
,
function
(
e
){
return
e
===
n
!==
r
}):
"string"
!=
typeof
n
?
k
.
grep
(
e
,
function
(
e
){
return
-
1
<
i
.
call
(
n
,
e
)
!==
r
}):
k
.
filter
(
n
,
e
,
r
)}
k
.
filter
=
function
(
e
,
t
,
n
){
var
r
=
t
[
0
];
return
n
&&
(
e
=
":not("
+
e
+
")"
),
1
===
t
.
length
&&
1
===
r
.
nodeType
?
k
.
find
.
matchesSelector
(
r
,
e
)?[
r
]:[]:
k
.
find
.
matches
(
e
,
k
.
grep
(
t
,
function
(
e
){
return
1
===
e
.
nodeType
}))},
k
.
fn
.
extend
({
find
:
function
(
e
){
var
t
,
n
,
r
=
this
.
length
,
i
=
this
;
if
(
"string"
!=
typeof
e
)
return
this
.
pushStack
(
k
(
e
).
filter
(
function
(){
for
(
t
=
0
;
t
<
r
;
t
++
)
if
(
k
.
contains
(
i
[
t
],
this
))
return
!
0
}));
for
(
n
=
this
.
pushStack
([]),
t
=
0
;
t
<
r
;
t
++
)
k
.
find
(
e
,
i
[
t
],
n
);
return
1
<
r
?
k
.
uniqueSort
(
n
):
n
},
filter
:
function
(
e
){
return
this
.
pushStack
(
j
(
this
,
e
||
[],
!
1
))},
not
:
function
(
e
){
return
this
.
pushStack
(
j
(
this
,
e
||
[],
!
0
))},
is
:
function
(
e
){
return
!!
j
(
this
,
"string"
==
typeof
e
&&
N
.
test
(
e
)?
k
(
e
):
e
||
[],
!
1
).
length
}});
var
q
,
L
=
/^
(?:\s
*
(
<
[\w\W]
+>
)[^
>
]
*|#
([\w
-
]
+
))
$/
;(
k
.
fn
.
init
=
function
(
e
,
t
,
n
){
var
r
,
i
;
if
(
!
e
)
return
this
;
if
(
n
=
n
||
q
,
"string"
==
typeof
e
){
if
(
!
(
r
=
"<"
===
e
[
0
]
&&
">"
===
e
[
e
.
length
-
1
]
&&
3
<=
e
.
length
?[
null
,
e
,
null
]:
L
.
exec
(
e
))
||!
r
[
1
]
&&
t
)
return
!
t
||
t
.
jquery
?(
t
||
n
).
find
(
e
):
this
.
constructor
(
t
).
find
(
e
);
if
(
r
[
1
]){
if
(
t
=
t
instanceof
k
?
t
[
0
]:
t
,
k
.
merge
(
this
,
k
.
parseHTML
(
r
[
1
],
t
&&
t
.
nodeType
?
t
.
ownerDocument
||
t
:
E
,
!
0
)),
D
.
test
(
r
[
1
])
&&
k
.
isPlainObject
(
t
))
for
(
r
in
t
)
m
(
this
[
r
])?
this
[
r
](
t
[
r
]):
this
.
attr
(
r
,
t
[
r
]);
return
this
}
return
(
i
=
E
.
getElementById
(
r
[
2
]))
&&
(
this
[
0
]
=
i
,
this
.
length
=
1
),
this
}
return
e
.
nodeType
?(
this
[
0
]
=
e
,
this
.
length
=
1
,
this
):
m
(
e
)?
void
0
!==
n
.
ready
?
n
.
ready
(
e
):
e
(
k
):
k
.
makeArray
(
e
,
this
)}).
prototype
=
k
.
fn
,
q
=
k
(
E
);
var
H
=
/^
(?:
parents|prev
(?:
Until|All
))
/
,
O
=
{
children
:
!
0
,
contents
:
!
0
,
next
:
!
0
,
prev
:
!
0
};
function
P
(
e
,
t
){
while
((
e
=
e
[
t
])
&&
1
!==
e
.
nodeType
);
return
e
}
k
.
fn
.
extend
({
has
:
function
(
e
){
var
t
=
k
(
e
,
this
),
n
=
t
.
length
;
return
this
.
filter
(
function
(){
for
(
var
e
=
0
;
e
<
n
;
e
++
)
if
(
k
.
contains
(
this
,
t
[
e
]))
return
!
0
})},
closest
:
function
(
e
,
t
){
var
n
,
r
=
0
,
i
=
this
.
length
,
o
=
[],
a
=
"string"
!=
typeof
e
&&
k
(
e
);
if
(
!
N
.
test
(
e
))
for
(;
r
<
i
;
r
++
)
for
(
n
=
this
[
r
];
n
&&
n
!==
t
;
n
=
n
.
parentNode
)
if
(
n
.
nodeType
<
11
&&
(
a
?
-
1
<
a
.
index
(
n
):
1
===
n
.
nodeType
&&
k
.
find
.
matchesSelector
(
n
,
e
))){
o
.
push
(
n
);
break
}
return
this
.
pushStack
(
1
<
o
.
length
?
k
.
uniqueSort
(
o
):
o
)},
index
:
function
(
e
){
return
e
?
"string"
==
typeof
e
?
i
.
call
(
k
(
e
),
this
[
0
]):
i
.
call
(
this
,
e
.
jquery
?
e
[
0
]:
e
):
this
[
0
]
&&
this
[
0
].
parentNode
?
this
.
first
().
prevAll
().
length
:
-
1
},
add
:
function
(
e
,
t
){
return
this
.
pushStack
(
k
.
uniqueSort
(
k
.
merge
(
this
.
get
(),
k
(
e
,
t
))))},
addBack
:
function
(
e
){
return
this
.
add
(
null
==
e
?
this
.
prevObject
:
this
.
prevObject
.
filter
(
e
))}}),
k
.
each
({
parent
:
function
(
e
){
var
t
=
e
.
parentNode
;
return
t
&&
11
!==
t
.
nodeType
?
t
:
null
},
parents
:
function
(
e
){
return
T
(
e
,
"parentNode"
)},
parentsUntil
:
function
(
e
,
t
,
n
){
return
T
(
e
,
"parentNode"
,
n
)},
next
:
function
(
e
){
return
P
(
e
,
"nextSibling"
)},
prev
:
function
(
e
){
return
P
(
e
,
"previousSibling"
)},
nextAll
:
function
(
e
){
return
T
(
e
,
"nextSibling"
)},
prevAll
:
function
(
e
){
return
T
(
e
,
"previousSibling"
)},
nextUntil
:
function
(
e
,
t
,
n
){
return
T
(
e
,
"nextSibling"
,
n
)},
prevUntil
:
function
(
e
,
t
,
n
){
return
T
(
e
,
"previousSibling"
,
n
)},
siblings
:
function
(
e
){
return
S
((
e
.
parentNode
||
{}).
firstChild
,
e
)},
children
:
function
(
e
){
return
S
(
e
.
firstChild
)},
contents
:
function
(
e
){
return
"undefined"
!=
typeof
e
.
contentDocument
?
e
.
contentDocument
:(
A
(
e
,
"template"
)
&&
(
e
=
e
.
content
||
e
),
k
.
merge
([],
e
.
childNodes
))}},
function
(
r
,
i
){
k
.
fn
[
r
]
=
function
(
e
,
t
){
var
n
=
k
.
map
(
this
,
i
,
e
);
return
"Until"
!==
r
.
slice
(
-
5
)
&&
(
t
=
e
),
t
&&
"string"
==
typeof
t
&&
(
n
=
k
.
filter
(
t
,
n
)),
1
<
this
.
length
&&
(
O
[
r
]
||
k
.
uniqueSort
(
n
),
H
.
test
(
r
)
&&
n
.
reverse
()),
this
.
pushStack
(
n
)}});
var
R
=
/
[^\x
20
\t\r\n\f]
+/g
;
function
M
(
e
){
return
e
}
function
I
(
e
){
throw
e
}
function
W
(
e
,
t
,
n
,
r
){
var
i
;
try
{
e
&&
m
(
i
=
e
.
promise
)?
i
.
call
(
e
).
done
(
t
).
fail
(
n
):
e
&&
m
(
i
=
e
.
then
)?
i
.
call
(
e
,
t
,
n
):
t
.
apply
(
void
0
,[
e
].
slice
(
r
))}
catch
(
e
){
n
.
apply
(
void
0
,[
e
])}}
k
.
Callbacks
=
function
(
r
){
var
e
,
n
;
r
=
"string"
==
typeof
r
?(
e
=
r
,
n
=
{},
k
.
each
(
e
.
match
(
R
)
||
[],
function
(
e
,
t
){
n
[
t
]
=!
0
}),
n
):
k
.
extend
({},
r
);
var
i
,
t
,
o
,
a
,
s
=
[],
u
=
[],
l
=-
1
,
c
=
function
(){
for
(
a
=
a
||
r
.
once
,
o
=
i
=!
0
;
u
.
length
;
l
=-
1
){
t
=
u
.
shift
();
while
(
++
l
<
s
.
length
)
!
1
===
s
[
l
].
apply
(
t
[
0
],
t
[
1
])
&&
r
.
stopOnFalse
&&
(
l
=
s
.
length
,
t
=!
1
)}
r
.
memory
||
(
t
=!
1
),
i
=!
1
,
a
&&
(
s
=
t
?[]:
""
)},
f
=
{
add
:
function
(){
return
s
&&
(
t
&&!
i
&&
(
l
=
s
.
length
-
1
,
u
.
push
(
t
)),
function
n
(
e
){
k
.
each
(
e
,
function
(
e
,
t
){
m
(
t
)?
r
.
unique
&&
f
.
has
(
t
)
||
s
.
push
(
t
):
t
&&
t
.
length
&&
"string"
!==
w
(
t
)
&&
n
(
t
)})}(
arguments
),
t
&&!
i
&&
c
()),
this
},
remove
:
function
(){
return
k
.
each
(
arguments
,
function
(
e
,
t
){
var
n
;
while
(
-
1
<
(
n
=
k
.
inArray
(
t
,
s
,
n
)))
s
.
splice
(
n
,
1
),
n
<=
l
&&
l
--
}),
this
},
has
:
function
(
e
){
return
e
?
-
1
<
k
.
inArray
(
e
,
s
):
0
<
s
.
length
},
empty
:
function
(){
return
s
&&
(
s
=
[]),
this
},
disable
:
function
(){
return
a
=
u
=
[],
s
=
t
=
""
,
this
},
disabled
:
function
(){
return
!
s
},
lock
:
function
(){
return
a
=
u
=
[],
t
||
i
||
(
s
=
t
=
""
),
this
},
locked
:
function
(){
return
!!
a
},
fireWith
:
function
(
e
,
t
){
return
a
||
(
t
=
[
e
,(
t
=
t
||
[]).
slice
?
t
.
slice
():
t
],
u
.
push
(
t
),
i
||
c
()),
this
},
fire
:
function
(){
return
f
.
fireWith
(
this
,
arguments
),
this
},
fired
:
function
(){
return
!!
o
}};
return
f
},
k
.
extend
({
Deferred
:
function
(
e
){
var
o
=
[[
"notify"
,
"progress"
,
k
.
Callbacks
(
"memory"
),
k
.
Callbacks
(
"memory"
),
2
],[
"resolve"
,
"done"
,
k
.
Callbacks
(
"once memory"
),
k
.
Callbacks
(
"once memory"
),
0
,
"resolved"
],[
"reject"
,
"fail"
,
k
.
Callbacks
(
"once memory"
),
k
.
Callbacks
(
"once memory"
),
1
,
"rejected"
]],
i
=
"pending"
,
a
=
{
state
:
function
(){
return
i
},
always
:
function
(){
return
s
.
done
(
arguments
).
fail
(
arguments
),
this
},
"catch"
:
function
(
e
){
return
a
.
then
(
null
,
e
)},
pipe
:
function
(){
var
i
=
arguments
;
return
k
.
Deferred
(
function
(
r
){
k
.
each
(
o
,
function
(
e
,
t
){
var
n
=
m
(
i
[
t
[
4
]])
&&
i
[
t
[
4
]];
s
[
t
[
1
]](
function
(){
var
e
=
n
&&
n
.
apply
(
this
,
arguments
);
e
&&
m
(
e
.
promise
)?
e
.
promise
().
progress
(
r
.
notify
).
done
(
r
.
resolve
).
fail
(
r
.
reject
):
r
[
t
[
0
]
+
"With"
](
this
,
n
?[
e
]:
arguments
)})}),
i
=
null
}).
promise
()},
then
:
function
(
t
,
n
,
r
){
var
u
=
0
;
function
l
(
i
,
o
,
a
,
s
){
return
function
(){
var
n
=
this
,
r
=
arguments
,
e
=
function
(){
var
e
,
t
;
if
(
!
(
i
<
u
)){
if
((
e
=
a
.
apply
(
n
,
r
))
===
o
.
promise
())
throw
new
TypeError
(
"Thenable self-resolution"
);
t
=
e
&&
(
"object"
==
typeof
e
||
"function"
==
typeof
e
)
&&
e
.
then
,
m
(
t
)?
s
?
t
.
call
(
e
,
l
(
u
,
o
,
M
,
s
),
l
(
u
,
o
,
I
,
s
)):(
u
++
,
t
.
call
(
e
,
l
(
u
,
o
,
M
,
s
),
l
(
u
,
o
,
I
,
s
),
l
(
u
,
o
,
M
,
o
.
notifyWith
))):(
a
!==
M
&&
(
n
=
void
0
,
r
=
[
e
]),(
s
||
o
.
resolveWith
)(
n
,
r
))}},
t
=
s
?
e
:
function
(){
try
{
e
()}
catch
(
e
){
k
.
Deferred
.
exceptionHook
&&
k
.
Deferred
.
exceptionHook
(
e
,
t
.
stackTrace
),
u
<=
i
+
1
&&
(
a
!==
I
&&
(
n
=
void
0
,
r
=
[
e
]),
o
.
rejectWith
(
n
,
r
))}};
i
?
t
():(
k
.
Deferred
.
getStackHook
&&
(
t
.
stackTrace
=
k
.
Deferred
.
getStackHook
()),
C
.
setTimeout
(
t
))}}
return
k
.
Deferred
(
function
(
e
){
o
[
0
][
3
].
add
(
l
(
0
,
e
,
m
(
r
)?
r
:
M
,
e
.
notifyWith
)),
o
[
1
][
3
].
add
(
l
(
0
,
e
,
m
(
t
)?
t
:
M
)),
o
[
2
][
3
].
add
(
l
(
0
,
e
,
m
(
n
)?
n
:
I
))}).
promise
()},
promise
:
function
(
e
){
return
null
!=
e
?
k
.
extend
(
e
,
a
):
a
}},
s
=
{};
return
k
.
each
(
o
,
function
(
e
,
t
){
var
n
=
t
[
2
],
r
=
t
[
5
];
a
[
t
[
1
]]
=
n
.
add
,
r
&&
n
.
add
(
function
(){
i
=
r
},
o
[
3
-
e
][
2
].
disable
,
o
[
3
-
e
][
3
].
disable
,
o
[
0
][
2
].
lock
,
o
[
0
][
3
].
lock
),
n
.
add
(
t
[
3
].
fire
),
s
[
t
[
0
]]
=
function
(){
return
s
[
t
[
0
]
+
"With"
](
this
===
s
?
void
0
:
this
,
arguments
),
this
},
s
[
t
[
0
]
+
"With"
]
=
n
.
fireWith
}),
a
.
promise
(
s
),
e
&&
e
.
call
(
s
,
s
),
s
},
when
:
function
(
e
){
var
n
=
arguments
.
length
,
t
=
n
,
r
=
Array
(
t
),
i
=
s
.
call
(
arguments
),
o
=
k
.
Deferred
(),
a
=
function
(
t
){
return
function
(
e
){
r
[
t
]
=
this
,
i
[
t
]
=
1
<
arguments
.
length
?
s
.
call
(
arguments
):
e
,
--
n
||
o
.
resolveWith
(
r
,
i
)}};
if
(
n
<=
1
&&
(
W
(
e
,
o
.
done
(
a
(
t
)).
resolve
,
o
.
reject
,
!
n
),
"pending"
===
o
.
state
()
||
m
(
i
[
t
]
&&
i
[
t
].
then
)))
return
o
.
then
();
while
(
t
--
)
W
(
i
[
t
],
a
(
t
),
o
.
reject
);
return
o
.
promise
()}});
var
$
=
/^
(
Eval|Internal|Range|Reference|Syntax|Type|URI
)
Error$/
;
k
.
Deferred
.
exceptionHook
=
function
(
e
,
t
){
C
.
console
&&
C
.
console
.
warn
&&
e
&&
$
.
test
(
e
.
name
)
&&
C
.
console
.
warn
(
"jQuery.Deferred exception: "
+
e
.
message
,
e
.
stack
,
t
)},
k
.
readyException
=
function
(
e
){
C
.
setTimeout
(
function
(){
throw
e
})};
var
F
=
k
.
Deferred
();
function
B
(){
E
.
removeEventListener
(
"DOMContentLoaded"
,
B
),
C
.
removeEventListener
(
"load"
,
B
),
k
.
ready
()}
k
.
fn
.
ready
=
function
(
e
){
return
F
.
then
(
e
)[
"catch"
](
function
(
e
){
k
.
readyException
(
e
)}),
this
},
k
.
extend
({
isReady
:
!
1
,
readyWait
:
1
,
ready
:
function
(
e
){(
!
0
===
e
?
--
k
.
readyWait
:
k
.
isReady
)
||
(
k
.
isReady
=!
0
)
!==
e
&&
0
<--
k
.
readyWait
||
F
.
resolveWith
(
E
,[
k
])}}),
k
.
ready
.
then
=
F
.
then
,
"complete"
===
E
.
readyState
||
"loading"
!==
E
.
readyState
&&!
E
.
documentElement
.
doScroll
?
C
.
setTimeout
(
k
.
ready
):(
E
.
addEventListener
(
"DOMContentLoaded"
,
B
),
C
.
addEventListener
(
"load"
,
B
));
var
_
=
function
(
e
,
t
,
n
,
r
,
i
,
o
,
a
){
var
s
=
0
,
u
=
e
.
length
,
l
=
null
==
n
;
if
(
"object"
===
w
(
n
))
for
(
s
in
i
=!
0
,
n
)
_
(
e
,
t
,
s
,
n
[
s
],
!
0
,
o
,
a
);
else
if
(
void
0
!==
r
&&
(
i
=!
0
,
m
(
r
)
||
(
a
=!
0
),
l
&&
(
a
?(
t
.
call
(
e
,
r
),
t
=
null
):(
l
=
t
,
t
=
function
(
e
,
t
,
n
){
return
l
.
call
(
k
(
e
),
n
)})),
t
))
for
(;
s
<
u
;
s
++
)
t
(
e
[
s
],
n
,
a
?
r
:
r
.
call
(
e
[
s
],
s
,
t
(
e
[
s
],
n
)));
return
i
?
e
:
l
?
t
.
call
(
e
):
u
?
t
(
e
[
0
],
n
):
o
},
z
=
/^-ms-/
,
U
=
/-
([
a-z
])
/g
;
function
X
(
e
,
t
){
return
t
.
toUpperCase
()}
function
V
(
e
){
return
e
.
replace
(
z
,
"ms-"
).
replace
(
U
,
X
)}
var
G
=
function
(
e
){
return
1
===
e
.
nodeType
||
9
===
e
.
nodeType
||!+
e
.
nodeType
};
function
Y
(){
this
.
expando
=
k
.
expando
+
Y
.
uid
++
}
Y
.
uid
=
1
,
Y
.
prototype
=
{
cache
:
function
(
e
){
var
t
=
e
[
this
.
expando
];
return
t
||
(
t
=
{},
G
(
e
)
&&
(
e
.
nodeType
?
e
[
this
.
expando
]
=
t
:
Object
.
defineProperty
(
e
,
this
.
expando
,{
value
:
t
,
configurable
:
!
0
}))),
t
},
set
:
function
(
e
,
t
,
n
){
var
r
,
i
=
this
.
cache
(
e
);
if
(
"string"
==
typeof
t
)
i
[
V
(
t
)]
=
n
;
else
for
(
r
in
t
)
i
[
V
(
r
)]
=
t
[
r
];
return
i
},
get
:
function
(
e
,
t
){
return
void
0
===
t
?
this
.
cache
(
e
):
e
[
this
.
expando
]
&&
e
[
this
.
expando
][
V
(
t
)]},
access
:
function
(
e
,
t
,
n
){
return
void
0
===
t
||
t
&&
"string"
==
typeof
t
&&
void
0
===
n
?
this
.
get
(
e
,
t
):(
this
.
set
(
e
,
t
,
n
),
void
0
!==
n
?
n
:
t
)},
remove
:
function
(
e
,
t
){
var
n
,
r
=
e
[
this
.
expando
];
if
(
void
0
!==
r
){
if
(
void
0
!==
t
){
n
=
(
t
=
Array
.
isArray
(
t
)?
t
.
map
(
V
):(
t
=
V
(
t
))
in
r
?[
t
]:
t
.
match
(
R
)
||
[]).
length
;
while
(
n
--
)
delete
r
[
t
[
n
]]}(
void
0
===
t
||
k
.
isEmptyObject
(
r
))
&&
(
e
.
nodeType
?
e
[
this
.
expando
]
=
void
0
:
delete
e
[
this
.
expando
])}},
hasData
:
function
(
e
){
var
t
=
e
[
this
.
expando
];
return
void
0
!==
t
&&!
k
.
isEmptyObject
(
t
)}};
var
Q
=
new
Y
,
J
=
new
Y
,
K
=
/^
(?:\{[\w\W]
*
\}
|
\[[\w\W]
*
\])
$/
,
Z
=
/
[
A-Z
]
/g
;
function
ee
(
e
,
t
,
n
){
var
r
,
i
;
if
(
void
0
===
n
&&
1
===
e
.
nodeType
)
if
(
r
=
"data-"
+
t
.
replace
(
Z
,
"-$&"
).
toLowerCase
(),
"string"
==
typeof
(
n
=
e
.
getAttribute
(
r
))){
try
{
n
=
"true"
===
(
i
=
n
)
||
"false"
!==
i
&&
(
"null"
===
i
?
null
:
i
===+
i
+
""
?
+
i
:
K
.
test
(
i
)?
JSON
.
parse
(
i
):
i
)}
catch
(
e
){}
J
.
set
(
e
,
t
,
n
)}
else
n
=
void
0
;
return
n
}
k
.
extend
({
hasData
:
function
(
e
){
return
J
.
hasData
(
e
)
||
Q
.
hasData
(
e
)},
data
:
function
(
e
,
t
,
n
){
return
J
.
access
(
e
,
t
,
n
)},
removeData
:
function
(
e
,
t
){
J
.
remove
(
e
,
t
)},
_data
:
function
(
e
,
t
,
n
){
return
Q
.
access
(
e
,
t
,
n
)},
_removeData
:
function
(
e
,
t
){
Q
.
remove
(
e
,
t
)}}),
k
.
fn
.
extend
({
data
:
function
(
n
,
e
){
var
t
,
r
,
i
,
o
=
this
[
0
],
a
=
o
&&
o
.
attributes
;
if
(
void
0
===
n
){
if
(
this
.
length
&&
(
i
=
J
.
get
(
o
),
1
===
o
.
nodeType
&&!
Q
.
get
(
o
,
"hasDataAttrs"
))){
t
=
a
.
length
;
while
(
t
--
)
a
[
t
]
&&
0
===
(
r
=
a
[
t
].
name
).
indexOf
(
"data-"
)
&&
(
r
=
V
(
r
.
slice
(
5
)),
ee
(
o
,
r
,
i
[
r
]));
Q
.
set
(
o
,
"hasDataAttrs"
,
!
0
)}
return
i
}
return
"object"
==
typeof
n
?
this
.
each
(
function
(){
J
.
set
(
this
,
n
)}):
_
(
this
,
function
(
e
){
var
t
;
if
(
o
&&
void
0
===
e
)
return
void
0
!==
(
t
=
J
.
get
(
o
,
n
))?
t
:
void
0
!==
(
t
=
ee
(
o
,
n
))?
t
:
void
0
;
this
.
each
(
function
(){
J
.
set
(
this
,
n
,
e
)})},
null
,
e
,
1
<
arguments
.
length
,
null
,
!
0
)},
removeData
:
function
(
e
){
return
this
.
each
(
function
(){
J
.
remove
(
this
,
e
)})}}),
k
.
extend
({
queue
:
function
(
e
,
t
,
n
){
var
r
;
if
(
e
)
return
t
=
(
t
||
"fx"
)
+
"queue"
,
r
=
Q
.
get
(
e
,
t
),
n
&&
(
!
r
||
Array
.
isArray
(
n
)?
r
=
Q
.
access
(
e
,
t
,
k
.
makeArray
(
n
)):
r
.
push
(
n
)),
r
||
[]},
dequeue
:
function
(
e
,
t
){
t
=
t
||
"fx"
;
var
n
=
k
.
queue
(
e
,
t
),
r
=
n
.
length
,
i
=
n
.
shift
(),
o
=
k
.
_queueHooks
(
e
,
t
);
"inprogress"
===
i
&&
(
i
=
n
.
shift
(),
r
--
),
i
&&
(
"fx"
===
t
&&
n
.
unshift
(
"inprogress"
),
delete
o
.
stop
,
i
.
call
(
e
,
function
(){
k
.
dequeue
(
e
,
t
)},
o
)),
!
r
&&
o
&&
o
.
empty
.
fire
()},
_queueHooks
:
function
(
e
,
t
){
var
n
=
t
+
"queueHooks"
;
return
Q
.
get
(
e
,
n
)
||
Q
.
access
(
e
,
n
,{
empty
:
k
.
Callbacks
(
"once memory"
).
add
(
function
(){
Q
.
remove
(
e
,[
t
+
"queue"
,
n
])})})}}),
k
.
fn
.
extend
({
queue
:
function
(
t
,
n
){
var
e
=
2
;
return
"string"
!=
typeof
t
&&
(
n
=
t
,
t
=
"fx"
,
e
--
),
arguments
.
length
<
e
?
k
.
queue
(
this
[
0
],
t
):
void
0
===
n
?
this
:
this
.
each
(
function
(){
var
e
=
k
.
queue
(
this
,
t
,
n
);
k
.
_queueHooks
(
this
,
t
),
"fx"
===
t
&&
"inprogress"
!==
e
[
0
]
&&
k
.
dequeue
(
this
,
t
)})},
dequeue
:
function
(
e
){
return
this
.
each
(
function
(){
k
.
dequeue
(
this
,
e
)})},
clearQueue
:
function
(
e
){
return
this
.
queue
(
e
||
"fx"
,[])},
promise
:
function
(
e
,
t
){
var
n
,
r
=
1
,
i
=
k
.
Deferred
(),
o
=
this
,
a
=
this
.
length
,
s
=
function
(){
--
r
||
i
.
resolveWith
(
o
,[
o
])};
"string"
!=
typeof
e
&&
(
t
=
e
,
e
=
void
0
),
e
=
e
||
"fx"
;
while
(
a
--
)(
n
=
Q
.
get
(
o
[
a
],
e
+
"queueHooks"
))
&&
n
.
empty
&&
(
r
++
,
n
.
empty
.
add
(
s
));
return
s
(),
i
.
promise
(
t
)}});
var
te
=
/
[
+-
]?(?:\d
*
\.
|
)\d
+
(?:[
eE
][
+-
]?\d
+|
)
/
.
source
,
ne
=
new
RegExp
(
"^(?:([+-])=|)("
+
te
+
")([a-z%]*)$"
,
"i"
),
re
=
[
"Top"
,
"Right"
,
"Bottom"
,
"Left"
],
ie
=
E
.
documentElement
,
oe
=
function
(
e
){
return
k
.
contains
(
e
.
ownerDocument
,
e
)},
ae
=
{
composed
:
!
0
};
ie
.
getRootNode
&&
(
oe
=
function
(
e
){
return
k
.
contains
(
e
.
ownerDocument
,
e
)
||
e
.
getRootNode
(
ae
)
===
e
.
ownerDocument
});
var
se
=
function
(
e
,
t
){
return
"none"
===
(
e
=
t
||
e
).
style
.
display
||
""
===
e
.
style
.
display
&&
oe
(
e
)
&&
"none"
===
k
.
css
(
e
,
"display"
)},
ue
=
function
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
=
{};
for
(
o
in
t
)
a
[
o
]
=
e
.
style
[
o
],
e
.
style
[
o
]
=
t
[
o
];
for
(
o
in
i
=
n
.
apply
(
e
,
r
||
[]),
t
)
e
.
style
[
o
]
=
a
[
o
];
return
i
};
function
le
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
=
20
,
s
=
r
?
function
(){
return
r
.
cur
()}:
function
(){
return
k
.
css
(
e
,
t
,
""
)},
u
=
s
(),
l
=
n
&&
n
[
3
]
||
(
k
.
cssNumber
[
t
]?
""
:
"px"
),
c
=
e
.
nodeType
&&
(
k
.
cssNumber
[
t
]
||
"px"
!==
l
&&+
u
)
&&
ne
.
exec
(
k
.
css
(
e
,
t
));
if
(
c
&&
c
[
3
]
!==
l
){
u
/=
2
,
l
=
l
||
c
[
3
],
c
=+
u
||
1
;
while
(
a
--
)
k
.
style
(
e
,
t
,
c
+
l
),(
1
-
o
)
*
(
1
-
(
o
=
s
()
/
u
||
.
5
))
<=
0
&&
(
a
=
0
),
c
/=
o
;
c
*=
2
,
k
.
style
(
e
,
t
,
c
+
l
),
n
=
n
||
[]}
return
n
&&
(
c
=+
c
||+
u
||
0
,
i
=
n
[
1
]?
c
+
(
n
[
1
]
+
1
)
*
n
[
2
]:
+
n
[
2
],
r
&&
(
r
.
unit
=
l
,
r
.
start
=
c
,
r
.
end
=
i
)),
i
}
var
ce
=
{};
function
fe
(
e
,
t
){
for
(
var
n
,
r
,
i
,
o
,
a
,
s
,
u
,
l
=
[],
c
=
0
,
f
=
e
.
length
;
c
<
f
;
c
++
)(
r
=
e
[
c
]).
style
&&
(
n
=
r
.
style
.
display
,
t
?(
"none"
===
n
&&
(
l
[
c
]
=
Q
.
get
(
r
,
"display"
)
||
null
,
l
[
c
]
||
(
r
.
style
.
display
=
""
)),
""
===
r
.
style
.
display
&&
se
(
r
)
&&
(
l
[
c
]
=
(
u
=
a
=
o
=
void
0
,
a
=
(
i
=
r
).
ownerDocument
,
s
=
i
.
nodeName
,(
u
=
ce
[
s
])
||
(
o
=
a
.
body
.
appendChild
(
a
.
createElement
(
s
)),
u
=
k
.
css
(
o
,
"display"
),
o
.
parentNode
.
removeChild
(
o
),
"none"
===
u
&&
(
u
=
"block"
),
ce
[
s
]
=
u
)))):
"none"
!==
n
&&
(
l
[
c
]
=
"none"
,
Q
.
set
(
r
,
"display"
,
n
)));
for
(
c
=
0
;
c
<
f
;
c
++
)
null
!=
l
[
c
]
&&
(
e
[
c
].
style
.
display
=
l
[
c
]);
return
e
}
k
.
fn
.
extend
({
show
:
function
(){
return
fe
(
this
,
!
0
)},
hide
:
function
(){
return
fe
(
this
)},
toggle
:
function
(
e
){
return
"boolean"
==
typeof
e
?
e
?
this
.
show
():
this
.
hide
():
this
.
each
(
function
(){
se
(
this
)?
k
(
this
).
show
():
k
(
this
).
hide
()})}});
var
pe
=
/^
(?:
checkbox|radio
)
$/i
,
de
=
/<
([
a-z
][^\/\0
>
\x
20
\t\r\n\f]
*
)
/i
,
he
=
/^$|^module$|
\/(?:
java|ecma
)
script/i
,
ge
=
{
option
:[
1
,
"<select multiple='multiple'>"
,
"</select>"
],
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
ve
(
e
,
t
){
var
n
;
return
n
=
"undefined"
!=
typeof
e
.
getElementsByTagName
?
e
.
getElementsByTagName
(
t
||
"*"
):
"undefined"
!=
typeof
e
.
querySelectorAll
?
e
.
querySelectorAll
(
t
||
"*"
):[],
void
0
===
t
||
t
&&
A
(
e
,
t
)?
k
.
merge
([
e
],
n
):
n
}
function
ye
(
e
,
t
){
for
(
var
n
=
0
,
r
=
e
.
length
;
n
<
r
;
n
++
)
Q
.
set
(
e
[
n
],
"globalEval"
,
!
t
||
Q
.
get
(
t
[
n
],
"globalEval"
))}
ge
.
optgroup
=
ge
.
option
,
ge
.
tbody
=
ge
.
tfoot
=
ge
.
colgroup
=
ge
.
caption
=
ge
.
thead
,
ge
.
th
=
ge
.
td
;
var
me
,
xe
,
be
=
/<|&#
?\w
+;/
;
function
we
(
e
,
t
,
n
,
r
,
i
){
for
(
var
o
,
a
,
s
,
u
,
l
,
c
,
f
=
t
.
createDocumentFragment
(),
p
=
[],
d
=
0
,
h
=
e
.
length
;
d
<
h
;
d
++
)
if
((
o
=
e
[
d
])
||
0
===
o
)
if
(
"object"
===
w
(
o
))
k
.
merge
(
p
,
o
.
nodeType
?[
o
]:
o
);
else
if
(
be
.
test
(
o
)){
a
=
a
||
f
.
appendChild
(
t
.
createElement
(
"div"
)),
s
=
(
de
.
exec
(
o
)
||
[
""
,
""
])[
1
].
toLowerCase
(),
u
=
ge
[
s
]
||
ge
.
_default
,
a
.
innerHTML
=
u
[
1
]
+
k
.
htmlPrefilter
(
o
)
+
u
[
2
],
c
=
u
[
0
];
while
(
c
--
)
a
=
a
.
lastChild
;
k
.
merge
(
p
,
a
.
childNodes
),(
a
=
f
.
firstChild
).
textContent
=
""
}
else
p
.
push
(
t
.
createTextNode
(
o
));
f
.
textContent
=
""
,
d
=
0
;
while
(
o
=
p
[
d
++
])
if
(
r
&&-
1
<
k
.
inArray
(
o
,
r
))
i
&&
i
.
push
(
o
);
else
if
(
l
=
oe
(
o
),
a
=
ve
(
f
.
appendChild
(
o
),
"script"
),
l
&&
ye
(
a
),
n
){
c
=
0
;
while
(
o
=
a
[
c
++
])
he
.
test
(
o
.
type
||
""
)
&&
n
.
push
(
o
)}
return
f
}
me
=
E
.
createDocumentFragment
().
appendChild
(
E
.
createElement
(
"div"
)),(
xe
=
E
.
createElement
(
"input"
)).
setAttribute
(
"type"
,
"radio"
),
xe
.
setAttribute
(
"checked"
,
"checked"
),
xe
.
setAttribute
(
"name"
,
"t"
),
me
.
appendChild
(
xe
),
y
.
checkClone
=
me
.
cloneNode
(
!
0
).
cloneNode
(
!
0
).
lastChild
.
checked
,
me
.
innerHTML
=
"<textarea>x</textarea>"
,
y
.
noCloneChecked
=!!
me
.
cloneNode
(
!
0
).
lastChild
.
defaultValue
;
var
Te
=
/^key/
,
Ce
=
/^
(?:
mouse|pointer|contextmenu|drag|drop
)
|click/
,
Ee
=
/^
([^
.
]
*
)(?:\.(
.+
)
|
)
/
;
function
ke
(){
return
!
0
}
function
Se
(){
return
!
1
}
function
Ne
(
e
,
t
){
return
e
===
function
(){
try
{
return
E
.
activeElement
}
catch
(
e
){}}()
==
(
"focus"
===
t
)}
function
Ae
(
e
,
t
,
n
,
r
,
i
,
o
){
var
a
,
s
;
if
(
"object"
==
typeof
t
){
for
(
s
in
"string"
!=
typeof
n
&&
(
r
=
r
||
n
,
n
=
void
0
),
t
)
Ae
(
e
,
s
,
n
,
r
,
t
[
s
],
o
);
return
e
}
if
(
null
==
r
&&
null
==
i
?(
i
=
n
,
r
=
n
=
void
0
):
null
==
i
&&
(
"string"
==
typeof
n
?(
i
=
r
,
r
=
void
0
):(
i
=
r
,
r
=
n
,
n
=
void
0
)),
!
1
===
i
)
i
=
Se
;
else
if
(
!
i
)
return
e
;
return
1
===
o
&&
(
a
=
i
,(
i
=
function
(
e
){
return
k
().
off
(
e
),
a
.
apply
(
this
,
arguments
)}).
guid
=
a
.
guid
||
(
a
.
guid
=
k
.
guid
++
)),
e
.
each
(
function
(){
k
.
event
.
add
(
this
,
t
,
i
,
r
,
n
)})}
function
De
(
e
,
i
,
o
){
o
?(
Q
.
set
(
e
,
i
,
!
1
),
k
.
event
.
add
(
e
,
i
,{
namespace
:
!
1
,
handler
:
function
(
e
){
var
t
,
n
,
r
=
Q
.
get
(
this
,
i
);
if
(
1
&
e
.
isTrigger
&&
this
[
i
]){
if
(
r
.
length
)(
k
.
event
.
special
[
i
]
||
{}).
delegateType
&&
e
.
stopPropagation
();
else
if
(
r
=
s
.
call
(
arguments
),
Q
.
set
(
this
,
i
,
r
),
t
=
o
(
this
,
i
),
this
[
i
](),
r
!==
(
n
=
Q
.
get
(
this
,
i
))
||
t
?
Q
.
set
(
this
,
i
,
!
1
):
n
=
{},
r
!==
n
)
return
e
.
stopImmediatePropagation
(),
e
.
preventDefault
(),
n
.
value
}
else
r
.
length
&&
(
Q
.
set
(
this
,
i
,{
value
:
k
.
event
.
trigger
(
k
.
extend
(
r
[
0
],
k
.
Event
.
prototype
),
r
.
slice
(
1
),
this
)}),
e
.
stopImmediatePropagation
())}})):
void
0
===
Q
.
get
(
e
,
i
)
&&
k
.
event
.
add
(
e
,
i
,
ke
)}
k
.
event
=
{
global
:{},
add
:
function
(
t
,
e
,
n
,
r
,
i
){
var
o
,
a
,
s
,
u
,
l
,
c
,
f
,
p
,
d
,
h
,
g
,
v
=
Q
.
get
(
t
);
if
(
v
){
n
.
handler
&&
(
n
=
(
o
=
n
).
handler
,
i
=
o
.
selector
),
i
&&
k
.
find
.
matchesSelector
(
ie
,
i
),
n
.
guid
||
(
n
.
guid
=
k
.
guid
++
),(
u
=
v
.
events
)
||
(
u
=
v
.
events
=
{}),(
a
=
v
.
handle
)
||
(
a
=
v
.
handle
=
function
(
e
){
return
"undefined"
!=
typeof
k
&&
k
.
event
.
triggered
!==
e
.
type
?
k
.
event
.
dispatch
.
apply
(
t
,
arguments
):
void
0
}),
l
=
(
e
=
(
e
||
""
).
match
(
R
)
||
[
""
]).
length
;
while
(
l
--
)
d
=
g
=
(
s
=
Ee
.
exec
(
e
[
l
])
||
[])[
1
],
h
=
(
s
[
2
]
||
""
).
split
(
"."
).
sort
(),
d
&&
(
f
=
k
.
event
.
special
[
d
]
||
{},
d
=
(
i
?
f
.
delegateType
:
f
.
bindType
)
||
d
,
f
=
k
.
event
.
special
[
d
]
||
{},
c
=
k
.
extend
({
type
:
d
,
origType
:
g
,
data
:
r
,
handler
:
n
,
guid
:
n
.
guid
,
selector
:
i
,
needsContext
:
i
&&
k
.
expr
.
match
.
needsContext
.
test
(
i
),
namespace
:
h
.
join
(
"."
)},
o
),(
p
=
u
[
d
])
||
((
p
=
u
[
d
]
=
[]).
delegateCount
=
0
,
f
.
setup
&&!
1
!==
f
.
setup
.
call
(
t
,
r
,
h
,
a
)
||
t
.
addEventListener
&&
t
.
addEventListener
(
d
,
a
)),
f
.
add
&&
(
f
.
add
.
call
(
t
,
c
),
c
.
handler
.
guid
||
(
c
.
handler
.
guid
=
n
.
guid
)),
i
?
p
.
splice
(
p
.
delegateCount
++
,
0
,
c
):
p
.
push
(
c
),
k
.
event
.
global
[
d
]
=!
0
)}},
remove
:
function
(
e
,
t
,
n
,
r
,
i
){
var
o
,
a
,
s
,
u
,
l
,
c
,
f
,
p
,
d
,
h
,
g
,
v
=
Q
.
hasData
(
e
)
&&
Q
.
get
(
e
);
if
(
v
&&
(
u
=
v
.
events
)){
l
=
(
t
=
(
t
||
""
).
match
(
R
)
||
[
""
]).
length
;
while
(
l
--
)
if
(
d
=
g
=
(
s
=
Ee
.
exec
(
t
[
l
])
||
[])[
1
],
h
=
(
s
[
2
]
||
""
).
split
(
"."
).
sort
(),
d
){
f
=
k
.
event
.
special
[
d
]
||
{},
p
=
u
[
d
=
(
r
?
f
.
delegateType
:
f
.
bindType
)
||
d
]
||
[],
s
=
s
[
2
]
&&
new
RegExp
(
"(^|
\\
.)"
+
h
.
join
(
"
\\
.(?:.*
\\
.|)"
)
+
"(
\\
.|$)"
),
a
=
o
=
p
.
length
;
while
(
o
--
)
c
=
p
[
o
],
!
i
&&
g
!==
c
.
origType
||
n
&&
n
.
guid
!==
c
.
guid
||
s
&&!
s
.
test
(
c
.
namespace
)
||
r
&&
r
!==
c
.
selector
&&
(
"**"
!==
r
||!
c
.
selector
)
||
(
p
.
splice
(
o
,
1
),
c
.
selector
&&
p
.
delegateCount
--
,
f
.
remove
&&
f
.
remove
.
call
(
e
,
c
));
a
&&!
p
.
length
&&
(
f
.
teardown
&&!
1
!==
f
.
teardown
.
call
(
e
,
h
,
v
.
handle
)
||
k
.
removeEvent
(
e
,
d
,
v
.
handle
),
delete
u
[
d
])}
else
for
(
d
in
u
)
k
.
event
.
remove
(
e
,
d
+
t
[
l
],
n
,
r
,
!
0
);
k
.
isEmptyObject
(
u
)
&&
Q
.
remove
(
e
,
"handle events"
)}},
dispatch
:
function
(
e
){
var
t
,
n
,
r
,
i
,
o
,
a
,
s
=
k
.
event
.
fix
(
e
),
u
=
new
Array
(
arguments
.
length
),
l
=
(
Q
.
get
(
this
,
"events"
)
||
{})[
s
.
type
]
||
[],
c
=
k
.
event
.
special
[
s
.
type
]
||
{};
for
(
u
[
0
]
=
s
,
t
=
1
;
t
<
arguments
.
length
;
t
++
)
u
[
t
]
=
arguments
[
t
];
if
(
s
.
delegateTarget
=
this
,
!
c
.
preDispatch
||!
1
!==
c
.
preDispatch
.
call
(
this
,
s
)){
a
=
k
.
event
.
handlers
.
call
(
this
,
s
,
l
),
t
=
0
;
while
((
i
=
a
[
t
++
])
&&!
s
.
isPropagationStopped
()){
s
.
currentTarget
=
i
.
elem
,
n
=
0
;
while
((
o
=
i
.
handlers
[
n
++
])
&&!
s
.
isImmediatePropagationStopped
())
s
.
rnamespace
&&!
1
!==
o
.
namespace
&&!
s
.
rnamespace
.
test
(
o
.
namespace
)
||
(
s
.
handleObj
=
o
,
s
.
data
=
o
.
data
,
void
0
!==
(
r
=
((
k
.
event
.
special
[
o
.
origType
]
||
{}).
handle
||
o
.
handler
).
apply
(
i
.
elem
,
u
))
&&!
1
===
(
s
.
result
=
r
)
&&
(
s
.
preventDefault
(),
s
.
stopPropagation
()))}
return
c
.
postDispatch
&&
c
.
postDispatch
.
call
(
this
,
s
),
s
.
result
}},
handlers
:
function
(
e
,
t
){
var
n
,
r
,
i
,
o
,
a
,
s
=
[],
u
=
t
.
delegateCount
,
l
=
e
.
target
;
if
(
u
&&
l
.
nodeType
&&!
(
"click"
===
e
.
type
&&
1
<=
e
.
button
))
for
(;
l
!==
this
;
l
=
l
.
parentNode
||
this
)
if
(
1
===
l
.
nodeType
&&
(
"click"
!==
e
.
type
||!
0
!==
l
.
disabled
)){
for
(
o
=
[],
a
=
{},
n
=
0
;
n
<
u
;
n
++
)
void
0
===
a
[
i
=
(
r
=
t
[
n
]).
selector
+
" "
]
&&
(
a
[
i
]
=
r
.
needsContext
?
-
1
<
k
(
i
,
this
).
index
(
l
):
k
.
find
(
i
,
this
,
null
,[
l
]).
length
),
a
[
i
]
&&
o
.
push
(
r
);
o
.
length
&&
s
.
push
({
elem
:
l
,
handlers
:
o
})}
return
l
=
this
,
u
<
t
.
length
&&
s
.
push
({
elem
:
l
,
handlers
:
t
.
slice
(
u
)}),
s
},
addProp
:
function
(
t
,
e
){
Object
.
defineProperty
(
k
.
Event
.
prototype
,
t
,{
enumerable
:
!
0
,
configurable
:
!
0
,
get
:
m
(
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
(
e
){
return
e
[
k
.
expando
]?
e
:
new
k
.
Event
(
e
)},
special
:{
load
:{
noBubble
:
!
0
},
click
:{
setup
:
function
(
e
){
var
t
=
this
||
e
;
return
pe
.
test
(
t
.
type
)
&&
t
.
click
&&
A
(
t
,
"input"
)
&&
De
(
t
,
"click"
,
ke
),
!
1
},
trigger
:
function
(
e
){
var
t
=
this
||
e
;
return
pe
.
test
(
t
.
type
)
&&
t
.
click
&&
A
(
t
,
"input"
)
&&
De
(
t
,
"click"
),
!
0
},
_default
:
function
(
e
){
var
t
=
e
.
target
;
return
pe
.
test
(
t
.
type
)
&&
t
.
click
&&
A
(
t
,
"input"
)
&&
Q
.
get
(
t
,
"click"
)
||
A
(
t
,
"a"
)}},
beforeunload
:{
postDispatch
:
function
(
e
){
void
0
!==
e
.
result
&&
e
.
originalEvent
&&
(
e
.
originalEvent
.
returnValue
=
e
.
result
)}}}},
k
.
removeEvent
=
function
(
e
,
t
,
n
){
e
.
removeEventListener
&&
e
.
removeEventListener
(
t
,
n
)},
k
.
Event
=
function
(
e
,
t
){
if
(
!
(
this
instanceof
k
.
Event
))
return
new
k
.
Event
(
e
,
t
);
e
&&
e
.
type
?(
this
.
originalEvent
=
e
,
this
.
type
=
e
.
type
,
this
.
isDefaultPrevented
=
e
.
defaultPrevented
||
void
0
===
e
.
defaultPrevented
&&!
1
===
e
.
returnValue
?
ke
:
Se
,
this
.
target
=
e
.
target
&&
3
===
e
.
target
.
nodeType
?
e
.
target
.
parentNode
:
e
.
target
,
this
.
currentTarget
=
e
.
currentTarget
,
this
.
relatedTarget
=
e
.
relatedTarget
):
this
.
type
=
e
,
t
&&
k
.
extend
(
this
,
t
),
this
.
timeStamp
=
e
&&
e
.
timeStamp
||
Date
.
now
(),
this
[
k
.
expando
]
=!
0
},
k
.
Event
.
prototype
=
{
constructor
:
k
.
Event
,
isDefaultPrevented
:
Se
,
isPropagationStopped
:
Se
,
isImmediatePropagationStopped
:
Se
,
isSimulated
:
!
1
,
preventDefault
:
function
(){
var
e
=
this
.
originalEvent
;
this
.
isDefaultPrevented
=
ke
,
e
&&!
this
.
isSimulated
&&
e
.
preventDefault
()},
stopPropagation
:
function
(){
var
e
=
this
.
originalEvent
;
this
.
isPropagationStopped
=
ke
,
e
&&!
this
.
isSimulated
&&
e
.
stopPropagation
()},
stopImmediatePropagation
:
function
(){
var
e
=
this
.
originalEvent
;
this
.
isImmediatePropagationStopped
=
ke
,
e
&&!
this
.
isSimulated
&&
e
.
stopImmediatePropagation
(),
this
.
stopPropagation
()}},
k
.
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
:
function
(
e
){
var
t
=
e
.
button
;
return
null
==
e
.
which
&&
Te
.
test
(
e
.
type
)?
null
!=
e
.
charCode
?
e
.
charCode
:
e
.
keyCode
:
!
e
.
which
&&
void
0
!==
t
&&
Ce
.
test
(
e
.
type
)?
1
&
t
?
1
:
2
&
t
?
3
:
4
&
t
?
2
:
0
:
e
.
which
}},
k
.
event
.
addProp
),
k
.
each
({
focus
:
"focusin"
,
blur
:
"focusout"
},
function
(
e
,
t
){
k
.
event
.
special
[
e
]
=
{
setup
:
function
(){
return
De
(
this
,
e
,
Ne
),
!
1
},
trigger
:
function
(){
return
De
(
this
,
e
),
!
0
},
delegateType
:
t
}}),
k
.
each
({
mouseenter
:
"mouseover"
,
mouseleave
:
"mouseout"
,
pointerenter
:
"pointerover"
,
pointerleave
:
"pointerout"
},
function
(
e
,
i
){
k
.
event
.
special
[
e
]
=
{
delegateType
:
i
,
bindType
:
i
,
handle
:
function
(
e
){
var
t
,
n
=
e
.
relatedTarget
,
r
=
e
.
handleObj
;
return
n
&&
(
n
===
this
||
k
.
contains
(
this
,
n
))
||
(
e
.
type
=
r
.
origType
,
t
=
r
.
handler
.
apply
(
this
,
arguments
),
e
.
type
=
i
),
t
}}}),
k
.
fn
.
extend
({
on
:
function
(
e
,
t
,
n
,
r
){
return
Ae
(
this
,
e
,
t
,
n
,
r
)},
one
:
function
(
e
,
t
,
n
,
r
){
return
Ae
(
this
,
e
,
t
,
n
,
r
,
1
)},
off
:
function
(
e
,
t
,
n
){
var
r
,
i
;
if
(
e
&&
e
.
preventDefault
&&
e
.
handleObj
)
return
r
=
e
.
handleObj
,
k
(
e
.
delegateTarget
).
off
(
r
.
namespace
?
r
.
origType
+
"."
+
r
.
namespace
:
r
.
origType
,
r
.
selector
,
r
.
handler
),
this
;
if
(
"object"
==
typeof
e
){
for
(
i
in
e
)
this
.
off
(
i
,
t
,
e
[
i
]);
return
this
}
return
!
1
!==
t
&&
"function"
!=
typeof
t
||
(
n
=
t
,
t
=
void
0
),
!
1
===
n
&&
(
n
=
Se
),
this
.
each
(
function
(){
k
.
event
.
remove
(
this
,
e
,
n
,
t
)})}});
var
je
=
/<
(?!
area|br|col|embed|hr|img|input|link|meta|param
)(([
a-z
][^\/\0
>
\x
20
\t\r\n\f]
*
)[^
>
]
*
)\/
>/gi
,
qe
=
/<script|<style|<link/i
,
Le
=
/checked
\s
*
(?:[^
=
]
|=
\s
*.checked.
)
/i
,
He
=
/^
\s
*<!
(?:\[
CDATA
\[
|--
)
|
(?:\]\]
|--
)
>
\s
*$/g
;
function
Oe
(
e
,
t
){
return
A
(
e
,
"table"
)
&&
A
(
11
!==
t
.
nodeType
?
t
:
t
.
firstChild
,
"tr"
)
&&
k
(
e
).
children
(
"tbody"
)[
0
]
||
e
}
function
Pe
(
e
){
return
e
.
type
=
(
null
!==
e
.
getAttribute
(
"type"
))
+
"/"
+
e
.
type
,
e
}
function
Re
(
e
){
return
"true/"
===
(
e
.
type
||
""
).
slice
(
0
,
5
)?
e
.
type
=
e
.
type
.
slice
(
5
):
e
.
removeAttribute
(
"type"
),
e
}
function
Me
(
e
,
t
){
var
n
,
r
,
i
,
o
,
a
,
s
,
u
,
l
;
if
(
1
===
t
.
nodeType
){
if
(
Q
.
hasData
(
e
)
&&
(
o
=
Q
.
access
(
e
),
a
=
Q
.
set
(
t
,
o
),
l
=
o
.
events
))
for
(
i
in
delete
a
.
handle
,
a
.
events
=
{},
l
)
for
(
n
=
0
,
r
=
l
[
i
].
length
;
n
<
r
;
n
++
)
k
.
event
.
add
(
t
,
i
,
l
[
i
][
n
]);
J
.
hasData
(
e
)
&&
(
s
=
J
.
access
(
e
),
u
=
k
.
extend
({},
s
),
J
.
set
(
t
,
u
))}}
function
Ie
(
n
,
r
,
i
,
o
){
r
=
g
.
apply
([],
r
);
var
e
,
t
,
a
,
s
,
u
,
l
,
c
=
0
,
f
=
n
.
length
,
p
=
f
-
1
,
d
=
r
[
0
],
h
=
m
(
d
);
if
(
h
||
1
<
f
&&
"string"
==
typeof
d
&&!
y
.
checkClone
&&
Le
.
test
(
d
))
return
n
.
each
(
function
(
e
){
var
t
=
n
.
eq
(
e
);
h
&&
(
r
[
0
]
=
d
.
call
(
this
,
e
,
t
.
html
())),
Ie
(
t
,
r
,
i
,
o
)});
if
(
f
&&
(
t
=
(
e
=
we
(
r
,
n
[
0
].
ownerDocument
,
!
1
,
n
,
o
)).
firstChild
,
1
===
e
.
childNodes
.
length
&&
(
e
=
t
),
t
||
o
)){
for
(
s
=
(
a
=
k
.
map
(
ve
(
e
,
"script"
),
Pe
)).
length
;
c
<
f
;
c
++
)
u
=
e
,
c
!==
p
&&
(
u
=
k
.
clone
(
u
,
!
0
,
!
0
),
s
&&
k
.
merge
(
a
,
ve
(
u
,
"script"
))),
i
.
call
(
n
[
c
],
u
,
c
);
if
(
s
)
for
(
l
=
a
[
a
.
length
-
1
].
ownerDocument
,
k
.
map
(
a
,
Re
),
c
=
0
;
c
<
s
;
c
++
)
u
=
a
[
c
],
he
.
test
(
u
.
type
||
""
)
&&!
Q
.
access
(
u
,
"globalEval"
)
&&
k
.
contains
(
l
,
u
)
&&
(
u
.
src
&&
"module"
!==
(
u
.
type
||
""
).
toLowerCase
()?
k
.
_evalUrl
&&!
u
.
noModule
&&
k
.
_evalUrl
(
u
.
src
,{
nonce
:
u
.
nonce
||
u
.
getAttribute
(
"nonce"
)}):
b
(
u
.
textContent
.
replace
(
He
,
""
),
u
,
l
))}
return
n
}
function
We
(
e
,
t
,
n
){
for
(
var
r
,
i
=
t
?
k
.
filter
(
t
,
e
):
e
,
o
=
0
;
null
!=
(
r
=
i
[
o
]);
o
++
)
n
||
1
!==
r
.
nodeType
||
k
.
cleanData
(
ve
(
r
)),
r
.
parentNode
&&
(
n
&&
oe
(
r
)
&&
ye
(
ve
(
r
,
"script"
)),
r
.
parentNode
.
removeChild
(
r
));
return
e
}
k
.
extend
({
htmlPrefilter
:
function
(
e
){
return
e
.
replace
(
je
,
"<$1></$2>"
)},
clone
:
function
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
,
s
,
u
,
l
,
c
=
e
.
cloneNode
(
!
0
),
f
=
oe
(
e
);
if
(
!
(
y
.
noCloneChecked
||
1
!==
e
.
nodeType
&&
11
!==
e
.
nodeType
||
k
.
isXMLDoc
(
e
)))
for
(
a
=
ve
(
c
),
r
=
0
,
i
=
(
o
=
ve
(
e
)).
length
;
r
<
i
;
r
++
)
s
=
o
[
r
],
u
=
a
[
r
],
void
0
,
"input"
===
(
l
=
u
.
nodeName
.
toLowerCase
())
&&
pe
.
test
(
s
.
type
)?
u
.
checked
=
s
.
checked
:
"input"
!==
l
&&
"textarea"
!==
l
||
(
u
.
defaultValue
=
s
.
defaultValue
);
if
(
t
)
if
(
n
)
for
(
o
=
o
||
ve
(
e
),
a
=
a
||
ve
(
c
),
r
=
0
,
i
=
o
.
length
;
r
<
i
;
r
++
)
Me
(
o
[
r
],
a
[
r
]);
else
Me
(
e
,
c
);
return
0
<
(
a
=
ve
(
c
,
"script"
)).
length
&&
ye
(
a
,
!
f
&&
ve
(
e
,
"script"
)),
c
},
cleanData
:
function
(
e
){
for
(
var
t
,
n
,
r
,
i
=
k
.
event
.
special
,
o
=
0
;
void
0
!==
(
n
=
e
[
o
]);
o
++
)
if
(
G
(
n
)){
if
(
t
=
n
[
Q
.
expando
]){
if
(
t
.
events
)
for
(
r
in
t
.
events
)
i
[
r
]?
k
.
event
.
remove
(
n
,
r
):
k
.
removeEvent
(
n
,
r
,
t
.
handle
);
n
[
Q
.
expando
]
=
void
0
}
n
[
J
.
expando
]
&&
(
n
[
J
.
expando
]
=
void
0
)}}}),
k
.
fn
.
extend
({
detach
:
function
(
e
){
return
We
(
this
,
e
,
!
0
)},
remove
:
function
(
e
){
return
We
(
this
,
e
)},
text
:
function
(
e
){
return
_
(
this
,
function
(
e
){
return
void
0
===
e
?
k
.
text
(
this
):
this
.
empty
().
each
(
function
(){
1
!==
this
.
nodeType
&&
11
!==
this
.
nodeType
&&
9
!==
this
.
nodeType
||
(
this
.
textContent
=
e
)})},
null
,
e
,
arguments
.
length
)},
append
:
function
(){
return
Ie
(
this
,
arguments
,
function
(
e
){
1
!==
this
.
nodeType
&&
11
!==
this
.
nodeType
&&
9
!==
this
.
nodeType
||
Oe
(
this
,
e
).
appendChild
(
e
)})},
prepend
:
function
(){
return
Ie
(
this
,
arguments
,
function
(
e
){
if
(
1
===
this
.
nodeType
||
11
===
this
.
nodeType
||
9
===
this
.
nodeType
){
var
t
=
Oe
(
this
,
e
);
t
.
insertBefore
(
e
,
t
.
firstChild
)}})},
before
:
function
(){
return
Ie
(
this
,
arguments
,
function
(
e
){
this
.
parentNode
&&
this
.
parentNode
.
insertBefore
(
e
,
this
)})},
after
:
function
(){
return
Ie
(
this
,
arguments
,
function
(
e
){
this
.
parentNode
&&
this
.
parentNode
.
insertBefore
(
e
,
this
.
nextSibling
)})},
empty
:
function
(){
for
(
var
e
,
t
=
0
;
null
!=
(
e
=
this
[
t
]);
t
++
)
1
===
e
.
nodeType
&&
(
k
.
cleanData
(
ve
(
e
,
!
1
)),
e
.
textContent
=
""
);
return
this
},
clone
:
function
(
e
,
t
){
return
e
=
null
!=
e
&&
e
,
t
=
null
==
t
?
e
:
t
,
this
.
map
(
function
(){
return
k
.
clone
(
this
,
e
,
t
)})},
html
:
function
(
e
){
return
_
(
this
,
function
(
e
){
var
t
=
this
[
0
]
||
{},
n
=
0
,
r
=
this
.
length
;
if
(
void
0
===
e
&&
1
===
t
.
nodeType
)
return
t
.
innerHTML
;
if
(
"string"
==
typeof
e
&&!
qe
.
test
(
e
)
&&!
ge
[(
de
.
exec
(
e
)
||
[
""
,
""
])[
1
].
toLowerCase
()]){
e
=
k
.
htmlPrefilter
(
e
);
try
{
for
(;
n
<
r
;
n
++
)
1
===
(
t
=
this
[
n
]
||
{}).
nodeType
&&
(
k
.
cleanData
(
ve
(
t
,
!
1
)),
t
.
innerHTML
=
e
);
t
=
0
}
catch
(
e
){}}
t
&&
this
.
empty
().
append
(
e
)},
null
,
e
,
arguments
.
length
)},
replaceWith
:
function
(){
var
n
=
[];
return
Ie
(
this
,
arguments
,
function
(
e
){
var
t
=
this
.
parentNode
;
k
.
inArray
(
this
,
n
)
<
0
&&
(
k
.
cleanData
(
ve
(
this
)),
t
&&
t
.
replaceChild
(
e
,
this
))},
n
)}}),
k
.
each
({
appendTo
:
"append"
,
prependTo
:
"prepend"
,
insertBefore
:
"before"
,
insertAfter
:
"after"
,
replaceAll
:
"replaceWith"
},
function
(
e
,
a
){
k
.
fn
[
e
]
=
function
(
e
){
for
(
var
t
,
n
=
[],
r
=
k
(
e
),
i
=
r
.
length
-
1
,
o
=
0
;
o
<=
i
;
o
++
)
t
=
o
===
i
?
this
:
this
.
clone
(
!
0
),
k
(
r
[
o
])[
a
](
t
),
u
.
apply
(
n
,
t
.
get
());
return
this
.
pushStack
(
n
)}});
var
$e
=
new
RegExp
(
"^("
+
te
+
")(?!px)[a-z%]+$"
,
"i"
),
Fe
=
function
(
e
){
var
t
=
e
.
ownerDocument
.
defaultView
;
return
t
&&
t
.
opener
||
(
t
=
C
),
t
.
getComputedStyle
(
e
)},
Be
=
new
RegExp
(
re
.
join
(
"|"
),
"i"
);
function
_e
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
,
s
=
e
.
style
;
return
(
n
=
n
||
Fe
(
e
))
&&
(
""
!==
(
a
=
n
.
getPropertyValue
(
t
)
||
n
[
t
])
||
oe
(
e
)
||
(
a
=
k
.
style
(
e
,
t
)),
!
y
.
pixelBoxStyles
()
&&
$e
.
test
(
a
)
&&
Be
.
test
(
t
)
&&
(
r
=
s
.
width
,
i
=
s
.
minWidth
,
o
=
s
.
maxWidth
,
s
.
minWidth
=
s
.
maxWidth
=
s
.
width
=
a
,
a
=
n
.
width
,
s
.
width
=
r
,
s
.
minWidth
=
i
,
s
.
maxWidth
=
o
)),
void
0
!==
a
?
a
+
""
:
a
}
function
ze
(
e
,
t
){
return
{
get
:
function
(){
if
(
!
e
())
return
(
this
.
get
=
t
).
apply
(
this
,
arguments
);
delete
this
.
get
}}}
!
function
(){
function
e
(){
if
(
u
){
s
.
style
.
cssText
=
"position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0"
,
u
.
style
.
cssText
=
"position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%"
,
ie
.
appendChild
(
s
).
appendChild
(
u
);
var
e
=
C
.
getComputedStyle
(
u
);
n
=
"1%"
!==
e
.
top
,
a
=
12
===
t
(
e
.
marginLeft
),
u
.
style
.
right
=
"60%"
,
o
=
36
===
t
(
e
.
right
),
r
=
36
===
t
(
e
.
width
),
u
.
style
.
position
=
"absolute"
,
i
=
12
===
t
(
u
.
offsetWidth
/
3
),
ie
.
removeChild
(
s
),
u
=
null
}}
function
t
(
e
){
return
Math
.
round
(
parseFloat
(
e
))}
var
n
,
r
,
i
,
o
,
a
,
s
=
E
.
createElement
(
"div"
),
u
=
E
.
createElement
(
"div"
);
u
.
style
&&
(
u
.
style
.
backgroundClip
=
"content-box"
,
u
.
cloneNode
(
!
0
).
style
.
backgroundClip
=
""
,
y
.
clearCloneStyle
=
"content-box"
===
u
.
style
.
backgroundClip
,
k
.
extend
(
y
,{
boxSizingReliable
:
function
(){
return
e
(),
r
},
pixelBoxStyles
:
function
(){
return
e
(),
o
},
pixelPosition
:
function
(){
return
e
(),
n
},
reliableMarginLeft
:
function
(){
return
e
(),
a
},
scrollboxSize
:
function
(){
return
e
(),
i
}}))}();
var
Ue
=
[
"Webkit"
,
"Moz"
,
"ms"
],
Xe
=
E
.
createElement
(
"div"
).
style
,
Ve
=
{};
function
Ge
(
e
){
var
t
=
k
.
cssProps
[
e
]
||
Ve
[
e
];
return
t
||
(
e
in
Xe
?
e
:
Ve
[
e
]
=
function
(
e
){
var
t
=
e
[
0
].
toUpperCase
()
+
e
.
slice
(
1
),
n
=
Ue
.
length
;
while
(
n
--
)
if
((
e
=
Ue
[
n
]
+
t
)
in
Xe
)
return
e
}(
e
)
||
e
)}
var
Ye
=
/^
(
none|table
(?!
-c
[
ea
])
.+
)
/
,
Qe
=
/^--/
,
Je
=
{
position
:
"absolute"
,
visibility
:
"hidden"
,
display
:
"block"
},
Ke
=
{
letterSpacing
:
"0"
,
fontWeight
:
"400"
};
function
Ze
(
e
,
t
,
n
){
var
r
=
ne
.
exec
(
t
);
return
r
?
Math
.
max
(
0
,
r
[
2
]
-
(
n
||
0
))
+
(
r
[
3
]
||
"px"
):
t
}
function
et
(
e
,
t
,
n
,
r
,
i
,
o
){
var
a
=
"width"
===
t
?
1
:
0
,
s
=
0
,
u
=
0
;
if
(
n
===
(
r
?
"border"
:
"content"
))
return
0
;
for
(;
a
<
4
;
a
+=
2
)
"margin"
===
n
&&
(
u
+=
k
.
css
(
e
,
n
+
re
[
a
],
!
0
,
i
)),
r
?(
"content"
===
n
&&
(
u
-=
k
.
css
(
e
,
"padding"
+
re
[
a
],
!
0
,
i
)),
"margin"
!==
n
&&
(
u
-=
k
.
css
(
e
,
"border"
+
re
[
a
]
+
"Width"
,
!
0
,
i
))):(
u
+=
k
.
css
(
e
,
"padding"
+
re
[
a
],
!
0
,
i
),
"padding"
!==
n
?
u
+=
k
.
css
(
e
,
"border"
+
re
[
a
]
+
"Width"
,
!
0
,
i
):
s
+=
k
.
css
(
e
,
"border"
+
re
[
a
]
+
"Width"
,
!
0
,
i
));
return
!
r
&&
0
<=
o
&&
(
u
+=
Math
.
max
(
0
,
Math
.
ceil
(
e
[
"offset"
+
t
[
0
].
toUpperCase
()
+
t
.
slice
(
1
)]
-
o
-
u
-
s
-
.
5
))
||
0
),
u
}
function
tt
(
e
,
t
,
n
){
var
r
=
Fe
(
e
),
i
=
(
!
y
.
boxSizingReliable
()
||
n
)
&&
"border-box"
===
k
.
css
(
e
,
"boxSizing"
,
!
1
,
r
),
o
=
i
,
a
=
_e
(
e
,
t
,
r
),
s
=
"offset"
+
t
[
0
].
toUpperCase
()
+
t
.
slice
(
1
);
if
(
$e
.
test
(
a
)){
if
(
!
n
)
return
a
;
a
=
"auto"
}
return
(
!
y
.
boxSizingReliable
()
&&
i
||
"auto"
===
a
||!
parseFloat
(
a
)
&&
"inline"
===
k
.
css
(
e
,
"display"
,
!
1
,
r
))
&&
e
.
getClientRects
().
length
&&
(
i
=
"border-box"
===
k
.
css
(
e
,
"boxSizing"
,
!
1
,
r
),(
o
=
s
in
e
)
&&
(
a
=
e
[
s
])),(
a
=
parseFloat
(
a
)
||
0
)
+
et
(
e
,
t
,
n
||
(
i
?
"border"
:
"content"
),
o
,
r
,
a
)
+
"px"
}
function
nt
(
e
,
t
,
n
,
r
,
i
){
return
new
nt
.
prototype
.
init
(
e
,
t
,
n
,
r
,
i
)}
k
.
extend
({
cssHooks
:{
opacity
:{
get
:
function
(
e
,
t
){
if
(
t
){
var
n
=
_e
(
e
,
"opacity"
);
return
""
===
n
?
"1"
:
n
}}}},
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
(
e
,
t
,
n
,
r
){
if
(
e
&&
3
!==
e
.
nodeType
&&
8
!==
e
.
nodeType
&&
e
.
style
){
var
i
,
o
,
a
,
s
=
V
(
t
),
u
=
Qe
.
test
(
t
),
l
=
e
.
style
;
if
(
u
||
(
t
=
Ge
(
s
)),
a
=
k
.
cssHooks
[
t
]
||
k
.
cssHooks
[
s
],
void
0
===
n
)
return
a
&&
"get"
in
a
&&
void
0
!==
(
i
=
a
.
get
(
e
,
!
1
,
r
))?
i
:
l
[
t
];
"string"
===
(
o
=
typeof
n
)
&&
(
i
=
ne
.
exec
(
n
))
&&
i
[
1
]
&&
(
n
=
le
(
e
,
t
,
i
),
o
=
"number"
),
null
!=
n
&&
n
==
n
&&
(
"number"
!==
o
||
u
||
(
n
+=
i
&&
i
[
3
]
||
(
k
.
cssNumber
[
s
]?
""
:
"px"
)),
y
.
clearCloneStyle
||
""
!==
n
||
0
!==
t
.
indexOf
(
"background"
)
||
(
l
[
t
]
=
"inherit"
),
a
&&
"set"
in
a
&&
void
0
===
(
n
=
a
.
set
(
e
,
n
,
r
))
||
(
u
?
l
.
setProperty
(
t
,
n
):
l
[
t
]
=
n
))}},
css
:
function
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
,
s
=
V
(
t
);
return
Qe
.
test
(
t
)
||
(
t
=
Ge
(
s
)),(
a
=
k
.
cssHooks
[
t
]
||
k
.
cssHooks
[
s
])
&&
"get"
in
a
&&
(
i
=
a
.
get
(
e
,
!
0
,
n
)),
void
0
===
i
&&
(
i
=
_e
(
e
,
t
,
r
)),
"normal"
===
i
&&
t
in
Ke
&&
(
i
=
Ke
[
t
]),
""
===
n
||
n
?(
o
=
parseFloat
(
i
),
!
0
===
n
||
isFinite
(
o
)?
o
||
0
:
i
):
i
}}),
k
.
each
([
"height"
,
"width"
],
function
(
e
,
u
){
k
.
cssHooks
[
u
]
=
{
get
:
function
(
e
,
t
,
n
){
if
(
t
)
return
!
Ye
.
test
(
k
.
css
(
e
,
"display"
))
||
e
.
getClientRects
().
length
&&
e
.
getBoundingClientRect
().
width
?
tt
(
e
,
u
,
n
):
ue
(
e
,
Je
,
function
(){
return
tt
(
e
,
u
,
n
)})},
set
:
function
(
e
,
t
,
n
){
var
r
,
i
=
Fe
(
e
),
o
=!
y
.
scrollboxSize
()
&&
"absolute"
===
i
.
position
,
a
=
(
o
||
n
)
&&
"border-box"
===
k
.
css
(
e
,
"boxSizing"
,
!
1
,
i
),
s
=
n
?
et
(
e
,
u
,
n
,
a
,
i
):
0
;
return
a
&&
o
&&
(
s
-=
Math
.
ceil
(
e
[
"offset"
+
u
[
0
].
toUpperCase
()
+
u
.
slice
(
1
)]
-
parseFloat
(
i
[
u
])
-
et
(
e
,
u
,
"border"
,
!
1
,
i
)
-
.
5
)),
s
&&
(
r
=
ne
.
exec
(
t
))
&&
"px"
!==
(
r
[
3
]
||
"px"
)
&&
(
e
.
style
[
u
]
=
t
,
t
=
k
.
css
(
e
,
u
)),
Ze
(
0
,
t
,
s
)}}}),
k
.
cssHooks
.
marginLeft
=
ze
(
y
.
reliableMarginLeft
,
function
(
e
,
t
){
if
(
t
)
return
(
parseFloat
(
_e
(
e
,
"marginLeft"
))
||
e
.
getBoundingClientRect
().
left
-
ue
(
e
,{
marginLeft
:
0
},
function
(){
return
e
.
getBoundingClientRect
().
left
}))
+
"px"
}),
k
.
each
({
margin
:
""
,
padding
:
""
,
border
:
"Width"
},
function
(
i
,
o
){
k
.
cssHooks
[
i
+
o
]
=
{
expand
:
function
(
e
){
for
(
var
t
=
0
,
n
=
{},
r
=
"string"
==
typeof
e
?
e
.
split
(
" "
):[
e
];
t
<
4
;
t
++
)
n
[
i
+
re
[
t
]
+
o
]
=
r
[
t
]
||
r
[
t
-
2
]
||
r
[
0
];
return
n
}},
"margin"
!==
i
&&
(
k
.
cssHooks
[
i
+
o
].
set
=
Ze
)}),
k
.
fn
.
extend
({
css
:
function
(
e
,
t
){
return
_
(
this
,
function
(
e
,
t
,
n
){
var
r
,
i
,
o
=
{},
a
=
0
;
if
(
Array
.
isArray
(
t
)){
for
(
r
=
Fe
(
e
),
i
=
t
.
length
;
a
<
i
;
a
++
)
o
[
t
[
a
]]
=
k
.
css
(
e
,
t
[
a
],
!
1
,
r
);
return
o
}
return
void
0
!==
n
?
k
.
style
(
e
,
t
,
n
):
k
.
css
(
e
,
t
)},
e
,
t
,
1
<
arguments
.
length
)}}),((
k
.
Tween
=
nt
).
prototype
=
{
constructor
:
nt
,
init
:
function
(
e
,
t
,
n
,
r
,
i
,
o
){
this
.
elem
=
e
,
this
.
prop
=
n
,
this
.
easing
=
i
||
k
.
easing
.
_default
,
this
.
options
=
t
,
this
.
start
=
this
.
now
=
this
.
cur
(),
this
.
end
=
r
,
this
.
unit
=
o
||
(
k
.
cssNumber
[
n
]?
""
:
"px"
)},
cur
:
function
(){
var
e
=
nt
.
propHooks
[
this
.
prop
];
return
e
&&
e
.
get
?
e
.
get
(
this
):
nt
.
propHooks
.
_default
.
get
(
this
)},
run
:
function
(
e
){
var
t
,
n
=
nt
.
propHooks
[
this
.
prop
];
return
this
.
options
.
duration
?
this
.
pos
=
t
=
k
.
easing
[
this
.
easing
](
e
,
this
.
options
.
duration
*
e
,
0
,
1
,
this
.
options
.
duration
):
this
.
pos
=
t
=
e
,
this
.
now
=
(
this
.
end
-
this
.
start
)
*
t
+
this
.
start
,
this
.
options
.
step
&&
this
.
options
.
step
.
call
(
this
.
elem
,
this
.
now
,
this
),
n
&&
n
.
set
?
n
.
set
(
this
):
nt
.
propHooks
.
_default
.
set
(
this
),
this
}}).
init
.
prototype
=
nt
.
prototype
,(
nt
.
propHooks
=
{
_default
:{
get
:
function
(
e
){
var
t
;
return
1
!==
e
.
elem
.
nodeType
||
null
!=
e
.
elem
[
e
.
prop
]
&&
null
==
e
.
elem
.
style
[
e
.
prop
]?
e
.
elem
[
e
.
prop
]:(
t
=
k
.
css
(
e
.
elem
,
e
.
prop
,
""
))
&&
"auto"
!==
t
?
t
:
0
},
set
:
function
(
e
){
k
.
fx
.
step
[
e
.
prop
]?
k
.
fx
.
step
[
e
.
prop
](
e
):
1
!==
e
.
elem
.
nodeType
||!
k
.
cssHooks
[
e
.
prop
]
&&
null
==
e
.
elem
.
style
[
Ge
(
e
.
prop
)]?
e
.
elem
[
e
.
prop
]
=
e
.
now
:
k
.
style
(
e
.
elem
,
e
.
prop
,
e
.
now
+
e
.
unit
)}}}).
scrollTop
=
nt
.
propHooks
.
scrollLeft
=
{
set
:
function
(
e
){
e
.
elem
.
nodeType
&&
e
.
elem
.
parentNode
&&
(
e
.
elem
[
e
.
prop
]
=
e
.
now
)}},
k
.
easing
=
{
linear
:
function
(
e
){
return
e
},
swing
:
function
(
e
){
return
.
5
-
Math
.
cos
(
e
*
Math
.
PI
)
/
2
},
_default
:
"swing"
},
k
.
fx
=
nt
.
prototype
.
init
,
k
.
fx
.
step
=
{};
var
rt
,
it
,
ot
,
at
,
st
=
/^
(?:
toggle|show|hide
)
$/
,
ut
=
/queueHooks$/
;
function
lt
(){
it
&&
(
!
1
===
E
.
hidden
&&
C
.
requestAnimationFrame
?
C
.
requestAnimationFrame
(
lt
):
C
.
setTimeout
(
lt
,
k
.
fx
.
interval
),
k
.
fx
.
tick
())}
function
ct
(){
return
C
.
setTimeout
(
function
(){
rt
=
void
0
}),
rt
=
Date
.
now
()}
function
ft
(
e
,
t
){
var
n
,
r
=
0
,
i
=
{
height
:
e
};
for
(
t
=
t
?
1
:
0
;
r
<
4
;
r
+=
2
-
t
)
i
[
"margin"
+
(
n
=
re
[
r
])]
=
i
[
"padding"
+
n
]
=
e
;
return
t
&&
(
i
.
opacity
=
i
.
width
=
e
),
i
}
function
pt
(
e
,
t
,
n
){
for
(
var
r
,
i
=
(
dt
.
tweeners
[
t
]
||
[]).
concat
(
dt
.
tweeners
[
"*"
]),
o
=
0
,
a
=
i
.
length
;
o
<
a
;
o
++
)
if
(
r
=
i
[
o
].
call
(
n
,
t
,
e
))
return
r
}
function
dt
(
o
,
e
,
t
){
var
n
,
a
,
r
=
0
,
i
=
dt
.
prefilters
.
length
,
s
=
k
.
Deferred
().
always
(
function
(){
delete
u
.
elem
}),
u
=
function
(){
if
(
a
)
return
!
1
;
for
(
var
e
=
rt
||
ct
(),
t
=
Math
.
max
(
0
,
l
.
startTime
+
l
.
duration
-
e
),
n
=
1
-
(
t
/
l
.
duration
||
0
),
r
=
0
,
i
=
l
.
tweens
.
length
;
r
<
i
;
r
++
)
l
.
tweens
[
r
].
run
(
n
);
return
s
.
notifyWith
(
o
,[
l
,
n
,
t
]),
n
<
1
&&
i
?
t
:(
i
||
s
.
notifyWith
(
o
,[
l
,
1
,
0
]),
s
.
resolveWith
(
o
,[
l
]),
!
1
)},
l
=
s
.
promise
({
elem
:
o
,
props
:
k
.
extend
({},
e
),
opts
:
k
.
extend
(
!
0
,{
specialEasing
:{},
easing
:
k
.
easing
.
_default
},
t
),
originalProperties
:
e
,
originalOptions
:
t
,
startTime
:
rt
||
ct
(),
duration
:
t
.
duration
,
tweens
:[],
createTween
:
function
(
e
,
t
){
var
n
=
k
.
Tween
(
o
,
l
.
opts
,
e
,
t
,
l
.
opts
.
specialEasing
[
e
]
||
l
.
opts
.
easing
);
return
l
.
tweens
.
push
(
n
),
n
},
stop
:
function
(
e
){
var
t
=
0
,
n
=
e
?
l
.
tweens
.
length
:
0
;
if
(
a
)
return
this
;
for
(
a
=!
0
;
t
<
n
;
t
++
)
l
.
tweens
[
t
].
run
(
1
);
return
e
?(
s
.
notifyWith
(
o
,[
l
,
1
,
0
]),
s
.
resolveWith
(
o
,[
l
,
e
])):
s
.
rejectWith
(
o
,[
l
,
e
]),
this
}}),
c
=
l
.
props
;
for
(
!
function
(
e
,
t
){
var
n
,
r
,
i
,
o
,
a
;
for
(
n
in
e
)
if
(
i
=
t
[
r
=
V
(
n
)],
o
=
e
[
n
],
Array
.
isArray
(
o
)
&&
(
i
=
o
[
1
],
o
=
e
[
n
]
=
o
[
0
]),
n
!==
r
&&
(
e
[
r
]
=
o
,
delete
e
[
n
]),(
a
=
k
.
cssHooks
[
r
])
&&
"expand"
in
a
)
for
(
n
in
o
=
a
.
expand
(
o
),
delete
e
[
r
],
o
)
n
in
e
||
(
e
[
n
]
=
o
[
n
],
t
[
n
]
=
i
);
else
t
[
r
]
=
i
}(
c
,
l
.
opts
.
specialEasing
);
r
<
i
;
r
++
)
if
(
n
=
dt
.
prefilters
[
r
].
call
(
l
,
o
,
c
,
l
.
opts
))
return
m
(
n
.
stop
)
&&
(
k
.
_queueHooks
(
l
.
elem
,
l
.
opts
.
queue
).
stop
=
n
.
stop
.
bind
(
n
)),
n
;
return
k
.
map
(
c
,
pt
,
l
),
m
(
l
.
opts
.
start
)
&&
l
.
opts
.
start
.
call
(
o
,
l
),
l
.
progress
(
l
.
opts
.
progress
).
done
(
l
.
opts
.
done
,
l
.
opts
.
complete
).
fail
(
l
.
opts
.
fail
).
always
(
l
.
opts
.
always
),
k
.
fx
.
timer
(
k
.
extend
(
u
,{
elem
:
o
,
anim
:
l
,
queue
:
l
.
opts
.
queue
})),
l
}
k
.
Animation
=
k
.
extend
(
dt
,{
tweeners
:{
"*"
:[
function
(
e
,
t
){
var
n
=
this
.
createTween
(
e
,
t
);
return
le
(
n
.
elem
,
e
,
ne
.
exec
(
t
),
n
),
n
}]},
tweener
:
function
(
e
,
t
){
m
(
e
)?(
t
=
e
,
e
=
[
"*"
]):
e
=
e
.
match
(
R
);
for
(
var
n
,
r
=
0
,
i
=
e
.
length
;
r
<
i
;
r
++
)
n
=
e
[
r
],
dt
.
tweeners
[
n
]
=
dt
.
tweeners
[
n
]
||
[],
dt
.
tweeners
[
n
].
unshift
(
t
)},
prefilters
:[
function
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
,
s
,
u
,
l
,
c
,
f
=
"width"
in
t
||
"height"
in
t
,
p
=
this
,
d
=
{},
h
=
e
.
style
,
g
=
e
.
nodeType
&&
se
(
e
),
v
=
Q
.
get
(
e
,
"fxshow"
);
for
(
r
in
n
.
queue
||
(
null
==
(
a
=
k
.
_queueHooks
(
e
,
"fx"
)).
unqueued
&&
(
a
.
unqueued
=
0
,
s
=
a
.
empty
.
fire
,
a
.
empty
.
fire
=
function
(){
a
.
unqueued
||
s
()}),
a
.
unqueued
++
,
p
.
always
(
function
(){
p
.
always
(
function
(){
a
.
unqueued
--
,
k
.
queue
(
e
,
"fx"
).
length
||
a
.
empty
.
fire
()})})),
t
)
if
(
i
=
t
[
r
],
st
.
test
(
i
)){
if
(
delete
t
[
r
],
o
=
o
||
"toggle"
===
i
,
i
===
(
g
?
"hide"
:
"show"
)){
if
(
"show"
!==
i
||!
v
||
void
0
===
v
[
r
])
continue
;
g
=!
0
}
d
[
r
]
=
v
&&
v
[
r
]
||
k
.
style
(
e
,
r
)}
if
((
u
=!
k
.
isEmptyObject
(
t
))
||!
k
.
isEmptyObject
(
d
))
for
(
r
in
f
&&
1
===
e
.
nodeType
&&
(
n
.
overflow
=
[
h
.
overflow
,
h
.
overflowX
,
h
.
overflowY
],
null
==
(
l
=
v
&&
v
.
display
)
&&
(
l
=
Q
.
get
(
e
,
"display"
)),
"none"
===
(
c
=
k
.
css
(
e
,
"display"
))
&&
(
l
?
c
=
l
:(
fe
([
e
],
!
0
),
l
=
e
.
style
.
display
||
l
,
c
=
k
.
css
(
e
,
"display"
),
fe
([
e
]))),(
"inline"
===
c
||
"inline-block"
===
c
&&
null
!=
l
)
&&
"none"
===
k
.
css
(
e
,
"float"
)
&&
(
u
||
(
p
.
done
(
function
(){
h
.
display
=
l
}),
null
==
l
&&
(
c
=
h
.
display
,
l
=
"none"
===
c
?
""
:
c
)),
h
.
display
=
"inline-block"
)),
n
.
overflow
&&
(
h
.
overflow
=
"hidden"
,
p
.
always
(
function
(){
h
.
overflow
=
n
.
overflow
[
0
],
h
.
overflowX
=
n
.
overflow
[
1
],
h
.
overflowY
=
n
.
overflow
[
2
]})),
u
=!
1
,
d
)
u
||
(
v
?
"hidden"
in
v
&&
(
g
=
v
.
hidden
):
v
=
Q
.
access
(
e
,
"fxshow"
,{
display
:
l
}),
o
&&
(
v
.
hidden
=!
g
),
g
&&
fe
([
e
],
!
0
),
p
.
done
(
function
(){
for
(
r
in
g
||
fe
([
e
]),
Q
.
remove
(
e
,
"fxshow"
),
d
)
k
.
style
(
e
,
r
,
d
[
r
])})),
u
=
pt
(
g
?
v
[
r
]:
0
,
r
,
p
),
r
in
v
||
(
v
[
r
]
=
u
.
start
,
g
&&
(
u
.
end
=
u
.
start
,
u
.
start
=
0
))}],
prefilter
:
function
(
e
,
t
){
t
?
dt
.
prefilters
.
unshift
(
e
):
dt
.
prefilters
.
push
(
e
)}}),
k
.
speed
=
function
(
e
,
t
,
n
){
var
r
=
e
&&
"object"
==
typeof
e
?
k
.
extend
({},
e
):{
complete
:
n
||!
n
&&
t
||
m
(
e
)
&&
e
,
duration
:
e
,
easing
:
n
&&
t
||
t
&&!
m
(
t
)
&&
t
};
return
k
.
fx
.
off
?
r
.
duration
=
0
:
"number"
!=
typeof
r
.
duration
&&
(
r
.
duration
in
k
.
fx
.
speeds
?
r
.
duration
=
k
.
fx
.
speeds
[
r
.
duration
]:
r
.
duration
=
k
.
fx
.
speeds
.
_default
),
null
!=
r
.
queue
&&!
0
!==
r
.
queue
||
(
r
.
queue
=
"fx"
),
r
.
old
=
r
.
complete
,
r
.
complete
=
function
(){
m
(
r
.
old
)
&&
r
.
old
.
call
(
this
),
r
.
queue
&&
k
.
dequeue
(
this
,
r
.
queue
)},
r
},
k
.
fn
.
extend
({
fadeTo
:
function
(
e
,
t
,
n
,
r
){
return
this
.
filter
(
se
).
css
(
"opacity"
,
0
).
show
().
end
().
animate
({
opacity
:
t
},
e
,
n
,
r
)},
animate
:
function
(
t
,
e
,
n
,
r
){
var
i
=
k
.
isEmptyObject
(
t
),
o
=
k
.
speed
(
e
,
n
,
r
),
a
=
function
(){
var
e
=
dt
(
this
,
k
.
extend
({},
t
),
o
);(
i
||
Q
.
get
(
this
,
"finish"
))
&&
e
.
stop
(
!
0
)};
return
a
.
finish
=
a
,
i
||!
1
===
o
.
queue
?
this
.
each
(
a
):
this
.
queue
(
o
.
queue
,
a
)},
stop
:
function
(
i
,
e
,
o
){
var
a
=
function
(
e
){
var
t
=
e
.
stop
;
delete
e
.
stop
,
t
(
o
)};
return
"string"
!=
typeof
i
&&
(
o
=
e
,
e
=
i
,
i
=
void
0
),
e
&&!
1
!==
i
&&
this
.
queue
(
i
||
"fx"
,[]),
this
.
each
(
function
(){
var
e
=!
0
,
t
=
null
!=
i
&&
i
+
"queueHooks"
,
n
=
k
.
timers
,
r
=
Q
.
get
(
this
);
if
(
t
)
r
[
t
]
&&
r
[
t
].
stop
&&
a
(
r
[
t
]);
else
for
(
t
in
r
)
r
[
t
]
&&
r
[
t
].
stop
&&
ut
.
test
(
t
)
&&
a
(
r
[
t
]);
for
(
t
=
n
.
length
;
t
--
;)
n
[
t
].
elem
!==
this
||
null
!=
i
&&
n
[
t
].
queue
!==
i
||
(
n
[
t
].
anim
.
stop
(
o
),
e
=!
1
,
n
.
splice
(
t
,
1
));
!
e
&&
o
||
k
.
dequeue
(
this
,
i
)})},
finish
:
function
(
a
){
return
!
1
!==
a
&&
(
a
=
a
||
"fx"
),
this
.
each
(
function
(){
var
e
,
t
=
Q
.
get
(
this
),
n
=
t
[
a
+
"queue"
],
r
=
t
[
a
+
"queueHooks"
],
i
=
k
.
timers
,
o
=
n
?
n
.
length
:
0
;
for
(
t
.
finish
=!
0
,
k
.
queue
(
this
,
a
,[]),
r
&&
r
.
stop
&&
r
.
stop
.
call
(
this
,
!
0
),
e
=
i
.
length
;
e
--
;)
i
[
e
].
elem
===
this
&&
i
[
e
].
queue
===
a
&&
(
i
[
e
].
anim
.
stop
(
!
0
),
i
.
splice
(
e
,
1
));
for
(
e
=
0
;
e
<
o
;
e
++
)
n
[
e
]
&&
n
[
e
].
finish
&&
n
[
e
].
finish
.
call
(
this
);
delete
t
.
finish
})}}),
k
.
each
([
"toggle"
,
"show"
,
"hide"
],
function
(
e
,
r
){
var
i
=
k
.
fn
[
r
];
k
.
fn
[
r
]
=
function
(
e
,
t
,
n
){
return
null
==
e
||
"boolean"
==
typeof
e
?
i
.
apply
(
this
,
arguments
):
this
.
animate
(
ft
(
r
,
!
0
),
e
,
t
,
n
)}}),
k
.
each
({
slideDown
:
ft
(
"show"
),
slideUp
:
ft
(
"hide"
),
slideToggle
:
ft
(
"toggle"
),
fadeIn
:{
opacity
:
"show"
},
fadeOut
:{
opacity
:
"hide"
},
fadeToggle
:{
opacity
:
"toggle"
}},
function
(
e
,
r
){
k
.
fn
[
e
]
=
function
(
e
,
t
,
n
){
return
this
.
animate
(
r
,
e
,
t
,
n
)}}),
k
.
timers
=
[],
k
.
fx
.
tick
=
function
(){
var
e
,
t
=
0
,
n
=
k
.
timers
;
for
(
rt
=
Date
.
now
();
t
<
n
.
length
;
t
++
)(
e
=
n
[
t
])()
||
n
[
t
]
!==
e
||
n
.
splice
(
t
--
,
1
);
n
.
length
||
k
.
fx
.
stop
(),
rt
=
void
0
},
k
.
fx
.
timer
=
function
(
e
){
k
.
timers
.
push
(
e
),
k
.
fx
.
start
()},
k
.
fx
.
interval
=
13
,
k
.
fx
.
start
=
function
(){
it
||
(
it
=!
0
,
lt
())},
k
.
fx
.
stop
=
function
(){
it
=
null
},
k
.
fx
.
speeds
=
{
slow
:
600
,
fast
:
200
,
_default
:
400
},
k
.
fn
.
delay
=
function
(
r
,
e
){
return
r
=
k
.
fx
&&
k
.
fx
.
speeds
[
r
]
||
r
,
e
=
e
||
"fx"
,
this
.
queue
(
e
,
function
(
e
,
t
){
var
n
=
C
.
setTimeout
(
e
,
r
);
t
.
stop
=
function
(){
C
.
clearTimeout
(
n
)}})},
ot
=
E
.
createElement
(
"input"
),
at
=
E
.
createElement
(
"select"
).
appendChild
(
E
.
createElement
(
"option"
)),
ot
.
type
=
"checkbox"
,
y
.
checkOn
=
""
!==
ot
.
value
,
y
.
optSelected
=
at
.
selected
,(
ot
=
E
.
createElement
(
"input"
)).
value
=
"t"
,
ot
.
type
=
"radio"
,
y
.
radioValue
=
"t"
===
ot
.
value
;
var
ht
,
gt
=
k
.
expr
.
attrHandle
;
k
.
fn
.
extend
({
attr
:
function
(
e
,
t
){
return
_
(
this
,
k
.
attr
,
e
,
t
,
1
<
arguments
.
length
)},
removeAttr
:
function
(
e
){
return
this
.
each
(
function
(){
k
.
removeAttr
(
this
,
e
)})}}),
k
.
extend
({
attr
:
function
(
e
,
t
,
n
){
var
r
,
i
,
o
=
e
.
nodeType
;
if
(
3
!==
o
&&
8
!==
o
&&
2
!==
o
)
return
"undefined"
==
typeof
e
.
getAttribute
?
k
.
prop
(
e
,
t
,
n
):(
1
===
o
&&
k
.
isXMLDoc
(
e
)
||
(
i
=
k
.
attrHooks
[
t
.
toLowerCase
()]
||
(
k
.
expr
.
match
.
bool
.
test
(
t
)?
ht
:
void
0
)),
void
0
!==
n
?
null
===
n
?
void
k
.
removeAttr
(
e
,
t
):
i
&&
"set"
in
i
&&
void
0
!==
(
r
=
i
.
set
(
e
,
n
,
t
))?
r
:(
e
.
setAttribute
(
t
,
n
+
""
),
n
):
i
&&
"get"
in
i
&&
null
!==
(
r
=
i
.
get
(
e
,
t
))?
r
:
null
==
(
r
=
k
.
find
.
attr
(
e
,
t
))?
void
0
:
r
)},
attrHooks
:{
type
:{
set
:
function
(
e
,
t
){
if
(
!
y
.
radioValue
&&
"radio"
===
t
&&
A
(
e
,
"input"
)){
var
n
=
e
.
value
;
return
e
.
setAttribute
(
"type"
,
t
),
n
&&
(
e
.
value
=
n
),
t
}}}},
removeAttr
:
function
(
e
,
t
){
var
n
,
r
=
0
,
i
=
t
&&
t
.
match
(
R
);
if
(
i
&&
1
===
e
.
nodeType
)
while
(
n
=
i
[
r
++
])
e
.
removeAttribute
(
n
)}}),
ht
=
{
set
:
function
(
e
,
t
,
n
){
return
!
1
===
t
?
k
.
removeAttr
(
e
,
n
):
e
.
setAttribute
(
n
,
n
),
n
}},
k
.
each
(
k
.
expr
.
match
.
bool
.
source
.
match
(
/
\w
+/g
),
function
(
e
,
t
){
var
a
=
gt
[
t
]
||
k
.
find
.
attr
;
gt
[
t
]
=
function
(
e
,
t
,
n
){
var
r
,
i
,
o
=
t
.
toLowerCase
();
return
n
||
(
i
=
gt
[
o
],
gt
[
o
]
=
r
,
r
=
null
!=
a
(
e
,
t
,
n
)?
o
:
null
,
gt
[
o
]
=
i
),
r
}});
var
vt
=
/^
(?:
input|select|textarea|button
)
$/i
,
yt
=
/^
(?:
a|area
)
$/i
;
function
mt
(
e
){
return
(
e
.
match
(
R
)
||
[]).
join
(
" "
)}
function
xt
(
e
){
return
e
.
getAttribute
&&
e
.
getAttribute
(
"class"
)
||
""
}
function
bt
(
e
){
return
Array
.
isArray
(
e
)?
e
:
"string"
==
typeof
e
&&
e
.
match
(
R
)
||
[]}
k
.
fn
.
extend
({
prop
:
function
(
e
,
t
){
return
_
(
this
,
k
.
prop
,
e
,
t
,
1
<
arguments
.
length
)},
removeProp
:
function
(
e
){
return
this
.
each
(
function
(){
delete
this
[
k
.
propFix
[
e
]
||
e
]})}}),
k
.
extend
({
prop
:
function
(
e
,
t
,
n
){
var
r
,
i
,
o
=
e
.
nodeType
;
if
(
3
!==
o
&&
8
!==
o
&&
2
!==
o
)
return
1
===
o
&&
k
.
isXMLDoc
(
e
)
||
(
t
=
k
.
propFix
[
t
]
||
t
,
i
=
k
.
propHooks
[
t
]),
void
0
!==
n
?
i
&&
"set"
in
i
&&
void
0
!==
(
r
=
i
.
set
(
e
,
n
,
t
))?
r
:
e
[
t
]
=
n
:
i
&&
"get"
in
i
&&
null
!==
(
r
=
i
.
get
(
e
,
t
))?
r
:
e
[
t
]},
propHooks
:{
tabIndex
:{
get
:
function
(
e
){
var
t
=
k
.
find
.
attr
(
e
,
"tabindex"
);
return
t
?
parseInt
(
t
,
10
):
vt
.
test
(
e
.
nodeName
)
||
yt
.
test
(
e
.
nodeName
)
&&
e
.
href
?
0
:
-
1
}}},
propFix
:{
"for"
:
"htmlFor"
,
"class"
:
"className"
}}),
y
.
optSelected
||
(
k
.
propHooks
.
selected
=
{
get
:
function
(
e
){
var
t
=
e
.
parentNode
;
return
t
&&
t
.
parentNode
&&
t
.
parentNode
.
selectedIndex
,
null
},
set
:
function
(
e
){
var
t
=
e
.
parentNode
;
t
&&
(
t
.
selectedIndex
,
t
.
parentNode
&&
t
.
parentNode
.
selectedIndex
)}}),
k
.
each
([
"tabIndex"
,
"readOnly"
,
"maxLength"
,
"cellSpacing"
,
"cellPadding"
,
"rowSpan"
,
"colSpan"
,
"useMap"
,
"frameBorder"
,
"contentEditable"
],
function
(){
k
.
propFix
[
this
.
toLowerCase
()]
=
this
}),
k
.
fn
.
extend
({
addClass
:
function
(
t
){
var
e
,
n
,
r
,
i
,
o
,
a
,
s
,
u
=
0
;
if
(
m
(
t
))
return
this
.
each
(
function
(
e
){
k
(
this
).
addClass
(
t
.
call
(
this
,
e
,
xt
(
this
)))});
if
((
e
=
bt
(
t
)).
length
)
while
(
n
=
this
[
u
++
])
if
(
i
=
xt
(
n
),
r
=
1
===
n
.
nodeType
&&
" "
+
mt
(
i
)
+
" "
){
a
=
0
;
while
(
o
=
e
[
a
++
])
r
.
indexOf
(
" "
+
o
+
" "
)
<
0
&&
(
r
+=
o
+
" "
);
i
!==
(
s
=
mt
(
r
))
&&
n
.
setAttribute
(
"class"
,
s
)}
return
this
},
removeClass
:
function
(
t
){
var
e
,
n
,
r
,
i
,
o
,
a
,
s
,
u
=
0
;
if
(
m
(
t
))
return
this
.
each
(
function
(
e
){
k
(
this
).
removeClass
(
t
.
call
(
this
,
e
,
xt
(
this
)))});
if
(
!
arguments
.
length
)
return
this
.
attr
(
"class"
,
""
);
if
((
e
=
bt
(
t
)).
length
)
while
(
n
=
this
[
u
++
])
if
(
i
=
xt
(
n
),
r
=
1
===
n
.
nodeType
&&
" "
+
mt
(
i
)
+
" "
){
a
=
0
;
while
(
o
=
e
[
a
++
])
while
(
-
1
<
r
.
indexOf
(
" "
+
o
+
" "
))
r
=
r
.
replace
(
" "
+
o
+
" "
,
" "
);
i
!==
(
s
=
mt
(
r
))
&&
n
.
setAttribute
(
"class"
,
s
)}
return
this
},
toggleClass
:
function
(
i
,
t
){
var
o
=
typeof
i
,
a
=
"string"
===
o
||
Array
.
isArray
(
i
);
return
"boolean"
==
typeof
t
&&
a
?
t
?
this
.
addClass
(
i
):
this
.
removeClass
(
i
):
m
(
i
)?
this
.
each
(
function
(
e
){
k
(
this
).
toggleClass
(
i
.
call
(
this
,
e
,
xt
(
this
),
t
),
t
)}):
this
.
each
(
function
(){
var
e
,
t
,
n
,
r
;
if
(
a
){
t
=
0
,
n
=
k
(
this
),
r
=
bt
(
i
);
while
(
e
=
r
[
t
++
])
n
.
hasClass
(
e
)?
n
.
removeClass
(
e
):
n
.
addClass
(
e
)}
else
void
0
!==
i
&&
"boolean"
!==
o
||
((
e
=
xt
(
this
))
&&
Q
.
set
(
this
,
"__className__"
,
e
),
this
.
setAttribute
&&
this
.
setAttribute
(
"class"
,
e
||!
1
===
i
?
""
:
Q
.
get
(
this
,
"__className__"
)
||
""
))})},
hasClass
:
function
(
e
){
var
t
,
n
,
r
=
0
;
t
=
" "
+
e
+
" "
;
while
(
n
=
this
[
r
++
])
if
(
1
===
n
.
nodeType
&&-
1
<
(
" "
+
mt
(
xt
(
n
))
+
" "
).
indexOf
(
t
))
return
!
0
;
return
!
1
}});
var
wt
=
/
\r
/g
;
k
.
fn
.
extend
({
val
:
function
(
n
){
var
r
,
e
,
i
,
t
=
this
[
0
];
return
arguments
.
length
?(
i
=
m
(
n
),
this
.
each
(
function
(
e
){
var
t
;
1
===
this
.
nodeType
&&
(
null
==
(
t
=
i
?
n
.
call
(
this
,
e
,
k
(
this
).
val
()):
n
)?
t
=
""
:
"number"
==
typeof
t
?
t
+=
""
:
Array
.
isArray
(
t
)
&&
(
t
=
k
.
map
(
t
,
function
(
e
){
return
null
==
e
?
""
:
e
+
""
})),(
r
=
k
.
valHooks
[
this
.
type
]
||
k
.
valHooks
[
this
.
nodeName
.
toLowerCase
()])
&&
"set"
in
r
&&
void
0
!==
r
.
set
(
this
,
t
,
"value"
)
||
(
this
.
value
=
t
))})):
t
?(
r
=
k
.
valHooks
[
t
.
type
]
||
k
.
valHooks
[
t
.
nodeName
.
toLowerCase
()])
&&
"get"
in
r
&&
void
0
!==
(
e
=
r
.
get
(
t
,
"value"
))?
e
:
"string"
==
typeof
(
e
=
t
.
value
)?
e
.
replace
(
wt
,
""
):
null
==
e
?
""
:
e
:
void
0
}}),
k
.
extend
({
valHooks
:{
option
:{
get
:
function
(
e
){
var
t
=
k
.
find
.
attr
(
e
,
"value"
);
return
null
!=
t
?
t
:
mt
(
k
.
text
(
e
))}},
select
:{
get
:
function
(
e
){
var
t
,
n
,
r
,
i
=
e
.
options
,
o
=
e
.
selectedIndex
,
a
=
"select-one"
===
e
.
type
,
s
=
a
?
null
:[],
u
=
a
?
o
+
1
:
i
.
length
;
for
(
r
=
o
<
0
?
u
:
a
?
o
:
0
;
r
<
u
;
r
++
)
if
(((
n
=
i
[
r
]).
selected
||
r
===
o
)
&&!
n
.
disabled
&&
(
!
n
.
parentNode
.
disabled
||!
A
(
n
.
parentNode
,
"optgroup"
))){
if
(
t
=
k
(
n
).
val
(),
a
)
return
t
;
s
.
push
(
t
)}
return
s
},
set
:
function
(
e
,
t
){
var
n
,
r
,
i
=
e
.
options
,
o
=
k
.
makeArray
(
t
),
a
=
i
.
length
;
while
(
a
--
)((
r
=
i
[
a
]).
selected
=-
1
<
k
.
inArray
(
k
.
valHooks
.
option
.
get
(
r
),
o
))
&&
(
n
=!
0
);
return
n
||
(
e
.
selectedIndex
=-
1
),
o
}}}}),
k
.
each
([
"radio"
,
"checkbox"
],
function
(){
k
.
valHooks
[
this
]
=
{
set
:
function
(
e
,
t
){
if
(
Array
.
isArray
(
t
))
return
e
.
checked
=-
1
<
k
.
inArray
(
k
(
e
).
val
(),
t
)}},
y
.
checkOn
||
(
k
.
valHooks
[
this
].
get
=
function
(
e
){
return
null
===
e
.
getAttribute
(
"value"
)?
"on"
:
e
.
value
})}),
y
.
focusin
=
"onfocusin"
in
C
;
var
Tt
=
/^
(?:
focusinfocus|focusoutblur
)
$/
,
Ct
=
function
(
e
){
e
.
stopPropagation
()};
k
.
extend
(
k
.
event
,{
trigger
:
function
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
,
s
,
u
,
l
,
c
,
f
,
p
=
[
n
||
E
],
d
=
v
.
call
(
e
,
"type"
)?
e
.
type
:
e
,
h
=
v
.
call
(
e
,
"namespace"
)?
e
.
namespace
.
split
(
"."
):[];
if
(
o
=
f
=
a
=
n
=
n
||
E
,
3
!==
n
.
nodeType
&&
8
!==
n
.
nodeType
&&!
Tt
.
test
(
d
+
k
.
event
.
triggered
)
&&
(
-
1
<
d
.
indexOf
(
"."
)
&&
(
d
=
(
h
=
d
.
split
(
"."
)).
shift
(),
h
.
sort
()),
u
=
d
.
indexOf
(
":"
)
<
0
&&
"on"
+
d
,(
e
=
e
[
k
.
expando
]?
e
:
new
k
.
Event
(
d
,
"object"
==
typeof
e
&&
e
)).
isTrigger
=
r
?
2
:
3
,
e
.
namespace
=
h
.
join
(
"."
),
e
.
rnamespace
=
e
.
namespace
?
new
RegExp
(
"(^|
\\
.)"
+
h
.
join
(
"
\\
.(?:.*
\\
.|)"
)
+
"(
\\
.|$)"
):
null
,
e
.
result
=
void
0
,
e
.
target
||
(
e
.
target
=
n
),
t
=
null
==
t
?[
e
]:
k
.
makeArray
(
t
,[
e
]),
c
=
k
.
event
.
special
[
d
]
||
{},
r
||!
c
.
trigger
||!
1
!==
c
.
trigger
.
apply
(
n
,
t
))){
if
(
!
r
&&!
c
.
noBubble
&&!
x
(
n
)){
for
(
s
=
c
.
delegateType
||
d
,
Tt
.
test
(
s
+
d
)
||
(
o
=
o
.
parentNode
);
o
;
o
=
o
.
parentNode
)
p
.
push
(
o
),
a
=
o
;
a
===
(
n
.
ownerDocument
||
E
)
&&
p
.
push
(
a
.
defaultView
||
a
.
parentWindow
||
C
)}
i
=
0
;
while
((
o
=
p
[
i
++
])
&&!
e
.
isPropagationStopped
())
f
=
o
,
e
.
type
=
1
<
i
?
s
:
c
.
bindType
||
d
,(
l
=
(
Q
.
get
(
o
,
"events"
)
||
{})[
e
.
type
]
&&
Q
.
get
(
o
,
"handle"
))
&&
l
.
apply
(
o
,
t
),(
l
=
u
&&
o
[
u
])
&&
l
.
apply
&&
G
(
o
)
&&
(
e
.
result
=
l
.
apply
(
o
,
t
),
!
1
===
e
.
result
&&
e
.
preventDefault
());
return
e
.
type
=
d
,
r
||
e
.
isDefaultPrevented
()
||
c
.
_default
&&!
1
!==
c
.
_default
.
apply
(
p
.
pop
(),
t
)
||!
G
(
n
)
||
u
&&
m
(
n
[
d
])
&&!
x
(
n
)
&&
((
a
=
n
[
u
])
&&
(
n
[
u
]
=
null
),
k
.
event
.
triggered
=
d
,
e
.
isPropagationStopped
()
&&
f
.
addEventListener
(
d
,
Ct
),
n
[
d
](),
e
.
isPropagationStopped
()
&&
f
.
removeEventListener
(
d
,
Ct
),
k
.
event
.
triggered
=
void
0
,
a
&&
(
n
[
u
]
=
a
)),
e
.
result
}},
simulate
:
function
(
e
,
t
,
n
){
var
r
=
k
.
extend
(
new
k
.
Event
,
n
,{
type
:
e
,
isSimulated
:
!
0
});
k
.
event
.
trigger
(
r
,
null
,
t
)}}),
k
.
fn
.
extend
({
trigger
:
function
(
e
,
t
){
return
this
.
each
(
function
(){
k
.
event
.
trigger
(
e
,
t
,
this
)})},
triggerHandler
:
function
(
e
,
t
){
var
n
=
this
[
0
];
if
(
n
)
return
k
.
event
.
trigger
(
e
,
t
,
n
,
!
0
)}}),
y
.
focusin
||
k
.
each
({
focus
:
"focusin"
,
blur
:
"focusout"
},
function
(
n
,
r
){
var
i
=
function
(
e
){
k
.
event
.
simulate
(
r
,
e
.
target
,
k
.
event
.
fix
(
e
))};
k
.
event
.
special
[
r
]
=
{
setup
:
function
(){
var
e
=
this
.
ownerDocument
||
this
,
t
=
Q
.
access
(
e
,
r
);
t
||
e
.
addEventListener
(
n
,
i
,
!
0
),
Q
.
access
(
e
,
r
,(
t
||
0
)
+
1
)},
teardown
:
function
(){
var
e
=
this
.
ownerDocument
||
this
,
t
=
Q
.
access
(
e
,
r
)
-
1
;
t
?
Q
.
access
(
e
,
r
,
t
):(
e
.
removeEventListener
(
n
,
i
,
!
0
),
Q
.
remove
(
e
,
r
))}}});
var
Et
=
C
.
location
,
kt
=
Date
.
now
(),
St
=
/
\?
/
;
k
.
parseXML
=
function
(
e
){
var
t
;
if
(
!
e
||
"string"
!=
typeof
e
)
return
null
;
try
{
t
=
(
new
C
.
DOMParser
).
parseFromString
(
e
,
"text/xml"
)}
catch
(
e
){
t
=
void
0
}
return
t
&&!
t
.
getElementsByTagName
(
"parsererror"
).
length
||
k
.
error
(
"Invalid XML: "
+
e
),
t
};
var
Nt
=
/
\[\]
$/
,
At
=
/
\r?\n
/g
,
Dt
=
/^
(?:
submit|button|image|reset|file
)
$/i
,
jt
=
/^
(?:
input|select|textarea|keygen
)
/i
;
function
qt
(
n
,
e
,
r
,
i
){
var
t
;
if
(
Array
.
isArray
(
e
))
k
.
each
(
e
,
function
(
e
,
t
){
r
||
Nt
.
test
(
n
)?
i
(
n
,
t
):
qt
(
n
+
"["
+
(
"object"
==
typeof
t
&&
null
!=
t
?
e
:
""
)
+
"]"
,
t
,
r
,
i
)});
else
if
(
r
||
"object"
!==
w
(
e
))
i
(
n
,
e
);
else
for
(
t
in
e
)
qt
(
n
+
"["
+
t
+
"]"
,
e
[
t
],
r
,
i
)}
k
.
param
=
function
(
e
,
t
){
var
n
,
r
=
[],
i
=
function
(
e
,
t
){
var
n
=
m
(
t
)?
t
():
t
;
r
[
r
.
length
]
=
encodeURIComponent
(
e
)
+
"="
+
encodeURIComponent
(
null
==
n
?
""
:
n
)};
if
(
null
==
e
)
return
""
;
if
(
Array
.
isArray
(
e
)
||
e
.
jquery
&&!
k
.
isPlainObject
(
e
))
k
.
each
(
e
,
function
(){
i
(
this
.
name
,
this
.
value
)});
else
for
(
n
in
e
)
qt
(
n
,
e
[
n
],
t
,
i
);
return
r
.
join
(
"&"
)},
k
.
fn
.
extend
({
serialize
:
function
(){
return
k
.
param
(
this
.
serializeArray
())},
serializeArray
:
function
(){
return
this
.
map
(
function
(){
var
e
=
k
.
prop
(
this
,
"elements"
);
return
e
?
k
.
makeArray
(
e
):
this
}).
filter
(
function
(){
var
e
=
this
.
type
;
return
this
.
name
&&!
k
(
this
).
is
(
":disabled"
)
&&
jt
.
test
(
this
.
nodeName
)
&&!
Dt
.
test
(
e
)
&&
(
this
.
checked
||!
pe
.
test
(
e
))}).
map
(
function
(
e
,
t
){
var
n
=
k
(
this
).
val
();
return
null
==
n
?
null
:
Array
.
isArray
(
n
)?
k
.
map
(
n
,
function
(
e
){
return
{
name
:
t
.
name
,
value
:
e
.
replace
(
At
,
"
\
r
\n
"
)}}):{
name
:
t
.
name
,
value
:
n
.
replace
(
At
,
"
\
r
\n
"
)}}).
get
()}});
var
Lt
=
/%20/g
,
Ht
=
/#.*$/
,
Ot
=
/
([
?&
])
_=
[^
&
]
*/
,
Pt
=
/^
(
.*
?)
:
[
\t]
*
([^\r\n]
*
)
$/gm
,
Rt
=
/^
(?:
GET|HEAD
)
$/
,
Mt
=
/^
\/\/
/
,
It
=
{},
Wt
=
{},
$t
=
"*/"
.
concat
(
"*"
),
Ft
=
E
.
createElement
(
"a"
);
function
Bt
(
o
){
return
function
(
e
,
t
){
"string"
!=
typeof
e
&&
(
t
=
e
,
e
=
"*"
);
var
n
,
r
=
0
,
i
=
e
.
toLowerCase
().
match
(
R
)
||
[];
if
(
m
(
t
))
while
(
n
=
i
[
r
++
])
"+"
===
n
[
0
]?(
n
=
n
.
slice
(
1
)
||
"*"
,(
o
[
n
]
=
o
[
n
]
||
[]).
unshift
(
t
)):(
o
[
n
]
=
o
[
n
]
||
[]).
push
(
t
)}}
function
_t
(
t
,
i
,
o
,
a
){
var
s
=
{},
u
=
t
===
Wt
;
function
l
(
e
){
var
r
;
return
s
[
e
]
=!
0
,
k
.
each
(
t
[
e
]
||
[],
function
(
e
,
t
){
var
n
=
t
(
i
,
o
,
a
);
return
"string"
!=
typeof
n
||
u
||
s
[
n
]?
u
?
!
(
r
=
n
):
void
0
:(
i
.
dataTypes
.
unshift
(
n
),
l
(
n
),
!
1
)}),
r
}
return
l
(
i
.
dataTypes
[
0
])
||!
s
[
"*"
]
&&
l
(
"*"
)}
function
zt
(
e
,
t
){
var
n
,
r
,
i
=
k
.
ajaxSettings
.
flatOptions
||
{};
for
(
n
in
t
)
void
0
!==
t
[
n
]
&&
((
i
[
n
]?
e
:
r
||
(
r
=
{}))[
n
]
=
t
[
n
]);
return
r
&&
k
.
extend
(
!
0
,
e
,
r
),
e
}
Ft
.
href
=
Et
.
href
,
k
.
extend
({
active
:
0
,
lastModified
:{},
etag
:{},
ajaxSettings
:{
url
:
Et
.
href
,
type
:
"GET"
,
isLocal
:
/^
(?:
about|app|app-storage|.+-extension|file|res|widget
)
:$/
.
test
(
Et
.
protocol
),
global
:
!
0
,
processData
:
!
0
,
async
:
!
0
,
contentType
:
"application/x-www-form-urlencoded; charset=UTF-8"
,
accepts
:{
"*"
:
$t
,
text
:
"text/plain"
,
html
:
"text/html"
,
xml
:
"application/xml, text/xml"
,
json
:
"application/json, text/javascript"
},
contents
:{
xml
:
/
\b
xml
\b
/
,
html
:
/
\b
html/
,
json
:
/
\b
json
\b
/
},
responseFields
:{
xml
:
"responseXML"
,
text
:
"responseText"
,
json
:
"responseJSON"
},
converters
:{
"* text"
:
String
,
"text html"
:
!
0
,
"text json"
:
JSON
.
parse
,
"text xml"
:
k
.
parseXML
},
flatOptions
:{
url
:
!
0
,
context
:
!
0
}},
ajaxSetup
:
function
(
e
,
t
){
return
t
?
zt
(
zt
(
e
,
k
.
ajaxSettings
),
t
):
zt
(
k
.
ajaxSettings
,
e
)},
ajaxPrefilter
:
Bt
(
It
),
ajaxTransport
:
Bt
(
Wt
),
ajax
:
function
(
e
,
t
){
"object"
==
typeof
e
&&
(
t
=
e
,
e
=
void
0
),
t
=
t
||
{};
var
c
,
f
,
p
,
n
,
d
,
r
,
h
,
g
,
i
,
o
,
v
=
k
.
ajaxSetup
({},
t
),
y
=
v
.
context
||
v
,
m
=
v
.
context
&&
(
y
.
nodeType
||
y
.
jquery
)?
k
(
y
):
k
.
event
,
x
=
k
.
Deferred
(),
b
=
k
.
Callbacks
(
"once memory"
),
w
=
v
.
statusCode
||
{},
a
=
{},
s
=
{},
u
=
"canceled"
,
T
=
{
readyState
:
0
,
getResponseHeader
:
function
(
e
){
var
t
;
if
(
h
){
if
(
!
n
){
n
=
{};
while
(
t
=
Pt
.
exec
(
p
))
n
[
t
[
1
].
toLowerCase
()
+
" "
]
=
(
n
[
t
[
1
].
toLowerCase
()
+
" "
]
||
[]).
concat
(
t
[
2
])}
t
=
n
[
e
.
toLowerCase
()
+
" "
]}
return
null
==
t
?
null
:
t
.
join
(
", "
)},
getAllResponseHeaders
:
function
(){
return
h
?
p
:
null
},
setRequestHeader
:
function
(
e
,
t
){
return
null
==
h
&&
(
e
=
s
[
e
.
toLowerCase
()]
=
s
[
e
.
toLowerCase
()]
||
e
,
a
[
e
]
=
t
),
this
},
overrideMimeType
:
function
(
e
){
return
null
==
h
&&
(
v
.
mimeType
=
e
),
this
},
statusCode
:
function
(
e
){
var
t
;
if
(
e
)
if
(
h
)
T
.
always
(
e
[
T
.
status
]);
else
for
(
t
in
e
)
w
[
t
]
=
[
w
[
t
],
e
[
t
]];
return
this
},
abort
:
function
(
e
){
var
t
=
e
||
u
;
return
c
&&
c
.
abort
(
t
),
l
(
0
,
t
),
this
}};
if
(
x
.
promise
(
T
),
v
.
url
=
((
e
||
v
.
url
||
Et
.
href
)
+
""
).
replace
(
Mt
,
Et
.
protocol
+
"//"
),
v
.
type
=
t
.
method
||
t
.
type
||
v
.
method
||
v
.
type
,
v
.
dataTypes
=
(
v
.
dataType
||
"*"
).
toLowerCase
().
match
(
R
)
||
[
""
],
null
==
v
.
crossDomain
){
r
=
E
.
createElement
(
"a"
);
try
{
r
.
href
=
v
.
url
,
r
.
href
=
r
.
href
,
v
.
crossDomain
=
Ft
.
protocol
+
"//"
+
Ft
.
host
!=
r
.
protocol
+
"//"
+
r
.
host
}
catch
(
e
){
v
.
crossDomain
=!
0
}}
if
(
v
.
data
&&
v
.
processData
&&
"string"
!=
typeof
v
.
data
&&
(
v
.
data
=
k
.
param
(
v
.
data
,
v
.
traditional
)),
_t
(
It
,
v
,
t
,
T
),
h
)
return
T
;
for
(
i
in
(
g
=
k
.
event
&&
v
.
global
)
&&
0
==
k
.
active
++&&
k
.
event
.
trigger
(
"ajaxStart"
),
v
.
type
=
v
.
type
.
toUpperCase
(),
v
.
hasContent
=!
Rt
.
test
(
v
.
type
),
f
=
v
.
url
.
replace
(
Ht
,
""
),
v
.
hasContent
?
v
.
data
&&
v
.
processData
&&
0
===
(
v
.
contentType
||
""
).
indexOf
(
"application/x-www-form-urlencoded"
)
&&
(
v
.
data
=
v
.
data
.
replace
(
Lt
,
"+"
)):(
o
=
v
.
url
.
slice
(
f
.
length
),
v
.
data
&&
(
v
.
processData
||
"string"
==
typeof
v
.
data
)
&&
(
f
+=
(
St
.
test
(
f
)?
"&"
:
"?"
)
+
v
.
data
,
delete
v
.
data
),
!
1
===
v
.
cache
&&
(
f
=
f
.
replace
(
Ot
,
"$1"
),
o
=
(
St
.
test
(
f
)?
"&"
:
"?"
)
+
"_="
+
kt
+++
o
),
v
.
url
=
f
+
o
),
v
.
ifModified
&&
(
k
.
lastModified
[
f
]
&&
T
.
setRequestHeader
(
"If-Modified-Since"
,
k
.
lastModified
[
f
]),
k
.
etag
[
f
]
&&
T
.
setRequestHeader
(
"If-None-Match"
,
k
.
etag
[
f
])),(
v
.
data
&&
v
.
hasContent
&&!
1
!==
v
.
contentType
||
t
.
contentType
)
&&
T
.
setRequestHeader
(
"Content-Type"
,
v
.
contentType
),
T
.
setRequestHeader
(
"Accept"
,
v
.
dataTypes
[
0
]
&&
v
.
accepts
[
v
.
dataTypes
[
0
]]?
v
.
accepts
[
v
.
dataTypes
[
0
]]
+
(
"*"
!==
v
.
dataTypes
[
0
]?
", "
+
$t
+
"; q=0.01"
:
""
):
v
.
accepts
[
"*"
]),
v
.
headers
)
T
.
setRequestHeader
(
i
,
v
.
headers
[
i
]);
if
(
v
.
beforeSend
&&
(
!
1
===
v
.
beforeSend
.
call
(
y
,
T
,
v
)
||
h
))
return
T
.
abort
();
if
(
u
=
"abort"
,
b
.
add
(
v
.
complete
),
T
.
done
(
v
.
success
),
T
.
fail
(
v
.
error
),
c
=
_t
(
Wt
,
v
,
t
,
T
)){
if
(
T
.
readyState
=
1
,
g
&&
m
.
trigger
(
"ajaxSend"
,[
T
,
v
]),
h
)
return
T
;
v
.
async
&&
0
<
v
.
timeout
&&
(
d
=
C
.
setTimeout
(
function
(){
T
.
abort
(
"timeout"
)},
v
.
timeout
));
try
{
h
=!
1
,
c
.
send
(
a
,
l
)}
catch
(
e
){
if
(
h
)
throw
e
;
l
(
-
1
,
e
)}}
else
l
(
-
1
,
"No Transport"
);
function
l
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
,
s
,
u
,
l
=
t
;
h
||
(
h
=!
0
,
d
&&
C
.
clearTimeout
(
d
),
c
=
void
0
,
p
=
r
||
""
,
T
.
readyState
=
0
<
e
?
4
:
0
,
i
=
200
<=
e
&&
e
<
300
||
304
===
e
,
n
&&
(
s
=
function
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
,
s
=
e
.
contents
,
u
=
e
.
dataTypes
;
while
(
"*"
===
u
[
0
])
u
.
shift
(),
void
0
===
r
&&
(
r
=
e
.
mimeType
||
t
.
getResponseHeader
(
"Content-Type"
));
if
(
r
)
for
(
i
in
s
)
if
(
s
[
i
]
&&
s
[
i
].
test
(
r
)){
u
.
unshift
(
i
);
break
}
if
(
u
[
0
]
in
n
)
o
=
u
[
0
];
else
{
for
(
i
in
n
){
if
(
!
u
[
0
]
||
e
.
converters
[
i
+
" "
+
u
[
0
]]){
o
=
i
;
break
}
a
||
(
a
=
i
)}
o
=
o
||
a
}
if
(
o
)
return
o
!==
u
[
0
]
&&
u
.
unshift
(
o
),
n
[
o
]}(
v
,
T
,
n
)),
s
=
function
(
e
,
t
,
n
,
r
){
var
i
,
o
,
a
,
s
,
u
,
l
=
{},
c
=
e
.
dataTypes
.
slice
();
if
(
c
[
1
])
for
(
a
in
e
.
converters
)
l
[
a
.
toLowerCase
()]
=
e
.
converters
[
a
];
o
=
c
.
shift
();
while
(
o
)
if
(
e
.
responseFields
[
o
]
&&
(
n
[
e
.
responseFields
[
o
]]
=
t
),
!
u
&&
r
&&
e
.
dataFilter
&&
(
t
=
e
.
dataFilter
(
t
,
e
.
dataType
)),
u
=
o
,
o
=
c
.
shift
())
if
(
"*"
===
o
)
o
=
u
;
else
if
(
"*"
!==
u
&&
u
!==
o
){
if
(
!
(
a
=
l
[
u
+
" "
+
o
]
||
l
[
"* "
+
o
]))
for
(
i
in
l
)
if
((
s
=
i
.
split
(
" "
))[
1
]
===
o
&&
(
a
=
l
[
u
+
" "
+
s
[
0
]]
||
l
[
"* "
+
s
[
0
]])){
!
0
===
a
?
a
=
l
[
i
]:
!
0
!==
l
[
i
]
&&
(
o
=
s
[
0
],
c
.
unshift
(
s
[
1
]));
break
}
if
(
!
0
!==
a
)
if
(
a
&&
e
[
"throws"
])
t
=
a
(
t
);
else
try
{
t
=
a
(
t
)}
catch
(
e
){
return
{
state
:
"parsererror"
,
error
:
a
?
e
:
"No conversion from "
+
u
+
" to "
+
o
}}}
return
{
state
:
"success"
,
data
:
t
}}(
v
,
s
,
T
,
i
),
i
?(
v
.
ifModified
&&
((
u
=
T
.
getResponseHeader
(
"Last-Modified"
))
&&
(
k
.
lastModified
[
f
]
=
u
),(
u
=
T
.
getResponseHeader
(
"etag"
))
&&
(
k
.
etag
[
f
]
=
u
)),
204
===
e
||
"HEAD"
===
v
.
type
?
l
=
"nocontent"
:
304
===
e
?
l
=
"notmodified"
:(
l
=
s
.
state
,
o
=
s
.
data
,
i
=!
(
a
=
s
.
error
))):(
a
=
l
,
!
e
&&
l
||
(
l
=
"error"
,
e
<
0
&&
(
e
=
0
))),
T
.
status
=
e
,
T
.
statusText
=
(
t
||
l
)
+
""
,
i
?
x
.
resolveWith
(
y
,[
o
,
l
,
T
]):
x
.
rejectWith
(
y
,[
T
,
l
,
a
]),
T
.
statusCode
(
w
),
w
=
void
0
,
g
&&
m
.
trigger
(
i
?
"ajaxSuccess"
:
"ajaxError"
,[
T
,
v
,
i
?
o
:
a
]),
b
.
fireWith
(
y
,[
T
,
l
]),
g
&&
(
m
.
trigger
(
"ajaxComplete"
,[
T
,
v
]),
--
k
.
active
||
k
.
event
.
trigger
(
"ajaxStop"
)))}
return
T
},
getJSON
:
function
(
e
,
t
,
n
){
return
k
.
get
(
e
,
t
,
n
,
"json"
)},
getScript
:
function
(
e
,
t
){
return
k
.
get
(
e
,
void
0
,
t
,
"script"
)}}),
k
.
each
([
"get"
,
"post"
],
function
(
e
,
i
){
k
[
i
]
=
function
(
e
,
t
,
n
,
r
){
return
m
(
t
)
&&
(
r
=
r
||
n
,
n
=
t
,
t
=
void
0
),
k
.
ajax
(
k
.
extend
({
url
:
e
,
type
:
i
,
dataType
:
r
,
data
:
t
,
success
:
n
},
k
.
isPlainObject
(
e
)
&&
e
))}}),
k
.
_evalUrl
=
function
(
e
,
t
){
return
k
.
ajax
({
url
:
e
,
type
:
"GET"
,
dataType
:
"script"
,
cache
:
!
0
,
async
:
!
1
,
global
:
!
1
,
converters
:{
"text script"
:
function
(){}},
dataFilter
:
function
(
e
){
k
.
globalEval
(
e
,
t
)}})},
k
.
fn
.
extend
({
wrapAll
:
function
(
e
){
var
t
;
return
this
[
0
]
&&
(
m
(
e
)
&&
(
e
=
e
.
call
(
this
[
0
])),
t
=
k
(
e
,
this
[
0
].
ownerDocument
).
eq
(
0
).
clone
(
!
0
),
this
[
0
].
parentNode
&&
t
.
insertBefore
(
this
[
0
]),
t
.
map
(
function
(){
var
e
=
this
;
while
(
e
.
firstElementChild
)
e
=
e
.
firstElementChild
;
return
e
}).
append
(
this
)),
this
},
wrapInner
:
function
(
n
){
return
m
(
n
)?
this
.
each
(
function
(
e
){
k
(
this
).
wrapInner
(
n
.
call
(
this
,
e
))}):
this
.
each
(
function
(){
var
e
=
k
(
this
),
t
=
e
.
contents
();
t
.
length
?
t
.
wrapAll
(
n
):
e
.
append
(
n
)})},
wrap
:
function
(
t
){
var
n
=
m
(
t
);
return
this
.
each
(
function
(
e
){
k
(
this
).
wrapAll
(
n
?
t
.
call
(
this
,
e
):
t
)})},
unwrap
:
function
(
e
){
return
this
.
parent
(
e
).
not
(
"body"
).
each
(
function
(){
k
(
this
).
replaceWith
(
this
.
childNodes
)}),
this
}}),
k
.
expr
.
pseudos
.
hidden
=
function
(
e
){
return
!
k
.
expr
.
pseudos
.
visible
(
e
)},
k
.
expr
.
pseudos
.
visible
=
function
(
e
){
return
!!
(
e
.
offsetWidth
||
e
.
offsetHeight
||
e
.
getClientRects
().
length
)},
k
.
ajaxSettings
.
xhr
=
function
(){
try
{
return
new
C
.
XMLHttpRequest
}
catch
(
e
){}};
var
Ut
=
{
0
:
200
,
1223
:
204
},
Xt
=
k
.
ajaxSettings
.
xhr
();
y
.
cors
=!!
Xt
&&
"withCredentials"
in
Xt
,
y
.
ajax
=
Xt
=!!
Xt
,
k
.
ajaxTransport
(
function
(
i
){
var
o
,
a
;
if
(
y
.
cors
||
Xt
&&!
i
.
crossDomain
)
return
{
send
:
function
(
e
,
t
){
var
n
,
r
=
i
.
xhr
();
if
(
r
.
open
(
i
.
type
,
i
.
url
,
i
.
async
,
i
.
username
,
i
.
password
),
i
.
xhrFields
)
for
(
n
in
i
.
xhrFields
)
r
[
n
]
=
i
.
xhrFields
[
n
];
for
(
n
in
i
.
mimeType
&&
r
.
overrideMimeType
&&
r
.
overrideMimeType
(
i
.
mimeType
),
i
.
crossDomain
||
e
[
"X-Requested-With"
]
||
(
e
[
"X-Requested-With"
]
=
"XMLHttpRequest"
),
e
)
r
.
setRequestHeader
(
n
,
e
[
n
]);
o
=
function
(
e
){
return
function
(){
o
&&
(
o
=
a
=
r
.
onload
=
r
.
onerror
=
r
.
onabort
=
r
.
ontimeout
=
r
.
onreadystatechange
=
null
,
"abort"
===
e
?
r
.
abort
():
"error"
===
e
?
"number"
!=
typeof
r
.
status
?
t
(
0
,
"error"
):
t
(
r
.
status
,
r
.
statusText
):
t
(
Ut
[
r
.
status
]
||
r
.
status
,
r
.
statusText
,
"text"
!==
(
r
.
responseType
||
"text"
)
||
"string"
!=
typeof
r
.
responseText
?{
binary
:
r
.
response
}:{
text
:
r
.
responseText
},
r
.
getAllResponseHeaders
()))}},
r
.
onload
=
o
(),
a
=
r
.
onerror
=
r
.
ontimeout
=
o
(
"error"
),
void
0
!==
r
.
onabort
?
r
.
onabort
=
a
:
r
.
onreadystatechange
=
function
(){
4
===
r
.
readyState
&&
C
.
setTimeout
(
function
(){
o
&&
a
()})},
o
=
o
(
"abort"
);
try
{
r
.
send
(
i
.
hasContent
&&
i
.
data
||
null
)}
catch
(
e
){
if
(
o
)
throw
e
}},
abort
:
function
(){
o
&&
o
()}}}),
k
.
ajaxPrefilter
(
function
(
e
){
e
.
crossDomain
&&
(
e
.
contents
.
script
=!
1
)}),
k
.
ajaxSetup
({
accepts
:{
script
:
"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
},
contents
:{
script
:
/
\b(?:
java|ecma
)
script
\b
/
},
converters
:{
"text script"
:
function
(
e
){
return
k
.
globalEval
(
e
),
e
}}}),
k
.
ajaxPrefilter
(
"script"
,
function
(
e
){
void
0
===
e
.
cache
&&
(
e
.
cache
=!
1
),
e
.
crossDomain
&&
(
e
.
type
=
"GET"
)}),
k
.
ajaxTransport
(
"script"
,
function
(
n
){
var
r
,
i
;
if
(
n
.
crossDomain
||
n
.
scriptAttrs
)
return
{
send
:
function
(
e
,
t
){
r
=
k
(
"<script>"
).
attr
(
n
.
scriptAttrs
||
{}).
prop
({
charset
:
n
.
scriptCharset
,
src
:
n
.
url
}).
on
(
"load error"
,
i
=
function
(
e
){
r
.
remove
(),
i
=
null
,
e
&&
t
(
"error"
===
e
.
type
?
404
:
200
,
e
.
type
)}),
E
.
head
.
appendChild
(
r
[
0
])},
abort
:
function
(){
i
&&
i
()}}});
var
Vt
,
Gt
=
[],
Yt
=
/
(
=
)\?(?=
&|$
)
|
\?\?
/
;
k
.
ajaxSetup
({
jsonp
:
"callback"
,
jsonpCallback
:
function
(){
var
e
=
Gt
.
pop
()
||
k
.
expando
+
"_"
+
kt
++
;
return
this
[
e
]
=!
0
,
e
}}),
k
.
ajaxPrefilter
(
"json jsonp"
,
function
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
=!
1
!==
e
.
jsonp
&&
(
Yt
.
test
(
e
.
url
)?
"url"
:
"string"
==
typeof
e
.
data
&&
0
===
(
e
.
contentType
||
""
).
indexOf
(
"application/x-www-form-urlencoded"
)
&&
Yt
.
test
(
e
.
data
)
&&
"data"
);
if
(
a
||
"jsonp"
===
e
.
dataTypes
[
0
])
return
r
=
e
.
jsonpCallback
=
m
(
e
.
jsonpCallback
)?
e
.
jsonpCallback
():
e
.
jsonpCallback
,
a
?
e
[
a
]
=
e
[
a
].
replace
(
Yt
,
"$1"
+
r
):
!
1
!==
e
.
jsonp
&&
(
e
.
url
+=
(
St
.
test
(
e
.
url
)?
"&"
:
"?"
)
+
e
.
jsonp
+
"="
+
r
),
e
.
converters
[
"script json"
]
=
function
(){
return
o
||
k
.
error
(
r
+
" was not called"
),
o
[
0
]},
e
.
dataTypes
[
0
]
=
"json"
,
i
=
C
[
r
],
C
[
r
]
=
function
(){
o
=
arguments
},
n
.
always
(
function
(){
void
0
===
i
?
k
(
C
).
removeProp
(
r
):
C
[
r
]
=
i
,
e
[
r
]
&&
(
e
.
jsonpCallback
=
t
.
jsonpCallback
,
Gt
.
push
(
r
)),
o
&&
m
(
i
)
&&
i
(
o
[
0
]),
o
=
i
=
void
0
}),
"script"
}),
y
.
createHTMLDocument
=
((
Vt
=
E
.
implementation
.
createHTMLDocument
(
""
).
body
).
innerHTML
=
"<form></form><form></form>"
,
2
===
Vt
.
childNodes
.
length
),
k
.
parseHTML
=
function
(
e
,
t
,
n
){
return
"string"
!=
typeof
e
?[]:(
"boolean"
==
typeof
t
&&
(
n
=
t
,
t
=!
1
),
t
||
(
y
.
createHTMLDocument
?((
r
=
(
t
=
E
.
implementation
.
createHTMLDocument
(
""
)).
createElement
(
"base"
)).
href
=
E
.
location
.
href
,
t
.
head
.
appendChild
(
r
)):
t
=
E
),
o
=!
n
&&
[],(
i
=
D
.
exec
(
e
))?[
t
.
createElement
(
i
[
1
])]:(
i
=
we
([
e
],
t
,
o
),
o
&&
o
.
length
&&
k
(
o
).
remove
(),
k
.
merge
([],
i
.
childNodes
)));
var
r
,
i
,
o
},
k
.
fn
.
load
=
function
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
=
this
,
s
=
e
.
indexOf
(
" "
);
return
-
1
<
s
&&
(
r
=
mt
(
e
.
slice
(
s
)),
e
=
e
.
slice
(
0
,
s
)),
m
(
t
)?(
n
=
t
,
t
=
void
0
):
t
&&
"object"
==
typeof
t
&&
(
i
=
"POST"
),
0
<
a
.
length
&&
k
.
ajax
({
url
:
e
,
type
:
i
||
"GET"
,
dataType
:
"html"
,
data
:
t
}).
done
(
function
(
e
){
o
=
arguments
,
a
.
html
(
r
?
k
(
"<div>"
).
append
(
k
.
parseHTML
(
e
)).
find
(
r
):
e
)}).
always
(
n
&&
function
(
e
,
t
){
a
.
each
(
function
(){
n
.
apply
(
this
,
o
||
[
e
.
responseText
,
t
,
e
])})}),
this
},
k
.
each
([
"ajaxStart"
,
"ajaxStop"
,
"ajaxComplete"
,
"ajaxError"
,
"ajaxSuccess"
,
"ajaxSend"
],
function
(
e
,
t
){
k
.
fn
[
t
]
=
function
(
e
){
return
this
.
on
(
t
,
e
)}}),
k
.
expr
.
pseudos
.
animated
=
function
(
t
){
return
k
.
grep
(
k
.
timers
,
function
(
e
){
return
t
===
e
.
elem
}).
length
},
k
.
offset
=
{
setOffset
:
function
(
e
,
t
,
n
){
var
r
,
i
,
o
,
a
,
s
,
u
,
l
=
k
.
css
(
e
,
"position"
),
c
=
k
(
e
),
f
=
{};
"static"
===
l
&&
(
e
.
style
.
position
=
"relative"
),
s
=
c
.
offset
(),
o
=
k
.
css
(
e
,
"top"
),
u
=
k
.
css
(
e
,
"left"
),(
"absolute"
===
l
||
"fixed"
===
l
)
&&-
1
<
(
o
+
u
).
indexOf
(
"auto"
)?(
a
=
(
r
=
c
.
position
()).
top
,
i
=
r
.
left
):(
a
=
parseFloat
(
o
)
||
0
,
i
=
parseFloat
(
u
)
||
0
),
m
(
t
)
&&
(
t
=
t
.
call
(
e
,
n
,
k
.
extend
({},
s
))),
null
!=
t
.
top
&&
(
f
.
top
=
t
.
top
-
s
.
top
+
a
),
null
!=
t
.
left
&&
(
f
.
left
=
t
.
left
-
s
.
left
+
i
),
"using"
in
t
?
t
.
using
.
call
(
e
,
f
):
c
.
css
(
f
)}},
k
.
fn
.
extend
({
offset
:
function
(
t
){
if
(
arguments
.
length
)
return
void
0
===
t
?
this
:
this
.
each
(
function
(
e
){
k
.
offset
.
setOffset
(
this
,
t
,
e
)});
var
e
,
n
,
r
=
this
[
0
];
return
r
?
r
.
getClientRects
().
length
?(
e
=
r
.
getBoundingClientRect
(),
n
=
r
.
ownerDocument
.
defaultView
,{
top
:
e
.
top
+
n
.
pageYOffset
,
left
:
e
.
left
+
n
.
pageXOffset
}):{
top
:
0
,
left
:
0
}:
void
0
},
position
:
function
(){
if
(
this
[
0
]){
var
e
,
t
,
n
,
r
=
this
[
0
],
i
=
{
top
:
0
,
left
:
0
};
if
(
"fixed"
===
k
.
css
(
r
,
"position"
))
t
=
r
.
getBoundingClientRect
();
else
{
t
=
this
.
offset
(),
n
=
r
.
ownerDocument
,
e
=
r
.
offsetParent
||
n
.
documentElement
;
while
(
e
&&
(
e
===
n
.
body
||
e
===
n
.
documentElement
)
&&
"static"
===
k
.
css
(
e
,
"position"
))
e
=
e
.
parentNode
;
e
&&
e
!==
r
&&
1
===
e
.
nodeType
&&
((
i
=
k
(
e
).
offset
()).
top
+=
k
.
css
(
e
,
"borderTopWidth"
,
!
0
),
i
.
left
+=
k
.
css
(
e
,
"borderLeftWidth"
,
!
0
))}
return
{
top
:
t
.
top
-
i
.
top
-
k
.
css
(
r
,
"marginTop"
,
!
0
),
left
:
t
.
left
-
i
.
left
-
k
.
css
(
r
,
"marginLeft"
,
!
0
)}}},
offsetParent
:
function
(){
return
this
.
map
(
function
(){
var
e
=
this
.
offsetParent
;
while
(
e
&&
"static"
===
k
.
css
(
e
,
"position"
))
e
=
e
.
offsetParent
;
return
e
||
ie
})}}),
k
.
each
({
scrollLeft
:
"pageXOffset"
,
scrollTop
:
"pageYOffset"
},
function
(
t
,
i
){
var
o
=
"pageYOffset"
===
i
;
k
.
fn
[
t
]
=
function
(
e
){
return
_
(
this
,
function
(
e
,
t
,
n
){
var
r
;
if
(
x
(
e
)?
r
=
e
:
9
===
e
.
nodeType
&&
(
r
=
e
.
defaultView
),
void
0
===
n
)
return
r
?
r
[
i
]:
e
[
t
];
r
?
r
.
scrollTo
(
o
?
r
.
pageXOffset
:
n
,
o
?
n
:
r
.
pageYOffset
):
e
[
t
]
=
n
},
t
,
e
,
arguments
.
length
)}}),
k
.
each
([
"top"
,
"left"
],
function
(
e
,
n
){
k
.
cssHooks
[
n
]
=
ze
(
y
.
pixelPosition
,
function
(
e
,
t
){
if
(
t
)
return
t
=
_e
(
e
,
n
),
$e
.
test
(
t
)?
k
(
e
).
position
()[
n
]
+
"px"
:
t
})}),
k
.
each
({
Height
:
"height"
,
Width
:
"width"
},
function
(
a
,
s
){
k
.
each
({
padding
:
"inner"
+
a
,
content
:
s
,
""
:
"outer"
+
a
},
function
(
r
,
o
){
k
.
fn
[
o
]
=
function
(
e
,
t
){
var
n
=
arguments
.
length
&&
(
r
||
"boolean"
!=
typeof
e
),
i
=
r
||
(
!
0
===
e
||!
0
===
t
?
"margin"
:
"border"
);
return
_
(
this
,
function
(
e
,
t
,
n
){
var
r
;
return
x
(
e
)?
0
===
o
.
indexOf
(
"outer"
)?
e
[
"inner"
+
a
]:
e
.
document
.
documentElement
[
"client"
+
a
]:
9
===
e
.
nodeType
?(
r
=
e
.
documentElement
,
Math
.
max
(
e
.
body
[
"scroll"
+
a
],
r
[
"scroll"
+
a
],
e
.
body
[
"offset"
+
a
],
r
[
"offset"
+
a
],
r
[
"client"
+
a
])):
void
0
===
n
?
k
.
css
(
e
,
t
,
i
):
k
.
style
(
e
,
t
,
n
,
i
)},
s
,
n
?
e
:
void
0
,
n
)}})}),
k
.
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
(
e
,
n
){
k
.
fn
[
n
]
=
function
(
e
,
t
){
return
0
<
arguments
.
length
?
this
.
on
(
n
,
null
,
e
,
t
):
this
.
trigger
(
n
)}}),
k
.
fn
.
extend
({
hover
:
function
(
e
,
t
){
return
this
.
mouseenter
(
e
).
mouseleave
(
t
||
e
)}}),
k
.
fn
.
extend
({
bind
:
function
(
e
,
t
,
n
){
return
this
.
on
(
e
,
null
,
t
,
n
)},
unbind
:
function
(
e
,
t
){
return
this
.
off
(
e
,
null
,
t
)},
delegate
:
function
(
e
,
t
,
n
,
r
){
return
this
.
on
(
t
,
e
,
n
,
r
)},
undelegate
:
function
(
e
,
t
,
n
){
return
1
===
arguments
.
length
?
this
.
off
(
e
,
"**"
):
this
.
off
(
t
,
e
||
"**"
,
n
)}}),
k
.
proxy
=
function
(
e
,
t
){
var
n
,
r
,
i
;
if
(
"string"
==
typeof
t
&&
(
n
=
e
[
t
],
t
=
e
,
e
=
n
),
m
(
e
))
return
r
=
s
.
call
(
arguments
,
2
),(
i
=
function
(){
return
e
.
apply
(
t
||
this
,
r
.
concat
(
s
.
call
(
arguments
)))}).
guid
=
e
.
guid
=
e
.
guid
||
k
.
guid
++
,
i
},
k
.
holdReady
=
function
(
e
){
e
?
k
.
readyWait
++
:
k
.
ready
(
!
0
)},
k
.
isArray
=
Array
.
isArray
,
k
.
parseJSON
=
JSON
.
parse
,
k
.
nodeName
=
A
,
k
.
isFunction
=
m
,
k
.
isWindow
=
x
,
k
.
camelCase
=
V
,
k
.
type
=
w
,
k
.
now
=
Date
.
now
,
k
.
isNumeric
=
function
(
e
){
var
t
=
k
.
type
(
e
);
return
(
"number"
===
t
||
"string"
===
t
)
&&!
isNaN
(
e
-
parseFloat
(
e
))},
"function"
==
typeof
define
&&
define
.
amd
&&
define
(
"jquery"
,[],
function
(){
return
k
});
var
Qt
=
C
.
jQuery
,
Jt
=
C
.
$
;
return
k
.
noConflict
=
function
(
e
){
return
C
.
$
===
k
&&
(
C
.
$
=
Jt
),
e
&&
C
.
jQuery
===
k
&&
(
C
.
jQuery
=
Qt
),
k
},
e
||
(
C
.
jQuery
=
C
.
$
=
k
),
k
});
\ No newline at end of file
src/main/resources/templates/view/dashbord.html
0 → 100644
View file @
b86ba305
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"utf-8"
>
<title>
数据质量管理仪表盘
</title>
<!-- 引入 echarts.js -->
<script
src=
"/templates/static/js/jquery-3.1.1.min.js"
></script>
<script
src=
"/templates/static/js/echarts.min.js"
></script>
</head>
<style
type=
"text/css"
>
.table
{
width
:
100%
;
margin
:
auto
;
}
.tableCenter
{
text-align
:
center
;
}
</style>
<body>
<br>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div
id=
"volatility"
style=
"width: 100%; height: 300px;"
></div>
<script
th:inline=
"javascript"
>
var
volatilityLegendData
=
[[
$
{
volatilityLegendData
}]];
var
volatilitySeriesData
=
[[
$
{
volatilitySeriesData
}]];
// 基于准备好的dom,初始化echarts实例
var
myChart
=
echarts
.
init
(
document
.
getElementById
(
'volatility'
));
// 指定图表的配置项和数据
var
option
=
{
title
:
{
text
:
'波动性校验趋势图:'
},
tooltip
:
{},
legend
:
{
data
:
[
'汇总值'
]
},
xAxis
:
{
data
:
volatilityLegendData
},
yAxis
:
{},
series
:
[
{
name
:
'汇总值'
,
type
:
'line'
,
//bar
data
:
volatilitySeriesData
}
]
};
// 使用刚指定的配置项和数据显示图表。
myChart
.
setOption
(
option
);
</script>
<br>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div
id=
"special"
style=
"width: 100%; height: 300px;"
></div>
<script
th:inline=
"javascript"
>
var
specialLegendData
=
[[
$
{
specialLegendData
}]];
var
specialSeriesData
=
[[
$
{
specialSeriesData
}]];
// 基于准备好的dom,初始化echarts实例
var
myChart
=
echarts
.
init
(
document
.
getElementById
(
'special'
));
// 指定图表的配置项和数据
var
option
=
{
title
:
{
text
:
'特殊性校验趋势图:'
},
tooltip
:
{},
legend
:
{
data
:
[
'汇总值'
]
},
xAxis
:
{
data
:
specialLegendData
},
yAxis
:
{},
series
:
[
{
name
:
'汇总值'
,
type
:
'line'
,
//bar
data
:
specialSeriesData
}
]
};
// 使用刚指定的配置项和数据显示图表。
myChart
.
setOption
(
option
);
</script>
<h3>
数据质量预警信息列表:
</h3>
<br>
<div
class=
"tableCenter"
style=
"text-align: center"
>
<table
class=
"table"
style=
"table-layout: fixed;"
border=
"1"
>
<tr>
<th>
序号
</th>
<th>
校验类型
</th>
<th>
数据库名
</th>
<th>
数据表名
</th>
<th>
数据列名
</th>
<th>
数据总数
</th>
<th>
有效总数
</th>
<th>
有效比率
</th>
<th>
分区时间
</th>
<th>
管理ID
</th>
<th>
创建时间
</th>
</tr>
<tr
th:each=
"thresholdExceedAll,thresholdExceedAllState : ${thresholdExceedAllList}"
>
<th
th:text=
"${thresholdExceedAll.id}"
></th>
<th
th:text=
"${thresholdExceedAll.checkType}"
></th>
<td
th:text=
"${thresholdExceedAll.dbName}"
></td>
<td
th:text=
"${thresholdExceedAll.tbName}"
></td>
<th
th:text=
"${thresholdExceedAll.colName}"
></th>
<th
th:text=
"${thresholdExceedAll.allNum}"
></th>
<th
th:text=
"${thresholdExceedAll.checkNum}"
></th>
<th
th:text=
"${thresholdExceedAll.checkRate}"
></th>
<th
th:text=
"${thresholdExceedAll.partitionDate}"
></th>
<th
th:text=
"${thresholdExceedAll.sqlId}"
></th>
<th
th:text=
"${thresholdExceedAll.createTime}"
></th>
</tr>
</table>
</div>
</body>
</html>
src/main/resources/templates/view/manage.html
0 → 100644
View file @
b86ba305
<!DOCTYPE html>
<html
xmlns:th=
"http://www.thymeleaf.org"
>
<head>
<title>
数据质量管理平台
</title>
</head>
<style
type=
"text/css"
>
.table
{
width
:
100%
;
margin
:
auto
;
}
.tableCenter
{
text-align
:
center
;
}
</style>
<body>
<div
style=
"text-align: center"
>
<h2>
数据质量规则导入
</h2>
<form
action=
"/excel/importUnique"
method=
"post"
enctype=
"multipart/form-data"
>
<input
type=
"file"
name=
"file"
></input>
<button
type=
"submit"
>
唯一性质量规则上传
</button>
</form>
<form
action=
"/excel/importUnblank"
method=
"post"
enctype=
"multipart/form-data"
>
<input
type=
"file"
name=
"file"
></input>
<button
type=
"submit"
>
非空性质量规则上传
</button>
</form>
<form
action=
"/excel/importRefer"
method=
"post"
enctype=
"multipart/form-data"
>
<input
type=
"file"
name=
"file"
></input>
<button
type=
"submit"
>
参照性质量规则上传
</button>
</form>
<form
action=
"/excel/importVolatility"
method=
"post"
enctype=
"multipart/form-data"
>
<input
type=
"file"
name=
"file"
></input>
<button
type=
"submit"
>
波动性质量规则上传
</button>
</form>
<form
action=
"/excel/importSpecial"
method=
"post"
enctype=
"multipart/form-data"
>
<input
type=
"file"
name=
"file"
></input>
<button
type=
"submit"
>
特殊性质量规则上传
</button>
</form>
<hr></hr>
<h2>
数据质量规则列表查询
</h2>
<h3>
唯一性校验规则列表
</h3>
<div
class=
"tableCenter"
>
<table
class=
"table"
style=
"table-layout: fixed;"
border=
"1"
>
<tr>
<th>
序号
</th>
<th>
数据库名
</th>
<th>
数据表名
</th>
<th>
数据列名
</th>
<th>
过滤条件
</th>
<th>
预警阈值
</th>
<th>
当前状态
</th>
<th>
校验时间
</th>
<th>
备注
</th>
<th>
操作
</th>
</tr>
<tr
th:each=
"dqRule,dqRuleStat : ${uniqueList}"
>
<!-- <th th:text="${dqRuleStat.index}"></th> -->
<th
th:text=
"${dqRule.id}"
></th>
<td
th:text=
"${dqRule.dbName}"
></td>
<td
th:text=
"${dqRule.tbName}"
></td>
<th
th:text=
"${dqRule.colName}"
></th>
<th
th:text=
"${dqRule.filters}"
></th>
<th
th:text=
"${dqRule.threshold}"
></th>
<th
th:text=
"${dqRule.status}"
></th>
<th
th:text=
"${dqRule.checkTime}"
></th>
<th
th:text=
"${dqRule.comment}"
></th>
<td><a
th:href=
"@{/dqRule/del(id=${dqRule.id},checkType=${dqRule.checkType})}"
>
删除
</a></td>
</tr>
</table>
</div>
<h3>
非空性校验规则列表
</h3>
<div
class=
"tableCenter"
>
<table
class=
"table"
style=
"table-layout: fixed;"
border=
"1"
>
<tr>
<th>
序号
</th>
<th>
数据库名
</th>
<th>
数据表名
</th>
<th>
数据列名
</th>
<th>
过滤条件
</th>
<th>
预警阈值
</th>
<th>
当前状态
</th>
<th>
校验时间
</th>
<th>
备注
</th>
<th>
操作
</th>
</tr>
<tr
th:each=
"dqRule,dqRuleStat : ${unblankList}"
>
<!-- <th th:text="${dqRuleStat.index}"></th> -->
<th
th:text=
"${dqRule.id}"
></th>
<td
th:text=
"${dqRule.dbName}"
></td>
<td
th:text=
"${dqRule.tbName}"
></td>
<th
th:text=
"${dqRule.colName}"
></th>
<th
th:text=
"${dqRule.filters}"
></th>
<th
th:text=
"${dqRule.threshold}"
></th>
<th
th:text=
"${dqRule.status}"
></th>
<th
th:text=
"${dqRule.checkTime}"
></th>
<th
th:text=
"${dqRule.comment}"
></th>
<td><a
th:href=
"@{/dqRule/del(id=${dqRule.id},checkType=${dqRule.checkType})}"
>
删除
</a></td>
</tr>
</table>
</div>
<h3>
参照性校验规则列表
</h3>
<div
class=
"tableCenter"
>
<table
class=
"table"
style=
"table-layout: fixed;"
border=
"1"
>
<tr>
<th>
序号
</th>
<th>
校验数据库名
</th>
<th>
校验数据表名
</th>
<th>
校验数据列名
</th>
<th>
校验过滤条件
</th>
<th>
参照数据库名
</th>
<th>
参照数据表名
</th>
<th>
参照数据列名
</th>
<th>
参照过滤条件
</th>
<th>
预警阈值
</th>
<th>
当前状态
</th>
<th>
校验时间
</th>
<th>
备注
</th>
<th>
操作
</th>
</tr>
<tr
th:each=
"dqRule,dqRuleStat : ${referList}"
>
<!-- <th th:text="${dqRuleStat.index}"></th> -->
<th
th:text=
"${dqRule.id}"
></th>
<td
th:text=
"${dqRule.checkDbName}"
></td>
<td
th:text=
"${dqRule.checkTbName}"
></td>
<th
th:text=
"${dqRule.checkColName}"
></th>
<th
th:text=
"${dqRule.checkFilters}"
></th>
<td
th:text=
"${dqRule.referDbName}"
></td>
<td
th:text=
"${dqRule.referTbName}"
></td>
<th
th:text=
"${dqRule.referColName}"
></th>
<th
th:text=
"${dqRule.referFilters}"
></th>
<th
th:text=
"${dqRule.threshold}"
></th>
<th
th:text=
"${dqRule.status}"
></th>
<th
th:text=
"${dqRule.checkTime}"
></th>
<th
th:text=
"${dqRule.comment}"
></th>
<td><a
th:href=
"@{/dqRule/del(id=${dqRule.id},checkType=${dqRule.checkType})}"
>
删除
</a></td>
</tr>
</table>
</div>
<h3>
波动性校验规则列表
</h3>
<div
class=
"tableCenter"
>
<table
class=
"table"
style=
"table-layout: fixed;"
border=
"1"
>
<tr>
<th>
序号
</th>
<th>
数据库名
</th>
<th>
数据表名
</th>
<th>
数据列名
</th>
<th>
指标类型
</th>
<th>
过滤条件
</th>
<th>
预警阈值
</th>
<th>
当前状态
</th>
<th>
校验时间
</th>
<th>
备注
</th>
<th>
操作
</th>
</tr>
<tr
th:each=
"dqRule,dqRuleStat : ${volatilityList}"
>
<!-- <th th:text="${dqRuleStat.index}"></th> -->
<th
th:text=
"${dqRule.id}"
></th>
<td
th:text=
"${dqRule.dbName}"
></td>
<td
th:text=
"${dqRule.tbName}"
></td>
<th
th:text=
"${dqRule.colName}"
></th>
<th
th:text=
"${dqRule.indicatorType}"
></th>
<th
th:text=
"${dqRule.filters}"
></th>
<th
th:text=
"${dqRule.threshold}"
></th>
<th
th:text=
"${dqRule.status}"
></th>
<th
th:text=
"${dqRule.checkTime}"
></th>
<th
th:text=
"${dqRule.comment}"
></th>
<td><a
th:href=
"@{/dqRule/del(id=${dqRule.id},checkType=${dqRule.checkType})}"
>
删除
</a></td>
</tr>
</table>
</div>
<h3>
特殊性校验规则列表
</h3>
<div
class=
"tableCenter"
>
<table
class=
"table"
style=
"table-layout: fixed;"
border=
"1"
>
<tr>
<th>
序号
</th>
<th>
数据库名
</th>
<th>
数据表名
</th>
<th>
数据列名
</th>
<th>
数据时间列名
</th>
<th>
指标类型
</th>
<th>
数据校验起始时间
</th>
<th>
过滤条件
</th>
<th>
预警阈值
</th>
<th>
当前状态
</th>
<th>
校验时间
</th>
<th>
备注
</th>
<th>
操作
</th>
</tr>
<tr
th:each=
"dqRule,dqRuleStat : ${specialList}"
>
<!-- <th th:text="${dqRuleStat.index}"></th> -->
<th
th:text=
"${dqRule.id}"
></th>
<td
th:text=
"${dqRule.dbName}"
></td>
<td
th:text=
"${dqRule.tbName}"
></td>
<th
th:text=
"${dqRule.colName}"
></th>
<th
th:text=
"${dqRule.timeColName}"
></th>
<th
th:text=
"${dqRule.indicatorType}"
></th>
<th
th:text=
"${dqRule.startTime}"
></th>
<th
th:text=
"${dqRule.filters}"
></th>
<th
th:text=
"${dqRule.threshold}"
></th>
<th
th:text=
"${dqRule.status}"
></th>
<th
th:text=
"${dqRule.checkTime}"
></th>
<th
th:text=
"${dqRule.comment}"
></th>
<td><a
th:href=
"@{/dqRule/del(id=${dqRule.id},checkType=${dqRule.checkType})}"
>
删除
</a></td>
</tr>
</table>
</div>
<hr></hr>
</div>
</body>
</html>
src/main/resources/templates/result.html
→
src/main/resources/templates/
view/
result.html
View file @
b86ba305
File moved
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment