{"version":3,"file":"js/1951-2c1ff987e0cb07a848f6.js","mappings":"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AC,sBAAuB,MACxB,CAAC,2FAA4F,MAC7F,CAAC,qEAAsE,SACvE,CAAC,iCAAkC,MACnC,CAAC,oBAAqB,QACtB,CAAC,4FAA6F,QAC9F,CAAC,yGAA0G,QAC3G,CAAC,8FAA+F,QAChG,CAAC,0BAA2B,OAC5B,CAAC,+BAAgC,QACjC,CAAC,sBAAuB,QACxB,CAAC,oBAAqB,UACtB,CAAC,eAAgB,MACjB,CAAC,YAAa,MACd,CAAC,QAAS,QACVsB,SAAQ,SAAUtB,GAClB,OAAOW,EAAUO,gBAAgBlB,EAAK,GAAIA,EAAK,GACjD,IAKA,CAEE,YACA,SACA,SACA,MACA,WACA,UACA,OACA,YACA,QACA,YACA,QACA,QACA,QACA,QACA,UACA,SACA,OACA,OACA,UACA,QACA,WACA,MACA,WACA,cACA,QACA,SACA,WACA,YACA,MACA,SACA,YACA,YACA,YACA,WACA,WACA,MACA,UACA,UACA,WACA,WACA,eACA,SACA,SACA,YACA,WACA,YACA,cACA,QACA,UACA,QACA,SACA,aACA,YACA,WACA,OACA,QACA,OACA,QACA,QACA,MACA,QACA,OACA,OACA,YACA,OACA,WACA,SACA,SACA,YACA,WACA,OACA,WACA,OACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,UACA,QACA,QACA,SACA,UACA,iBACA,QACA,OACA,SACA,UACA,UACA,aACA,WACA,MACA,kBAEA,gBACA,SACA,SACA,YACA,WACA,QACA,WACAsB,QAAQX,EAAUQ,oBAEbR,CACT,CAhfqBA,uCCNR16C,OAAO45B,eAAerX,EAAtB,cAA4C7jB,OAAM,IAAK,IAAI48C,EAAa,WAAW,SAAS5+C,EAAEA,EAAEmiC,GAAG,IAAI,IAAI0c,EAAE,EAAEA,EAAE1c,EAAE/lC,OAAOyiD,IAAI,CAAC,IAAIr6C,EAAE29B,EAAE0c,GAAGr6C,EAAEs6C,WAAWt6C,EAAEs6C,aAAY,EAAGt6C,EAAE44B,cAAa,EAAG,UAAU54B,IAAIA,EAAE24B,UAAS,GAAI75B,OAAO45B,eAAel9B,EAAEwE,EAAEJ,IAAII,EAAE,CAAC,CAA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","sources":["webpack://evalarmjs/../../shared/node_modules/@firebase/util/dist/index.esm2017.js","webpack://evalarmjs/../../shared/node_modules/bootstrap-sass/assets/javascripts/bootstrap.js","webpack://evalarmjs/../../shared/node_modules/jquery-ujs/src/rails.js","webpack://evalarmjs/../../shared/node_modules/jquery/dist/jquery.js","webpack://evalarmjs/../../shared/node_modules/paginator/index.js","webpack://evalarmjs/../../shared/node_modules/pluralize/pluralize.js","webpack://evalarmjs/../../shared/node_modules/react-js-pagination/dist/Page.js","webpack://evalarmjs/../../shared/node_modules/react-js-pagination/dist/Pagination.js","webpack://evalarmjs/../../shared/node_modules/@firebase/logger/dist/esm/index.esm2017.js","webpack://evalarmjs/../../shared/node_modules/@firebase/app/node_modules/idb/build/wrap-idb-value.js","webpack://evalarmjs/../../shared/node_modules/@firebase/app/node_modules/idb/build/index.js","webpack://evalarmjs/../../shared/node_modules/@firebase/app/dist/esm/index.esm2017.js","webpack://evalarmjs/../../shared/node_modules/@firebase/component/dist/esm/index.esm2017.js","webpack://evalarmjs/../../index.ts","webpack://evalarmjs/../../shared/node_modules/idb/build/wrap-idb-value.js","webpack://evalarmjs/../../shared/node_modules/idb/build/index.js","webpack://evalarmjs/../../shared/node_modules/@firebase/installations/dist/esm/index.esm2017.js","webpack://evalarmjs/../../shared/node_modules/@firebase/messaging/dist/esm/index.esm2017.js","webpack://evalarmjs/../../shared/node_modules/lodash-es/isArrayLikeObject.js","webpack://evalarmjs/../../shared/node_modules/lodash-es/_assignMergeValue.js","webpack://evalarmjs/../../shared/node_modules/lodash-es/_safeGet.js","webpack://evalarmjs/../../shared/node_modules/lodash-es/toPlainObject.js","webpack://evalarmjs/../../shared/node_modules/lodash-es/_baseMergeDeep.js","webpack://evalarmjs/../../shared/node_modules/lodash-es/_baseMerge.js","webpack://evalarmjs/../../shared/node_modules/lodash-es/_createAssigner.js","webpack://evalarmjs/../../shared/node_modules/lodash-es/merge.js","webpack://evalarmjs/../../shared/node_modules/lodash-es/stubTrue.js"],"sourcesContent":["/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time.\r\n */\r\nconst CONSTANTS = {\r\n /**\r\n * @define {boolean} Whether this is the client Node.js SDK.\r\n */\r\n NODE_CLIENT: false,\r\n /**\r\n * @define {boolean} Whether this is the Admin Node.js SDK.\r\n */\r\n NODE_ADMIN: false,\r\n /**\r\n * Firebase SDK Version\r\n */\r\n SDK_VERSION: '${JSCORE_VERSION}'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Throws an error if the provided assertion is falsy\r\n */\r\nconst assert = function (assertion, message) {\r\n if (!assertion) {\r\n throw assertionError(message);\r\n }\r\n};\r\n/**\r\n * Returns an Error object suitable for throwing.\r\n */\r\nconst assertionError = function (message) {\r\n return new Error('Firebase Database (' +\r\n CONSTANTS.SDK_VERSION +\r\n ') INTERNAL ASSERT FAILED: ' +\r\n message);\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst stringToByteArray$1 = function (str) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if ((c & 0xfc00) === 0xd800 &&\r\n i + 1 < str.length &&\r\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\r\n // Surrogate Pair\r\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Turns an array of numbers into the string given by the concatenation of the\r\n * characters to which the numbers correspond.\r\n * @param bytes Array of numbers representing characters.\r\n * @return Stringification of the array.\r\n */\r\nconst byteArrayToString = function (bytes) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let pos = 0, c = 0;\r\n while (pos < bytes.length) {\r\n const c1 = bytes[pos++];\r\n if (c1 < 128) {\r\n out[c++] = String.fromCharCode(c1);\r\n }\r\n else if (c1 > 191 && c1 < 224) {\r\n const c2 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\r\n }\r\n else if (c1 > 239 && c1 < 365) {\r\n // Surrogate Pair\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n const c4 = bytes[pos++];\r\n const u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\r\n 0x10000;\r\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\r\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\r\n }\r\n else {\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\r\n }\r\n }\r\n return out.join('');\r\n};\r\n// We define it as an object literal instead of a class because a class compiled down to es5 can't\r\n// be treeshaked. https://github.com/rollup/rollup/issues/1691\r\n// Static lookup maps, lazily populated by init_()\r\nconst base64 = {\r\n /**\r\n * Maps bytes to characters.\r\n */\r\n byteToCharMap_: null,\r\n /**\r\n * Maps characters to bytes.\r\n */\r\n charToByteMap_: null,\r\n /**\r\n * Maps bytes to websafe characters.\r\n * @private\r\n */\r\n byteToCharMapWebSafe_: null,\r\n /**\r\n * Maps websafe characters to bytes.\r\n * @private\r\n */\r\n charToByteMapWebSafe_: null,\r\n /**\r\n * Our default alphabet, shared between\r\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\r\n */\r\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\r\n /**\r\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\r\n */\r\n get ENCODED_VALS() {\r\n return this.ENCODED_VALS_BASE + '+/=';\r\n },\r\n /**\r\n * Our websafe alphabet.\r\n */\r\n get ENCODED_VALS_WEBSAFE() {\r\n return this.ENCODED_VALS_BASE + '-_.';\r\n },\r\n /**\r\n * Whether this browser supports the atob and btoa functions. This extension\r\n * started at Mozilla but is now implemented by many browsers. We use the\r\n * ASSUME_* variables to avoid pulling in the full useragent detection library\r\n * but still allowing the standard per-browser compilations.\r\n *\r\n */\r\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\r\n /**\r\n * Base64-encode an array of bytes.\r\n *\r\n * @param input An array of bytes (numbers with\r\n * value in [0, 255]) to encode.\r\n * @param webSafe Boolean indicating we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeByteArray(input, webSafe) {\r\n if (!Array.isArray(input)) {\r\n throw Error('encodeByteArray takes an array as a parameter');\r\n }\r\n this.init_();\r\n const byteToCharMap = webSafe\r\n ? this.byteToCharMapWebSafe_\r\n : this.byteToCharMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length; i += 3) {\r\n const byte1 = input[i];\r\n const haveByte2 = i + 1 < input.length;\r\n const byte2 = haveByte2 ? input[i + 1] : 0;\r\n const haveByte3 = i + 2 < input.length;\r\n const byte3 = haveByte3 ? input[i + 2] : 0;\r\n const outByte1 = byte1 >> 2;\r\n const outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\r\n let outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\r\n let outByte4 = byte3 & 0x3f;\r\n if (!haveByte3) {\r\n outByte4 = 64;\r\n if (!haveByte2) {\r\n outByte3 = 64;\r\n }\r\n }\r\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\r\n }\r\n return output.join('');\r\n },\r\n /**\r\n * Base64-encode a string.\r\n *\r\n * @param input A string to encode.\r\n * @param webSafe If true, we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return btoa(input);\r\n }\r\n return this.encodeByteArray(stringToByteArray$1(input), webSafe);\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * @param input to decode.\r\n * @param webSafe True if we should use the\r\n * alternative alphabet.\r\n * @return string representing the decoded value.\r\n */\r\n decodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return atob(input);\r\n }\r\n return byteArrayToString(this.decodeStringToByteArray(input, webSafe));\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * In base-64 decoding, groups of four characters are converted into three\r\n * bytes. If the encoder did not apply padding, the input length may not\r\n * be a multiple of 4.\r\n *\r\n * In this case, the last group will have fewer than 4 characters, and\r\n * padding will be inferred. If the group has one or two characters, it decodes\r\n * to one byte. If the group has three characters, it decodes to two bytes.\r\n *\r\n * @param input Input to decode.\r\n * @param webSafe True if we should use the web-safe alphabet.\r\n * @return bytes representing the decoded value.\r\n */\r\n decodeStringToByteArray(input, webSafe) {\r\n this.init_();\r\n const charToByteMap = webSafe\r\n ? this.charToByteMapWebSafe_\r\n : this.charToByteMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length;) {\r\n const byte1 = charToByteMap[input.charAt(i++)];\r\n const haveByte2 = i < input.length;\r\n const byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\r\n ++i;\r\n const haveByte3 = i < input.length;\r\n const byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n const haveByte4 = i < input.length;\r\n const byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\r\n throw new DecodeBase64StringError();\r\n }\r\n const outByte1 = (byte1 << 2) | (byte2 >> 4);\r\n output.push(outByte1);\r\n if (byte3 !== 64) {\r\n const outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\r\n output.push(outByte2);\r\n if (byte4 !== 64) {\r\n const outByte3 = ((byte3 << 6) & 0xc0) | byte4;\r\n output.push(outByte3);\r\n }\r\n }\r\n }\r\n return output;\r\n },\r\n /**\r\n * Lazy static initialization function. Called before\r\n * accessing any of the static map variables.\r\n * @private\r\n */\r\n init_() {\r\n if (!this.byteToCharMap_) {\r\n this.byteToCharMap_ = {};\r\n this.charToByteMap_ = {};\r\n this.byteToCharMapWebSafe_ = {};\r\n this.charToByteMapWebSafe_ = {};\r\n // We want quick mappings back and forth, so we precompute two maps.\r\n for (let i = 0; i < this.ENCODED_VALS.length; i++) {\r\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\r\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\r\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\r\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\r\n // Be forgiving when decoding and correctly decode both encodings.\r\n if (i >= this.ENCODED_VALS_BASE.length) {\r\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\r\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n/**\r\n * An error encountered while decoding base64 string.\r\n */\r\nclass DecodeBase64StringError extends Error {\r\n constructor() {\r\n super(...arguments);\r\n this.name = 'DecodeBase64StringError';\r\n }\r\n}\r\n/**\r\n * URL-safe base64 encoding\r\n */\r\nconst base64Encode = function (str) {\r\n const utf8Bytes = stringToByteArray$1(str);\r\n return base64.encodeByteArray(utf8Bytes, true);\r\n};\r\n/**\r\n * URL-safe base64 encoding (without \".\" padding in the end).\r\n * e.g. Used in JSON Web Token (JWT) parts.\r\n */\r\nconst base64urlEncodeWithoutPadding = function (str) {\r\n // Use base64url encoding and remove padding in the end (dot characters).\r\n return base64Encode(str).replace(/\\./g, '');\r\n};\r\n/**\r\n * URL-safe base64 decoding\r\n *\r\n * NOTE: DO NOT use the global atob() function - it does NOT support the\r\n * base64Url variant encoding.\r\n *\r\n * @param str To be decoded\r\n * @return Decoded result, if possible\r\n */\r\nconst base64Decode = function (str) {\r\n try {\r\n return base64.decodeString(str, true);\r\n }\r\n catch (e) {\r\n console.error('base64Decode failed: ', e);\r\n }\r\n return null;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Do a deep-copy of basic JavaScript Objects or Arrays.\r\n */\r\nfunction deepCopy(value) {\r\n return deepExtend(undefined, value);\r\n}\r\n/**\r\n * Copy properties from source to target (recursively allows extension\r\n * of Objects and Arrays). Scalar values in the target are over-written.\r\n * If target is undefined, an object of the appropriate type will be created\r\n * (and returned).\r\n *\r\n * We recursively copy all child properties of plain Objects in the source- so\r\n * that namespace- like dictionaries are merged.\r\n *\r\n * Note that the target can be a function, in which case the properties in\r\n * the source Object are copied onto it as static properties of the Function.\r\n *\r\n * Note: we don't merge __proto__ to prevent prototype pollution\r\n */\r\nfunction deepExtend(target, source) {\r\n if (!(source instanceof Object)) {\r\n return source;\r\n }\r\n switch (source.constructor) {\r\n case Date:\r\n // Treat Dates like scalars; if the target date object had any child\r\n // properties - they will be lost!\r\n const dateValue = source;\r\n return new Date(dateValue.getTime());\r\n case Object:\r\n if (target === undefined) {\r\n target = {};\r\n }\r\n break;\r\n case Array:\r\n // Always copy the array source and overwrite the target.\r\n target = [];\r\n break;\r\n default:\r\n // Not a plain Object - treat it as a scalar.\r\n return source;\r\n }\r\n for (const prop in source) {\r\n // use isValidKey to guard against prototype pollution. See https://snyk.io/vuln/SNYK-JS-LODASH-450202\r\n if (!source.hasOwnProperty(prop) || !isValidKey(prop)) {\r\n continue;\r\n }\r\n target[prop] = deepExtend(target[prop], source[prop]);\r\n }\r\n return target;\r\n}\r\nfunction isValidKey(key) {\r\n return key !== '__proto__';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Polyfill for `globalThis` object.\r\n * @returns the `globalThis` object for the given environment.\r\n * @public\r\n */\r\nfunction getGlobal() {\r\n if (typeof self !== 'undefined') {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined') {\r\n return window;\r\n }\r\n if (typeof global !== 'undefined') {\r\n return global;\r\n }\r\n throw new Error('Unable to locate global object.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst getDefaultsFromGlobal = () => getGlobal().__FIREBASE_DEFAULTS__;\r\n/**\r\n * Attempt to read defaults from a JSON string provided to\r\n * process(.)env(.)__FIREBASE_DEFAULTS__ or a JSON file whose path is in\r\n * process(.)env(.)__FIREBASE_DEFAULTS_PATH__\r\n * The dots are in parens because certain compilers (Vite?) cannot\r\n * handle seeing that variable in comments.\r\n * See https://github.com/firebase/firebase-js-sdk/issues/6838\r\n */\r\nconst getDefaultsFromEnvVariable = () => {\r\n if (typeof process === 'undefined' || typeof process.env === 'undefined') {\r\n return;\r\n }\r\n const defaultsJsonString = process.env.__FIREBASE_DEFAULTS__;\r\n if (defaultsJsonString) {\r\n return JSON.parse(defaultsJsonString);\r\n }\r\n};\r\nconst getDefaultsFromCookie = () => {\r\n if (typeof document === 'undefined') {\r\n return;\r\n }\r\n let match;\r\n try {\r\n match = document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/);\r\n }\r\n catch (e) {\r\n // Some environments such as Angular Universal SSR have a\r\n // `document` object but error on accessing `document.cookie`.\r\n return;\r\n }\r\n const decoded = match && base64Decode(match[1]);\r\n return decoded && JSON.parse(decoded);\r\n};\r\n/**\r\n * Get the __FIREBASE_DEFAULTS__ object. It checks in order:\r\n * (1) if such an object exists as a property of `globalThis`\r\n * (2) if such an object was provided on a shell environment variable\r\n * (3) if such an object exists in a cookie\r\n * @public\r\n */\r\nconst getDefaults = () => {\r\n try {\r\n return (getDefaultsFromGlobal() ||\r\n getDefaultsFromEnvVariable() ||\r\n getDefaultsFromCookie());\r\n }\r\n catch (e) {\r\n /**\r\n * Catch-all for being unable to get __FIREBASE_DEFAULTS__ due\r\n * to any environment case we have not accounted for. Log to\r\n * info instead of swallowing so we can find these unknown cases\r\n * and add paths for them if needed.\r\n */\r\n console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`);\r\n return;\r\n }\r\n};\r\n/**\r\n * Returns emulator host stored in the __FIREBASE_DEFAULTS__ object\r\n * for the given product.\r\n * @returns a URL host formatted like `127.0.0.1:9999` or `[::1]:4000` if available\r\n * @public\r\n */\r\nconst getDefaultEmulatorHost = (productName) => { var _a, _b; return (_b = (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a.emulatorHosts) === null || _b === void 0 ? void 0 : _b[productName]; };\r\n/**\r\n * Returns emulator hostname and port stored in the __FIREBASE_DEFAULTS__ object\r\n * for the given product.\r\n * @returns a pair of hostname and port like `[\"::1\", 4000]` if available\r\n * @public\r\n */\r\nconst getDefaultEmulatorHostnameAndPort = (productName) => {\r\n const host = getDefaultEmulatorHost(productName);\r\n if (!host) {\r\n return undefined;\r\n }\r\n const separatorIndex = host.lastIndexOf(':'); // Finding the last since IPv6 addr also has colons.\r\n if (separatorIndex <= 0 || separatorIndex + 1 === host.length) {\r\n throw new Error(`Invalid host ${host} with no separate hostname and port!`);\r\n }\r\n // eslint-disable-next-line no-restricted-globals\r\n const port = parseInt(host.substring(separatorIndex + 1), 10);\r\n if (host[0] === '[') {\r\n // Bracket-quoted `[ipv6addr]:port` => return \"ipv6addr\" (without brackets).\r\n return [host.substring(1, separatorIndex - 1), port];\r\n }\r\n else {\r\n return [host.substring(0, separatorIndex), port];\r\n }\r\n};\r\n/**\r\n * Returns Firebase app config stored in the __FIREBASE_DEFAULTS__ object.\r\n * @public\r\n */\r\nconst getDefaultAppConfig = () => { var _a; return (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a.config; };\r\n/**\r\n * Returns an experimental setting on the __FIREBASE_DEFAULTS__ object (properties\r\n * prefixed by \"_\")\r\n * @public\r\n */\r\nconst getExperimentalSetting = (name) => { var _a; return (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a[`_${name}`]; };\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass Deferred {\r\n constructor() {\r\n this.reject = () => { };\r\n this.resolve = () => { };\r\n this.promise = new Promise((resolve, reject) => {\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n });\r\n }\r\n /**\r\n * Our API internals are not promiseified and cannot because our callback APIs have subtle expectations around\r\n * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback\r\n * and returns a node-style callback which will resolve or reject the Deferred's promise.\r\n */\r\n wrapCallback(callback) {\r\n return (error, value) => {\r\n if (error) {\r\n this.reject(error);\r\n }\r\n else {\r\n this.resolve(value);\r\n }\r\n if (typeof callback === 'function') {\r\n // Attaching noop handler just in case developer wasn't expecting\r\n // promises\r\n this.promise.catch(() => { });\r\n // Some of our callbacks don't expect a value and our own tests\r\n // assert that the parameter length is 1\r\n if (callback.length === 1) {\r\n callback(error);\r\n }\r\n else {\r\n callback(error, value);\r\n }\r\n }\r\n };\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction createMockUserToken(token, projectId) {\r\n if (token.uid) {\r\n throw new Error('The \"uid\" field is no longer supported by mockUserToken. Please use \"sub\" instead for Firebase Auth User ID.');\r\n }\r\n // Unsecured JWTs use \"none\" as the algorithm.\r\n const header = {\r\n alg: 'none',\r\n type: 'JWT'\r\n };\r\n const project = projectId || 'demo-project';\r\n const iat = token.iat || 0;\r\n const sub = token.sub || token.user_id;\r\n if (!sub) {\r\n throw new Error(\"mockUserToken must contain 'sub' or 'user_id' field!\");\r\n }\r\n const payload = Object.assign({ \r\n // Set all required fields to decent defaults\r\n iss: `https://securetoken.google.com/${project}`, aud: project, iat, exp: iat + 3600, auth_time: iat, sub, user_id: sub, firebase: {\r\n sign_in_provider: 'custom',\r\n identities: {}\r\n } }, token);\r\n // Unsecured JWTs use the empty string as a signature.\r\n const signature = '';\r\n return [\r\n base64urlEncodeWithoutPadding(JSON.stringify(header)),\r\n base64urlEncodeWithoutPadding(JSON.stringify(payload)),\r\n signature\r\n ].join('.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns navigator.userAgent string or '' if it's not defined.\r\n * @return user agent string\r\n */\r\nfunction getUA() {\r\n if (typeof navigator !== 'undefined' &&\r\n typeof navigator['userAgent'] === 'string') {\r\n return navigator['userAgent'];\r\n }\r\n else {\r\n return '';\r\n }\r\n}\r\n/**\r\n * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device.\r\n *\r\n * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap\r\n * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally\r\n * wait for a callback.\r\n */\r\nfunction isMobileCordova() {\r\n return (typeof window !== 'undefined' &&\r\n // @ts-ignore Setting up an broadly applicable index signature for Window\r\n // just to deal with this case would probably be a bad idea.\r\n !!(window['cordova'] || window['phonegap'] || window['PhoneGap']) &&\r\n /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(getUA()));\r\n}\r\n/**\r\n * Detect Node.js.\r\n *\r\n * @return true if Node.js environment is detected or specified.\r\n */\r\n// Node detection logic from: https://github.com/iliakan/detect-node/\r\nfunction isNode() {\r\n var _a;\r\n const forceEnvironment = (_a = getDefaults()) === null || _a === void 0 ? void 0 : _a.forceEnvironment;\r\n if (forceEnvironment === 'node') {\r\n return true;\r\n }\r\n else if (forceEnvironment === 'browser') {\r\n return false;\r\n }\r\n try {\r\n return (Object.prototype.toString.call(global.process) === '[object process]');\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Detect Browser Environment\r\n */\r\nfunction isBrowser() {\r\n return typeof self === 'object' && self.self === self;\r\n}\r\nfunction isBrowserExtension() {\r\n const runtime = typeof chrome === 'object'\r\n ? chrome.runtime\r\n : typeof browser === 'object'\r\n ? browser.runtime\r\n : undefined;\r\n return typeof runtime === 'object' && runtime.id !== undefined;\r\n}\r\n/**\r\n * Detect React Native.\r\n *\r\n * @return true if ReactNative environment is detected.\r\n */\r\nfunction isReactNative() {\r\n return (typeof navigator === 'object' && navigator['product'] === 'ReactNative');\r\n}\r\n/** Detects Electron apps. */\r\nfunction isElectron() {\r\n return getUA().indexOf('Electron/') >= 0;\r\n}\r\n/** Detects Internet Explorer. */\r\nfunction isIE() {\r\n const ua = getUA();\r\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\r\n}\r\n/** Detects Universal Windows Platform apps. */\r\nfunction isUWP() {\r\n return getUA().indexOf('MSAppHost/') >= 0;\r\n}\r\n/**\r\n * Detect whether the current SDK build is the Node version.\r\n *\r\n * @return true if it's the Node SDK build.\r\n */\r\nfunction isNodeSdk() {\r\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\r\n}\r\n/** Returns true if we are running in Safari. */\r\nfunction isSafari() {\r\n return (!isNode() &&\r\n navigator.userAgent.includes('Safari') &&\r\n !navigator.userAgent.includes('Chrome'));\r\n}\r\n/**\r\n * This method checks if indexedDB is supported by current browser/service worker context\r\n * @return true if indexedDB is supported by current browser/service worker context\r\n */\r\nfunction isIndexedDBAvailable() {\r\n try {\r\n return typeof indexedDB === 'object';\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n}\r\n/**\r\n * This method validates browser/sw context for indexedDB by opening a dummy indexedDB database and reject\r\n * if errors occur during the database open operation.\r\n *\r\n * @throws exception if current browser/sw context can't run idb.open (ex: Safari iframe, Firefox\r\n * private browsing)\r\n */\r\nfunction validateIndexedDBOpenable() {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n let preExist = true;\r\n const DB_CHECK_NAME = 'validate-browser-context-for-indexeddb-analytics-module';\r\n const request = self.indexedDB.open(DB_CHECK_NAME);\r\n request.onsuccess = () => {\r\n request.result.close();\r\n // delete database only when it doesn't pre-exist\r\n if (!preExist) {\r\n self.indexedDB.deleteDatabase(DB_CHECK_NAME);\r\n }\r\n resolve(true);\r\n };\r\n request.onupgradeneeded = () => {\r\n preExist = false;\r\n };\r\n request.onerror = () => {\r\n var _a;\r\n reject(((_a = request.error) === null || _a === void 0 ? void 0 : _a.message) || '');\r\n };\r\n }\r\n catch (error) {\r\n reject(error);\r\n }\r\n });\r\n}\r\n/**\r\n *\r\n * This method checks whether cookie is enabled within current browser\r\n * @return true if cookie is enabled within current browser\r\n */\r\nfunction areCookiesEnabled() {\r\n if (typeof navigator === 'undefined' || !navigator.cookieEnabled) {\r\n return false;\r\n }\r\n return true;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Standardized Firebase Error.\r\n *\r\n * Usage:\r\n *\r\n * // Typescript string literals for type-safe codes\r\n * type Err =\r\n * 'unknown' |\r\n * 'object-not-found'\r\n * ;\r\n *\r\n * // Closure enum for type-safe error codes\r\n * // at-enum {string}\r\n * var Err = {\r\n * UNKNOWN: 'unknown',\r\n * OBJECT_NOT_FOUND: 'object-not-found',\r\n * }\r\n *\r\n * let errors: Map = {\r\n * 'generic-error': \"Unknown error\",\r\n * 'file-not-found': \"Could not find file: {$file}\",\r\n * };\r\n *\r\n * // Type-safe function - must pass a valid error code as param.\r\n * let error = new ErrorFactory('service', 'Service', errors);\r\n *\r\n * ...\r\n * throw error.create(Err.GENERIC);\r\n * ...\r\n * throw error.create(Err.FILE_NOT_FOUND, {'file': fileName});\r\n * ...\r\n * // Service: Could not file file: foo.txt (service/file-not-found).\r\n *\r\n * catch (e) {\r\n * assert(e.message === \"Could not find file: foo.txt.\");\r\n * if ((e as FirebaseError)?.code === 'service/file-not-found') {\r\n * console.log(\"Could not read file: \" + e['file']);\r\n * }\r\n * }\r\n */\r\nconst ERROR_NAME = 'FirebaseError';\r\n// Based on code from:\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\r\nclass FirebaseError extends Error {\r\n constructor(\r\n /** The error code for this error. */\r\n code, message, \r\n /** Custom data for this error. */\r\n customData) {\r\n super(message);\r\n this.code = code;\r\n this.customData = customData;\r\n /** The custom name for all FirebaseErrors. */\r\n this.name = ERROR_NAME;\r\n // Fix For ES5\r\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\n Object.setPrototypeOf(this, FirebaseError.prototype);\r\n // Maintains proper stack trace for where our error was thrown.\r\n // Only available on V8.\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, ErrorFactory.prototype.create);\r\n }\r\n }\r\n}\r\nclass ErrorFactory {\r\n constructor(service, serviceName, errors) {\r\n this.service = service;\r\n this.serviceName = serviceName;\r\n this.errors = errors;\r\n }\r\n create(code, ...data) {\r\n const customData = data[0] || {};\r\n const fullCode = `${this.service}/${code}`;\r\n const template = this.errors[code];\r\n const message = template ? replaceTemplate(template, customData) : 'Error';\r\n // Service Name: Error message (service/code).\r\n const fullMessage = `${this.serviceName}: ${message} (${fullCode}).`;\r\n const error = new FirebaseError(fullCode, fullMessage, customData);\r\n return error;\r\n }\r\n}\r\nfunction replaceTemplate(template, data) {\r\n return template.replace(PATTERN, (_, key) => {\r\n const value = data[key];\r\n return value != null ? String(value) : `<${key}?>`;\r\n });\r\n}\r\nconst PATTERN = /\\{\\$([^}]+)}/g;\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Evaluates a JSON string into a javascript object.\r\n *\r\n * @param {string} str A string containing JSON.\r\n * @return {*} The javascript object representing the specified JSON.\r\n */\r\nfunction jsonEval(str) {\r\n return JSON.parse(str);\r\n}\r\n/**\r\n * Returns JSON representing a javascript object.\r\n * @param {*} data Javascript object to be stringified.\r\n * @return {string} The JSON contents of the object.\r\n */\r\nfunction stringify(data) {\r\n return JSON.stringify(data);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Decodes a Firebase auth. token into constituent parts.\r\n *\r\n * Notes:\r\n * - May return with invalid / incomplete claims if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst decode = function (token) {\r\n let header = {}, claims = {}, data = {}, signature = '';\r\n try {\r\n const parts = token.split('.');\r\n header = jsonEval(base64Decode(parts[0]) || '');\r\n claims = jsonEval(base64Decode(parts[1]) || '');\r\n signature = parts[2];\r\n data = claims['d'] || {};\r\n delete claims['d'];\r\n }\r\n catch (e) { }\r\n return {\r\n header,\r\n claims,\r\n data,\r\n signature\r\n };\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its time-based claims. Will return true if the\r\n * token is within the time window authorized by the 'nbf' (not-before) and 'iat' (issued-at) claims.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidTimestamp = function (token) {\r\n const claims = decode(token).claims;\r\n const now = Math.floor(new Date().getTime() / 1000);\r\n let validSince = 0, validUntil = 0;\r\n if (typeof claims === 'object') {\r\n if (claims.hasOwnProperty('nbf')) {\r\n validSince = claims['nbf'];\r\n }\r\n else if (claims.hasOwnProperty('iat')) {\r\n validSince = claims['iat'];\r\n }\r\n if (claims.hasOwnProperty('exp')) {\r\n validUntil = claims['exp'];\r\n }\r\n else {\r\n // token will expire after 24h by default\r\n validUntil = validSince + 86400;\r\n }\r\n }\r\n return (!!now &&\r\n !!validSince &&\r\n !!validUntil &&\r\n now >= validSince &&\r\n now <= validUntil);\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and returns its issued at time if valid, null otherwise.\r\n *\r\n * Notes:\r\n * - May return null if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst issuedAtTime = function (token) {\r\n const claims = decode(token).claims;\r\n if (typeof claims === 'object' && claims.hasOwnProperty('iat')) {\r\n return claims['iat'];\r\n }\r\n return null;\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its format. Expects a valid issued-at time.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidFormat = function (token) {\r\n const decoded = decode(token), claims = decoded.claims;\r\n return !!claims && typeof claims === 'object' && claims.hasOwnProperty('iat');\r\n};\r\n/**\r\n * Attempts to peer into an auth token and determine if it's an admin auth token by looking at the claims portion.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isAdmin = function (token) {\r\n const claims = decode(token).claims;\r\n return typeof claims === 'object' && claims['admin'] === true;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction contains(obj, key) {\r\n return Object.prototype.hasOwnProperty.call(obj, key);\r\n}\r\nfunction safeGet(obj, key) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return obj[key];\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\nfunction isEmpty(obj) {\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction map(obj, fn, contextObj) {\r\n const res = {};\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n res[key] = fn.call(contextObj, obj[key], key, obj);\r\n }\r\n }\r\n return res;\r\n}\r\n/**\r\n * Deep equal two objects. Support Arrays and Objects.\r\n */\r\nfunction deepEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n const aKeys = Object.keys(a);\r\n const bKeys = Object.keys(b);\r\n for (const k of aKeys) {\r\n if (!bKeys.includes(k)) {\r\n return false;\r\n }\r\n const aProp = a[k];\r\n const bProp = b[k];\r\n if (isObject(aProp) && isObject(bProp)) {\r\n if (!deepEqual(aProp, bProp)) {\r\n return false;\r\n }\r\n }\r\n else if (aProp !== bProp) {\r\n return false;\r\n }\r\n }\r\n for (const k of bKeys) {\r\n if (!aKeys.includes(k)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isObject(thing) {\r\n return thing !== null && typeof thing === 'object';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Rejects if the given promise doesn't resolve in timeInMS milliseconds.\r\n * @internal\r\n */\r\nfunction promiseWithTimeout(promise, timeInMS = 2000) {\r\n const deferredPromise = new Deferred();\r\n setTimeout(() => deferredPromise.reject('timeout!'), timeInMS);\r\n promise.then(deferredPromise.resolve, deferredPromise.reject);\r\n return deferredPromise.promise;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a querystring-formatted string (e.g. &arg=val&arg2=val2) from a\r\n * params object (e.g. {arg: 'val', arg2: 'val2'})\r\n * Note: You must prepend it with ? when adding it to a URL.\r\n */\r\nfunction querystring(querystringParams) {\r\n const params = [];\r\n for (const [key, value] of Object.entries(querystringParams)) {\r\n if (Array.isArray(value)) {\r\n value.forEach(arrayVal => {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(arrayVal));\r\n });\r\n }\r\n else {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\r\n }\r\n }\r\n return params.length ? '&' + params.join('&') : '';\r\n}\r\n/**\r\n * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object\r\n * (e.g. {arg: 'val', arg2: 'val2'})\r\n */\r\nfunction querystringDecode(querystring) {\r\n const obj = {};\r\n const tokens = querystring.replace(/^\\?/, '').split('&');\r\n tokens.forEach(token => {\r\n if (token) {\r\n const [key, value] = token.split('=');\r\n obj[decodeURIComponent(key)] = decodeURIComponent(value);\r\n }\r\n });\r\n return obj;\r\n}\r\n/**\r\n * Extract the query string part of a URL, including the leading question mark (if present).\r\n */\r\nfunction extractQuerystring(url) {\r\n const queryStart = url.indexOf('?');\r\n if (!queryStart) {\r\n return '';\r\n }\r\n const fragmentStart = url.indexOf('#', queryStart);\r\n return url.substring(queryStart, fragmentStart > 0 ? fragmentStart : undefined);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview SHA-1 cryptographic hash.\r\n * Variable names follow the notation in FIPS PUB 180-3:\r\n * http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf.\r\n *\r\n * Usage:\r\n * var sha1 = new sha1();\r\n * sha1.update(bytes);\r\n * var hash = sha1.digest();\r\n *\r\n * Performance:\r\n * Chrome 23: ~400 Mbit/s\r\n * Firefox 16: ~250 Mbit/s\r\n *\r\n */\r\n/**\r\n * SHA-1 cryptographic hash constructor.\r\n *\r\n * The properties declared here are discussed in the above algorithm document.\r\n * @constructor\r\n * @final\r\n * @struct\r\n */\r\nclass Sha1 {\r\n constructor() {\r\n /**\r\n * Holds the previous values of accumulated variables a-e in the compress_\r\n * function.\r\n * @private\r\n */\r\n this.chain_ = [];\r\n /**\r\n * A buffer holding the partially computed hash result.\r\n * @private\r\n */\r\n this.buf_ = [];\r\n /**\r\n * An array of 80 bytes, each a part of the message to be hashed. Referred to\r\n * as the message schedule in the docs.\r\n * @private\r\n */\r\n this.W_ = [];\r\n /**\r\n * Contains data needed to pad messages less than 64 bytes.\r\n * @private\r\n */\r\n this.pad_ = [];\r\n /**\r\n * @private {number}\r\n */\r\n this.inbuf_ = 0;\r\n /**\r\n * @private {number}\r\n */\r\n this.total_ = 0;\r\n this.blockSize = 512 / 8;\r\n this.pad_[0] = 128;\r\n for (let i = 1; i < this.blockSize; ++i) {\r\n this.pad_[i] = 0;\r\n }\r\n this.reset();\r\n }\r\n reset() {\r\n this.chain_[0] = 0x67452301;\r\n this.chain_[1] = 0xefcdab89;\r\n this.chain_[2] = 0x98badcfe;\r\n this.chain_[3] = 0x10325476;\r\n this.chain_[4] = 0xc3d2e1f0;\r\n this.inbuf_ = 0;\r\n this.total_ = 0;\r\n }\r\n /**\r\n * Internal compress helper function.\r\n * @param buf Block to compress.\r\n * @param offset Offset of the block in the buffer.\r\n * @private\r\n */\r\n compress_(buf, offset) {\r\n if (!offset) {\r\n offset = 0;\r\n }\r\n const W = this.W_;\r\n // get 16 big endian words\r\n if (typeof buf === 'string') {\r\n for (let i = 0; i < 16; i++) {\r\n // TODO(user): [bug 8140122] Recent versions of Safari for Mac OS and iOS\r\n // have a bug that turns the post-increment ++ operator into pre-increment\r\n // during JIT compilation. We have code that depends heavily on SHA-1 for\r\n // correctness and which is affected by this bug, so I've removed all uses\r\n // of post-increment ++ in which the result value is used. We can revert\r\n // this change once the Safari bug\r\n // (https://bugs.webkit.org/show_bug.cgi?id=109036) has been fixed and\r\n // most clients have been updated.\r\n W[i] =\r\n (buf.charCodeAt(offset) << 24) |\r\n (buf.charCodeAt(offset + 1) << 16) |\r\n (buf.charCodeAt(offset + 2) << 8) |\r\n buf.charCodeAt(offset + 3);\r\n offset += 4;\r\n }\r\n }\r\n else {\r\n for (let i = 0; i < 16; i++) {\r\n W[i] =\r\n (buf[offset] << 24) |\r\n (buf[offset + 1] << 16) |\r\n (buf[offset + 2] << 8) |\r\n buf[offset + 3];\r\n offset += 4;\r\n }\r\n }\r\n // expand to 80 words\r\n for (let i = 16; i < 80; i++) {\r\n const t = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\r\n W[i] = ((t << 1) | (t >>> 31)) & 0xffffffff;\r\n }\r\n let a = this.chain_[0];\r\n let b = this.chain_[1];\r\n let c = this.chain_[2];\r\n let d = this.chain_[3];\r\n let e = this.chain_[4];\r\n let f, k;\r\n // TODO(user): Try to unroll this loop to speed up the computation.\r\n for (let i = 0; i < 80; i++) {\r\n if (i < 40) {\r\n if (i < 20) {\r\n f = d ^ (b & (c ^ d));\r\n k = 0x5a827999;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0x6ed9eba1;\r\n }\r\n }\r\n else {\r\n if (i < 60) {\r\n f = (b & c) | (d & (b | c));\r\n k = 0x8f1bbcdc;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0xca62c1d6;\r\n }\r\n }\r\n const t = (((a << 5) | (a >>> 27)) + f + e + k + W[i]) & 0xffffffff;\r\n e = d;\r\n d = c;\r\n c = ((b << 30) | (b >>> 2)) & 0xffffffff;\r\n b = a;\r\n a = t;\r\n }\r\n this.chain_[0] = (this.chain_[0] + a) & 0xffffffff;\r\n this.chain_[1] = (this.chain_[1] + b) & 0xffffffff;\r\n this.chain_[2] = (this.chain_[2] + c) & 0xffffffff;\r\n this.chain_[3] = (this.chain_[3] + d) & 0xffffffff;\r\n this.chain_[4] = (this.chain_[4] + e) & 0xffffffff;\r\n }\r\n update(bytes, length) {\r\n // TODO(johnlenz): tighten the function signature and remove this check\r\n if (bytes == null) {\r\n return;\r\n }\r\n if (length === undefined) {\r\n length = bytes.length;\r\n }\r\n const lengthMinusBlock = length - this.blockSize;\r\n let n = 0;\r\n // Using local instead of member variables gives ~5% speedup on Firefox 16.\r\n const buf = this.buf_;\r\n let inbuf = this.inbuf_;\r\n // The outer while loop should execute at most twice.\r\n while (n < length) {\r\n // When we have no data in the block to top up, we can directly process the\r\n // input buffer (assuming it contains sufficient data). This gives ~25%\r\n // speedup on Chrome 23 and ~15% speedup on Firefox 16, but requires that\r\n // the data is provided in large chunks (or in multiples of 64 bytes).\r\n if (inbuf === 0) {\r\n while (n <= lengthMinusBlock) {\r\n this.compress_(bytes, n);\r\n n += this.blockSize;\r\n }\r\n }\r\n if (typeof bytes === 'string') {\r\n while (n < length) {\r\n buf[inbuf] = bytes.charCodeAt(n);\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n while (n < length) {\r\n buf[inbuf] = bytes[n];\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n this.inbuf_ = inbuf;\r\n this.total_ += length;\r\n }\r\n /** @override */\r\n digest() {\r\n const digest = [];\r\n let totalBits = this.total_ * 8;\r\n // Add pad 0x80 0x00*.\r\n if (this.inbuf_ < 56) {\r\n this.update(this.pad_, 56 - this.inbuf_);\r\n }\r\n else {\r\n this.update(this.pad_, this.blockSize - (this.inbuf_ - 56));\r\n }\r\n // Add # bits.\r\n for (let i = this.blockSize - 1; i >= 56; i--) {\r\n this.buf_[i] = totalBits & 255;\r\n totalBits /= 256; // Don't use bit-shifting here!\r\n }\r\n this.compress_(this.buf_);\r\n let n = 0;\r\n for (let i = 0; i < 5; i++) {\r\n for (let j = 24; j >= 0; j -= 8) {\r\n digest[n] = (this.chain_[i] >> j) & 255;\r\n ++n;\r\n }\r\n }\r\n return digest;\r\n }\r\n}\n\n/**\r\n * Helper to make a Subscribe function (just like Promise helps make a\r\n * Thenable).\r\n *\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\nfunction createSubscribe(executor, onNoObservers) {\r\n const proxy = new ObserverProxy(executor, onNoObservers);\r\n return proxy.subscribe.bind(proxy);\r\n}\r\n/**\r\n * Implement fan-out for any number of Observers attached via a subscribe\r\n * function.\r\n */\r\nclass ObserverProxy {\r\n /**\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\n constructor(executor, onNoObservers) {\r\n this.observers = [];\r\n this.unsubscribes = [];\r\n this.observerCount = 0;\r\n // Micro-task scheduling by calling task.then().\r\n this.task = Promise.resolve();\r\n this.finalized = false;\r\n this.onNoObservers = onNoObservers;\r\n // Call the executor asynchronously so subscribers that are called\r\n // synchronously after the creation of the subscribe function\r\n // can still receive the very first value generated in the executor.\r\n this.task\r\n .then(() => {\r\n executor(this);\r\n })\r\n .catch(e => {\r\n this.error(e);\r\n });\r\n }\r\n next(value) {\r\n this.forEachObserver((observer) => {\r\n observer.next(value);\r\n });\r\n }\r\n error(error) {\r\n this.forEachObserver((observer) => {\r\n observer.error(error);\r\n });\r\n this.close(error);\r\n }\r\n complete() {\r\n this.forEachObserver((observer) => {\r\n observer.complete();\r\n });\r\n this.close();\r\n }\r\n /**\r\n * Subscribe function that can be used to add an Observer to the fan-out list.\r\n *\r\n * - We require that no event is sent to a subscriber sychronously to their\r\n * call to subscribe().\r\n */\r\n subscribe(nextOrObserver, error, complete) {\r\n let observer;\r\n if (nextOrObserver === undefined &&\r\n error === undefined &&\r\n complete === undefined) {\r\n throw new Error('Missing Observer.');\r\n }\r\n // Assemble an Observer object when passed as callback functions.\r\n if (implementsAnyMethods(nextOrObserver, [\r\n 'next',\r\n 'error',\r\n 'complete'\r\n ])) {\r\n observer = nextOrObserver;\r\n }\r\n else {\r\n observer = {\r\n next: nextOrObserver,\r\n error,\r\n complete\r\n };\r\n }\r\n if (observer.next === undefined) {\r\n observer.next = noop;\r\n }\r\n if (observer.error === undefined) {\r\n observer.error = noop;\r\n }\r\n if (observer.complete === undefined) {\r\n observer.complete = noop;\r\n }\r\n const unsub = this.unsubscribeOne.bind(this, this.observers.length);\r\n // Attempt to subscribe to a terminated Observable - we\r\n // just respond to the Observer with the final error or complete\r\n // event.\r\n if (this.finalized) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n try {\r\n if (this.finalError) {\r\n observer.error(this.finalError);\r\n }\r\n else {\r\n observer.complete();\r\n }\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n return;\r\n });\r\n }\r\n this.observers.push(observer);\r\n return unsub;\r\n }\r\n // Unsubscribe is synchronous - we guarantee that no events are sent to\r\n // any unsubscribed Observer.\r\n unsubscribeOne(i) {\r\n if (this.observers === undefined || this.observers[i] === undefined) {\r\n return;\r\n }\r\n delete this.observers[i];\r\n this.observerCount -= 1;\r\n if (this.observerCount === 0 && this.onNoObservers !== undefined) {\r\n this.onNoObservers(this);\r\n }\r\n }\r\n forEachObserver(fn) {\r\n if (this.finalized) {\r\n // Already closed by previous event....just eat the additional values.\r\n return;\r\n }\r\n // Since sendOne calls asynchronously - there is no chance that\r\n // this.observers will become undefined.\r\n for (let i = 0; i < this.observers.length; i++) {\r\n this.sendOne(i, fn);\r\n }\r\n }\r\n // Call the Observer via one of it's callback function. We are careful to\r\n // confirm that the observe has not been unsubscribed since this asynchronous\r\n // function had been queued.\r\n sendOne(i, fn) {\r\n // Execute the callback asynchronously\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n if (this.observers !== undefined && this.observers[i] !== undefined) {\r\n try {\r\n fn(this.observers[i]);\r\n }\r\n catch (e) {\r\n // Ignore exceptions raised in Observers or missing methods of an\r\n // Observer.\r\n // Log error to console. b/31404806\r\n if (typeof console !== 'undefined' && console.error) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n close(err) {\r\n if (this.finalized) {\r\n return;\r\n }\r\n this.finalized = true;\r\n if (err !== undefined) {\r\n this.finalError = err;\r\n }\r\n // Proxy is no longer needed - garbage collect references\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n this.observers = undefined;\r\n this.onNoObservers = undefined;\r\n });\r\n }\r\n}\r\n/** Turn synchronous function into one called asynchronously. */\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction async(fn, onError) {\r\n return (...args) => {\r\n Promise.resolve(true)\r\n .then(() => {\r\n fn(...args);\r\n })\r\n .catch((error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n };\r\n}\r\n/**\r\n * Return true if the object passed in implements any of the named methods.\r\n */\r\nfunction implementsAnyMethods(obj, methods) {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return false;\r\n }\r\n for (const method of methods) {\r\n if (method in obj && typeof obj[method] === 'function') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction noop() {\r\n // do nothing\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Check to make sure the appropriate number of arguments are provided for a public function.\r\n * Throws an error if it fails.\r\n *\r\n * @param fnName The function name\r\n * @param minCount The minimum number of arguments to allow for the function call\r\n * @param maxCount The maximum number of argument to allow for the function call\r\n * @param argCount The actual number of arguments provided.\r\n */\r\nconst validateArgCount = function (fnName, minCount, maxCount, argCount) {\r\n let argError;\r\n if (argCount < minCount) {\r\n argError = 'at least ' + minCount;\r\n }\r\n else if (argCount > maxCount) {\r\n argError = maxCount === 0 ? 'none' : 'no more than ' + maxCount;\r\n }\r\n if (argError) {\r\n const error = fnName +\r\n ' failed: Was called with ' +\r\n argCount +\r\n (argCount === 1 ? ' argument.' : ' arguments.') +\r\n ' Expects ' +\r\n argError +\r\n '.';\r\n throw new Error(error);\r\n }\r\n};\r\n/**\r\n * Generates a string to prefix an error message about failed argument validation\r\n *\r\n * @param fnName The function name\r\n * @param argName The name of the argument\r\n * @return The prefix to add to the error thrown for validation.\r\n */\r\nfunction errorPrefix(fnName, argName) {\r\n return `${fnName} failed: ${argName} argument `;\r\n}\r\n/**\r\n * @param fnName\r\n * @param argumentNumber\r\n * @param namespace\r\n * @param optional\r\n */\r\nfunction validateNamespace(fnName, namespace, optional) {\r\n if (optional && !namespace) {\r\n return;\r\n }\r\n if (typeof namespace !== 'string') {\r\n //TODO: I should do more validation here. We only allow certain chars in namespaces.\r\n throw new Error(errorPrefix(fnName, 'namespace') + 'must be a valid firebase namespace.');\r\n }\r\n}\r\nfunction validateCallback(fnName, argumentName, \r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\ncallback, optional) {\r\n if (optional && !callback) {\r\n return;\r\n }\r\n if (typeof callback !== 'function') {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid function.');\r\n }\r\n}\r\nfunction validateContextObject(fnName, argumentName, context, optional) {\r\n if (optional && !context) {\r\n return;\r\n }\r\n if (typeof context !== 'object' || context === null) {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid context object.');\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Code originally came from goog.crypt.stringToUtf8ByteArray, but for some reason they\r\n// automatically replaced '\\r\\n' with '\\n', and they didn't handle surrogate pairs,\r\n// so it's been modified.\r\n// Note that not all Unicode characters appear as single characters in JavaScript strings.\r\n// fromCharCode returns the UTF-16 encoding of a character - so some Unicode characters\r\n// use 2 characters in Javascript. All 4-byte UTF-8 characters begin with a first\r\n// character in the range 0xD800 - 0xDBFF (the first character of a so-called surrogate\r\n// pair).\r\n// See http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3\r\n/**\r\n * @param {string} str\r\n * @return {Array}\r\n */\r\nconst stringToByteArray = function (str) {\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n // Is this the lead surrogate in a surrogate pair?\r\n if (c >= 0xd800 && c <= 0xdbff) {\r\n const high = c - 0xd800; // the high 10 bits.\r\n i++;\r\n assert(i < str.length, 'Surrogate pair missing trail surrogate.');\r\n const low = str.charCodeAt(i) - 0xdc00; // the low 10 bits.\r\n c = 0x10000 + (high << 10) + low;\r\n }\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if (c < 65536) {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Calculate length without actually converting; useful for doing cheaper validation.\r\n * @param {string} str\r\n * @return {number}\r\n */\r\nconst stringLength = function (str) {\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n const c = str.charCodeAt(i);\r\n if (c < 128) {\r\n p++;\r\n }\r\n else if (c < 2048) {\r\n p += 2;\r\n }\r\n else if (c >= 0xd800 && c <= 0xdbff) {\r\n // Lead surrogate of a surrogate pair. The pair together will take 4 bytes to represent.\r\n p += 4;\r\n i++; // skip trail surrogate.\r\n }\r\n else {\r\n p += 3;\r\n }\r\n }\r\n return p;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Copied from https://stackoverflow.com/a/2117523\r\n * Generates a new uuid.\r\n * @public\r\n */\r\nconst uuidv4 = function () {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {\r\n const r = (Math.random() * 16) | 0, v = c === 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n};\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The amount of milliseconds to exponentially increase.\r\n */\r\nconst DEFAULT_INTERVAL_MILLIS = 1000;\r\n/**\r\n * The factor to backoff by.\r\n * Should be a number greater than 1.\r\n */\r\nconst DEFAULT_BACKOFF_FACTOR = 2;\r\n/**\r\n * The maximum milliseconds to increase to.\r\n *\r\n *

Visible for testing\r\n */\r\nconst MAX_VALUE_MILLIS = 4 * 60 * 60 * 1000; // Four hours, like iOS and Android.\r\n/**\r\n * The percentage of backoff time to randomize by.\r\n * See\r\n * http://go/safe-client-behavior#step-1-determine-the-appropriate-retry-interval-to-handle-spike-traffic\r\n * for context.\r\n *\r\n *

Visible for testing\r\n */\r\nconst RANDOM_FACTOR = 0.5;\r\n/**\r\n * Based on the backoff method from\r\n * https://github.com/google/closure-library/blob/master/closure/goog/math/exponentialbackoff.js.\r\n * Extracted here so we don't need to pass metadata and a stateful ExponentialBackoff object around.\r\n */\r\nfunction calculateBackoffMillis(backoffCount, intervalMillis = DEFAULT_INTERVAL_MILLIS, backoffFactor = DEFAULT_BACKOFF_FACTOR) {\r\n // Calculates an exponentially increasing value.\r\n // Deviation: calculates value from count and a constant interval, so we only need to save value\r\n // and count to restore state.\r\n const currBaseValue = intervalMillis * Math.pow(backoffFactor, backoffCount);\r\n // A random \"fuzz\" to avoid waves of retries.\r\n // Deviation: randomFactor is required.\r\n const randomWait = Math.round(\r\n // A fraction of the backoff value to add/subtract.\r\n // Deviation: changes multiplication order to improve readability.\r\n RANDOM_FACTOR *\r\n currBaseValue *\r\n // A random float (rounded to int by Math.round above) in the range [-1, 1]. Determines\r\n // if we add or subtract.\r\n (Math.random() - 0.5) *\r\n 2);\r\n // Limits backoff to max to avoid effectively permanent backoff.\r\n return Math.min(MAX_VALUE_MILLIS, currBaseValue + randomWait);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provide English ordinal letters after a number\r\n */\r\nfunction ordinal(i) {\r\n if (!Number.isFinite(i)) {\r\n return `${i}`;\r\n }\r\n return i + indicator(i);\r\n}\r\nfunction indicator(i) {\r\n i = Math.abs(i);\r\n const cent = i % 100;\r\n if (cent >= 10 && cent <= 20) {\r\n return 'th';\r\n }\r\n const dec = i % 10;\r\n if (dec === 1) {\r\n return 'st';\r\n }\r\n if (dec === 2) {\r\n return 'nd';\r\n }\r\n if (dec === 3) {\r\n return 'rd';\r\n }\r\n return 'th';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getModularInstance(service) {\r\n if (service && service._delegate) {\r\n return service._delegate;\r\n }\r\n else {\r\n return service;\r\n }\r\n}\n\nexport { CONSTANTS, DecodeBase64StringError, Deferred, ErrorFactory, FirebaseError, MAX_VALUE_MILLIS, RANDOM_FACTOR, Sha1, areCookiesEnabled, assert, assertionError, async, base64, base64Decode, base64Encode, base64urlEncodeWithoutPadding, calculateBackoffMillis, contains, createMockUserToken, createSubscribe, decode, deepCopy, deepEqual, deepExtend, errorPrefix, extractQuerystring, getDefaultAppConfig, getDefaultEmulatorHost, getDefaultEmulatorHostnameAndPort, getDefaults, getExperimentalSetting, getGlobal, getModularInstance, getUA, isAdmin, isBrowser, isBrowserExtension, isElectron, isEmpty, isIE, isIndexedDBAvailable, isMobileCordova, isNode, isNodeSdk, isReactNative, isSafari, isUWP, isValidFormat, isValidTimestamp, issuedAtTime, jsonEval, map, ordinal, promiseWithTimeout, querystring, querystringDecode, safeGet, stringLength, stringToByteArray, stringify, uuidv4, validateArgCount, validateCallback, validateContextObject, validateIndexedDBOpenable, validateNamespace };\n//# sourceMappingURL=index.esm2017.js.map\n","/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under the MIT license\n */\n\nif (typeof jQuery === 'undefined') {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery')\n}\n\n+function ($) {\n 'use strict';\n var version = $.fn.jquery.split(' ')[0].split('.')\n if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')\n }\n}(jQuery);\n\n/* ========================================================================\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/* ========================================================================\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/* ========================================================================\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/* ========================================================================\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/* ========================================================================\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/* ========================================================================\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/* ========================================================================\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/* ========================================================================\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/* ========================================================================\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/* ========================================================================\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/* ========================================================================\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/* ========================================================================\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","/* jshint node: true */\n\n/**\n * Unobtrusive scripting adapter for jQuery\n * https://github.com/rails/jquery-ujs\n *\n * Requires jQuery 1.8.0 or later.\n *\n * Released under the MIT license\n *\n */\n\n(function() {\n 'use strict';\n\n var jqueryUjsInit = function($, undefined) {\n\n // Cut down on the number of issues from people inadvertently including jquery_ujs twice\n // by detecting and raising an error when it happens.\n if ( $.rails !== undefined ) {\n $.error('jquery-ujs has already been loaded!');\n }\n\n // Shorthand to make it a little easier to call public rails functions from within rails.js\n var rails;\n var $document = $(document);\n\n $.rails = rails = {\n // Link elements bound by jquery-ujs\n linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n\n // Button elements bound by jquery-ujs\n buttonClickSelector: 'button[data-remote]:not([form]):not(form button), button[data-confirm]:not([form]):not(form button)',\n\n // Select elements bound by jquery-ujs\n inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n\n // Form elements bound by jquery-ujs\n formSubmitSelector: 'form:not([data-turbo=true])',\n\n // Form input elements bound by jquery-ujs\n formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n\n // Form input elements disabled during form submission\n disableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n\n // Form input elements re-enabled after form submission\n enableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n\n // Form required input elements\n requiredInputSelector: 'input[name][required]:not([disabled]), textarea[name][required]:not([disabled])',\n\n // Form file input elements\n fileInputSelector: 'input[name][type=file]:not([disabled])',\n\n // Link onClick disable selector with possible reenable after remote submission\n linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n\n // Button onClick disable selector with possible reenable after remote submission\n buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]',\n\n // Up-to-date Cross-Site Request Forgery token\n csrfToken: function() {\n return $('meta[name=csrf-token]').attr('content');\n },\n\n // URL param that must contain the CSRF token\n csrfParam: function() {\n return $('meta[name=csrf-param]').attr('content');\n },\n\n // Make sure that every Ajax request sends the CSRF token\n CSRFProtection: function(xhr) {\n var token = rails.csrfToken();\n if (token) xhr.setRequestHeader('X-CSRF-Token', token);\n },\n\n // Make sure that all forms have actual up-to-date tokens (cached forms contain old ones)\n refreshCSRFTokens: function(){\n $('form input[name=\"' + rails.csrfParam() + '\"]').val(rails.csrfToken());\n },\n\n // Triggers an event on an element and returns false if the event result is false\n fire: function(obj, name, data) {\n var event = $.Event(name);\n obj.trigger(event, data);\n return event.result !== false;\n },\n\n // Default confirm dialog, may be overridden with custom confirm dialog in $.rails.confirm\n confirm: function(message) {\n return confirm(message);\n },\n\n // Default ajax function, may be overridden with custom function in $.rails.ajax\n ajax: function(options) {\n return $.ajax(options);\n },\n\n // Default way to get an element's href. May be overridden at $.rails.href.\n href: function(element) {\n return element[0].href;\n },\n\n // Checks \"data-remote\" if true to handle the request through a XHR request.\n isRemote: function(element) {\n return element.data('remote') !== undefined && element.data('remote') !== false;\n },\n\n // Submits \"remote\" forms and links with ajax\n handleRemote: function(element) {\n var method, url, data, withCredentials, dataType, options;\n\n if (rails.fire(element, 'ajax:before')) {\n withCredentials = element.data('with-credentials') || null;\n dataType = element.data('type') || ($.ajaxSettings && $.ajaxSettings.dataType);\n\n if (element.is('form')) {\n method = element.data('ujs:submit-button-formmethod') || element.attr('method');\n url = element.data('ujs:submit-button-formaction') || element.attr('action');\n data = $(element[0]).serializeArray();\n // memoized value from clicked submit button\n var button = element.data('ujs:submit-button');\n if (button) {\n data.push(button);\n element.data('ujs:submit-button', null);\n }\n element.data('ujs:submit-button-formmethod', null);\n element.data('ujs:submit-button-formaction', null);\n } else if (element.is(rails.inputChangeSelector)) {\n method = element.data('method');\n url = element.data('url');\n data = element.serialize();\n if (element.data('params')) data = data + '&' + element.data('params');\n } else if (element.is(rails.buttonClickSelector)) {\n method = element.data('method') || 'get';\n url = element.data('url');\n data = element.serialize();\n if (element.data('params')) data = data + '&' + element.data('params');\n } else {\n method = element.data('method');\n url = rails.href(element);\n data = element.data('params') || null;\n }\n\n options = {\n type: method || 'GET', data: data, dataType: dataType,\n // stopping the \"ajax:beforeSend\" event will cancel the ajax request\n beforeSend: function(xhr, settings) {\n if (settings.dataType === undefined) {\n xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);\n }\n if (rails.fire(element, 'ajax:beforeSend', [xhr, settings])) {\n element.trigger('ajax:send', xhr);\n } else {\n return false;\n }\n },\n success: function(data, status, xhr) {\n element.trigger('ajax:success', [data, status, xhr]);\n },\n complete: function(xhr, status) {\n element.trigger('ajax:complete', [xhr, status]);\n },\n error: function(xhr, status, error) {\n element.trigger('ajax:error', [xhr, status, error]);\n },\n crossDomain: rails.isCrossDomain(url)\n };\n\n // There is no withCredentials for IE6-8 when\n // \"Enable native XMLHTTP support\" is disabled\n if (withCredentials) {\n options.xhrFields = {\n withCredentials: withCredentials\n };\n }\n\n // Only pass url to `ajax` options if not blank\n if (url) { options.url = url; }\n\n return rails.ajax(options);\n } else {\n return false;\n }\n },\n\n // Determines if the request is a cross domain request.\n isCrossDomain: function(url) {\n var originAnchor = document.createElement('a');\n originAnchor.href = location.href;\n var urlAnchor = document.createElement('a');\n\n try {\n urlAnchor.href = url;\n // This is a workaround to a IE bug.\n urlAnchor.href = urlAnchor.href;\n\n // If URL protocol is false or is a string containing a single colon\n // *and* host are false, assume it is not a cross-domain request\n // (should only be the case for IE7 and IE compatibility mode).\n // Otherwise, evaluate protocol and host of the URL against the origin\n // protocol and host.\n return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) ||\n (originAnchor.protocol + '//' + originAnchor.host ===\n urlAnchor.protocol + '//' + urlAnchor.host));\n } catch (e) {\n // If there is an error parsing the URL, assume it is crossDomain.\n return true;\n }\n },\n\n // Handles \"data-method\" on links such as:\n // Delete\n handleMethod: function(link) {\n var href = rails.href(link),\n method = link.data('method'),\n target = link.attr('target'),\n csrfToken = rails.csrfToken(),\n csrfParam = rails.csrfParam(),\n form = $('
'),\n metadataInput = '';\n\n if (csrfParam !== undefined && csrfToken !== undefined && !rails.isCrossDomain(href)) {\n metadataInput += '';\n }\n\n if (target) { form.attr('target', target); }\n\n form.hide().append(metadataInput).appendTo('body');\n form.submit();\n },\n\n // Helper function that returns form elements that match the specified CSS selector\n // If form is actually a \"form\" element this will return associated elements outside the from that have\n // the html form attribute set\n formElements: function(form, selector) {\n return form.is('form') ? $(form[0].elements).filter(selector) : form.find(selector);\n },\n\n /* Disables form elements:\n - Caches element value in 'ujs:enable-with' data store\n - Replaces element text with value of 'data-disable-with' attribute\n - Sets disabled property to true\n */\n disableFormElements: function(form) {\n rails.formElements(form, rails.disableSelector).each(function() {\n rails.disableFormElement($(this));\n });\n },\n\n disableFormElement: function(element) {\n var method, replacement;\n\n method = element.is('button') ? 'html' : 'val';\n replacement = element.data('disable-with');\n\n if (replacement !== undefined) {\n element.data('ujs:enable-with', element[method]());\n element[method](replacement);\n }\n\n element.prop('disabled', true);\n element.data('ujs:disabled', true);\n },\n\n /* Re-enables disabled form elements:\n - Replaces element text with cached value from 'ujs:enable-with' data store (created in `disableFormElements`)\n - Sets disabled property to false\n */\n enableFormElements: function(form) {\n rails.formElements(form, rails.enableSelector).each(function() {\n rails.enableFormElement($(this));\n });\n },\n\n enableFormElement: function(element) {\n var method = element.is('button') ? 'html' : 'val';\n if (element.data('ujs:enable-with') !== undefined) {\n element[method](element.data('ujs:enable-with'));\n element.removeData('ujs:enable-with'); // clean up cache\n }\n element.prop('disabled', false);\n element.removeData('ujs:disabled');\n },\n\n /* For 'data-confirm' attribute:\n - Fires `confirm` event\n - Shows the confirmation dialog\n - Fires the `confirm:complete` event\n\n Returns `true` if no function stops the chain and user chose yes; `false` otherwise.\n Attaching a handler to the element's `confirm` event that returns a `falsy` value cancels the confirmation dialog.\n Attaching a handler to the element's `confirm:complete` event that returns a `falsy` value makes this function\n return false. The `confirm:complete` event is fired whether or not the user answered true or false to the dialog.\n */\n allowAction: function(element) {\n var message = element.data('confirm'),\n answer = false, callback;\n if (!message) { return true; }\n\n if (rails.fire(element, 'confirm')) {\n try {\n answer = rails.confirm(message);\n } catch (e) {\n (console.error || console.log).call(console, e.stack || e);\n }\n callback = rails.fire(element, 'confirm:complete', [answer]);\n }\n return answer && callback;\n },\n\n // Helper function which checks for blank inputs in a form that match the specified CSS selector\n blankInputs: function(form, specifiedSelector, nonBlank) {\n var foundInputs = $(),\n input,\n valueToCheck,\n radiosForNameWithNoneSelected,\n radioName,\n selector = specifiedSelector || 'input,textarea',\n requiredInputs = form.find(selector),\n checkedRadioButtonNames = {};\n\n requiredInputs.each(function() {\n input = $(this);\n if (input.is('input[type=radio]')) {\n\n // Don't count unchecked required radio as blank if other radio with same name is checked,\n // regardless of whether same-name radio input has required attribute or not. The spec\n // states https://www.w3.org/TR/html5/forms.html#the-required-attribute\n radioName = input.attr('name');\n\n // Skip if we've already seen the radio with this name.\n if (!checkedRadioButtonNames[radioName]) {\n\n // If none checked\n if (form.find('input[type=radio]:checked[name=\"' + radioName + '\"]').length === 0) {\n radiosForNameWithNoneSelected = form.find(\n 'input[type=radio][name=\"' + radioName + '\"]');\n foundInputs = foundInputs.add(radiosForNameWithNoneSelected);\n }\n\n // We only need to check each name once.\n checkedRadioButtonNames[radioName] = radioName;\n }\n } else {\n valueToCheck = input.is('input[type=checkbox],input[type=radio]') ? input.is(':checked') : !!input.val();\n if (valueToCheck === nonBlank) {\n foundInputs = foundInputs.add(input);\n }\n }\n });\n return foundInputs.length ? foundInputs : false;\n },\n\n // Helper function which checks for non-blank inputs in a form that match the specified CSS selector\n nonBlankInputs: function(form, specifiedSelector) {\n return rails.blankInputs(form, specifiedSelector, true); // true specifies nonBlank\n },\n\n // Helper function, needed to provide consistent behavior in IE\n stopEverything: function(e) {\n $(e.target).trigger('ujs:everythingStopped');\n e.stopImmediatePropagation();\n return false;\n },\n\n // Replace element's html with the 'data-disable-with' after storing original html\n // and prevent clicking on it\n disableElement: function(element) {\n var replacement = element.data('disable-with');\n\n if (replacement !== undefined) {\n element.data('ujs:enable-with', element.html()); // store enabled state\n element.html(replacement);\n }\n\n element.on('click.railsDisable', function(e) { // prevent further clicking\n return rails.stopEverything(e);\n });\n element.data('ujs:disabled', true);\n },\n\n // Restore element to its original state which was disabled by 'disableElement' above\n enableElement: function(element) {\n if (element.data('ujs:enable-with') !== undefined) {\n element.html(element.data('ujs:enable-with')); // set to old enabled state\n element.removeData('ujs:enable-with'); // clean up cache\n }\n element.off('click.railsDisable'); // enable element\n element.removeData('ujs:disabled');\n }\n };\n\n if (rails.fire($document, 'rails:attachBindings')) {\n\n $.ajaxPrefilter(function(options, originalOptions, xhr){ if ( !options.crossDomain ) { rails.CSRFProtection(xhr); }});\n\n // This event works the same as the load event, except that it fires every\n // time the page is loaded.\n //\n // See https://github.com/rails/jquery-ujs/issues/357\n // See https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching\n $(window).on('pageshow.rails', function () {\n $($.rails.enableSelector).each(function () {\n var element = $(this);\n\n if (element.data('ujs:disabled')) {\n $.rails.enableFormElement(element);\n }\n });\n\n $($.rails.linkDisableSelector).each(function () {\n var element = $(this);\n\n if (element.data('ujs:disabled')) {\n $.rails.enableElement(element);\n }\n });\n });\n\n $document.on('ajax:complete', rails.linkDisableSelector, function() {\n rails.enableElement($(this));\n });\n\n $document.on('ajax:complete', rails.buttonDisableSelector, function() {\n rails.enableFormElement($(this));\n });\n\n $document.on('click.rails', rails.linkClickSelector, function(e) {\n var link = $(this), method = link.data('method'), data = link.data('params'), metaClick = e.metaKey || e.ctrlKey;\n if (!rails.allowAction(link)) return rails.stopEverything(e);\n\n if (!metaClick && link.is(rails.linkDisableSelector)) rails.disableElement(link);\n\n if (rails.isRemote(link)) {\n if (metaClick && (!method || method === 'GET') && !data) { return true; }\n\n var handleRemote = rails.handleRemote(link);\n // Response from rails.handleRemote() will either be false or a deferred object promise.\n if (handleRemote === false) {\n rails.enableElement(link);\n } else {\n handleRemote.fail( function() { rails.enableElement(link); } );\n }\n return false;\n\n } else if (method) {\n rails.handleMethod(link);\n return false;\n }\n });\n\n $document.on('click.rails', rails.buttonClickSelector, function(e) {\n var button = $(this);\n\n if (!rails.allowAction(button) || !rails.isRemote(button)) return rails.stopEverything(e);\n\n if (button.is(rails.buttonDisableSelector)) rails.disableFormElement(button);\n\n var handleRemote = rails.handleRemote(button);\n // Response from rails.handleRemote() will either be false or a deferred object promise.\n if (handleRemote === false) {\n rails.enableFormElement(button);\n } else {\n handleRemote.fail( function() { rails.enableFormElement(button); } );\n }\n return false;\n });\n\n $document.on('change.rails', rails.inputChangeSelector, function(e) {\n var link = $(this);\n if (!rails.allowAction(link) || !rails.isRemote(link)) return rails.stopEverything(e);\n\n rails.handleRemote(link);\n return false;\n });\n\n $document.on('submit.rails', rails.formSubmitSelector, function(e) {\n var form = $(this),\n remote = rails.isRemote(form),\n blankRequiredInputs,\n nonBlankFileInputs;\n\n if (!rails.allowAction(form)) return rails.stopEverything(e);\n\n // Skip other logic when required values are missing or file upload is present\n if (form.attr('novalidate') === undefined) {\n if (form.data('ujs:formnovalidate-button') === undefined) {\n blankRequiredInputs = rails.blankInputs(form, rails.requiredInputSelector, false);\n if (blankRequiredInputs && rails.fire(form, 'ajax:aborted:required', [blankRequiredInputs])) {\n return rails.stopEverything(e);\n }\n } else {\n // Clear the formnovalidate in case the next button click is not on a formnovalidate button\n // Not strictly necessary to do here, since it is also reset on each button click, but just to be certain\n form.data('ujs:formnovalidate-button', undefined);\n }\n }\n\n if (remote) {\n nonBlankFileInputs = rails.nonBlankInputs(form, rails.fileInputSelector);\n if (nonBlankFileInputs) {\n // Slight timeout so that the submit button gets properly serialized\n // (make it easy for event handler to serialize form without disabled values)\n setTimeout(function(){ rails.disableFormElements(form); }, 13);\n var aborted = rails.fire(form, 'ajax:aborted:file', [nonBlankFileInputs]);\n\n // Re-enable form elements if event bindings return false (canceling normal form submission)\n if (!aborted) { setTimeout(function(){ rails.enableFormElements(form); }, 13); }\n\n return aborted;\n }\n\n rails.handleRemote(form);\n return false;\n\n } else {\n // Slight timeout so that the submit button gets properly serialized\n setTimeout(function(){ rails.disableFormElements(form); }, 13);\n }\n });\n\n $document.on('click.rails', rails.formInputClickSelector, function(event) {\n var button = $(this);\n\n if (!rails.allowAction(button)) return rails.stopEverything(event);\n\n // Register the pressed submit button\n var name = button.attr('name'),\n data = name ? {name:name, value:button.val()} : null;\n\n var form = button.closest('form');\n if (form.length === 0) {\n form = $('#' + button.attr('form'));\n }\n form.data('ujs:submit-button', data);\n\n // Save attributes from button\n form.data('ujs:formnovalidate-button', button.attr('formnovalidate'));\n form.data('ujs:submit-button-formaction', button.attr('formaction'));\n form.data('ujs:submit-button-formmethod', button.attr('formmethod'));\n });\n\n $document.on('ajax:send.rails', rails.formSubmitSelector, function(event) {\n if (this === event.target) rails.disableFormElements($(this));\n });\n\n $document.on('ajax:complete.rails', rails.formSubmitSelector, function(event) {\n if (this === event.target) rails.enableFormElements($(this));\n });\n\n $(function(){\n rails.refreshCSRFTokens();\n });\n }\n\n };\n\n if (window.jQuery) {\n jqueryUjsInit(jQuery);\n } else if (typeof exports === 'object' && typeof module === 'object') {\n module.exports = jqueryUjsInit;\n }\n})();\n","/*!\n * jQuery JavaScript Library v2.2.4\n * http://jquery.com/\n *\n * Includes Sizzle.js\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2016-05-20T17:23Z\n */\n\n(function( global, factory ) {\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\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// Support: Firefox 18+\n// Can't be in strict mode, several libs including ASP.NET trace\n// the stack via arguments.caller.callee and Firefox dies if\n// you try to trace through \"use strict\" call chains. (#13335)\n//\"use strict\";\nvar arr = [];\n\nvar document = window.document;\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 support = {};\n\n\n\nvar\n\tversion = \"2.2.4\",\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.1\n\t// Make sure we trim BOM and NBSP\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n\n\t// Matches dashed string for camelizing\n\trmsPrefix = /^-ms-/,\n\trdashAlpha = /-([\\da-z])/gi,\n\n\t// Used by jQuery.camelCase as callback to replace()\n\tfcamelCase = function( all, letter ) {\n\t\treturn letter.toUpperCase();\n\t};\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// Start with an empty selector\n\tselector: \"\",\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\t\treturn num != null ?\n\n\t\t\t// Return just the one element from the set\n\t\t\t( num < 0 ? this[ num + this.length ] : this[ num ] ) :\n\n\t\t\t// Return all the elements in a clean array\n\t\t\tslice.call( this );\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\t\tret.context = this.context;\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\" && !jQuery.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\tsrc = target[ name ];\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( 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 = jQuery.isArray( copy ) ) ) ) {\n\n\t\t\t\t\tif ( copyIsArray ) {\n\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\tclone = src && jQuery.isArray( src ) ? src : [];\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\n\t\t\t\t\t}\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\tisFunction: function( obj ) {\n\t\treturn jQuery.type( obj ) === \"function\";\n\t},\n\n\tisArray: Array.isArray,\n\n\tisWindow: function( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t},\n\n\tisNumeric: function( obj ) {\n\n\t\t// parseFloat NaNs numeric-cast false positives (null|true|false|\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t// adding 1 corrects loss of precision from parseFloat (#15100)\n\t\tvar realStringObj = obj && obj.toString();\n\t\treturn !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0;\n\t},\n\n\tisPlainObject: function( obj ) {\n\t\tvar key;\n\n\t\t// Not plain objects:\n\t\t// - Any object or value whose internal [[Class]] property is not \"[object Object]\"\n\t\t// - DOM nodes\n\t\t// - window\n\t\tif ( jQuery.type( obj ) !== \"object\" || obj.nodeType || jQuery.isWindow( obj ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Not own constructor property must be Object\n\t\tif ( obj.constructor &&\n\t\t\t\t!hasOwn.call( obj, \"constructor\" ) &&\n\t\t\t\t!hasOwn.call( obj.constructor.prototype || {}, \"isPrototypeOf\" ) ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own\n\t\tfor ( key in obj ) {}\n\n\t\treturn key === undefined || hasOwn.call( obj, key );\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\ttype: function( obj ) {\n\t\tif ( obj == null ) {\n\t\t\treturn obj + \"\";\n\t\t}\n\n\t\t// Support: Android<4.0, iOS<6 (functionish RegExp)\n\t\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\t\ttypeof obj;\n\t},\n\n\t// Evaluates a script in a global context\n\tglobalEval: function( code ) {\n\t\tvar script,\n\t\t\tindirect = eval;\n\n\t\tcode = jQuery.trim( code );\n\n\t\tif ( code ) {\n\n\t\t\t// If the code includes a valid, prologue position\n\t\t\t// strict mode pragma, execute code by injecting a\n\t\t\t// script tag into the document.\n\t\t\tif ( code.indexOf( \"use strict\" ) === 1 ) {\n\t\t\t\tscript = document.createElement( \"script\" );\n\t\t\t\tscript.text = code;\n\t\t\t\tdocument.head.appendChild( script ).parentNode.removeChild( script );\n\t\t\t} else {\n\n\t\t\t\t// Otherwise, avoid the DOM node creation, insertion\n\t\t\t\t// and removal by using an indirect global eval\n\n\t\t\t\tindirect( code );\n\t\t\t}\n\t\t}\n\t},\n\n\t// Convert dashed to camelCase; used by the css and data modules\n\t// Support: IE9-11+\n\t// Microsoft forgot to hump their vendor prefix (#9572)\n\tcamelCase: function( string ) {\n\t\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n\t},\n\n\tnodeName: function( elem, name ) {\n\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\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.1\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\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// Bind a function to a context, optionally partially applying any\n\t// arguments.\n\tproxy: function( fn, context ) {\n\t\tvar tmp, args, proxy;\n\n\t\tif ( typeof context === \"string\" ) {\n\t\t\ttmp = fn[ context ];\n\t\t\tcontext = fn;\n\t\t\tfn = tmp;\n\t\t}\n\n\t\t// Quick check to determine if target is callable, in the spec\n\t\t// this throws a TypeError, but we will just return undefined.\n\t\tif ( !jQuery.isFunction( fn ) ) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Simulated bind\n\t\targs = slice.call( arguments, 2 );\n\t\tproxy = function() {\n\t\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t\t};\n\n\t\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\t\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\t\treturn proxy;\n\t},\n\n\tnow: Date.now,\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\n// JSHint would error on this code due to the Symbol not being defined in ES5.\n// Defining this global in .jshintrc would create a danger of using the global\n// unguarded in another place, it seems safer to just disable JSHint for these\n// three lines.\n/* jshint ignore: start */\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n/* jshint ignore: end */\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: iOS 8.2 (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 = jQuery.type( obj );\n\n\tif ( type === \"function\" || jQuery.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.2.1\n * http://sizzlejs.com/\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license\n * http://jquery.org/license\n *\n * Date: 2015-10-17\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\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// General-purpose constants\n\tMAX_NEGATIVE = 1 << 31,\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// http://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-]|[^\\\\x00-\\\\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\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\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\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\trescape = /'|\\\\/g,\n\n\t// CSS escapes 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// 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// 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, nidselect, 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!compilerCache[ selector + \" \" ] &&\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\n\n\t\t\t\tif ( nodeType !== 1 ) {\n\t\t\t\t\tnewContext = context;\n\t\t\t\t\tnewSelector = selector;\n\n\t\t\t\t// qSA looks outside Element context, which is not what we want\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\n\t\t\t\t// Support: IE <=8\n\t\t\t\t// Exclude object elements\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\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( rescape, \"\\\\$&\" );\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\tnidselect = ridentifier.test( nid ) ? \"#\" + nid : \"[id='\" + nid + \"']\";\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[i] = nidselect + \" \" + 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\tif ( newSelector ) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\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\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 div and expects a boolean result\n */\nfunction assert( fn ) {\n\tvar div = document.createElement(\"div\");\n\n\ttry {\n\t\treturn !!fn( div );\n\t} catch (e) {\n\t\treturn false;\n\t} finally {\n\t\t// Remove from its parent by default\n\t\tif ( div.parentNode ) {\n\t\t\tdiv.parentNode.removeChild( div );\n\t\t}\n\t\t// release memory in IE\n\t\tdiv = 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\t( ~b.sourceIndex || MAX_NEGATIVE ) -\n\t\t\t( ~a.sourceIndex || MAX_NEGATIVE );\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 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\t// documentElement is verified for cases where it doesn't yet exist\n\t// (such as loading iframes in IE - #4833)\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\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, parent,\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 ( (parent = document.defaultView) && parent.top !== parent ) {\n\t\t// Support: IE 11\n\t\tif ( parent.addEventListener ) {\n\t\t\tparent.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( parent.attachEvent ) {\n\t\t\tparent.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( div ) {\n\t\tdiv.className = \"i\";\n\t\treturn !div.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( div ) {\n\t\tdiv.appendChild( document.createComment(\"\") );\n\t\treturn !div.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 programatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert(function( div ) {\n\t\tdocElem.appendChild( div ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t});\n\n\t// ID find and filter\n\tif ( support.getById ) {\n\t\tExpr.find[\"ID\"] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar m = context.getElementById( id );\n\t\t\t\treturn m ? [ m ] : [];\n\t\t\t}\n\t\t};\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} else {\n\t\t// Support: IE6/7\n\t\t// getElementById is not reliable as a find shortcut\n\t\tdelete Expr.find[\"ID\"];\n\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\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 http://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( div ) {\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// http://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( div ).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// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( div.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 ( !div.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 ( !div.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 ( !div.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 sibing-combinator selector` fails\n\t\t\tif ( !div.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\n\t\t\t}\n\t\t});\n\n\t\tassert(function( div ) {\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\tdiv.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 ( div.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 ( !div.querySelectorAll(\":enabled\").length ) {\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\tdiv.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( div ) {\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( div, \"div\" );\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( div, \"[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\t// Make sure that attribute selectors are quoted\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!compilerCache[ 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}\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.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 || elem.innerText || 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\": function( elem ) {\n\t\t\treturn elem.disabled === false;\n\t\t},\n\n\t\t\"disabled\": function( elem ) {\n\t\t\treturn elem.disabled === true;\n\t\t},\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 ? argument + length : argument;\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\tcheckNonElements = base && dir === \"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} :\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 ( (oldCache = uniqueCache[ dir ]) &&\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[ dir ] = 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};\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\tsupport.getById && context.nodeType === 9 && documentIsHTML &&\n\t\t\t\tExpr.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( div1 ) {\n\t// Should return 1, but returns 4 (following)\n\treturn div1.compareDocumentPosition( document.createElement(\"div\") ) & 1;\n});\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert(function( div ) {\n\tdiv.innerHTML = \"\";\n\treturn div.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( div ) {\n\tdiv.innerHTML = \"\";\n\tdiv.firstChild.setAttribute( \"value\", \"\" );\n\treturn div.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( div ) {\n\treturn div.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;\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\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\nvar rsingleTag = ( /^<([\\w-]+)\\s*\\/?>(?:<\\/\\1>|)$/ );\n\n\n\nvar risSimple = /^.[^:#\\[\\.,]*$/;\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( jQuery.isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\t/* jshint -W018 */\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\n\t}\n\n\tif ( typeof qualifier === \"string\" ) {\n\t\tif ( risSimple.test( qualifier ) ) {\n\t\t\treturn jQuery.filter( qualifier, elements, not );\n\t\t}\n\n\t\tqualifier = jQuery.filter( qualifier, elements );\n\t}\n\n\treturn jQuery.grep( elements, function( elem ) {\n\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t} );\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\treturn elems.length === 1 && elem.nodeType === 1 ?\n\t\tjQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :\n\t\tjQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\t\treturn elem.nodeType === 1;\n\t\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i,\n\t\t\tlen = this.length,\n\t\t\tret = [],\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\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\t// Needed because $( selector, context ) becomes $( context ).find( selector )\n\t\tret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );\n\t\tret.selector = this.selector ? this.selector + \" \" + selector : selector;\n\t\treturn 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\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 ( jQuery.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\t// Support: Blackberry 4.6\n\t\t\t\t\t// gEBID returns nodes no longer in the document (#6963)\n\t\t\t\t\tif ( elem && elem.parentNode ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.context = document;\n\t\t\t\t\tthis.selector = selector;\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.context = this[ 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 ( jQuery.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\tif ( selector.selector !== undefined ) {\n\t\t\tthis.selector = selector.selector;\n\t\t\tthis.context = selector.context;\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\tpos = rneedsContext.test( selectors ) || typeof selectors !== \"string\" ?\n\t\t\t\tjQuery( selectors, context || this.context ) :\n\t\t\t\t0;\n\n\t\tfor ( ; i < l; i++ ) {\n\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t// Always skip document fragments\n\t\t\t\tif ( cur.nodeType < 11 && ( pos ?\n\t\t\t\t\tpos.index( cur ) > -1 :\n\n\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\tbreak;\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\treturn elem.contentDocument || 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 rnotwhite = ( /\\S+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnotwhite ) || [], 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 = 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 ( jQuery.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 && jQuery.type( 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 ) {\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\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, listener list, final state\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ), \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ), \"rejected\" ],\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ) ]\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\tthen: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\t\t\t\t\tvar fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];\n\n\t\t\t\t\t\t\t// deferred[ done | fail | progress ] for forwarding actions to newDefer\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 && jQuery.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 === promise ? newDefer.promise() : this,\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\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// Keep pipe for back-compat\n\t\tpromise.pipe = promise.then;\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[ 3 ];\n\n\t\t\t// promise[ done | fail | progress ] = 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( function() {\n\n\t\t\t\t\t// state = [ resolved | rejected ]\n\t\t\t\t\tstate = stateString;\n\n\t\t\t\t// [ reject_list | resolve_list ].disable; progress_list.lock\n\t\t\t\t}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );\n\t\t\t}\n\n\t\t\t// deferred[ resolve | reject | notify ]\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? promise : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\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( subordinate /* , ..., subordinateN */ ) {\n\t\tvar i = 0,\n\t\t\tresolveValues = slice.call( arguments ),\n\t\t\tlength = resolveValues.length,\n\n\t\t\t// the count of uncompleted subordinates\n\t\t\tremaining = length !== 1 ||\n\t\t\t\t( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,\n\n\t\t\t// the master Deferred.\n\t\t\t// If resolveValues consist of only a single Deferred, just use that.\n\t\t\tdeferred = remaining === 1 ? subordinate : jQuery.Deferred(),\n\n\t\t\t// Update function for both resolve and progress values\n\t\t\tupdateFunc = function( i, contexts, values ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tcontexts[ i ] = this;\n\t\t\t\t\tvalues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( values === progressValues ) {\n\t\t\t\t\t\tdeferred.notifyWith( contexts, values );\n\t\t\t\t\t} else if ( !( --remaining ) ) {\n\t\t\t\t\t\tdeferred.resolveWith( contexts, values );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t},\n\n\t\t\tprogressValues, progressContexts, resolveContexts;\n\n\t\t// Add listeners to Deferred subordinates; treat others as resolved\n\t\tif ( length > 1 ) {\n\t\t\tprogressValues = new Array( length );\n\t\t\tprogressContexts = new Array( length );\n\t\t\tresolveContexts = new Array( length );\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {\n\t\t\t\t\tresolveValues[ i ].promise()\n\t\t\t\t\t\t.progress( updateFunc( i, progressContexts, progressValues ) )\n\t\t\t\t\t\t.done( updateFunc( i, resolveContexts, resolveValues ) )\n\t\t\t\t\t\t.fail( deferred.reject );\n\t\t\t\t} else {\n\t\t\t\t\t--remaining;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// If we're not waiting on anything, resolve the master\n\t\tif ( !remaining ) {\n\t\t\tdeferred.resolveWith( resolveContexts, resolveValues );\n\t\t}\n\n\t\treturn deferred.promise();\n\t}\n} );\n\n\n// The deferred used on DOM ready\nvar readyList;\n\njQuery.fn.ready = function( fn ) {\n\n\t// Add the callback\n\tjQuery.ready.promise().done( fn );\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// Hold (or release) the ready event\n\tholdReady: function( hold ) {\n\t\tif ( hold ) {\n\t\t\tjQuery.readyWait++;\n\t\t} else {\n\t\t\tjQuery.ready( true );\n\t\t}\n\t},\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\n\t\t// Trigger any bound ready events\n\t\tif ( jQuery.fn.triggerHandler ) {\n\t\t\tjQuery( document ).triggerHandler( \"ready\" );\n\t\t\tjQuery( document ).off( \"ready\" );\n\t\t}\n\t}\n} );\n\n/**\n * The ready event handler and self cleanup method\n */\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\njQuery.ready.promise = function( obj ) {\n\tif ( !readyList ) {\n\n\t\treadyList = jQuery.Deferred();\n\n\t\t// Catch cases where $(document).ready() is called\n\t\t// after the browser event has already occurred.\n\t\t// Support: IE9-10 only\n\t\t// Older IE sometimes signals \"interactive\" too soon\n\t\tif ( document.readyState === \"complete\" ||\n\t\t\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t\t\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\t\t\twindow.setTimeout( jQuery.ready );\n\n\t\t} else {\n\n\t\t\t// Use the handy event callback\n\t\t\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t\t\t// A fallback to window.onload, that will always work\n\t\t\twindow.addEventListener( \"load\", completed );\n\t\t}\n\t}\n\treturn readyList.promise( obj );\n};\n\n// Kick off the DOM ready check even if the user does not\njQuery.ready.promise();\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 ( jQuery.type( 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 ( !jQuery.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\treturn chainable ?\n\t\telems :\n\n\t\t// Gets\n\t\tbulk ?\n\t\t\tfn.call( elems ) :\n\t\t\tlen ? fn( elems[ 0 ], key ) : emptyGet;\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\t/* jshint -W018 */\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\tregister: function( owner, initial ) {\n\t\tvar value = initial || {};\n\n\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t// use plain assignment\n\t\tif ( owner.nodeType ) {\n\t\t\towner[ this.expando ] = value;\n\n\t\t// Otherwise secure it in a non-enumerable, non-writable property\n\t\t// configurability must be true to allow the property to be\n\t\t// deleted with the delete operator\n\t\t} else {\n\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\tvalue: value,\n\t\t\t\twritable: true,\n\t\t\t\tconfigurable: true\n\t\t\t} );\n\t\t}\n\t\treturn owner[ this.expando ];\n\t},\n\tcache: function( owner ) {\n\n\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t// but we should not, see #8335.\n\t\t// Always return an empty object.\n\t\tif ( !acceptData( owner ) ) {\n\t\t\treturn {};\n\t\t}\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\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ 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[ 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\t\t\towner[ this.expando ] && owner[ this.expando ][ key ];\n\t},\n\taccess: function( owner, key, value ) {\n\t\tvar stored;\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\tstored = this.get( owner, key );\n\n\t\t\treturn stored !== undefined ?\n\t\t\t\tstored : this.get( owner, jQuery.camelCase( 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, name, camel,\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\t\t\tthis.register( owner );\n\n\t\t} else {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( jQuery.isArray( key ) ) {\n\n\t\t\t\t// If \"name\" is an array of keys...\n\t\t\t\t// When data is initially created, via (\"key\", \"val\") signature,\n\t\t\t\t// keys will be converted to camelCase.\n\t\t\t\t// Since there is no way to tell _how_ a key was added, remove\n\t\t\t\t// both plain key and camelCase key. #12786\n\t\t\t\t// This will only penalize the array argument path.\n\t\t\t\tname = key.concat( key.map( jQuery.camelCase ) );\n\t\t\t} else {\n\t\t\t\tcamel = jQuery.camelCase( key );\n\n\t\t\t\t// Try the string as a key before any manipulation\n\t\t\t\tif ( key in cache ) {\n\t\t\t\t\tname = [ key, camel ];\n\t\t\t\t} else {\n\n\t\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\t\tname = camel;\n\t\t\t\t\tname = name in cache ?\n\t\t\t\t\t\t[ name ] : ( name.match( rnotwhite ) || [] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti = name.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ name[ 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://code.google.com/p/chromium/issues/detail?id=378607\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 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 = data === \"true\" ? true :\n\t\t\t\t\tdata === \"false\" ? false :\n\t\t\t\t\tdata === \"null\" ? null :\n\n\t\t\t\t\t// Only convert to a number if it doesn't change the string\n\t\t\t\t\t+data + \"\" === data ? +data :\n\t\t\t\t\trbrace.test( data ) ? jQuery.parseJSON( data ) :\n\t\t\t\t\tdata;\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: IE11+\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 = jQuery.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, camelKey;\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// with the key as-is\n\t\t\t\tdata = dataUser.get( elem, key ) ||\n\n\t\t\t\t\t// Try to find dashed key if it exists (gh-2779)\n\t\t\t\t\t// This is for 2.2.x only\n\t\t\t\t\tdataUser.get( elem, key.replace( rmultiDash, \"-$&\" ).toLowerCase() );\n\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\tcamelKey = jQuery.camelCase( key );\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// with the key camelized\n\t\t\t\tdata = dataUser.get( elem, camelKey );\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, camelKey, undefined );\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\tcamelKey = jQuery.camelCase( key );\n\t\t\tthis.each( function() {\n\n\t\t\t\t// First, attempt to store a copy or reference of any\n\t\t\t\t// data that might've been store with a camelCased key.\n\t\t\t\tvar data = dataUser.get( this, camelKey );\n\n\t\t\t\t// For HTML5 data-* attribute interop, we have to\n\t\t\t\t// store property names with dashes in a camelCase form.\n\t\t\t\t// This might not apply to all properties...*\n\t\t\t\tdataUser.set( this, camelKey, value );\n\n\t\t\t\t// *... In the case of properties that might _actually_\n\t\t\t\t// have dashes, we need to also store a copy of that\n\t\t\t\t// unchanged property.\n\t\t\t\tif ( key.indexOf( \"-\" ) > -1 && data !== undefined ) {\n\t\t\t\t\tdataUser.set( this, key, value );\n\t\t\t\t}\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 || jQuery.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 isHidden = function( elem, el ) {\n\n\t\t// isHidden might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ||\n\t\t\t!jQuery.contains( elem.ownerDocument, elem );\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted,\n\t\tscale = 1,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() { return tween.cur(); } :\n\t\t\tfunction() { return jQuery.css( elem, prop, \"\" ); },\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 = ( 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// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\tdo {\n\n\t\t\t// If previous iteration zeroed out, double until we get *something*.\n\t\t\t// Use string for doubling so we don't accidentally see scale as unchanged below\n\t\t\tscale = scale || \".5\";\n\n\t\t\t// Adjust and apply\n\t\t\tinitialInUnit = initialInUnit / scale;\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Update scale, tolerating zero or NaN from tween.cur()\n\t\t// Break the loop if scale is unchanged or perfect, or if we've just had enough.\n\t\t} while (\n\t\t\tscale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations\n\t\t);\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}\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([\\w:-]+)/ );\n\nvar rscriptType = ( /^$|\\/(?:java|ecma)script/i );\n\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// Support: IE9\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: IE9\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: IE9-11+\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret = typeof context.getElementsByTagName !== \"undefined\" ?\n\t\t\tcontext.getElementsByTagName( tag || \"*\" ) :\n\t\t\ttypeof context.querySelectorAll !== \"undefined\" ?\n\t\t\t\tcontext.querySelectorAll( tag || \"*\" ) :\n\t\t\t[];\n\n\treturn tag === undefined || tag && jQuery.nodeName( context, tag ) ?\n\t\tjQuery.merge( [ context ], ret ) :\n\t\tret;\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, contains, 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 ( jQuery.type( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android<4.1, PhantomJS<2\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.1, PhantomJS<2\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\tcontains = jQuery.contains( elem.ownerDocument, 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 ( contains ) {\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, Safari<=5.1\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: Safari<=5.1, Android<4.2\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+\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: IE9\n// See #13393 for more info\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// 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( rnotwhite ) || [ \"\" ];\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( rnotwhite ) || [ \"\" ];\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( event ) {\n\n\t\t// Make a writable jQuery.Event from the native event object\n\t\tevent = jQuery.event.fix( event );\n\n\t\tvar i, j, ret, matched, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\targs = slice.call( arguments ),\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\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// Triggered event must either 1) have no namespace, or 2) have namespace(s)\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\n\t\t\t\tif ( !event.rnamespace || event.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, matches, sel, handleObj,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Support (at least): Chrome, IE9\n\t\t// Find delegate handlers\n\t\t// Black-hole SVG instance trees (#13180)\n\t\t//\n\t\t// Support: Firefox<=42+\n\t\t// Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343)\n\t\tif ( delegateCount && cur.nodeType &&\n\t\t\t( event.type !== \"click\" || isNaN( event.button ) || 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 && ( cur.disabled !== true || event.type !== \"click\" ) ) {\n\t\t\t\t\tmatches = [];\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 ( matches[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatches[ 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 ( matches[ sel ] ) {\n\t\t\t\t\t\t\tmatches.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matches.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matches } );\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\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\t// Includes some event props shared by KeyEvent and MouseEvent\n\tprops: ( \"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase \" +\n\t\t\"metaKey relatedTarget shiftKey target timeStamp view which\" ).split( \" \" ),\n\n\tfixHooks: {},\n\n\tkeyHooks: {\n\t\tprops: \"char charCode key keyCode\".split( \" \" ),\n\t\tfilter: function( event, original ) {\n\n\t\t\t// Add which for key events\n\t\t\tif ( event.which == null ) {\n\t\t\t\tevent.which = original.charCode != null ? original.charCode : original.keyCode;\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tmouseHooks: {\n\t\tprops: ( \"button buttons clientX clientY offsetX offsetY pageX pageY \" +\n\t\t\t\"screenX screenY toElement\" ).split( \" \" ),\n\t\tfilter: function( event, original ) {\n\t\t\tvar eventDoc, doc, body,\n\t\t\t\tbutton = original.button;\n\n\t\t\t// Calculate pageX/Y if missing and clientX/Y available\n\t\t\tif ( event.pageX == null && original.clientX != null ) {\n\t\t\t\teventDoc = event.target.ownerDocument || document;\n\t\t\t\tdoc = eventDoc.documentElement;\n\t\t\t\tbody = eventDoc.body;\n\n\t\t\t\tevent.pageX = original.clientX +\n\t\t\t\t\t( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) -\n\t\t\t\t\t( doc && doc.clientLeft || body && body.clientLeft || 0 );\n\t\t\t\tevent.pageY = original.clientY +\n\t\t\t\t\t( doc && doc.scrollTop || body && body.scrollTop || 0 ) -\n\t\t\t\t\t( doc && doc.clientTop || body && body.clientTop || 0 );\n\t\t\t}\n\n\t\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\t\t// Note: button is not normalized, so don't use it\n\t\t\tif ( !event.which && button !== undefined ) {\n\t\t\t\tevent.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );\n\t\t\t}\n\n\t\t\treturn event;\n\t\t}\n\t},\n\n\tfix: function( event ) {\n\t\tif ( event[ jQuery.expando ] ) {\n\t\t\treturn event;\n\t\t}\n\n\t\t// Create a writable copy of the event object and normalize some properties\n\t\tvar i, prop, copy,\n\t\t\ttype = event.type,\n\t\t\toriginalEvent = event,\n\t\t\tfixHook = this.fixHooks[ type ];\n\n\t\tif ( !fixHook ) {\n\t\t\tthis.fixHooks[ type ] = fixHook =\n\t\t\t\trmouseEvent.test( type ) ? this.mouseHooks :\n\t\t\t\trkeyEvent.test( type ) ? this.keyHooks :\n\t\t\t\t{};\n\t\t}\n\t\tcopy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;\n\n\t\tevent = new jQuery.Event( originalEvent );\n\n\t\ti = copy.length;\n\t\twhile ( i-- ) {\n\t\t\tprop = copy[ i ];\n\t\t\tevent[ prop ] = originalEvent[ prop ];\n\t\t}\n\n\t\t// Support: Cordova 2.5 (WebKit) (#13255)\n\t\t// All events should have a target; Cordova deviceready doesn't\n\t\tif ( !event.target ) {\n\t\t\tevent.target = document;\n\t\t}\n\n\t\t// Support: Safari 6.0+, Chrome<28\n\t\t// Target should not be a text node (#504, #13143)\n\t\tif ( event.target.nodeType === 3 ) {\n\t\t\tevent.target = event.target.parentNode;\n\t\t}\n\n\t\treturn fixHook.filter ? fixHook.filter( event, originalEvent ) : event;\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\tfocus: {\n\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\n\t\t\t\t\tthis.focus();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusin\"\n\t\t},\n\t\tblur: {\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\n\t\t\t\t\tthis.blur();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdelegateType: \"focusout\"\n\t\t},\n\t\tclick: {\n\n\t\t\t// For checkbox, fire native event so checked state will be right\n\t\t\ttrigger: function() {\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && jQuery.nodeName( this, \"input\" ) ) {\n\t\t\t\t\tthis.click();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\n\t\t\t_default: function( event ) {\n\t\t\t\treturn jQuery.nodeName( event.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\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<4.0\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\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 || jQuery.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// http://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// 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://code.google.com/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\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\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:-]+)[^>]*)\\/>/gi,\n\n\t// Support: IE 10-11, Edge 10240+\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// Manipulating tables requires a tbody\nfunction manipulationTarget( elem, content ) {\n\treturn jQuery.nodeName( elem, \"table\" ) &&\n\t\tjQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ?\n\n\t\telem.getElementsByTagName( \"tbody\" )[ 0 ] ||\n\t\t\telem.appendChild( elem.ownerDocument.createElement( \"tbody\" ) ) :\n\t\telem;\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\tvar match = rscriptTypeMasked.exec( elem.type );\n\n\tif ( match ) {\n\t\telem.type = match[ 1 ];\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\tisFunction = jQuery.isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( isFunction ||\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 ( isFunction ) {\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.1, PhantomJS<2\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 ) {\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 ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tjQuery.globalEval( node.textContent.replace( rcleanScript, \"\" ) );\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 && jQuery.contains( node.ownerDocument, 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 = jQuery.contains( elem.ownerDocument, 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: http://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\n\t// Keep domManip exposed until 3.0 (gh-2225)\n\tdomManip: domManip,\n\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: QtWebKit\n\t\t\t// .get() because push.apply(_, arraylike) throws\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\n\n\nvar iframe,\n\telemdisplay = {\n\n\t\t// Support: Firefox\n\t\t// We have to pre-define these values for FF (#10227)\n\t\tHTML: \"block\",\n\t\tBODY: \"block\"\n\t};\n\n/**\n * Retrieve the actual display of a element\n * @param {String} name nodeName of the element\n * @param {Object} doc Document object\n */\n\n// Called only from within defaultDisplay\nfunction actualDisplay( name, doc ) {\n\tvar elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),\n\n\t\tdisplay = jQuery.css( elem[ 0 ], \"display\" );\n\n\t// We don't have any data stored on the element,\n\t// so use \"detach\" method as fast way to get rid of the element\n\telem.detach();\n\n\treturn display;\n}\n\n/**\n * Try to determine the default display value of an element\n * @param {String} nodeName\n */\nfunction defaultDisplay( nodeName ) {\n\tvar doc = document,\n\t\tdisplay = elemdisplay[ nodeName ];\n\n\tif ( !display ) {\n\t\tdisplay = actualDisplay( nodeName, doc );\n\n\t\t// If the simple way fails, read from inside an iframe\n\t\tif ( display === \"none\" || !display ) {\n\n\t\t\t// Use the already-created iframe if possible\n\t\t\tiframe = ( iframe || jQuery( \"