From 7fd84db5da088c7a56b57ec0ca24161afbbb5989 Mon Sep 17 00:00:00 2001
From: chevereto
Date: Sat, 28 Jun 2025 21:04:45 +0000
Subject: [PATCH] Automatic push 4.3.6
---
.package/4.3.5.txt | 12 --
.package/4.3.6.txt | 6 +
README.md | 2 +-
app/composer.lock | 147 ++++++++----------
app/legacy/install/installer.php | 6 +
app/legacy/load/app.php | 2 +-
.../Peafowl/custom_hooks/footer.sample.php | 2 +-
.../custom_hooks/head_after.sample.php | 2 +-
.../Peafowl/custom_hooks/head_open.sample.php | 2 +-
.../Peafowl/custom_hooks/header.sample.php | 2 +-
.../themes/Peafowl/lib/chevereto-all.js | 2 +-
.../themes/Peafowl/lib/chevereto-all.min.js | 2 +-
.../legacy/themes/Peafowl/lib/js/chevereto.js | 2 +-
13 files changed, 88 insertions(+), 101 deletions(-)
delete mode 100644 .package/4.3.5.txt
create mode 100644 .package/4.3.6.txt
diff --git a/.package/4.3.5.txt b/.package/4.3.5.txt
deleted file mode 100644
index a6b4b7b..0000000
--- a/.package/4.3.5.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-Chevereto 4.3.5 (2025-05-30)
-
-- Added favicon customization for Chevereto Lite edition
-- Added image watermark feature to Chevereto Lite edition
-- Added storage tools as baseline feature
-- Added support for floating point numbers in maximum upload size configuration
-- Fixed bug affecting URL upload functionality
-- Fixed bug in anywhere upload not populating album list
-- Fixed bug in Chevereto Lite missing Queue class
-- Fixed bug in installer when reading existing database
-- Fixed bug in root album list showing nested albums
-- Fixed bug with missing cache invalidation on album editing
\ No newline at end of file
diff --git a/.package/4.3.6.txt b/.package/4.3.6.txt
new file mode 100644
index 0000000..255c821
--- /dev/null
+++ b/.package/4.3.6.txt
@@ -0,0 +1,6 @@
+Chevereto 4.3.6 (2025-06-28)
+
+- Fixed bug affecting upgrades from 4.1.*
+- Resolved issue with release notes display
+- Updated README for the free edition
+- Corrected typos in custom_hooks sample files
diff --git a/README.md b/README.md
index d231609..e02f65c 100644
--- a/README.md
+++ b/README.md
@@ -102,7 +102,7 @@ The commercial license allows you to use Chevereto in commercial products and ap
### Compare licenses
-Chevereto Free edition is licensed under the AGPLv3 free software license, allowing use as long as you comply with its terms. If you modify and distribute the software, you are required to provide the source code to your end users. Please note that uUnder the AGPLv3, **making the software available over a network is considered distribution**, and you **must provide the source code** to users who interact with it remotely.
+Chevereto Free edition is licensed under the AGPLv3 free software license, allowing use as long as you comply with its terms. If you modify and distribute the software, you are required to provide the source code to your end users. Please note that under the AGPLv3, **making the software available over a network is considered distribution**, and you **must provide the source code** to users who interact with it remotely.
Both **Chevereto Lite** and **Chevereto Pro** are distributed under the proprietary **Chevereto License**, which is not subject to the restrictions imposed by the AGPLv3 license.
diff --git a/app/composer.lock b/app/composer.lock
index d8fb03c..c4f6214 100644
--- a/app/composer.lock
+++ b/app/composer.lock
@@ -168,16 +168,16 @@
},
{
"name": "amphp/parallel",
- "version": "v1.4.3",
+ "version": "v1.4.4",
"source": {
"type": "git",
"url": "https://github.com/amphp/parallel.git",
- "reference": "3aac213ba7858566fd83d38ccb85b91b2d652cb0"
+ "reference": "508ca221f2f47235327db5120f0a89d43435b69b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/amphp/parallel/zipball/3aac213ba7858566fd83d38ccb85b91b2d652cb0",
- "reference": "3aac213ba7858566fd83d38ccb85b91b2d652cb0",
+ "url": "https://api.github.com/repos/amphp/parallel/zipball/508ca221f2f47235327db5120f0a89d43435b69b",
+ "reference": "508ca221f2f47235327db5120f0a89d43435b69b",
"shasum": ""
},
"require": {
@@ -190,9 +190,9 @@
"php": ">=7.1"
},
"require-dev": {
- "amphp/php-cs-fixer-config": "dev-master",
+ "amphp/php-cs-fixer-config": "^2",
"amphp/phpunit-util": "^1.1",
- "phpunit/phpunit": "^8 || ^7"
+ "phpunit/phpunit": "^9 || ^8 || ^7"
},
"type": "library",
"autoload": {
@@ -230,7 +230,7 @@
],
"support": {
"issues": "https://github.com/amphp/parallel/issues",
- "source": "https://github.com/amphp/parallel/tree/v1.4.3"
+ "source": "https://github.com/amphp/parallel/tree/v1.4.4"
},
"funding": [
{
@@ -238,7 +238,7 @@
"type": "github"
}
],
- "time": "2023-03-23T08:04:23+00:00"
+ "time": "2024-12-08T16:28:11+00:00"
},
{
"name": "amphp/parser",
@@ -495,16 +495,16 @@
},
{
"name": "brick/math",
- "version": "0.12.3",
+ "version": "0.13.1",
"source": {
"type": "git",
"url": "https://github.com/brick/math.git",
- "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba"
+ "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/brick/math/zipball/866551da34e9a618e64a819ee1e01c20d8a588ba",
- "reference": "866551da34e9a618e64a819ee1e01c20d8a588ba",
+ "url": "https://api.github.com/repos/brick/math/zipball/fc7ed316430118cc7836bf45faff18d5dfc8de04",
+ "reference": "fc7ed316430118cc7836bf45faff18d5dfc8de04",
"shasum": ""
},
"require": {
@@ -543,7 +543,7 @@
],
"support": {
"issues": "https://github.com/brick/math/issues",
- "source": "https://github.com/brick/math/tree/0.12.3"
+ "source": "https://github.com/brick/math/tree/0.13.1"
},
"funding": [
{
@@ -551,7 +551,7 @@
"type": "github"
}
],
- "time": "2025-02-28T13:11:00+00:00"
+ "time": "2025-03-29T13:50:30+00:00"
},
{
"name": "chevere/action",
@@ -653,6 +653,7 @@
"issues": "https://github.com/chevere/cache/issues",
"source": "https://github.com/chevere/cache/tree/0.5.0"
},
+ "abandoned": true,
"time": "2024-05-25T22:05:13+00:00"
},
{
@@ -870,16 +871,16 @@
},
{
"name": "chevere/parameter",
- "version": "1.1.1",
+ "version": "1.1.2",
"source": {
"type": "git",
"url": "https://github.com/chevere/parameter.git",
- "reference": "4914eaac8f5bce3c01e317528d705db65bb17955"
+ "reference": "acb25103a989cc3648655c0700b69c3bb7bd3365"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/chevere/parameter/zipball/4914eaac8f5bce3c01e317528d705db65bb17955",
- "reference": "4914eaac8f5bce3c01e317528d705db65bb17955",
+ "url": "https://api.github.com/repos/chevere/parameter/zipball/acb25103a989cc3648655c0700b69c3bb7bd3365",
+ "reference": "acb25103a989cc3648655c0700b69c3bb7bd3365",
"shasum": ""
},
"require": {
@@ -923,9 +924,9 @@
"homepage": "https://chevere.org",
"support": {
"issues": "https://github.com/chevere/parameter/issues",
- "source": "https://github.com/chevere/parameter/tree/1.1.1"
+ "source": "https://github.com/chevere/parameter/tree/1.1.2"
},
- "time": "2025-02-20T15:27:01+00:00"
+ "time": "2025-06-19T22:39:05+00:00"
},
{
"name": "chevere/regex",
@@ -3210,16 +3211,16 @@
},
{
"name": "phpseclib/phpseclib",
- "version": "3.0.43",
+ "version": "3.0.45",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
- "reference": "709ec107af3cb2f385b9617be72af8cf62441d02"
+ "reference": "bd81b90d5963c6b9d87de50357585375223f4dd8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/709ec107af3cb2f385b9617be72af8cf62441d02",
- "reference": "709ec107af3cb2f385b9617be72af8cf62441d02",
+ "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/bd81b90d5963c6b9d87de50357585375223f4dd8",
+ "reference": "bd81b90d5963c6b9d87de50357585375223f4dd8",
"shasum": ""
},
"require": {
@@ -3300,7 +3301,7 @@
],
"support": {
"issues": "https://github.com/phpseclib/phpseclib/issues",
- "source": "https://github.com/phpseclib/phpseclib/tree/3.0.43"
+ "source": "https://github.com/phpseclib/phpseclib/tree/3.0.45"
},
"funding": [
{
@@ -3316,7 +3317,7 @@
"type": "tidelift"
}
],
- "time": "2024-12-14T21:12:59+00:00"
+ "time": "2025-06-22T22:54:43+00:00"
},
{
"name": "pragmarx/google2fa",
@@ -4063,21 +4064,20 @@
},
{
"name": "ramsey/uuid",
- "version": "4.7.6",
+ "version": "4.9.0",
"source": {
"type": "git",
"url": "https://github.com/ramsey/uuid.git",
- "reference": "91039bc1faa45ba123c4328958e620d382ec7088"
+ "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/ramsey/uuid/zipball/91039bc1faa45ba123c4328958e620d382ec7088",
- "reference": "91039bc1faa45ba123c4328958e620d382ec7088",
+ "url": "https://api.github.com/repos/ramsey/uuid/zipball/4e0e23cc785f0724a0e838279a9eb03f28b092a0",
+ "reference": "4e0e23cc785f0724a0e838279a9eb03f28b092a0",
"shasum": ""
},
"require": {
- "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12",
- "ext-json": "*",
+ "brick/math": "^0.8.8 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13",
"php": "^8.0",
"ramsey/collection": "^1.2 || ^2.0"
},
@@ -4085,26 +4085,23 @@
"rhumsaa/uuid": "self.version"
},
"require-dev": {
- "captainhook/captainhook": "^5.10",
+ "captainhook/captainhook": "^5.25",
"captainhook/plugin-composer": "^5.3",
- "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0",
- "doctrine/annotations": "^1.8",
- "ergebnis/composer-normalize": "^2.15",
- "mockery/mockery": "^1.3",
+ "dealerdirect/phpcodesniffer-composer-installer": "^1.0",
+ "ergebnis/composer-normalize": "^2.47",
+ "mockery/mockery": "^1.6",
"paragonie/random-lib": "^2",
- "php-mock/php-mock": "^2.2",
- "php-mock/php-mock-mockery": "^1.3",
- "php-parallel-lint/php-parallel-lint": "^1.1",
- "phpbench/phpbench": "^1.0",
- "phpstan/extension-installer": "^1.1",
- "phpstan/phpstan": "^1.8",
- "phpstan/phpstan-mockery": "^1.1",
- "phpstan/phpstan-phpunit": "^1.1",
- "phpunit/phpunit": "^8.5 || ^9",
- "ramsey/composer-repl": "^1.4",
- "slevomat/coding-standard": "^8.4",
- "squizlabs/php_codesniffer": "^3.5",
- "vimeo/psalm": "^4.9"
+ "php-mock/php-mock": "^2.6",
+ "php-mock/php-mock-mockery": "^1.5",
+ "php-parallel-lint/php-parallel-lint": "^1.4.0",
+ "phpbench/phpbench": "^1.2.14",
+ "phpstan/extension-installer": "^1.4",
+ "phpstan/phpstan": "^2.1",
+ "phpstan/phpstan-mockery": "^2.0",
+ "phpstan/phpstan-phpunit": "^2.0",
+ "phpunit/phpunit": "^9.6",
+ "slevomat/coding-standard": "^8.18",
+ "squizlabs/php_codesniffer": "^3.13"
},
"suggest": {
"ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.",
@@ -4139,19 +4136,9 @@
],
"support": {
"issues": "https://github.com/ramsey/uuid/issues",
- "source": "https://github.com/ramsey/uuid/tree/4.7.6"
+ "source": "https://github.com/ramsey/uuid/tree/4.9.0"
},
- "funding": [
- {
- "url": "https://github.com/ramsey",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid",
- "type": "tidelift"
- }
- ],
- "time": "2024-04-27T21:32:50+00:00"
+ "time": "2025-06-25T14:20:11+00:00"
},
{
"name": "react/cache",
@@ -5106,16 +5093,16 @@
},
{
"name": "symfony/console",
- "version": "v6.4.22",
+ "version": "v6.4.23",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3"
+ "reference": "9056771b8eca08d026cd3280deeec3cfd99c4d93"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3",
- "reference": "7d29659bc3c9d8e9a34e2c3414ef9e9e003e6cf3",
+ "url": "https://api.github.com/repos/symfony/console/zipball/9056771b8eca08d026cd3280deeec3cfd99c4d93",
+ "reference": "9056771b8eca08d026cd3280deeec3cfd99c4d93",
"shasum": ""
},
"require": {
@@ -5180,7 +5167,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v6.4.22"
+ "source": "https://github.com/symfony/console/tree/v6.4.23"
},
"funding": [
{
@@ -5196,7 +5183,7 @@
"type": "tidelift"
}
],
- "time": "2025-05-07T07:05:04+00:00"
+ "time": "2025-06-27T19:37:22+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -5972,16 +5959,16 @@
},
{
"name": "symfony/var-dumper",
- "version": "v6.4.21",
+ "version": "v6.4.23",
"source": {
"type": "git",
"url": "https://github.com/symfony/var-dumper.git",
- "reference": "22560f80c0c5cd58cc0bcaf73455ffd81eb380d5"
+ "reference": "d55b1834cdbfcc31bc2cd7e095ba5ed9a88f6600"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/var-dumper/zipball/22560f80c0c5cd58cc0bcaf73455ffd81eb380d5",
- "reference": "22560f80c0c5cd58cc0bcaf73455ffd81eb380d5",
+ "url": "https://api.github.com/repos/symfony/var-dumper/zipball/d55b1834cdbfcc31bc2cd7e095ba5ed9a88f6600",
+ "reference": "d55b1834cdbfcc31bc2cd7e095ba5ed9a88f6600",
"shasum": ""
},
"require": {
@@ -6037,7 +6024,7 @@
"dump"
],
"support": {
- "source": "https://github.com/symfony/var-dumper/tree/v6.4.21"
+ "source": "https://github.com/symfony/var-dumper/tree/v6.4.23"
},
"funding": [
{
@@ -6053,7 +6040,7 @@
"type": "tidelift"
}
],
- "time": "2025-04-09T07:34:50+00:00"
+ "time": "2025-06-27T15:05:27+00:00"
},
{
"name": "symfony/var-exporter",
@@ -6134,16 +6121,16 @@
},
{
"name": "symfony/yaml",
- "version": "v6.4.21",
+ "version": "v6.4.23",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
- "reference": "f01987f45676778b474468aa266fe2eda1f2bc7e"
+ "reference": "93e29e0deb5f1b2e360adfb389a20d25eb81a27b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/yaml/zipball/f01987f45676778b474468aa266fe2eda1f2bc7e",
- "reference": "f01987f45676778b474468aa266fe2eda1f2bc7e",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/93e29e0deb5f1b2e360adfb389a20d25eb81a27b",
+ "reference": "93e29e0deb5f1b2e360adfb389a20d25eb81a27b",
"shasum": ""
},
"require": {
@@ -6186,7 +6173,7 @@
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/yaml/tree/v6.4.21"
+ "source": "https://github.com/symfony/yaml/tree/v6.4.23"
},
"funding": [
{
@@ -6202,7 +6189,7 @@
"type": "tidelift"
}
],
- "time": "2025-04-04T09:48:44+00:00"
+ "time": "2025-06-03T06:46:12+00:00"
},
{
"name": "thecodingmachine/safe",
diff --git a/app/legacy/install/installer.php b/app/legacy/install/installer.php
index f84e939..9ae6277 100644
--- a/app/legacy/install/installer.php
+++ b/app/legacy/install/installer.php
@@ -653,6 +653,7 @@ $settings_updates = [
'4.3.3' => null,
'4.3.4' => null,
'4.3.5' => null,
+ '4.3.6' => null,
];
/**
@@ -1967,6 +1968,7 @@ if ($installed_version !== '' && empty($paramsCheck)) {
],
'4.2.0' => [
'users' => [
+ 'user_id' => $modifyIntUnsignedNotNullAutoIncrement,
'user_file_meta_tag_camera_model' => [
'op' => 'ADD',
'type' => 'TINYINT',
@@ -1994,6 +1996,7 @@ if ($installed_version !== '' && empty($paramsCheck)) {
],
],
'images' => [
+ 'image_id' => $modifyIntUnsignedNotNullAutoIncrement,
'image_type' => [
'op' => 'MODIFY',
'type' => 'TINYINT UNSIGNED',
@@ -2022,6 +2025,9 @@ if ($installed_version !== '' && empty($paramsCheck)) {
'prop' => "NOT NULL DEFAULT '0'",
],
],
+ 'albums' => [
+ 'album_id' => $modifyIntUnsignedNotNullAutoIncrement,
+ ],
'tags' => [],
'tags_files' => [],
'tags_users' => [],
diff --git a/app/legacy/load/app.php b/app/legacy/load/app.php
index 1a3c600..ef97634 100644
--- a/app/legacy/load/app.php
+++ b/app/legacy/load/app.php
@@ -9,5 +9,5 @@
* file that was distributed with this source code.
*/
-const APP_VERSION = '4.3.5';
+const APP_VERSION = '4.3.6';
const APP_VERSION_AKA = 'entrador';
diff --git a/content/legacy/themes/Peafowl/custom_hooks/footer.sample.php b/content/legacy/themes/Peafowl/custom_hooks/footer.sample.php
index 4883dac..9f1f705 100644
--- a/content/legacy/themes/Peafowl/custom_hooks/footer.sample.php
+++ b/content/legacy/themes/Peafowl/custom_hooks/footer.sample.php
@@ -5,4 +5,4 @@ if (!defined('ACCESS') || !ACCESS) {
die('This file cannot be directly accessed.');
}
?>
-
+
diff --git a/content/legacy/themes/Peafowl/custom_hooks/head_after.sample.php b/content/legacy/themes/Peafowl/custom_hooks/head_after.sample.php
index 927c98a..ff7f830 100644
--- a/content/legacy/themes/Peafowl/custom_hooks/head_after.sample.php
+++ b/content/legacy/themes/Peafowl/custom_hooks/head_after.sample.php
@@ -5,4 +5,4 @@ if (!defined('ACCESS') || !ACCESS) {
die('This file cannot be directly accessed.');
}
?>
-. See: app/themes/Peafowl/head.php */ ?>
+. See: content/legacy/themes/Peafowl/head.php */ ?>
diff --git a/content/legacy/themes/Peafowl/custom_hooks/head_open.sample.php b/content/legacy/themes/Peafowl/custom_hooks/head_open.sample.php
index e3cbea5..f8036b7 100644
--- a/content/legacy/themes/Peafowl/custom_hooks/head_open.sample.php
+++ b/content/legacy/themes/Peafowl/custom_hooks/head_open.sample.php
@@ -5,4 +5,4 @@ if (!defined('ACCESS') || !ACCESS) {
die('This file cannot be directly accessed.');
}
?>
-. See: app/themes/Peafowl/head.php */ ?>
+. See: content/legacy/themes/Peafowl/head.php */ ?>
diff --git a/content/legacy/themes/Peafowl/custom_hooks/header.sample.php b/content/legacy/themes/Peafowl/custom_hooks/header.sample.php
index 4883dac..c26b70a 100644
--- a/content/legacy/themes/Peafowl/custom_hooks/header.sample.php
+++ b/content/legacy/themes/Peafowl/custom_hooks/header.sample.php
@@ -5,4 +5,4 @@ if (!defined('ACCESS') || !ACCESS) {
die('This file cannot be directly accessed.');
}
?>
-
+
diff --git a/content/legacy/themes/Peafowl/lib/chevereto-all.js b/content/legacy/themes/Peafowl/lib/chevereto-all.js
index 7b1ccbd..a732a43 100644
--- a/content/legacy/themes/Peafowl/lib/chevereto-all.js
+++ b/content/legacy/themes/Peafowl/lib/chevereto-all.js
@@ -15809,7 +15809,7 @@ $(function () {
PF.fn._s("Check %s for a complete changelog since you last upgrade.", '' + CHV.obj.system_info.version + '') +
'
' +
'" +
'' +
PF.fn._s("Check the %s for alternative update methods.", '' + PF.fn._s('documentation') + '') +
diff --git a/content/legacy/themes/Peafowl/lib/chevereto-all.min.js b/content/legacy/themes/Peafowl/lib/chevereto-all.min.js
index 105f3f2..9298da2 100644
--- a/content/legacy/themes/Peafowl/lib/chevereto-all.min.js
+++ b/content/legacy/themes/Peafowl/lib/chevereto-all.min.js
@@ -1 +1 @@
-var BrowserDetect={init:function(){this.browser=this.searchString(this.dataBrowser),this.version=this.searchVersion(navigator.userAgent)||this.searchVersion(navigator.appVersion),this.shortversion=this.browser+this.version,this.OS=this.searchString(this.dataOS)},searchString:function(e){for(var t=0;t{"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(e.document)return t(e);throw new Error("jQuery requires a window with a document")}:t(e)})("undefined"!=typeof window?window:this,function(_,D){function O(e,t){return t.toUpperCase()}var u=[],p=_.document,d=u.slice,z=u.concat,N=u.push,M=u.indexOf,L={},R=L.toString,m=L.hasOwnProperty,g={},e="1.12.4",$=function(e,t){return new $.fn.init(e,t)},q=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,W=/^-ms-/,B=/-([\da-z])/gi;function U(e){var t=!!e&&"length"in e&&e.length,i=$.type(e);return"function"!==i&&!$.isWindow(e)&&("array"===i||0===t||"number"==typeof t&&0{function u(e,t,i){var n="0x"+t-65536;return n!=n||i?t:n<0?String.fromCharCode(65536+n):String.fromCharCode(n>>10|55296,1023&n|56320)}function O(){$()}var e,p,w,s,z,m,N,M,_,l,c,$,x,t,P,g,n,o,v,C="sizzle"+ +new Date,b=D.document,F=0,L=0,R=ce(),q=ce(),y=ce(),W=function(e,t){return e===t&&(c=!0),0},B={}.hasOwnProperty,i=[],U=i.pop,X=i.push,j=i.push,Y=i.slice,k=function(e,t){for(var i=0,n=e.length;i+~]|"+a+")"+a+"*"),te=new RegExp("="+a+"*([^\\]'\"]*?)"+a+"*\\]","g"),ie=new RegExp(K),ne=new RegExp("^"+r+"$"),h={ID:new RegExp("^#("+r+")"),CLASS:new RegExp("^\\.("+r+")"),TAG:new RegExp("^("+r+"|[*])"),ATTR:new RegExp("^"+J),PSEUDO:new RegExp("^"+K),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+a+"*(even|odd|(([+-]|)(\\d*)n|)"+a+"*(?:([+-]|)"+a+"*(\\d+)|))"+a+"*\\)|)","i"),bool:new RegExp("^(?:"+Q+")$","i"),needsContext:new RegExp("^"+a+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+a+"*((?:-\\d)?\\d*)"+a+"*\\)|)(?=[^-]|$)","i")},oe=/^(?:input|select|textarea|button)$/i,se=/^h\d$/i,d=/^[^{]+\{\s*\[native \w/,ae=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,re=/[+~]/,le=/'|\\/g,f=new RegExp("\\\\([\\da-f]{1,6}"+a+"?|("+a+")|.)","ig");try{j.apply(i=Y.call(b.childNodes),b.childNodes),i[b.childNodes.length].nodeType}catch(e){j={apply:i.length?function(e,t){X.apply(e,Y.call(t))}:function(e,t){for(var i=e.length,n=0;e[i++]=t[n++];);e.length=i-1}}}function T(e,t,i,n){var o,s,a,r,l,c,d,u,h=t&&t.ownerDocument,f=t?t.nodeType:9;if(i=i||[],"string"!=typeof e||!e||1!==f&&9!==f&&11!==f)return i;if(!n&&((t?t.ownerDocument||t:b)!==x&&$(t),t=t||x,P)){if(11!==f&&(c=ae.exec(e)))if(o=c[1]){if(9===f){if(!(a=t.getElementById(o)))return i;if(a.id===o)return i.push(a),i}else if(h&&(a=h.getElementById(o))&&v(t,a)&&a.id===o)return i.push(a),i}else{if(c[2])return j.apply(i,t.getElementsByTagName(e)),i;if((o=c[3])&&p.getElementsByClassName&&t.getElementsByClassName)return j.apply(i,t.getElementsByClassName(o)),i}if(p.qsa&&!y[e+" "]&&(!g||!g.test(e))){if(1!==f)h=t,u=e;else if("object"!==t.nodeName.toLowerCase()){for((r=t.getAttribute("id"))?r=r.replace(le,"\\$&"):t.setAttribute("id",r=C),s=(d=m(e)).length,l=ne.test(r)?"#"+r:"[id='"+r+"']";s--;)d[s]=l+" "+I(d[s]);u=d.join(","),h=re.test(e)&&he(t.parentNode)||t}if(u)try{return j.apply(i,h.querySelectorAll(u)),i}catch(e){}finally{r===C&&t.removeAttribute("id")}}}return M(e.replace(H,"$1"),t,i,n)}function ce(){var i=[];function n(e,t){return i.push(e+" ")>w.cacheLength&&delete n[i.shift()],n[e+" "]=t}return n}function S(e){return e[C]=!0,e}function E(e){var t=x.createElement("div");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t)}}function de(e,t){for(var i=e.split("|"),n=i.length;n--;)w.attrHandle[i[n]]=t}function ue(e,t){var i=t&&e,n=i&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||1<<31)-(~e.sourceIndex||1<<31);if(n)return n;if(i)for(;i=i.nextSibling;)if(i===t)return-1;return e?1:-1}function V(a){return S(function(s){return s=+s,S(function(e,t){for(var i,n=a([],e.length,s),o=n.length;o--;)e[i=n[o]]&&(e[i]=!(t[i]=e[i]))})})}function he(e){return e&&void 0!==e.getElementsByTagName&&e}for(e in p=T.support={},z=T.isXML=function(e){e=e&&(e.ownerDocument||e).documentElement;return!!e&&"HTML"!==e.nodeName},$=T.setDocument=function(e){var e=e?e.ownerDocument||e:b;return e!==x&&9===e.nodeType&&e.documentElement&&(t=(x=e).documentElement,P=!z(x),(e=x.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",O,!1):e.attachEvent&&e.attachEvent("onunload",O)),p.attributes=E(function(e){return e.className="i",!e.getAttribute("className")}),p.getElementsByTagName=E(function(e){return e.appendChild(x.createComment("")),!e.getElementsByTagName("*").length}),p.getElementsByClassName=d.test(x.getElementsByClassName),p.getById=E(function(e){return t.appendChild(e).id=C,!x.getElementsByName||!x.getElementsByName(C).length}),p.getById?(w.find.ID=function(e,t){if(void 0!==t.getElementById&&P)return(t=t.getElementById(e))?[t]:[]},w.filter.ID=function(e){var t=e.replace(f,u);return function(e){return e.getAttribute("id")===t}}):(delete w.find.ID,w.filter.ID=function(e){var t=e.replace(f,u);return function(e){e=void 0!==e.getAttributeNode&&e.getAttributeNode("id");return e&&e.value===t}}),w.find.TAG=p.getElementsByTagName?function(e,t){return void 0!==t.getElementsByTagName?t.getElementsByTagName(e):p.qsa?t.querySelectorAll(e):void 0}:function(e,t){var i,n=[],o=0,s=t.getElementsByTagName(e);if("*"!==e)return s;for(;i=s[o++];)1===i.nodeType&&n.push(i);return n},w.find.CLASS=p.getElementsByClassName&&function(e,t){return void 0!==t.getElementsByClassName&&P?t.getElementsByClassName(e):void 0},n=[],g=[],(p.qsa=d.test(x.querySelectorAll))&&(E(function(e){t.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&g.push("[*^$]="+a+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||g.push("\\["+a+"*(?:value|"+Q+")"),e.querySelectorAll("[id~="+C+"-]").length||g.push("~="),e.querySelectorAll(":checked").length||g.push(":checked"),e.querySelectorAll("a#"+C+"+*").length||g.push(".#.+[+~]")}),E(function(e){var t=x.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&g.push("name"+a+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(p.matchesSelector=d.test(o=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.msMatchesSelector))&&E(function(e){p.disconnectedMatch=o.call(e,"div"),o.call(e,"[s!='']:x"),n.push("!=",K)}),g=g.length&&new RegExp(g.join("|")),n=n.length&&new RegExp(n.join("|")),e=d.test(t.compareDocumentPosition),v=e||d.test(t.contains)?function(e,t){var i=9===e.nodeType?e.documentElement:e,t=t&&t.parentNode;return e===t||!(!t||1!==t.nodeType||!(i.contains?i.contains(t):e.compareDocumentPosition&&16&e.compareDocumentPosition(t)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},W=e?function(e,t){var i;return e===t?(c=!0,0):(i=!e.compareDocumentPosition-!t.compareDocumentPosition)||(1&(i=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!p.sortDetached&&t.compareDocumentPosition(e)===i?e===x||e.ownerDocument===b&&v(b,e)?-1:t===x||t.ownerDocument===b&&v(b,t)?1:l?k(l,e)-k(l,t):0:4&i?-1:1)}:function(e,t){if(e===t)return c=!0,0;var i,n=0,o=e.parentNode,s=t.parentNode,a=[e],r=[t];if(!o||!s)return e===x?-1:t===x?1:o?-1:s?1:l?k(l,e)-k(l,t):0;if(o===s)return ue(e,t);for(i=e;i=i.parentNode;)a.unshift(i);for(i=t;i=i.parentNode;)r.unshift(i);for(;a[n]===r[n];)n++;return n?ue(a[n],r[n]):a[n]===b?-1:r[n]===b?1:0}),x},T.matches=function(e,t){return T(e,null,null,t)},T.matchesSelector=function(e,t){if((e.ownerDocument||e)!==x&&$(e),t=t.replace(te,"='$1']"),p.matchesSelector&&P&&!y[t+" "]&&(!n||!n.test(t))&&(!g||!g.test(t)))try{var i=o.call(e,t);if(i||p.disconnectedMatch||e.document&&11!==e.document.nodeType)return i}catch(e){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(f,u),e[3]=(e[3]||e[4]||e[5]||"").replace(f,u),"~="===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]||T.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]&&T.error(e[0]),e},PSEUDO:function(e){var t,i=!e[6]&&e[2];return h.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":i&&ie.test(i)&&(t=(t=m(i,!0))&&i.indexOf(")",i.length-t)-i.length)&&(e[0]=e[0].slice(0,t),e[2]=i.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(f,u).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=R[e+" "];return t||(t=new RegExp("(^|"+a+")"+e+"("+a+"|$)"))&&R(e,function(e){return t.test("string"==typeof e.className&&e.className||void 0!==e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(t,i,n){return function(e){e=T.attr(e,t);return null==e?"!="===i:!i||(e+="","="===i?e===n:"!="===i?e!==n:"^="===i?n&&0===e.indexOf(n):"*="===i?n&&-1function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t})(e);for(e in{submit:!0,reset:!0})w.pseudos[e]=(i=>function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===i})(e);function fe(){}function I(e){for(var t=0,i=e.length,n="";t{for(var n=0,o=t.length;n(?:<\/\1>|)$/,J=/^.[^:#\[\.,]*$/;function K(e,i,n){if($.isFunction(i))return $.grep(e,function(e,t){return!!i.call(e,t,e)!==n});if(i.nodeType)return $.grep(e,function(e){return e===i!==n});if("string"==typeof i){if(J.test(i))return $.filter(i,e,n);i=$.filter(i,e)}return $.grep(e,function(e){return-1<$.inArray(e,i)!==n})}$.filter=function(e,t,i){var n=t[0];return i&&(e=":not("+e+")"),1===t.length&&1===n.nodeType?$.find.matchesSelector(n,e)?[n]:[]:$.find.matches(e,$.grep(t,function(e){return 1===e.nodeType}))},$.fn.extend({find:function(e){var t,i=[],n=this,o=n.length;if("string"!=typeof e)return this.pushStack($(e).filter(function(){for(t=0;t)[^>]*|#([\w-]*))$/,ee=(($.fn.init=function(e,t,i){if(e){if(i=i||G,"string"!=typeof e)return e.nodeType?(this.context=this[0]=e,this.length=1,this):$.isFunction(e)?void 0!==i.ready?i.ready(e):e($):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),$.makeArray(e,this));if(!(n="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&3<=e.length?[null,e,null]:Z.exec(e))||!n[1]&&t)return(!t||t.jquery?t||i:this.constructor(t)).find(e);if(n[1]){if(t=t instanceof $?t[0]:t,$.merge(this,$.parseHTML(n[1],t&&t.nodeType?t.ownerDocument||t:p,!0)),Q.test(n[1])&&$.isPlainObject(t))for(var n in t)$.isFunction(this[n])?this[n](t[n]):this.attr(n,t[n])}else{if((i=p.getElementById(n[2]))&&i.parentNode){if(i.id!==n[2])return G.find(e);this.length=1,this[0]=i}this.context=p,this.selector=e}}return this}).prototype=$.fn,G=$(p),/^(?:parents|prev(?:Until|All))/),te={children:!0,contents:!0,next:!0,prev:!0};function ie(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}$.fn.extend({has:function(e){var t,i=$(e,this),n=i.length;return this.filter(function(){for(t=0;ta",g.leadingWhitespace=3===j.firstChild.nodeType,g.tbody=!j.getElementsByTagName("tbody").length,g.htmlSerialize=!!j.getElementsByTagName("link").length,g.html5Clone="<:nav>"!==p.createElement("nav").cloneNode(!0).outerHTML,V.type="checkbox",V.checked=!0,F.appendChild(V),g.appendChecked=V.checked,j.innerHTML="",g.noCloneChecked=!!j.cloneNode(!0).lastChild.defaultValue,F.appendChild(j),(V=p.createElement("input")).setAttribute("type","radio"),V.setAttribute("checked","checked"),V.setAttribute("name","t"),j.appendChild(V),g.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,g.noCloneEvent=!!j.addEventListener,j[$.expando]=1,g.attributes=!j.getAttribute($.expando);var b={option:[1,""],legend:[1,""],area:[1,""],param:[1,""],thead:[1,""],tr:[2,""],col:[2,""],td:[3,""],_default:g.htmlSerialize?[0,"",""]:[1,"X","
"]};function y(e,t){var i,n,o=0,s=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!s)for(s=[],i=e.childNodes||e;null!=(n=i[o]);o++)!t||$.nodeName(n,t)?s.push(n):$.merge(s,y(n,t));return void 0===t||t&&$.nodeName(e,t)?$.merge([e],s):s}function _e(e,t){for(var i,n=0;null!=(i=e[n]);n++)$._data(i,"globalEval",!t||$._data(t[n],"globalEval"))}b.optgroup=b.option,b.tbody=b.tfoot=b.colgroup=b.caption=b.thead,b.th=b.td;var $e=/<|?\w+;/,xe=/"!==u[1]||xe.test(a)?0:l:l.firstChild)&&a.childNodes.length;s--;)$.nodeName(d=a.childNodes[s],"tbody")&&!d.childNodes.length&&a.removeChild(d);for($.merge(p,l.childNodes),l.textContent="";l.firstChild;)l.removeChild(l.firstChild);l=f.lastChild}else p.push(t.createTextNode(a));for(l&&f.removeChild(l),g.appendChecked||$.grep(y(p,"input"),Pe),m=0;a=p[m++];)if(n&&-1<$.inArray(a,n))o&&o.push(a);else if(r=$.contains(a.ownerDocument,a),l=y(f.appendChild(a),"script"),r&&_e(l),i)for(s=0;a=l[s++];)ve.test(a.type||"")&&i.push(a);return l=null,f}var Fe,je,ke=p.createElement("div");for(Fe in{submit:!0,change:!0,focusin:!0})je="on"+Fe,(g[Fe]=je in _)||(ke.setAttribute(je,"t"),g[Fe]=!1===ke.attributes[je].expando);var He=/^(?:input|select|textarea)$/i,Te=/^key/,Se=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^(?:focusinfocus|focusoutblur)$/,Ve=/^([^.]*)(?:\.(.+)|)/;function Ie(){return!0}function l(){return!1}function Ae(){try{return p.activeElement}catch(e){}}function De(e,t,i,n,o,s){var a,r;if("object"==typeof t){for(r in"string"!=typeof i&&(n=n||i,i=void 0),t)De(e,r,i,n,t[r],s);return e}if(null==n&&null==o?(o=i,n=i=void 0):null==o&&("string"==typeof i?(o=n,n=void 0):(o=n,n=i,i=void 0)),!1===o)o=l;else if(!o)return e;return 1===s&&(a=o,(o=function(e){return $().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=$.guid++)),e.each(function(){$.event.add(this,t,o,n,i)})}$.event={global:{},add:function(e,t,i,n,o){var s,a,r,l,c,d,u,h,f,p=$._data(e);if(p)for(i.handler&&(i=(r=i).handler,o=r.selector),i.guid||(i.guid=$.guid++),s=(s=p.events)||(p.events={}),(c=p.handle)||((c=p.handle=function(e){return void 0===$||e&&$.event.triggered===e.type?void 0:$.event.dispatch.apply(c.elem,arguments)}).elem=e),a=(t=(t||"").match(x)||[""]).length;a--;)u=f=(h=Ve.exec(t[a])||[])[1],h=(h[2]||"").split(".").sort(),u&&(l=$.event.special[u]||{},u=(o?l.delegateType:l.bindType)||u,l=$.event.special[u]||{},f=$.extend({type:u,origType:f,data:n,handler:i,guid:i.guid,selector:o,needsContext:o&&$.expr.match.needsContext.test(o),namespace:h.join(".")},r),(d=s[u])||((d=s[u]=[]).delegateCount=0,l.setup&&!1!==l.setup.call(e,n,h,c))||(e.addEventListener?e.addEventListener(u,c,!1):e.attachEvent&&e.attachEvent("on"+u,c)),l.add&&(l.add.call(e,f),f.handler.guid||(f.handler.guid=i.guid)),o?d.splice(d.delegateCount++,0,f):d.push(f),$.event.global[u]=!0)},remove:function(e,t,i,n,o){var s,a,r,l,c,d,u,h,f,p,m,g=$.hasData(e)&&$._data(e);if(g&&(d=g.events)){for(c=(t=(t||"").match(x)||[""]).length;c--;)if(f=m=(r=Ve.exec(t[c])||[])[1],p=(r[2]||"").split(".").sort(),f){for(u=$.event.special[f]||{},h=d[f=(n?u.delegateType:u.bindType)||f]||[],r=r[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=s=h.length;s--;)a=h[s],!o&&m!==a.origType||i&&i.guid!==a.guid||r&&!r.test(a.namespace)||n&&n!==a.selector&&("**"!==n||!a.selector)||(h.splice(s,1),a.selector&&h.delegateCount--,u.remove&&u.remove.call(e,a));l&&!h.length&&(u.teardown&&!1!==u.teardown.call(e,p,g.handle)||$.removeEvent(e,f,g.handle),delete d[f])}else for(f in d)$.event.remove(e,f+t[c],i,n,!0);$.isEmptyObject(d)&&(delete g.handle,$._removeData(e,"events"))}},trigger:function(e,t,i,n){var o,s,a,r,l,c,d=[i||p],u=m.call(e,"type")?e.type:e,h=m.call(e,"namespace")?e.namespace.split("."):[],f=l=i=i||p;if(3!==i.nodeType&&8!==i.nodeType&&!Ee.test(u+$.event.triggered)&&(-1]","i"),Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,Me=/