From 01609f8514a46f7b124f527814e1992ed64c83d4 Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Wed, 5 Jan 2022 21:37:45 +0100 Subject: [PATCH] Update to ESLint 8 And run it: - `yarn eslint app/**/*.js --fix` - `yarn eslint web/**/*.js --fix` --- .../static/themes/_global/js/bookmarklet.js | 9 +- app/config/webpack/dev.js | 5 +- app/config/webpack/prod.js | 12 +- package.json | 5 +- web/js/fos_js_routes.js | 141 +++++++++- web/wallassets/baggy.js | 2 +- web/wallassets/baggy.js.map | 2 +- web/wallassets/material.js | 2 +- web/wallassets/material.js.map | 2 +- yarn.lock | 264 +++++++++--------- 10 files changed, 287 insertions(+), 157 deletions(-) diff --git a/app/Resources/static/themes/_global/js/bookmarklet.js b/app/Resources/static/themes/_global/js/bookmarklet.js index a497628b2..e1ee92234 100644 --- a/app/Resources/static/themes/_global/js/bookmarklet.js +++ b/app/Resources/static/themes/_global/js/bookmarklet.js @@ -1,5 +1,4 @@ -top['bookmarklet-url@wallabag.org'] = - 'bag it!' + - '' + - ''; +top['bookmarklet-url@wallabag.org'] = 'bag it!' + + '' + + ''; diff --git a/app/config/webpack/dev.js b/app/config/webpack/dev.js index 67281f323..1c614f1a0 100644 --- a/app/config/webpack/dev.js +++ b/app/config/webpack/dev.js @@ -1,7 +1,6 @@ const { merge } = require('webpack-merge'); -const webpack = require('webpack'); -const commonConfig = require('./common.js'); const ESLintPlugin = require('eslint-webpack-plugin'); +const commonConfig = require('./common'); module.exports = merge(commonConfig, { devtool: 'eval-source-map', @@ -52,7 +51,7 @@ module.exports = merge(commonConfig, { }, { test: /\.(jpg|png|gif|svg|ico|eot|ttf|woff|woff2)$/, - use: 'url-loader', + type: 'asset/inline', }, ], }, diff --git a/app/config/webpack/prod.js b/app/config/webpack/prod.js index d860f81cb..458a0190c 100644 --- a/app/config/webpack/prod.js +++ b/app/config/webpack/prod.js @@ -5,7 +5,7 @@ const MiniCssExtractPlugin = require('mini-css-extract-plugin'); const { WebpackManifestPlugin } = require('webpack-manifest-plugin'); const TerserPlugin = require('terser-webpack-plugin'); -const commonConfig = require('./common.js'); +const commonConfig = require('./common'); module.exports = merge(commonConfig, { output: { @@ -78,7 +78,7 @@ module.exports = merge(commonConfig, { include: /node_modules/, type: 'asset/resource', generator: { - filename: 'img/[name][ext]' + filename: 'img/[name][ext]', }, }, { @@ -86,16 +86,14 @@ module.exports = merge(commonConfig, { exclude: /node_modules/, type: 'asset/resource', generator: { - filename: content => { - return content.filename.replace('app/Resources/static/', '') - } - } + filename: (content) => content.filename.replace('app/Resources/static/', ''), + }, }, { test: /\.(eot|ttf|woff|woff2)$/, type: 'asset/resource', generator: { - filename: 'fonts/[name][ext]' + filename: 'fonts/[name][ext]', }, }, ], diff --git a/package.json b/package.json index e2c304172..ac868a213 100644 --- a/package.json +++ b/package.json @@ -42,8 +42,8 @@ "autoprefixer": "^10.4.1", "babel-loader": "^8.2.3", "css-loader": "^6.5.1", - "eslint": "^7.27.0", - "eslint-config-airbnb-base": "^14.2.1", + "eslint": "^8.6.0", + "eslint-config-airbnb-base": "^15.0.0", "eslint-plugin-import": "^2.25.4", "eslint-webpack-plugin": "^3.1.1", "file-loader": "^6.2.0", @@ -60,6 +60,7 @@ "stylelint-config-standard": "^24.0.0", "stylelint-scss": "^4.1.0", "stylelint-webpack-plugin": "^3.1.0", + "terser-webpack-plugin": "^5.3.0", "url-loader": "^4.1.1", "webpack": "^5.65.0", "webpack-cli": "^4.9.1", diff --git a/web/js/fos_js_routes.js b/web/js/fos_js_routes.js index b856aecc4..cc82a1873 100644 --- a/web/js/fos_js_routes.js +++ b/web/js/fos_js_routes.js @@ -1 +1,140 @@ -fos.Router.setData({"base_url":"","routes":{"import_chrome":{"tokens":[["text","\/import\/chrome"]],"defaults":[],"requirements":[],"hosttokens":[]},"import_firefox":{"tokens":[["text","\/import\/firefox"]],"defaults":[],"requirements":[],"hosttokens":[]},"import":{"tokens":[["text","\/import\/"]],"defaults":[],"requirements":[],"hosttokens":[]},"import_instapaper":{"tokens":[["text","\/import\/instapaper"]],"defaults":[],"requirements":[],"hosttokens":[]},"import_pinboard":{"tokens":[["text","\/import\/pinboard"]],"defaults":[],"requirements":[],"hosttokens":[]},"import_pocket":{"tokens":[["text","\/import\/pocket"]],"defaults":[],"requirements":[],"hosttokens":[]},"import_pocket_auth":{"tokens":[["text","\/import\/pocket\/auth"]],"defaults":[],"requirements":[],"hosttokens":[]},"import_pocket_callback":{"tokens":[["text","\/import\/pocket\/callback"]],"defaults":[],"requirements":[],"hosttokens":[]},"import_readability":{"tokens":[["text","\/import\/readability"]],"defaults":[],"requirements":[],"hosttokens":[]},"import_wallabag_v1":{"tokens":[["text","\/import\/wallabag-v1"]],"defaults":[],"requirements":[],"hosttokens":[]},"import_wallabag_v2":{"tokens":[["text","\/import\/wallabag-v2"]],"defaults":[],"requirements":[],"hosttokens":[]},"user_new":{"tokens":[["text","\/users\/new"]],"defaults":[],"requirements":[],"hosttokens":[]},"developer":{"tokens":[["text","\/developer"]],"defaults":[],"requirements":[],"hosttokens":[]},"developer_create_client":{"tokens":[["text","\/developer\/client\/create"]],"defaults":[],"requirements":[],"hosttokens":[]},"developer_delete_client":{"tokens":[["variable","\/","\\d+","id"],["text","\/developer\/client\/delete"]],"defaults":[],"requirements":{"id":"\\d+"},"hosttokens":[]},"developer_howto_firstapp":{"tokens":[["text","\/developer\/howto\/first-app"]],"defaults":[],"requirements":[],"hosttokens":[]},"config":{"tokens":[["text","\/config"]],"defaults":[],"requirements":[],"hosttokens":[]},"delete_tagging_rule":{"tokens":[["variable","\/","\\d+","id"],["text","\/tagging-rule\/delete"]],"defaults":[],"requirements":{"id":"\\d+"},"hosttokens":[]},"edit_tagging_rule":{"tokens":[["variable","\/","\\d+","id"],["text","\/tagging-rule\/edit"]],"defaults":[],"requirements":{"id":"\\d+"},"hosttokens":[]},"config_reset":{"tokens":[["variable","\/","[^\/]++","type"],["text","\/reset"]],"defaults":[],"requirements":{"id":"annotations|tags|entries"},"hosttokens":[]},"new_entry":{"tokens":[["text","\/new-entry"]],"defaults":[],"requirements":[],"hosttokens":[]},"new":{"tokens":[["text","\/new"]],"defaults":[],"requirements":[],"hosttokens":[]},"all":{"tokens":[["variable","\/","[^\/]++","page"],["text","\/all\/list"]],"defaults":{"page":"1"},"requirements":[],"hosttokens":[]},"archive":{"tokens":[["variable","\/","[^\/]++","page"],["text","\/archive\/list"]],"defaults":{"page":"1"},"requirements":[],"hosttokens":[]},"starred":{"tokens":[["variable","\/","[^\/]++","page"],["text","\/starred\/list"]],"defaults":{"page":"1"},"requirements":[],"hosttokens":[]},"archive_entry":{"tokens":[["variable","\/","\\d+","id"],["text","\/archive"]],"defaults":[],"requirements":{"id":"\\d+"},"hosttokens":[]},"untagged":{"tokens":[["variable","\/","[^\/]++","page"],["text","\/untagged\/list"]],"defaults":{"page":"1"},"requirements":[],"hosttokens":[]},"archive_rss":{"tokens":[["text","\/archive.xml"],["variable","\/","[^\/]++","token"],["variable","\/","[^\/]++","username"]],"defaults":[],"requirements":[],"hosttokens":[]},"starred_rss":{"tokens":[["text","\/starred.xml"],["variable","\/","[^\/]++","token"],["variable","\/","[^\/]++","username"]],"defaults":[],"requirements":[],"hosttokens":[]},"howto":{"tokens":[["text","\/howto"]],"defaults":[],"requirements":[],"hosttokens":[]},"new_tag":{"tokens":[["variable","\/","\\d+","entry"],["text","\/new-tag"]],"defaults":[],"requirements":{"entry":"\\d+"},"hosttokens":[]},"remove_tag":{"tokens":[["variable","\/","\\d+","tag"],["variable","\/","\\d+","entry"],["text","\/remove-tag"]],"defaults":[],"requirements":{"entry":"\\d+","tag":"\\d+"},"hosttokens":[]},"tag":{"tokens":[["text","\/tag\/list"]],"defaults":[],"requirements":[],"hosttokens":[]},"tag_entries":{"tokens":[["variable","\/","[^\/]++","page"],["variable","\/","[^\/]++","slug"],["text","\/tag\/list"]],"defaults":{"page":"1"},"requirements":[],"hosttokens":[]},"api_get_entries_tags":{"tokens":[["variable",".","xml|json|txt|csv|pdf|epub|mobi|html","_format"],["text","\/tags"],["variable","\/","[^\/]++","entry"],["text","\/api\/entries"]],"defaults":{"_format":"json"},"requirements":{"_format":"xml|json|txt|csv|pdf|epub|mobi|html"},"hosttokens":[]},"api_post_entries_tags":{"tokens":[["variable",".","xml|json|txt|csv|pdf|epub|mobi|html","_format"],["text","\/tags"],["variable","\/","[^\/]++","entry"],["text","\/api\/entries"]],"defaults":{"_format":"json"},"requirements":{"_format":"xml|json|txt|csv|pdf|epub|mobi|html"},"hosttokens":[]},"api_delete_entries_tags":{"tokens":[["variable",".","xml|json|txt|csv|pdf|epub|mobi|html","_format"],["variable","\/","[^\/\\.]++","tag"],["text","\/tags"],["variable","\/","[^\/]++","entry"],["text","\/api\/entries"]],"defaults":{"_format":"json"},"requirements":{"_format":"xml|json|txt|csv|pdf|epub|mobi|html"},"hosttokens":[]},"api_get_tags":{"tokens":[["variable",".","xml|json|txt|csv|pdf|epub|mobi|html","_format"],["text","\/api\/tags"]],"defaults":{"_format":"json"},"requirements":{"_format":"xml|json|txt|csv|pdf|epub|mobi|html"},"hosttokens":[]},"api_delete_tag_label":{"tokens":[["variable",".","xml|json|txt|csv|pdf|epub|mobi|html","_format"],["text","\/api\/tag\/label"]],"defaults":{"_format":"json"},"requirements":{"_format":"xml|json|txt|csv|pdf|epub|mobi|html"},"hosttokens":[]},"api_delete_tags_label":{"tokens":[["variable",".","xml|json|txt|csv|pdf|epub|mobi|html","_format"],["text","\/api\/tags\/label"]],"defaults":{"_format":"json"},"requirements":{"_format":"xml|json|txt|csv|pdf|epub|mobi|html"},"hosttokens":[]},"api_delete_tag":{"tokens":[["variable",".","xml|json|txt|csv|pdf|epub|mobi|html","_format"],["variable","\/","[^\/\\.]++","tag"],["text","\/api\/tags"]],"defaults":{"_format":"json"},"requirements":{"_format":"xml|json|txt|csv|pdf|epub|mobi|html"},"hosttokens":[]},"homepage":{"tokens":[["variable","\/","\\d+","page"]],"defaults":{"page":1},"requirements":{"page":"\\d+"},"hosttokens":[]},"fos_user_security_logout":{"tokens":[["text","\/logout"]],"defaults":[],"requirements":[],"hosttokens":[]},"craue_config_settings_modify":{"tokens":[["text","\/settings"]],"defaults":[],"requirements":[],"hosttokens":[]}},"prefix":"","host":"localhost","scheme":"http"}); \ No newline at end of file +fos.Router.setData({ + base_url: '', + routes: { + import_chrome: { + tokens: [['text', '/import/chrome']], defaults: [], requirements: [], hosttokens: [], + }, + import_firefox: { + tokens: [['text', '/import/firefox']], defaults: [], requirements: [], hosttokens: [], + }, + import: { + tokens: [['text', '/import/']], defaults: [], requirements: [], hosttokens: [], + }, + import_instapaper: { + tokens: [['text', '/import/instapaper']], defaults: [], requirements: [], hosttokens: [], + }, + import_pinboard: { + tokens: [['text', '/import/pinboard']], defaults: [], requirements: [], hosttokens: [], + }, + import_pocket: { + tokens: [['text', '/import/pocket']], defaults: [], requirements: [], hosttokens: [], + }, + import_pocket_auth: { + tokens: [['text', '/import/pocket/auth']], defaults: [], requirements: [], hosttokens: [], + }, + import_pocket_callback: { + tokens: [['text', '/import/pocket/callback']], defaults: [], requirements: [], hosttokens: [], + }, + import_readability: { + tokens: [['text', '/import/readability']], defaults: [], requirements: [], hosttokens: [], + }, + import_wallabag_v1: { + tokens: [['text', '/import/wallabag-v1']], defaults: [], requirements: [], hosttokens: [], + }, + import_wallabag_v2: { + tokens: [['text', '/import/wallabag-v2']], defaults: [], requirements: [], hosttokens: [], + }, + user_new: { + tokens: [['text', '/users/new']], defaults: [], requirements: [], hosttokens: [], + }, + developer: { + tokens: [['text', '/developer']], defaults: [], requirements: [], hosttokens: [], + }, + developer_create_client: { + tokens: [['text', '/developer/client/create']], defaults: [], requirements: [], hosttokens: [], + }, + developer_delete_client: { + tokens: [['variable', '/', '\\d+', 'id'], ['text', '/developer/client/delete']], defaults: [], requirements: { id: '\\d+' }, hosttokens: [], + }, + developer_howto_firstapp: { + tokens: [['text', '/developer/howto/first-app']], defaults: [], requirements: [], hosttokens: [], + }, + config: { + tokens: [['text', '/config']], defaults: [], requirements: [], hosttokens: [], + }, + delete_tagging_rule: { + tokens: [['variable', '/', '\\d+', 'id'], ['text', '/tagging-rule/delete']], defaults: [], requirements: { id: '\\d+' }, hosttokens: [], + }, + edit_tagging_rule: { + tokens: [['variable', '/', '\\d+', 'id'], ['text', '/tagging-rule/edit']], defaults: [], requirements: { id: '\\d+' }, hosttokens: [], + }, + config_reset: { + tokens: [['variable', '/', '[^/]++', 'type'], ['text', '/reset']], defaults: [], requirements: { id: 'annotations|tags|entries' }, hosttokens: [], + }, + new_entry: { + tokens: [['text', '/new-entry']], defaults: [], requirements: [], hosttokens: [], + }, + new: { + tokens: [['text', '/new']], defaults: [], requirements: [], hosttokens: [], + }, + all: { + tokens: [['variable', '/', '[^/]++', 'page'], ['text', '/all/list']], defaults: { page: '1' }, requirements: [], hosttokens: [], + }, + archive: { + tokens: [['variable', '/', '[^/]++', 'page'], ['text', '/archive/list']], defaults: { page: '1' }, requirements: [], hosttokens: [], + }, + starred: { + tokens: [['variable', '/', '[^/]++', 'page'], ['text', '/starred/list']], defaults: { page: '1' }, requirements: [], hosttokens: [], + }, + archive_entry: { + tokens: [['variable', '/', '\\d+', 'id'], ['text', '/archive']], defaults: [], requirements: { id: '\\d+' }, hosttokens: [], + }, + untagged: { + tokens: [['variable', '/', '[^/]++', 'page'], ['text', '/untagged/list']], defaults: { page: '1' }, requirements: [], hosttokens: [], + }, + archive_rss: { + tokens: [['text', '/archive.xml'], ['variable', '/', '[^/]++', 'token'], ['variable', '/', '[^/]++', 'username']], defaults: [], requirements: [], hosttokens: [], + }, + starred_rss: { + tokens: [['text', '/starred.xml'], ['variable', '/', '[^/]++', 'token'], ['variable', '/', '[^/]++', 'username']], defaults: [], requirements: [], hosttokens: [], + }, + howto: { + tokens: [['text', '/howto']], defaults: [], requirements: [], hosttokens: [], + }, + new_tag: { + tokens: [['variable', '/', '\\d+', 'entry'], ['text', '/new-tag']], defaults: [], requirements: { entry: '\\d+' }, hosttokens: [], + }, + remove_tag: { + tokens: [['variable', '/', '\\d+', 'tag'], ['variable', '/', '\\d+', 'entry'], ['text', '/remove-tag']], defaults: [], requirements: { entry: '\\d+', tag: '\\d+' }, hosttokens: [], + }, + tag: { + tokens: [['text', '/tag/list']], defaults: [], requirements: [], hosttokens: [], + }, + tag_entries: { + tokens: [['variable', '/', '[^/]++', 'page'], ['variable', '/', '[^/]++', 'slug'], ['text', '/tag/list']], defaults: { page: '1' }, requirements: [], hosttokens: [], + }, + api_get_entries_tags: { + tokens: [['variable', '.', 'xml|json|txt|csv|pdf|epub|mobi|html', '_format'], ['text', '/tags'], ['variable', '/', '[^/]++', 'entry'], ['text', '/api/entries']], defaults: { _format: 'json' }, requirements: { _format: 'xml|json|txt|csv|pdf|epub|mobi|html' }, hosttokens: [], + }, + api_post_entries_tags: { + tokens: [['variable', '.', 'xml|json|txt|csv|pdf|epub|mobi|html', '_format'], ['text', '/tags'], ['variable', '/', '[^/]++', 'entry'], ['text', '/api/entries']], defaults: { _format: 'json' }, requirements: { _format: 'xml|json|txt|csv|pdf|epub|mobi|html' }, hosttokens: [], + }, + api_delete_entries_tags: { + tokens: [['variable', '.', 'xml|json|txt|csv|pdf|epub|mobi|html', '_format'], ['variable', '/', '[^/\\.]++', 'tag'], ['text', '/tags'], ['variable', '/', '[^/]++', 'entry'], ['text', '/api/entries']], defaults: { _format: 'json' }, requirements: { _format: 'xml|json|txt|csv|pdf|epub|mobi|html' }, hosttokens: [], + }, + api_get_tags: { + tokens: [['variable', '.', 'xml|json|txt|csv|pdf|epub|mobi|html', '_format'], ['text', '/api/tags']], defaults: { _format: 'json' }, requirements: { _format: 'xml|json|txt|csv|pdf|epub|mobi|html' }, hosttokens: [], + }, + api_delete_tag_label: { + tokens: [['variable', '.', 'xml|json|txt|csv|pdf|epub|mobi|html', '_format'], ['text', '/api/tag/label']], defaults: { _format: 'json' }, requirements: { _format: 'xml|json|txt|csv|pdf|epub|mobi|html' }, hosttokens: [], + }, + api_delete_tags_label: { + tokens: [['variable', '.', 'xml|json|txt|csv|pdf|epub|mobi|html', '_format'], ['text', '/api/tags/label']], defaults: { _format: 'json' }, requirements: { _format: 'xml|json|txt|csv|pdf|epub|mobi|html' }, hosttokens: [], + }, + api_delete_tag: { + tokens: [['variable', '.', 'xml|json|txt|csv|pdf|epub|mobi|html', '_format'], ['variable', '/', '[^/\\.]++', 'tag'], ['text', '/api/tags']], defaults: { _format: 'json' }, requirements: { _format: 'xml|json|txt|csv|pdf|epub|mobi|html' }, hosttokens: [], + }, + homepage: { + tokens: [['variable', '/', '\\d+', 'page']], defaults: { page: 1 }, requirements: { page: '\\d+' }, hosttokens: [], + }, + fos_user_security_logout: { + tokens: [['text', '/logout']], defaults: [], requirements: [], hosttokens: [], + }, + craue_config_settings_modify: { + tokens: [['text', '/settings']], defaults: [], requirements: [], hosttokens: [], + }, + }, + prefix: '', + host: 'localhost', + scheme: 'http', +}); diff --git a/web/wallassets/baggy.js b/web/wallassets/baggy.js index 858171a7f..8e0ff03e1 100644 --- a/web/wallassets/baggy.js +++ b/web/wallassets/baggy.js @@ -1,2 +1,2 @@ -(()=>{var e={5641:(e,t,n)=>{"use strict";n(8186)(n(262));var r=n(9731),i=n(9999);t.gV=r.App,n(1849),n(5587),t.notification=n(3612),t.storage=n(4623),t.ui=n(5443);var o=n.g.wgxpath;null!=o&&"function"==typeof o.install&&o.install();var a=n.g.annotator},9731:(e,t,n)=>{"use strict";var r=n(280),i=n(2702).Promise,o=n(1849),a=n(5587),s=n(3612),l=n(1258),T=n(4623);function c(){this.modules=[],this.registry=new l.Registry,this._started=!1,this.registry.registerUtility(s.defaultNotifier,"notifier"),this.include(o.acl),this.include(a.simple),this.include(T.noop)}c.prototype.include=function(e,t){var n=e(t);return"function"==typeof n.configure&&n.configure(this.registry),this.modules.push(n),this},c.prototype.start=function(){if(!this._started){this._started=!0;var e=this,t=this.registry;return this.authz=t.getUtility("authorizationPolicy"),this.ident=t.getUtility("identityPolicy"),this.notify=t.getUtility("notifier"),this.annotations=new T.StorageAdapter(t.getUtility("storage"),(function(){return e.runHook.apply(e,arguments)})),this.runHook("start",[this])}},c.prototype.destroy=function(){return this.runHook("destroy")},c.prototype.runHook=function(e,t){for(var n=[],r=0,o=this.modules.length;r{"use strict";var n;t.acl=function(){var e=new n;return{configure:function(t){t.registerUtility(e,"authorizationPolicy")}}},(n=t.AclAuthzPolicy=function(){}).prototype.permits=function(e,t,n){var r=this.authorizedUserId(n),i=t.permissions;if(i){var o=i[e];if(null==o)return!0;for(var a=0,s=o.length;a{"use strict";var n;t.simple=function(){var e=new n;return{configure:function(t){t.registerUtility(e,"identityPolicy")},beforeAnnotationCreated:function(t){t.user=e.who()}}},n=function(){this.identity=null},t.SimpleIdentityPolicy=n,n.prototype.who=function(){return this.identity}},3612:(e,t,n)=>{"use strict";var r=n(9999),i=r.$,o="info",a={show:"annotator-notice-show",info:"annotator-notice-info",success:"annotator-notice-success",error:"annotator-notice-error"};function s(e,t){null==t&&(t=o);var s=i("
")[0],l=!1,T=function(){l||(l=!0,i(s).removeClass(a.show).removeClass(a[t]),setTimeout((function(){i(s).remove()}),500))};return i(s).addClass(a.show).addClass(a[t]).html(r.escapeHtml(e||"")).appendTo(n.g.document.body),i(s).on("click",T),setTimeout(T,5e3),{close:T}}t.banner=s,t.defaultNotifier=s,t.INFO=o,t.SUCCESS="success",t.ERROR="error"},1258:(e,t)=>{"use strict";function n(){this.utilities={}}function r(e){this.name="LookupError",this.message='No utility registered for interface "'+e+'".'}n.prototype.registerUtility=function(e,t){this.utilities[t]=e},n.prototype.getUtility=function(e){var t=this.queryUtility(e);if(null===t)throw new r(e);return t},n.prototype.queryUtility=function(e){var t=this.utilities[e];return null==t?null:t},r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,t.LookupError=r,t.Registry=n},4623:(e,t,n)=>{"use strict";var r,i,o=n(9999),a=o.$,s=o.gettext,l=o.Promise,T=(r=-1,function(){return r+=1});function c(e,t){this.store=e,this.runHook=t}t.debug=function(){function e(e,t){var n=JSON.parse(JSON.stringify(t));console.debug("annotator.storage.debug: "+e,n)}return{create:function(t){return t.id=T(),e("create",t),t},update:function(t){return e("update",t),t},delete:function(t){return e("destroy",t),t},query:function(t){return e("query",t),{results:[],meta:{total:0}}},configure:function(e){e.registerUtility(this,"storage")}}},t.noop=function(){return{create:function(e){return void 0!==e.id&&null!==e.id||(e.id=T()),e},update:function(e){return e},delete:function(e){return e},query:function(){return{results:[]}},configure:function(e){e.registerUtility(this,"storage")}}},t.http=function(e){var t=function(){};null==e&&(e={}),e.onError=e.onError||function(e,n){console.error(e,n),t(e,"error")};var n=new i(e);return{configure:function(e){e.registerUtility(n,"storage")},start:function(e){t=e.notify}}},(i=t.HttpStorage=function e(t){this.options=a.extend(!0,{},e.options,t),this.onError=this.options.onError}).prototype.create=function(e){return this._apiRequest("create",e)},i.prototype.update=function(e){return this._apiRequest("update",e)},i.prototype.delete=function(e){return this._apiRequest("destroy",e)},i.prototype.query=function(e){return this._apiRequest("search",e).then((function(e){var t=e.rows;return delete e.rows,{results:t,meta:e}}))},i.prototype.setHeader=function(e,t){this.options.headers[e]=t},i.prototype._apiRequest=function(e,t){var n=t&&t.id,r=this._urlFor(e,n),i=this._apiRequestOptions(e,t),o=a.ajax(r,i);return o._id=n,o._action=e,o},i.prototype._apiRequestOptions=function(e,t){var n=this._methodFor(e),r=this,i={type:n,dataType:"json",error:function(){r._onError.apply(r,arguments)},headers:this.options.headers};if(!this.options.emulateHTTP||"PUT"!==n&&"DELETE"!==n||(i.headers=a.extend(i.headers,{"X-HTTP-Method-Override":n}),i.type="POST"),"search"===e)return i=a.extend(i,{data:t});var o=t&&JSON.stringify(t);return this.options.emulateJSON?(i.data={json:o},this.options.emulateHTTP&&(i.data._method=n),i):i=a.extend(i,{data:o,contentType:"application/json; charset=utf-8"})},i.prototype._urlFor=function(e,t){null==t&&(t="");var n="";return void 0!==this.options.prefix&&null!==this.options.prefix&&(n=this.options.prefix),n=(n+=this.options.urls[e]).replace(/idAnnotation/,t)},i.prototype._methodFor=function(e){return{create:"POST",update:"PUT",destroy:"DELETE",search:"GET"}[e]},i.prototype._onError=function(e){var t;"function"==typeof this.onError&&(t=400===e.status?s("The annotation store did not understand the request! (Error 400)"):401===e.status?s("You must be logged in to perform this operation! (Error 401)"):403===e.status?s("You don't have permission to perform this operation! (Error 403)"):404===e.status?s("Could not connect to the annotation store! (Error 404)"):500===e.status?s("Internal error in annotation store! (Error 500)"):s("Unknown error while speaking to annotation store!"),this.onError(t,e))},i.options={emulateHTTP:!1,emulateJSON:!1,headers:{},onError:function(e){console.error("API request failed: "+e)},prefix:"/store",urls:{create:"/annotations",update:"/annotations/idAnnotation",destroy:"/annotations/idAnnotation",search:"/search"}},c.prototype.create=function(e){return null==e&&(e={}),this._cycle(e,"create","beforeAnnotationCreated","annotationCreated")},c.prototype.update=function(e){if(void 0===e.id||null===e.id)throw new TypeError("annotation must have an id for update()");return this._cycle(e,"update","beforeAnnotationUpdated","annotationUpdated")},c.prototype.delete=function(e){if(void 0===e.id||null===e.id)throw new TypeError("annotation must have an id for delete()");return this._cycle(e,"delete","beforeAnnotationDeleted","annotationDeleted")},c.prototype.query=function(e){return l.resolve(this.store.query(e))},c.prototype.load=function(e){var t=this;return this.query(e).then((function(e){t.runHook("annotationsLoaded",[e.results])}))},c.prototype._cycle=function(e,t,n,r){var i=this;return this.runHook(n,[e]).then((function(){var n=a.extend(!0,{},e);delete n._local;var r=i.store[t](n);return l.resolve(r)})).then((function(t){for(var n in e)e.hasOwnProperty(n)&&"_local"!==n&&delete e[n];return a.extend(e,t),i.runHook(r,[e]),e}))},t.StorageAdapter=c},5443:(e,t,n)=>{t.main=n(3735).main,n(5107),n(8486),n(3826),n(7930),n(863),n(6996),n(7224),n(4233),n(3553)},5107:(e,t,n)=>{"use strict";var r=n(3553).$,i=n(9999),o=i.$,a=i.gettext,s="annotator-adder",l=r.extend({constructor:function(e){r.call(this,e),this.ignoreMouseup=!1,this.annotation=null,this.onCreate=this.options.onCreate;var t=this;this.element.on("click."+s,"button",(function(e){t._onClick(e)})).on("mousedown."+s,"button",(function(e){t._onMousedown(e)})),this.document=this.element[0].ownerDocument,o(this.document.body).on("mouseup."+s,(function(e){t._onMouseup(e)}))},destroy:function(){this.element.off("."+s),o(this.document.body).off("."+s),r.prototype.destroy.call(this)},load:function(e,t){this.annotation=e,this.show(t)},show:function(e){null!=e&&this.element.css({top:e.top,left:e.left}),r.prototype.show.call(this)},_onMousedown:function(e){e.which>1||(e.preventDefault(),this.ignoreMouseup=!0)},_onMouseup:function(e){e.which>1||this.ignoreMouseup&&e.stopImmediatePropagation()},_onClick:function(e){e.which>1||(e.preventDefault(),this.hide(),this.ignoreMouseup=!1,null!==this.annotation&&"function"==typeof this.onCreate&&this.onCreate(this.annotation,e))}});l.template=['
',' ","
"].join("\n"),l.options={onCreate:null},t.Adder=l},8486:(e,t,n)=>{"use strict";var r,i=n(3553).$,o=n(9999),a=o.$,s=o.gettext,l=o.Promise,T="annotator-editor",c=(r=-1,function(){return r+=1});function Q(e){null!=e&&"function"==typeof e.preventDefault&&e.preventDefault()}var u=t.dragTracker=function(e,t){var n=null,r=!1;function i(e){if(!r&&null!==n){var i={y:e.pageY-n.top,x:e.pageX-n.left},o=!0;"function"==typeof t&&(o=t(i)),!1!==o&&(n={top:e.pageY,left:e.pageX}),r=!0,setTimeout((function(){r=!1}),1e3/60)}}function o(){n=null,a(e.ownerDocument).off("mouseup",o).off("mousemove",i)}function s(t){t.target===e&&(n={top:t.pageY,left:t.pageX},a(e.ownerDocument).on("mouseup",o).on("mousemove",i),t.preventDefault())}return a(e).on("mousedown",s),{destroy:function(){a(e).off("mousedown",s)}}},d=t.resizer=function(e,t,n){var r=a(e);return null==n&&(n={}),u(t,(function(e){var t=r.height(),i=r.width(),o=function(e){var t=1,r=-1;return"function"==typeof n.invertedX&&n.invertedX()&&(t=-1),"function"==typeof n.invertedY&&n.invertedY()&&(r=1),{x:e.x*t,y:e.y*r}}(e);return Math.abs(o.x)>0&&r.width(i+o.x),Math.abs(o.y)>0&&r.height(t+o.y),r.height()!==t||r.width()!==i}))},p=t.mover=function(e,t){return u(t,(function(t){a(e).css({top:parseInt(a(e).css("top"),10)+t.y,left:parseInt(a(e).css("left"),10)+t.x})}))},_=t.Editor=i.extend({constructor:function(e){i.call(this,e),this.fields=[],this.annotation={},this.options.defaultFields&&this.addField({type:"textarea",label:s("Comments")+"…",load:function(e,t){a(e).find("textarea").val(t.text||"")},submit:function(e,t){t.text=a(e).find("textarea").val()}});var t=this;this.element.on("submit."+T,"form",(function(e){t._onFormSubmit(e)})).on("click."+T,".annotator-save",(function(e){t._onSaveClick(e)})).on("click."+T,".annotator-cancel",(function(e){t._onCancelClick(e)})).on("mouseover."+T,".annotator-cancel",(function(e){t._onCancelMouseover(e)})).on("keydown."+T,"textarea",(function(e){t._onTextareaKeydown(e)}))},destroy:function(){this.element.off("."+T),i.prototype.destroy.call(this)},show:function(e){null!=e&&this.element.css({top:e.top,left:e.left}),this.element.find(".annotator-save").addClass(this.classes.focus),i.prototype.show.call(this),this.element.find(":input:first").focus(),this._setupDraggables()},load:function(e,t){this.annotation=e;for(var n=0,r=this.fields.length;n');return t.element=r[0],"textarea"===t.type?n=a("",m.noCloneChecked=!!pe.cloneNode(!0).lastChild.defaultValue,pe.innerHTML="",m.option=!!pe.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function Ee(e,t){var n;return n=void 0!==e.getElementsByTagName?e.getElementsByTagName(t||"*"):void 0!==e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&H(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var be=/<|&#?\w+;/;function Le(e,t,n,r,i){for(var o,a,s,l,T,c,Q=t.createDocumentFragment(),u=[],d=0,p=e.length;d-1)i&&i.push(o);else if(T=se(o),a=Ee(Q.appendChild(o),"script"),T&&ye(a),n)for(c=0;o=a[c++];)he.test(o.type||"")&&n.push(o);return Q}var Se=/^([^.]*)(?:\.(.+)|)/;function ve(){return!0}function Oe(){return!1}function Ce(e,t){return e===function(){try{return g.activeElement}catch(e){}}()==("focus"===t)}function Ne(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)Ne(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=Oe;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each((function(){S.event.add(this,t,i,r,n)}))}function Me(e,t,n){n?(X.set(e,t,!1),S.event.add(e,t,{namespace:!1,handler:function(e){var r,i,o=X.get(this,t);if(1&e.isTrigger&&this[t]){if(o.length)(S.event.special[t]||{}).delegateType&&e.stopPropagation();else if(o=s.call(arguments),X.set(this,t,o),r=n(this,t),this[t](),o!==(i=X.get(this,t))||r?X.set(this,t,!1):i={},o!==i)return e.stopImmediatePropagation(),e.preventDefault(),i&&i.value}else o.length&&(X.set(this,t,{value:S.event.trigger(S.extend(o[0],S.Event.prototype),o.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===X.get(e,t)&&S.event.add(e,t,ve)}S.event={global:{},add:function(e,t,n,r,i){var o,a,s,l,T,c,Q,u,d,p,_,m=X.get(e);if($(e))for(n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(ae,i),n.guid||(n.guid=S.guid++),(l=m.events)||(l=m.events=Object.create(null)),(a=m.handle)||(a=m.handle=function(t){return void 0!==S&&S.event.triggered!==t.type?S.event.dispatch.apply(e,arguments):void 0}),T=(t=(t||"").match(V)||[""]).length;T--;)d=_=(s=Se.exec(t[T])||[])[1],p=(s[2]||"").split(".").sort(),d&&(Q=S.event.special[d]||{},d=(i?Q.delegateType:Q.bindType)||d,Q=S.event.special[d]||{},c=S.extend({type:d,origType:_,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:p.join(".")},o),(u=l[d])||((u=l[d]=[]).delegateCount=0,Q.setup&&!1!==Q.setup.call(e,r,p,a)||e.addEventListener&&e.addEventListener(d,a)),Q.add&&(Q.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?u.splice(u.delegateCount++,0,c):u.push(c),S.event.global[d]=!0)},remove:function(e,t,n,r,i){var o,a,s,l,T,c,Q,u,d,p,_,m=X.hasData(e)&&X.get(e);if(m&&(l=m.events)){for(T=(t=(t||"").match(V)||[""]).length;T--;)if(d=_=(s=Se.exec(t[T])||[])[1],p=(s[2]||"").split(".").sort(),d){for(Q=S.event.special[d]||{},u=l[d=(r?Q.delegateType:Q.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=u.length;o--;)c=u[o],!i&&_!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(u.splice(o,1),c.selector&&u.delegateCount--,Q.remove&&Q.remove.call(e,c));a&&!u.length&&(Q.teardown&&!1!==Q.teardown.call(e,p,m.handle)||S.removeEvent(e,d,m.handle),delete l[d])}else for(d in l)S.event.remove(e,d+t[T],n,r,!0);S.isEmptyObject(l)&&X.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),l=S.event.fix(e),T=(X.get(this,"events")||Object.create(null))[l.type]||[],c=S.event.special[l.type]||{};for(s[0]=l,t=1;t=1))for(;T!==this;T=T.parentNode||this)if(1===T.nodeType&&("click"!==e.type||!0!==T.disabled)){for(o=[],a={},n=0;n-1:S.find(i,this,null,[T]).length),a[i]&&o.push(r);o.length&&s.push({elem:T,handlers:o})}return T=this,l\s*$/g;function xe(e,t){return H(e,"table")&&H(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function we(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function De(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(X.hasData(e)&&(s=X.get(e).events))for(i in X.remove(t,"handle events"),s)for(n=0,r=s[i].length;n1&&"string"==typeof p&&!m.checkClone&&Re.test(p))return e.each((function(i){var o=e.eq(i);_&&(t[0]=p.call(this,i,o.html())),Ve(o,t,n,r)}));if(u&&(o=(i=Le(t,e[0].ownerDocument,!1,e,r)).firstChild,1===i.childNodes.length&&(i=o),o||r)){for(s=(a=S.map(Ee(i,"script"),Ie)).length;Q0&&ye(a,!l&&Ee(e,"script")),s},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if($(n)){if(t=n[X.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[X.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),S.fn.extend({detach:function(e){return ke(this,e,!0)},remove:function(e){return ke(this,e)},text:function(e){return Y(this,(function(e){return void 0===e?S.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 Ve(this,arguments,(function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||xe(this,e).appendChild(e)}))},prepend:function(){return Ve(this,arguments,(function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=xe(this,e);t.insertBefore(e,t.firstChild)}}))},before:function(){return Ve(this,arguments,(function(e){this.parentNode&&this.parentNode.insertBefore(e,this)}))},after:function(){return Ve(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&&(S.cleanData(Ee(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map((function(){return S.clone(this,e,t)}))},html:function(e){return Y(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&&!He.test(e)&&!ge[(fe.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n=0&&(l+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-l-s-.5))||0),l}function nt(e,t,n){var r=Fe(e),i=(!m.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=je(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Be.test(a)){if(!n)return a;a="auto"}return(!m.boxSizingReliable()&&i||!m.reliableTrDimensions()&&H(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+tt(e,t,n||(i?"border":"content"),o,r,a)+"px"}function rt(e,t,n,r,i){return new rt.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=je(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=Z(t),l=Ke.test(t),T=e.style;if(l||(t=Ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:T[t];"string"===(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ce(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||l||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),m.clearCloneStyle||""!==n||0!==t.indexOf("background")||(T[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(l?T.setProperty(t,n):T[t]=n))}},css:function(e,t,n,r){var i,o,a,s=Z(t);return Ke.test(t)||(t=Ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=je(e,t,r)),"normal"===i&&t in Je&&(i=Je[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],(function(e,t){S.cssHooks[t]={get:function(e,n,r){if(n)return!$e.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?nt(e,t,r):Ue(e,Xe,(function(){return nt(e,t,r)}))},set:function(e,n,r){var i,o=Fe(e),a=!m.scrollboxSize()&&"absolute"===o.position,s=(a||r)&&"border-box"===S.css(e,"boxSizing",!1,o),l=r?tt(e,t,r,s,o):0;return s&&a&&(l-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-tt(e,t,"border",!1,o)-.5)),l&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=S.css(e,t)),et(0,n,l)}}})),S.cssHooks.marginLeft=Ye(m.reliableMarginLeft,(function(e,t){if(t)return(parseFloat(je(e,"marginLeft"))||e.getBoundingClientRect().left-Ue(e,{marginLeft:0},(function(){return e.getBoundingClientRect().left})))+"px"})),S.each({margin:"",padding:"",border:"Width"},(function(e,t){S.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(S.cssHooks[e+t].set=et)})),S.fn.extend({css:function(e,t){return Y(this,(function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a1)}}),S.Tween=rt,rt.prototype={constructor:rt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=rt.propHooks[this.prop];return e&&e.get?e.get(this):rt.propHooks._default.get(this)},run:function(e){var t,n=rt.propHooks[this.prop];return this.options.duration?this.pos=t=S.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):rt.propHooks._default.set(this),this}},rt.prototype.init.prototype=rt.prototype,rt.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=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[Ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}},rt.propHooks.scrollTop=rt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=rt.prototype.init,S.fx.step={};var it,ot,at=/^(?:toggle|show|hide)$/,st=/queueHooks$/;function lt(){ot&&(!1===g.hidden&&r.requestAnimationFrame?r.requestAnimationFrame(lt):r.setTimeout(lt,S.fx.interval),S.fx.tick())}function Tt(){return r.setTimeout((function(){it=void 0})),it=Date.now()}function ct(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function Qt(e,t,n){for(var r,i=(ut.tweeners[t]||[]).concat(ut.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each((function(){S.removeAttr(this,e)}))}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return void 0===e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void S.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=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!m.radioValue&&"radio"===t&&H(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(V);if(i&&1===e.nodeType)for(;n=i[r++];)e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),(function(e,t){var n=pt[t]||S.find.attr;pt[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=pt[a],pt[a]=i,i=null!=n(e,t,r)?a:null,pt[a]=o),i}}));var _t=/^(?:input|select|textarea|button)$/i,mt=/^(?:a|area)$/i;function ft(e){return(e.match(V)||[]).join(" ")}function ht(e){return e.getAttribute&&e.getAttribute("class")||""}function gt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(V)||[]}S.fn.extend({prop:function(e,t){return Y(this,S.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each((function(){delete this[S.propFix[e]||e]}))}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.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=S.find.attr(e,"tabindex");return t?parseInt(t,10):_t.test(e.nodeName)||mt.test(e.nodeName)&&e.href?0:-1}}},propFix:{for:"htmlFor",class:"className"}}),m.optSelected||(S.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)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],(function(){S.propFix[this.toLowerCase()]=this})),S.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,l=0;if(f(e))return this.each((function(t){S(this).addClass(e.call(this,t,ht(this)))}));if((t=gt(e)).length)for(;n=this[l++];)if(i=ht(n),r=1===n.nodeType&&" "+ft(i)+" "){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ft(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,l=0;if(f(e))return this.each((function(t){S(this).removeClass(e.call(this,t,ht(this)))}));if(!arguments.length)return this.attr("class","");if((t=gt(e)).length)for(;n=this[l++];)if(i=ht(n),r=1===n.nodeType&&" "+ft(i)+" "){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");i!==(s=ft(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):f(e)?this.each((function(n){S(this).toggleClass(e.call(this,n,ht(this),t),t)})):this.each((function(){var t,i,o,a;if(r)for(i=0,o=S(this),a=gt(e);t=a[i++];)o.hasClass(t)?o.removeClass(t):o.addClass(t);else void 0!==e&&"boolean"!==n||((t=ht(this))&&X.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":X.get(this,"__className__")||""))}))},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+ft(ht(n))+" ").indexOf(t)>-1)return!0;return!1}});var Et=/\r/g;S.fn.extend({val:function(e){var t,n,r,i=this[0];return arguments.length?(r=f(e),this.each((function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,S(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=S.map(i,(function(e){return null==e?"":e+""}))),(t=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))}))):i?(t=S.valHooks[i.type]||S.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(Et,""):null==n?"":n:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ft(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],l=a?o+1:i.length;for(r=o<0?l:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],(function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=S.inArray(S(e).val(),t)>-1}},m.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})})),m.focusin="onfocusin"in r;var yt=/^(?:focusinfocus|focusoutblur)$/,bt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,i){var o,a,s,l,T,c,Q,u,p=[n||g],_=d.call(e,"type")?e.type:e,m=d.call(e,"namespace")?e.namespace.split("."):[];if(a=u=s=n=n||g,3!==n.nodeType&&8!==n.nodeType&&!yt.test(_+S.event.triggered)&&(_.indexOf(".")>-1&&(m=_.split("."),_=m.shift(),m.sort()),T=_.indexOf(":")<0&&"on"+_,(e=e[S.expando]?e:new S.Event(_,"object"==typeof e&&e)).isTrigger=i?2:3,e.namespace=m.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),Q=S.event.special[_]||{},i||!Q.trigger||!1!==Q.trigger.apply(n,t))){if(!i&&!Q.noBubble&&!h(n)){for(l=Q.delegateType||_,yt.test(l+_)||(a=a.parentNode);a;a=a.parentNode)p.push(a),s=a;s===(n.ownerDocument||g)&&p.push(s.defaultView||s.parentWindow||r)}for(o=0;(a=p[o++])&&!e.isPropagationStopped();)u=a,e.type=o>1?l:Q.bindType||_,(c=(X.get(a,"events")||Object.create(null))[e.type]&&X.get(a,"handle"))&&c.apply(a,t),(c=T&&a[T])&&c.apply&&$(a)&&(e.result=c.apply(a,t),!1===e.result&&e.preventDefault());return e.type=_,i||e.isDefaultPrevented()||Q._default&&!1!==Q._default.apply(p.pop(),t)||!$(n)||T&&f(n[_])&&!h(n)&&((s=n[T])&&(n[T]=null),S.event.triggered=_,e.isPropagationStopped()&&u.addEventListener(_,bt),n[_](),e.isPropagationStopped()&&u.removeEventListener(_,bt),S.event.triggered=void 0,s&&(n[T]=s)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each((function(){S.event.trigger(e,t,this)}))},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),m.focusin||S.each({focus:"focusin",blur:"focusout"},(function(e,t){var n=function(e){S.event.simulate(t,e.target,S.event.fix(e))};S.event.special[t]={setup:function(){var r=this.ownerDocument||this.document||this,i=X.access(r,t);i||r.addEventListener(e,n,!0),X.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this.document||this,i=X.access(r,t)-1;i?X.access(r,t,i):(r.removeEventListener(e,n,!0),X.remove(r,t))}}}));var Lt=r.location,St={guid:Date.now()},vt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new r.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,(function(e){return e.textContent})).join("\n"):e)),t};var Ot=/\[\]$/,Ct=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,Mt=/^(?:input|select|textarea|keygen)/i;function Ht(e,t,n,r){var i;if(Array.isArray(t))S.each(t,(function(t,i){n||Ot.test(e)?r(e,i):Ht(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)}));else if(n||"object"!==b(t))r(e,t);else for(i in t)Ht(e+"["+i+"]",t[i],n,r)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=f(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,(function(){i(this.name,this.value)}));else for(n in e)Ht(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map((function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this})).filter((function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&Mt.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!me.test(e))})).map((function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,(function(e){return{name:t.name,value:e.replace(Ct,"\r\n")}})):{name:t.name,value:n.replace(Ct,"\r\n")}})).get()}});var Rt=/%20/g,At=/#.*$/,xt=/([?&])_=[^&]*/,It=/^(.*?):[ \t]*([^\r\n]*)$/gm,wt=/^(?:GET|HEAD)$/,Dt=/^\/\//,Pt={},Vt={},kt="*/".concat("*"),Bt=g.createElement("a");function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(V)||[];if(f(n))for(;r=o[i++];)"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function Ut(e,t,n,r){var i={},o=e===Vt;function a(s){var l;return i[s]=!0,S.each(e[s]||[],(function(e,s){var T=s(t,n,r);return"string"!=typeof T||o||i[T]?o?!(l=T):void 0:(t.dataTypes.unshift(T),a(T),!1)})),l}return a(t.dataTypes[0])||!i["*"]&&a("*")}function Gt(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Bt.href=Lt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Lt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Lt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":kt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Gt(Gt(e,S.ajaxSettings),t):Gt(S.ajaxSettings,e)},ajaxPrefilter:Ft(Pt),ajaxTransport:Ft(Vt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var n,i,o,a,s,l,T,c,Q,u,d=S.ajaxSetup({},t),p=d.context||d,_=d.context&&(p.nodeType||p.jquery)?S(p):S.event,m=S.Deferred(),f=S.Callbacks("once memory"),h=d.statusCode||{},E={},y={},b="canceled",L={readyState:0,getResponseHeader:function(e){var t;if(T){if(!a)for(a={};t=It.exec(o);)a[t[1].toLowerCase()+" "]=(a[t[1].toLowerCase()+" "]||[]).concat(t[2]);t=a[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return T?o:null},setRequestHeader:function(e,t){return null==T&&(e=y[e.toLowerCase()]=y[e.toLowerCase()]||e,E[e]=t),this},overrideMimeType:function(e){return null==T&&(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(T)L.always(e[L.status]);else for(t in e)h[t]=[h[t],e[t]];return this},abort:function(e){var t=e||b;return n&&n.abort(t),v(0,t),this}};if(m.promise(L),d.url=((e||d.url||Lt.href)+"").replace(Dt,Lt.protocol+"//"),d.type=t.method||t.type||d.method||d.type,d.dataTypes=(d.dataType||"*").toLowerCase().match(V)||[""],null==d.crossDomain){l=g.createElement("a");try{l.href=d.url,l.href=l.href,d.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){d.crossDomain=!0}}if(d.data&&d.processData&&"string"!=typeof d.data&&(d.data=S.param(d.data,d.traditional)),Ut(Pt,d,t,L),T)return L;for(Q in(c=S.event&&d.global)&&0==S.active++&&S.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!wt.test(d.type),i=d.url.replace(At,""),d.hasContent?d.data&&d.processData&&0===(d.contentType||"").indexOf("application/x-www-form-urlencoded")&&(d.data=d.data.replace(Rt,"+")):(u=d.url.slice(i.length),d.data&&(d.processData||"string"==typeof d.data)&&(i+=(vt.test(i)?"&":"?")+d.data,delete d.data),!1===d.cache&&(i=i.replace(xt,"$1"),u=(vt.test(i)?"&":"?")+"_="+St.guid+++u),d.url=i+u),d.ifModified&&(S.lastModified[i]&&L.setRequestHeader("If-Modified-Since",S.lastModified[i]),S.etag[i]&&L.setRequestHeader("If-None-Match",S.etag[i])),(d.data&&d.hasContent&&!1!==d.contentType||t.contentType)&&L.setRequestHeader("Content-Type",d.contentType),L.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+kt+"; q=0.01":""):d.accepts["*"]),d.headers)L.setRequestHeader(Q,d.headers[Q]);if(d.beforeSend&&(!1===d.beforeSend.call(p,L,d)||T))return L.abort();if(b="abort",f.add(d.complete),L.done(d.success),L.fail(d.error),n=Ut(Vt,d,t,L)){if(L.readyState=1,c&&_.trigger("ajaxSend",[L,d]),T)return L;d.async&&d.timeout>0&&(s=r.setTimeout((function(){L.abort("timeout")}),d.timeout));try{T=!1,n.send(E,v)}catch(e){if(T)throw e;v(-1,e)}}else v(-1,"No Transport");function v(e,t,a,l){var Q,u,g,E,y,b=t;T||(T=!0,s&&r.clearTimeout(s),n=void 0,o=l||"",L.readyState=e>0?4:0,Q=e>=200&&e<300||304===e,a&&(E=function(e,t,n){for(var r,i,o,a,s=e.contents,l=e.dataTypes;"*"===l[0];)l.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){l.unshift(i);break}if(l[0]in n)o=l[0];else{for(i in n){if(!l[0]||e.converters[i+" "+l[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==l[0]&&l.unshift(o),n[o]}(d,L,a)),!Q&&S.inArray("script",d.dataTypes)>-1&&S.inArray("json",d.dataTypes)<0&&(d.converters["text script"]=function(){}),E=function(e,t,n,r){var i,o,a,s,l,T={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)T[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!l&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),l=o,o=c.shift())if("*"===o)o=l;else if("*"!==l&&l!==o){if(!(a=T[l+" "+o]||T["* "+o]))for(i in T)if((s=i.split(" "))[1]===o&&(a=T[l+" "+s[0]]||T["* "+s[0]])){!0===a?a=T[i]:!0!==T[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 "+l+" to "+o}}}return{state:"success",data:t}}(d,E,L,Q),Q?(d.ifModified&&((y=L.getResponseHeader("Last-Modified"))&&(S.lastModified[i]=y),(y=L.getResponseHeader("etag"))&&(S.etag[i]=y)),204===e||"HEAD"===d.type?b="nocontent":304===e?b="notmodified":(b=E.state,u=E.data,Q=!(g=E.error))):(g=b,!e&&b||(b="error",e<0&&(e=0))),L.status=e,L.statusText=(t||b)+"",Q?m.resolveWith(p,[u,b,L]):m.rejectWith(p,[L,b,g]),L.statusCode(h),h=void 0,c&&_.trigger(Q?"ajaxSuccess":"ajaxError",[L,d,Q?u:g]),f.fireWith(p,[L,b]),c&&(_.trigger("ajaxComplete",[L,d]),--S.active||S.event.trigger("ajaxStop")))}return L},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],(function(e,t){S[t]=function(e,n,r,i){return f(n)&&(i=i||r,r=n,n=void 0),S.ajax(S.extend({url:e,type:t,dataType:i,data:n,success:r},S.isPlainObject(e)&&e))}})),S.ajaxPrefilter((function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")})),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(f(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map((function(){for(var e=this;e.firstElementChild;)e=e.firstElementChild;return e})).append(this)),this},wrapInner:function(e){return f(e)?this.each((function(t){S(this).wrapInner(e.call(this,t))})):this.each((function(){var t=S(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)}))},wrap:function(e){var t=f(e);return this.each((function(n){S(this).wrapAll(t?e.call(this,n):e)}))},unwrap:function(e){return this.parent(e).not("body").each((function(){S(this).replaceWith(this.childNodes)})),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new r.XMLHttpRequest}catch(e){}};var jt={0:200,1223:204},Yt=S.ajaxSettings.xhr();m.cors=!!Yt&&"withCredentials"in Yt,m.ajax=Yt=!!Yt,S.ajaxTransport((function(e){var t,n;if(m.cors||Yt&&!e.crossDomain)return{send:function(i,o){var a,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(a in e.xhrFields)s[a]=e.xhrFields[a];for(a in e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest"),i)s.setRequestHeader(a,i[a]);t=function(e){return function(){t&&(t=n=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(jt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=t(),n=s.onerror=s.ontimeout=t("error"),void 0!==s.onabort?s.onabort=n:s.onreadystatechange=function(){4===s.readyState&&r.setTimeout((function(){t&&n()}))},t=t("abort");try{s.send(e.hasContent&&e.data||null)}catch(e){if(t)throw e}},abort:function(){t&&t()}}})),S.ajaxPrefilter((function(e){e.crossDomain&&(e.contents.script=!1)})),S.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 S.globalEval(e),e}}}),S.ajaxPrefilter("script",(function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")})),S.ajaxTransport("script",(function(e){var t,n;if(e.crossDomain||e.scriptAttrs)return{send:function(r,i){t=S("