From 65a80884ac52b2ae45074851d325913fd10d4bc8 Mon Sep 17 00:00:00 2001 From: Dario Date: Sun, 15 Dec 2019 13:45:25 +0100 Subject: [PATCH 01/31] yarn dev --- themes/dark/assets/js/app.js | 17 +- themes/dark/assets/js/index.js | 17 +- themes/dark/assets/js/medusa-runtime.js | 3883 +++++++++++++++++++- themes/dark/assets/js/vendors.js | 1830 ++++++++- themes/dark/assets/js/vendors~date-fns.js | 2549 ++++++++++++- themes/light/assets/js/app.js | 17 +- themes/light/assets/js/index.js | 17 +- themes/light/assets/js/medusa-runtime.js | 3883 +++++++++++++++++++- themes/light/assets/js/vendors.js | 1830 ++++++++- themes/light/assets/js/vendors~date-fns.js | 2549 ++++++++++++- 10 files changed, 16316 insertions(+), 276 deletions(-) diff --git a/themes/dark/assets/js/app.js b/themes/dark/assets/js/app.js index dfb9338e37..c98aa1431c 100644 --- a/themes/dark/assets/js/app.js +++ b/themes/dark/assets/js/app.js @@ -1,2 +1,15 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{252:function(o,e,n){"use strict";n.r(e);var t=n(9),a=n(33),c=n(25),s=n(22),i=n(6);t.a.config.devtools=!0,t.a.config.performance=!0,Object(a.c)(),Object(a.b)();const d=new t.a({name:"app",router:c.b,store:s.a,data:()=>({globalLoading:!1,pageComponent:!1}),mounted(){if(i.f&&console.log("App Mounted!"),!window.location.pathname.includes("/login")){const{$store:o}=this;Promise.all([o.dispatch("login",{username:window.username}),o.dispatch("getConfig"),o.dispatch("getStats")]).then(([o,e])=>{i.f&&console.log("App Loaded!");const n=new CustomEvent("medusa-config-loaded",{detail:e.main});window.dispatchEvent(n)}).catch(o=>{console.debug(o),alert("Unable to connect to Medusa!")})}}}).$mount("#vue-wrap");e.default=d}},[[252,1,0,2]]]); -//# sourceMappingURL=app.js.map \ No newline at end of file +(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["app"],{ + +/***/ "./src/app.js": +/*!********************!*\ + !*** ./src/app.js ***! + \********************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n/* harmony import */ var _global_vue_shim__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./global-vue-shim */ \"./src/global-vue-shim.js\");\n/* harmony import */ var _router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./router */ \"./src/router/index.js\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./store */ \"./src/store/index.js\");\n/* harmony import */ var _utils_core__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/core */ \"./src/utils/core.js\");\n\n\n\n\n\nvue__WEBPACK_IMPORTED_MODULE_0__[\"default\"].config.devtools = true;\nvue__WEBPACK_IMPORTED_MODULE_0__[\"default\"].config.performance = true;\nObject(_global_vue_shim__WEBPACK_IMPORTED_MODULE_1__[\"registerPlugins\"])(); // @TODO: Remove this before v1.0.0\n\nObject(_global_vue_shim__WEBPACK_IMPORTED_MODULE_1__[\"registerGlobalComponents\"])();\nconst app = new vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({\n name: 'app',\n router: _router__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n store: _store__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n\n data() {\n return {\n globalLoading: false,\n pageComponent: false\n };\n },\n\n mounted() {\n if (_utils_core__WEBPACK_IMPORTED_MODULE_4__[\"isDevelopment\"]) {\n console.log('App Mounted!');\n }\n\n if (!window.location.pathname.includes('/login')) {\n const {\n $store\n } = this;\n Promise.all([$store.dispatch('login', {\n username: window.username\n }), $store.dispatch('getConfig'), $store.dispatch('getStats')]).then(([_, config]) => {\n if (_utils_core__WEBPACK_IMPORTED_MODULE_4__[\"isDevelopment\"]) {\n console.log('App Loaded!');\n } // Legacy - send config.main to jQuery (received by index.js)\n\n\n const event = new CustomEvent('medusa-config-loaded', {\n detail: config.main\n });\n window.dispatchEvent(event);\n }).catch(error => {\n console.debug(error);\n alert('Unable to connect to Medusa!'); // eslint-disable-line no-alert\n });\n }\n }\n\n}).$mount('#vue-wrap');\n/* harmony default export */ __webpack_exports__[\"default\"] = (app);\n\n//# sourceURL=webpack:///./src/app.js?"); + +/***/ }) + +},[["./src/app.js","vendors","medusa-runtime","vendors~date-fns"]]]); \ No newline at end of file diff --git a/themes/dark/assets/js/index.js b/themes/dark/assets/js/index.js index a3f6819ef8..f65c1ae2b9 100644 --- a/themes/dark/assets/js/index.js +++ b/themes/dark/assets/js/index.js @@ -1,2 +1,15 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[4],{139:function(e,o,n){"use strict";n.r(o);var t=n(4),i=n.n(t),r=n(5),w=n.n(r),c=(n(140),n(153),n(154),n(155),n(163),n(9)),d=n(1),a=n(17),u=n(31),s=n.n(u),p=n(28),l=n.n(p),g=n(22),b=n(25),f=n(3),m=n(33);function y(e,o){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);o&&(t=t.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,t)}return n}window&&(window.globalVueShim=m.a,window.$=w.a,window.jQuery=w.a,window.Vue=c.a,window.Vuex=d.b,window.ToggleButton=a.ToggleButton,window.axios=s.a,window._={debounce:l()},window.store=g.a,window.router=b.b,window.apiRoute=f.c,window.apiv1=f.d,window.api=f.a,window.MEDUSA={common:{},config:{},home:{},addShows:{},layout:{}},window.webRoot=f.e,window.apiKey=f.b,window.components=[]);const h={exec(e,o){const n=MEDUSA;o=void 0===o?"init":o,""!==e&&n[e]&&"function"==typeof n[e][o]&&n[e][o]()},init(){w()("[v-cloak]").removeAttr("v-cloak");const{body:e}=document,o=e.getAttribute("data-controller"),n=e.getAttribute("data-action");h.exec("common"),h.exec(o),h.exec(o,n),window.dispatchEvent(new Event("medusa-loaded"))}},{pathname:O}=window.location;if(!O.includes("/login")&&!O.includes("/apibuilder")){const e=e=>{const o=e.detail,n="dark"===o.themeName?"-dark":"";MEDUSA.config=function(e){for(var o=1;o'}),w()(document).ready(h.init)};window.addEventListener("medusa-config-loaded",e,{once:!0})}}},[[139,1,0,2]]]); -//# sourceMappingURL=index.js.map \ No newline at end of file +(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["index"],{ + +/***/ "./src/index.js": +/*!**********************!*\ + !*** ./src/index.js ***! + \**********************/ +/*! no exports provided */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\");\n/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\");\n/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! bootstrap */ \"./node_modules/bootstrap/dist/js/npm.js\");\n/* harmony import */ var bootstrap__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(bootstrap__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var bootstrap_dist_css_bootstrap_min_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! bootstrap/dist/css/bootstrap.min.css */ \"./node_modules/bootstrap/dist/css/bootstrap.min.css\");\n/* harmony import */ var bootstrap_dist_css_bootstrap_min_css__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(bootstrap_dist_css_bootstrap_min_css__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var vue_snotify_styles_material_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! vue-snotify/styles/material.css */ \"./node_modules/vue-snotify/styles/material.css\");\n/* harmony import */ var vue_snotify_styles_material_css__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(vue_snotify_styles_material_css__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _vendor_js_tablesorter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../vendor/js/tablesorter */ \"./vendor/js/tablesorter.js\");\n/* harmony import */ var _vendor_css_open_sans_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../vendor/css/open-sans.css */ \"./vendor/css/open-sans.css\");\n/* harmony import */ var _vendor_css_open_sans_css__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_vendor_css_open_sans_css__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm.js\");\n/* harmony import */ var vuex__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! vuex */ \"./node_modules/vuex/dist/vuex.esm.js\");\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vue-js-toggle-button */ \"./node_modules/vue-js-toggle-button/dist/index.js\");\n/* harmony import */ var vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n/* harmony import */ var axios__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(axios__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash/debounce */ \"./node_modules/lodash/debounce.js\");\n/* harmony import */ var lodash_debounce__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lodash_debounce__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./store */ \"./src/store/index.js\");\n/* harmony import */ var _router__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./router */ \"./src/router/index.js\");\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./api */ \"./src/api.js\");\n/* harmony import */ var _global_vue_shim__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./global-vue-shim */ \"./src/global-vue-shim.js\");\n\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/* eslint-disable import/no-unassigned-import */\n\n\n\n\n\n\n/* eslint-enable import/no-unassigned-import */\n\n\n\n\n\n\n\n\n\n\n\nif (window) {\n // @TODO: Remove this before v1.0.0\n window.globalVueShim = _global_vue_shim__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; // Adding libs to window so mako files can use them\n\n window.$ = jquery__WEBPACK_IMPORTED_MODULE_1___default.a;\n window.jQuery = jquery__WEBPACK_IMPORTED_MODULE_1___default.a;\n window.Vue = vue__WEBPACK_IMPORTED_MODULE_7__[\"default\"];\n window.Vuex = vuex__WEBPACK_IMPORTED_MODULE_8__[\"default\"];\n window.ToggleButton = vue_js_toggle_button__WEBPACK_IMPORTED_MODULE_9__[\"ToggleButton\"];\n window.axios = axios__WEBPACK_IMPORTED_MODULE_10___default.a;\n window._ = {\n debounce: (lodash_debounce__WEBPACK_IMPORTED_MODULE_11___default())\n };\n window.store = _store__WEBPACK_IMPORTED_MODULE_12__[\"default\"];\n window.router = _router__WEBPACK_IMPORTED_MODULE_13__[\"default\"];\n window.apiRoute = _api__WEBPACK_IMPORTED_MODULE_14__[\"apiRoute\"];\n window.apiv1 = _api__WEBPACK_IMPORTED_MODULE_14__[\"apiv1\"];\n window.api = _api__WEBPACK_IMPORTED_MODULE_14__[\"api\"];\n window.MEDUSA = {\n common: {},\n config: {},\n home: {},\n addShows: {},\n layout: {}\n };\n window.webRoot = _api__WEBPACK_IMPORTED_MODULE_14__[\"webRoot\"];\n window.apiKey = _api__WEBPACK_IMPORTED_MODULE_14__[\"apiKey\"]; // Push x-template components to this array to register them globally\n\n window.components = [];\n}\n\nconst UTIL = {\n exec(controller, action) {\n const ns = MEDUSA;\n action = action === undefined ? 'init' : action;\n\n if (controller !== '' && ns[controller] && typeof ns[controller][action] === 'function') {\n ns[controller][action]();\n }\n },\n\n init() {\n jquery__WEBPACK_IMPORTED_MODULE_1___default()('[v-cloak]').removeAttr('v-cloak');\n const {\n body\n } = document;\n const controller = body.getAttribute('data-controller');\n const action = body.getAttribute('data-action');\n UTIL.exec('common'); // Load common\n\n UTIL.exec(controller); // Load MEDUSA[controller]\n\n UTIL.exec(controller, action); // Load MEDUSA[controller][action]\n\n window.dispatchEvent(new Event('medusa-loaded'));\n }\n\n};\nconst {\n pathname\n} = window.location;\n\nif (!pathname.includes('/login') && !pathname.includes('/apibuilder')) {\n const configLoaded = event => {\n const data = event.detail;\n const themeSpinner = data.themeName === 'dark' ? '-dark' : '';\n MEDUSA.config = _objectSpread({}, MEDUSA.config, {}, data, {\n themeSpinner,\n loading: ''\n });\n jquery__WEBPACK_IMPORTED_MODULE_1___default()(document).ready(UTIL.init);\n };\n\n window.addEventListener('medusa-config-loaded', configLoaded, {\n once: true\n });\n}\n\n//# sourceURL=webpack:///./src/index.js?"); + +/***/ }) + +},[["./src/index.js","vendors","medusa-runtime","vendors~date-fns"]]]); \ No newline at end of file diff --git a/themes/dark/assets/js/medusa-runtime.js b/themes/dark/assets/js/medusa-runtime.js index 8faeaccfe3..de9e75e174 100644 --- a/themes/dark/assets/js/medusa-runtime.js +++ b/themes/dark/assets/js/medusa-runtime.js @@ -1,2 +1,3881 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[,,function(e,t,n){"use strict";var s=n(4),a=n.n(s),o=n(1),i=n(25);function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}var l={name:"app-link",props:{to:[String,Object],href:String,indexerId:{type:String},placeholder:{type:String,default:"indexer-to-name"}},computed:function(e){for(var t=1;tdocument.querySelector("base").getAttribute("href"),computedHref(){const{href:e,indexerId:t,placeholder:n,indexerName:s}=this;return t&&n?e.replace(n,s):e},isIRC(){if(this.computedHref)return this.computedHref.startsWith("irc://")},isAbsolute(){const e=this.computedHref;if(e)return/^[a-z][a-z0-9+.-]*:/.test(e)},isExternal(){const e=this.computedBase,t=this.computedHref;if(t)return!t.startsWith(e)&&!t.startsWith("webcal://")},isHashPath(){if(this.computedHref)return this.computedHref.startsWith("#")},anonymisedHref(){const{anonRedirect:e}=this.config,t=this.computedHref;if(t)return e?e+t:t},matchingVueRoute(){const{isAbsolute:e,isExternal:t,computedHref:n}=this;if(e&&t)return;const{route:s}=i.b.resolve(i.a+n);return s.name?s:void 0},linkProperties(){const{to:e,isIRC:t,isAbsolute:n,isExternal:s,isHashPath:a,anonymisedHref:o,matchingVueRoute:i}=this,r=this.computedBase,l=this.computedHref;return e?{is:"router-link",to:e}:l?i&&this.$route&&i.meta.converted&&this.$route.meta.converted&&window.loadMainApp?{is:"router-link",to:i.fullPath}:{is:"a",target:n&&s?"_blank":"_self",href:(()=>{if(a){const{location:e}=window;if(0===e.hash.length){const t=e.href.endsWith("#")?l.substr(1):l;return e.href+t}return e.href.replace(e.hash,"")+l}return t?l:n?s?o:l:new URL(l,r).href})(),rel:n&&s?"noreferrer":void 0}:{is:"a",falseLink:Boolean(this.$attrs.name)||void 0}}})},c=(n(190),n(0)),d=Object(c.a)(l,function(){var e=this,t=e.$createElement;return(e._self._c||t)(e.linkProperties.is,{tag:"component",class:{"router-link":"router-link"===e.linkProperties.is},attrs:{to:e.linkProperties.to,href:e.linkProperties.href,target:e.linkProperties.target,rel:e.linkProperties.rel,"false-link":e.linkProperties.falseLink}},[e._t("default")],2)},[],!1,null,null,null).exports,u=n(3),p={name:"asset",components:{AppLink:d},props:{showSlug:{type:String},type:{type:String,required:!0},default:{type:String,required:!0},link:{type:Boolean,default:!1},cls:{type:String}},data:()=>({error:!1}),computed:{src(){const{error:e,showSlug:t,type:n}=this;return!e&&t&&n?u.e+"/api/v2/series/"+t+"/asset/"+n+"?api_key="+u.b:this.default},href(){if(this.link)return this.src.replace("Thumb","")}}},h=Object(c.a)(p,function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.link?n("app-link",{attrs:{href:e.href}},[n("img",{class:e.cls,attrs:{src:e.src},on:{error:function(t){e.error=!0}}})]):n("img",{class:e.cls,attrs:{src:e.src},on:{error:function(t){e.error=!0}}})},[],!1,null,null,null).exports,f={name:"config-template",props:{label:{type:String,required:!0},labelFor:{type:String,required:!0}}},m=Object(c.a)(f,function(){var e=this.$createElement,t=this._self._c||e;return t("div",{attrs:{id:"config-template-content"}},[t("div",{staticClass:"form-group"},[t("div",{staticClass:"row"},[t("label",{staticClass:"col-sm-2 control-label",attrs:{for:this.labelFor}},[t("span",[this._v(this._s(this.label))])]),this._v(" "),t("div",{staticClass:"col-sm-10 content"},[this._t("default")],2)])])])},[],!1,null,null,null).exports,g={name:"config-textbox-number",props:{label:{type:String,required:!0},id:{type:String,required:!0},explanations:{type:Array,default:()=>[]},value:{type:Number,default:10},inputClass:{type:String,default:"form-control input-sm input75"},min:{type:Number,default:10},max:{type:Number,default:null},step:{type:Number,default:1},placeholder:{type:String,default:""},disabled:{type:Boolean,default:!1}},data:()=>({localValue:null}),mounted(){const{value:e}=this;this.localValue=e},watch:{value(){const{value:e}=this;this.localValue=e}},methods:{updateValue(){const{localValue:e}=this;this.$emit("input",Number(e))}}},v=(n(192),Object(c.a)(g,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"config-textbox-number-content"}},[n("div",{staticClass:"form-group"},[n("div",{staticClass:"row"},[n("label",{staticClass:"col-sm-2 control-label",attrs:{for:e.id}},[n("span",[e._v(e._s(e.label))])]),e._v(" "),n("div",{staticClass:"col-sm-10 content"},[n("input",e._b({directives:[{name:"model",rawName:"v-model",value:e.localValue,expression:"localValue"}],attrs:{type:"number"},domProps:{value:e.localValue},on:{input:[function(t){t.target.composing||(e.localValue=t.target.value)},function(t){return e.updateValue()}]}},"input",{min:e.min,max:e.max,step:e.step,id:e.id,name:e.id,class:e.inputClass,placeholder:e.placeholder,disabled:e.disabled},!1)),e._v(" "),e._l(e.explanations,function(t,s){return n("p",{key:s},[e._v(e._s(t))])}),e._v(" "),e._t("default")],2)])])])},[],!1,null,null,null).exports),b={name:"config-textbox",props:{label:{type:String,required:!0},id:{type:String,required:!0},explanations:{type:Array,default:()=>[]},value:{type:String,default:""},type:{type:String,default:"text"},disabled:{type:Boolean,default:!1},inputClass:{type:String,default:"form-control input-sm max-input350"},placeholder:{type:String,default:""}},data:()=>({localValue:null}),mounted(){const{value:e}=this;this.localValue=e},watch:{value(){const{value:e}=this;this.localValue=e}},methods:{updateValue(){const{localValue:e}=this;this.$emit("input",e)}}},_=(n(194),Object(c.a)(b,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"config-textbox"}},[n("div",{staticClass:"form-group"},[n("div",{staticClass:"row"},[n("label",{staticClass:"col-sm-2 control-label",attrs:{for:e.id}},[n("span",[e._v(e._s(e.label))])]),e._v(" "),n("div",{staticClass:"col-sm-10 content"},["checkbox"===[e.id,e.type,e.id,e.inputClass,e.placeholder,e.disabled][1]?n("input",e._b({directives:[{name:"model",rawName:"v-model",value:e.localValue,expression:"localValue"}],attrs:{type:"checkbox"},domProps:{checked:Array.isArray(e.localValue)?e._i(e.localValue,null)>-1:e.localValue},on:{input:function(t){return e.updateValue()},change:function(t){var n=e.localValue,s=t.target,a=!!s.checked;if(Array.isArray(n)){var o=e._i(n,null);s.checked?o<0&&(e.localValue=n.concat([null])):o>-1&&(e.localValue=n.slice(0,o).concat(n.slice(o+1)))}else e.localValue=a}}},"input",{id:e.id,type:e.type,name:e.id,class:e.inputClass,placeholder:e.placeholder,disabled:e.disabled},!1)):"radio"===[e.id,e.type,e.id,e.inputClass,e.placeholder,e.disabled][1]?n("input",e._b({directives:[{name:"model",rawName:"v-model",value:e.localValue,expression:"localValue"}],attrs:{type:"radio"},domProps:{checked:e._q(e.localValue,null)},on:{input:function(t){return e.updateValue()},change:function(t){e.localValue=null}}},"input",{id:e.id,type:e.type,name:e.id,class:e.inputClass,placeholder:e.placeholder,disabled:e.disabled},!1)):n("input",e._b({directives:[{name:"model",rawName:"v-model",value:e.localValue,expression:"localValue"}],attrs:{type:[e.id,e.type,e.id,e.inputClass,e.placeholder,e.disabled][1]},domProps:{value:e.localValue},on:{input:[function(t){t.target.composing||(e.localValue=t.target.value)},function(t){return e.updateValue()}]}},"input",{id:e.id,type:e.type,name:e.id,class:e.inputClass,placeholder:e.placeholder,disabled:e.disabled},!1)),e._v(" "),e._l(e.explanations,function(t,s){return n("p",{key:s},[e._v(e._s(t))])}),e._v(" "),e._t("default")],2)])])])},[],!1,null,null,null).exports),w={name:"config-toggle-slider",components:{ToggleButton:n(17).ToggleButton},props:{label:{type:String,required:!0},id:{type:String,required:!0},value:{type:Boolean,default:null},disabled:{type:Boolean,default:!1},explanations:{type:Array,default:()=>[]}},data:()=>({localChecked:null}),mounted(){const{value:e}=this;this.localChecked=e},watch:{value(){const{value:e}=this;this.localChecked=e}},methods:{updateValue(){const{localChecked:e}=this;this.$emit("input",e)}}},y=(n(196),Object(c.a)(w,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"config-toggle-slider-content"}},[n("div",{staticClass:"form-group"},[n("div",{staticClass:"row"},[n("label",{staticClass:"col-sm-2 control-label",attrs:{for:e.id}},[n("span",[e._v(e._s(e.label))])]),e._v(" "),n("div",{staticClass:"col-sm-10 content"},[n("toggle-button",e._b({attrs:{width:45,height:22,sync:""},on:{input:function(t){return e.updateValue()}},model:{value:e.localChecked,callback:function(t){e.localChecked=t},expression:"localChecked"}},"toggle-button",{id:e.id,name:e.id,disabled:e.disabled},!1)),e._v(" "),e._l(e.explanations,function(t,s){return n("p",{key:s},[e._v(e._s(t))])}),e._v(" "),e._t("default")],2)])])])},[],!1,null,null,null).exports),x=n(38).a,k=(n(198),Object(c.a)(x,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"file-browser max-width"},[n("div",{class:e.showBrowseButton?"input-group":"input-group-no-btn"},[n("input",{directives:[{name:"model",rawName:"v-model",value:e.currentPath,expression:"currentPath"}],ref:"locationInput",staticClass:"form-control input-sm fileBrowserField",attrs:{name:e.name,type:"text"},domProps:{value:e.currentPath},on:{input:function(t){t.target.composing||(e.currentPath=t.target.value)}}}),e._v(" "),e.showBrowseButton?n("div",{staticClass:"input-group-btn",attrs:{title:e.title,alt:e.title},on:{click:function(t){return t.preventDefault(),e.openDialog(t)}}},[e._m(0)]):e._e()]),e._v(" "),n("div",{ref:"fileBrowserDialog",staticClass:"fileBrowserDialog",staticStyle:{display:"none"}}),e._v(" "),n("input",{ref:"fileBrowserSearchBox",staticClass:"form-control",staticStyle:{display:"none"},attrs:{type:"text"},domProps:{value:e.currentPath},on:{keyup:function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.browse(t.target.value)}}}),e._v(" "),n("ul",{ref:"fileBrowserFileList",staticStyle:{display:"none"}},e._l(e.files,function(t){return n("li",{key:t.name,staticClass:"ui-state-default ui-corner-all"},[n("a",{on:{mouseover:function(n){return e.toggleFolder(t,n)},mouseout:function(n){return e.toggleFolder(t,n)},click:function(n){return e.fileClicked(t)}}},[n("span",{class:"ui-icon "+(t.isFile?"ui-icon-blank":"ui-icon-folder-collapsed")}),e._v(" "+e._s(t.name)+"\n ")])])}),0)])},[function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"btn btn-default input-sm",staticStyle:{"font-size":"14px"}},[t("i",{staticClass:"glyphicon glyphicon-open"})])}],!1,null,"eff76864",null).exports),S=n(40).a,C=Object(c.a)(S,function(){var e=this.$createElement;return(this._self._c||e)("select")},[],!1,null,null,null).exports,O=n(41).a,P=Object(c.a)(O,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"name-pattern-wrapper"}},[e.type?n("div",{staticClass:"form-group"},[n("label",{staticClass:"col-sm-2 control-label",attrs:{for:"enable_naming_custom"}},[n("span",[e._v("Custom "+e._s(e.type))])]),e._v(" "),n("div",{staticClass:"col-sm-10 content"},[n("toggle-button",{attrs:{width:45,height:22,id:"enable_naming_custom",name:"enable_naming_custom",sync:""},on:{input:function(t){return e.update()}},model:{value:e.isEnabled,callback:function(t){e.isEnabled=t},expression:"isEnabled"}}),e._v(" "),n("span",[e._v("Name "+e._s(e.type)+" shows differently than regular shows?")])],1)]):e._e(),e._v(" "),!e.type||e.isEnabled?n("div",{staticClass:"episode-naming"},[n("div",{staticClass:"form-group"},[e._m(0),e._v(" "),n("div",{staticClass:"col-sm-10 content"},[n("select",{directives:[{name:"model",rawName:"v-model",value:e.selectedNamingPattern,expression:"selectedNamingPattern"}],staticClass:"form-control input-sm",attrs:{id:"name_presets"},on:{change:[function(t){var n=Array.prototype.filter.call(t.target.options,function(e){return e.selected}).map(function(e){return"_value"in e?e._value:e.value});e.selectedNamingPattern=t.target.multiple?n:n[0]},e.updatePatternSamples],input:function(t){return e.update()}}},e._l(e.presets,function(t){return n("option",{key:t.pattern,attrs:{id:t.pattern}},[e._v(e._s(t.example))])}),0)])]),e._v(" "),n("div",{attrs:{id:"naming_custom"}},[e.isCustom?n("div",{staticClass:"form-group",staticStyle:{"padding-top":"0"}},[e._m(1),e._v(" "),n("div",{staticClass:"col-sm-10 content"},[n("input",{directives:[{name:"model",rawName:"v-model",value:e.customName,expression:"customName"}],staticClass:"form-control-inline-max input-sm max-input350",attrs:{type:"text",name:"naming_pattern",id:"naming_pattern"},domProps:{value:e.customName},on:{change:e.updatePatternSamples,input:[function(t){t.target.composing||(e.customName=t.target.value)},function(t){return e.update()}]}}),e._v(" "),n("img",{staticClass:"legend",attrs:{src:"images/legend16.png",width:"16",height:"16",alt:"[Toggle Key]",id:"show_naming_key",title:"Toggle Naming Legend"},on:{click:function(t){e.showLegend=!e.showLegend}}})])]):e._e(),e._v(" "),e.showLegend&&e.isCustom?n("div",{staticClass:"nocheck",attrs:{id:"naming_key"}},[n("table",{staticClass:"Key"},[e._m(2),e._v(" "),e._m(3),e._v(" "),n("tbody",[e._m(4),e._v(" "),e._m(5),e._v(" "),e._m(6),e._v(" "),e._m(7),e._v(" "),e._m(8),e._v(" "),e._m(9),e._v(" "),e._m(10),e._v(" "),e._m(11),e._v(" "),e._m(12),e._v(" "),e._m(13),e._v(" "),e._m(14),e._v(" "),e._m(15),e._v(" "),e._m(16),e._v(" "),e._m(17),e._v(" "),e._m(18),e._v(" "),e._m(19),e._v(" "),n("tr",[e._m(20),e._v(" "),n("td",[e._v("%M")]),e._v(" "),n("td",[e._v(e._s(e.getDateFormat("M")))])]),e._v(" "),n("tr",{staticClass:"even"},[n("td",[e._v(" ")]),e._v(" "),n("td",[e._v("%D")]),e._v(" "),n("td",[e._v(e._s(e.getDateFormat("d")))])]),e._v(" "),n("tr",[n("td",[e._v(" ")]),e._v(" "),n("td",[e._v("%Y")]),e._v(" "),n("td",[e._v(e._s(e.getDateFormat("yyyy")))])]),e._v(" "),n("tr",[e._m(21),e._v(" "),n("td",[e._v("%CM")]),e._v(" "),n("td",[e._v(e._s(e.getDateFormat("M")))])]),e._v(" "),n("tr",{staticClass:"even"},[n("td",[e._v(" ")]),e._v(" "),n("td",[e._v("%CD")]),e._v(" "),n("td",[e._v(e._s(e.getDateFormat("d")))])]),e._v(" "),n("tr",[n("td",[e._v(" ")]),e._v(" "),n("td",[e._v("%CY")]),e._v(" "),n("td",[e._v(e._s(e.getDateFormat("yyyy")))])]),e._v(" "),e._m(22),e._v(" "),e._m(23),e._v(" "),e._m(24),e._v(" "),e._m(25),e._v(" "),e._m(26),e._v(" "),e._m(27),e._v(" "),e._m(28),e._v(" "),e._m(29),e._v(" "),e._m(30)])])]):e._e()]),e._v(" "),e.selectedMultiEpStyle?n("div",{staticClass:"form-group"},[e._m(31),e._v(" "),n("div",{staticClass:"col-sm-10 content"},[n("select",{directives:[{name:"model",rawName:"v-model",value:e.selectedMultiEpStyle,expression:"selectedMultiEpStyle"}],staticClass:"form-control input-sm",attrs:{id:"naming_multi_ep",name:"naming_multi_ep"},on:{change:[function(t){var n=Array.prototype.filter.call(t.target.options,function(e){return e.selected}).map(function(e){return"_value"in e?e._value:e.value});e.selectedMultiEpStyle=t.target.multiple?n:n[0]},e.updatePatternSamples],input:function(t){return e.update(t)}}},e._l(e.availableMultiEpStyles,function(t){return n("option",{key:t.value,attrs:{id:"multiEpStyle"},domProps:{value:t.value}},[e._v(e._s(t.text))])}),0)])]):e._e(),e._v(" "),n("div",{staticClass:"form-group row"},[n("h3",{staticClass:"col-sm-12"},[e._v("Single-EP Sample:")]),e._v(" "),n("div",{staticClass:"example col-sm-12"},[n("span",{staticClass:"jumbo",attrs:{id:"naming_example"}},[e._v(e._s(e.namingExample))])])]),e._v(" "),e.isMulti?n("div",{staticClass:"form-group row"},[n("h3",{staticClass:"col-sm-12"},[e._v("Multi-EP sample:")]),e._v(" "),n("div",{staticClass:"example col-sm-12"},[n("span",{staticClass:"jumbo",attrs:{id:"naming_example_multi"}},[e._v(e._s(e.namingExampleMulti))])])]):e._e(),e._v(" "),e.animeType>0?n("div",{staticClass:"form-group"},[e._m(32),e._v(" "),n("div",{staticClass:"col-sm-10 content"},[n("input",{directives:[{name:"model",rawName:"v-model",value:e.animeType,expression:"animeType"}],attrs:{type:"radio",name:"naming_anime",id:"naming_anime",value:"1"},domProps:{checked:e._q(e.animeType,"1")},on:{change:[function(t){e.animeType="1"},e.updatePatternSamples],input:function(t){return e.update()}}}),e._v(" "),n("span",[e._v("Add the absolute number to the season/episode format?")]),e._v(" "),n("p",[e._v("Only applies to animes. (e.g. S15E45 - 310 vs S15E45)")])])]):e._e(),e._v(" "),e.animeType>0?n("div",{staticClass:"form-group"},[e._m(33),e._v(" "),n("div",{staticClass:"col-sm-10 content"},[n("input",{directives:[{name:"model",rawName:"v-model",value:e.animeType,expression:"animeType"}],attrs:{type:"radio",name:"naming_anime",id:"naming_anime_only",value:"2"},domProps:{checked:e._q(e.animeType,"2")},on:{change:[function(t){e.animeType="2"},e.updatePatternSamples],input:function(t){return e.update()}}}),e._v(" "),n("span",[e._v("Replace season/episode format with absolute number")]),e._v(" "),n("p",[e._v("Only applies to animes.")])])]):e._e(),e._v(" "),e.animeType>0?n("div",{staticClass:"form-group"},[e._m(34),e._v(" "),n("div",{staticClass:"col-sm-10 content"},[n("input",{directives:[{name:"model",rawName:"v-model",value:e.animeType,expression:"animeType"}],attrs:{type:"radio",name:"naming_anime",id:"naming_anime_none",value:"3"},domProps:{checked:e._q(e.animeType,"3")},on:{change:[function(t){e.animeType="3"},e.updatePatternSamples],input:function(t){return e.update()}}}),e._v(" "),n("span",[e._v("Don't include the absolute number")]),e._v(" "),n("p",[e._v("Only applies to animes.")])])]):e._e()]):e._e()])},[function(){var e=this.$createElement,t=this._self._c||e;return t("label",{staticClass:"col-sm-2 control-label",attrs:{for:"name_presets"}},[t("span",[this._v("Name Pattern:")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("label",{staticClass:"col-sm-2 control-label"},[t("span",[this._v(" ")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("thead",[t("tr",[t("th",{staticClass:"align-right"},[this._v("Meaning")]),this._v(" "),t("th",[this._v("Pattern")]),this._v(" "),t("th",{attrs:{width:"60%"}},[this._v("Result")])])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tfoot",[t("tr",[t("th",{attrs:{colspan:"3"}},[this._v("Use lower case if you want lower case names (eg. %sn, %e.n, %q_n etc)")])])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",[t("td",{staticClass:"align-right"},[t("b",[this._v("Show Name:")])]),this._v(" "),t("td",[this._v("%SN")]),this._v(" "),t("td",[this._v("Show Name")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",{staticClass:"even"},[t("td",[this._v(" ")]),this._v(" "),t("td",[this._v("%S.N")]),this._v(" "),t("td",[this._v("Show.Name")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",[t("td",[this._v(" ")]),this._v(" "),t("td",[this._v("%S_N")]),this._v(" "),t("td",[this._v("Show_Name")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",{staticClass:"even"},[t("td",{staticClass:"align-right"},[t("b",[this._v("Season Number:")])]),this._v(" "),t("td",[this._v("%S")]),this._v(" "),t("td",[this._v("2")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",[t("td",[this._v(" ")]),this._v(" "),t("td",[this._v("%0S")]),this._v(" "),t("td",[this._v("02")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",{staticClass:"even"},[t("td",{staticClass:"align-right"},[t("b",[this._v("XEM Season Number:")])]),this._v(" "),t("td",[this._v("%XS")]),this._v(" "),t("td",[this._v("2")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",[t("td",[this._v(" ")]),this._v(" "),t("td",[this._v("%0XS")]),this._v(" "),t("td",[this._v("02")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",{staticClass:"even"},[t("td",{staticClass:"align-right"},[t("b",[this._v("Episode Number:")])]),this._v(" "),t("td",[this._v("%E")]),this._v(" "),t("td",[this._v("3")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",[t("td",[this._v(" ")]),this._v(" "),t("td",[this._v("%0E")]),this._v(" "),t("td",[this._v("03")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",{staticClass:"even"},[t("td",{staticClass:"align-right"},[t("b",[this._v("XEM Episode Number:")])]),this._v(" "),t("td",[this._v("%XE")]),this._v(" "),t("td",[this._v("3")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",[t("td",[this._v(" ")]),this._v(" "),t("td",[this._v("%0XE")]),this._v(" "),t("td",[this._v("03")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",{staticClass:"even"},[t("td",{staticClass:"align-right"},[t("b",[this._v("Absolute Episode Number:")])]),this._v(" "),t("td",[this._v("%AB")]),this._v(" "),t("td",[this._v("003")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",[t("td",{staticClass:"align-right"},[t("b",[this._v("Xem Absolute Episode Number:")])]),this._v(" "),t("td",[this._v("%XAB")]),this._v(" "),t("td",[this._v("003")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",{staticClass:"even"},[t("td",{staticClass:"align-right"},[t("b",[this._v("Episode Name:")])]),this._v(" "),t("td",[this._v("%EN")]),this._v(" "),t("td",[this._v("Episode Name")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",[t("td",[this._v(" ")]),this._v(" "),t("td",[this._v("%E.N")]),this._v(" "),t("td",[this._v("Episode.Name")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",{staticClass:"even"},[t("td",[this._v(" ")]),this._v(" "),t("td",[this._v("%E_N")]),this._v(" "),t("td",[this._v("Episode_Name")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("td",{staticClass:"align-right"},[t("b",[this._v("Air Date:")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("td",{staticClass:"align-right"},[t("b",[this._v("Post-Processing Date:")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",[t("td",{staticClass:"align-right"},[t("b",[this._v("Quality:")])]),this._v(" "),t("td",[this._v("%QN")]),this._v(" "),t("td",[this._v("720p BluRay")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",{staticClass:"even"},[t("td",[this._v(" ")]),this._v(" "),t("td",[this._v("%Q.N")]),this._v(" "),t("td",[this._v("720p.BluRay")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",[t("td",[this._v(" ")]),this._v(" "),t("td",[this._v("%Q_N")]),this._v(" "),t("td",[this._v("720p_BluRay")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",[t("td",{staticClass:"align-right"},[t("b",[this._v("Scene Quality:")])]),this._v(" "),t("td",[this._v("%SQN")]),this._v(" "),t("td",[this._v("720p HDTV x264")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",{staticClass:"even"},[t("td",[this._v(" ")]),this._v(" "),t("td",[this._v("%SQ.N")]),this._v(" "),t("td",[this._v("720p.HDTV.x264")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",[t("td",[this._v(" ")]),this._v(" "),t("td",[this._v("%SQ_N")]),this._v(" "),t("td",[this._v("720p_HDTV_x264")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",{staticClass:"even"},[t("td",{staticClass:"align-right"},[t("i",{staticClass:"glyphicon glyphicon-info-sign",attrs:{title:"Multi-EP style is ignored"}}),this._v(" "),t("b",[this._v("Release Name:")])]),this._v(" "),t("td",[this._v("%RN")]),this._v(" "),t("td",[this._v("Show.Name.S02E03.HDTV.x264-RLSGROUP")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",[t("td",{staticClass:"align-right"},[t("i",{staticClass:"glyphicon glyphicon-info-sign",attrs:{title:"UNKNOWN_RELEASE_GROUP is used in place of RLSGROUP if it could not be properly detected"}}),this._v(" "),t("b",[this._v("Release Group:")])]),this._v(" "),t("td",[this._v("%RG")]),this._v(" "),t("td",[this._v("RLSGROUP")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("tr",{staticClass:"even"},[t("td",{staticClass:"align-right"},[t("i",{staticClass:"glyphicon glyphicon-info-sign",attrs:{title:"If episode is proper/repack add 'proper' to name."}}),this._v(" "),t("b",[this._v("Release Type:")])]),this._v(" "),t("td",[this._v("%RT")]),this._v(" "),t("td",[this._v("PROPER")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("label",{staticClass:"col-sm-2 control-label",attrs:{for:"naming_multi_ep"}},[t("span",[this._v("Multi-Episode Style:")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("label",{staticClass:"col-sm-2 control-label",attrs:{for:"naming_anime"}},[t("span",[this._v("Add Absolute Number")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("label",{staticClass:"col-sm-2 control-label",attrs:{for:"naming_anime_only"}},[t("span",[this._v("Only Absolute Number")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("label",{staticClass:"col-sm-2 control-label",attrs:{for:"naming_anime_none"}},[t("span",[this._v("No Absolute Number")])])}],!1,null,null,null).exports,E={name:"plot-info",directives:{tooltip:n(23).b},props:{description:{type:String,required:!0}},computed:{plotInfoClass(){return""===this.description?"plotInfoNone":"plotInfo"}}},D=(n(200),Object(c.a)(E,function(){var e=this.$createElement,t=this._self._c||e;return""!==this.description?t("img",{directives:[{name:"tooltip",rawName:"v-tooltip.right",value:{content:this.description},expression:"{content: description}",modifiers:{right:!0}}],class:this.plotInfoClass,attrs:{src:"images/info32.png",width:"16",height:"16",alt:""}}):this._e()},[],!1,null,"0729869c",null).exports);function T(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}var N={name:"quality-chooser",components:{AppLink:d},props:{overallQuality:{type:Number,default:window.qualityChooserInitialQuality},keep:{type:String,default:null,validator:e=>["keep","show"].includes(e)},showSlug:{type:String}},data:()=>({lock:!1,allowedQualities:[],preferredQualities:[],curQualityPreset:null,archive:!1,archivedStatus:"",archiveButton:{text:"Archive episodes",disabled:!1}}),computed:function(e){for(var t=1;te.consts.qualities.values,qualityPresets:e=>e.consts.qualities.presets,defaultQuality:e=>e.config.showDefaults.quality}),{},Object(o.d)(["getQualityPreset","splitQuality"]),{initialQuality(){return void 0===this.overallQuality?this.defaultQuality:this.overallQuality},selectedQualityPreset:{get(){return this.curQualityPreset},set(e){const{curQualityPreset:t,setQualityFromPreset:n}=this,[s,a]=Array.isArray(e)?e:[e,t];n(s,a),this.curQualityPreset=s}},explanation(){const{allowedQualities:e,preferredQualities:t,qualityValues:n}=this;return n.reduce((n,{value:s,name:a})=>{const o=t.includes(s);return(e.includes(s)||o)&&n.allowed.push(a),o&&n.preferred.push(a),n},{allowed:[],preferred:[]})},validQualities(){return this.qualityValues.filter(({key:e})=>"na"!==e)}}),asyncComputed:{async backloggedEpisodes(){const{showSlug:e,allowedQualities:t,preferredQualities:n}=this;if(!e)return null;if(t.length+n.length===0)return null;const s="series/".concat(e,"/legacy/backlogged"),a={allowed:t.join(","),preferred:n.join(",")};let o,i=!1;try{o=await u.a.get(s,{params:a})}catch(e){return{status:i,html:"Failed to get backlog prediction
"+String(e)}}const r=o.data.new,l=o.data.existing,c=Math.abs(r-l);let d="Current backlog: "+l+" episodes
";if(-1===r||-1===l)d="No qualities selected";else if(r===l)d+="This change won't affect your backlogged episodes",i=!0;else{d+="
New backlog: "+r+" episodes",d+="

";let e="";r>l?(d+="WARNING: ",e="increase",this.archive=!0):e="decrease",d+="Backlog will "+e+" by "+c+" episodes."}return{status:i,html:d}}},mounted(){this.setInitialPreset(this.initialQuality)},methods:{isQualityPreset(e){return void 0!==this.getQualityPreset({value:e})},setInitialPreset(e){const{isQualityPreset:t,keep:n}=this,s="keep"===n?"keep":t(e)?e:0;this.selectedQualityPreset=[s,e]},async archiveEpisodes(){this.archivedStatus="Archiving...";const e="series/".concat(this.showSlug,"/operation"),t=await u.a.post(e,{type:"ARCHIVE_EPISODES"});201===t.status?(this.archivedStatus="Successfully archived episodes",this.$asyncComputed.backloggedEpisodes.update()):204===t.status&&(this.archivedStatus="No episodes to be archived"),this.archiveButton.text="Finished",this.archiveButton.disabled=!0},setQualityFromPreset(e,t){if(null==e)return;[e,t].some(e=>"keep"===e)?e=this.initialQuality:0!==e&&this.isQualityPreset(e)||null===t||(e=t);const{allowed:n,preferred:s}=this.splitQuality(e);this.allowedQualities=n,this.preferredQualities=s}},watch:{overallQuality(e){this.lock||this.setInitialPreset(e)},allowedQualities(e){0===e.length&&this.preferredQualities.length>0&&(this.preferredQualities=[]),this.lock=!0,this.$emit("update:quality:allowed",e),this.$nextTick(()=>{this.lock=!1})},preferredQualities(e){this.lock=!0,this.$emit("update:quality:preferred",e),this.$nextTick(()=>{this.lock=!1})}}},A=(n(202),Object(c.a)(N,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("select",{directives:[{name:"model",rawName:"v-model.number",value:e.selectedQualityPreset,expression:"selectedQualityPreset",modifiers:{number:!0}}],staticClass:"form-control form-control-inline input-sm",attrs:{name:"quality_preset"},on:{change:function(t){var n=Array.prototype.filter.call(t.target.options,function(e){return e.selected}).map(function(t){var n="_value"in t?t._value:t.value;return e._n(n)});e.selectedQualityPreset=t.target.multiple?n:n[0]}}},[e.keep?n("option",{attrs:{value:"keep"}},[e._v("< Keep >")]):e._e(),e._v(" "),n("option",{domProps:{value:0}},[e._v("Custom")]),e._v(" "),e._l(e.qualityPresets,function(t){return n("option",{key:"quality-preset-"+t.key,domProps:{value:t.value}},[e._v("\n "+e._s(t.name)+"\n ")])})],2),e._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:0===e.selectedQualityPreset,expression:"selectedQualityPreset === 0"}],attrs:{id:"customQualityWrapper"}},[e._m(0),e._v(" "),n("div",[n("h5",[e._v("Allowed")]),e._v(" "),n("select",{directives:[{name:"model",rawName:"v-model.number",value:e.allowedQualities,expression:"allowedQualities",modifiers:{number:!0}}],staticClass:"form-control form-control-inline input-sm",attrs:{name:"allowed_qualities",multiple:"multiple",size:e.validQualities.length},on:{change:function(t){var n=Array.prototype.filter.call(t.target.options,function(e){return e.selected}).map(function(t){var n="_value"in t?t._value:t.value;return e._n(n)});e.allowedQualities=t.target.multiple?n:n[0]}}},e._l(e.validQualities,function(t){return n("option",{key:"quality-list-"+t.key,domProps:{value:t.value}},[e._v("\n "+e._s(t.name)+"\n ")])}),0)]),e._v(" "),n("div",[n("h5",[e._v("Preferred")]),e._v(" "),n("select",{directives:[{name:"model",rawName:"v-model.number",value:e.preferredQualities,expression:"preferredQualities",modifiers:{number:!0}}],staticClass:"form-control form-control-inline input-sm",attrs:{name:"preferred_qualities",multiple:"multiple",size:e.validQualities.length,disabled:0===e.allowedQualities.length},on:{change:function(t){var n=Array.prototype.filter.call(t.target.options,function(e){return e.selected}).map(function(t){var n="_value"in t?t._value:t.value;return e._n(n)});e.preferredQualities=t.target.multiple?n:n[0]}}},e._l(e.validQualities,function(t){return n("option",{key:"quality-list-"+t.key,domProps:{value:t.value}},[e._v("\n "+e._s(t.name)+"\n ")])}),0)])]),e._v(" "),"keep"!==e.selectedQualityPreset?n("div",[e.allowedQualities.length+e.preferredQualities.length>=1?n("div",{attrs:{id:"qualityExplanation"}},[e._m(1),e._v(" "),0===e.preferredQualities.length?n("h5",[e._v("\n This will download "),n("b",[e._v("any")]),e._v(" of these qualities and then stops searching:\n "),n("label",{attrs:{id:"allowedExplanation"}},[e._v(e._s(e.explanation.allowed.join(", ")))])]):[n("h5",[e._v("\n Downloads "),n("b",[e._v("any")]),e._v(" of these qualities:\n "),n("label",{attrs:{id:"allowedPreferredExplanation"}},[e._v(e._s(e.explanation.allowed.join(", ")))])]),e._v(" "),n("h5",[e._v("\n But it will stop searching when one of these is downloaded:\n "),n("label",{attrs:{id:"preferredExplanation"}},[e._v(e._s(e.explanation.preferred.join(", ")))])])]],2):n("div",[e._v("Please select at least one allowed quality.")])]):e._e(),e._v(" "),e.backloggedEpisodes?n("div",[n("h5",{staticClass:"{ 'red-text': !backloggedEpisodes.status }",domProps:{innerHTML:e._s(e.backloggedEpisodes.html)}})]):e._e(),e._v(" "),e.archive?n("div",{attrs:{id:"archive"}},[n("h5",[n("b",[e._v("Archive downloaded episodes that are not currently in\n "),n("app-link",{staticClass:"backlog-link",attrs:{href:"manage/backlogOverview/",target:"_blank"}},[e._v("backlog")]),e._v(".")],1),e._v(" "),n("br"),e._v("Avoids unnecessarily increasing your backlog\n "),n("br")]),e._v(" "),n("button",{staticClass:"btn-medusa btn-inline",attrs:{disabled:e.archiveButton.disabled},on:{click:function(t){return t.preventDefault(),e.archiveEpisodes(t)}}},[e._v("\n "+e._s(e.archiveButton.text)+"\n ")]),e._v(" "),n("h5",[e._v(e._s(e.archivedStatus))])]):e._e()])},[function(){var e=this.$createElement,t=this._self._c||e;return t("p",[t("b",[t("strong",[this._v("Preferred")])]),this._v(" qualities will replace those in "),t("b",[t("strong",[this._v("allowed")])]),this._v(", even if they are lower.\n ")])},function(){var e=this.$createElement,t=this._self._c||e;return t("h5",[t("b",[this._v("Quality setting explanation:")])])}],!1,null,"751f4e5c",null).exports),$=n(79),j=n(45).a,M=(n(206),Object(c.a)(j,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"scroll-buttons-wrapper"}},[n("div",{staticClass:"scroll-wrapper top",class:{show:e.showToTop},on:{click:function(t){return t.preventDefault(),e.scrollTop(t)}}},[e._m(0)]),e._v(" "),n("div",{staticClass:"scroll-wrapper left",class:{show:e.showLeftRight}},[n("span",{staticClass:"scroll-left-inner"},[n("i",{staticClass:"glyphicon glyphicon-circle-arrow-left",on:{click:function(t){return t.preventDefault(),e.scrollLeft(t)}}})])]),e._v(" "),n("div",{staticClass:"scroll-wrapper right",class:{show:e.showLeftRight}},[n("span",{staticClass:"scroll-right-inner"},[n("i",{staticClass:"glyphicon glyphicon-circle-arrow-right",on:{click:function(t){return t.preventDefault(),e.scrollRight(t)}}})])])])},[function(){var e=this.$createElement,t=this._self._c||e;return t("span",{staticClass:"scroll-top-inner"},[t("i",{staticClass:"glyphicon glyphicon-circle-arrow-up"})])}],!1,null,null,null).exports),L={name:"select-list",props:{listItems:{type:Array,default:()=>[],required:!0},unique:{type:Boolean,default:!0,required:!1},csvEnabled:{type:Boolean,default:!1,required:!1},disabled:{type:Boolean,default:!1}},data(){return{editItems:[],newItem:"",indexCounter:0,csv:"",csvMode:this.csvEnabled}},mounted(){this.editItems=this.sanitize(this.listItems),this.csv=this.editItems.map(e=>e.value).join(", ")},created(){const e=this.$watch("listItems",()=>{e(),this.editItems=this.sanitize(this.listItems),this.csv=this.editItems.map(e=>e.value).join(", ")})},methods:{addItem(e){this.unique&&this.editItems.find(t=>t.value===e)||(this.editItems.push({id:this.indexCounter,value:e}),this.indexCounter+=1)},addNewItem(){const{newItem:e,editItems:t}=this;""!==this.newItem&&(this.addItem(e),this.newItem="",this.$emit("change",t))},deleteItem(e){this.editItems=this.editItems.filter(t=>t!==e),this.$refs.newItemInput.focus(),this.$emit("change",this.editItems)},removeEmpty(e){return""===e.value&&this.deleteItem(e)},sanitize(e){return e?e.map(e=>"string"==typeof e?(this.indexCounter+=1,{id:this.indexCounter-1,value:e}):e):[]},syncValues(){this.csvMode?(this.editItems=[],this.csv.split(",").forEach(e=>{e.trim()&&this.addItem(e.trim())}),this.$emit("change",this.editItems)):this.csv=this.editItems.map(e=>e.value).join(", ")},switchFields(){this.syncValues(),this.csvMode=!this.csvMode}},watch:{csv(){this.syncValues()},listItems(){this.editItems=this.sanitize(this.listItems),this.newItem=""}}},I=(n(208),Object(c.a)(L,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",e._b({staticClass:"select-list max-width"},"div",{disabled:e.disabled},!1),[n("i",{staticClass:"switch-input glyphicon glyphicon-refresh",attrs:{title:"Switch between a list and comma separated values"},on:{click:function(t){return e.switchFields()}}}),e._v(" "),e.csvMode?n("div",{staticClass:"csv"},[n("input",{directives:[{name:"model",rawName:"v-model",value:e.csv,expression:"csv"}],staticClass:"form-control input-sm",attrs:{type:"text",placeholder:"add values comma separated"},domProps:{value:e.csv},on:{input:function(t){t.target.composing||(e.csv=t.target.value)}}})]):n("ul",[e._l(e.editItems,function(t){return n("li",{key:t.id},[n("div",{staticClass:"input-group"},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.value,expression:"item.value"}],staticClass:"form-control input-sm",attrs:{type:"text"},domProps:{value:t.value},on:{input:[function(n){n.target.composing||e.$set(t,"value",n.target.value)},function(n){return e.removeEmpty(t)}]}}),e._v(" "),n("div",{staticClass:"input-group-btn",on:{click:function(n){return e.deleteItem(t)}}},[e._m(0,!0)])])])}),e._v(" "),n("div",{staticClass:"new-item"},[n("div",{staticClass:"input-group"},[n("input",{directives:[{name:"model",rawName:"v-model",value:e.newItem,expression:"newItem"}],ref:"newItemInput",staticClass:"form-control input-sm",attrs:{type:"text",placeholder:"add new values per line"},domProps:{value:e.newItem},on:{input:function(t){t.target.composing||(e.newItem=t.target.value)}}}),e._v(" "),n("div",{staticClass:"input-group-btn",on:{click:function(t){return e.addNewItem()}}},[e._m(1)])])]),e._v(" "),e.newItem.length>0?n("div",{staticClass:"new-item-help"},[e._v("\n Click "),n("i",{staticClass:"glyphicon glyphicon-plus"}),e._v(" to finish adding the value.\n ")]):e._e()],2)])},[function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"btn btn-default input-sm",staticStyle:{"font-size":"14px"}},[t("i",{staticClass:"glyphicon glyphicon-remove",attrs:{title:"Remove"}})])},function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"btn btn-default input-sm",staticStyle:{"font-size":"14px"}},[t("i",{staticClass:"glyphicon glyphicon-plus",attrs:{title:"Add"}})])}],!1,null,"e3747674",null).exports);function B(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}var z={name:"show-selector",props:{showSlug:String,followSelection:{type:Boolean,default:!1},placeholder:String,selectClass:{type:String,default:"select-show form-control input-sm-custom"}},data(){return{selectedShowSlug:this.showSlug||this.placeholder,lock:!1}},computed:function(e){for(var t=1;te.layout,shows:e=>e.shows.shows}),{showLists(){const{layout:e,shows:t}=this,{animeSplitHome:n,sortArticle:s}=e,a=[{type:"Shows",shows:[]},{type:"Anime",shows:[]}];if(0===t.length)return;t.forEach(e=>{const t=Number(n&&e.config.anime);a[t].shows.push(e)});const o=e=>(s?e:e.replace(/^((?:The|A|An)\s)/i,"")).toLowerCase();return a.forEach(e=>{e.shows.sort((e,t)=>{const n=o(e.title),s=o(t.title);return ns?1:0})}),a},whichList(){const{showLists:e}=this,t=0!==e[0].shows.length,n=0!==e[1].shows.length;return t&&n?-1:n?1:0}}),watch:{showSlug(e){this.lock=!0,this.selectedShowSlug=e},selectedShowSlug(e){if(this.lock)return void(this.lock=!1);if(!this.followSelection)return;const{shows:t}=this,n=t.find(t=>t.id.slug===e);if(!n)return;const s=n.indexer,a=n.id[s],o=document.querySelector("base").getAttribute("href");window.location.href="".concat(o,"home/displayShow?indexername=").concat(s,"&seriesid=").concat(a)}}},R=(n(210),Object(c.a)(z,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"show-selector form-inline hidden-print"},[n("div",{staticClass:"select-show-group pull-left top-5 bottom-5"},[0===e.shows.length?n("select",{class:e.selectClass,attrs:{disabled:""}},[n("option",[e._v("Loading...")])]):n("select",{directives:[{name:"model",rawName:"v-model",value:e.selectedShowSlug,expression:"selectedShowSlug"}],class:e.selectClass,on:{change:[function(t){var n=Array.prototype.filter.call(t.target.options,function(e){return e.selected}).map(function(e){return"_value"in e?e._value:e.value});e.selectedShowSlug=t.target.multiple?n:n[0]},function(t){return e.$emit("change",e.selectedShowSlug)}]}},[e.placeholder?n("option",{attrs:{disabled:"",hidden:""},domProps:{value:e.placeholder,selected:!e.selectedShowSlug}},[e._v(e._s(e.placeholder))]):e._e(),e._v(" "),-1===e.whichList?e._l(e.showLists,function(t){return n("optgroup",{key:t.type,attrs:{label:t.type}},e._l(t.shows,function(t){return n("option",{key:t.id.slug,domProps:{value:t.id.slug}},[e._v(e._s(t.title))])}),0)}):e._l(e.showLists[e.whichList].shows,function(t){return n("option",{key:t.id.slug,domProps:{value:t.id.slug}},[e._v(e._s(t.title))])})],2)])])},[],!1,null,null,null).exports),F={name:"state-switch",props:{theme:{type:String,default:"dark",validator:e=>["dark","light"].includes(e)},state:{required:!0,validator:e=>["yes","no","loading","true","false","null"].includes(String(e))}},computed:{src(){const{theme:e,realState:t}=this;return"loading"===t?"images/loading16-".concat(e||"dark",".gif"):"images/".concat(t,"16.png")},alt(){const{realState:e}=this;return e.charAt(0).toUpperCase()+e.substr(1)},realState(){const{state:e}=this;return["null","true","false"].includes(String(e))?{null:"loading",true:"yes",false:"no"}[String(e)]:e}}},q=Object(c.a)(F,function(){var e=this,t=e.$createElement;return(e._self._c||t)("img",e._b({attrs:{height:"16",width:"16"},on:{click:function(t){return e.$emit("click")}}},"img",{src:e.src,alt:e.alt},!1))},[],!1,null,null,null).exports;n.d(t,"a",function(){return d}),n.d(t,"b",function(){return h}),n.d(t,"c",function(){return m}),n.d(t,"e",function(){return v}),n.d(t,"d",function(){return _}),n.d(t,"f",function(){return y}),n.d(t,"g",function(){return k}),n.d(t,"h",function(){return C}),n.d(t,"i",function(){return P}),n.d(t,"j",function(){return D}),n.d(t,"k",function(){return A}),n.d(t,"l",function(){return $.a}),n.d(t,"m",function(){return M}),n.d(t,"n",function(){return I}),n.d(t,"o",function(){return R}),n.d(t,"p",function(){return q})},function(e,t,n){"use strict";n.d(t,"e",function(){return o}),n.d(t,"b",function(){return i}),n.d(t,"c",function(){return r}),n.d(t,"d",function(){return l}),n.d(t,"a",function(){return c});var s=n(31),a=n.n(s);const o=document.body.getAttribute("web-root"),i=document.body.getAttribute("api-key"),r=a.a.create({baseURL:o+"/",timeout:6e4,headers:{Accept:"application/json","Content-Type":"application/json"}}),l=a.a.create({baseURL:o+"/api/v1/"+i+"/",timeout:3e4,headers:{Accept:"application/json","Content-Type":"application/json"}}),c=a.a.create({baseURL:o+"/api/v2/",timeout:3e4,headers:{Accept:"application/json","Content-Type":"application/json","X-Api-Key":i}})},,,function(e,t,n){"use strict";n.d(t,"f",function(){return s}),n.d(t,"c",function(){return a}),n.d(t,"e",function(){return o}),n.d(t,"d",function(){return r}),n.d(t,"b",function(){return l}),n.d(t,"a",function(){return c}),n.d(t,"g",function(){return u});const s=!1,a=(e,t=[])=>{const n=(e,t)=>e|t;return(e.reduce(n,0)|t.reduce(n,0)<<16)>>>0},o=(e,t=!1)=>{e||(e=0),e=Math.max(e,0);const n=t?1e3:1024;if(Math.abs(e)=n&&a{let t="",n=0,s=!1;for(;ne.reduce((e,t)=>e.includes(t)?e:e.concat(t),[]),c=(e,t)=>e.filter(e=>!t.includes(e)),d=e=>new Promise(t=>setTimeout(t,e)),u=async(e,t=100,n=3e3)=>{let s=0;for(;!e();)if(await d(t),(s+=t)>n)throw new Error("waitFor timed out (".concat(n,"ms)"));return s}},,,,,,,,,,,,,,,function(e,t,n){"use strict";var s=n(52).a,a=n(0),o=Object(a.a)(s,void 0,void 0,!1,null,null,null);t.a=o.exports},function(e,t,n){"use strict";var s=n(9),a=n(1),o=n(124),i=n.n(o);const r="⚙️ Config added to store",l="📺 Show added to store",c="ℹ️ Statistics added to store";var d={state:{isAuthenticated:!1,user:{},tokens:{access:null,refresh:null},error:null},mutations:{"🔒 Logging in"(){},"🔒 ✅ Login Successful"(e,t){e.user=t,e.isAuthenticated=!0,e.error=null},"🔒 ❌ Login Failed"(e,{error:t}){e.user={},e.isAuthenticated=!1,e.error=t},"🔒 Logout"(e){e.user={},e.isAuthenticated=!1,e.error=null},"🔒 Refresh Token"(){},"🔒 Remove Auth Error"(){}},getters:{},actions:{login(e,t){const{commit:n}=e;n("🔒 Logging in");return(e=>Promise.resolve(e))(t).then(e=>(n("🔒 ✅ Login Successful",e),{success:!0})).catch(e=>(n("🔒 ❌ Login Failed",{error:e,credentials:t}),{success:!1,error:e}))},logout(e){const{commit:t}=e;t("🔒 Logout")}}};var u={state:{torrents:{authType:null,dir:null,enabled:null,highBandwidth:null,host:null,label:null,labelAnime:null,method:null,path:null,paused:null,rpcUrl:null,seedLocation:null,seedTime:null,username:null,password:null,verifySSL:null,testStatus:"Click below to test"},nzb:{enabled:null,method:null,nzbget:{category:null,categoryAnime:null,categoryAnimeBacklog:null,categoryBacklog:null,host:null,priority:null,useHttps:null,username:null,password:null},sabnzbd:{category:null,forced:null,categoryAnime:null,categoryBacklog:null,categoryAnimeBacklog:null,host:null,username:null,password:null,apiKey:null}}},mutations:{[r](e,{section:t,config:n}){"clients"===t&&(e=Object.assign(e,n))}},getters:{},actions:{}},p=n(3),h=n(6);var f={state:{wikiUrl:null,donationsUrl:null,selectedRootIndex:null,namingForceFolders:null,sourceUrl:null,downloadUrl:null,rootDirs:[],subtitles:{enabled:null},logs:{debug:null,dbDebug:null,loggingLevels:{},numErrors:null,numWarnings:null,actualLogDir:null,nr:null,size:null,subliminalLog:null,privacyLevel:null},cpuPreset:null,subtitlesMulti:null,anonRedirect:null,recentShows:[],randomShowSlug:null,showDefaults:{status:null,statusAfter:null,quality:null,subtitles:null,seasonFolders:null,anime:null,scene:null},launchBrowser:null,defaultPage:null,trashRemoveShow:null,indexerDefaultLanguage:null,showUpdateHour:null,indexerTimeout:null,indexerDefault:null,plexFallBack:{enable:null,notifications:null,timeout:null},versionNotify:null,autoUpdate:null,updateFrequency:null,notifyOnUpdate:null,availableThemes:null,timePresets:[],datePresets:[],webInterface:{apiKey:null,log:null,username:null,password:null,port:null,notifyOnLogin:null,ipv6:null,httpsEnable:null,httpsCert:null,httpsKey:null,handleReverseProxy:null},sslVerify:null,sslCaBundle:null,noRestart:null,encryptionVersion:null,calendarUnprotected:null,calendarIcons:null,proxySetting:null,proxyIndexers:null,skipRemovedFiles:null,epDefaultDeletedStatus:null,developer:null,git:{username:null,password:null,token:null,authType:null,remote:null,path:null,org:null,reset:null,resetBranches:null,url:null},backlogOverview:{status:null,period:null},themeName:null},mutations:{[r](e,{section:t,config:n}){"main"===t&&(e=Object.assign(e,n))}},getters:{layout:e=>t=>e.layout[t],effectiveIgnored:(e,t,n)=>e=>{const t=e.config.release.ignoredWords.map(e=>e.toLowerCase()),s=n.search.filters.ignored.map(e=>e.toLowerCase());return e.config.release.ignoredWordsExclude?Object(h.a)(s,t):Object(h.b)(s.concat(t))},effectiveRequired:(e,t,n)=>e=>{const t=n.search.filters.required.map(e=>e.toLowerCase()),s=e.config.release.requiredWords.map(e=>e.toLowerCase());return e.config.release.requiredWordsExclude?Object(h.a)(t,s):Object(h.b)(t.concat(s))}},actions:{getConfig(e,t){const{commit:n}=e;return p.a.get("/config/"+(t||"")).then(e=>{if(t){const s=e.data;return n(r,{section:t,config:s}),s}const s=e.data;return Object.keys(s).forEach(e=>{const t=s[e];n(r,{section:e,config:t})}),s})},setConfig:(e,{section:t,config:n})=>p.a.patch("config/".concat(t),n),updateConfig(e,{section:t,config:n}){const{commit:s}=e;return s(r,{section:t,config:n})},getApiKey(e){const{commit:t}=e,n={webInterface:{apiKey:""}};return p.c.get("config/general/generate_api_key").then(e=>(n.webInterface.apiKey=e.data,t(r,{section:"main",config:n})))}}};var m={state:{qualities:{values:[],anySets:[],presets:[]},statuses:[]},mutations:{[r](e,{section:t,config:n}){"consts"===t&&(e=Object.assign(e,n))}},getters:{getQuality:e=>({key:t,value:n})=>{if([t,n].every(e=>void 0===e)||[t,n].every(e=>void 0!==e))throw new Error("Conflict in `getQuality`: Please provide either `key` or `value`.");return e.qualities.values.find(e=>t===e.key||n===e.value)},getQualityAnySet:e=>({key:t,value:n})=>{if([t,n].every(e=>void 0===e)||[t,n].every(e=>void 0!==e))throw new Error("Conflict in `getQualityAnySet`: Please provide either `key` or `value`.");return e.qualities.anySets.find(e=>t===e.key||n===e.value)},getQualityPreset:e=>({key:t,value:n})=>{if([t,n].every(e=>void 0===e)||[t,n].every(e=>void 0!==e))throw new Error("Conflict in `getQualityPreset`: Please provide either `key` or `value`.");return e.qualities.presets.find(e=>t===e.key||n===e.value)},getStatus:e=>({key:t,value:n})=>{if([t,n].every(e=>void 0===e)||[t,n].every(e=>void 0!==e))throw new Error("Conflict in `getStatus`: Please provide either `key` or `value`.");return e.statuses.find(e=>t===e.key||n===e.value)},getOverviewStatus:e=>(e,t,n)=>{if(["Unset","Unaired"].includes(e))return"Unaired";if(["Skipped","Ignored"].includes(e))return"Skipped";if(["Wanted","Failed"].includes(e))return"Wanted";if(["Snatched","Snatched (Proper)","Snatched (Best)"].includes(e))return"Snatched";if(["Downloaded"].includes(e)){if(n.allowed.length>0&&0===n.preferred.length&&n.allowed.includes(t))return"Preferred";if(n.preferred.includes(t))return"Preferred";if(n.allowed.includes(t))return"Allowed"}return e},splitQuality:e=>{return t=>e.qualities.values.reduce((e,{value:n})=>(n&(t>>>=0)&&e.allowed.push(n),n<<16&t&&e.preferred.push(n),e),{allowed:[],preferred:[]})}},actions:{}};var g={state:{show:{airs:null,airsFormatValid:null,akas:null,cache:null,classification:null,seasonCount:[],config:{airByDate:null,aliases:[],anime:null,defaultEpisodeStatus:null,dvdOrder:null,location:null,locationValid:null,paused:null,qualities:{allowed:[],preferred:[]},release:{requiredWords:[],ignoredWords:[],blacklist:[],whitelist:[],requiredWordsExclude:null,ignoredWordsExclude:null},scene:null,seasonFolders:null,sports:null,subtitlesEnabled:null,airdateOffset:null},countries:null,genres:[],id:{tvdb:null,slug:null},indexer:null,imdbInfo:{akas:null,certificates:null,countries:null,countryCodes:null,genres:null,imdbId:null,imdbInfoId:null,indexer:null,indexerId:null,lastUpdate:null,plot:null,rating:null,runtimes:null,title:null,votes:null},language:null,network:null,nextAirDate:null,plot:null,rating:{imdb:{rating:null,votes:null}},runtime:null,showType:null,status:null,title:null,type:null,year:{},size:null,showQueueStatus:[],xemNumbering:[],sceneAbsoluteNumbering:[],allSceneExceptions:[],xemAbsoluteNumbering:[],sceneNumbering:[],episodeCount:null}},mutations:{},getters:{},actions:{}};var v={state:{main:{externalMappings:{},statusMap:{},traktIndexers:{},validLanguages:[],langabbvToId:{}},indexers:{tvdb:{apiParams:{useZip:null,language:null},baseUrl:null,enabled:null,icon:null,id:null,identifier:null,mappedTo:null,name:null,scene_loc:null,showUrl:null,xemOrigin:null},tmdb:{apiParams:{useZip:null,language:null},baseUrl:null,enabled:null,icon:null,id:null,identifier:null,mappedTo:null,name:null,scene_loc:null,showUrl:null,xemOrigin:null},tvmaze:{apiParams:{useZip:null,language:null},baseUrl:null,enabled:null,icon:null,id:null,identifier:null,mappedTo:null,name:null,scene_loc:null,showUrl:null,xemOrigin:null}}},mutations:{[r](e,{section:t,config:n}){"indexers"===t&&(e=Object.assign(e,n))}},getters:{indexerIdToName:e=>t=>{if(!t)return;const{indexers:n}=e;return Object.keys(n).find(e=>n[e].id===parseInt(t,10))},indexerNameToId:e=>t=>{if(!t)return;const{indexers:n}=e;return n[name].id}},actions:{}};var b={state:{show:{specials:null,showListOrder:[],pagination:{enable:null}},home:null,history:null,historyLimit:null,schedule:null,wide:null,posterSortdir:null,timezoneDisplay:null,timeStyle:null,dateStyle:null,themeName:null,animeSplitHomeInTabs:null,animeSplitHome:null,fanartBackground:null,fanartBackgroundOpacity:null,trimZero:null,sortArticle:null,fuzzyDating:null,posterSortby:null,comingEps:{missedRange:null,sort:null,displayPaused:null,layout:null},backlogOverview:{status:null,period:null}},mutations:{[r](e,{section:t,config:n}){"layout"===t&&(e=Object.assign(e,n))}},getters:{},actions:{setLayout:(e,{page:t,layout:n})=>p.a.patch("config/main",{layout:{[t]:n}}).then(()=>{setTimeout(()=>{location.reload()},500)}),setTheme(e,{themeName:t}){const{commit:n}=e;return p.a.patch("config/main",{layout:{themeName:t}}).then(()=>n(r,{section:"layout",config:{themeName:t}}))},setSpecials(e,t){const{commit:n,state:s}=e,a=Object.assign({},s.show);return a.specials=t,p.a.patch("config/main",{layout:{show:a}}).then(()=>n(r,{section:"layout",config:{show:a}}))}}};var _={state:{metadataProviders:{}},mutations:{[r](e,{section:t,config:n}){"metadata"===t&&(e=Object.assign(e,n))}},getters:{},actions:{}};var w={state:{enabled:!0},mutations:{"🔔 Notifications Enabled"(e){e.enabled=!0},"🔔 Notifications Disabled"(e){e.enabled=!1}},getters:{},actions:{enable(e){const{commit:t}=e;t("🔔 Notifications Enabled")},disable(e){const{commit:t}=e;t("🔔 Notifications Disabled")},test:()=>window.displayNotification("error","test",'test
hello world
  • item 1
  • item 2
',"notification-test")}};var y={state:{},mutations:{[r](e,{section:t,config:n}){"notifiers"===t&&(e=Object.assign(e,n))}},getters:{},actions:{},modules:{boxcar2:{state:{enabled:null,notifyOnSnatch:null,notifyOnDownload:null,notifyOnSubtitleDownload:null,accessToken:null},mutations:{},getters:{},actions:{}},discord:{state:{enabled:null,notifyOnSnatch:null,notifyOnDownload:null,notifyOnSubtitleDownload:null,webhook:null,tts:null},mutations:{},getters:{},actions:{}},email:{state:{enabled:null,notifyOnSnatch:null,notifyOnDownload:null,notifyOnSubtitleDownload:null,host:null,port:null,from:null,tls:null,username:null,password:null,addressList:[],subject:null},mutations:{},getters:{},actions:{}},emby:{state:{enabled:null,host:null,apiKey:null},mutations:{},getters:{},actions:{}},freemobile:{state:{enabled:null,notifyOnSnatch:null,notifyOnDownload:null,notifyOnSubtitleDownload:null,api:null,id:null},mutations:{},getters:{},actions:{}},growl:{state:{enabled:null,host:null,password:null,notifyOnSnatch:null,notifyOnDownload:null,notifyOnSubtitleDownload:null},mutations:{},getters:{},actions:{}},kodi:{state:{enabled:null,alwaysOn:null,libraryCleanPending:null,cleanLibrary:null,host:[],username:null,password:null,notifyOnSnatch:null,notifyOnDownload:null,notifyOnSubtitleDownload:null,update:{library:null,full:null,onlyFirst:null}},mutations:{},getters:{},actions:{}},libnotify:{state:{enabled:null,notifyOnSnatch:null,notifyOnDownload:null,notifyOnSubtitleDownload:null},mutations:{},getters:{},actions:{}},nmj:{state:{enabled:null,host:null,database:null,mount:null},mutations:{},getters:{},actions:{}},nmjv2:{state:{enabled:null,host:null,dbloc:null,database:null},mutations:{},getters:{},actions:{}},plex:{state:{client:{host:[],username:null,enabled:null,notifyOnSnatch:null,notifyOnDownload:null,notifyOnSubtitleDownload:null},server:{updateLibrary:null,host:[],enabled:null,https:null,username:null,password:null,token:null}},mutations:{},getters:{},actions:{}},prowl:{state:{enabled:null,api:[],messageTitle:null,priority:null,notifyOnSnatch:null,notifyOnDownload:null,notifyOnSubtitleDownload:null},mutations:{},getters:{},actions:{}},pushalot:{state:{enabled:null,notifyOnSnatch:null,notifyOnDownload:null,notifyOnSubtitleDownload:null,authToken:null},mutations:{},getters:{},actions:{}},pushbullet:{state:{enabled:null,notifyOnSnatch:null,notifyOnDownload:null,notifyOnSubtitleDownload:null,authToken:null,device:null},mutations:{},getters:{},actions:{}},join:{state:{enabled:null,notifyOnSnatch:null,notifyOnDownload:null,notifyOnSubtitleDownload:null,api:null,device:null},mutations:{},getters:{},actions:{}},pushover:{state:{enabled:null,apiKey:null,userKey:null,device:[],sound:null,notifyOnSnatch:null,notifyOnDownload:null,notifyOnSubtitleDownload:null},mutations:{},getters:{},actions:{}},pyTivo:{state:{enabled:null,host:null,name:null,shareName:null},mutations:{},getters:{},actions:{}},slack:{state:{enabled:null,notifyOnSnatch:null,notifyOnDownload:null,notifyOnSubtitleDownload:null,webhook:null},mutations:{},getters:{},actions:{}},synology:{state:{enabled:null,notifyOnSnatch:null,notifyOnDownload:null,notifyOnSubtitleDownload:null},mutations:{},getters:{},actions:{}},synologyIndex:{state:{enabled:null},mutations:{},getters:{},actions:{}},telegram:{state:{enabled:null,notifyOnSnatch:null,notifyOnDownload:null,notifyOnSubtitleDownload:null,api:null,id:null},mutations:{},getters:{},actions:{}},trakt:{state:{enabled:null,pinUrl:null,username:null,accessToken:null,timeout:null,defaultIndexer:null,sync:null,syncRemove:null,syncWatchlist:null,methodAdd:null,removeWatchlist:null,removeSerieslist:null,removeShowFromApplication:null,startPaused:null,blacklistName:null},mutations:{},getters:{},actions:{}},twitter:{state:{enabled:null,notifyOnSnatch:null,notifyOnDownload:null,notifyOnSubtitleDownload:null,dmto:null,prefix:null,directMessage:null},mutations:{},getters:{},actions:{}}}};var x={state:{naming:{pattern:null,multiEp:null,enableCustomNamingSports:null,enableCustomNamingAirByDate:null,patternSports:null,patternAirByDate:null,enableCustomNamingAnime:null,patternAnime:null,animeMultiEp:null,animeNamingType:null,stripYear:null},showDownloadDir:null,processAutomatically:null,processMethod:null,deleteRarContent:null,unpack:null,noDelete:null,reflinkAvailable:null,postponeIfSyncFiles:null,autoPostprocessorFrequency:10,airdateEpisodes:null,moveAssociatedFiles:null,allowedExtensions:[],addShowsWithoutDir:null,createMissingShowDirs:null,renameEpisodes:null,postponeIfNoSubs:null,nfoRename:null,syncFiles:[],fileTimestampTimezone:"local",extraScripts:[],extraScriptsUrl:null,multiEpStrings:{}},mutations:{[r](e,{section:t,config:n}){"postprocessing"===t&&(e=Object.assign(e,n))}},getters:{},actions:{}};var k={state:{filters:{ignoreUnknownSubs:!1,ignored:["german","french","core2hd","dutch","swedish","reenc","MrLss","dubbed"],undesired:["internal","xvid"],ignoredSubsList:["dk","fin","heb","kor","nor","nordic","pl","swe"],required:[],preferred:[]},general:{minDailySearchFrequency:10,minBacklogFrequency:720,dailySearchFrequency:40,checkPropersInterval:"4h",usenetRetention:500,maxCacheAge:30,backlogDays:7,torrentCheckerFrequency:60,backlogFrequency:720,cacheTrimming:!1,downloadPropers:!0,failedDownloads:{enabled:null,deleteFailed:null},minTorrentCheckerFrequency:30,removeFromClient:!1,randomizeProviders:!1,propersSearchDays:2,allowHighPriority:!0,trackersList:["udp://tracker.coppersurfer.tk:6969/announce","udp://tracker.leechers-paradise.org:6969/announce","udp://tracker.zer0day.to:1337/announce","udp://tracker.opentrackr.org:1337/announce","http://tracker.opentrackr.org:1337/announce","udp://p4p.arenabg.com:1337/announce","http://p4p.arenabg.com:1337/announce","udp://explodie.org:6969/announce","udp://9.rarbg.com:2710/announce","http://explodie.org:6969/announce","http://tracker.dler.org:6969/announce","udp://public.popcorn-tracker.org:6969/announce","udp://tracker.internetwarriors.net:1337/announce","udp://ipv4.tracker.harry.lu:80/announce","http://ipv4.tracker.harry.lu:80/announce","udp://mgtracker.org:2710/announce","http://mgtracker.org:6969/announce","udp://tracker.mg64.net:6969/announce","http://tracker.mg64.net:6881/announce","http://torrentsmd.com:8080/announce"]}},mutations:{[r](e,{section:t,config:n}){"search"===t&&(e=Object.assign(e,n))}},getters:{},actions:{}},S=n(4),C=n.n(S);function O(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}var P={state:{shows:[],currentShow:{indexer:null,id:null}},mutations:{[l](e,t){const n=e.shows.find(({id:e,indexer:n})=>Number(t.id[t.indexer])===Number(e[n]));if(!n)return console.debug("Adding ".concat(t.title||t.indexer+String(t.id)," as it wasn't found in the shows array"),t),void e.shows.push(t);console.debug("Found ".concat(t.title||t.indexer+String(t.id)," in shows array attempting merge"));const a=function(e){for(var t=1;tNumber(t.id[t.indexer])===Number(e[n])));a.seasons||(a.seasons=[]),n.forEach(e=>{const t=a.seasons.find(t=>t.season===e.season);if(t){const n=t.episodes.findIndex(t=>t.slug===e.slug);-1===n?t.episodes.push(e):t.episodes.splice(n,1,e)}else{const t={season:e.season,episodes:[],html:!1,mode:"span",label:1};a.seasons.push(t),t.episodes.push(e)}});const o=e.shows.find(({id:e,indexer:n})=>Number(t.id[t.indexer])===Number(e[n]));s.a.set(e.shows,e.shows.indexOf(o),a),console.log("Storing episodes for show ".concat(a.title," seasons: ").concat([...new Set(n.map(e=>e.season))].join(", ")))}},getters:{getShowById:e=>{return({id:t,indexer:n})=>e.shows.find(e=>Number(e.id[n])===Number(t))},getShowByTitle:e=>t=>e.shows.find(e=>e.title===t),getSeason:e=>({id:t,indexer:n,season:s})=>{const a=e.shows.find(e=>Number(e.id[n])===Number(t));return a&&a.seasons?a.seasons[s]:void 0},getEpisode:e=>({id:t,indexer:n,season:s,episode:a})=>{const o=e.shows.find(e=>Number(e.id[n])===Number(t));return o&&o.seasons&&o.seasons[s]?o.seasons[s][a]:void 0},getCurrentShow:(e,t,n)=>e.shows.find(t=>Number(t.id[e.currentShow.indexer])===Number(e.currentShow.id))||n.defaults.show},actions:{getShow:(e,{indexer:t,id:n,detailed:s,episodes:a})=>new Promise((o,i)=>{const{commit:r}=e,c={};let d=3e4;void 0!==s&&(c.detailed=s,d=6e4,d=6e4),void 0!==a&&(c.episodes=a,d=6e4),p.a.get("/series/".concat(t).concat(n),{params:c,timeout:d}).then(e=>{r(l,e.data),o(e.data)}).catch(e=>{i(e)})}),getEpisodes:({commit:e,getters:t},{indexer:n,id:s,season:a})=>new Promise((o,i)=>{const{getShowById:r}=t,l=r({id:s,indexer:n}),c={limit:1e3};a&&(c.season=a),p.a.get("/series/".concat(n).concat(s,"/episodes"),{params:c}).then(t=>{e("📺 Shows season with episodes added to store",{show:l,episodes:t.data}),o()}).catch(e=>{console.log("Could not retrieve a episodes for show ".concat(n).concat(s,", error: ").concat(e)),i(e)})}),getShows(e,t){const{commit:n,dispatch:s}=e;return t?t.forEach(e=>s("getShow",e)):(()=>{const e={limit:1e3,page:1};p.a.get("/series",{params:e}).then(t=>{const s=Number(t.headers["x-pagination-total"]);t.data.forEach(e=>{n(l,e)});const a=[];for(let t=2;t<=s;t++){const s={page:t};s.limit=e.limit,a.push(p.a.get("/series",{params:s}).then(e=>{e.data.forEach(e=>{n(l,e)})}))}return Promise.all(a)}).catch(()=>{console.log("Could not retrieve a list of shows")})})()},setShow:(e,{indexer:t,id:n,data:s})=>p.a.patch("series/".concat(t).concat(n),s),updateShow(e,t){const{commit:n}=e;return n(l,t)}}};var E={state:{isConnected:!1,message:{},messages:[],reconnectError:!1},mutations:{"🔗 ✅ WebSocket connected"(e){e.isConnected=!0},"🔗 ❌ WebSocket disconnected"(e){e.isConnected=!1},"🔗 ❌ WebSocket error"(e,t){console.error(e,t)},"🔗 ✉️ 📥 WebSocket message received"(e,t){const{data:n,event:s}=t;if(e.message=t,"notification"===s){const s=e.messages.filter(e=>e.hash===n.hash);1===s.length?e.messages[e.messages.indexOf(s)]=t:e.messages.push(t)}},"🔗 🔃 WebSocket reconnecting"(e,t){console.info(e,t)},"🔗 🔃 ❌ WebSocket reconnection attempt failed"(e){e.reconnectError=!0;let t="";t+="Please check your network connection. ",t+="If you are using a reverse proxy, please take a look at our wiki for config examples.",window.displayNotification("notice","Error connecting to websocket","Please check your network connection. If you are using a reverse proxy, please take a look at our wiki for config examples.")}},getters:{},actions:{}};var D={state:{overall:{episodes:{downloaded:null,snatched:null,total:null},shows:{active:null,total:null}}},mutations:{[c](e,t){const{type:n,stats:s}=t;e[n]=Object.assign(e[n],s)}},getters:{},actions:{getStats(e,t){const{commit:n}=e;return p.a.get("/stats/"+(t||"")).then(e=>{n(c,{type:t||"overall",stats:e.data})})}}};var T={state:{branch:null,memoryUsage:null,schedulers:[],showQueue:[],sslVersion:null,pythonVersion:null,pid:null,os:null,logDir:null,dbPath:null,configFile:null,databaseVersion:{major:null,minor:null},locale:null,localUser:null,programDir:null,dataDir:null,cacheDir:null,appArgs:[],webRoot:null,runsInDocker:null,gitRemoteBranches:[],cpuPresets:null,news:{lastRead:null,latest:null,unread:null}},mutations:{[r](e,{section:t,config:n}){"system"===t&&(e=Object.assign(e,n))}},getters:{getScheduler:e=>{return t=>e.schedulers.find(e=>t===e.key)||{}}},actions:{}};s.a.use(a.b);const N=new a.a({modules:{auth:d,clients:u,config:f,consts:m,defaults:g,indexers:v,layout:b,metadata:_,notifications:w,notifiers:y,postprocessing:x,search:k,shows:P,socket:E,stats:D,system:T},state:{},mutations:{},getters:{},actions:{}}),A=(()=>{const{protocol:e,host:t}=window.location,n="https:"===e?"wss:":"ws:",s=document.body.getAttribute("web-root");return"".concat(n,"//").concat(t).concat(s,"/ws").concat("/ui")})();s.a.use(i.a,A,{store:N,format:"json",reconnection:!0,reconnectionAttempts:2,reconnectionDelay:1e3,passToStoreHandler:function(e,t,n){const s=e.toUpperCase(),a=t.data;if("SOCKET_ONMESSAGE"===s){const e=JSON.parse(a),{data:t,event:n}=e;if("notification"===n){const{body:e,hash:n,type:s,title:a}=t;window.displayNotification(s,a,e,n)}else if("configUpdated"===n){const{section:e,config:n}=t;this.store.dispatch("updateConfig",{section:e,config:n})}else"showUpdated"===n?this.store.dispatch("updateShow",t):window.displayNotification("info",n,t)}n(e,t)},mutations:{SOCKET_ONOPEN:"🔗 ✅ WebSocket connected",SOCKET_ONCLOSE:"🔗 ❌ WebSocket disconnected",SOCKET_ONERROR:"🔗 ❌ WebSocket error",SOCKET_ONMESSAGE:"🔗 ✉️ 📥 WebSocket message received",SOCKET_RECONNECT:"🔗 🔃 WebSocket reconnecting",SOCKET_RECONNECT_ERROR:"🔗 🔃 ❌ WebSocket reconnection attempt failed"}});t.a=N},,,function(e,t,n){"use strict";var s=n(9),a=n(93);const o=[{title:"General",path:"config/general/",icon:"menu-icon-config"},{title:"Backup/Restore",path:"config/backuprestore/",icon:"menu-icon-backup"},{title:"Search Settings",path:"config/search/",icon:"menu-icon-manage-searches"},{title:"Search Providers",path:"config/providers/",icon:"menu-icon-provider"},{title:"Subtitles Settings",path:"config/subtitles/",icon:"menu-icon-backlog"},{title:"Post Processing",path:"config/postProcessing/",icon:"menu-icon-postprocess"},{title:"Notifications",path:"config/notifications/",icon:"menu-icon-notification"},{title:"Anime",path:"config/anime/",icon:"menu-icon-anime"}],i=e=>{const{$route:t,$store:n}=e,{config:s,notifiers:a}=n.state,o=t.params.indexer||t.query.indexername,i=t.params.id||t.query.seriesid,r=n.getters.getCurrentShow,{showQueueStatus:l}=r,c=e=>!!l&&Boolean(l.find(t=>t.action===e&&!0===t.active)),d=c("isBeingAdded"),u=c("isBeingUpdated"),p=c("isBeingSubtitled");let h=[{title:"Edit",path:"home/editShow?indexername=".concat(o,"&seriesid=").concat(i),icon:"ui-icon ui-icon-pencil"}];return d||u||(h=h.concat([{title:r.config.paused?"Resume":"Pause",path:"home/togglePause?indexername=".concat(o,"&seriesid=").concat(i),icon:"ui-icon ui-icon-".concat(r.config.paused?"play":"pause")},{title:"Remove",path:"home/deleteShow?indexername=".concat(o,"&seriesid=").concat(i),confirm:"removeshow",icon:"ui-icon ui-icon-trash"},{title:"Re-scan files",path:"home/refreshShow?indexername=".concat(o,"&seriesid=").concat(i),icon:"ui-icon ui-icon-refresh"},{title:"Force Full Update",path:"home/updateShow?indexername=".concat(o,"&seriesid=").concat(i),icon:"ui-icon ui-icon-transfer-e-w"},{title:"Update show in KODI",path:"home/updateKODI?indexername=".concat(o,"&seriesid=").concat(i),requires:a.kodi.enabled&&a.kodi.update.library,icon:"menu-icon-kodi"},{title:"Update show in Emby",path:"home/updateEMBY?indexername=".concat(o,"&seriesid=").concat(i),requires:a.emby.enabled,icon:"menu-icon-emby"},{title:"Preview Rename",path:"home/testRename?indexername=".concat(o,"&seriesid=").concat(i),icon:"ui-icon ui-icon-tag"},{title:"Download Subtitles",path:"home/subtitleShow?indexername=".concat(o,"&seriesid=").concat(i),requires:s.subtitles.enabled&&!p&&r.config.subtitlesEnabled,icon:"menu-icon-backlog"}])),h};var r=[...[{path:"/home",name:"home",meta:{title:"Home",header:"Show List",topMenu:"home"}},{path:"/home/editShow",name:"editShow",meta:{topMenu:"home",subMenu:i},component:()=>Promise.resolve().then(n.bind(null,123))},{path:"/home/displayShow",name:"show",meta:{topMenu:"home",subMenu:i},component:()=>Promise.resolve().then(n.bind(null,122))},{path:"/home/snatchSelection",name:"snatchSelection",meta:{topMenu:"home",subMenu:i}},{path:"/home/testRename",name:"testRename",meta:{title:"Preview Rename",header:"Preview Rename",topMenu:"home"}},{path:"/home/postprocess",name:"postprocess",meta:{title:"Manual Post-Processing",header:"Manual Post-Processing",topMenu:"home"}},{path:"/home/status",name:"status",meta:{title:"Status",topMenu:"system"}},{path:"/home/restart",name:"restart",meta:{title:"Restarting...",header:"Performing Restart",topMenu:"system"}},{path:"/home/shutdown",name:"shutdown",meta:{header:"Shutting down",topMenu:"system"}},{path:"/home/update",name:"update",meta:{topMenu:"system"}}],...[{path:"/config",name:"config",meta:{title:"Help & Info",header:"Medusa Configuration",topMenu:"config",subMenu:o,converted:!0},component:()=>Promise.resolve().then(n.bind(null,113))},{path:"/config/anime",name:"configAnime",meta:{title:"Config - Anime",header:"Anime",topMenu:"config",subMenu:o}},{path:"/config/backuprestore",name:"configBackupRestore",meta:{title:"Config - Backup/Restore",header:"Backup/Restore",topMenu:"config",subMenu:o}},{path:"/config/general",name:"configGeneral",meta:{title:"Config - General",header:"General Configuration",topMenu:"config",subMenu:o,converted:!0},component:()=>Promise.resolve().then(n.bind(null,118))},{path:"/config/notifications",name:"configNotifications",meta:{title:"Config - Notifications",header:"Notifications",topMenu:"config",subMenu:o,converted:!0},component:()=>Promise.resolve().then(n.bind(null,120))},{path:"/config/postProcessing",name:"configPostProcessing",meta:{title:"Config - Post Processing",header:"Post Processing",topMenu:"config",subMenu:o,converted:!0},component:()=>Promise.resolve().then(n.bind(null,119))},{path:"/config/providers",name:"configSearchProviders",meta:{title:"Config - Providers",header:"Search Providers",topMenu:"config",subMenu:o}},{path:"/config/search",name:"configSearchSettings",meta:{title:"Config - Episode Search",header:"Search Settings",topMenu:"config",subMenu:o,converted:!0},component:()=>Promise.resolve().then(n.bind(null,121))},{path:"/config/subtitles",name:"configSubtitles",meta:{title:"Config - Subtitles",header:"Subtitles",topMenu:"config",subMenu:o}}],...[{path:"/addShows",name:"addShows",meta:{title:"Add Shows",header:"Add Shows",topMenu:"home",converted:!0},component:()=>Promise.resolve().then(n.bind(null,112))},{path:"/addShows/addExistingShows",name:"addExistingShows",meta:{title:"Add Existing Shows",header:"Add Existing Shows",topMenu:"home"}},{path:"/addShows/newShow",name:"addNewShow",meta:{title:"Add New Show",header:"Add New Show",topMenu:"home"}},{path:"/addShows/trendingShows",name:"addTrendingShows",meta:{topMenu:"home"}},{path:"/addShows/popularShows",name:"addPopularShows",meta:{title:"Popular Shows",header:"Popular Shows",topMenu:"home"}},{path:"/addShows/popularAnime",name:"addPopularAnime",meta:{title:"Popular Anime Shows",header:"Popular Anime Shows",topMenu:"home"}}],{path:"/login",name:"login",meta:{title:"Login"},component:()=>Promise.resolve().then(n.bind(null,115))},{path:"/addRecommended",name:"addRecommended",meta:{title:"Add Recommended Shows",header:"Add Recommended Shows",topMenu:"home",converted:!0},component:()=>Promise.resolve().then(n.bind(null,111))},{path:"/schedule",name:"schedule",meta:{title:"Schedule",header:"Schedule",topMenu:"schedule"}},{path:"/history",name:"history",meta:{title:"History",header:"History",topMenu:"history",subMenu:[{title:"Clear History",path:"history/clearHistory",icon:"ui-icon ui-icon-trash",confirm:"clearhistory"},{title:"Trim History",path:"history/trimHistory",icon:"menu-icon-cut",confirm:"trimhistory"}]}},{path:"/manage",name:"manage",meta:{title:"Mass Update",header:"Mass Update",topMenu:"manage"}},{path:"/manage/backlogOverview",name:"manageBacklogOverview",meta:{title:"Backlog Overview",header:"Backlog Overview",topMenu:"manage"}},{path:"/manage/episodeStatuses",name:"manageEpisodeOverview",meta:{title:"Episode Overview",header:"Episode Overview",topMenu:"manage"}},{path:"/manage/failedDownloads",name:"manageFailedDownloads",meta:{title:"Failed Downloads",header:"Failed Downloads",topMenu:"manage"}},{path:"/manage/manageSearches",name:"manageManageSearches",meta:{title:"Manage Searches",header:"Manage Searches",topMenu:"manage"}},{path:"/manage/massEdit",name:"manageMassEdit",meta:{title:"Mass Edit",topMenu:"manage"}},{path:"/manage/subtitleMissed",name:"manageSubtitleMissed",meta:{title:"Missing Subtitles",header:"Missing Subtitles",topMenu:"manage"}},{path:"/manage/subtitleMissedPP",name:"manageSubtitleMissedPP",meta:{title:"Missing Subtitles in Post-Process folder",header:"Missing Subtitles in Post-Process folder",topMenu:"manage"}},...[{path:"/errorlogs",name:"errorlogs",meta:{title:"Logs & Errors",topMenu:"system",subMenu:e=>{const{$route:t,$store:n}=e,s=t.params.level||t.query.level,{config:a}=n.state,{loggingLevels:o,numErrors:i,numWarnings:r}=a.logs;if(0===Object.keys(o).length)return[];const l=void 0===s||Number(s)===o.error;return[{title:"Clear Errors",path:"errorlogs/clearerrors/",requires:i>=1&&l,icon:"ui-icon ui-icon-trash"},{title:"Clear Warnings",path:"errorlogs/clearerrors/?level=".concat(o.warning),requires:r>=1&&Number(s)===o.warning,icon:"ui-icon ui-icon-trash"},{title:"Submit Errors",path:"errorlogs/submit_errors/",requires:i>=1&&l,confirm:"submiterrors",icon:"ui-icon ui-icon-arrowreturnthick-1-n"}]}}},{path:"/errorlogs/viewlog",name:"viewlog",meta:{title:"Logs",header:"Log File",topMenu:"system",converted:!0},component:()=>Promise.resolve().then(n.bind(null,116))}],{path:"/news",name:"news",meta:{title:"News",header:"News",topMenu:"system"}},{path:"/changes",name:"changes",meta:{title:"Changelog",header:"Changelog",topMenu:"system"}},{path:"/IRC",name:"IRC",meta:{title:"IRC",topMenu:"system",converted:!0},component:()=>Promise.resolve().then(n.bind(null,114))},{path:"/not-found",name:"not-found",meta:{title:"404",header:"404 - page not found"},component:()=>Promise.resolve().then(n.bind(null,117))}];n.d(t,"a",function(){return l}),s.a.use(a.a);const l=document.body.getAttribute("web-root")+"/",c=new a.a({base:l,mode:"history",routes:r});c.beforeEach((e,t,n)=>{const{meta:s}=e,{title:a}=s;a&&(document.title="".concat(a," | Medusa")),n()});t.b=c},function(e,t,n){"use strict";var s=n(4),a=n.n(s),o=n(1),i=n(3);function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}var l={name:"anidb-release-group-ui",components:{StateSwitch:n(2).p},props:{showName:{type:String,required:!0},blacklist:{type:Array,default:()=>[]},whitelist:{type:Array,default:()=>[]}},data:()=>({index:0,allReleaseGroups:[],newGroup:"",fetchingGroups:!1,remoteGroups:[]}),mounted(){this.createIndexedObjects(this.blacklist,"blacklist"),this.createIndexedObjects(this.whitelist,"whitelist"),this.createIndexedObjects(this.remoteGroups,"releasegroups"),this.fetchGroups()},methods:{async fetchGroups(){const{showName:e}=this;if(!e)return;this.fetchingGroups=!0,console.log("Fetching release groups");const t={series_name:e};try{const{data:n}=await i.c.get("home/fetch_releasegroups",{params:t,timeout:3e4});if("success"!==n.result)throw new Error("Failed to get release groups, check server logs for errors.");this.remoteGroups=n.groups||[]}catch(t){const n='Error while trying to fetch release groups for show "'.concat(e,'": ').concat(t||"Unknown");this.$snotify.warning(n,"Error"),console.error(n)}finally{this.fetchingGroups=!1}},toggleItem(e){this.allReleaseGroups=this.allReleaseGroups.map(t=>(t.id===e.id&&(t.toggled=!t.toggled),t))},createIndexedObjects(e,t){for(let n of e){"string"==typeof n&&(n={name:n});const e=Object.assign({id:this.index,toggled:!1,memberOf:t},n);0===this.allReleaseGroups.filter(n=>n.name===e.name&&n.memberOf===t).length&&(this.allReleaseGroups.push(e),this.index+=1)}},moveToList(e){for(const t of this.allReleaseGroups){const n=void 0!==this.allReleaseGroups.find(n=>n.memberOf===e&&n.name===t.name);t.toggled&&!n&&(t.toggled=!1,t.memberOf=e)}this.newGroup&&"releasegroups"!==e&&(this.allReleaseGroups.push({id:this.index,name:this.newGroup,toggled:!1,memberOf:e}),this.index+=1,this.newGroup="")},deleteFromList(e){this.allReleaseGroups=this.allReleaseGroups.filter(t=>t.memberOf!==e||!t.toggled)}},computed:function(e){for(var t=1;t"whitelist"===e.memberOf)},itemsBlacklist(){return this.allReleaseGroups.filter(e=>"blacklist"===e.memberOf)},itemsReleaseGroups(){return this.allReleaseGroups.filter(e=>"releasegroups"===e.memberOf)},showDeleteFromWhitelist(){return 0!==this.allReleaseGroups.filter(e=>"whitelist"===e.memberOf&&!0===e.toggled).length},showDeleteFromBlacklist(){return 0!==this.allReleaseGroups.filter(e=>"blacklist"===e.memberOf&&!0===e.toggled).length}}),watch:{showName(){this.fetchGroups()},allReleaseGroups:{deep:!0,handler(e){const t={whitelist:[],blacklist:[]};e.forEach(e=>{Object.keys(t).includes(e.memberOf)&&t[e.memberOf].push(e.name)}),this.$emit("change",t)}},remoteGroups(e){this.createIndexedObjects(e,"releasegroups")}}},c=(n(212),n(0)),d=Object(c.a)(l,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"anidb-release-group-ui-wrapper top-10 max-width"},[e.fetchingGroups?[n("state-switch",{attrs:{state:"loading",theme:e.layout.themeName}}),e._v(" "),n("span",[e._v("Fetching release groups...")])]:n("div",{staticClass:"row"},[n("div",{staticClass:"col-sm-4 left-whitelist"},[n("span",[e._v("Whitelist")]),e.showDeleteFromWhitelist?n("img",{staticClass:"deleteFromWhitelist",attrs:{src:"images/no16.png"},on:{click:function(t){return e.deleteFromList("whitelist")}}}):e._e(),e._v(" "),n("ul",[e._l(e.itemsWhitelist,function(t){return n("li",{key:t.id,class:{active:t.toggled},on:{click:function(e){t.toggled=!t.toggled}}},[e._v(e._s(t.name))])}),e._v(" "),n("div",{staticClass:"arrow",on:{click:function(t){return e.moveToList("whitelist")}}},[n("img",{attrs:{src:"images/curved-arrow-left.png"}})])],2)]),e._v(" "),n("div",{staticClass:"col-sm-4 center-available"},[n("span",[e._v("Release groups")]),e._v(" "),n("ul",[e._l(e.itemsReleaseGroups,function(t){return n("li",{key:t.id,staticClass:"initial",class:{active:t.toggled},on:{click:function(e){t.toggled=!t.toggled}}},[e._v(e._s(t.name))])}),e._v(" "),n("div",{staticClass:"arrow",on:{click:function(t){return e.moveToList("releasegroups")}}},[n("img",{attrs:{src:"images/curved-arrow-left.png"}})])],2)]),e._v(" "),n("div",{staticClass:"col-sm-4 right-blacklist"},[n("span",[e._v("Blacklist")]),e.showDeleteFromBlacklist?n("img",{staticClass:"deleteFromBlacklist",attrs:{src:"images/no16.png"},on:{click:function(t){return e.deleteFromList("blacklist")}}}):e._e(),e._v(" "),n("ul",[e._l(e.itemsBlacklist,function(t){return n("li",{key:t.id,class:{active:t.toggled},on:{click:function(e){t.toggled=!t.toggled}}},[e._v(e._s(t.name))])}),e._v(" "),n("div",{staticClass:"arrow",on:{click:function(t){return e.moveToList("blacklist")}}},[n("img",{attrs:{src:"images/curved-arrow-left.png"}})])],2)])]),e._v(" "),n("div",{staticClass:"row",attrs:{id:"add-new-release-group"}},[n("div",{staticClass:"col-md-4"},[n("input",{directives:[{name:"model",rawName:"v-model",value:e.newGroup,expression:"newGroup"}],staticClass:"form-control input-sm",attrs:{type:"text",placeholder:"add custom group"},domProps:{value:e.newGroup},on:{input:function(t){t.target.composing||(e.newGroup=t.target.value)}}})]),e._v(" "),e._m(0)])],2)},[function(){var e=this.$createElement,t=this._self._c||e;return t("div",{staticClass:"col-md-8"},[t("p",[this._v("Use the input to add custom whitelist / blacklist release groups. Click on the "),t("img",{attrs:{src:"images/curved-arrow-left.png"}}),this._v(" to add it to the correct list.")])])}],!1,null,"b388ff58",null);t.a=d.exports},function(e,t,n){"use strict";var s=n(62).a,a=(n(228),n(0)),o=Object(a.a)(s,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"show-header-container"},[n("div",{staticClass:"row"},[e.show?n("div",{staticClass:"col-lg-12",attrs:{id:"showtitle","data-showname":e.show.title}},[n("div",[n("h1",{staticClass:"title",attrs:{"data-indexer-name":e.show.indexer,"data-series-id":e.show.id[e.show.indexer],id:"scene_exception_"+e.show.id[e.show.indexer]}},[n("app-link",{staticClass:"snatchTitle",attrs:{href:"home/displayShow?indexername="+e.show.indexer+"&seriesid="+e.show.id[e.show.indexer]}},[e._v(e._s(e.show.title))])],1)]),e._v(" "),"snatch-selection"===e.type?n("div",{staticClass:"pull-right",attrs:{id:"show-specials-and-seasons"}},[n("span",{staticClass:"h2footer display-specials"},[e._v("\n Manual search for:"),n("br"),e._v(" "),n("app-link",{staticClass:"snatchTitle",attrs:{href:"home/displayShow?indexername="+e.show.indexer+"&seriesid="+e.show.id[e.show.indexer]}},[e._v(e._s(e.show.title))]),e._v(" / Season "+e._s(e.season)),void 0!==e.episode&&"season"!==e.manualSearchType?[e._v(" Episode "+e._s(e.episode))]:e._e()],2)]):e._e(),e._v(" "),"snatch-selection"!==e.type&&e.seasons.length>=1?n("div",{staticClass:"pull-right",attrs:{id:"show-specials-and-seasons"}},[e.seasons.includes(0)?n("span",{staticClass:"h2footer display-specials"},[e._v("\n Display Specials: "),n("a",{staticClass:"inner",staticStyle:{cursor:"pointer"},on:{click:function(t){return t.preventDefault(),e.toggleSpecials()}}},[e._v(e._s(e.displaySpecials?"Hide":"Show"))])]):e._e(),e._v(" "),n("div",{staticClass:"h2footer display-seasons clear"},[n("span",[e.seasons.length>=15?n("select",{directives:[{name:"model",rawName:"v-model",value:e.jumpToSeason,expression:"jumpToSeason"}],staticClass:"form-control input-sm",staticStyle:{position:"relative"},attrs:{id:"seasonJump"},on:{change:function(t){var n=Array.prototype.filter.call(t.target.options,function(e){return e.selected}).map(function(e){return"_value"in e?e._value:e.value});e.jumpToSeason=t.target.multiple?n:n[0]}}},[n("option",{attrs:{value:"jump"}},[e._v("Jump to Season")]),e._v(" "),e._l(e.seasons,function(t){return n("option",{key:"jumpToSeason-"+t,domProps:{value:t}},[e._v("\n "+e._s(0===t?"Specials":"Season "+t)+"\n ")])})],2):e.seasons.length>=1?[e._v("\n Season:\n "),e._l(e.reverse(e.seasons),function(t,s){return[n("app-link",{key:"jumpToSeason-"+t,attrs:{href:"#season-"+t},nativeOn:{click:function(n){n.preventDefault(),e.jumpToSeason=t}}},[e._v("\n "+e._s(0===t?"Specials":t)+"\n ")]),e._v(" "),s!==e.seasons.length-1?n("span",{key:"separator-"+s,staticClass:"separator"},[e._v("| ")]):e._e()]})]:e._e()],2)])]):e._e()]):e._e()]),e._v(" "),e._l(e.activeShowQueueStatuses,function(t){return n("div",{key:t.action,staticClass:"row"},[n("div",{staticClass:"alert alert-info"},[e._v("\n "+e._s(t.message)+"\n ")])])}),e._v(" "),n("div",{staticClass:"row",attrs:{id:"row-show-summary"}},[n("div",{staticClass:"col-md-12",attrs:{id:"col-show-summary"}},[n("div",{staticClass:"show-poster-container"},[n("div",{staticClass:"row"},[n("div",{staticClass:"image-flex-container col-md-12"},[n("asset",{attrs:{default:"images/poster.png","show-slug":e.show.id.slug,type:"posterThumb",cls:"show-image shadow",link:!0}})],1)])]),e._v(" "),n("div",{staticClass:"ver-spacer"}),e._v(" "),n("div",{staticClass:"show-info-container"},[n("div",{staticClass:"row"},[n("div",{staticClass:"pull-right col-lg-3 col-md-3 hidden-sm hidden-xs"},[n("asset",{attrs:{default:"images/banner.png","show-slug":e.show.id.slug,type:"banner",cls:"show-banner pull-right shadow",link:!0}})],1),e._v(" "),n("div",{staticClass:"pull-left col-lg-9 col-md-9 col-sm-12 col-xs-12",attrs:{id:"show-rating"}},[e.show.rating.imdb&&e.show.rating.imdb.rating?n("span",{staticClass:"imdbstars",attrs:{"qtip-content":e.show.rating.imdb.rating+" / 10 Stars
"+e.show.rating.imdb.votes+" Votes"}},[n("span",{style:{width:10*Number(e.show.rating.imdb.rating)+"%"}})]):e._e(),e._v(" "),e.show.id.imdb?[e._l(e.show.countryCodes,function(e){return n("img",{key:"flag-"+e,class:["country-flag","flag-"+e],staticStyle:{"margin-left":"3px","vertical-align":"middle"},attrs:{src:"images/blank.png",width:"16",height:"11"}})}),e._v(" "),e.show.imdbInfo.year?n("span",[e._v("\n ("+e._s(e.show.imdbInfo.year)+") -\n ")]):e._e(),e._v(" "),n("span",[e._v("\n "+e._s(e.show.imdbInfo.runtimes||e.show.runtime)+" minutes\n ")]),e._v(" "),n("app-link",{attrs:{href:"https://www.imdb.com/title/"+e.show.id.imdb,title:"https://www.imdb.com/title/"+e.show.id.imdb}},[n("img",{staticStyle:{"margin-top":"-1px","vertical-align":"middle"},attrs:{alt:"[imdb]",height:"16",width:"16",src:"images/imdb.png"}})])]:[e.show.year.start?n("span",[e._v("("+e._s(e.show.year.start)+") - "+e._s(e.show.runtime)+" minutes - ")]):e._e()],e._v(" "),e.show.id.trakt?n("app-link",{attrs:{href:"https://trakt.tv/shows/"+e.show.id.trakt,title:"https://trakt.tv/shows/"+e.show.id.trakt}},[n("img",{attrs:{alt:"[trakt]",height:"16",width:"16",src:"images/trakt.png"}})]):e._e(),e._v(" "),e.showIndexerUrl&&e.indexerConfig[e.show.indexer].icon?n("app-link",{attrs:{href:e.showIndexerUrl,title:e.showIndexerUrl}},[n("img",{staticStyle:{"margin-top":"-1px","vertical-align":"middle"},attrs:{alt:e.indexerConfig[e.show.indexer].name,height:"16",width:"16",src:"images/"+e.indexerConfig[e.show.indexer].icon}})]):e._e(),e._v(" "),e.show.xemNumbering&&e.show.xemNumbering.length>0?n("app-link",{attrs:{href:"http://thexem.de/search?q="+e.show.title,title:"http://thexem.de/search?q="+e.show.title}},[n("img",{staticStyle:{"margin-top":"-1px","vertical-align":"middle"},attrs:{alt:"[xem]",height:"16",width:"16",src:"images/xem.png"}})]):e._e(),e._v(" "),e.show.id.tvdb?n("app-link",{attrs:{href:"https://fanart.tv/series/"+e.show.id.tvdb,title:"https://fanart.tv/series/"+e.show.id[e.show.indexer]}},[n("img",{staticClass:"fanart",attrs:{alt:"[fanart.tv]",height:"16",width:"16",src:"images/fanart.tv.png"}})]):e._e()],2),e._v(" "),n("div",{staticClass:"pull-left col-lg-9 col-md-9 col-sm-12 col-xs-12",attrs:{id:"tags"}},[e.show.genres?n("ul",{staticClass:"tags"},e._l(e.dedupeGenres(e.show.genres),function(t){return n("app-link",{key:t.toString(),attrs:{href:"https://trakt.tv/shows/popular/?genres="+t.toLowerCase().replace(" ","-"),title:"View other popular "+t+" shows on trakt.tv"}},[n("li",[e._v(e._s(t))])])}),1):n("ul",{staticClass:"tags"},e._l(e.showGenres,function(t){return n("app-link",{key:t.toString(),attrs:{href:"https://www.imdb.com/search/title?count=100&title_type=tv_series&genres="+t.toLowerCase().replace(" ","-"),title:"View other popular "+t+" shows on IMDB"}},[n("li",[e._v(e._s(t))])])}),1)])]),e._v(" "),n("div",{staticClass:"row"},[e.configLoaded?n("div",{staticClass:"col-md-12",attrs:{id:"summary"}},[n("div",{class:[{summaryFanArt:e.layout.fanartBackground},"col-lg-9","col-md-8","col-sm-8","col-xs-12"],attrs:{id:"show-summary"}},[n("table",{staticClass:"summaryTable pull-left"},[e.show.plot?n("tr",[n("td",{staticStyle:{"padding-bottom":"15px"},attrs:{colspan:"2"}},[n("truncate",{attrs:{length:250,clamp:"show more...",less:"show less...",text:e.show.plot},on:{toggle:function(t){return e.$emit("reflow")}}})],1)]):e._e(),e._v(" "),void 0!==e.getQualityPreset({value:e.combinedQualities})?n("tr",[n("td",{staticClass:"showLegend"},[e._v("Quality:")]),e._v(" "),n("td",[n("quality-pill",{attrs:{quality:e.combinedQualities}})],1)]):[e.combineQualities(e.show.config.qualities.allowed)>0?n("tr",[n("td",{staticClass:"showLegend"},[e._v("Allowed Qualities:")]),e._v(" "),n("td",[e._l(e.show.config.qualities.allowed,function(t,s){return[e._v(e._s(s>0?", ":"")),n("quality-pill",{key:"allowed-"+t,attrs:{quality:t}})]})],2)]):e._e(),e._v(" "),e.combineQualities(e.show.config.qualities.preferred)>0?n("tr",[n("td",{staticClass:"showLegend"},[e._v("Preferred Qualities:")]),e._v(" "),n("td",[e._l(e.show.config.qualities.preferred,function(t,s){return[e._v(e._s(s>0?", ":"")),n("quality-pill",{key:"preferred-"+t,attrs:{quality:t}})]})],2)]):e._e()],e._v(" "),e.show.network&&e.show.airs?n("tr",[n("td",{staticClass:"showLegend"},[e._v("Originally Airs: ")]),n("td",[e._v(e._s(e.show.airs)),e.show.airsFormatValid?e._e():n("b",{staticClass:"invalid-value"},[e._v(" (invalid time format)")]),e._v(" on "+e._s(e.show.network))])]):e.show.network?n("tr",[n("td",{staticClass:"showLegend"},[e._v("Originally Airs: ")]),n("td",[e._v(e._s(e.show.network))])]):e.show.airs?n("tr",[n("td",{staticClass:"showLegend"},[e._v("Originally Airs: ")]),n("td",[e._v(e._s(e.show.airs)),e.show.airsFormatValid?e._e():n("b",{staticClass:"invalid-value"},[e._v(" (invalid time format)")])])]):e._e(),e._v(" "),n("tr",[n("td",{staticClass:"showLegend"},[e._v("Show Status: ")]),n("td",[e._v(e._s(e.show.status))])]),e._v(" "),n("tr",[n("td",{staticClass:"showLegend"},[e._v("Default EP Status: ")]),n("td",[e._v(e._s(e.show.config.defaultEpisodeStatus))])]),e._v(" "),n("tr",[n("td",{staticClass:"showLegend"},[n("span",{class:{"invalid-value":!e.show.config.locationValid}},[e._v("Location: ")])]),n("td",[n("span",{class:{"invalid-value":!e.show.config.locationValid}},[e._v(e._s(e.show.config.location))]),e._v(e._s(e.show.config.locationValid?"":" (Missing)"))])]),e._v(" "),e.show.config.aliases.length>0?n("tr",[n("td",{staticClass:"showLegend",staticStyle:{"vertical-align":"top"}},[e._v("Scene Name:")]),e._v(" "),n("td",[e._v(e._s(e.show.config.aliases.join(", ")))])]):e._e(),e._v(" "),e.show.config.release.requiredWords.length+e.search.filters.required.length>0?n("tr",[n("td",{staticClass:"showLegend",staticStyle:{"vertical-align":"top"}},[n("span",{class:{required:"snatch-selection"===e.type}},[e._v("Required Words: ")])]),e._v(" "),n("td",[e.show.config.release.requiredWords.length?n("span",{staticClass:"break-word"},[e._v("\n "+e._s(e.show.config.release.requiredWords.join(", "))+"\n ")]):e._e(),e._v(" "),e.search.filters.required.length>0?n("span",{staticClass:"break-word global-filter"},[n("app-link",{attrs:{href:"config/search/#searchfilters"}},[e.show.config.release.requiredWords.length>0?[e.show.config.release.requiredWordsExclude?n("span",[e._v(" excluded from: ")]):n("span",[e._v("+ ")])]:e._e(),e._v("\n "+e._s(e.search.filters.required.join(", "))+"\n ")],2)],1):e._e()])]):e._e(),e._v(" "),e.show.config.release.ignoredWords.length+e.search.filters.ignored.length>0?n("tr",[n("td",{staticClass:"showLegend",staticStyle:{"vertical-align":"top"}},[n("span",{class:{ignored:"snatch-selection"===e.type}},[e._v("Ignored Words: ")])]),e._v(" "),n("td",[e.show.config.release.ignoredWords.length?n("span",{staticClass:"break-word"},[e._v("\n "+e._s(e.show.config.release.ignoredWords.join(", "))+"\n ")]):e._e(),e._v(" "),e.search.filters.ignored.length>0?n("span",{staticClass:"break-word global-filter"},[n("app-link",{attrs:{href:"config/search/#searchfilters"}},[e.show.config.release.ignoredWords.length>0?[e.show.config.release.ignoredWordsExclude?n("span",[e._v(" excluded from: ")]):n("span",[e._v("+ ")])]:e._e(),e._v("\n "+e._s(e.search.filters.ignored.join(", "))+"\n ")],2)],1):e._e()])]):e._e(),e._v(" "),e.search.filters.preferred.length>0?n("tr",[n("td",{staticClass:"showLegend",staticStyle:{"vertical-align":"top"}},[n("span",{class:{preferred:"snatch-selection"===e.type}},[e._v("Preferred Words: ")])]),e._v(" "),n("td",[n("app-link",{attrs:{href:"config/search/#searchfilters"}},[n("span",{staticClass:"break-word"},[e._v(e._s(e.search.filters.preferred.join(", ")))])])],1)]):e._e(),e._v(" "),e.search.filters.undesired.length>0?n("tr",[n("td",{staticClass:"showLegend",staticStyle:{"vertical-align":"top"}},[n("span",{class:{undesired:"snatch-selection"===e.type}},[e._v("Undesired Words: ")])]),e._v(" "),n("td",[n("app-link",{attrs:{href:"config/search/#searchfilters"}},[n("span",{staticClass:"break-word"},[e._v(e._s(e.search.filters.undesired.join(", ")))])])],1)]):e._e(),e._v(" "),e.show.config.release.whitelist&&e.show.config.release.whitelist.length>0?n("tr",[n("td",{staticClass:"showLegend"},[e._v("Wanted Groups:")]),e._v(" "),n("td",[e._v(e._s(e.show.config.release.whitelist.join(", ")))])]):e._e(),e._v(" "),e.show.config.release.blacklist&&e.show.config.release.blacklist.length>0?n("tr",[n("td",{staticClass:"showLegend"},[e._v("Unwanted Groups:")]),e._v(" "),n("td",[e._v(e._s(e.show.config.release.blacklist.join(", ")))])]):e._e(),e._v(" "),0!==e.show.config.airdateOffset?n("tr",[n("td",{staticClass:"showLegend"},[e._v("Daily search offset:")]),e._v(" "),n("td",[e._v(e._s(e.show.config.airdateOffset)+" hours")])]):e._e(),e._v(" "),e.show.config.locationValid&&e.show.size>-1?n("tr",[n("td",{staticClass:"showLegend"},[e._v("Size:")]),e._v(" "),n("td",[e._v(e._s(e.humanFileSize(e.show.size)))])]):e._e()],2)]),e._v(" "),n("div",{staticClass:"col-lg-3 col-md-4 col-sm-4 col-xs-12 pull-xs-left",attrs:{id:"show-status"}},[n("table",{staticClass:"pull-xs-left pull-md-right pull-sm-right pull-lg-right"},[e.show.language?n("tr",[n("td",{staticClass:"showLegend"},[e._v("Info Language:")]),n("td",[n("img",{attrs:{src:"images/subtitles/flags/"+e.getCountryISO2ToISO3(e.show.language)+".png",width:"16",height:"11",alt:e.show.language,title:e.show.language,onError:"this.onerror=null;this.src='images/flags/unknown.png';"}})])]):e._e(),e._v(" "),e.config.subtitles.enabled?n("tr",[n("td",{staticClass:"showLegend"},[e._v("Subtitles: ")]),n("td",[n("state-switch",{attrs:{theme:e.layout.themeName,state:e.show.config.subtitlesEnabled},on:{click:function(t){return e.toggleConfigOption("subtitlesEnabled")}}})],1)]):e._e(),e._v(" "),n("tr",[n("td",{staticClass:"showLegend"},[e._v("Season Folders: ")]),n("td",[n("state-switch",{attrs:{theme:e.layout.themeName,state:e.show.config.seasonFolders||e.config.namingForceFolders}})],1)]),e._v(" "),n("tr",[n("td",{staticClass:"showLegend"},[e._v("Paused: ")]),n("td",[n("state-switch",{attrs:{theme:e.layout.themeName,state:e.show.config.paused},on:{click:function(t){return e.toggleConfigOption("paused")}}})],1)]),e._v(" "),n("tr",[n("td",{staticClass:"showLegend"},[e._v("Air-by-Date: ")]),n("td",[n("state-switch",{attrs:{theme:e.layout.themeName,state:e.show.config.airByDate},on:{click:function(t){return e.toggleConfigOption("airByDate")}}})],1)]),e._v(" "),n("tr",[n("td",{staticClass:"showLegend"},[e._v("Sports: ")]),n("td",[n("state-switch",{attrs:{theme:e.layout.themeName,state:e.show.config.sports},on:{click:function(t){return e.toggleConfigOption("sports")}}})],1)]),e._v(" "),n("tr",[n("td",{staticClass:"showLegend"},[e._v("Anime: ")]),n("td",[n("state-switch",{attrs:{theme:e.layout.themeName,state:e.show.config.anime},on:{click:function(t){return e.toggleConfigOption("anime")}}})],1)]),e._v(" "),n("tr",[n("td",{staticClass:"showLegend"},[e._v("DVD Order: ")]),n("td",[n("state-switch",{attrs:{theme:e.layout.themeName,state:e.show.config.dvdOrder},on:{click:function(t){return e.toggleConfigOption("dvdOrder")}}})],1)]),e._v(" "),n("tr",[n("td",{staticClass:"showLegend"},[e._v("Scene Numbering: ")]),n("td",[n("state-switch",{attrs:{theme:e.layout.themeName,state:e.show.config.scene},on:{click:function(t){return e.toggleConfigOption("scene")}}})],1)])])])]):e._e()])])])]),e._v(" "),e.show?n("div",{staticClass:"row",attrs:{id:"row-show-episodes-controls"}},[n("div",{staticClass:"col-md-12",attrs:{id:"col-show-episodes-controls"}},["show"===e.type?n("div",{staticClass:"row key"},[n("div",{staticClass:"col-lg-12",attrs:{id:"checkboxControls"}},[e.show.seasons?n("div",{staticClass:"pull-left top-5",attrs:{id:"key-padding"}},e._l(e.overviewStatus,function(t){return n("label",{key:t.id,attrs:{for:t.id}},[n("span",{class:t.id},[n("input",{directives:[{name:"model",rawName:"v-model",value:t.checked,expression:"status.checked"}],attrs:{type:"checkbox",id:t.id},domProps:{checked:Array.isArray(t.checked)?e._i(t.checked,null)>-1:t.checked},on:{change:[function(n){var s=t.checked,a=n.target,o=!!a.checked;if(Array.isArray(s)){var i=e._i(s,null);a.checked?i<0&&e.$set(t,"checked",s.concat([null])):i>-1&&e.$set(t,"checked",s.slice(0,i).concat(s.slice(i+1)))}else e.$set(t,"checked",o)},function(t){return e.$emit("update-overview-status",e.overviewStatus)}]}}),e._v("\n "+e._s(t.name)+": "),n("b",[e._v(e._s(e.episodeSummary[t.name]))])])])}),0):e._e(),e._v(" "),n("div",{staticClass:"pull-lg-right top-5"},[n("select",{directives:[{name:"model",rawName:"v-model",value:e.selectedStatus,expression:"selectedStatus"}],staticClass:"form-control form-control-inline input-sm-custom input-sm-smallfont",attrs:{id:"statusSelect"},on:{change:function(t){var n=Array.prototype.filter.call(t.target.options,function(e){return e.selected}).map(function(e){return"_value"in e?e._value:e.value});e.selectedStatus=t.target.multiple?n:n[0]}}},[n("option",{domProps:{value:"Change status to:"}},[e._v("Change status to:")]),e._v(" "),e._l(e.changeStatusOptions,function(t){return n("option",{key:t.key,domProps:{value:t.value}},[e._v("\n "+e._s(t.name)+"\n ")])})],2),e._v(" "),n("select",{directives:[{name:"model",rawName:"v-model",value:e.selectedQuality,expression:"selectedQuality"}],staticClass:"form-control form-control-inline input-sm-custom input-sm-smallfont",attrs:{id:"qualitySelect"},on:{change:function(t){var n=Array.prototype.filter.call(t.target.options,function(e){return e.selected}).map(function(e){return"_value"in e?e._value:e.value});e.selectedQuality=t.target.multiple?n:n[0]}}},[n("option",{domProps:{value:"Change quality to:"}},[e._v("Change quality to:")]),e._v(" "),e._l(e.qualities,function(t){return n("option",{key:t.key,domProps:{value:t.value}},[e._v("\n "+e._s(t.name)+"\n ")])})],2),e._v(" "),n("input",{attrs:{type:"hidden",id:"series-slug"},domProps:{value:e.show.id.slug}}),e._v(" "),n("input",{attrs:{type:"hidden",id:"series-id"},domProps:{value:e.show.id[e.show.indexer]}}),e._v(" "),n("input",{attrs:{type:"hidden",id:"indexer"},domProps:{value:e.show.indexer}}),e._v(" "),n("input",{staticClass:"btn-medusa",attrs:{type:"button",id:"changeStatus",value:"Go"},on:{click:e.changeStatusClicked}})])])]):n("div")])]):e._e()],2)},[],!1,null,"b25c9a8a",null);t.a=o.exports},,,,,function(e,t,n){"use strict";(function(e){n.d(t,"b",function(){return a}),n.d(t,"a",function(){return o}),n.d(t,"c",function(){return i});var s=n(3);const a=()=>{e(".imdbstars").qtip({content:{text(){return e(this).attr("qtip-content")}},show:{solo:!0},position:{my:"right center",at:"center left",adjust:{y:0,x:-6}},style:{tip:{corner:!0,method:"polygon"},classes:"qtip-rounded qtip-shadow ui-tooltip-sb"}})},o=()=>{e(".addQTip").each((t,n)=>{e(n).css({cursor:"help","text-shadow":"0px 0px 0.5px #666"});const s=e(n).data("qtip-my")||"left center",a=e(n).data("qtip-at")||"middle right";e(n).qtip({show:{solo:!0},position:{my:s,at:a},style:{tip:{corner:!0,method:"polygon"},classes:"qtip-rounded qtip-shadow ui-tooltip-sb"}})})},i=(t,n)=>{if(e.fn.updateSearchIconsStarted||!t)return;e.fn.updateSearchIconsStarted=!0,e.fn.forcedSearches=[];const a=e=>{e.disabled=!0},o=()=>{let i=5e3;s.a.get("search/".concat(t)).then(t=>{i=t.data.results&&t.data.results.length>0?5e3:15e3,(t=>{e.each(t,(e,t)=>{if(t.show.slug!==n.show.id.slug)return!0;const s=n.$refs["search-".concat(t.episode.slug)];s&&("searching"===t.search.status.toLowerCase()?(s.title="Searching",s.alt="Searching",s.src="images/loading16.gif",a(s)):"queued"===t.search.status.toLowerCase()?(s.title="Queued",s.alt="queued",s.src="images/queued.png",a(s)):"finished"===t.search.status.toLowerCase()&&(s.title="Searching",s.alt="searching",s.src="images/search16.png",(e=>{e.disabled=!1})(s)))})})(t.data.results)}).catch(e=>{console.error(String(e)),i=3e4}).finally(()=>{setTimeout(o,i)})};o()}}).call(this,n(5))},function(e,t,n){"use strict";var s=n(9),a=n(125),o=n(126),i=n(128),r=n(94),l=n.n(r),c=n(129),d=n.n(c),u=n(23),p=(n(111),n(4)),h=n.n(p),f=n(1),m=n(6),g=n(2),v=n(26);function b(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}var _={name:"add-show-options",components:{AnidbReleaseGroupUi:v.a,ConfigToggleSlider:g.f,QualityChooser:g.k},props:{showName:{type:String,default:"",required:!1},enableAnimeOptions:{type:Boolean,default:!1}},data:()=>({saving:!1,selectedStatus:null,selectedStatusAfter:null,quality:{allowed:[],preferred:[]},selectedSubtitleEnabled:!1,selectedSeasonFoldersEnabled:!1,selectedAnimeEnabled:!1,selectedSceneEnabled:!1,release:{blacklist:[],whitelist:[]}}),mounted(){const{defaultConfig:e,update:t}=this;this.selectedStatus=e.status,this.selectedStatusAfter=e.statusAfter,this.$nextTick(()=>t()),this.$watch(e=>[e.selectedStatus,e.selectedStatusAfter,e.selectedSubtitleEnabled,e.selectedSeasonFoldersEnabled,e.selectedSceneEnabled,e.selectedAnimeEnabled].join(),()=>{this.update()})},methods:{update(){const{selectedSubtitleEnabled:e,selectedStatus:t,selectedStatusAfter:n,selectedSeasonFoldersEnabled:s,selectedAnimeEnabled:a,selectedSceneEnabled:o,release:i,quality:r}=this;this.$nextTick(()=>{this.$emit("change",{subtitles:e,status:t,statusAfter:n,seasonFolders:s,anime:a,scene:o,release:i,quality:r})})},onChangeReleaseGroupsAnime(e){this.release.whitelist=e.whitelist,this.release.blacklist=e.blacklist,this.update()},saveDefaults(){const{$store:e,selectedStatus:t,selectedStatusAfter:n,combinedQualities:s,selectedSubtitleEnabled:a,selectedSeasonFoldersEnabled:o,selectedAnimeEnabled:i,selectedSceneEnabled:r}=this,l={showDefaults:{status:t,statusAfter:n,quality:s,subtitles:a,seasonFolders:o,anime:i,scene:r}};this.saving=!0,e.dispatch("setConfig",{section:"main",config:l}).then(()=>{this.$snotify.success('Your "add show" defaults have been set to your current selections.',"Saved Defaults")}).catch(e=>{this.$snotify.error('Error while trying to save "add show" defaults: '+(e.message||"Unknown"),"Error")}).finally(()=>{this.saving=!1})}},computed:function(e){for(var t=1;te.config.showDefaults,namingForceFolders:e=>e.config.namingForceFolders,subtitlesEnabled:e=>e.config.subtitles.enabled,episodeStatuses:e=>e.consts.statuses}),{},Object(f.d)(["getStatus"]),{defaultEpisodeStatusOptions(){const{getStatus:e}=this;return 0===this.episodeStatuses.length?[]:["skipped","wanted","ignored"].map(t=>e({key:t}))},combinedQualities(){const{quality:e}=this,{allowed:t,preferred:n}=e;return Object(m.c)(t,n)},saveDefaultsDisabled(){const{enableAnimeOptions:e,defaultConfig:t,namingForceFolders:n,selectedStatus:s,selectedStatusAfter:a,combinedQualities:o,selectedSeasonFoldersEnabled:i,selectedSubtitleEnabled:r,selectedAnimeEnabled:l,selectedSceneEnabled:c}=this;return[s===t.status,a===t.statusAfter,o===t.quality,i===(t.seasonFolders||n),r===t.subtitles,!e||l===t.anime,c===t.scene].every(Boolean)}}),watch:{release:{handler(){this.$emit("refresh"),this.update()},deep:!0,immediate:!1},quality:{handler(){this.$emit("refresh"),this.update()},deep:!0,immediate:!1},selectedAnimeEnabled(){this.$emit("refresh"),this.update()},defaultConfig(e){const{namingForceFolders:t}=this;this.selectedStatus=e.status,this.selectedStatusAfter=e.statusAfter,this.selectedSubtitleEnabled=e.subtitles,this.selectedAnimeEnabled=e.anime,this.selectedSeasonFoldersEnabled=e.seasonFolders||t,this.selectedSceneEnabled=e.scene}}},w=n(0),y=Object(w.a)(_,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"add-show-options-content"}},[n("fieldset",{staticClass:"component-group-list"},[n("div",{staticClass:"form-group"},[n("div",{staticClass:"row"},[e._m(0),e._v(" "),n("div",{staticClass:"col-sm-10 content"},[n("quality-chooser",{attrs:{"overall-quality":e.defaultConfig.quality},on:{"update:quality:allowed":function(t){e.quality.allowed=t},"update:quality:preferred":function(t){e.quality.preferred=t}}})],1)])]),e._v(" "),e.subtitlesEnabled?n("div",{attrs:{id:"use-subtitles"}},[n("config-toggle-slider",{attrs:{label:"Subtitles",id:"subtitles",value:e.selectedSubtitleEnabled,explanations:["Download subtitles for this show?"]},on:{input:function(t){e.selectedSubtitleEnabled=t}}})],1):e._e(),e._v(" "),n("div",{staticClass:"form-group"},[n("div",{staticClass:"row"},[e._m(1),e._v(" "),n("div",{staticClass:"col-sm-10 content"},[n("select",{directives:[{name:"model",rawName:"v-model",value:e.selectedStatus,expression:"selectedStatus"}],staticClass:"form-control form-control-inline input-sm",attrs:{id:"defaultStatus"},on:{change:function(t){var n=Array.prototype.filter.call(t.target.options,function(e){return e.selected}).map(function(e){return"_value"in e?e._value:e.value});e.selectedStatus=t.target.multiple?n:n[0]}}},e._l(e.defaultEpisodeStatusOptions,function(t){return n("option",{key:t.value,domProps:{value:t.value}},[e._v(e._s(t.name))])}),0)])])]),e._v(" "),n("div",{staticClass:"form-group"},[n("div",{staticClass:"row"},[e._m(2),e._v(" "),n("div",{staticClass:"col-sm-10 content"},[n("select",{directives:[{name:"model",rawName:"v-model",value:e.selectedStatusAfter,expression:"selectedStatusAfter"}],staticClass:"form-control form-control-inline input-sm",attrs:{id:"defaultStatusAfter"},on:{change:function(t){var n=Array.prototype.filter.call(t.target.options,function(e){return e.selected}).map(function(e){return"_value"in e?e._value:e.value});e.selectedStatusAfter=t.target.multiple?n:n[0]}}},e._l(e.defaultEpisodeStatusOptions,function(t){return n("option",{key:t.value,domProps:{value:t.value}},[e._v(e._s(t.name))])}),0)])])]),e._v(" "),n("config-toggle-slider",{attrs:{label:"Season Folders",id:"season_folders",value:e.selectedSeasonFoldersEnabled,disabled:e.namingForceFolders,explanations:["Group episodes by season folders?"]},on:{input:function(t){e.selectedSeasonFoldersEnabled=t}}}),e._v(" "),e.enableAnimeOptions?n("config-toggle-slider",{attrs:{label:"Anime",id:"anime",value:e.selectedAnimeEnabled,explanations:["Is this show an Anime?"]},on:{input:function(t){e.selectedAnimeEnabled=t}}}):e._e(),e._v(" "),e.enableAnimeOptions&&e.selectedAnimeEnabled?n("div",{staticClass:"form-group"},[n("div",{staticClass:"row"},[e._m(3),e._v(" "),n("div",{staticClass:"col-sm-10 content"},[n("anidb-release-group-ui",{staticClass:"max-width",attrs:{"show-name":e.showName},on:{change:e.onChangeReleaseGroupsAnime}})],1)])]):e._e(),e._v(" "),n("config-toggle-slider",{attrs:{label:"Scene Numbering",id:"scene",value:e.selectedSceneEnabled,explanations:["Is this show scene numbered?"]},on:{input:function(t){e.selectedSceneEnabled=t}}}),e._v(" "),n("div",{staticClass:"form-group"},[n("div",{staticClass:"row"},[e._m(4),e._v(" "),n("div",{staticClass:"col-sm-10 content"},[n("button",{staticClass:"btn-medusa btn-inline",attrs:{type:"button",disabled:e.saving||e.saveDefaultsDisabled},on:{click:function(t){return t.preventDefault(),e.saveDefaults(t)}}},[e._v("Save Defaults")])])])])],1)])},[function(){var e=this.$createElement,t=this._self._c||e;return t("label",{staticClass:"col-sm-2 control-label",attrs:{for:"customQuality"}},[t("span",[this._v("Quality")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("label",{staticClass:"col-sm-2 control-label",attrs:{for:"defaultStatus"}},[t("span",[this._v("Status for previously aired episodes")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("label",{staticClass:"col-sm-2 control-label",attrs:{for:"defaultStatusAfter"}},[t("span",[this._v("Status for all future episodes")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("label",{staticClass:"col-sm-2 control-label",attrs:{for:"anidbReleaseGroup"}},[t("span",[this._v("Release Groups")])])},function(){var e=this.$createElement,t=this._self._c||e;return t("label",{staticClass:"col-sm-2 control-label",attrs:{for:"saveDefaultsButton"}},[t("span",[this._v("Use current values as the defaults")])])}],!1,null,null,null).exports,x=(n(112),n(19));function k(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}var S={name:"app-footer",components:{AppLink:g.a},computed:function(e){for(var t=1;t0&&(n=String(t)+(t>1?" days, ":" day, "));const s=new Date(e%864e5),a=(e,t=2)=>String(e).padStart(t,"0");return n+[String(s.getUTCHours()),a(s.getUTCMinutes()),a(s.getUTCSeconds()+Math.round(s.getUTCMilliseconds()/1e3))].join(":")}}},C=Object(w.a)(S,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("footer",[n("div",{staticClass:"footer clearfix"},[n("span",{staticClass:"footerhighlight"},[e._v(e._s(e.stats.overall.shows.total))]),e._v(" Shows ("),n("span",{staticClass:"footerhighlight"},[e._v(e._s(e.stats.overall.shows.active))]),e._v(" Active)\n | "),n("span",{staticClass:"footerhighlight"},[e._v(e._s(e.stats.overall.episodes.downloaded))]),e._v(" "),e.stats.overall.episodes.snatched?[n("span",{staticClass:"footerhighlight"},[n("app-link",{attrs:{href:"manage/episodeStatuses?whichStatus="+e.snatchedStatus,title:"View overview of snatched episodes"}},[e._v("+"+e._s(e.stats.overall.episodes.snatched))])],1),e._v("\n Snatched\n ")]:e._e(),e._v("\n / "),n("span",{staticClass:"footerhighlight"},[e._v(e._s(e.stats.overall.episodes.total))]),e._v(" Episodes Downloaded "),e.episodePercentage?n("span",{staticClass:"footerhighlight"},[e._v("("+e._s(e.episodePercentage)+")")]):e._e(),e._v("\n | Daily Search: "),n("span",{staticClass:"footerhighlight"},[e._v(e._s(e.schedulerNextRun("dailySearch")))]),e._v("\n | Backlog Search: "),n("span",{staticClass:"footerhighlight"},[e._v(e._s(e.schedulerNextRun("backlog")))]),e._v(" "),n("div",[e.system.memoryUsage?[e._v("\n Memory used: "),n("span",{staticClass:"footerhighlight"},[e._v(e._s(e.system.memoryUsage))]),e._v(" |\n ")]:e._e(),e._v(" "),e._v("\n Branch: "),n("span",{staticClass:"footerhighlight"},[e._v(e._s(e.system.branch||"Unknown"))]),e._v(" |\n Now: "),n("span",{staticClass:"footerhighlight"},[e._v(e._s(e.nowInUserPreset))])],2)],2)])},[],!1,null,"a67a05c0",null).exports,O=n(50).a,P=(n(214),Object(w.a)(O,function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("nav",{staticClass:"navbar navbar-default navbar-fixed-top hidden-print",attrs:{role:"navigation"}},[n("div",{staticClass:"container-fluid"},[n("div",{staticClass:"navbar-header"},[n("button",{staticClass:"navbar-toggle collapsed",attrs:{type:"button","data-toggle":"collapse","data-target":"#main_nav"}},[e.toolsBadgeCount>0?n("span",{class:"floating-badge"+e.toolsBadgeClass},[e._v(e._s(e.toolsBadgeCount))]):e._e(),e._v(" "),n("span",{staticClass:"sr-only"},[e._v("Toggle navigation")]),e._v(" "),n("span",{staticClass:"icon-bar"}),e._v(" "),n("span",{staticClass:"icon-bar"}),e._v(" "),n("span",{staticClass:"icon-bar"})]),e._v(" "),n("app-link",{staticClass:"navbar-brand",attrs:{href:"home/",title:"Medusa"}},[n("img",{staticClass:"img-responsive pull-left",staticStyle:{height:"50px"},attrs:{alt:"Medusa",src:"images/medusa.png"}})])],1),e._v(" "),e.isAuthenticated?n("div",{staticClass:"collapse navbar-collapse",attrs:{id:"main_nav"}},[n("ul",{staticClass:"nav navbar-nav navbar-right"},[n("li",{staticClass:"navbar-split dropdown",class:{active:"home"===e.topMenu},attrs:{id:"NAVhome"}},[n("app-link",{staticClass:"dropdown-toggle",attrs:{href:"home/","aria-haspopup":"true","data-toggle":"dropdown","data-hover":"dropdown"}},[n("span",[e._v("Shows")]),e._v(" "),n("b",{staticClass:"caret"})]),e._v(" "),n("ul",{staticClass:"dropdown-menu"},[n("li",[n("app-link",{attrs:{href:"home/"}},[n("i",{staticClass:"menu-icon-home"}),e._v(" Show List")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"addShows/"}},[n("i",{staticClass:"menu-icon-addshow"}),e._v(" Add Shows")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"addRecommended/"}},[n("i",{staticClass:"menu-icon-addshow"}),e._v(" Add Recommended Shows")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"home/postprocess/"}},[n("i",{staticClass:"menu-icon-postprocess"}),e._v(" Manual Post-Processing")])],1),e._v(" "),e.recentShows.length>0?n("li",{staticClass:"divider",attrs:{role:"separator"}}):e._e(),e._v(" "),e._l(e.recentShows,function(t){return n("li",{key:t.link},[n("app-link",{attrs:{href:t.link}},[n("i",{staticClass:"menu-icon-addshow"}),e._v(" "+e._s(t.name)+"\n ")])],1)})],2),e._v(" "),n("div",{staticStyle:{clear:"both"}})],1),e._v(" "),n("li",{class:{active:"schedule"===e.topMenu},attrs:{id:"NAVschedule"}},[n("app-link",{attrs:{href:"schedule/"}},[e._v("Schedule")])],1),e._v(" "),n("li",{class:{active:"history"===e.topMenu},attrs:{id:"NAVhistory"}},[n("app-link",{attrs:{href:"history/"}},[e._v("History")])],1),e._v(" "),n("li",{staticClass:"navbar-split dropdown",class:{active:"manage"===e.topMenu},attrs:{id:"NAVmanage"}},[n("app-link",{staticClass:"dropdown-toggle",attrs:{href:"manage/episodeStatuses/","aria-haspopup":"true","data-toggle":"dropdown","data-hover":"dropdown"}},[n("span",[e._v("Manage")]),e._v(" "),n("b",{staticClass:"caret"})]),e._v(" "),n("ul",{staticClass:"dropdown-menu"},[n("li",[n("app-link",{attrs:{href:"manage/"}},[n("i",{staticClass:"menu-icon-manage"}),e._v(" Mass Update")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"manage/backlogOverview/"}},[n("i",{staticClass:"menu-icon-backlog-view"}),e._v(" Backlog Overview")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"manage/manageSearches/"}},[n("i",{staticClass:"menu-icon-manage-searches"}),e._v(" Manage Searches")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"manage/episodeStatuses/"}},[n("i",{staticClass:"menu-icon-manage2"}),e._v(" Episode Status Management")])],1),e._v(" "),e.linkVisible.plex?n("li",[n("app-link",{attrs:{href:"home/updatePLEX/"}},[n("i",{staticClass:"menu-icon-plex"}),e._v(" Update PLEX")])],1):e._e(),e._v(" "),e.linkVisible.kodi?n("li",[n("app-link",{attrs:{href:"home/updateKODI/"}},[n("i",{staticClass:"menu-icon-kodi"}),e._v(" Update KODI")])],1):e._e(),e._v(" "),e.linkVisible.emby?n("li",[n("app-link",{attrs:{href:"home/updateEMBY/"}},[n("i",{staticClass:"menu-icon-emby"}),e._v(" Update Emby")])],1):e._e(),e._v(" "),e.linkVisible.manageTorrents?n("li",[n("app-link",{attrs:{href:"manage/manageTorrents/",target:"_blank"}},[n("i",{staticClass:"menu-icon-bittorrent"}),e._v(" Manage Torrents")])],1):e._e(),e._v(" "),e.linkVisible.failedDownloads?n("li",[n("app-link",{attrs:{href:"manage/failedDownloads/"}},[n("i",{staticClass:"menu-icon-failed-download"}),e._v(" Failed Downloads")])],1):e._e(),e._v(" "),e.linkVisible.subtitleMissed?n("li",[n("app-link",{attrs:{href:"manage/subtitleMissed/"}},[n("i",{staticClass:"menu-icon-backlog"}),e._v(" Missed Subtitle Management")])],1):e._e(),e._v(" "),e.linkVisible.subtitleMissedPP?n("li",[n("app-link",{attrs:{href:"manage/subtitleMissedPP/"}},[n("i",{staticClass:"menu-icon-backlog"}),e._v(" Missed Subtitle in Post-Process folder")])],1):e._e()]),e._v(" "),n("div",{staticStyle:{clear:"both"}})],1),e._v(" "),n("li",{staticClass:"navbar-split dropdown",class:{active:"config"===e.topMenu},attrs:{id:"NAVconfig"}},[n("app-link",{staticClass:"dropdown-toggle",attrs:{href:"config/","aria-haspopup":"true","data-toggle":"dropdown","data-hover":"dropdown"}},[n("span",{staticClass:"visible-xs-inline"},[e._v("Config")]),n("img",{staticClass:"navbaricon hidden-xs",attrs:{src:"images/menu/system18.png"}}),e._v(" "),n("b",{staticClass:"caret"})]),e._v(" "),n("ul",{staticClass:"dropdown-menu"},[n("li",[n("app-link",{attrs:{href:"config/"}},[n("i",{staticClass:"menu-icon-help"}),e._v(" Help & Info")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"config/general/"}},[n("i",{staticClass:"menu-icon-config"}),e._v(" General")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"config/backuprestore/"}},[n("i",{staticClass:"menu-icon-backup"}),e._v(" Backup & Restore")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"config/search/"}},[n("i",{staticClass:"menu-icon-manage-searches"}),e._v(" Search Settings")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"config/providers/"}},[n("i",{staticClass:"menu-icon-provider"}),e._v(" Search Providers")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"config/subtitles/"}},[n("i",{staticClass:"menu-icon-backlog"}),e._v(" Subtitles Settings")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"config/postProcessing/"}},[n("i",{staticClass:"menu-icon-postprocess"}),e._v(" Post Processing")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"config/notifications/"}},[n("i",{staticClass:"menu-icon-notification"}),e._v(" Notifications")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"config/anime/"}},[n("i",{staticClass:"menu-icon-anime"}),e._v(" Anime")])],1)]),e._v(" "),n("div",{staticStyle:{clear:"both"}})],1),e._v(" "),n("li",{staticClass:"navbar-split dropdown",class:{active:"system"===e.topMenu},attrs:{id:"NAVsystem"}},[n("app-link",{staticClass:"padding-right-15 dropdown-toggle",attrs:{href:"home/status/","aria-haspopup":"true","data-toggle":"dropdown","data-hover":"dropdown"}},[n("span",{staticClass:"visible-xs-inline"},[e._v("Tools")]),n("img",{staticClass:"navbaricon hidden-xs",attrs:{src:"images/menu/system18-2.png"}}),e._v(" "),e.toolsBadgeCount>0?n("span",{class:"badge"+e.toolsBadgeClass},[e._v(e._s(e.toolsBadgeCount))]):e._e(),e._v(" "),n("b",{staticClass:"caret"})]),e._v(" "),n("ul",{staticClass:"dropdown-menu"},[n("li",[n("app-link",{attrs:{href:"news/"}},[n("i",{staticClass:"menu-icon-news"}),e._v(" News "),e.system.news.unread>0?n("span",{staticClass:"badge"},[e._v(e._s(e.system.news.unread))]):e._e()])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"IRC/"}},[n("i",{staticClass:"menu-icon-irc"}),e._v(" IRC")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"changes/"}},[n("i",{staticClass:"menu-icon-changelog"}),e._v(" Changelog")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:e.config.donationsUrl}},[n("i",{staticClass:"menu-icon-support"}),e._v(" Support Medusa")])],1),e._v(" "),n("li",{staticClass:"divider",attrs:{role:"separator"}}),e._v(" "),e.config.logs.numErrors>0?n("li",[n("app-link",{attrs:{href:"errorlogs/"}},[n("i",{staticClass:"menu-icon-error"}),e._v(" View Errors "),n("span",{staticClass:"badge btn-danger"},[e._v(e._s(e.config.logs.numErrors))])])],1):e._e(),e._v(" "),e.config.logs.numWarnings>0?n("li",[n("app-link",{attrs:{href:"errorlogs/?level="+e.warningLevel}},[n("i",{staticClass:"menu-icon-viewlog-errors"}),e._v(" View Warnings "),n("span",{staticClass:"badge btn-warning"},[e._v(e._s(e.config.logs.numWarnings))])])],1):e._e(),e._v(" "),n("li",[n("app-link",{attrs:{href:"errorlogs/viewlog/"}},[n("i",{staticClass:"menu-icon-viewlog"}),e._v(" View Log")])],1),e._v(" "),n("li",{staticClass:"divider",attrs:{role:"separator"}}),e._v(" "),n("li",[n("app-link",{attrs:{href:"home/updateCheck?pid="+e.system.pid}},[n("i",{staticClass:"menu-icon-update"}),e._v(" Check For Updates")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"home/restart/?pid="+e.system.pid},nativeOn:{click:function(t){return t.preventDefault(),e.confirmDialog(t,"restart")}}},[n("i",{staticClass:"menu-icon-restart"}),e._v(" Restart")])],1),e._v(" "),n("li",[n("app-link",{attrs:{href:"home/shutdown/?pid="+e.system.pid},nativeOn:{click:function(t){return t.preventDefault(),e.confirmDialog(t,"shutdown")}}},[n("i",{staticClass:"menu-icon-shutdown"}),e._v(" Shutdown")])],1),e._v(" "),e.username?n("li",[n("app-link",{attrs:{href:"logout"},nativeOn:{click:function(t){return t.preventDefault(),e.confirmDialog(t,"logout")}}},[n("i",{staticClass:"menu-icon-shutdown"}),e._v(" Logout")])],1):e._e(),e._v(" "),n("li",{staticClass:"divider",attrs:{role:"separator"}}),e._v(" "),n("li",[n("app-link",{attrs:{href:"home/status/"}},[n("i",{staticClass:"menu-icon-info"}),e._v(" Server Status")])],1)]),e._v(" "),n("div",{staticStyle:{clear:"both"}})],1)])]):e._e()])])},[],!1,null,null,null).exports),E=n(21),D=(n(113),n(118),n(119),n(120),n(121),n(122),n(123),n(67).a),T=Object(w.a)(D,void 0,void 0,!1,null,null,null).exports,N=n(68).a,A=Object(w.a)(N,void 0,void 0,!1,null,null,null).exports,$=(n(114),n(115),n(116),n(71).a),j=Object(w.a)($,void 0,void 0,!1,null,null,null).exports,M=n(80),L=n(72).a,I=Object(w.a)(L,void 0,void 0,!1,null,null,null).exports,B=(n(27),n(73).a),z=(n(248),Object(w.a)(B,void 0,void 0,!1,null,null,null).exports),R=n(75).a,F=Object(w.a)(R,void 0,void 0,!1,null,null,null).exports,q=n(76).a,U=(n(250),Object(w.a)(q,function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.subMenu.length>0?n("div",{attrs:{id:"sub-menu-wrapper"}},[n("div",{staticClass:"row shadow",attrs:{id:"sub-menu-container"}},[n("div",{staticClass:"submenu-default hidden-print col-md-12",attrs:{id:"sub-menu"}},[e._l(e.subMenu,function(t){return n("app-link",{key:"sub-menu-"+t.title,staticClass:"btn-medusa top-5 bottom-5",attrs:{href:t.path},nativeOn:e._d({},[e.clickEventCond(t),function(n){return n.preventDefault(),e.confirmDialog(n,t.confirm)}])},[n("span",{class:["pull-left",t.icon]}),e._v(" "+e._s(t.title)+"\n ")])}),e._v(" "),e.showSelectorVisible?n("show-selector",{attrs:{"show-slug":e.curShowSlug,"follow-selection":""}}):e._e()],2)]),e._v(" "),n("div",{staticClass:"btn-group"})]):e._e()},[],!1,null,"0918603e",null).exports),Q=(n(78),n(117),n(22));n.d(t,"b",function(){return H}),n.d(t,"c",function(){return V});const H=()=>{let{components:e=[]}=window;(e=(e=(e=e.concat([C,P,g.m,U])).concat([y,v.a,g.a,g.b,E.a,g.c,g.d,g.e,g.f,g.g,g.h,g.j,g.k,g.l,M.a,g.n,g.o,g.p])).concat([T,A,j,I,z,F])).forEach(e=>{m.f&&console.debug("Registering ".concat(e.name)),s.a.component(e.name,e)})},V=()=>{s.a.use(a.a),s.a.use(o.a),s.a.use(i.a),s.a.use(l.a),s.a.use(d.a),s.a.use(u.b),l.a.config("10y")};t.a=()=>{const e=(e,t)=>"".concat(e," is using the global Vuex '").concat(t,"' state, ")+"please replace that with a local one using: mapState(['".concat(t,"'])");s.a.mixin({data(){return this.$root===this?{globalLoading:!0,pageComponent:!1}:{}},mounted(){if(this.$root===this&&!window.location.pathname.includes("/login")){const{username:e}=window;Promise.all([Q.a.dispatch("login",{username:e}),Q.a.dispatch("getConfig"),Q.a.dispatch("getStats")]).then(([e,t])=>{this.$emit("loaded");const n=new CustomEvent("medusa-config-loaded",{detail:t.main});window.dispatchEvent(n)}).catch(e=>{console.debug(e),alert("Unable to connect to Medusa!")})}this.$once("loaded",()=>{this.$root.globalLoading=!1})},computed:{auth(){return m.f&&!this.__VUE_DEVTOOLS_UID__&&console.warn(e(this._name,"auth")),this.$store.state.auth},config(){return m.f&&!this.__VUE_DEVTOOLS_UID__&&console.warn(e(this._name,"config")),this.$store.state.config}}}),m.f&&console.debug("Loading local Vue"),V(),H()}},function(e,t,n){var s=n(191);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("53f5e432",s,!1,{})},function(e,t,n){var s=n(193);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("8d1653e8",s,!1,{})},function(e,t,n){var s=n(195);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("3ca8845c",s,!1,{})},function(e,t,n){var s=n(197);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("1bcb1e12",s,!1,{})},function(e,t,n){"use strict";(function(e){var s=n(3);t.a={name:"file-browser",props:{name:{type:String,default:"proc_dir"},title:{type:String,default:"Choose Directory"},includeFiles:{type:Boolean,default:!1},showBrowseButton:{type:Boolean,default:!0},autocomplete:{type:Boolean,default:!1},localStorageKey:{type:String,default:""},initialDir:{type:String,default:""}},data(){return{lock:!1,unwatchProp:null,files:[],currentPath:this.initialDir,lastPath:"",url:"browser/",autocompleteUrl:"browser/complete",fileBrowserDialog:null,localStorageSupport:(()=>{try{return Boolean(localStorage.getItem),!0}catch(e){return console.log(e),!1}})()}},created(){this.unwatchProp=this.$watch("initialDir",e=>{this.unwatchProp(),this.lock=!0,this.currentPath=e,this.$nextTick(()=>{this.lock=!1})})},mounted(){const{autocomplete:e,fileBrowser:t,storedPath:n,$refs:s}=this;t(s.locationInput,e).on("autocompleteselect",(e,t)=>{this.currentPath=t.item.value}),!this.currentPath&&n&&(this.currentPath=n)},computed:{storedPath:{get(){const{localStorageSupport:e,localStorageKey:t}=this;return e&&t?localStorage["fileBrowser-"+t]:null},set(e){const{localStorageSupport:t,localStorageKey:n}=this;t&&n&&(localStorage["fileBrowser-"+n]=e)}}},methods:{toggleFolder(e,t){if(e.isFile)return;const n=t.target.children[0]||t.target;n.classList.toggle("ui-icon-folder-open"),n.classList.toggle("ui-icon-folder-collapsed")},fileClicked(t){t.isFile?(this.currentPath=t.path,e(this.$el).find('.browserDialog .ui-button:contains("Ok")').click()):this.browse(t.path)},browse(t){const{url:n,includeFiles:a,fileBrowserDialog:o}=this;e(this.$refs.fileBrowserSearchBox).autocomplete("close"),console.debug("Browsing to "+t),o.dialog("option","dialogClass","browserDialog busy"),o.dialog("option","closeText","");const i={path:t,includeFiles:Number(a)};s.c.get(n,{params:i}).then(e=>{const{data:t}=e;this.currentPath=t.shift().currentPath,this.files=t,o.dialog("option","dialogClass","browserDialog")}).catch(e=>{console.warning("Unable to browse to: ".concat(t,"\nError: ").concat(e.message),e)})},openFileBrowser(t){const n=this,{browse:s,title:a,fileBrowser:o,$refs:i}=n,{fileBrowserSearchBox:r,fileBrowserFileList:l}=i;n.fileBrowserDialog||(n.fileBrowserDialog=e(i.fileBrowserDialog).dialog({dialogClass:"browserDialog",title:a,position:{my:"center top",at:"center top+100",of:window},minWidth:Math.min(e(document).width()-80,650),height:Math.min(e(document).height()-120,e(window).height()-120),maxHeight:Math.min(e(document).height()-120,e(window).height()-120),maxWidth:e(document).width()-80,modal:!0,autoOpen:!1}),r.removeAttribute("style"),n.fileBrowserDialog.append(r),o(r,!0).on("autocompleteselect",(e,t)=>{s(t.item.value)})),n.fileBrowserDialog.dialog("option","buttons",[{text:"Ok",class:"medusa-btn",click(){t(n.currentPath),e(this).dialog("close")}},{text:"Cancel",class:"medusa-btn",click(){n.currentPath=n.lastPath,e(this).dialog("close")}}]),n.fileBrowserDialog.dialog("open"),s(n.currentPath),n.lastPath=n.currentPath,l.removeAttribute("style"),n.fileBrowserDialog.append(l)},fileBrowser(t,n){const s=this,{autocompleteUrl:a,includeFiles:o}=s,i=e(t);if(n&&i.autocomplete&&a){let t="";i.autocomplete({position:{my:"top",at:"bottom",collision:"flipfit"},source(n,s){t=e.ui.autocomplete.escapeRegex(n.term),n.includeFiles=Number(o),e.ajax({url:a,data:n,dataType:"json"}).done(n=>{const a=new RegExp("^"+t,"i"),o=e.grep(n,e=>a.test(e));s(o)})},open(){e(s.$el).find(".ui-autocomplete li.ui-menu-item a").removeClass("ui-corner-all")}}).data("ui-autocomplete")._renderItem=(n,s)=>{let a=s.label;const o=new RegExp("(?![^&;]+;)(?!<[^<>]*)("+t+")(?![^<>]*>)(?![^&;]+;)","gi");return a=a.replace(o,e=>""+e+""),e("
  • ").data("ui-autocomplete-item",s).append(''+a+"").appendTo(n)}}return i},openDialog(){const{openFileBrowser:e,currentPath:t}=this;e(e=>{this.storedPath=e||t})}},watch:{currentPath(){this.lock||this.$emit("update",this.currentPath)}}}}).call(this,n(5))},function(e,t,n){var s=n(199);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("c8a1d516",s,!1,{})},function(e,t,n){"use strict";(function(e){t.a={name:"language-select",props:{language:{type:String,default:"en"},available:{type:String,default:"en"},blank:{type:Boolean,default:!1},flags:{type:Boolean,default:!1}},mounted(){const t=this;e(this.$el).bfhlanguages({flags:this.flags,language:this.language,available:this.available,blank:this.blank}),e(this.$el).on("change",e=>{t.$emit("update-language",e.currentTarget.value)})},watch:{language(){e(this.$el).val(this.language)}}}}).call(this,n(5))},function(e,t,n){"use strict";(function(e){var s=n(19),a=n(17),o=n(3);t.a={name:"name-pattern",components:{ToggleButton:a.ToggleButton},props:{namingPattern:{type:String,default:""},namingPresets:{type:Array,default:()=>[]},multiEpStyle:{type:Number},multiEpStyles:{type:Array,default:()=>[]},animeNamingType:{type:Number,default:0},type:{type:String,default:""},enabled:{type:Boolean,default:!0},flagLoaded:{type:Boolean,default:!1}},data:()=>({presets:[],availableMultiEpStyles:[],pattern:"",customName:"",showLegend:!1,namingExample:"",namingExampleMulti:"",isEnabled:!1,selectedMultiEpStyle:1,animeType:0,lastSelectedPattern:""}),methods:{getDateFormat:e=>Object(s.a)(new Date,e),testNaming(e,t,n){console.debug("Test pattern ".concat(e," for ").concat(t?"multi":"single ep"));const s={pattern:e,anime_type:n};t&&(s.multi=t);try{return o.c.get("config/postProcessing/testNaming",{params:s,timeout:2e4}).then(e=>e.data)}catch(e){return console.warn(e),""}},updatePatternSamples(){this.customName||(this.customName=this.lastSelectedPattern);const e=this.isCustom?this.customName:this.pattern;e&&null!==this.animeType&&null!==this.selectedMultiEpStyle&&(this.testNaming(e,!1,this.animeType).then(e=>{this.namingExample=e+".ext"}),this.checkNaming(e,!1,this.animeType),this.isMulti&&(this.testNaming(e,this.selectedMultiEpStyle,this.animeType).then(e=>{this.namingExampleMulti=e+".ext"}),this.checkNaming(e,this.selectedMultiEpStyle,this.animeType)))},update(){this.flagLoaded&&this.$nextTick(()=>{this.$emit("change",{pattern:this.isCustom?this.customName:this.pattern,type:this.type,multiEpStyle:this.selectedMultiEpStyle,custom:this.isCustom,enabled:this.isEnabled,animeNamingType:Number(this.animeType)})})},checkNaming(t,n,s){if(!t)return;const a={pattern:t,anime_type:s};n&&(a.multi=n);const{$el:i}=this,r=e(i);o.c.get("config/postProcessing/isNamingValid",{params:a,timeout:2e4}).then(e=>{"invalid"===e.data?(r.find("#naming_pattern").qtip("option",{"content.text":"This pattern is invalid.","style.classes":"qtip-rounded qtip-shadow qtip-red"}),r.find("#naming_pattern").qtip("toggle",!0),r.find("#naming_pattern").css("background-color","#FFDDDD")):"seasonfolders"===e.data?(r.find("#naming_pattern").qtip("option",{"content.text":'This pattern would be invalid without the folders, using it will force "Flatten" off for all shows.',"style.classes":"qtip-rounded qtip-shadow qtip-red"}),r.find("#naming_pattern").qtip("toggle",!0),r.find("#naming_pattern").css("background-color","#FFFFDD")):(r.find("#naming_pattern").qtip("option",{"content.text":"This pattern is valid.","style.classes":"qtip-rounded qtip-shadow qtip-green"}),r.find("#naming_pattern").qtip("toggle",!1),r.find("#naming_pattern").css("background-color","#FFFFFF"))}).catch(e=>{console.warn(e)})},updateCustomName(){this.presetsPatterns.includes(this.pattern)||(this.customName=this.pattern),this.customName||(this.customName=this.lastSelectedPattern)}},computed:{isCustom(){return!!this.pattern&&(!this.presetsPatterns.includes(this.pattern)||"Custom..."===this.pattern)},selectedNamingPattern:{get(){return this.isCustom?"Custom...":(()=>{const e=this.presets.filter(e=>e.pattern===this.pattern);return e.length>0&&e[0].example})()},set(e){this.pattern=this.presets.filter(t=>t.example===e)[0].pattern}},presetsPatterns(){return this.presets.map(e=>e.pattern)},isMulti(){return Boolean(this.multiEpStyle)}},mounted(){this.pattern=this.namingPattern,this.presets=this.namingPresets.concat({pattern:"Custom...",example:"Custom..."}),this.updateCustomName(),this.availableMultiEpStyles=this.multiEpStyles,this.selectedMultiEpStyle=this.multiEpStyle,this.animeType=this.animeNamingType,this.isEnabled=!this.type&&this.enabled,this.updatePatternSamples()},watch:{enabled(){this.isEnabled=this.enabled},namingPattern(e,t){this.lastSelectedPattern=e||t,this.pattern=this.namingPattern,this.updateCustomName(),this.updatePatternSamples()},namingPresets(){this.presets=this.namingPresets},multiEpStyle(){this.selectedMultiEpStyle=this.multiEpStyle,this.updatePatternSamples()},multiEpStyles(){this.availableMultiEpStyles=this.multiEpStyles},animeNamingType(){this.animeType=this.animeNamingType,this.updatePatternSamples()},type(){this.isEnabled=!this.type&&this.enabled}}}}).call(this,n(5))},function(e,t,n){var s=n(201);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("3cd47313",s,!1,{})},function(e,t,n){var s=n(203);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("357562c6",s,!1,{})},function(e,t,n){var s=n(205);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("0d4dcec1",s,!1,{})},function(e,t,n){"use strict";(function(e){t.a={name:"scroll-buttons",data:()=>({showToTop:!1,showLeftRight:!1}),methods:{scrollTop(){const{scrollTo:t}=this;t(e("body"))},scrollLeft(){e("div.horizontal-scroll").animate({scrollLeft:"-=153"},1e3,"easeOutQuad")},scrollRight(){e("div.horizontal-scroll").animate({scrollLeft:"+=153"},1e3,"easeOutQuad")},scrollTo(t){e("html, body").animate({scrollTop:e(t).offset().top},500,"linear")},initHorizontalScroll(){const t=e("div.horizontal-scroll").get();if(0===t.length)return;const n=t.map(e=>e.scrollWidth>e.clientWidth).indexOf(!0);this.showLeftRight=n>=0}},mounted(){const{initHorizontalScroll:t}=this;t(),e(window).on("resize",()=>{t()}),e(document).on("scroll",()=>{e(window).scrollTop()>100?this.showToTop=!0:this.showToTop=!1})}}}).call(this,n(5))},function(e,t,n){var s=n(207);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("0faefb92",s,!1,{})},function(e,t,n){var s=n(209);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("3fbe8aec",s,!1,{})},function(e,t,n){var s=n(211);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("ea8d60b8",s,!1,{})},function(e,t,n){var s=n(213);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("13510eb0",s,!1,{})},function(e,t,n){"use strict";(function(e){var s=n(4),a=n.n(s),o=n(1),i=n(2);function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}t.a={name:"app-header",components:{AppLink:i.a},computed:function(e){for(var t=1;te.auth.isAuthenticated,username:e=>e.auth.user.username,warningLevel:e=>e.config.logs.loggingLevels.warning}),{recentShows(){const{config:e}=this,{recentShows:t}=e;return t.map(e=>{const{name:t,indexerName:n,showId:s}=e;return{name:t,link:"home/displayShow?indexername=".concat(n,"&seriesid=").concat(s)}})},topMenu(){return this.$route.meta.topMenu},toolsBadgeCount(){const{config:e}=this,{system:t}=this,{logs:n}=e,{news:s}=t;return n.numErrors+n.numWarnings+s.unread},toolsBadgeClass(){const{config:e}=this,{logs:t}=e;return t.numErrors>0?" btn-danger":t.numWarnings>0?" btn-warning":""},linkVisible(){const{clients:e,config:t,notifiers:n,postprocessing:s,search:a}=this,{subtitles:o}=t,{general:i}=a,{kodi:r,plex:l,emby:c}=n;return{plex:l.server.enabled&&0!==l.server.host.length,kodi:r.enabled&&0!==r.host.length,emby:c.enabled&&c.host,manageTorrents:e.torrents.enabled&&"blackhole"!==e.torrents.method,failedDownloads:i.failedDownloads.enabled,subtitleMissed:o.enabled,subtitleMissedPP:s.postponeIfNoSubs}}}),mounted(){const{$el:t}=this;t.clickCloseMenus=t=>{const{target:n}=t;if(n.matches("#main_nav a.router-link, #main_nav a.router-link *")){const t=n.closest(".dropdown");t.querySelector(".dropdown-toggle").setAttribute("aria-expanded",!1),t.querySelector(".dropdown-menu").style.display="none",e("#main_nav").collapse("hide")}},t.addEventListener("click",t.clickCloseMenus,{passive:!0}),e(t).on({mouseenter(t){const n=e(t.currentTarget);n.find(".dropdown-menu").stop(!0,!0).delay(200).fadeIn(500,()=>{n.find(".dropdown-toggle").attr("aria-expanded","true")})},mouseleave(t){const n=e(t.currentTarget);n.find(".dropdown-toggle").attr("aria-expanded","false"),n.find(".dropdown-menu").stop(!0,!0).delay(200).fadeOut(500)}},"ul.nav li.dropdown"),(navigator.maxTouchPoints||0)<2&&e(t).on("click",".dropdown-toggle",t=>{const n=e(t.currentTarget);"true"===n.attr("aria-expanded")&&(window.location.href=n.attr("href"))})},destroyed(){const{$el:t}=this;t.removeEventListener("click",t.clickCloseMenus),e(t).off("mouseenter mouseleave","ul.nav li.dropdown"),(navigator.maxTouchPoints||0)<2&&e(t).off("click",".dropdown-toggle")},methods:{confirmDialog(t,n){const s={confirmButton:"Yes",cancelButton:"Cancel",dialogClass:"modal-dialog",post:!1,button:e(t.currentTarget),confirm(e){window.location.href=e[0].href}};if("restart"===n)s.title="Restart",s.text="Are you sure you want to restart Medusa?";else if("shutdown"===n)s.title="Shutdown",s.text="Are you sure you want to shutdown Medusa?";else{if("logout"!==n)return;s.title="Logout",s.text="Are you sure you want to logout from Medusa?"}e.confirm(s,t)}}}}).call(this,n(5))},function(e,t,n){var s=n(215);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("ef1315ea",s,!1,{})},function(e,t,n){"use strict";(function(e){var s=n(4),a=n.n(s),o=n(1),i=n(3),r=n(6);function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}t.a={name:"backstretch",render:e=>e(),props:{slug:String},data:()=>({created:!1}),computed:function(e){for(var t=1;te.layout.fanartBackground,opacity:e=>e.layout.fanartBackgroundOpacity}),{offset(){let t="90px";return 0===e("#sub-menu-container").length&&(t="50px"),e(window).width()<1280&&(t="50px"),t}}),async mounted(){try{await Object(r.g)(()=>null!==this.enabled)}catch(e){}if(!this.enabled)return;const{opacity:t,slug:n,offset:s}=this;if(n){const a="".concat(i.e,"/api/v2/series/").concat(n,"/asset/fanart?api_key=").concat(i.b),{$wrap:o}=e.backstretch(a);o.css("top",s),o.css("opacity",t).fadeIn(500),this.created=!0}},destroyed(){this.created&&e.backstretch("destroy")},watch:{opacity(t){if(this.created){const{$wrap:n}=e("body").data("backstretch");n.css("opacity",t).fadeIn(500)}}}}}).call(this,n(5))},function(e,t,n){var s=n(217);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("680016fc",s,!1,{})},function(e,t,n){"use strict";(function(e){var s=n(30),a=n.n(s),o=n(4),i=n.n(o),r=n(3),l=n(1),c=n(80),d=n(2),u=n(6),p=n(19),h=n(17),f=n(131),m=n.n(f),g=(n(221),n(23));function v(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}function b(e){for(var t=1;t({defaultPageOptions:[{value:"home",text:"Shows"},{value:"schedule",text:"Schedule"},{value:"history",text:"History"},{value:"news",text:"News"},{value:"IRC",text:"IRC"}],privacyLevelOptions:[{value:"high",text:"HIGH"},{value:"normal",text:"NORMAL"},{value:"low",text:"LOW"}],githubBranchesForced:[],resetBranchSelected:null}),beforeMount(){this.$nextTick(()=>{e("#config-components").tabs()})},computed:b({},Object(l.e)({config:e=>e.config,configLoaded:e=>e.consts.statuses.length>0,layout:e=>e.layout,statuses:e=>e.consts.statuses,indexers:e=>e.indexers,system:e=>e.system}),{},Object(l.d)(["getStatus"]),{indexerDefault:{get(){const{config:e}=this,{indexerDefault:t}=e;return t||0},set(e){this.config.indexerDefault=e}},indexerListOptions(){const{indexers:e}=this;return[{text:"All Indexers",value:0},...Object.values(e.indexers).map(e=>({value:e.id,text:e.name}))]},datePresetOptions(){const{config:e}=this,{datePresets:t}=e;return[{value:"%x",text:"Use System Default"},...t.map(e=>({value:e,text:Object(p.a)(new Date,Object(u.d)(e))}))]},timePresetOptions(){const{config:e}=this,{timePresets:t}=e;return[{value:"%x",text:"Use System Default"},...t.map(e=>({value:e,text:Object(p.a)(new Date,Object(u.d)(e))}))]},availableThemesOptions(){const{config:e}=this,{availableThemes:t}=e;return t?t.map(e=>({value:e.name,text:"".concat(e.name," (").concat(e.version,")")})):[]},cpuPresetOptions(){const{system:e}=this,{cpuPresets:t}=e;return t?Object.keys(t).map(e=>({value:e,text:e})):[]},defaultDeletedEpOptions(){const{config:e,getStatus:t}=this;let n=[];return(n=e.skipRemovedFiles?["skipped","ignored"].map(e=>t({key:e})):["skipped","ignored","archived"].map(e=>t({key:e}))).every(e=>void 0!==e)?n.map(e=>({text:e.name,value:e.value})):[]},githubRemoteBranchesOptions(){const{config:e,githubBranches:t,githubBranchForceUpdate:n}=this,{system:s}=this,{username:a,password:o,token:i}=e.git;if(!s.gitRemoteBranches)return[];!s.gitRemoteBranches.length>0&&n();let r=[];return(r=(a&&o||i)&&e.developer?t:a&&o||i?t.filter(e=>["master","develop"].includes(e)):t.filter(e=>["master"].includes(e))).map(e=>({text:e,value:e}))},githubBranches(){const{system:e,githubBranchesForced:t}=this;return e.gitRemoteBranches||t},githubTokenPopover(){const{config:e}=this;return"

    Copy the generated token and paste it in the token input box.

    "+'

    ')+'


    '}}),methods:b({},Object(l.c)(["setConfig","setTheme","getApiKey"]),{async githubBranchForceUpdate(){const e=await Object(r.c)("home/branchForceUpdate");e.data._size>0&&(this.githubBranchesForced=e.data.resetBranches)},async generateApiKey(){const{getApiKey:e,save:t}=this;try{await e(),this.$snotify.success("Saving and reloading the page, to utilize the new api key","Warning",{timeout:5e3}),setTimeout(()=>{t()},500),setTimeout(()=>{location.reload()},500)}catch(e){this.$snotify.error("Error while trying to get a new api key","Error")}},async changeTheme(e){const{setTheme:t}=this;try{await t({themeName:e}),this.$snotify.success("Saving and reloading the page","Saving",{timeout:5e3}),setTimeout(()=>{location.reload()},1e3)}catch(e){this.$snotify.error("Error while trying to change the theme","Error")}},async save(){const{config:e,layout:t,setConfig:n}=this;this.saving=!0;const{availableThemes:s,backlogOverview:o,datePresets:i,loggingLevels:r,logs:l,timePresets:c,randomShowSlug:d,recentShows:u,themeName:p}=e,h=a()(e,["availableThemes","backlogOverview","datePresets","loggingLevels","logs","timePresets","randomShowSlug","recentShows","themeName"]),f={section:"main",config:Object.assign({},h,{layout:t},{logs:{debug:e.logs.debug,dbDebug:e.logs.dbDebug,actualLogDir:e.logs.actualLogDir,nr:e.logs.nr,size:e.logs.size,subliminalLog:e.logs.subliminalLog,privacyLevel:e.logs.privacyLevel}})};try{await n(f),this.$snotify.success("Saved general config","Saved",{timeout:5e3})}catch(e){this.$snotify.error("Error while trying to save general config","Error")}finally{this.saving=!1}}})}}).call(this,n(5))},function(e,t,n){"use strict";(function(e){var s=n(4),a=n.n(s),o=n(1);function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}t.a={name:"root-dirs",inheritAttrs:!1,data:()=>({rootDirs:[]}),beforeMount(){const{rawRootDirs:e,transformRaw:t}=this;this.rootDirs=t(e)},computed:function(e){for(var t=1;te.config.rootDirs}),{paths(){return this.rootDirs.map(e=>e.path)},selectedRootDir:{get(){const{rootDirs:e}=this,t=e.find(e=>e.selected);return t&&0!==e.length?t.path:null},set(e){const{rootDirs:t}=this;this.rootDirs=t.map(t=>(t.selected=t.path===e,t))}},defaultRootDir:{get(){const{rootDirs:e}=this,t=e.find(e=>e.default);return t&&0!==e.length?t.path:null},set(e){const{rootDirs:t}=this;this.rootDirs=t.map(t=>(t.default=t.path===e,t))}}}),filters:{markDefault:e=>e.default?"* ".concat(e.path):e.path},methods:{transformRaw(e){if(e.length<2)return[];const t=parseInt(e[0],10);return e.slice(1).map((e,n)=>({path:e,default:n===t,selected:n===t}))},add(){const{$el:t,rootDirs:n,selectedRootDir:s,defaultRootDir:a,saveRootDirs:o}=this;e(t).nFileBrowser(e=>{if(0===e.length)return;const t=n.find(t=>t.path===e);if(t&&t.path!==s)return void(this.selectedRootDir=e);const i=null===a;n.push({path:e,default:i,selected:i}),o()})},edit(){const{$el:t,rootDirs:n,selectedRootDir:s,saveRootDirs:a}=this;e(t).nFileBrowser(e=>{if(0===e.length)return;const t=n.find(t=>t.path===e);if(t&&t.path!==s){const a=t.default;this.rootDirs=n.reduce((t,n)=>{if(n.path===s)return t;const o=n.path===e;return n.selected=o,n.default=a&&o,t.push(n),t},[])}else n.find(e=>e.selected).path=e,this.selectedRootDir=e,a()},{initialDir:s})},remove(){const{rootDirs:e,selectedRootDir:t,defaultRootDir:n,saveRootDirs:s}=this,a=e.findIndex(e=>e.selected),o=t,i=e.filter(e=>!e.selected);if(i.length>0){const e=a>0?a-1:0;this.selectedRootDir=i[e].path}else this.selectedRootDir=null;null!==this.defaultRootDir&&o===n&&(this.defaultRootDir=t),this.rootDirs=i,s()},setDefault(){const{selectedRootDir:e,defaultRootDir:t,saveRootDirs:n}=this;e!==t&&(this.defaultRootDir=e,n())},saveRootDirs(){const{$store:e,paths:t,defaultRootDir:n}=this,s=t.slice();if(null!==n&&0!==t.length){const e=s.findIndex(e=>e===n);s.splice(0,0,e.toString())}return e.dispatch("setConfig",{section:"main",config:{rootDirs:s}})}},watch:{rawRootDirs(e){const{transformRaw:t}=this;this.rootDirs=t(e)},rootDirs:{handler(t){this.$emit("update",t),this.$nextTick(()=>{e(this.$refs.rootDirs).trigger("change")})},deep:!0,immediate:!1},paths(e,t){JSON.stringify(e)!==JSON.stringify(t)&&this.$emit("update:paths",e)}}}}).call(this,n(5))},function(e,t,n){var s=n(220);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("571cda75",s,!1,{})},function(e,t,n){var s=n(223);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("760015ea",s,!1,{})},function(e,t,n){"use strict";(function(e){var s=n(30),a=n.n(s),o=n(4),i=n.n(o),r=n(1),l=n(17),c=n(2);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}function u(e){for(var t=1;t({presets:[{pattern:"%SN - %Sx%0E - %EN",example:"Show Name - 2x03 - Ep Name"},{pattern:"%S.N.S%0SE%0E.%E.N",example:"Show.Name.S02E03.Ep.Name"},{pattern:"%Sx%0E - %EN",example:"2x03 - Ep Name"},{pattern:"S%0SE%0E - %EN",example:"S02E03 - Ep Name"},{pattern:"Season %0S/%S.N.S%0SE%0E.%Q.N-%RG",example:"Season 02/Show.Name.S02E03.720p.HDTV-RLSGROUP"}],processMethods:[{value:"copy",text:"Copy"},{value:"move",text:"Move"},{value:"hardlink",text:"Hard Link"},{value:"symlink",text:"Symbolic Link"}],timezoneOptions:[{value:"local",text:"Local"},{value:"network",text:"Network"}],metadataProviderSelected:null}),methods:u({},Object(r.c)(["setConfig"]),{onChangeSyncFiles(e){const{postprocessing:t}=this;t.syncFiles=e.map(e=>e.value)},onChangeAllowedExtensions(e){const{postprocessing:t}=this;t.allowedExtensions=e.map(e=>e.value)},onChangeExtraScripts(e){const{postprocessing:t}=this;t.extraScripts=e.map(e=>e.value)},saveNaming(e){const{postprocessing:t}=this;this.configLoaded&&(t.naming.pattern=e.pattern,t.naming.multiEp=e.multiEpStyle)},saveNamingSports(e){const{postprocessing:t}=this;this.configLoaded&&(t.naming.patternSports=e.pattern,t.naming.enableCustomNamingSports=e.enabled)},saveNamingAbd(e){const{postprocessing:t}=this;this.configLoaded&&(t.naming.patternAirByDate=e.pattern,t.naming.enableCustomNamingAirByDate=e.enabled)},saveNamingAnime(e){const{postprocessing:t}=this;this.configLoaded&&(t.naming.patternAnime=e.pattern,t.naming.animeMultiEp=e.multiEpStyle,t.naming.animeNamingType=e.animeNamingType,t.naming.enableCustomNamingAnime=e.enabled)},async save(){const{postprocessing:e,metadata:t,setConfig:n}=this;if(!this.configLoaded)return;this.saving=!0;const s=Object.assign({},{postprocessing:e,metadata:t}),{multiEpStrings:o,reflinkAvailable:i}=e,r=a()(e,["multiEpStrings","reflinkAvailable"]);s.postProcessing=r;try{await n({section:"main",config:s}),this.$snotify.success("Saved Post-Processing config","Saved",{timeout:5e3})}catch(e){this.$snotify.error("Error while trying to save Post-Processing config","Error")}finally{this.saving=!1}},getFirstEnabledMetadataProvider(){const{metadata:e}=this,t=Object.values(e.metadataProviders).find(e=>e.showMetadata||e.episodeMetadata);return void 0===t?"kodi":t.id}}),computed:u({},Object(r.e)(["config","metadata","postprocessing","system"]),{configLoaded(){const{postprocessing:e}=this;return null!==e.processAutomatically},multiEpStringsSelect(){const{postprocessing:e}=this;return e.multiEpStrings?Object.keys(e.multiEpStrings).map(t=>({value:Number(t),text:e.multiEpStrings[t]})):[]}}),beforeMount(){this.$nextTick(()=>{e("#config-components").tabs()})},watch:{"metadata.metadataProviders":function(e){const{getFirstEnabledMetadataProvider:t}=this;Object.keys(e).length>0&&(this.metadataProviderSelected=t())}}}}).call(this,n(5))},function(e,t,n){"use strict";(function(e){var s=n(4),a=n.n(s),o=n(3),i=n(1),r=n(2);function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}function c(e){for(var t=1;t({prowlSelectedShow:null,prowlSelectedShowApiKeys:[],prowlPriorityOptions:[{text:"Very Low",value:-2},{text:"Moderate",value:-1},{text:"Normal",value:0},{text:"High",value:1},{text:"Emergency",value:2}],pushoverPriorityOptions:[{text:"Lowest",value:-2},{text:"Low",value:-1},{text:"Normal",value:0},{text:"High",value:1},{text:"Emergency",value:2}],pushoverSoundOptions:[{text:"Default",value:"default"},{text:"Pushover",value:"pushover"},{text:"Bike",value:"bike"},{text:"Bugle",value:"bugle"},{text:"Cash Register",value:"cashregister"},{text:"classical",value:"classical"},{text:"Cosmic",value:"cosmic"},{text:"Falling",value:"falling"},{text:"Gamelan",value:"gamelan"},{text:"Incoming",value:"incoming"},{text:"Intermission",value:"intermission"},{text:"Magic",value:"magic"},{text:"Mechanical",value:"mechanical"},{text:"Piano Bar",value:"pianobar"},{text:"Siren",value:"siren"},{text:"Space Alarm",value:"spacealarm"},{text:"Tug Boat",value:"tugboat"},{text:"Alien Alarm (long)",value:"alien"},{text:"Climb (long)",value:"climb"},{text:"Persistent (long)",value:"persistant"},{text:"Pushover Echo (long)",value:"echo"},{text:"Up Down (long)",value:"updown"},{text:"None (silent)",value:"none"}],pushbulletDeviceOptions:[{text:"All devices",value:""}],traktMethodOptions:[{text:"Skip all",value:0},{text:"Download pilot only",value:1},{text:"Get whole show",value:2}],pushbulletTestInfo:"Click below to test.",joinTestInfo:"Click below to test.",twitterTestInfo:"Click below to test.",twitterKey:"",emailSelectedShow:null,emailSelectedShowAdresses:[]}),computed:c({},Object(i.e)(["config","indexers","notifiers"]),{traktNewTokenMessage(){const{accessToken:e}=this.notifiers.trakt;return"New "},traktIndexersOptions(){const{indexers:e}=this,{traktIndexers:t}=e.main;return Object.keys(e.indexers).filter(e=>t[e]).map(t=>({text:t,value:e.indexers[t].id}))}}),created(){const{getShows:e}=this;e()},beforeMount(){this.$nextTick(()=>{e("#config-components").tabs()})},mounted(){e("#trakt_pin").on("keyup change",()=>{0===e("#trakt_pin").val().length?(e("#TraktGetPin").removeClass("hide"),e("#authTrakt").addClass("hide")):(e("#TraktGetPin").addClass("hide"),e("#authTrakt").removeClass("hide"))})},methods:c({},Object(i.c)(["getShows","setConfig"]),{onChangeProwlApi(e){this.notifiers.prowl.api=e.map(e=>e.value)},savePerShowNotifyList(e,t){const{emailSelectedShow:n,prowlSelectedShow:s}=this,a=new FormData;"prowl"===e?(a.set("show",s),a.set("prowlAPIs",t.map(e=>e.value))):(a.set("show",n),a.set("emails",t.map(e=>e.value))),o.c.post("home/saveShowNotifyList",a)},async prowlUpdateApiKeys(e){this.prowlSelectedShow=e;const t=await Object(o.c)("home/loadShowNotifyLists");if(t.data._size>0){const n=t.data[e].prowl_notify_list?t.data[e].prowl_notify_list.split(","):[];this.prowlSelectedShowApiKeys=e?n:[]}},async emailUpdateShowEmail(e){this.emailSelectedShow=e;const t=await Object(o.c)("home/loadShowNotifyLists");if(t.data._size>0){const n=t.data[e].list?t.data[e].list.split(","):[];this.emailSelectedShowAdresses=e?n:[]}},emailUpdateAddressList(e){this.notifiers.email.addressList=e.map(e=>e.value)},async getPushbulletDeviceOptions(){const{api:t}=this.notifiers.pushbullet;if(!t)return this.pushbulletTestInfo="You didn't supply a Pushbullet api key",e("#pushbullet_api").find("input").focus(),!1;const n=await Object(o.c)("home/getPushbulletDevices",{params:{api:t}}),s=[],{data:a}=n;if(!a)return!1;s.push({text:"All devices",value:""});for(const e of a.devices)!0===e.active&&s.push({text:e.nickname,value:e.iden});this.pushbulletDeviceOptions=s,this.pushbulletTestInfo="Device list updated. Please choose a device to push to."},async testPushbulletApi(){const{api:t}=this.notifiers.pushbullet;if(!t)return this.pushbulletTestInfo="You didn't supply a Pushbullet api key",e("#pushbullet_api").find("input").focus(),!1;const n=await Object(o.c)("home/testPushbullet",{params:{api:t}}),{data:s}=n;s&&(this.pushbulletTestInfo=s)},async testJoinApi(){const{api:t}=this.notifiers.join;if(!t)return this.joinTestInfo="You didn't supply a Join api key",e("#join_api").find("input").focus(),!1;const n=await Object(o.c)("home/testJoin",{params:{api:t}}),{data:s}=n;s&&(this.joinTestInfo=s)},async twitterStep1(){this.twitterTestInfo=MEDUSA.config.loading;const e=await Object(o.c)("home/twitterStep1"),{data:t}=e;window.open(t),this.twitterTestInfo="Step1: Confirm Authorization"},async twitterStep2(){const e={},{twitterKey:t}=this;if(e.key=t,e.key){const t=await Object(o.c)("home/twitterStep2",{params:{key:e.key}}),{data:n}=t;this.twitterTestInfo=n}else this.twitterTestInfo="Please fill out the necessary fields above."},async twitterTest(){try{const e=await Object(o.c)("home/testTwitter"),{data:t}=e;this.twitterTestInfo=t}catch(e){this.twitterTestInfo="Error while trying to request for a test on the twitter api."}},async save(){const{notifiers:e,setConfig:t}=this;this.saving=!0;try{await t({section:"main",config:{notifiers:e}}),this.$snotify.success("Saved Notifiers config","Saved",{timeout:5e3})}catch(e){this.$snotify.error("Error while trying to save notifiers config","Error")}finally{this.saving=!1}},testGrowl(){const t={};if(t.host=e.trim(e("#growl_host").val()),t.password=e.trim(e("#growl_password").val()),!t.host)return e("#testGrowl-result").html("Please fill out the necessary fields above."),void e("#growl_host").addClass("warning");e("#growl_host").removeClass("warning"),e(this).prop("disabled",!0),e("#testGrowl-result").html(MEDUSA.config.loading),e.get("home/testGrowl",{host:t.host,password:t.password}).done(t=>{e("#testGrowl-result").html(t),e("#testGrowl").prop("disabled",!1)})},testProwl(){const t={};if(t.api=e.trim(e("#prowl_api").find("input").val()),t.priority=e("#prowl_priority").find("input").val(),!t.api)return e("#testProwl-result").html("Please fill out the necessary fields above."),void e("#prowl_api").find("input").addClass("warning");e("#prowl_api").find("input").removeClass("warning"),e(this).prop("disabled",!0),e("#testProwl-result").html(MEDUSA.config.loading),e.get("home/testProwl",{prowl_api:t.api,prowl_priority:t.priority}).done(t=>{e("#testProwl-result").html(t),e("#testProwl").prop("disabled",!1)})},testKODI(){const t={},n=e.map(e("#kodi_host").find("input"),e=>e.value).filter(e=>""!==e);if(t.host=n.join(","),t.username=e.trim(e("#kodi_username").val()),t.password=e.trim(e("#kodi_password").val()),!t.host)return e("#testKODI-result").html("Please fill out the necessary fields above."),void e("#kodi_host").find("input").addClass("warning");e("#kodi_host").find("input").removeClass("warning"),e(this).prop("disabled",!0),e("#testKODI-result").html(MEDUSA.config.loading),e.get("home/testKODI",{host:t.host,username:t.username,password:t.password}).done(t=>{e("#testKODI-result").html(t),e("#testKODI").prop("disabled",!1)})},testPHT(){const t={client:{}},n=e.map(e("#plex_client_host").find("input"),e=>e.value).filter(e=>""!==e);if(t.client.host=n.join(","),t.client.username=e.trim(e("#plex_client_username").val()),t.client.password=e.trim(e("#plex_client_password").val()),!t.client.host)return e("#testPHT-result").html("Please fill out the necessary fields above."),void e("#plex_client_host").find("input").addClass("warning");e("#plex_client_host").find("input").removeClass("warning"),e(this).prop("disabled",!0),e("#testPHT-result").html(MEDUSA.config.loading),e.get("home/testPHT",{host:t.client.host,username:t.client.username,password:t.client.password}).done(t=>{e("#testPHT-result").html(t),e("#testPHT").prop("disabled",!1)})},testPMS(){const t={server:{}},n=e.map(e("#plex_server_host").find("input"),e=>e.value).filter(e=>""!==e);if(t.server.host=n.join(","),t.server.username=e.trim(e("#plex_server_username").val()),t.server.password=e.trim(e("#plex_server_password").val()),t.server.token=e.trim(e("#plex_server_token").val()),!t.server.host)return e("#testPMS-result").html("Please fill out the necessary fields above."),void e("#plex_server_host").find("input").addClass("warning");e("#plex_server_host").find("input").removeClass("warning"),e(this).prop("disabled",!0),e("#testPMS-result").html(MEDUSA.config.loading),e.get("home/testPMS",{host:t.server.host,username:t.server.username,password:t.server.password,plex_server_token:t.server.token}).done(t=>{e("#testPMS-result").html(t),e("#testPMS").prop("disabled",!1)})},testEMBY(){const t={};if(t.host=e("#emby_host").val(),t.apikey=e("#emby_apikey").val(),!t.host||!t.apikey)return e("#testEMBY-result").html("Please fill out the necessary fields above."),e("#emby_host").addRemoveWarningClass(t.host),void e("#emby_apikey").addRemoveWarningClass(t.apikey);e("#emby_host,#emby_apikey").children("input").removeClass("warning"),e(this).prop("disabled",!0),e("#testEMBY-result").html(MEDUSA.config.loading),e.get("home/testEMBY",{host:t.host,emby_apikey:t.apikey}).done(t=>{e("#testEMBY-result").html(t),e("#testEMBY").prop("disabled",!1)})},testBoxcar2(){const t={};if(t.accesstoken=e.trim(e("#boxcar2_accesstoken").val()),!t.accesstoken)return e("#testBoxcar2-result").html("Please fill out the necessary fields above."),void e("#boxcar2_accesstoken").addClass("warning");e("#boxcar2_accesstoken").removeClass("warning"),e(this).prop("disabled",!0),e("#testBoxcar2-result").html(MEDUSA.config.loading),e.get("home/testBoxcar2",{accesstoken:t.accesstoken}).done(t=>{e("#testBoxcar2-result").html(t),e("#testBoxcar2").prop("disabled",!1)})},testPushover(){const t={};if(t.userkey=e("#pushover_userkey").val(),t.apikey=e("#pushover_apikey").val(),!t.userkey||!t.apikey)return e("#testPushover-result").html("Please fill out the necessary fields above."),e("#pushover_userkey").addRemoveWarningClass(t.userkey),void e("#pushover_apikey").addRemoveWarningClass(t.apikey);e("#pushover_userkey,#pushover_apikey").removeClass("warning"),e(this).prop("disabled",!0),e("#testPushover-result").html(MEDUSA.config.loading),e.get("home/testPushover",{userKey:t.userkey,apiKey:t.apikey}).done(t=>{e("#testPushover-result").html(t),e("#testPushover").prop("disabled",!1)})},testLibnotify(){e("#testLibnotify-result").html(MEDUSA.config.loading),e.get("home/testLibnotify",t=>{e("#testLibnotify-result").html(t)})},settingsNMJ(){const t={};t.host=e("#nmj_host").val(),t.host?(e("#testNMJ-result").html(MEDUSA.config.loading),e.get("home/settingsNMJ",{host:t.host},t=>{null===t&&(e("#nmj_database").removeAttr("readonly"),e("#nmj_mount").removeAttr("readonly"));const n=e.parseJSON(t);e("#testNMJ-result").html(n.message),e("#nmj_database").val(n.database),e("#nmj_mount").val(n.mount),n.database?e("#nmj_database").prop("readonly",!0):e("#nmj_database").removeAttr("readonly"),n.mount?e("#nmj_mount").prop("readonly",!0):e("#nmj_mount").removeAttr("readonly")})):(alert("Please fill in the Popcorn IP address"),e("#nmj_host").focus())},testNMJ(){const t={};t.host=e.trim(e("#nmj_host").val()),t.database=e("#nmj_database").val(),t.mount=e("#nmj_mount").val(),t.host?(e("#nmj_host").removeClass("warning"),e(this).prop("disabled",!0),e("#testNMJ-result").html(MEDUSA.config.loading),e.get("home/testNMJ",{host:t.host,database:t.database,mount:t.mount}).done(t=>{e("#testNMJ-result").html(t),e("#testNMJ").prop("disabled",!1)})):(e("#testNMJ-result").html("Please fill out the necessary fields above."),e("#nmj_host").addClass("warning"))},settingsNMJv2(){const t={};if(t.host=e("#nmjv2_host").val(),t.host){e("#testNMJv2-result").html(MEDUSA.config.loading),t.dbloc="";const n=document.getElementsByName("nmjv2_dbloc");for(let e=0,s=n.length;e{null===t&&e("#nmjv2_database").removeAttr("readonly");const n=e.parseJSON(t);e("#testNMJv2-result").html(n.message),e("#nmjv2_database").val(n.database),n.database?e("#nmjv2_database").prop("readonly",!0):e("#nmjv2_database").removeAttr("readonly")})}else alert("Please fill in the Popcorn IP address"),e("#nmjv2_host").focus()},testNMJv2(){const t={};t.host=e.trim(e("#nmjv2_host").val()),t.host?(e("#nmjv2_host").removeClass("warning"),e(this).prop("disabled",!0),e("#testNMJv2-result").html(MEDUSA.config.loading),e.get("home/testNMJv2",{host:t.host}).done(t=>{e("#testNMJv2-result").html(t),e("#testNMJv2").prop("disabled",!1)})):(e("#testNMJv2-result").html("Please fill out the necessary fields above."),e("#nmjv2_host").addClass("warning"))},testFreeMobile(){const t={};if(t.id=e.trim(e("#freemobile_id").val()),t.apikey=e.trim(e("#freemobile_apikey").val()),!t.id||!t.apikey)return e("#testFreeMobile-result").html("Please fill out the necessary fields above."),t.id?e("#freemobile_id").removeClass("warning"):e("#freemobile_id").addClass("warning"),void(t.apikey?e("#freemobile_apikey").removeClass("warning"):e("#freemobile_apikey").addClass("warning"));e("#freemobile_id,#freemobile_apikey").removeClass("warning"),e(this).prop("disabled",!0),e("#testFreeMobile-result").html(MEDUSA.config.loading),e.get("home/testFreeMobile",{freemobile_id:t.id,freemobile_apikey:t.apikey}).done(t=>{e("#testFreeMobile-result").html(t),e("#testFreeMobile").prop("disabled",!1)})},testTelegram(){const t={};if(t.id=e.trim(e("#telegram_id").val()),t.apikey=e.trim(e("#telegram_apikey").val()),!t.id||!t.apikey)return e("#testTelegram-result").html("Please fill out the necessary fields above."),e("#telegram_id").addRemoveWarningClass(t.id),void e("#telegram_apikey").addRemoveWarningClass(t.apikey);e("#telegram_id,#telegram_apikey").removeClass("warning"),e(this).prop("disabled",!0),e("#testTelegram-result").html(MEDUSA.config.loading),e.get("home/testTelegram",{telegram_id:t.id,telegram_apikey:t.apikey}).done(t=>{e("#testTelegram-result").html(t),e("#testTelegram").prop("disabled",!1)})},testDiscord(){const{notifiers:t}=this;if(!t.discord.webhook)return e("#testDiscord-result").html("Please fill out the necessary fields above."),void e("#discord_webhook").addRemoveWarningClass(t.discord.webhook);e("#discord_id,#discord_apikey").removeClass("warning"),e(this).prop("disabled",!0),e("#testDiscord-result").html(MEDUSA.config.loading),e.get("home/testDiscord",{discord_webhook:t.discord.webhook,discord_tts:t.discord.tts}).done(t=>{e("#testDiscord-result").html(t),e("#testDiscord").prop("disabled",!1)})},testSlack(){const t={};if(t.webhook=e.trim(e("#slack_webhook").val()),!t.webhook)return e("#testSlack-result").html("Please fill out the necessary fields above."),void e("#slack_webhook").addRemoveWarningClass(t.webhook);e("#slack_webhook").removeClass("warning"),e(this).prop("disabled",!0),e("#testSlack-result").html(MEDUSA.config.loading),e.get("home/testslack",{slack_webhook:t.webhook}).done(t=>{e("#testSlack-result").html(t),e("#testSlack").prop("disabled",!1)})},TraktGetPin(){window.open(e("#trakt_pin_url").val(),"popUp","toolbar=no, scrollbars=no, resizable=no, top=200, left=200, width=650, height=550"),e("#trakt_pin").prop("disabled",!1)},authTrakt(){const t={};t.pin=e("#trakt_pin").val(),0!==t.pin.length&&e.get("home/getTraktToken",{trakt_pin:t.pin}).done(t=>{e("#testTrakt-result").html(t),e("#authTrakt").addClass("hide"),e("#trakt_pin").prop("disabled",!0),e("#trakt_pin").val(""),e("#TraktGetPin").removeClass("hide")})},testTrakt(){const t={};return t.username=e.trim(e("#trakt_username").val()),t.trendingBlacklist=e.trim(e("#trakt_blacklist_name").val()),t.username?/\s/g.test(t.trendingBlacklist)?(e("#testTrakt-result").html("Check blacklist name; the value needs to be a trakt slug"),void e("#trakt_blacklist_name").addClass("warning")):(e("#trakt_username").removeClass("warning"),e("#trakt_blacklist_name").removeClass("warning"),e(this).prop("disabled",!0),e("#testTrakt-result").html(MEDUSA.config.loading),void e.get("home/testTrakt",{username:t.username,blacklist_name:t.trendingBlacklist}).done(t=>{e("#testTrakt-result").html(t),e("#testTrakt").prop("disabled",!1)})):(e("#testTrakt-result").html("Please fill out the necessary fields above."),void e("#trakt_username").addRemoveWarningClass(t.username))},traktForceSync(){e("#testTrakt-result").html(MEDUSA.config.loading),e.getJSON("home/forceTraktSync",t=>{e("#testTrakt-result").html(t.result)})},testEmail(){let t="";const n=e("#testEmail-result");n.html(MEDUSA.config.loading);let s=e("#email_host").val();s=s.length>0?s:null;let a=e("#email_port").val();a=a.length>0?a:null;const o=e("#email_tls").find("input").is(":checked")?1:0;let i=e("#email_from").val();i=i.length>0?i:"root@localhost";const r=e("#email_username").val().trim(),l=e("#email_password").val();let c="";null===s&&(c+='
  • You must specify an SMTP hostname!
  • '),null===a?c+='
  • You must specify an SMTP port!
  • ':(null===a.match(/^\d+$/)||parseInt(a,10)>65535)&&(c+='
  • SMTP port must be between 0 and 65535!
  • '),c.length>0?(c="
      "+c+"
    ",n.html(c)):null===(t=prompt("Enter an email address to send the test to:",null))||0===t.length||null===t.match(/.*@.*/)?n.html('

    You must provide a recipient email address!

    '):e.get("home/testEmail",{host:s,port:a,smtp_from:i,use_tls:o,user:r,pwd:l,to:t},t=>{e("#testEmail-result").html(t)})},testPushalot(){const t={};if(t.authToken=e.trim(e("#pushalot_authorizationtoken").val()),!t.authToken)return e("#testPushalot-result").html("Please fill out the necessary fields above."),void e("#pushalot_authorizationtoken").addClass("warning");e("#pushalot_authorizationtoken").removeClass("warning"),e(this).prop("disabled",!0),e("#testPushalot-result").html(MEDUSA.config.loading),e.get("home/testPushalot",{authorizationToken:t.authToken}).done(t=>{e("#testPushalot-result").html(t),e("#testPushalot").prop("disabled",!1)})}})}}).call(this,n(5))},function(e,t,n){"use strict";(function(e){var s=n(4),a=n.n(s),o=n(3),i=n(1),r=n(2);function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}function c(e){for(var t=1;t({configLoaded:!1,checkPropersIntervalLabels:[{text:"24 hours",value:"daily"},{text:"4 hours",value:"4h"},{text:"90 mins",value:"90m"},{text:"45 mins",value:"45m"},{text:"30 mins",value:"30m"},{text:"15 mins",value:"15m"}],nzbGetPriorityOptions:[{text:"Very low",value:-100},{text:"Low",value:-50},{text:"Normal",value:0},{text:"High",value:50},{text:"Very high",value:100},{text:"Force",value:900}],clientsConfig:{torrent:{blackhole:{title:"Black hole"},utorrent:{title:"uTorrent",description:"URL to your uTorrent client (e.g. http://localhost:8000)",labelOption:!0,labelAnimeOption:!0,seedTimeOption:!0,pausedOption:!0,testStatus:"Click below to test"},transmission:{title:"Transmission",description:"URL to your Transmission client (e.g. http://localhost:9091)",pathOption:!0,removeFromClientOption:!0,seedLocationOption:!0,seedTimeOption:!0,pausedOption:!0,testStatus:"Click below to test"},deluge:{title:"Deluge (via WebUI)",shortTitle:"Deluge",description:"URL to your Deluge client (e.g. http://localhost:8112)",pathOption:!0,removeFromClientOption:!0,labelOption:!0,labelAnimeOption:!0,seedLocationOption:!0,pausedOption:!0,verifyCertOption:!0,testStatus:"Click below to test"},deluged:{title:"Deluge (via Daemon)",shortTitle:"Deluge",description:"IP or Hostname of your Deluge Daemon (e.g. scgi://localhost:58846)",pathOption:!0,removeFromClientOption:!0,labelOption:!0,labelAnimeOption:!0,seedLocationOption:!0,pausedOption:!0,verifyCertOption:!0,testStatus:"Click below to test"},downloadstation:{title:"Synology DS",description:"URL to your Synology DS client (e.g. http://localhost:5000)",pathOption:!0,testStatus:"Click below to test"},rtorrent:{title:"rTorrent",description:"URL to your rTorrent client (e.g. scgi://localhost:5000
    or https://localhost/rutorrent/plugins/httprpc/action.php)",pathOption:!0,labelOption:!0,labelAnimeOption:!0,verifyCertOption:!0,testStatus:"Click below to test"},qbittorrent:{title:"qBittorrent",description:"URL to your qBittorrent client (e.g. http://localhost:8080)",labelOption:!0,labelAnimeOption:!0,pausedOption:!0,testStatus:"Click below to test"},mlnet:{title:"MLDonkey",description:"URL to your MLDonkey (e.g. http://localhost:4080)",verifyCertOption:!0,testStatus:"Click below to test"}},nzb:{blackhole:{title:"Black hole"},nzbget:{title:"NZBget",description:"NZBget RPC host name and port number (not NZBgetweb!) (e.g. localhost:6789)",testStatus:"Click below to test"},sabnzbd:{title:"SABnzbd",description:"URL to your SABnzbd server (e.g. http://localhost:8080/)",testStatus:"Click below to test"}}},httpAuthTypes:{none:"None",basic:"Basic",digest:"Digest"}}),computed:c({},Object(i.e)(["clients","search","system"]),{torrentUsernameIsDisabled(){const{clients:e}=this,{torrents:t}=e,{host:n,method:s}=t,a=n||"";return!(!["rtorrent","deluge"].includes(s)||"rtorrent"===s&&!a.startsWith("scgi://"))},torrentPasswordIsDisabled(){const{clients:e}=this,{torrents:t}=e,{host:n,method:s}=t;return!("rtorrent"!==s||"rtorrent"===s&&!(n||"").startsWith("scgi://"))},authTypeIsDisabled(){const{clients:e}=this,{torrents:t}=e,{host:n,method:s}=t;return!("rtorrent"===s&&!(n||"").startsWith("scgi://"))}}),beforeMount(){this.$nextTick(()=>{e("#config-components").tabs()})},methods:c({},Object(i.c)(["setConfig"]),{async testTorrentClient(){const{clients:e}=this,{torrents:t}=e,{method:n,host:s,username:a,password:i}=t;this.clientsConfig.torrent[n].testStatus=MEDUSA.config.loading;const r={torrent_method:n,host:s,username:a,password:i},l=await o.c.get("home/testTorrent",{params:r});this.clientsConfig.torrent[n].testStatus=l.data},async testNzbget(){const{clients:e}=this,{nzb:t}=e,{nzbget:n}=t,{host:s,username:a,password:i,useHttps:r}=n;this.clientsConfig.nzb.nzbget.testStatus=MEDUSA.config.loading;const l={host:s,username:a,password:i,use_https:r},c=await o.c.get("home/testNZBget",{params:l});this.clientsConfig.nzb.nzbget.testStatus=c.data},async testSabnzbd(){const{clients:e}=this,{nzb:t}=e,{sabnzbd:n}=t,{host:s,username:a,password:i,apiKey:r}=n;this.clientsConfig.nzb.sabnzbd.testStatus=MEDUSA.config.loading;const l={host:s,username:a,password:i,apikey:r},c=await o.c.get("home/testSABnzbd",{params:l});this.clientsConfig.nzb.sabnzbd.testStatus=c.data},async save(){const{clients:e,search:t,setConfig:n}=this;this.saving=!0;const s=Object.assign({},{search:t},{clients:e});try{await n({section:"main",config:s}),this.$snotify.success("Saved Search config","Saved",{timeout:5e3})}catch(e){this.$snotify.error("Error while trying to save search config","Error")}finally{this.saving=!1}}}),watch:{"clients.torrents.host"(e){const{clients:t}=this,{torrents:n}=t,{method:s}=n;if("rtorrent"===s){if(!e)return;e.startsWith("scgi://")&&(this.clients.torrents.username="",this.clients.torrents.password="",this.clients.torrents.authType="none")}"deluge"===s&&(this.clients.torrents.username="")},"clients.torrents.method"(e){this.clientsConfig.torrent[e].removeFromClientOption||(this.search.general.removeFromClient=!1)}}}}).call(this,n(5))},function(e,t,n){"use strict";(function(e){var s=n(30),a=n.n(s),o=n(4),i=n.n(o),r=n(19),l=n(136),c=n(1),d=n(2),u=n(6),p=n(32),h=n(83),f=n(21),m=n(27),g=n(78),v=n(137),b=n(135),_=n.n(b),w=n(79);function y(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}function x(e){for(var t=1;t{const{getSceneNumbering:t}=this;return t(e)},sortable:!1,hidden:e("displayShow-hide-field-Scene")},{label:"Scene Abs. #",field:e=>{const{getSceneAbsoluteNumbering:t}=this;return t(e)},type:"number",sortFn:(e,t)=>et?1:0,hidden:e("displayShow-hide-field-Scene Abs. #")},{label:"Title",field:"title",hidden:e("displayShow-hide-field-Title")},{label:"File",field:"file.location",hidden:e("displayShow-hide-field-File")},{label:"Size",field:"file.size",type:"number",formatFn:u.e,hidden:e("displayShow-hide-field-Size")},{label:"Air date",field:this.parseDateFn,sortable:!1,hidden:e("displayShow-hide-field-Air date")},{label:"Download",field:"download",sortable:!1,hidden:e("displayShow-hide-field-Download")},{label:"Subtitles",field:"subtitles",sortable:!1,hidden:e("displayShow-hide-field-Subtitles")},{label:"Status",field:"status",hidden:e("displayShow-hide-field-Status")},{label:"Search",field:"search",sortable:!1,hidden:e("displayShow-hide-field-Search")}],perPageDropdown:t,paginationPerPage:(()=>{const n=e("displayShow-pagination-perPage");return n?t.includes(n)?n:500:50})(),selectedEpisodes:[],failedSearchEpisode:null,backlogSearchEpisodes:[],filterByOverviewStatus:!1,timeAgo:new v.a("en-US")}},computed:x({},Object(c.e)({shows:e=>e.shows.shows,configLoaded:e=>null!==e.layout.fanartBackground,config:e=>e.config,layout:e=>e.layout,stateSearch:e=>e.search}),{},Object(c.d)({show:"getCurrentShow",getOverviewStatus:"getOverviewStatus"}),{indexer(){return this.showIndexer||this.$route.query.indexername},id(){return this.showId||Number(this.$route.query.seriesid)||void 0},theme(){const{layout:e}=this,{themeName:t}=e;return t||"light"},orderSeasons(){const{filterByOverviewStatus:e,invertTable:t,layout:n,show:s}=this;if(!s.seasons)return[];let o=s.seasons.sort((e,t)=>e.season-t.season).filter(e=>0!==e.season||n.show.specials);if(e&&e.filter(e=>e.checked).length{const n=this.getOverviewStatus(t.status,t.quality,s.config.qualities),a=e.find(e=>e.name===n);return!a||a.checked});t.push(Object.assign({episodes:r},i))}o=t}return t?o.reverse():o}}),created(){const{getShows:e}=this;e()},mounted(){const{id:t,indexer:n,getShow:s,setEpisodeSceneNumbering:a,setAbsoluteSceneNumbering:o,setInputValidInvalid:i,$store:r}=this;r.commit("currentShow",{indexer:n,id:t}),s({id:t,indexer:n,detailed:!0}),this.$watch("show",()=>{this.$nextTick(()=>this.reflowLayout())}),["load","resize"].map(e=>window.addEventListener(e,()=>{this.reflowLayout()})),e(document.body).on("click",".seasonCheck",t=>{const n=t.currentTarget,s=e(n).attr("id");e("#collapseSeason-"+s).collapse("show");const a="s"+s;e(".epCheck:visible").each((t,s)=>{e(s).attr("id").split("e")[0]===a&&(s.checked=n.checked)})}),e(document.body).on("change",".sceneSeasonXEpisode",t=>{const n=t.currentTarget,s=e(n).val();e(n).val(s.replace(/[^0-9xX]*/g,""));const o=e(n).attr("data-for-season"),r=e(n).attr("data-for-episode");if(""===s)return void a(o,r,null,null);const l=e(n).val().match(/^(\d+)x(\d+)$/i),c=e(n).val().match(/^(\d+)$/i);let d=null,u=null,p=!1;l?(d=l[1],u=l[2],p=i(!0,e(n))):c?(d=o,u=c[1],p=i(!0,e(n))):p=i(!1,e(n)),p&&a(o,r,d,u)}),e(document.body).on("change",".sceneAbsolute",t=>{const n=t.currentTarget;e(n).val(e(n).val().replace(/[^0-9xX]*/g,""));const s=e(n).attr("data-for-absolute"),a=e(n).val().match(/^(\d{1,3})$/i);let i=null;a&&(i=a[1]),o(s,i)})},methods:x({humanFileSize:u.e},Object(c.c)({getShow:"getShow",getShows:"getShows",getEpisodes:"getEpisodes"}),{statusQualityUpdate(e){const{selectedEpisodes:t,setStatus:n,setQuality:s}=this;null!==e.newQuality&&"Change quality to:"!==e.newQuality&&s(e.newQuality,t),null!==e.newStatus&&"Change status to:"!==e.newStatus&&n(e.newStatus,t)},setQuality(e,t){const{id:n,indexer:s,getEpisodes:a,show:o}=this,i={};t.forEach(t=>{i[t.slug]={quality:parseInt(e,10)}}),api.patch("series/"+o.id.slug+"/episodes",i).then(i=>{console.info("patched show ".concat(o.id.slug," with quality ").concat(e)),[...new Set(t.map(e=>e.season))].forEach(e=>{a({id:n,indexer:s,season:e})})}).catch(e=>{console.error(String(e))})},setStatus(e,t){const{id:n,indexer:s,getEpisodes:a,show:o}=this,i={};t.forEach(t=>{i[t.slug]={status:e}}),api.patch("series/"+o.id.slug+"/episodes",i).then(i=>{console.info("patched show ".concat(o.id.slug," with status ").concat(e)),[...new Set(t.map(e=>e.season))].forEach(e=>{a({id:n,indexer:s,season:e})})}).catch(e=>{console.error(String(e))}),3===e&&this.$modal.show("query-start-backlog-search",{episodes:t})},parseDateFn(e){const{layout:t,timeAgo:n}=this,{dateStyle:s,timeStyle:a}=t,{fuzzyDating:o}=t;if(!e.airDate)return"";if(o)return n.format(new Date(e.airDate));if("%x"===s)return new Date(e.airDate).toLocaleString();const i=Object(l.a)(e.airDate);return Object(r.a)(i,Object(u.d)("".concat(s," ").concat(a)))},rowStyleClassFn(e){const{getOverviewStatus:t,show:n}=this;return t(e.status,e.quality,n.config.qualities).toLowerCase().trim()},addFileSize:e=>Object(u.e)(e.episodes.reduce((e,t)=>e+(t.file.size||0),0)),searchSubtitle(e,t,n){const{id:s,indexer:a,getEpisodes:o,show:i,subtitleSearchComponents:r}=this,l=new(Vue.extend(g.a))({propsData:{show:i,season:t.season,episode:t.episode,key:t.originalIndex,lang:n},parent:this});l.$on("update",e=>{"new subtitles found"===e.reason&&o({id:s,indexer:a,season:t.season})});const c=document.createElement("div");this.$refs["table-seasons"].$refs["row-".concat(t.originalIndex)][0].after(c),l.$mount(c),r.push(l)},reflowLayout(){console.debug("Reflowing layout"),this.$nextTick(()=>{this.movecheckboxControlsBackground()}),Object(p.a)()},movecheckboxControlsBackground(){const t=e("#checkboxControls").height()+10,n=e("#checkboxControls").offset().top-3;e("#checkboxControlsBackground").height(t),e("#checkboxControlsBackground").offset({top:n,left:0}),e("#checkboxControlsBackground").show()},setEpisodeSceneNumbering(t,n,s,a){const{$snotify:o,id:i,indexer:r,show:l}=this;l.config.scene||o.warning("To change episode scene numbering you need to enable the show option `scene` first","Warning",{timeout:0}),""===s&&(s=null),""===a&&(a=null),e.getJSON("home/setSceneNumbering",{indexername:r,seriesid:i,forSeason:t,forEpisode:n,sceneSeason:s,sceneEpisode:a},s=>{null===s.sceneSeason||null===s.sceneEpisode?e("#sceneSeasonXEpisode_"+i+"_"+t+"_"+n).val(""):e("#sceneSeasonXEpisode_"+i+"_"+t+"_"+n).val(s.sceneSeason+"x"+s.sceneEpisode),s.success||(s.errorMessage?alert(s.errorMessage):alert("Update failed."))})},setAbsoluteSceneNumbering(t,n){const{$snotify:s,id:a,indexer:o,show:i}=this;i.config.scene||s.warning("To change an anime episode scene numbering you need to enable the show option `scene` first","Warning",{timeout:0}),""===n&&(n=null),e.getJSON("home/setSceneNumbering",{indexername:o,seriesid:a,forAbsolute:t,sceneAbsolute:n},n=>{null===n.sceneAbsolute?e("#sceneAbsolute_"+a+"_"+t).val(""):e("#sceneAbsolute_"+a+"_"+t).val(n.sceneAbsolute),n.success||(n.errorMessage?alert(n.errorMessage):alert("Update failed."))})},setInputValidInvalid:(t,n)=>t?(e(n).css({"background-color":"#90EE90",color:"#FFF","font-weight":"bold"}),!0):(e(n).css({"background-color":"#FF0000",color:"#FFF !important","font-weight":"bold"}),!1),anyEpisodeNotUnaired:e=>e.episodes.filter(e=>"Unaired"!==e.status).length>0,episodesInverse(e){const{invertTable:t}=this;return e.episodes?t?e.episodes.slice().reverse():e.episodes:[]},getSceneNumbering(e){const{show:t}=this,{sceneNumbering:n,xemNumbering:s}=t;if(!t.config.scene)return{season:0,episode:0};if(0!==n.length){const t=n.filter(t=>t.source.season===e.season&&t.source.episode===e.episode);if(0!==t.length)return t[0].destination}if(0!==s.length){const t=s.filter(t=>t.source.season===e.season&&t.source.episode===e.episode);if(0!==t.length)return t[0].destination}return{season:e.scene.season||0,episode:e.scene.episode||0}},getSceneAbsoluteNumbering(e){const{show:t}=this,{sceneAbsoluteNumbering:n,xemAbsoluteNumbering:s}=t;return t.config.anime&&t.config.scene?Object.keys(n).length>0&&n[e.absoluteNumber]?n[e.absoluteNumber].sceneAbsolute:Object.keys(s).length>0&&s[e.absoluteNumber]?s[e.absoluteNumber].sceneAbsolute:e.scene.absoluteNumber:e.scene.absoluteNumber},beforeBacklogSearchModalClose(e){this.backlogSearchEpisodes=e.params.episodes},beforeFailedSearchModalClose(e){this.failedSearchEpisode=e.params.episode},retryDownload(e){const{stateSearch:t}=this;return t.general.failedDownloads.enabled&&["Snatched","Snatched (Proper)","Snatched (Best)","Downloaded"].includes(e.status)},search(e,t){const{show:n}=this;let s={};e&&(s={showSlug:n.id.slug,episodes:[],options:{}},e.forEach(e=>{s.episodes.push(e.slug),this.$refs["search-".concat(e.slug)].src="images/loading16-dark.gif"})),api.put("search/".concat(t),s).then(t=>{1===e.length?(console.info("started search for show: ".concat(n.id.slug," episode: ").concat(e[0].slug)),this.$refs["search-".concat(e[0].slug)].src="images/queued.png",this.$refs["search-".concat(e[0].slug)].disabled=!0):console.info("started a full backlog search")}).catch(t=>{console.error(String(t)),e.forEach(t=>{s.episodes.push(t.slug),this.$refs["search-".concat(e[0].slug)].src="images/no16.png"})}).finally(()=>{this.failedSearchEpisode=null,this.backlogSearchEpisodes=[]})},queueSearch(e){const{$modal:t,search:n,retryDownload:s}=this,a=e.slug;if(e){if(!0===this.$refs["search-".concat(a)].disabled)return;s(e)?t.show("query-mark-failed-and-search",{episode:e}):n([e],"backlog")}},showSubtitleButton(e){const{config:t,show:n}=this;return 0!==e.season&&t.subtitles.enabled&&n.config.subtitlesEnabled&&!["Snatched","Snatched (Proper)","Snatched (Best)","Downloaded"].includes(e.status)},totalSeasonEpisodeSize:e=>e.episodes.filter(e=>e.file&&e.file.size>0).reduce((e,t)=>e+t.file.size,0),getSeasonExceptions(e){const{show:t}=this,{allSceneExceptions:n}=t;let s={class:"display: none"},a=[],o=!1;if(t.xemNumbering.length>0){const n=t.xemNumbering.filter(t=>t.source.season===e);a=[...new Set(n.map(e=>e.destination.season))],o=Boolean(a.length)}return n.find(t=>t.season===e)&&(s={id:"xem-exception-season-".concat(o?a[0]:e),alt:o?"[xem]":"[medusa]",src:o?"images/xem.png":"images/ico/favicon-16.png",title:o?a.reduce((e,t)=>e.concat(n.find(e=>e.season===t).exceptions),[]).join(", "):n.find(t=>t.season===e).exceptions.join(", ")}),s},getCookie(e){const t=this.$cookies.get(e);return JSON.parse(t)},setCookie(e,t){return this.$cookies.set(e,JSON.stringify(t))},updateEpisodeWatched(e,t){const{id:n,indexer:s,getEpisodes:a,show:o}=this,i={};i[e.slug]={watched:t},api.patch("series/".concat(o.id.slug,"/episodes"),i).then(o=>{console.info("patched episode ".concat(e.slug," with watched set to ").concat(t)),a({id:n,indexer:s,season:e.season})}).catch(e=>{console.error(String(e))}),e.watched=t},updatePaginationPerPage(e){const{setCookie:t}=this;this.paginationPerPage=e,t("displayShow-pagination-perPage",e)}}),watch:{"show.id.slug":function(e){if(e){Object(p.c)(e,this);const{id:t,indexer:n,getEpisodes:s,show:a}=this;if(!a.seasons){(async(e,t)=>{for(const n of a.seasonCount.map(e=>e.season).reverse())await s({id:e,indexer:t,season:n})})(t,n)}}},columns:{handler:function(e){const{setCookie:t}=this;for(const n of e)n&&t("displayShow-hide-field-".concat(n.label),n.hidden)},deep:!0}}}}).call(this,n(5))},function(e,t,n){"use strict";(function(e){var s=n(4),a=n.n(s),o=n(132),i=n(133),r=n(134),l=n(1),c=n(3),d=n(6),u=n(32),p=n(2);function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}function f(e){for(var t=1;te.find(e=>!Number.isNaN(e)&&null!=e);t.a={name:"show-header",components:{AppLink:p.a,Asset:p.b,QualityPill:p.l,StateSwitch:p.p,Truncate:o.a},props:{type:{type:String,default:"show",validator:e=>["show","snatch-selection"].includes(e)},showIndexer:{type:String},showId:{type:Number},showSeason:{type:Number},showEpisode:{type:Number},manualSearchType:{type:String}},data:()=>({jumpToSeason:"jump",selectedStatus:"Change status to:",selectedQuality:"Change quality to:",overviewStatus:[{id:"wanted",checked:!0,name:"Wanted"},{id:"allowed",checked:!0,name:"Allowed"},{id:"preferred",checked:!0,name:"Preferred"},{id:"skipped",checked:!0,name:"Skipped"},{id:"snatched",checked:!0,name:"Snatched"}]}),computed:f({},Object(l.e)({config:e=>e.config,layout:e=>e.layout,shows:e=>e.shows.shows,indexerConfig:e=>e.indexers.indexers,displaySpecials:e=>e.layout.show.specials,qualities:e=>e.consts.qualities.values,statuses:e=>e.consts.statuses,search:e=>e.search,configLoaded:e=>null!==e.layout.fanartBackground}),{},Object(l.d)({show:"getCurrentShow",getOverviewStatus:"getOverviewStatus",getQualityPreset:"getQualityPreset",getStatus:"getStatus"}),{indexer(){return this.showIndexer||this.$route.query.indexername},id(){return this.showId||Number(this.$route.query.seriesid)||void 0},season(){return m(this.showSeason,Number(this.$route.query.season))},episode(){return m(this.showEpisode,Number(this.$route.query.episode))},showIndexerUrl(){const{show:e,indexerConfig:t}=this;if(!e.indexer)return;const n=e.id[e.indexer],s=t[e.indexer].showUrl;return"".concat(s).concat(n)},activeShowQueueStatuses(){const{showQueueStatus:e}=this.show;return e?e.filter(e=>!0===e.active):[]},showGenres(){const{show:e,dedupeGenres:t}=this,{imdbInfo:n}=e,{genres:s}=n;let a=[];return s&&(a=t(s.split("|"))),a},episodeSummary(){const{getOverviewStatus:e,show:t}=this,{seasons:n}=t,s={Downloaded:0,Skipped:0,Wanted:0,Allowed:0,Preferred:0,Unaired:0,Snatched:0,"Snatched (Proper)":0,"Snatched (Best)":0,Unset:0};return n.forEach(n=>{n.episodes.forEach(n=>{s[e(n.status,n.quality,t.config.qualities)]+=1})}),s},changeStatusOptions(){const{search:e,getStatus:t,statuses:n}=this;if(0===n.length)return[];const s=["wanted","skipped","ignored","downloaded","archived"].map(e=>t({key:e}));return e.useFailedDownloads&&s.push(t({key:"failed"})),s},combinedQualities(){const{allowed:e,preferred:t}=this.show.config.qualities;return Object(d.c)(e,t)},seasons(){const{show:e}=this;return e.seasonCount.map(e=>e.season)}}),mounted(){["load","resize"].map(e=>window.addEventListener(e,()=>{this.reflowLayout()})),this.$watch("show",function(e){if(e){const{reflowLayout:e}=this;this.$nextTick(()=>e())}},{deep:!0})},methods:f({},Object(l.c)(["setSpecials"]),{combineQualities:d.c,humanFileSize:d.e,changeStatusClicked(){const{changeStatusOptions:e,changeQualityOptions:t,selectedStatus:n,selectedQuality:s}=this;this.$emit("update",{newStatus:n,newQuality:s,statusOptions:e,qualityOptions:t})},toggleSpecials(){const{setSpecials:e}=this;e(!this.displaySpecials)},reverse:e=>e?e.slice().reverse():[],dedupeGenres:e=>e?[...new Set(e.slice(0).map(e=>e.replace("-"," ")))]:[],getCountryISO2ToISO3:e=>Object(i.getLanguage)(e).iso639_2en,toggleConfigOption(e){const{show:t}=this,{config:n}=t;this.show.config[e]=!this.show.config[e];const s={config:{[e]:n[e]}};c.a.patch("series/"+t.id.slug,s).then(t=>{this.$snotify.success("".concat(s.config[e]?"enabled":"disabled"," show option ").concat(e),"Saved",{timeout:5e3})}).catch(e=>{this.$snotify.error('Error while trying to save "'+t.title+'": '+e.message||!1,"Error")})},reflowLayout(){this.$nextTick(()=>{this.moveSummaryBackground()}),Object(u.b)()},moveSummaryBackground(){const t=e("#summary");if(0===Object.keys(t).length)return;const n=t.height()+10,s=t.offset().top+5;e("#summaryBackground").height(n),e("#summaryBackground").offset({top:s,left:0}),e("#summaryBackground").show()}}),watch:{jumpToSeason(e){if("jump"!==e){let t=50*(this.seasons.length-e);t=Math.max(500,Math.min(t,2e3));let n=-50;n-=window.matchMedia("(min-width: 1281px)").matches?40:0;const s="season-".concat(e);console.debug("Jumping to #".concat(s," (").concat(t,"ms)")),Object(r.scrollTo)('[name="'.concat(s,'"]'),t,{container:"body",easing:"ease-in-out",offset:n}),window.location.hash=s,this.jumpToSeason="jump"}}}}}).call(this,n(5))},function(e,t,n){var s=n(229);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("2ce901e6",s,!1,{})},function(e,t,n){var s=n(231);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("4dd134cc",s,!1,{})},function(e,t,n){var s=n(243);"string"==typeof s&&(s=[[e.i,s,""]]),s.locals&&(e.exports=s.locals);(0,n(12).default)("05f22efc",s,!1,{})},function(e,t,n){"use strict";(function(e){var s=n(4),a=n.n(s),o=n(1),i=n(6),r=n(26),l=n(21),c=n(2);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}function u(e){for(var t=1;t({saving:!1,loadError:null}),computed:u({},Object(o.e)({indexers:e=>e.indexers,layout:e=>e.layout,episodeStatuses:e=>e.consts.statuses}),{},Object(o.d)({show:"getCurrentShow",getStatus:"getStatus"}),{indexer(){return this.showIndexer||this.$route.query.indexername},id(){return this.showId||Number(this.$route.query.seriesid)||void 0},showLoaded(){return Boolean(this.show.id.slug)},defaultEpisodeStatusOptions(){return 0===this.episodeStatuses.length?[]:["wanted","skipped","ignored"].map(e=>this.getStatus({key:e}))},availableLanguages(){return this.indexers.main.validLanguages?this.indexers.main.validLanguages.join(","):""},combinedQualities(){const{allowed:e,preferred:t}=this.show.config.qualities;return Object(i.c)(e,t)},saveButton(){return!1===this.saving?"Save Changes":"Saving..."},globalIgnored(){return this.$store.state.search.filters.ignored.map(e=>e.toLowerCase())},globalRequired(){return this.$store.state.search.filters.required.map(e=>e.toLowerCase())},effectiveIgnored(){const{globalIgnored:e}=this,t=this.show.config.release.ignoredWords.map(e=>e.toLowerCase());return this.show.config.release.ignoredWordsExclude?Object(i.a)(e,t):Object(i.b)(e.concat(t))},effectiveRequired(){const{globalRequired:e}=this,t=this.show.config.release.requiredWords.map(e=>e.toLowerCase());return this.show.config.release.requiredWordsExclude?Object(i.a)(e,t):Object(i.b)(e.concat(t))}}),created(){this.loadShow()},updated(){e("#config-components").tabs()},methods:u({},Object(o.c)(["getShow","setShow"]),{async loadShow(e){const{$store:t,id:n,indexer:s,getShow:a}=e||this;t.commit("currentShow",{indexer:s,id:n});try{this.loadError=null,await a({indexer:s,id:n,detailed:!1})}catch(e){const{data:t}=e.response;t&&t.error?this.loadError=t.error:this.loadError=String(e)}},async saveShow(e){const{show:t,showLoaded:n}=this;if(!n)return;if(!["show","all"].includes(e))return;this.saving=!0;const s=t.config,a={config:{aliases:s.aliases,defaultEpisodeStatus:s.defaultEpisodeStatus,dvdOrder:s.dvdOrder,seasonFolders:s.seasonFolders,anime:s.anime,scene:s.scene,sports:s.sports,paused:s.paused,location:s.location,airByDate:s.airByDate,subtitlesEnabled:s.subtitlesEnabled,release:{requiredWords:s.release.requiredWords,ignoredWords:s.release.ignoredWords,requiredWordsExclude:s.release.requiredWordsExclude,ignoredWordsExclude:s.release.ignoredWordsExclude},qualities:{preferred:s.qualities.preferred,allowed:s.qualities.allowed},airdateOffset:s.airdateOffset},language:t.language};a.config.anime&&(a.config.release.blacklist=s.release.blacklist,a.config.release.whitelist=s.release.whitelist);const{indexer:o,id:i,setShow:r}=this;try{await r({indexer:o,id:i,data:a}),this.$snotify.success('You may need to "Re-scan files" or "Force Full Update".',"Saved",{timeout:5e3})}catch(e){this.$snotify.error("Error while trying to save ".concat(this.show.title,": ").concat(e.message||"Unknown"),"Error")}finally{this.saving=!1}},onChangeIgnoredWords(e){this.show.config.release.ignoredWords=e.map(e=>e.value)},onChangeRequiredWords(e){this.show.config.release.requiredWords=e.map(e=>e.value)},onChangeAliases(e){this.show.config.aliases=e.map(e=>e.value)},onChangeReleaseGroupsAnime(e){this.show.config.release.whitelist=e.whitelist,this.show.config.release.blacklist=e.blacklist},updateLanguage(e){this.show.language=e}})}}).call(this,n(5))},function(e,t,n){"use strict";(function(e){var s=n(4),a=n.n(s),o=n(1);function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}function r(e){for(var t=1;t({layoutOptions:[{value:"compact",text:"Compact"},{value:"detailed",text:"Detailed"}]}),computed:r({},Object(o.e)({config:e=>e.config,stateLayout:e=>e.layout}),{historyLayout:{get(){const{stateLayout:e}=this;return e.history},set(e){const{setLayout:t}=this;t({page:"history",layout:e})}}}),mounted(){const t=this.$watch("stateLayout.history",()=>{t();const{historyLayout:n,config:s}=this;e("#historyTable:has(tbody tr)").tablesorter({widgets:["saveSort","zebra","filter"],sortList:[[0,1]],textExtraction:function(){if("detailed"===n)return{0:t=>e(t).find("time").attr("datetime"),1:t=>e(t).find("a").text(),4:t=>e(t).attr("quality")};const t={0:t=>e(t).find("time").attr("datetime"),1:t=>e(t).find("a").text(),2:t=>void 0===e(t).find("img").attr("title")?"":e(t).find("img").attr("title"),3:t=>e(t).text()};return s.subtitles.enabled?(t[4]=t=>void 0===e(t).find("img").attr("title")?"":e(t).find("img").attr("title"),t[5]=t=>e(t).attr("quality")):t[4]=t=>e(t).attr("quality"),t}(),headers:"detailed"===n?{0:{sorter:"realISODate"}}:{0:{sorter:"realISODate"},2:{sorter:"text"}}})});e("#history_limit").on("change",function(){window.location.href=e("base").attr("href")+"history/?limit="+e(this).val()})},methods:r({},Object(o.c)({setLayout:"setLayout"}))}}).call(this,n(5))},function(e,t,n){"use strict";(function(e){var s=n(4),a=n.n(s),o=n(1),i=n(28),r=n.n(i),l=n(3),c=n(2);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);t&&(s=s.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,s)}return n}function u(e){for(var t=1;t({layoutOptions:[{value:"poster",text:"Poster"},{value:"small",text:"Small Poster"},{value:"banner",text:"Banner"},{value:"simple",text:"Simple"}],postSortDirOptions:[{value:"0",text:"Descending"},{value:"1",text:"Ascending"}]}),computed:u({},Object(o.e)({config:e=>e.config,stateLayout:e=>e.layout}),{layout:{get(){const{stateLayout:e}=this;return e.home},set(e){const{setLayout:t}=this;t({page:"home",layout:e})}}}),methods:u({},Object(o.c)({setLayout:"setLayout",setConfig:"setConfig"}),{initializePosterSizeSlider(){const t=t=>{let n,s,a,o;t<125?(a=3,o=4):t<175?(n=9,s=40,a=4,o=5):(n=11,s=50,a=6,o=6),e("#posterPopup").remove(),void 0===n?e(".show-details").hide():(e(".show-details").show(),e(".show-dlstats, .show-quality").css("fontSize",n),e(".show-network-image").css("width",s)),e(".show-container").css({width:t,borderWidth:o,borderRadius:a})};let n;"undefined"!=typeof Storage&&(n=parseInt(localStorage.getItem("posterSize"),10)),("number"!=typeof n||isNaN(n))&&(n=188),t(n),e("#posterSizeSlider").slider({min:75,max:250,value:n,change(n,s){"undefined"!=typeof Storage&&localStorage.setItem("posterSize",s.value),t(s.value),e(".show-grid").isotope("layout")}})}}),beforeMount(){this.$nextTick(()=>{e("#showTabs").tabs()})},mounted(){const{config:t,stateLayout:n,setConfig:s}=this;e(document.body).on("click",".resetsorting",()=>{e("table").trigger("filterReset")}),e(document.body).on("input","#filterShowName",r()(()=>{e(".show-grid").isotope({filter(){return e(this).attr("data-name").toLowerCase().includes(e("#filterShowName").val().toLowerCase())}})},500)),e(document.body).on("change","#postersort",function(){e(".show-grid").isotope({sortBy:e(this).val()}),e.get(e(this).find("option[value="+e(this).val()+"]").attr("data-sort"))}),e(document.body).on("change","#postersortdirection",function(){e(".show-grid").isotope({sortAscending:"1"===e(this).val()}),e.get(e(this).find("option[value="+e(this).val()+"]").attr("data-sort"))}),e(document.body).on("change","#showRootDir",function(){l.a.patch("config/main",{selectedRootIndex:parseInt(e(this).val(),10)}).then(e=>{console.info(e),window.location.reload()}).catch(e=>{console.info(e)})});const a=new LazyLoad({threshold:500});window.addEventListener("load",()=>{e("#showTabs").tabs({activate(){e(".show-grid").isotope("layout")}}),e(".progressbar").each(function(){const t=e(this).data("progress-percentage"),n=100===t?100:t>80?80:t>60?60:t>40?40:20;e(this).progressbar({value:t}),e(this).data("progress-text")&&e(this).append('
    '+e(this).data("progress-text")+"
    "),e(this).find(".ui-progressbar-value").addClass("progress-"+n)}),e("img#network").on("error",function(){e(this).parent().text(e(this).attr("alt")),e(this).remove()}),e("#showListTableSeries:has(tbody tr), #showListTableAnime:has(tbody tr)").tablesorter({debug:!1,sortList:[[7,1],[2,0]],textExtraction:{0:t=>e(t).find("time").attr("datetime"),1:t=>e(t).find("time").attr("datetime"),3:t=>e(t).find("span").prop("title").toLowerCase(),4:t=>e(t).find("a[data-indexer-name]").attr("data-indexer-name"),5:t=>e(t).find("span").text().toLowerCase(),6:t=>e(t).find("span:first").text(),7:t=>e(t).data("show-size"),8:t=>e(t).find("img").attr("alt"),10:t=>e(t).find("img").attr("alt")},widgets:["saveSort","zebra","stickyHeaders","filter","columnSelector"],headers:{0:{sorter:"realISODate"},1:{sorter:"realISODate"},2:{sorter:"showNames"},4:{sorter:"text"},5:{sorter:"quality"},6:{sorter:"eps"},7:{sorter:"digit"},8:{filter:"parsed"},10:{filter:"parsed"}},widgetOptions:{filter_columnFilters:!0,filter_hideFilters:!0,filter_saveFilters:!0,filter_functions:{5(e,t,n){let s=!1;const a=Math.floor(t%1*1e3);if(""===n)s=!0;else{let e=n.match(/(<|<=|>=|>)\s+(\d+)/i);e&&("<"===e[1]?a="===e[1]?a>=parseInt(e[2],10)&&(s=!0):">"===e[1]&&a>parseInt(e[2],10)&&(s=!0)),(e=n.match(/(\d+)\s(-|to)\s+(\d+)/i))&&("-"!==e[2]&&"to"!==e[2]||a>=parseInt(e[1],10)&&a<=parseInt(e[3],10)&&(s=!0)),(e=n.match(/(=)?\s?(\d+)\s?(=)?/i))&&("="!==e[1]&&"="!==e[3]||parseInt(e[2],10)===a&&(s=!0)),!isNaN(parseFloat(n))&&isFinite(n)&&parseInt(n,10)===a&&(s=!0)}return s}},columnSelector_mediaquery:!1},sortStable:!0,sortAppend:[[2,0]]}).bind("sortEnd",()=>{a.handleScroll()}).bind("filterEnd",()=>{a.handleScroll()}),e(".show-grid").imagesLoaded(()=>{this.initializePosterSizeSlider(),e(".loading-spinner").hide(),e(".show-grid").show().isotope({itemSelector:".show-container",sortBy:n.posterSortby,sortAscending:n.posterSortdir,layoutMode:"masonry",masonry:{isFitWidth:!0},getSortData:{name(t){const s=e(t).attr("data-name")||"";return(n.sortArticle?s:s.replace(/^((?:The|A|An)\s)/i,"")).toLowerCase()},network:"[data-network]",date(t){const n=e(t).attr("data-date");return n.length&&parseInt(n,10)||Number.POSITIVE_INFINITY},progress(t){const n=e(t).attr("data-progress");return n.length&&parseInt(n,10)||Number.NEGATIVE_INFINITY},indexer(t){const n=e(t).attr("data-indexer");return void 0===n?Number.NEGATIVE_INFINITY:n.length&&parseInt(n,10)||Number.NEGATIVE_INFINITY}}}).on("layoutComplete arrangeComplete removeComplete",()=>{a.update(),a.handleScroll()});let t=null;e(".show-container").on("mouseenter",function(){const n=e(this);"none"===n.find(".show-details").css("display")&&(t=setTimeout(()=>{t=null,e("#posterPopup").remove();const s=n.clone().attr({id:"posterPopup"}),a=n.offset().left,o=n.offset().top;s.css({position:"absolute",margin:0,top:o,left:a}),s.find(".show-details").show(),s.on("mouseleave",function(){e(this).remove()}),s.css({zIndex:"9999"}),s.appendTo("body");let i=o+n.height()/2-219,r=a+n.width()/2-125;const l=e(window).scrollTop(),c=e(window).scrollLeft(),d=l+e(window).innerHeight(),u=c+e(window).innerWidth();id&&(i=d-438-5),r+250+5>u&&(r=u-250-5),s.animate({top:i,left:r,width:250,height:438})},300))}).on("mouseleave",()=>{null!==t&&clearTimeout(t)}),a.update(),a.handleScroll()}),e("#popover").popover({placement:"bottom",html:!0,content:'
    '}).on("shown.bs.popover",()=>{e.tablesorter.columnSelector.attachTo(e("#showListTableSeries"),"#popover-target"),n.animeSplitHome&&e.tablesorter.columnSelector.attachTo(e("#showListTableAnime"),"#popover-target")});const o=t.rootDirs,i=t.selectedRootIndex;if(o){const t=o.slice(1);if(t.length>=2){e("#showRoot").show();const n=["All Folders"].concat(t);e.each(n,(t,n)=>{e("#showRootDir").append(e(""))return c;if(e.isArray(c))s=c;else if("object"===e.type(l)&&c&&null===(s=c(n,r,o)))return null}return!1===s&&(s=t.getOptions(n,r,o)),t.processOptions(n,r,s)},processOptions:function(t,n,r){if(!e.isArray(r))return!1;var o,a,s,l,u,c,d=(t=e(t)[0]).config,f=null!=n&&0<=n&&n'+(y.data("placeholder")||y.attr("data-placeholder")||v.filter_placeholder.select||"")+"",b=g.$table.find("thead").find("select."+r.filter+'[data-column="'+o+'"]').val();if(void 0!==a&&""!==a||null!==(a=t.getOptionSource(i,o,l))){if(e.isArray(a)){for(u=0;u"}else""+m!="[object Object]"&&(0<=(c=d=m=(""+m).replace(n.quote,""")).indexOf(v.filter_selectSourceSeparator)&&(c=(f=d.split(v.filter_selectSourceSeparator))[0],d=f[1]),_+=""!==m?"":"");a=[]}p=(g.$filters?g.$filters:g.$table.children("thead")).find("."+r.filter),v.filter_$externalFilters&&(p=p&&p.length?p.add(v.filter_$externalFilters):v.filter_$externalFilters),(h=p.filter('select[data-column="'+o+'"]')).length&&(h[s?"html":"append"](_),e.isArray(a)||h.append(a).val(b),h.val(b))}}},buildDefault:function(e,n){var r,o,a,s=e.config,l=s.widgetOptions,u=s.columns;for(r=0;r - * @license MIT - */ -e.exports=function(e){return null!=e&&null!=e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}},function(e,t,n){"use strict";var i=n(13),r=n(99),o=n(167),a=n(168),s=n(105);function l(e){this.defaults=e,this.interceptors={request:new o,response:new o}}l.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=s(this.defaults,e)).method=e.method?e.method.toLowerCase():"get";var t=[a,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},l.prototype.getUri=function(e){return e=s(this.defaults,e),r(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},i.forEach(["delete","get","head","options"],function(e){l.prototype[e]=function(t,n){return this.request(i.merge(n||{},{method:e,url:t}))}}),i.forEach(["post","put","patch"],function(e){l.prototype[e]=function(t,n,r){return this.request(i.merge(r||{},{method:e,url:t,data:n}))}}),e.exports=l},function(e,t,n){"use strict";var i=n(13);function r(){this.handlers=[]}r.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},r.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},r.prototype.forEach=function(e){i.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=r},function(e,t,n){"use strict";var i=n(13),r=n(169),o=n(100),a=n(101),s=n(176),l=n(177);function u(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return u(e),e.baseURL&&!s(e.url)&&(e.url=l(e.baseURL,e.url)),e.headers=e.headers||{},e.data=r(e.data,e.headers,e.transformRequest),e.headers=i.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),i.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]}),(e.adapter||a.adapter)(e).then(function(t){return u(e),t.data=r(t.data,t.headers,e.transformResponse),t},function(t){return o(t)||(u(e),t&&t.response&&(t.response.data=r(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){"use strict";var i=n(13);e.exports=function(e,t,n){return i.forEach(n,function(n){e=n(e,t)}),e}},function(e,t,n){"use strict";var i=n(13);e.exports=function(e,t){i.forEach(e,function(n,i){i!==t&&i.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[i])})}},function(e,t,n){"use strict";var i=n(104);e.exports=function(e,t,n){var r=n.config.validateStatus;!r||r(n.status)?e(n):t(i("Request failed with status code "+n.status,n.config,null,n.request,n))}},function(e,t,n){"use strict";e.exports=function(e,t,n,i,r){return e.config=t,n&&(e.code=n),e.request=i,e.response=r,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e}},function(e,t,n){"use strict";var i=n(13),r=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,o,a={};return e?(i.forEach(e.split("\n"),function(e){if(o=e.indexOf(":"),t=i.trim(e.substr(0,o)).toLowerCase(),n=i.trim(e.substr(o+1)),t){if(a[t]&&r.indexOf(t)>=0)return;a[t]="set-cookie"===t?(a[t]?a[t]:[]).concat([n]):a[t]?a[t]+", "+n:n}}),a):a}},function(e,t,n){"use strict";var i=n(13);e.exports=i.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function r(e){var i=e;return t&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=r(window.location.href),function(t){var n=i.isString(t)?r(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},function(e,t,n){"use strict";var i=n(13);e.exports=i.isStandardBrowserEnv()?{write:function(e,t,n,r,o,a){var s=[];s.push(e+"="+encodeURIComponent(t)),i.isNumber(n)&&s.push("expires="+new Date(n).toGMTString()),i.isString(r)&&s.push("path="+r),i.isString(o)&&s.push("domain="+o),!0===a&&s.push("secure"),document.cookie=s.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var i=n(106);function r(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new i(e),t(n.reason))})}r.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},r.source=function(){var e;return{token:new r(function(t){e=t}),cancel:e}},e.exports=r},function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},function(e,t,n){var i=n(108);e.exports=function(){return i.Date.now()}},function(e,t,n){(function(t){var n="object"==typeof t&&t&&t.Object===Object&&t;e.exports=n}).call(this,n(15))},function(e,t,n){var i=n(107),r=n(183),o=NaN,a=/^\s+|\s+$/g,s=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,u=/^0o[0-7]+$/i,c=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(r(e))return o;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(a,"");var n=l.test(e);return n||u.test(e)?c(e.slice(2),n?2:8):s.test(e)?o:+e}},function(e,t,n){var i=n(184),r=n(187),o="[object Symbol]";e.exports=function(e){return"symbol"==typeof e||r(e)&&i(e)==o}},function(e,t,n){var i=n(109),r=n(185),o=n(186),a="[object Null]",s="[object Undefined]",l=i?i.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?s:a:l&&l in Object(e)?r(e):o(e)}},function(e,t,n){var i=n(109),r=Object.prototype,o=r.hasOwnProperty,a=r.toString,s=i?i.toStringTag:void 0;e.exports=function(e){var t=o.call(e,s),n=e[s];try{e[s]=void 0;var i=!0}catch(e){}var r=a.call(e);return i&&(t?e[s]=n:delete e[s]),r}},function(e,t){var n=Object.prototype.toString;e.exports=function(e){return n.call(e)}},function(e,t){e.exports=function(e){return null!=e&&"object"==typeof e}},function(e,t,n){(function(e){var i=void 0!==e&&e||"undefined"!=typeof self&&self||window,r=Function.prototype.apply;function o(e,t){this._id=e,this._clearFn=t}t.setTimeout=function(){return new o(r.call(setTimeout,i,arguments),clearTimeout)},t.setInterval=function(){return new o(r.call(setInterval,i,arguments),clearInterval)},t.clearTimeout=t.clearInterval=function(e){e&&e.close()},o.prototype.unref=o.prototype.ref=function(){},o.prototype.close=function(){this._clearFn.call(i,this._id)},t.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},t.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},t._unrefActive=t.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout(function(){e._onTimeout&&e._onTimeout()},t))},n(189),t.setImmediate="undefined"!=typeof self&&self.setImmediate||void 0!==e&&e.setImmediate||this&&this.setImmediate,t.clearImmediate="undefined"!=typeof self&&self.clearImmediate||void 0!==e&&e.clearImmediate||this&&this.clearImmediate}).call(this,n(15))},function(e,t,n){(function(e,t){!function(e,n){"use strict";if(!e.setImmediate){var i,r,o,a,s,l=1,u={},c=!1,d=e.document,f=Object.getPrototypeOf&&Object.getPrototypeOf(e);f=f&&f.setTimeout?f:e,"[object process]"==={}.toString.call(e.process)?i=function(e){t.nextTick(function(){h(e)})}:!function(){if(e.postMessage&&!e.importScripts){var t=!0,n=e.onmessage;return e.onmessage=function(){t=!1},e.postMessage("","*"),e.onmessage=n,t}}()?e.MessageChannel?((o=new MessageChannel).port1.onmessage=function(e){h(e.data)},i=function(e){o.port2.postMessage(e)}):d&&"onreadystatechange"in d.createElement("script")?(r=d.documentElement,i=function(e){var t=d.createElement("script");t.onreadystatechange=function(){h(e),t.onreadystatechange=null,r.removeChild(t),t=null},r.appendChild(t)}):i=function(e){setTimeout(h,0,e)}:(a="setImmediate$"+Math.random()+"$",s=function(t){t.source===e&&"string"==typeof t.data&&0===t.data.indexOf(a)&&h(+t.data.slice(a.length))},e.addEventListener?e.addEventListener("message",s,!1):e.attachEvent("onmessage",s),i=function(t){e.postMessage(a+t,"*")}),f.setImmediate=function(e){"function"!=typeof e&&(e=new Function(""+e));for(var t=new Array(arguments.length-1),n=0;n=0||(r[n]=e[n]);return r}},,,function(e,t,n){},,,function(e,t){e.exports=function(e,t,n){var i,r,o,a,s,l=10>t?t:10,u=["img","br"],c=[],d=0,f="",p='([\\w|-]+\\s*(=\\s*"[^"]*")?\\s*)*',h=new RegExp("<\\/?\\w+\\s*"+p+"\\s*\\/\\s*>"),m=new RegExp("<\\/?\\w+\\s*"+p+"\\s*\\/?\\s*>"),g=/(((ftp|https?):\/\/)[\-\w@:%_\+.~#?,&\/\/=]+)|((mailto:)?[_.\w\-]+@([\w][\w\-]+\.)+[a-zA-Z]{2,3})/g,v=new RegExp(""),y=new RegExp("\\W+","g"),_=!0;function b(e){var t=e.indexOf(" ");if(-1===t&&-1===(t=e.indexOf(">")))throw new Error("HTML tag is not well-formed : "+e);return e.substring(1,t)}function C(e,i){var r,o,a=t-d,s=a,l=a=t)break;if(!(_=g.exec(e))||_.index>=t){f+=e.substring(0,C(e));break}for(;_;)i=_[0],r=_.index,f+=e.substring(0,r+i.length-d),e=e.substring(r+i.length),_=g.exec(e);break}if(i=_[0],r=_.index,d+r>t){f+=e.substring(0,C(e,r));break}d+=r,f+=e.substring(0,r),"/"===i[1]?(c.pop(),a=null):(a=h.exec(i))||(o=b(i),c.push(o)),f+=a?a[0]:i,e=e.substring(r+i.length)}return e.length>t-d&&n.ellipsis&&(f+=n.ellipsis),f+=(s="",c.reverse().forEach(function(e,t){-1===u.indexOf(e)&&(s+="")}),s),n.keepImageTag||(f=function(e){var t,n,i=v.exec(e);return i?(t=i.index,n=i[0].length,e.substring(0,t)+e.substring(t+n)):e}(f)),f}},function(e,t,n){var i,r,o,a,s,l,u,c,d,f;d=n(110),e.exports={deepKeys:s=function(e){if(!u(e))throw new Error("deepKeys must be called on an object, not '"+e+"'");return d.flatten(d.map(e,function(e,t){return u(e)&&!d.isEmpty(e)?d.map(s(e),function(e){return t+"."+e}):[t]}))},deepClone:i=function(e){var t,n,r,o;if(null==e)return e;for(n=0,r=(o=[Date,Number,String,Boolean]).length;n= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/objectWithoutProperties.js?"); + +/***/ }), + +/***/ "./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js ***! + \*****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;\n\n//# sourceURL=webpack:///./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js?"); + +/***/ }), + +/***/ "./node_modules/axios/index.js": +/*!*************************************!*\ + !*** ./node_modules/axios/index.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = __webpack_require__(/*! ./lib/axios */ \"./node_modules/axios/lib/axios.js\");\n\n//# sourceURL=webpack:///./node_modules/axios/index.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/adapters/xhr.js": +/*!************************************************!*\ + !*** ./node_modules/axios/lib/adapters/xhr.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\nvar settle = __webpack_require__(/*! ./../core/settle */ \"./node_modules/axios/lib/core/settle.js\");\nvar buildURL = __webpack_require__(/*! ./../helpers/buildURL */ \"./node_modules/axios/lib/helpers/buildURL.js\");\nvar parseHeaders = __webpack_require__(/*! ./../helpers/parseHeaders */ \"./node_modules/axios/lib/helpers/parseHeaders.js\");\nvar isURLSameOrigin = __webpack_require__(/*! ./../helpers/isURLSameOrigin */ \"./node_modules/axios/lib/helpers/isURLSameOrigin.js\");\nvar createError = __webpack_require__(/*! ../core/createError */ \"./node_modules/axios/lib/core/createError.js\");\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = __webpack_require__(/*! ./../helpers/cookies */ \"./node_modules/axios/lib/helpers/cookies.js\");\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/adapters/xhr.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/axios.js": +/*!*****************************************!*\ + !*** ./node_modules/axios/lib/axios.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/axios/lib/utils.js\");\nvar bind = __webpack_require__(/*! ./helpers/bind */ \"./node_modules/axios/lib/helpers/bind.js\");\nvar Axios = __webpack_require__(/*! ./core/Axios */ \"./node_modules/axios/lib/core/Axios.js\");\nvar mergeConfig = __webpack_require__(/*! ./core/mergeConfig */ \"./node_modules/axios/lib/core/mergeConfig.js\");\nvar defaults = __webpack_require__(/*! ./defaults */ \"./node_modules/axios/lib/defaults.js\");\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = __webpack_require__(/*! ./cancel/Cancel */ \"./node_modules/axios/lib/cancel/Cancel.js\");\naxios.CancelToken = __webpack_require__(/*! ./cancel/CancelToken */ \"./node_modules/axios/lib/cancel/CancelToken.js\");\naxios.isCancel = __webpack_require__(/*! ./cancel/isCancel */ \"./node_modules/axios/lib/cancel/isCancel.js\");\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = __webpack_require__(/*! ./helpers/spread */ \"./node_modules/axios/lib/helpers/spread.js\");\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/axios.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/cancel/Cancel.js": +/*!*************************************************!*\ + !*** ./node_modules/axios/lib/cancel/Cancel.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/cancel/Cancel.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/cancel/CancelToken.js": +/*!******************************************************!*\ + !*** ./node_modules/axios/lib/cancel/CancelToken.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar Cancel = __webpack_require__(/*! ./Cancel */ \"./node_modules/axios/lib/cancel/Cancel.js\");\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/cancel/CancelToken.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/cancel/isCancel.js": +/*!***************************************************!*\ + !*** ./node_modules/axios/lib/cancel/isCancel.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/cancel/isCancel.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/core/Axios.js": +/*!**********************************************!*\ + !*** ./node_modules/axios/lib/core/Axios.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\nvar buildURL = __webpack_require__(/*! ../helpers/buildURL */ \"./node_modules/axios/lib/helpers/buildURL.js\");\nvar InterceptorManager = __webpack_require__(/*! ./InterceptorManager */ \"./node_modules/axios/lib/core/InterceptorManager.js\");\nvar dispatchRequest = __webpack_require__(/*! ./dispatchRequest */ \"./node_modules/axios/lib/core/dispatchRequest.js\");\nvar mergeConfig = __webpack_require__(/*! ./mergeConfig */ \"./node_modules/axios/lib/core/mergeConfig.js\");\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n config.method = config.method ? config.method.toLowerCase() : 'get';\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/core/Axios.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/core/InterceptorManager.js": +/*!***********************************************************!*\ + !*** ./node_modules/axios/lib/core/InterceptorManager.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/core/InterceptorManager.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/core/createError.js": +/*!****************************************************!*\ + !*** ./node_modules/axios/lib/core/createError.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar enhanceError = __webpack_require__(/*! ./enhanceError */ \"./node_modules/axios/lib/core/enhanceError.js\");\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/core/createError.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/core/dispatchRequest.js": +/*!********************************************************!*\ + !*** ./node_modules/axios/lib/core/dispatchRequest.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\nvar transformData = __webpack_require__(/*! ./transformData */ \"./node_modules/axios/lib/core/transformData.js\");\nvar isCancel = __webpack_require__(/*! ../cancel/isCancel */ \"./node_modules/axios/lib/cancel/isCancel.js\");\nvar defaults = __webpack_require__(/*! ../defaults */ \"./node_modules/axios/lib/defaults.js\");\nvar isAbsoluteURL = __webpack_require__(/*! ./../helpers/isAbsoluteURL */ \"./node_modules/axios/lib/helpers/isAbsoluteURL.js\");\nvar combineURLs = __webpack_require__(/*! ./../helpers/combineURLs */ \"./node_modules/axios/lib/helpers/combineURLs.js\");\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/core/dispatchRequest.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/core/enhanceError.js": +/*!*****************************************************!*\ + !*** ./node_modules/axios/lib/core/enhanceError.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/core/enhanceError.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/core/mergeConfig.js": +/*!****************************************************!*\ + !*** ./node_modules/axios/lib/core/mergeConfig.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/axios/lib/utils.js\");\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n utils.forEach(['url', 'method', 'params', 'data'], function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(['headers', 'auth', 'proxy'], function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach([\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'maxContentLength',\n 'validateStatus', 'maxRedirects', 'httpAgent', 'httpsAgent', 'cancelToken',\n 'socketPath'\n ], function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/core/mergeConfig.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/core/settle.js": +/*!***********************************************!*\ + !*** ./node_modules/axios/lib/core/settle.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar createError = __webpack_require__(/*! ./createError */ \"./node_modules/axios/lib/core/createError.js\");\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/core/settle.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/core/transformData.js": +/*!******************************************************!*\ + !*** ./node_modules/axios/lib/core/transformData.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/core/transformData.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/defaults.js": +/*!********************************************!*\ + !*** ./node_modules/axios/lib/defaults.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("/* WEBPACK VAR INJECTION */(function(process) {\n\nvar utils = __webpack_require__(/*! ./utils */ \"./node_modules/axios/lib/utils.js\");\nvar normalizeHeaderName = __webpack_require__(/*! ./helpers/normalizeHeaderName */ \"./node_modules/axios/lib/helpers/normalizeHeaderName.js\");\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n // Only Node.JS has a process variable that is of [[Class]] process\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = __webpack_require__(/*! ./adapters/http */ \"./node_modules/axios/lib/adapters/xhr.js\");\n } else if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = __webpack_require__(/*! ./adapters/xhr */ \"./node_modules/axios/lib/adapters/xhr.js\");\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack:///./node_modules/axios/lib/defaults.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/bind.js": +/*!************************************************!*\ + !*** ./node_modules/axios/lib/helpers/bind.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/helpers/bind.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/buildURL.js": +/*!****************************************************!*\ + !*** ./node_modules/axios/lib/helpers/buildURL.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/helpers/buildURL.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/combineURLs.js": +/*!*******************************************************!*\ + !*** ./node_modules/axios/lib/helpers/combineURLs.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/helpers/combineURLs.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/cookies.js": +/*!***************************************************!*\ + !*** ./node_modules/axios/lib/helpers/cookies.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/helpers/cookies.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/isAbsoluteURL.js": +/*!*********************************************************!*\ + !*** ./node_modules/axios/lib/helpers/isAbsoluteURL.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/isURLSameOrigin.js": +/*!***********************************************************!*\ + !*** ./node_modules/axios/lib/helpers/isURLSameOrigin.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/normalizeHeaderName.js": +/*!***************************************************************!*\ + !*** ./node_modules/axios/lib/helpers/normalizeHeaderName.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ../utils */ \"./node_modules/axios/lib/utils.js\");\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/parseHeaders.js": +/*!********************************************************!*\ + !*** ./node_modules/axios/lib/helpers/parseHeaders.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar utils = __webpack_require__(/*! ./../utils */ \"./node_modules/axios/lib/utils.js\");\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/helpers/parseHeaders.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/helpers/spread.js": +/*!**************************************************!*\ + !*** ./node_modules/axios/lib/helpers/spread.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/helpers/spread.js?"); + +/***/ }), + +/***/ "./node_modules/axios/lib/utils.js": +/*!*****************************************!*\ + !*** ./node_modules/axios/lib/utils.js ***! + \*****************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar bind = __webpack_require__(/*! ./helpers/bind */ \"./node_modules/axios/lib/helpers/bind.js\");\nvar isBuffer = __webpack_require__(/*! is-buffer */ \"./node_modules/axios/node_modules/is-buffer/index.js\");\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n\n\n//# sourceURL=webpack:///./node_modules/axios/lib/utils.js?"); + +/***/ }), + +/***/ "./node_modules/axios/node_modules/is-buffer/index.js": +/*!************************************************************!*\ + !*** ./node_modules/axios/node_modules/is-buffer/index.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\nmodule.exports = function isBuffer (obj) {\n return obj != null && obj.constructor != null &&\n typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n\n//# sourceURL=webpack:///./node_modules/axios/node_modules/is-buffer/index.js?"); + +/***/ }), + +/***/ "./node_modules/bootstrap/dist/css/bootstrap.min.css": +/*!***********************************************************!*\ + !*** ./node_modules/bootstrap/dist/css/bootstrap.min.css ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// extracted by mini-css-extract-plugin\n\n//# sourceURL=webpack:///./node_modules/bootstrap/dist/css/bootstrap.min.css?"); + +/***/ }), + +/***/ "./node_modules/bootstrap/dist/js/npm.js": +/*!***********************************************!*\ + !*** ./node_modules/bootstrap/dist/js/npm.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\n__webpack_require__(/*! ../../js/transition.js */ \"./node_modules/bootstrap/js/transition.js\")\n__webpack_require__(/*! ../../js/alert.js */ \"./node_modules/bootstrap/js/alert.js\")\n__webpack_require__(/*! ../../js/button.js */ \"./node_modules/bootstrap/js/button.js\")\n__webpack_require__(/*! ../../js/carousel.js */ \"./node_modules/bootstrap/js/carousel.js\")\n__webpack_require__(/*! ../../js/collapse.js */ \"./node_modules/bootstrap/js/collapse.js\")\n__webpack_require__(/*! ../../js/dropdown.js */ \"./node_modules/bootstrap/js/dropdown.js\")\n__webpack_require__(/*! ../../js/modal.js */ \"./node_modules/bootstrap/js/modal.js\")\n__webpack_require__(/*! ../../js/tooltip.js */ \"./node_modules/bootstrap/js/tooltip.js\")\n__webpack_require__(/*! ../../js/popover.js */ \"./node_modules/bootstrap/js/popover.js\")\n__webpack_require__(/*! ../../js/scrollspy.js */ \"./node_modules/bootstrap/js/scrollspy.js\")\n__webpack_require__(/*! ../../js/tab.js */ \"./node_modules/bootstrap/js/tab.js\")\n__webpack_require__(/*! ../../js/affix.js */ \"./node_modules/bootstrap/js/affix.js\")\n\n//# sourceURL=webpack:///./node_modules/bootstrap/dist/js/npm.js?"); + +/***/ }), + +/***/ "./node_modules/bootstrap/js/affix.js": +/*!********************************************!*\ + !*** ./node_modules/bootstrap/js/affix.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)\n\n this.$target = target\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.4.1'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./node_modules/bootstrap/js/affix.js?"); + +/***/ }), + +/***/ "./node_modules/bootstrap/js/alert.js": +/*!********************************************!*\ + !*** ./node_modules/bootstrap/js/alert.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.4.1'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n selector = selector === '#' ? [] : selector\n var $parent = $(document).find(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./node_modules/bootstrap/js/alert.js?"); + +/***/ }), + +/***/ "./node_modules/bootstrap/js/button.js": +/*!*********************************************!*\ + !*** ./node_modules/bootstrap/js/button.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================\n * Bootstrap: button.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.4.1'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state += 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d).prop(d, true)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d).prop(d, false)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked')) changed = false\n $parent.find('.active').removeClass('active')\n this.$element.addClass('active')\n } else if ($input.prop('type') == 'checkbox') {\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n this.$element.toggleClass('active')\n }\n $input.prop('checked', this.$element.hasClass('active'))\n if (changed) $input.trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n this.$element.toggleClass('active')\n }\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target).closest('.btn')\n Plugin.call($btn, 'toggle')\n if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n e.preventDefault()\n // The target component still receive the focus\n if ($btn.is('input,button')) $btn.trigger('focus')\n else $btn.find('input:visible,button:visible').first().trigger('focus')\n }\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./node_modules/bootstrap/js/button.js?"); + +/***/ }), + +/***/ "./node_modules/bootstrap/js/carousel.js": +/*!***********************************************!*\ + !*** ./node_modules/bootstrap/js/carousel.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================\n * Bootstrap: carousel.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused = null\n this.sliding = null\n this.interval = null\n this.$active = null\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.4.1'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n if (typeof $next === 'object' && $next.length) {\n $next[0].offsetWidth // force reflow\n }\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n if (href) {\n href = href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n }\n\n var target = $this.attr('data-target') || href\n var $target = $(document).find(target)\n\n if (!$target.hasClass('carousel')) return\n\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./node_modules/bootstrap/js/carousel.js?"); + +/***/ }), + +/***/ "./node_modules/bootstrap/js/collapse.js": +/*!***********************************************!*\ + !*** ./node_modules/bootstrap/js/collapse.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.4.1'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(document).find(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(document).find(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./node_modules/bootstrap/js/collapse.js?"); + +/***/ }), + +/***/ "./node_modules/bootstrap/js/dropdown.js": +/*!***********************************************!*\ + !*** ./node_modules/bootstrap/js/dropdown.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.4.1'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector !== '#' ? $(document).find(selector) : null\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./node_modules/bootstrap/js/dropdown.js?"); + +/***/ }), + +/***/ "./node_modules/bootstrap/js/modal.js": +/*!********************************************!*\ + !*** ./node_modules/bootstrap/js/modal.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.4.1'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n var scrollbarWidth = this.scrollbarWidth\n if (this.bodyIsOverflowing) {\n this.$body.css('padding-right', bodyPad + scrollbarWidth)\n $(this.fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight\n var calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n })\n }\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n $(this.fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var target = $this.attr('data-target') ||\n (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n var $target = $(document).find(target)\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./node_modules/bootstrap/js/modal.js?"); + +/***/ }), + +/***/ "./node_modules/bootstrap/js/popover.js": +/*!**********************************************!*\ + !*** ./node_modules/bootstrap/js/popover.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.4.1'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '

    '\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n if (this.options.html) {\n var typeContent = typeof content\n\n if (this.options.sanitize) {\n title = this.sanitizeHtml(title)\n\n if (typeContent === 'string') {\n content = this.sanitizeHtml(content)\n }\n }\n\n $tip.find('.popover-title').html(title)\n $tip.find('.popover-content').children().detach().end()[\n typeContent === 'string' ? 'html' : 'append'\n ](content)\n } else {\n $tip.find('.popover-title').text(title)\n $tip.find('.popover-content').children().detach().end().text(content)\n }\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./node_modules/bootstrap/js/popover.js?"); + +/***/ }), + +/***/ "./node_modules/bootstrap/js/scrollspy.js": +/*!************************************************!*\ + !*** ./node_modules/bootstrap/js/scrollspy.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================\n * Bootstrap: scrollspy.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body)\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.4.1'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var that = this\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n that.offsets.push(this[0])\n that.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./node_modules/bootstrap/js/scrollspy.js?"); + +/***/ }), + +/***/ "./node_modules/bootstrap/js/tab.js": +/*!******************************************!*\ + !*** ./node_modules/bootstrap/js/tab.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element)\n // jscs:enable requireDollarBeforejQueryAssignment\n }\n\n Tab.VERSION = '3.4.1'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(document).find(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./node_modules/bootstrap/js/tab.js?"); + +/***/ }), + +/***/ "./node_modules/bootstrap/js/tooltip.js": +/*!**********************************************!*\ + !*** ./node_modules/bootstrap/js/tooltip.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n 'use strict';\n\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n var uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n ]\n\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n }\n\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase()\n\n if ($.inArray(attrName, allowedAttributeList) !== -1) {\n if ($.inArray(attrName, uriAttrs) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n var regExp = $(allowedAttributeList).filter(function (index, value) {\n return value instanceof RegExp\n })\n\n // Check if a regular expression validates the attribute.\n for (var i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n // IE 8 and below don't support createHTMLDocument\n if (!document.implementation || !document.implementation.createHTMLDocument) {\n return unsafeHtml\n }\n\n var createdDocument = document.implementation.createHTMLDocument('sanitization')\n createdDocument.body.innerHTML = unsafeHtml\n\n var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n var elements = $(createdDocument.body).find('*')\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var el = elements[i]\n var elName = el.nodeName.toLowerCase()\n\n if ($.inArray(elName, whitelistKeys) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n var attributeList = $.map(el.attributes, function (el) { return el })\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n el.removeAttribute(attributeList[j].nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n }\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.4.1'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '
    ',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n },\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n var dataAttributes = this.$element.data()\n\n for (var dataAttr in dataAttributes) {\n if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n delete dataAttributes[dataAttr]\n }\n }\n\n options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n if (options.sanitize) {\n options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n if (this.options.html) {\n if (this.options.sanitize) {\n title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n }\n\n $tip.find('.tooltip-inner').html(title)\n } else {\n $tip.find('.tooltip-inner').text(title)\n }\n\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n }\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var isSvg = window.SVGElement && el instanceof window.SVGElement\n // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n // See https://github.com/twbs/bootstrap/issues/20280\n var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n that.$element = null\n })\n }\n\n Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n }\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./node_modules/bootstrap/js/tooltip.js?"); + +/***/ }), + +/***/ "./node_modules/bootstrap/js/transition.js": +/*!*************************************************!*\ + !*** ./node_modules/bootstrap/js/transition.js ***! + \*************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("/* WEBPACK VAR INJECTION */(function(jQuery) {/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // https://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\")))\n\n//# sourceURL=webpack:///./node_modules/bootstrap/js/transition.js?"); + +/***/ }), + +/***/ "./node_modules/country-language/data.json": +/*!*************************************************!*\ + !*** ./node_modules/country-language/data.json ***! + \*************************************************/ +/*! exports provided: languageFamilies, languages, countries, locales, default */ +/***/ (function(module) { + +eval("module.exports = JSON.parse(\"{\\\"languageFamilies\\\":[\\\"Northwest Caucasian\\\",\\\"Afro-Asiatic\\\",\\\"Indo-European\\\",\\\"Niger–Congo\\\",\\\"Northeast Caucasian\\\",\\\"Aymaran\\\",\\\"Turkic\\\",\\\"Language isolate\\\",\\\"Creole\\\",\\\"Sino-Tibetan\\\",\\\"Austronesian\\\",\\\"Algonquian\\\",\\\"Constructed\\\",\\\"Uralic\\\",\\\"South Caucasian\\\",\\\"Tupian\\\",\\\"Eskimo–Aleut\\\",\\\"Japonic\\\",\\\"Dravidian\\\",\\\"Nilo-Saharan\\\",\\\"Austroasiatic\\\",\\\"Koreanic\\\",\\\"Tai–Kadai\\\",\\\"Mongolic\\\",\\\"Dené–Yeniseian\\\",\\\"Niger-Congo\\\",\\\"Quechuan\\\"],\\\"languages\\\":[{\\\"iso639_1\\\":\\\"ab\\\",\\\"iso639_2\\\":\\\"abk\\\",\\\"iso639_2en\\\":\\\"abk\\\",\\\"iso639_3\\\":\\\"abk\\\",\\\"name\\\":[\\\"Abkhaz\\\"],\\\"nativeName\\\":[\\\"аҧсуа бызшәа\\\",\\\"аҧсшәа\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Northwest Caucasian\\\"},{\\\"iso639_1\\\":\\\"aa\\\",\\\"iso639_2\\\":\\\"aar\\\",\\\"iso639_2en\\\":\\\"aar\\\",\\\"iso639_3\\\":\\\"aar\\\",\\\"name\\\":[\\\"Afar\\\"],\\\"nativeName\\\":[\\\"Afaraf\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Afro-Asiatic\\\",\\\"countries\\\":[\\\"DJI\\\"]},{\\\"iso639_1\\\":\\\"af\\\",\\\"iso639_2\\\":\\\"afr\\\",\\\"iso639_2en\\\":\\\"afr\\\",\\\"iso639_3\\\":\\\"afr\\\",\\\"name\\\":[\\\"Afrikaans\\\"],\\\"nativeName\\\":[\\\"Afrikaans\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"ZAF\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"af-ZA\\\",\\\"displayName\\\":\\\"Afrikaans - South Africa\\\",\\\"cultureCode\\\":\\\"0x0436\\\"}]},{\\\"iso639_1\\\":\\\"ak\\\",\\\"iso639_2\\\":\\\"aka\\\",\\\"iso639_2en\\\":\\\"aka\\\",\\\"iso639_3\\\":\\\"aka\\\",\\\"name\\\":[\\\"Akan\\\"],\\\"nativeName\\\":[\\\"Akan\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"GHA\\\"]},{\\\"iso639_1\\\":\\\"sq\\\",\\\"iso639_2\\\":\\\"sqi\\\",\\\"iso639_2en\\\":\\\"alb\\\",\\\"iso639_3\\\":\\\"sqi\\\",\\\"name\\\":[\\\"Albanian\\\"],\\\"nativeName\\\":[\\\"gjuha shqipe\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"ALB\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"sq-AL\\\",\\\"displayName\\\":\\\"Albanian - Albania\\\",\\\"cultureCode\\\":\\\"0x041C\\\"}]},{\\\"iso639_1\\\":\\\"am\\\",\\\"iso639_2\\\":\\\"amh\\\",\\\"iso639_2en\\\":\\\"amh\\\",\\\"iso639_3\\\":\\\"amh\\\",\\\"name\\\":[\\\"Amharic\\\"],\\\"nativeName\\\":[\\\"አማርኛ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Afro-Asiatic\\\",\\\"countries\\\":[\\\"ETH\\\"]},{\\\"iso639_1\\\":\\\"ar\\\",\\\"iso639_2\\\":\\\"ara\\\",\\\"iso639_2en\\\":\\\"ara\\\",\\\"iso639_3\\\":\\\"ara\\\",\\\"name\\\":[\\\"Arabic\\\"],\\\"nativeName\\\":[\\\"العربية\\\"],\\\"direction\\\":\\\"RTL\\\",\\\"family\\\":\\\"Afro-Asiatic\\\",\\\"countries\\\":[\\\"DZA\\\",\\\"BHR\\\",\\\"TCD\\\",\\\"COM\\\",\\\"DJI\\\",\\\"EGY\\\",\\\"ERI\\\",\\\"IRQ\\\",\\\"ISR\\\",\\\"JOR\\\",\\\"KWT\\\",\\\"LBN\\\",\\\"LBY\\\",\\\"MRT\\\",\\\"MAR\\\",\\\"NER\\\",\\\"OMN\\\",\\\"QAT\\\",\\\"SAU\\\",\\\"SOM\\\",\\\"SDN\\\",\\\"SYR\\\",\\\"TUN\\\",\\\"ARE\\\",\\\"YEM\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ar-DZ\\\",\\\"displayName\\\":\\\"Arabic - Algeria\\\",\\\"cultureCode\\\":\\\"0x1401\\\"},{\\\"langCultureName\\\":\\\"ar-BH\\\",\\\"displayName\\\":\\\"Arabic - Bahrain\\\",\\\"cultureCode\\\":\\\"0x3C01\\\"},{\\\"langCultureName\\\":\\\"ar-EG\\\",\\\"displayName\\\":\\\"Arabic - Egypt\\\",\\\"cultureCode\\\":\\\"0x0C01\\\"},{\\\"langCultureName\\\":\\\"ar-IQ\\\",\\\"displayName\\\":\\\"Arabic - Iraq\\\",\\\"cultureCode\\\":\\\"0x0801\\\"},{\\\"langCultureName\\\":\\\"ar-JO\\\",\\\"displayName\\\":\\\"Arabic - Jordan\\\",\\\"cultureCode\\\":\\\"0x2C01\\\"},{\\\"langCultureName\\\":\\\"ar-KW\\\",\\\"displayName\\\":\\\"Arabic - Kuwait\\\",\\\"cultureCode\\\":\\\"0x3401\\\"},{\\\"langCultureName\\\":\\\"ar-LB\\\",\\\"displayName\\\":\\\"Arabic - Lebanon\\\",\\\"cultureCode\\\":\\\"0x3001\\\"},{\\\"langCultureName\\\":\\\"ar-LY\\\",\\\"displayName\\\":\\\"Arabic - Libya\\\",\\\"cultureCode\\\":\\\"0x1001\\\"},{\\\"langCultureName\\\":\\\"ar-MA\\\",\\\"displayName\\\":\\\"Arabic - Morocco\\\",\\\"cultureCode\\\":\\\"0x1801\\\"},{\\\"langCultureName\\\":\\\"ar-OM\\\",\\\"displayName\\\":\\\"Arabic - Oman\\\",\\\"cultureCode\\\":\\\"0x2001\\\"},{\\\"langCultureName\\\":\\\"ar-QA\\\",\\\"displayName\\\":\\\"Arabic - Qatar\\\",\\\"cultureCode\\\":\\\"0x4001\\\"},{\\\"langCultureName\\\":\\\"ar-SA\\\",\\\"displayName\\\":\\\"Arabic - Saudi Arabia\\\",\\\"cultureCode\\\":\\\"0x0401\\\"},{\\\"langCultureName\\\":\\\"ar-SY\\\",\\\"displayName\\\":\\\"Arabic - Syria\\\",\\\"cultureCode\\\":\\\"0x2801\\\"},{\\\"langCultureName\\\":\\\"ar-TN\\\",\\\"displayName\\\":\\\"Arabic - Tunisia\\\",\\\"cultureCode\\\":\\\"0x1C01\\\"},{\\\"langCultureName\\\":\\\"ar-AE\\\",\\\"displayName\\\":\\\"Arabic - United Arab Emirates\\\",\\\"cultureCode\\\":\\\"0x3801\\\"},{\\\"langCultureName\\\":\\\"ar-YE\\\",\\\"displayName\\\":\\\"Arabic - Yemen\\\",\\\"cultureCode\\\":\\\"0x2401\\\"}]},{\\\"iso639_1\\\":\\\"an\\\",\\\"iso639_2\\\":\\\"arg\\\",\\\"iso639_2en\\\":\\\"arg\\\",\\\"iso639_3\\\":\\\"arg\\\",\\\"name\\\":[\\\"Aragonese\\\"],\\\"nativeName\\\":[\\\"aragonés\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"hy\\\",\\\"iso639_2\\\":\\\"hye\\\",\\\"iso639_2en\\\":\\\"arm\\\",\\\"iso639_3\\\":\\\"hye\\\",\\\"name\\\":[\\\"Armenian\\\"],\\\"nativeName\\\":[\\\"Հայերեն\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"ARM\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"hy-AM\\\",\\\"displayName\\\":\\\"Armenian - Armenia\\\",\\\"cultureCode\\\":\\\"0x042B\\\"}]},{\\\"iso639_1\\\":\\\"as\\\",\\\"iso639_2\\\":\\\"asm\\\",\\\"iso639_2en\\\":\\\"asm\\\",\\\"iso639_3\\\":\\\"asm\\\",\\\"name\\\":[\\\"Assamese\\\"],\\\"nativeName\\\":[\\\"অসমীয়া\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"av\\\",\\\"iso639_2\\\":\\\"ava\\\",\\\"iso639_2en\\\":\\\"ava\\\",\\\"iso639_3\\\":\\\"ava\\\",\\\"name\\\":[\\\"Avaric\\\"],\\\"nativeName\\\":[\\\"авар мацӀ\\\",\\\"магӀарул мацӀ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Northeast Caucasian\\\"},{\\\"iso639_1\\\":\\\"ae\\\",\\\"iso639_2\\\":\\\"ave\\\",\\\"iso639_2en\\\":\\\"ave\\\",\\\"iso639_3\\\":\\\"ave\\\",\\\"name\\\":[\\\"Avestan\\\"],\\\"nativeName\\\":[\\\"avesta\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"ay\\\",\\\"iso639_2\\\":\\\"aym\\\",\\\"iso639_2en\\\":\\\"aym\\\",\\\"iso639_3\\\":\\\"aym\\\",\\\"name\\\":[\\\"Aymara\\\"],\\\"nativeName\\\":[\\\"aymar aru\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Aymaran\\\",\\\"countries\\\":[\\\"BOL\\\",\\\"PER\\\"]},{\\\"iso639_1\\\":\\\"az\\\",\\\"iso639_2\\\":\\\"aze\\\",\\\"iso639_2en\\\":\\\"aze\\\",\\\"iso639_3\\\":\\\"aze\\\",\\\"name\\\":[\\\"Azerbaijani\\\"],\\\"nativeName\\\":[\\\"azərbaycan dili\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Turkic\\\",\\\"countries\\\":[\\\"AZE\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"Cy-az-AZ\\\",\\\"displayName\\\":\\\"Azeri (Cyrillic) - Azerbaijan\\\",\\\"cultureCode\\\":\\\"0x082C\\\"},{\\\"langCultureName\\\":\\\"Lt-az-AZ\\\",\\\"displayName\\\":\\\"Azeri (Latin) - Azerbaijan\\\",\\\"cultureCode\\\":\\\"0x042C\\\"}]},{\\\"iso639_1\\\":\\\"bm\\\",\\\"iso639_2\\\":\\\"bam\\\",\\\"iso639_2en\\\":\\\"bam\\\",\\\"iso639_3\\\":\\\"bam\\\",\\\"name\\\":[\\\"Bambara\\\"],\\\"nativeName\\\":[\\\"bamanankan\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"MLI\\\"]},{\\\"iso639_1\\\":\\\"ba\\\",\\\"iso639_2\\\":\\\"bak\\\",\\\"iso639_2en\\\":\\\"bak\\\",\\\"iso639_3\\\":\\\"bak\\\",\\\"name\\\":[\\\"Bashkir\\\"],\\\"nativeName\\\":[\\\"башҡорт теле\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Turkic\\\"},{\\\"iso639_1\\\":\\\"eu\\\",\\\"iso639_2\\\":\\\"eus\\\",\\\"iso639_2en\\\":\\\"baq\\\",\\\"iso639_3\\\":\\\"eus\\\",\\\"name\\\":[\\\"Basque\\\"],\\\"nativeName\\\":[\\\"euskara\\\",\\\"euskera\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Language isolate\\\",\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"eu-ES\\\",\\\"displayName\\\":\\\"Basque - Basque\\\",\\\"cultureCode\\\":\\\"0x042D\\\"}]},{\\\"iso639_1\\\":\\\"be\\\",\\\"iso639_2\\\":\\\"bel\\\",\\\"iso639_2en\\\":\\\"bel\\\",\\\"iso639_3\\\":\\\"bel\\\",\\\"name\\\":[\\\"Belarusian\\\"],\\\"nativeName\\\":[\\\"беларуская мова\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"BLR\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"be-BY\\\",\\\"displayName\\\":\\\"Belarusian - Belarus\\\",\\\"cultureCode\\\":\\\"0x0423\\\"}]},{\\\"iso639_1\\\":\\\"bn\\\",\\\"iso639_2\\\":\\\"ben\\\",\\\"iso639_2en\\\":\\\"ben\\\",\\\"iso639_3\\\":\\\"ben\\\",\\\"name\\\":[\\\"Bengali\\\",\\\"Bangla\\\"],\\\"nativeName\\\":[\\\"বাংলা\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"BGD\\\",\\\"IND\\\"]},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ber\\\",\\\"iso639_2en\\\":\\\"ber\\\",\\\"iso639_3\\\":\\\"ber\\\",\\\"name\\\":[\\\"Berber\\\"],\\\"nativeName\\\":[\\\"Tamaziɣt\\\",\\\"Tamazight\\\",\\\"ⵜⴰⵎⴰⵣⵉⵖⵜ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Afro-Asiatic\\\",\\\"countries\\\":[\\\"DZA\\\",\\\"MAR\\\"]},{\\\"iso639_1\\\":\\\"bh\\\",\\\"iso639_2\\\":\\\"bih\\\",\\\"iso639_2en\\\":\\\"bih\\\",\\\"iso639_3\\\":\\\"\\\",\\\"name\\\":[\\\"Bihari\\\"],\\\"nativeName\\\":[\\\"भोजपुरी\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"bi\\\",\\\"iso639_2\\\":\\\"bis\\\",\\\"iso639_2en\\\":\\\"bis\\\",\\\"iso639_3\\\":\\\"bis\\\",\\\"name\\\":[\\\"Bislama\\\"],\\\"nativeName\\\":[\\\"Bislama\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Creole\\\",\\\"countries\\\":[\\\"VUT\\\"]},{\\\"iso639_1\\\":\\\"bs\\\",\\\"iso639_2\\\":\\\"bos\\\",\\\"iso639_2en\\\":\\\"bos\\\",\\\"iso639_3\\\":\\\"bos\\\",\\\"name\\\":[\\\"Bosnian\\\"],\\\"nativeName\\\":[\\\"bosanski jezik\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"BIH\\\"]},{\\\"iso639_1\\\":\\\"br\\\",\\\"iso639_2\\\":\\\"bre\\\",\\\"iso639_2en\\\":\\\"bre\\\",\\\"iso639_3\\\":\\\"bre\\\",\\\"name\\\":[\\\"Breton\\\"],\\\"nativeName\\\":[\\\"brezhoneg\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"bg\\\",\\\"iso639_2\\\":\\\"bul\\\",\\\"iso639_2en\\\":\\\"bul\\\",\\\"iso639_3\\\":\\\"bul\\\",\\\"name\\\":[\\\"Bulgarian\\\"],\\\"nativeName\\\":[\\\"български език\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"BGR\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"bg-BG\\\",\\\"displayName\\\":\\\"Bulgarian - Bulgaria\\\",\\\"cultureCode\\\":\\\"0x0402\\\"}]},{\\\"iso639_1\\\":\\\"my\\\",\\\"iso639_2\\\":\\\"mya\\\",\\\"iso639_2en\\\":\\\"bur\\\",\\\"iso639_3\\\":\\\"mya\\\",\\\"name\\\":[\\\"Burmese\\\"],\\\"nativeName\\\":[\\\"ဗမာစာ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Sino-Tibetan\\\",\\\"countries\\\":[\\\"MMR\\\"]},{\\\"iso639_1\\\":\\\"ca\\\",\\\"iso639_2\\\":\\\"cat\\\",\\\"iso639_2en\\\":\\\"cat\\\",\\\"iso639_3\\\":\\\"cat\\\",\\\"name\\\":[\\\"Catalan\\\",\\\"Valencian\\\"],\\\"nativeName\\\":[\\\"català\\\",\\\"valencià\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"AND\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ca-ES\\\",\\\"displayName\\\":\\\"Catalan - Catalan\\\",\\\"cultureCode\\\":\\\"0x0403\\\"}]},{\\\"iso639_1\\\":\\\"ch\\\",\\\"iso639_2\\\":\\\"cha\\\",\\\"iso639_2en\\\":\\\"cha\\\",\\\"iso639_3\\\":\\\"cha\\\",\\\"name\\\":[\\\"Chamorro\\\"],\\\"nativeName\\\":[\\\"Chamoru\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austronesian\\\"},{\\\"iso639_1\\\":\\\"ce\\\",\\\"iso639_2\\\":\\\"che\\\",\\\"iso639_2en\\\":\\\"che\\\",\\\"iso639_3\\\":\\\"che\\\",\\\"name\\\":[\\\"Chechen\\\"],\\\"nativeName\\\":[\\\"нохчийн мотт\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Northeast Caucasian\\\"},{\\\"iso639_1\\\":\\\"ny\\\",\\\"iso639_2\\\":\\\"nya\\\",\\\"iso639_2en\\\":\\\"nya\\\",\\\"iso639_3\\\":\\\"nya\\\",\\\"name\\\":[\\\"Chichewa\\\",\\\"Chewa\\\",\\\"Nyanja\\\"],\\\"nativeName\\\":[\\\"chiCheŵa\\\",\\\"chinyanja\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"MWI\\\"]},{\\\"iso639_1\\\":\\\"zh\\\",\\\"iso639_2\\\":\\\"zho\\\",\\\"iso639_2en\\\":\\\"chi\\\",\\\"iso639_3\\\":\\\"zho\\\",\\\"name\\\":[\\\"Chinese\\\"],\\\"nativeName\\\":[\\\"中文 (Zhōngwén)\\\",\\\"汉语\\\",\\\"漢語\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Sino-Tibetan\\\",\\\"countries\\\":[\\\"HKG\\\",\\\"MAC\\\",\\\"CHN\\\",\\\"TWN\\\",\\\"SGP\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"zh-CN\\\",\\\"displayName\\\":\\\"Chinese - China\\\",\\\"cultureCode\\\":\\\"0x0804\\\"},{\\\"langCultureName\\\":\\\"zh-HK\\\",\\\"displayName\\\":\\\"Chinese - Hong Kong SAR\\\",\\\"cultureCode\\\":\\\"0x0C04\\\"},{\\\"langCultureName\\\":\\\"zh-MO\\\",\\\"displayName\\\":\\\"Chinese - Macau SAR\\\",\\\"cultureCode\\\":\\\"0x1404\\\"},{\\\"langCultureName\\\":\\\"zh-SG\\\",\\\"displayName\\\":\\\"Chinese - Singapore\\\",\\\"cultureCode\\\":\\\"0x1004\\\"},{\\\"langCultureName\\\":\\\"zh-TW\\\",\\\"displayName\\\":\\\"Chinese - Taiwan\\\",\\\"cultureCode\\\":\\\"0x0404\\\"},{\\\"langCultureName\\\":\\\"zh-CHS\\\",\\\"displayName\\\":\\\"Chinese (Simplified)\\\",\\\"cultureCode\\\":\\\"0x0004\\\"},{\\\"langCultureName\\\":\\\"zh-CHT\\\",\\\"displayName\\\":\\\"Chinese (Traditional)\\\",\\\"cultureCode\\\":\\\"0x7C04\\\"}]},{\\\"iso639_1\\\":\\\"cv\\\",\\\"iso639_2\\\":\\\"chv\\\",\\\"iso639_2en\\\":\\\"chv\\\",\\\"iso639_3\\\":\\\"chv\\\",\\\"name\\\":[\\\"Chuvash\\\"],\\\"nativeName\\\":[\\\"чӑваш чӗлхи\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Turkic\\\"},{\\\"iso639_1\\\":\\\"kw\\\",\\\"iso639_2\\\":\\\"cor\\\",\\\"iso639_2en\\\":\\\"cor\\\",\\\"iso639_3\\\":\\\"cor\\\",\\\"name\\\":[\\\"Cornish\\\"],\\\"nativeName\\\":[\\\"Kernewek\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"co\\\",\\\"iso639_2\\\":\\\"cos\\\",\\\"iso639_2en\\\":\\\"cos\\\",\\\"iso639_3\\\":\\\"cos\\\",\\\"name\\\":[\\\"Corsican\\\"],\\\"nativeName\\\":[\\\"corsu\\\",\\\"lingua corsa\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"cr\\\",\\\"iso639_2\\\":\\\"cre\\\",\\\"iso639_2en\\\":\\\"cre\\\",\\\"iso639_3\\\":\\\"cre\\\",\\\"name\\\":[\\\"Cree\\\"],\\\"nativeName\\\":[\\\"ᓀᐦᐃᔭᐍᐏᐣ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Algonquian\\\"},{\\\"iso639_1\\\":\\\"hr\\\",\\\"iso639_2\\\":\\\"hrv\\\",\\\"iso639_2en\\\":\\\"hrv\\\",\\\"iso639_3\\\":\\\"hrv\\\",\\\"name\\\":[\\\"Croatian\\\"],\\\"nativeName\\\":[\\\"hrvatski jezik\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"HRV\\\",\\\"BIH\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"hr-HR\\\",\\\"displayName\\\":\\\"Croatian - Croatia\\\",\\\"cultureCode\\\":\\\"0x041A\\\"}]},{\\\"iso639_1\\\":\\\"cs\\\",\\\"iso639_2\\\":\\\"ces\\\",\\\"iso639_2en\\\":\\\"cze\\\",\\\"iso639_3\\\":\\\"ces\\\",\\\"name\\\":[\\\"Czech\\\"],\\\"nativeName\\\":[\\\"čeština\\\",\\\"český jazyk\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"CZE\\\",\\\"SVK\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"cs-CZ\\\",\\\"displayName\\\":\\\"Czech - Czech Republic\\\",\\\"cultureCode\\\":\\\"0x0405\\\"}]},{\\\"iso639_1\\\":\\\"da\\\",\\\"iso639_2\\\":\\\"dan\\\",\\\"iso639_2en\\\":\\\"dan\\\",\\\"iso639_3\\\":\\\"dan\\\",\\\"name\\\":[\\\"Danish\\\"],\\\"nativeName\\\":[\\\"dansk\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"DNK\\\",\\\"FRO\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"da-DK\\\",\\\"displayName\\\":\\\"Danish - Denmark\\\",\\\"cultureCode\\\":\\\"0x0406\\\"}]},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"\\\",\\\"iso639_2en\\\":\\\"\\\",\\\"iso639_3\\\":\\\"prs\\\",\\\"name\\\":[\\\"Dari\\\"],\\\"nativeName\\\":[\\\"فارسی دری\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"AFG\\\"]},{\\\"iso639_1\\\":\\\"dv\\\",\\\"iso639_2\\\":\\\"div\\\",\\\"iso639_2en\\\":\\\"div\\\",\\\"iso639_3\\\":\\\"div\\\",\\\"name\\\":[\\\"Divehi\\\",\\\"Dhivehi\\\",\\\"Maldivian\\\"],\\\"nativeName\\\":[\\\"ދިވެހި\\\"],\\\"direction\\\":\\\"RTL\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"MDV\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"div-MV\\\",\\\"displayName\\\":\\\"Dhivehi - Maldives\\\",\\\"cultureCode\\\":\\\"0x0465\\\"}]},{\\\"iso639_1\\\":\\\"nl\\\",\\\"iso639_2\\\":\\\"nld\\\",\\\"iso639_2en\\\":\\\"dut\\\",\\\"iso639_3\\\":\\\"nld\\\",\\\"name\\\":[\\\"Dutch\\\"],\\\"nativeName\\\":[\\\"Nederlands\\\",\\\"Vlaams\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"BEL\\\",\\\"NLD\\\",\\\"ABW\\\",\\\"CUW\\\",\\\"SXM\\\",\\\"SUR\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"nl-BE\\\",\\\"displayName\\\":\\\"Dutch - Belgium\\\",\\\"cultureCode\\\":\\\"0x0813\\\"},{\\\"langCultureName\\\":\\\"nl-NL\\\",\\\"displayName\\\":\\\"Dutch - The Netherlands\\\",\\\"cultureCode\\\":\\\"0x0413\\\"}]},{\\\"iso639_1\\\":\\\"dz\\\",\\\"iso639_2\\\":\\\"dzo\\\",\\\"iso639_2en\\\":\\\"dzo\\\",\\\"iso639_3\\\":\\\"dzo\\\",\\\"name\\\":[\\\"Dzongkha\\\"],\\\"nativeName\\\":[\\\"རྫོང་ཁ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Sino-Tibetan\\\",\\\"countries\\\":[\\\"BTN\\\"]},{\\\"iso639_1\\\":\\\"en\\\",\\\"iso639_2\\\":\\\"eng\\\",\\\"iso639_2en\\\":\\\"eng\\\",\\\"iso639_3\\\":\\\"eng\\\",\\\"name\\\":[\\\"English\\\"],\\\"nativeName\\\":[\\\"English\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"ATG\\\",\\\"AUS\\\",\\\"BHS\\\",\\\"BRB\\\",\\\"BLZ\\\",\\\"BWA\\\",\\\"CMR\\\",\\\"CAN\\\",\\\"CUW\\\",\\\"DMA\\\",\\\"ERI\\\",\\\"FJI\\\",\\\"GMB\\\",\\\"GHA\\\",\\\"GRD\\\",\\\"GUY\\\",\\\"HKG\\\",\\\"IND\\\",\\\"IRL\\\",\\\"JAM\\\",\\\"KEN\\\",\\\"KIR\\\",\\\"LSO\\\",\\\"LBR\\\",\\\"MWI\\\",\\\"MYS\\\",\\\"MLT\\\",\\\"MHL\\\",\\\"MUS\\\",\\\"FSM\\\",\\\"NAM\\\",\\\"NRU\\\",\\\"NZL\\\",\\\"NGA\\\",\\\"PAK\\\",\\\"PLW\\\",\\\"PNG\\\",\\\"PHL\\\",\\\"RWA\\\",\\\"KNA\\\",\\\"LCA\\\",\\\"VCT\\\",\\\"WSM\\\",\\\"SYC\\\",\\\"SLE\\\",\\\"SGP\\\",\\\"SXM\\\",\\\"SLB\\\",\\\"ZAF\\\",\\\"SSD\\\",\\\"LKA\\\",\\\"SDN\\\",\\\"SWZ\\\",\\\"TZA\\\",\\\"TON\\\",\\\"TTO\\\",\\\"TUV\\\",\\\"UGA\\\",\\\"GBR\\\",\\\"USA\\\",\\\"VUT\\\",\\\"ZMB\\\",\\\"ZWE\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"en-AU\\\",\\\"displayName\\\":\\\"English - Australia\\\",\\\"cultureCode\\\":\\\"0x0C09\\\"},{\\\"langCultureName\\\":\\\"en-BZ\\\",\\\"displayName\\\":\\\"English - Belize\\\",\\\"cultureCode\\\":\\\"0x2809\\\"},{\\\"langCultureName\\\":\\\"en-CA\\\",\\\"displayName\\\":\\\"English - Canada\\\",\\\"cultureCode\\\":\\\"0x1009\\\"},{\\\"langCultureName\\\":\\\"en-CB\\\",\\\"displayName\\\":\\\"English - Caribbean\\\",\\\"cultureCode\\\":\\\"0x2409\\\"},{\\\"langCultureName\\\":\\\"en-IE\\\",\\\"displayName\\\":\\\"English - Ireland\\\",\\\"cultureCode\\\":\\\"0x1809\\\"},{\\\"langCultureName\\\":\\\"en-JM\\\",\\\"displayName\\\":\\\"English - Jamaica\\\",\\\"cultureCode\\\":\\\"0x2009\\\"},{\\\"langCultureName\\\":\\\"en-NZ\\\",\\\"displayName\\\":\\\"English - New Zealand\\\",\\\"cultureCode\\\":\\\"0x1409\\\"},{\\\"langCultureName\\\":\\\"en-PH\\\",\\\"displayName\\\":\\\"English - Philippines\\\",\\\"cultureCode\\\":\\\"0x3409\\\"},{\\\"langCultureName\\\":\\\"en-ZA\\\",\\\"displayName\\\":\\\"English - South Africa\\\",\\\"cultureCode\\\":\\\"0x1C09\\\"},{\\\"langCultureName\\\":\\\"en-TT\\\",\\\"displayName\\\":\\\"English - Trinidad and Tobago\\\",\\\"cultureCode\\\":\\\"0x2C09\\\"},{\\\"langCultureName\\\":\\\"en-GB\\\",\\\"displayName\\\":\\\"English - United Kingdom\\\",\\\"cultureCode\\\":\\\"0x0809\\\"},{\\\"langCultureName\\\":\\\"en-US\\\",\\\"displayName\\\":\\\"English - United States\\\",\\\"cultureCode\\\":\\\"0x0409\\\"},{\\\"langCultureName\\\":\\\"en-ZW\\\",\\\"displayName\\\":\\\"English - Zimbabwe\\\",\\\"cultureCode\\\":\\\"0x3009\\\"}]},{\\\"iso639_1\\\":\\\"eo\\\",\\\"iso639_2\\\":\\\"epo\\\",\\\"iso639_2en\\\":\\\"epo\\\",\\\"iso639_3\\\":\\\"epo\\\",\\\"name\\\":[\\\"Esperanto\\\"],\\\"nativeName\\\":[\\\"Esperanto\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Constructed\\\"},{\\\"iso639_1\\\":\\\"et\\\",\\\"iso639_2\\\":\\\"est\\\",\\\"iso639_2en\\\":\\\"est\\\",\\\"iso639_3\\\":\\\"est\\\",\\\"name\\\":[\\\"Estonian\\\"],\\\"nativeName\\\":[\\\"eesti\\\",\\\"eesti keel\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Uralic\\\",\\\"countries\\\":[\\\"EST\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"et-EE\\\",\\\"displayName\\\":\\\"Estonian - Estonia\\\",\\\"cultureCode\\\":\\\"0x0425\\\"}]},{\\\"iso639_1\\\":\\\"ee\\\",\\\"iso639_2\\\":\\\"ewe\\\",\\\"iso639_2en\\\":\\\"ewe\\\",\\\"iso639_3\\\":\\\"ewe\\\",\\\"name\\\":[\\\"Ewe\\\"],\\\"nativeName\\\":[\\\"Eʋegbe\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"GHA\\\",\\\"TGO\\\"]},{\\\"iso639_1\\\":\\\"fo\\\",\\\"iso639_2\\\":\\\"fao\\\",\\\"iso639_2en\\\":\\\"fao\\\",\\\"iso639_3\\\":\\\"fao\\\",\\\"name\\\":[\\\"Faroese\\\"],\\\"nativeName\\\":[\\\"føroyskt\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"fo-FO\\\",\\\"displayName\\\":\\\"Faroese - Faroe Islands\\\",\\\"cultureCode\\\":\\\"0x0438\\\"}]},{\\\"iso639_1\\\":\\\"fj\\\",\\\"iso639_2\\\":\\\"fij\\\",\\\"iso639_2en\\\":\\\"fij\\\",\\\"iso639_3\\\":\\\"fij\\\",\\\"name\\\":[\\\"Fijian\\\"],\\\"nativeName\\\":[\\\"vosa Vakaviti\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austronesian\\\",\\\"countries\\\":[\\\"FJI\\\"]},{\\\"iso639_1\\\":\\\"fi\\\",\\\"iso639_2\\\":\\\"fin\\\",\\\"iso639_2en\\\":\\\"fin\\\",\\\"iso639_3\\\":\\\"fin\\\",\\\"name\\\":[\\\"Finnish\\\"],\\\"nativeName\\\":[\\\"suomi\\\",\\\"suomen kieli\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Uralic\\\",\\\"countries\\\":[\\\"FIN\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"fi-FI\\\",\\\"displayName\\\":\\\"Finnish - Finland\\\",\\\"cultureCode\\\":\\\"0x040B\\\"}]},{\\\"iso639_1\\\":\\\"fr\\\",\\\"iso639_2\\\":\\\"fra\\\",\\\"iso639_2en\\\":\\\"fre\\\",\\\"iso639_3\\\":\\\"fra\\\",\\\"name\\\":[\\\"French\\\"],\\\"nativeName\\\":[\\\"français\\\",\\\"langue française\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"BEL\\\",\\\"BEN\\\",\\\"BFA\\\",\\\"BDI\\\",\\\"CMR\\\",\\\"CAN\\\",\\\"CAF\\\",\\\"TCD\\\",\\\"COM\\\",\\\"CIV\\\",\\\"COD\\\",\\\"COG\\\",\\\"DJI\\\",\\\"GNQ\\\",\\\"FRA\\\",\\\"GUF\\\",\\\"PYF\\\",\\\"GLP\\\",\\\"MTQ\\\",\\\"MYT\\\",\\\"NCL\\\",\\\"REU\\\",\\\"BLM\\\",\\\"SPM\\\",\\\"WLF\\\",\\\"GAB\\\",\\\"GIN\\\",\\\"HTI\\\",\\\"ITA\\\",\\\"JEY\\\",\\\"LUX\\\",\\\"MDG\\\",\\\"MLI\\\",\\\"MUS\\\",\\\"MCO\\\",\\\"NER\\\",\\\"RWA\\\",\\\"SEN\\\",\\\"SYC\\\",\\\"CHE\\\",\\\"TGO\\\",\\\"VUT\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"fr-BE\\\",\\\"displayName\\\":\\\"French - Belgium\\\",\\\"cultureCode\\\":\\\"0x080C\\\"},{\\\"langCultureName\\\":\\\"fr-CA\\\",\\\"displayName\\\":\\\"French - Canada\\\",\\\"cultureCode\\\":\\\"0x0C0C\\\"},{\\\"langCultureName\\\":\\\"fr-FR\\\",\\\"displayName\\\":\\\"French - France\\\",\\\"cultureCode\\\":\\\"0x040C\\\"},{\\\"langCultureName\\\":\\\"fr-LU\\\",\\\"displayName\\\":\\\"French - Luxembourg\\\",\\\"cultureCode\\\":\\\"0x140C\\\"},{\\\"langCultureName\\\":\\\"fr-MC\\\",\\\"displayName\\\":\\\"French - Monaco\\\",\\\"cultureCode\\\":\\\"0x180C\\\"},{\\\"langCultureName\\\":\\\"fr-CH\\\",\\\"displayName\\\":\\\"French - Switzerland\\\",\\\"cultureCode\\\":\\\"0x100C\\\"}]},{\\\"iso639_1\\\":\\\"ff\\\",\\\"iso639_2\\\":\\\"ful\\\",\\\"iso639_2en\\\":\\\"ful\\\",\\\"iso639_3\\\":\\\"ful\\\",\\\"name\\\":[\\\"Fula\\\",\\\"Fulah\\\",\\\"Pulaar\\\",\\\"Pular\\\"],\\\"nativeName\\\":[\\\"Fulfulde\\\",\\\"Pulaar\\\",\\\"Pular\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"BEN\\\",\\\"BFA\\\",\\\"MLI\\\",\\\"NER\\\",\\\"SEN\\\"]},{\\\"iso639_1\\\":\\\"gl\\\",\\\"iso639_2\\\":\\\"glg\\\",\\\"iso639_2en\\\":\\\"glg\\\",\\\"iso639_3\\\":\\\"glg\\\",\\\"name\\\":[\\\"Galician\\\"],\\\"nativeName\\\":[\\\"galego\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"gl-ES\\\",\\\"displayName\\\":\\\"Galician - Galician\\\",\\\"cultureCode\\\":\\\"0x0456\\\"}]},{\\\"iso639_1\\\":\\\"ka\\\",\\\"iso639_2\\\":\\\"kat\\\",\\\"iso639_2en\\\":\\\"geo\\\",\\\"iso639_3\\\":\\\"kat\\\",\\\"name\\\":[\\\"Georgian\\\"],\\\"nativeName\\\":[\\\"ქართული\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"South Caucasian\\\",\\\"countries\\\":[\\\"GEO\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ka-GE\\\",\\\"displayName\\\":\\\"Georgian - Georgia\\\",\\\"cultureCode\\\":\\\"0x0437\\\"}]},{\\\"iso639_1\\\":\\\"de\\\",\\\"iso639_2\\\":\\\"deu\\\",\\\"iso639_2en\\\":\\\"ger\\\",\\\"iso639_3\\\":\\\"deu\\\",\\\"name\\\":[\\\"German\\\"],\\\"nativeName\\\":[\\\"Deutsch\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"AUT\\\",\\\"BEL\\\",\\\"DEU\\\",\\\"LIE\\\",\\\"LUX\\\",\\\"ITA\\\",\\\"CHE\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"de-AT\\\",\\\"displayName\\\":\\\"German - Austria\\\",\\\"cultureCode\\\":\\\"0x0C07\\\"},{\\\"langCultureName\\\":\\\"de-DE\\\",\\\"displayName\\\":\\\"German - Germany\\\",\\\"cultureCode\\\":\\\"0x0407\\\"},{\\\"langCultureName\\\":\\\"de-LI\\\",\\\"displayName\\\":\\\"German - Liechtenstein\\\",\\\"cultureCode\\\":\\\"0x1407\\\"},{\\\"langCultureName\\\":\\\"de-LU\\\",\\\"displayName\\\":\\\"German - Luxembourg\\\",\\\"cultureCode\\\":\\\"0x1007\\\"},{\\\"langCultureName\\\":\\\"de-CH\\\",\\\"displayName\\\":\\\"German - Switzerland\\\",\\\"cultureCode\\\":\\\"0x0807\\\"}]},{\\\"iso639_1\\\":\\\"el\\\",\\\"iso639_2\\\":\\\"ell\\\",\\\"iso639_2en\\\":\\\"gre\\\",\\\"iso639_3\\\":\\\"ell\\\",\\\"name\\\":[\\\"Greek\\\"],\\\"nativeName\\\":[\\\"ελληνικά\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"GRC\\\",\\\"CYP\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"el-GR\\\",\\\"displayName\\\":\\\"Greek - Greece\\\",\\\"cultureCode\\\":\\\"0x0408\\\"}]},{\\\"iso639_1\\\":\\\"gn\\\",\\\"iso639_2\\\":\\\"grn\\\",\\\"iso639_2en\\\":\\\"grn\\\",\\\"iso639_3\\\":\\\"grn\\\",\\\"name\\\":[\\\"Guaraní\\\"],\\\"nativeName\\\":[\\\"Avañe'ẽ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Tupian\\\",\\\"countries\\\":[\\\"PRY\\\",\\\"BOL\\\"]},{\\\"iso639_1\\\":\\\"gu\\\",\\\"iso639_2\\\":\\\"guj\\\",\\\"iso639_2en\\\":\\\"guj\\\",\\\"iso639_3\\\":\\\"guj\\\",\\\"name\\\":[\\\"Gujarati\\\"],\\\"nativeName\\\":[\\\"ગુજરાતી\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"IND\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"gu-IN\\\",\\\"displayName\\\":\\\"Gujarati - India\\\",\\\"cultureCode\\\":\\\"0x0447\\\"}]},{\\\"iso639_1\\\":\\\"ht\\\",\\\"iso639_2\\\":\\\"hat\\\",\\\"iso639_2en\\\":\\\"hat\\\",\\\"iso639_3\\\":\\\"hat\\\",\\\"name\\\":[\\\"Haitian\\\",\\\"Haitian Creole\\\"],\\\"nativeName\\\":[\\\"Kreyòl ayisyen\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Creole\\\",\\\"countries\\\":[\\\"HTI\\\"]},{\\\"iso639_1\\\":\\\"ha\\\",\\\"iso639_2\\\":\\\"hau\\\",\\\"iso639_2en\\\":\\\"hau\\\",\\\"iso639_3\\\":\\\"hau\\\",\\\"name\\\":[\\\"Hausa\\\"],\\\"nativeName\\\":[\\\"(Hausa) هَوُسَ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Afro-Asiatic\\\",\\\"countries\\\":[\\\"NER\\\",\\\"NGA\\\"]},{\\\"iso639_1\\\":\\\"he\\\",\\\"iso639_2\\\":\\\"heb\\\",\\\"iso639_2en\\\":\\\"heb\\\",\\\"iso639_3\\\":\\\"heb\\\",\\\"name\\\":[\\\"Hebrew\\\"],\\\"nativeName\\\":[\\\"עברית\\\"],\\\"direction\\\":\\\"RTL\\\",\\\"family\\\":\\\"Afro-Asiatic\\\",\\\"countries\\\":[\\\"ISR\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"he-IL\\\",\\\"displayName\\\":\\\"Hebrew - Israel\\\",\\\"cultureCode\\\":\\\"0x040D\\\"}]},{\\\"iso639_1\\\":\\\"hz\\\",\\\"iso639_2\\\":\\\"her\\\",\\\"iso639_2en\\\":\\\"her\\\",\\\"iso639_3\\\":\\\"her\\\",\\\"name\\\":[\\\"Herero\\\"],\\\"nativeName\\\":[\\\"Otjiherero\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\"},{\\\"iso639_1\\\":\\\"hi\\\",\\\"iso639_2\\\":\\\"hin\\\",\\\"iso639_2en\\\":\\\"hin\\\",\\\"iso639_3\\\":\\\"hin\\\",\\\"name\\\":[\\\"Hindi\\\"],\\\"nativeName\\\":[\\\"हिन्दी\\\",\\\"हिंदी\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"IND\\\",\\\"FJI\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"hi-IN\\\",\\\"displayName\\\":\\\"Hindi - India\\\",\\\"cultureCode\\\":\\\"0x0439\\\"}]},{\\\"iso639_1\\\":\\\"ho\\\",\\\"iso639_2\\\":\\\"hmo\\\",\\\"iso639_2en\\\":\\\"hmo\\\",\\\"iso639_3\\\":\\\"hmo\\\",\\\"name\\\":[\\\"Hiri Motu\\\"],\\\"nativeName\\\":[\\\"Hiri Motu\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austronesian\\\",\\\"countries\\\":[\\\"PNG\\\"]},{\\\"iso639_1\\\":\\\"hu\\\",\\\"iso639_2\\\":\\\"hun\\\",\\\"iso639_2en\\\":\\\"hun\\\",\\\"iso639_3\\\":\\\"hun\\\",\\\"name\\\":[\\\"Hungarian\\\"],\\\"nativeName\\\":[\\\"magyar\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Uralic\\\",\\\"countries\\\":[\\\"HUN\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"hu-HU\\\",\\\"displayName\\\":\\\"Hungarian - Hungary\\\",\\\"cultureCode\\\":\\\"0x040E\\\"}]},{\\\"iso639_1\\\":\\\"ia\\\",\\\"iso639_2\\\":\\\"ina\\\",\\\"iso639_2en\\\":\\\"ina\\\",\\\"iso639_3\\\":\\\"ina\\\",\\\"name\\\":[\\\"Interlingua\\\"],\\\"nativeName\\\":[\\\"Interlingua\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Constructed\\\"},{\\\"iso639_1\\\":\\\"id\\\",\\\"iso639_2\\\":\\\"ind\\\",\\\"iso639_2en\\\":\\\"ind\\\",\\\"iso639_3\\\":\\\"ind\\\",\\\"name\\\":[\\\"Indonesian\\\"],\\\"nativeName\\\":[\\\"Bahasa Indonesia\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austronesian\\\",\\\"countries\\\":[\\\"IDN\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"id-ID\\\",\\\"displayName\\\":\\\"Indonesian - Indonesia\\\",\\\"cultureCode\\\":\\\"0x0421\\\"}]},{\\\"iso639_1\\\":\\\"ie\\\",\\\"iso639_2\\\":\\\"ile\\\",\\\"iso639_2en\\\":\\\"ile\\\",\\\"iso639_3\\\":\\\"ile\\\",\\\"name\\\":[\\\"Interlingue\\\"],\\\"nativeName\\\":[\\\"Interlingue\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Constructed\\\"},{\\\"iso639_1\\\":\\\"ga\\\",\\\"iso639_2\\\":\\\"gle\\\",\\\"iso639_2en\\\":\\\"gle\\\",\\\"iso639_3\\\":\\\"gle\\\",\\\"name\\\":[\\\"Irish\\\"],\\\"nativeName\\\":[\\\"Gaeilge\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"IRL\\\"]},{\\\"iso639_1\\\":\\\"ig\\\",\\\"iso639_2\\\":\\\"ibo\\\",\\\"iso639_2en\\\":\\\"ibo\\\",\\\"iso639_3\\\":\\\"ibo\\\",\\\"name\\\":[\\\"Igbo\\\"],\\\"nativeName\\\":[\\\"Asụsụ Igbo\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"NGA\\\"]},{\\\"iso639_1\\\":\\\"ik\\\",\\\"iso639_2\\\":\\\"ipk\\\",\\\"iso639_2en\\\":\\\"ipk\\\",\\\"iso639_3\\\":\\\"ipk\\\",\\\"name\\\":[\\\"Inupiaq\\\"],\\\"nativeName\\\":[\\\"Iñupiaq\\\",\\\"Iñupiatun\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Eskimo–Aleut\\\"},{\\\"iso639_1\\\":\\\"io\\\",\\\"iso639_2\\\":\\\"ido\\\",\\\"iso639_2en\\\":\\\"ido\\\",\\\"iso639_3\\\":\\\"ido\\\",\\\"name\\\":[\\\"Ido\\\"],\\\"nativeName\\\":[\\\"Ido\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Constructed\\\"},{\\\"iso639_1\\\":\\\"is\\\",\\\"iso639_2\\\":\\\"isl\\\",\\\"iso639_2en\\\":\\\"ice\\\",\\\"iso639_3\\\":\\\"isl\\\",\\\"name\\\":[\\\"Icelandic\\\"],\\\"nativeName\\\":[\\\"Íslenska\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"ISL\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"is-IS\\\",\\\"displayName\\\":\\\"Icelandic - Iceland\\\",\\\"cultureCode\\\":\\\"0x040F\\\"}]},{\\\"iso639_1\\\":\\\"it\\\",\\\"iso639_2\\\":\\\"ita\\\",\\\"iso639_2en\\\":\\\"ita\\\",\\\"iso639_3\\\":\\\"ita\\\",\\\"name\\\":[\\\"Italian\\\"],\\\"nativeName\\\":[\\\"italiano\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"ITA\\\",\\\"HRV\\\",\\\"SMR\\\",\\\"SVN\\\",\\\"CHE\\\",\\\"VAT\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"it-IT\\\",\\\"displayName\\\":\\\"Italian - Italy\\\",\\\"cultureCode\\\":\\\"0x0410\\\"},{\\\"langCultureName\\\":\\\"it-CH\\\",\\\"displayName\\\":\\\"Italian - Switzerland\\\",\\\"cultureCode\\\":\\\"0x0810\\\"}]},{\\\"iso639_1\\\":\\\"iu\\\",\\\"iso639_2\\\":\\\"iku\\\",\\\"iso639_2en\\\":\\\"iku\\\",\\\"iso639_3\\\":\\\"iku\\\",\\\"name\\\":[\\\"Inuktitut\\\"],\\\"nativeName\\\":[\\\"ᐃᓄᒃᑎᑐᑦ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Eskimo–Aleut\\\"},{\\\"iso639_1\\\":\\\"ja\\\",\\\"iso639_2\\\":\\\"jpn\\\",\\\"iso639_2en\\\":\\\"jpn\\\",\\\"iso639_3\\\":\\\"jpn\\\",\\\"name\\\":[\\\"Japanese\\\"],\\\"nativeName\\\":[\\\"日本語 (にほんご)\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Japonic\\\",\\\"countries\\\":[\\\"JPN\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ja-JP\\\",\\\"displayName\\\":\\\"Japanese - Japan\\\",\\\"cultureCode\\\":\\\"0x0411\\\"}]},{\\\"iso639_1\\\":\\\"jv\\\",\\\"iso639_2\\\":\\\"jav\\\",\\\"iso639_2en\\\":\\\"jav\\\",\\\"iso639_3\\\":\\\"jav\\\",\\\"name\\\":[\\\"Javanese\\\"],\\\"nativeName\\\":[\\\"basa Jawa\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austronesian\\\"},{\\\"iso639_1\\\":\\\"kl\\\",\\\"iso639_2\\\":\\\"kal\\\",\\\"iso639_2en\\\":\\\"kal\\\",\\\"iso639_3\\\":\\\"kal\\\",\\\"name\\\":[\\\"Kalaallisut\\\",\\\"Greenlandic\\\"],\\\"nativeName\\\":[\\\"kalaallisut\\\",\\\"kalaallit oqaasii\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Eskimo–Aleut\\\"},{\\\"iso639_1\\\":\\\"kn\\\",\\\"iso639_2\\\":\\\"kan\\\",\\\"iso639_2en\\\":\\\"kan\\\",\\\"iso639_3\\\":\\\"kan\\\",\\\"name\\\":[\\\"Kannada\\\"],\\\"nativeName\\\":[\\\"ಕನ್ನಡ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Dravidian\\\",\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"kn-IN\\\",\\\"displayName\\\":\\\"Kannada - India\\\",\\\"cultureCode\\\":\\\"0x044B\\\"}]},{\\\"iso639_1\\\":\\\"kr\\\",\\\"iso639_2\\\":\\\"kau\\\",\\\"iso639_2en\\\":\\\"kau\\\",\\\"iso639_3\\\":\\\"kau\\\",\\\"name\\\":[\\\"Kanuri\\\"],\\\"nativeName\\\":[\\\"Kanuri\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Nilo-Saharan\\\",\\\"countries\\\":[\\\"NER\\\"]},{\\\"iso639_1\\\":\\\"ks\\\",\\\"iso639_2\\\":\\\"kas\\\",\\\"iso639_2en\\\":\\\"kas\\\",\\\"iso639_3\\\":\\\"kas\\\",\\\"name\\\":[\\\"Kashmiri\\\"],\\\"nativeName\\\":[\\\"कश्मीरी\\\",\\\"كشميري‎\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"kk\\\",\\\"iso639_2\\\":\\\"kaz\\\",\\\"iso639_2en\\\":\\\"kaz\\\",\\\"iso639_3\\\":\\\"kaz\\\",\\\"name\\\":[\\\"Kazakh\\\"],\\\"nativeName\\\":[\\\"қазақ тілі\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Turkic\\\",\\\"countries\\\":[\\\"KAZ\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"kk-KZ\\\",\\\"displayName\\\":\\\"Kazakh - Kazakhstan\\\",\\\"cultureCode\\\":\\\"0x043F\\\"}]},{\\\"iso639_1\\\":\\\"km\\\",\\\"iso639_2\\\":\\\"khm\\\",\\\"iso639_2en\\\":\\\"khm\\\",\\\"iso639_3\\\":\\\"khm\\\",\\\"name\\\":[\\\"Khmer\\\"],\\\"nativeName\\\":[\\\"ខ្មែរ\\\",\\\"ខេមរភាសា\\\",\\\"ភាសាខ្មែរ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austroasiatic\\\",\\\"countries\\\":[\\\"KHM\\\"]},{\\\"iso639_1\\\":\\\"ki\\\",\\\"iso639_2\\\":\\\"kik\\\",\\\"iso639_2en\\\":\\\"kik\\\",\\\"iso639_3\\\":\\\"kik\\\",\\\"name\\\":[\\\"Kikuyu\\\",\\\"Gikuyu\\\"],\\\"nativeName\\\":[\\\"Gĩkũyũ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\"},{\\\"iso639_1\\\":\\\"rw\\\",\\\"iso639_2\\\":\\\"kin\\\",\\\"iso639_2en\\\":\\\"kin\\\",\\\"iso639_3\\\":\\\"kin\\\",\\\"name\\\":[\\\"Kinyarwanda\\\"],\\\"nativeName\\\":[\\\"Ikinyarwanda\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"RWA\\\"]},{\\\"iso639_1\\\":\\\"ky\\\",\\\"iso639_2\\\":\\\"kir\\\",\\\"iso639_2en\\\":\\\"kir\\\",\\\"iso639_3\\\":\\\"kir\\\",\\\"name\\\":[\\\"Kyrgyz\\\"],\\\"nativeName\\\":[\\\"Кыргызча\\\",\\\"Кыргыз тили\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Turkic\\\",\\\"countries\\\":[\\\"KGZ\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ky-KZ\\\",\\\"displayName\\\":\\\"Kyrgyz - Kazakhstan\\\",\\\"cultureCode\\\":\\\"0x0440\\\"}]},{\\\"iso639_1\\\":\\\"kv\\\",\\\"iso639_2\\\":\\\"kom\\\",\\\"iso639_2en\\\":\\\"kom\\\",\\\"iso639_3\\\":\\\"kom\\\",\\\"name\\\":[\\\"Komi\\\"],\\\"nativeName\\\":[\\\"коми кыв\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Uralic\\\"},{\\\"iso639_1\\\":\\\"kg\\\",\\\"iso639_2\\\":\\\"kon\\\",\\\"iso639_2en\\\":\\\"kon\\\",\\\"iso639_3\\\":\\\"kon\\\",\\\"name\\\":[\\\"Kongo\\\"],\\\"nativeName\\\":[\\\"Kikongo\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"AGO\\\",\\\"COD\\\",\\\"COG\\\"]},{\\\"iso639_1\\\":\\\"ko\\\",\\\"iso639_2\\\":\\\"kor\\\",\\\"iso639_2en\\\":\\\"kor\\\",\\\"iso639_3\\\":\\\"kor\\\",\\\"name\\\":[\\\"Korean\\\"],\\\"nativeName\\\":[\\\"한국어\\\",\\\"조선어\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Koreanic\\\",\\\"countries\\\":[\\\"PRK\\\",\\\"KOR\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ko-KR\\\",\\\"displayName\\\":\\\"Korean - Korea\\\",\\\"cultureCode\\\":\\\"0x0412\\\"}]},{\\\"iso639_1\\\":\\\"ku\\\",\\\"iso639_2\\\":\\\"kur\\\",\\\"iso639_2en\\\":\\\"kur\\\",\\\"iso639_3\\\":\\\"kur\\\",\\\"name\\\":[\\\"Kurdish\\\"],\\\"nativeName\\\":[\\\"Kurdî\\\",\\\"كوردی‎\\\"],\\\"direction\\\":\\\"RTL\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"IRQ\\\"]},{\\\"iso639_1\\\":\\\"kj\\\",\\\"iso639_2\\\":\\\"kua\\\",\\\"iso639_2en\\\":\\\"kua\\\",\\\"iso639_3\\\":\\\"kua\\\",\\\"name\\\":[\\\"Kwanyama\\\",\\\"Kuanyama\\\"],\\\"nativeName\\\":[\\\"Kuanyama\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"AGO\\\"]},{\\\"iso639_1\\\":\\\"la\\\",\\\"iso639_2\\\":\\\"lat\\\",\\\"iso639_2en\\\":\\\"lat\\\",\\\"iso639_3\\\":\\\"lat\\\",\\\"name\\\":[\\\"Latin\\\"],\\\"nativeName\\\":[\\\"latine\\\",\\\"lingua latina\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"VAT\\\"]},{\\\"iso639_1\\\":\\\"lb\\\",\\\"iso639_2\\\":\\\"ltz\\\",\\\"iso639_2en\\\":\\\"ltz\\\",\\\"iso639_3\\\":\\\"ltz\\\",\\\"name\\\":[\\\"Luxembourgish\\\",\\\"Letzeburgesch\\\"],\\\"nativeName\\\":[\\\"Lëtzebuergesch\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"LUX\\\"]},{\\\"iso639_1\\\":\\\"lg\\\",\\\"iso639_2\\\":\\\"lug\\\",\\\"iso639_2en\\\":\\\"lug\\\",\\\"iso639_3\\\":\\\"lug\\\",\\\"name\\\":[\\\"Ganda\\\"],\\\"nativeName\\\":[\\\"Luganda\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\"},{\\\"iso639_1\\\":\\\"li\\\",\\\"iso639_2\\\":\\\"lim\\\",\\\"iso639_2en\\\":\\\"lim\\\",\\\"iso639_3\\\":\\\"lim\\\",\\\"name\\\":[\\\"Limburgish\\\",\\\"Limburgan\\\",\\\"Limburger\\\"],\\\"nativeName\\\":[\\\"Limburgs\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"ln\\\",\\\"iso639_2\\\":\\\"lin\\\",\\\"iso639_2en\\\":\\\"lin\\\",\\\"iso639_3\\\":\\\"lin\\\",\\\"name\\\":[\\\"Lingala\\\"],\\\"nativeName\\\":[\\\"Lingála\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"COD\\\",\\\"COG\\\"]},{\\\"iso639_1\\\":\\\"lo\\\",\\\"iso639_2\\\":\\\"lao\\\",\\\"iso639_2en\\\":\\\"lao\\\",\\\"iso639_3\\\":\\\"lao\\\",\\\"name\\\":[\\\"Lao\\\"],\\\"nativeName\\\":[\\\"ພາສາລາວ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Tai–Kadai\\\",\\\"countries\\\":[\\\"LAO\\\"]},{\\\"iso639_1\\\":\\\"lt\\\",\\\"iso639_2\\\":\\\"lit\\\",\\\"iso639_2en\\\":\\\"lit\\\",\\\"iso639_3\\\":\\\"lit\\\",\\\"name\\\":[\\\"Lithuanian\\\"],\\\"nativeName\\\":[\\\"lietuvių kalba\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"LTU\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"lt-LT\\\",\\\"displayName\\\":\\\"Lithuanian - Lithuania\\\",\\\"cultureCode\\\":\\\"0x0427\\\"}]},{\\\"iso639_1\\\":\\\"lu\\\",\\\"iso639_2\\\":\\\"lub\\\",\\\"iso639_2en\\\":\\\"lub\\\",\\\"iso639_3\\\":\\\"lub\\\",\\\"name\\\":[\\\"Luba-Katanga\\\"],\\\"nativeName\\\":[\\\"Tshiluba\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"COD\\\"]},{\\\"iso639_1\\\":\\\"lv\\\",\\\"iso639_2\\\":\\\"lav\\\",\\\"iso639_2en\\\":\\\"lav\\\",\\\"iso639_3\\\":\\\"lav\\\",\\\"name\\\":[\\\"Latvian\\\"],\\\"nativeName\\\":[\\\"latviešu valoda\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"LVA\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"lv-LV\\\",\\\"displayName\\\":\\\"Latvian - Latvia\\\",\\\"cultureCode\\\":\\\"0x0426\\\"}]},{\\\"iso639_1\\\":\\\"gv\\\",\\\"iso639_2\\\":\\\"glv\\\",\\\"iso639_2en\\\":\\\"glv\\\",\\\"iso639_3\\\":\\\"glv\\\",\\\"name\\\":[\\\"Manx\\\"],\\\"nativeName\\\":[\\\"Gaelg\\\",\\\"Gailck\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"mk\\\",\\\"iso639_2\\\":\\\"mkd\\\",\\\"iso639_2en\\\":\\\"mac\\\",\\\"iso639_3\\\":\\\"mkd\\\",\\\"name\\\":[\\\"Macedonian\\\"],\\\"nativeName\\\":[\\\"македонски јазик\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"MKD\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"mk-MK\\\",\\\"displayName\\\":\\\"Macedonian (FYROM)\\\",\\\"cultureCode\\\":\\\"0x042F\\\"}]},{\\\"iso639_1\\\":\\\"mg\\\",\\\"iso639_2\\\":\\\"mlg\\\",\\\"iso639_2en\\\":\\\"mlg\\\",\\\"iso639_3\\\":\\\"mlg\\\",\\\"name\\\":[\\\"Malagasy\\\"],\\\"nativeName\\\":[\\\"fiteny malagasy\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austronesian\\\",\\\"countries\\\":[\\\"MDG\\\"]},{\\\"iso639_1\\\":\\\"ms\\\",\\\"iso639_2\\\":\\\"msa\\\",\\\"iso639_2en\\\":\\\"may\\\",\\\"iso639_3\\\":\\\"msa\\\",\\\"name\\\":[\\\"Malay\\\"],\\\"nativeName\\\":[\\\"bahasa Melayu\\\",\\\"بهاس ملايو‎\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austronesian\\\",\\\"countries\\\":[\\\"MYS\\\",\\\"BRN\\\",\\\"SGP\\\",\\\"IDN\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ms-BN\\\",\\\"displayName\\\":\\\"Malay - Brunei\\\",\\\"cultureCode\\\":\\\"0x083E\\\"},{\\\"langCultureName\\\":\\\"ms-MY\\\",\\\"displayName\\\":\\\"Malay - Malaysia\\\",\\\"cultureCode\\\":\\\"0x043E\\\"}]},{\\\"iso639_1\\\":\\\"ml\\\",\\\"iso639_2\\\":\\\"mal\\\",\\\"iso639_2en\\\":\\\"mal\\\",\\\"iso639_3\\\":\\\"mal\\\",\\\"name\\\":[\\\"Malayalam\\\"],\\\"nativeName\\\":[\\\"മലയാളം\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Dravidian\\\"},{\\\"iso639_1\\\":\\\"mt\\\",\\\"iso639_2\\\":\\\"mlt\\\",\\\"iso639_2en\\\":\\\"mlt\\\",\\\"iso639_3\\\":\\\"mlt\\\",\\\"name\\\":[\\\"Maltese\\\"],\\\"nativeName\\\":[\\\"Malti\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Afro-Asiatic\\\",\\\"countries\\\":[\\\"MLT\\\"]},{\\\"iso639_1\\\":\\\"mi\\\",\\\"iso639_2\\\":\\\"mri\\\",\\\"iso639_2en\\\":\\\"mao\\\",\\\"iso639_3\\\":\\\"mri\\\",\\\"name\\\":[\\\"Māori\\\"],\\\"nativeName\\\":[\\\"te reo Māori\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austronesian\\\",\\\"countries\\\":[\\\"NZL\\\"]},{\\\"iso639_1\\\":\\\"mr\\\",\\\"iso639_2\\\":\\\"mar\\\",\\\"iso639_2en\\\":\\\"mar\\\",\\\"iso639_3\\\":\\\"mar\\\",\\\"name\\\":[\\\"Marathi (Marāṭhī)\\\"],\\\"nativeName\\\":[\\\"मराठी\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"mr-IN\\\",\\\"displayName\\\":\\\"Marathi - India\\\",\\\"cultureCode\\\":\\\"0x044E\\\"}]},{\\\"iso639_1\\\":\\\"mh\\\",\\\"iso639_2\\\":\\\"mah\\\",\\\"iso639_2en\\\":\\\"mah\\\",\\\"iso639_3\\\":\\\"mah\\\",\\\"name\\\":[\\\"Marshallese\\\"],\\\"nativeName\\\":[\\\"Kajin M̧ajeļ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austronesian\\\",\\\"countries\\\":[\\\"MHL\\\"]},{\\\"iso639_1\\\":\\\"mn\\\",\\\"iso639_2\\\":\\\"mon\\\",\\\"iso639_2en\\\":\\\"mon\\\",\\\"iso639_3\\\":\\\"mon\\\",\\\"name\\\":[\\\"Mongolian\\\"],\\\"nativeName\\\":[\\\"монгол\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Mongolic\\\",\\\"countries\\\":[\\\"MNG\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"mn-MN\\\",\\\"displayName\\\":\\\"Mongolian - Mongolia\\\",\\\"cultureCode\\\":\\\"0x0450\\\"}]},{\\\"iso639_1\\\":\\\"na\\\",\\\"iso639_2\\\":\\\"nau\\\",\\\"iso639_2en\\\":\\\"nau\\\",\\\"iso639_3\\\":\\\"nau\\\",\\\"name\\\":[\\\"Nauru\\\"],\\\"nativeName\\\":[\\\"Ekakairũ Naoero\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austronesian\\\"},{\\\"iso639_1\\\":\\\"nv\\\",\\\"iso639_2\\\":\\\"nav\\\",\\\"iso639_2en\\\":\\\"nav\\\",\\\"iso639_3\\\":\\\"nav\\\",\\\"name\\\":[\\\"Navajo\\\",\\\"Navaho\\\"],\\\"nativeName\\\":[\\\"Diné bizaad\\\",\\\"Dinékʼehǰí\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Dené–Yeniseian\\\"},{\\\"iso639_1\\\":\\\"nb\\\",\\\"iso639_2\\\":\\\"nob\\\",\\\"iso639_2en\\\":\\\"nob\\\",\\\"iso639_3\\\":\\\"nob\\\",\\\"name\\\":[\\\"Norwegian Bokmål\\\"],\\\"nativeName\\\":[\\\"Norsk bokmål\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"NOR\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"nb-NO\\\",\\\"displayName\\\":\\\"Norwegian (Bokmål) - Norway\\\",\\\"cultureCode\\\":\\\"0x0414\\\"}]},{\\\"iso639_1\\\":\\\"nd\\\",\\\"iso639_2\\\":\\\"nde\\\",\\\"iso639_2en\\\":\\\"nde\\\",\\\"iso639_3\\\":\\\"nde\\\",\\\"name\\\":[\\\"Northern Ndebele\\\"],\\\"nativeName\\\":[\\\"isiNdebele\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"ZAF\\\",\\\"ZWE\\\"]},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"nso\\\",\\\"iso639_2en\\\":\\\"nso\\\",\\\"iso639_3\\\":\\\"nso\\\",\\\"name\\\":[\\\"Northern Sotho\\\"],\\\"nativeName\\\":[\\\"Sesotho sa Leboa\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger-Congo\\\",\\\"countries\\\":[\\\"ZAF\\\"]},{\\\"iso639_1\\\":\\\"ne\\\",\\\"iso639_2\\\":\\\"nep\\\",\\\"iso639_2en\\\":\\\"nep\\\",\\\"iso639_3\\\":\\\"nep\\\",\\\"name\\\":[\\\"Nepali\\\"],\\\"nativeName\\\":[\\\"नेपाली\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"NPL\\\"]},{\\\"iso639_1\\\":\\\"ng\\\",\\\"iso639_2\\\":\\\"ndo\\\",\\\"iso639_2en\\\":\\\"ndo\\\",\\\"iso639_3\\\":\\\"ndo\\\",\\\"name\\\":[\\\"Ndonga\\\"],\\\"nativeName\\\":[\\\"Owambo\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\"},{\\\"iso639_1\\\":\\\"nn\\\",\\\"iso639_2\\\":\\\"nno\\\",\\\"iso639_2en\\\":\\\"nno\\\",\\\"iso639_3\\\":\\\"nno\\\",\\\"name\\\":[\\\"Norwegian Nynorsk\\\"],\\\"nativeName\\\":[\\\"Norsk nynorsk\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"NOR\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"nn-NO\\\",\\\"displayName\\\":\\\"Norwegian (Nynorsk) - Norway\\\",\\\"cultureCode\\\":\\\"0x0814\\\"}]},{\\\"iso639_1\\\":\\\"no\\\",\\\"iso639_2\\\":\\\"nor\\\",\\\"iso639_2en\\\":\\\"nor\\\",\\\"iso639_3\\\":\\\"nor\\\",\\\"name\\\":[\\\"Norwegian\\\"],\\\"nativeName\\\":[\\\"Norsk\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"NOR\\\"]},{\\\"iso639_1\\\":\\\"ii\\\",\\\"iso639_2\\\":\\\"iii\\\",\\\"iso639_2en\\\":\\\"iii\\\",\\\"iso639_3\\\":\\\"iii\\\",\\\"name\\\":[\\\"Nuosu\\\"],\\\"nativeName\\\":[\\\"Nuosuhxop\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Sino-Tibetan\\\"},{\\\"iso639_1\\\":\\\"nr\\\",\\\"iso639_2\\\":\\\"nbl\\\",\\\"iso639_2en\\\":\\\"nbl\\\",\\\"iso639_3\\\":\\\"nbl\\\",\\\"name\\\":[\\\"Southern Ndebele\\\"],\\\"nativeName\\\":[\\\"isiNdebele\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"ZAF\\\"]},{\\\"iso639_1\\\":\\\"oc\\\",\\\"iso639_2\\\":\\\"oci\\\",\\\"iso639_2en\\\":\\\"oci\\\",\\\"iso639_3\\\":\\\"oci\\\",\\\"name\\\":[\\\"Occitan\\\"],\\\"nativeName\\\":[\\\"occitan\\\",\\\"lenga d'òc\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"oj\\\",\\\"iso639_2\\\":\\\"oji\\\",\\\"iso639_2en\\\":\\\"oji\\\",\\\"iso639_3\\\":\\\"oji\\\",\\\"name\\\":[\\\"Ojibwe\\\",\\\"Ojibwa\\\"],\\\"nativeName\\\":[\\\"ᐊᓂᔑᓈᐯᒧᐎᓐ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Algonquian\\\"},{\\\"iso639_1\\\":\\\"cu\\\",\\\"iso639_2\\\":\\\"chu\\\",\\\"iso639_2en\\\":\\\"chu\\\",\\\"iso639_3\\\":\\\"chu\\\",\\\"name\\\":[\\\"Old Church Slavonic\\\",\\\"Church Slavonic\\\",\\\"Old Bulgarian\\\"],\\\"nativeName\\\":[\\\"ѩзыкъ словѣньскъ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"om\\\",\\\"iso639_2\\\":\\\"orm\\\",\\\"iso639_2en\\\":\\\"orm\\\",\\\"iso639_3\\\":\\\"orm\\\",\\\"name\\\":[\\\"Oromo\\\"],\\\"nativeName\\\":[\\\"Afaan Oromoo\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Afro-Asiatic\\\"},{\\\"iso639_1\\\":\\\"or\\\",\\\"iso639_2\\\":\\\"ori\\\",\\\"iso639_2en\\\":\\\"ori\\\",\\\"iso639_3\\\":\\\"ori\\\",\\\"name\\\":[\\\"Oriya\\\"],\\\"nativeName\\\":[\\\"ଓଡ଼ିଆ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"os\\\",\\\"iso639_2\\\":\\\"oss\\\",\\\"iso639_2en\\\":\\\"oss\\\",\\\"iso639_3\\\":\\\"oss\\\",\\\"name\\\":[\\\"Ossetian\\\",\\\"Ossetic\\\"],\\\"nativeName\\\":[\\\"ирон æвзаг\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[]},{\\\"iso639_1\\\":\\\"pa\\\",\\\"iso639_2\\\":\\\"pan\\\",\\\"iso639_2en\\\":\\\"pan\\\",\\\"iso639_3\\\":\\\"pan\\\",\\\"name\\\":[\\\"Panjabi\\\",\\\"Punjabi\\\"],\\\"nativeName\\\":[\\\"ਪੰਜਾਬੀ\\\",\\\"پنجابی‎\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"IND\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"pa-IN\\\",\\\"displayName\\\":\\\"Punjabi - India\\\",\\\"cultureCode\\\":\\\"0x0446\\\"}]},{\\\"iso639_1\\\":\\\"pi\\\",\\\"iso639_2\\\":\\\"pli\\\",\\\"iso639_2en\\\":\\\"pli\\\",\\\"iso639_3\\\":\\\"pli\\\",\\\"name\\\":[\\\"Pāli\\\"],\\\"nativeName\\\":[\\\"पाऴि\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"fa\\\",\\\"iso639_2\\\":\\\"fas\\\",\\\"iso639_2en\\\":\\\"per\\\",\\\"iso639_3\\\":\\\"fas\\\",\\\"name\\\":[\\\"Persian\\\",\\\"Farsi\\\"],\\\"nativeName\\\":[\\\"فارسی\\\"],\\\"direction\\\":\\\"RTL\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"IRN\\\",\\\"AFG\\\",\\\"TJK\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"fa-IR\\\",\\\"displayName\\\":\\\"Farsi - Iran\\\",\\\"cultureCode\\\":\\\"0x0429\\\"}]},{\\\"iso639_1\\\":\\\"pl\\\",\\\"iso639_2\\\":\\\"pol\\\",\\\"iso639_2en\\\":\\\"pol\\\",\\\"iso639_3\\\":\\\"pol\\\",\\\"name\\\":[\\\"Polish\\\"],\\\"nativeName\\\":[\\\"język polski\\\",\\\"polszczyzna\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"POL\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"pl-PL\\\",\\\"displayName\\\":\\\"Polish - Poland\\\",\\\"cultureCode\\\":\\\"0x0415\\\"}]},{\\\"iso639_1\\\":\\\"ps\\\",\\\"iso639_2\\\":\\\"pus\\\",\\\"iso639_2en\\\":\\\"pus\\\",\\\"iso639_3\\\":\\\"pus\\\",\\\"name\\\":[\\\"Pashto\\\",\\\"Pushto\\\"],\\\"nativeName\\\":[\\\"پښتو\\\"],\\\"direction\\\":\\\"RTL\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"AFG\\\"]},{\\\"iso639_1\\\":\\\"pt\\\",\\\"iso639_2\\\":\\\"por\\\",\\\"iso639_2en\\\":\\\"por\\\",\\\"iso639_3\\\":\\\"por\\\",\\\"name\\\":[\\\"Portuguese\\\"],\\\"nativeName\\\":[\\\"português\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"AGO\\\",\\\"BRA\\\",\\\"CPV\\\",\\\"TLS\\\",\\\"GNQ\\\",\\\"GNB\\\",\\\"MAC\\\",\\\"MOZ\\\",\\\"PRT\\\",\\\"STP\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"pt-BR\\\",\\\"displayName\\\":\\\"Portuguese - Brazil\\\",\\\"cultureCode\\\":\\\"0x0416\\\"},{\\\"langCultureName\\\":\\\"pt-PT\\\",\\\"displayName\\\":\\\"Portuguese - Portugal\\\",\\\"cultureCode\\\":\\\"0x0816\\\"}]},{\\\"iso639_1\\\":\\\"qu\\\",\\\"iso639_2\\\":\\\"que\\\",\\\"iso639_2en\\\":\\\"que\\\",\\\"iso639_3\\\":\\\"que\\\",\\\"name\\\":[\\\"Quechua\\\"],\\\"nativeName\\\":[\\\"Runa Simi\\\",\\\"Kichwa\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Quechuan\\\",\\\"countries\\\":[\\\"BOL\\\",\\\"PER\\\"]},{\\\"iso639_1\\\":\\\"rm\\\",\\\"iso639_2\\\":\\\"roh\\\",\\\"iso639_2en\\\":\\\"roh\\\",\\\"iso639_3\\\":\\\"roh\\\",\\\"name\\\":[\\\"Romansh\\\"],\\\"nativeName\\\":[\\\"rumantsch grischun\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"CHE\\\"]},{\\\"iso639_1\\\":\\\"rn\\\",\\\"iso639_2\\\":\\\"run\\\",\\\"iso639_2en\\\":\\\"run\\\",\\\"iso639_3\\\":\\\"run\\\",\\\"name\\\":[\\\"Kirundi\\\"],\\\"nativeName\\\":[\\\"Ikirundi\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"BDI\\\"]},{\\\"iso639_1\\\":\\\"ro\\\",\\\"iso639_2\\\":\\\"ron\\\",\\\"iso639_2en\\\":\\\"rum\\\",\\\"iso639_3\\\":\\\"ron\\\",\\\"name\\\":[\\\"Romanian\\\"],\\\"nativeName\\\":[\\\"limba română\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"ROU\\\",\\\"MDA\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ro-RO\\\",\\\"displayName\\\":\\\"Romanian - Romania\\\",\\\"cultureCode\\\":\\\"0x0418\\\"}]},{\\\"iso639_1\\\":\\\"ru\\\",\\\"iso639_2\\\":\\\"rus\\\",\\\"iso639_2en\\\":\\\"rus\\\",\\\"iso639_3\\\":\\\"rus\\\",\\\"name\\\":[\\\"Russian\\\"],\\\"nativeName\\\":[\\\"русский язык\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"RUS\\\",\\\"BLR\\\",\\\"KAZ\\\",\\\"KGZ\\\",\\\"TJK\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ru-RU\\\",\\\"displayName\\\":\\\"Russian - Russia\\\",\\\"cultureCode\\\":\\\"0x0419\\\"}]},{\\\"iso639_1\\\":\\\"sa\\\",\\\"iso639_2\\\":\\\"san\\\",\\\"iso639_2en\\\":\\\"san\\\",\\\"iso639_3\\\":\\\"san\\\",\\\"name\\\":[\\\"Sanskrit (Saṁskṛta)\\\"],\\\"nativeName\\\":[\\\"संस्कृतम्\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"sa-IN\\\",\\\"displayName\\\":\\\"Sanskrit - India\\\",\\\"cultureCode\\\":\\\"0x044F\\\"}]},{\\\"iso639_1\\\":\\\"sc\\\",\\\"iso639_2\\\":\\\"srd\\\",\\\"iso639_2en\\\":\\\"srd\\\",\\\"iso639_3\\\":\\\"srd\\\",\\\"name\\\":[\\\"Sardinian\\\"],\\\"nativeName\\\":[\\\"sardu\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"sd\\\",\\\"iso639_2\\\":\\\"snd\\\",\\\"iso639_2en\\\":\\\"snd\\\",\\\"iso639_3\\\":\\\"snd\\\",\\\"name\\\":[\\\"Sindhi\\\"],\\\"nativeName\\\":[\\\"सिन्धी\\\",\\\"سنڌي، سندھی‎\\\"],\\\"direction\\\":\\\"RTL\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"se\\\",\\\"iso639_2\\\":\\\"sme\\\",\\\"iso639_2en\\\":\\\"sme\\\",\\\"iso639_3\\\":\\\"sme\\\",\\\"name\\\":[\\\"Northern Sami\\\"],\\\"nativeName\\\":[\\\"Davvisámegiella\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Uralic\\\"},{\\\"iso639_1\\\":\\\"sm\\\",\\\"iso639_2\\\":\\\"smo\\\",\\\"iso639_2en\\\":\\\"smo\\\",\\\"iso639_3\\\":\\\"smo\\\",\\\"name\\\":[\\\"Samoan\\\"],\\\"nativeName\\\":[\\\"gagana fa'a Samoa\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austronesian\\\"},{\\\"iso639_1\\\":\\\"sg\\\",\\\"iso639_2\\\":\\\"sag\\\",\\\"iso639_2en\\\":\\\"sag\\\",\\\"iso639_3\\\":\\\"sag\\\",\\\"name\\\":[\\\"Sango\\\"],\\\"nativeName\\\":[\\\"yângâ tî sängö\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Creole\\\",\\\"countries\\\":[\\\"CAF\\\"]},{\\\"iso639_1\\\":\\\"sr\\\",\\\"iso639_2\\\":\\\"srp\\\",\\\"iso639_2en\\\":\\\"srp\\\",\\\"iso639_3\\\":\\\"srp\\\",\\\"name\\\":[\\\"Serbian\\\"],\\\"nativeName\\\":[\\\"српски језик\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"SRB\\\",\\\"BIH\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"Cy-sr-SP\\\",\\\"displayName\\\":\\\"Serbian (Cyrillic) - Serbia\\\",\\\"cultureCode\\\":\\\"0x0C1A\\\"},{\\\"langCultureName\\\":\\\"Lt-sr-SP\\\",\\\"displayName\\\":\\\"Serbian (Latin) - Serbia\\\",\\\"cultureCode\\\":\\\"0x081A\\\"}]},{\\\"iso639_1\\\":\\\"gd\\\",\\\"iso639_2\\\":\\\"gla\\\",\\\"iso639_2en\\\":\\\"gla\\\",\\\"iso639_3\\\":\\\"gla\\\",\\\"name\\\":[\\\"Scottish Gaelic\\\",\\\"Gaelic\\\"],\\\"nativeName\\\":[\\\"Gàidhlig\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"sn\\\",\\\"iso639_2\\\":\\\"sna\\\",\\\"iso639_2en\\\":\\\"sna\\\",\\\"iso639_3\\\":\\\"sna\\\",\\\"name\\\":[\\\"Shona\\\"],\\\"nativeName\\\":[\\\"chiShona\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"ZWE\\\"]},{\\\"iso639_1\\\":\\\"si\\\",\\\"iso639_2\\\":\\\"sin\\\",\\\"iso639_2en\\\":\\\"sin\\\",\\\"iso639_3\\\":\\\"sin\\\",\\\"name\\\":[\\\"Sinhala\\\",\\\"Sinhalese\\\"],\\\"nativeName\\\":[\\\"සිංහල\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"LKA\\\"]},{\\\"iso639_1\\\":\\\"sk\\\",\\\"iso639_2\\\":\\\"slk\\\",\\\"iso639_2en\\\":\\\"slo\\\",\\\"iso639_3\\\":\\\"slk\\\",\\\"name\\\":[\\\"Slovak\\\"],\\\"nativeName\\\":[\\\"slovenčina\\\",\\\"slovenský jazyk\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"SVK\\\",\\\"CZE\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"sk-SK\\\",\\\"displayName\\\":\\\"Slovak - Slovakia\\\",\\\"cultureCode\\\":\\\"0x041B\\\"}]},{\\\"iso639_1\\\":\\\"sl\\\",\\\"iso639_2\\\":\\\"slv\\\",\\\"iso639_2en\\\":\\\"slv\\\",\\\"iso639_3\\\":\\\"slv\\\",\\\"name\\\":[\\\"Slovene\\\"],\\\"nativeName\\\":[\\\"slovenski jezik\\\",\\\"slovenščina\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"SVN\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"sl-SI\\\",\\\"displayName\\\":\\\"Slovenian - Slovenia\\\",\\\"cultureCode\\\":\\\"0x0424\\\"}]},{\\\"iso639_1\\\":\\\"so\\\",\\\"iso639_2\\\":\\\"som\\\",\\\"iso639_2en\\\":\\\"som\\\",\\\"iso639_3\\\":\\\"som\\\",\\\"name\\\":[\\\"Somali\\\"],\\\"nativeName\\\":[\\\"Soomaaliga\\\",\\\"af Soomaali\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Afro-Asiatic\\\",\\\"countries\\\":[\\\"DJI\\\",\\\"SOM\\\"]},{\\\"iso639_1\\\":\\\"st\\\",\\\"iso639_2\\\":\\\"sot\\\",\\\"iso639_2en\\\":\\\"sot\\\",\\\"iso639_3\\\":\\\"sot\\\",\\\"name\\\":[\\\"Southern Sotho\\\"],\\\"nativeName\\\":[\\\"Sesotho\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"LSO\\\",\\\"ZAF\\\"]},{\\\"iso639_1\\\":\\\"es\\\",\\\"iso639_2\\\":\\\"spa\\\",\\\"iso639_2en\\\":\\\"spa\\\",\\\"iso639_3\\\":\\\"spa\\\",\\\"name\\\":[\\\"Spanish\\\",\\\"Castilian\\\"],\\\"nativeName\\\":[\\\"español\\\",\\\"castellano\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"ARG\\\",\\\"BOL\\\",\\\"CHL\\\",\\\"COL\\\",\\\"CRI\\\",\\\"CUB\\\",\\\"DOM\\\",\\\"ECU\\\",\\\"SLV\\\",\\\"GNQ\\\",\\\"GTM\\\",\\\"HND\\\",\\\"MEX\\\",\\\"NIC\\\",\\\"PAN\\\",\\\"PRY\\\",\\\"PER\\\",\\\"PRI\\\",\\\"ESP\\\",\\\"URY\\\",\\\"VEN\\\",\\\"ESH\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-AR\\\",\\\"displayName\\\":\\\"Spanish - Argentina\\\",\\\"cultureCode\\\":\\\"0x2C0A\\\"},{\\\"langCultureName\\\":\\\"es-BO\\\",\\\"displayName\\\":\\\"Spanish - Bolivia\\\",\\\"cultureCode\\\":\\\"0x400A\\\"},{\\\"langCultureName\\\":\\\"es-CL\\\",\\\"displayName\\\":\\\"Spanish - Chile\\\",\\\"cultureCode\\\":\\\"0x340A\\\"},{\\\"langCultureName\\\":\\\"es-CO\\\",\\\"displayName\\\":\\\"Spanish - Colombia\\\",\\\"cultureCode\\\":\\\"0x240A\\\"},{\\\"langCultureName\\\":\\\"es-CR\\\",\\\"displayName\\\":\\\"Spanish - Costa Rica\\\",\\\"cultureCode\\\":\\\"0x140A\\\"},{\\\"langCultureName\\\":\\\"es-DO\\\",\\\"displayName\\\":\\\"Spanish - Dominican Republic\\\",\\\"cultureCode\\\":\\\"0x1C0A\\\"},{\\\"langCultureName\\\":\\\"es-EC\\\",\\\"displayName\\\":\\\"Spanish - Ecuador\\\",\\\"cultureCode\\\":\\\"0x300A\\\"},{\\\"langCultureName\\\":\\\"es-SV\\\",\\\"displayName\\\":\\\"Spanish - El Salvador\\\",\\\"cultureCode\\\":\\\"0x440A\\\"},{\\\"langCultureName\\\":\\\"es-GT\\\",\\\"displayName\\\":\\\"Spanish - Guatemala\\\",\\\"cultureCode\\\":\\\"0x100A\\\"},{\\\"langCultureName\\\":\\\"es-HN\\\",\\\"displayName\\\":\\\"Spanish - Honduras\\\",\\\"cultureCode\\\":\\\"0x480A\\\"},{\\\"langCultureName\\\":\\\"es-MX\\\",\\\"displayName\\\":\\\"Spanish - Mexico\\\",\\\"cultureCode\\\":\\\"0x080A\\\"},{\\\"langCultureName\\\":\\\"es-NI\\\",\\\"displayName\\\":\\\"Spanish - Nicaragua\\\",\\\"cultureCode\\\":\\\"0x4C0A\\\"},{\\\"langCultureName\\\":\\\"es-PA\\\",\\\"displayName\\\":\\\"Spanish - Panama\\\",\\\"cultureCode\\\":\\\"0x180A\\\"},{\\\"langCultureName\\\":\\\"es-PY\\\",\\\"displayName\\\":\\\"Spanish - Paraguay\\\",\\\"cultureCode\\\":\\\"0x3C0A\\\"},{\\\"langCultureName\\\":\\\"es-PE\\\",\\\"displayName\\\":\\\"Spanish - Peru\\\",\\\"cultureCode\\\":\\\"0x280A\\\"},{\\\"langCultureName\\\":\\\"es-PR\\\",\\\"displayName\\\":\\\"Spanish - Puerto Rico\\\",\\\"cultureCode\\\":\\\"0x500A\\\"},{\\\"langCultureName\\\":\\\"es-ES\\\",\\\"displayName\\\":\\\"Spanish - Spain\\\",\\\"cultureCode\\\":\\\"0x0C0A\\\"},{\\\"langCultureName\\\":\\\"es-UY\\\",\\\"displayName\\\":\\\"Spanish - Uruguay\\\",\\\"cultureCode\\\":\\\"0x380A\\\"},{\\\"langCultureName\\\":\\\"es-VE\\\",\\\"displayName\\\":\\\"Spanish - Venezuela\\\",\\\"cultureCode\\\":\\\"0x200A\\\"}]},{\\\"iso639_1\\\":\\\"su\\\",\\\"iso639_2\\\":\\\"sun\\\",\\\"iso639_2en\\\":\\\"sun\\\",\\\"iso639_3\\\":\\\"sun\\\",\\\"name\\\":[\\\"Sundanese\\\"],\\\"nativeName\\\":[\\\"Basa Sunda\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austronesian\\\"},{\\\"iso639_1\\\":\\\"sw\\\",\\\"iso639_2\\\":\\\"swa\\\",\\\"iso639_2en\\\":\\\"swa\\\",\\\"iso639_3\\\":\\\"swa\\\",\\\"name\\\":[\\\"Swahili\\\"],\\\"nativeName\\\":[\\\"Kiswahili\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"COD\\\",\\\"KEN\\\",\\\"TZA\\\",\\\"UGA\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"sw-KE\\\",\\\"displayName\\\":\\\"Swahili - Kenya\\\",\\\"cultureCode\\\":\\\"0x0441\\\"}]},{\\\"iso639_1\\\":\\\"ss\\\",\\\"iso639_2\\\":\\\"ssw\\\",\\\"iso639_2en\\\":\\\"ssw\\\",\\\"iso639_3\\\":\\\"ssw\\\",\\\"name\\\":[\\\"Swati\\\"],\\\"nativeName\\\":[\\\"SiSwati\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"SWZ\\\",\\\"ZAF\\\"]},{\\\"iso639_1\\\":\\\"sv\\\",\\\"iso639_2\\\":\\\"swe\\\",\\\"iso639_2en\\\":\\\"swe\\\",\\\"iso639_3\\\":\\\"swe\\\",\\\"name\\\":[\\\"Swedish\\\"],\\\"nativeName\\\":[\\\"Svenska\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"SWE\\\",\\\"FIN\\\",\\\"ALA\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"sv-FI\\\",\\\"displayName\\\":\\\"Swedish - Finland\\\",\\\"cultureCode\\\":\\\"0x081D\\\"},{\\\"langCultureName\\\":\\\"sv-SE\\\",\\\"displayName\\\":\\\"Swedish - Sweden\\\",\\\"cultureCode\\\":\\\"0x041D\\\"}]},{\\\"iso639_1\\\":\\\"ta\\\",\\\"iso639_2\\\":\\\"tam\\\",\\\"iso639_2en\\\":\\\"tam\\\",\\\"iso639_3\\\":\\\"tam\\\",\\\"name\\\":[\\\"Tamil\\\"],\\\"nativeName\\\":[\\\"தமிழ்\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Dravidian\\\",\\\"countries\\\":[\\\"IND\\\",\\\"SGP\\\",\\\"LKA\\\",\\\"MYS\\\",\\\"MUS\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ta-IN\\\",\\\"displayName\\\":\\\"Tamil - India\\\",\\\"cultureCode\\\":\\\"0x0449\\\"}]},{\\\"iso639_1\\\":\\\"te\\\",\\\"iso639_2\\\":\\\"tel\\\",\\\"iso639_2en\\\":\\\"tel\\\",\\\"iso639_3\\\":\\\"tel\\\",\\\"name\\\":[\\\"Telugu\\\"],\\\"nativeName\\\":[\\\"తెలుగు\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Dravidian\\\",\\\"countries\\\":[\\\"IND\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"te-IN\\\",\\\"displayName\\\":\\\"Telugu - India\\\",\\\"cultureCode\\\":\\\"0x044A\\\"}]},{\\\"iso639_1\\\":\\\"tg\\\",\\\"iso639_2\\\":\\\"tgk\\\",\\\"iso639_2en\\\":\\\"tgk\\\",\\\"iso639_3\\\":\\\"tgk\\\",\\\"name\\\":[\\\"Tajik\\\"],\\\"nativeName\\\":[\\\"тоҷикӣ\\\",\\\"toğikī\\\",\\\"تاجیکی‎\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"TJK\\\"]},{\\\"iso639_1\\\":\\\"th\\\",\\\"iso639_2\\\":\\\"tha\\\",\\\"iso639_2en\\\":\\\"tha\\\",\\\"iso639_3\\\":\\\"tha\\\",\\\"name\\\":[\\\"Thai\\\"],\\\"nativeName\\\":[\\\"ไทย\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Tai–Kadai\\\",\\\"countries\\\":[\\\"THA\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"th-TH\\\",\\\"displayName\\\":\\\"Thai - Thailand\\\",\\\"cultureCode\\\":\\\"0x041E\\\"}]},{\\\"iso639_1\\\":\\\"ti\\\",\\\"iso639_2\\\":\\\"tir\\\",\\\"iso639_2en\\\":\\\"tir\\\",\\\"iso639_3\\\":\\\"tir\\\",\\\"name\\\":[\\\"Tigrinya\\\"],\\\"nativeName\\\":[\\\"ትግርኛ\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Afro-Asiatic\\\",\\\"countries\\\":[\\\"ERI\\\"]},{\\\"iso639_1\\\":\\\"bo\\\",\\\"iso639_2\\\":\\\"bod\\\",\\\"iso639_2en\\\":\\\"tib\\\",\\\"iso639_3\\\":\\\"bod\\\",\\\"name\\\":[\\\"Tibetan Standard\\\",\\\"Tibetan\\\",\\\"Central\\\"],\\\"nativeName\\\":[\\\"བོད་ཡིག\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Sino-Tibetan\\\"},{\\\"iso639_1\\\":\\\"tk\\\",\\\"iso639_2\\\":\\\"tuk\\\",\\\"iso639_2en\\\":\\\"tuk\\\",\\\"iso639_3\\\":\\\"tuk\\\",\\\"name\\\":[\\\"Turkmen\\\"],\\\"nativeName\\\":[\\\"Türkmen\\\",\\\"Түркмен\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Turkic\\\",\\\"countries\\\":[\\\"TKM\\\"]},{\\\"iso639_1\\\":\\\"tl\\\",\\\"iso639_2\\\":\\\"tgl\\\",\\\"iso639_2en\\\":\\\"tgl\\\",\\\"iso639_3\\\":\\\"tgl\\\",\\\"name\\\":[\\\"Tagalog\\\"],\\\"nativeName\\\":[\\\"Wikang Tagalog\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austronesian\\\",\\\"countries\\\":[\\\"PHL\\\"]},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"fil\\\",\\\"iso639_2en\\\":\\\"fil\\\",\\\"iso639_3\\\":\\\"fil\\\",\\\"name\\\":[\\\"Filipino\\\"],\\\"nativeName\\\":[\\\"Filipino\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austronesian\\\",\\\"countries\\\":[\\\"PHL\\\"]},{\\\"iso639_1\\\":\\\"tn\\\",\\\"iso639_2\\\":\\\"tsn\\\",\\\"iso639_2en\\\":\\\"tsn\\\",\\\"iso639_3\\\":\\\"tsn\\\",\\\"name\\\":[\\\"Tswana\\\"],\\\"nativeName\\\":[\\\"Setswana\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"BWA\\\",\\\"ZAF\\\"]},{\\\"iso639_1\\\":\\\"to\\\",\\\"iso639_2\\\":\\\"ton\\\",\\\"iso639_2en\\\":\\\"ton\\\",\\\"iso639_3\\\":\\\"ton\\\",\\\"name\\\":[\\\"Tonga (Tonga Islands)\\\"],\\\"nativeName\\\":[\\\"faka Tonga\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austronesian\\\"},{\\\"iso639_1\\\":\\\"tr\\\",\\\"iso639_2\\\":\\\"tur\\\",\\\"iso639_2en\\\":\\\"tur\\\",\\\"iso639_3\\\":\\\"tur\\\",\\\"name\\\":[\\\"Turkish\\\"],\\\"nativeName\\\":[\\\"Türkçe\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Turkic\\\",\\\"countries\\\":[\\\"TUR\\\",\\\"CYP\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"tr-TR\\\",\\\"displayName\\\":\\\"Turkish - Turkey\\\",\\\"cultureCode\\\":\\\"0x041F\\\"}]},{\\\"iso639_1\\\":\\\"ts\\\",\\\"iso639_2\\\":\\\"tso\\\",\\\"iso639_2en\\\":\\\"tso\\\",\\\"iso639_3\\\":\\\"tso\\\",\\\"name\\\":[\\\"Tsonga\\\"],\\\"nativeName\\\":[\\\"Xitsonga\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"ZAF\\\"]},{\\\"iso639_1\\\":\\\"tt\\\",\\\"iso639_2\\\":\\\"tat\\\",\\\"iso639_2en\\\":\\\"tat\\\",\\\"iso639_3\\\":\\\"tat\\\",\\\"name\\\":[\\\"Tatar\\\"],\\\"nativeName\\\":[\\\"татар теле\\\",\\\"tatar tele\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Turkic\\\",\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"tt-RU\\\",\\\"displayName\\\":\\\"Tatar - Russia\\\",\\\"cultureCode\\\":\\\"0x0444\\\"}]},{\\\"iso639_1\\\":\\\"tw\\\",\\\"iso639_2\\\":\\\"twi\\\",\\\"iso639_2en\\\":\\\"twi\\\",\\\"iso639_3\\\":\\\"twi\\\",\\\"name\\\":[\\\"Twi\\\"],\\\"nativeName\\\":[\\\"Twi\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\"},{\\\"iso639_1\\\":\\\"ty\\\",\\\"iso639_2\\\":\\\"tah\\\",\\\"iso639_2en\\\":\\\"tah\\\",\\\"iso639_3\\\":\\\"tah\\\",\\\"name\\\":[\\\"Tahitian\\\"],\\\"nativeName\\\":[\\\"Reo Tahiti\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austronesian\\\"},{\\\"iso639_1\\\":\\\"ug\\\",\\\"iso639_2\\\":\\\"uig\\\",\\\"iso639_2en\\\":\\\"uig\\\",\\\"iso639_3\\\":\\\"uig\\\",\\\"name\\\":[\\\"Uyghur\\\",\\\"Uighur\\\"],\\\"nativeName\\\":[\\\"Uyƣurqə\\\",\\\"ئۇيغۇرچە‎\\\"],\\\"direction\\\":\\\"RTL\\\",\\\"family\\\":\\\"Turkic\\\"},{\\\"iso639_1\\\":\\\"uk\\\",\\\"iso639_2\\\":\\\"ukr\\\",\\\"iso639_2en\\\":\\\"ukr\\\",\\\"iso639_3\\\":\\\"ukr\\\",\\\"name\\\":[\\\"Ukrainian\\\"],\\\"nativeName\\\":[\\\"українська мова\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"UKR\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"uk-UA\\\",\\\"displayName\\\":\\\"Ukrainian - Ukraine\\\",\\\"cultureCode\\\":\\\"0x0422\\\"}]},{\\\"iso639_1\\\":\\\"ur\\\",\\\"iso639_2\\\":\\\"urd\\\",\\\"iso639_2en\\\":\\\"urd\\\",\\\"iso639_3\\\":\\\"urd\\\",\\\"name\\\":[\\\"Urdu\\\"],\\\"nativeName\\\":[\\\"اردو\\\"],\\\"direction\\\":\\\"RTL\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"PAK\\\",\\\"FJI\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ur-PK\\\",\\\"displayName\\\":\\\"Urdu - Pakistan\\\",\\\"cultureCode\\\":\\\"0x0420\\\"}]},{\\\"iso639_1\\\":\\\"uz\\\",\\\"iso639_2\\\":\\\"uzb\\\",\\\"iso639_2en\\\":\\\"uzb\\\",\\\"iso639_3\\\":\\\"uzb\\\",\\\"name\\\":[\\\"Uzbek\\\"],\\\"nativeName\\\":[\\\"O‘zbek\\\",\\\"Ўзбек\\\",\\\"أۇزبېك‎\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Turkic\\\",\\\"countries\\\":[\\\"UZB\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"Cy-uz-UZ\\\",\\\"displayName\\\":\\\"Uzbek (Cyrillic) - Uzbekistan\\\",\\\"cultureCode\\\":\\\"0x0843\\\"},{\\\"langCultureName\\\":\\\"Lt-uz-UZ\\\",\\\"displayName\\\":\\\"Uzbek (Latin) - Uzbekistan\\\",\\\"cultureCode\\\":\\\"0x0443\\\"}]},{\\\"iso639_1\\\":\\\"ve\\\",\\\"iso639_2\\\":\\\"ven\\\",\\\"iso639_2en\\\":\\\"ven\\\",\\\"iso639_3\\\":\\\"ven\\\",\\\"name\\\":[\\\"Venda\\\"],\\\"nativeName\\\":[\\\"Tshivenḓa\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"ZAF\\\"]},{\\\"iso639_1\\\":\\\"vi\\\",\\\"iso639_2\\\":\\\"vie\\\",\\\"iso639_2en\\\":\\\"vie\\\",\\\"iso639_3\\\":\\\"vie\\\",\\\"name\\\":[\\\"Vietnamese\\\"],\\\"nativeName\\\":[\\\"Tiếng Việt\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Austroasiatic\\\",\\\"countries\\\":[\\\"VNM\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"vi-VN\\\",\\\"displayName\\\":\\\"Vietnamese - Vietnam\\\",\\\"cultureCode\\\":\\\"0x042A\\\"}]},{\\\"iso639_1\\\":\\\"vo\\\",\\\"iso639_2\\\":\\\"vol\\\",\\\"iso639_2en\\\":\\\"vol\\\",\\\"iso639_3\\\":\\\"vol\\\",\\\"name\\\":[\\\"Volapük\\\"],\\\"nativeName\\\":[\\\"Volapük\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Constructed\\\"},{\\\"iso639_1\\\":\\\"wa\\\",\\\"iso639_2\\\":\\\"wln\\\",\\\"iso639_2en\\\":\\\"wln\\\",\\\"iso639_3\\\":\\\"wln\\\",\\\"name\\\":[\\\"Walloon\\\"],\\\"nativeName\\\":[\\\"walon\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"cy\\\",\\\"iso639_2\\\":\\\"cym\\\",\\\"iso639_2en\\\":\\\"wel\\\",\\\"iso639_3\\\":\\\"cym\\\",\\\"name\\\":[\\\"Welsh\\\"],\\\"nativeName\\\":[\\\"Cymraeg\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\",\\\"countries\\\":[\\\"GBR\\\"]},{\\\"iso639_1\\\":\\\"wo\\\",\\\"iso639_2\\\":\\\"wol\\\",\\\"iso639_2en\\\":\\\"wol\\\",\\\"iso639_3\\\":\\\"wol\\\",\\\"name\\\":[\\\"Wolof\\\"],\\\"nativeName\\\":[\\\"Wollof\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"SEN\\\"]},{\\\"iso639_1\\\":\\\"fy\\\",\\\"iso639_2\\\":\\\"fry\\\",\\\"iso639_2en\\\":\\\"fry\\\",\\\"iso639_3\\\":\\\"fry\\\",\\\"name\\\":[\\\"Western Frisian\\\"],\\\"nativeName\\\":[\\\"Frysk\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"xh\\\",\\\"iso639_2\\\":\\\"xho\\\",\\\"iso639_2en\\\":\\\"xho\\\",\\\"iso639_3\\\":\\\"xho\\\",\\\"name\\\":[\\\"Xhosa\\\"],\\\"nativeName\\\":[\\\"isiXhosa\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"ZAF\\\"]},{\\\"iso639_1\\\":\\\"yi\\\",\\\"iso639_2\\\":\\\"yid\\\",\\\"iso639_2en\\\":\\\"yid\\\",\\\"iso639_3\\\":\\\"yid\\\",\\\"name\\\":[\\\"Yiddish\\\"],\\\"nativeName\\\":[\\\"ייִדיש\\\"],\\\"direction\\\":\\\"RTL\\\",\\\"family\\\":\\\"Indo-European\\\"},{\\\"iso639_1\\\":\\\"yo\\\",\\\"iso639_2\\\":\\\"yor\\\",\\\"iso639_2en\\\":\\\"yor\\\",\\\"iso639_3\\\":\\\"yor\\\",\\\"name\\\":[\\\"Yoruba\\\"],\\\"nativeName\\\":[\\\"Yorùbá\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"BEN\\\",\\\"NGA\\\"]},{\\\"iso639_1\\\":\\\"za\\\",\\\"iso639_2\\\":\\\"zha\\\",\\\"iso639_2en\\\":\\\"zha\\\",\\\"iso639_3\\\":\\\"zha\\\",\\\"name\\\":[\\\"Zhuang\\\",\\\"Chuang\\\"],\\\"nativeName\\\":[\\\"Saɯ cueŋƅ\\\",\\\"Saw cuengh\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Tai–Kadai\\\"},{\\\"iso639_1\\\":\\\"zu\\\",\\\"iso639_2\\\":\\\"zul\\\",\\\"iso639_2en\\\":\\\"zul\\\",\\\"iso639_3\\\":\\\"zul\\\",\\\"name\\\":[\\\"Zulu\\\"],\\\"nativeName\\\":[\\\"isiZulu\\\"],\\\"direction\\\":\\\"LTR\\\",\\\"family\\\":\\\"Niger–Congo\\\",\\\"countries\\\":[\\\"ZAF\\\"]},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ace\\\",\\\"iso639_2en\\\":\\\"ace\\\",\\\"iso639_3\\\":\\\"ace\\\",\\\"name\\\":[\\\"Achinese\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ach\\\",\\\"iso639_2en\\\":\\\"ach\\\",\\\"iso639_3\\\":\\\"ach\\\",\\\"name\\\":[\\\"Acoli\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ada\\\",\\\"iso639_2en\\\":\\\"ada\\\",\\\"iso639_3\\\":\\\"ada\\\",\\\"name\\\":[\\\"Adangme\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ady\\\",\\\"iso639_2en\\\":\\\"ady\\\",\\\"iso639_3\\\":\\\"ady\\\",\\\"name\\\":[\\\"Adyghe\\\",\\\" Adygei\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"afa\\\",\\\"iso639_2en\\\":\\\"afa\\\",\\\"iso639_3\\\":\\\"afa\\\",\\\"name\\\":[\\\"Afro-Asiatic languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"afh\\\",\\\"iso639_2en\\\":\\\"afh\\\",\\\"iso639_3\\\":\\\"afh\\\",\\\"name\\\":[\\\"Afrihili\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ain\\\",\\\"iso639_2en\\\":\\\"ain\\\",\\\"iso639_3\\\":\\\"ain\\\",\\\"name\\\":[\\\"Ainu\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"akk\\\",\\\"iso639_2en\\\":\\\"akk\\\",\\\"iso639_3\\\":\\\"akk\\\",\\\"name\\\":[\\\"Akkadian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ale\\\",\\\"iso639_2en\\\":\\\"ale\\\",\\\"iso639_3\\\":\\\"ale\\\",\\\"name\\\":[\\\"Aleut\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"alg\\\",\\\"iso639_2en\\\":\\\"alg\\\",\\\"iso639_3\\\":\\\"alg\\\",\\\"name\\\":[\\\"Algonquian languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"alt\\\",\\\"iso639_2en\\\":\\\"alt\\\",\\\"iso639_3\\\":\\\"alt\\\",\\\"name\\\":[\\\"Southern Altai\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ang\\\",\\\"iso639_2en\\\":\\\"ang\\\",\\\"iso639_3\\\":\\\"ang\\\",\\\"name\\\":[\\\"English, Old (ca.450-1100)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"anp\\\",\\\"iso639_2en\\\":\\\"anp\\\",\\\"iso639_3\\\":\\\"anp\\\",\\\"name\\\":[\\\"Angika\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"apa\\\",\\\"iso639_2en\\\":\\\"apa\\\",\\\"iso639_3\\\":\\\"apa\\\",\\\"name\\\":[\\\"Apache languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"arc\\\",\\\"iso639_2en\\\":\\\"arc\\\",\\\"iso639_3\\\":\\\"arc\\\",\\\"name\\\":[\\\"Official Aramaic (700-300 BCE)\\\",\\\" Imperial Aramaic (700-300 BCE)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"RTL\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"arn\\\",\\\"iso639_2en\\\":\\\"arn\\\",\\\"iso639_3\\\":\\\"arn\\\",\\\"name\\\":[\\\"Mapudungun\\\",\\\" Mapuche\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"arp\\\",\\\"iso639_2en\\\":\\\"arp\\\",\\\"iso639_3\\\":\\\"arp\\\",\\\"name\\\":[\\\"Arapaho\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"art\\\",\\\"iso639_2en\\\":\\\"art\\\",\\\"iso639_3\\\":\\\"art\\\",\\\"name\\\":[\\\"Artificial languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"arw\\\",\\\"iso639_2en\\\":\\\"arw\\\",\\\"iso639_3\\\":\\\"arw\\\",\\\"name\\\":[\\\"Arawak\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ast\\\",\\\"iso639_2en\\\":\\\"ast\\\",\\\"iso639_3\\\":\\\"ast\\\",\\\"name\\\":[\\\"Asturian\\\",\\\" Bable\\\",\\\" Leonese\\\",\\\" Asturleonese\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ath\\\",\\\"iso639_2en\\\":\\\"ath\\\",\\\"iso639_3\\\":\\\"ath\\\",\\\"name\\\":[\\\"Athapascan languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"aus\\\",\\\"iso639_2en\\\":\\\"aus\\\",\\\"iso639_3\\\":\\\"aus\\\",\\\"name\\\":[\\\"Australian languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"awa\\\",\\\"iso639_2en\\\":\\\"awa\\\",\\\"iso639_3\\\":\\\"awa\\\",\\\"name\\\":[\\\"Awadhi\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"bad\\\",\\\"iso639_2en\\\":\\\"bad\\\",\\\"iso639_3\\\":\\\"bad\\\",\\\"name\\\":[\\\"Banda languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"bai\\\",\\\"iso639_2en\\\":\\\"bai\\\",\\\"iso639_3\\\":\\\"bai\\\",\\\"name\\\":[\\\"Bamileke languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"bal\\\",\\\"iso639_2en\\\":\\\"bal\\\",\\\"iso639_3\\\":\\\"bal\\\",\\\"name\\\":[\\\"Baluchi\\\",\\\"Balochi\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"RTL\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ban\\\",\\\"iso639_2en\\\":\\\"ban\\\",\\\"iso639_3\\\":\\\"ban\\\",\\\"name\\\":[\\\"Balinese\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"bas\\\",\\\"iso639_2en\\\":\\\"bas\\\",\\\"iso639_3\\\":\\\"bas\\\",\\\"name\\\":[\\\"Basa\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"bat\\\",\\\"iso639_2en\\\":\\\"bat\\\",\\\"iso639_3\\\":\\\"bat\\\",\\\"name\\\":[\\\"Baltic languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"bej\\\",\\\"iso639_2en\\\":\\\"bej\\\",\\\"iso639_3\\\":\\\"bej\\\",\\\"name\\\":[\\\"Beja\\\",\\\" Bedawiyet\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"bem\\\",\\\"iso639_2en\\\":\\\"bem\\\",\\\"iso639_3\\\":\\\"bem\\\",\\\"name\\\":[\\\"Bemba\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"bho\\\",\\\"iso639_2en\\\":\\\"bho\\\",\\\"iso639_3\\\":\\\"bho\\\",\\\"name\\\":[\\\"Bhojpuri\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"bik\\\",\\\"iso639_2en\\\":\\\"bik\\\",\\\"iso639_3\\\":\\\"bik\\\",\\\"name\\\":[\\\"Bikol\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"bin\\\",\\\"iso639_2en\\\":\\\"bin\\\",\\\"iso639_3\\\":\\\"bin\\\",\\\"name\\\":[\\\"Bini\\\",\\\" Edo\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"bla\\\",\\\"iso639_2en\\\":\\\"bla\\\",\\\"iso639_3\\\":\\\"bla\\\",\\\"name\\\":[\\\"Siksika\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"bnt\\\",\\\"iso639_2en\\\":\\\"bnt\\\",\\\"iso639_3\\\":\\\"bnt\\\",\\\"name\\\":[\\\"Bantu languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"bra\\\",\\\"iso639_2en\\\":\\\"bra\\\",\\\"iso639_3\\\":\\\"bra\\\",\\\"name\\\":[\\\"Braj\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"btk\\\",\\\"iso639_2en\\\":\\\"btk\\\",\\\"iso639_3\\\":\\\"btk\\\",\\\"name\\\":[\\\"Batak languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"bua\\\",\\\"iso639_2en\\\":\\\"bua\\\",\\\"iso639_3\\\":\\\"bua\\\",\\\"name\\\":[\\\"Buriat\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"bug\\\",\\\"iso639_2en\\\":\\\"bug\\\",\\\"iso639_3\\\":\\\"bug\\\",\\\"name\\\":[\\\"Buginese\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"byn\\\",\\\"iso639_2en\\\":\\\"byn\\\",\\\"iso639_3\\\":\\\"byn\\\",\\\"name\\\":[\\\"Blin\\\",\\\" Bilin\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"cad\\\",\\\"iso639_2en\\\":\\\"cad\\\",\\\"iso639_3\\\":\\\"cad\\\",\\\"name\\\":[\\\"Caddo\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"cai\\\",\\\"iso639_2en\\\":\\\"cai\\\",\\\"iso639_3\\\":\\\"cai\\\",\\\"name\\\":[\\\"Central American Indian languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"car\\\",\\\"iso639_2en\\\":\\\"car\\\",\\\"iso639_3\\\":\\\"car\\\",\\\"name\\\":[\\\"Galibi Carib\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"cau\\\",\\\"iso639_2en\\\":\\\"cau\\\",\\\"iso639_3\\\":\\\"cau\\\",\\\"name\\\":[\\\"Caucasian languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ceb\\\",\\\"iso639_2en\\\":\\\"ceb\\\",\\\"iso639_3\\\":\\\"ceb\\\",\\\"name\\\":[\\\"Cebuano\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"cel\\\",\\\"iso639_2en\\\":\\\"cel\\\",\\\"iso639_3\\\":\\\"cel\\\",\\\"name\\\":[\\\"Celtic languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"chb\\\",\\\"iso639_2en\\\":\\\"chb\\\",\\\"iso639_3\\\":\\\"chb\\\",\\\"name\\\":[\\\"Chibcha\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"chg\\\",\\\"iso639_2en\\\":\\\"chg\\\",\\\"iso639_3\\\":\\\"chg\\\",\\\"name\\\":[\\\"Chagatai\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"chk\\\",\\\"iso639_2en\\\":\\\"chk\\\",\\\"iso639_3\\\":\\\"chk\\\",\\\"name\\\":[\\\"Chuukese\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"chm\\\",\\\"iso639_2en\\\":\\\"chm\\\",\\\"iso639_3\\\":\\\"chm\\\",\\\"name\\\":[\\\"Mari\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"chn\\\",\\\"iso639_2en\\\":\\\"chn\\\",\\\"iso639_3\\\":\\\"chn\\\",\\\"name\\\":[\\\"Chinook jargon\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"cho\\\",\\\"iso639_2en\\\":\\\"cho\\\",\\\"iso639_3\\\":\\\"cho\\\",\\\"name\\\":[\\\"Choctaw\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"chp\\\",\\\"iso639_2en\\\":\\\"chp\\\",\\\"iso639_3\\\":\\\"chp\\\",\\\"name\\\":[\\\"Chipewyan\\\",\\\" Dene Suline\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"chr\\\",\\\"iso639_2en\\\":\\\"chr\\\",\\\"iso639_3\\\":\\\"chr\\\",\\\"name\\\":[\\\"Cherokee\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"chy\\\",\\\"iso639_2en\\\":\\\"chy\\\",\\\"iso639_3\\\":\\\"chy\\\",\\\"name\\\":[\\\"Cheyenne\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"cmc\\\",\\\"iso639_2en\\\":\\\"cmc\\\",\\\"iso639_3\\\":\\\"cmc\\\",\\\"name\\\":[\\\"Chamic languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"cop\\\",\\\"iso639_2en\\\":\\\"cop\\\",\\\"iso639_3\\\":\\\"cop\\\",\\\"name\\\":[\\\"Coptic\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"cpe\\\",\\\"iso639_2en\\\":\\\"cpe\\\",\\\"iso639_3\\\":\\\"cpe\\\",\\\"name\\\":[\\\"Creoles and pidgins, English based\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"cpf\\\",\\\"iso639_2en\\\":\\\"cpf\\\",\\\"iso639_3\\\":\\\"cpf\\\",\\\"name\\\":[\\\"Creoles and pidgins, French-based\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"cpp\\\",\\\"iso639_2en\\\":\\\"cpp\\\",\\\"iso639_3\\\":\\\"cpp\\\",\\\"name\\\":[\\\"Creoles and pidgins, Portuguese-based\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"crh\\\",\\\"iso639_2en\\\":\\\"crh\\\",\\\"iso639_3\\\":\\\"crh\\\",\\\"name\\\":[\\\"Crimean Tatar\\\",\\\" Crimean Turkish\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"crp\\\",\\\"iso639_2en\\\":\\\"crp\\\",\\\"iso639_3\\\":\\\"crp\\\",\\\"name\\\":[\\\"Creoles and pidgins\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"csb\\\",\\\"iso639_2en\\\":\\\"csb\\\",\\\"iso639_3\\\":\\\"csb\\\",\\\"name\\\":[\\\"Kashubian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"cus\\\",\\\"iso639_2en\\\":\\\"cus\\\",\\\"iso639_3\\\":\\\"cus\\\",\\\"name\\\":[\\\"Cushitic languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"dak\\\",\\\"iso639_2en\\\":\\\"dak\\\",\\\"iso639_3\\\":\\\"dak\\\",\\\"name\\\":[\\\"Dakota\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"dar\\\",\\\"iso639_2en\\\":\\\"dar\\\",\\\"iso639_3\\\":\\\"dar\\\",\\\"name\\\":[\\\"Dargwa\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"day\\\",\\\"iso639_2en\\\":\\\"day\\\",\\\"iso639_3\\\":\\\"day\\\",\\\"name\\\":[\\\"Land Dayak languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"del\\\",\\\"iso639_2en\\\":\\\"del\\\",\\\"iso639_3\\\":\\\"del\\\",\\\"name\\\":[\\\"Delaware\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"den\\\",\\\"iso639_2en\\\":\\\"den\\\",\\\"iso639_3\\\":\\\"den\\\",\\\"name\\\":[\\\"Slave (Athapascan)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"dgr\\\",\\\"iso639_2en\\\":\\\"dgr\\\",\\\"iso639_3\\\":\\\"dgr\\\",\\\"name\\\":[\\\"Dogrib\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"din\\\",\\\"iso639_2en\\\":\\\"din\\\",\\\"iso639_3\\\":\\\"din\\\",\\\"name\\\":[\\\"Dinka\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"doi\\\",\\\"iso639_2en\\\":\\\"doi\\\",\\\"iso639_3\\\":\\\"doi\\\",\\\"name\\\":[\\\"Dogri\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"dra\\\",\\\"iso639_2en\\\":\\\"dra\\\",\\\"iso639_3\\\":\\\"dra\\\",\\\"name\\\":[\\\"Dravidian languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"dsb\\\",\\\"iso639_2en\\\":\\\"dsb\\\",\\\"iso639_3\\\":\\\"dsb\\\",\\\"name\\\":[\\\"Lower Sorbian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"dua\\\",\\\"iso639_2en\\\":\\\"dua\\\",\\\"iso639_3\\\":\\\"dua\\\",\\\"name\\\":[\\\"Duala\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"dum\\\",\\\"iso639_2en\\\":\\\"dum\\\",\\\"iso639_3\\\":\\\"dum\\\",\\\"name\\\":[\\\"Dutch, Middle (ca.1050-1350)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"dyu\\\",\\\"iso639_2en\\\":\\\"dyu\\\",\\\"iso639_3\\\":\\\"dyu\\\",\\\"name\\\":[\\\"Dyula\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"efi\\\",\\\"iso639_2en\\\":\\\"efi\\\",\\\"iso639_3\\\":\\\"efi\\\",\\\"name\\\":[\\\"Efik\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"egy\\\",\\\"iso639_2en\\\":\\\"egy\\\",\\\"iso639_3\\\":\\\"egy\\\",\\\"name\\\":[\\\"Egyptian (Ancient)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"eka\\\",\\\"iso639_2en\\\":\\\"eka\\\",\\\"iso639_3\\\":\\\"eka\\\",\\\"name\\\":[\\\"Ekajuk\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"elx\\\",\\\"iso639_2en\\\":\\\"elx\\\",\\\"iso639_3\\\":\\\"elx\\\",\\\"name\\\":[\\\"Elamite\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"enm\\\",\\\"iso639_2en\\\":\\\"enm\\\",\\\"iso639_3\\\":\\\"enm\\\",\\\"name\\\":[\\\"English, Middle (1100-1500)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ewo\\\",\\\"iso639_2en\\\":\\\"ewo\\\",\\\"iso639_3\\\":\\\"ewo\\\",\\\"name\\\":[\\\"Ewondo\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"fan\\\",\\\"iso639_2en\\\":\\\"fan\\\",\\\"iso639_3\\\":\\\"fan\\\",\\\"name\\\":[\\\"Fang\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"fat\\\",\\\"iso639_2en\\\":\\\"fat\\\",\\\"iso639_3\\\":\\\"fat\\\",\\\"name\\\":[\\\"Fanti\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"fiu\\\",\\\"iso639_2en\\\":\\\"fiu\\\",\\\"iso639_3\\\":\\\"fiu\\\",\\\"name\\\":[\\\"Finno-Ugrian languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"fon\\\",\\\"iso639_2en\\\":\\\"fon\\\",\\\"iso639_3\\\":\\\"fon\\\",\\\"name\\\":[\\\"Fon\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"frm\\\",\\\"iso639_2en\\\":\\\"frm\\\",\\\"iso639_3\\\":\\\"frm\\\",\\\"name\\\":[\\\"French, Middle (ca.1400-1600)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"fro\\\",\\\"iso639_2en\\\":\\\"fro\\\",\\\"iso639_3\\\":\\\"fro\\\",\\\"name\\\":[\\\"French, Old (842-ca.1400)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"frr\\\",\\\"iso639_2en\\\":\\\"frr\\\",\\\"iso639_3\\\":\\\"frr\\\",\\\"name\\\":[\\\"Northern Frisian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"frs\\\",\\\"iso639_2en\\\":\\\"frs\\\",\\\"iso639_3\\\":\\\"frs\\\",\\\"name\\\":[\\\"Eastern Frisian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"fur\\\",\\\"iso639_2en\\\":\\\"fur\\\",\\\"iso639_3\\\":\\\"fur\\\",\\\"name\\\":[\\\"Friulian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"gaa\\\",\\\"iso639_2en\\\":\\\"gaa\\\",\\\"iso639_3\\\":\\\"gaa\\\",\\\"name\\\":[\\\"Ga\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\",\\\"countries\\\":[\\\"GHA\\\"]},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"gay\\\",\\\"iso639_2en\\\":\\\"gay\\\",\\\"iso639_3\\\":\\\"gay\\\",\\\"name\\\":[\\\"Gayo\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"gba\\\",\\\"iso639_2en\\\":\\\"gba\\\",\\\"iso639_3\\\":\\\"gba\\\",\\\"name\\\":[\\\"Gbaya\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"gem\\\",\\\"iso639_2en\\\":\\\"gem\\\",\\\"iso639_3\\\":\\\"gem\\\",\\\"name\\\":[\\\"Germanic languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"gez\\\",\\\"iso639_2en\\\":\\\"gez\\\",\\\"iso639_3\\\":\\\"gez\\\",\\\"name\\\":[\\\"Geez\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"gil\\\",\\\"iso639_2en\\\":\\\"gil\\\",\\\"iso639_3\\\":\\\"gil\\\",\\\"name\\\":[\\\"Gilbertese\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"gmh\\\",\\\"iso639_2en\\\":\\\"gmh\\\",\\\"iso639_3\\\":\\\"gmh\\\",\\\"name\\\":[\\\"German, Middle High (ca.1050-1500)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"goh\\\",\\\"iso639_2en\\\":\\\"goh\\\",\\\"iso639_3\\\":\\\"goh\\\",\\\"name\\\":[\\\"German, Old High (ca.750-1050)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"gon\\\",\\\"iso639_2en\\\":\\\"gon\\\",\\\"iso639_3\\\":\\\"gon\\\",\\\"name\\\":[\\\"Gondi\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"gor\\\",\\\"iso639_2en\\\":\\\"gor\\\",\\\"iso639_3\\\":\\\"gor\\\",\\\"name\\\":[\\\"Gorontalo\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"got\\\",\\\"iso639_2en\\\":\\\"got\\\",\\\"iso639_3\\\":\\\"got\\\",\\\"name\\\":[\\\"Gothic\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"grb\\\",\\\"iso639_2en\\\":\\\"grb\\\",\\\"iso639_3\\\":\\\"grb\\\",\\\"name\\\":[\\\"Grebo\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"grc\\\",\\\"iso639_2en\\\":\\\"grc\\\",\\\"iso639_3\\\":\\\"grc\\\",\\\"name\\\":[\\\"Greek, Ancient (to 1453)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"gsw\\\",\\\"iso639_2en\\\":\\\"gsw\\\",\\\"iso639_3\\\":\\\"gsw\\\",\\\"name\\\":[\\\"Swiss German\\\",\\\" Alemannic\\\",\\\" Alsatian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"gwi\\\",\\\"iso639_2en\\\":\\\"gwi\\\",\\\"iso639_3\\\":\\\"gwi\\\",\\\"name\\\":[\\\"Gwich'in\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"hai\\\",\\\"iso639_2en\\\":\\\"hai\\\",\\\"iso639_3\\\":\\\"hai\\\",\\\"name\\\":[\\\"Haida\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"haw\\\",\\\"iso639_2en\\\":\\\"haw\\\",\\\"iso639_3\\\":\\\"haw\\\",\\\"name\\\":[\\\"Hawaiian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"hil\\\",\\\"iso639_2en\\\":\\\"hil\\\",\\\"iso639_3\\\":\\\"hil\\\",\\\"name\\\":[\\\"Hiligaynon\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"him\\\",\\\"iso639_2en\\\":\\\"him\\\",\\\"iso639_3\\\":\\\"him\\\",\\\"name\\\":[\\\"Himachali languages\\\",\\\" Western Pahari languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"hit\\\",\\\"iso639_2en\\\":\\\"hit\\\",\\\"iso639_3\\\":\\\"hit\\\",\\\"name\\\":[\\\"Hittite\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"hmn\\\",\\\"iso639_2en\\\":\\\"hmn\\\",\\\"iso639_3\\\":\\\"hmn\\\",\\\"name\\\":[\\\"Hmong\\\",\\\" Mong\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"hsb\\\",\\\"iso639_2en\\\":\\\"hsb\\\",\\\"iso639_3\\\":\\\"hsb\\\",\\\"name\\\":[\\\"Upper Sorbian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"hup\\\",\\\"iso639_2en\\\":\\\"hup\\\",\\\"iso639_3\\\":\\\"hup\\\",\\\"name\\\":[\\\"Hupa\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"iba\\\",\\\"iso639_2en\\\":\\\"iba\\\",\\\"iso639_3\\\":\\\"iba\\\",\\\"name\\\":[\\\"Iban\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ijo\\\",\\\"iso639_2en\\\":\\\"ijo\\\",\\\"iso639_3\\\":\\\"ijo\\\",\\\"name\\\":[\\\"Ijo languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ilo\\\",\\\"iso639_2en\\\":\\\"ilo\\\",\\\"iso639_3\\\":\\\"ilo\\\",\\\"name\\\":[\\\"Iloko\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"inc\\\",\\\"iso639_2en\\\":\\\"inc\\\",\\\"iso639_3\\\":\\\"inc\\\",\\\"name\\\":[\\\"Indic languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ine\\\",\\\"iso639_2en\\\":\\\"ine\\\",\\\"iso639_3\\\":\\\"ine\\\",\\\"name\\\":[\\\"Indo-European languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"inh\\\",\\\"iso639_2en\\\":\\\"inh\\\",\\\"iso639_3\\\":\\\"inh\\\",\\\"name\\\":[\\\"Ingush\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ira\\\",\\\"iso639_2en\\\":\\\"ira\\\",\\\"iso639_3\\\":\\\"ira\\\",\\\"name\\\":[\\\"Iranian languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"iro\\\",\\\"iso639_2en\\\":\\\"iro\\\",\\\"iso639_3\\\":\\\"iro\\\",\\\"name\\\":[\\\"Iroquoian languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"jbo\\\",\\\"iso639_2en\\\":\\\"jbo\\\",\\\"iso639_3\\\":\\\"jbo\\\",\\\"name\\\":[\\\"Lojban\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"jpr\\\",\\\"iso639_2en\\\":\\\"jpr\\\",\\\"iso639_3\\\":\\\"jpr\\\",\\\"name\\\":[\\\"Judeo-Persian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"jrb\\\",\\\"iso639_2en\\\":\\\"jrb\\\",\\\"iso639_3\\\":\\\"jrb\\\",\\\"name\\\":[\\\"Judeo-Arabic\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"kaa\\\",\\\"iso639_2en\\\":\\\"kaa\\\",\\\"iso639_3\\\":\\\"kaa\\\",\\\"name\\\":[\\\"Kara-Kalpak\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"kab\\\",\\\"iso639_2en\\\":\\\"kab\\\",\\\"iso639_3\\\":\\\"kab\\\",\\\"name\\\":[\\\"Kabyle\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"kac\\\",\\\"iso639_2en\\\":\\\"kac\\\",\\\"iso639_3\\\":\\\"kac\\\",\\\"name\\\":[\\\"Kachin\\\",\\\" Jingpho\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"kam\\\",\\\"iso639_2en\\\":\\\"kam\\\",\\\"iso639_3\\\":\\\"kam\\\",\\\"name\\\":[\\\"Kamba\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"kar\\\",\\\"iso639_2en\\\":\\\"kar\\\",\\\"iso639_3\\\":\\\"kar\\\",\\\"name\\\":[\\\"Karen languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"kaw\\\",\\\"iso639_2en\\\":\\\"kaw\\\",\\\"iso639_3\\\":\\\"kaw\\\",\\\"name\\\":[\\\"Kawi\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"kbd\\\",\\\"iso639_2en\\\":\\\"kbd\\\",\\\"iso639_3\\\":\\\"kbd\\\",\\\"name\\\":[\\\"Kabardian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"kha\\\",\\\"iso639_2en\\\":\\\"kha\\\",\\\"iso639_3\\\":\\\"kha\\\",\\\"name\\\":[\\\"Khasi\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"khi\\\",\\\"iso639_2en\\\":\\\"khi\\\",\\\"iso639_3\\\":\\\"khi\\\",\\\"name\\\":[\\\"Khoisan languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"kho\\\",\\\"iso639_2en\\\":\\\"kho\\\",\\\"iso639_3\\\":\\\"kho\\\",\\\"name\\\":[\\\"Khotanese\\\",\\\" Sakan\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"kmb\\\",\\\"iso639_2en\\\":\\\"kmb\\\",\\\"iso639_3\\\":\\\"kmb\\\",\\\"name\\\":[\\\"Kimbundu\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\",\\\"countries\\\":[\\\"AGO\\\"]},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"kok\\\",\\\"iso639_2en\\\":\\\"kok\\\",\\\"iso639_3\\\":\\\"kok\\\",\\\"name\\\":[\\\"Konkani\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\",\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"kok-IN\\\",\\\"displayName\\\":\\\"Konkani - India\\\",\\\"cultureCode\\\":\\\"0x0457\\\"}]},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"kos\\\",\\\"iso639_2en\\\":\\\"kos\\\",\\\"iso639_3\\\":\\\"kos\\\",\\\"name\\\":[\\\"Kosraean\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"kpe\\\",\\\"iso639_2en\\\":\\\"kpe\\\",\\\"iso639_3\\\":\\\"kpe\\\",\\\"name\\\":[\\\"Kpelle\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"krc\\\",\\\"iso639_2en\\\":\\\"krc\\\",\\\"iso639_3\\\":\\\"krc\\\",\\\"name\\\":[\\\"Karachay-Balkar\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"krl\\\",\\\"iso639_2en\\\":\\\"krl\\\",\\\"iso639_3\\\":\\\"krl\\\",\\\"name\\\":[\\\"Karelian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"kro\\\",\\\"iso639_2en\\\":\\\"kro\\\",\\\"iso639_3\\\":\\\"kro\\\",\\\"name\\\":[\\\"Kru languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"kru\\\",\\\"iso639_2en\\\":\\\"kru\\\",\\\"iso639_3\\\":\\\"kru\\\",\\\"name\\\":[\\\"Kurukh\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"kum\\\",\\\"iso639_2en\\\":\\\"kum\\\",\\\"iso639_3\\\":\\\"kum\\\",\\\"name\\\":[\\\"Kumyk\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"kut\\\",\\\"iso639_2en\\\":\\\"kut\\\",\\\"iso639_3\\\":\\\"kut\\\",\\\"name\\\":[\\\"Kutenai\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"lad\\\",\\\"iso639_2en\\\":\\\"lad\\\",\\\"iso639_3\\\":\\\"lad\\\",\\\"name\\\":[\\\"Ladino\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"lah\\\",\\\"iso639_2en\\\":\\\"lah\\\",\\\"iso639_3\\\":\\\"lah\\\",\\\"name\\\":[\\\"Lahnda\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"lam\\\",\\\"iso639_2en\\\":\\\"lam\\\",\\\"iso639_3\\\":\\\"lam\\\",\\\"name\\\":[\\\"Lamba\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"lez\\\",\\\"iso639_2en\\\":\\\"lez\\\",\\\"iso639_3\\\":\\\"lez\\\",\\\"name\\\":[\\\"Lezghian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"lol\\\",\\\"iso639_2en\\\":\\\"lol\\\",\\\"iso639_3\\\":\\\"lol\\\",\\\"name\\\":[\\\"Mongo\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"loz\\\",\\\"iso639_2en\\\":\\\"loz\\\",\\\"iso639_3\\\":\\\"loz\\\",\\\"name\\\":[\\\"Lozi\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"lua\\\",\\\"iso639_2en\\\":\\\"lua\\\",\\\"iso639_3\\\":\\\"lua\\\",\\\"name\\\":[\\\"Luba-Lulua\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"lui\\\",\\\"iso639_2en\\\":\\\"lui\\\",\\\"iso639_3\\\":\\\"lui\\\",\\\"name\\\":[\\\"Luiseno\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"lun\\\",\\\"iso639_2en\\\":\\\"lun\\\",\\\"iso639_3\\\":\\\"lun\\\",\\\"name\\\":[\\\"Lunda\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"luo\\\",\\\"iso639_2en\\\":\\\"luo\\\",\\\"iso639_3\\\":\\\"luo\\\",\\\"name\\\":[\\\"Luo (Kenya and Tanzania)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"lus\\\",\\\"iso639_2en\\\":\\\"lus\\\",\\\"iso639_3\\\":\\\"lus\\\",\\\"name\\\":[\\\"Lushai\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mad\\\",\\\"iso639_2en\\\":\\\"mad\\\",\\\"iso639_3\\\":\\\"mad\\\",\\\"name\\\":[\\\"Madurese\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mag\\\",\\\"iso639_2en\\\":\\\"mag\\\",\\\"iso639_3\\\":\\\"mag\\\",\\\"name\\\":[\\\"Magahi\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mai\\\",\\\"iso639_2en\\\":\\\"mai\\\",\\\"iso639_3\\\":\\\"mai\\\",\\\"name\\\":[\\\"Maithili\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mak\\\",\\\"iso639_2en\\\":\\\"mak\\\",\\\"iso639_3\\\":\\\"mak\\\",\\\"name\\\":[\\\"Makasar\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"man\\\",\\\"iso639_2en\\\":\\\"man\\\",\\\"iso639_3\\\":\\\"man\\\",\\\"name\\\":[\\\"Mandingo\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"map\\\",\\\"iso639_2en\\\":\\\"map\\\",\\\"iso639_3\\\":\\\"map\\\",\\\"name\\\":[\\\"Austronesian languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mas\\\",\\\"iso639_2en\\\":\\\"mas\\\",\\\"iso639_3\\\":\\\"mas\\\",\\\"name\\\":[\\\"Masai\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mdf\\\",\\\"iso639_2en\\\":\\\"mdf\\\",\\\"iso639_3\\\":\\\"mdf\\\",\\\"name\\\":[\\\"Moksha\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mdr\\\",\\\"iso639_2en\\\":\\\"mdr\\\",\\\"iso639_3\\\":\\\"mdr\\\",\\\"name\\\":[\\\"Mandar\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"men\\\",\\\"iso639_2en\\\":\\\"men\\\",\\\"iso639_3\\\":\\\"men\\\",\\\"name\\\":[\\\"Mende\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mga\\\",\\\"iso639_2en\\\":\\\"mga\\\",\\\"iso639_3\\\":\\\"mga\\\",\\\"name\\\":[\\\"Irish, Middle (900-1200)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mic\\\",\\\"iso639_2en\\\":\\\"mic\\\",\\\"iso639_3\\\":\\\"mic\\\",\\\"name\\\":[\\\"Mi'kmaq\\\",\\\" Micmac\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"min\\\",\\\"iso639_2en\\\":\\\"min\\\",\\\"iso639_3\\\":\\\"min\\\",\\\"name\\\":[\\\"Minangkabau\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mis\\\",\\\"iso639_2en\\\":\\\"mis\\\",\\\"iso639_3\\\":\\\"mis\\\",\\\"name\\\":[\\\"Uncoded languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mkh\\\",\\\"iso639_2en\\\":\\\"mkh\\\",\\\"iso639_3\\\":\\\"mkh\\\",\\\"name\\\":[\\\"Mon-Khmer languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mnc\\\",\\\"iso639_2en\\\":\\\"mnc\\\",\\\"iso639_3\\\":\\\"mnc\\\",\\\"name\\\":[\\\"Manchu\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mni\\\",\\\"iso639_2en\\\":\\\"mni\\\",\\\"iso639_3\\\":\\\"mni\\\",\\\"name\\\":[\\\"Manipuri\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mno\\\",\\\"iso639_2en\\\":\\\"mno\\\",\\\"iso639_3\\\":\\\"mno\\\",\\\"name\\\":[\\\"Manobo languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"moh\\\",\\\"iso639_2en\\\":\\\"moh\\\",\\\"iso639_3\\\":\\\"moh\\\",\\\"name\\\":[\\\"Mohawk\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mos\\\",\\\"iso639_2en\\\":\\\"mos\\\",\\\"iso639_3\\\":\\\"mos\\\",\\\"name\\\":[\\\"Mossi\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\",\\\"countries\\\":[\\\"BFA\\\"]},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mul\\\",\\\"iso639_2en\\\":\\\"mul\\\",\\\"iso639_3\\\":\\\"mul\\\",\\\"name\\\":[\\\"Multiple languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mun\\\",\\\"iso639_2en\\\":\\\"mun\\\",\\\"iso639_3\\\":\\\"mun\\\",\\\"name\\\":[\\\"Munda languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mus\\\",\\\"iso639_2en\\\":\\\"mus\\\",\\\"iso639_3\\\":\\\"mus\\\",\\\"name\\\":[\\\"Creek\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mwl\\\",\\\"iso639_2en\\\":\\\"mwl\\\",\\\"iso639_3\\\":\\\"mwl\\\",\\\"name\\\":[\\\"Mirandese\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"mwr\\\",\\\"iso639_2en\\\":\\\"mwr\\\",\\\"iso639_3\\\":\\\"mwr\\\",\\\"name\\\":[\\\"Marwari\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"myn\\\",\\\"iso639_2en\\\":\\\"myn\\\",\\\"iso639_3\\\":\\\"myn\\\",\\\"name\\\":[\\\"Mayan languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"myv\\\",\\\"iso639_2en\\\":\\\"myv\\\",\\\"iso639_3\\\":\\\"myv\\\",\\\"name\\\":[\\\"Erzya\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"nah\\\",\\\"iso639_2en\\\":\\\"nah\\\",\\\"iso639_3\\\":\\\"nah\\\",\\\"name\\\":[\\\"Nahuatl languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"nai\\\",\\\"iso639_2en\\\":\\\"nai\\\",\\\"iso639_3\\\":\\\"nai\\\",\\\"name\\\":[\\\"North American Indian languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"nap\\\",\\\"iso639_2en\\\":\\\"nap\\\",\\\"iso639_3\\\":\\\"nap\\\",\\\"name\\\":[\\\"Neapolitan\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"nds\\\",\\\"iso639_2en\\\":\\\"nds\\\",\\\"iso639_3\\\":\\\"nds\\\",\\\"name\\\":[\\\"Low German\\\",\\\" Low Saxon\\\",\\\" German, Low\\\",\\\" Saxon, Low\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"new\\\",\\\"iso639_2en\\\":\\\"new\\\",\\\"iso639_3\\\":\\\"new\\\",\\\"name\\\":[\\\"Nepal Bhasa\\\",\\\" Newari\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"nia\\\",\\\"iso639_2en\\\":\\\"nia\\\",\\\"iso639_3\\\":\\\"nia\\\",\\\"name\\\":[\\\"Nias\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"nic\\\",\\\"iso639_2en\\\":\\\"nic\\\",\\\"iso639_3\\\":\\\"nic\\\",\\\"name\\\":[\\\"Niger-Kordofanian languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"niu\\\",\\\"iso639_2en\\\":\\\"niu\\\",\\\"iso639_3\\\":\\\"niu\\\",\\\"name\\\":[\\\"Niuean\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"nog\\\",\\\"iso639_2en\\\":\\\"nog\\\",\\\"iso639_3\\\":\\\"nog\\\",\\\"name\\\":[\\\"Nogai\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"non\\\",\\\"iso639_2en\\\":\\\"non\\\",\\\"iso639_3\\\":\\\"non\\\",\\\"name\\\":[\\\"Norse, Old\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"nqo\\\",\\\"iso639_2en\\\":\\\"nqo\\\",\\\"iso639_3\\\":\\\"nqo\\\",\\\"name\\\":[\\\"N'Ko\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"nub\\\",\\\"iso639_2en\\\":\\\"nub\\\",\\\"iso639_3\\\":\\\"nub\\\",\\\"name\\\":[\\\"Nubian languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"nwc\\\",\\\"iso639_2en\\\":\\\"nwc\\\",\\\"iso639_3\\\":\\\"nwc\\\",\\\"name\\\":[\\\"Classical Newari\\\",\\\" Old Newari\\\",\\\" Classical Nepal Bhasa\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"nym\\\",\\\"iso639_2en\\\":\\\"nym\\\",\\\"iso639_3\\\":\\\"nym\\\",\\\"name\\\":[\\\"Nyamwezi\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"nyn\\\",\\\"iso639_2en\\\":\\\"nyn\\\",\\\"iso639_3\\\":\\\"nyn\\\",\\\"name\\\":[\\\"Nyankole\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"nyo\\\",\\\"iso639_2en\\\":\\\"nyo\\\",\\\"iso639_3\\\":\\\"nyo\\\",\\\"name\\\":[\\\"Nyoro\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"nzi\\\",\\\"iso639_2en\\\":\\\"nzi\\\",\\\"iso639_3\\\":\\\"nzi\\\",\\\"name\\\":[\\\"Nzima\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"osa\\\",\\\"iso639_2en\\\":\\\"osa\\\",\\\"iso639_3\\\":\\\"osa\\\",\\\"name\\\":[\\\"Osage\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ota\\\",\\\"iso639_2en\\\":\\\"ota\\\",\\\"iso639_3\\\":\\\"ota\\\",\\\"name\\\":[\\\"Turkish, Ottoman (1500-1928)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"oto\\\",\\\"iso639_2en\\\":\\\"oto\\\",\\\"iso639_3\\\":\\\"oto\\\",\\\"name\\\":[\\\"Otomian languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"paa\\\",\\\"iso639_2en\\\":\\\"paa\\\",\\\"iso639_3\\\":\\\"paa\\\",\\\"name\\\":[\\\"Papuan languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"pag\\\",\\\"iso639_2en\\\":\\\"pag\\\",\\\"iso639_3\\\":\\\"pag\\\",\\\"name\\\":[\\\"Pangasinan\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"pal\\\",\\\"iso639_2en\\\":\\\"pal\\\",\\\"iso639_3\\\":\\\"pal\\\",\\\"name\\\":[\\\"Pahlavi\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"pam\\\",\\\"iso639_2en\\\":\\\"pam\\\",\\\"iso639_3\\\":\\\"pam\\\",\\\"name\\\":[\\\"Pampanga\\\",\\\" Kapampangan\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"pap\\\",\\\"iso639_2en\\\":\\\"pap\\\",\\\"iso639_3\\\":\\\"pap\\\",\\\"name\\\":[\\\"Papiamento\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\",\\\"countries\\\":[\\\"ABW\\\",\\\"CUW\\\"]},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"pau\\\",\\\"iso639_2en\\\":\\\"pau\\\",\\\"iso639_3\\\":\\\"pau\\\",\\\"name\\\":[\\\"Palauan\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"peo\\\",\\\"iso639_2en\\\":\\\"peo\\\",\\\"iso639_3\\\":\\\"peo\\\",\\\"name\\\":[\\\"Persian, Old (ca.600-400 B.C.)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"phi\\\",\\\"iso639_2en\\\":\\\"phi\\\",\\\"iso639_3\\\":\\\"phi\\\",\\\"name\\\":[\\\"Philippine languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"phn\\\",\\\"iso639_2en\\\":\\\"phn\\\",\\\"iso639_3\\\":\\\"phn\\\",\\\"name\\\":[\\\"Phoenician\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"pon\\\",\\\"iso639_2en\\\":\\\"pon\\\",\\\"iso639_3\\\":\\\"pon\\\",\\\"name\\\":[\\\"Pohnpeian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"pra\\\",\\\"iso639_2en\\\":\\\"pra\\\",\\\"iso639_3\\\":\\\"pra\\\",\\\"name\\\":[\\\"Prakrit languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"pro\\\",\\\"iso639_2en\\\":\\\"pro\\\",\\\"iso639_3\\\":\\\"pro\\\",\\\"name\\\":[\\\"Proven�al, Old (to 1500)\\\",\\\"Occitan, Old (to 1500)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"qaa-qtz\\\",\\\"iso639_2en\\\":\\\"qaa-qtz\\\",\\\"iso639_3\\\":\\\"qaa-qtz\\\",\\\"name\\\":[\\\"Reserved for local use\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"raj\\\",\\\"iso639_2en\\\":\\\"raj\\\",\\\"iso639_3\\\":\\\"raj\\\",\\\"name\\\":[\\\"Rajasthani\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"rap\\\",\\\"iso639_2en\\\":\\\"rap\\\",\\\"iso639_3\\\":\\\"rap\\\",\\\"name\\\":[\\\"Rapanui\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"rar\\\",\\\"iso639_2en\\\":\\\"rar\\\",\\\"iso639_3\\\":\\\"rar\\\",\\\"name\\\":[\\\"Rarotongan\\\",\\\" Cook Islands Maori\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"roa\\\",\\\"iso639_2en\\\":\\\"roa\\\",\\\"iso639_3\\\":\\\"roa\\\",\\\"name\\\":[\\\"Romance languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"rom\\\",\\\"iso639_2en\\\":\\\"rom\\\",\\\"iso639_3\\\":\\\"rom\\\",\\\"name\\\":[\\\"Romany\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"rup\\\",\\\"iso639_2en\\\":\\\"rup\\\",\\\"iso639_3\\\":\\\"rup\\\",\\\"name\\\":[\\\"Aromanian\\\",\\\" Arumanian\\\",\\\" Macedo-Romanian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sad\\\",\\\"iso639_2en\\\":\\\"sad\\\",\\\"iso639_3\\\":\\\"sad\\\",\\\"name\\\":[\\\"Sandawe\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sah\\\",\\\"iso639_2en\\\":\\\"sah\\\",\\\"iso639_3\\\":\\\"sah\\\",\\\"name\\\":[\\\"Yakut\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sai\\\",\\\"iso639_2en\\\":\\\"sai\\\",\\\"iso639_3\\\":\\\"sai\\\",\\\"name\\\":[\\\"South American Indian languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sal\\\",\\\"iso639_2en\\\":\\\"sal\\\",\\\"iso639_3\\\":\\\"sal\\\",\\\"name\\\":[\\\"Salishan languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sam\\\",\\\"iso639_2en\\\":\\\"sam\\\",\\\"iso639_3\\\":\\\"sam\\\",\\\"name\\\":[\\\"Samaritan Aramaic\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sas\\\",\\\"iso639_2en\\\":\\\"sas\\\",\\\"iso639_3\\\":\\\"sas\\\",\\\"name\\\":[\\\"Sasak\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sat\\\",\\\"iso639_2en\\\":\\\"sat\\\",\\\"iso639_3\\\":\\\"sat\\\",\\\"name\\\":[\\\"Santali\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"scn\\\",\\\"iso639_2en\\\":\\\"scn\\\",\\\"iso639_3\\\":\\\"scn\\\",\\\"name\\\":[\\\"Sicilian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sco\\\",\\\"iso639_2en\\\":\\\"sco\\\",\\\"iso639_3\\\":\\\"sco\\\",\\\"name\\\":[\\\"Scots\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sel\\\",\\\"iso639_2en\\\":\\\"sel\\\",\\\"iso639_3\\\":\\\"sel\\\",\\\"name\\\":[\\\"Selkup\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sem\\\",\\\"iso639_2en\\\":\\\"sem\\\",\\\"iso639_3\\\":\\\"sem\\\",\\\"name\\\":[\\\"Semitic languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sga\\\",\\\"iso639_2en\\\":\\\"sga\\\",\\\"iso639_3\\\":\\\"sga\\\",\\\"name\\\":[\\\"Irish, Old (to 900)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sgn\\\",\\\"iso639_2en\\\":\\\"sgn\\\",\\\"iso639_3\\\":\\\"sgn\\\",\\\"name\\\":[\\\"Sign Languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"shn\\\",\\\"iso639_2en\\\":\\\"shn\\\",\\\"iso639_3\\\":\\\"shn\\\",\\\"name\\\":[\\\"Shan\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sid\\\",\\\"iso639_2en\\\":\\\"sid\\\",\\\"iso639_3\\\":\\\"sid\\\",\\\"name\\\":[\\\"Sidamo\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sio\\\",\\\"iso639_2en\\\":\\\"sio\\\",\\\"iso639_3\\\":\\\"sio\\\",\\\"name\\\":[\\\"Siouan languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sit\\\",\\\"iso639_2en\\\":\\\"sit\\\",\\\"iso639_3\\\":\\\"sit\\\",\\\"name\\\":[\\\"Sino-Tibetan languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sla\\\",\\\"iso639_2en\\\":\\\"sla\\\",\\\"iso639_3\\\":\\\"sla\\\",\\\"name\\\":[\\\"Slavic languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sma\\\",\\\"iso639_2en\\\":\\\"sma\\\",\\\"iso639_3\\\":\\\"sma\\\",\\\"name\\\":[\\\"Southern Sami\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"smi\\\",\\\"iso639_2en\\\":\\\"smi\\\",\\\"iso639_3\\\":\\\"smi\\\",\\\"name\\\":[\\\"Sami languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"smj\\\",\\\"iso639_2en\\\":\\\"smj\\\",\\\"iso639_3\\\":\\\"smj\\\",\\\"name\\\":[\\\"Lule Sami\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"smn\\\",\\\"iso639_2en\\\":\\\"smn\\\",\\\"iso639_3\\\":\\\"smn\\\",\\\"name\\\":[\\\"Inari Sami\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sms\\\",\\\"iso639_2en\\\":\\\"sms\\\",\\\"iso639_3\\\":\\\"sms\\\",\\\"name\\\":[\\\"Skolt Sami\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"snk\\\",\\\"iso639_2en\\\":\\\"snk\\\",\\\"iso639_3\\\":\\\"snk\\\",\\\"name\\\":[\\\"Soninke\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\",\\\"countries\\\":[\\\"MLI\\\",\\\"SEN\\\"]},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sog\\\",\\\"iso639_2en\\\":\\\"sog\\\",\\\"iso639_3\\\":\\\"sog\\\",\\\"name\\\":[\\\"Sogdian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"son\\\",\\\"iso639_2en\\\":\\\"son\\\",\\\"iso639_3\\\":\\\"son\\\",\\\"name\\\":[\\\"Songhai languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"srn\\\",\\\"iso639_2en\\\":\\\"srn\\\",\\\"iso639_3\\\":\\\"srn\\\",\\\"name\\\":[\\\"Sranan Tongo\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"srr\\\",\\\"iso639_2en\\\":\\\"srr\\\",\\\"iso639_3\\\":\\\"srr\\\",\\\"name\\\":[\\\"Serer\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\",\\\"countries\\\":[\\\"SEN\\\"]},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ssa\\\",\\\"iso639_2en\\\":\\\"ssa\\\",\\\"iso639_3\\\":\\\"ssa\\\",\\\"name\\\":[\\\"Nilo-Saharan languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"suk\\\",\\\"iso639_2en\\\":\\\"suk\\\",\\\"iso639_3\\\":\\\"suk\\\",\\\"name\\\":[\\\"Sukuma\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sus\\\",\\\"iso639_2en\\\":\\\"sus\\\",\\\"iso639_3\\\":\\\"sus\\\",\\\"name\\\":[\\\"Susu\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"sux\\\",\\\"iso639_2en\\\":\\\"sux\\\",\\\"iso639_3\\\":\\\"sux\\\",\\\"name\\\":[\\\"Sumerian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"syc\\\",\\\"iso639_2en\\\":\\\"syc\\\",\\\"iso639_3\\\":\\\"syc\\\",\\\"name\\\":[\\\"Classical Syriac\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"syr\\\",\\\"iso639_2en\\\":\\\"syr\\\",\\\"iso639_3\\\":\\\"syr\\\",\\\"name\\\":[\\\"Syriac\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\",\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"syr-SY\\\",\\\"displayName\\\":\\\"Syriac - Syria\\\",\\\"cultureCode\\\":\\\"0x045A\\\"}]},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"tai\\\",\\\"iso639_2en\\\":\\\"tai\\\",\\\"iso639_3\\\":\\\"tai\\\",\\\"name\\\":[\\\"Tai languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"tem\\\",\\\"iso639_2en\\\":\\\"tem\\\",\\\"iso639_3\\\":\\\"tem\\\",\\\"name\\\":[\\\"Timne\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ter\\\",\\\"iso639_2en\\\":\\\"ter\\\",\\\"iso639_3\\\":\\\"ter\\\",\\\"name\\\":[\\\"Tereno\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"tet\\\",\\\"iso639_2en\\\":\\\"tet\\\",\\\"iso639_3\\\":\\\"tet\\\",\\\"name\\\":[\\\"Tetum\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\",\\\"countries\\\":[\\\"TLS\\\"]},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"tig\\\",\\\"iso639_2en\\\":\\\"tig\\\",\\\"iso639_3\\\":\\\"tig\\\",\\\"name\\\":[\\\"Tigre\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"tiv\\\",\\\"iso639_2en\\\":\\\"tiv\\\",\\\"iso639_3\\\":\\\"tiv\\\",\\\"name\\\":[\\\"Tiv\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"tkl\\\",\\\"iso639_2en\\\":\\\"tkl\\\",\\\"iso639_3\\\":\\\"tkl\\\",\\\"name\\\":[\\\"Tokelau\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"tlh\\\",\\\"iso639_2en\\\":\\\"tlh\\\",\\\"iso639_3\\\":\\\"tlh\\\",\\\"name\\\":[\\\"Klingon\\\",\\\" tlhIngan-Hol\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"tli\\\",\\\"iso639_2en\\\":\\\"tli\\\",\\\"iso639_3\\\":\\\"tli\\\",\\\"name\\\":[\\\"Tlingit\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"tmh\\\",\\\"iso639_2en\\\":\\\"tmh\\\",\\\"iso639_3\\\":\\\"tmh\\\",\\\"name\\\":[\\\"Tamashek\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"tog\\\",\\\"iso639_2en\\\":\\\"tog\\\",\\\"iso639_3\\\":\\\"tog\\\",\\\"name\\\":[\\\"Tonga (Nyasa)\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"tpi\\\",\\\"iso639_2en\\\":\\\"tpi\\\",\\\"iso639_3\\\":\\\"tpi\\\",\\\"name\\\":[\\\"Tok Pisin\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\",\\\"countries\\\":[\\\"PNG\\\"]},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"tsi\\\",\\\"iso639_2en\\\":\\\"tsi\\\",\\\"iso639_3\\\":\\\"tsi\\\",\\\"name\\\":[\\\"Tsimshian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"tum\\\",\\\"iso639_2en\\\":\\\"tum\\\",\\\"iso639_3\\\":\\\"tum\\\",\\\"name\\\":[\\\"Tumbuka\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"tup\\\",\\\"iso639_2en\\\":\\\"tup\\\",\\\"iso639_3\\\":\\\"tup\\\",\\\"name\\\":[\\\"Tupi languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"tut\\\",\\\"iso639_2en\\\":\\\"tut\\\",\\\"iso639_3\\\":\\\"tut\\\",\\\"name\\\":[\\\"Altaic languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"tvl\\\",\\\"iso639_2en\\\":\\\"tvl\\\",\\\"iso639_3\\\":\\\"tvl\\\",\\\"name\\\":[\\\"Tuvalu\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"tyv\\\",\\\"iso639_2en\\\":\\\"tyv\\\",\\\"iso639_3\\\":\\\"tyv\\\",\\\"name\\\":[\\\"Tuvinian\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"udm\\\",\\\"iso639_2en\\\":\\\"udm\\\",\\\"iso639_3\\\":\\\"udm\\\",\\\"name\\\":[\\\"Udmurt\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"uga\\\",\\\"iso639_2en\\\":\\\"uga\\\",\\\"iso639_3\\\":\\\"uga\\\",\\\"name\\\":[\\\"Ugaritic\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"umb\\\",\\\"iso639_2en\\\":\\\"umb\\\",\\\"iso639_3\\\":\\\"umb\\\",\\\"name\\\":[\\\"Umbundu\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\",\\\"countries\\\":[\\\"AGO\\\"]},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"und\\\",\\\"iso639_2en\\\":\\\"und\\\",\\\"iso639_3\\\":\\\"und\\\",\\\"name\\\":[\\\"Undetermined\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"vai\\\",\\\"iso639_2en\\\":\\\"vai\\\",\\\"iso639_3\\\":\\\"vai\\\",\\\"name\\\":[\\\"Vai\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"vot\\\",\\\"iso639_2en\\\":\\\"vot\\\",\\\"iso639_3\\\":\\\"vot\\\",\\\"name\\\":[\\\"Votic\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"wak\\\",\\\"iso639_2en\\\":\\\"wak\\\",\\\"iso639_3\\\":\\\"wak\\\",\\\"name\\\":[\\\"Wakashan languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"wal\\\",\\\"iso639_2en\\\":\\\"wal\\\",\\\"iso639_3\\\":\\\"wal\\\",\\\"name\\\":[\\\"Wolaitta\\\",\\\" Wolaytta\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"war\\\",\\\"iso639_2en\\\":\\\"war\\\",\\\"iso639_3\\\":\\\"war\\\",\\\"name\\\":[\\\"Waray\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"was\\\",\\\"iso639_2en\\\":\\\"was\\\",\\\"iso639_3\\\":\\\"was\\\",\\\"name\\\":[\\\"Washo\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"wen\\\",\\\"iso639_2en\\\":\\\"wen\\\",\\\"iso639_3\\\":\\\"wen\\\",\\\"name\\\":[\\\"Sorbian languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"xal\\\",\\\"iso639_2en\\\":\\\"xal\\\",\\\"iso639_3\\\":\\\"xal\\\",\\\"name\\\":[\\\"Kalmyk\\\",\\\" Oirat\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"yao\\\",\\\"iso639_2en\\\":\\\"yao\\\",\\\"iso639_3\\\":\\\"yao\\\",\\\"name\\\":[\\\"Yao\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"yap\\\",\\\"iso639_2en\\\":\\\"yap\\\",\\\"iso639_3\\\":\\\"yap\\\",\\\"name\\\":[\\\"Yapese\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"ypk\\\",\\\"iso639_2en\\\":\\\"ypk\\\",\\\"iso639_3\\\":\\\"ypk\\\",\\\"name\\\":[\\\"Yupik languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"zap\\\",\\\"iso639_2en\\\":\\\"zap\\\",\\\"iso639_3\\\":\\\"zap\\\",\\\"name\\\":[\\\"Zapotec\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"zbl\\\",\\\"iso639_2en\\\":\\\"zbl\\\",\\\"iso639_3\\\":\\\"zbl\\\",\\\"name\\\":[\\\"Blissymbols\\\",\\\" Blissymbolics\\\",\\\" Bliss\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"zen\\\",\\\"iso639_2en\\\":\\\"zen\\\",\\\"iso639_3\\\":\\\"zen\\\",\\\"name\\\":[\\\"Zenaga\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"zgh\\\",\\\"iso639_2en\\\":\\\"zgh\\\",\\\"iso639_3\\\":\\\"zgh\\\",\\\"name\\\":[\\\"Standard Moroccan Tamazight\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"znd\\\",\\\"iso639_2en\\\":\\\"znd\\\",\\\"iso639_3\\\":\\\"znd\\\",\\\"name\\\":[\\\"Zande languages\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"zun\\\",\\\"iso639_2en\\\":\\\"zun\\\",\\\"iso639_3\\\":\\\"zun\\\",\\\"name\\\":[\\\"Zuni\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"zxx\\\",\\\"iso639_2en\\\":\\\"zxx\\\",\\\"iso639_3\\\":\\\"zxx\\\",\\\"name\\\":[\\\"No linguistic content\\\",\\\" Not applicable\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"},{\\\"iso639_1\\\":\\\"\\\",\\\"iso639_2\\\":\\\"zza\\\",\\\"iso639_2en\\\":\\\"zza\\\",\\\"iso639_3\\\":\\\"zza\\\",\\\"name\\\":[\\\"Zaza\\\",\\\" Dimili\\\",\\\" Dimli\\\",\\\" Kirdki\\\",\\\" Kirmanjki\\\",\\\" Zazaki\\\"],\\\"nativeName\\\":[\\\"\\\"],\\\"directrion\\\":\\\"LTR\\\",\\\"family\\\":\\\"\\\"}],\\\"countries\\\":[{\\\"code_2\\\":\\\"AF\\\",\\\"code_3\\\":\\\"AFG\\\",\\\"numCode\\\":\\\"004\\\",\\\"name\\\":\\\"Afghanistan\\\",\\\"languages\\\":[\\\"prs\\\",\\\"pus\\\",\\\"fas\\\"]},{\\\"code_2\\\":\\\"AX\\\",\\\"code_3\\\":\\\"ALA\\\",\\\"numCode\\\":\\\"248\\\",\\\"name\\\":\\\"Åland Islands\\\",\\\"languages\\\":[\\\"swe\\\"]},{\\\"code_2\\\":\\\"AL\\\",\\\"code_3\\\":\\\"ALB\\\",\\\"numCode\\\":\\\"008\\\",\\\"name\\\":\\\"Albania\\\",\\\"languages\\\":[\\\"sqi\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"sq-AL\\\",\\\"displayName\\\":\\\"Albanian - Albania\\\",\\\"cultureCode\\\":\\\"0x041C\\\"}]},{\\\"code_2\\\":\\\"DZ\\\",\\\"code_3\\\":\\\"DZA\\\",\\\"numCode\\\":\\\"012\\\",\\\"name\\\":\\\"Algeria\\\",\\\"languages\\\":[\\\"ara\\\",\\\"ber\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ar-DZ\\\",\\\"displayName\\\":\\\"Arabic - Algeria\\\",\\\"cultureCode\\\":\\\"0x1401\\\"}]},{\\\"code_2\\\":\\\"AS\\\",\\\"code_3\\\":\\\"ASM\\\",\\\"numCode\\\":\\\"016\\\",\\\"name\\\":\\\"American Samoa\\\"},{\\\"code_2\\\":\\\"AD\\\",\\\"code_3\\\":\\\"AND\\\",\\\"numCode\\\":\\\"020\\\",\\\"name\\\":\\\"Andorra\\\",\\\"languages\\\":[\\\"cat\\\"]},{\\\"code_2\\\":\\\"AO\\\",\\\"code_3\\\":\\\"AGO\\\",\\\"numCode\\\":\\\"024\\\",\\\"name\\\":\\\"Angola\\\",\\\"languages\\\":[\\\"kon\\\",\\\"kmb\\\",\\\"kua\\\",\\\"por\\\",\\\"umb\\\"]},{\\\"code_2\\\":\\\"AI\\\",\\\"code_3\\\":\\\"AIA\\\",\\\"numCode\\\":\\\"660\\\",\\\"name\\\":\\\"Anguilla\\\"},{\\\"code_2\\\":\\\"AQ\\\",\\\"code_3\\\":\\\"ATA\\\",\\\"numCode\\\":\\\"010\\\",\\\"name\\\":\\\"Antarctica\\\"},{\\\"code_2\\\":\\\"AG\\\",\\\"code_3\\\":\\\"ATG\\\",\\\"numCode\\\":\\\"028\\\",\\\"name\\\":\\\"Antigua and Barbuda\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"AR\\\",\\\"code_3\\\":\\\"ARG\\\",\\\"numCode\\\":\\\"032\\\",\\\"name\\\":\\\"Argentina\\\",\\\"languages\\\":[\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-AR\\\",\\\"displayName\\\":\\\"Spanish - Argentina\\\",\\\"cultureCode\\\":\\\"0x2C0A\\\"}]},{\\\"code_2\\\":\\\"AM\\\",\\\"code_3\\\":\\\"ARM\\\",\\\"numCode\\\":\\\"051\\\",\\\"name\\\":\\\"Armenia\\\",\\\"languages\\\":[\\\"hye\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"hy-AM\\\",\\\"displayName\\\":\\\"Armenian - Armenia\\\",\\\"cultureCode\\\":\\\"0x042B\\\"}]},{\\\"code_2\\\":\\\"AW\\\",\\\"code_3\\\":\\\"ABW\\\",\\\"numCode\\\":\\\"533\\\",\\\"name\\\":\\\"Aruba\\\",\\\"languages\\\":[\\\"nld\\\",\\\"pap\\\"]},{\\\"code_2\\\":\\\"AU\\\",\\\"code_3\\\":\\\"AUS\\\",\\\"numCode\\\":\\\"036\\\",\\\"name\\\":\\\"Australia\\\",\\\"languages\\\":[\\\"eng\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"en-AU\\\",\\\"displayName\\\":\\\"English - Australia\\\",\\\"cultureCode\\\":\\\"0x0C09\\\"}]},{\\\"code_2\\\":\\\"AT\\\",\\\"code_3\\\":\\\"AUT\\\",\\\"numCode\\\":\\\"040\\\",\\\"name\\\":\\\"Austria\\\",\\\"languages\\\":[\\\"deu\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"de-AT\\\",\\\"displayName\\\":\\\"German - Austria\\\",\\\"cultureCode\\\":\\\"0x0C07\\\"}]},{\\\"code_2\\\":\\\"AZ\\\",\\\"code_3\\\":\\\"AZE\\\",\\\"numCode\\\":\\\"031\\\",\\\"name\\\":\\\"Azerbaijan\\\",\\\"languages\\\":[\\\"aze\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"Cy-az-AZ\\\",\\\"displayName\\\":\\\"Azeri (Cyrillic) - Azerbaijan\\\",\\\"cultureCode\\\":\\\"0x082C\\\"},{\\\"langCultureName\\\":\\\"Lt-az-AZ\\\",\\\"displayName\\\":\\\"Azeri (Latin) - Azerbaijan\\\",\\\"cultureCode\\\":\\\"0x042C\\\"}]},{\\\"code_2\\\":\\\"BS\\\",\\\"code_3\\\":\\\"BHS\\\",\\\"numCode\\\":\\\"044\\\",\\\"name\\\":\\\"Bahamas\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"BH\\\",\\\"code_3\\\":\\\"BHR\\\",\\\"numCode\\\":\\\"048\\\",\\\"name\\\":\\\"Bahrain\\\",\\\"languages\\\":[\\\"ara\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ar-BH\\\",\\\"displayName\\\":\\\"Arabic - Bahrain\\\",\\\"cultureCode\\\":\\\"0x3C01\\\"}]},{\\\"code_2\\\":\\\"BD\\\",\\\"code_3\\\":\\\"BGD\\\",\\\"numCode\\\":\\\"050\\\",\\\"name\\\":\\\"Bangladesh\\\",\\\"languages\\\":[\\\"ben\\\"]},{\\\"code_2\\\":\\\"BB\\\",\\\"code_3\\\":\\\"BRB\\\",\\\"numCode\\\":\\\"052\\\",\\\"name\\\":\\\"Barbados\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"BY\\\",\\\"code_3\\\":\\\"BLR\\\",\\\"numCode\\\":\\\"112\\\",\\\"name\\\":\\\"Belarus\\\",\\\"languages\\\":[\\\"bel\\\",\\\"rus\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"be-BY\\\",\\\"displayName\\\":\\\"Belarusian - Belarus\\\",\\\"cultureCode\\\":\\\"0x0423\\\"}]},{\\\"code_2\\\":\\\"BE\\\",\\\"code_3\\\":\\\"BEL\\\",\\\"numCode\\\":\\\"056\\\",\\\"name\\\":\\\"Belgium\\\",\\\"languages\\\":[\\\"nld\\\",\\\"fra\\\",\\\"deu\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"nl-BE\\\",\\\"displayName\\\":\\\"Dutch - Belgium\\\",\\\"cultureCode\\\":\\\"0x0813\\\"},{\\\"langCultureName\\\":\\\"fr-BE\\\",\\\"displayName\\\":\\\"French - Belgium\\\",\\\"cultureCode\\\":\\\"0x080C\\\"}]},{\\\"code_2\\\":\\\"BZ\\\",\\\"code_3\\\":\\\"BLZ\\\",\\\"numCode\\\":\\\"084\\\",\\\"name\\\":\\\"Belize\\\",\\\"languages\\\":[\\\"eng\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"en-BZ\\\",\\\"displayName\\\":\\\"English - Belize\\\",\\\"cultureCode\\\":\\\"0x2809\\\"}]},{\\\"code_2\\\":\\\"BJ\\\",\\\"code_3\\\":\\\"BEN\\\",\\\"numCode\\\":\\\"204\\\",\\\"name\\\":\\\"Benin\\\",\\\"languages\\\":[\\\"fra\\\",\\\"ful\\\",\\\"yor\\\"]},{\\\"code_2\\\":\\\"BM\\\",\\\"code_3\\\":\\\"BMU\\\",\\\"numCode\\\":\\\"060\\\",\\\"name\\\":\\\"Bermuda\\\"},{\\\"code_2\\\":\\\"BT\\\",\\\"code_3\\\":\\\"BTN\\\",\\\"numCode\\\":\\\"064\\\",\\\"name\\\":\\\"Bhutan\\\",\\\"languages\\\":[\\\"dzo\\\"]},{\\\"code_2\\\":\\\"BO\\\",\\\"code_3\\\":\\\"BOL\\\",\\\"numCode\\\":\\\"068\\\",\\\"name\\\":\\\"Bolivia, Plurinational State of\\\",\\\"languages\\\":[\\\"aym\\\",\\\"grn\\\",\\\"que\\\",\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-BO\\\",\\\"displayName\\\":\\\"Spanish - Bolivia\\\",\\\"cultureCode\\\":\\\"0x400A\\\"}]},{\\\"code_2\\\":\\\"BQ\\\",\\\"code_3\\\":\\\"BES\\\",\\\"numCode\\\":\\\"535\\\",\\\"name\\\":\\\"Bonaire, Sint Eustatius and Saba\\\"},{\\\"code_2\\\":\\\"BA\\\",\\\"code_3\\\":\\\"BIH\\\",\\\"numCode\\\":\\\"070\\\",\\\"name\\\":\\\"Bosnia and Herzegovina\\\",\\\"languages\\\":[\\\"bos\\\",\\\"hrv\\\",\\\"srp\\\"]},{\\\"code_2\\\":\\\"BW\\\",\\\"code_3\\\":\\\"BWA\\\",\\\"numCode\\\":\\\"072\\\",\\\"name\\\":\\\"Botswana\\\",\\\"languages\\\":[\\\"eng\\\",\\\"tsn\\\"]},{\\\"code_2\\\":\\\"BV\\\",\\\"code_3\\\":\\\"BVT\\\",\\\"numCode\\\":\\\"074\\\",\\\"name\\\":\\\"Bouvet Island\\\"},{\\\"code_2\\\":\\\"BR\\\",\\\"code_3\\\":\\\"BRA\\\",\\\"numCode\\\":\\\"076\\\",\\\"name\\\":\\\"Brazil\\\",\\\"languages\\\":[\\\"por\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"pt-BR\\\",\\\"displayName\\\":\\\"Portuguese - Brazil\\\",\\\"cultureCode\\\":\\\"0x0416\\\"}]},{\\\"code_2\\\":\\\"IO\\\",\\\"code_3\\\":\\\"IOT\\\",\\\"numCode\\\":\\\"086\\\",\\\"name\\\":\\\"British Indian Ocean Territory\\\"},{\\\"code_2\\\":\\\"BN\\\",\\\"code_3\\\":\\\"BRN\\\",\\\"numCode\\\":\\\"096\\\",\\\"name\\\":\\\"Brunei Darussalam\\\",\\\"languages\\\":[\\\"msa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ms-BN\\\",\\\"displayName\\\":\\\"Malay - Brunei\\\",\\\"cultureCode\\\":\\\"0x083E\\\"}]},{\\\"code_2\\\":\\\"BG\\\",\\\"code_3\\\":\\\"BGR\\\",\\\"numCode\\\":\\\"100\\\",\\\"name\\\":\\\"Bulgaria\\\",\\\"languages\\\":[\\\"bul\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"bg-BG\\\",\\\"displayName\\\":\\\"Bulgarian - Bulgaria\\\",\\\"cultureCode\\\":\\\"0x0402\\\"}]},{\\\"code_2\\\":\\\"BF\\\",\\\"code_3\\\":\\\"BFA\\\",\\\"numCode\\\":\\\"854\\\",\\\"name\\\":\\\"Burkina Faso\\\",\\\"languages\\\":[\\\"fra\\\",\\\"ful\\\",\\\"mos\\\"]},{\\\"code_2\\\":\\\"BI\\\",\\\"code_3\\\":\\\"BDI\\\",\\\"numCode\\\":\\\"108\\\",\\\"name\\\":\\\"Burundi\\\",\\\"languages\\\":[\\\"fra\\\",\\\"run\\\"]},{\\\"code_2\\\":\\\"KH\\\",\\\"code_3\\\":\\\"KHM\\\",\\\"numCode\\\":\\\"116\\\",\\\"name\\\":\\\"Cambodia\\\",\\\"languages\\\":[\\\"khm\\\"]},{\\\"code_2\\\":\\\"CM\\\",\\\"code_3\\\":\\\"CMR\\\",\\\"numCode\\\":\\\"120\\\",\\\"name\\\":\\\"Cameroon\\\",\\\"languages\\\":[\\\"eng\\\",\\\"fra\\\"]},{\\\"code_2\\\":\\\"CA\\\",\\\"code_3\\\":\\\"CAN\\\",\\\"numCode\\\":\\\"124\\\",\\\"name\\\":\\\"Canada\\\",\\\"languages\\\":[\\\"eng\\\",\\\"fra\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"en-CA\\\",\\\"displayName\\\":\\\"English - Canada\\\",\\\"cultureCode\\\":\\\"0x1009\\\"},{\\\"langCultureName\\\":\\\"fr-CA\\\",\\\"displayName\\\":\\\"French - Canada\\\",\\\"cultureCode\\\":\\\"0x0C0C\\\"}]},{\\\"code_2\\\":\\\"CV\\\",\\\"code_3\\\":\\\"CPV\\\",\\\"numCode\\\":\\\"132\\\",\\\"name\\\":\\\"Cape Verde\\\",\\\"languages\\\":[\\\"por\\\"]},{\\\"code_2\\\":\\\"KY\\\",\\\"code_3\\\":\\\"CYM\\\",\\\"numCode\\\":\\\"136\\\",\\\"name\\\":\\\"Cayman Islands\\\"},{\\\"code_2\\\":\\\"CF\\\",\\\"code_3\\\":\\\"CAF\\\",\\\"numCode\\\":\\\"140\\\",\\\"name\\\":\\\"Central African Republic\\\",\\\"languages\\\":[\\\"fra\\\",\\\"sag\\\"]},{\\\"code_2\\\":\\\"TD\\\",\\\"code_3\\\":\\\"TCD\\\",\\\"numCode\\\":\\\"148\\\",\\\"name\\\":\\\"Chad\\\",\\\"languages\\\":[\\\"ara\\\",\\\"fra\\\"]},{\\\"code_2\\\":\\\"CL\\\",\\\"code_3\\\":\\\"CHL\\\",\\\"numCode\\\":\\\"152\\\",\\\"name\\\":\\\"Chile\\\",\\\"languages\\\":[\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-CL\\\",\\\"displayName\\\":\\\"Spanish - Chile\\\",\\\"cultureCode\\\":\\\"0x340A\\\"}]},{\\\"code_2\\\":\\\"CN\\\",\\\"code_3\\\":\\\"CHN\\\",\\\"numCode\\\":\\\"156\\\",\\\"name\\\":\\\"China\\\",\\\"languages\\\":[\\\"zho\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"zh-CN\\\",\\\"displayName\\\":\\\"Chinese - China\\\",\\\"cultureCode\\\":\\\"0x0804\\\"},{\\\"langCultureName\\\":\\\"zh-CHS\\\",\\\"displayName\\\":\\\"Chinese (Simplified)\\\",\\\"cultureCode\\\":\\\"0x0004\\\"},{\\\"langCultureName\\\":\\\"zh-CHT\\\",\\\"displayName\\\":\\\"Chinese (Traditional)\\\",\\\"cultureCode\\\":\\\"0x7C04\\\"}]},{\\\"code_2\\\":\\\"CX\\\",\\\"code_3\\\":\\\"CXR\\\",\\\"numCode\\\":\\\"162\\\",\\\"name\\\":\\\"Christmas Island\\\"},{\\\"code_2\\\":\\\"CC\\\",\\\"code_3\\\":\\\"CCK\\\",\\\"numCode\\\":\\\"166\\\",\\\"name\\\":\\\"Cocos (Keeling) Islands\\\"},{\\\"code_2\\\":\\\"CO\\\",\\\"code_3\\\":\\\"COL\\\",\\\"numCode\\\":\\\"170\\\",\\\"name\\\":\\\"Colombia\\\",\\\"languages\\\":[\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-CO\\\",\\\"displayName\\\":\\\"Spanish - Colombia\\\",\\\"cultureCode\\\":\\\"0x240A\\\"}]},{\\\"code_2\\\":\\\"KM\\\",\\\"code_3\\\":\\\"COM\\\",\\\"numCode\\\":\\\"174\\\",\\\"name\\\":\\\"Comoros\\\",\\\"languages\\\":[\\\"ara\\\",\\\"fra\\\"]},{\\\"code_2\\\":\\\"CG\\\",\\\"code_3\\\":\\\"COG\\\",\\\"numCode\\\":\\\"178\\\",\\\"name\\\":\\\"Congo\\\",\\\"languages\\\":[\\\"fra\\\",\\\"kon\\\",\\\"lin\\\"]},{\\\"code_2\\\":\\\"CD\\\",\\\"code_3\\\":\\\"COD\\\",\\\"numCode\\\":\\\"180\\\",\\\"name\\\":\\\"Congo, the Democratic Republic of the\\\",\\\"languages\\\":[\\\"fra\\\",\\\"kon\\\",\\\"lin\\\",\\\"swa\\\",\\\"lub\\\"]},{\\\"code_2\\\":\\\"CK\\\",\\\"code_3\\\":\\\"COK\\\",\\\"numCode\\\":\\\"184\\\",\\\"name\\\":\\\"Cook Islands\\\"},{\\\"code_2\\\":\\\"CR\\\",\\\"code_3\\\":\\\"CRI\\\",\\\"numCode\\\":\\\"188\\\",\\\"name\\\":\\\"Costa Rica\\\",\\\"languages\\\":[\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-CR\\\",\\\"displayName\\\":\\\"Spanish - Costa Rica\\\",\\\"cultureCode\\\":\\\"0x140A\\\"}]},{\\\"code_2\\\":\\\"CI\\\",\\\"code_3\\\":\\\"CIV\\\",\\\"numCode\\\":\\\"384\\\",\\\"name\\\":\\\"Côte d'Ivoire\\\",\\\"languages\\\":[\\\"fra\\\"]},{\\\"code_2\\\":\\\"HR\\\",\\\"code_3\\\":\\\"HRV\\\",\\\"numCode\\\":\\\"191\\\",\\\"name\\\":\\\"Croatia\\\",\\\"languages\\\":[\\\"hrv\\\",\\\"ita\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"hr-HR\\\",\\\"displayName\\\":\\\"Croatian - Croatia\\\",\\\"cultureCode\\\":\\\"0x041A\\\"}]},{\\\"code_2\\\":\\\"CU\\\",\\\"code_3\\\":\\\"CUB\\\",\\\"numCode\\\":\\\"192\\\",\\\"name\\\":\\\"Cuba\\\",\\\"languages\\\":[\\\"spa\\\"]},{\\\"code_2\\\":\\\"CW\\\",\\\"code_3\\\":\\\"CUW\\\",\\\"numCode\\\":\\\"531\\\",\\\"name\\\":\\\"Curaçao\\\",\\\"languages\\\":[\\\"nld\\\",\\\"eng\\\",\\\"pap\\\"]},{\\\"code_2\\\":\\\"CY\\\",\\\"code_3\\\":\\\"CYP\\\",\\\"numCode\\\":\\\"196\\\",\\\"name\\\":\\\"Cyprus\\\",\\\"languages\\\":[\\\"ell\\\",\\\"tur\\\"]},{\\\"code_2\\\":\\\"CZ\\\",\\\"code_3\\\":\\\"CZE\\\",\\\"numCode\\\":\\\"203\\\",\\\"name\\\":\\\"Czech Republic\\\",\\\"languages\\\":[\\\"ces\\\",\\\"slk\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"cs-CZ\\\",\\\"displayName\\\":\\\"Czech - Czech Republic\\\",\\\"cultureCode\\\":\\\"0x0405\\\"}]},{\\\"code_2\\\":\\\"DK\\\",\\\"code_3\\\":\\\"DNK\\\",\\\"numCode\\\":\\\"208\\\",\\\"name\\\":\\\"Denmark\\\",\\\"languages\\\":[\\\"dan\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"da-DK\\\",\\\"displayName\\\":\\\"Danish - Denmark\\\",\\\"cultureCode\\\":\\\"0x0406\\\"}]},{\\\"code_2\\\":\\\"DJ\\\",\\\"code_3\\\":\\\"DJI\\\",\\\"numCode\\\":\\\"262\\\",\\\"name\\\":\\\"Djibouti\\\",\\\"languages\\\":[\\\"aar\\\",\\\"ara\\\",\\\"fra\\\",\\\"som\\\"]},{\\\"code_2\\\":\\\"DM\\\",\\\"code_3\\\":\\\"DMA\\\",\\\"numCode\\\":\\\"212\\\",\\\"name\\\":\\\"Dominica\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"DO\\\",\\\"code_3\\\":\\\"DOM\\\",\\\"numCode\\\":\\\"214\\\",\\\"name\\\":\\\"Dominican Republic\\\",\\\"languages\\\":[\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-DO\\\",\\\"displayName\\\":\\\"Spanish - Dominican Republic\\\",\\\"cultureCode\\\":\\\"0x1C0A\\\"}]},{\\\"code_2\\\":\\\"EC\\\",\\\"code_3\\\":\\\"ECU\\\",\\\"numCode\\\":\\\"218\\\",\\\"name\\\":\\\"Ecuador\\\",\\\"languages\\\":[\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-EC\\\",\\\"displayName\\\":\\\"Spanish - Ecuador\\\",\\\"cultureCode\\\":\\\"0x300A\\\"}]},{\\\"code_2\\\":\\\"EG\\\",\\\"code_3\\\":\\\"EGY\\\",\\\"numCode\\\":\\\"818\\\",\\\"name\\\":\\\"Egypt\\\",\\\"languages\\\":[\\\"ara\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ar-EG\\\",\\\"displayName\\\":\\\"Arabic - Egypt\\\",\\\"cultureCode\\\":\\\"0x0C01\\\"}]},{\\\"code_2\\\":\\\"SV\\\",\\\"code_3\\\":\\\"SLV\\\",\\\"numCode\\\":\\\"222\\\",\\\"name\\\":\\\"El Salvador\\\",\\\"languages\\\":[\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-SV\\\",\\\"displayName\\\":\\\"Spanish - El Salvador\\\",\\\"cultureCode\\\":\\\"0x440A\\\"}]},{\\\"code_2\\\":\\\"GQ\\\",\\\"code_3\\\":\\\"GNQ\\\",\\\"numCode\\\":\\\"226\\\",\\\"name\\\":\\\"Equatorial Guinea\\\",\\\"languages\\\":[\\\"fra\\\",\\\"por\\\",\\\"spa\\\"]},{\\\"code_2\\\":\\\"ER\\\",\\\"code_3\\\":\\\"ERI\\\",\\\"numCode\\\":\\\"232\\\",\\\"name\\\":\\\"Eritrea\\\",\\\"languages\\\":[\\\"ara\\\",\\\"eng\\\",\\\"tir\\\"]},{\\\"code_2\\\":\\\"EE\\\",\\\"code_3\\\":\\\"EST\\\",\\\"numCode\\\":\\\"233\\\",\\\"name\\\":\\\"Estonia\\\",\\\"languages\\\":[\\\"est\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"et-EE\\\",\\\"displayName\\\":\\\"Estonian - Estonia\\\",\\\"cultureCode\\\":\\\"0x0425\\\"}]},{\\\"code_2\\\":\\\"ET\\\",\\\"code_3\\\":\\\"ETH\\\",\\\"numCode\\\":\\\"231\\\",\\\"name\\\":\\\"Ethiopia\\\",\\\"languages\\\":[\\\"amh\\\"]},{\\\"code_2\\\":\\\"FK\\\",\\\"code_3\\\":\\\"FLK\\\",\\\"numCode\\\":\\\"238\\\",\\\"name\\\":\\\"Falkland Islands (Malvinas)\\\"},{\\\"code_2\\\":\\\"FO\\\",\\\"code_3\\\":\\\"FRO\\\",\\\"numCode\\\":\\\"234\\\",\\\"name\\\":\\\"Faroe Islands\\\",\\\"languages\\\":[\\\"dan\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"fo-FO\\\",\\\"displayName\\\":\\\"Faroese - Faroe Islands\\\",\\\"cultureCode\\\":\\\"0x0438\\\"}]},{\\\"code_2\\\":\\\"FJ\\\",\\\"code_3\\\":\\\"FJI\\\",\\\"numCode\\\":\\\"242\\\",\\\"name\\\":\\\"Fiji\\\",\\\"languages\\\":[\\\"eng\\\",\\\"fij\\\",\\\"hin\\\",\\\"urd\\\"]},{\\\"code_2\\\":\\\"FI\\\",\\\"code_3\\\":\\\"FIN\\\",\\\"numCode\\\":\\\"246\\\",\\\"name\\\":\\\"Finland\\\",\\\"languages\\\":[\\\"fin\\\",\\\"swe\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"fi-FI\\\",\\\"displayName\\\":\\\"Finnish - Finland\\\",\\\"cultureCode\\\":\\\"0x040B\\\"},{\\\"langCultureName\\\":\\\"sv-FI\\\",\\\"displayName\\\":\\\"Swedish - Finland\\\",\\\"cultureCode\\\":\\\"0x081D\\\"}]},{\\\"code_2\\\":\\\"FR\\\",\\\"code_3\\\":\\\"FRA\\\",\\\"numCode\\\":\\\"250\\\",\\\"name\\\":\\\"France\\\",\\\"languages\\\":[\\\"fra\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"fr-FR\\\",\\\"displayName\\\":\\\"French - France\\\",\\\"cultureCode\\\":\\\"0x040C\\\"}]},{\\\"code_2\\\":\\\"GF\\\",\\\"code_3\\\":\\\"GUF\\\",\\\"numCode\\\":\\\"254\\\",\\\"name\\\":\\\"French Guiana\\\",\\\"languages\\\":[\\\"fra\\\"]},{\\\"code_2\\\":\\\"PF\\\",\\\"code_3\\\":\\\"PYF\\\",\\\"numCode\\\":\\\"258\\\",\\\"name\\\":\\\"French Polynesia\\\",\\\"languages\\\":[\\\"fra\\\"]},{\\\"code_2\\\":\\\"TF\\\",\\\"code_3\\\":\\\"ATF\\\",\\\"numCode\\\":\\\"260\\\",\\\"name\\\":\\\"French Southern Territories\\\"},{\\\"code_2\\\":\\\"GA\\\",\\\"code_3\\\":\\\"GAB\\\",\\\"numCode\\\":\\\"266\\\",\\\"name\\\":\\\"Gabon\\\",\\\"languages\\\":[\\\"fra\\\"]},{\\\"code_2\\\":\\\"GM\\\",\\\"code_3\\\":\\\"GMB\\\",\\\"numCode\\\":\\\"270\\\",\\\"name\\\":\\\"Gambia\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"GE\\\",\\\"code_3\\\":\\\"GEO\\\",\\\"numCode\\\":\\\"268\\\",\\\"name\\\":\\\"Georgia\\\",\\\"languages\\\":[\\\"kat\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ka-GE\\\",\\\"displayName\\\":\\\"Georgian - Georgia\\\",\\\"cultureCode\\\":\\\"0x0437\\\"}]},{\\\"code_2\\\":\\\"DE\\\",\\\"code_3\\\":\\\"DEU\\\",\\\"numCode\\\":\\\"276\\\",\\\"name\\\":\\\"Germany\\\",\\\"languages\\\":[\\\"deu\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"de-DE\\\",\\\"displayName\\\":\\\"German - Germany\\\",\\\"cultureCode\\\":\\\"0x0407\\\"}]},{\\\"code_2\\\":\\\"GH\\\",\\\"code_3\\\":\\\"GHA\\\",\\\"numCode\\\":\\\"288\\\",\\\"name\\\":\\\"Ghana\\\",\\\"languages\\\":[\\\"aka\\\",\\\"eng\\\",\\\"ewe\\\",\\\"gaa\\\"]},{\\\"code_2\\\":\\\"GI\\\",\\\"code_3\\\":\\\"GIB\\\",\\\"numCode\\\":\\\"292\\\",\\\"name\\\":\\\"Gibraltar\\\"},{\\\"code_2\\\":\\\"GR\\\",\\\"code_3\\\":\\\"GRC\\\",\\\"numCode\\\":\\\"300\\\",\\\"name\\\":\\\"Greece\\\",\\\"languages\\\":[\\\"ell\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"el-GR\\\",\\\"displayName\\\":\\\"Greek - Greece\\\",\\\"cultureCode\\\":\\\"0x0408\\\"}]},{\\\"code_2\\\":\\\"GL\\\",\\\"code_3\\\":\\\"GRL\\\",\\\"numCode\\\":\\\"304\\\",\\\"name\\\":\\\"Greenland\\\"},{\\\"code_2\\\":\\\"GD\\\",\\\"code_3\\\":\\\"GRD\\\",\\\"numCode\\\":\\\"308\\\",\\\"name\\\":\\\"Grenada\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"GP\\\",\\\"code_3\\\":\\\"GLP\\\",\\\"numCode\\\":\\\"312\\\",\\\"name\\\":\\\"Guadeloupe\\\",\\\"languages\\\":[\\\"fra\\\"]},{\\\"code_2\\\":\\\"GU\\\",\\\"code_3\\\":\\\"GUM\\\",\\\"numCode\\\":\\\"316\\\",\\\"name\\\":\\\"Guam\\\"},{\\\"code_2\\\":\\\"GT\\\",\\\"code_3\\\":\\\"GTM\\\",\\\"numCode\\\":\\\"320\\\",\\\"name\\\":\\\"Guatemala\\\",\\\"languages\\\":[\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-GT\\\",\\\"displayName\\\":\\\"Spanish - Guatemala\\\",\\\"cultureCode\\\":\\\"0x100A\\\"}]},{\\\"code_2\\\":\\\"GG\\\",\\\"code_3\\\":\\\"GGY\\\",\\\"numCode\\\":\\\"831\\\",\\\"name\\\":\\\"Guernsey\\\"},{\\\"code_2\\\":\\\"GN\\\",\\\"code_3\\\":\\\"GIN\\\",\\\"numCode\\\":\\\"324\\\",\\\"name\\\":\\\"Guinea\\\",\\\"languages\\\":[\\\"fra\\\"]},{\\\"code_2\\\":\\\"GW\\\",\\\"code_3\\\":\\\"GNB\\\",\\\"numCode\\\":\\\"624\\\",\\\"name\\\":\\\"Guinea-Bissau\\\",\\\"languages\\\":[\\\"por\\\"]},{\\\"code_2\\\":\\\"GY\\\",\\\"code_3\\\":\\\"GUY\\\",\\\"numCode\\\":\\\"328\\\",\\\"name\\\":\\\"Guyana\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"HT\\\",\\\"code_3\\\":\\\"HTI\\\",\\\"numCode\\\":\\\"332\\\",\\\"name\\\":\\\"Haiti\\\",\\\"languages\\\":[\\\"fra\\\",\\\"hat\\\"]},{\\\"code_2\\\":\\\"HM\\\",\\\"code_3\\\":\\\"HMD\\\",\\\"numCode\\\":\\\"334\\\",\\\"name\\\":\\\"Heard Island and McDonald Islands\\\"},{\\\"code_2\\\":\\\"VA\\\",\\\"code_3\\\":\\\"VAT\\\",\\\"numCode\\\":\\\"336\\\",\\\"name\\\":\\\"Holy See (Vatican City State)\\\",\\\"languages\\\":[\\\"ita\\\",\\\"lat\\\"]},{\\\"code_2\\\":\\\"HN\\\",\\\"code_3\\\":\\\"HND\\\",\\\"numCode\\\":\\\"340\\\",\\\"name\\\":\\\"Honduras\\\",\\\"languages\\\":[\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-HN\\\",\\\"displayName\\\":\\\"Spanish - Honduras\\\",\\\"cultureCode\\\":\\\"0x480A\\\"}]},{\\\"code_2\\\":\\\"HK\\\",\\\"code_3\\\":\\\"HKG\\\",\\\"numCode\\\":\\\"344\\\",\\\"name\\\":\\\"Hong Kong\\\",\\\"languages\\\":[\\\"zho\\\",\\\"eng\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"zh-HK\\\",\\\"displayName\\\":\\\"Chinese - Hong Kong SAR\\\",\\\"cultureCode\\\":\\\"0x0C04\\\"}]},{\\\"code_2\\\":\\\"HU\\\",\\\"code_3\\\":\\\"HUN\\\",\\\"numCode\\\":\\\"348\\\",\\\"name\\\":\\\"Hungary\\\",\\\"languages\\\":[\\\"hun\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"hu-HU\\\",\\\"displayName\\\":\\\"Hungarian - Hungary\\\",\\\"cultureCode\\\":\\\"0x040E\\\"}]},{\\\"code_2\\\":\\\"IS\\\",\\\"code_3\\\":\\\"ISL\\\",\\\"numCode\\\":\\\"352\\\",\\\"name\\\":\\\"Iceland\\\",\\\"languages\\\":[\\\"isl\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"is-IS\\\",\\\"displayName\\\":\\\"Icelandic - Iceland\\\",\\\"cultureCode\\\":\\\"0x040F\\\"}]},{\\\"code_2\\\":\\\"IN\\\",\\\"code_3\\\":\\\"IND\\\",\\\"numCode\\\":\\\"356\\\",\\\"name\\\":\\\"India\\\",\\\"languages\\\":[\\\"ben\\\",\\\"eng\\\",\\\"guj\\\",\\\"hin\\\",\\\"pan\\\",\\\"tam\\\",\\\"tel\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"gu-IN\\\",\\\"displayName\\\":\\\"Gujarati - India\\\",\\\"cultureCode\\\":\\\"0x0447\\\"},{\\\"langCultureName\\\":\\\"hi-IN\\\",\\\"displayName\\\":\\\"Hindi - India\\\",\\\"cultureCode\\\":\\\"0x0439\\\"},{\\\"langCultureName\\\":\\\"kn-IN\\\",\\\"displayName\\\":\\\"Kannada - India\\\",\\\"cultureCode\\\":\\\"0x044B\\\"},{\\\"langCultureName\\\":\\\"kok-IN\\\",\\\"displayName\\\":\\\"Konkani - India\\\",\\\"cultureCode\\\":\\\"0x0457\\\"},{\\\"langCultureName\\\":\\\"mr-IN\\\",\\\"displayName\\\":\\\"Marathi - India\\\",\\\"cultureCode\\\":\\\"0x044E\\\"},{\\\"langCultureName\\\":\\\"pa-IN\\\",\\\"displayName\\\":\\\"Punjabi - India\\\",\\\"cultureCode\\\":\\\"0x0446\\\"},{\\\"langCultureName\\\":\\\"sa-IN\\\",\\\"displayName\\\":\\\"Sanskrit - India\\\",\\\"cultureCode\\\":\\\"0x044F\\\"},{\\\"langCultureName\\\":\\\"ta-IN\\\",\\\"displayName\\\":\\\"Tamil - India\\\",\\\"cultureCode\\\":\\\"0x0449\\\"},{\\\"langCultureName\\\":\\\"te-IN\\\",\\\"displayName\\\":\\\"Telugu - India\\\",\\\"cultureCode\\\":\\\"0x044A\\\"}]},{\\\"code_2\\\":\\\"ID\\\",\\\"code_3\\\":\\\"IDN\\\",\\\"numCode\\\":\\\"360\\\",\\\"name\\\":\\\"Indonesia\\\",\\\"languages\\\":[\\\"ind\\\",\\\"msa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"id-ID\\\",\\\"displayName\\\":\\\"Indonesian - Indonesia\\\",\\\"cultureCode\\\":\\\"0x0421\\\"}]},{\\\"code_2\\\":\\\"IR\\\",\\\"code_3\\\":\\\"IRN\\\",\\\"numCode\\\":\\\"364\\\",\\\"name\\\":\\\"Iran, Islamic Republic of\\\",\\\"languages\\\":[\\\"fas\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"fa-IR\\\",\\\"displayName\\\":\\\"Farsi - Iran\\\",\\\"cultureCode\\\":\\\"0x0429\\\"}]},{\\\"code_2\\\":\\\"IQ\\\",\\\"code_3\\\":\\\"IRQ\\\",\\\"numCode\\\":\\\"368\\\",\\\"name\\\":\\\"Iraq\\\",\\\"languages\\\":[\\\"ara\\\",\\\"kur\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ar-IQ\\\",\\\"displayName\\\":\\\"Arabic - Iraq\\\",\\\"cultureCode\\\":\\\"0x0801\\\"}]},{\\\"code_2\\\":\\\"IE\\\",\\\"code_3\\\":\\\"IRL\\\",\\\"numCode\\\":\\\"372\\\",\\\"name\\\":\\\"Ireland\\\",\\\"languages\\\":[\\\"eng\\\",\\\"gle\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"en-IE\\\",\\\"displayName\\\":\\\"English - Ireland\\\",\\\"cultureCode\\\":\\\"0x1809\\\"}]},{\\\"code_2\\\":\\\"IM\\\",\\\"code_3\\\":\\\"IMN\\\",\\\"numCode\\\":\\\"833\\\",\\\"name\\\":\\\"Isle of Man\\\"},{\\\"code_2\\\":\\\"IL\\\",\\\"code_3\\\":\\\"ISR\\\",\\\"numCode\\\":\\\"376\\\",\\\"name\\\":\\\"Israel\\\",\\\"languages\\\":[\\\"ara\\\",\\\"heb\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"he-IL\\\",\\\"displayName\\\":\\\"Hebrew - Israel\\\",\\\"cultureCode\\\":\\\"0x040D\\\"}]},{\\\"code_2\\\":\\\"IT\\\",\\\"code_3\\\":\\\"ITA\\\",\\\"numCode\\\":\\\"380\\\",\\\"name\\\":\\\"Italy\\\",\\\"languages\\\":[\\\"fra\\\",\\\"deu\\\",\\\"ita\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"it-IT\\\",\\\"displayName\\\":\\\"Italian - Italy\\\",\\\"cultureCode\\\":\\\"0x0410\\\"}]},{\\\"code_2\\\":\\\"JM\\\",\\\"code_3\\\":\\\"JAM\\\",\\\"numCode\\\":\\\"388\\\",\\\"name\\\":\\\"Jamaica\\\",\\\"languages\\\":[\\\"eng\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"en-JM\\\",\\\"displayName\\\":\\\"English - Jamaica\\\",\\\"cultureCode\\\":\\\"0x2009\\\"}]},{\\\"code_2\\\":\\\"JP\\\",\\\"code_3\\\":\\\"JPN\\\",\\\"numCode\\\":\\\"392\\\",\\\"name\\\":\\\"Japan\\\",\\\"languages\\\":[\\\"jpn\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ja-JP\\\",\\\"displayName\\\":\\\"Japanese - Japan\\\",\\\"cultureCode\\\":\\\"0x0411\\\"}]},{\\\"code_2\\\":\\\"JE\\\",\\\"code_3\\\":\\\"JEY\\\",\\\"numCode\\\":\\\"832\\\",\\\"name\\\":\\\"Jersey\\\",\\\"languages\\\":[\\\"fra\\\"]},{\\\"code_2\\\":\\\"JO\\\",\\\"code_3\\\":\\\"JOR\\\",\\\"numCode\\\":\\\"400\\\",\\\"name\\\":\\\"Jordan\\\",\\\"languages\\\":[\\\"ara\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ar-JO\\\",\\\"displayName\\\":\\\"Arabic - Jordan\\\",\\\"cultureCode\\\":\\\"0x2C01\\\"}]},{\\\"code_2\\\":\\\"KZ\\\",\\\"code_3\\\":\\\"KAZ\\\",\\\"numCode\\\":\\\"398\\\",\\\"name\\\":\\\"Kazakhstan\\\",\\\"languages\\\":[\\\"kaz\\\",\\\"rus\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"kk-KZ\\\",\\\"displayName\\\":\\\"Kazakh - Kazakhstan\\\",\\\"cultureCode\\\":\\\"0x043F\\\"},{\\\"langCultureName\\\":\\\"ky-KZ\\\",\\\"displayName\\\":\\\"Kyrgyz - Kazakhstan\\\",\\\"cultureCode\\\":\\\"0x0440\\\"}]},{\\\"code_2\\\":\\\"KE\\\",\\\"code_3\\\":\\\"KEN\\\",\\\"numCode\\\":\\\"404\\\",\\\"name\\\":\\\"Kenya\\\",\\\"languages\\\":[\\\"eng\\\",\\\"swa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"sw-KE\\\",\\\"displayName\\\":\\\"Swahili - Kenya\\\",\\\"cultureCode\\\":\\\"0x0441\\\"}]},{\\\"code_2\\\":\\\"KI\\\",\\\"code_3\\\":\\\"KIR\\\",\\\"numCode\\\":\\\"296\\\",\\\"name\\\":\\\"Kiribati\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"KP\\\",\\\"code_3\\\":\\\"PRK\\\",\\\"numCode\\\":\\\"408\\\",\\\"name\\\":\\\"Korea, Democratic People's Republic of\\\",\\\"languages\\\":[\\\"kor\\\"]},{\\\"code_2\\\":\\\"KR\\\",\\\"code_3\\\":\\\"KOR\\\",\\\"numCode\\\":\\\"410\\\",\\\"name\\\":\\\"Korea, Republic of\\\",\\\"languages\\\":[\\\"kor\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ko-KR\\\",\\\"displayName\\\":\\\"Korean - Korea\\\",\\\"cultureCode\\\":\\\"0x0412\\\"}]},{\\\"code_2\\\":\\\"KW\\\",\\\"code_3\\\":\\\"KWT\\\",\\\"numCode\\\":\\\"414\\\",\\\"name\\\":\\\"Kuwait\\\",\\\"languages\\\":[\\\"ara\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ar-KW\\\",\\\"displayName\\\":\\\"Arabic - Kuwait\\\",\\\"cultureCode\\\":\\\"0x3401\\\"}]},{\\\"code_2\\\":\\\"KG\\\",\\\"code_3\\\":\\\"KGZ\\\",\\\"numCode\\\":\\\"417\\\",\\\"name\\\":\\\"Kyrgyzstan\\\",\\\"languages\\\":[\\\"kir\\\",\\\"rus\\\"]},{\\\"code_2\\\":\\\"LA\\\",\\\"code_3\\\":\\\"LAO\\\",\\\"numCode\\\":\\\"418\\\",\\\"name\\\":\\\"Lao People's Democratic Republic\\\",\\\"languages\\\":[\\\"lao\\\"]},{\\\"code_2\\\":\\\"LV\\\",\\\"code_3\\\":\\\"LVA\\\",\\\"numCode\\\":\\\"428\\\",\\\"name\\\":\\\"Latvia\\\",\\\"languages\\\":[\\\"lav\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"lv-LV\\\",\\\"displayName\\\":\\\"Latvian - Latvia\\\",\\\"cultureCode\\\":\\\"0x0426\\\"}]},{\\\"code_2\\\":\\\"LB\\\",\\\"code_3\\\":\\\"LBN\\\",\\\"numCode\\\":\\\"422\\\",\\\"name\\\":\\\"Lebanon\\\",\\\"languages\\\":[\\\"ara\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ar-LB\\\",\\\"displayName\\\":\\\"Arabic - Lebanon\\\",\\\"cultureCode\\\":\\\"0x3001\\\"}]},{\\\"code_2\\\":\\\"LS\\\",\\\"code_3\\\":\\\"LSO\\\",\\\"numCode\\\":\\\"426\\\",\\\"name\\\":\\\"Lesotho\\\",\\\"languages\\\":[\\\"eng\\\",\\\"sot\\\"]},{\\\"code_2\\\":\\\"LR\\\",\\\"code_3\\\":\\\"LBR\\\",\\\"numCode\\\":\\\"430\\\",\\\"name\\\":\\\"Liberia\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"LY\\\",\\\"code_3\\\":\\\"LBY\\\",\\\"numCode\\\":\\\"434\\\",\\\"name\\\":\\\"Libya\\\",\\\"languages\\\":[\\\"ara\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ar-LY\\\",\\\"displayName\\\":\\\"Arabic - Libya\\\",\\\"cultureCode\\\":\\\"0x1001\\\"}]},{\\\"code_2\\\":\\\"LI\\\",\\\"code_3\\\":\\\"LIE\\\",\\\"numCode\\\":\\\"438\\\",\\\"name\\\":\\\"Liechtenstein\\\",\\\"languages\\\":[\\\"deu\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"de-LI\\\",\\\"displayName\\\":\\\"German - Liechtenstein\\\",\\\"cultureCode\\\":\\\"0x1407\\\"}]},{\\\"code_2\\\":\\\"LT\\\",\\\"code_3\\\":\\\"LTU\\\",\\\"numCode\\\":\\\"440\\\",\\\"name\\\":\\\"Lithuania\\\",\\\"languages\\\":[\\\"lit\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"lt-LT\\\",\\\"displayName\\\":\\\"Lithuanian - Lithuania\\\",\\\"cultureCode\\\":\\\"0x0427\\\"}]},{\\\"code_2\\\":\\\"LU\\\",\\\"code_3\\\":\\\"LUX\\\",\\\"numCode\\\":\\\"442\\\",\\\"name\\\":\\\"Luxembourg\\\",\\\"languages\\\":[\\\"fra\\\",\\\"deu\\\",\\\"ltz\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"fr-LU\\\",\\\"displayName\\\":\\\"French - Luxembourg\\\",\\\"cultureCode\\\":\\\"0x140C\\\"},{\\\"langCultureName\\\":\\\"de-LU\\\",\\\"displayName\\\":\\\"German - Luxembourg\\\",\\\"cultureCode\\\":\\\"0x1007\\\"}]},{\\\"code_2\\\":\\\"MO\\\",\\\"code_3\\\":\\\"MAC\\\",\\\"numCode\\\":\\\"446\\\",\\\"name\\\":\\\"Macao\\\",\\\"languages\\\":[\\\"zho\\\",\\\"por\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"zh-MO\\\",\\\"displayName\\\":\\\"Chinese - Macau SAR\\\",\\\"cultureCode\\\":\\\"0x1404\\\"}]},{\\\"code_2\\\":\\\"MK\\\",\\\"code_3\\\":\\\"MKD\\\",\\\"numCode\\\":\\\"807\\\",\\\"name\\\":\\\"Macedonia, the former Yugoslav Republic of\\\",\\\"languages\\\":[\\\"mkd\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"mk-MK\\\",\\\"displayName\\\":\\\"Macedonian (FYROM)\\\",\\\"cultureCode\\\":\\\"0x042F\\\"}]},{\\\"code_2\\\":\\\"MG\\\",\\\"code_3\\\":\\\"MDG\\\",\\\"numCode\\\":\\\"450\\\",\\\"name\\\":\\\"Madagascar\\\",\\\"languages\\\":[\\\"fra\\\",\\\"mlg\\\"]},{\\\"code_2\\\":\\\"MW\\\",\\\"code_3\\\":\\\"MWI\\\",\\\"numCode\\\":\\\"454\\\",\\\"name\\\":\\\"Malawi\\\",\\\"languages\\\":[\\\"nya\\\",\\\"eng\\\"]},{\\\"code_2\\\":\\\"MY\\\",\\\"code_3\\\":\\\"MYS\\\",\\\"numCode\\\":\\\"458\\\",\\\"name\\\":\\\"Malaysia\\\",\\\"languages\\\":[\\\"eng\\\",\\\"msa\\\",\\\"tam\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ms-MY\\\",\\\"displayName\\\":\\\"Malay - Malaysia\\\",\\\"cultureCode\\\":\\\"0x043E\\\"}]},{\\\"code_2\\\":\\\"MV\\\",\\\"code_3\\\":\\\"MDV\\\",\\\"numCode\\\":\\\"462\\\",\\\"name\\\":\\\"Maldives\\\",\\\"languages\\\":[\\\"div\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"div-MV\\\",\\\"displayName\\\":\\\"Dhivehi - Maldives\\\",\\\"cultureCode\\\":\\\"0x0465\\\"}]},{\\\"code_2\\\":\\\"ML\\\",\\\"code_3\\\":\\\"MLI\\\",\\\"numCode\\\":\\\"466\\\",\\\"name\\\":\\\"Mali\\\",\\\"languages\\\":[\\\"bam\\\",\\\"fra\\\",\\\"ful\\\",\\\"snk\\\"]},{\\\"code_2\\\":\\\"MT\\\",\\\"code_3\\\":\\\"MLT\\\",\\\"numCode\\\":\\\"470\\\",\\\"name\\\":\\\"Malta\\\",\\\"languages\\\":[\\\"eng\\\",\\\"mlt\\\"]},{\\\"code_2\\\":\\\"MH\\\",\\\"code_3\\\":\\\"MHL\\\",\\\"numCode\\\":\\\"584\\\",\\\"name\\\":\\\"Marshall Islands\\\",\\\"languages\\\":[\\\"eng\\\",\\\"mah\\\"]},{\\\"code_2\\\":\\\"MQ\\\",\\\"code_3\\\":\\\"MTQ\\\",\\\"numCode\\\":\\\"474\\\",\\\"name\\\":\\\"Martinique\\\",\\\"languages\\\":[\\\"fra\\\"]},{\\\"code_2\\\":\\\"MR\\\",\\\"code_3\\\":\\\"MRT\\\",\\\"numCode\\\":\\\"478\\\",\\\"name\\\":\\\"Mauritania\\\",\\\"languages\\\":[\\\"ara\\\"]},{\\\"code_2\\\":\\\"MU\\\",\\\"code_3\\\":\\\"MUS\\\",\\\"numCode\\\":\\\"480\\\",\\\"name\\\":\\\"Mauritius\\\",\\\"languages\\\":[\\\"eng\\\",\\\"fra\\\",\\\"tam\\\"]},{\\\"code_2\\\":\\\"YT\\\",\\\"code_3\\\":\\\"MYT\\\",\\\"numCode\\\":\\\"175\\\",\\\"name\\\":\\\"Mayotte\\\",\\\"languages\\\":[\\\"fra\\\"]},{\\\"code_2\\\":\\\"MX\\\",\\\"code_3\\\":\\\"MEX\\\",\\\"numCode\\\":\\\"484\\\",\\\"name\\\":\\\"Mexico\\\",\\\"languages\\\":[\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-MX\\\",\\\"displayName\\\":\\\"Spanish - Mexico\\\",\\\"cultureCode\\\":\\\"0x080A\\\"}]},{\\\"code_2\\\":\\\"FM\\\",\\\"code_3\\\":\\\"FSM\\\",\\\"numCode\\\":\\\"583\\\",\\\"name\\\":\\\"Micronesia, Federated States of\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"MD\\\",\\\"code_3\\\":\\\"MDA\\\",\\\"numCode\\\":\\\"498\\\",\\\"name\\\":\\\"Moldova, Republic of\\\",\\\"languages\\\":[\\\"ron\\\"]},{\\\"code_2\\\":\\\"MC\\\",\\\"code_3\\\":\\\"MCO\\\",\\\"numCode\\\":\\\"492\\\",\\\"name\\\":\\\"Monaco\\\",\\\"languages\\\":[\\\"fra\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"fr-MC\\\",\\\"displayName\\\":\\\"French - Monaco\\\",\\\"cultureCode\\\":\\\"0x180C\\\"}]},{\\\"code_2\\\":\\\"MN\\\",\\\"code_3\\\":\\\"MNG\\\",\\\"numCode\\\":\\\"496\\\",\\\"name\\\":\\\"Mongolia\\\",\\\"languages\\\":[\\\"mon\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"mn-MN\\\",\\\"displayName\\\":\\\"Mongolian - Mongolia\\\",\\\"cultureCode\\\":\\\"0x0450\\\"}]},{\\\"code_2\\\":\\\"ME\\\",\\\"code_3\\\":\\\"MNE\\\",\\\"numCode\\\":\\\"499\\\",\\\"name\\\":\\\"Montenegro\\\"},{\\\"code_2\\\":\\\"MS\\\",\\\"code_3\\\":\\\"MSR\\\",\\\"numCode\\\":\\\"500\\\",\\\"name\\\":\\\"Montserrat\\\"},{\\\"code_2\\\":\\\"MA\\\",\\\"code_3\\\":\\\"MAR\\\",\\\"numCode\\\":\\\"504\\\",\\\"name\\\":\\\"Morocco\\\",\\\"languages\\\":[\\\"ara\\\",\\\"ber\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ar-MA\\\",\\\"displayName\\\":\\\"Arabic - Morocco\\\",\\\"cultureCode\\\":\\\"0x1801\\\"}]},{\\\"code_2\\\":\\\"MZ\\\",\\\"code_3\\\":\\\"MOZ\\\",\\\"numCode\\\":\\\"508\\\",\\\"name\\\":\\\"Mozambique\\\",\\\"languages\\\":[\\\"por\\\"]},{\\\"code_2\\\":\\\"MM\\\",\\\"code_3\\\":\\\"MMR\\\",\\\"numCode\\\":\\\"104\\\",\\\"name\\\":\\\"Myanmar\\\",\\\"languages\\\":[\\\"mya\\\"]},{\\\"code_2\\\":\\\"NA\\\",\\\"code_3\\\":\\\"NAM\\\",\\\"numCode\\\":\\\"516\\\",\\\"name\\\":\\\"Namibia\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"NR\\\",\\\"code_3\\\":\\\"NRU\\\",\\\"numCode\\\":\\\"520\\\",\\\"name\\\":\\\"Nauru\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"NP\\\",\\\"code_3\\\":\\\"NPL\\\",\\\"numCode\\\":\\\"524\\\",\\\"name\\\":\\\"Nepal\\\",\\\"languages\\\":[\\\"nep\\\"]},{\\\"code_2\\\":\\\"NL\\\",\\\"code_3\\\":\\\"NLD\\\",\\\"numCode\\\":\\\"528\\\",\\\"name\\\":\\\"Netherlands\\\",\\\"languages\\\":[\\\"nld\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"nl-NL\\\",\\\"displayName\\\":\\\"Dutch - The Netherlands\\\",\\\"cultureCode\\\":\\\"0x0413\\\"}]},{\\\"code_2\\\":\\\"NC\\\",\\\"code_3\\\":\\\"NCL\\\",\\\"numCode\\\":\\\"540\\\",\\\"name\\\":\\\"New Caledonia\\\",\\\"languages\\\":[\\\"fra\\\"]},{\\\"code_2\\\":\\\"NZ\\\",\\\"code_3\\\":\\\"NZL\\\",\\\"numCode\\\":\\\"554\\\",\\\"name\\\":\\\"New Zealand\\\",\\\"languages\\\":[\\\"eng\\\",\\\"mri\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"en-NZ\\\",\\\"displayName\\\":\\\"English - New Zealand\\\",\\\"cultureCode\\\":\\\"0x1409\\\"}]},{\\\"code_2\\\":\\\"NI\\\",\\\"code_3\\\":\\\"NIC\\\",\\\"numCode\\\":\\\"558\\\",\\\"name\\\":\\\"Nicaragua\\\",\\\"languages\\\":[\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-NI\\\",\\\"displayName\\\":\\\"Spanish - Nicaragua\\\",\\\"cultureCode\\\":\\\"0x4C0A\\\"}]},{\\\"code_2\\\":\\\"NE\\\",\\\"code_3\\\":\\\"NER\\\",\\\"numCode\\\":\\\"562\\\",\\\"name\\\":\\\"Niger\\\",\\\"languages\\\":[\\\"ara\\\",\\\"fra\\\",\\\"ful\\\",\\\"hau\\\",\\\"kau\\\"]},{\\\"code_2\\\":\\\"NG\\\",\\\"code_3\\\":\\\"NGA\\\",\\\"numCode\\\":\\\"566\\\",\\\"name\\\":\\\"Nigeria\\\",\\\"languages\\\":[\\\"eng\\\",\\\"hau\\\",\\\"ibo\\\",\\\"yor\\\"]},{\\\"code_2\\\":\\\"NU\\\",\\\"code_3\\\":\\\"NIU\\\",\\\"numCode\\\":\\\"570\\\",\\\"name\\\":\\\"Niue\\\"},{\\\"code_2\\\":\\\"NF\\\",\\\"code_3\\\":\\\"NFK\\\",\\\"numCode\\\":\\\"574\\\",\\\"name\\\":\\\"Norfolk Island\\\"},{\\\"code_2\\\":\\\"MP\\\",\\\"code_3\\\":\\\"MNP\\\",\\\"numCode\\\":\\\"580\\\",\\\"name\\\":\\\"Northern Mariana Islands\\\"},{\\\"code_2\\\":\\\"NO\\\",\\\"code_3\\\":\\\"NOR\\\",\\\"numCode\\\":\\\"578\\\",\\\"name\\\":\\\"Norway\\\",\\\"languages\\\":[\\\"nob\\\",\\\"nno\\\",\\\"nor\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"nb-NO\\\",\\\"displayName\\\":\\\"Norwegian (Bokmål) - Norway\\\",\\\"cultureCode\\\":\\\"0x0414\\\"},{\\\"langCultureName\\\":\\\"nn-NO\\\",\\\"displayName\\\":\\\"Norwegian (Nynorsk) - Norway\\\",\\\"cultureCode\\\":\\\"0x0814\\\"}]},{\\\"code_2\\\":\\\"OM\\\",\\\"code_3\\\":\\\"OMN\\\",\\\"numCode\\\":\\\"512\\\",\\\"name\\\":\\\"Oman\\\",\\\"languages\\\":[\\\"ara\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ar-OM\\\",\\\"displayName\\\":\\\"Arabic - Oman\\\",\\\"cultureCode\\\":\\\"0x2001\\\"}]},{\\\"code_2\\\":\\\"PK\\\",\\\"code_3\\\":\\\"PAK\\\",\\\"numCode\\\":\\\"586\\\",\\\"name\\\":\\\"Pakistan\\\",\\\"languages\\\":[\\\"eng\\\",\\\"urd\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ur-PK\\\",\\\"displayName\\\":\\\"Urdu - Pakistan\\\",\\\"cultureCode\\\":\\\"0x0420\\\"}]},{\\\"code_2\\\":\\\"PW\\\",\\\"code_3\\\":\\\"PLW\\\",\\\"numCode\\\":\\\"585\\\",\\\"name\\\":\\\"Palau\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"PS\\\",\\\"code_3\\\":\\\"PSE\\\",\\\"numCode\\\":\\\"275\\\",\\\"name\\\":\\\"Palestine, State of\\\"},{\\\"code_2\\\":\\\"PA\\\",\\\"code_3\\\":\\\"PAN\\\",\\\"numCode\\\":\\\"591\\\",\\\"name\\\":\\\"Panama\\\",\\\"languages\\\":[\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-PA\\\",\\\"displayName\\\":\\\"Spanish - Panama\\\",\\\"cultureCode\\\":\\\"0x180A\\\"}]},{\\\"code_2\\\":\\\"PG\\\",\\\"code_3\\\":\\\"PNG\\\",\\\"numCode\\\":\\\"598\\\",\\\"name\\\":\\\"Papua New Guinea\\\",\\\"languages\\\":[\\\"eng\\\",\\\"hmo\\\",\\\"tpi\\\"]},{\\\"code_2\\\":\\\"PY\\\",\\\"code_3\\\":\\\"PRY\\\",\\\"numCode\\\":\\\"600\\\",\\\"name\\\":\\\"Paraguay\\\",\\\"languages\\\":[\\\"grn\\\",\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-PY\\\",\\\"displayName\\\":\\\"Spanish - Paraguay\\\",\\\"cultureCode\\\":\\\"0x3C0A\\\"}]},{\\\"code_2\\\":\\\"PE\\\",\\\"code_3\\\":\\\"PER\\\",\\\"numCode\\\":\\\"604\\\",\\\"name\\\":\\\"Peru\\\",\\\"languages\\\":[\\\"aym\\\",\\\"que\\\",\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-PE\\\",\\\"displayName\\\":\\\"Spanish - Peru\\\",\\\"cultureCode\\\":\\\"0x280A\\\"}]},{\\\"code_2\\\":\\\"PH\\\",\\\"code_3\\\":\\\"PHL\\\",\\\"numCode\\\":\\\"608\\\",\\\"name\\\":\\\"Philippines\\\",\\\"languages\\\":[\\\"eng\\\",\\\"fil\\\",\\\"tgl\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"en-PH\\\",\\\"displayName\\\":\\\"English - Philippines\\\",\\\"cultureCode\\\":\\\"0x3409\\\"}]},{\\\"code_2\\\":\\\"PN\\\",\\\"code_3\\\":\\\"PCN\\\",\\\"numCode\\\":\\\"612\\\",\\\"name\\\":\\\"Pitcairn\\\"},{\\\"code_2\\\":\\\"PL\\\",\\\"code_3\\\":\\\"POL\\\",\\\"numCode\\\":\\\"616\\\",\\\"name\\\":\\\"Poland\\\",\\\"languages\\\":[\\\"pol\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"pl-PL\\\",\\\"displayName\\\":\\\"Polish - Poland\\\",\\\"cultureCode\\\":\\\"0x0415\\\"}]},{\\\"code_2\\\":\\\"PT\\\",\\\"code_3\\\":\\\"PRT\\\",\\\"numCode\\\":\\\"620\\\",\\\"name\\\":\\\"Portugal\\\",\\\"languages\\\":[\\\"por\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"pt-PT\\\",\\\"displayName\\\":\\\"Portuguese - Portugal\\\",\\\"cultureCode\\\":\\\"0x0816\\\"}]},{\\\"code_2\\\":\\\"PR\\\",\\\"code_3\\\":\\\"PRI\\\",\\\"numCode\\\":\\\"630\\\",\\\"name\\\":\\\"Puerto Rico\\\",\\\"languages\\\":[\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-PR\\\",\\\"displayName\\\":\\\"Spanish - Puerto Rico\\\",\\\"cultureCode\\\":\\\"0x500A\\\"}]},{\\\"code_2\\\":\\\"QA\\\",\\\"code_3\\\":\\\"QAT\\\",\\\"numCode\\\":\\\"634\\\",\\\"name\\\":\\\"Qatar\\\",\\\"languages\\\":[\\\"ara\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ar-QA\\\",\\\"displayName\\\":\\\"Arabic - Qatar\\\",\\\"cultureCode\\\":\\\"0x4001\\\"}]},{\\\"code_2\\\":\\\"RE\\\",\\\"code_3\\\":\\\"REU\\\",\\\"numCode\\\":\\\"638\\\",\\\"name\\\":\\\"Réunion\\\",\\\"languages\\\":[\\\"fra\\\"]},{\\\"code_2\\\":\\\"RO\\\",\\\"code_3\\\":\\\"ROU\\\",\\\"numCode\\\":\\\"642\\\",\\\"name\\\":\\\"Romania\\\",\\\"languages\\\":[\\\"ron\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ro-RO\\\",\\\"displayName\\\":\\\"Romanian - Romania\\\",\\\"cultureCode\\\":\\\"0x0418\\\"}]},{\\\"code_2\\\":\\\"RU\\\",\\\"code_3\\\":\\\"RUS\\\",\\\"numCode\\\":\\\"643\\\",\\\"name\\\":\\\"Russian Federation\\\",\\\"languages\\\":[\\\"rus\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ru-RU\\\",\\\"displayName\\\":\\\"Russian - Russia\\\",\\\"cultureCode\\\":\\\"0x0419\\\"},{\\\"langCultureName\\\":\\\"tt-RU\\\",\\\"displayName\\\":\\\"Tatar - Russia\\\",\\\"cultureCode\\\":\\\"0x0444\\\"}]},{\\\"code_2\\\":\\\"RW\\\",\\\"code_3\\\":\\\"RWA\\\",\\\"numCode\\\":\\\"646\\\",\\\"name\\\":\\\"Rwanda\\\",\\\"languages\\\":[\\\"eng\\\",\\\"fra\\\",\\\"kin\\\"]},{\\\"code_2\\\":\\\"BL\\\",\\\"code_3\\\":\\\"BLM\\\",\\\"numCode\\\":\\\"652\\\",\\\"name\\\":\\\"Saint Barthélemy\\\",\\\"languages\\\":[\\\"fra\\\"]},{\\\"code_2\\\":\\\"SH\\\",\\\"code_3\\\":\\\"SHN\\\",\\\"numCode\\\":\\\"654\\\",\\\"name\\\":\\\"Saint Helena, Ascension and Tristan da Cunha\\\"},{\\\"code_2\\\":\\\"KN\\\",\\\"code_3\\\":\\\"KNA\\\",\\\"numCode\\\":\\\"659\\\",\\\"name\\\":\\\"Saint Kitts and Nevis\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"LC\\\",\\\"code_3\\\":\\\"LCA\\\",\\\"numCode\\\":\\\"662\\\",\\\"name\\\":\\\"Saint Lucia\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"MF\\\",\\\"code_3\\\":\\\"MAF\\\",\\\"numCode\\\":\\\"663\\\",\\\"name\\\":\\\"Saint Martin (French part)\\\"},{\\\"code_2\\\":\\\"PM\\\",\\\"code_3\\\":\\\"SPM\\\",\\\"numCode\\\":\\\"666\\\",\\\"name\\\":\\\"Saint Pierre and Miquelon\\\",\\\"languages\\\":[\\\"fra\\\"]},{\\\"code_2\\\":\\\"VC\\\",\\\"code_3\\\":\\\"VCT\\\",\\\"numCode\\\":\\\"670\\\",\\\"name\\\":\\\"Saint Vincent and the Grenadines\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"WS\\\",\\\"code_3\\\":\\\"WSM\\\",\\\"numCode\\\":\\\"882\\\",\\\"name\\\":\\\"Samoa\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"SM\\\",\\\"code_3\\\":\\\"SMR\\\",\\\"numCode\\\":\\\"674\\\",\\\"name\\\":\\\"San Marino\\\",\\\"languages\\\":[\\\"ita\\\"]},{\\\"code_2\\\":\\\"ST\\\",\\\"code_3\\\":\\\"STP\\\",\\\"numCode\\\":\\\"678\\\",\\\"name\\\":\\\"Sao Tome and Principe\\\",\\\"languages\\\":[\\\"por\\\"]},{\\\"code_2\\\":\\\"SA\\\",\\\"code_3\\\":\\\"SAU\\\",\\\"numCode\\\":\\\"682\\\",\\\"name\\\":\\\"Saudi Arabia\\\",\\\"languages\\\":[\\\"ara\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ar-SA\\\",\\\"displayName\\\":\\\"Arabic - Saudi Arabia\\\",\\\"cultureCode\\\":\\\"0x0401\\\"}]},{\\\"code_2\\\":\\\"SN\\\",\\\"code_3\\\":\\\"SEN\\\",\\\"numCode\\\":\\\"686\\\",\\\"name\\\":\\\"Senegal\\\",\\\"languages\\\":[\\\"fra\\\",\\\"ful\\\",\\\"srr\\\",\\\"snk\\\",\\\"wol\\\"]},{\\\"code_2\\\":\\\"RS\\\",\\\"code_3\\\":\\\"SRB\\\",\\\"numCode\\\":\\\"688\\\",\\\"name\\\":\\\"Serbia\\\",\\\"languages\\\":[\\\"srp\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"Cy-sr-SP\\\",\\\"displayName\\\":\\\"Serbian (Cyrillic) - Serbia\\\",\\\"cultureCode\\\":\\\"0x0C1A\\\"},{\\\"langCultureName\\\":\\\"Lt-sr-SP\\\",\\\"displayName\\\":\\\"Serbian (Latin) - Serbia\\\",\\\"cultureCode\\\":\\\"0x081A\\\"}]},{\\\"code_2\\\":\\\"SC\\\",\\\"code_3\\\":\\\"SYC\\\",\\\"numCode\\\":\\\"690\\\",\\\"name\\\":\\\"Seychelles\\\",\\\"languages\\\":[\\\"eng\\\",\\\"fra\\\"]},{\\\"code_2\\\":\\\"SL\\\",\\\"code_3\\\":\\\"SLE\\\",\\\"numCode\\\":\\\"694\\\",\\\"name\\\":\\\"Sierra Leone\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"SG\\\",\\\"code_3\\\":\\\"SGP\\\",\\\"numCode\\\":\\\"702\\\",\\\"name\\\":\\\"Singapore\\\",\\\"languages\\\":[\\\"zho\\\",\\\"eng\\\",\\\"msa\\\",\\\"tam\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"zh-SG\\\",\\\"displayName\\\":\\\"Chinese - Singapore\\\",\\\"cultureCode\\\":\\\"0x1004\\\"}]},{\\\"code_2\\\":\\\"SX\\\",\\\"code_3\\\":\\\"SXM\\\",\\\"numCode\\\":\\\"534\\\",\\\"name\\\":\\\"Sint Maarten (Dutch part)\\\",\\\"languages\\\":[\\\"nld\\\",\\\"eng\\\"]},{\\\"code_2\\\":\\\"SK\\\",\\\"code_3\\\":\\\"SVK\\\",\\\"numCode\\\":\\\"703\\\",\\\"name\\\":\\\"Slovakia\\\",\\\"languages\\\":[\\\"ces\\\",\\\"slk\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"sk-SK\\\",\\\"displayName\\\":\\\"Slovak - Slovakia\\\",\\\"cultureCode\\\":\\\"0x041B\\\"}]},{\\\"code_2\\\":\\\"SI\\\",\\\"code_3\\\":\\\"SVN\\\",\\\"numCode\\\":\\\"705\\\",\\\"name\\\":\\\"Slovenia\\\",\\\"languages\\\":[\\\"ita\\\",\\\"slv\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"sl-SI\\\",\\\"displayName\\\":\\\"Slovenian - Slovenia\\\",\\\"cultureCode\\\":\\\"0x0424\\\"}]},{\\\"code_2\\\":\\\"SB\\\",\\\"code_3\\\":\\\"SLB\\\",\\\"numCode\\\":\\\"090\\\",\\\"name\\\":\\\"Solomon Islands\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"SO\\\",\\\"code_3\\\":\\\"SOM\\\",\\\"numCode\\\":\\\"706\\\",\\\"name\\\":\\\"Somalia\\\",\\\"languages\\\":[\\\"ara\\\",\\\"som\\\"]},{\\\"code_2\\\":\\\"ZA\\\",\\\"code_3\\\":\\\"ZAF\\\",\\\"numCode\\\":\\\"710\\\",\\\"name\\\":\\\"South Africa\\\",\\\"languages\\\":[\\\"afr\\\",\\\"eng\\\",\\\"nde\\\",\\\"nbl\\\",\\\"nso\\\",\\\"sot\\\",\\\"ssw\\\",\\\"tso\\\",\\\"tsn\\\",\\\"ven\\\",\\\"xho\\\",\\\"zul\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"af-ZA\\\",\\\"displayName\\\":\\\"Afrikaans - South Africa\\\",\\\"cultureCode\\\":\\\"0x0436\\\"},{\\\"langCultureName\\\":\\\"en-ZA\\\",\\\"displayName\\\":\\\"English - South Africa\\\",\\\"cultureCode\\\":\\\"0x1C09\\\"}]},{\\\"code_2\\\":\\\"GS\\\",\\\"code_3\\\":\\\"SGS\\\",\\\"numCode\\\":\\\"239\\\",\\\"name\\\":\\\"South Georgia and the South Sandwich Islands\\\"},{\\\"code_2\\\":\\\"SS\\\",\\\"code_3\\\":\\\"SSD\\\",\\\"numCode\\\":\\\"728\\\",\\\"name\\\":\\\"South Sudan\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"ES\\\",\\\"code_3\\\":\\\"ESP\\\",\\\"numCode\\\":\\\"724\\\",\\\"name\\\":\\\"Spain\\\",\\\"languages\\\":[\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"eu-ES\\\",\\\"displayName\\\":\\\"Basque - Basque\\\",\\\"cultureCode\\\":\\\"0x042D\\\"},{\\\"langCultureName\\\":\\\"ca-ES\\\",\\\"displayName\\\":\\\"Catalan - Catalan\\\",\\\"cultureCode\\\":\\\"0x0403\\\"},{\\\"langCultureName\\\":\\\"gl-ES\\\",\\\"displayName\\\":\\\"Galician - Galician\\\",\\\"cultureCode\\\":\\\"0x0456\\\"},{\\\"langCultureName\\\":\\\"es-ES\\\",\\\"displayName\\\":\\\"Spanish - Spain\\\",\\\"cultureCode\\\":\\\"0x0C0A\\\"}]},{\\\"code_2\\\":\\\"LK\\\",\\\"code_3\\\":\\\"LKA\\\",\\\"numCode\\\":\\\"144\\\",\\\"name\\\":\\\"Sri Lanka\\\",\\\"languages\\\":[\\\"eng\\\",\\\"sin\\\",\\\"tam\\\"]},{\\\"code_2\\\":\\\"SD\\\",\\\"code_3\\\":\\\"SDN\\\",\\\"numCode\\\":\\\"729\\\",\\\"name\\\":\\\"Sudan\\\",\\\"languages\\\":[\\\"ara\\\",\\\"eng\\\"]},{\\\"code_2\\\":\\\"SR\\\",\\\"code_3\\\":\\\"SUR\\\",\\\"numCode\\\":\\\"740\\\",\\\"name\\\":\\\"Suriname\\\",\\\"languages\\\":[\\\"nld\\\"]},{\\\"code_2\\\":\\\"SJ\\\",\\\"code_3\\\":\\\"SJM\\\",\\\"numCode\\\":\\\"744\\\",\\\"name\\\":\\\"Svalbard and Jan Mayen\\\"},{\\\"code_2\\\":\\\"SZ\\\",\\\"code_3\\\":\\\"SWZ\\\",\\\"numCode\\\":\\\"748\\\",\\\"name\\\":\\\"Swaziland\\\",\\\"languages\\\":[\\\"eng\\\",\\\"ssw\\\"]},{\\\"code_2\\\":\\\"SE\\\",\\\"code_3\\\":\\\"SWE\\\",\\\"numCode\\\":\\\"752\\\",\\\"name\\\":\\\"Sweden\\\",\\\"languages\\\":[\\\"swe\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"sv-SE\\\",\\\"displayName\\\":\\\"Swedish - Sweden\\\",\\\"cultureCode\\\":\\\"0x041D\\\"}]},{\\\"code_2\\\":\\\"CH\\\",\\\"code_3\\\":\\\"CHE\\\",\\\"numCode\\\":\\\"756\\\",\\\"name\\\":\\\"Switzerland\\\",\\\"languages\\\":[\\\"fra\\\",\\\"deu\\\",\\\"ita\\\",\\\"roh\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"fr-CH\\\",\\\"displayName\\\":\\\"French - Switzerland\\\",\\\"cultureCode\\\":\\\"0x100C\\\"},{\\\"langCultureName\\\":\\\"de-CH\\\",\\\"displayName\\\":\\\"German - Switzerland\\\",\\\"cultureCode\\\":\\\"0x0807\\\"},{\\\"langCultureName\\\":\\\"it-CH\\\",\\\"displayName\\\":\\\"Italian - Switzerland\\\",\\\"cultureCode\\\":\\\"0x0810\\\"}]},{\\\"code_2\\\":\\\"SY\\\",\\\"code_3\\\":\\\"SYR\\\",\\\"numCode\\\":\\\"760\\\",\\\"name\\\":\\\"Syrian Arab Republic\\\",\\\"languages\\\":[\\\"ara\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ar-SY\\\",\\\"displayName\\\":\\\"Arabic - Syria\\\",\\\"cultureCode\\\":\\\"0x2801\\\"},{\\\"langCultureName\\\":\\\"syr-SY\\\",\\\"displayName\\\":\\\"Syriac - Syria\\\",\\\"cultureCode\\\":\\\"0x045A\\\"}]},{\\\"code_2\\\":\\\"TW\\\",\\\"code_3\\\":\\\"TWN\\\",\\\"numCode\\\":\\\"158\\\",\\\"name\\\":\\\"Taiwan, Province of China\\\",\\\"languages\\\":[\\\"zho\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"zh-TW\\\",\\\"displayName\\\":\\\"Chinese - Taiwan\\\",\\\"cultureCode\\\":\\\"0x0404\\\"}]},{\\\"code_2\\\":\\\"TJ\\\",\\\"code_3\\\":\\\"TJK\\\",\\\"numCode\\\":\\\"762\\\",\\\"name\\\":\\\"Tajikistan\\\",\\\"languages\\\":[\\\"fas\\\",\\\"rus\\\",\\\"tgk\\\"]},{\\\"code_2\\\":\\\"TZ\\\",\\\"code_3\\\":\\\"TZA\\\",\\\"numCode\\\":\\\"834\\\",\\\"name\\\":\\\"Tanzania, United Republic of\\\",\\\"languages\\\":[\\\"eng\\\",\\\"swa\\\"]},{\\\"code_2\\\":\\\"TH\\\",\\\"code_3\\\":\\\"THA\\\",\\\"numCode\\\":\\\"764\\\",\\\"name\\\":\\\"Thailand\\\",\\\"languages\\\":[\\\"tha\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"th-TH\\\",\\\"displayName\\\":\\\"Thai - Thailand\\\",\\\"cultureCode\\\":\\\"0x041E\\\"}]},{\\\"code_2\\\":\\\"TL\\\",\\\"code_3\\\":\\\"TLS\\\",\\\"numCode\\\":\\\"626\\\",\\\"name\\\":\\\"Timor-Leste\\\",\\\"languages\\\":[\\\"por\\\",\\\"tet\\\"]},{\\\"code_2\\\":\\\"TG\\\",\\\"code_3\\\":\\\"TGO\\\",\\\"numCode\\\":\\\"768\\\",\\\"name\\\":\\\"Togo\\\",\\\"languages\\\":[\\\"ewe\\\",\\\"fra\\\"]},{\\\"code_2\\\":\\\"TK\\\",\\\"code_3\\\":\\\"TKL\\\",\\\"numCode\\\":\\\"772\\\",\\\"name\\\":\\\"Tokelau\\\"},{\\\"code_2\\\":\\\"TO\\\",\\\"code_3\\\":\\\"TON\\\",\\\"numCode\\\":\\\"776\\\",\\\"name\\\":\\\"Tonga\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"TT\\\",\\\"code_3\\\":\\\"TTO\\\",\\\"numCode\\\":\\\"780\\\",\\\"name\\\":\\\"Trinidad and Tobago\\\",\\\"languages\\\":[\\\"eng\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"en-TT\\\",\\\"displayName\\\":\\\"English - Trinidad and Tobago\\\",\\\"cultureCode\\\":\\\"0x2C09\\\"}]},{\\\"code_2\\\":\\\"TN\\\",\\\"code_3\\\":\\\"TUN\\\",\\\"numCode\\\":\\\"788\\\",\\\"name\\\":\\\"Tunisia\\\",\\\"languages\\\":[\\\"ara\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ar-TN\\\",\\\"displayName\\\":\\\"Arabic - Tunisia\\\",\\\"cultureCode\\\":\\\"0x1C01\\\"}]},{\\\"code_2\\\":\\\"TR\\\",\\\"code_3\\\":\\\"TUR\\\",\\\"numCode\\\":\\\"792\\\",\\\"name\\\":\\\"Turkey\\\",\\\"languages\\\":[\\\"tur\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"tr-TR\\\",\\\"displayName\\\":\\\"Turkish - Turkey\\\",\\\"cultureCode\\\":\\\"0x041F\\\"}]},{\\\"code_2\\\":\\\"TM\\\",\\\"code_3\\\":\\\"TKM\\\",\\\"numCode\\\":\\\"795\\\",\\\"name\\\":\\\"Turkmenistan\\\",\\\"languages\\\":[\\\"tuk\\\"]},{\\\"code_2\\\":\\\"TC\\\",\\\"code_3\\\":\\\"TCA\\\",\\\"numCode\\\":\\\"796\\\",\\\"name\\\":\\\"Turks and Caicos Islands\\\"},{\\\"code_2\\\":\\\"TV\\\",\\\"code_3\\\":\\\"TUV\\\",\\\"numCode\\\":\\\"798\\\",\\\"name\\\":\\\"Tuvalu\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"UG\\\",\\\"code_3\\\":\\\"UGA\\\",\\\"numCode\\\":\\\"800\\\",\\\"name\\\":\\\"Uganda\\\",\\\"languages\\\":[\\\"eng\\\",\\\"swa\\\"]},{\\\"code_2\\\":\\\"UA\\\",\\\"code_3\\\":\\\"UKR\\\",\\\"numCode\\\":\\\"804\\\",\\\"name\\\":\\\"Ukraine\\\",\\\"languages\\\":[\\\"ukr\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"uk-UA\\\",\\\"displayName\\\":\\\"Ukrainian - Ukraine\\\",\\\"cultureCode\\\":\\\"0x0422\\\"}]},{\\\"code_2\\\":\\\"AE\\\",\\\"code_3\\\":\\\"ARE\\\",\\\"numCode\\\":\\\"784\\\",\\\"name\\\":\\\"United Arab Emirates\\\",\\\"languages\\\":[\\\"ara\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ar-AE\\\",\\\"displayName\\\":\\\"Arabic - United Arab Emirates\\\",\\\"cultureCode\\\":\\\"0x3801\\\"}]},{\\\"code_2\\\":\\\"GB\\\",\\\"code_3\\\":\\\"GBR\\\",\\\"numCode\\\":\\\"826\\\",\\\"name\\\":\\\"United Kingdom\\\",\\\"languages\\\":[\\\"eng\\\",\\\"cym\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"en-GB\\\",\\\"displayName\\\":\\\"English - United Kingdom\\\",\\\"cultureCode\\\":\\\"0x0809\\\"}]},{\\\"code_2\\\":\\\"US\\\",\\\"code_3\\\":\\\"USA\\\",\\\"numCode\\\":\\\"840\\\",\\\"name\\\":\\\"United States\\\",\\\"languages\\\":[\\\"eng\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"en-US\\\",\\\"displayName\\\":\\\"English - United States\\\",\\\"cultureCode\\\":\\\"0x0409\\\"}]},{\\\"code_2\\\":\\\"UM\\\",\\\"code_3\\\":\\\"UMI\\\",\\\"numCode\\\":\\\"581\\\",\\\"name\\\":\\\"United States Minor Outlying Islands\\\"},{\\\"code_2\\\":\\\"UY\\\",\\\"code_3\\\":\\\"URY\\\",\\\"numCode\\\":\\\"858\\\",\\\"name\\\":\\\"Uruguay\\\",\\\"languages\\\":[\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-UY\\\",\\\"displayName\\\":\\\"Spanish - Uruguay\\\",\\\"cultureCode\\\":\\\"0x380A\\\"}]},{\\\"code_2\\\":\\\"UZ\\\",\\\"code_3\\\":\\\"UZB\\\",\\\"numCode\\\":\\\"860\\\",\\\"name\\\":\\\"Uzbekistan\\\",\\\"languages\\\":[\\\"uzb\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"Cy-uz-UZ\\\",\\\"displayName\\\":\\\"Uzbek (Cyrillic) - Uzbekistan\\\",\\\"cultureCode\\\":\\\"0x0843\\\"},{\\\"langCultureName\\\":\\\"Lt-uz-UZ\\\",\\\"displayName\\\":\\\"Uzbek (Latin) - Uzbekistan\\\",\\\"cultureCode\\\":\\\"0x0443\\\"}]},{\\\"code_2\\\":\\\"VU\\\",\\\"code_3\\\":\\\"VUT\\\",\\\"numCode\\\":\\\"548\\\",\\\"name\\\":\\\"Vanuatu\\\",\\\"languages\\\":[\\\"bis\\\",\\\"eng\\\",\\\"fra\\\"]},{\\\"code_2\\\":\\\"VE\\\",\\\"code_3\\\":\\\"VEN\\\",\\\"numCode\\\":\\\"862\\\",\\\"name\\\":\\\"Venezuela, Bolivarian Republic of\\\",\\\"languages\\\":[\\\"spa\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"es-VE\\\",\\\"displayName\\\":\\\"Spanish - Venezuela\\\",\\\"cultureCode\\\":\\\"0x200A\\\"}]},{\\\"code_2\\\":\\\"VN\\\",\\\"code_3\\\":\\\"VNM\\\",\\\"numCode\\\":\\\"704\\\",\\\"name\\\":\\\"Viet Nam\\\",\\\"languages\\\":[\\\"vie\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"vi-VN\\\",\\\"displayName\\\":\\\"Vietnamese - Vietnam\\\",\\\"cultureCode\\\":\\\"0x042A\\\"}]},{\\\"code_2\\\":\\\"VG\\\",\\\"code_3\\\":\\\"VGB\\\",\\\"numCode\\\":\\\"092\\\",\\\"name\\\":\\\"Virgin Islands, British\\\"},{\\\"code_2\\\":\\\"VI\\\",\\\"code_3\\\":\\\"VIR\\\",\\\"numCode\\\":\\\"850\\\",\\\"name\\\":\\\"Virgin Islands, U.S.\\\"},{\\\"code_2\\\":\\\"WF\\\",\\\"code_3\\\":\\\"WLF\\\",\\\"numCode\\\":\\\"876\\\",\\\"name\\\":\\\"Wallis and Futuna\\\",\\\"languages\\\":[\\\"fra\\\"]},{\\\"code_2\\\":\\\"EH\\\",\\\"code_3\\\":\\\"ESH\\\",\\\"numCode\\\":\\\"732\\\",\\\"name\\\":\\\"Western Sahara\\\",\\\"languages\\\":[\\\"spa\\\"]},{\\\"code_2\\\":\\\"YE\\\",\\\"code_3\\\":\\\"YEM\\\",\\\"numCode\\\":\\\"887\\\",\\\"name\\\":\\\"Yemen\\\",\\\"languages\\\":[\\\"ara\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"ar-YE\\\",\\\"displayName\\\":\\\"Arabic - Yemen\\\",\\\"cultureCode\\\":\\\"0x2401\\\"}]},{\\\"code_2\\\":\\\"ZM\\\",\\\"code_3\\\":\\\"ZMB\\\",\\\"numCode\\\":\\\"894\\\",\\\"name\\\":\\\"Zambia\\\",\\\"languages\\\":[\\\"eng\\\"]},{\\\"code_2\\\":\\\"ZW\\\",\\\"code_3\\\":\\\"ZWE\\\",\\\"numCode\\\":\\\"716\\\",\\\"name\\\":\\\"Zimbabwe\\\",\\\"languages\\\":[\\\"eng\\\",\\\"nde\\\",\\\"sna\\\"],\\\"langCultureMs\\\":[{\\\"langCultureName\\\":\\\"en-ZW\\\",\\\"displayName\\\":\\\"English - Zimbabwe\\\",\\\"cultureCode\\\":\\\"0x3009\\\"}]}],\\\"locales\\\":[[\\\"af\\\",\\\"ZA\\\"],[\\\"am\\\",\\\"ET\\\"],[\\\"ar\\\",\\\"AE\\\"],[\\\"ar\\\",\\\"BH\\\"],[\\\"ar\\\",\\\"DZ\\\"],[\\\"ar\\\",\\\"EG\\\"],[\\\"ar\\\",\\\"IQ\\\"],[\\\"ar\\\",\\\"JO\\\"],[\\\"ar\\\",\\\"KW\\\"],[\\\"ar\\\",\\\"LB\\\"],[\\\"ar\\\",\\\"LY\\\"],[\\\"ar\\\",\\\"MA\\\"],[\\\"arn\\\",\\\"CL\\\"],[\\\"ar\\\",\\\"OM\\\"],[\\\"ar\\\",\\\"QA\\\"],[\\\"ar\\\",\\\"SA\\\"],[\\\"ar\\\",\\\"SY\\\"],[\\\"ar\\\",\\\"TN\\\"],[\\\"ar\\\",\\\"YE\\\"],[\\\"as\\\",\\\"IN\\\"],[\\\"az\\\",\\\"Cyrl\\\",\\\"AZ\\\"],[\\\"az\\\",\\\"Latn\\\",\\\"AZ\\\"],[\\\"ba\\\",\\\"RU\\\"],[\\\"be\\\",\\\"BY\\\"],[\\\"bg\\\",\\\"BG\\\"],[\\\"bn\\\",\\\"BD\\\"],[\\\"bn\\\",\\\"IN\\\"],[\\\"bo\\\",\\\"CN\\\"],[\\\"br\\\",\\\"FR\\\"],[\\\"bs\\\",\\\"Cyrl\\\",\\\"BA\\\"],[\\\"bs\\\",\\\"Latn\\\",\\\"BA\\\"],[\\\"ca\\\",\\\"ES\\\"],[\\\"co\\\",\\\"FR\\\"],[\\\"cs\\\",\\\"CZ\\\"],[\\\"cy\\\",\\\"GB\\\"],[\\\"da\\\",\\\"DK\\\"],[\\\"de\\\",\\\"AT\\\"],[\\\"de\\\",\\\"CH\\\"],[\\\"de\\\",\\\"DE\\\"],[\\\"de\\\",\\\"LI\\\"],[\\\"de\\\",\\\"LU\\\"],[\\\"dsb\\\",\\\"DE\\\"],[\\\"dv\\\",\\\"MV\\\"],[\\\"el\\\",\\\"GR\\\"],[\\\"en\\\",\\\"029\\\"],[\\\"en\\\",\\\"AU\\\"],[\\\"en\\\",\\\"BZ\\\"],[\\\"en\\\",\\\"CA\\\"],[\\\"en\\\",\\\"GB\\\"],[\\\"en\\\",\\\"IE\\\"],[\\\"en\\\",\\\"IN\\\"],[\\\"en\\\",\\\"JM\\\"],[\\\"en\\\",\\\"MY\\\"],[\\\"en\\\",\\\"NZ\\\"],[\\\"en\\\",\\\"PH\\\"],[\\\"en\\\",\\\"SG\\\"],[\\\"en\\\",\\\"TT\\\"],[\\\"en\\\",\\\"US\\\"],[\\\"en\\\",\\\"ZA\\\"],[\\\"en\\\",\\\"ZW\\\"],[\\\"es\\\",\\\"AR\\\"],[\\\"es\\\",\\\"BO\\\"],[\\\"es\\\",\\\"CL\\\"],[\\\"es\\\",\\\"CO\\\"],[\\\"es\\\",\\\"CR\\\"],[\\\"es\\\",\\\"DO\\\"],[\\\"es\\\",\\\"EC\\\"],[\\\"es\\\",\\\"ES\\\"],[\\\"es\\\",\\\"GT\\\"],[\\\"es\\\",\\\"HN\\\"],[\\\"es\\\",\\\"MX\\\"],[\\\"es\\\",\\\"NI\\\"],[\\\"es\\\",\\\"PA\\\"],[\\\"es\\\",\\\"PE\\\"],[\\\"es\\\",\\\"PR\\\"],[\\\"es\\\",\\\"PY\\\"],[\\\"es\\\",\\\"SV\\\"],[\\\"es\\\",\\\"US\\\"],[\\\"es\\\",\\\"UY\\\"],[\\\"es\\\",\\\"VE\\\"],[\\\"et\\\",\\\"EE\\\"],[\\\"eu\\\",\\\"ES\\\"],[\\\"fa\\\",\\\"IR\\\"],[\\\"fi\\\",\\\"FI\\\"],[\\\"fil\\\",\\\"PH\\\"],[\\\"fo\\\",\\\"FO\\\"],[\\\"fr\\\",\\\"BE\\\"],[\\\"fr\\\",\\\"CA\\\"],[\\\"fr\\\",\\\"CH\\\"],[\\\"fr\\\",\\\"FR\\\"],[\\\"fr\\\",\\\"LU\\\"],[\\\"fr\\\",\\\"MC\\\"],[\\\"fy\\\",\\\"NL\\\"],[\\\"ga\\\",\\\"IE\\\"],[\\\"gd\\\",\\\"GB\\\"],[\\\"gl\\\",\\\"ES\\\"],[\\\"gsw\\\",\\\"FR\\\"],[\\\"gu\\\",\\\"IN\\\"],[\\\"ha\\\",\\\"Latn\\\",\\\"NG\\\"],[\\\"he\\\",\\\"IL\\\"],[\\\"hi\\\",\\\"IN\\\"],[\\\"hr\\\",\\\"BA\\\"],[\\\"hr\\\",\\\"HR\\\"],[\\\"hsb\\\",\\\"DE\\\"],[\\\"hu\\\",\\\"HU\\\"],[\\\"hy\\\",\\\"AM\\\"],[\\\"id\\\",\\\"ID\\\"],[\\\"ig\\\",\\\"NG\\\"],[\\\"ii\\\",\\\"CN\\\"],[\\\"is\\\",\\\"IS\\\"],[\\\"it\\\",\\\"CH\\\"],[\\\"it\\\",\\\"IT\\\"],[\\\"iu\\\",\\\"Cans\\\",\\\"CA\\\"],[\\\"iu\\\",\\\"Latn\\\",\\\"CA\\\"],[\\\"ja\\\",\\\"JP\\\"],[\\\"ka\\\",\\\"GE\\\"],[\\\"kk\\\",\\\"KZ\\\"],[\\\"kl\\\",\\\"GL\\\"],[\\\"km\\\",\\\"KH\\\"],[\\\"kn\\\",\\\"IN\\\"],[\\\"kok\\\",\\\"IN\\\"],[\\\"ko\\\",\\\"KR\\\"],[\\\"ky\\\",\\\"KG\\\"],[\\\"lb\\\",\\\"LU\\\"],[\\\"lo\\\",\\\"LA\\\"],[\\\"lt\\\",\\\"LT\\\"],[\\\"lv\\\",\\\"LV\\\"],[\\\"mi\\\",\\\"NZ\\\"],[\\\"mk\\\",\\\"MK\\\"],[\\\"ml\\\",\\\"IN\\\"],[\\\"mn\\\",\\\"MN\\\"],[\\\"mn\\\",\\\"Mong\\\",\\\"CN\\\"],[\\\"moh\\\",\\\"CA\\\"],[\\\"mr\\\",\\\"IN\\\"],[\\\"ms\\\",\\\"BN\\\"],[\\\"ms\\\",\\\"MY\\\"],[\\\"mt\\\",\\\"MT\\\"],[\\\"nb\\\",\\\"NO\\\"],[\\\"ne\\\",\\\"NP\\\"],[\\\"nl\\\",\\\"BE\\\"],[\\\"nl\\\",\\\"NL\\\"],[\\\"nn\\\",\\\"NO\\\"],[\\\"nso\\\",\\\"ZA\\\"],[\\\"oc\\\",\\\"FR\\\"],[\\\"or\\\",\\\"IN\\\"],[\\\"pa\\\",\\\"IN\\\"],[\\\"pl\\\",\\\"PL\\\"],[\\\"prs\\\",\\\"AF\\\"],[\\\"ps\\\",\\\"AF\\\"],[\\\"pt\\\",\\\"BR\\\"],[\\\"pt\\\",\\\"PT\\\"],[\\\"qut\\\",\\\"GT\\\"],[\\\"quz\\\",\\\"BO\\\"],[\\\"quz\\\",\\\"EC\\\"],[\\\"quz\\\",\\\"PE\\\"],[\\\"rm\\\",\\\"CH\\\"],[\\\"ro\\\",\\\"RO\\\"],[\\\"ru\\\",\\\"RU\\\"],[\\\"rw\\\",\\\"RW\\\"],[\\\"sah\\\",\\\"RU\\\"],[\\\"sa\\\",\\\"IN\\\"],[\\\"se\\\",\\\"FI\\\"],[\\\"se\\\",\\\"NO\\\"],[\\\"se\\\",\\\"SE\\\"],[\\\"si\\\",\\\"LK\\\"],[\\\"sk\\\",\\\"SK\\\"],[\\\"sl\\\",\\\"SI\\\"],[\\\"sma\\\",\\\"NO\\\"],[\\\"sma\\\",\\\"SE\\\"],[\\\"smj\\\",\\\"NO\\\"],[\\\"smj\\\",\\\"SE\\\"],[\\\"smn\\\",\\\"FI\\\"],[\\\"sms\\\",\\\"FI\\\"],[\\\"sq\\\",\\\"AL\\\"],[\\\"sr\\\",\\\"Cyrl\\\",\\\"BA\\\"],[\\\"sr\\\",\\\"Cyrl\\\",\\\"CS\\\"],[\\\"sr\\\",\\\"Cyrl\\\",\\\"ME\\\"],[\\\"sr\\\",\\\"Cyrl\\\",\\\"RS\\\"],[\\\"sr\\\",\\\"Latn\\\",\\\"BA\\\"],[\\\"sr\\\",\\\"Latn\\\",\\\"CS\\\"],[\\\"sr\\\",\\\"Latn\\\",\\\"ME\\\"],[\\\"sr\\\",\\\"Latn\\\",\\\"RS\\\"],[\\\"sv\\\",\\\"FI\\\"],[\\\"sv\\\",\\\"SE\\\"],[\\\"sw\\\",\\\"KE\\\"],[\\\"syr\\\",\\\"SY\\\"],[\\\"ta\\\",\\\"IN\\\"],[\\\"te\\\",\\\"IN\\\"],[\\\"tg\\\",\\\"Cyrl\\\",\\\"TJ\\\"],[\\\"th\\\",\\\"TH\\\"],[\\\"tk\\\",\\\"TM\\\"],[\\\"tn\\\",\\\"ZA\\\"],[\\\"tr\\\",\\\"TR\\\"],[\\\"tt\\\",\\\"RU\\\"],[\\\"tzm\\\",\\\"Latn\\\",\\\"DZ\\\"],[\\\"ug\\\",\\\"CN\\\"],[\\\"uk\\\",\\\"UA\\\"],[\\\"ur\\\",\\\"PK\\\"],[\\\"uz\\\",\\\"Cyrl\\\",\\\"UZ\\\"],[\\\"uz\\\",\\\"Latn\\\",\\\"UZ\\\"],[\\\"vi\\\",\\\"VN\\\"],[\\\"wo\\\",\\\"SN\\\"],[\\\"xh\\\",\\\"ZA\\\"],[\\\"yo\\\",\\\"NG\\\"],[\\\"zh\\\",\\\"CN\\\"],[\\\"zh\\\",\\\"HK\\\"],[\\\"zh\\\",\\\"MO\\\"],[\\\"zh\\\",\\\"SG\\\"],[\\\"zh\\\",\\\"TW\\\"],[\\\"zu\\\",\\\"ZA\\\"]]}\");\n\n//# sourceURL=webpack:///./node_modules/country-language/data.json?"); + +/***/ }), + +/***/ "./node_modules/country-language/index.js": +/*!************************************************!*\ + !*** ./node_modules/country-language/index.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var _ = __webpack_require__(/*! underscore */ \"./node_modules/underscore/underscore.js\")\n , _d = __webpack_require__(/*! underscore.deep */ \"./node_modules/underscore.deep/underscore.deep.js\")\n , utils = __webpack_require__(/*! ./utils */ \"./node_modules/country-language/utils.js\")\n , data = __webpack_require__(/*! ./data.json */ \"./node_modules/country-language/data.json\");\n\n_.mixin(_d);\n\nvar noop = function(err, value) {\n if (err) return err;\n return value;\n};\n\nexports.getCountries = function () {\n return data.countries;\n};\n\nexports.getLanguages = function () {\n return data.languages;\n};\n\nexports.getLanguageFamilies = function () {\n return data.languageFamilies;\n};\n\nexports.getLanguageCodes = function (codeType, cb) {\n var languages = data.languages\n , cType\n , cTypeNames = [ 'iso639_1', 'iso639_2en', 'iso639_3']\n , codes = [];\n\n cb = cb || utils.isFunction(codeType) ? codeType : noop;\n\n codeType = (codeType && !utils.isFunction(codeType)) ? codeType : 1;\n codeType = Math.floor(Number(codeType));\n if (isNaN(codeType) || codeType < 1 || codeType > cTypeNames.length) {\n return cb('Wrong language code type provided. Valid values: 1, 2, 3 for iso639-1, iso639-2, iso639-3 respectively');\n }\n cType = cTypeNames[codeType - 1];\n _.each(languages, function (language) {\n if (language[cType]) codes.push(language[cType]);\n });\n\n return cb(null, codes);\n};\n\nexports.getCountryCodes = function (codeType, cb) {\n var countries = data.countries\n , cType\n , cTypeNames = [ 'numCode', 'code_2', 'code_3' ]\n , codes = [];\n\n cb = cb || utils.isFunction(codeType) ? codeType : noop;\n\n codeType = (codeType && !utils.isFunction(codeType)) ? codeType : 2;\n codeType = Math.floor(Number(codeType));\n if (isNaN(codeType) || codeType < 1 || codeType > cTypeNames.length) {\n return cb('Wrong country code type provided. Valid values: 1, 2, 3 for numeric code, alpha-2, alpha-3 respectively');\n }\n cType = cTypeNames[codeType - 1];\n _.each(countries, function (country) {\n if (country[cType]) codes.push(country[cType]);\n });\n\n return cb(null, codes);\n};\n\nexports.languageCodeExists = function (code) {\n var codes\n , exists;\n\n if (!code) return false;\n code = code.toLowerCase();\n for (var i = 1; i < 4; i++) {\n codes = exports.getLanguageCodes(i);\n exists = _.indexOf(codes, code) != -1;\n if (exists) break;\n }\n\n return exists;\n};\n\nexports.countryCodeExists = function (code) {\n var codes\n , exists;\n\n if (!code) return false;\n code = code.toUpperCase();\n for (var i = 1; i < 4; i++) {\n codes = exports.getCountryCodes(i);\n exists = _.indexOf(codes, code) != -1;\n if (exists) break;\n }\n\n return exists;\n};\n\nexports.getCountry = function (code, cb, noLangInfo) {\n var countries = data.countries\n , country\n , codeFld\n , langs;\n\n if ('string' !== typeof code) {\n return cb('No country code provided');\n }\n cb = cb || noop;\n code = code.toUpperCase();\n\n if (code.length == 2) {\n codeFld = 'code_2';\n } else if (code.length == 3) {\n codeFld = 'code_3';\n }\n\n if (codeFld) {\n country = _.find(countries, function (c) {\n return c[codeFld] == code;\n });\n if (!country) {\n return cb('There is no country with code \"' + code + '\"');\n }\n country = _.deepClone(country);\n if (!noLangInfo) {\n langs = country.languages;\n country.languages = [];\n _.each(langs, function (l) {\n country.languages.push(exports.getLanguage(l, null, true));\n });\n }\n return cb(null, country);\n } else {\n return cb('Wrong type of country code provided');\n }\n};\n\nexports.getLanguage = function (code, cb, noCountryInfo) {\n var languages = data.languages\n , language\n , codeFld = []\n , countrs;\n\n cb = cb || noop;\n\n if ('string' !== typeof code) {\n return cb('No language code provided');\n }\n code = code.toLowerCase();\n\n if (code.length == 2) {\n codeFld.push('iso639_1');\n } else if (code.length == 3) {\n codeFld.push('iso639_2');\n codeFld.push('iso639_2en');\n codeFld.push('iso639_3');\n }\n\n if (codeFld) {\n for (var i = 0; i < codeFld.length; i++) {\n language = _.find(languages, function (l) {\n return l[codeFld[i]] == code;\n });\n if (language) break;\n }\n if (!language) {\n return cb('There is no language with code \"' + code + '\"');\n }\n language = _.deepClone(language);\n if (!noCountryInfo) {\n countrs = language.countries;\n language.countries = [];\n _.each(countrs, function (c) {\n language.countries.push(exports.getCountry(c, null, true));\n });\n }\n return cb(null, language);\n } else {\n return cb('Wrong type of language code provided');\n }\n};\n\nexports.getCountryLanguages = function (code, cb) {\n var codes = [];\n\n cb = cb || noop;\n\n exports.getCountry(code, function (err, country) {\n if (err) return cb(err);\n _.each(country.languages, function (l) {\n codes.push({\n iso639_1: l.iso639_1\n , iso639_2: l.iso639_2en\n , iso639_3: l.iso639_3\n });\n });\n });\n return cb(null, codes);\n};\n\nexports.getLanguageCountries = function (code, cb) {\n var codes = [];\n\n cb = cb || noop;\n\n exports.getLanguage(code, function (err, language) {\n if (err) return cb(err);\n _.each(language.countries, function (c) {\n codes.push({\n code_2: c.code_2\n , code_3: c.code_3\n , numCode: c.numCode\n });\n });\n });\n return cb(null, codes);\n};\n\nexports.getCountryMsLocales = function (code, cb) {\n var codes = [];\n\n cb = cb || noop;\n\n exports.getCountry(code, function (err, country) {\n if (err) return cb(err);\n codes = country.langCultureMs;\n });\n return cb(null, codes);\n};\n\nexports.getLanguageMsLocales = function (code, cb) {\n var codes = [];\n\n cb = cb || noop;\n\n exports.getLanguage(code, function (err, language) {\n if (err) return cb(err);\n codes = language.langCultureMs;\n });\n return cb(null, codes);\n};\n\nexports.getLanguageFamilyMembers = function (family, cb) {\n var languages = data.languages\n , check\n , members\n , ret = [];\n\n cb = cb || noop;\n\n if ('string' !== typeof family) {\n return cb('No language family provided');\n }\n family = family.toLowerCase();\n\n check = _.find(data.languageFamilies, function (f) {\n return f.toLowerCase() == family;\n });\n if (!check) {\n return cb('There is no language family \"' + family + '\"');\n }\n\n members = _.filter(languages, function (l) {\n return l.family.toLowerCase() == family;\n });\n _.each(members, function (l) {\n ret.push(exports.getLanguage(l.iso639_3));\n });\n return cb(null, ret);\n};\n\nexports.getLocales = function (mode) {\n var locales = data.locales\n , ret = []\n , loc2;\n locales.forEach(function (loc) {\n loc2 = loc[2] ? '-' + loc[2] : '';\n if (mode) {\n ret.push(loc[0] + loc2 + '-' + loc[1]);\n } else {\n ret.push(loc[0] + '-' + loc[1] + loc2);\n }\n });\n return ret;\n}\n\n//# sourceURL=webpack:///./node_modules/country-language/index.js?"); + +/***/ }), + +/***/ "./node_modules/country-language/utils.js": +/*!************************************************!*\ + !*** ./node_modules/country-language/utils.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("exports.isFunction = function (fn) {\n var getType = {};\n return fn && getType.toString.call(fn) === '[object Function]';\n};\n\n\n//# sourceURL=webpack:///./node_modules/country-language/utils.js?"); + +/***/ }), + +/***/ "./node_modules/css-loader/dist/runtime/api.js": +/*!*****************************************************!*\ + !*** ./node_modules/css-loader/dist/runtime/api.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\n// eslint-disable-next-line func-names\nmodule.exports = function (useSourceMap) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = cssWithMappingToString(item, useSourceMap);\n\n if (item[2]) {\n return \"@media \".concat(item[2], \"{\").concat(content, \"}\");\n }\n\n return content;\n }).join('');\n }; // import a list of modules into the list\n // eslint-disable-next-line func-names\n\n\n list.i = function (modules, mediaQuery) {\n if (typeof modules === 'string') {\n // eslint-disable-next-line no-param-reassign\n modules = [[null, modules, '']];\n }\n\n var alreadyImportedModules = {};\n\n for (var i = 0; i < this.length; i++) {\n // eslint-disable-next-line prefer-destructuring\n var id = this[i][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n\n for (var _i = 0; _i < modules.length; _i++) {\n var item = modules[_i]; // skip already imported module\n // this implementation is not 100% perfect for weird media query combinations\n // when a module is imported multiple times with different media queries.\n // I hope this will never occur (Hey this way we have smaller bundles)\n\n if (item[0] == null || !alreadyImportedModules[item[0]]) {\n if (mediaQuery && !item[2]) {\n item[2] = mediaQuery;\n } else if (mediaQuery) {\n item[2] = \"(\".concat(item[2], \") and (\").concat(mediaQuery, \")\");\n }\n\n list.push(item);\n }\n }\n };\n\n return list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring\n\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (useSourceMap && typeof btoa === 'function') {\n var sourceMapping = toComment(cssMapping);\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot).concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n }\n\n return [content].join('\\n');\n} // Adapted from convert-source-map (MIT)\n\n\nfunction toComment(sourceMap) {\n // eslint-disable-next-line no-undef\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n return \"/*# \".concat(data, \" */\");\n}\n\n//# sourceURL=webpack:///./node_modules/css-loader/dist/runtime/api.js?"); + +/***/ }), + +/***/ "./node_modules/deepmerge/dist/cjs.js": +/*!********************************************!*\ + !*** ./node_modules/deepmerge/dist/cjs.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar isMergeableObject = function isMergeableObject(value) {\n\treturn isNonNullObject(value)\n\t\t&& !isSpecial(value)\n};\n\nfunction isNonNullObject(value) {\n\treturn !!value && typeof value === 'object'\n}\n\nfunction isSpecial(value) {\n\tvar stringValue = Object.prototype.toString.call(value);\n\n\treturn stringValue === '[object RegExp]'\n\t\t|| stringValue === '[object Date]'\n\t\t|| isReactElement(value)\n}\n\n// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25\nvar canUseSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;\n\nfunction isReactElement(value) {\n\treturn value.$$typeof === REACT_ELEMENT_TYPE\n}\n\nfunction emptyTarget(val) {\n\treturn Array.isArray(val) ? [] : {}\n}\n\nfunction cloneUnlessOtherwiseSpecified(value, options) {\n\treturn (options.clone !== false && options.isMergeableObject(value))\n\t\t? deepmerge(emptyTarget(value), value, options)\n\t\t: value\n}\n\nfunction defaultArrayMerge(target, source, options) {\n\treturn target.concat(source).map(function(element) {\n\t\treturn cloneUnlessOtherwiseSpecified(element, options)\n\t})\n}\n\nfunction getMergeFunction(key, options) {\n\tif (!options.customMerge) {\n\t\treturn deepmerge\n\t}\n\tvar customMerge = options.customMerge(key);\n\treturn typeof customMerge === 'function' ? customMerge : deepmerge\n}\n\nfunction getEnumerableOwnPropertySymbols(target) {\n\treturn Object.getOwnPropertySymbols\n\t\t? Object.getOwnPropertySymbols(target).filter(function(symbol) {\n\t\t\treturn target.propertyIsEnumerable(symbol)\n\t\t})\n\t\t: []\n}\n\nfunction getKeys(target) {\n\treturn Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))\n}\n\nfunction mergeObject(target, source, options) {\n\tvar destination = {};\n\tif (options.isMergeableObject(target)) {\n\t\tgetKeys(target).forEach(function(key) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(target[key], options);\n\t\t});\n\t}\n\tgetKeys(source).forEach(function(key) {\n\t\tif (!options.isMergeableObject(source[key]) || !target[key]) {\n\t\t\tdestination[key] = cloneUnlessOtherwiseSpecified(source[key], options);\n\t\t} else {\n\t\t\tdestination[key] = getMergeFunction(key, options)(target[key], source[key], options);\n\t\t}\n\t});\n\treturn destination\n}\n\nfunction deepmerge(target, source, options) {\n\toptions = options || {};\n\toptions.arrayMerge = options.arrayMerge || defaultArrayMerge;\n\toptions.isMergeableObject = options.isMergeableObject || isMergeableObject;\n\n\tvar sourceIsArray = Array.isArray(source);\n\tvar targetIsArray = Array.isArray(target);\n\tvar sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;\n\n\tif (!sourceAndTargetTypesMatch) {\n\t\treturn cloneUnlessOtherwiseSpecified(source, options)\n\t} else if (sourceIsArray) {\n\t\treturn options.arrayMerge(target, source, options)\n\t} else {\n\t\treturn mergeObject(target, source, options)\n\t}\n}\n\ndeepmerge.all = function deepmergeAll(array, options) {\n\tif (!Array.isArray(array)) {\n\t\tthrow new Error('first argument should be an array')\n\t}\n\n\treturn array.reduce(function(prev, next) {\n\t\treturn deepmerge(prev, next, options)\n\t}, {})\n};\n\nvar deepmerge_1 = deepmerge;\n\nmodule.exports = deepmerge_1;\n\n\n//# sourceURL=webpack:///./node_modules/deepmerge/dist/cjs.js?"); + +/***/ }), + +/***/ "./node_modules/diacriticless/diacriticless.js": +/*!*****************************************************!*\ + !*** ./node_modules/diacriticless/diacriticless.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("// all diacritics\r\nvar diacritics = \r\n\t{\r\n\t\t'a' : ['a','à','á','â','ã','ä','å','æ','ā','ă','ą','ǎ','ǟ','ǡ','ǻ','ȁ','ȃ','ȧ','ɐ','ɑ','ɒ','ͣ','а','ӑ','ӓ','ᵃ','ᵄ','ᶏ','ḁ','ẚ','ạ','ả','ấ','ầ','ẩ','ẫ','ậ','ắ','ằ','ẳ','ẵ','ặ','ₐ','ⱥ','a'],\r\n\t\t'A' : ['A','À','Á','Â','Ã','Ä','Å','Ā','Ă','Ą','Ǎ','Ǟ','Ǡ','Ǻ','Ȁ','Ȃ','Ȧ','Ⱥ','А','Ӑ','Ӓ','ᴀ','ᴬ','Ḁ','Ạ','Ả','Ấ','Ầ','Ẩ','Ẫ','Ậ','Ắ','Ằ','Ẳ','Ẵ','Ặ','A'],\r\n\t\t \r\n\t\t'b' : ['b','ƀ','ƃ','ɓ','ᖯ','ᵇ','ᵬ','ᶀ','ḃ','ḅ','ḇ','b'],\r\n\t\t'B' : ['B','Ɓ','Ƃ','Ƀ','ʙ','ᛒ','ᴃ','ᴮ','ᴯ','Ḃ','Ḅ','Ḇ','B'],\r\n\t\t \r\n\t\t'c' : ['c','ç','ć','ĉ','ċ','č','ƈ','ȼ','ɕ','ͨ','ᴄ','ᶜ','ḉ','ↄ','c'],\r\n\t\t'C' : ['C','Ç','Ć','Ĉ','Ċ','Č','Ƈ','Ȼ','ʗ','Ḉ','C'],\r\n\t\t\r\n\t\t'd' : ['d','ď','đ','Ƌ','ƌ','ȡ','ɖ','ɗ','ͩ','ᵈ','ᵭ','ᶁ','ᶑ','ḋ','ḍ','ḏ','ḑ','ḓ','d'],\r\n\t\t'D' : ['D','Ď','Đ','Ɖ','Ɗ','ᴰ','Ḋ','Ḍ','Ḏ','Ḑ','Ḓ','D'],\r\n\t\t\r\n\t\t'e' : ['e','è','é','ê','ë','ē','ĕ','ė','ę','ě','ǝ','ȅ','ȇ','ȩ','ɇ','ɘ','ͤ','ᵉ','ᶒ','ḕ','ḗ','ḙ','ḛ','ḝ','ẹ','ẻ','ẽ','ế','ề','ể','ễ','ệ','ₑ','e'],\r\n\t\t'E' : ['E','È','É','Ê','Ë','Ē','Ĕ','Ė','Ę','Ě','Œ','Ǝ','Ɛ','Ȅ','Ȇ','Ȩ','Ɇ','ɛ','ɜ','ɶ','Є','Э','э','є','Ӭ','ӭ','ᴇ','ᴈ','ᴱ','ᴲ','ᵋ','ᵌ','ᶓ','ᶔ','ᶟ','Ḕ','Ḗ','Ḙ','Ḛ','Ḝ','Ẹ','Ẻ','Ẽ','Ế','Ề','Ể','Ễ','Ệ','E','𐐁','𐐩'],\r\n\t\t\r\n\t\t'f' : ['f','ƒ','ᵮ','ᶂ','ᶠ','ḟ','f'],\r\n\t\t'F' : ['F','Ƒ','Ḟ','ⅎ','F'],\r\n\t\t\r\n\t\t'g' : ['g','ĝ','ğ','ġ','ģ','ǥ','ǧ','ǵ','ɠ','ɡ','ᵍ','ᵷ','ᵹ','ᶃ','ᶢ','ḡ','g'],\r\n\t\t'G' : ['G','Ĝ','Ğ','Ġ','Ģ','Ɠ','Ǥ','Ǧ','Ǵ','ɢ','ʛ','ᴳ','Ḡ','G'],\r\n\t\t\r\n\t\t'h' : ['h','ĥ','ħ','ƕ','ȟ','ɥ','ɦ','ʮ','ʯ','ʰ','ʱ','ͪ','Һ','һ','ᑋ','ᶣ','ḣ','ḥ','ḧ','ḩ','ḫ','ⱨ','h'],\r\n\t\t'H' : ['H','Ĥ','Ħ','Ȟ','ʜ','ᕼ','ᚺ','ᚻ','ᴴ','Ḣ','Ḥ','Ḧ','Ḩ','Ḫ','Ⱨ','H'],\r\n\t\t\r\n\t\t'i' : ['i','ì','í','î','ï','ĩ','ī','ĭ','į','ǐ','ȉ','ȋ','ɨ','ͥ','ᴉ','ᵎ','ᵢ','ᶖ','ᶤ','ḭ','ḯ','ỉ','ị','i'],\r\n\t\t'I' : ['I','Ì','Í','Î','Ï','Ĩ','Ī','Ĭ','Į','İ','Ǐ','Ȉ','Ȋ','ɪ','І','ᴵ','ᵻ','ᶦ','ᶧ','Ḭ','Ḯ','Ỉ','Ị','I'],\r\n\t\t\r\n\t\t'j' : ['j','ĵ','ǰ','ɉ','ʝ','ʲ','ᶡ','ᶨ','j'],\r\n\t\t'J' : ['J','Ĵ','ᴊ','ᴶ','J'],\r\n\t\t\r\n\t\t'k' : ['k','ķ','ƙ','ǩ','ʞ','ᵏ','ᶄ','ḱ','ḳ','ḵ','ⱪ','k'],\r\n\t\t'K' : ['K','Ķ','Ƙ','Ǩ','ᴷ','Ḱ','Ḳ','Ḵ','Ⱪ','K'],\r\n\t\t\r\n\t\t'l' : ['l','ĺ','ļ','ľ','ŀ','ł','ƚ','ȴ','ɫ','ɬ','ɭ','ˡ','ᶅ','ᶩ','ᶪ','ḷ','ḹ','ḻ','ḽ','ℓ','ⱡ'],\r\n\t\t'L' : ['L','Ĺ','Ļ','Ľ','Ŀ','Ł','Ƚ','ʟ','ᴌ','ᴸ','ᶫ','Ḷ','Ḹ','Ḻ','Ḽ','Ⱡ','Ɫ'],\r\n\t\t\r\n\t\t'm' : ['m','ɯ','ɰ','ɱ','ͫ','ᴟ','ᵐ','ᵚ','ᵯ','ᶆ','ᶬ','ᶭ','ḿ','ṁ','ṃ','㎡','㎥','m'],\r\n\t\t'M' : ['M','Ɯ','ᴍ','ᴹ','Ḿ','Ṁ','Ṃ','M'],\r\n\t\t\r\n\t\t'n' : ['n','ñ','ń','ņ','ň','ʼn','ƞ','ǹ','ȵ','ɲ','ɳ','ᵰ','ᶇ','ᶮ','ᶯ','ṅ','ṇ','ṉ','ṋ','ⁿ','n'],\r\n\t\t'N' : ['N','Ñ','Ń','Ņ','Ň','Ɲ','Ǹ','Ƞ','ɴ','ᴎ','ᴺ','ᴻ','ᶰ','Ṅ','Ṇ','Ṉ','Ṋ','N'],\r\n\t\t\r\n\t\t'o' : ['o','ò','ó','ô','õ','ö','ø','ō','ŏ','ő','ơ','ǒ','ǫ','ǭ','ǿ','ȍ','ȏ','ȫ','ȭ','ȯ','ȱ','ɵ','ͦ','о','ӧ','ө','ᴏ','ᴑ','ᴓ','ᴼ','ᵒ','ᶱ','ṍ','ṏ','ṑ','ṓ','ọ','ỏ','ố','ồ','ổ','ỗ','ộ','ớ','ờ','ở','ỡ','ợ','ₒ','o','𐐬'],\r\n\t\t'O' : ['O','Ò','Ó','Ô','Õ','Ö','Ø','Ō','Ŏ','Ő','Ɵ','Ơ','Ǒ','Ǫ','Ǭ','Ǿ','Ȍ','Ȏ','Ȫ','Ȭ','Ȯ','Ȱ','О','Ӧ','Ө','Ṍ','Ṏ','Ṑ','Ṓ','Ọ','Ỏ','Ố','Ồ','Ổ','Ỗ','Ộ','Ớ','Ờ','Ở','Ỡ','Ợ','O','𐐄'],\r\n\t\t\r\n\t\t'p' : ['p','ᵖ','ᵱ','ᵽ','ᶈ','ṕ','ṗ','p'],\r\n\t\t'P' : ['P','Ƥ','ᴘ','ᴾ','Ṕ','Ṗ','Ᵽ','P'],\r\n\t\t\r\n\t\t'q' : ['q','ɋ','ʠ','ᛩ','q'],\r\n\t\t'Q' : ['Q','Ɋ','Q'],\r\n\t\t\r\n\t\t'r' : ['r','ŕ','ŗ','ř','ȑ','ȓ','ɍ','ɹ','ɻ','ʳ','ʴ','ʵ','ͬ','ᵣ','ᵲ','ᶉ','ṙ','ṛ','ṝ','ṟ'],\r\n\t\t'R' : ['R','Ŕ','Ŗ','Ř','Ʀ','Ȑ','Ȓ','Ɍ','ʀ','ʁ','ʶ','ᚱ','ᴙ','ᴚ','ᴿ','Ṙ','Ṛ','Ṝ','Ṟ','Ɽ'],\r\n\t\t\r\n\t\t's' : ['s','ś','ŝ','ş','š','ș','ʂ','ᔆ','ᶊ','ṡ','ṣ','ṥ','ṧ','ṩ','s'],\r\n\t\t'S' : ['S','Ś','Ŝ','Ş','Š','Ș','ȿ','ˢ','ᵴ','Ṡ','Ṣ','Ṥ','Ṧ','Ṩ','S'],\r\n\t\t\r\n\t\t't' : ['t','ţ','ť','ŧ','ƫ','ƭ','ț','ʇ','ͭ','ᵀ','ᵗ','ᵵ','ᶵ','ṫ','ṭ','ṯ','ṱ','ẗ','t'],\r\n\t\t'T' : ['T','Ţ','Ť','Ƭ','Ʈ','Ț','Ⱦ','ᴛ','ᵀ','Ṫ','Ṭ','Ṯ','Ṱ','T'],\r\n\t \t\r\n\t\t'u' : ['u','ù','ú','û','ü','ũ','ū','ŭ','ů','ű','ų','ư','ǔ','ǖ','ǘ','ǚ','ǜ','ȕ','ȗ','ͧ','ߎ','ᵘ','ᵤ','ṳ','ṵ','ṷ','ṹ','ṻ','ụ','ủ','ứ','ừ','ử','ữ','ự','u'],\r\n\t\t'U' : ['U','Ù','Ú','Û','Ü','Ũ','Ū','Ŭ','Ů','Ű','Ų','Ư','Ǔ','Ǖ','Ǘ','Ǚ','Ǜ','Ȕ','Ȗ','Ʉ','ᴜ','ᵁ','ᵾ','Ṳ','Ṵ','Ṷ','Ṹ','Ṻ','Ụ','Ủ','Ứ','Ừ','Ử','Ữ','Ự','U'],\r\n\t\t\r\n\t\t'v' : ['v','ʋ','ͮ','ᵛ','ᵥ','ᶹ','ṽ','ṿ','ⱱ','v','ⱴ'],\r\n\t\t'V' : ['V','Ʋ','Ʌ','ʌ','ᴠ','ᶌ','Ṽ','Ṿ','V'],\r\n\t\t\r\n\t\t'w' : ['w','ŵ','ʷ','ᵂ','ẁ','ẃ','ẅ','ẇ','ẉ','ẘ','ⱳ','w'],\r\n\t\t'W' : ['W','Ŵ','ʍ','ᴡ','Ẁ','Ẃ','Ẅ','Ẇ','Ẉ','Ⱳ','W'],\r\n\t\t\r\n\t\t'x' : ['x','̽','͓','ᶍ','ͯ','ẋ','ẍ','ₓ','x'],\r\n\t\t'X' : ['X','ˣ','ͯ','Ẋ','Ẍ','☒','✕','✖','✗','✘','X'],\r\n\t\t\r\n\t\t'y' : ['y','ý','ÿ','ŷ','ȳ','ɏ','ʸ','ẏ','ỳ','ỵ','ỷ','ỹ','y'],\r\n\t\t'Y' : ['Y','Ý','Ŷ','Ÿ','Ƴ','ƴ','Ȳ','Ɏ','ʎ','ʏ','Ẏ','Ỳ','Ỵ','Ỷ','Ỹ','Y'],\r\n\t\t\r\n\t\t'z' : ['z','ź','ż','ž','ƶ','ȥ','ɀ','ʐ','ʑ','ᙆ','ᙇ','ᶻ','ᶼ','ᶽ','ẑ','ẓ','ẕ','ⱬ','z'],\r\n\t\t'Z' : ['Z','Ź','Ż','Ž','Ƶ','Ȥ','ᴢ','ᵶ','Ẑ','Ẓ','Ẕ','Ⱬ','Z']\r\n\t};\r\n\r\n/*\r\n * Main function of the module which removes all diacritics from the received text\r\n */\r\nmodule.exports = function (text) {\r\n var result = [];\r\n\r\n\t// iterate over all the characters of the received text\r\n for(var i=0; i maxLength ? maxLength : 10,\n EXCLUDE_TAGS = ['img', 'br'], // non-closed tags\n items = [], // stack for saving tags\n total = 0, // record how many characters we traced so far\n content = EMPTY_STRING, // truncated text storage\n KEY_VALUE_REGEX = '([\\\\w|-]+\\\\s*(=\\\\s*\"[^\"]*\")?\\\\s*)*',\n IS_CLOSE_REGEX = '\\\\s*\\\\/?\\\\s*',\n CLOSE_REGEX = '\\\\s*\\\\/\\\\s*',\n SELF_CLOSE_REGEX = new RegExp('<\\\\/?\\\\w+\\\\s*' + KEY_VALUE_REGEX + CLOSE_REGEX + '>'),\n HTML_TAG_REGEX = new RegExp('<\\\\/?\\\\w+\\\\s*' + KEY_VALUE_REGEX + IS_CLOSE_REGEX + '>'),\n URL_REGEX = /(((ftp|https?):\\/\\/)[\\-\\w@:%_\\+.~#?,&\\/\\/=]+)|((mailto:)?[_.\\w\\-]+@([\\w][\\w\\-]+\\.)+[a-zA-Z]{2,3})/g, // Simple regexp\n IMAGE_TAG_REGEX = new RegExp(''),\n WORD_BREAK_REGEX = new RegExp('\\\\W+', 'g'),\n matches = true,\n result,\n index,\n tail,\n tag,\n selfClose;\n\n /**\n * Remove image tag\n *\n * @private\n * @method _removeImageTag\n * @param {String} string not-yet-processed string\n * @return {String} string without image tags\n */\n function _removeImageTag(string) {\n var match = IMAGE_TAG_REGEX.exec(string),\n index,\n len;\n\n if (!match) {\n return string;\n }\n\n index = match.index;\n len = match[0].length;\n\n return string.substring(0, index) + string.substring(index + len);\n }\n\n /**\n * Dump all close tags and append to truncated content while reaching upperbound\n *\n * @private\n * @method _dumpCloseTag\n * @param {String[]} tags a list of tags which should be closed\n * @return {String} well-formatted html\n */\n function _dumpCloseTag(tags) {\n var html = '';\n\n tags.reverse().forEach(function (tag, index) {\n // dump non-excluded tags only\n if (-1 === EXCLUDE_TAGS.indexOf(tag)) {\n html += '';\n }\n });\n\n return html;\n }\n\n /**\n * Process tag string to get pure tag name\n *\n * @private\n * @method _getTag\n * @param {String} string original html\n * @return {String} tag name\n */\n function _getTag(string) {\n var tail = string.indexOf(' ');\n\n // TODO:\n // we have to figure out how to handle non-well-formatted HTML case\n if (-1 === tail) {\n tail = string.indexOf('>');\n if (-1 === tail) {\n throw new Error('HTML tag is not well-formed : ' + string);\n }\n }\n\n return string.substring(1, tail);\n }\n\n\n /**\n * Get the end position for String#substring()\n *\n * If options.truncateLastWord is FALSE, we try to the end position up to\n * options.slop characters to avoid breaking in the middle of a word.\n *\n * @private\n * @method _getEndPosition\n * @param {String} string original html\n * @param {Number} tailPos (optional) provided to avoid extending the slop into trailing HTML tag\n * @return {Number} maxLength\n */\n function _getEndPosition (string, tailPos) {\n var defaultPos = maxLength - total,\n position = defaultPos,\n isShort = defaultPos < options.slop,\n slopPos = isShort ? defaultPos : options.slop - 1,\n substr,\n startSlice = isShort ? 0 : defaultPos - options.slop,\n endSlice = tailPos || (defaultPos + options.slop),\n result;\n\n if (!options.truncateLastWord) {\n\n substr = string.slice(startSlice, endSlice);\n\n if (tailPos && substr.length <= tailPos) {\n position = substr.length;\n }\n else {\n while ((result = WORD_BREAK_REGEX.exec(substr)) !== null) {\n // a natural break position before the hard break position\n if (result.index < slopPos) {\n position = defaultPos - (slopPos - result.index);\n // keep seeking closer to the hard break position\n // unless a natural break is at position 0\n if (result.index === 0 && defaultPos <= 1) break;\n }\n // a natural break position exactly at the hard break position\n else if (result.index === slopPos) {\n position = defaultPos;\n break; // seek no more\n }\n // a natural break position after the hard break position\n else {\n position = defaultPos + (result.index - slopPos);\n break; // seek no more\n }\n }\n }\n if (string.charAt(position - 1).match(/\\s$/)) position--;\n }\n return position;\n }\n\n options = options || EMPTY_OBJECT;\n options.ellipsis = (undefined !== options.ellipsis) ? options.ellipsis : DEFAULT_TRUNCATE_SYMBOL;\n options.truncateLastWord = (undefined !== options.truncateLastWord) ? options.truncateLastWord : true;\n options.slop = (undefined !== options.slop) ? options.slop : DEFAULT_SLOP;\n\n while (matches) {\n matches = HTML_TAG_REGEX.exec(string);\n\n if (!matches) {\n if (total >= maxLength) { break; }\n\n matches = URL_REGEX.exec(string);\n if (!matches || matches.index >= maxLength) {\n content += string.substring(0, _getEndPosition(string));\n break;\n }\n\n while (matches) {\n result = matches[0];\n index = matches.index;\n content += string.substring(0, (index + result.length) - total);\n string = string.substring(index + result.length);\n matches = URL_REGEX.exec(string);\n }\n break;\n }\n\n result = matches[0];\n index = matches.index;\n\n if (total + index > maxLength) {\n // exceed given `maxLength`, dump everything to clear stack\n content += string.substring(0, _getEndPosition(string, index));\n break;\n } else {\n total += index;\n content += string.substring(0, index);\n }\n\n if ('/' === result[1]) {\n // move out open tag\n items.pop();\n selfClose=null;\n } else {\n selfClose = SELF_CLOSE_REGEX.exec(result);\n if (!selfClose) {\n tag = _getTag(result);\n\n items.push(tag);\n }\n }\n\n if (selfClose) {\n content += selfClose[0];\n } else {\n content += result;\n }\n string = string.substring(index + result.length);\n }\n\n if (string.length > maxLength - total && options.ellipsis) {\n content += options.ellipsis;\n }\n content += _dumpCloseTag(items);\n\n if (!options.keepImageTag) {\n content = _removeImageTag(content);\n }\n\n return content;\n}\n\nmodule.exports = truncate;\n\n\n//# sourceURL=webpack:///./node_modules/html-truncate/lib/truncate.js?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/index.js": +/*!***************************************************!*\ + !*** ./node_modules/javascript-time-ago/index.js ***! + \***************************************************/ +/*! exports provided: default, intlDateTimeFormatSupported, intlDateTimeFormatSupportedLocale */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _modules_JavascriptTimeAgo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modules/JavascriptTimeAgo */ \"./node_modules/javascript-time-ago/modules/JavascriptTimeAgo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return _modules_JavascriptTimeAgo__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _modules_locale__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/locale */ \"./node_modules/javascript-time-ago/modules/locale.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"intlDateTimeFormatSupported\", function() { return _modules_locale__WEBPACK_IMPORTED_MODULE_1__[\"intlDateTimeFormatSupported\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"intlDateTimeFormatSupportedLocale\", function() { return _modules_locale__WEBPACK_IMPORTED_MODULE_1__[\"intlDateTimeFormatSupportedLocale\"]; });\n\n\r\n\r\n\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/index.js?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/locale-more-styles/en/long-convenient.json": +/*!*************************************************************************************!*\ + !*** ./node_modules/javascript-time-ago/locale-more-styles/en/long-convenient.json ***! + \*************************************************************************************/ +/*! exports provided: year, quarter, month, week, day, hour, minute, second, now, default */ +/***/ (function(module) { + +eval("module.exports = JSON.parse(\"{\\\"year\\\":{\\\"previous\\\":\\\"last year\\\",\\\"current\\\":\\\"this year\\\",\\\"next\\\":\\\"next year\\\",\\\"past\\\":{\\\"one\\\":\\\"a year ago\\\",\\\"other\\\":\\\"{0} years ago\\\"},\\\"future\\\":{\\\"one\\\":\\\"in a year\\\",\\\"other\\\":\\\"in {0} years\\\"}},\\\"quarter\\\":{\\\"previous\\\":\\\"last quarter\\\",\\\"current\\\":\\\"this quarter\\\",\\\"next\\\":\\\"next quarter\\\",\\\"past\\\":{\\\"one\\\":\\\"a quarter ago\\\",\\\"other\\\":\\\"{0} quarters ago\\\"},\\\"future\\\":{\\\"one\\\":\\\"in a quarter\\\",\\\"other\\\":\\\"in {0} quarters\\\"}},\\\"month\\\":{\\\"previous\\\":\\\"last month\\\",\\\"current\\\":\\\"this month\\\",\\\"next\\\":\\\"next month\\\",\\\"past\\\":{\\\"one\\\":\\\"a month ago\\\",\\\"other\\\":\\\"{0} months ago\\\"},\\\"future\\\":{\\\"one\\\":\\\"in a month\\\",\\\"other\\\":\\\"in {0} months\\\"}},\\\"week\\\":{\\\"previous\\\":\\\"last week\\\",\\\"current\\\":\\\"this week\\\",\\\"next\\\":\\\"next week\\\",\\\"past\\\":{\\\"one\\\":\\\"a week ago\\\",\\\"other\\\":\\\"{0} weeks ago\\\"},\\\"future\\\":{\\\"one\\\":\\\"in a week\\\",\\\"other\\\":\\\"in {0} weeks\\\"}},\\\"day\\\":{\\\"previous\\\":\\\"yesterday\\\",\\\"current\\\":\\\"today\\\",\\\"next\\\":\\\"tomorrow\\\",\\\"past\\\":{\\\"one\\\":\\\"a day ago\\\",\\\"other\\\":\\\"{0} days ago\\\"},\\\"future\\\":{\\\"one\\\":\\\"in a day\\\",\\\"other\\\":\\\"in {0} days\\\"}},\\\"hour\\\":{\\\"current\\\":\\\"this hour\\\",\\\"past\\\":{\\\"one\\\":\\\"an hour ago\\\",\\\"other\\\":\\\"{0} hours ago\\\"},\\\"future\\\":{\\\"one\\\":\\\"in an hour\\\",\\\"other\\\":\\\"in {0} hours\\\"}},\\\"minute\\\":{\\\"current\\\":\\\"this minute\\\",\\\"past\\\":{\\\"one\\\":\\\"a minute ago\\\",\\\"other\\\":\\\"{0} minutes ago\\\"},\\\"future\\\":{\\\"one\\\":\\\"in a minute\\\",\\\"other\\\":\\\"in {0} minutes\\\"}},\\\"second\\\":{\\\"current\\\":\\\"now\\\",\\\"past\\\":{\\\"one\\\":\\\"a second ago\\\",\\\"other\\\":\\\"{0} seconds ago\\\"},\\\"future\\\":{\\\"one\\\":\\\"in a second\\\",\\\"other\\\":\\\"in {0} seconds\\\"}},\\\"now\\\":{\\\"future\\\":\\\"in a moment\\\",\\\"past\\\":\\\"just now\\\"}}\");\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/locale-more-styles/en/long-convenient.json?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/locale-more-styles/en/long-time.json": +/*!*******************************************************************************!*\ + !*** ./node_modules/javascript-time-ago/locale-more-styles/en/long-time.json ***! + \*******************************************************************************/ +/*! exports provided: year, month, week, day, hour, minute, second, now, default */ +/***/ (function(module) { + +eval("module.exports = JSON.parse(\"{\\\"year\\\":{\\\"one\\\":\\\"{0} year\\\",\\\"other\\\":\\\"{0} years\\\"},\\\"month\\\":{\\\"one\\\":\\\"{0} month\\\",\\\"other\\\":\\\"{0} months\\\"},\\\"week\\\":{\\\"one\\\":\\\"{0} week\\\",\\\"other\\\":\\\"{0} weeks\\\"},\\\"day\\\":{\\\"one\\\":\\\"{0} day\\\",\\\"other\\\":\\\"{0} days\\\"},\\\"hour\\\":{\\\"one\\\":\\\"{0} hour\\\",\\\"other\\\":\\\"{0} hours\\\"},\\\"minute\\\":{\\\"one\\\":\\\"{0} minute\\\",\\\"other\\\":\\\"{0} minutes\\\"},\\\"second\\\":{\\\"one\\\":\\\"{0} second\\\",\\\"other\\\":\\\"{0} seconds\\\"},\\\"now\\\":{\\\"future\\\":\\\"in a moment\\\",\\\"past\\\":\\\"just now\\\"}}\");\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/locale-more-styles/en/long-time.json?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/locale-more-styles/en/short-convenient.json": +/*!**************************************************************************************!*\ + !*** ./node_modules/javascript-time-ago/locale-more-styles/en/short-convenient.json ***! + \**************************************************************************************/ +/*! exports provided: year, quarter, month, week, day, hour, minute, second, now, default */ +/***/ (function(module) { + +eval("module.exports = JSON.parse(\"{\\\"year\\\":{\\\"previous\\\":\\\"last yr.\\\",\\\"current\\\":\\\"this yr.\\\",\\\"next\\\":\\\"next yr.\\\",\\\"past\\\":\\\"{0} yr. ago\\\",\\\"future\\\":\\\"in {0} yr.\\\"},\\\"quarter\\\":{\\\"previous\\\":\\\"last qtr.\\\",\\\"current\\\":\\\"this qtr.\\\",\\\"next\\\":\\\"next qtr.\\\",\\\"past\\\":{\\\"one\\\":\\\"{0} qtr. ago\\\",\\\"other\\\":\\\"{0} qtrs. ago\\\"},\\\"future\\\":{\\\"one\\\":\\\"in {0} qtr.\\\",\\\"other\\\":\\\"in {0} qtrs.\\\"}},\\\"month\\\":{\\\"previous\\\":\\\"last mo.\\\",\\\"current\\\":\\\"this mo.\\\",\\\"next\\\":\\\"next mo.\\\",\\\"past\\\":\\\"{0} mo. ago\\\",\\\"future\\\":\\\"in {0} mo.\\\"},\\\"week\\\":{\\\"previous\\\":\\\"last wk.\\\",\\\"current\\\":\\\"this wk.\\\",\\\"next\\\":\\\"next wk.\\\",\\\"past\\\":\\\"{0} wk. ago\\\",\\\"future\\\":\\\"in {0} wk.\\\"},\\\"day\\\":{\\\"previous\\\":\\\"yesterday\\\",\\\"current\\\":\\\"today\\\",\\\"next\\\":\\\"tomorrow\\\",\\\"past\\\":{\\\"one\\\":\\\"{0} day ago\\\",\\\"other\\\":\\\"{0} days ago\\\"},\\\"future\\\":{\\\"one\\\":\\\"in {0} day\\\",\\\"other\\\":\\\"in {0} days\\\"}},\\\"hour\\\":{\\\"current\\\":\\\"this hour\\\",\\\"past\\\":\\\"{0} hr. ago\\\",\\\"future\\\":\\\"in {0} hr.\\\"},\\\"minute\\\":{\\\"current\\\":\\\"this minute\\\",\\\"past\\\":\\\"{0} min. ago\\\",\\\"future\\\":\\\"in {0} min.\\\"},\\\"second\\\":{\\\"current\\\":\\\"now\\\",\\\"past\\\":\\\"{0} sec. ago\\\",\\\"future\\\":\\\"in {0} sec.\\\"},\\\"now\\\":{\\\"future\\\":\\\"in a moment\\\",\\\"past\\\":\\\"just now\\\"}}\");\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/locale-more-styles/en/short-convenient.json?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/locale-more-styles/en/short-time.json": +/*!********************************************************************************!*\ + !*** ./node_modules/javascript-time-ago/locale-more-styles/en/short-time.json ***! + \********************************************************************************/ +/*! exports provided: year, month, week, day, hour, minute, second, now, default */ +/***/ (function(module) { + +eval("module.exports = JSON.parse(\"{\\\"year\\\":\\\"{0} yr.\\\",\\\"month\\\":\\\"{0} mo.\\\",\\\"week\\\":\\\"{0} wk.\\\",\\\"day\\\":{\\\"one\\\":\\\"{0} day\\\",\\\"other\\\":\\\"{0} days\\\"},\\\"hour\\\":\\\"{0} hr.\\\",\\\"minute\\\":\\\"{0} min.\\\",\\\"second\\\":\\\"{0} sec.\\\",\\\"now\\\":\\\"now\\\"}\");\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/locale-more-styles/en/short-time.json?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/locale-more-styles/en/tiny.json": +/*!**************************************************************************!*\ + !*** ./node_modules/javascript-time-ago/locale-more-styles/en/tiny.json ***! + \**************************************************************************/ +/*! exports provided: year, month, week, day, hour, minute, second, now, default */ +/***/ (function(module) { + +eval("module.exports = JSON.parse(\"{\\\"year\\\":\\\"{0}yr\\\",\\\"month\\\":\\\"{0}mo\\\",\\\"week\\\":\\\"{0}wk\\\",\\\"day\\\":\\\"{0}d\\\",\\\"hour\\\":\\\"{0}h\\\",\\\"minute\\\":\\\"{0}m\\\",\\\"second\\\":\\\"{0}s\\\",\\\"now\\\":\\\"now\\\"}\");\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/locale-more-styles/en/tiny.json?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/locale/en/index.js": +/*!*************************************************************!*\ + !*** ./node_modules/javascript-time-ago/locale/en/index.js ***! + \*************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var locale = __webpack_require__(/*! relative-time-format/locale/en */ \"./node_modules/relative-time-format/locale/en/index.js\")\n\nmodule.exports = {\n\tlocale: locale.locale,\n\t// Standard styles.\n\tlong: locale.long,\n\tshort: locale.short,\n\tnarrow: locale.narrow,\n\t// Additional styles.\n\t'short-time': __webpack_require__(/*! ../../locale-more-styles/en/short-time.json */ \"./node_modules/javascript-time-ago/locale-more-styles/en/short-time.json\"),\n\t'short-convenient': __webpack_require__(/*! ../../locale-more-styles/en/short-convenient.json */ \"./node_modules/javascript-time-ago/locale-more-styles/en/short-convenient.json\"),\n\t'long-time': __webpack_require__(/*! ../../locale-more-styles/en/long-time.json */ \"./node_modules/javascript-time-ago/locale-more-styles/en/long-time.json\"),\n\t'long-convenient': __webpack_require__(/*! ../../locale-more-styles/en/long-convenient.json */ \"./node_modules/javascript-time-ago/locale-more-styles/en/long-convenient.json\"),\n\t'tiny': __webpack_require__(/*! ../../locale-more-styles/en/tiny.json */ \"./node_modules/javascript-time-ago/locale-more-styles/en/tiny.json\"),\n\t// Quantifier.\n\tquantify: locale.quantify\n}\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/locale/en/index.js?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/modules/JavascriptTimeAgo.js": +/*!***********************************************************************!*\ + !*** ./node_modules/javascript-time-ago/modules/JavascriptTimeAgo.js ***! + \***********************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return JavascriptTimeAgo; });\n/* harmony import */ var relative_time_format__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! relative-time-format */ \"./node_modules/relative-time-format/index.js\");\n/* harmony import */ var _cache__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./cache */ \"./node_modules/javascript-time-ago/modules/cache.js\");\n/* harmony import */ var _grade__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./grade */ \"./node_modules/javascript-time-ago/modules/grade.js\");\n/* harmony import */ var _locale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./locale */ \"./node_modules/javascript-time-ago/modules/locale.js\");\n/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./style */ \"./node_modules/javascript-time-ago/modules/style/index.js\");\n/* harmony import */ var _LocaleDataStore__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./LocaleDataStore */ \"./node_modules/javascript-time-ago/modules/LocaleDataStore.js\");\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n\n\n\n\n\n // const EXTRA_STYLES = [\n// \t'long-convenient',\n// \t'long-time',\n// \t'short-convenient',\n// \t'short-time',\n// \t'tiny'\n// ]\n// Valid time units.\n\nvar UNITS = ['now', // The rest are the same as in `Intl.RelativeTimeFormat`.\n'second', 'minute', 'hour', 'day', 'week', 'month', 'quarter', 'year'];\n\nvar JavascriptTimeAgo =\n/*#__PURE__*/\nfunction () {\n /**\r\n * @param {(string|string[])} locales=[] - Preferred locales (or locale).\r\n */\n function JavascriptTimeAgo() {\n var locales = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n _classCallCheck(this, JavascriptTimeAgo);\n\n // Convert `locales` to an array.\n if (typeof locales === 'string') {\n locales = [locales];\n } // Choose the most appropriate locale\n // (one of the previously added ones)\n // based on the list of preferred `locales` supplied by the user.\n\n\n this.locale = Object(_locale__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(locales.concat(relative_time_format__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getDefaultLocale()), _LocaleDataStore__WEBPACK_IMPORTED_MODULE_5__[\"getLocaleData\"]); // Use `Intl.NumberFormat` for formatting numbers (when available).\n\n if (typeof Intl !== 'undefined' && Intl.NumberFormat) {\n this.numberFormat = new Intl.NumberFormat(this.locale);\n } // Cache `Intl.RelativeTimeFormat` instance.\n\n\n this.relativeTimeFormatCache = new _cache__WEBPACK_IMPORTED_MODULE_1__[\"default\"]();\n } // Formats the relative date/time.\n //\n // @return {string} Returns the formatted relative date/time.\n //\n // @param {(Object|string)} [style] - Relative date/time formatting style.\n //\n // @param {string[]} [style.units] - A list of allowed time units\n // (e.g. ['second', 'minute', 'hour', …])\n //\n // @param {Function} [style.custom] - `function ({ elapsed, time, date, now })`.\n // If this function returns a value, then\n // the `.format()` call will return that value.\n // Otherwise it has no effect.\n //\n // @param {string} [style.flavour] - e.g. \"long\", \"short\", \"tiny\", etc.\n //\n // @param {Object[]} [style.gradation] - Time scale gradation steps.\n //\n // @param {string} style.gradation[].unit - Time interval measurement unit.\n // (e.g. ['second', 'minute', 'hour', …])\n //\n // @param {Number} style.gradation[].factor - Time interval measurement unit factor.\n // (e.g. `60` for 'minute')\n //\n // @param {Number} [style.gradation[].granularity] - A step for the unit's \"amount\" value.\n // (e.g. `5` for '0 minutes', '5 minutes', etc)\n //\n // @param {Number} [style.gradation[].threshold] - Time interval measurement unit threshold.\n // (e.g. `45` seconds for 'minute').\n // There can also be specific `threshold_[unit]`\n // thresholds for fine-tuning.\n //\n\n\n _createClass(JavascriptTimeAgo, [{\n key: \"format\",\n value: function format(input) {\n var style = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _style__WEBPACK_IMPORTED_MODULE_4__[\"defaultStyle\"];\n\n if (typeof style === 'string') {\n switch (style) {\n case 'twitter':\n style = _style__WEBPACK_IMPORTED_MODULE_4__[\"twitterStyle\"];\n break;\n\n case 'time':\n style = _style__WEBPACK_IMPORTED_MODULE_4__[\"timeStyle\"];\n break;\n\n default:\n style = _style__WEBPACK_IMPORTED_MODULE_4__[\"defaultStyle\"];\n }\n }\n\n var _getDateAndTimeBeingF = getDateAndTimeBeingFormatted(input),\n date = _getDateAndTimeBeingF.date,\n time = _getDateAndTimeBeingF.time; // Get locale messages for this formatting flavour\n\n\n var _this$getLocaleData = this.getLocaleData(style.flavour),\n flavour = _this$getLocaleData.flavour,\n localeData = _this$getLocaleData.localeData; // Can pass a custom `now`, e.g. for testing purposes.\n // Technically it doesn't belong to `style`\n // but since this is an undocumented internal feature,\n // taking it from the `style` argument will do (for now).\n\n\n var now = style.now || Date.now(); // how much time elapsed (in seconds)\n\n var elapsed = (now - time) / 1000; // in seconds\n // `custom` – A function of `{ elapsed, time, date, now, locale }`.\n // If this function returns a value, then the `.format()` call will return that value.\n // Otherwise the relative date/time is formatted as usual.\n // This feature is currently not used anywhere and is here\n // just for providing the ultimate customization point\n // in case anyone would ever need that. Prefer using\n // `gradation[step].format(value, locale)` instead.\n //\n // I guess `custom` is deprecated and will be removed\n // in some future major version release.\n //\n\n if (style.custom) {\n var custom = style.custom({\n now: now,\n date: date,\n time: time,\n elapsed: elapsed,\n locale: this.locale\n });\n\n if (custom !== undefined) {\n return custom;\n }\n } // Available time interval measurement units.\n\n\n var units = getTimeIntervalMeasurementUnits(localeData, style.units); // If no available time unit is suitable, just output an empty string.\n\n if (units.length === 0) {\n console.error(\"Units \\\"\".concat(units.join(', '), \"\\\" were not found in locale data for \\\"\").concat(this.locale, \"\\\".\"));\n return '';\n } // Choose the appropriate time measurement unit\n // and get the corresponding rounded time amount.\n\n\n var step = Object(_grade__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(Math.abs(elapsed), now, units, style.gradation); // If no time unit is suitable, just output an empty string.\n // E.g. when \"now\" unit is not available\n // and \"second\" has a threshold of `0.5`\n // (e.g. the \"canonical\" grading scale).\n\n if (!step) {\n return '';\n }\n\n if (step.format) {\n return step.format(date || time, this.locale);\n }\n\n var unit = step.unit,\n factor = step.factor,\n granularity = step.granularity;\n var amount = Math.abs(elapsed) / factor; // Apply granularity to the time amount\n // (and fallback to the previous step\n // if the first level of granularity\n // isn't met by this amount)\n\n if (granularity) {\n // Recalculate the elapsed time amount based on granularity\n amount = Math.round(amount / granularity) * granularity;\n } // `Intl.RelativeTimeFormat` doesn't operate in \"now\" units.\n\n\n if (unit === 'now') {\n return getNowMessage(localeData, -1 * Math.sign(elapsed));\n }\n\n switch (flavour) {\n case 'long':\n case 'short':\n case 'narrow':\n // Format `value` using `Intl.RelativeTimeFormat`.\n return this.getFormatter(flavour).format(-1 * Math.sign(elapsed) * Math.round(amount), unit);\n\n default:\n // Format `value`.\n // (mimicks `Intl.RelativeTimeFormat` with the addition of extra styles)\n return this.formatValue(-1 * Math.sign(elapsed) * Math.round(amount), unit, localeData);\n }\n }\n /**\r\n * Mimicks what `Intl.RelativeTimeFormat` does for additional locale styles.\r\n * @param {number} value\r\n * @param {string} unit\r\n * @param {object} localeData — Relative time messages for the flavor.\r\n * @return {string}\r\n */\n\n }, {\n key: \"formatValue\",\n value: function formatValue(value, unit, localeData) {\n return this.getRule(value, unit, localeData).replace('{0}', this.formatNumber(Math.abs(value)));\n }\n /**\r\n * Returns formatting rule for `value` in `units` (either in past or in future).\r\n * @param {number} value - Time interval value.\r\n * @param {string} unit - Time interval measurement unit.\r\n * @param {object} localeData — Relative time messages for the flavor.\r\n * @return {string}\r\n * @example\r\n * // Returns \"{0} days ago\"\r\n * getRule(-2, \"day\")\r\n */\n\n }, {\n key: \"getRule\",\n value: function getRule(value, unit, localeData) {\n var unitRules = localeData[unit]; // Bundle size optimization technique.\n\n if (typeof unitRules === 'string') {\n return unitRules;\n } // Choose either \"past\" or \"future\" based on time `value` sign.\n // If \"past\" is same as \"future\" then they're stored as \"other\".\n // If there's only \"other\" then it's being collapsed.\n\n\n var quantifierRules = unitRules[value <= 0 ? 'past' : 'future'] || unitRules; // Bundle size optimization technique.\n\n if (typeof quantifierRules === 'string') {\n return quantifierRules;\n } // Quantify `value`.\n\n\n var quantify = Object(_LocaleDataStore__WEBPACK_IMPORTED_MODULE_5__[\"getLocaleData\"])(this.locale).quantify;\n\n var quantifier = quantify && quantify(Math.abs(value)); // There seems to be no such locale in CLDR\n // for which `quantify` is missing\n // and still `past` and `future` messages\n // contain something other than \"other\".\n\n /* istanbul ignore next */\n\n quantifier = quantifier || 'other'; // \"other\" rule is supposed to always be present.\n // If only \"other\" rule is present then \"rules\" is not an object and is a string.\n\n return quantifierRules[quantifier] || quantifierRules.other;\n }\n /**\r\n * Formats a number into a string.\r\n * Uses `Intl.NumberFormat` when available.\r\n * @param {number} number\r\n * @return {string}\r\n */\n\n }, {\n key: \"formatNumber\",\n value: function formatNumber(number) {\n return this.numberFormat ? this.numberFormat.format(number) : String(number);\n }\n /**\r\n * Returns an `Intl.RelativeTimeFormat` for a given `flavor`.\r\n * @param {string} flavor\r\n * @return {object} `Intl.RelativeTimeFormat` instance\r\n */\n\n }, {\n key: \"getFormatter\",\n value: function getFormatter(flavor) {\n // `Intl.RelativeTimeFormat` instance creation is assumed a\n // lengthy operation so the instances are cached and reused.\n return this.relativeTimeFormatCache.get(this.locale, flavor) || this.relativeTimeFormatCache.put(this.locale, flavor, new relative_time_format__WEBPACK_IMPORTED_MODULE_0__[\"default\"](this.locale, {\n style: flavor\n }));\n }\n /**\r\n * Gets locale messages for this formatting flavour\r\n *\r\n * @param {(string|string[])} flavour - Relative date/time formatting flavour.\r\n * If it's an array then all flavours are tried in order.\r\n *\r\n * @returns {Object} Returns an object of shape { flavour, localeData }\r\n */\n\n }, {\n key: \"getLocaleData\",\n value: function getLocaleData() {\n var flavour = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n // Get relative time formatting rules for this locale\n var localeData = Object(_LocaleDataStore__WEBPACK_IMPORTED_MODULE_5__[\"getLocaleData\"])(this.locale); // Convert `flavour` to an array.\n\n\n if (typeof flavour === 'string') {\n flavour = [flavour];\n } // \"long\" flavour is the default one.\n // (it's always present)\n\n\n flavour = flavour.concat('long'); // Find a suitable flavour.\n\n for (var _iterator = flavour, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var _ = _ref;\n\n if (localeData[_]) {\n return {\n flavour: _,\n localeData: localeData[_]\n };\n }\n } // Can't happen - \"long\" flavour is always present.\n // throw new Error(`None of the flavours - ${flavour.join(', ')} - was found for locale \"${this.locale}\".`)\n\n }\n }]);\n\n return JavascriptTimeAgo;\n}();\n/**\r\n * Gets default locale.\r\n * @return {string} locale\r\n */\n\n\n\nJavascriptTimeAgo.getDefaultLocale = relative_time_format__WEBPACK_IMPORTED_MODULE_0__[\"default\"].getDefaultLocale;\n/**\r\n * Sets default locale.\r\n * @param {string} locale\r\n */\n\nJavascriptTimeAgo.setDefaultLocale = relative_time_format__WEBPACK_IMPORTED_MODULE_0__[\"default\"].setDefaultLocale;\n/**\r\n * Adds locale data for a specific locale.\r\n * @param {Object} localeData\r\n */\n\nJavascriptTimeAgo.addLocale = function (localeData) {\n Object(_LocaleDataStore__WEBPACK_IMPORTED_MODULE_5__[\"addLocaleData\"])(localeData);\n relative_time_format__WEBPACK_IMPORTED_MODULE_0__[\"default\"].addLocale(localeData);\n};\n/**\r\n * (legacy alias)\r\n * Adds locale data for a specific locale.\r\n * @param {Object} localeData\r\n * @deprecated\r\n */\n\n\nJavascriptTimeAgo.locale = JavascriptTimeAgo.addLocale; // Normalizes `.format()` `time` argument.\n\nfunction getDateAndTimeBeingFormatted(input) {\n if (input.constructor === Date || isMockedDate(input)) {\n return {\n date: input,\n time: input.getTime()\n };\n }\n\n if (typeof input === 'number') {\n return {\n time: input // `date` is not required for formatting\n // relative times unless \"twitter\" preset is used.\n // date : new Date(input)\n\n };\n } // For some weird reason istanbul doesn't see this `throw` covered.\n\n /* istanbul ignore next */\n\n\n throw new Error(\"Unsupported relative time formatter input: \".concat(_typeof(input), \", \").concat(input));\n} // During testing via some testing libraries `Date`s aren't actually `Date`s.\n// https://github.com/catamphetamine/javascript-time-ago/issues/22\n\n\nfunction isMockedDate(object) {\n return _typeof(object) === 'object' && typeof object.getTime === 'function';\n} // Get available time interval measurement units.\n\n\nfunction getTimeIntervalMeasurementUnits(localeData, restrictedSetOfUnits) {\n // All available time interval measurement units.\n var units = Object.keys(localeData); // If only a specific set of available\n // time measurement units can be used.\n\n if (restrictedSetOfUnits) {\n // Reduce available time interval measurement units\n // based on user's preferences.\n units = restrictedSetOfUnits.filter(function (_) {\n return units.indexOf(_) >= 0;\n });\n } // Stock `Intl.RelativeTimeFormat` locale data doesn't have \"now\" units.\n // So either \"now\" is present in extended locale data\n // or it's taken from \".second.current\".\n\n\n if ((!restrictedSetOfUnits || restrictedSetOfUnits.indexOf('now') >= 0) && units.indexOf('now') < 0) {\n if (localeData.second.current) {\n units.unshift('now');\n }\n }\n\n return units;\n}\n\nfunction getNowMessage(localeData, value) {\n // Specific \"now\" message form extended locale data (if present).\n if (localeData.now) {\n // Bundle size optimization technique.\n if (typeof localeData.now === 'string') {\n return localeData.now;\n } // Not handling `value === 0` as `localeData.now.current` here\n // because it wouldn't make sense: \"now\" is a moment,\n // so one can't possibly differentiate between a\n // \"previous\" moment, a \"current\" moment and a \"next moment\".\n // It can only be differentiated between \"past\" and \"future\".\n\n\n if (value <= 0) {\n return localeData.now.past;\n } else {\n return localeData.now.future;\n }\n } // Use \".second.current\" as \"now\" message.\n\n\n return localeData.second.current; // If this function was called then\n // it means that either \"now\" unit messages are\n // available or \".second.current\" message is present.\n}\n//# sourceMappingURL=JavascriptTimeAgo.js.map\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/modules/JavascriptTimeAgo.js?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/modules/LocaleDataStore.js": +/*!*********************************************************************!*\ + !*** ./node_modules/javascript-time-ago/modules/LocaleDataStore.js ***! + \*********************************************************************/ +/*! exports provided: getLocaleData, addLocaleData */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLocaleData\", function() { return getLocaleData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addLocaleData\", function() { return addLocaleData; });\n// Fallback locale.\n// (when not a single one of the supplied \"preferred\" locales is available)\nvar defaultLocale = 'en'; // For all locales added\n// their relative time formatter messages will be stored here.\n\nvar localesData = {};\nfunction getLocaleData(locale) {\n return localesData[locale];\n}\nfunction addLocaleData(localeData) {\n if (!localeData) {\n throw new Error('[javascript-time-ago] No locale data passed.');\n } // This locale data is stored in a global variable\n // and later used when calling `.format(time)`.\n\n\n localesData[localeData.locale] = localeData;\n}\n//# sourceMappingURL=LocaleDataStore.js.map\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/modules/LocaleDataStore.js?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/modules/cache.js": +/*!***********************************************************!*\ + !*** ./node_modules/javascript-time-ago/modules/cache.js ***! + \***********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Cache; });\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/**\r\n * A basic in-memory cache.\r\n *\r\n * import Cache from 'javascript-time-ago/Cache'\r\n * const cache = new Cache()\r\n * const object = cache.get('key1', 'key2', ...) || cache.put('key1', 'key2', ..., createObject())\r\n */\nvar Cache =\n/*#__PURE__*/\nfunction () {\n function Cache() {\n _classCallCheck(this, Cache);\n\n _defineProperty(this, \"cache\", {});\n }\n\n _createClass(Cache, [{\n key: \"get\",\n value: function get() {\n var cache = this.cache;\n\n for (var _len = arguments.length, keys = new Array(_len), _key = 0; _key < _len; _key++) {\n keys[_key] = arguments[_key];\n }\n\n for (var _i = 0; _i < keys.length; _i++) {\n var key = keys[_i];\n\n if (_typeof(cache) !== 'object') {\n return;\n }\n\n cache = cache[key];\n }\n\n return cache;\n }\n }, {\n key: \"put\",\n value: function put() {\n for (var _len2 = arguments.length, keys = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n keys[_key2] = arguments[_key2];\n }\n\n var value = keys.pop();\n var lastKey = keys.pop();\n var cache = this.cache;\n\n for (var _i2 = 0; _i2 < keys.length; _i2++) {\n var key = keys[_i2];\n\n if (_typeof(cache[key]) !== 'object') {\n cache[key] = {};\n }\n\n cache = cache[key];\n }\n\n return cache[lastKey] = value;\n }\n }]);\n\n return Cache;\n}();\n\n\n//# sourceMappingURL=cache.js.map\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/modules/cache.js?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/modules/gradation/canonical.js": +/*!*************************************************************************!*\ + !*** ./node_modules/javascript-time-ago/modules/gradation/canonical.js ***! + \*************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ \"./node_modules/javascript-time-ago/modules/gradation/helpers.js\");\n // just now\n// 1 second ago\n// 2 seconds ago\n// …\n// 59 seconds ago\n// 1 minute ago\n// 2 minutes ago\n// …\n// 59 minutes ago\n// 1 hour ago\n// 2 hours ago\n// …\n// 24 hours ago\n// 1 day ago\n// 2 days ago\n// …\n// 7 days ago\n// 1 week ago\n// 2 weeks ago\n// …\n// 3 weeks ago\n// 1 month ago\n// 2 months ago\n// …\n// 11 months ago\n// 1 year ago\n// 2 years ago\n// …\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ([{\n factor: 1,\n unit: 'now'\n}, {\n threshold: 0.5,\n factor: 1,\n unit: 'second'\n}, {\n threshold: 59.5,\n factor: 60,\n unit: 'minute'\n}, {\n threshold: 59.5 * 60,\n factor: 60 * 60,\n unit: 'hour'\n}, {\n threshold: 23.5 * 60 * 60,\n factor: _helpers__WEBPACK_IMPORTED_MODULE_0__[\"day\"],\n unit: 'day'\n}, {\n threshold: 6.5 * _helpers__WEBPACK_IMPORTED_MODULE_0__[\"day\"],\n factor: 7 * _helpers__WEBPACK_IMPORTED_MODULE_0__[\"day\"],\n unit: 'week'\n}, {\n threshold: 3.5 * 7 * _helpers__WEBPACK_IMPORTED_MODULE_0__[\"day\"],\n factor: _helpers__WEBPACK_IMPORTED_MODULE_0__[\"month\"],\n unit: 'month'\n}, {\n threshold: 11.5 * _helpers__WEBPACK_IMPORTED_MODULE_0__[\"month\"],\n factor: _helpers__WEBPACK_IMPORTED_MODULE_0__[\"year\"],\n unit: 'year'\n}]);\n//# sourceMappingURL=canonical.js.map\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/modules/gradation/canonical.js?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/modules/gradation/convenient.js": +/*!**************************************************************************!*\ + !*** ./node_modules/javascript-time-ago/modules/gradation/convenient.js ***! + \**************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers */ \"./node_modules/javascript-time-ago/modules/gradation/helpers.js\");\n // just now\n// 1 minute ago\n// 2 minutes ago\n// 5 minutes ago\n// 10 minutes ago\n// 15 minutes ago\n// 20 minutes ago\n// an hour ago\n// 2 hours ago\n// …\n// 20 hours ago\n// a day ago\n// 2 days ago\n// 5 days ago\n// a week ago\n// 2 weeks ago\n// 3 weeks ago\n// a month ago\n// 2 months ago\n// 4 months ago\n// a year ago\n// 2 years ago\n// …\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ([{\n factor: 1,\n unit: 'now'\n}, {\n threshold: 1,\n threshold_for_now: 45,\n factor: 1,\n unit: 'second'\n}, {\n threshold: 45,\n factor: 60,\n unit: 'minute'\n}, {\n threshold: 2.5 * 60,\n factor: 60,\n granularity: 5,\n unit: 'minute'\n}, {\n threshold: 22.5 * 60,\n factor: 30 * 60,\n unit: 'half-hour'\n}, {\n threshold: 42.5 * 60,\n threshold_for_minute: 52.5 * 60,\n factor: 60 * 60,\n unit: 'hour'\n}, {\n threshold: 20.5 / 24 * _helpers__WEBPACK_IMPORTED_MODULE_0__[\"day\"],\n factor: _helpers__WEBPACK_IMPORTED_MODULE_0__[\"day\"],\n unit: 'day'\n}, {\n threshold: 5.5 * _helpers__WEBPACK_IMPORTED_MODULE_0__[\"day\"],\n factor: 7 * _helpers__WEBPACK_IMPORTED_MODULE_0__[\"day\"],\n unit: 'week'\n}, {\n threshold: 3.5 * 7 * _helpers__WEBPACK_IMPORTED_MODULE_0__[\"day\"],\n factor: _helpers__WEBPACK_IMPORTED_MODULE_0__[\"month\"],\n unit: 'month'\n}, {\n threshold: 10.5 * _helpers__WEBPACK_IMPORTED_MODULE_0__[\"month\"],\n factor: _helpers__WEBPACK_IMPORTED_MODULE_0__[\"year\"],\n unit: 'year'\n}]);\n//# sourceMappingURL=convenient.js.map\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/modules/gradation/convenient.js?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/modules/gradation/helpers.js": +/*!***********************************************************************!*\ + !*** ./node_modules/javascript-time-ago/modules/gradation/helpers.js ***! + \***********************************************************************/ +/*! exports provided: minute, hour, day, month, year, getStep, getDate */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"minute\", function() { return minute; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hour\", function() { return hour; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"day\", function() { return day; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"month\", function() { return month; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"year\", function() { return year; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStep\", function() { return getStep; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDate\", function() { return getDate; });\nvar minute = 60; // in seconds\n\nvar hour = 60 * minute; // in seconds\n\nvar day = 24 * hour; // in seconds\n// https://www.quora.com/What-is-the-average-number-of-days-in-a-month\n\nvar month = 30.44 * day; // in seconds\n// \"400 years have 146097 days (taking into account leap year rules)\"\n\nvar year = 146097 / 400 * day; // in seconds\n\n/**\r\n * Returns a step of gradation corresponding to the unit.\r\n * @param {Object[]} gradation\r\n * @param {string} unit\r\n * @return {?Object}\r\n */\n\nfunction getStep(gradation, unit) {\n for (var _iterator = gradation, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var step = _ref;\n\n if (step.unit === unit) {\n return step;\n }\n }\n}\n/**\r\n * Converts value to a `Date`\r\n * @param {(number|Date)} value\r\n * @return {Date}\r\n */\n\nfunction getDate(value) {\n return value instanceof Date ? value : new Date(value);\n}\n//# sourceMappingURL=helpers.js.map\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/modules/gradation/helpers.js?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/modules/gradation/index.js": +/*!*********************************************************************!*\ + !*** ./node_modules/javascript-time-ago/modules/gradation/index.js ***! + \*********************************************************************/ +/*! exports provided: canonical, convenient, minute, hour, day, month, year, getStep, getDate */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _canonical__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./canonical */ \"./node_modules/javascript-time-ago/modules/gradation/canonical.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"canonical\", function() { return _canonical__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _convenient__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./convenient */ \"./node_modules/javascript-time-ago/modules/gradation/convenient.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"convenient\", function() { return _convenient__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers */ \"./node_modules/javascript-time-ago/modules/gradation/helpers.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"minute\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_2__[\"minute\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hour\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_2__[\"hour\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"day\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_2__[\"day\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"month\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_2__[\"month\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"year\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_2__[\"year\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStep\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_2__[\"getStep\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getDate\", function() { return _helpers__WEBPACK_IMPORTED_MODULE_2__[\"getDate\"]; });\n\n// A gradation is a mapping from a time interval (in seconds)\n// to the most appropriate time interval measurement unit\n// for describing it, along with the amount of such units.\n//\n// E.g. for \"canonical\" gradation:\n//\n// 0 -> 1 'now'\n// 0.5 -> 1 'second'\n// 60 -> 1 'minute'\n// 91 -> 2 'minute's\n// ...\n//\n// Each gradation unit can have:\n//\n// * unit - (required) The name of the time interval measurement unit.\n//\n// * factor - (required) The amount of seconds will be divided by this number for this unit.\n//\n// * granularity - A step for the unit's resulting \"amount\" value.\n//\n// * threshold - Min value (in seconds) for this unit. Is required for non-first unit.\n//\n// * threshold_for_[unit] - A specific threshold required for moving from `[unit]` to this unit.\n// E.g. if \"now\" unit is present in time units gradation\n// then `threshold_for_now` can be set to `45` seconds.\n// Otherwise, if \"now\" unit is omitted from time units gradation,\n// then `elapsed(0)` will output \"0 seconds\" because there's no `threshold`.\n//\n// A user can supply his own gradation.\n//\n// Don't name a gradation \"default\"\n// because that would conflict with the\n// CommonJS \"interoperability\" export layer.\n//\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/modules/gradation/index.js?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/modules/grade.js": +/*!***********************************************************!*\ + !*** ./node_modules/javascript-time-ago/modules/grade.js ***! + \***********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return grade; });\n/* harmony import */ var _gradation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./gradation */ \"./node_modules/javascript-time-ago/modules/gradation/index.js\");\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n\n/**\r\n * Takes seconds `elapsed` and measures them against\r\n * `gradation` to return the suitable `gradation` step.\r\n *\r\n * @param {number} elapsed - Time interval (in seconds)\r\n *\r\n * @param {string[]} units - A list of allowed time units\r\n * (e.g. ['second', 'minute', 'hour', …])\r\n *\r\n * @param {Object} [gradation] - Time scale gradation steps.\r\n *\r\n * E.g.:\r\n * [\r\n * { unit: 'second', factor: 1 },\r\n * { unit: 'minute', factor: 60, threshold: 60 },\r\n * { format(), threshold: 24 * 60 * 60 },\r\n * …\r\n * ]\r\n *\r\n * @return {?Object} `gradation` step.\r\n */\n\nfunction grade(elapsed, now, units) {\n var gradation = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : _gradation__WEBPACK_IMPORTED_MODULE_0__[\"convenient\"];\n // Leave only allowed time measurement units.\n // E.g. omit \"quarter\" unit.\n gradation = getAllowedSteps(gradation, units); // If no steps of gradation fit the conditions\n // then return nothing.\n\n if (gradation.length === 0) {\n return;\n } // Find the most appropriate gradation step\n\n\n var i = findGradationStep(elapsed, now, gradation);\n var step = gradation[i]; // If time elapsed is too small and even\n // the first gradation step doesn't suit it\n // then return nothing.\n\n if (i === -1) {\n return;\n } // Apply granularity to the time amount\n // (and fall back to the previous step\n // if the first level of granularity\n // isn't met by this amount)\n\n\n if (step.granularity) {\n // Recalculate the elapsed time amount based on granularity\n var amount = Math.round(elapsed / step.factor / step.granularity) * step.granularity; // If the granularity for this step\n // is too high, then fallback\n // to the previous step of gradation.\n // (if there is any previous step of gradation)\n\n if (amount === 0 && i > 0) {\n return gradation[i - 1];\n }\n }\n\n return step;\n}\n/**\r\n * Gets threshold for moving from `fromStep` to `next_step`.\r\n * @param {Object} fromStep - From step.\r\n * @param {Object} next_step - To step.\r\n * @param {number} now - The current timestamp.\r\n * @return {number}\r\n * @throws Will throw if no threshold is found.\r\n */\n\nfunction getThreshold(fromStep, toStep, now) {\n var threshold; // Allows custom thresholds when moving\n // from a specific step to a specific step.\n\n if (fromStep && (fromStep.id || fromStep.unit)) {\n threshold = toStep[\"threshold_for_\".concat(fromStep.id || fromStep.unit)];\n } // If no custom threshold is set for this transition\n // then use the usual threshold for the next step.\n\n\n if (threshold === undefined) {\n threshold = toStep.threshold;\n } // Convert threshold to a number.\n\n\n if (typeof threshold === 'function') {\n threshold = threshold(now);\n } // Throw if no threshold is found.\n\n\n if (fromStep && typeof threshold !== 'number') {\n // Babel transforms `typeof` into some \"branches\"\n // so istanbul will show this as \"branch not covered\".\n\n /* istanbul ignore next */\n var type = _typeof(threshold);\n\n throw new Error(\"Each step of a gradation must have a threshold defined except for the first one. Got \\\"\".concat(threshold, \"\\\", \").concat(type, \". Step: \").concat(JSON.stringify(toStep)));\n }\n\n return threshold;\n}\n/**\r\n * @param {number} elapsed - Time elapsed (in seconds).\r\n * @param {number} now - Current timestamp.\r\n * @param {Object} gradation - Gradation.\r\n * @param {number} i - Gradation step currently being tested.\r\n * @return {number} Gradation step index.\r\n */\n\n\nfunction findGradationStep(elapsed, now, gradation) {\n var i = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n\n // If the threshold for moving from previous step\n // to this step is too high then return the previous step.\n if (elapsed < getThreshold(gradation[i - 1], gradation[i], now)) {\n return i - 1;\n } // If it's the last step of gradation then return it.\n\n\n if (i === gradation.length - 1) {\n return i;\n } // Move to the next step.\n\n\n return findGradationStep(elapsed, now, gradation, i + 1);\n}\n/**\r\n * Leaves only allowed gradation steps.\r\n * @param {Object[]} gradation\r\n * @param {string[]} units - Allowed time units.\r\n * @return {Object[]}\r\n */\n\n\nfunction getAllowedSteps(gradation, units) {\n return gradation.filter(function (_ref) {\n var unit = _ref.unit;\n\n // If this step has a `unit` defined\n // then this `unit` must be in the list of `units` allowed.\n if (unit) {\n return units.indexOf(unit) >= 0;\n } // A gradation step is not required to specify a `unit`.\n // E.g. for Twitter gradation it specifies `format()` instead.\n\n\n return true;\n });\n}\n//# sourceMappingURL=grade.js.map\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/modules/grade.js?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/modules/locale.js": +/*!************************************************************!*\ + !*** ./node_modules/javascript-time-ago/modules/locale.js ***! + \************************************************************/ +/*! exports provided: default, intlDateTimeFormatSupportedLocale, intlDateTimeFormatSupported */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return chooseLocale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intlDateTimeFormatSupportedLocale\", function() { return intlDateTimeFormatSupportedLocale; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"intlDateTimeFormatSupported\", function() { return intlDateTimeFormatSupported; });\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n// Chooses the most appropriate locale\n// (one of the registered ones)\n// based on the list of preferred `locales` supplied by the user.\n//\n// @param {string[]} locales - the list of preferable locales (in [IETF format](https://en.wikipedia.org/wiki/IETF_language_tag)).\n// @param {Function} isLocaleDataAvailable - tests if a locale is available.\n//\n// @returns {string} The most suitable locale\n//\n// @example\n// // Returns 'en'\n// chooseLocale(['en-US'], undefined, (locale) => locale === 'ru' || locale === 'en')\n//\nfunction chooseLocale(locales, isLocaleDataAvailable) {\n // This is not an intelligent algorithm,\n // but it will do for this library's case.\n // `sr-Cyrl-BA` -> `sr-Cyrl` -> `sr`.\n for (var _iterator = locales, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {\n var _ref;\n\n if (_isArray) {\n if (_i >= _iterator.length) break;\n _ref = _iterator[_i++];\n } else {\n _i = _iterator.next();\n if (_i.done) break;\n _ref = _i.value;\n }\n\n var locale = _ref;\n\n if (isLocaleDataAvailable(locale)) {\n return locale;\n }\n\n var parts = locale.split('-');\n\n while (parts.length > 1) {\n parts.pop();\n locale = parts.join('-');\n\n if (isLocaleDataAvailable(locale)) {\n return locale;\n }\n }\n }\n\n throw new Error(\"No locale data has been registered for any of the locales: \".concat(locales.join(', ')));\n}\n/**\r\n * Whether can use `Intl.DateTimeFormat` for these `locales`.\r\n * Returns the first suitable one.\r\n * @param {(string|string[])} locales\r\n * @return {?string} The first locale that can be used.\r\n */\n\nfunction intlDateTimeFormatSupportedLocale(locales) {\n /* istanbul ignore else */\n if (intlDateTimeFormatSupported()) {\n return Intl.DateTimeFormat.supportedLocalesOf(locales)[0];\n }\n}\n/**\r\n * Whether can use `Intl.DateTimeFormat`.\r\n * @return {boolean}\r\n */\n\nfunction intlDateTimeFormatSupported() {\n // Babel transforms `typeof` into some \"branches\"\n // so istanbul will show this as \"branch not covered\".\n\n /* istanbul ignore next */\n var isIntlAvailable = (typeof Intl === \"undefined\" ? \"undefined\" : _typeof(Intl)) === 'object';\n return isIntlAvailable && typeof Intl.DateTimeFormat === 'function';\n}\n//# sourceMappingURL=locale.js.map\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/modules/locale.js?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/modules/style/default.js": +/*!*******************************************************************!*\ + !*** ./node_modules/javascript-time-ago/modules/style/default.js ***! + \*******************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _gradation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../gradation */ \"./node_modules/javascript-time-ago/modules/gradation/index.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n gradation: _gradation__WEBPACK_IMPORTED_MODULE_0__[\"convenient\"],\n flavour: ['long-convenient', 'long'],\n units: ['now', 'minute', 'hour', 'day', 'week', 'month', 'year']\n});\n//# sourceMappingURL=default.js.map\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/modules/style/default.js?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/modules/style/index.js": +/*!*****************************************************************!*\ + !*** ./node_modules/javascript-time-ago/modules/style/index.js ***! + \*****************************************************************/ +/*! exports provided: timeStyle, twitterStyle, defaultStyle */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./time */ \"./node_modules/javascript-time-ago/modules/style/time.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"timeStyle\", function() { return _time__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _twitter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./twitter */ \"./node_modules/javascript-time-ago/modules/style/twitter.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"twitterStyle\", function() { return _twitter__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _default__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./default */ \"./node_modules/javascript-time-ago/modules/style/default.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"defaultStyle\", function() { return _default__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n// A preset (style) is an object having shape\n// `{ units, gradation, flavour, custom({ elapsed, time, date, now, locale }) }`.\n//\n// `date` parameter of `custom()` is not guaranteed to be set (can be inferred from `time`).\n//\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/modules/style/index.js?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/modules/style/time.js": +/*!****************************************************************!*\ + !*** ./node_modules/javascript-time-ago/modules/style/time.js ***! + \****************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _gradation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../gradation */ \"./node_modules/javascript-time-ago/modules/gradation/index.js\");\n // Similar to the default style but with \"ago\" omitted.\n//\n// just now\n// 5 minutes\n// 10 minutes\n// 15 minutes\n// 20 minutes\n// an hour\n// 2 hours\n// …\n// 20 hours\n// 1 day\n// 2 days\n// a week\n// 2 weeks\n// 3 weeks\n// a month\n// 2 months\n// 3 months\n// 4 months\n// a year\n// 2 years\n//\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n gradation: _gradation__WEBPACK_IMPORTED_MODULE_0__[\"convenient\"],\n flavour: 'long-time',\n units: ['now', 'minute', 'hour', 'day', 'week', 'month', 'year']\n});\n//# sourceMappingURL=time.js.map\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/modules/style/time.js?"); + +/***/ }), + +/***/ "./node_modules/javascript-time-ago/modules/style/twitter.js": +/*!*******************************************************************!*\ + !*** ./node_modules/javascript-time-ago/modules/style/twitter.js ***! + \*******************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _gradation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../gradation */ \"./node_modules/javascript-time-ago/modules/gradation/index.js\");\n/* harmony import */ var _locale__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../locale */ \"./node_modules/javascript-time-ago/modules/locale.js\");\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n // A cache for `Intl.DateTimeFormat` twitter formatters\n// for various locales (is a global variable).\n\nvar formatters = {}; // Twitter style relative time formatting.\n// (\"1m\", \"2h\", \"Mar 3\", \"Apr 4, 2012\").\n// Seconds, minutes and hours are shown relatively,\n// and other intervals can be shown using full date format.\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n // Twitter gradation is derived from \"canonical\" gradation\n // adjusting its \"minute\" `threshold` to be 45.\n gradation: [// Minutes\n _objectSpread({}, Object(_gradation__WEBPACK_IMPORTED_MODULE_0__[\"getStep\"])(_gradation__WEBPACK_IMPORTED_MODULE_0__[\"canonical\"], 'minute'), {\n threshold: 45\n }), // Hours\n Object(_gradation__WEBPACK_IMPORTED_MODULE_0__[\"getStep\"])(_gradation__WEBPACK_IMPORTED_MODULE_0__[\"canonical\"], 'hour'), // If `date` and `now` happened the same year,\n // then only output month and day.\n {\n threshold: _gradation__WEBPACK_IMPORTED_MODULE_0__[\"day\"] - 0.5 * _gradation__WEBPACK_IMPORTED_MODULE_0__[\"hour\"],\n format: function format(value, locale) {\n // Whether can use `Intl.DateTimeFormat`.\n // If `Intl` is not available,\n // or the locale is not supported,\n // then don't override the default labels.\n\n /* istanbul ignore if */\n if (!Object(_locale__WEBPACK_IMPORTED_MODULE_1__[\"intlDateTimeFormatSupported\"])()) {\n return;\n }\n /* istanbul ignore else */\n\n\n if (!formatters[locale]) {\n formatters[locale] = {};\n }\n /* istanbul ignore else */\n\n\n if (!formatters[locale].this_year) {\n // \"Apr 11\" (MMMd)\n formatters[locale].this_year = new Intl.DateTimeFormat(locale, {\n month: 'short',\n day: 'numeric'\n });\n } // Output month and day.\n\n\n return formatters[locale].this_year.format(Object(_gradation__WEBPACK_IMPORTED_MODULE_0__[\"getDate\"])(value));\n }\n }, // If `date` and `now` happened in defferent years,\n // then output day, month and year.\n {\n threshold: function threshold(now) {\n // Jan 1st of the next year.\n var nextYear = new Date(new Date(now).getFullYear() + 1, 0);\n return (nextYear.getTime() - now) / 1000;\n },\n format: function format(value, locale) {\n // Whether can use `Intl.DateTimeFormat`.\n // If `Intl` is not available,\n // or the locale is not supported,\n // then don't override the default labels.\n\n /* istanbul ignore if */\n if (!Object(_locale__WEBPACK_IMPORTED_MODULE_1__[\"intlDateTimeFormatSupported\"])()) {\n return;\n }\n /* istanbul ignore if */\n\n\n if (!formatters[locale]) {\n formatters[locale] = {};\n }\n /* istanbul ignore else */\n\n\n if (!formatters[locale].other) {\n // \"Apr 11, 2017\" (yMMMd)\n formatters[locale].other = new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'short',\n day: 'numeric'\n });\n } // Output day, month and year.\n\n\n return formatters[locale].other.format(Object(_gradation__WEBPACK_IMPORTED_MODULE_0__[\"getDate\"])(value));\n }\n }],\n flavour: ['tiny', 'short-time', 'narrow', 'short']\n});\n//# sourceMappingURL=twitter.js.map\n\n//# sourceURL=webpack:///./node_modules/javascript-time-ago/modules/style/twitter.js?"); + +/***/ }), + +/***/ "./node_modules/jquery/dist/jquery.js": +/*!********************************************!*\ + !*** ./node_modules/jquery/dist/jquery.js ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * jQuery JavaScript Library v3.4.1\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2019-05-01T21:04Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( true && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar document = window.document;\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar concat = arr.concat;\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.4.1\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t},\n\n\t// Support: Android <=4.0 only\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code, options ) {\n\t\tDOMEval( code, { nonce: options && options.nonce } );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// Support: Android <=4.0 only\n\ttrim: function( text ) {\n\t\treturn text == null ?\n\t\t\t\"\" :\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn concat.apply( [], ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.4\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2019-04-08\n */\n(function( window ) {\n\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ({}).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpush_native = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[i] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\n\t\t\"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\n\tfunescape = function( _, escaped, escapedWhitespace ) {\n\t\tvar high = \"0x\" + escaped - 0x10000;\n\t\t// NaN means non-codepoint\n\t\t// Support: Firefox<24\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\n\t\treturn high !== high || escapedWhitespace ?\n\t\t\tescaped :\n\t\t\thigh < 0 ?\n\t\t\t\t// BMP codepoint\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t(arr = slice.call( preferredDoc.childNodes )),\n\t\tpreferredDoc.childNodes\n\t);\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpush_native.apply( target, slice.call(els) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\n\t\t\tsetDocument( context );\n\t\t}\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( (m = match[1]) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[2] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t(nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\") ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 && rdescend.test( selector ) ) {\n\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn (cache[ key + \" \" ] = value);\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement(\"fieldset\");\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split(\"|\"),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[i] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( (cur = cur.nextSibling) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction(function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction(function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = (elem.ownerDocument || elem).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9-11, Edge\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\tif ( preferredDoc !== document &&\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert(function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute(\"className\");\n\t});\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert(function( el ) {\n\t\tel.appendChild( document.createComment(\"\") );\n\t\treturn !el.getElementsByTagName(\"*\").length;\n\t});\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[\"ID\"] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode(\"id\");\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( (elem = results[i++]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert(function( el ) {\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push(\"~=\");\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\n\t\t\t\trbuggyQSA.push(\":checked\");\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement(\"input\");\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll(\"*,:x\");\n\t\t\trbuggyQSA.push(\",.*:\");\n\t\t});\n\t}\n\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector) )) ) {\n\n\t\tassert(function( el ) {\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t});\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t));\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( (b = b.parentNode) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\t\t\treturn a === document ? -1 :\n\t\t\t\tb === document ? 1 :\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( (cur = cur.parentNode) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[i] === bp[i] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\tap[i] === preferredDoc ? -1 :\n\t\t\tbp[i] === preferredDoc ? 1 :\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\t// Set document vars if needed\n\tif ( ( context.ownerDocument || context ) !== document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\t// Set document vars if needed\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( (elem = results[i++]) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( (node = elem[i++]) ) {\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[2] === \"~=\" ) {\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[1] = match[1].toLowerCase();\n\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[3] ) {\n\t\t\t\t\tSizzle.error( match[0] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[3] ) {\n\t\t\t\tSizzle.error( match[0] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[6] && match[2];\n\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[3] ) {\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() { return true; } :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\n\t\t\t\t});\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\n\t\t\t\t\t\t}\n\t\t\t\t\t}) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction(function( selector ) {\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}) :\n\t\t\t\tfunction( elem, context, xml ) {\n\t\t\t\t\tinput[0] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[0] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t}),\n\n\t\t\"has\": markFunction(function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t}),\n\n\t\t\"contains\": markFunction(function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t}),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t}),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo(function() {\n\t\t\treturn [ 0 ];\n\t\t}),\n\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t}),\n\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t}),\n\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t}),\n\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t})\n\t}\n};\n\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\n\t\t\tif ( match ) {\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( (tokens = []) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push({\n\t\t\t\tvalue: matched,\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\n\t\t\t});\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push({\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t});\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[i].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[0];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[i], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (elem = unmatched[i]) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction(function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( (elem = temp[i]) ) {\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\n\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t(checkContext = context).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\t\t\t\toutermostContext = context === document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[i] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[0] = match[0].slice( 0 );\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\n\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[i];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( (find = Expr.find[ type ]) ) {\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( (seed = find(\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\n\t\t\t\t)) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert(function( el ) {\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\n}) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert(function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n}) ) {\n\taddHandle( \"value\", function( elem, name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t});\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert(function( el ) {\n\treturn el.getAttribute(\"disabled\") == null;\n}) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\tnull;\n\t\t}\n\t});\n}\n\nreturn Sizzle;\n\n})( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( typeof elem.contentDocument !== \"undefined\" ) {\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\nvar swap = function( elem, options, callback, args ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.apply( elem, args || [] );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE <=9 only\n\toption: [ 1, \"\" ],\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
    \" ],\n\tcol: [ 2, \"\", \"
    \" ],\n\ttr: [ 2, \"\", \"
    \" ],\n\ttd: [ 3, \"\", \"
    \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\n// Support: IE <=9 only\nwrapMap.optgroup = wrapMap.option;\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n} )();\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\n\t\tif ( !elemData ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = {};\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t/* eslint-disable max-len */\n\n\t// See https://github.com/eslint/eslint/issues/3229\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n\n\t/* eslint-enable */\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.access( src );\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdelete pdataCur.handle;\n\t\t\tpdataCur.events = {};\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = concat.apply( [], args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t// This happens for inline elements with no explicit setting (gh-3571)\n\t// Support: Android <=4.1 - 4.3 only\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t// Support: IE 9-11 only\n\t// Also use offsetWidth/offsetHeight for when box sizing is unreliable\n\t// We use getClientRects() to check for hidden/disconnected.\n\t// In those cases, the computed value can be trusted to be border-box\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\t\tval === \"auto\" ||\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t\t} ) :\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\t\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue && type !== false ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = Date.now();\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {\n\t\txml = undefined;\n\t}\n\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\n\t\tjQuery.error( \"Invalid XML: \" + data );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} )\n\t\t.filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} )\n\t\t.map( function( i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\toriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\n\njQuery._evalUrl = function( url, options ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \" -\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app-link.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app-link.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./app-link.vue?vue&type=template&id=13023830&\"\nimport script from \"./app-link.vue?vue&type=script&lang=js&\"\nexport * from \"./app-link.vue?vue&type=script&lang=js&\"\nimport style0 from \"./app-link.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./asset.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./asset.vue?vue&type=template&id=8ae62598&\"\nimport script from \"./asset.vue?vue&type=script&lang=js&\"\nexport * from \"./asset.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.link)?_c('img',{class:_vm.cls,attrs:{\"src\":_vm.src},on:{\"error\":function($event){_vm.error = true}}}):_c('app-link',{attrs:{\"href\":_vm.href}},[_c('img',{class:_vm.cls,attrs:{\"src\":_vm.src},on:{\"error\":function($event){_vm.error = true}}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./config-template.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./config-template.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./config-template.vue?vue&type=template&id=58f1e02e&\"\nimport script from \"./config-template.vue?vue&type=script&lang=js&\"\nexport * from \"./config-template.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"config-template-content\"}},[_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":_vm.labelFor}},[_c('span',[_vm._v(_vm._s(_vm.label))])]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10 content\"},[_vm._t(\"default\")],2)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./config-textbox-number.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./config-textbox-number.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./config-textbox-number.vue?vue&type=template&id=74f8d0b5&\"\nimport script from \"./config-textbox-number.vue?vue&type=script&lang=js&\"\nexport * from \"./config-textbox-number.vue?vue&type=script&lang=js&\"\nimport style0 from \"./config-textbox-number.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"config-textbox-number-content\"}},[_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":_vm.id}},[_c('span',[_vm._v(_vm._s(_vm.label))])]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10 content\"},[_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.localValue),expression:\"localValue\"}],attrs:{\"type\":\"number\"},domProps:{\"value\":(_vm.localValue)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.localValue=$event.target.value},function($event){return _vm.updateValue()}]}},'input',{min: _vm.min, max: _vm.max, step: _vm.step, id: _vm.id, name: _vm.id, class: _vm.inputClass, placeholder: _vm.placeholder, disabled: _vm.disabled},false)),_vm._v(\" \"),_vm._l((_vm.explanations),function(explanation,index){return _c('p',{key:index},[_vm._v(_vm._s(explanation))])}),_vm._v(\" \"),_vm._t(\"default\")],2)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./config-textbox.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./config-textbox.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./config-textbox.vue?vue&type=template&id=11560b87&\"\nimport script from \"./config-textbox.vue?vue&type=script&lang=js&\"\nexport * from \"./config-textbox.vue?vue&type=script&lang=js&\"\nimport style0 from \"./config-textbox.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"config-textbox\"}},[_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":_vm.id}},[_c('span',[_vm._v(_vm._s(_vm.label))])]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10 content\"},[((({id: _vm.id, type: _vm.type, name: _vm.id, class: _vm.inputClass, placeholder: _vm.placeholder, disabled: _vm.disabled}).type)==='checkbox')?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.localValue),expression:\"localValue\"}],attrs:{\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.localValue)?_vm._i(_vm.localValue,null)>-1:(_vm.localValue)},on:{\"input\":function($event){return _vm.updateValue()},\"change\":function($event){var $$a=_vm.localValue,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.localValue=$$a.concat([$$v]))}else{$$i>-1&&(_vm.localValue=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.localValue=$$c}}}},'input',{id: _vm.id, type: _vm.type, name: _vm.id, class: _vm.inputClass, placeholder: _vm.placeholder, disabled: _vm.disabled},false)):((({id: _vm.id, type: _vm.type, name: _vm.id, class: _vm.inputClass, placeholder: _vm.placeholder, disabled: _vm.disabled}).type)==='radio')?_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.localValue),expression:\"localValue\"}],attrs:{\"type\":\"radio\"},domProps:{\"checked\":_vm._q(_vm.localValue,null)},on:{\"input\":function($event){return _vm.updateValue()},\"change\":function($event){_vm.localValue=null}}},'input',{id: _vm.id, type: _vm.type, name: _vm.id, class: _vm.inputClass, placeholder: _vm.placeholder, disabled: _vm.disabled},false)):_c('input',_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.localValue),expression:\"localValue\"}],attrs:{\"type\":({id: _vm.id, type: _vm.type, name: _vm.id, class: _vm.inputClass, placeholder: _vm.placeholder, disabled: _vm.disabled}).type},domProps:{\"value\":(_vm.localValue)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.localValue=$event.target.value},function($event){return _vm.updateValue()}]}},'input',{id: _vm.id, type: _vm.type, name: _vm.id, class: _vm.inputClass, placeholder: _vm.placeholder, disabled: _vm.disabled},false)),_vm._v(\" \"),_vm._l((_vm.explanations),function(explanation,index){return _c('p',{key:index},[_vm._v(_vm._s(explanation))])}),_vm._v(\" \"),_vm._t(\"default\")],2)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./config-toggle-slider.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./config-toggle-slider.vue?vue&type=script&lang=js&\"","\n\n\n\n\n","import { render, staticRenderFns } from \"./config-toggle-slider.vue?vue&type=template&id=448de07a&\"\nimport script from \"./config-toggle-slider.vue?vue&type=script&lang=js&\"\nexport * from \"./config-toggle-slider.vue?vue&type=script&lang=js&\"\nimport style0 from \"./config-toggle-slider.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"config-toggle-slider-content\"}},[_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"row\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":_vm.id}},[_c('span',[_vm._v(_vm._s(_vm.label))])]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10 content\"},[_c('toggle-button',_vm._b({attrs:{\"width\":45,\"height\":22,\"sync\":\"\"},on:{\"input\":function($event){return _vm.updateValue()}},model:{value:(_vm.localChecked),callback:function ($$v) {_vm.localChecked=$$v},expression:\"localChecked\"}},'toggle-button',{id: _vm.id, name: _vm.id, disabled: _vm.disabled},false)),_vm._v(\" \"),_vm._l((_vm.explanations),function(explanation,index){return _c('p',{key:index},[_vm._v(_vm._s(explanation))])}),_vm._v(\" \"),_vm._t(\"default\")],2)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./file-browser.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./file-browser.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./file-browser.vue?vue&type=template&id=eff76864&scoped=true&\"\nimport script from \"./file-browser.vue?vue&type=script&lang=js&\"\nexport * from \"./file-browser.vue?vue&type=script&lang=js&\"\nimport style0 from \"./file-browser.vue?vue&type=style&index=0&id=eff76864&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"eff76864\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"file-browser max-width\"},[_c('div',{class:(_vm.showBrowseButton ? 'input-group' : 'input-group-no-btn')},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.currentPath),expression:\"currentPath\"}],ref:\"locationInput\",staticClass:\"form-control input-sm fileBrowserField\",attrs:{\"name\":_vm.name,\"type\":\"text\"},domProps:{\"value\":(_vm.currentPath)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.currentPath=$event.target.value}}}),_vm._v(\" \"),(_vm.showBrowseButton)?_c('div',{staticClass:\"input-group-btn\",attrs:{\"title\":_vm.title,\"alt\":_vm.title},on:{\"click\":function($event){$event.preventDefault();return _vm.openDialog($event)}}},[_vm._m(0)]):_vm._e()]),_vm._v(\" \"),_c('div',{ref:\"fileBrowserDialog\",staticClass:\"fileBrowserDialog\",staticStyle:{\"display\":\"none\"}}),_vm._v(\" \"),_c('input',{ref:\"fileBrowserSearchBox\",staticClass:\"form-control\",staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"text\"},domProps:{\"value\":_vm.currentPath},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.browse($event.target.value)}}}),_vm._v(\" \"),_c('ul',{ref:\"fileBrowserFileList\",staticStyle:{\"display\":\"none\"}},_vm._l((_vm.files),function(file){return _c('li',{key:file.name,staticClass:\"ui-state-default ui-corner-all\"},[_c('a',{on:{\"mouseover\":function($event){return _vm.toggleFolder(file, $event)},\"mouseout\":function($event){return _vm.toggleFolder(file, $event)},\"click\":function($event){return _vm.fileClicked(file)}}},[_c('span',{class:'ui-icon ' + (file.isFile ? 'ui-icon-blank' : 'ui-icon-folder-collapsed')}),_vm._v(\" \"+_vm._s(file.name)+\"\\n \")])])}),0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"btn btn-default input-sm\",staticStyle:{\"font-size\":\"14px\"}},[_c('i',{staticClass:\"glyphicon glyphicon-open\"})])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./language-select.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./language-select.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./language-select.vue?vue&type=template&id=6d9e3033&\"\nimport script from \"./language-select.vue?vue&type=script&lang=js&\"\nexport * from \"./language-select.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('select')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./name-pattern.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./name-pattern.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./name-pattern.vue?vue&type=template&id=4cc642ae&\"\nimport script from \"./name-pattern.vue?vue&type=script&lang=js&\"\nexport * from \"./name-pattern.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"name-pattern-wrapper\"}},[(_vm.type)?_c('div',{staticClass:\"form-group\"},[_c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"enable_naming_custom\"}},[_c('span',[_vm._v(\"Custom \"+_vm._s(_vm.type))])]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10 content\"},[_c('toggle-button',{attrs:{\"width\":45,\"height\":22,\"id\":\"enable_naming_custom\",\"name\":\"enable_naming_custom\",\"sync\":\"\"},on:{\"input\":function($event){return _vm.update()}},model:{value:(_vm.isEnabled),callback:function ($$v) {_vm.isEnabled=$$v},expression:\"isEnabled\"}}),_vm._v(\" \"),_c('span',[_vm._v(\"Name \"+_vm._s(_vm.type)+\" shows differently than regular shows?\")])],1)]):_vm._e(),_vm._v(\" \"),(!_vm.type || _vm.isEnabled)?_c('div',{staticClass:\"episode-naming\"},[_c('div',{staticClass:\"form-group\"},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10 content\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedNamingPattern),expression:\"selectedNamingPattern\"}],staticClass:\"form-control input-sm\",attrs:{\"id\":\"name_presets\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selectedNamingPattern=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.updatePatternSamples],\"input\":function($event){return _vm.update()}}},_vm._l((_vm.presets),function(preset){return _c('option',{key:preset.pattern,attrs:{\"id\":preset.pattern}},[_vm._v(_vm._s(preset.example))])}),0)])]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"naming_custom\"}},[(_vm.isCustom)?_c('div',{staticClass:\"form-group\",staticStyle:{\"padding-top\":\"0\"}},[_vm._m(1),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10 content\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.customName),expression:\"customName\"}],staticClass:\"form-control-inline-max input-sm max-input350\",attrs:{\"type\":\"text\",\"name\":\"naming_pattern\",\"id\":\"naming_pattern\"},domProps:{\"value\":(_vm.customName)},on:{\"change\":_vm.updatePatternSamples,\"input\":[function($event){if($event.target.composing){ return; }_vm.customName=$event.target.value},function($event){return _vm.update()}]}}),_vm._v(\" \"),_c('img',{staticClass:\"legend\",attrs:{\"src\":\"images/legend16.png\",\"width\":\"16\",\"height\":\"16\",\"alt\":\"[Toggle Key]\",\"id\":\"show_naming_key\",\"title\":\"Toggle Naming Legend\"},on:{\"click\":function($event){_vm.showLegend = !_vm.showLegend}}})])]):_vm._e(),_vm._v(\" \"),(_vm.showLegend && _vm.isCustom)?_c('div',{staticClass:\"nocheck\",attrs:{\"id\":\"naming_key\"}},[_c('table',{staticClass:\"Key\"},[_vm._m(2),_vm._v(\" \"),_vm._m(3),_vm._v(\" \"),_c('tbody',[_vm._m(4),_vm._v(\" \"),_vm._m(5),_vm._v(\" \"),_vm._m(6),_vm._v(\" \"),_vm._m(7),_vm._v(\" \"),_vm._m(8),_vm._v(\" \"),_vm._m(9),_vm._v(\" \"),_vm._m(10),_vm._v(\" \"),_vm._m(11),_vm._v(\" \"),_vm._m(12),_vm._v(\" \"),_vm._m(13),_vm._v(\" \"),_vm._m(14),_vm._v(\" \"),_vm._m(15),_vm._v(\" \"),_vm._m(16),_vm._v(\" \"),_vm._m(17),_vm._v(\" \"),_vm._m(18),_vm._v(\" \"),_vm._m(19),_vm._v(\" \"),_c('tr',[_vm._m(20),_vm._v(\" \"),_c('td',[_vm._v(\"%M\")]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.getDateFormat('M')))])]),_vm._v(\" \"),_c('tr',{staticClass:\"even\"},[_c('td',[_vm._v(\" \")]),_vm._v(\" \"),_c('td',[_vm._v(\"%D\")]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.getDateFormat('d')))])]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(\" \")]),_vm._v(\" \"),_c('td',[_vm._v(\"%Y\")]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.getDateFormat('yyyy')))])]),_vm._v(\" \"),_c('tr',[_vm._m(21),_vm._v(\" \"),_c('td',[_vm._v(\"%CM\")]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.getDateFormat('M')))])]),_vm._v(\" \"),_c('tr',{staticClass:\"even\"},[_c('td',[_vm._v(\" \")]),_vm._v(\" \"),_c('td',[_vm._v(\"%CD\")]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.getDateFormat('d')))])]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(\" \")]),_vm._v(\" \"),_c('td',[_vm._v(\"%CY\")]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.getDateFormat('yyyy')))])]),_vm._v(\" \"),_vm._m(22),_vm._v(\" \"),_vm._m(23),_vm._v(\" \"),_vm._m(24),_vm._v(\" \"),_vm._m(25),_vm._v(\" \"),_vm._m(26),_vm._v(\" \"),_vm._m(27),_vm._v(\" \"),_vm._m(28),_vm._v(\" \"),_vm._m(29),_vm._v(\" \"),_vm._m(30)])])]):_vm._e()]),_vm._v(\" \"),(_vm.selectedMultiEpStyle)?_c('div',{staticClass:\"form-group\"},[_vm._m(31),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10 content\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedMultiEpStyle),expression:\"selectedMultiEpStyle\"}],staticClass:\"form-control input-sm\",attrs:{\"id\":\"naming_multi_ep\",\"name\":\"naming_multi_ep\"},on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selectedMultiEpStyle=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.updatePatternSamples],\"input\":function($event){return _vm.update($event)}}},_vm._l((_vm.availableMultiEpStyles),function(multiEpStyle){return _c('option',{key:multiEpStyle.value,attrs:{\"id\":\"multiEpStyle\"},domProps:{\"value\":multiEpStyle.value}},[_vm._v(_vm._s(multiEpStyle.text))])}),0)])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group row\"},[_c('h3',{staticClass:\"col-sm-12\"},[_vm._v(\"Single-EP Sample:\")]),_vm._v(\" \"),_c('div',{staticClass:\"example col-sm-12\"},[_c('span',{staticClass:\"jumbo\",attrs:{\"id\":\"naming_example\"}},[_vm._v(_vm._s(_vm.namingExample))])])]),_vm._v(\" \"),(_vm.isMulti)?_c('div',{staticClass:\"form-group row\"},[_c('h3',{staticClass:\"col-sm-12\"},[_vm._v(\"Multi-EP sample:\")]),_vm._v(\" \"),_c('div',{staticClass:\"example col-sm-12\"},[_c('span',{staticClass:\"jumbo\",attrs:{\"id\":\"naming_example_multi\"}},[_vm._v(_vm._s(_vm.namingExampleMulti))])])]):_vm._e(),_vm._v(\" \"),(_vm.animeType > 0)?_c('div',{staticClass:\"form-group\"},[_vm._m(32),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10 content\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.animeType),expression:\"animeType\"}],attrs:{\"type\":\"radio\",\"name\":\"naming_anime\",\"id\":\"naming_anime\",\"value\":\"1\"},domProps:{\"checked\":_vm._q(_vm.animeType,\"1\")},on:{\"change\":[function($event){_vm.animeType=\"1\"},_vm.updatePatternSamples],\"input\":function($event){return _vm.update()}}}),_vm._v(\" \"),_c('span',[_vm._v(\"Add the absolute number to the season/episode format?\")]),_vm._v(\" \"),_c('p',[_vm._v(\"Only applies to animes. (e.g. S15E45 - 310 vs S15E45)\")])])]):_vm._e(),_vm._v(\" \"),(_vm.animeType > 0)?_c('div',{staticClass:\"form-group\"},[_vm._m(33),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10 content\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.animeType),expression:\"animeType\"}],attrs:{\"type\":\"radio\",\"name\":\"naming_anime\",\"id\":\"naming_anime_only\",\"value\":\"2\"},domProps:{\"checked\":_vm._q(_vm.animeType,\"2\")},on:{\"change\":[function($event){_vm.animeType=\"2\"},_vm.updatePatternSamples],\"input\":function($event){return _vm.update()}}}),_vm._v(\" \"),_c('span',[_vm._v(\"Replace season/episode format with absolute number\")]),_vm._v(\" \"),_c('p',[_vm._v(\"Only applies to animes.\")])])]):_vm._e(),_vm._v(\" \"),(_vm.animeType > 0)?_c('div',{staticClass:\"form-group\"},[_vm._m(34),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10 content\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.animeType),expression:\"animeType\"}],attrs:{\"type\":\"radio\",\"name\":\"naming_anime\",\"id\":\"naming_anime_none\",\"value\":\"3\"},domProps:{\"checked\":_vm._q(_vm.animeType,\"3\")},on:{\"change\":[function($event){_vm.animeType=\"3\"},_vm.updatePatternSamples],\"input\":function($event){return _vm.update()}}}),_vm._v(\" \"),_c('span',[_vm._v(\"Don't include the absolute number\")]),_vm._v(\" \"),_c('p',[_vm._v(\"Only applies to animes.\")])])]):_vm._e()]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"name_presets\"}},[_c('span',[_vm._v(\"Name Pattern:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"col-sm-2 control-label\"},[_c('span',[_vm._v(\" \")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('thead',[_c('tr',[_c('th',{staticClass:\"align-right\"},[_vm._v(\"Meaning\")]),_vm._v(\" \"),_c('th',[_vm._v(\"Pattern\")]),_vm._v(\" \"),_c('th',{attrs:{\"width\":\"60%\"}},[_vm._v(\"Result\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tfoot',[_c('tr',[_c('th',{attrs:{\"colspan\":\"3\"}},[_vm._v(\"Use lower case if you want lower case names (eg. %sn, %e.n, %q_n etc)\")])])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',{staticClass:\"align-right\"},[_c('b',[_vm._v(\"Show Name:\")])]),_vm._v(\" \"),_c('td',[_vm._v(\"%SN\")]),_vm._v(\" \"),_c('td',[_vm._v(\"Show Name\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"even\"},[_c('td',[_vm._v(\" \")]),_vm._v(\" \"),_c('td',[_vm._v(\"%S.N\")]),_vm._v(\" \"),_c('td',[_vm._v(\"Show.Name\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',[_vm._v(\" \")]),_vm._v(\" \"),_c('td',[_vm._v(\"%S_N\")]),_vm._v(\" \"),_c('td',[_vm._v(\"Show_Name\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"even\"},[_c('td',{staticClass:\"align-right\"},[_c('b',[_vm._v(\"Season Number:\")])]),_vm._v(\" \"),_c('td',[_vm._v(\"%S\")]),_vm._v(\" \"),_c('td',[_vm._v(\"2\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',[_vm._v(\" \")]),_vm._v(\" \"),_c('td',[_vm._v(\"%0S\")]),_vm._v(\" \"),_c('td',[_vm._v(\"02\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"even\"},[_c('td',{staticClass:\"align-right\"},[_c('b',[_vm._v(\"XEM Season Number:\")])]),_vm._v(\" \"),_c('td',[_vm._v(\"%XS\")]),_vm._v(\" \"),_c('td',[_vm._v(\"2\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',[_vm._v(\" \")]),_vm._v(\" \"),_c('td',[_vm._v(\"%0XS\")]),_vm._v(\" \"),_c('td',[_vm._v(\"02\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"even\"},[_c('td',{staticClass:\"align-right\"},[_c('b',[_vm._v(\"Episode Number:\")])]),_vm._v(\" \"),_c('td',[_vm._v(\"%E\")]),_vm._v(\" \"),_c('td',[_vm._v(\"3\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',[_vm._v(\" \")]),_vm._v(\" \"),_c('td',[_vm._v(\"%0E\")]),_vm._v(\" \"),_c('td',[_vm._v(\"03\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"even\"},[_c('td',{staticClass:\"align-right\"},[_c('b',[_vm._v(\"XEM Episode Number:\")])]),_vm._v(\" \"),_c('td',[_vm._v(\"%XE\")]),_vm._v(\" \"),_c('td',[_vm._v(\"3\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',[_vm._v(\" \")]),_vm._v(\" \"),_c('td',[_vm._v(\"%0XE\")]),_vm._v(\" \"),_c('td',[_vm._v(\"03\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"even\"},[_c('td',{staticClass:\"align-right\"},[_c('b',[_vm._v(\"Absolute Episode Number:\")])]),_vm._v(\" \"),_c('td',[_vm._v(\"%AB\")]),_vm._v(\" \"),_c('td',[_vm._v(\"003\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',{staticClass:\"align-right\"},[_c('b',[_vm._v(\"Xem Absolute Episode Number:\")])]),_vm._v(\" \"),_c('td',[_vm._v(\"%XAB\")]),_vm._v(\" \"),_c('td',[_vm._v(\"003\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"even\"},[_c('td',{staticClass:\"align-right\"},[_c('b',[_vm._v(\"Episode Name:\")])]),_vm._v(\" \"),_c('td',[_vm._v(\"%EN\")]),_vm._v(\" \"),_c('td',[_vm._v(\"Episode Name\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',[_vm._v(\" \")]),_vm._v(\" \"),_c('td',[_vm._v(\"%E.N\")]),_vm._v(\" \"),_c('td',[_vm._v(\"Episode.Name\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"even\"},[_c('td',[_vm._v(\" \")]),_vm._v(\" \"),_c('td',[_vm._v(\"%E_N\")]),_vm._v(\" \"),_c('td',[_vm._v(\"Episode_Name\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',{staticClass:\"align-right\"},[_c('b',[_vm._v(\"Air Date:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',{staticClass:\"align-right\"},[_c('b',[_vm._v(\"Post-Processing Date:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',{staticClass:\"align-right\"},[_c('b',[_vm._v(\"Quality:\")])]),_vm._v(\" \"),_c('td',[_vm._v(\"%QN\")]),_vm._v(\" \"),_c('td',[_vm._v(\"720p BluRay\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"even\"},[_c('td',[_vm._v(\" \")]),_vm._v(\" \"),_c('td',[_vm._v(\"%Q.N\")]),_vm._v(\" \"),_c('td',[_vm._v(\"720p.BluRay\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',[_vm._v(\" \")]),_vm._v(\" \"),_c('td',[_vm._v(\"%Q_N\")]),_vm._v(\" \"),_c('td',[_vm._v(\"720p_BluRay\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',{staticClass:\"align-right\"},[_c('b',[_vm._v(\"Scene Quality:\")])]),_vm._v(\" \"),_c('td',[_vm._v(\"%SQN\")]),_vm._v(\" \"),_c('td',[_vm._v(\"720p HDTV x264\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"even\"},[_c('td',[_vm._v(\" \")]),_vm._v(\" \"),_c('td',[_vm._v(\"%SQ.N\")]),_vm._v(\" \"),_c('td',[_vm._v(\"720p.HDTV.x264\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',[_vm._v(\" \")]),_vm._v(\" \"),_c('td',[_vm._v(\"%SQ_N\")]),_vm._v(\" \"),_c('td',[_vm._v(\"720p_HDTV_x264\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"even\"},[_c('td',{staticClass:\"align-right\"},[_c('i',{staticClass:\"glyphicon glyphicon-info-sign\",attrs:{\"title\":\"Multi-EP style is ignored\"}}),_vm._v(\" \"),_c('b',[_vm._v(\"Release Name:\")])]),_vm._v(\" \"),_c('td',[_vm._v(\"%RN\")]),_vm._v(\" \"),_c('td',[_vm._v(\"Show.Name.S02E03.HDTV.x264-RLSGROUP\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',{staticClass:\"align-right\"},[_c('i',{staticClass:\"glyphicon glyphicon-info-sign\",attrs:{\"title\":\"UNKNOWN_RELEASE_GROUP is used in place of RLSGROUP if it could not be properly detected\"}}),_vm._v(\" \"),_c('b',[_vm._v(\"Release Group:\")])]),_vm._v(\" \"),_c('td',[_vm._v(\"%RG\")]),_vm._v(\" \"),_c('td',[_vm._v(\"RLSGROUP\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"even\"},[_c('td',{staticClass:\"align-right\"},[_c('i',{staticClass:\"glyphicon glyphicon-info-sign\",attrs:{\"title\":\"If episode is proper/repack add 'proper' to name.\"}}),_vm._v(\" \"),_c('b',[_vm._v(\"Release Type:\")])]),_vm._v(\" \"),_c('td',[_vm._v(\"%RT\")]),_vm._v(\" \"),_c('td',[_vm._v(\"PROPER\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"naming_multi_ep\"}},[_c('span',[_vm._v(\"Multi-Episode Style:\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"naming_anime\"}},[_c('span',[_vm._v(\"Add Absolute Number\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"naming_anime_only\"}},[_c('span',[_vm._v(\"Only Absolute Number\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"naming_anime_none\"}},[_c('span',[_vm._v(\"No Absolute Number\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./plot-info.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./plot-info.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./plot-info.vue?vue&type=template&id=0729869c&scoped=true&\"\nimport script from \"./plot-info.vue?vue&type=script&lang=js&\"\nexport * from \"./plot-info.vue?vue&type=script&lang=js&\"\nimport style0 from \"./plot-info.vue?vue&type=style&index=0&id=0729869c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0729869c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.description !== '')?_c('img',{directives:[{name:\"tooltip\",rawName:\"v-tooltip.right\",value:({content: _vm.description}),expression:\"{content: description}\",modifiers:{\"right\":true}}],class:_vm.plotInfoClass,attrs:{\"src\":\"images/info32.png\",\"width\":\"16\",\"height\":\"16\",\"alt\":\"\"}}):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./quality-chooser.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./quality-chooser.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./quality-chooser.vue?vue&type=template&id=751f4e5c&scoped=true&\"\nimport script from \"./quality-chooser.vue?vue&type=script&lang=js&\"\nexport * from \"./quality-chooser.vue?vue&type=script&lang=js&\"\nimport style0 from \"./quality-chooser.vue?vue&type=style&index=0&id=751f4e5c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"751f4e5c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('select',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.selectedQualityPreset),expression:\"selectedQualityPreset\",modifiers:{\"number\":true}}],staticClass:\"form-control form-control-inline input-sm\",attrs:{\"name\":\"quality_preset\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return _vm._n(val)}); _vm.selectedQualityPreset=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[(_vm.keep)?_c('option',{attrs:{\"value\":\"keep\"}},[_vm._v(\"< Keep >\")]):_vm._e(),_vm._v(\" \"),_c('option',{domProps:{\"value\":0}},[_vm._v(\"Custom\")]),_vm._v(\" \"),_vm._l((_vm.qualityPresets),function(preset){return _c('option',{key:(\"quality-preset-\" + (preset.key)),domProps:{\"value\":preset.value}},[_vm._v(\"\\n \"+_vm._s(preset.name)+\"\\n \")])})],2),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.selectedQualityPreset === 0),expression:\"selectedQualityPreset === 0\"}],attrs:{\"id\":\"customQualityWrapper\"}},[_vm._m(0),_vm._v(\" \"),_c('div',[_c('h5',[_vm._v(\"Allowed\")]),_vm._v(\" \"),_c('select',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.allowedQualities),expression:\"allowedQualities\",modifiers:{\"number\":true}}],staticClass:\"form-control form-control-inline input-sm\",attrs:{\"name\":\"allowed_qualities\",\"multiple\":\"multiple\",\"size\":_vm.validQualities.length},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return _vm._n(val)}); _vm.allowedQualities=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.validQualities),function(quality){return _c('option',{key:(\"quality-list-\" + (quality.key)),domProps:{\"value\":quality.value}},[_vm._v(\"\\n \"+_vm._s(quality.name)+\"\\n \")])}),0)]),_vm._v(\" \"),_c('div',[_c('h5',[_vm._v(\"Preferred\")]),_vm._v(\" \"),_c('select',{directives:[{name:\"model\",rawName:\"v-model.number\",value:(_vm.preferredQualities),expression:\"preferredQualities\",modifiers:{\"number\":true}}],staticClass:\"form-control form-control-inline input-sm\",attrs:{\"name\":\"preferred_qualities\",\"multiple\":\"multiple\",\"size\":_vm.validQualities.length,\"disabled\":_vm.allowedQualities.length === 0},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return _vm._n(val)}); _vm.preferredQualities=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.validQualities),function(quality){return _c('option',{key:(\"quality-list-\" + (quality.key)),domProps:{\"value\":quality.value}},[_vm._v(\"\\n \"+_vm._s(quality.name)+\"\\n \")])}),0)])]),_vm._v(\" \"),(_vm.selectedQualityPreset !== 'keep')?_c('div',[((_vm.allowedQualities.length + _vm.preferredQualities.length) >= 1)?_c('div',{attrs:{\"id\":\"qualityExplanation\"}},[_vm._m(1),_vm._v(\" \"),(_vm.preferredQualities.length === 0)?_c('h5',[_vm._v(\"\\n This will download \"),_c('b',[_vm._v(\"any\")]),_vm._v(\" of these qualities and then stops searching:\\n \"),_c('label',{attrs:{\"id\":\"allowedExplanation\"}},[_vm._v(_vm._s(_vm.explanation.allowed.join(', ')))])]):[_c('h5',[_vm._v(\"\\n Downloads \"),_c('b',[_vm._v(\"any\")]),_vm._v(\" of these qualities:\\n \"),_c('label',{attrs:{\"id\":\"allowedPreferredExplanation\"}},[_vm._v(_vm._s(_vm.explanation.allowed.join(', ')))])]),_vm._v(\" \"),_c('h5',[_vm._v(\"\\n But it will stop searching when one of these is downloaded:\\n \"),_c('label',{attrs:{\"id\":\"preferredExplanation\"}},[_vm._v(_vm._s(_vm.explanation.preferred.join(', ')))])])]],2):_c('div',[_vm._v(\"Please select at least one allowed quality.\")])]):_vm._e(),_vm._v(\" \"),(_vm.backloggedEpisodes)?_c('div',[_c('h5',{staticClass:\"{ 'red-text': !backloggedEpisodes.status }\",domProps:{\"innerHTML\":_vm._s(_vm.backloggedEpisodes.html)}})]):_vm._e(),_vm._v(\" \"),(_vm.archive)?_c('div',{attrs:{\"id\":\"archive\"}},[_c('h5',[_c('b',[_vm._v(\"Archive downloaded episodes that are not currently in\\n \"),_c('app-link',{staticClass:\"backlog-link\",attrs:{\"href\":\"manage/backlogOverview/\",\"target\":\"_blank\"}},[_vm._v(\"backlog\")]),_vm._v(\".\")],1),_vm._v(\" \"),_c('br'),_vm._v(\"Avoids unnecessarily increasing your backlog\\n \"),_c('br')]),_vm._v(\" \"),_c('button',{staticClass:\"btn-medusa btn-inline\",attrs:{\"disabled\":_vm.archiveButton.disabled},on:{\"click\":function($event){$event.preventDefault();return _vm.archiveEpisodes($event)}}},[_vm._v(\"\\n \"+_vm._s(_vm.archiveButton.text)+\"\\n \")]),_vm._v(\" \"),_c('h5',[_vm._v(_vm._s(_vm.archivedStatus))])]):_vm._e()])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('p',[_c('b',[_c('strong',[_vm._v(\"Preferred\")])]),_vm._v(\" qualities will replace those in \"),_c('b',[_c('strong',[_vm._v(\"allowed\")])]),_vm._v(\", even if they are lower.\\n \")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('h5',[_c('b',[_vm._v(\"Quality setting explanation:\")])])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./scroll-buttons.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./scroll-buttons.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./scroll-buttons.vue?vue&type=template&id=03c5223c&\"\nimport script from \"./scroll-buttons.vue?vue&type=script&lang=js&\"\nexport * from \"./scroll-buttons.vue?vue&type=script&lang=js&\"\nimport style0 from \"./scroll-buttons.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"scroll-buttons-wrapper\"}},[_c('div',{staticClass:\"scroll-wrapper top\",class:{ show: _vm.showToTop },on:{\"click\":function($event){$event.preventDefault();return _vm.scrollTop($event)}}},[_vm._m(0)]),_vm._v(\" \"),_c('div',{staticClass:\"scroll-wrapper left\",class:{ show: _vm.showLeftRight }},[_c('span',{staticClass:\"scroll-left-inner\"},[_c('i',{staticClass:\"glyphicon glyphicon-circle-arrow-left\",on:{\"click\":function($event){$event.preventDefault();return _vm.scrollLeft($event)}}})])]),_vm._v(\" \"),_c('div',{staticClass:\"scroll-wrapper right\",class:{ show: _vm.showLeftRight }},[_c('span',{staticClass:\"scroll-right-inner\"},[_c('i',{staticClass:\"glyphicon glyphicon-circle-arrow-right\",on:{\"click\":function($event){$event.preventDefault();return _vm.scrollRight($event)}}})])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{staticClass:\"scroll-top-inner\"},[_c('i',{staticClass:\"glyphicon glyphicon-circle-arrow-up\"})])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select-list.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./select-list.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./select-list.vue?vue&type=template&id=e3747674&scoped=true&\"\nimport script from \"./select-list.vue?vue&type=script&lang=js&\"\nexport * from \"./select-list.vue?vue&type=script&lang=js&\"\nimport style0 from \"./select-list.vue?vue&type=style&index=0&id=e3747674&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"e3747674\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._b({staticClass:\"select-list max-width\"},'div',{disabled: _vm.disabled},false),[_c('i',{staticClass:\"switch-input glyphicon glyphicon-refresh\",attrs:{\"title\":\"Switch between a list and comma separated values\"},on:{\"click\":function($event){return _vm.switchFields()}}}),_vm._v(\" \"),(!_vm.csvMode)?_c('ul',[_vm._l((_vm.editItems),function(item){return _c('li',{key:item.id},[_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(item.value),expression:\"item.value\"}],staticClass:\"form-control input-sm\",attrs:{\"type\":\"text\"},domProps:{\"value\":(item.value)},on:{\"input\":[function($event){if($event.target.composing){ return; }_vm.$set(item, \"value\", $event.target.value)},function($event){return _vm.removeEmpty(item)}]}}),_vm._v(\" \"),_c('div',{staticClass:\"input-group-btn\",on:{\"click\":function($event){return _vm.deleteItem(item)}}},[_vm._m(0,true)])])])}),_vm._v(\" \"),_c('div',{staticClass:\"new-item\"},[_c('div',{staticClass:\"input-group\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newItem),expression:\"newItem\"}],ref:\"newItemInput\",staticClass:\"form-control input-sm\",attrs:{\"type\":\"text\",\"placeholder\":\"add new values per line\"},domProps:{\"value\":(_vm.newItem)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newItem=$event.target.value}}}),_vm._v(\" \"),_c('div',{staticClass:\"input-group-btn\",on:{\"click\":function($event){return _vm.addNewItem()}}},[_vm._m(1)])])]),_vm._v(\" \"),(_vm.newItem.length > 0)?_c('div',{staticClass:\"new-item-help\"},[_vm._v(\"\\n Click \"),_c('i',{staticClass:\"glyphicon glyphicon-plus\"}),_vm._v(\" to finish adding the value.\\n \")]):_vm._e()],2):_c('div',{staticClass:\"csv\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.csv),expression:\"csv\"}],staticClass:\"form-control input-sm\",attrs:{\"type\":\"text\",\"placeholder\":\"add values comma separated\"},domProps:{\"value\":(_vm.csv)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.csv=$event.target.value}}})])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"btn btn-default input-sm\",staticStyle:{\"font-size\":\"14px\"}},[_c('i',{staticClass:\"glyphicon glyphicon-remove\",attrs:{\"title\":\"Remove\"}})])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"btn btn-default input-sm\",staticStyle:{\"font-size\":\"14px\"}},[_c('i',{staticClass:\"glyphicon glyphicon-plus\",attrs:{\"title\":\"Add\"}})])}]\n\nexport { render, staticRenderFns }","\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show-selector.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show-selector.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./show-selector.vue?vue&type=template&id=ab106492&\"\nimport script from \"./show-selector.vue?vue&type=script&lang=js&\"\nexport * from \"./show-selector.vue?vue&type=script&lang=js&\"\nimport style0 from \"./show-selector.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"show-selector form-inline hidden-print\"},[_c('div',{staticClass:\"select-show-group pull-left top-5 bottom-5\"},[(_vm.shows.length === 0)?_c('select',{class:_vm.selectClass,attrs:{\"disabled\":\"\"}},[_c('option',[_vm._v(\"Loading...\")])]):_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedShowSlug),expression:\"selectedShowSlug\"}],class:_vm.selectClass,on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selectedShowSlug=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},function($event){return _vm.$emit('change', _vm.selectedShowSlug)}]}},[(_vm.placeholder)?_c('option',{attrs:{\"disabled\":\"\",\"hidden\":\"\"},domProps:{\"value\":_vm.placeholder,\"selected\":!_vm.selectedShowSlug}},[_vm._v(_vm._s(_vm.placeholder))]):_vm._e(),_vm._v(\" \"),(_vm.whichList === -1)?_vm._l((_vm.showLists),function(curShowList){return _c('optgroup',{key:curShowList.type,attrs:{\"label\":curShowList.type}},_vm._l((curShowList.shows),function(show){return _c('option',{key:show.id.slug,domProps:{\"value\":show.id.slug}},[_vm._v(_vm._s(show.title))])}),0)}):_vm._l((_vm.showLists[_vm.whichList].shows),function(show){return _c('option',{key:show.id.slug,domProps:{\"value\":show.id.slug}},[_vm._v(_vm._s(show.title))])})],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./state-switch.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./state-switch.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./state-switch.vue?vue&type=template&id=3464a40e&\"\nimport script from \"./state-switch.vue?vue&type=script&lang=js&\"\nexport * from \"./state-switch.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('img',_vm._b({attrs:{\"height\":\"16\",\"width\":\"16\"},on:{\"click\":function($event){return _vm.$emit('click')}}},'img',{ src: _vm.src, alt: _vm.alt },false))}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export { default as AppLink } from './app-link.vue';\nexport { default as Asset } from './asset.vue';\nexport { default as ConfigTemplate } from './config-template.vue';\nexport { default as ConfigTextboxNumber } from './config-textbox-number.vue';\nexport { default as ConfigTextbox } from './config-textbox.vue';\nexport { default as ConfigToggleSlider } from './config-toggle-slider.vue';\nexport { default as FileBrowser } from './file-browser.vue';\nexport { default as LanguageSelect } from './language-select.vue';\nexport { default as NamePattern } from './name-pattern.vue';\nexport { default as PlotInfo } from './plot-info.vue';\nexport { default as QualityChooser } from './quality-chooser.vue';\nexport { default as QualityPill } from './quality-pill.vue';\nexport { default as ScrollButtons } from './scroll-buttons.vue';\nexport { default as SelectList } from './select-list.vue';\nexport { default as ShowSelector } from './show-selector.vue';\nexport { default as StateSwitch } from './state-switch.vue';\n","import axios from 'axios';\n\n// This should be more dynamic. As now when we change the apiKey in config/general. This won't work anymore.\n// Because of this, a page reload is required.\nexport const webRoot = document.body.getAttribute('web-root');\nexport const apiKey = document.body.getAttribute('api-key');\n\n/**\n * Api client based on the axios client, to communicate with medusa's web routes, which return json data.\n */\nexport const apiRoute = axios.create({\n baseURL: webRoot + '/',\n timeout: 60000,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n }\n});\n\n/**\n * Api client based on the axios client, to communicate with medusa's api v1.\n */\nexport const apiv1 = axios.create({\n baseURL: webRoot + '/api/v1/' + apiKey + '/',\n timeout: 30000,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json'\n }\n});\n\n/**\n * Api client based on the axios client, to communicate with medusa's api v2.\n */\nexport const api = axios.create({\n baseURL: webRoot + '/api/v2/',\n timeout: 30000,\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n 'X-Api-Key': apiKey\n }\n});\n","export const isDevelopment = process.env.NODE_ENV === 'development';\n\n/**\n * Calculate the combined value of the selected qualities.\n * @param {number[]} allowedQualities - Array of allowed qualities.\n * @param {number[]} [preferredQualities=[]] - Array of preferred qualities.\n * @returns {number} An unsigned integer.\n */\nexport const combineQualities = (allowedQualities, preferredQualities = []) => {\n const reducer = (accumulator, currentValue) => accumulator | currentValue;\n const allowed = allowedQualities.reduce(reducer, 0);\n const preferred = preferredQualities.reduce(reducer, 0);\n\n return (allowed | (preferred << 16)) >>> 0; // Unsigned int\n};\n\n/**\n * Return a human readable representation of the provided size.\n * @param {number} bytes - The size in bytes to convert\n * @param {boolean} [useDecimal=false] - Use decimal instead of binary prefixes (e.g. kilo = 1000 instead of 1024)\n * @returns {string} The converted size.\n */\nexport const humanFileSize = (bytes, useDecimal = false) => {\n if (!bytes) {\n bytes = 0;\n }\n\n bytes = Math.max(bytes, 0);\n\n const thresh = useDecimal ? 1000 : 1024;\n if (Math.abs(bytes) < thresh) {\n return bytes.toFixed(2) + ' B';\n }\n const units = ['KB', 'MB', 'GB', 'TB', 'PB'];\n let u = -1;\n do {\n bytes /= thresh;\n ++u;\n } while (Math.abs(bytes) >= thresh && u < units.length - 1);\n\n return `${bytes.toFixed(2)} ${units[u]}`;\n};\n\n// Maps Python date/time tokens to date-fns tokens\n// Python: https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior\n// date-fns: https://date-fns.org/v2.0.0-alpha.27/docs/format\nconst datePresetMap = {\n '%a': 'ccc', // Weekday name, short\n '%A': 'cccc', // Weekday name, full\n '%w': 'c', // Weekday number\n '%d': 'dd', // Day of the month, zero-padded\n '%b': 'LLL', // Month name, short\n '%B': 'LLLL', // Month name, full\n '%m': 'MM', // Month number, zero-padded\n '%y': 'yy', // Year without century, zero-padded\n '%Y': 'yyyy', // Year with century\n '%H': 'HH', // Hour (24-hour clock), zero-padded\n '%I': 'hh', // Hour (12-hour clock), zero-padded\n '%p': 'a', // AM / PM\n '%M': 'mm', // Minute, zero-padded\n '%S': 'ss', // Second, zero-padded\n '%f': 'SSSSSS', // Microsecond, zero-padded\n '%z': 'xx', // UTC offset in the form +HHMM or -HHMM\n // '%Z': '', // [UNSUPPORTED] Time zone name\n '%j': 'DDD', // Day of the year, zero-padded\n '%U': 'II', // Week number of the year (Sunday as the first day of the week), zero padded\n '%W': 'ww', // Week number of the year (Monday as the first day of the week)\n '%c': 'Pp', // Locale's appropriate date and time representation\n '%x': 'P', // Locale's appropriate date representation\n '%X': 'p', // Locale's appropriate time representation\n '%%': '%' // Literal '%' character\n};\n\n/**\n * Convert a Python date format to a DateFns compatible date format.\n * Automatically escapes non-token characters.\n * @param {string} format - The Python date format.\n * @returns {string} The new format.\n */\nexport const convertDateFormat = format => {\n let newFormat = '';\n let index = 0;\n let escaping = false;\n while (index < format.length) {\n const chr = format.charAt(index);\n // Escape single quotes\n if (chr === \"'\") {\n newFormat += chr + chr;\n } else if (chr === '%') {\n if (escaping) {\n escaping = false;\n newFormat += \"'\";\n }\n\n ++index;\n if (index === format.length) {\n throw new Error(`Single % at end of format string: ${format}`);\n }\n const chr2 = format.charAt(index);\n const tokenKey = chr + chr2;\n const token = datePresetMap[tokenKey];\n if (token === undefined) {\n throw new Error(`Unrecognized token \"${tokenKey}\" in format string: ${format}`);\n }\n newFormat += token;\n // Only letters need to escaped\n } else if (/[^a-z]/i.test(chr)) {\n if (escaping) {\n escaping = false;\n newFormat += \"'\";\n }\n newFormat += chr;\n // Escape anything else\n } else {\n if (!escaping) {\n escaping = true;\n newFormat += \"'\";\n }\n newFormat += chr;\n }\n\n ++index;\n\n if (index === format.length && escaping) {\n newFormat += \"'\";\n }\n }\n return newFormat;\n};\n\n/**\n * Create an array with unique strings\n * @param {string[]} array - array with strings\n * @returns {string[]} array with unique strings\n */\nexport const arrayUnique = array => {\n return array.reduce((result, item) => {\n return result.includes(item) ? result : result.concat(item);\n }, []);\n};\n\n/**\n * Exclude strings out of the array `exclude` compared to the strings in the array baseArray.\n * @param {string[]} baseArray - array of strings\n * @param {string[]} exclude - array of strings which we want to exclude in baseArray\n * @returns {string[]} reduced array\n */\nexport const arrayExclude = (baseArray, exclude) => {\n return baseArray.filter(item => !exclude.includes(item));\n};\n\n/**\n * A simple wait function.\n * @param {number} ms - Time to wait.\n * @returns {Promise} Resolves when done waiting.\n */\nexport const wait = /* istanbul ignore next */ ms => new Promise(resolve => setTimeout(resolve, ms));\n\n/**\n * Returns when `check` evaluates as truthy.\n * @param {function} check - Function to evaluate every poll interval.\n * @param {number} [poll=100] - Interval to check, in milliseconds.\n * @param {number} [timeout=3000] - Timeout to stop waiting after, in milliseconds.\n * @returns {Promise} The approximate amount of time waited, in milliseconds.\n * @throws Will throw an error when the timeout has been exceeded.\n */\nexport const waitFor = /* istanbul ignore next */ async (check, poll = 100, timeout = 3000) => {\n let ms = 0;\n while (!check()) {\n await wait(poll); // eslint-disable-line no-await-in-loop\n ms += poll;\n if (ms > timeout) {\n throw new Error(`waitFor timed out (${timeout}ms)`);\n }\n }\n return ms;\n};\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./backstretch.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./backstretch.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./backstretch.vue?vue&type=script&lang=js&\"\nexport * from \"./backstretch.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","const LOGIN_PENDING = '🔒 Logging in';\nconst LOGIN_SUCCESS = '🔒 ✅ Login Successful';\nconst LOGIN_FAILED = '🔒 ❌ Login Failed';\nconst LOGOUT = '🔒 Logout';\nconst REFRESH_TOKEN = '🔒 Refresh Token';\nconst REMOVE_AUTH_ERROR = '🔒 Remove Auth Error';\nconst SOCKET_ONOPEN = '🔗 ✅ WebSocket connected';\nconst SOCKET_ONCLOSE = '🔗 ❌ WebSocket disconnected';\nconst SOCKET_ONERROR = '🔗 ❌ WebSocket error';\nconst SOCKET_ONMESSAGE = '🔗 ✉️ 📥 WebSocket message received';\nconst SOCKET_RECONNECT = '🔗 🔃 WebSocket reconnecting';\nconst SOCKET_RECONNECT_ERROR = '🔗 🔃 ❌ WebSocket reconnection attempt failed';\nconst NOTIFICATIONS_ENABLED = '🔔 Notifications Enabled';\nconst NOTIFICATIONS_DISABLED = '🔔 Notifications Disabled';\nconst ADD_CONFIG = '⚙️ Config added to store';\nconst ADD_SHOW = '📺 Show added to store';\nconst ADD_SHOW_EPISODE = '📺 Shows season with episodes added to store';\nconst ADD_STATS = 'ℹ️ Statistics added to store';\n\nexport {\n LOGIN_PENDING,\n LOGIN_SUCCESS,\n LOGIN_FAILED,\n LOGOUT,\n REFRESH_TOKEN,\n REMOVE_AUTH_ERROR,\n SOCKET_ONOPEN,\n SOCKET_ONCLOSE,\n SOCKET_ONERROR,\n SOCKET_ONMESSAGE,\n SOCKET_RECONNECT,\n SOCKET_RECONNECT_ERROR,\n NOTIFICATIONS_ENABLED,\n NOTIFICATIONS_DISABLED,\n ADD_CONFIG,\n ADD_SHOW,\n ADD_SHOW_EPISODE,\n ADD_STATS\n};\n","import {\n LOGIN_PENDING,\n LOGIN_SUCCESS,\n LOGIN_FAILED,\n LOGOUT,\n REFRESH_TOKEN,\n REMOVE_AUTH_ERROR\n} from '../mutation-types';\n\nconst state = {\n isAuthenticated: false,\n user: {},\n tokens: {\n access: null,\n refresh: null\n },\n error: null\n};\n\nconst mutations = {\n [LOGIN_PENDING]() { },\n [LOGIN_SUCCESS](state, user) {\n state.user = user;\n state.isAuthenticated = true;\n state.error = null;\n },\n [LOGIN_FAILED](state, { error }) {\n state.user = {};\n state.isAuthenticated = false;\n state.error = error;\n },\n [LOGOUT](state) {\n state.user = {};\n state.isAuthenticated = false;\n state.error = null;\n },\n [REFRESH_TOKEN]() {},\n [REMOVE_AUTH_ERROR]() {}\n};\n\nconst getters = {};\n\nconst actions = {\n login(context, credentials) {\n const { commit } = context;\n commit(LOGIN_PENDING);\n\n // @TODO: Add real JWT login\n const apiLogin = credentials => Promise.resolve(credentials);\n\n return apiLogin(credentials).then(user => {\n commit(LOGIN_SUCCESS, user);\n return { success: true };\n }).catch(error => {\n commit(LOGIN_FAILED, { error, credentials });\n return { success: false, error };\n });\n },\n logout(context) {\n const { commit } = context;\n commit(LOGOUT);\n }\n};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","import { ADD_CONFIG } from '../mutation-types';\n\nconst state = {\n torrents: {\n authType: null,\n dir: null,\n enabled: null,\n highBandwidth: null,\n host: null,\n label: null,\n labelAnime: null,\n method: null,\n path: null,\n paused: null,\n rpcUrl: null,\n seedLocation: null,\n seedTime: null,\n username: null,\n password: null,\n verifySSL: null,\n testStatus: 'Click below to test'\n },\n nzb: {\n enabled: null,\n method: null,\n nzbget: {\n category: null,\n categoryAnime: null,\n categoryAnimeBacklog: null,\n categoryBacklog: null,\n host: null,\n priority: null,\n useHttps: null,\n username: null,\n password: null\n },\n sabnzbd: {\n category: null,\n forced: null,\n categoryAnime: null,\n categoryBacklog: null,\n categoryAnimeBacklog: null,\n host: null,\n username: null,\n password: null,\n apiKey: null\n }\n }\n};\n\nconst mutations = {\n [ADD_CONFIG](state, { section, config }) {\n if (section === 'clients') {\n state = Object.assign(state, config);\n }\n }\n};\n\nconst getters = {};\n\nconst actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","import { api, apiRoute } from '../../api';\nimport { ADD_CONFIG } from '../mutation-types';\nimport { arrayUnique, arrayExclude } from '../../utils/core';\n\nconst state = {\n wikiUrl: null,\n donationsUrl: null,\n selectedRootIndex: null,\n namingForceFolders: null,\n sourceUrl: null,\n downloadUrl: null,\n rootDirs: [],\n subtitles: {\n enabled: null\n },\n logs: {\n debug: null,\n dbDebug: null,\n loggingLevels: {},\n numErrors: null,\n numWarnings: null,\n actualLogDir: null,\n nr: null,\n size: null,\n subliminalLog: null,\n privacyLevel: null\n },\n cpuPreset: null,\n subtitlesMulti: null,\n anonRedirect: null,\n recentShows: [],\n randomShowSlug: null, // @TODO: Recreate this in Vue when the webapp has a reliable list of shows to choose from.\n showDefaults: {\n status: null,\n statusAfter: null,\n quality: null,\n subtitles: null,\n seasonFolders: null,\n anime: null,\n scene: null\n },\n launchBrowser: null,\n defaultPage: null,\n trashRemoveShow: null,\n indexerDefaultLanguage: null,\n showUpdateHour: null,\n indexerTimeout: null,\n indexerDefault: null,\n plexFallBack: {\n enable: null,\n notifications: null,\n timeout: null\n },\n versionNotify: null,\n autoUpdate: null,\n updateFrequency: null,\n notifyOnUpdate: null,\n availableThemes: null,\n timePresets: [],\n datePresets: [],\n webInterface: {\n apiKey: null,\n log: null,\n username: null,\n password: null,\n port: null,\n notifyOnLogin: null,\n ipv6: null,\n httpsEnable: null,\n httpsCert: null,\n httpsKey: null,\n handleReverseProxy: null\n },\n sslVerify: null,\n sslCaBundle: null,\n noRestart: null,\n encryptionVersion: null,\n calendarUnprotected: null,\n calendarIcons: null,\n proxySetting: null,\n proxyIndexers: null,\n skipRemovedFiles: null,\n epDefaultDeletedStatus: null,\n developer: null,\n git: {\n username: null,\n password: null,\n token: null,\n authType: null,\n remote: null,\n path: null,\n org: null,\n reset: null,\n resetBranches: null,\n url: null\n },\n // Remove backlogOverview after manage_backlogOverview.mako is gone.\n backlogOverview: {\n status: null,\n period: null\n },\n // Remove themeName when we get fully rid of MEDUSA.config.\n themeName: null\n};\n\nconst mutations = {\n [ADD_CONFIG](state, { section, config }) {\n if (section === 'main') {\n state = Object.assign(state, config);\n }\n }\n};\n\nconst getters = {\n layout: state => layout => state.layout[layout],\n effectiveIgnored: (state, _, rootState) => series => {\n const seriesIgnored = series.config.release.ignoredWords.map(x => x.toLowerCase());\n const globalIgnored = rootState.search.filters.ignored.map(x => x.toLowerCase());\n if (!series.config.release.ignoredWordsExclude) {\n return arrayUnique(globalIgnored.concat(seriesIgnored));\n }\n return arrayExclude(globalIgnored, seriesIgnored);\n },\n effectiveRequired: (state, _, rootState) => series => {\n const globalRequired = rootState.search.filters.required.map(x => x.toLowerCase());\n const seriesRequired = series.config.release.requiredWords.map(x => x.toLowerCase());\n if (!series.config.release.requiredWordsExclude) {\n return arrayUnique(globalRequired.concat(seriesRequired));\n }\n return arrayExclude(globalRequired, seriesRequired);\n }\n};\n\nconst actions = {\n getConfig(context, section) {\n const { commit } = context;\n return api.get('/config/' + (section || '')).then(res => {\n if (section) {\n const config = res.data;\n commit(ADD_CONFIG, { section, config });\n return config;\n }\n\n const sections = res.data;\n Object.keys(sections).forEach(section => {\n const config = sections[section];\n commit(ADD_CONFIG, { section, config });\n });\n return sections;\n });\n },\n setConfig(context, { section, config }) {\n return api.patch(`config/${section}`, config);\n },\n updateConfig(context, { section, config }) {\n const { commit } = context;\n return commit(ADD_CONFIG, { section, config });\n },\n getApiKey(context) {\n const { commit } = context;\n const section = 'main';\n const config = { webInterface: { apiKey: '' } };\n return apiRoute.get('config/general/generate_api_key')\n .then(response => {\n config.webInterface.apiKey = response.data;\n return commit(ADD_CONFIG, { section, config });\n });\n }\n\n};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","import { ADD_CONFIG } from '../mutation-types';\n\n/**\n * An object representing a split quality.\n *\n * @typedef {Object} Quality\n * @property {number[]} allowed - Allowed qualities\n * @property {number[]} preferred - Preferred qualities\n */\n\nconst state = {\n qualities: {\n values: [],\n anySets: [],\n presets: []\n },\n statuses: []\n};\n\nconst mutations = {\n [ADD_CONFIG](state, { section, config }) {\n if (section === 'consts') {\n state = Object.assign(state, config);\n }\n }\n};\n\nconst getters = {\n // Get a quality object using a key or a value\n getQuality: state => ({ key, value }) => {\n if ([key, value].every(x => x === undefined) || [key, value].every(x => x !== undefined)) {\n throw new Error('Conflict in `getQuality`: Please provide either `key` or `value`.');\n }\n return state.qualities.values.find(quality => key === quality.key || value === quality.value);\n },\n // Get a quality any-set object using a key or a value\n getQualityAnySet: state => ({ key, value }) => {\n if ([key, value].every(x => x === undefined) || [key, value].every(x => x !== undefined)) {\n throw new Error('Conflict in `getQualityAnySet`: Please provide either `key` or `value`.');\n }\n return state.qualities.anySets.find(preset => key === preset.key || value === preset.value);\n },\n // Get a quality preset object using a key or a value\n getQualityPreset: state => ({ key, value }) => {\n if ([key, value].every(x => x === undefined) || [key, value].every(x => x !== undefined)) {\n throw new Error('Conflict in `getQualityPreset`: Please provide either `key` or `value`.');\n }\n return state.qualities.presets.find(preset => key === preset.key || value === preset.value);\n },\n // Get a status object using a key or a value\n getStatus: state => ({ key, value }) => {\n if ([key, value].every(x => x === undefined) || [key, value].every(x => x !== undefined)) {\n throw new Error('Conflict in `getStatus`: Please provide either `key` or `value`.');\n }\n return state.statuses.find(status => key === status.key || value === status.value);\n },\n /**\n * Get an episode overview status using the episode status and quality.\n *\n * @typedef {Object} - Episode status\n * @property {Object} quality - Episode quality\n * @property {Object} configQualities - Shows configured qualities (allowed and preferred)\n * @returns {String} The overview status\n */\n // eslint-disable-next-line no-unused-vars\n getOverviewStatus: _state => (status, quality, configQualities) => {\n if (['Unset', 'Unaired'].includes(status)) {\n return 'Unaired';\n }\n\n if (['Skipped', 'Ignored'].includes(status)) {\n return 'Skipped';\n }\n\n if (['Wanted', 'Failed'].includes(status)) {\n return 'Wanted';\n }\n\n if (['Snatched', 'Snatched (Proper)', 'Snatched (Best)'].includes(status)) {\n return 'Snatched';\n }\n\n if (['Downloaded'].includes(status)) {\n // Check if the show has been configured with only allowed qualities.\n if (configQualities.allowed.length > 0 && configQualities.preferred.length === 0) {\n // This is a hack, because technically the quality does not fit in the Preferred quality.\n // But because 'preferred' translates to the css color \"green\", we use it.\n if (configQualities.allowed.includes(quality)) {\n return 'Preferred';\n }\n }\n\n if (configQualities.preferred.includes(quality)) {\n return 'Preferred';\n }\n\n if (configQualities.allowed.includes(quality)) {\n return 'Allowed';\n }\n }\n\n return status;\n },\n splitQuality: state => {\n /**\n * Split a combined quality to allowed and preferred qualities.\n * Converted Python method from `medusa.common.Quality.split_quality`.\n *\n * @param {number} quality - The combined quality to split\n * @returns {Quality} The split quality\n */\n const _splitQuality = quality => {\n return state.qualities.values.reduce((result, { value }) => {\n quality >>>= 0; // Unsigned int\n if (value & quality) {\n result.allowed.push(value);\n }\n if ((value << 16) & quality) {\n result.preferred.push(value);\n }\n return result;\n }, { allowed: [], preferred: [] });\n };\n return _splitQuality;\n }\n};\n\nconst actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","const state = {\n show: {\n airs: null,\n airsFormatValid: null,\n akas: null,\n cache: null,\n classification: null,\n seasonCount: [],\n config: {\n airByDate: null,\n aliases: [],\n anime: null,\n defaultEpisodeStatus: null,\n dvdOrder: null,\n location: null,\n locationValid: null,\n paused: null,\n qualities: {\n allowed: [],\n preferred: []\n },\n release: {\n requiredWords: [],\n ignoredWords: [],\n blacklist: [],\n whitelist: [],\n requiredWordsExclude: null,\n ignoredWordsExclude: null\n },\n scene: null,\n seasonFolders: null,\n sports: null,\n subtitlesEnabled: null,\n airdateOffset: null\n },\n countries: null,\n genres: [],\n id: {\n tvdb: null,\n slug: null\n },\n indexer: null,\n imdbInfo: {\n akas: null,\n certificates: null,\n countries: null,\n countryCodes: null,\n genres: null,\n imdbId: null,\n imdbInfoId: null,\n indexer: null,\n indexerId: null,\n lastUpdate: null,\n plot: null,\n rating: null,\n runtimes: null,\n title: null,\n votes: null\n },\n language: null,\n network: null,\n nextAirDate: null,\n plot: null,\n rating: {\n imdb: {\n rating: null,\n votes: null\n }\n },\n runtime: null,\n showType: null,\n status: null,\n title: null,\n type: null,\n year: {},\n size: null,\n\n // ===========================\n // Detailed (`?detailed=true`)\n // ===========================\n\n showQueueStatus: [],\n xemNumbering: [],\n sceneAbsoluteNumbering: [],\n allSceneExceptions: [],\n xemAbsoluteNumbering: [],\n sceneNumbering: [],\n\n // ===========================\n // Episodes (`?episodes=true`)\n // ===========================\n\n // Seasons array is added to the show object under this query,\n // but we currently check to see if this property is defined before fetching the show with `?episodes=true`.\n // seasons: [],\n episodeCount: null\n }\n};\n\nconst mutations = {};\n\nconst getters = {};\n\nconst actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","import { ADD_CONFIG } from '../mutation-types';\n\nconst state = {\n main: {\n externalMappings: {},\n statusMap: {},\n traktIndexers: {},\n validLanguages: [],\n langabbvToId: {}\n },\n indexers: {\n tvdb: {\n apiParams: {\n useZip: null,\n language: null\n },\n baseUrl: null,\n enabled: null,\n icon: null,\n id: null,\n identifier: null,\n mappedTo: null,\n name: null,\n scene_loc: null, // eslint-disable-line camelcase\n showUrl: null,\n xemOrigin: null\n },\n tmdb: {\n apiParams: {\n useZip: null,\n language: null\n },\n baseUrl: null,\n enabled: null,\n icon: null,\n id: null,\n identifier: null,\n mappedTo: null,\n name: null,\n scene_loc: null, // eslint-disable-line camelcase\n showUrl: null,\n xemOrigin: null\n },\n tvmaze: {\n apiParams: {\n useZip: null,\n language: null\n },\n baseUrl: null,\n enabled: null,\n icon: null,\n id: null,\n identifier: null,\n mappedTo: null,\n name: null,\n scene_loc: null, // eslint-disable-line camelcase\n showUrl: null,\n xemOrigin: null\n }\n }\n};\n\nconst mutations = {\n [ADD_CONFIG](state, { section, config }) {\n if (section === 'indexers') {\n state = Object.assign(state, config);\n }\n }\n};\n\nconst getters = {\n // Get an indexer's name using its ID.\n indexerIdToName: state => indexerId => {\n if (!indexerId) {\n return undefined;\n }\n const { indexers } = state;\n return Object.keys(indexers).find(name => indexers[name].id === parseInt(indexerId, 10));\n },\n // Get an indexer's ID using its name.\n indexerNameToId: state => indexerName => {\n if (!indexerName) {\n return undefined;\n }\n const { indexers } = state;\n return indexers[name].id;\n }\n};\n\nconst actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","import { ADD_CONFIG } from '../mutation-types';\nimport { api } from '../../api';\n\nconst state = {\n show: {\n specials: null,\n showListOrder: [],\n pagination: {\n enable: null\n }\n },\n home: null,\n history: null,\n historyLimit: null,\n schedule: null,\n wide: null,\n posterSortdir: null,\n timezoneDisplay: null,\n timeStyle: null,\n dateStyle: null,\n themeName: null,\n animeSplitHomeInTabs: null,\n animeSplitHome: null,\n fanartBackground: null,\n fanartBackgroundOpacity: null,\n trimZero: null,\n sortArticle: null,\n fuzzyDating: null,\n posterSortby: null,\n comingEps: {\n missedRange: null,\n sort: null,\n displayPaused: null,\n layout: null\n },\n backlogOverview: {\n status: null,\n period: null\n }\n};\n\nconst mutations = {\n [ADD_CONFIG](state, { section, config }) {\n if (section === 'layout') {\n state = Object.assign(state, config);\n }\n }\n};\n\nconst getters = {};\n\nconst actions = {\n setLayout(context, { page, layout }) {\n return api.patch('config/main', {\n layout: {\n [page]: layout\n }\n }).then(() => {\n setTimeout(() => {\n // For now we reload the page since the layouts use python still\n location.reload();\n }, 500);\n });\n },\n setTheme(context, { themeName }) {\n const { commit } = context;\n return api.patch('config/main', { layout: { themeName } })\n .then(() => {\n return commit(ADD_CONFIG, { section: 'layout', config: { themeName } });\n });\n },\n setSpecials(context, specials) {\n const { commit, state } = context;\n const show = Object.assign({}, state.show);\n show.specials = specials;\n\n return api.patch('config/main', { layout: { show } })\n .then(() => {\n return commit(ADD_CONFIG, { section: 'layout', config: { show } });\n });\n }\n};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","import { ADD_CONFIG } from '../mutation-types';\n\nconst state = {\n metadataProviders: {}\n};\n\nconst mutations = {\n [ADD_CONFIG](state, { section, config }) {\n if (section === 'metadata') {\n state = Object.assign(state, config);\n }\n }\n};\n\nconst getters = {};\n\nconst actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","import { NOTIFICATIONS_ENABLED, NOTIFICATIONS_DISABLED } from '../mutation-types';\n\nconst state = {\n enabled: true\n};\n\nconst mutations = {\n [NOTIFICATIONS_ENABLED](state) {\n state.enabled = true;\n },\n [NOTIFICATIONS_DISABLED](state) {\n state.enabled = false;\n }\n};\n\nconst getters = {};\n\nconst actions = {\n enable(context) {\n const { commit } = context;\n commit(NOTIFICATIONS_ENABLED);\n },\n disable(context) {\n const { commit } = context;\n commit(NOTIFICATIONS_DISABLED);\n },\n test() {\n return window.displayNotification('error', 'test', 'test
    hello world
    • item 1
    • item 2
    ', 'notification-test');\n }\n};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","import { ADD_CONFIG } from '../../mutation-types';\nimport boxcar2 from './boxcar2';\nimport discord from './discord';\nimport email from './email';\nimport emby from './emby';\nimport freemobile from './freemobile';\nimport growl from './growl';\nimport kodi from './kodi';\nimport libnotify from './libnotify';\nimport nmj from './nmj';\nimport nmjv2 from './nmjv2';\nimport plex from './plex';\nimport prowl from './prowl';\nimport pushalot from './pushalot';\nimport pushbullet from './pushbullet';\nimport join from './join';\nimport pushover from './pushover';\nimport pyTivo from './py-tivo';\nimport slack from './slack';\nimport synology from './synology';\nimport synologyIndex from './synology-index';\nimport telegram from './telegram';\nimport trakt from './trakt';\nimport twitter from './twitter';\n\nconst state = {};\n\nconst mutations = {\n [ADD_CONFIG](state, { section, config }) {\n if (section === 'notifiers') {\n state = Object.assign(state, config);\n }\n }\n};\n\nconst getters = {};\n\nconst actions = {};\n\nconst modules = {\n boxcar2,\n discord,\n email,\n emby,\n freemobile,\n growl,\n kodi,\n libnotify,\n nmj,\n nmjv2,\n plex,\n prowl,\n pushalot,\n pushbullet,\n join,\n pushover,\n pyTivo,\n slack,\n synology,\n synologyIndex,\n telegram,\n trakt,\n twitter\n};\n\nexport default {\n state,\n mutations,\n getters,\n actions,\n modules\n};\n","export const state = {\n enabled: null,\n notifyOnSnatch: null,\n notifyOnDownload: null,\n notifyOnSubtitleDownload: null,\n accessToken: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n notifyOnSnatch: null,\n notifyOnDownload: null,\n notifyOnSubtitleDownload: null,\n webhook: null,\n tts: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n notifyOnSnatch: null,\n notifyOnDownload: null,\n notifyOnSubtitleDownload: null,\n host: null,\n port: null,\n from: null,\n tls: null,\n username: null,\n password: null,\n addressList: [],\n subject: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n host: null,\n apiKey: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n notifyOnSnatch: null,\n notifyOnDownload: null,\n notifyOnSubtitleDownload: null,\n api: null,\n id: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n host: null,\n password: null,\n notifyOnSnatch: null,\n notifyOnDownload: null,\n notifyOnSubtitleDownload: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n alwaysOn: null,\n libraryCleanPending: null,\n cleanLibrary: null,\n host: [],\n username: null,\n password: null,\n notifyOnSnatch: null,\n notifyOnDownload: null,\n notifyOnSubtitleDownload: null,\n update: {\n library: null,\n full: null,\n onlyFirst: null\n }\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n notifyOnSnatch: null,\n notifyOnDownload: null,\n notifyOnSubtitleDownload: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n host: null,\n database: null,\n mount: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n host: null,\n dbloc: null,\n database: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n client: {\n host: [],\n username: null,\n enabled: null,\n notifyOnSnatch: null,\n notifyOnDownload: null,\n notifyOnSubtitleDownload: null\n },\n server: {\n updateLibrary: null,\n host: [],\n enabled: null,\n https: null,\n username: null,\n password: null,\n token: null\n }\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n api: [],\n messageTitle: null,\n priority: null,\n notifyOnSnatch: null,\n notifyOnDownload: null,\n notifyOnSubtitleDownload: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n notifyOnSnatch: null,\n notifyOnDownload: null,\n notifyOnSubtitleDownload: null,\n authToken: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n notifyOnSnatch: null,\n notifyOnDownload: null,\n notifyOnSubtitleDownload: null,\n authToken: null,\n device: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n notifyOnSnatch: null,\n notifyOnDownload: null,\n notifyOnSubtitleDownload: null,\n api: null,\n device: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n apiKey: null,\n userKey: null,\n device: [],\n sound: null,\n notifyOnSnatch: null,\n notifyOnDownload: null,\n notifyOnSubtitleDownload: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n host: null,\n name: null,\n shareName: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n notifyOnSnatch: null,\n notifyOnDownload: null,\n notifyOnSubtitleDownload: null,\n webhook: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n notifyOnSnatch: null,\n notifyOnDownload: null,\n notifyOnSubtitleDownload: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n notifyOnSnatch: null,\n notifyOnDownload: null,\n notifyOnSubtitleDownload: null,\n api: null,\n id: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n pinUrl: null,\n username: null,\n accessToken: null,\n timeout: null,\n defaultIndexer: null,\n sync: null,\n syncRemove: null,\n syncWatchlist: null,\n methodAdd: null,\n removeWatchlist: null,\n removeSerieslist: null,\n removeShowFromApplication: null,\n startPaused: null,\n blacklistName: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","export const state = {\n enabled: null,\n notifyOnSnatch: null,\n notifyOnDownload: null,\n notifyOnSubtitleDownload: null,\n dmto: null,\n prefix: null,\n directMessage: null\n};\n\nexport const mutations = {};\n\nexport const getters = {};\n\nexport const actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","import { ADD_CONFIG } from '../mutation-types';\n\nconst state = {\n naming: {\n pattern: null,\n multiEp: null,\n enableCustomNamingSports: null,\n enableCustomNamingAirByDate: null,\n patternSports: null,\n patternAirByDate: null,\n enableCustomNamingAnime: null,\n patternAnime: null,\n animeMultiEp: null,\n animeNamingType: null,\n stripYear: null\n },\n showDownloadDir: null,\n processAutomatically: null,\n processMethod: null,\n deleteRarContent: null,\n unpack: null,\n noDelete: null,\n reflinkAvailable: null,\n postponeIfSyncFiles: null,\n autoPostprocessorFrequency: 10,\n airdateEpisodes: null,\n moveAssociatedFiles: null,\n allowedExtensions: [],\n addShowsWithoutDir: null,\n createMissingShowDirs: null,\n renameEpisodes: null,\n postponeIfNoSubs: null,\n nfoRename: null,\n syncFiles: [],\n fileTimestampTimezone: 'local',\n extraScripts: [],\n extraScriptsUrl: null,\n multiEpStrings: {}\n};\n\nconst mutations = {\n [ADD_CONFIG](state, { section, config }) {\n if (section === 'postprocessing') {\n state = Object.assign(state, config);\n }\n }\n};\n\nconst getters = {};\n\nconst actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","import { ADD_CONFIG } from '../mutation-types';\n\nconst state = {\n filters: {\n ignoreUnknownSubs: false,\n ignored: [\n 'german',\n 'french',\n 'core2hd',\n 'dutch',\n 'swedish',\n 'reenc',\n 'MrLss',\n 'dubbed'\n ],\n undesired: [\n 'internal',\n 'xvid'\n ],\n ignoredSubsList: [\n 'dk',\n 'fin',\n 'heb',\n 'kor',\n 'nor',\n 'nordic',\n 'pl',\n 'swe'\n ],\n required: [],\n preferred: []\n },\n general: {\n minDailySearchFrequency: 10,\n minBacklogFrequency: 720,\n dailySearchFrequency: 40,\n checkPropersInterval: '4h',\n usenetRetention: 500,\n maxCacheAge: 30,\n backlogDays: 7,\n torrentCheckerFrequency: 60,\n backlogFrequency: 720,\n cacheTrimming: false,\n downloadPropers: true,\n failedDownloads: {\n enabled: null,\n deleteFailed: null\n },\n minTorrentCheckerFrequency: 30,\n removeFromClient: false,\n randomizeProviders: false,\n propersSearchDays: 2,\n allowHighPriority: true,\n trackersList: [\n 'udp://tracker.coppersurfer.tk:6969/announce',\n 'udp://tracker.leechers-paradise.org:6969/announce',\n 'udp://tracker.zer0day.to:1337/announce',\n 'udp://tracker.opentrackr.org:1337/announce',\n 'http://tracker.opentrackr.org:1337/announce',\n 'udp://p4p.arenabg.com:1337/announce',\n 'http://p4p.arenabg.com:1337/announce',\n 'udp://explodie.org:6969/announce',\n 'udp://9.rarbg.com:2710/announce',\n 'http://explodie.org:6969/announce',\n 'http://tracker.dler.org:6969/announce',\n 'udp://public.popcorn-tracker.org:6969/announce',\n 'udp://tracker.internetwarriors.net:1337/announce',\n 'udp://ipv4.tracker.harry.lu:80/announce',\n 'http://ipv4.tracker.harry.lu:80/announce',\n 'udp://mgtracker.org:2710/announce',\n 'http://mgtracker.org:6969/announce',\n 'udp://tracker.mg64.net:6969/announce',\n 'http://tracker.mg64.net:6881/announce',\n 'http://torrentsmd.com:8080/announce'\n ]\n }\n};\n\nconst mutations = {\n [ADD_CONFIG](state, { section, config }) {\n if (section === 'search') {\n state = Object.assign(state, config);\n }\n }\n};\n\nconst getters = {};\n\nconst actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","import Vue from 'vue';\n\nimport { api } from '../../api';\nimport { ADD_SHOW, ADD_SHOW_EPISODE } from '../mutation-types';\n\n/**\n * @typedef {object} ShowIdentifier\n * @property {string} indexer The indexer name (e.g. `tvdb`)\n * @property {number} id The show ID on the indexer (e.g. `12345`)\n */\n\nconst state = {\n shows: [],\n currentShow: {\n indexer: null,\n id: null\n }\n};\n\nconst mutations = {\n [ADD_SHOW](state, show) {\n const existingShow = state.shows.find(({ id, indexer }) => Number(show.id[show.indexer]) === Number(id[indexer]));\n\n if (!existingShow) {\n console.debug(`Adding ${show.title || show.indexer + String(show.id)} as it wasn't found in the shows array`, show);\n state.shows.push(show);\n return;\n }\n\n // Merge new show object over old one\n // this allows detailed queries to update the record\n // without the non-detailed removing the extra data\n console.debug(`Found ${show.title || show.indexer + String(show.id)} in shows array attempting merge`);\n const newShow = {\n ...existingShow,\n ...show\n };\n\n // Update state\n Vue.set(state.shows, state.shows.indexOf(existingShow), newShow);\n console.debug(`Merged ${newShow.title || newShow.indexer + String(newShow.id)}`, newShow);\n },\n currentShow(state, { indexer, id }) {\n state.currentShow.indexer = indexer;\n state.currentShow.id = id;\n },\n [ADD_SHOW_EPISODE](state, { show, episodes }) {\n // Creating a new show object (from the state one) as we want to trigger a store update\n const newShow = Object.assign({}, state.shows.find(({ id, indexer }) => Number(show.id[show.indexer]) === Number(id[indexer])));\n\n if (!newShow.seasons) {\n newShow.seasons = [];\n }\n\n // Recreate an Array with season objects, with each season having an episodes array.\n // This format is used by vue-good-table (displayShow).\n episodes.forEach(episode => {\n const existingSeason = newShow.seasons.find(season => season.season === episode.season);\n\n if (existingSeason) {\n const foundIndex = existingSeason.episodes.findIndex(element => element.slug === episode.slug);\n if (foundIndex === -1) {\n existingSeason.episodes.push(episode);\n } else {\n existingSeason.episodes.splice(foundIndex, 1, episode);\n }\n } else {\n const newSeason = {\n season: episode.season,\n episodes: [],\n html: false,\n mode: 'span',\n label: 1\n };\n newShow.seasons.push(newSeason);\n newSeason.episodes.push(episode);\n }\n });\n\n // Update state\n const existingShow = state.shows.find(({ id, indexer }) => Number(show.id[show.indexer]) === Number(id[indexer]));\n Vue.set(state.shows, state.shows.indexOf(existingShow), newShow);\n console.log(`Storing episodes for show ${newShow.title} seasons: ${[...new Set(episodes.map(episode => episode.season))].join(', ')}`);\n }\n\n};\n\nconst getters = {\n getShowById: state => {\n /**\n * Get a show from the loaded shows state, identified by show ID and indexer name.\n *\n * @param {ShowIdentifier} show Show identifiers.\n * @returns {object|undefined} Show object or undefined if not found.\n */\n const getShowById = ({ id, indexer }) => state.shows.find(show => Number(show.id[indexer]) === Number(id));\n return getShowById;\n },\n getShowByTitle: state => title => state.shows.find(show => show.title === title),\n getSeason: state => ({ id, indexer, season }) => {\n const show = state.shows.find(show => Number(show.id[indexer]) === Number(id));\n return show && show.seasons ? show.seasons[season] : undefined;\n },\n getEpisode: state => ({ id, indexer, season, episode }) => {\n const show = state.shows.find(show => Number(show.id[indexer]) === Number(id));\n return show && show.seasons && show.seasons[season] ? show.seasons[season][episode] : undefined;\n },\n getCurrentShow: (state, getters, rootState) => {\n return state.shows.find(show => Number(show.id[state.currentShow.indexer]) === Number(state.currentShow.id)) || rootState.defaults.show;\n }\n};\n\n/**\n * An object representing request parameters for getting a show from the API.\n *\n * @typedef {object} ShowGetParameters\n * @property {boolean} detailed Fetch detailed information? (e.g. scene/xem numbering)\n * @property {boolean} episodes Fetch seasons & episodes?\n */\n\nconst actions = {\n /**\n * Get show from API and commit it to the store.\n *\n * @param {*} context The store context.\n * @param {ShowIdentifier&ShowGetParameters} parameters Request parameters.\n * @returns {Promise} The API response.\n */\n getShow(context, { indexer, id, detailed, episodes }) {\n return new Promise((resolve, reject) => {\n const { commit } = context;\n const params = {};\n let timeout = 30000;\n\n if (detailed !== undefined) {\n params.detailed = detailed;\n timeout = 60000;\n timeout = 60000;\n }\n\n if (episodes !== undefined) {\n params.episodes = episodes;\n timeout = 60000;\n }\n\n api.get(`/series/${indexer}${id}`, { params, timeout })\n .then(res => {\n commit(ADD_SHOW, res.data);\n resolve(res.data);\n })\n .catch(error => {\n reject(error);\n });\n });\n },\n /**\n * Get episdoes for a specified show from API and commit it to the store.\n *\n * @param {*} context - The store context.\n * @param {ShowParameteres} parameters - Request parameters.\n * @returns {Promise} The API response.\n */\n getEpisodes({ commit, getters }, { indexer, id, season }) {\n return new Promise((resolve, reject) => {\n const { getShowById } = getters;\n const show = getShowById({ id, indexer });\n\n const limit = 1000;\n const params = {\n limit\n };\n\n if (season) {\n params.season = season;\n }\n\n // Get episodes\n api.get(`/series/${indexer}${id}/episodes`, { params })\n .then(response => {\n commit(ADD_SHOW_EPISODE, { show, episodes: response.data });\n resolve();\n })\n .catch(error => {\n console.log(`Could not retrieve a episodes for show ${indexer}${id}, error: ${error}`);\n reject(error);\n });\n });\n },\n /**\n * Get shows from API and commit them to the store.\n *\n * @param {*} context - The store context.\n * @param {(ShowIdentifier&ShowGetParameters)[]} shows Shows to get. If not provided, gets the first 1k shows.\n * @returns {undefined|Promise} undefined if `shows` was provided or the API response if not.\n */\n getShows(context, shows) {\n const { commit, dispatch } = context;\n\n // If no shows are provided get the first 1000\n if (!shows) {\n return (() => {\n const limit = 1000;\n const page = 1;\n const params = {\n limit,\n page\n };\n\n // Get first page\n api.get('/series', { params })\n .then(response => {\n const totalPages = Number(response.headers['x-pagination-total']);\n response.data.forEach(show => {\n commit(ADD_SHOW, show);\n });\n\n // Optionally get additional pages\n const pageRequests = [];\n for (let page = 2; page <= totalPages; page++) {\n const newPage = { page };\n newPage.limit = params.limit;\n pageRequests.push(api.get('/series', { params: newPage }).then(response => {\n response.data.forEach(show => {\n commit(ADD_SHOW, show);\n });\n }));\n }\n\n return Promise.all(pageRequests);\n })\n .catch(() => {\n console.log('Could not retrieve a list of shows');\n });\n })();\n }\n\n return shows.forEach(show => dispatch('getShow', show));\n },\n setShow(context, { indexer, id, data }) {\n // Update show, updated show will arrive over a WebSocket message\n return api.patch(`series/${indexer}${id}`, data);\n },\n updateShow(context, show) {\n // Update local store\n const { commit } = context;\n return commit(ADD_SHOW, show);\n }\n};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","import {\n SOCKET_ONOPEN,\n SOCKET_ONCLOSE,\n SOCKET_ONERROR,\n SOCKET_ONMESSAGE,\n SOCKET_RECONNECT,\n SOCKET_RECONNECT_ERROR\n} from '../mutation-types';\n\nconst state = {\n isConnected: false,\n // Current message\n message: {},\n // Delivered messages for this session\n messages: [],\n reconnectError: false\n};\n\nconst mutations = {\n [SOCKET_ONOPEN](state) {\n state.isConnected = true;\n },\n [SOCKET_ONCLOSE](state) {\n state.isConnected = false;\n },\n [SOCKET_ONERROR](state, event) {\n console.error(state, event);\n },\n // Default handler called for all websocket methods\n [SOCKET_ONMESSAGE](state, message) {\n const { data, event } = message;\n\n // Set the current message\n state.message = message;\n\n if (event === 'notification') {\n // Save it so we can look it up later\n const existingMessage = state.messages.filter(message => message.hash === data.hash);\n if (existingMessage.length === 1) {\n state.messages[state.messages.indexOf(existingMessage)] = message;\n } else {\n state.messages.push(message);\n }\n }\n },\n // Mutations for websocket reconnect methods\n [SOCKET_RECONNECT](state, count) {\n console.info(state, count);\n },\n [SOCKET_RECONNECT_ERROR](state) {\n state.reconnectError = true;\n\n const title = 'Error connecting to websocket';\n let error = '';\n error += 'Please check your network connection. ';\n error += 'If you are using a reverse proxy, please take a look at our wiki for config examples.';\n\n window.displayNotification('notice', title, error);\n }\n};\n\nconst getters = {};\n\nconst actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","import { api } from '../../api';\nimport { ADD_STATS } from '../mutation-types';\n\nconst state = {\n overall: {\n episodes: {\n downloaded: null,\n snatched: null,\n total: null\n },\n shows: {\n active: null,\n total: null\n }\n }\n};\n\nconst mutations = {\n [ADD_STATS](state, payload) {\n const { type, stats } = payload;\n state[type] = Object.assign(state[type], stats);\n }\n};\n\nconst getters = {};\n\nconst actions = {\n getStats(context, type) {\n const { commit } = context;\n return api.get('/stats/' + (type || '')).then(res => {\n commit(ADD_STATS, {\n type: (type || 'overall'),\n stats: res.data\n });\n });\n }\n};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","import { ADD_CONFIG } from '../mutation-types';\n\n/**\n * An object representing a scheduler.\n *\n * If a scheduler isn't initialized on the backend,\n * this object will only have the `key` and `name` properties.\n * @typedef {object} Scheduler\n * @property {string} key\n * A camelCase key representing this scheduler.\n * @property {string} name\n * The scheduler's name.\n * @property {boolean} [isAlive]\n * Is the scheduler alive?\n * @property {boolean|string} [isEnabled]\n * Is the scheduler enabled? For the `backlog` scheduler, the value might be `Paused`.\n * @property {boolean} [isActive]\n * Is the scheduler's action currently running?\n * @property {string|null} [startTime]\n * The time of day in which this scheduler runs (format: ISO-8601 time), or `null` if not applicable.\n * @property {number} [cycleTime]\n * The duration in milliseconds between each run, or `null` if not applicable.\n * @property {number} [nextRun]\n * The duration in milliseconds until the next run.\n * @property {string} [lastRun]\n * The date and time of the previous run (format: ISO-8601 date-time).\n * @property {boolean} [isSilent]\n * Is the scheduler silent?\n */\n\nconst state = {\n branch: null,\n memoryUsage: null,\n schedulers: [],\n showQueue: [],\n sslVersion: null,\n pythonVersion: null,\n pid: null,\n os: null,\n logDir: null,\n dbPath: null,\n configFile: null,\n databaseVersion: {\n major: null,\n minor: null\n },\n locale: null,\n localUser: null,\n programDir: null,\n dataDir: null,\n cacheDir: null,\n appArgs: [],\n webRoot: null,\n runsInDocker: null,\n gitRemoteBranches: [],\n cpuPresets: null,\n news: {\n lastRead: null,\n latest: null,\n unread: null\n }\n};\n\nconst mutations = {\n [ADD_CONFIG](state, { section, config }) {\n if (section === 'system') {\n state = Object.assign(state, config);\n }\n }\n};\n\nconst getters = {\n getScheduler: state => {\n /**\n * Get a scheduler object using a key.\n *\n * @param {string} key The combined quality to split.\n * @returns {Scheduler|object} The scheduler object or an empty object if not found.\n */\n const _getScheduler = key => state.schedulers.find(scheduler => key === scheduler.key) || {};\n return _getScheduler;\n }\n};\n\nconst actions = {};\n\nexport default {\n state,\n mutations,\n getters,\n actions\n};\n","import Vue from 'vue';\nimport Vuex, { Store } from 'vuex';\nimport VueNativeSock from 'vue-native-websocket';\nimport {\n auth,\n clients,\n config,\n consts,\n defaults,\n indexers,\n layout,\n metadata,\n notifications,\n notifiers,\n postprocessing,\n search,\n shows,\n socket,\n stats,\n system\n} from './modules';\nimport {\n SOCKET_ONOPEN,\n SOCKET_ONCLOSE,\n SOCKET_ONERROR,\n SOCKET_ONMESSAGE,\n SOCKET_RECONNECT,\n SOCKET_RECONNECT_ERROR\n} from './mutation-types';\n\nVue.use(Vuex);\n\nconst store = new Store({\n modules: {\n auth,\n clients,\n config,\n consts,\n defaults,\n indexers,\n layout,\n metadata,\n notifications,\n notifiers,\n postprocessing,\n search,\n shows,\n socket,\n stats,\n system\n },\n state: {},\n mutations: {},\n getters: {},\n actions: {}\n});\n\n// Keep as a non-arrow function for `this` context.\nconst passToStoreHandler = function(eventName, event, next) {\n const target = eventName.toUpperCase();\n const eventData = event.data;\n\n if (target === 'SOCKET_ONMESSAGE') {\n const message = JSON.parse(eventData);\n const { data, event } = message;\n\n // Show the notification to the user\n if (event === 'notification') {\n const { body, hash, type, title } = data;\n window.displayNotification(type, title, body, hash);\n } else if (event === 'configUpdated') {\n const { section, config } = data;\n this.store.dispatch('updateConfig', { section, config });\n } else if (event === 'showUpdated') {\n this.store.dispatch('updateShow', data);\n } else {\n window.displayNotification('info', event, data);\n }\n }\n\n // Resume normal 'passToStore' handling\n next(eventName, event);\n};\n\nconst websocketUrl = (() => {\n const { protocol, host } = window.location;\n const proto = protocol === 'https:' ? 'wss:' : 'ws:';\n const WSMessageUrl = '/ui';\n const webRoot = document.body.getAttribute('web-root');\n return `${proto}//${host}${webRoot}/ws${WSMessageUrl}`;\n})();\n\nVue.use(VueNativeSock, websocketUrl, {\n store,\n format: 'json',\n reconnection: true, // (Boolean) whether to reconnect automatically (false)\n reconnectionAttempts: 2, // (Number) number of reconnection attempts before giving up (Infinity),\n reconnectionDelay: 1000, // (Number) how long to initially wait before attempting a new (1000)\n passToStoreHandler, // (Function|) Handler for events triggered by the WebSocket (false)\n mutations: {\n SOCKET_ONOPEN,\n SOCKET_ONCLOSE,\n SOCKET_ONERROR,\n SOCKET_ONMESSAGE,\n SOCKET_RECONNECT,\n SOCKET_RECONNECT_ERROR\n }\n});\n\nexport default store;\n","/** @type {import('.').SubMenu} */\nexport const configSubMenu = [\n { title: 'General', path: 'config/general/', icon: 'menu-icon-config' },\n { title: 'Backup/Restore', path: 'config/backuprestore/', icon: 'menu-icon-backup' },\n { title: 'Search Settings', path: 'config/search/', icon: 'menu-icon-manage-searches' },\n { title: 'Search Providers', path: 'config/providers/', icon: 'menu-icon-provider' },\n { title: 'Subtitles Settings', path: 'config/subtitles/', icon: 'menu-icon-backlog' },\n { title: 'Post Processing', path: 'config/postProcessing/', icon: 'menu-icon-postprocess' },\n { title: 'Notifications', path: 'config/notifications/', icon: 'menu-icon-notification' },\n { title: 'Anime', path: 'config/anime/', icon: 'menu-icon-anime' }\n];\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {import('.').SubMenuFunction} */\nexport const errorlogsSubMenu = vm => {\n const { $route, $store } = vm;\n const level = $route.params.level || $route.query.level;\n const { config } = $store.state;\n const { loggingLevels, numErrors, numWarnings } = config.logs;\n if (Object.keys(loggingLevels).length === 0) {\n return [];\n }\n\n const isLevelError = (level === undefined || Number(level) === loggingLevels.error);\n\n return [\n {\n title: 'Clear Errors',\n path: 'errorlogs/clearerrors/',\n requires: numErrors >= 1 && isLevelError,\n icon: 'ui-icon ui-icon-trash'\n },\n {\n title: 'Clear Warnings',\n path: `errorlogs/clearerrors/?level=${loggingLevels.warning}`,\n requires: numWarnings >= 1 && Number(level) === loggingLevels.warning,\n icon: 'ui-icon ui-icon-trash'\n },\n {\n title: 'Submit Errors',\n path: 'errorlogs/submit_errors/',\n requires: numErrors >= 1 && isLevelError,\n confirm: 'submiterrors',\n icon: 'ui-icon ui-icon-arrowreturnthick-1-n'\n }\n ];\n};\n\n/** @type {import('.').SubMenu} */\nexport const historySubMenu = [\n { title: 'Clear History', path: 'history/clearHistory', icon: 'ui-icon ui-icon-trash', confirm: 'clearhistory' },\n { title: 'Trim History', path: 'history/trimHistory', icon: 'menu-icon-cut', confirm: 'trimhistory' }\n];\n\n// eslint-disable-next-line valid-jsdoc\n/** @type {import('.').SubMenuFunction} */\nexport const showSubMenu = vm => {\n const { $route, $store } = vm;\n const { config, notifiers } = $store.state;\n\n const indexerName = $route.params.indexer || $route.query.indexername;\n const showId = $route.params.id || $route.query.seriesid;\n\n const show = $store.getters.getCurrentShow;\n const { showQueueStatus } = show;\n\n const queuedActionStatus = action => {\n if (!showQueueStatus) {\n return false;\n }\n return Boolean(showQueueStatus.find(status => status.action === action && status.active === true));\n };\n\n const isBeingAdded = queuedActionStatus('isBeingAdded');\n const isBeingUpdated = queuedActionStatus('isBeingUpdated');\n const isBeingSubtitled = queuedActionStatus('isBeingSubtitled');\n\n /** @type {import('.').SubMenu} */\n let menu = [{\n title: 'Edit',\n path: `home/editShow?indexername=${indexerName}&seriesid=${showId}`,\n icon: 'ui-icon ui-icon-pencil'\n }];\n if (!isBeingAdded && !isBeingUpdated) {\n menu = menu.concat([\n {\n title: show.config.paused ? 'Resume' : 'Pause',\n path: `home/togglePause?indexername=${indexerName}&seriesid=${showId}`,\n icon: `ui-icon ui-icon-${show.config.paused ? 'play' : 'pause'}`\n },\n {\n title: 'Remove',\n path: `home/deleteShow?indexername=${indexerName}&seriesid=${showId}`,\n confirm: 'removeshow',\n icon: 'ui-icon ui-icon-trash'\n },\n {\n title: 'Re-scan files',\n path: `home/refreshShow?indexername=${indexerName}&seriesid=${showId}`,\n icon: 'ui-icon ui-icon-refresh'\n },\n {\n title: 'Force Full Update',\n path: `home/updateShow?indexername=${indexerName}&seriesid=${showId}`,\n icon: 'ui-icon ui-icon-transfer-e-w'\n },\n {\n title: 'Update show in KODI',\n path: `home/updateKODI?indexername=${indexerName}&seriesid=${showId}`,\n requires: notifiers.kodi.enabled && notifiers.kodi.update.library,\n icon: 'menu-icon-kodi'\n },\n {\n title: 'Update show in Emby',\n path: `home/updateEMBY?indexername=${indexerName}&seriesid=${showId}`,\n requires: notifiers.emby.enabled,\n icon: 'menu-icon-emby'\n },\n {\n title: 'Preview Rename',\n path: `home/testRename?indexername=${indexerName}&seriesid=${showId}`,\n icon: 'ui-icon ui-icon-tag'\n },\n {\n title: 'Download Subtitles',\n path: `home/subtitleShow?indexername=${indexerName}&seriesid=${showId}`,\n requires: config.subtitles.enabled && !isBeingSubtitled && show.config.subtitlesEnabled,\n icon: 'menu-icon-backlog'\n }\n ]);\n }\n return menu;\n};\n","import {\n configSubMenu,\n errorlogsSubMenu,\n historySubMenu,\n showSubMenu\n} from './sub-menus';\n\n/** @type {import('.').Route[]} */\nconst homeRoutes = [\n {\n path: '/home',\n name: 'home',\n meta: {\n title: 'Home',\n header: 'Show List',\n topMenu: 'home'\n }\n },\n {\n path: '/home/editShow',\n name: 'editShow',\n meta: {\n topMenu: 'home',\n subMenu: showSubMenu\n },\n component: () => import('../components/edit-show.vue')\n },\n {\n path: '/home/displayShow',\n name: 'show',\n meta: {\n topMenu: 'home',\n subMenu: showSubMenu\n },\n component: () => import('../components/display-show.vue')\n },\n {\n path: '/home/snatchSelection',\n name: 'snatchSelection',\n meta: {\n topMenu: 'home',\n subMenu: showSubMenu\n }\n },\n {\n path: '/home/testRename',\n name: 'testRename',\n meta: {\n title: 'Preview Rename',\n header: 'Preview Rename',\n topMenu: 'home'\n }\n },\n {\n path: '/home/postprocess',\n name: 'postprocess',\n meta: {\n title: 'Manual Post-Processing',\n header: 'Manual Post-Processing',\n topMenu: 'home'\n }\n },\n {\n path: '/home/status',\n name: 'status',\n meta: {\n title: 'Status',\n topMenu: 'system'\n }\n },\n {\n path: '/home/restart',\n name: 'restart',\n meta: {\n title: 'Restarting...',\n header: 'Performing Restart',\n topMenu: 'system'\n }\n },\n {\n path: '/home/shutdown',\n name: 'shutdown',\n meta: {\n header: 'Shutting down',\n topMenu: 'system'\n }\n },\n {\n path: '/home/update',\n name: 'update',\n meta: {\n topMenu: 'system'\n }\n }\n];\n\n/** @type {import('.').Route[]} */\nconst configRoutes = [\n {\n path: '/config',\n name: 'config',\n meta: {\n title: 'Help & Info',\n header: 'Medusa Configuration',\n topMenu: 'config',\n subMenu: configSubMenu,\n converted: true\n },\n component: () => import('../components/config.vue')\n },\n {\n path: '/config/anime',\n name: 'configAnime',\n meta: {\n title: 'Config - Anime',\n header: 'Anime',\n topMenu: 'config',\n subMenu: configSubMenu\n }\n },\n {\n path: '/config/backuprestore',\n name: 'configBackupRestore',\n meta: {\n title: 'Config - Backup/Restore',\n header: 'Backup/Restore',\n topMenu: 'config',\n subMenu: configSubMenu\n }\n },\n {\n path: '/config/general',\n name: 'configGeneral',\n meta: {\n title: 'Config - General',\n header: 'General Configuration',\n topMenu: 'config',\n subMenu: configSubMenu,\n converted: true\n },\n component: () => import('../components/config-general.vue')\n },\n {\n path: '/config/notifications',\n name: 'configNotifications',\n meta: {\n title: 'Config - Notifications',\n header: 'Notifications',\n topMenu: 'config',\n subMenu: configSubMenu,\n converted: true\n },\n component: () => import('../components/config-notifications.vue')\n },\n {\n path: '/config/postProcessing',\n name: 'configPostProcessing',\n meta: {\n title: 'Config - Post Processing',\n header: 'Post Processing',\n topMenu: 'config',\n subMenu: configSubMenu,\n converted: true\n },\n component: () => import('../components/config-post-processing.vue')\n },\n {\n path: '/config/providers',\n name: 'configSearchProviders',\n meta: {\n title: 'Config - Providers',\n header: 'Search Providers',\n topMenu: 'config',\n subMenu: configSubMenu\n }\n },\n {\n path: '/config/search',\n name: 'configSearchSettings',\n meta: {\n title: 'Config - Episode Search',\n header: 'Search Settings',\n topMenu: 'config',\n subMenu: configSubMenu,\n converted: true\n },\n component: () => import('../components/config-search.vue')\n },\n {\n path: '/config/subtitles',\n name: 'configSubtitles',\n meta: {\n title: 'Config - Subtitles',\n header: 'Subtitles',\n topMenu: 'config',\n subMenu: configSubMenu\n }\n }\n];\n\n/** @type {import('.').Route[]} */\nconst addShowRoutes = [\n {\n path: '/addShows',\n name: 'addShows',\n meta: {\n title: 'Add Shows',\n header: 'Add Shows',\n topMenu: 'home',\n converted: true\n },\n component: () => import('../components/add-shows.vue')\n },\n {\n path: '/addShows/addExistingShows',\n name: 'addExistingShows',\n meta: {\n title: 'Add Existing Shows',\n header: 'Add Existing Shows',\n topMenu: 'home'\n }\n },\n {\n path: '/addShows/newShow',\n name: 'addNewShow',\n meta: {\n title: 'Add New Show',\n header: 'Add New Show',\n topMenu: 'home'\n }\n },\n {\n path: '/addShows/trendingShows',\n name: 'addTrendingShows',\n meta: {\n topMenu: 'home'\n }\n },\n {\n path: '/addShows/popularShows',\n name: 'addPopularShows',\n meta: {\n title: 'Popular Shows',\n header: 'Popular Shows',\n topMenu: 'home'\n }\n },\n {\n path: '/addShows/popularAnime',\n name: 'addPopularAnime',\n meta: {\n title: 'Popular Anime Shows',\n header: 'Popular Anime Shows',\n topMenu: 'home'\n }\n }\n];\n\n/** @type {import('.').Route} */\nconst loginRoute = {\n path: '/login',\n name: 'login',\n meta: {\n title: 'Login'\n },\n component: () => import('../components/login.vue')\n};\n\n/** @type {import('.').Route} */\nconst addRecommendedRoute = {\n path: '/addRecommended',\n name: 'addRecommended',\n meta: {\n title: 'Add Recommended Shows',\n header: 'Add Recommended Shows',\n topMenu: 'home',\n converted: true\n },\n component: () => import('../components/add-recommended.vue')\n};\n\n/** @type {import('.').Route} */\nconst scheduleRoute = {\n path: '/schedule',\n name: 'schedule',\n meta: {\n title: 'Schedule',\n header: 'Schedule',\n topMenu: 'schedule'\n }\n};\n\n/** @type {import('.').Route} */\nconst historyRoute = {\n path: '/history',\n name: 'history',\n meta: {\n title: 'History',\n header: 'History',\n topMenu: 'history',\n subMenu: historySubMenu\n }\n};\n\n/** @type {import('.').Route[]} */\nconst manageRoutes = [\n {\n path: '/manage',\n name: 'manage',\n meta: {\n title: 'Mass Update',\n header: 'Mass Update',\n topMenu: 'manage'\n }\n },\n {\n path: '/manage/backlogOverview',\n name: 'manageBacklogOverview',\n meta: {\n title: 'Backlog Overview',\n header: 'Backlog Overview',\n topMenu: 'manage'\n }\n },\n {\n path: '/manage/episodeStatuses',\n name: 'manageEpisodeOverview',\n meta: {\n title: 'Episode Overview',\n header: 'Episode Overview',\n topMenu: 'manage'\n }\n },\n {\n path: '/manage/failedDownloads',\n name: 'manageFailedDownloads',\n meta: {\n title: 'Failed Downloads',\n header: 'Failed Downloads',\n topMenu: 'manage'\n }\n },\n {\n path: '/manage/manageSearches',\n name: 'manageManageSearches',\n meta: {\n title: 'Manage Searches',\n header: 'Manage Searches',\n topMenu: 'manage'\n }\n },\n {\n path: '/manage/massEdit',\n name: 'manageMassEdit',\n meta: {\n title: 'Mass Edit',\n topMenu: 'manage'\n }\n },\n {\n path: '/manage/subtitleMissed',\n name: 'manageSubtitleMissed',\n meta: {\n title: 'Missing Subtitles',\n header: 'Missing Subtitles',\n topMenu: 'manage'\n }\n },\n {\n path: '/manage/subtitleMissedPP',\n name: 'manageSubtitleMissedPP',\n meta: {\n title: 'Missing Subtitles in Post-Process folder',\n header: 'Missing Subtitles in Post-Process folder',\n topMenu: 'manage'\n }\n }\n];\n\n/** @type {import('.').Route[]} */\nconst errorLogsRoutes = [\n {\n path: '/errorlogs',\n name: 'errorlogs',\n meta: {\n title: 'Logs & Errors',\n topMenu: 'system',\n subMenu: errorlogsSubMenu\n }\n },\n {\n path: '/errorlogs/viewlog',\n name: 'viewlog',\n meta: {\n title: 'Logs',\n header: 'Log File',\n topMenu: 'system',\n converted: true\n },\n component: () => import('../components/logs.vue')\n }\n];\n\n/** @type {import('.').Route} */\nconst newsRoute = {\n path: '/news',\n name: 'news',\n meta: {\n title: 'News',\n header: 'News',\n topMenu: 'system'\n }\n};\n\n/** @type {import('.').Route} */\nconst changesRoute = {\n path: '/changes',\n name: 'changes',\n meta: {\n title: 'Changelog',\n header: 'Changelog',\n topMenu: 'system'\n }\n};\n\n/** @type {import('.').Route} */\nconst ircRoute = {\n path: '/IRC',\n name: 'IRC',\n meta: {\n title: 'IRC',\n topMenu: 'system',\n converted: true\n },\n component: () => import('../components/irc.vue')\n};\n\n/** @type {import('.').Route} */\nconst notFoundRoute = {\n path: '/not-found',\n name: 'not-found',\n meta: {\n title: '404',\n header: '404 - page not found'\n },\n component: () => import('../components/http/404.vue')\n};\n\n// @NOTE: Redirect can only be added once all routes are vue\n/*\n/** @type {import('.').Route} *-/\nconst notFoundRedirect = {\n path: '*',\n redirect: '/not-found'\n};\n*/\n\n/** @type {import('.').Route[]} */\nexport default [\n ...homeRoutes,\n ...configRoutes,\n ...addShowRoutes,\n loginRoute,\n addRecommendedRoute,\n scheduleRoute,\n historyRoute,\n ...manageRoutes,\n ...errorLogsRoutes,\n newsRoute,\n changesRoute,\n ircRoute,\n notFoundRoute\n];\n","import Vue from 'vue';\nimport VueRouter from 'vue-router';\n\nimport routes from './routes';\n\nVue.use(VueRouter);\n\nexport const base = document.body.getAttribute('web-root') + '/';\n\nconst router = new VueRouter({\n base,\n mode: 'history',\n routes\n});\n\nrouter.beforeEach((to, from, next) => {\n const { meta } = to;\n const { title } = meta;\n\n // If there's no title then it's not a .vue route\n // or it's handling its own title\n if (title) {\n document.title = `${title} | Medusa`;\n }\n\n // Always call next otherwise the will be empty\n next();\n});\n\nexport default router;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"anidb-release-group-ui-wrapper top-10 max-width\"},[(_vm.fetchingGroups)?[_c('state-switch',{attrs:{\"state\":\"loading\",\"theme\":_vm.layout.themeName}}),_vm._v(\" \"),_c('span',[_vm._v(\"Fetching release groups...\")])]:_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"col-sm-4 left-whitelist\"},[_c('span',[_vm._v(\"Whitelist\")]),(_vm.showDeleteFromWhitelist)?_c('img',{staticClass:\"deleteFromWhitelist\",attrs:{\"src\":\"images/no16.png\"},on:{\"click\":function($event){return _vm.deleteFromList('whitelist')}}}):_vm._e(),_vm._v(\" \"),_c('ul',[_vm._l((_vm.itemsWhitelist),function(release){return _c('li',{key:release.id,class:{active: release.toggled},on:{\"click\":function($event){release.toggled = !release.toggled}}},[_vm._v(_vm._s(release.name))])}),_vm._v(\" \"),_c('div',{staticClass:\"arrow\",on:{\"click\":function($event){return _vm.moveToList('whitelist')}}},[_c('img',{attrs:{\"src\":\"images/curved-arrow-left.png\"}})])],2)]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-4 center-available\"},[_c('span',[_vm._v(\"Release groups\")]),_vm._v(\" \"),_c('ul',[_vm._l((_vm.itemsReleaseGroups),function(release){return _c('li',{key:release.id,staticClass:\"initial\",class:{active: release.toggled},on:{\"click\":function($event){release.toggled = !release.toggled}}},[_vm._v(_vm._s(release.name))])}),_vm._v(\" \"),_c('div',{staticClass:\"arrow\",on:{\"click\":function($event){return _vm.moveToList('releasegroups')}}},[_c('img',{attrs:{\"src\":\"images/curved-arrow-left.png\"}})])],2)]),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-4 right-blacklist\"},[_c('span',[_vm._v(\"Blacklist\")]),(_vm.showDeleteFromBlacklist)?_c('img',{staticClass:\"deleteFromBlacklist\",attrs:{\"src\":\"images/no16.png\"},on:{\"click\":function($event){return _vm.deleteFromList('blacklist')}}}):_vm._e(),_vm._v(\" \"),_c('ul',[_vm._l((_vm.itemsBlacklist),function(release){return _c('li',{key:release.id,class:{active: release.toggled},on:{\"click\":function($event){release.toggled = !release.toggled}}},[_vm._v(_vm._s(release.name))])}),_vm._v(\" \"),_c('div',{staticClass:\"arrow\",on:{\"click\":function($event){return _vm.moveToList('blacklist')}}},[_c('img',{attrs:{\"src\":\"images/curved-arrow-left.png\"}})])],2)])]),_vm._v(\" \"),_c('div',{staticClass:\"row\",attrs:{\"id\":\"add-new-release-group\"}},[_c('div',{staticClass:\"col-md-4\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.newGroup),expression:\"newGroup\"}],staticClass:\"form-control input-sm\",attrs:{\"type\":\"text\",\"placeholder\":\"add custom group\"},domProps:{\"value\":(_vm.newGroup)},on:{\"input\":function($event){if($event.target.composing){ return; }_vm.newGroup=$event.target.value}}})]),_vm._v(\" \"),_vm._m(0)])],2)}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"col-md-8\"},[_c('p',[_vm._v(\"Use the input to add custom whitelist / blacklist release groups. Click on the \"),_c('img',{attrs:{\"src\":\"images/curved-arrow-left.png\"}}),_vm._v(\" to add it to the correct list.\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./anidb-release-group-ui.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./anidb-release-group-ui.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./anidb-release-group-ui.vue?vue&type=template&id=b388ff58&scoped=true&\"\nimport script from \"./anidb-release-group-ui.vue?vue&type=script&lang=js&\"\nexport * from \"./anidb-release-group-ui.vue?vue&type=script&lang=js&\"\nimport style0 from \"./anidb-release-group-ui.vue?vue&type=style&index=0&id=b388ff58&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b388ff58\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"show-header-container\"},[_c('div',{staticClass:\"row\"},[(_vm.show)?_c('div',{staticClass:\"col-lg-12\",attrs:{\"id\":\"showtitle\",\"data-showname\":_vm.show.title}},[_c('div',[_c('h1',{staticClass:\"title\",attrs:{\"data-indexer-name\":_vm.show.indexer,\"data-series-id\":_vm.show.id[_vm.show.indexer],\"id\":'scene_exception_' + _vm.show.id[_vm.show.indexer]}},[_c('app-link',{staticClass:\"snatchTitle\",attrs:{\"href\":(\"home/displayShow?indexername=\" + (_vm.show.indexer) + \"&seriesid=\" + (_vm.show.id[_vm.show.indexer]))}},[_vm._v(_vm._s(_vm.show.title))])],1)]),_vm._v(\" \"),(_vm.type === 'snatch-selection')?_c('div',{staticClass:\"pull-right\",attrs:{\"id\":\"show-specials-and-seasons\"}},[_c('span',{staticClass:\"h2footer display-specials\"},[_vm._v(\"\\n Manual search for:\"),_c('br'),_vm._v(\" \"),_c('app-link',{staticClass:\"snatchTitle\",attrs:{\"href\":(\"home/displayShow?indexername=\" + (_vm.show.indexer) + \"&seriesid=\" + (_vm.show.id[_vm.show.indexer]))}},[_vm._v(_vm._s(_vm.show.title))]),_vm._v(\" / Season \"+_vm._s(_vm.season)),(_vm.episode !== undefined && _vm.manualSearchType !== 'season')?[_vm._v(\" Episode \"+_vm._s(_vm.episode))]:_vm._e()],2)]):_vm._e(),_vm._v(\" \"),(_vm.type !== 'snatch-selection' && _vm.seasons.length >= 1)?_c('div',{staticClass:\"pull-right\",attrs:{\"id\":\"show-specials-and-seasons\"}},[(_vm.seasons.includes(0))?_c('span',{staticClass:\"h2footer display-specials\"},[_vm._v(\"\\n Display Specials: \"),_c('a',{staticClass:\"inner\",staticStyle:{\"cursor\":\"pointer\"},on:{\"click\":function($event){$event.preventDefault();return _vm.toggleSpecials()}}},[_vm._v(_vm._s(_vm.displaySpecials ? 'Hide' : 'Show'))])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"h2footer display-seasons clear\"},[_c('span',[(_vm.seasons.length >= 15)?_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.jumpToSeason),expression:\"jumpToSeason\"}],staticClass:\"form-control input-sm\",staticStyle:{\"position\":\"relative\"},attrs:{\"id\":\"seasonJump\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.jumpToSeason=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{attrs:{\"value\":\"jump\"}},[_vm._v(\"Jump to Season\")]),_vm._v(\" \"),_vm._l((_vm.seasons),function(seasonNumber){return _c('option',{key:(\"jumpToSeason-\" + seasonNumber),domProps:{\"value\":seasonNumber}},[_vm._v(\"\\n \"+_vm._s(seasonNumber === 0 ? 'Specials' : (\"Season \" + seasonNumber))+\"\\n \")])})],2):(_vm.seasons.length >= 1)?[_vm._v(\"\\n Season:\\n \"),_vm._l((_vm.reverse(_vm.seasons)),function(seasonNumber,index){return [_c('app-link',{key:(\"jumpToSeason-\" + seasonNumber),attrs:{\"href\":(\"#season-\" + seasonNumber)},nativeOn:{\"click\":function($event){$event.preventDefault();_vm.jumpToSeason = seasonNumber}}},[_vm._v(\"\\n \"+_vm._s(seasonNumber === 0 ? 'Specials' : seasonNumber)+\"\\n \")]),_vm._v(\" \"),(index !== (_vm.seasons.length - 1))?_c('span',{key:(\"separator-\" + index),staticClass:\"separator\"},[_vm._v(\"| \")]):_vm._e()]})]:_vm._e()],2)])]):_vm._e()]):_vm._e()]),_vm._v(\" \"),_vm._l((_vm.activeShowQueueStatuses),function(queueItem){return _c('div',{key:queueItem.action,staticClass:\"row\"},[_c('div',{staticClass:\"alert alert-info\"},[_vm._v(\"\\n \"+_vm._s(queueItem.message)+\"\\n \")])])}),_vm._v(\" \"),_c('div',{staticClass:\"row\",attrs:{\"id\":\"row-show-summary\"}},[_c('div',{staticClass:\"col-md-12\",attrs:{\"id\":\"col-show-summary\"}},[_c('div',{staticClass:\"show-poster-container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"image-flex-container col-md-12\"},[_c('asset',{attrs:{\"default\":\"images/poster.png\",\"show-slug\":_vm.show.id.slug,\"type\":\"posterThumb\",\"cls\":\"show-image shadow\",\"link\":true}})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"ver-spacer\"}),_vm._v(\" \"),_c('div',{staticClass:\"show-info-container\"},[_c('div',{staticClass:\"row\"},[_c('div',{staticClass:\"pull-right col-lg-3 col-md-3 hidden-sm hidden-xs\"},[_c('asset',{attrs:{\"default\":\"images/banner.png\",\"show-slug\":_vm.show.id.slug,\"type\":\"banner\",\"cls\":\"show-banner pull-right shadow\",\"link\":true}})],1),_vm._v(\" \"),_c('div',{staticClass:\"pull-left col-lg-9 col-md-9 col-sm-12 col-xs-12\",attrs:{\"id\":\"show-rating\"}},[(_vm.show.rating.imdb && _vm.show.rating.imdb.rating)?_c('span',{staticClass:\"imdbstars\",attrs:{\"qtip-content\":((_vm.show.rating.imdb.rating) + \" / 10 Stars
    \" + (_vm.show.rating.imdb.votes) + \" Votes\")}},[_c('span',{style:({ width: (Number(_vm.show.rating.imdb.rating) * 10) + '%' })})]):_vm._e(),_vm._v(\" \"),(!_vm.show.id.imdb)?[(_vm.show.year.start)?_c('span',[_vm._v(\"(\"+_vm._s(_vm.show.year.start)+\") - \"+_vm._s(_vm.show.runtime)+\" minutes - \")]):_vm._e()]:[_vm._l((_vm.show.countryCodes),function(country){return _c('img',{key:'flag-' + country,class:['country-flag', 'flag-' + country],staticStyle:{\"margin-left\":\"3px\",\"vertical-align\":\"middle\"},attrs:{\"src\":\"images/blank.png\",\"width\":\"16\",\"height\":\"11\"}})}),_vm._v(\" \"),(_vm.show.imdbInfo.year)?_c('span',[_vm._v(\"\\n (\"+_vm._s(_vm.show.imdbInfo.year)+\") -\\n \")]):_vm._e(),_vm._v(\" \"),_c('span',[_vm._v(\"\\n \"+_vm._s(_vm.show.imdbInfo.runtimes || _vm.show.runtime)+\" minutes\\n \")]),_vm._v(\" \"),_c('app-link',{attrs:{\"href\":(\"https://www.imdb.com/title/\" + (_vm.show.id.imdb)),\"title\":'https://www.imdb.com/title/' + _vm.show.id.imdb}},[_c('img',{staticStyle:{\"margin-top\":\"-1px\",\"vertical-align\":\"middle\"},attrs:{\"alt\":\"[imdb]\",\"height\":\"16\",\"width\":\"16\",\"src\":\"images/imdb.png\"}})])],_vm._v(\" \"),(_vm.show.id.trakt)?_c('app-link',{attrs:{\"href\":(\"https://trakt.tv/shows/\" + (_vm.show.id.trakt)),\"title\":(\"https://trakt.tv/shows/\" + (_vm.show.id.trakt))}},[_c('img',{attrs:{\"alt\":\"[trakt]\",\"height\":\"16\",\"width\":\"16\",\"src\":\"images/trakt.png\"}})]):_vm._e(),_vm._v(\" \"),(_vm.showIndexerUrl && _vm.indexerConfig[_vm.show.indexer].icon)?_c('app-link',{attrs:{\"href\":_vm.showIndexerUrl,\"title\":_vm.showIndexerUrl}},[_c('img',{staticStyle:{\"margin-top\":\"-1px\",\"vertical-align\":\"middle\"},attrs:{\"alt\":_vm.indexerConfig[_vm.show.indexer].name,\"height\":\"16\",\"width\":\"16\",\"src\":(\"images/\" + (_vm.indexerConfig[_vm.show.indexer].icon))}})]):_vm._e(),_vm._v(\" \"),(_vm.show.xemNumbering && _vm.show.xemNumbering.length > 0)?_c('app-link',{attrs:{\"href\":(\"http://thexem.de/search?q=\" + (_vm.show.title)),\"title\":(\"http://thexem.de/search?q=\" + (_vm.show.title))}},[_c('img',{staticStyle:{\"margin-top\":\"-1px\",\"vertical-align\":\"middle\"},attrs:{\"alt\":\"[xem]\",\"height\":\"16\",\"width\":\"16\",\"src\":\"images/xem.png\"}})]):_vm._e(),_vm._v(\" \"),(_vm.show.id.tvdb)?_c('app-link',{attrs:{\"href\":(\"https://fanart.tv/series/\" + (_vm.show.id.tvdb)),\"title\":(\"https://fanart.tv/series/\" + (_vm.show.id[_vm.show.indexer]))}},[_c('img',{staticClass:\"fanart\",attrs:{\"alt\":\"[fanart.tv]\",\"height\":\"16\",\"width\":\"16\",\"src\":\"images/fanart.tv.png\"}})]):_vm._e()],2),_vm._v(\" \"),_c('div',{staticClass:\"pull-left col-lg-9 col-md-9 col-sm-12 col-xs-12\",attrs:{\"id\":\"tags\"}},[(_vm.show.genres)?_c('ul',{staticClass:\"tags\"},_vm._l((_vm.dedupeGenres(_vm.show.genres)),function(genre){return _c('app-link',{key:genre.toString(),attrs:{\"href\":(\"https://trakt.tv/shows/popular/?genres=\" + (genre.toLowerCase().replace(' ', '-'))),\"title\":(\"View other popular \" + genre + \" shows on trakt.tv\")}},[_c('li',[_vm._v(_vm._s(genre))])])}),1):_c('ul',{staticClass:\"tags\"},_vm._l((_vm.showGenres),function(genre){return _c('app-link',{key:genre.toString(),attrs:{\"href\":(\"https://www.imdb.com/search/title?count=100&title_type=tv_series&genres=\" + (genre.toLowerCase().replace(' ', '-'))),\"title\":(\"View other popular \" + genre + \" shows on IMDB\")}},[_c('li',[_vm._v(_vm._s(genre))])])}),1)])]),_vm._v(\" \"),_c('div',{staticClass:\"row\"},[(_vm.configLoaded)?_c('div',{staticClass:\"col-md-12\",attrs:{\"id\":\"summary\"}},[_c('div',{class:[{ summaryFanArt: _vm.layout.fanartBackground }, 'col-lg-9', 'col-md-8', 'col-sm-8', 'col-xs-12'],attrs:{\"id\":\"show-summary\"}},[_c('table',{staticClass:\"summaryTable pull-left\"},[(_vm.show.plot)?_c('tr',[_c('td',{staticStyle:{\"padding-bottom\":\"15px\"},attrs:{\"colspan\":\"2\"}},[_c('truncate',{attrs:{\"length\":250,\"clamp\":\"show more...\",\"less\":\"show less...\",\"text\":_vm.show.plot},on:{\"toggle\":function($event){return _vm.$emit('reflow')}}})],1)]):_vm._e(),_vm._v(\" \"),(_vm.getQualityPreset({ value: _vm.combinedQualities }) !== undefined)?_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Quality:\")]),_vm._v(\" \"),_c('td',[_c('quality-pill',{attrs:{\"quality\":_vm.combinedQualities}})],1)]):[(_vm.combineQualities(_vm.show.config.qualities.allowed) > 0)?_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Allowed Qualities:\")]),_vm._v(\" \"),_c('td',[_vm._l((_vm.show.config.qualities.allowed),function(curQuality,index){return [_vm._v(_vm._s(index > 0 ? ', ' : '')),_c('quality-pill',{key:(\"allowed-\" + curQuality),attrs:{\"quality\":curQuality}})]})],2)]):_vm._e(),_vm._v(\" \"),(_vm.combineQualities(_vm.show.config.qualities.preferred) > 0)?_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Preferred Qualities:\")]),_vm._v(\" \"),_c('td',[_vm._l((_vm.show.config.qualities.preferred),function(curQuality,index){return [_vm._v(_vm._s(index > 0 ? ', ' : '')),_c('quality-pill',{key:(\"preferred-\" + curQuality),attrs:{\"quality\":curQuality}})]})],2)]):_vm._e()],_vm._v(\" \"),(_vm.show.network && _vm.show.airs)?_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Originally Airs: \")]),_c('td',[_vm._v(_vm._s(_vm.show.airs)),(!_vm.show.airsFormatValid)?_c('b',{staticClass:\"invalid-value\"},[_vm._v(\" (invalid time format)\")]):_vm._e(),_vm._v(\" on \"+_vm._s(_vm.show.network))])]):(_vm.show.network)?_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Originally Airs: \")]),_c('td',[_vm._v(_vm._s(_vm.show.network))])]):(_vm.show.airs)?_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Originally Airs: \")]),_c('td',[_vm._v(_vm._s(_vm.show.airs)),(!_vm.show.airsFormatValid)?_c('b',{staticClass:\"invalid-value\"},[_vm._v(\" (invalid time format)\")]):_vm._e()])]):_vm._e(),_vm._v(\" \"),_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Show Status: \")]),_c('td',[_vm._v(_vm._s(_vm.show.status))])]),_vm._v(\" \"),_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Default EP Status: \")]),_c('td',[_vm._v(_vm._s(_vm.show.config.defaultEpisodeStatus))])]),_vm._v(\" \"),_c('tr',[_c('td',{staticClass:\"showLegend\"},[_c('span',{class:{'invalid-value': !_vm.show.config.locationValid}},[_vm._v(\"Location: \")])]),_c('td',[_c('span',{class:{'invalid-value': !_vm.show.config.locationValid}},[_vm._v(_vm._s(_vm.show.config.location))]),_vm._v(_vm._s(_vm.show.config.locationValid ? '' : ' (Missing)'))])]),_vm._v(\" \"),(_vm.show.config.aliases.length > 0)?_c('tr',[_c('td',{staticClass:\"showLegend\",staticStyle:{\"vertical-align\":\"top\"}},[_vm._v(\"Scene Name:\")]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.show.config.aliases.join(', ')))])]):_vm._e(),_vm._v(\" \"),(_vm.show.config.release.requiredWords.length + _vm.search.filters.required.length > 0)?_c('tr',[_c('td',{staticClass:\"showLegend\",staticStyle:{\"vertical-align\":\"top\"}},[_c('span',{class:{required: _vm.type === 'snatch-selection'}},[_vm._v(\"Required Words: \")])]),_vm._v(\" \"),_c('td',[(_vm.show.config.release.requiredWords.length)?_c('span',{staticClass:\"break-word\"},[_vm._v(\"\\n \"+_vm._s(_vm.show.config.release.requiredWords.join(', '))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.search.filters.required.length > 0)?_c('span',{staticClass:\"break-word global-filter\"},[_c('app-link',{attrs:{\"href\":\"config/search/#searchfilters\"}},[(_vm.show.config.release.requiredWords.length > 0)?[(_vm.show.config.release.requiredWordsExclude)?_c('span',[_vm._v(\" excluded from: \")]):_c('span',[_vm._v(\"+ \")])]:_vm._e(),_vm._v(\"\\n \"+_vm._s(_vm.search.filters.required.join(', '))+\"\\n \")],2)],1):_vm._e()])]):_vm._e(),_vm._v(\" \"),(_vm.show.config.release.ignoredWords.length + _vm.search.filters.ignored.length > 0)?_c('tr',[_c('td',{staticClass:\"showLegend\",staticStyle:{\"vertical-align\":\"top\"}},[_c('span',{class:{ignored: _vm.type === 'snatch-selection'}},[_vm._v(\"Ignored Words: \")])]),_vm._v(\" \"),_c('td',[(_vm.show.config.release.ignoredWords.length)?_c('span',{staticClass:\"break-word\"},[_vm._v(\"\\n \"+_vm._s(_vm.show.config.release.ignoredWords.join(', '))+\"\\n \")]):_vm._e(),_vm._v(\" \"),(_vm.search.filters.ignored.length > 0)?_c('span',{staticClass:\"break-word global-filter\"},[_c('app-link',{attrs:{\"href\":\"config/search/#searchfilters\"}},[(_vm.show.config.release.ignoredWords.length > 0)?[(_vm.show.config.release.ignoredWordsExclude)?_c('span',[_vm._v(\" excluded from: \")]):_c('span',[_vm._v(\"+ \")])]:_vm._e(),_vm._v(\"\\n \"+_vm._s(_vm.search.filters.ignored.join(', '))+\"\\n \")],2)],1):_vm._e()])]):_vm._e(),_vm._v(\" \"),(_vm.search.filters.preferred.length > 0)?_c('tr',[_c('td',{staticClass:\"showLegend\",staticStyle:{\"vertical-align\":\"top\"}},[_c('span',{class:{preferred: _vm.type === 'snatch-selection'}},[_vm._v(\"Preferred Words: \")])]),_vm._v(\" \"),_c('td',[_c('app-link',{attrs:{\"href\":\"config/search/#searchfilters\"}},[_c('span',{staticClass:\"break-word\"},[_vm._v(_vm._s(_vm.search.filters.preferred.join(', ')))])])],1)]):_vm._e(),_vm._v(\" \"),(_vm.search.filters.undesired.length > 0)?_c('tr',[_c('td',{staticClass:\"showLegend\",staticStyle:{\"vertical-align\":\"top\"}},[_c('span',{class:{undesired: _vm.type === 'snatch-selection'}},[_vm._v(\"Undesired Words: \")])]),_vm._v(\" \"),_c('td',[_c('app-link',{attrs:{\"href\":\"config/search/#searchfilters\"}},[_c('span',{staticClass:\"break-word\"},[_vm._v(_vm._s(_vm.search.filters.undesired.join(', ')))])])],1)]):_vm._e(),_vm._v(\" \"),(_vm.show.config.release.whitelist && _vm.show.config.release.whitelist.length > 0)?_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Wanted Groups:\")]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.show.config.release.whitelist.join(', ')))])]):_vm._e(),_vm._v(\" \"),(_vm.show.config.release.blacklist && _vm.show.config.release.blacklist.length > 0)?_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Unwanted Groups:\")]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.show.config.release.blacklist.join(', ')))])]):_vm._e(),_vm._v(\" \"),(_vm.show.config.airdateOffset !== 0)?_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Daily search offset:\")]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.show.config.airdateOffset)+\" hours\")])]):_vm._e(),_vm._v(\" \"),(_vm.show.config.locationValid && _vm.show.size > -1)?_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Size:\")]),_vm._v(\" \"),_c('td',[_vm._v(_vm._s(_vm.humanFileSize(_vm.show.size)))])]):_vm._e()],2)]),_vm._v(\" \"),_c('div',{staticClass:\"col-lg-3 col-md-4 col-sm-4 col-xs-12 pull-xs-left\",attrs:{\"id\":\"show-status\"}},[_c('table',{staticClass:\"pull-xs-left pull-md-right pull-sm-right pull-lg-right\"},[(_vm.show.language)?_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Info Language:\")]),_c('td',[_c('img',{attrs:{\"src\":'images/subtitles/flags/' + _vm.getCountryISO2ToISO3(_vm.show.language) + '.png',\"width\":\"16\",\"height\":\"11\",\"alt\":_vm.show.language,\"title\":_vm.show.language,\"onError\":\"this.onerror=null;this.src='images/flags/unknown.png';\"}})])]):_vm._e(),_vm._v(\" \"),(_vm.config.subtitles.enabled)?_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Subtitles: \")]),_c('td',[_c('state-switch',{attrs:{\"theme\":_vm.layout.themeName,\"state\":_vm.show.config.subtitlesEnabled},on:{\"click\":function($event){return _vm.toggleConfigOption('subtitlesEnabled');}}})],1)]):_vm._e(),_vm._v(\" \"),_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Season Folders: \")]),_c('td',[_c('state-switch',{attrs:{\"theme\":_vm.layout.themeName,\"state\":_vm.show.config.seasonFolders || _vm.config.namingForceFolders}})],1)]),_vm._v(\" \"),_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Paused: \")]),_c('td',[_c('state-switch',{attrs:{\"theme\":_vm.layout.themeName,\"state\":_vm.show.config.paused},on:{\"click\":function($event){return _vm.toggleConfigOption('paused')}}})],1)]),_vm._v(\" \"),_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Air-by-Date: \")]),_c('td',[_c('state-switch',{attrs:{\"theme\":_vm.layout.themeName,\"state\":_vm.show.config.airByDate},on:{\"click\":function($event){return _vm.toggleConfigOption('airByDate')}}})],1)]),_vm._v(\" \"),_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Sports: \")]),_c('td',[_c('state-switch',{attrs:{\"theme\":_vm.layout.themeName,\"state\":_vm.show.config.sports},on:{\"click\":function($event){return _vm.toggleConfigOption('sports')}}})],1)]),_vm._v(\" \"),_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Anime: \")]),_c('td',[_c('state-switch',{attrs:{\"theme\":_vm.layout.themeName,\"state\":_vm.show.config.anime},on:{\"click\":function($event){return _vm.toggleConfigOption('anime')}}})],1)]),_vm._v(\" \"),_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"DVD Order: \")]),_c('td',[_c('state-switch',{attrs:{\"theme\":_vm.layout.themeName,\"state\":_vm.show.config.dvdOrder},on:{\"click\":function($event){return _vm.toggleConfigOption('dvdOrder')}}})],1)]),_vm._v(\" \"),_c('tr',[_c('td',{staticClass:\"showLegend\"},[_vm._v(\"Scene Numbering: \")]),_c('td',[_c('state-switch',{attrs:{\"theme\":_vm.layout.themeName,\"state\":_vm.show.config.scene},on:{\"click\":function($event){return _vm.toggleConfigOption('scene')}}})],1)])])])]):_vm._e()])])])]),_vm._v(\" \"),(_vm.show)?_c('div',{staticClass:\"row\",attrs:{\"id\":\"row-show-episodes-controls\"}},[_c('div',{staticClass:\"col-md-12\",attrs:{\"id\":\"col-show-episodes-controls\"}},[(_vm.type === 'show')?_c('div',{staticClass:\"row key\"},[_c('div',{staticClass:\"col-lg-12\",attrs:{\"id\":\"checkboxControls\"}},[(_vm.show.seasons)?_c('div',{staticClass:\"pull-left top-5\",attrs:{\"id\":\"key-padding\"}},_vm._l((_vm.overviewStatus),function(status){return _c('label',{key:status.id,attrs:{\"for\":status.id}},[_c('span',{class:status.id},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(status.checked),expression:\"status.checked\"}],attrs:{\"type\":\"checkbox\",\"id\":status.id},domProps:{\"checked\":Array.isArray(status.checked)?_vm._i(status.checked,null)>-1:(status.checked)},on:{\"change\":[function($event){var $$a=status.checked,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.$set(status, \"checked\", $$a.concat([$$v])))}else{$$i>-1&&(_vm.$set(status, \"checked\", $$a.slice(0,$$i).concat($$a.slice($$i+1))))}}else{_vm.$set(status, \"checked\", $$c)}},function($event){return _vm.$emit('update-overview-status', _vm.overviewStatus)}]}}),_vm._v(\"\\n \"+_vm._s(status.name)+\": \"),_c('b',[_vm._v(_vm._s(_vm.episodeSummary[status.name]))])])])}),0):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"pull-lg-right top-5\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedStatus),expression:\"selectedStatus\"}],staticClass:\"form-control form-control-inline input-sm-custom input-sm-smallfont\",attrs:{\"id\":\"statusSelect\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selectedStatus=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{domProps:{\"value\":'Change status to:'}},[_vm._v(\"Change status to:\")]),_vm._v(\" \"),_vm._l((_vm.changeStatusOptions),function(status){return _c('option',{key:status.key,domProps:{\"value\":status.value}},[_vm._v(\"\\n \"+_vm._s(status.name)+\"\\n \")])})],2),_vm._v(\" \"),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedQuality),expression:\"selectedQuality\"}],staticClass:\"form-control form-control-inline input-sm-custom input-sm-smallfont\",attrs:{\"id\":\"qualitySelect\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selectedQuality=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},[_c('option',{domProps:{\"value\":'Change quality to:'}},[_vm._v(\"Change quality to:\")]),_vm._v(\" \"),_vm._l((_vm.qualities),function(quality){return _c('option',{key:quality.key,domProps:{\"value\":quality.value}},[_vm._v(\"\\n \"+_vm._s(quality.name)+\"\\n \")])})],2),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"id\":\"series-slug\"},domProps:{\"value\":_vm.show.id.slug}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"id\":\"series-id\"},domProps:{\"value\":_vm.show.id[_vm.show.indexer]}}),_vm._v(\" \"),_c('input',{attrs:{\"type\":\"hidden\",\"id\":\"indexer\"},domProps:{\"value\":_vm.show.indexer}}),_vm._v(\" \"),_c('input',{staticClass:\"btn-medusa\",attrs:{\"type\":\"button\",\"id\":\"changeStatus\",\"value\":\"Go\"},on:{\"click\":_vm.changeStatusClicked}})])])]):_c('div')])]):_vm._e()],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show-header.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./show-header.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./show-header.vue?vue&type=template&id=b25c9a8a&scoped=true&\"\nimport script from \"./show-header.vue?vue&type=script&lang=js&\"\nexport * from \"./show-header.vue?vue&type=script&lang=js&\"\nimport style0 from \"./show-header.vue?vue&type=style&index=0&id=b25c9a8a&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b25c9a8a\",\n null\n \n)\n\nexport default component.exports","import { api } from '../api';\n\n/**\n * Attach a jquery qtip to elements with the .imdbstars class.\n */\nexport const attachImdbTooltip = () => {\n $('.imdbstars').qtip({\n content: {\n text() {\n // Retrieve content from custom attribute of the $('.selector') elements.\n return $(this).attr('qtip-content');\n }\n },\n show: {\n solo: true\n },\n position: {\n my: 'right center',\n at: 'center left',\n adjust: {\n y: 0,\n x: -6\n }\n },\n style: {\n tip: {\n corner: true,\n method: 'polygon'\n },\n classes: 'qtip-rounded qtip-shadow ui-tooltip-sb'\n }\n });\n};\n\n/**\n * Attach a default qtip to elements with the addQTip class.\n */\nexport const addQTip = () => {\n $('.addQTip').each((_, element) => {\n $(element).css({\n cursor: 'help',\n 'text-shadow': '0px 0px 0.5px #666'\n });\n\n const my = $(element).data('qtip-my') || 'left center';\n const at = $(element).data('qtip-at') || 'middle right';\n\n $(element).qtip({\n show: {\n solo: true\n },\n position: {\n my,\n at\n },\n style: {\n tip: {\n corner: true,\n method: 'polygon'\n },\n classes: 'qtip-rounded qtip-shadow ui-tooltip-sb'\n }\n });\n });\n};\n\n/**\n * Start checking for running searches.\n * @param {String} showSlug - Show slug\n * @param {Object} vm - vue instance\n */\nexport const updateSearchIcons = (showSlug, vm) => {\n if ($.fn.updateSearchIconsStarted || !showSlug) {\n return;\n }\n\n $.fn.updateSearchIconsStarted = true;\n $.fn.forcedSearches = [];\n\n const enableLink = el => {\n el.disabled = false;\n };\n\n const disableLink = el => {\n el.disabled = true;\n };\n\n /**\n * Update search icons based on it's current search status (queued, error, searched)\n * @param {*} results - Search queue results\n * @param {*} vm - Vue instance\n */\n const updateImages = results => {\n $.each(results, (_, ep) => {\n // Get td element for current ep\n const loadingImage = 'loading16.gif';\n const queuedImage = 'queued.png';\n const searchImage = 'search16.png';\n\n if (ep.show.slug !== vm.show.id.slug) {\n return true;\n }\n\n // Try to get the Element\n const img = vm.$refs[`search-${ep.episode.slug}`];\n if (img) {\n if (ep.search.status.toLowerCase() === 'searching') {\n // El=$('td#' + ep.season + 'x' + ep.episode + '.search img');\n img.title = 'Searching';\n img.alt = 'Searching';\n img.src = 'images/' + loadingImage;\n disableLink(img);\n } else if (ep.search.status.toLowerCase() === 'queued') {\n // El=$('td#' + ep.season + 'x' + ep.episode + '.search img');\n img.title = 'Queued';\n img.alt = 'queued';\n img.src = 'images/' + queuedImage;\n disableLink(img);\n } else if (ep.search.status.toLowerCase() === 'finished') {\n // El=$('td#' + ep.season + 'x' + ep.episode + '.search img');\n img.title = 'Searching';\n img.alt = 'searching';\n img.src = 'images/' + searchImage;\n enableLink(img);\n }\n }\n });\n };\n\n /**\n * Check the search queues / history for current or past searches and update the icons.\n */\n const checkManualSearches = () => {\n let pollInterval = 5000;\n\n api.get(`search/${showSlug}`)\n .then(response => {\n if (response.data.results && response.data.results.length > 0) {\n pollInterval = 5000;\n } else {\n pollInterval = 15000;\n }\n\n updateImages(response.data.results);\n }).catch(error => {\n console.error(String(error));\n pollInterval = 30000;\n }).finally(() => {\n setTimeout(checkManualSearches, pollInterval);\n });\n };\n\n checkManualSearches();\n};\n","\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./add-show-options.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./add-show-options.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./add-show-options.vue?vue&type=template&id=89efbdd4&\"\nimport script from \"./add-show-options.vue?vue&type=script&lang=js&\"\nexport * from \"./add-show-options.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"add-show-options-content\"}},[_c('fieldset',{staticClass:\"component-group-list\"},[_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"row\"},[_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10 content\"},[_c('quality-chooser',{attrs:{\"overall-quality\":_vm.defaultConfig.quality},on:{\"update:quality:allowed\":function($event){_vm.quality.allowed = $event},\"update:quality:preferred\":function($event){_vm.quality.preferred = $event}}})],1)])]),_vm._v(\" \"),(_vm.subtitlesEnabled)?_c('div',{attrs:{\"id\":\"use-subtitles\"}},[_c('config-toggle-slider',{attrs:{\"label\":\"Subtitles\",\"id\":\"subtitles\",\"value\":_vm.selectedSubtitleEnabled,\"explanations\":['Download subtitles for this show?']},on:{\"input\":function($event){_vm.selectedSubtitleEnabled = $event}}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"row\"},[_vm._m(1),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10 content\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedStatus),expression:\"selectedStatus\"}],staticClass:\"form-control form-control-inline input-sm\",attrs:{\"id\":\"defaultStatus\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selectedStatus=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.defaultEpisodeStatusOptions),function(option){return _c('option',{key:option.value,domProps:{\"value\":option.value}},[_vm._v(_vm._s(option.name))])}),0)])])]),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"row\"},[_vm._m(2),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10 content\"},[_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedStatusAfter),expression:\"selectedStatusAfter\"}],staticClass:\"form-control form-control-inline input-sm\",attrs:{\"id\":\"defaultStatusAfter\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selectedStatusAfter=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},_vm._l((_vm.defaultEpisodeStatusOptions),function(option){return _c('option',{key:option.value,domProps:{\"value\":option.value}},[_vm._v(_vm._s(option.name))])}),0)])])]),_vm._v(\" \"),_c('config-toggle-slider',{attrs:{\"label\":\"Season Folders\",\"id\":\"season_folders\",\"value\":_vm.selectedSeasonFoldersEnabled,\"disabled\":_vm.namingForceFolders,\"explanations\":['Group episodes by season folders?']},on:{\"input\":function($event){_vm.selectedSeasonFoldersEnabled = $event}}}),_vm._v(\" \"),(_vm.enableAnimeOptions)?_c('config-toggle-slider',{attrs:{\"label\":\"Anime\",\"id\":\"anime\",\"value\":_vm.selectedAnimeEnabled,\"explanations\":['Is this show an Anime?']},on:{\"input\":function($event){_vm.selectedAnimeEnabled = $event}}}):_vm._e(),_vm._v(\" \"),(_vm.enableAnimeOptions && _vm.selectedAnimeEnabled)?_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"row\"},[_vm._m(3),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10 content\"},[_c('anidb-release-group-ui',{staticClass:\"max-width\",attrs:{\"show-name\":_vm.showName},on:{\"change\":_vm.onChangeReleaseGroupsAnime}})],1)])]):_vm._e(),_vm._v(\" \"),_c('config-toggle-slider',{attrs:{\"label\":\"Scene Numbering\",\"id\":\"scene\",\"value\":_vm.selectedSceneEnabled,\"explanations\":['Is this show scene numbered?']},on:{\"input\":function($event){_vm.selectedSceneEnabled = $event}}}),_vm._v(\" \"),_c('div',{staticClass:\"form-group\"},[_c('div',{staticClass:\"row\"},[_vm._m(4),_vm._v(\" \"),_c('div',{staticClass:\"col-sm-10 content\"},[_c('button',{staticClass:\"btn-medusa btn-inline\",attrs:{\"type\":\"button\",\"disabled\":_vm.saving || _vm.saveDefaultsDisabled},on:{\"click\":function($event){$event.preventDefault();return _vm.saveDefaults($event)}}},[_vm._v(\"Save Defaults\")])])])])],1)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"customQuality\"}},[_c('span',[_vm._v(\"Quality\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"defaultStatus\"}},[_c('span',[_vm._v(\"Status for previously aired episodes\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"defaultStatusAfter\"}},[_c('span',[_vm._v(\"Status for all future episodes\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"anidbReleaseGroup\"}},[_c('span',[_vm._v(\"Release Groups\")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{staticClass:\"col-sm-2 control-label\",attrs:{\"for\":\"saveDefaultsButton\"}},[_c('span',[_vm._v(\"Use current values as the defaults\")])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app-footer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app-footer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./app-footer.vue?vue&type=template&id=a67a05c0&scoped=true&\"\nimport script from \"./app-footer.vue?vue&type=script&lang=js&\"\nexport * from \"./app-footer.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a67a05c0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',[_c('div',{staticClass:\"footer clearfix\"},[_c('span',{staticClass:\"footerhighlight\"},[_vm._v(_vm._s(_vm.stats.overall.shows.total))]),_vm._v(\" Shows (\"),_c('span',{staticClass:\"footerhighlight\"},[_vm._v(_vm._s(_vm.stats.overall.shows.active))]),_vm._v(\" Active)\\n | \"),_c('span',{staticClass:\"footerhighlight\"},[_vm._v(_vm._s(_vm.stats.overall.episodes.downloaded))]),_vm._v(\" \"),(_vm.stats.overall.episodes.snatched)?[_c('span',{staticClass:\"footerhighlight\"},[_c('app-link',{attrs:{\"href\":(\"manage/episodeStatuses?whichStatus=\" + _vm.snatchedStatus),\"title\":\"View overview of snatched episodes\"}},[_vm._v(\"+\"+_vm._s(_vm.stats.overall.episodes.snatched))])],1),_vm._v(\"\\n Snatched\\n \")]:_vm._e(),_vm._v(\"\\n / \"),_c('span',{staticClass:\"footerhighlight\"},[_vm._v(_vm._s(_vm.stats.overall.episodes.total))]),_vm._v(\" Episodes Downloaded \"),(_vm.episodePercentage)?_c('span',{staticClass:\"footerhighlight\"},[_vm._v(\"(\"+_vm._s(_vm.episodePercentage)+\")\")]):_vm._e(),_vm._v(\"\\n | Daily Search: \"),_c('span',{staticClass:\"footerhighlight\"},[_vm._v(_vm._s(_vm.schedulerNextRun('dailySearch')))]),_vm._v(\"\\n | Backlog Search: \"),_c('span',{staticClass:\"footerhighlight\"},[_vm._v(_vm._s(_vm.schedulerNextRun('backlog')))]),_vm._v(\" \"),_c('div',[(_vm.system.memoryUsage)?[_vm._v(\"\\n Memory used: \"),_c('span',{staticClass:\"footerhighlight\"},[_vm._v(_vm._s(_vm.system.memoryUsage))]),_vm._v(\" |\\n \")]:_vm._e(),_vm._v(\" \"),_vm._v(\"\\n Branch: \"),_c('span',{staticClass:\"footerhighlight\"},[_vm._v(_vm._s(_vm.system.branch || 'Unknown'))]),_vm._v(\" |\\n Now: \"),_c('span',{staticClass:\"footerhighlight\"},[_vm._v(_vm._s(_vm.nowInUserPreset))])],2)],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app-header.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./app-header.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./app-header.vue?vue&type=template&id=cd8312b4&\"\nimport script from \"./app-header.vue?vue&type=script&lang=js&\"\nexport * from \"./app-header.vue?vue&type=script&lang=js&\"\nimport style0 from \"./app-header.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('nav',{staticClass:\"navbar navbar-default navbar-fixed-top hidden-print\",attrs:{\"role\":\"navigation\"}},[_c('div',{staticClass:\"container-fluid\"},[_c('div',{staticClass:\"navbar-header\"},[_c('button',{staticClass:\"navbar-toggle collapsed\",attrs:{\"type\":\"button\",\"data-toggle\":\"collapse\",\"data-target\":\"#main_nav\"}},[(_vm.toolsBadgeCount > 0)?_c('span',{class:(\"floating-badge\" + _vm.toolsBadgeClass)},[_vm._v(_vm._s(_vm.toolsBadgeCount))]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"sr-only\"},[_vm._v(\"Toggle navigation\")]),_vm._v(\" \"),_c('span',{staticClass:\"icon-bar\"}),_vm._v(\" \"),_c('span',{staticClass:\"icon-bar\"}),_vm._v(\" \"),_c('span',{staticClass:\"icon-bar\"})]),_vm._v(\" \"),_c('app-link',{staticClass:\"navbar-brand\",attrs:{\"href\":\"home/\",\"title\":\"Medusa\"}},[_c('img',{staticClass:\"img-responsive pull-left\",staticStyle:{\"height\":\"50px\"},attrs:{\"alt\":\"Medusa\",\"src\":\"images/medusa.png\"}})])],1),_vm._v(\" \"),(_vm.isAuthenticated)?_c('div',{staticClass:\"collapse navbar-collapse\",attrs:{\"id\":\"main_nav\"}},[_c('ul',{staticClass:\"nav navbar-nav navbar-right\"},[_c('li',{staticClass:\"navbar-split dropdown\",class:{ active: _vm.topMenu === 'home' },attrs:{\"id\":\"NAVhome\"}},[_c('app-link',{staticClass:\"dropdown-toggle\",attrs:{\"href\":\"home/\",\"aria-haspopup\":\"true\",\"data-toggle\":\"dropdown\",\"data-hover\":\"dropdown\"}},[_c('span',[_vm._v(\"Shows\")]),_vm._v(\" \"),_c('b',{staticClass:\"caret\"})]),_vm._v(\" \"),_c('ul',{staticClass:\"dropdown-menu\"},[_c('li',[_c('app-link',{attrs:{\"href\":\"home/\"}},[_c('i',{staticClass:\"menu-icon-home\"}),_vm._v(\" Show List\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"addShows/\"}},[_c('i',{staticClass:\"menu-icon-addshow\"}),_vm._v(\" Add Shows\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"addRecommended/\"}},[_c('i',{staticClass:\"menu-icon-addshow\"}),_vm._v(\" Add Recommended Shows\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"home/postprocess/\"}},[_c('i',{staticClass:\"menu-icon-postprocess\"}),_vm._v(\" Manual Post-Processing\")])],1),_vm._v(\" \"),(_vm.recentShows.length > 0)?_c('li',{staticClass:\"divider\",attrs:{\"role\":\"separator\"}}):_vm._e(),_vm._v(\" \"),_vm._l((_vm.recentShows),function(recentShow){return _c('li',{key:recentShow.link},[_c('app-link',{attrs:{\"href\":recentShow.link}},[_c('i',{staticClass:\"menu-icon-addshow\"}),_vm._v(\" \"+_vm._s(recentShow.name)+\"\\n \")])],1)})],2),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})],1),_vm._v(\" \"),_c('li',{class:{ active: _vm.topMenu === 'schedule' },attrs:{\"id\":\"NAVschedule\"}},[_c('app-link',{attrs:{\"href\":\"schedule/\"}},[_vm._v(\"Schedule\")])],1),_vm._v(\" \"),_c('li',{class:{ active: _vm.topMenu === 'history' },attrs:{\"id\":\"NAVhistory\"}},[_c('app-link',{attrs:{\"href\":\"history/\"}},[_vm._v(\"History\")])],1),_vm._v(\" \"),_c('li',{staticClass:\"navbar-split dropdown\",class:{ active: _vm.topMenu === 'manage' },attrs:{\"id\":\"NAVmanage\"}},[_c('app-link',{staticClass:\"dropdown-toggle\",attrs:{\"href\":\"manage/episodeStatuses/\",\"aria-haspopup\":\"true\",\"data-toggle\":\"dropdown\",\"data-hover\":\"dropdown\"}},[_c('span',[_vm._v(\"Manage\")]),_vm._v(\" \"),_c('b',{staticClass:\"caret\"})]),_vm._v(\" \"),_c('ul',{staticClass:\"dropdown-menu\"},[_c('li',[_c('app-link',{attrs:{\"href\":\"manage/\"}},[_c('i',{staticClass:\"menu-icon-manage\"}),_vm._v(\" Mass Update\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"manage/backlogOverview/\"}},[_c('i',{staticClass:\"menu-icon-backlog-view\"}),_vm._v(\" Backlog Overview\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"manage/manageSearches/\"}},[_c('i',{staticClass:\"menu-icon-manage-searches\"}),_vm._v(\" Manage Searches\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"manage/episodeStatuses/\"}},[_c('i',{staticClass:\"menu-icon-manage2\"}),_vm._v(\" Episode Status Management\")])],1),_vm._v(\" \"),(_vm.linkVisible.plex)?_c('li',[_c('app-link',{attrs:{\"href\":\"home/updatePLEX/\"}},[_c('i',{staticClass:\"menu-icon-plex\"}),_vm._v(\" Update PLEX\")])],1):_vm._e(),_vm._v(\" \"),(_vm.linkVisible.kodi)?_c('li',[_c('app-link',{attrs:{\"href\":\"home/updateKODI/\"}},[_c('i',{staticClass:\"menu-icon-kodi\"}),_vm._v(\" Update KODI\")])],1):_vm._e(),_vm._v(\" \"),(_vm.linkVisible.emby)?_c('li',[_c('app-link',{attrs:{\"href\":\"home/updateEMBY/\"}},[_c('i',{staticClass:\"menu-icon-emby\"}),_vm._v(\" Update Emby\")])],1):_vm._e(),_vm._v(\" \"),(_vm.linkVisible.manageTorrents)?_c('li',[_c('app-link',{attrs:{\"href\":\"manage/manageTorrents/\",\"target\":\"_blank\"}},[_c('i',{staticClass:\"menu-icon-bittorrent\"}),_vm._v(\" Manage Torrents\")])],1):_vm._e(),_vm._v(\" \"),(_vm.linkVisible.failedDownloads)?_c('li',[_c('app-link',{attrs:{\"href\":\"manage/failedDownloads/\"}},[_c('i',{staticClass:\"menu-icon-failed-download\"}),_vm._v(\" Failed Downloads\")])],1):_vm._e(),_vm._v(\" \"),(_vm.linkVisible.subtitleMissed)?_c('li',[_c('app-link',{attrs:{\"href\":\"manage/subtitleMissed/\"}},[_c('i',{staticClass:\"menu-icon-backlog\"}),_vm._v(\" Missed Subtitle Management\")])],1):_vm._e(),_vm._v(\" \"),(_vm.linkVisible.subtitleMissedPP)?_c('li',[_c('app-link',{attrs:{\"href\":\"manage/subtitleMissedPP/\"}},[_c('i',{staticClass:\"menu-icon-backlog\"}),_vm._v(\" Missed Subtitle in Post-Process folder\")])],1):_vm._e()]),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})],1),_vm._v(\" \"),_c('li',{staticClass:\"navbar-split dropdown\",class:{ active: _vm.topMenu === 'config' },attrs:{\"id\":\"NAVconfig\"}},[_c('app-link',{staticClass:\"dropdown-toggle\",attrs:{\"href\":\"config/\",\"aria-haspopup\":\"true\",\"data-toggle\":\"dropdown\",\"data-hover\":\"dropdown\"}},[_c('span',{staticClass:\"visible-xs-inline\"},[_vm._v(\"Config\")]),_c('img',{staticClass:\"navbaricon hidden-xs\",attrs:{\"src\":\"images/menu/system18.png\"}}),_vm._v(\" \"),_c('b',{staticClass:\"caret\"})]),_vm._v(\" \"),_c('ul',{staticClass:\"dropdown-menu\"},[_c('li',[_c('app-link',{attrs:{\"href\":\"config/\"}},[_c('i',{staticClass:\"menu-icon-help\"}),_vm._v(\" Help & Info\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"config/general/\"}},[_c('i',{staticClass:\"menu-icon-config\"}),_vm._v(\" General\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"config/backuprestore/\"}},[_c('i',{staticClass:\"menu-icon-backup\"}),_vm._v(\" Backup & Restore\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"config/search/\"}},[_c('i',{staticClass:\"menu-icon-manage-searches\"}),_vm._v(\" Search Settings\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"config/providers/\"}},[_c('i',{staticClass:\"menu-icon-provider\"}),_vm._v(\" Search Providers\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"config/subtitles/\"}},[_c('i',{staticClass:\"menu-icon-backlog\"}),_vm._v(\" Subtitles Settings\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"config/postProcessing/\"}},[_c('i',{staticClass:\"menu-icon-postprocess\"}),_vm._v(\" Post Processing\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"config/notifications/\"}},[_c('i',{staticClass:\"menu-icon-notification\"}),_vm._v(\" Notifications\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"config/anime/\"}},[_c('i',{staticClass:\"menu-icon-anime\"}),_vm._v(\" Anime\")])],1)]),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})],1),_vm._v(\" \"),_c('li',{staticClass:\"navbar-split dropdown\",class:{ active: _vm.topMenu === 'system' },attrs:{\"id\":\"NAVsystem\"}},[_c('app-link',{staticClass:\"padding-right-15 dropdown-toggle\",attrs:{\"href\":\"home/status/\",\"aria-haspopup\":\"true\",\"data-toggle\":\"dropdown\",\"data-hover\":\"dropdown\"}},[_c('span',{staticClass:\"visible-xs-inline\"},[_vm._v(\"Tools\")]),_c('img',{staticClass:\"navbaricon hidden-xs\",attrs:{\"src\":\"images/menu/system18-2.png\"}}),_vm._v(\" \"),(_vm.toolsBadgeCount > 0)?_c('span',{class:(\"badge\" + _vm.toolsBadgeClass)},[_vm._v(_vm._s(_vm.toolsBadgeCount))]):_vm._e(),_vm._v(\" \"),_c('b',{staticClass:\"caret\"})]),_vm._v(\" \"),_c('ul',{staticClass:\"dropdown-menu\"},[_c('li',[_c('app-link',{attrs:{\"href\":\"news/\"}},[_c('i',{staticClass:\"menu-icon-news\"}),_vm._v(\" News \"),(_vm.system.news.unread > 0)?_c('span',{staticClass:\"badge\"},[_vm._v(_vm._s(_vm.system.news.unread))]):_vm._e()])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"IRC/\"}},[_c('i',{staticClass:\"menu-icon-irc\"}),_vm._v(\" IRC\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"changes/\"}},[_c('i',{staticClass:\"menu-icon-changelog\"}),_vm._v(\" Changelog\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":_vm.config.donationsUrl}},[_c('i',{staticClass:\"menu-icon-support\"}),_vm._v(\" Support Medusa\")])],1),_vm._v(\" \"),_c('li',{staticClass:\"divider\",attrs:{\"role\":\"separator\"}}),_vm._v(\" \"),(_vm.config.logs.numErrors > 0)?_c('li',[_c('app-link',{attrs:{\"href\":\"errorlogs/\"}},[_c('i',{staticClass:\"menu-icon-error\"}),_vm._v(\" View Errors \"),_c('span',{staticClass:\"badge btn-danger\"},[_vm._v(_vm._s(_vm.config.logs.numErrors))])])],1):_vm._e(),_vm._v(\" \"),(_vm.config.logs.numWarnings > 0)?_c('li',[_c('app-link',{attrs:{\"href\":(\"errorlogs/?level=\" + _vm.warningLevel)}},[_c('i',{staticClass:\"menu-icon-viewlog-errors\"}),_vm._v(\" View Warnings \"),_c('span',{staticClass:\"badge btn-warning\"},[_vm._v(_vm._s(_vm.config.logs.numWarnings))])])],1):_vm._e(),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"errorlogs/viewlog/\"}},[_c('i',{staticClass:\"menu-icon-viewlog\"}),_vm._v(\" View Log\")])],1),_vm._v(\" \"),_c('li',{staticClass:\"divider\",attrs:{\"role\":\"separator\"}}),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":(\"home/updateCheck?pid=\" + (_vm.system.pid))}},[_c('i',{staticClass:\"menu-icon-update\"}),_vm._v(\" Check For Updates\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":(\"home/restart/?pid=\" + (_vm.system.pid))},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.confirmDialog($event, 'restart')}}},[_c('i',{staticClass:\"menu-icon-restart\"}),_vm._v(\" Restart\")])],1),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":(\"home/shutdown/?pid=\" + (_vm.system.pid))},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.confirmDialog($event, 'shutdown')}}},[_c('i',{staticClass:\"menu-icon-shutdown\"}),_vm._v(\" Shutdown\")])],1),_vm._v(\" \"),(_vm.username)?_c('li',[_c('app-link',{attrs:{\"href\":\"logout\"},nativeOn:{\"click\":function($event){$event.preventDefault();return _vm.confirmDialog($event, 'logout')}}},[_c('i',{staticClass:\"menu-icon-shutdown\"}),_vm._v(\" Logout\")])],1):_vm._e(),_vm._v(\" \"),_c('li',{staticClass:\"divider\",attrs:{\"role\":\"separator\"}}),_vm._v(\" \"),_c('li',[_c('app-link',{attrs:{\"href\":\"home/status/\"}},[_c('i',{staticClass:\"menu-icon-info\"}),_vm._v(\" Server Status\")])],1)]),_vm._v(\" \"),_c('div',{staticStyle:{\"clear\":\"both\"}})],1)])]):_vm._e()])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./history.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./history.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./history.vue?vue&type=script&lang=js&\"\nexport * from \"./history.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./home.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./home.vue?vue&type=script&lang=js&\"\nexport * from \"./home.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manual-post-process.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./manual-post-process.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./manual-post-process.vue?vue&type=script&lang=js&\"\nexport * from \"./manual-post-process.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./schedule.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./schedule.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./schedule.vue?vue&type=script&lang=js&\"\nexport * from \"./schedule.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./snatch-selection.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./snatch-selection.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./snatch-selection.vue?vue&type=script&lang=js&\"\nexport * from \"./snatch-selection.vue?vue&type=script&lang=js&\"\nimport style0 from \"./snatch-selection.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./status.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./status.vue?vue&type=script&lang=js&\"","var render, staticRenderFns\nimport script from \"./status.vue?vue&type=script&lang=js&\"\nexport * from \"./status.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sub-menu.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./sub-menu.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./sub-menu.vue?vue&type=template&id=0918603e&scoped=true&\"\nimport script from \"./sub-menu.vue?vue&type=script&lang=js&\"\nexport * from \"./sub-menu.vue?vue&type=script&lang=js&\"\nimport style0 from \"./sub-menu.vue?vue&type=style&index=0&id=0918603e&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0918603e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.subMenu.length > 0)?_c('div',{attrs:{\"id\":\"sub-menu-wrapper\"}},[_c('div',{staticClass:\"row shadow\",attrs:{\"id\":\"sub-menu-container\"}},[_c('div',{staticClass:\"submenu-default hidden-print col-md-12\",attrs:{\"id\":\"sub-menu\"}},[_vm._l((_vm.subMenu),function(menuItem){return _c('app-link',{key:(\"sub-menu-\" + (menuItem.title)),staticClass:\"btn-medusa top-5 bottom-5\",attrs:{\"href\":menuItem.path},nativeOn:_vm._d({},[_vm.clickEventCond(menuItem),function($event){$event.preventDefault();return _vm.confirmDialog($event, menuItem.confirm)}])},[_c('span',{class:['pull-left', menuItem.icon]}),_vm._v(\" \"+_vm._s(menuItem.title)+\"\\n \")])}),_vm._v(\" \"),(_vm.showSelectorVisible)?_c('show-selector',{attrs:{\"show-slug\":_vm.curShowSlug,\"follow-selection\":\"\"}}):_vm._e()],2)]),_vm._v(\" \"),_c('div',{staticClass:\"btn-group\"})]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","// @TODO: Remove this file before v1.0.0\nimport Vue from 'vue';\nimport AsyncComputed from 'vue-async-computed';\nimport VueMeta from 'vue-meta';\nimport Snotify from 'vue-snotify';\nimport VueCookies from 'vue-cookies';\nimport VModal from 'vue-js-modal';\nimport { VTooltip } from 'v-tooltip';\n\nimport {\n AddShowOptions,\n AnidbReleaseGroupUi,\n AppFooter,\n AppHeader,\n AppLink,\n Asset,\n Backstretch,\n ConfigTemplate,\n ConfigTextbox,\n ConfigTextboxNumber,\n ConfigToggleSlider,\n FileBrowser,\n History,\n Home,\n LanguageSelect,\n ManualPostProcess,\n PlotInfo,\n QualityChooser,\n QualityPill,\n RootDirs,\n Schedule,\n ScrollButtons,\n SelectList,\n ShowSelector,\n SnatchSelection,\n StateSwitch,\n Status,\n SubMenu\n} from './components';\nimport store from './store';\nimport { isDevelopment } from './utils/core';\n\n/**\n * Register global components and x-template components.\n */\nexport const registerGlobalComponents = () => {\n // Start with the x-template components\n let { components = [] } = window;\n\n // Add global components (in use by `main.mako`)\n // @TODO: These should be registered in an `App.vue` component when possible,\n // along with some of the `main.mako` template\n components = components.concat([\n AppFooter,\n AppHeader,\n ScrollButtons,\n SubMenu\n ]);\n\n // Add global components (in use by pages/components that are not SFCs yet)\n // Use this when it's not possible to use `components: { ... }` in a component's definition.\n // If a component that uses any of these is a SFC, please use the `components` key when defining it.\n // @TODO: Instead of globally registering these,\n // they should be registered in each component that uses them\n components = components.concat([\n AddShowOptions,\n AnidbReleaseGroupUi,\n AppLink,\n Asset,\n Backstretch,\n ConfigTemplate,\n ConfigTextbox,\n ConfigTextboxNumber,\n ConfigToggleSlider,\n FileBrowser,\n LanguageSelect,\n PlotInfo,\n QualityChooser,\n QualityPill, // @FIXME: (sharkykh) Used in a hack/workaround in `static/js/ajax-episode-search.js`\n RootDirs,\n SelectList,\n ShowSelector,\n StateSwitch\n ]);\n\n // Add components for pages that use `pageComponent`\n // @TODO: These need to be converted to Vue SFCs\n components = components.concat([\n History,\n Home,\n ManualPostProcess,\n Schedule,\n SnatchSelection,\n Status\n ]);\n\n // Register the components globally\n components.forEach(component => {\n if (isDevelopment) {\n console.debug(`Registering ${component.name}`);\n }\n Vue.component(component.name, component);\n });\n};\n\n/**\n * Register plugins.\n */\nexport const registerPlugins = () => {\n Vue.use(AsyncComputed);\n Vue.use(VueMeta);\n Vue.use(Snotify);\n Vue.use(VueCookies);\n Vue.use(VModal);\n Vue.use(VTooltip);\n\n // Set default cookie expire time\n VueCookies.config('10y');\n};\n\n/**\n * Apply the global Vue shim.\n */\nexport default () => {\n const warningTemplate = (name, state) =>\n `${name} is using the global Vuex '${state}' state, ` +\n `please replace that with a local one using: mapState(['${state}'])`;\n\n Vue.mixin({\n data() {\n // These are only needed for the root Vue\n if (this.$root === this) {\n return {\n globalLoading: true,\n pageComponent: false\n };\n }\n return {};\n },\n mounted() {\n if (this.$root === this && !window.location.pathname.includes('/login')) {\n const { username } = window;\n Promise.all([\n /* This is used by the `app-header` component\n to only show the logout button if a username is set */\n store.dispatch('login', { username }),\n store.dispatch('getConfig'),\n store.dispatch('getStats')\n ]).then(([_, config]) => {\n this.$emit('loaded');\n // Legacy - send config.main to jQuery (received by index.js)\n const event = new CustomEvent('medusa-config-loaded', { detail: config.main });\n window.dispatchEvent(event);\n }).catch(error => {\n console.debug(error);\n alert('Unable to connect to Medusa!'); // eslint-disable-line no-alert\n });\n }\n\n this.$once('loaded', () => {\n this.$root.globalLoading = false;\n });\n },\n // Make auth and config accessible to all components\n // @TODO: Remove this completely\n computed: {\n // Deprecate the global `Vuex.mapState(['auth', 'config'])`\n auth() {\n if (isDevelopment && !this.__VUE_DEVTOOLS_UID__) {\n console.warn(warningTemplate(this._name, 'auth'));\n }\n return this.$store.state.auth;\n },\n config() {\n if (isDevelopment && !this.__VUE_DEVTOOLS_UID__) {\n console.warn(warningTemplate(this._name, 'config'));\n }\n return this.$store.state.config;\n }\n }\n });\n\n if (isDevelopment) {\n console.debug('Loading local Vue');\n }\n\n registerPlugins();\n\n registerGlobalComponents();\n};\n","// style-loader: Adds some css to the DOM by adding a \n","// style-loader: Adds some css to the DOM by adding a \n","\n\n\n\n","// style-loader: Adds some css to the DOM by adding a \n","// style-loader: Adds some css to the DOM by adding a \n","// style-loader: Adds some css to the DOM by adding a \n","\n\n\n","// style-loader: Adds some css to the DOM by adding a \n","\n\n\n\n","\n\n\n\n","\n\n\n\n\n","\n\n\n\n\n","// style-loader: Adds some css to the DOM by adding a \n","\n\n","\n\n\n","// style-loader: Adds some css to the DOM by adding a \n","\n\n\n","\n\n\n","// style-loader: Adds some css to the DOM by adding a \n","\n\n\n","// style-loader: Adds some css to the DOM by adding a \n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./subtitle-search.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./subtitle-search.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./subtitle-search.vue?vue&type=template&id=117f16f4&scoped=true&\"\nimport script from \"./subtitle-search.vue?vue&type=script&lang=js&\"\nexport * from \"./subtitle-search.vue?vue&type=script&lang=js&\"\nimport style0 from \"./subtitle-search.vue?vue&type=style&index=0&id=117f16f4&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"117f16f4\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:_vm.override.class || ['quality', _vm.pill.key],attrs:{\"title\":_vm.title}},[_vm._v(_vm._s(_vm.override.text || _vm.pill.name))])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./quality-pill.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./quality-pill.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./quality-pill.vue?vue&type=template&id=9f56cf6c&scoped=true&\"\nimport script from \"./quality-pill.vue?vue&type=script&lang=js&\"\nexport * from \"./quality-pill.vue?vue&type=script&lang=js&\"\nimport style0 from \"./quality-pill.vue?vue&type=style&index=0&id=9f56cf6c&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9f56cf6c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"root-dirs-wrapper\"}},[_c('div',{staticClass:\"root-dirs-selectbox\"},[_c('select',_vm._g(_vm._b({directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.selectedRootDir),expression:\"selectedRootDir\"}],ref:\"rootDirs\",attrs:{\"name\":\"rootDir\",\"id\":\"rootDirs\",\"size\":\"6\"},on:{\"change\":function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.selectedRootDir=$event.target.multiple ? $$selectedVal : $$selectedVal[0]}}},'select',_vm.$attrs,false),_vm.$listeners),_vm._l((_vm.rootDirs),function(curDir){return _c('option',{key:curDir.path,domProps:{\"value\":curDir.path}},[_vm._v(\"\\n \"+_vm._s(_vm._f(\"markDefault\")(curDir))+\"\\n \")])}),0)]),_vm._v(\" \"),_c('div',{staticClass:\"root-dirs-controls\"},[_c('button',{staticClass:\"btn-medusa\",attrs:{\"type\":\"button\"},on:{\"click\":function($event){$event.preventDefault();return _vm.add($event)}}},[_vm._v(\"New\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn-medusa\",attrs:{\"type\":\"button\",\"disabled\":!_vm.selectedRootDir},on:{\"click\":function($event){$event.preventDefault();return _vm.edit($event)}}},[_vm._v(\"Edit\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn-medusa\",attrs:{\"type\":\"button\",\"disabled\":!_vm.selectedRootDir},on:{\"click\":function($event){$event.preventDefault();return _vm.remove($event)}}},[_vm._v(\"Delete\")]),_vm._v(\" \"),_c('button',{staticClass:\"btn-medusa\",attrs:{\"type\":\"button\",\"disabled\":!_vm.selectedRootDir},on:{\"click\":function($event){$event.preventDefault();return _vm.setDefault($event)}}},[_vm._v(\"Set as Default *\")])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./root-dirs.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./root-dirs.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./root-dirs.vue?vue&type=template&id=a78942dc&\"\nimport script from \"./root-dirs.vue?vue&type=script&lang=js&\"\nexport * from \"./root-dirs.vue?vue&type=script&lang=js&\"\nimport style0 from \"./root-dirs.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"addShowPortal\"}},[_c('app-link',{staticClass:\"btn-medusa btn-large\",attrs:{\"href\":\"addShows/trendingShows/?traktList=anticipated\",\"id\":\"btnNewShow\"}},[_c('div',{staticClass:\"button\"},[_c('div',{staticClass:\"add-list-icon-addtrakt\"})]),_vm._v(\" \"),_c('div',{staticClass:\"buttontext\"},[_c('h3',[_vm._v(\"Add From Trakt Lists\")]),_vm._v(\" \"),_c('p',[_vm._v(\"For shows that you haven't downloaded yet, this option lets you choose from a show from one of the Trakt lists to add to Medusa .\")])])]),_vm._v(\" \"),_c('app-link',{staticClass:\"btn-medusa btn-large\",attrs:{\"href\":\"addShows/popularShows/\",\"id\":\"btnNewShow\"}},[_c('div',{staticClass:\"button\"},[_c('div',{staticClass:\"add-list-icon-addimdb\"})]),_vm._v(\" \"),_c('div',{staticClass:\"buttontext\"},[_c('h3',[_vm._v(\"Add From IMDB's Popular Shows\")]),_vm._v(\" \"),_c('p',[_vm._v(\"View IMDB's list of the most popular shows. This feature uses IMDB's MOVIEMeter algorithm to identify popular TV Shows.\")])])]),_vm._v(\" \"),_c('app-link',{staticClass:\"btn-medusa btn-large\",attrs:{\"href\":\"addShows/popularAnime/\",\"id\":\"btnNewShow\"}},[_c('div',{staticClass:\"button\"},[_c('div',{staticClass:\"add-list-icon-addanime\"})]),_vm._v(\" \"),_c('div',{staticClass:\"buttontext\"},[_c('h3',[_vm._v(\"Add From Anidb's Hot Anime list\")]),_vm._v(\" \"),_c('p',[_vm._v(\"View Anidb's list of the most popular anime shows. Anidb provides lists for Popular Anime, using the \\\"Hot Anime\\\" list.\")])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./add-recommended.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./add-recommended.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./add-recommended.vue?vue&type=template&id=56f7e8ee&\"\nimport script from \"./add-recommended.vue?vue&type=script&lang=js&\"\nexport * from \"./add-recommended.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"addShowPortal\"}},[_c('app-link',{staticClass:\"btn-medusa btn-large\",attrs:{\"href\":\"addShows/newShow/\",\"id\":\"btnNewShow\"}},[_c('div',{staticClass:\"button\"},[_c('div',{staticClass:\"add-list-icon-addnewshow\"})]),_vm._v(\" \"),_c('div',{staticClass:\"buttontext\"},[_c('h3',[_vm._v(\"Add New Show\")]),_vm._v(\" \"),_c('p',[_vm._v(\"For shows that you haven't downloaded yet, this option finds a show on your preferred indexer, creates a directory for it's episodes, and adds it to Medusa.\")])])]),_vm._v(\" \"),_c('app-link',{staticClass:\"btn-medusa btn-large\",attrs:{\"href\":\"addShows/existingShows/\",\"id\":\"btnExistingShow\"}},[_c('div',{staticClass:\"button\"},[_c('div',{staticClass:\"add-list-icon-addexistingshow\"})]),_vm._v(\" \"),_c('div',{staticClass:\"buttontext\"},[_c('h3',[_vm._v(\"Add Existing Shows\")]),_vm._v(\" \"),_c('p',[_vm._v(\"Use this option to add shows that already have a folder created on your hard drive. Medusa will scan your existing metadata/episodes and add the show accordingly.\")])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./add-shows.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./add-shows.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./add-shows.vue?vue&type=template&id=2fd1eaaf&\"\nimport script from \"./add-shows.vue?vue&type=script&lang=js&\"\nexport * from \"./add-shows.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"config-content\"}},[_c('table',{staticClass:\"infoTable\",attrs:{\"cellspacing\":\"1\",\"border\":\"0\",\"cellpadding\":\"0\",\"width\":\"100%\"}},[_c('tr',[_vm._m(0),_vm._v(\" \"),_c('td',[_vm._v(\"\\n Branch:\\n \"),(_vm.system.branch)?_c('span',[_c('app-link',{attrs:{\"href\":((_vm.config.sourceUrl) + \"/tree/\" + (_vm.system.branch))}},[_vm._v(_vm._s(_vm.system.branch))])],1):_c('span',[_vm._v(\"Unknown\")]),_vm._v(\" \"),_c('br'),_vm._v(\"\\n Commit:\\n \"),(_vm.system.commitHash)?_c('span',[_c('app-link',{attrs:{\"href\":((_vm.config.sourceUrl) + \"/commit/\" + (_vm.system.commitHash))}},[_vm._v(_vm._s(_vm.system.commitHash))])],1):_c('span',[_vm._v(\"Unknown\")]),_vm._v(\" \"),_c('br'),_vm._v(\"\\n Version:\\n \"),(_vm.system.release)?_c('span',[_c('app-link',{attrs:{\"href\":((_vm.config.sourceUrl) + \"/releases/tag/v\" + (_vm.system.release))}},[_vm._v(_vm._s(_vm.system.release))])],1):_c('span',[_vm._v(\"Unknown\")]),_vm._v(\" \"),_c('br'),_vm._v(\"\\n Database:\\n \"),(_vm.system.databaseVersion)?_c('span',[_vm._v(_vm._s(_vm.system.databaseVersion.major)+\".\"+_vm._s(_vm.system.databaseVersion.minor))]):_c('span',[_vm._v(\"Unknown\")])])]),_vm._v(\" \"),_c('tr',[_vm._m(1),_c('td',[_vm._v(_vm._s(_vm.system.pythonVersion))])]),_vm._v(\" \"),_c('tr',[_vm._m(2),_c('td',[_vm._v(_vm._s(_vm.system.sslVersion))])]),_vm._v(\" \"),_c('tr',[_vm._m(3),_c('td',[_vm._v(_vm._s(_vm.system.os))])]),_vm._v(\" \"),_c('tr',[_vm._m(4),_c('td',[_vm._v(_vm._s(_vm.system.locale))])]),_vm._v(\" \"),_vm._m(5),_vm._v(\" \"),_vm._m(6),_vm._v(\" \"),_c('tr',[_vm._m(7),_c('td',[_vm._v(_vm._s(_vm.system.localUser))])]),_vm._v(\" \"),_c('tr',[_vm._m(8),_c('td',[_vm._v(_vm._s(_vm.system.programDir))])]),_vm._v(\" \"),_c('tr',[_vm._m(9),_c('td',[_vm._v(_vm._s(_vm.system.configFile))])]),_vm._v(\" \"),_c('tr',[_vm._m(10),_c('td',[_vm._v(_vm._s(_vm.system.dbPath))])]),_vm._v(\" \"),_c('tr',[_vm._m(11),_c('td',[_vm._v(_vm._s(_vm.system.cacheDir))])]),_vm._v(\" \"),_c('tr',[_vm._m(12),_c('td',[_vm._v(_vm._s(_vm.system.logDir))])]),_vm._v(\" \"),(_vm.system.appArgs)?_c('tr',[_vm._m(13),_c('td',[_c('pre',[_vm._v(_vm._s(_vm.system.appArgs.join(' ')))])])]):_vm._e(),_vm._v(\" \"),(_vm.system.webRoot)?_c('tr',[_vm._m(14),_c('td',[_vm._v(_vm._s(_vm.system.webRoot))])]):_vm._e(),_vm._v(\" \"),(_vm.system.runsInDocker)?_c('tr',[_vm._m(15),_c('td',[_vm._v(\"Yes\")])]):_vm._e(),_vm._v(\" \"),_vm._m(16),_vm._v(\" \"),_vm._m(17),_vm._v(\" \"),_c('tr',[_vm._m(18),_c('td',[_c('app-link',{attrs:{\"href\":_vm.config.git.url}},[_vm._v(_vm._s(_vm.config.git.url))])],1)]),_vm._v(\" \"),_c('tr',[_vm._m(19),_c('td',[_c('app-link',{attrs:{\"href\":_vm.config.wikiUrl}},[_vm._v(_vm._s(_vm.config.wikiUrl))])],1)]),_vm._v(\" \"),_c('tr',[_vm._m(20),_c('td',[_c('app-link',{attrs:{\"href\":_vm.config.sourceUrl}},[_vm._v(_vm._s(_vm.config.sourceUrl))])],1)]),_vm._v(\" \"),_c('tr',[_vm._m(21),_c('td',[_c('app-link',{attrs:{\"href\":\"irc://irc.freenode.net/#pymedusa\"}},[_c('i',[_vm._v(\"#pymedusa\")]),_vm._v(\" on \"),_c('i',[_vm._v(\"irc.freenode.net\")])])],1)])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-application\"}),_vm._v(\" Medusa Info:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-python\"}),_vm._v(\" Python Version:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-ssl\"}),_vm._v(\" SSL Version:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-os\"}),_vm._v(\" OS:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-locale\"}),_vm._v(\" Locale:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',[_vm._v(\" \")]),_c('td',[_vm._v(\" \")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"infoTableSeperator\"},[_c('td',[_vm._v(\" \")]),_c('td',[_vm._v(\" \")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-user\"}),_vm._v(\" User:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-dir\"}),_vm._v(\" Program Folder:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-config\"}),_vm._v(\" Config File:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-db\"}),_vm._v(\" Database File:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-cache\"}),_vm._v(\" Cache Folder:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-log\"}),_vm._v(\" Log Folder:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-arguments\"}),_vm._v(\" Arguments:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-dir\"}),_vm._v(\" Web Root:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-docker\"}),_vm._v(\" Runs in Docker:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',[_c('td',[_vm._v(\" \")]),_c('td',[_vm._v(\" \")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{staticClass:\"infoTableSeperator\"},[_c('td',[_vm._v(\" \")]),_c('td',[_vm._v(\" \")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-web\"}),_vm._v(\" Website:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-wiki\"}),_vm._v(\" Wiki:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-github\"}),_vm._v(\" Source:\")])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('td',[_c('i',{staticClass:\"icon16-config-mirc\"}),_vm._v(\" IRC Chat:\")])}]\n\nexport { render, staticRenderFns }","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./config.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./config.vue?vue&type=script&lang=js&\"","\n\n\n","import { render, staticRenderFns } from \"./config.vue?vue&type=template&id=41ef7f81&scoped=true&\"\nimport script from \"./config.vue?vue&type=script&lang=js&\"\nexport * from \"./config.vue?vue&type=script&lang=js&\"\nimport style0 from \"./config.vue?vue&type=style&index=0&id=41ef7f81&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"41ef7f81\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('iframe',{staticClass:\"irc-frame loading-spinner\",attrs:{\"src\":_vm.frameSrc}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","