From c39a0ab488b2e2f433b02cec382b555da4b44f81 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Sun, 19 Jul 2026 11:54:45 +0200 Subject: [PATCH] clean and propagate tracebacks to ui Signed-off-by: Vladimir Mandic --- CHANGELOG.md | 1 + modules/logger.py | 26 ++++++++++---- modules/seedvr/src/models/dit/patch.py | 34 +++++++------------ .../dit_v2/nablocks/attention/mmattn.py | 4 +-- scripts/postprocessing_seedvr.py | 7 ++-- ui/dist/sdnext.mjs | 1 - ui/dist/sdnext.mjs.map | 4 +-- 7 files changed, 42 insertions(+), 35 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 03d988c36..444934ee4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,7 @@ - sdnq separate dit/te settings - **Features** - SeedVR enhanced support + - Propagate server tracebacks to client - **Fixes** - upscaler auto-refresh to catch chainner upscalers that are not loaded on first attempt - lora support diffusers trainer diff --git a/modules/logger.py b/modules/logger.py index c3a12060c..1d5b02a89 100644 --- a/modules/logger.py +++ b/modules/logger.py @@ -108,15 +108,29 @@ def setup_logging(debug=None, trace=None, filename=None): return ansi_escape.sub('', str(line)) def emit(self, record): - if record.msg is not None and not isinstance(record.msg, str): - record.msg = str(record.msg) + if record.msg is None: + record.msg = "" + msg = record.getMessage() + msg = msg.replace('"', "'") + msg = self.strip(msg) try: - record.msg = record.msg.replace('"', "'") + if '❱ ' in msg: # only last 3 lines of traceback + lines = [l.strip() for l in msg.splitlines() if l.strip() and not l.startswith(' ')] + if len(lines) > 3: + lines = lines[-3:] + lines = [l.replace('│ ', '').strip() for l in lines] + lines.insert(0, 'Exception traceback:') + msg = '\n'.join(lines) except Exception: pass - line = self.format(record) - line = self.strip(line) - self.buffer.append(line[:1024]) + try: + if len(msg) > 1024: + msg = msg[:1024] + '...' + except Exception: + pass + record.msg = msg + formatted = self.format(record) + self.buffer.append(formatted) if len(self.buffer) > self.capacity: self.buffer.pop(0) diff --git a/modules/seedvr/src/models/dit/patch.py b/modules/seedvr/src/models/dit/patch.py index ccd4265ce..c273d0d5b 100644 --- a/modules/seedvr/src/models/dit/patch.py +++ b/modules/seedvr/src/models/dit/patch.py @@ -77,23 +77,19 @@ class NaPatchIn(PatchIn): self, vid: torch.Tensor, # l c vid_shape: torch.LongTensor, - cache: Cache = Cache(disable=True), ) -> torch.Tensor: - cache = cache.namespace("patch") - vid_shape_before_patchify = cache("vid_shape_before_patchify", lambda: vid_shape) t, h, w = self.patch_size if not t == h == w == 1: - vid = na.unflatten(vid, vid_shape) + vid, vid_shape = na.rearrange( + vid, vid_shape, "(T t) (H h) (W w) c -> T H W (t h w c)", t=t, h=h, w=w + ) for i in range(len(vid)): - if t > 1 and vid_shape_before_patchify[i, 0] % t != 0: - vid[i] = torch.cat([vid[i][:1]] * (t - vid[i].size(0) % t) + [vid[i]], dim=0) - if h > 1 and vid_shape_before_patchify[i, 1] % h != 0: + if h > 1 and vid_shape[i, 1] % h != 0: vid[i] = torch.cat([vid[i][:, :1]] * (h - vid[i].size(1) % h) + [vid[i]], dim=1) - if w > 1 and vid_shape_before_patchify[i, 2] % w != 0: + if w > 1 and vid_shape[i, 2] % w != 0: vid[i] = torch.cat([vid[i][:, :, :1]] * (w - vid[i].size(2) % w) + [vid[i]], dim=2) - vid[i] = rearrange(vid[i], "(T t) (H h) (W w) c -> T H W (t h w c)", t=t, h=h, w=w) vid, vid_shape = na.flatten(vid) - # slice vid after patchting in when using sequence parallelism + # slice vid after patching in when using sequence parallelism vid = slice_inputs(vid, dim=0) if vid.dtype != self.proj.weight.dtype: vid = vid.to(self.proj.weight.dtype) @@ -111,8 +107,6 @@ class NaPatchOut(PatchOut): torch.FloatTensor, torch.LongTensor, ]: - cache = cache.namespace("patch") - vid_shape_before_patchify = cache.get("vid_shape_before_patchify") t, h, w = self.patch_size if vid.dtype != self.proj.weight.dtype: vid = vid.to(self.proj.weight.dtype) @@ -126,14 +120,12 @@ class NaPatchOut(PatchOut): cache=cache.namespace("vid"), ) if not t == h == w == 1: - vid = na.unflatten(vid, vid_shape) + vid, vid_shape = na.rearrange( + vid, vid_shape, "T H W (t h w c) -> (T t) (H h) (W w) c", t=t, h=h, w=w + ) for i in range(len(vid)): - vid[i] = rearrange(vid[i], "T H W (t h w c) -> (T t) (H h) (W w) c", t=t, h=h, w=w) - if t > 1 and vid_shape_before_patchify is not None and vid_shape_before_patchify[i, 0] % t != 0: - vid[i] = vid[i][(t - vid_shape_before_patchify[i, 0] % t) :] - if h > 1 and vid_shape_before_patchify is not None and vid_shape_before_patchify[i, 1] % h != 0: - vid[i] = vid[i][:, (h - vid_shape_before_patchify[i, 1] % h) :] - if w > 1 and vid_shape_before_patchify is not None and vid_shape_before_patchify[i, 2] % w != 0: - vid[i] = vid[i][:, :, (w - vid_shape_before_patchify[i, 2] % w) :] - vid, vid_shape = na.flatten(vid) + if h > 1 and vid_shape[i, 1] % h != 0: + vid[i] = vid[i][:, (h - vid_shape[i, 1] % h) :] + if w > 1 and vid_shape[i, 2] % w != 0: + vid[i] = vid[i][:, :, (w - vid_shape[i, 2] % w) :] return vid, vid_shape diff --git a/modules/seedvr/src/models/dit_v2/nablocks/attention/mmattn.py b/modules/seedvr/src/models/dit_v2/nablocks/attention/mmattn.py index 70f3bb90d..27a191b36 100644 --- a/modules/seedvr/src/models/dit_v2/nablocks/attention/mmattn.py +++ b/modules/seedvr/src/models/dit_v2/nablocks/attention/mmattn.py @@ -13,12 +13,11 @@ # // limitations under the License. from typing import Optional, Tuple, Union +from itertools import chain import torch from einops import rearrange from torch import nn -from torch.nn import functional as F from torch.nn.modules.utils import _triple - from .....common.cache import Cache from .....common.distributed.ops import gather_heads_scatter_seq, gather_seq_scatter_heads_qkv from .....common.half_precision_fixes import safe_pad_operation @@ -29,7 +28,6 @@ from ...mm import MMArg, MMModule from ...normalization import norm_layer_type from ...rope import get_na_rope from ...window import get_window_op -from itertools import chain class NaMMAttention(nn.Module): diff --git a/scripts/postprocessing_seedvr.py b/scripts/postprocessing_seedvr.py index e20b1ecfa..30310cbf4 100644 --- a/scripts/postprocessing_seedvr.py +++ b/scripts/postprocessing_seedvr.py @@ -1,5 +1,8 @@ +from typing import TYPE_CHECKING import gradio as gr from modules import scripts_postprocessing +if TYPE_CHECKING: + from modules.postprocess.seedvr_model import UpscalerSeedVR class ScriptSeedVR(scripts_postprocessing.ScriptPostprocessing): @@ -17,7 +20,7 @@ class ScriptSeedVR(scripts_postprocessing.ScriptPostprocessing): seedvr_seed = gr.Number(step=1, value=-1, label="SeedVR seed", elem_id="extras_seedvr_seed") seedvr_steps = gr.Number(step=1, value=1, minimum=1, maximum=99, label="SeedVR steps", elem_id="extras_seedvr_steps", visible=False) with gr.Row(): - seedvr_cfg_scale = gr.Slider(minimum=0.0, maximum=15.0, step=0.01, value=3.5, label="SeedVR guidance scale", elem_id="extras_seedvr_cfg_scale") + seedvr_cfg_scale = gr.Slider(minimum=0.0, maximum=15.0, step=0.01, value=1.5, label="SeedVR guidance scale", elem_id="extras_seedvr_cfg_scale") seedvr_cfg_rescale = gr.Slider(minimum=0.0, maximum=15.0, step=0.01, value=0.0, label="SeedVR guidance rescale", elem_id="extras_seedvr_cfg_rescale") with gr.Row(): seedvr_tile_size = gr.Slider(minimum=64, maximum=4096, step=8, value=1024, label="SeedVR tile size", elem_id="extras_seedvr_tile_size") @@ -52,7 +55,7 @@ class ScriptSeedVR(scripts_postprocessing.ScriptPostprocessing): from modules.logger import log image = pp.image instance: upscaler.UpscalerData = next(iter([x for x in shared.sd_upscalers if x.name == seedvr_selected]), None) - scaler: upscaler.Upscaler = instance.scaler + scaler: UpscalerSeedVR = instance.scaler log.info(f'Upscaler: type="SeedVR" model="{seedvr_selected}" scale={seedvr_scale} seed={seedvr_seed} steps={seedvr_steps} cfg_scale={seedvr_cfg_scale} cfg_rescale={seedvr_cfg_rescale} tile_size={seedvr_tile_size} tile_overlap={seedvr_tile_overlap}') diff --git a/ui/dist/sdnext.mjs b/ui/dist/sdnext.mjs index ff4294a7c..50fa840f2 100644 --- a/ui/dist/sdnext.mjs +++ b/ui/dist/sdnext.mjs @@ -13774,7 +13774,6 @@ async function gallerySort(key) { rootFiles.forEach((node) => fragment.appendChild(node)); const folderNames = Array.from(folderGroups.keys()); const sortedFolderNames = currentSort.endsWith("A") ? folderNames.sort((a, b) => a.localeCompare(b)) : folderNames.sort((a, b) => b.localeCompare(a)); - console.log("HERE", sortedFolderNames); for (const folderName of sortedFolderNames) { const files = folderGroups.get(folderName); files.sort(sortMode.func); diff --git a/ui/dist/sdnext.mjs.map b/ui/dist/sdnext.mjs.map index 7eba30e22..fec4117c5 100644 --- a/ui/dist/sdnext.mjs.map +++ b/ui/dist/sdnext.mjs.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../../node_modules/.pnpm/jquery@4.0.0/node_modules/jquery/dist/jquery.js", "../js/iframeResizer.js", "../../node_modules/.pnpm/exifr@7.1.3/node_modules/exifr/dist/full.umd.js", "../../node_modules/.pnpm/wheel@1.0.0/node_modules/wheel/index.js", "../../node_modules/.pnpm/bezier-easing@2.1.0/node_modules/bezier-easing/src/index.js", "../../node_modules/.pnpm/amator@1.1.0/node_modules/amator/index.js", "../../node_modules/.pnpm/ngraph.events@1.4.0/node_modules/ngraph.events/index.js", "../../node_modules/.pnpm/panzoom@9.4.4/node_modules/panzoom/lib/kinetic.js", "../../node_modules/.pnpm/panzoom@9.4.4/node_modules/panzoom/lib/makeTextSelectionInterceptor.js", "../../node_modules/.pnpm/panzoom@9.4.4/node_modules/panzoom/lib/transform.js", "../../node_modules/.pnpm/panzoom@9.4.4/node_modules/panzoom/lib/makeSvgController.js", "../../node_modules/.pnpm/panzoom@9.4.4/node_modules/panzoom/lib/makeDomController.js", "../../node_modules/.pnpm/panzoom@9.4.4/node_modules/panzoom/index.js", "../../node_modules/.pnpm/jquery@4.0.0/node_modules/jquery/dist-module/wrappers/jquery.node-module-wrapper.js", "../vendor.ts", "../logger.ts", "../authWrap.ts", "../timers.ts", "../script.ts", "../changelog.ts", "../control.ts", "../extraNetworks.ts", "../generationParams.ts", "../imageParams.ts", "../notification.ts", "../progressBar.ts", "../ui.ts", "../inputAccordion.ts", "../indexdb.ts", "../logMonitor.ts", "../settings.ts", "../monitor.ts", "../promptChecker.ts", "../js/sha256.ts", "../gallery.ts", "../imageViewer.ts", "../autocomplete_xn.ts", "../autocomplete.ts", "../setHints.ts", "../contextMenus.ts", "../uiConfig.ts", "../loader.ts", "../legacy.ts", "../startup.ts", "../extensions.ts", "../dragDrop.ts", "../civitai.ts", "../guidance.ts", "../timesheet.ts", "../history.ts", "../aspectRatioOverlay.ts", "../resolutionLock.ts", "../editAttention.ts", "../../node_modules/.pnpm/jquery-sparkline@2.4.0/node_modules/jquery-sparkline/jquery.sparkline.js", "../gpu.ts"], - "sourcesContent": ["/*!\n * jQuery JavaScript Library v4.0.0\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.com/license/\n *\n * Date: 2026-01-18T00:20Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\tmodule.exports = factory( global, true );\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\"use strict\";\n\nif ( !window.document ) {\n\tthrow new Error( \"jQuery requires a window with a document\" );\n}\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\n// Support: IE 11+\n// IE doesn't have Array#flat; provide a fallback.\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\n// [[Class]] -> type pairs\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\n// All support tests are defined in their respective modules.\nvar support = {};\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\treturn typeof obj === \"object\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n\nfunction isWindow( obj ) {\n\treturn obj != null && obj === obj.window;\n}\n\nfunction isArrayLike( obj ) {\n\n\tvar length = !!obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( typeof obj === \"function\" || 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}\n\nvar document$1 = window.document;\n\nvar preservedScriptAttributes = {\n\ttype: true,\n\tsrc: true,\n\tnonce: true,\n\tnoModule: true\n};\n\nfunction DOMEval( code, node, doc ) {\n\tdoc = doc || document$1;\n\n\tvar i,\n\t\tscript = doc.createElement( \"script\" );\n\n\tscript.text = code;\n\tfor ( i in preservedScriptAttributes ) {\n\t\tif ( node && node[ i ] ) {\n\t\t\tscript[ i ] = node[ i ];\n\t\t}\n\t}\n\n\tif ( doc.head.appendChild( script ).parentNode ) {\n\t\tscript.parentNode.removeChild( script );\n\t}\n}\n\nvar version = \"4.0.0\",\n\n\trhtmlSuffix = /HTML$/i,\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\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\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\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\" && typeof target !== \"function\" ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\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\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\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\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\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Note: an element does not contain itself\n\tcontains: function( a, b ) {\n\t\tvar bup = b && b.parentNode;\n\n\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// IE doesn't have `contains` on SVG.\n\t\t\ta.contains ?\n\t\t\t\ta.contains( bup ) :\n\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t) );\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 flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction nodeName( elem, name ) {\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n}\n\nvar pop = arr.pop;\n\n// https://www.w3.org/TR/css3-selectors/#whitespace\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\nvar isIE = document$1.documentMode;\n\nvar rbuggyQSA = isIE && new RegExp(\n\n\t// Support: IE 9 - 11+\n\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\":enabled|:disabled|\" +\n\n\t// Support: IE 11+\n\t// IE 11 doesn't find elements on a `[name='']` query in some cases.\n\t// Adding a temporary attribute to the document before the selection works\n\t// around the issue.\n\t\"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\twhitespace + \"*(?:''|\\\"\\\")\"\n\n);\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\nvar identifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\";\n\nvar rleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" +\n\twhitespace + \")\" + whitespace + \"*\" );\n\nvar rdescend = new RegExp( whitespace + \"|>\" );\n\nvar rsibling = /[+~]/;\n\nvar documentElement$1 = document$1.documentElement;\n\n// Support: IE 9 - 11+\n// IE requires a prefix.\nvar matches = documentElement$1.matches || documentElement$1.msMatchesSelector;\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\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > jQuery.expr.cacheLength ) {\n\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 * Checks a node for validity as a jQuery selector 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// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\nvar attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t// Operator (capture 2)\n\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\twhitespace + \"*\\\\]\";\n\nvar pseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t// 2. simple (capture 6)\n\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t// 3. anything else (capture 2)\n\t\".*\" +\n\t\")\\\\)|)\";\n\nvar filterMatchExpr = {\n\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\tATTR: new RegExp( \"^\" + attributes ),\n\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\tCHILD: new RegExp(\n\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" )\n};\n\nvar rpseudo = new RegExp( pseudos );\n\n// CSS escapes\n// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\nvar runescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t};\n\nfunction unescapeSelector( sel ) {\n\treturn sel.replace( runescape, funescape );\n}\n\nfunction selectorError( msg ) {\n\tjQuery.error( \"Syntax error, unrecognized expression: \" + msg );\n}\n\nvar rcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" );\n\nvar tokenCache = createCache();\n\nfunction tokenize( 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 = jQuery.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\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 = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\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 filterMatchExpr ) {\n\t\t\tif ( ( match = jQuery.expr.match[ 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\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tselectorError( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nvar preFilter = {\n\tATTR: function( match ) {\n\t\tmatch[ 1 ] = unescapeSelector( match[ 1 ] );\n\n\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\tmatch[ 3 ] = unescapeSelector( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" );\n\n\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t}\n\n\t\treturn match.slice( 0, 4 );\n\t},\n\n\tCHILD: function( match ) {\n\n\t\t/* matches from filterMatchExpr[\"CHILD\"]\n\t\t\t1 type (only|nth|...)\n\t\t\t2 what (child|of-type)\n\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t5 sign of xn-component\n\t\t\t6 x of xn-component\n\t\t\t7 sign of y-component\n\t\t\t8 y of y-component\n\t\t*/\n\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t// nth-* requires argument\n\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\tselectorError( match[ 0 ] );\n\t\t\t}\n\n\t\t\t// numeric x and y parameters for jQuery.expr.filter.CHILD\n\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t);\n\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t// other types prohibit arguments\n\t\t} else if ( match[ 3 ] ) {\n\t\t\tselectorError( match[ 0 ] );\n\t\t}\n\n\t\treturn match;\n\t},\n\n\tPSEUDO: function( match ) {\n\t\tvar excess,\n\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\tif ( filterMatchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Accept quoted arguments as-is\n\t\tif ( match[ 3 ] ) {\n\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t// Strip excess characters from unquoted arguments\n\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t// Get excess from tokenize (recursively)\n\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t// advance to the next closing parenthesis\n\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) -\n\t\t\t\tunquoted.length ) ) {\n\n\t\t\t// excess is a negative index\n\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t}\n\n\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\treturn match.slice( 0, 3 );\n\t}\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\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nfunction access( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( typeof value !== \"function\" ) {\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\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n}\n\n// Only count HTML whitespace\n// Other whitespace should count in values\n// https://infra.spec.whatwg.org/#ascii-whitespace\nvar rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ||\n\n\t\t\t\t// For compat with previous handling of boolean attributes,\n\t\t\t\t// remove when `false` passed. For ARIA attributes -\n\t\t\t\t// many of which recognize a `\"false\"` value - continue to\n\t\t\t\t// set the `\"false\"` value as jQuery <4 did.\n\t\t\t\t( value === false && name.toLowerCase().indexOf( \"aria-\" ) !== 0 ) ) {\n\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = elem.getAttribute( name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Support: IE <=11+\n// An input loses its value after becoming a radio\nif ( isIE ) {\n\tjQuery.attrHooks.type = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( value === \"radio\" && nodeName( elem, \"input\" ) ) {\n\t\t\t\tvar val = elem.value;\n\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\tif ( val ) {\n\t\t\t\t\telem.value = val;\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n}\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nvar sort = arr.sort;\n\nvar splice = arr.splice;\n\nvar hasDuplicate;\n\n// Document order sorting\nfunction sortOrder( a, b ) {\n\n\t// Flag for duplicate removal\n\tif ( a === b ) {\n\t\thasDuplicate = true;\n\t\treturn 0;\n\t}\n\n\t// Sort on method existence if only one input has compareDocumentPosition\n\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\tif ( compare ) {\n\t\treturn compare;\n\t}\n\n\t// Calculate position if both inputs belong to the same document\n\t// Support: IE 11+\n\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\ta.compareDocumentPosition( b ) :\n\n\t\t// Otherwise we know they are disconnected\n\t\t1;\n\n\t// Disconnected nodes\n\tif ( compare & 1 ) {\n\n\t\t// Choose the first element that is related to the document\n\t\t// Support: IE 11+\n\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tif ( a == document$1 || a.ownerDocument == document$1 &&\n\t\t\tjQuery.contains( document$1, a ) ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\t// Support: IE 11+\n\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tif ( b == document$1 || b.ownerDocument == document$1 &&\n\t\t\tjQuery.contains( document$1, b ) ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Maintain original order\n\t\treturn 0;\n\t}\n\n\treturn compare & 4 ? -1 : 1;\n}\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\thasDuplicate = false;\n\n\tsort.call( results, 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\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nvar i,\n\toutermostContext,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\n\t// Instance-specific data\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\n\t// Regular expressions\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = jQuery.extend( {\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t}, filterMatchExpr ),\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr$1 = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\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$1.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\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn results;\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tjQuery.contains( context, elem ) ) {\n\n\t\t\t\t\t\t\tpush.call( results, 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 ] ) && context.getElementsByClassName ) {\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 ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// Outside of IE, if we're not changing the context we can\n\t\t\t\t\t// use :scope instead of an ID.\n\t\t\t\t\t// Support: IE 11+\n\t\t\t\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || isIE ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = jQuery.expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === jQuery.expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ jQuery.expando ] = true;\n\treturn fn;\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\treturn nodeName( elem, \"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\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : document$1;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+\n\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 ) {\n\t\treturn;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: IE 9 - 11+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (see trac-13936)\n\t// Support: IE 11+\n\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( isIE && document$1 != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\treturn matches.call( elem, expr );\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\njQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tfind: {\n\t\tID: function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t},\n\n\t\tCLASS: function( className, context ) {\n\t\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\t\treturn context.getElementsByClassName( className );\n\t\t\t}\n\t\t}\n\t},\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: preFilter,\n\n\tfilter: {\n\t\tID: function( id ) {\n\t\t\tvar attrId = unescapeSelector( id );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t},\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = unescapeSelector( nodeNameSelector ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: 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 +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = jQuery.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\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: 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, 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\tnodeName( node, 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\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\t\t\t\t\t\t\touterCache = parent[ jQuery.expando ] ||\n\t\t\t\t\t\t\t\t( parent[ jQuery.expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ 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\touterCache[ 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\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\touterCache = elem[ jQuery.expando ] ||\n\t\t\t\t\t\t\t\t\t( elem[ jQuery.expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ 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\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\tnodeName( node, 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[ jQuery.expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ jQuery.expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ 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\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://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 fn = jQuery.expr.pseudos[ pseudo ] ||\n\t\t\t\tjQuery.expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\tselectorError( \"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 jQuery does\n\t\t\tif ( fn[ jQuery.expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\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( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ jQuery.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\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/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\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = unescapeSelector( text );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( 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// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tselectorError( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = unescapeSelector( lang ).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\ttarget: 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\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( isIE && elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\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\tempty: function( elem ) {\n\n\t\t\t// https://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\tparent: function( elem ) {\n\t\t\treturn !jQuery.expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\";\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: 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\todd: 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\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\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\tgt: 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\njQuery.expr.pseudos.nth = jQuery.expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tjQuery.expr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tjQuery.expr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = jQuery.expr.pseudos;\njQuery.expr.setFilters = new setFilters();\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, 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[ jQuery.expando ] || ( elem[ jQuery.expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( 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[ jQuery.expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ jQuery.expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\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 ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.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\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\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\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\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.call( 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 = jQuery.expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || jQuery.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.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\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\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = jQuery.expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = jQuery.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[ jQuery.expando ] ) {\n\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 ( jQuery.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\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 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$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\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && jQuery.expr.find.TAG( \"*\", outermost ),\n\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\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+\n\t\t\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\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\tfor ( ; ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+\n\t\t\t\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\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\tpush.call( results, 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\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\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\tjQuery.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\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\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[ jQuery.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,\n\t\t\tmatcherFromGroupMatchers( 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 jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML &&\n\t\t\t\tjQuery.expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( jQuery.expr.find.ID(\n\t\t\t\tunescapeSelector( token.matches[ 0 ] ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 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 ( jQuery.expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = jQuery.expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\tunescapeSelector( token.matches[ 0 ] ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( 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// Initialize against the default document\nsetDocument();\n\njQuery.find = find;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfunction dir( 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\nfunction siblings( 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\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n// rsingleTag matches a string consisting of a single HTML element with no attributes\n// and captures the element's name\nvar rsingleTag = /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;\n\nfunction isObviousHtml( input ) {\n\treturn input[ 0 ] === \"<\" &&\n\t\tinput[ input.length - 1 ] === \">\" &&\n\t\tinput.length >= 3;\n}\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( typeof qualifier === \"function\" ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n// Initialize a jQuery object\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 (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\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// HANDLE: $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( typeof selector === \"function\" ) {\n\t\t\treturn rootjQuery.ready !== undefined ?\n\t\t\t\trootjQuery.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\n\t\t} else {\n\n\t\t\t// Handle obvious HTML strings\n\t\t\tmatch = selector + \"\";\n\t\t\tif ( isObviousHtml( match ) ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip\n\t\t\t\t// the regex check. This also handles browser-supported HTML wrappers\n\t\t\t\t// like TrustedHTML.\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t// Handle HTML strings or selectors\n\t\t\t} else if ( typeof selector === \"string\" ) {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t} else {\n\t\t\t\treturn jQuery.makeArray( selector, this );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\t// Note: match[1] may be a string or a TrustedHTML wrapper\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$1,\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 ( typeof this[ match ] === \"function\" ) {\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$1.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr) & $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).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\t\t}\n\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$1 );\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11+\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( typeof arg === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && typeof( method = value.promise ) === \"function\" ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && typeof( method = value.then ) === \"function\" ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\t\treject( value );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tcatch: function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = typeof fns[ tuple[ 4 ] ] === \"function\" &&\n\t\t\t\t\t\t\t\tfns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && typeof returned.promise === \"function\" ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( typeof then === \"function\" ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\ttypeof onProgress === \"function\" ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\ttypeof onFulfilled === \"function\" ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\ttypeof onRejected === \"function\" ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\ttypeof( resolveValues[ i ] && resolveValues[ i ].then ) === \"function\" ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\tif ( error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn(\n\t\t\t\"jQuery.Deferred exception\",\n\t\t\terror,\n\t\t\tasyncError\n\t\t);\n\t}\n};\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document$1, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument$1.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\nif ( document$1.readyState !== \"loading\" ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument$1.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n// Matches dashed string for camelizing\nvar rdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase\nfunction camelCase( string ) {\n\treturn string.replace( rdashAlpha, fcamelCase );\n}\n\n/**\n * Determines whether an object can have data\n */\nfunction acceptData( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n}\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = Object.create( null );\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 trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\n\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11+\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.set( 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.set( 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} );\n\nvar pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\n// isHiddenWithinTree reports if an element has a non-\"none\" display style (inline and/or\n// through the CSS cascade), which is useful in deciding whether or not to make it visible.\n// It differs from the :hidden selector (jQuery.expr.pseudos.hidden) in two important ways:\n// * A hidden ancestor does not force an element to be classified as hidden.\n// * Being disconnected from the document does not force an element to be classified as hidden.\n// These differences improve the behavior of .toggle() et al. when applied to elements that are\n// detached or contained within hidden ancestors (gh-2404, gh-2863).\nfunction isHiddenWithinTree( elem, el ) {\n\n\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t// in that case, element will be second argument\n\telem = el || elem;\n\n\t// Inline style trumps all\n\treturn elem.style.display === \"none\" ||\n\t\telem.style.display === \"\" &&\n\t\tjQuery.css( elem, \"display\" ) === \"none\";\n}\n\nvar ralphaStart = /^[a-z]/,\n\n\t// The regex visualized:\n\t//\n\t// /----------\\\n\t// | | /-------\\\n\t// | / Top \\ | | |\n\t// /--- Border ---+-| Right |-+---+- Width -+---\\\n\t// | | Bottom | |\n\t// | \\ Left / |\n\t// | |\n\t// | /----------\\ |\n\t// | /-------------\\ | | |- END\n\t// | | | | / Top \\ | |\n\t// | | / Margin \\ | | | Right | | |\n\t// |---------+-| |-+---+-| Bottom |-+----|\n\t// | \\ Padding / \\ Left / |\n\t// BEGIN -| |\n\t// | /---------\\ |\n\t// | | | |\n\t// | | / Min \\ | / Width \\ |\n\t// \\--------------+-| |-+---| |---/\n\t// \\ Max / \\ Height /\n\trautoPx = /^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/;\n\nfunction isAutoPx( prop ) {\n\n\t// The first test is used to ensure that:\n\t// 1. The prop starts with a lowercase letter (as we uppercase it for the second regex).\n\t// 2. The prop is not empty.\n\treturn ralphaStart.test( prop ) &&\n\t\trautoPx.test( prop[ 0 ].toUpperCase() + prop.slice( 1 ) );\n}\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( isAutoPx( prop ) ? \"px\" : \"\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( !isAutoPx( prop ) || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54 - 66+\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/;\n\n// Convert dashed to camelCase, handle vendor prefixes.\n// Used by the css & effects modules.\n// Support: IE <=9 - 11+\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction cssCamelCase( string ) {\n\treturn camelCase( string.replace( rmsPrefix, \"ms-\" ) );\n}\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\n\nvar isAttached = function( elem ) {\n\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t},\n\tcomposed = { composed: true };\n\n// Support: IE 9 - 11+\n// Check attachment across shadow DOM boundaries when possible (gh-3504).\n// Provide a fallback for browsers without Shadow DOM v1 support.\nif ( !documentElement$1.getRootNode ) {\n\tisAttached = function( elem ) {\n\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t};\n}\n\n// rtagName captures the name from the first start tag in a string of HTML\n// https://html.spec.whatwg.org/multipage/syntax.html#tag-open-state\n// https://html.spec.whatwg.org/multipage/syntax.html#tag-name-state\nvar rtagName = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i;\n\nvar wrapMap = {\n\n\t// Table parts need to be wrapped with `` or they're\n\t// stripped to their contents when put in a div.\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: [ \"table\" ],\n\tcol: [ \"colgroup\", \"table\" ],\n\ttr: [ \"tbody\", \"table\" ],\n\ttd: [ \"tr\", \"tbody\", \"table\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11+\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\n\t\t// Use slice to snapshot the live collection from gEBTN\n\t\tret = arr.slice.call( context.getElementsByTagName( tag || \"*\" ) );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\nvar rscriptType = /^$|^module$|\\/(?:java|ecma)script/i;\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\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" && ( elem.nodeType || isArrayLike( elem ) ) ) {\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 ] || arr;\n\n\t\t\t\t// Create wrappers & descend into them.\n\t\t\t\tj = wrap.length;\n\t\t\t\twhile ( --j > -1 ) {\n\t\t\t\t\ttmp = tmp.appendChild( context.createElement( wrap[ j ] ) );\n\t\t\t\t}\n\n\t\t\t\ttmp.innerHTML = jQuery.htmlPrefilter( elem );\n\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 (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = typeof value === \"function\";\n\n\tif ( valueIsFunction ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\targs[ 0 ] = value.call( this, index, self.html() );\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 (trac-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\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// Re-enable 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.get( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce,\n\t\t\t\t\t\t\t\t\tcrossOrigin: node.crossOrigin\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent, node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nvar rcheckableType = /^(?:checkbox|radio)$/i;\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\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\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// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement$1, 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 = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: Firefox <=42 - 66+\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11+\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: typeof hook === \"function\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: jQuery.extend( Object.create( null ), {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\t\t\t\tif ( event.result !== undefined ) {\n\n\t\t\t\t\t// Setting `event.originalEvent.returnValue` in modern\n\t\t\t\t\t// browsers does the same as just calling `preventDefault()`,\n\t\t\t\t\t// the browsers ignore the value anyway.\n\t\t\t\t\t// Incidentally, IE 11 is the only browser from our supported\n\t\t\t\t\t// ones which respects the value returned from a `beforeunload`\n\t\t\t\t\t// handler attached by `addEventListener`; other browsers do\n\t\t\t\t\t// so only for inline handlers, so not setting the value\n\t\t\t\t\t// directly shouldn't reduce any functionality.\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} )\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\t// This controller function is invoked under multiple circumstances,\n\t\t\t// differentiated by the stored value in `saved`:\n\t\t\t// 1. For an outer synthetic `.trigger()`ed event (detected by\n\t\t\t// `event.isTrigger & 1` and non-array `saved`), it records arguments\n\t\t\t// as an array and fires an [inner] native event to prompt state\n\t\t\t// changes that should be observed by registered listeners (such as\n\t\t\t// checkbox toggling and focus updating), then clears the stored value.\n\t\t\t// 2. For an [inner] native event (detected by `saved` being\n\t\t\t// an array), it triggers an inner synthetic event, records the\n\t\t\t// result, and preempts propagation to further jQuery listeners.\n\t\t\t// 3. For an inner synthetic event (detected by `event.isTrigger & 1` and\n\t\t\t// array `saved`), it prevents double-propagation of surrogate events\n\t\t\t// but otherwise allows everything to proceed (particularly including\n\t\t\t// further listeners).\n\t\t\t// Possible `saved` data shapes: `[...], `{ value }`, `false`.\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object),\n\t\t\t\t\t// so this array will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is\n\t\t\t\t\t\t// blurred by clicking outside of it, it invokes the handler\n\t\t\t\t\t\t// synchronously. If that handler calls `.remove()` on\n\t\t\t\t\t\t// the element, the data is cleared, leaving `result`\n\t\t\t\t\t\t// undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling\n\t\t\t\t// surrogate (focus or blur), assume that the surrogate already\n\t\t\t\t// propagated from triggering the native event and prevent that\n\t\t\t\t// from happening again here.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order.\n\t\t\t// Fire an inner synthetic event with the original arguments.\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\t\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\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\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\tthis.target = src.target;\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\t// Support: IE 11+\n\t// Attach a single focusin/focusout handler on the document while someone wants focus/blur.\n\t// This is because the former are synchronous in IE while the latter are async. In other\n\t// browsers, all those handlers are invoked synchronously.\n\tfunction focusMappedHandler( nativeEvent ) {\n\n\t\t// `eventHandle` would already wrap the event, but we need to change the `type` here.\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\tevent.isSimulated = true;\n\n\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t// invoking the handler at the lower level.\n\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t// by this point.\n\t\t\tdataPriv.get( this, \"handle\" )( event );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( isIE ) {\n\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tif ( isIE ) {\n\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\nvar\n\n\t// Support: IE <=10 - 11+\n\t// In IE using regex groups here causes severe slowdowns.\n\trnoInnerhtml = / 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\t\t\tpush.apply( ret, elems );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\n\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\nfunction getStyles( elem ) {\n\n\t// Support: IE <=11+ (trac-14150)\n\t// In IE popup's `window` is the opener window which makes `window.getComputedStyle( elem )`\n\t// break. Using `elem.ownerDocument.defaultView` avoids the issue.\n\tvar view = elem.ownerDocument.defaultView;\n\n\t// `document.implementation.createHTMLDocument( \"\" )` has a `null` `defaultView`\n\t// property; check `defaultView` truthiness to fallback to window in such a case.\n\tif ( !view ) {\n\t\tview = window;\n\t}\n\n\treturn view.getComputedStyle( elem );\n}\n\n// A method for quickly swapping in/out CSS properties to get correct calculations.\nfunction swap( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n}\n\nfunction curCSS( elem, name, computed ) {\n\tvar ret,\n\t\tisCustomProp = rcustomProp.test( name );\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for `.css('--customProperty')` (gh-3144)\n\tif ( computed ) {\n\n\t\t// A fallback to direct property access is needed as `computed`, being\n\t\t// the output of `getComputedStyle`, contains camelCased keys and\n\t\t// `getPropertyValue` requires kebab-case ones.\n\t\t//\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105 - 135+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document$1.createElement( \"div\" ).style;\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped vendor prefixed property\nfunction finalPropName( name ) {\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorPropName( name ) || name;\n}\n\nvar reliableTrDimensionsVal, reliableColDimensionsVal,\n\ttable = document$1.createElement( \"table\" );\n\n// Executing table tests requires only one layout, so they're executed\n// at the same time to save the second computation.\nfunction computeTableStyleTests() {\n\tif (\n\n\t\t// This is a singleton, we need to execute it only once\n\t\t!table ||\n\n\t\t// Finish early in limited (non-browser) environments\n\t\t!table.style\n\t) {\n\t\treturn;\n\t}\n\n\tvar trStyle,\n\t\tcol = document$1.createElement( \"col\" ),\n\t\ttr = document$1.createElement( \"tr\" ),\n\t\ttd = document$1.createElement( \"td\" );\n\n\ttable.style.cssText = \"position:absolute;left:-11111px;\" +\n\t\t\"border-collapse:separate;border-spacing:0\";\n\ttr.style.cssText = \"box-sizing:content-box;border:1px solid;height:1px\";\n\ttd.style.cssText = \"height:9px;width:9px;padding:0\";\n\n\tcol.span = 2;\n\n\tdocumentElement$1\n\t\t.appendChild( table )\n\t\t.appendChild( col )\n\t\t.parentNode\n\t\t.appendChild( tr )\n\t\t.appendChild( td )\n\t\t.parentNode\n\t\t.appendChild( td.cloneNode( true ) );\n\n\t// Don't run until window is visible\n\tif ( table.offsetWidth === 0 ) {\n\t\tdocumentElement$1.removeChild( table );\n\t\treturn;\n\t}\n\n\ttrStyle = window.getComputedStyle( tr );\n\n\t// Support: Firefox 135+\n\t// Firefox always reports computed width as if `span` was 1.\n\t// Support: Safari 18.3+\n\t// In Safari, computed width for columns is always 0.\n\t// In both these browsers, using `offsetWidth` solves the issue.\n\t// Support: IE 11+\n\t// In IE, `` computed width is `\"auto\"` unless `width` is set\n\t// explicitly via CSS so measurements there remain incorrect. Because of\n\t// the lack of a proper workaround, we accept this limitation, treating\n\t// IE as passing the test.\n\treliableColDimensionsVal = isIE || Math.round( parseFloat(\n\t\twindow.getComputedStyle( col ).width )\n\t) === 18;\n\n\t// Support: IE 10 - 11+\n\t// IE misreports `getComputedStyle` of table rows with width/height\n\t// set in CSS while `offset*` properties report correct values.\n\t// Support: Firefox 70 - 135+\n\t// Only Firefox includes border widths\n\t// in computed dimensions for table rows. (gh-4529)\n\treliableTrDimensionsVal = Math.round( parseFloat( trStyle.height ) +\n\t\tparseFloat( trStyle.borderTopWidth ) +\n\t\tparseFloat( trStyle.borderBottomWidth ) ) === tr.offsetHeight;\n\n\tdocumentElement$1.removeChild( table );\n\n\t// Nullify the table so it wouldn't be stored in the memory;\n\t// it will also be a sign that checks were already performed.\n\ttable = null;\n}\n\njQuery.extend( support, {\n\treliableTrDimensions: function() {\n\t\tcomputeTableStyleTests();\n\t\treturn reliableTrDimensionsVal;\n\t},\n\n\treliableColDimensions: function() {\n\t\tcomputeTableStyleTests();\n\t\treturn reliableColDimensionsVal;\n\t}\n} );\n\nvar cssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = isIE || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\tif (\n\t\t(\n\n\t\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\t\tval === \"auto\" ||\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t\t\t// In those cases, the computed value can be trusted to be border-box.\n\t\t\t( isIE && isBorderBox ) ||\n\n\t\t\t( !support.reliableColDimensions() && nodeName( elem, \"col\" ) ) ||\n\n\t\t\t( !support.reliableTrDimensions() && nodeName( elem, \"tr\" ) )\n\t\t) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = cssCamelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If the value is a number, add `px` for certain CSS properties\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( isAutoPx( origName ) ? \"px\" : \"\" );\n\t\t\t}\n\n\t\t\t// Support: IE <=9 - 11+\n\t\t\t// background-* props of a cloned element affect the source element (trac-8908)\n\t\t\tif ( isIE && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = cssCamelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Elements with `display: none` can have dimension info if\n\t\t\t\t// we invisibly show them.\n\t\t\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tisBorderBox = extra &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( isAutoPx( prop ) ? \"px\" : \"\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document$1.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, 13 );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.set( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t// eslint-disable-next-line no-loop-func\n\t\t\tanim.done( function() {\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = cssCamelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\tpercent = 1 - ( remaining / animation.duration || 0 ),\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( typeof result.stop === \"function\" ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( typeof animation.opts.start === \"function\" ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( typeof props === \"function\" ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || easing ||\n\t\t\ttypeof speed === \"function\" && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && typeof easing !== \"function\" && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( typeof opt.old === \"function\" ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = elem.getAttribute( \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\n\t\t\t\t\t// href-less anchor's `tabIndex` property value is `0` and\n\t\t\t\t\t// the `tabindex` attribute value: `null`. We want `-1`.\n\t\t\t\t\trclickable.test( elem.nodeName ) && elem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11+\n// Accessing the selectedIndex property forces the browser to respect\n// setting selected on the option. The getter ensures a default option\n// is selected when in an optgroup. ESLint rule \"no-unused-expressions\"\n// is disabled for this code since it considers such accessions noop.\nif ( isIE ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n// Strip and collapse whitespace according to HTML spec\n// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\nfunction stripAndCollapse( value ) {\n\tvar tokens = value.match( rnothtmlwhite ) || [];\n\treturn tokens.join( \" \" );\n}\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( typeof value === \"function\" ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( typeof value === \"function\" ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self;\n\n\t\tif ( typeof value === \"function\" ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = typeof value === \"function\";\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\tif ( option.selected &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\tif ( ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery( option ).val(), values ) > -1\n\t\t\t\t\t) ) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\nif ( isIE ) {\n\tjQuery.valHooks.option = {\n\t\tget: function( elem ) {\n\n\t\t\tvar val = elem.getAttribute( \"value\" );\n\t\t\treturn val != null ?\n\t\t\t\tval :\n\n\t\t\t\t// Support: IE <=10 - 11+\n\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t}\n\t};\n}\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n} );\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document$1 ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document$1;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document$1 ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && typeof elem[ type ] === \"function\" && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = /\\?/;\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11+\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = typeof valueOrFunction === \"function\" ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document$1.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( typeof func === \"function\" ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\n\t\t\t\t\t\t\t\t// Support: IE 11+\n\t\t\t\t\t\t\t\t// `getResponseHeader( key )` in IE doesn't combine all header\n\t\t\t\t\t\t\t\t// values for the provided key into a single result with values\n\t\t\t\t\t\t\t\t// joined by commas as other browsers do. Instead, it returns\n\t\t\t\t\t\t\t\t// them on separate lines.\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document$1.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11+\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11+\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an ESM-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" +\n\t\t\t\t\t( nonce.guid++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted.\n\t\t// Handle the null callback placeholder.\n\t\tif ( typeof data === \"function\" || data === null ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\tscriptAttrs: options.crossOrigin ? { \"crossOrigin\": options.crossOrigin } : undefined,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( typeof html === \"function\" ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( typeof html === \"function\" ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = typeof html === \"function\";\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\njQuery.ajaxSettings.xhr = function() {\n\treturn new window.XMLHttpRequest();\n};\n\nvar xhrSuccessStatus = {\n\n\t// File protocol always yields status code 0, assume 200\n\t0: 200\n};\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback;\n\n\treturn {\n\t\tsend: function( headers, complete ) {\n\t\t\tvar i,\n\t\t\t\txhr = options.xhr();\n\n\t\t\txhr.open(\n\t\t\t\toptions.type,\n\t\t\t\toptions.url,\n\t\t\t\toptions.async,\n\t\t\t\toptions.username,\n\t\t\t\toptions.password\n\t\t\t);\n\n\t\t\t// Apply custom fields if provided\n\t\t\tif ( options.xhrFields ) {\n\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override mime type if needed\n\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t}\n\n\t\t\t// X-Requested-With header\n\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t}\n\n\t\t\t// Set headers\n\t\t\tfor ( i in headers ) {\n\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t}\n\n\t\t\t// Callback\n\t\t\tcallback = function( type ) {\n\t\t\t\treturn function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = null;\n\n\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) === \"text\" ?\n\t\t\t\t\t\t\t\t\t{ text: xhr.responseText } :\n\t\t\t\t\t\t\t\t\t{ binary: xhr.response },\n\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\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\n\t\t\t// Listen to events\n\t\t\txhr.onload = callback();\n\t\t\txhr.onabort = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t// Create the abort callback\n\t\t\tcallback = callback( \"abort\" );\n\n\t\t\ttry {\n\n\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tabort: function() {\n\t\t\tif ( callback ) {\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t};\n} );\n\nfunction canUseScriptTag( s ) {\n\n\t// A script tag can only be used for async, cross domain or forced-by-attrs requests.\n\t// Requests with headers cannot use a script tag. However, when both `scriptAttrs` &\n\t// `headers` options are specified, both are impossible to satisfy together; we\n\t// prefer `scriptAttrs` then.\n\t// Sync requests remain handled differently to preserve strict script ordering.\n\treturn s.scriptAttrs || (\n\t\t!s.headers &&\n\t\t(\n\t\t\ts.crossDomain ||\n\n\t\t\t// When dealing with JSONP (`s.dataTypes` include \"json\" then)\n\t\t\t// don't use a script tag so that error responses still may have\n\t\t\t// `responseJSON` set. Continue using a script tag for JSONP requests that:\n\t\t\t// * are cross-domain as AJAX requests won't work without a CORS setup\n\t\t\t// * have `scriptAttrs` set as that's a script-only functionality\n\t\t\t// Note that this means JSONP requests violate strict CSP script-src settings.\n\t\t\t// A proper solution is to migrate from using JSONP to a CORS setup.\n\t\t\t( s.async && jQuery.inArray( \"json\", s.dataTypes ) < 0 )\n\t\t)\n\t);\n}\n\n// Install script dataType. Don't specify `contents.script` so that an explicit\n// `dataType: \"script\"` is required (see gh-2432, gh-4822)\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\n\t// These types of requests are handled via a script tag\n\t// so force their methods to GET.\n\tif ( canUseScriptTag( s ) ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\tif ( canUseScriptTag( s ) ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"\n \n \n `);\n document.close();\n}\n\nconst delay = (ms: number) => new Promise((resolve) => { setTimeout(resolve, ms); });\n\nexport async function restartReload(initial = true) {\n document.body.style = 'background: #222222; font-size: 1rem; font-family:monospace; margin-top:20%; color:lightgray; text-align:center';\n document.body.innerHTML = '

Server shutdown in progress...

';\n if (initial) await delay(10000);\n try {\n const res = await authFetch(`${window.api}/progress?skip_current_image=true`);\n console.log('restartReload', res);\n if (res?.ok) {\n document.body.innerHTML = '

Server restart in progress...

';\n setTimeout(() => location.reload(), 10000);\n } else {\n setTimeout(() => restartReload(false), 2500);\n }\n } catch {\n setTimeout(() => restartReload(false), 2500);\n }\n return [];\n}\n\nexport function updateInput(target) {\n const e = new Event('input', { bubbles: true });\n Object.defineProperty(e, 'target', { value: target });\n target.dispatchEvent(e);\n}\n\nlet desiredCheckpointName = null;\nexport function selectCheckpoint(name) {\n desiredCheckpointName = name;\n const tabName = getENActiveTab();\n const btnModel = gradioApp().getElementById(`${tabName}_extra_model`);\n const isRefiner = btnModel && btnModel.classList.contains('toolbutton-selected');\n if (isRefiner) gradioApp().getElementById('change_refiner').click();\n else gradioApp().getElementById('change_checkpoint').click();\n log(`selectCheckpoint ${isRefiner ? 'refiner' : 'model'}: ${desiredCheckpointName}`);\n markSelectedCards([desiredCheckpointName], 'model');\n setTimeout(requestProgress, 250);\n}\n\nlet desiredVAEName = null;\nexport function selectVAE(name) {\n desiredVAEName = name;\n gradioApp().getElementById('change_vae').click();\n log(`selectVAE: ${desiredVAEName}`);\n markSelectedCards([desiredVAEName], 'vae');\n}\n\nlet desiredUNetName = null;\n\nfunction consumeDesiredCheckpointName(v) {\n const res = desiredCheckpointName;\n desiredCheckpointName = null;\n return [res || v, null];\n}\n\nfunction consumeDesiredVAEName(v) {\n const res = desiredVAEName;\n desiredVAEName = null;\n return [res || v, null];\n}\n\nfunction consumeDesiredUNetName(v) {\n const res = desiredUNetName;\n desiredUNetName = null;\n return [res || v, null];\n}\n\nfunction getDesiredCheckpointName() {\n return desiredCheckpointName;\n}\n\nexport function selectUNet(name) {\n desiredUNetName = name;\n const tabName = getENActiveTab();\n const btnModel = gradioApp().getElementById(`${tabName}_extra_model`);\n const isSecondary = btnModel && btnModel.classList.contains('toolbutton-selected');\n if (isSecondary) gradioApp().getElementById('change_unet_secondary').click();\n else gradioApp().getElementById('change_unet').click();\n log(`selectUNet ${isSecondary ? 'secondary' : 'primary'}: ${desiredUNetName}`);\n markSelectedCards([desiredUNetName], 'unet');\n}\n\nexport function selectReference(name) {\n log(`selectReference: ${name}`);\n desiredCheckpointName = name;\n gradioApp().getElementById('change_reference').click();\n markSelectedCards([desiredCheckpointName], 'model');\n setTimeout(requestProgress, 250);\n}\n\nfunction currentImageResolutionimg2img(_a, _b, scaleBy) {\n const img = gradioApp().querySelector('#mode_img2img > div[style=\"display: block;\"] img');\n return img ? [img.naturalWidth, img.naturalHeight, scaleBy] : [0, 0, scaleBy];\n}\n\nfunction currentImageResolutioncontrol(_a, _b, scaleBy) {\n if (window.kanvas) {\n const active = window.kanvas.stages?.getActiveStage();\n return [active?.width || 0, active?.height || 0, scaleBy];\n }\n const img = gradioApp().querySelector('#control-tab-input > div[style=\"display: block;\"] img');\n return img ? [img.naturalWidth, img.naturalHeight, scaleBy] : [0, 0, scaleBy];\n}\n\nfunction updateImg2imgResizeToTextAfterChangingImage() {\n const el = gradioApp().getElementById('img2img_update_resize_to');\n if (el) setTimeout(() => gradioApp().getElementById('img2img_update_resize_to').click(), 500);\n return [];\n}\n\nfunction createThemeElement(): HTMLImageElement {\n const el = document.createElement('img');\n el.id = 'theme-preview';\n el.className = 'theme-preview';\n el.onclick = () => { el.style.display = 'none'; };\n document.body.appendChild(el);\n return el;\n}\n\nexport async function toggleCompact(val, old) {\n if (val === old) return;\n log('toggleCompact', val, old);\n if (val) {\n gradioApp().style.setProperty('--layout-gap', 'var(--spacing-md)');\n gradioApp().querySelectorAll('input[type=range]').forEach((el) => el.classList.add('hidden'));\n gradioApp().querySelectorAll('div .form').forEach((el) => el.classList.add('form-compact'));\n gradioApp().querySelectorAll('.small-accordion .label-wrap').forEach((el) => el.classList.add('accordion-compact'));\n } else {\n gradioApp().style.setProperty('--layout-gap', 'var(--spacing-xxl)');\n gradioApp().querySelectorAll('input[type=range]').forEach((el) => el.classList.remove('hidden'));\n gradioApp().querySelectorAll('div .form').forEach((el) => el.classList.remove('form-compact'));\n gradioApp().querySelectorAll('.small-accordion .label-wrap').forEach((el) => el.classList.remove('accordion-compact'));\n }\n}\n\nfunction previewTheme() {\n let name = gradioApp().getElementById('setting_gradio_theme').querySelectorAll('input')?.[0].value || '';\n fetch(`${window.subpath}/file=data/themes.json`)\n .then((res) => {\n res.json()\n .then((themes) => {\n const theme = Array.isArray(themes) ? themes.find((t) => t.id === name) : null;\n if (theme) {\n window.open(theme.subdomain, '_blank');\n } else {\n const el = document.getElementById('theme-preview') as HTMLImageElement | null || createThemeElement();\n el.style.display = el.style.display === 'block' ? 'none' : 'block';\n name = name.replace('/', '-');\n el.src = `/file=ui/css/${name}.jpg`;\n }\n })\n .catch((e) => error(`previewTheme: ${e}`));\n })\n .catch((e) => error(`previewTheme: ${e}`));\n}\n\nasync function browseFolder() {\n const picker = window.showDirectoryPicker?.();\n if (!picker) return null;\n const f = await picker;\n if (f && f.kind === 'directory') return f.name;\n return null;\n}\n\nlet kanvasNotifyTimer: ReturnType | undefined;\n// Notify kanvas to resize its stage when the resize-panel width/height change. Wired through gradio's\n// .change so it also fires on programmatic updates (detect-size, paste params, swap, send-to) that the\n// client-side resolutionLock input listeners never see. Writes nothing back, so it cannot loop.\nexport function notifyKanvasResize(width: number, height: number) {\n if (window.resizeStage) {\n const w = Number(width);\n const h = Number(height);\n clearTimeout(kanvasNotifyTimer);\n kanvasNotifyTimer = setTimeout(() => window.resizeStage?.(w, h), 250);\n }\n}\n\nexport async function reconnectUI() {\n const t0 = performance.now();\n const gallery = gradioApp().getElementById('txt2img_gallery');\n const task_id = localStorage.getItem('task');\n const api_logo = Array.from(gradioApp().querySelectorAll('img')).filter((el) => el.src.endsWith('api-logo.svg'));\n if (api_logo.length > 0) api_logo[0].remove();\n if (task_id) {\n debug('task check:', task_id);\n requestProgress(task_id, null, gallery, null, null, true);\n }\n uiLoaded = true;\n\n const sd_model = gradioApp().getElementById('setting_sd_model_checkpoint');\n let loadingStarted = 0;\n let loadingMonitor: ReturnType | null = null;\n\n const sd_model_callback = () => {\n const loading = sd_model.querySelector('.eta-bar');\n if (!loading) {\n loadingStarted = 0;\n clearInterval(loadingMonitor);\n } else if (loadingStarted === 0) {\n loadingStarted = Date.now();\n loadingMonitor = setInterval(() => {\n const elapsed = Date.now() - loadingStarted;\n if (elapsed > 3000 && loading) loading.style.display = 'none';\n }, 5000);\n }\n };\n const sd_model_observer = new MutationObserver(sd_model_callback);\n sd_model_observer.observe(sd_model, { attributes: true, childList: true, subtree: true });\n const t1 = performance.now();\n log('reconnectUI', Math.round(t1 - t0));\n timer('reconnectUI', t1 - t0);\n}\n\nwindow.restartReload = restartReload;\nwindow.updateInput = updateInput;\nwindow.notifyKanvasResize = notifyKanvasResize;\nwindow.clip_gallery_urls = clip_gallery_urls;\nwindow.extract_image_from_gallery = extract_image_from_gallery;\nwindow.getCaptionActiveTab = getCaptionActiveTab;\nwindow.get_img2img_tab_index = get_img2img_tab_index;\nwindow.modelmerger = modelmerger;\nwindow.selected_gallery_index = selected_gallery_index;\nwindow.selected_gallery_files = selected_gallery_files;\nwindow.send_to_kanvas = send_to_kanvas;\nwindow.submit_control = submit_control;\nwindow.submit_framepack = submit_framepack;\nwindow.submit_img2img = submit_img2img;\nwindow.submit_ltx = submit_ltx;\nwindow.submit_postprocessing = submit_postprocessing;\nwindow.submit = submit_txt2img; // compatibility alias\nwindow.submit_txt2img = submit_txt2img;\nwindow.submit_video = submit_video;\nwindow.submit_video_wrapper = submit_video_wrapper;\nwindow.switch_to_txt2img = switch_to_txt2img;\nwindow.switch_to_img2img_tab = switch_to_img2img_tab;\nwindow.switch_to_img2img = switch_to_img2img;\nwindow.switch_to_inpaint = switch_to_inpaint;\nwindow.switch_to_sketch = switch_to_sketch;\nwindow.switch_to_composite = switch_to_composite;\nwindow.switch_to_extras = switch_to_extras;\nwindow.switch_to_control = switch_to_control;\nwindow.switch_to_video = switch_to_video;\nwindow.switch_to_caption = switch_to_caption;\nwindow.recalculate_prompts_txt2img = recalculate_prompts_txt2img;\nwindow.recalculate_prompts_img2img = recalculate_prompts_img2img;\nwindow.recalculate_prompts_inpaint = recalculate_prompts_inpaint;\nwindow.recalculate_prompts_control = recalculate_prompts_control;\nwindow.selectCheckpoint = selectCheckpoint;\nwindow.selectVAE = selectVAE;\nwindow.selectUNet = selectUNet;\nwindow.selectReference = selectReference;\nwindow.consumeDesiredCheckpointName = consumeDesiredCheckpointName;\nwindow.consumeDesiredVAEName = consumeDesiredVAEName;\nwindow.consumeDesiredUNetName = consumeDesiredUNetName;\nwindow.getDesiredCheckpointName = getDesiredCheckpointName;\nwindow.currentImageResolutionimg2img = currentImageResolutionimg2img;\nwindow.currentImageResolutioncontrol = currentImageResolutioncontrol;\nwindow.updateImg2imgResizeToTextAfterChangingImage = updateImg2imgResizeToTextAfterChangingImage;\nwindow.create_submit_args = create_submit_args;\nwindow.set_theme = set_theme;\n", "import { gradioApp } from './script';\nimport { updateInput } from './ui';\n\ntype AccordionElement = HTMLElement & {\n visibleCheckbox: HTMLInputElement;\n onVisibleCheckboxChange: () => void;\n onChecked: (checked: boolean) => void;\n};\n\nexport function inputAccordionChecked(id: string, checked: boolean): void {\n const accordion = gradioApp().getElementById(id);\n if (!(accordion instanceof HTMLElement)) return;\n const acc = accordion as AccordionElement;\n acc.visibleCheckbox.checked = checked;\n acc.onVisibleCheckboxChange();\n}\n\nfunction setupAccordion(accordion: Element): void {\n if (!(accordion instanceof HTMLElement)) return;\n const acc = accordion as AccordionElement;\n const labelWrap = accordion.querySelector('.label-wrap');\n const gradioCheckbox = gradioApp().querySelector(`#${accordion.id}-checkbox input`);\n const extra = gradioApp().querySelector(`#${accordion.id}-extra`);\n if (!(labelWrap instanceof HTMLElement) || !(gradioCheckbox instanceof HTMLInputElement)) return;\n const span = labelWrap.querySelector('span');\n if (!(span instanceof HTMLElement)) return;\n let linked = true;\n const isOpen = () => labelWrap.classList.contains('open');\n const observerAccordionOpen = new MutationObserver((mutations) => {\n mutations.forEach((mutationRecord) => {\n accordion.classList.toggle('input-accordion-open', isOpen());\n if (linked) {\n acc.visibleCheckbox.checked = isOpen();\n acc.onVisibleCheckboxChange();\n }\n });\n });\n observerAccordionOpen.observe(labelWrap, { attributes: true, attributeFilter: ['class'] });\n if (extra instanceof Node) labelWrap.insertBefore(extra, labelWrap.lastElementChild);\n acc.onChecked = (checked: boolean) => {\n if (isOpen() !== checked) labelWrap.click();\n };\n\n const visibleCheckbox = document.createElement('INPUT');\n visibleCheckbox.type = 'checkbox';\n visibleCheckbox.checked = isOpen();\n visibleCheckbox.id = `${accordion.id}-visible-checkbox`;\n visibleCheckbox.className = `${gradioCheckbox.className} input-accordion-checkbox`;\n span.insertBefore(visibleCheckbox, span.firstChild);\n acc.visibleCheckbox = visibleCheckbox as any;\n acc.onVisibleCheckboxChange = () => {\n if (linked && isOpen() !== visibleCheckbox.checked) labelWrap.click();\n gradioCheckbox.checked = visibleCheckbox.checked;\n updateInput(gradioCheckbox);\n };\n\n visibleCheckbox.addEventListener('click', (event) => {\n linked = false;\n event.stopPropagation();\n });\n visibleCheckbox.addEventListener('input', acc.onVisibleCheckboxChange);\n}\n\nwindow.inputAccordionChecked = inputAccordionChecked;\n\n// onUiLoaded(() => {\n// for (const accordion of gradioApp().querySelectorAll('.input-accordion')) setupAccordion(accordion);\n// });\n\nexport function initAccordions() {\n for (const accordion of gradioApp().querySelectorAll('.input-accordion')) setupAccordion(accordion);\n}\n", "/**\n * @type {?IDBDatabase}\n */\nimport { log } from './logger';\n\nlet db = null;\n\ninterface ThumbRecord {\n hash: string;\n folder?: string;\n [key: string]: unknown;\n}\n\nexport async function initIndexDB(): Promise {\n async function createDB(): Promise {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open('SDNext', 2);\n request.onerror = (evt: Event) => reject(evt);\n request.onsuccess = (evt: Event) => {\n db = (evt.target as IDBOpenDBRequest).result;\n const countAll = db\n .transaction(['thumbs'], 'readwrite')\n .objectStore('thumbs')\n .count();\n countAll.onsuccess = () => log('initIndexDB', countAll.result);\n resolve();\n };\n request.onupgradeneeded = (evt: IDBVersionChangeEvent) => {\n db = (evt.target as IDBOpenDBRequest).result;\n const oldver = evt.oldVersion;\n if (oldver < 1) {\n const store = db.createObjectStore('thumbs', { keyPath: 'hash' });\n store.createIndex('hash', 'hash', { unique: true });\n }\n if (oldver < 2) {\n const existingStore = request.transaction.objectStore('thumbs');\n existingStore.createIndex('folder', 'folder', { unique: false });\n }\n resolve();\n };\n });\n }\n\n if (!db) await createDB();\n}\n\nexport function idbIsReady(): boolean {\n return db !== null;\n}\n\n/**\n * Reusable setup for handling IDB transactions.\n * @param {Object} resources - Required resources for implementation\n * @param {IDBTransaction} resources.transaction\n * @param {AbortSignal} resources.signal\n * @param {Function} resources.resolve\n * @param {Function} resources.reject\n * @param {*} resolveValue - Value to resolve the outer Promise with\n * @returns {() => void} - Function for manually aborting the transaction\n */\nfunction configureTransactionAbort({\n transaction,\n signal,\n resolve,\n reject,\n}: {\n transaction: IDBTransaction;\n signal: AbortSignal;\n resolve: (value: T) => void;\n reject: (reason?: unknown) => void;\n}, resolveValue: T): () => void {\n function abortTransaction() {\n signal.removeEventListener('abort', abortTransaction);\n transaction.abort();\n }\n signal.addEventListener('abort', abortTransaction);\n transaction.onabort = () => {\n signal.removeEventListener('abort', abortTransaction);\n reject(new DOMException(`Aborting database transaction. ${signal.reason}`, 'AbortError'));\n };\n transaction.onerror = (e) => {\n signal.removeEventListener('abort', abortTransaction);\n reject(new Error('Database transaction error.'));\n };\n transaction.oncomplete = () => {\n signal.removeEventListener('abort', abortTransaction);\n resolve(resolveValue);\n };\n return abortTransaction;\n}\n\nasync function add(record: ThumbRecord): Promise {\n if (!db) return null;\n return new Promise((resolve, reject) => {\n const request = db\n .transaction(['thumbs'], 'readwrite')\n .objectStore('thumbs')\n .add(record);\n request.onsuccess = (evt) => resolve(evt);\n request.onerror = (evt) => reject(evt);\n });\n}\n\nasync function del(hash: string): Promise {\n if (!db) return null;\n return new Promise((resolve, reject) => {\n const request = db\n .transaction(['thumbs'], 'readwrite')\n .objectStore('thumbs')\n .delete(hash);\n request.onsuccess = (evt) => resolve(evt);\n request.onerror = (evt) => reject(evt);\n });\n}\n\nasync function get(hash: string): Promise {\n if (!db) return null;\n return new Promise((resolve, reject) => {\n const request = db\n .transaction(['thumbs'], 'readonly')\n .objectStore('thumbs')\n .index('hash')\n .get(hash);\n request.onsuccess = () => resolve(request.result);\n request.onerror = (evt) => reject(evt);\n });\n}\n\nasync function getKeys(hash: string): Promise {\n if (!db) return null;\n return new Promise((resolve, reject) => {\n const request = db\n .transaction(['thumbs'], 'readonly')\n .objectStore('thumbs')\n .index('hash')\n .getAllKeys();\n request.onsuccess = () => resolve(request.result);\n request.onerror = (evt) => reject(evt);\n });\n}\n\nasync function put(record: ThumbRecord): Promise {\n if (!db) return null;\n return new Promise((resolve, reject) => {\n const request = db\n .transaction(['thumbs'], 'readwrite')\n .objectStore('thumbs')\n .put(record);\n request.onsuccess = (evt) => resolve(evt);\n request.onerror = (evt) => reject(evt);\n });\n}\n\nexport async function idbGetAllKeys(index: string | null = null, query: IDBValidKey | IDBKeyRange | null = null): Promise {\n if (!db) return null;\n return new Promise((resolve, reject) => {\n try {\n let request;\n const transaction = db.transaction('thumbs', 'readonly');\n transaction.onabort = (e) => reject(e);\n const store = transaction.objectStore('thumbs');\n if (index) request = store.index(index).getAllKeys(query);\n else request = store.getAllKeys(query);\n request.onsuccess = () => resolve(request.result);\n request.onerror = (e) => reject(e);\n } catch (err) {\n reject(err);\n }\n });\n}\n\n/**\n * Get the number of entries in the IndexedDB thumbnail cache.\n * @global\n * @param {IDBValidKey | IDBKeyRange | undefined} folder - If specified, get the count for this gallery folder. Otherwise get the total count.\n * @returns {Promise}\n */\nexport async function idbCount(folder?: IDBValidKey | IDBKeyRange): Promise {\n if (!db) return null;\n return new Promise((resolve, reject) => {\n try {\n let request;\n const transaction = db.transaction('thumbs', 'readonly');\n transaction.onabort = (e) => reject(e);\n const store = transaction.objectStore('thumbs');\n if (folder) request = store.index('folder').count(folder);\n else request = store.count();\n request.onsuccess = () => resolve(request.result);\n request.onerror = (e) => reject(e);\n } catch (err) {\n reject(err);\n }\n });\n}\n\n/**\n * Cleanup function for IndexedDB thumbnail cache.\n * @global\n * @param {Set} keepSet - Set containing the hashes of the current files in the folder\n * @param {IDBValidKey | IDBKeyRange} folder - Folder name/path or range\n * @param {AbortSignal} signal - Signal from the AbortController for thumbCacheCleanup()\n */\nexport async function idbFolderCleanup(keepSet: Set, folder: IDBValidKey | IDBKeyRange, signal: AbortSignal): Promise {\n if (!db) return null;\n const existing = await idbGetAllKeys('folder', folder);\n const removals = new Set((existing ?? []).map((entry) => String(entry)).filter((entry) => !keepSet.has(entry))); // Don't need to keep full set in memory\n const totalRemovals = removals.size;\n if (signal.aborted) {\n throw new Error(`Aborting. ${String(signal.reason)}`);\n }\n return new Promise((resolve, reject) => {\n const transaction = db.transaction('thumbs', 'readwrite');\n const props = { transaction, signal, resolve, reject };\n configureTransactionAbort(props, totalRemovals);\n const store = transaction.objectStore('thumbs');\n removals.forEach((entry) => { store.delete(entry); });\n });\n}\n\nexport async function idbClearAll(signal: AbortSignal): Promise {\n if (!db) return null;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction(['thumbs'], 'readwrite');\n const props = { transaction, signal, resolve, reject };\n configureTransactionAbort(props, null);\n transaction.objectStore('thumbs').clear();\n });\n}\n\nexport const idbAdd = add;\nexport const idbDel = del;\nexport const idbGet = get;\nexport const idbPut = put;\nexport const idbKeys = getKeys;\n", "import { authFetch } from './authWrap';\nimport { log, error, xhrPost } from './logger';\nimport { timer } from './timers';\n\ninterface LogLine {\n created: number;\n level: string;\n module: string;\n facility: string;\n msg: string;\n}\n\nlet logMonitorEl: HTMLElement | null = null;\nlet logMonitorStatus = true;\nlet logWarnings = 0;\nlet logErrors = 0;\nlet logConnected = false;\n\nfunction dateToStr(ts: number): string {\n const dt = new Date(1000 * ts);\n // const year = dt.getFullYear();\n // const mo = String(dt.getMonth() + 1).padStart(2, '0');\n // const day = String(dt.getDate()).padStart(2, '0');\n const hour = String(dt.getHours()).padStart(2, '0');\n const min = String(dt.getMinutes()).padStart(2, '0');\n const sec = String(dt.getSeconds()).padStart(2, '0');\n const ms = String(dt.getMilliseconds()).padStart(3, '0');\n // const s = `${year}-${mo}-${day} ${hour}:${min}:${sec}.${ms}`;\n const s = `${hour}:${min}:${sec}.${ms}`;\n return s;\n}\n\nfunction htmlEscape(text: string): string {\n return text.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>');\n}\n\nfunction parseLogLine(line: string): LogLine {\n let str = line.replaceAll('\\n', ' ').replaceAll('\\\\', '\\\\\\\\');\n const tracebackIndex = str.indexOf('Traceback');\n if (tracebackIndex !== -1) str = str.substring(0, tracebackIndex);\n const parsed = JSON.parse(str) as Partial;\n return {\n created: Number(parsed.created ?? Date.now()),\n level: String(parsed.level ?? 'INFO'),\n module: String(parsed.module ?? 'logMonitor'),\n facility: String(parsed.facility ?? 'ui'),\n msg: String(parsed.msg ?? ''),\n };\n}\n\nasync function clearErrors(): Promise {\n logWarnings = 0;\n logErrors = 0;\n log('clearErrors');\n}\n\nexport async function initClearErrorsButton() {\n const btnServerClear = document.getElementById('btn_console_log_server_clear');\n if (btnServerClear) {\n btnServerClear.onclick = async (evt) => {\n evt.preventDefault();\n evt.stopPropagation();\n clearErrors();\n };\n }\n}\n\nasync function logMonitor() {\n const addLogLine = (line: string): void => {\n if (!logMonitorEl) logMonitorEl = document.getElementById('logMonitorData');\n if (!logMonitorEl) return;\n try {\n const l = parseLogLine(line);\n const row = document.createElement('tr');\n // row.style = 'padding: 10px; margin: 0;';\n const level = ``;\n if (l.level === 'WARNING') logWarnings++;\n if (l.level === 'ERROR') logErrors++;\n const module = ``;\n const facilityText = l.facility.length > 20 ? `${l.facility.substring(0, 20)}...` : l.facility;\n const facility = l.facility !== 'sd' ? `` : '';\n row.innerHTML = `${level}${facility}${module}`;\n logMonitorEl.appendChild(row);\n } catch (err) {\n error('logMonitor', { error: String(err), line });\n }\n };\n\n const cleanupLog = (atBottom: boolean): void => {\n if (!logMonitorEl) return;\n while (logMonitorEl.childElementCount > 100 && logMonitorEl.firstElementChild) {\n logMonitorEl.removeChild(logMonitorEl.firstElementChild);\n }\n if (atBottom) logMonitorEl.scrollTop = logMonitorEl.scrollHeight;\n else if (logMonitorEl.parentElement) logMonitorEl.parentElement.style.cssText = 'border-bottom: 2px solid var(--highlight-color);';\n const elWarn = document.getElementById('logWarnings');\n const elErr = document.getElementById('logErrors');\n const modenUIBtn = document.getElementById('btn_console');\n if (elWarn) elWarn.innerText = String(logWarnings);\n if (elErr) elErr.innerText = String(logErrors);\n if (modenUIBtn) {\n modenUIBtn.setAttribute('error-count', logErrors > 0 ? String(logErrors) : '');\n modenUIBtn.style.backgroundColor = logErrors > 0 ? 'var(--color-error)' : '';\n modenUIBtn.title = `Log\\nErrors ${logErrors}\\nWarnings ${logWarnings}`;\n }\n };\n\n const txtGallery = document.getElementById('txt2img_gallery');\n if (txtGallery) txtGallery.style.height = window.opts.logmonitor_show ? '50vh' : '55vh';\n const imgGallery = document.getElementById('img2img_gallery');\n if (imgGallery) imgGallery.style.height = window.opts.logmonitor_show ? '50vh' : '55vh';\n\n if (!window.opts.logmonitor_show) {\n Array.from(document.getElementsByClassName('log-monitor')).forEach((el) => {\n if (el instanceof HTMLElement) el.style.display = 'none';\n });\n return;\n }\n\n if (logMonitorStatus) setTimeout(logMonitor, window.opts.logmonitor_refresh_period);\n else setTimeout(logMonitor, 10 * 1000); // on failure try to reconnect every 10sec\n\n logMonitorStatus = false;\n if (!logMonitorEl) {\n logMonitorEl = document.getElementById('logMonitorData');\n if (logMonitorEl) {\n logMonitorEl.addEventListener('scroll', () => {\n const atBottom = logMonitorEl.scrollHeight <= (logMonitorEl.scrollTop + logMonitorEl.clientHeight);\n if (atBottom && logMonitorEl.parentElement) logMonitorEl.parentElement.style.cssText = '';\n });\n }\n }\n if (!logMonitorEl) return;\n const atBottom = logMonitorEl.scrollHeight <= (logMonitorEl.scrollTop + logMonitorEl.clientHeight);\n\n try {\n const res = await authFetch(`${window.api}/log?clear=True`);\n if (res?.ok) {\n logMonitorStatus = true;\n const lines = (await res.json()) as string[];\n if (logMonitorEl && lines?.length > 0 && logMonitorEl.parentElement?.parentElement instanceof HTMLElement) {\n logMonitorEl.parentElement.parentElement.style.display = window.opts.logmonitor_show ? 'block' : 'none';\n }\n if (!logConnected) {\n logConnected = true;\n xhrPost(`${window.api}/log`, { debug: 'connected' });\n logErrors = 0; // reset error count on reconnect\n }\n for (const line of lines) addLogLine(line);\n } else {\n logConnected = false;\n logErrors++;\n if (res) addLogLine(`{ \"created\": ${Date.now()}, \"level\":\"ERROR\", \"module\":\"logMonitor\", \"facility\":\"ui\", \"msg\":\"Failed to fetch log: ${res?.status} ${res?.statusText}\" }`);\n else addLogLine(`{ \"created\": ${Date.now()}, \"level\":\"ERROR\", \"module\":\"logMonitor\", \"facility\":\"ui\", \"msg\":\"Server unreachable\" }`);\n }\n cleanupLog(atBottom);\n } catch {\n logConnected = false;\n logErrors++;\n addLogLine(`{ \"created\": ${Date.now()}, \"level\":\"ERROR\", \"module\":\"logMonitor\", \"facility\":\"ui\", \"msg\":\"Server unreachable\" }`);\n cleanupLog(atBottom);\n }\n}\n\nexport async function initLogMonitor() {\n let el = document.getElementById('logMonitorPlaceholder');\n const modernUi = Boolean(el);\n if (!el) el = document.getElementsByTagName('footer')[0];\n if (!el) return;\n const t0 = performance.now();\n el.classList.add('log-monitor');\n const uiDisabled = Array.isArray(window.opts.ui_disabled) ? window.opts.ui_disabled : [];\n if (uiDisabled.includes('logs')) return;\n if (modernUi) {\n el.style.overflow = 'auto';\n el.innerHTML = `\n
${l.level}${l.module}${facilityText}${dateToStr(l.created)}${htmlEscape(l.msg)}
\n \n \n
\n `;\n } else {\n el.innerHTML = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
TimeLevelModuleMessageWarnings 0Errors 0
\n `;\n }\n el.style.display = 'none';\n authFetch(`${window.api}/start?agent=${encodeURI(navigator.userAgent)}`);\n logMonitor();\n initClearErrorsButton();\n const t1 = performance.now();\n log('initLogMonitor', { show: window.opts.logmonitor_show, time: Math.round(t1 - t0) });\n timer('initLogMonitor', t1 - t0);\n}\n", "import { authFetch } from './authWrap';\nimport { gradioApp, onAfterUiUpdate, onOptionsChanged, executeCallbacks, optionsChangedCallbacks } from './script';\nimport { log, debug, error } from './logger';\nimport { getENActiveTab } from './extraNetworks';\nimport { registerDragDrop, toggleCompact, setTheme, setFontSize, updateInput } from './ui';\nimport { timer } from './timers';\n\nlet settingsInitialized = false;\nlet opts_metadata = {};\nconst opts_tabs = {};\n\nfunction getSettingsTabs() {\n let nodes = gradioApp().querySelectorAll('#tab_settings .tabitem');\n if (!nodes || nodes.length === 0) nodes = gradioApp().querySelectorAll('.tab-content .tabitem');\n return nodes;\n}\n\nconst monitoredOpts: Record[] = [\n { sd_model_checkpoint: null },\n { sd_backend: () => gradioApp().getElementById('refresh_sd_model_checkpoint')?.click() },\n];\n\nexport function monitorOption(option, callback) {\n monitoredOpts.push({ [option]: callback });\n}\n\nconst AppyOpts = [ // monitored opts\n { compact_view: (val, old) => toggleCompact(val, old) },\n { gradio_theme: (val, old) => setTheme(val, old) },\n { font_size: (val, old) => setFontSize(val, old) },\n];\n\nasync function updateOpts(json_string) {\n const t0 = performance.now();\n const settings_data = JSON.parse(json_string);\n const new_opts = settings_data.values;\n opts_metadata = settings_data.metadata;\n\n const t1 = performance.now();\n for (const op of monitoredOpts) {\n const [key, callback] = Object.entries(op)[0];\n if (Object.hasOwn(opts, key) && opts[key] !== new_opts[key]) {\n log('updateOpt', key, opts[key], new_opts[key]);\n if (callback) callback(new_opts[key], opts[key]);\n }\n }\n\n for (const op of AppyOpts) {\n const [key, callback] = Object.entries(op)[0];\n if (callback) {\n const t3 = performance.now();\n callback(new_opts[key], opts[key]);\n const t4 = performance.now();\n if (t4 - t3 > 100) debug('AppyOptSlow', key, `time=${Math.round(t4 - t3)}`);\n }\n }\n\n window.opts = new_opts;\n Object.entries(opts_metadata as Record).forEach(([opt, meta]: [string, any]) => {\n if (!opts_tabs[meta.tab_name]) opts_tabs[meta.tab_name] = {};\n if (!opts_tabs[meta.tab_name].unsaved_keys) opts_tabs[meta.tab_name].unsaved_keys = new Set();\n if (!opts_tabs[meta.tab_name].saved_keys) opts_tabs[meta.tab_name].saved_keys = new Set();\n if (!meta.is_stored) opts_tabs[meta.tab_name].unsaved_keys.add(opt);\n else opts_tabs[meta.tab_name].saved_keys.add(opt);\n });\n const t2 = performance.now();\n log('updateOpts', { settings: Object.keys(new_opts).length, callbacks: Math.round(t2 - t1), apply: Math.round(t1 - t0) });\n timer('updateOpts', t2 - t0);\n}\n\nfunction showAllSettings() {\n // Try to ensure that the show all settings tab is opened by clicking on its tab button\n // const tab_dirty_indicator = gradioApp().getElementById('modification_indicator_show_all_pages');\n // if (tab_dirty_indicator && tab_dirty_indicator.nextSibling) tab_dirty_indicator.nextSibling.click();\n getSettingsTabs().forEach((elem) => {\n if (elem.id === 'settings_tab_licenses' || elem.id === 'settings_show_all_pages') return;\n elem.style.display = 'block';\n });\n}\n\nfunction markIfModified(setting_name, value) {\n if (!opts_metadata[setting_name]) return;\n const elem = gradioApp().getElementById(`modification_indicator_${setting_name}`);\n if (!elem) return;\n const previous_value = JSON.stringify(opts[setting_name]);\n const current_value = JSON.stringify(value);\n const changed_value = previous_value !== current_value;\n if (changed_value) elem.title = `click to revert to previous value: ${previous_value}`;\n const { is_stored } = opts_metadata[setting_name];\n if (is_stored) elem.title = 'custom value';\n elem.disabled = !changed_value && !is_stored;\n elem.classList.toggle('changed', changed_value);\n elem.classList.toggle('saved', is_stored);\n\n const { tab_name } = opts_metadata[setting_name];\n if (!opts_tabs[tab_name].changed) opts_tabs[tab_name].changed = new Set();\n const changed_items = opts_tabs[tab_name].changed;\n if (changed_value) changed_items.add(setting_name);\n else changed_items.delete(setting_name);\n const unsaved = opts_tabs[tab_name].unsaved_keys;\n const saved = opts_tabs[tab_name].saved_keys;\n\n // Set the indicator on the tab nav element\n const tab_nav_indicator = gradioApp().getElementById(`modification_indicator_${tab_name}`);\n tab_nav_indicator.disabled = (changed_items.size === 0) && (unsaved.size === 0);\n tab_nav_indicator.title = '';\n tab_nav_indicator.classList.toggle('changed', changed_items.size > 0);\n tab_nav_indicator.classList.toggle('saved', saved.size > 0);\n if (changed_items.size > 0) tab_nav_indicator.title += `click to reset ${changed_items.size} unapplied changes in this tab\\n`;\n if (saved.size > 0) tab_nav_indicator.title += `${saved.size} custom values\\n${unsaved.size} default values`;\n // TODO why is scroll happening on every change if all pages are visible?\n // elem.scrollIntoView({ behavior: 'smooth', block: 'center' });\n}\nwindow.markIfModified = markIfModified;\n\nfunction updateAllOpts() {\n if (Object.keys(opts).length !== 0) return false;\n const json_elem = gradioApp().getElementById('settings_json');\n log('updateAllOpts', !!json_elem);\n if (!json_elem) return false;\n json_elem.parentElement.style.display = 'none';\n const textarea = json_elem.querySelector('textarea');\n const jsdata = textarea.value;\n updateOpts(jsdata);\n return true;\n}\n\nasync function onAfterUiUpdateCallback() {\n if (!updateAllOpts()) return;\n const json_elem = gradioApp().getElementById('settings_json');\n const textarea = json_elem.querySelector('textarea');\n executeCallbacks(optionsChangedCallbacks);\n registerDragDrop();\n\n Object.defineProperty(textarea, 'value', {\n set(newValue) {\n const valueProp = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, 'value');\n const oldValue = valueProp.get.call(textarea);\n valueProp.set.call(textarea, newValue);\n if (oldValue !== newValue) updateOpts(textarea.value);\n executeCallbacks(optionsChangedCallbacks);\n },\n get() {\n const valueProp = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, 'value');\n return valueProp.get.call(textarea);\n },\n });\n\n const settingsSearch = gradioApp().querySelectorAll('#settings_search > label > textarea')[0];\n let settingsTimer: ReturnType | undefined;\n let settingSearchValue = '';\n\n function doSettingsSearch() {\n if (settingSearchValue === settingsSearch.value.trim().toLowerCase()) return;\n showAllSettings();\n const value = settingsSearch.value.trim().toLowerCase();\n log('doSettingsSearch', value);\n settingSearchValue = value;\n getSettingsTabs().forEach((section) => {\n section.querySelectorAll('.dirtyable').forEach((setting) => {\n const visible = setting.innerText.toLowerCase().includes(value) || setting.id.toLowerCase().includes(value);\n const parent = setting.closest('.settings_section');\n if (!visible) parent.style.display = 'none';\n else parent.style.removeProperty('display');\n });\n });\n }\n\n settingsSearch.oninput = (e) => {\n if (settingsTimer) clearTimeout(settingsTimer);\n settingsTimer = setTimeout(doSettingsSearch, 250);\n };\n settingsSearch.onkeypress = (e) => {\n if (e.key === 'Enter') {\n if (settingsTimer) clearTimeout(settingsTimer);\n doSettingsSearch();\n }\n };\n}\n\nonAfterUiUpdate(onAfterUiUpdateCallback);\n\nasync function onOptionsChangedCallback() {\n const setting_elems = gradioApp().querySelectorAll('#settings [id^=\"setting_\"]');\n setting_elems.forEach((elem) => {\n const setting_name = elem.id.replace('setting_', '');\n markIfModified(setting_name, opts[setting_name]);\n });\n}\n\nonOptionsChanged(onOptionsChangedCallback);\n\nexport async function initModels() {\n const warn = () => `\n

No models available

\n - Select a model from reference list to download or
\n - Set model path to a folder containing your models
\n Current model path: ${opts.ckpt_dir}
\n `;\n const el = gradioApp().getElementById('main_info');\n const en = gradioApp().getElementById('txt2img_extra_networks');\n if (!el || !en) return;\n const req = await authFetch(`${window.api}/sd-models`);\n const res = req.ok ? await req.json() : [];\n log('initModels', res.length);\n const ready = () => `\n

Ready

\n ${res.length} models available
\n `;\n el.innerHTML = res.length > 0 ? ready() : warn();\n el.style.display = 'block';\n setTimeout(() => { el.style.display = 'none'; }, res.length === 0 ? 30000 : 1500);\n if (res.length === 0) {\n if (en.classList.contains('hide')) gradioApp().getElementById('txt2img_extra_networks_btn').click();\n const repeat = setInterval(() => {\n const buttons = Array.from(gradioApp().querySelectorAll('#txt2img_model_subdirs > button')) || [];\n const reference = buttons.find((b) => (b.innerText === 'Reference') || (b.innerText === 'Distilled') || (b.innerText === 'Community') || (b.innerText === 'Quantized') || (b.innerText === 'Cloud'));\n if (reference) {\n clearInterval(repeat);\n reference.click();\n log('enReferenceSelect');\n }\n }, 100);\n }\n}\n\nexport async function initSettings() {\n if (settingsInitialized) return;\n const t0 = performance.now();\n settingsInitialized = true;\n const tabNavElements = gradioApp().querySelector('#settings > .tab-nav');\n if (!tabNavElements) {\n error('initSettings', 'No tab nav elements found');\n return;\n }\n const tabNavButtons = gradioApp().querySelectorAll('#settings > .tab-nav > button');\n const tabElements = gradioApp().querySelectorAll('#settings > div:not(.tab-nav)');\n const observer = new MutationObserver((mutations) => {\n const showAllPages = gradioApp().getElementById('settings_show_all_pages');\n if (showAllPages.style.display === 'none') return;\n const mutation = (mut) => mut.type === 'attributes' && mut.attributeName === 'style';\n if (mutations.some(mutation)) showAllSettings();\n });\n const tabContentWrapper = document.createElement('div');\n tabContentWrapper.className = 'tab-content';\n tabNavElements.parentElement.insertBefore(tabContentWrapper, tabNavElements.nextSibling);\n tabElements.forEach((elem, index) => {\n const tabName = elem.id.replace('settings_section_tab_', '');\n const indicator = gradioApp().getElementById(`modification_indicator_${tabName}`);\n if (indicator) {\n tabNavElements.insertBefore(document.createElement('br'), tabNavButtons[index]);\n tabNavElements.insertBefore(indicator, tabNavButtons[index]);\n }\n tabContentWrapper.appendChild(elem);\n observer.observe(elem, { attributes: true, attributeFilter: ['style'] });\n });\n const t1 = performance.now();\n log('initSettings', Math.round(t1 - t0));\n timer('initSettings', t1 - t0);\n}\n", "import { debug, log } from './logger';\nimport { authFetch } from './authWrap';\nimport { monitorOption } from './settings';\n\ninterface VersionInfo {\n updated?: string;\n commit?: string;\n branch?: string;\n model?: string;\n}\n\nlet monitorActive = false;\n\nexport class ConnectionMonitorState {\n static ws: WebSocket | undefined;\n static url = '';\n static delay = 1000;\n static element: HTMLElement | undefined;\n static version = '';\n static commit = '';\n static branch = '';\n static model = '';\n static startup: Date = new Date();\n static online = false;\n static ts: Date = new Date();\n\n static getModel(): string {\n const cp = window.opts?.sd_model_checkpoint || '';\n return cp ? this.trimModelName(cp) : 'unknown model';\n }\n\n static trimModelName(name: string): string {\n return name.replace(/\\s*\\[.*\\]\\s*$/, '').split(/[\\\\/]/).pop().trim() || 'unknown model';\n }\n\n static setData({ online, data }: { online: boolean; data: VersionInfo }) {\n if (online !== this.online) {\n this.online = online;\n this.ts = new Date();\n debug('monitorState', { online: ConnectionMonitorState.online, ts: ConnectionMonitorState.ts });\n }\n if (data?.updated) this.version = data.updated;\n if (data?.commit) this.commit = data.commit;\n if (data?.branch) this.branch = data.branch;\n if (data?.model) this.model = this.trimModelName(data.model);\n }\n\n static toHTML(): string {\n if (!this.model) this.model = this.getModel();\n return `\n Version: ${this.version}
\n Commit: ${this.commit}
\n Branch: ${this.branch}
\n Status: ${this.online ? 'online' : 'offline'}
\n Model: ${this.model}
\n Since: ${this.startup.toLocaleString()}
\n `;\n }\n\n static updateState() {\n if (!this.element) {\n const el = document.getElementById('logo_nav');\n if (el) this.element = el;\n else return;\n }\n this.element.dataset.hint = this.toHTML();\n this.element.style.backgroundColor = this.online ? 'var(--sd-main-accent-color)' : 'var(--color-error)';\n }\n}\n\nasync function updateIndicator(online: boolean, data: VersionInfo = {}, msg?: string): Promise {\n ConnectionMonitorState.setData({ online, data });\n ConnectionMonitorState.updateState();\n if (msg) log('monitorConnection:', { online, data, msg });\n}\n\nasync function wsMonitorLoop() {\n const delayed = Date.now() - ConnectionMonitorState.ts.getTime();\n if ((delayed > 60 * 60) && (ConnectionMonitorState.delay < 10) && !ConnectionMonitorState.online) ConnectionMonitorState.delay = 10000;\n else if ((delayed > 5 * 60) && (ConnectionMonitorState.delay < 5) && !ConnectionMonitorState.online) ConnectionMonitorState.delay = 5000;\n else ConnectionMonitorState.delay = 2000;\n try {\n ConnectionMonitorState.ws = new WebSocket(`${ConnectionMonitorState.url}/queue/join`);\n ConnectionMonitorState.ws.onopen = () => {};\n ConnectionMonitorState.ws.onmessage = () => updateIndicator(true);\n ConnectionMonitorState.ws.onclose = () => setTimeout(wsMonitorLoop, ConnectionMonitorState.delay); // main re-check loop\n ConnectionMonitorState.ws.onerror = (e: Event) => updateIndicator(false, {}, String((e as ErrorEvent).message || 'unknown error')); // actual error\n } catch (e) {\n updateIndicator(false, {}, String((e as Error).message || e));\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n setTimeout(monitorConnection, ConnectionMonitorState.delay);\n }\n}\n\nexport async function monitorConnection() {\n if (!monitorActive) { // start monitor loop only once on startup\n monitorActive = true;\n monitorOption('sd_model_checkpoint', (newVal) => { // runs before opt actually changes\n ConnectionMonitorState.model = newVal;\n ConnectionMonitorState.updateState();\n });\n }\n ConnectionMonitorState.startup = new Date();\n\n let data: VersionInfo = {};\n try {\n const res = await authFetch(`${window.api}/version`);\n if (!res) throw new Error('No response');\n data = await res.json();\n log('monitorConnection:', { data });\n ConnectionMonitorState.startup = new Date();\n ConnectionMonitorState.url = res.url.split('/sdapi')[0].replace('https:', 'wss:').replace('http:', 'ws:'); // update global url as ws need fqdn\n updateIndicator(true, data);\n wsMonitorLoop();\n } catch {\n updateIndicator(false, data);\n setTimeout(monitorConnection, ConnectionMonitorState.delay);\n }\n}\n", "// Stable Diffusion WebUI - Bracket checker\n// By Hingashi no Florin/Bwin4L & @akx\n// Counts open and closed brackets (round, square, curly) in the prompt and negative prompt text boxes in the txt2img and img2img tabs.\n// If there's a mismatch, the keyword counter turns red and if you hover on it, a tooltip tells you what's wrong.\n\nimport { gradioApp } from './script';\nimport { log } from './logger';\nimport { timer } from './timers';\n\nfunction checkBrackets(textArea: HTMLTextAreaElement, counterElt: HTMLElement): void {\n const counts: Record = {};\n const errors: string[] = [];\n\n function checkPair(open: string, close: string, kind: string): void {\n if (counts[open] !== counts[close]) errors.push(`${open}...${close} - Detected ${counts[open] || 0} opening and ${counts[close] || 0} closing ${kind}.`);\n }\n\n (textArea.value.match(/[(){}[\\]]/g) || []).forEach((bracket) => { counts[bracket] = (counts[bracket] || 0) + 1; });\n checkPair('(', ')', 'round brackets');\n checkPair('[', ']', 'square brackets');\n checkPair('{', '}', 'curly brackets');\n counterElt.title = errors.join('\\n');\n counterElt.classList.toggle('error', errors.length !== 0);\n}\n\nfunction setupBracketChecking(idPrompt: string, idCounter: string): void {\n const textarea = gradioApp().querySelector(`#${idPrompt} > label > textarea`);\n const counter = gradioApp().getElementById(idCounter);\n if (!(textarea instanceof HTMLTextAreaElement) || !counter) return;\n textarea.addEventListener('input', () => checkBrackets(textarea, counter));\n}\n\nexport async function initPromptChecker() {\n const t0 = performance.now();\n setupBracketChecking('txt2img_prompt', 'txt2img_token_counter');\n setupBracketChecking('txt2img_neg_prompt', 'txt2img_negative_token_counter');\n setupBracketChecking('img2img_prompt', 'img2img_token_counter');\n setupBracketChecking('img2img_neg_prompt', 'img2img_negative_token_counter');\n setupBracketChecking('control_prompt', 'control_token_counter');\n setupBracketChecking('control_neg_prompt', 'control_negative_token_counter');\n setupBracketChecking('video_prompt', 'video_token_counter');\n setupBracketChecking('video_neg_prompt', 'video_negative_token_counter');\n const t1 = performance.now();\n log('initPromptChecker', Math.round(t1 - t0));\n timer('initPromptChecker', t1 - t0);\n}\n", "// @ts-nocheck\n\n// SHA-256 (+ HMAC and PBKDF2) for JavaScript.\n//\n// Written in 2014-2016 by Dmitry Chestnykh.\n// Public domain, no warranty.\n//\n// Functions (accept and return Uint8Arrays):\n//\n// sha256(message) -> hash\n// sha256.hmac(key, message) -> mac\n// sha256.pbkdf2(password, salt, rounds, dkLen) -> dk\n//\n// Classes:\n//\n// new sha256.Hash()\n// new sha256.HMAC(key)\n//\n\n\nconst digestLength = 32;\nconst blockSize = 64;\n\n// SHA-256 constants\n\nconst K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n]);\nfunction hashBlocks(w, v, p, pos, len) {\n let a; let b; let c; let d; let e; let f; let g; let h; let u; let i; let j; let t1; let\n t2;\n while (len >= 64) {\n a = v[0];\n b = v[1];\n c = v[2];\n d = v[3];\n e = v[4];\n f = v[5];\n g = v[6];\n h = v[7];\n for (i = 0; i < 16; i++) {\n j = pos + i * 4;\n w[i] = (((p[j] & 0xff) << 24) | ((p[j + 1] & 0xff) << 16)\n | ((p[j + 2] & 0xff) << 8) | (p[j + 3] & 0xff));\n }\n for (i = 16; i < 64; i++) {\n u = w[i - 2];\n t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10);\n u = w[i - 15];\n t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3);\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0);\n }\n for (i = 0; i < 64; i++) {\n t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11))\n ^ (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0)\n + ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13))\n ^ (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n v[0] += a;\n v[1] += b;\n v[2] += c;\n v[3] += d;\n v[4] += e;\n v[5] += f;\n v[6] += g;\n v[7] += h;\n pos += 64;\n len -= 64;\n }\n return pos;\n}\n// Hash implements SHA256 hash algorithm.\nconst Hash = /** @class */ (function () {\n function Hash() {\n this.digestLength = digestLength;\n this.blockSize = blockSize;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this.state = new Int32Array(8); // hash state\n this.temp = new Int32Array(64); // temporary state\n this.buffer = new Uint8Array(128); // buffer for data to hash\n this.bufferLength = 0; // number of bytes in buffer\n this.bytesHashed = 0; // number of total bytes hashed\n this.finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n // Resets hash state making it possible\n // to reuse this instance to hash other data.\n Hash.prototype.reset = function () {\n this.state[0] = 0x6a09e667;\n this.state[1] = 0xbb67ae85;\n this.state[2] = 0x3c6ef372;\n this.state[3] = 0xa54ff53a;\n this.state[4] = 0x510e527f;\n this.state[5] = 0x9b05688c;\n this.state[6] = 0x1f83d9ab;\n this.state[7] = 0x5be0cd19;\n this.bufferLength = 0;\n this.bytesHashed = 0;\n this.finished = false;\n return this;\n };\n // Cleans internal buffers and re-initializes hash state.\n Hash.prototype.clean = function () {\n for (var i = 0; i < this.buffer.length; i++) {\n this.buffer[i] = 0;\n }\n for (var i = 0; i < this.temp.length; i++) {\n this.temp[i] = 0;\n }\n this.reset();\n };\n // Updates hash state with the given data.\n //\n // Optionally, length of the data can be specified to hash\n // fewer bytes than data.length.\n //\n // Throws error when trying to update already finalized hash:\n // instance must be reset to use it again.\n Hash.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this.finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\");\n }\n let dataPos = 0;\n this.bytesHashed += dataLength;\n if (this.bufferLength > 0) {\n while (this.bufferLength < 64 && dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this.bufferLength === 64) {\n hashBlocks(this.temp, this.state, this.buffer, 0, 64);\n this.bufferLength = 0;\n }\n }\n if (dataLength >= 64) {\n dataPos = hashBlocks(this.temp, this.state, data, dataPos, dataLength);\n dataLength %= 64;\n }\n while (dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n // Finalizes hash state and puts hash into out.\n //\n // If hash was already finalized, puts the same value.\n Hash.prototype.finish = function (out) {\n if (!this.finished) {\n const bytesHashed = this.bytesHashed;\n const left = this.bufferLength;\n const bitLenHi = (bytesHashed / 0x20000000) | 0;\n const bitLenLo = bytesHashed << 3;\n const padLength = (bytesHashed % 64 < 56) ? 64 : 128;\n this.buffer[left] = 0x80;\n for (let i = left + 1; i < padLength - 8; i++) {\n this.buffer[i] = 0;\n }\n this.buffer[padLength - 8] = (bitLenHi >>> 24) & 0xff;\n this.buffer[padLength - 7] = (bitLenHi >>> 16) & 0xff;\n this.buffer[padLength - 6] = (bitLenHi >>> 8) & 0xff;\n this.buffer[padLength - 5] = (bitLenHi >>> 0) & 0xff;\n this.buffer[padLength - 4] = (bitLenLo >>> 24) & 0xff;\n this.buffer[padLength - 3] = (bitLenLo >>> 16) & 0xff;\n this.buffer[padLength - 2] = (bitLenLo >>> 8) & 0xff;\n this.buffer[padLength - 1] = (bitLenLo >>> 0) & 0xff;\n hashBlocks(this.temp, this.state, this.buffer, 0, padLength);\n this.finished = true;\n }\n for (let i = 0; i < 8; i++) {\n out[i * 4 + 0] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n return this;\n };\n // Returns the final hash digest.\n Hash.prototype.digest = function () {\n const out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n // Internal function for use in HMAC for optimization.\n Hash.prototype._saveState = function (out) {\n for (let i = 0; i < this.state.length; i++) {\n out[i] = this.state[i];\n }\n };\n // Internal function for use in HMAC for optimization.\n Hash.prototype._restoreState = function (from, bytesHashed) {\n for (let i = 0; i < this.state.length; i++) {\n this.state[i] = from[i];\n }\n this.bytesHashed = bytesHashed;\n this.finished = false;\n this.bufferLength = 0;\n };\n return Hash;\n}());\nwindow.Hash = Hash;\n// HMAC implements HMAC-SHA256 message authentication algorithm.\nconst HMAC = /** @class */ (function () {\n function HMAC(key) {\n this.inner = new Hash();\n this.outer = new Hash();\n this.blockSize = this.inner.blockSize;\n this.digestLength = this.inner.digestLength;\n const pad = new Uint8Array(this.blockSize);\n if (key.length > this.blockSize) {\n (new Hash()).update(key).finish(pad).clean();\n } else {\n for (let i = 0; i < key.length; i++) {\n pad[i] = key[i];\n }\n }\n for (let i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36;\n }\n this.inner.update(pad);\n for (let i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c;\n }\n this.outer.update(pad);\n this.istate = new Uint32Array(8);\n this.ostate = new Uint32Array(8);\n this.inner._saveState(this.istate);\n this.outer._saveState(this.ostate);\n for (let i = 0; i < pad.length; i++) {\n pad[i] = 0;\n }\n }\n // Returns HMAC state to the state initialized with key\n // to make it possible to run HMAC over the other data with the same\n // key without creating a new instance.\n HMAC.prototype.reset = function () {\n this.inner._restoreState(this.istate, this.inner.blockSize);\n this.outer._restoreState(this.ostate, this.outer.blockSize);\n return this;\n };\n // Cleans HMAC state.\n HMAC.prototype.clean = function () {\n for (let i = 0; i < this.istate.length; i++) {\n this.ostate[i] = this.istate[i] = 0;\n }\n this.inner.clean();\n this.outer.clean();\n };\n // Updates state with provided data.\n HMAC.prototype.update = function (data) {\n this.inner.update(data);\n return this;\n };\n // Finalizes HMAC and puts the result in out.\n HMAC.prototype.finish = function (out) {\n if (this.outer.finished) {\n this.outer.finish(out);\n } else {\n this.inner.finish(out);\n this.outer.update(out, this.digestLength).finish(out);\n }\n return this;\n };\n // Returns message authentication code.\n HMAC.prototype.digest = function () {\n const out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n return HMAC;\n}());\nwindow.HMAC = HMAC;\n// Returns SHA256 hash of data.\nfunction hash(data) {\n const h = (new Hash()).update(data);\n const digest = h.digest();\n h.clean();\n return digest;\n}\nwindow.hash = hash;\n// Function hash is both available as module.hash and as default export.\n// Returns HMAC-SHA256 of data under the key.\nfunction hmac(key, data) {\n const h = (new HMAC(key)).update(data);\n const digest = h.digest();\n h.clean();\n return digest;\n}\nwindow.hmac = hmac;\n// Fills hkdf buffer like this:\n// T(1) = HMAC-Hash(PRK, T(0) | info | 0x01)\nfunction fillBuffer(buffer, hmac, info, counter) {\n // Counter is a byte value: check if it overflowed.\n const num = counter[0];\n if (num === 0) {\n throw new Error('hkdf: cannot expand more');\n }\n // Prepare HMAC instance for new data with old key.\n hmac.reset();\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (num > 1) {\n hmac.update(buffer);\n }\n // Hash in info if it exists.\n if (info) {\n hmac.update(info);\n }\n // Hash in the counter.\n hmac.update(counter);\n // Output result to buffer and clean HMAC instance.\n hmac.finish(buffer);\n // Increment counter inside typed array, this works properly.\n counter[0]++;\n}\nconst hkdfSalt = new Uint8Array(digestLength); // Filled with zeroes.\nfunction hkdf(key, salt, info, length) {\n if (salt === void 0) { salt = hkdfSalt; }\n if (length === void 0) { length = 32; }\n const counter = new Uint8Array([1]);\n // HKDF-Extract uses salt as HMAC key, and key as data.\n const okm = hmac(salt, key);\n // Initialize HMAC for expanding with extracted key.\n // Ensure no collisions with `hmac` function.\n const hmac_ = new HMAC(okm);\n // Allocate buffer.\n const buffer = new Uint8Array(hmac_.digestLength);\n let bufpos = buffer.length;\n const out = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n if (bufpos === buffer.length) {\n fillBuffer(buffer, hmac_, info, counter);\n bufpos = 0;\n }\n out[i] = buffer[bufpos++];\n }\n hmac_.clean();\n buffer.fill(0);\n counter.fill(0);\n return out;\n}\nwindow.hkdf = hkdf;\n// Derives a key from password and salt using PBKDF2-HMAC-SHA256\n// with the given number of iterations.\n//\n// The number of bytes returned is equal to dkLen.\n//\n// (For better security, avoid dkLen greater than hash length - 32 bytes).\nfunction pbkdf2(password, salt, iterations, dkLen) {\n const prf = new HMAC(password);\n const len = prf.digestLength;\n const ctr = new Uint8Array(4);\n const t = new Uint8Array(len);\n const u = new Uint8Array(len);\n const dk = new Uint8Array(dkLen);\n for (var i = 0; i * len < dkLen; i++) {\n const c = i + 1;\n ctr[0] = (c >>> 24) & 0xff;\n ctr[1] = (c >>> 16) & 0xff;\n ctr[2] = (c >>> 8) & 0xff;\n ctr[3] = (c >>> 0) & 0xff;\n prf.reset();\n prf.update(salt);\n prf.update(ctr);\n prf.finish(u);\n for (var j = 0; j < len; j++) {\n t[j] = u[j];\n }\n for (var j = 2; j <= iterations; j++) {\n prf.reset();\n prf.update(u).finish(u);\n for (let k = 0; k < len; k++) {\n t[k] ^= u[k];\n }\n }\n for (var j = 0; j < len && i * len + j < dkLen; j++) {\n dk[i * len + j] = t[j];\n }\n }\n for (var i = 0; i < len; i++) {\n t[i] = u[i] = 0;\n }\n for (var i = 0; i < 4; i++) {\n ctr[i] = 0;\n }\n prf.clean();\n return dk;\n}\nwindow.pbkdf2 = pbkdf2;\n", "/* eslint-disable max-classes-per-file, @typescript-eslint/no-use-before-define */\nimport './js/sha256';\nimport { log, debug, error } from './logger';\nimport { authFetch } from './authWrap';\nimport { gradioApp, onAfterUiUpdate } from './script';\nimport { timer } from './timers';\nimport { monitorOption } from './settings';\n\nimport {\n idbAdd,\n idbCount,\n idbFolderCleanup,\n idbClearAll,\n idbGet,\n idbKeys,\n idbIsReady,\n} from './indexdb';\n\nlet ws;\nlet url;\nlet currentSize = 0;\nlet currentSort = 'none';\nlet currentName = '';\nlet currentImage = null;\nlet currentTitle = '';\nlet currentGalleryFolder = null;\nlet pruneImagesTimer;\nlet outstanding = 0;\nlet gallerySelection = { files: [], index: -1 };\nlet maintenanceController = new AbortController();\nconst maxFetchRequests = 32;\nconst fragmentSize = 100;\nconst minCleanupCount = 1000;\nconst minCleanupTime = 1000 * 60 * 60; // 1 hour\nconst folderStylesheet = new CSSStyleSheet();\nconst fileStylesheet = new CSSStyleSheet();\n// Store separator states for the session\nconst separatorStates = new Map();\nconst el = {\n folders: undefined,\n files: undefined,\n search: undefined,\n status: undefined,\n btnSend: undefined,\n overlay: undefined,\n size: undefined,\n};\nconst cleanupTimers = {};\nconst maintenanceTimers = {};\nconst fetchQueue = [];\nconst icons = {\n Time: String.fromCodePoint(9201),\n Folder: String.fromCodePoint(128448), // or 128449;\n Sort: String.fromCodePoint(8645),\n Images: String.fromCodePoint(128461),\n};\n\nconst SUPPORTED_EXTENSIONS = ['jpg', 'jpeg', 'png', 'webp', 'tiff', 'jp2', 'jxl', 'gif', 'mp4', 'mkv', 'avi', 'mjpeg', 'mpg', 'avr'];\n\nconst gallerySorter = {\n nameA: { name: 'Name Ascending', func: (a, b) => a.name.localeCompare(b.name) },\n nameD: { name: 'Name Descending', func: (b, a) => a.name.localeCompare(b.name) },\n sizeD: { name: 'Size Ascending', func: (a, b) => a.size - b.size },\n sizeA: { name: 'Size Descending', func: (b, a) => a.size - b.size },\n resD: { name: 'Resolution Ascending', func: (a, b) => a.width * a.height - b.width * b.height },\n resA: { name: 'Resolution Descending', func: (b, a) => a.width * a.height - b.width * b.height },\n modD: { name: 'Modified Ascending', func: (a, b) => a.mtime - b.mtime },\n modA: { name: 'Modified Descending', func: (b, a) => a.mtime - b.mtime },\n none: { name: 'None', func: undefined },\n};\nconst folderSorter = {\n nameA: { name: 'Name Ascending', func: (a, b) => a.name.localeCompare(b.name) },\n nameD: { name: 'Name Descending', func: (b, a) => a.name.localeCompare(b.name) },\n sizeD: { name: 'Size Ascending', func: (a, b) => a.size - b.size },\n sizeA: { name: 'Size Descending', func: (b, a) => a.size - b.size },\n resD: { name: 'Resolution Ascending', func: (a, b) => a.width * a.height - b.width * b.height },\n resA: { name: 'Resolution Descending', func: (b, a) => a.width * a.height - b.width * b.height },\n modD: { name: 'Modified Ascending', func: (a, b) => a.mtime - b.mtime },\n modA: { name: 'Modified Descending', func: (b, a) => a.mtime - b.mtime },\n none: { name: 'None', func: undefined },\n};\n\nlet sortMode = gallerySorter.none;\n\nasync function getHash(str) {\n let hex = '';\n const strBuf = new TextEncoder().encode(str);\n let hashBuf;\n if (crypto?.subtle?.digest) {\n hashBuf = await crypto.subtle.digest('SHA-256', strBuf);\n } else {\n const hashResult: any = hash(strBuf);\n hashBuf = hashResult.buffer; // from sha256.js\n }\n const view = new DataView(hashBuf);\n for (let i = 0; i < hashBuf.byteLength; i += 4) hex += (`00000000${view.getUint32(i).toString(16)}`).slice(-8);\n return hex;\n}\n\nfunction getVisibleGalleryFiles() {\n if (!el.files) return [];\n return Array.from(el.files.children).filter((node) => node.name && node.offsetParent);\n}\n\nfunction updateGallerySelectionClasses(files = gallerySelection.files, index = gallerySelection.index) {\n files.forEach((file, i) => {\n file.classList.toggle('gallery-file-selected', i === index);\n });\n}\n\nfunction refreshGallerySelection() {\n updateGallerySelectionClasses(gallerySelection.files, -1);\n const files = getVisibleGalleryFiles();\n const index = files.findIndex((file) => file.src === currentImage);\n gallerySelection = { files, index };\n updateGallerySelectionClasses(files, index);\n}\n\nfunction resetGallerySelection() {\n updateGallerySelectionClasses(gallerySelection.files, -1);\n gallerySelection = { files: [], index: -1 };\n currentImage = null;\n currentName = '';\n currentTitle = '';\n}\n\nfunction applyGallerySelection(index, { send = true } = {}) {\n if (!gallerySelection.files.length) refreshGallerySelection();\n const { files } = gallerySelection;\n if (!files.length) return;\n if (!Number.isInteger(index) || index < 0 || index >= files.length) {\n log('gallery selection index out of range', index, files.length);\n resetGallerySelection();\n return;\n }\n gallerySelection.index = index;\n currentImage = files[index].src;\n currentName = files[index].name;\n currentTitle = files[index].title;\n updateGallerySelectionClasses(files, index);\n if (send && el.btnSend) el.btnSend.click();\n}\n\nfunction setGallerySelectionByElement(element, options) {\n if (!gallerySelection.files.length) refreshGallerySelection();\n let index = gallerySelection.files.findIndex((file) => file === element);\n if (index < 0) {\n refreshGallerySelection();\n index = gallerySelection.files.findIndex((file) => file === element);\n }\n if (index >= 0) applyGallerySelection(index, options);\n}\n\nfunction buildGalleryFileUrl(path) {\n return new URL(`/file=${encodeURI(path)}`, window.location.origin).toString();\n}\n\nwindow.getGallerySelection = () => ({ index: gallerySelection.index, files: gallerySelection.files });\nwindow.setGallerySelection = (index, options) => applyGallerySelection(index, options);\nwindow.getGallerySelectedUrl = () => (currentImage ? buildGalleryFileUrl(currentImage) : null);\n\n/**\n * Wait for gallery to finish populating\n * @param {number} expectedSize - Expected gallery size\n * @param {AbortSignal} signal - AbortController signal\n */\nasync function awaitForGallery(expectedSize, signal) {\n while (Math.max(galleryHashes.size, galleryHashes.fallback) < expectedSize && !signal.aborted) await new Promise((resolve) => { setTimeout(resolve, 500); }); // longer interval because it's a low priority check\n signal.throwIfAborted();\n}\n\nfunction updateGalleryStyles() {\n if (opts.theme_type?.toLowerCase() === 'modern') {\n folderStylesheet.replace(`\n .gallery-folder {\n cursor: pointer;\n padding: 8px 6px 8px 6px;\n background-color: var(--sd-button-normal-color);\n border-radius: var(--sd-border-radius);\n text-align: left;\n direction: rtl; /* Used to overflow the beginning instead of the end */\n min-width: 12em;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition-duration: 0.2s;\n transition-property: color, opacity, background-color, border-color;\n transition-timing-function: ease-out;\n }\n .gallery-folder:hover {\n background-color: var(--button-primary-background-fill-hover, var(--sd-button-hover-color));\n }\n .gallery-folder-selected {\n background-color: var(--sd-button-selected-color);\n color: var(--sd-button-selected-text-color);\n }\n .gallery-folder-icon {\n font-size: 1.2em;\n color: var(--sd-button-icon-color);\n margin-right: 1em;\n filter: drop-shadow(1px 1px 2px black);\n float: left;\n }\n `);\n } else {\n folderStylesheet.replace(`\n .gallery-folder {\n cursor: pointer;\n padding: 8px 6px 8px 6px;\n max-width: 200px;\n overflow-x: hidden;\n text-wrap: nowrap;\n text-overflow: ellipsis;\n }\n .gallery-folder:hover {\n background-color: var(--button-primary-background-fill-hover);\n }\n .gallery-folder-selected {\n background-color: var(--button-primary-background-fill);\n }\n `);\n }\n const size = el.size ? el.size.value : opts.extra_networks_card_size;\n fileStylesheet.replace(`\n .gallery-file {\n object-fit: contain;\n cursor: pointer;\n height: ${size}px;\n width: ${opts.browser_fixed_width ? `${size}px` : 'unset'};\n }\n .gallery-file:hover {\n filter: grayscale(100%);\n }\n .gallery-overlay {\n position: absolute;\n height: 24px;\n background-color: rgba(0,0,0,0.7);\n display: block;\n text-align: right;\n padding: 4px;\n font-size: 1.2em;\n letter-spacing: 0.5em;\n margin-top: calc(140px - 32px);\n opacity: 75%;\n border-radius: var(--sd-border-radius);\n }\n :host(.gallery-file-selected) .gallery-file {\n box-shadow: 0 0 0 2px var(--sd-button-selected-color);\n }\n `);\n}\n\n// Classes\n\nclass HashSet extends Set {\n fallback = 0;\n constructor(val?: any) {\n super(val);\n this.fallback = 0;\n }\n\n override add(value: any): this {\n ++this.fallback;\n super.add(value);\n return this;\n }\n\n override clear(): void {\n this.fallback = 0;\n super.clear();\n }\n}\n\nconst galleryHashes = new HashSet();\n\nclass SimpleProgressBar {\n #container = document.createElement('div');\n #progress = document.createElement('div');\n #textDiv = document.createElement('div');\n #text = document.createElement('span');\n #visible = false;\n #interval: ReturnType | undefined;\n #max = 0;\n defaultStats = { queue: 0, fetch: 0, hash: 0, db: 0, cached: 0, fetched: 0, failed: 0, error: 0, callback: 0, elapsed: 0, count: 0 };\n stats = { ...this.defaultStats };\n /** @type {Set} */\n #monitoredSet;\n\n constructor(monitoredSet) {\n this.#monitoredSet = monitoredSet; // This is required because incrementing a variable with a class method turned out to not be an atomic operation\n this.#container.style.cssText = 'position:relative; overflow:hidden; border-radius:var(--sd-border-radius); width:100%; background-color:hsla(0,0%,36%,0.3); height:1.2rem; margin:0; padding:0; display:none;';\n this.#progress.style.cssText = 'position:absolute; left:0; height:100%; width:0; transition:width 200ms;';\n this.#progress.style.backgroundColor = 'var(--sd-main-accent-color)';\n this.#textDiv.style.cssText = 'position:relative; margin:auto; width:max-content; height:100%;';\n this.#text.style.cssText = 'user-select:none; color:white;';\n this.#textDiv.append(this.#text);\n this.#container.append(this.#progress, this.#textDiv);\n }\n\n start(total) {\n if (total <= 0) return;\n this.hide();\n this.#max = total;\n if (this.#monitoredSet.size >= this.#max) {\n this.stop();\n return;\n }\n this.#interval = setInterval(() => this.update(this.#monitoredSet.size, this.#max), 100);\n }\n\n attachTo(element) {\n if (element.hasChildNodes) element.innerHTML = '';\n element.appendChild(this.#container);\n }\n\n hide() {\n this.#container.style.display = 'none';\n this.#visible = false;\n this.#progress.style.width = '0';\n this.#text.textContent = '';\n }\n\n update(loaded, max) {\n this.#progress.style.width = `${Math.floor((loaded / max) * 100)}%`;\n this.#text.textContent = `${loaded}/${max}`;\n if (!this.#visible) {\n this.#container.style.display = 'block';\n this.#visible = true;\n }\n if (loaded >= max) this.stop();\n }\n\n stop() {\n clearInterval(this.#interval);\n // this.#interval = undefined;\n if (this.stats.count) {\n debug('gallery: thumbnail stats', this.stats);\n this.stats = { ...this.defaultStats };\n }\n setTimeout(() => this.hide(), 100);\n }\n}\n\nconst pb = new SimpleProgressBar(galleryHashes);\n\n/* This isn't as robust as the Web Locks API, but it will at least work if accessing a remote machine without HTTPS */\nclass SimpleFunctionQueue {\n #id;\n #running;\n #queue;\n\n constructor(id) {\n this.#id = id;\n this.#running = false;\n this.#queue = [];\n }\n\n static abortLogger(identifier, result) {\n if (typeof result === 'string' || (result instanceof DOMException && result.name === 'AbortError')) {\n log(identifier, typeof result === 'object' && result !== null ? (result as any).message || result : result);\n } else {\n error(identifier, result.message);\n }\n }\n\n /**\n * @param {{\n * signal: AbortSignal,\n * callback: Function\n * }} config\n */\n enqueue(config) {\n if (!(config.signal instanceof AbortSignal) || typeof config.callback !== 'function') {\n throw new Error('Invalid configuration. Object must contain an AbortSignal and a function');\n }\n if (config.signal.aborted) {\n debug(`${this.#id} Queue: Skipping addition to queue due to \"${config.signal.reason}\"`);\n return;\n }\n this.#queue.push(config);\n this.#tryRunNext();\n }\n\n async #tryRunNext() {\n if (this.#running || !this.#queue.length) return;\n try {\n const { signal, callback } = this.#queue.shift();\n if (signal.aborted) {\n return;\n }\n this.#running = true;\n if (callback.constructor.name.toLowerCase() === 'asyncfunction') {\n await callback();\n } else {\n callback();\n }\n } catch (err) {\n error(`${this.#id} Queue:`, err);\n } finally {\n this.#running = false;\n this.#tryRunNext();\n }\n }\n}\n\n// HTML Elements\n\nclass GalleryFolder extends HTMLElement {\n static folders = new Set();\n /** @type {GalleryFolder | null} */\n static #active = null;\n\n constructor(folder) {\n super();\n // Support both old format (string) and new format (object with path and label)\n if (typeof folder === 'object' && folder !== null) {\n this.name = decodeURI(folder.path || '');\n this.label = decodeURI(folder.label || folder.path || '');\n } else {\n this.name = decodeURI(folder);\n this.label = this.name;\n }\n this.style.overflowX = 'hidden';\n this.shadow = this.attachShadow({ mode: 'open' });\n this.shadow.adoptedStyleSheets = [folderStylesheet];\n\n this.div = document.createElement('div');\n }\n\n connectedCallback() {\n if (GalleryFolder.folders.has(this)) return; // Element is just being moved\n this.div.className = 'gallery-folder';\n this.div.innerHTML = `\\uf03e ${this.label}`;\n this.div.title = this.name; // Show full path on hover\n this.addEventListener('click', this.updateSelected);\n this.addEventListener('click', fetchFilesWS);\n this.shadow.appendChild(this.div);\n GalleryFolder.folders.add(this);\n if (this.name === currentGalleryFolder) {\n this.updateSelected();\n }\n }\n\n async disconnectedCallback() {\n await Promise.resolve(); // Wait for other microtasks (such as element moving)\n if (this.isConnected) return;\n GalleryFolder.folders.delete(this);\n if (GalleryFolder.#active === this) {\n GalleryFolder.#active = null;\n }\n }\n\n static getActive() {\n return GalleryFolder.#active;\n }\n\n updateSelected() {\n this.div.classList.add('gallery-folder-selected');\n GalleryFolder.#active = this;\n for (const folder of GalleryFolder.folders as any) {\n if (folder !== this) folder.div.classList.remove('gallery-folder-selected');\n }\n }\n}\n\n/**\n * Event-driven wait mechanism replacing the 50ms polling loop\n * @param {AbortSignal} signal - AbortController signal\n */\nasync function awaitForOutstanding(signal) {\n if (signal?.aborted) throw new DOMException('Aborted', 'AbortError');\n if (outstanding < maxFetchRequests) return; // if we are under the limit, proceed immediately\n await new Promise((resolve, reject) => { // otherwise, register a promise and wait for the queue to resolve us\n const onResolve = () => { // define what happens when this item gets its turn or gets aborted\n signal?.removeEventListener('abort', onAbort);\n resolve(true);\n };\n const onAbort = () => {\n const idx = fetchQueue.findIndex((item) => item.resolve === onResolve); // remove this specific request from the waiting queue if aborted\n if (idx !== -1) fetchQueue.splice(idx, 1);\n reject(new DOMException('Aborted', 'AbortError'));\n };\n fetchQueue.push({ resolve: onResolve });\n signal?.addEventListener('abort', onAbort);\n });\n}\n\nasync function delayFetchThumb(fn, signal) {\n const t0 = performance.now();\n try {\n await awaitForOutstanding(signal);\n } catch (err) {\n if ((err as DOMException).name === 'AbortError') return undefined;\n throw err;\n }\n pb.stats.queue = (pb.stats.queue || 0) + Math.round(performance.now() - t0);\n const t1 = performance.now();\n try {\n outstanding++;\n const ts = t0.toString();\n const res = await authFetch(`${window.api}/browser/thumb?file=${encodeURI(fn)}&ts=${ts}&exif=false`, { priority: 'low' });\n if (!res.ok) {\n error(`fetchThumb: ${res.statusText}`);\n return undefined;\n }\n const json = await res.json();\n if (!res || !json || json.error || Object.keys(json).length === 0) {\n if (json.error) error(`fetchThumb: ${json.error}`);\n return undefined;\n }\n return json;\n } finally {\n outstanding--;\n pb.stats.fetch = (pb.stats.fetch || 0) + Math.round(performance.now() - t1);\n if (fetchQueue.length > 0 && outstanding < maxFetchRequests) { // queue magic: trigger the next waiting fetch immediately\n const nextRequest = fetchQueue.shift();\n nextRequest.resolve(); // This wakes up the next awaitForOutstanding()\n }\n }\n}\n\nclass GalleryFile extends HTMLElement {\n /** @type {AbortSignal} */\n #signal;\n\n constructor(folder, file, signal) {\n super();\n this.folder = folder;\n this.name = file;\n this.#signal = signal;\n this.src = `${this.folder}/${this.name}`.replace(/\\/+/g, '/'); // Ensure no //, ///, etc...\n this.fullFolder = this.src.replace(/\\/[^/]+$/, '');\n this.size = 0;\n this.mtime = 0;\n this.hash = undefined;\n this.exif = '';\n this.width = 0;\n this.height = 0;\n this.shadow = this.attachShadow({ mode: 'open' });\n this.shadow.adoptedStyleSheets = [fileStylesheet];\n this.firstRun = true;\n }\n\n async connectedCallback() {\n if (!this.firstRun) return; // Element is just being moved\n this.firstRun = false;\n const t0 = performance.now();\n pb.stats.count = (pb.stats.count || 0) + 1;\n // Check separator state early to hide the element immediately\n const dir = this.name.match(/(.*)[/\\\\]/);\n if (dir && dir[1]) {\n const dirPath = dir[1];\n const isOpen = separatorStates.get(dirPath);\n if (isOpen === false) this.style.display = 'none';\n }\n\n this.hash = await getHash(`${this.src}/${this.size}/${this.mtime}`)\n .catch((err) => {\n error('getHash:', err);\n return null;\n });\n pb.stats.hash = (pb.stats.hash || 0) + Math.round(performance.now() - t0);\n let cachedData;\n if (opts.browser_cache) {\n const t1 = performance.now();\n // if (!pb.stats.keys) pb.stats.keys = await idbKeys();\n // if (pb.stats.keys && this.hash && pb.stats.keys.includes(this.hash)) cachedData = await idbGet(this.hash).catch(() => undefined);\n cachedData = await idbGet(this.hash).catch(() => undefined);\n pb.stats.db = (pb.stats.db || 0) + Math.round(performance.now() - t1);\n }\n const img = document.createElement('img');\n img.className = 'gallery-file';\n img.loading = 'lazy';\n img.onload = async () => {\n img.title += `\\nResolution: ${this.width} x ${this.height}`;\n this.title = img.title;\n if (!cachedData && opts.browser_cache) {\n if ((this.width === 0) || (this.height === 0)) { // fetch thumb failed so we use actual image\n this.width = img.naturalWidth;\n this.height = img.naturalHeight;\n }\n }\n };\n let ok = true;\n if (cachedData?.img) {\n img.src = cachedData.img;\n this.exif = cachedData.exif;\n this.width = cachedData.width;\n this.height = cachedData.height;\n this.size = cachedData.size;\n this.mtime = new Date(cachedData.mtime);\n pb.stats.cached = (pb.stats.cached || 0) + 1;\n } else {\n try {\n const json = await delayFetchThumb(this.src, this.#signal);\n if (!json) {\n ok = false;\n pb.stats.failed = (pb.stats.failed || 0) + 1;\n } else {\n img.src = json.data;\n this.exif = json.exif;\n this.width = json.width;\n this.height = json.height;\n this.size = json.size;\n this.mtime = new Date(json.mtime);\n pb.stats.fetched = (pb.stats.fetched || 0) + 1;\n if (opts.browser_cache && this.hash) {\n idbAdd({\n hash: this.hash,\n folder: this.fullFolder,\n file: this.name,\n size: this.size,\n mtime: this.mtime,\n width: this.width,\n height: this.height,\n src: this.src,\n exif: this.exif,\n img: img.src,\n // exif: await getExif(img), // alternative client-side exif\n // img: await createThumb(img), // alternative client-side thumb\n });\n }\n }\n } catch (err) { // thumb fetch failed so assign actual image\n img.src = `file=${this.src}`;\n pb.stats.error = (pb.stats.error || 0) + 1;\n }\n }\n pb.stats.callback = (pb.stats.callback || 0) + Math.round(performance.now() - t0);\n if (this.#signal.aborted) return;\n galleryHashes.add(this.hash);\n if (!ok) return;\n\n img.onclick = () => {\n setGallerySelectionByElement(this, { send: true });\n };\n img.onpointerenter = () => {\n el.overlay.display = 'block';\n this.shadow.appendChild(el.overlay);\n currentImage = this.src;\n currentName = this.name;\n currentTitle = this.title;\n };\n img.onpointerleave = () => {\n el.overlay.display = 'none';\n };\n img.title = `Folder: ${this.folder}\\nFile: ${this.name}\\nSize: ${this.size.toLocaleString()} bytes\\nModified: ${this.mtime.toLocaleString()}`;\n this.title = img.title;\n const shouldDisplayBasedOnSearch = this.title.toLowerCase().includes(el.search.value.toLowerCase()); // Final visibility check based on search term.\n if (this.style.display !== 'none') this.style.display = shouldDisplayBasedOnSearch ? '' : 'none'; // Only proceed if not already hidden by a closed separator\n this.shadow.appendChild(img);\n pb.stats.elapsed = (pb.stats.elapsed || 0) + Math.round(performance.now() - t0);\n }\n}\n\nasync function createThumb(img) {\n const sizeEl = document.getElementById('gallery-thumb-size');\n currentSize = sizeEl ? parseInt(sizeEl.value, 10) : opts.extra_networks_card_size;\n const height = currentSize;\n const width = opts.browser_fixed_width ? currentSize : 0;\n const canvas = document.createElement('canvas');\n const scaleY = height / img.height;\n const scaleX = width > 0 ? width / img.width : scaleY;\n const scale = Math.min(scaleX, scaleY);\n const scaledWidth = img.width * scale;\n const scaledHeight = img.height * scale;\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const ctx = canvas.getContext('2d');\n ctx.drawImage(img, 0, 0, scaledWidth, scaledHeight);\n const dataURL = canvas.toDataURL('image/jpeg', 0.5);\n return dataURL;\n}\n\nasync function handleSeparator(separator) {\n separator.classList.toggle('gallery-separator-hidden');\n const nowHidden = separator.classList.contains('gallery-separator-hidden');\n\n // Store the state (true = open, false = closed)\n separatorStates.set(separator.title, !nowHidden);\n\n // Update arrow and count\n const arrow = separator.querySelector('.gallery-separator-arrow');\n arrow.style.transform = nowHidden ? 'rotate(0deg)' : 'rotate(90deg)';\n\n const all = Array.from(el.files.children);\n for (const f of all) {\n if (!f.name) continue; // Skip separators\n\n // Check if file belongs to this exact directory\n const fileDir = f.name.match(/(.*)[/\\\\]/);\n const fileDirPath = fileDir ? fileDir[1] : '';\n\n if (separator.title.length > 0 && fileDirPath === separator.title) {\n f.style.display = nowHidden ? 'none' : '';\n }\n }\n // Note: Count is not updated here on manual toggle, as it reflects the total.\n // If I end up implementing it, the search function will handle dynamic count updates.\n}\n\nasync function addSeparators() {\n document.querySelectorAll('.gallery-separator').forEach((node) => { el.files.removeChild(node); });\n const all = Array.from(el.files.children);\n let lastDir;\n\n // Count root files (files without a directory path)\n const hasRootFiles = all.some((f) => f.name && !f.name.match(/[/\\\\]/));\n // Only auto-open first separator if there are no root files to display\n let isFirstSeparator = !hasRootFiles;\n\n // First pass: create separators\n for (const f of all) {\n let dir = f.name?.match(/(.*)[/\\\\]/);\n if (!dir) dir = '';\n else dir = dir[1];\n if (dir !== lastDir) {\n lastDir = dir;\n if (dir.length > 0) {\n // Count files in this directory\n let fileCount = 0;\n for (const file of all) {\n if (!file.name) continue;\n const fileDir = file.name.match(/(.*)[/\\\\]/);\n const fileDirPath = fileDir ? fileDir[1] : '';\n if (fileDirPath === dir) fileCount++;\n }\n\n const sep = document.createElement('div');\n sep.className = 'gallery-separator';\n sep.title = dir;\n\n // Default to open for the first separator if no state is saved, otherwise closed.\n const isOpen = separatorStates.has(dir) ? separatorStates.get(dir) : isFirstSeparator;\n separatorStates.set(dir, isOpen); // Ensure it's in the map\n if (isFirstSeparator) isFirstSeparator = false; // Subsequent separators will default to closed\n\n if (!isOpen) {\n sep.classList.add('gallery-separator-hidden');\n }\n\n // Create arrow span\n const arrow = document.createElement('span');\n arrow.className = 'gallery-separator-arrow';\n arrow.textContent = '\u25B6';\n arrow.style.transform = isOpen ? 'rotate(90deg)' : 'rotate(0deg)';\n\n // Create directory name span\n const dirName = document.createElement('span');\n dirName.className = 'gallery-separator-name';\n dirName.textContent = dir;\n dirName.title = dir; // Show full path on hover\n\n // Create count span\n const count = document.createElement('span');\n count.className = 'gallery-separator-count';\n count.textContent = `${fileCount} files`;\n sep.dataset.totalFiles = String(fileCount); // Store total count for search filtering\n\n sep.appendChild(arrow);\n sep.appendChild(dirName);\n sep.appendChild(count);\n\n sep.onclick = () => handleSeparator(sep);\n el.files.insertBefore(sep, f);\n }\n }\n }\n\n // Second pass: hide files in closed directories\n for (const f of all) {\n if (!f.name) continue; // Skip separators\n\n const dir = f.name.match(/(.*)[/\\\\]/);\n if (dir && dir[1]) {\n const dirPath = dir[1];\n const isOpen = separatorStates.get(dirPath);\n if (isOpen === false) {\n f.style.display = 'none';\n }\n }\n }\n}\n\n// methods\n\nconst gallerySendImage = (_images) => [currentImage]; // invoked by gradio button\nwindow.gallerySendImage = gallerySendImage;\n\n/**\n * Helper function to update status with sort mode\n * @param {...string|[string, string]} messages - Each can be either a string to use as-is, or an array of a string label and value\n * @returns {void}\n */\nfunction updateStatusLine(...messages) {\n if (!el.status) return;\n messages.unshift(['Sort', sortMode.name]);\n const fragment = document.createDocumentFragment();\n for (let i = 0; i < messages.length; i++) {\n const div = document.createElement('div');\n if (Array.isArray(messages[i])) {\n const [k, v] = messages[i];\n const tDiv = document.createElement('div');\n const ico = icons[k] || `${k}:`;\n tDiv.innerText = `${ico} ${v}`;\n div.append(tDiv);\n } else {\n const tDiv = document.createElement('div');\n tDiv.innerText = messages[i];\n div.append(tDiv);\n }\n fragment.append(div);\n }\n if (el.status.hasChildNodes()) el.status.innerHTML = '';\n el.status.append(fragment);\n}\n\nasync function injectGalleryStatusCSS() {\n const style = document.createElement('style');\n style.textContent = `\n #tab-gallery-status {\n display: inline-flex;\n flex-flow: row wrap;\n justify-content: ${opts.theme_type?.toLowerCase() === 'modern' ? 'flex-start' : 'flex-end'};\n }\n #tab-gallery-status > div {\n display: flex;\n max-width: 100%;\n white-space: nowrap;\n & div {\n &:first-child {\n flex-shrink: 0;\n margin-right: 4px;\n }\n &:last-child:not(:first-child) {\n flex-shrink: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n direction: rtl;\n text-align: left;\n }\n }\n }\n #tab-gallery-status > div:not(:last-child)::after {\n content: '|';\n margin-inline: 6px;\n }`;\n document.head.append(style);\n}\n\nasync function wsConnect(socket, timeout = 5000) {\n const intrasleep = 100;\n const ttl = timeout / intrasleep;\n const isOpened = () => (socket.readyState === WebSocket.OPEN);\n if (socket.readyState !== WebSocket.CONNECTING) return isOpened();\n\n let loop = 0;\n while (socket.readyState === WebSocket.CONNECTING && loop < ttl) {\n await new Promise((resolve) => { setTimeout(resolve, intrasleep); });\n loop++;\n }\n return isOpened();\n}\n\nasync function gallerySearch() {\n if (el.search.busy) clearTimeout(el.search.busy);\n el.search.busy = setTimeout(async () => {\n const t0 = performance.now();\n const str = el.search.value.toLowerCase();\n const allFiles = Array.from(el.files.children).filter((node) => node.name);\n const allSeparators = Array.from(el.files.children).filter((node) => node.classList.contains('gallery-separator'));\n\n // If search is cleared, restore original view\n if (str === '') {\n allSeparators.forEach((sep) => {\n sep.style.display = 'flex';\n const isOpen = separatorStates.has(sep.title) ? separatorStates.get(sep.title) : false;\n\n const countSpan = sep.querySelector('.gallery-separator-count');\n if (countSpan && sep.dataset.totalFiles) {\n countSpan.textContent = `${sep.dataset.totalFiles} files`;\n }\n\n const arrow = sep.querySelector('.gallery-separator-arrow');\n sep.classList.toggle('gallery-separator-hidden', !isOpen);\n if (arrow) arrow.style.transform = isOpen ? 'rotate(90deg)' : 'rotate(0deg)';\n });\n\n allFiles.forEach((f) => {\n const dir = f.name.match(/(.*)[/\\\\]/);\n const dirPath = (dir && dir[1]) ? dir[1] : '';\n const isOpen = separatorStates.get(dirPath);\n f.style.display = (!dirPath || isOpen) ? 'unset' : 'none';\n });\n\n updateStatusLine('Filter', 'Cleared', ['Images', allFiles.length.toLocaleString()]);\n return;\n }\n\n // --- Search logic ---\n let totalFound = 0;\n const directoryMatches = new Map();\n const fileMatches = new WeakSet();\n const r = /^(.+)([=<>])(.*)/;\n\n for (const f of allFiles) {\n let isMatch = false;\n if (r.test(str)) {\n const match = str.match(r);\n const key = match[1].trim();\n const op = match[2].trim();\n let val = match[3].trim();\n if (key === 'mtime') val = new Date(val);\n if (((op === '=') && (f[key] === val)) || ((op === '>') && (f[key] > val)) || ((op === '<') && (f[key] < val))) {\n isMatch = true;\n }\n } else if (f.title?.toLowerCase().includes(str) || f.exif?.toLowerCase().includes(str)) {\n isMatch = true;\n }\n\n if (isMatch) {\n fileMatches.add(f);\n totalFound++;\n const dir = f.name.match(/(.*)[/\\\\]/);\n const dirPath = (dir && dir[1]) ? dir[1] : '';\n directoryMatches.set(dirPath, (directoryMatches.get(dirPath) || 0) + 1);\n }\n }\n\n // Update separators based on search results\n for (const sep of allSeparators) {\n const dirPath = sep.title;\n const foundCount = directoryMatches.get(dirPath) || 0;\n\n if (foundCount > 0) {\n sep.style.display = 'flex'; // Show separator\n sep.classList.remove('gallery-separator-hidden'); // Force open\n\n const arrow = sep.querySelector('.gallery-separator-arrow');\n if (arrow) arrow.style.transform = 'rotate(90deg)';\n\n // Removed file count update during search as it was buggy.\n } else {\n sep.style.display = 'none'; // Hide separator\n }\n }\n\n // Update file visibility\n for (const f of allFiles) {\n f.style.display = fileMatches.has(f) ? 'unset' : 'none';\n }\n\n const t1 = performance.now();\n updateStatusLine('Filter', ['Images', `${totalFound.toLocaleString()} / ${allFiles.length.toLocaleString()}`], ['Time', `${Math.round(t1 - t0).toLocaleString()}ms`]);\n timer(`galleryFilter:${str}`, t1 - t0);\n refreshGallerySelection();\n }, 250);\n}\n\nconst findDuplicates = (arr, key) => {\n const map = new Map();\n return arr.filter((item) => {\n const value = item[key];\n if (map.has(value)) return true;\n map.set(value, true);\n return false;\n });\n};\n\nexport async function gallerySort(key) {\n // if currentSort does not start with key, default to key+A\n // else if currentSort ends with A change to D and vice versa for toggling sort order\n if (currentSort.startsWith(key)) currentSort = currentSort.endsWith('A') ? `${key}D` : `${key}A`;\n else currentSort = `${key}A`;\n\n if (!Object.hasOwn(gallerySorter, currentSort)) {\n error(`Gallery: \"${currentSort}\" is not a valid gallery sorting key`);\n return;\n }\n const t0 = performance.now();\n const arr = Array.from(el.files.children).filter((node) => node.name); // filter out separators\n if (arr.length === 0) return; // no files to sort\n const fragment = document.createDocumentFragment();\n\n // Helper to get directory path from a file node\n const getDirPath = (node) => {\n const match = node.name.match(/(.*)[/\\\\]/);\n return match ? match[1] : '';\n };\n\n // Partition into root files and subfolder files - root files always stay at top\n const rootFiles = arr.filter((node) => !getDirPath(node));\n const subfolderFiles = arr.filter((node) => getDirPath(node));\n\n // Group subfolder files by directory\n const folderGroups = new Map();\n for (const file of subfolderFiles) {\n const dir = getDirPath(file);\n if (!folderGroups.has(dir)) folderGroups.set(dir, []);\n folderGroups.get(dir).push(file);\n }\n\n sortMode = gallerySorter[currentSort];\n\n // Sort root files\n rootFiles.sort(sortMode.func);\n rootFiles.forEach((node) => fragment.appendChild(node));\n\n // Sort folder names alphabetically, then sort files within each folder\n // const sortedFolderNames = Array.from(folderGroups.keys()).sort((a, b) => a.localeCompare(b));\n const folderNames = Array.from(folderGroups.keys());\n const sortedFolderNames = currentSort.endsWith('A') ? folderNames.sort((a, b) => a.localeCompare(b)) : folderNames.sort((a, b) => b.localeCompare(a));\n\n console.log('HERE', sortedFolderNames);\n for (const folderName of sortedFolderNames) {\n const files = folderGroups.get(folderName);\n files.sort(sortMode.func);\n files.forEach((node) => fragment.appendChild(node));\n }\n\n if (fragment.children.length === 0) return;\n el.files.innerHTML = '';\n el.files.appendChild(fragment);\n addSeparators();\n\n // After sorting and adding separators, ensure files respect separator states\n const all = Array.from(el.files.children);\n for (const f of all) {\n if (!f.name) continue; // Skip separators\n\n const dir = f.name.match(/(.*)[/\\\\]/);\n if (dir && dir[1]) {\n const dirPath = dir[1];\n const isOpen = separatorStates.get(dirPath);\n if (isOpen === false) {\n f.style.display = 'none';\n }\n }\n }\n\n const t1 = performance.now();\n log(`gallerySort: sort=${sortMode.name} len=${arr.length} time=${Math.floor(t1 - t0)}`);\n updateStatusLine(['Images', arr.length.toLocaleString()], ['Time', `${Math.round(t1 - t0).toLocaleString()}ms`]);\n timer(`gallerySort:${sortMode.name}`, t1 - t0);\n refreshGallerySelection();\n}\nwindow.gallerySort = gallerySort;\n\n/**\n * Function for removing the cleaning overlay\n * @callback ClearMsgCallback\n * @returns {void}\n */\n\n/**\n * Generate and display the overlay to announce cleanup is in progress.\n * @param {number} count - Number of entries being cleaned up\n * @param {boolean} all - Indicate that all thumbnails are being cleared\n * @returns {ClearMsgCallback}\n */\nfunction showCleaningMsg(count, all = false) {\n // Rendering performance isn't a priority since this doesn't run often\n const parent = el.folders.parentElement;\n const cleaningOverlay = document.createElement('div');\n const msgDiv = document.createElement('div');\n const msgText = document.createElement('div');\n const msgInfo = document.createElement('div');\n const anim = document.createElement('span');\n\n parent.style.position = 'relative';\n cleaningOverlay.style.cssText = 'position: absolute; height: 100%; width: 100%; background-color: var(--sd-main-accent-color); display: flex; align-items: center; justify-content: center; align-content: center; flex-wrap: wrap; opacity: 0.8; border-radius: var(--sd-border-radius);';\n msgDiv.style.cssText = 'display: block; color: var(--sd-button-normal-color); padding: 12px; border-radius: 8px; border-radius: var(--sd-border-radius);';\n msgText.style.cssText = 'font-size: 1.2em';\n msgInfo.style.cssText = 'font-size: 0.9em; text-align: center;';\n msgText.innerText = 'Thumbnail cleanup...';\n msgInfo.innerText = all ? 'Clearing all entries' : `Found ${count} old entries`;\n anim.classList.add('idbBusyAnim');\n\n msgDiv.append(msgText, msgInfo);\n cleaningOverlay.append(msgDiv, anim);\n parent.append(cleaningOverlay);\n return () => { cleaningOverlay.remove(); };\n}\n\nconst maintenanceQueue = new SimpleFunctionQueue('Gallery Maintenance');\n\n/**\n * Handles calling the cleanup function for the thumbnail cache\n * @param {string} folder - Folder to clean\n * @param {number} imgCount - Expected number of images in gallery\n * @param {AbortController} controller - AbortController that's handling this task\n * @param {boolean} force - Force full cleanup of the folder\n */\nasync function thumbCacheCleanup(folder, imgCount, controller, force = false) {\n if (!opts.browser_cache && !force) return;\n if (!folder || !imgCount) return;\n if (Date.now() - cleanupTimers[folder] < minCleanupTime) return; // Prevents multiple calls in quick succession\n cleanupTimers[folder] = Date.now();\n try {\n if (typeof folder !== 'string' || typeof imgCount !== 'number') {\n throw new Error('Function called with invalid arguments');\n }\n debug('thumbCacheCleanup', { folder, imgCount });\n await awaitForGallery(imgCount, controller.signal);\n } catch (err) {\n error('thumbCacheCleanup', { folder, error: err });\n return;\n }\n\n maintenanceQueue.enqueue({\n signal: controller.signal,\n callback: async () => {\n if (Date.now() - maintenanceTimers[folder] < minCleanupTime) return;\n maintenanceTimers[folder] = Date.now();\n const t0 = performance.now();\n const keptGalleryHashes = force ? new Set() : new Set(galleryHashes.values()); // External context should be safe since this function run is guarded by AbortController/AbortSignal in the SimpleFunctionQueue\n const folderNormalized = folder.replace(/\\/+/g, '/').replace(/\\/$/, '');\n const recursiveFolder = IDBKeyRange.bound(folderNormalized, `${folderNormalized}\\uffff`, false, true);\n if (keptGalleryHashes.size < minCleanupCount && !force) return; // Don't run when there aren't many excess entries\n const cachedHashesCount = await idbCount(recursiveFolder)\n .catch((e) => {\n error('maintenanceQueue', { folder, error: e });\n return Infinity; // Forces next check to fail if something went wrong\n });\n const cleanupCount = cachedHashesCount - keptGalleryHashes.size;\n if (!force && (cleanupCount < minCleanupCount || !Number.isFinite(cleanupCount))) return; // Don't run when there aren't many excess entries\n log('galleryMaintenance', { folder });\n\n if (controller.signal.aborted) {\n debug('maintenanceQueue', { folder, reason: controller.signal.reason });\n return;\n }\n const cb_clearMsg = showCleaningMsg(cleanupCount);\n await idbFolderCleanup(keptGalleryHashes, recursiveFolder, controller.signal)\n .then((delcount) => {\n const t1 = performance.now();\n log('galleryMaintenance', { folder, kept: keptGalleryHashes.size, deleted: delcount, time: Math.round(t1 - t0) });\n timer(`thumbnailDBCleanup:${folder}`, t1 - t0);\n currentGalleryFolder = null;\n updateStatusLine('Thumbnail cache cleared');\n })\n .catch((reason) => {\n SimpleFunctionQueue.abortLogger('thumbCacheCleanup', reason);\n })\n .finally(async () => {\n await new Promise((resolve) => { setTimeout(resolve, 1000); }); // Delay removal by 1 second to ensure at least minimum visibility\n cb_clearMsg();\n });\n },\n });\n}\n\nfunction resetGalleryState(reason) {\n maintenanceController.abort(reason);\n const controller = new AbortController();\n maintenanceController = controller;\n\n galleryHashes.clear(); // Must happen AFTER the AbortController steps\n pb.hide();\n resetGallerySelection();\n return controller;\n}\n\nfunction clearCacheIfDisabled(browser_cache) {\n if (browser_cache === false) {\n log('thumbCacheCleanup', { disabled: true });\n const controller = resetGalleryState('Clearing all thumbnails from cache');\n maintenanceQueue.enqueue({\n signal: controller.signal,\n callback: async () => {\n const t0 = performance.now();\n const cb_clearMsg = showCleaningMsg(0, true);\n await idbClearAll(controller.signal)\n .then(() => {\n log('thumbCacheCleanup', { time: Math.floor(performance.now() - t0) });\n currentGalleryFolder = null;\n updateStatusLine('Thumbnail cache cleared');\n })\n .catch((e) => {\n SimpleFunctionQueue.abortLogger('thumbCacheCleanup', e);\n })\n .finally(async () => {\n await new Promise((resolve) => { setTimeout(resolve, 1000); });\n cb_clearMsg();\n });\n },\n });\n }\n}\n\nexport function clearCache() {\n if (!currentGalleryFolder) return;\n const controller = resetGalleryState('Clearing folder thumbnails cache');\n el.files.innerHTML = '';\n log('clearCache', { folder: currentGalleryFolder });\n thumbCacheCleanup(currentGalleryFolder, 0, controller, true);\n}\nwindow.clearCache = clearCache;\n\nasync function fetchFilesHT(evt, controller) {\n const t0 = performance.now();\n const fragment = document.createDocumentFragment();\n updateStatusLine(['Folder', evt.target.name], 'in-progress');\n let numFiles = 0;\n\n const res = await authFetch(`${window.api}/browser/files?folder=${encodeURI(evt.target.name)}`);\n if (!res || res.status !== 200) {\n updateStatusLine(['Folder', evt.target.name], ['Failed', res?.statusText || 'No response']);\n return;\n }\n const jsonData = await res.json();\n for (const line of jsonData) {\n const data = decodeURI(line).split('##F##');\n const fileName = data[1];\n const ext = fileName.split('.').pop().toLowerCase();\n if (SUPPORTED_EXTENSIONS.includes(ext)) {\n numFiles++;\n const f = new GalleryFile(data[0], fileName, controller.signal);\n fragment.appendChild(f);\n }\n }\n\n if (controller.signal.aborted) return;\n el.files.appendChild(fragment);\n\n const t1 = performance.now();\n log(`gallery: folder=${evt.target.name} num=${numFiles} method=http time=${Math.floor(t1 - t0)}ms`);\n timer(`galleryFetch:${evt.target.name}`, t1 - t0);\n updateStatusLine(['Folder', evt.target.name], ['Images', numFiles.toLocaleString()], ['Time', `${Math.floor(t1 - t0).toLocaleString()}ms`]);\n pb.start(numFiles);\n addSeparators();\n refreshGallerySelection();\n thumbCacheCleanup(evt.target.name, numFiles, controller);\n}\n\nasync function fetchFilesWS(evt) { // fetch file-by-file list over websockets\n if (!url) return;\n // Abort previous controller and point to new controller for next time\n const controller = resetGalleryState('Gallery update'); // Called here because fetchFilesHT isn't called directly\n\n el.files.innerHTML = '';\n updateGalleryStyles();\n if (ws && ws.readyState === WebSocket.OPEN) ws.close(); // abort previous request\n let wsConnected = false;\n try {\n ws = new WebSocket(`${url}/sdapi/v1/browser/files`);\n wsConnected = await wsConnect(ws);\n } catch (err) {\n log('gallery: ws connect error', err);\n return;\n }\n log(`gallery: connected=${wsConnected} state=${ws?.readyState} url=${ws?.url}`);\n currentGalleryFolder = evt.target.name;\n if (!wsConnected) {\n await fetchFilesHT(evt, controller); // fallback to http\n return;\n }\n updateStatusLine(['Folder', evt.target.name]);\n const t0 = performance.now();\n let numFiles = 0;\n let t1 = performance.now();\n let fragment = document.createDocumentFragment();\n\n ws.onmessage = (event) => {\n t1 = performance.now();\n const data = decodeURI(event.data).split('##F##');\n if (data[0] === '#END#') {\n ws.close();\n } else {\n const fileName = data[1];\n const ext = fileName.split('.').pop().toLowerCase();\n if (SUPPORTED_EXTENSIONS.includes(ext)) {\n const file = new GalleryFile(data[0], fileName, controller.signal);\n numFiles++;\n fragment.appendChild(file);\n if (numFiles % fragmentSize === 0) {\n updateStatusLine(['Folder', evt.target.name], ['Images', numFiles.toLocaleString()], ['Status', 'in-progress'], ['Time', `${Math.floor(t1 - t0).toLocaleString()}ms`]);\n el.files.appendChild(fragment);\n fragment = document.createDocumentFragment();\n }\n }\n }\n };\n ws.onclose = (event) => {\n if (controller.signal.aborted) return;\n el.files.appendChild(fragment);\n // gallerySort();\n log(`gallery: folder=${evt.target.name} num=${numFiles} method=ws time=${Math.floor(t1 - t0)}ms`);\n updateStatusLine(['Folder', evt.target.name], ['Images', numFiles.toLocaleString()], ['Time', `${Math.floor(t1 - t0).toLocaleString()}ms`]);\n pb.start(numFiles);\n addSeparators();\n refreshGallerySelection();\n thumbCacheCleanup(evt.target.name, numFiles, controller);\n };\n ws.onerror = (event) => {\n log('gallery ws error', event);\n };\n ws.send(encodeURI(evt.target.name));\n}\n\nasync function updateFolders() {\n // if (el.folders.children.length > 0) return;\n const res = await authFetch(`${window.api}/browser/folders`);\n if (!res || res.status !== 200) return;\n url = res.url.split('/sdapi')[0].replace('http', 'ws'); // update global url as ws need fqdn\n const folders = await res.json();\n el.folders.innerHTML = '';\n for (const folder of folders) {\n const f = new GalleryFolder(folder);\n el.folders.appendChild(f);\n }\n}\n\nasync function monitorGalleries() {\n async function galleryMutation(mutations) {\n const galleries = mutations.filter((m) => m.target?.classList?.contains('preview'));\n for (const gallery of galleries) {\n const links = gallery.target.querySelectorAll('a');\n for (const link of links) {\n const href = link.getAttribute('href');\n if (!href) continue;\n const fn = href.split('/').pop().split('\\\\').pop();\n link.setAttribute('download', fn);\n }\n }\n }\n\n const galleryElements = gradioApp().querySelectorAll('.gradio-gallery');\n for (const gallery of galleryElements) {\n const galleryObserver = new MutationObserver(galleryMutation);\n galleryObserver.observe(gallery, { childList: true, subtree: true, attributes: true });\n }\n}\n\nasync function setOverlayAnimation() {\n const busyAnimation = document.createElement('style');\n\n // eslint-disable-next-line @stylistic/max-len\n busyAnimation.textContent = '.idbBusyAnim{width:16px;height:16px;border-radius:50%;display:block;margin:40px;position:relative;background:#aa3d00;color:#fff;box-shadow:-24px 0,24px 0;box-sizing:border-box;animation:2s ease-in-out infinite overlayRotation}@keyframes overlayRotation{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}';\n document.head.append(busyAnimation);\n}\n\nasync function initGalleryAutoRefresh() {\n const isModern = opts.theme_type?.toLowerCase() === 'modern';\n let galleryTab = isModern ? document.getElementById('gallery_tabitem') : document.getElementById('tab_gallery');\n let timeout = 0;\n while (!galleryTab && timeout++ < 60) {\n await new Promise((resolve) => { setTimeout(resolve, 2500); });\n galleryTab = isModern ? document.getElementById('gallery_tabitem') : document.getElementById('tab_gallery');\n }\n if (!galleryTab) {\n error('Gallery: timeout');\n return;\n }\n const displayNoneRegEx = /display:\\s*none/;\n async function galleryAutoRefresh(mutations) {\n if (!opts.browser_gallery_autoupdate) return;\n for (const mutation of mutations) {\n switch (mutation.attributeName) {\n case 'class':\n if (mutation.oldValue.includes('hidden') && !mutation.target.classList.contains('hidden')) {\n await updateFolders();\n GalleryFolder.getActive()?.click();\n }\n break;\n case 'style':\n if (displayNoneRegEx.test(mutation.oldValue) && !displayNoneRegEx.test(mutation.target.style.display)) {\n await updateFolders();\n GalleryFolder.getActive()?.click();\n }\n break;\n default:\n break;\n }\n }\n }\n const galleryVisObserver = new MutationObserver(galleryAutoRefresh);\n galleryVisObserver.observe(galleryTab, { attributeFilter: ['class', 'style'], attributeOldValue: true });\n}\n\nasync function overlayDelete(evt) {\n const res = await authFetch(`${window.api}/delete-image?file=${encodeURIComponent(currentImage)}`, { method: 'DELETE' });\n evt.stopPropagation();\n if (!res || res.status !== 200) {\n error('galleryDelete', { file: currentImage, status: res?.status, statusText: res?.statusText });\n return;\n }\n const data = await res.json();\n log('galleryDelete', data);\n GalleryFolder.getActive()?.click();\n}\n\nasync function overlayDownload(evt) {\n log('galleryDownload', currentImage);\n const link = document.createElement('a');\n link.href = `/file=${encodeURIComponent(currentImage)}`;\n link.download = currentName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n evt.stopPropagation();\n}\n\nasync function overlayInfo(evt) {\n evt.stopPropagation();\n const tgt = document.getElementById('html_info_formatted_gallery');\n if (!tgt) return;\n const res = await authFetch(`${window.api}/png-info?file=${encodeURI(currentImage)}`);\n if (!res || res.status !== 200) return;\n const data = await res.json();\n log('galleryInfo res', data);\n const prompt = data?.parameters?.Prompt || '';\n const negative = data?.parameters?.Negative || data?.parameters?.['Negative prompt'] || '';\n const raw = data?.info || '';\n const params = data?.parameters || {};\n delete params.Prompt;\n delete params.Negative;\n delete params['Negative prompt'];\n const paramsFormatted = Object.entries(params).map(([key, value]) => `${key}: ${value}`).join(' | ');\n tgt.innerHTML = `\n
File: ${currentImage}
\n
Prompt: ${prompt}
\n
Negative: ${negative}
\n
${paramsFormatted}
\n
Raw:
${raw}
\n `;\n const img = document.querySelector('#gallery_gallery img');\n if (img) img.src = `/file=${encodeURIComponent(currentImage)}?t=${Date.now()}`; // Force refresh in case info endpoint is faster than cache update\n const status = document.querySelector('#html_log_gallery p');\n if (status) status.innerText = currentTitle;\n}\n\nasync function createOverlay() {\n if (el.overlay) return;\n el.overlay = document.createElement('div');\n el.overlay.className = 'gallery-overlay';\n const btnDownload = document.createElement('span');\n btnDownload.innerHTML = '\\udb85\\udc64';\n btnDownload.title = 'Download image';\n btnDownload.style.cursor = 'pointer';\n btnDownload.addEventListener('click', overlayDownload);\n const btnDelete = document.createElement('span');\n btnDelete.innerHTML = '\\uf05c';\n btnDelete.title = 'Delete image';\n btnDelete.style.cursor = 'pointer';\n btnDelete.addEventListener('click', overlayDelete);\n const btnInfo = document.createElement('span');\n btnInfo.innerHTML = '\\uf05a';\n btnInfo.title = 'Image metadata';\n btnInfo.style.cursor = 'pointer';\n btnInfo.addEventListener('click', overlayInfo);\n el.overlay.append(btnInfo, btnDelete, btnDownload);\n}\n\nasync function blockQueueUntilReady() {\n // Add block to maintenanceQueue until cache is ready\n maintenanceQueue.enqueue({\n signal: new AbortController().signal, // Use standalone AbortSignal that can't be aborted\n callback: async () => {\n let timeout = 0;\n while (!idbIsReady() && timeout++ < 60) {\n await new Promise((resolve) => { setTimeout(resolve, 1000); });\n }\n if (!idbIsReady()) {\n throw new Error('Timed out waiting for thumbnail cache');\n }\n },\n });\n}\n\nexport async function initGallery() { // triggered on gradio change to monitor when ui gets sufficiently constructed\n const t0 = performance.now();\n el.folders = gradioApp().getElementById('tab-gallery-folders');\n el.files = gradioApp().getElementById('tab-gallery-files');\n el.status = gradioApp().getElementById('tab-gallery-status');\n el.search = gradioApp().querySelector('#tab-gallery-search textarea');\n el.size = document.getElementById('tab-gallery-thumb-size');\n if (!el.folders || !el.files || !el.status || !el.search) {\n error('initGallery', 'Missing gallery elements');\n return;\n }\n\n if (el.size) {\n el.size.value = opts.extra_networks_card_size;\n el.size.addEventListener('input', updateGalleryStyles);\n }\n blockQueueUntilReady(); // Run first\n createOverlay();\n updateGalleryStyles();\n injectGalleryStatusCSS();\n setOverlayAnimation();\n\n const progress = gradioApp().getElementById('tab-gallery-progress');\n if (progress) pb.attachTo(progress);\n else log('initGallery', 'Failed to attach loading progress bar');\n\n el.search.addEventListener('input', gallerySearch);\n el.btnSend = gradioApp().getElementById('tab-gallery-send-image');\n document.getElementById('tab-gallery-files').style.height = opts.logmonitor_show ? '75vh' : '85vh';\n\n monitorGalleries();\n updateFolders();\n initGalleryAutoRefresh();\n [\n 'browser_folders',\n 'outdir_samples',\n 'outdir_txt2img_samples',\n 'outdir_img2img_samples',\n 'outdir_control_samples',\n 'outdir_extras_samples',\n 'outdir_save',\n 'outdir_video',\n 'outdir_init_images',\n 'outdir_grids',\n 'outdir_txt2img_grids',\n 'outdir_img2img_grids',\n 'outdir_control_grids',\n ].forEach((op) => { monitorOption(op, updateFolders); });\n const t1 = performance.now();\n log('initGallery', Math.round(t1 - t0));\n timer('initGallery', t1 - t0);\n}\n\n// register on startup\n\ncustomElements.define('gallery-folder', GalleryFolder);\ncustomElements.define('gallery-file', GalleryFile);\n", "import exifr from 'exifr';\nimport Panzoom from 'panzoom';\nimport { log, debug } from './logger';\nimport { gradioApp, onAfterUiUpdate } from './script';\nimport { getENActiveTab } from './extraNetworks';\nimport { all_gallery_buttons, selected_gallery_button } from './ui';\nimport { timer } from './timers';\n\n// A full size 'lightbox' preview modal shown when left clicking on gallery previews\nlet previewDrag = false;\nlet modalPreviewZone;\nlet previewInstance;\n\nfunction cycleImageFit() {\n const root = document.documentElement;\n const current = getComputedStyle(root).getPropertyValue('--sd-image-fit').trim();\n let next = 'contain';\n if (current === 'contain') next = 'cover';\n else if (current === 'cover') next = 'fill';\n else if (current === 'fill') next = 'scale-down';\n else if (current === 'scale-down') next = 'none';\n root.style.setProperty('--sd-image-fit', next);\n log('cycleImageFit', current, next);\n}\n\nwindow.cycleImageFit = cycleImageFit;\n\nfunction isInViewport(element) {\n const rect = element.getBoundingClientRect();\n return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);\n}\n\nfunction closeModal(evt, force = false) {\n if (force) gradioApp().getElementById('lightboxModal').style.display = 'none';\n if (previewDrag) return;\n if (evt?.button !== 0) return;\n gradioApp().getElementById('lightboxModal').style.display = 'none';\n let thumbnails = Array.from(gradioApp().querySelectorAll('.thumbnails .thumbnail-item'));\n thumbnails = thumbnails.filter((el) => el.checkVisibility());\n if (thumbnails.length === 0) return;\n thumbnails[0].focus();\n}\n\nfunction modalImageSwitch(offset) {\n const negmod = (n, m) => ((n % m) + m) % m;\n const galleryButtons = all_gallery_buttons();\n if (galleryButtons.length > 1) {\n const currentButton = selected_gallery_button();\n let result = -1;\n galleryButtons.forEach((v, i) => {\n if (v === currentButton) result = i;\n });\n if (result !== -1) {\n const nextButton = galleryButtons[negmod((result + offset), galleryButtons.length)];\n nextButton.click();\n const modalImage = gradioApp().getElementById('modalImage');\n const modal = gradioApp().getElementById('lightboxModal');\n modalImage.src = nextButton.children[0].src;\n if (modalImage.style.display === 'none') modal.style.setProperty('background-image', `url(${modalImage.src})`);\n return;\n }\n }\n\n const galleryFilesContainer = gradioApp().getElementById('tab-gallery-files');\n if (!galleryFilesContainer || !galleryFilesContainer.offsetParent) return;\n const gallerySelection = window.getGallerySelection();\n if (!gallerySelection.files.length || gallerySelection.files.length <= 1) return;\n const baseIndex = gallerySelection.index >= 0 ? gallerySelection.index : 0;\n const nextIndex = negmod((baseIndex + offset), gallerySelection.files.length);\n window.setGallerySelection(nextIndex, { send: true });\n const modalImage = gradioApp().getElementById('modalImage');\n const modal = gradioApp().getElementById('lightboxModal');\n const directSrc = window.getGallerySelectedUrl();\n if (modalImage && modal && directSrc) {\n modalImage.src = directSrc;\n if (modalImage.style.display === 'none') modal.style.setProperty('background-image', `url(${directSrc})`);\n }\n}\n\nfunction modalSaveImage(event?: any) {\n const tabName = getENActiveTab();\n const saveBtn = gradioApp().getElementById(`save_${tabName}`);\n log('modalSaveImage', tabName, saveBtn);\n if (saveBtn) saveBtn.click();\n modalImageSwitch(0);\n}\n\nfunction modalKeyHandler(event) {\n log('modalKeyHandler', event.key);\n switch (event.key) {\n case 's':\n modalSaveImage();\n break;\n case 'ArrowLeft':\n modalImageSwitch(-1);\n break;\n case 'ArrowRight':\n modalImageSwitch(1);\n break;\n case 'Escape':\n closeModal(null, true);\n break;\n }\n event.stopPropagation();\n}\n\nfunction decodeBytes(bytes: Uint8Array): string {\n if (!bytes || bytes.length < 8) return '';\n const prefix = new TextDecoder('ascii').decode(bytes.slice(0, 8));\n const data = bytes.slice(8);\n if (prefix.startsWith('ASCII')) return new TextDecoder('ascii').decode(data).replace(/\\0+$/, '');\n if (prefix.startsWith('UNICODE')) return new TextDecoder('utf-16be').decode(data).replace(/\\0+$/, '');\n if (prefix.startsWith('JIS')) return new TextDecoder('shift-jis').decode(data).replace(/\\0+$/, '');\n return new TextDecoder().decode(bytes).replace(/\\0+$/, '');\n}\n\nexport async function getExif(el) {\n let exif: any = '';\n try {\n exif = await exifr.parse(el, { userComment: true });\n } catch (e) {\n log('getExif', el, e);\n return exif;\n }\n // let html = `Image ${el.src} Size ${el.naturalWidth}x${el.naturalHeight}
`;\n let html = '';\n let params;\n if (!exif) {\n log('getExif', 'exif is none');\n return html;\n }\n if (exif.parameters) params = exif.parameters;\n else if (exif.userComment) params = decodeBytes(exif.userComment);\n else params = '';\n // debug('getExif', params);\n if (params.length > 0) html += `Prompt ${params || ''}
`;\n html = html.replace('Negative prompt:', '
Negative');\n html = html.replace('Steps:', '
Params Steps:');\n html = html.replaceAll('\\n', '
');\n html = html.replaceAll('

', '
');\n return html;\n}\n\nasync function displayExif(el) {\n const modalExif = gradioApp().getElementById('modalExif');\n const html = await getExif(el);\n modalExif.innerHTML = html;\n}\n\nfunction showModal(event) {\n const source = event.target || event.srcElement;\n const modalImage = gradioApp().getElementById('modalImage');\n const lb = gradioApp().getElementById('lightboxModal');\n lb.ownerSVGElement = modalImage;\n modalImage.onload = () => {\n previewInstance.moveTo(0, 0);\n modalPreviewZone.focus();\n if (opts.viewer_show_metadata) displayExif(modalImage);\n };\n modalImage.src = source.src;\n if (modalImage.style.display === 'none') lb.style.setProperty('background-image', `url(${source.src})`);\n lb.style.display = 'flex';\n lb.onkeydown = modalKeyHandler;\n event.stopPropagation();\n}\n\nfunction modalDownloadImage() {\n const link = document.createElement('a');\n link.style.display = 'none';\n link.href = gradioApp().getElementById('modalImage').src;\n link.download = 'image';\n document.body.appendChild(link);\n link.click();\n setTimeout(() => {\n URL.revokeObjectURL(link.href);\n link.parentNode.removeChild(link);\n }, 0);\n}\n\nfunction modalZoomSet(modalImage, enable) {\n localStorage.setItem('modalZoom', enable ? 'yes' : 'no');\n if (modalImage) modalImage.classList.toggle('modalImageFullscreen', !!enable);\n}\n\nfunction setupImageForLightbox(image) {\n if (image.dataset.modded) return;\n image.dataset.modded = 'true';\n image.style.cursor = 'pointer';\n image.style.userSelect = 'none';\n}\n\nfunction modalZoomToggle(event) {\n const modalImage = gradioApp().getElementById('modalImage');\n modalZoomSet(modalImage, !modalImage.classList.contains('modalImageFullscreen'));\n event.stopPropagation();\n modalImageSwitch(0);\n}\n\nfunction modalTileToggle(event) {\n const modalImage = gradioApp().getElementById('modalImage');\n const modal = gradioApp().getElementById('lightboxModal');\n const isTiling = modalImage.style.display === 'none';\n if (isTiling) {\n modalImage.style.display = 'block';\n modal.style.setProperty('background-image', 'none');\n } else {\n modalImage.style.display = 'none';\n modal.style.setProperty('background-image', `url(${modalImage.src})`);\n }\n event.stopPropagation();\n modalImageSwitch(0);\n}\n\nfunction modalResetInstance(event) {\n const modalImage = document.getElementById('modalImage');\n previewInstance.dispose();\n previewInstance = Panzoom(modalImage, { zoomSpeed: 0.05, minZoom: 0.1, maxZoom: 5.0, filterKey: (/* e, dx, dy, dz */) => true });\n event.stopPropagation();\n modalImageSwitch(0);\n}\n\nfunction modalToggleParams(event) {\n const modalExif = gradioApp().getElementById('modalExif');\n if (modalExif.style.display === 'none' || modalExif.style.display === '') {\n modalExif.style.display = 'block';\n } else {\n modalExif.style.display = 'none';\n }\n event.stopPropagation();\n modalImageSwitch(0);\n}\n\nfunction galleryClickEventHandler(event) {\n if (event.button !== 0) return;\n if (event.target.nodeName === 'IMG' && !event.target.parentNode.classList.contains('thumbnail-item')) {\n const initialZoom = (localStorage.getItem('modalZoom') || true) === 'yes';\n modalZoomSet(gradioApp().getElementById('modalImage'), initialZoom);\n event.preventDefault();\n showModal(event);\n }\n}\n\nasync function bindImageViewer() {\n // Each tab has its own gradio-gallery\n const galleryPreviews = gradioApp().querySelectorAll('.gradio-gallery > div.preview');\n for (const galleryPreview of galleryPreviews) {\n if (!galleryPreview.hasAttribute('data-listener')) galleryPreview.addEventListener('click', galleryClickEventHandler, true);\n galleryPreview.setAttribute('data-listener', 'true');\n galleryPreview.querySelectorAll('img').forEach(setupImageForLightbox);\n }\n}\n\nexport async function initImageViewer() {\n const t0 = performance.now();\n // main elements\n const modal = document.createElement('div');\n modal.id = 'lightboxModal';\n\n modalPreviewZone = document.createElement('div');\n modalPreviewZone.className = 'lightboxModalPreviewZone';\n\n const modalImage = document.createElement('img');\n modalImage.id = 'modalImage';\n modalPreviewZone.appendChild(modalImage);\n previewInstance = Panzoom(modalImage, { zoomSpeed: 0.05, minZoom: 0.1, maxZoom: 5.0, filterKey: (/* e, dx, dy, dz */) => true });\n\n // toolbar\n const modalZoom = document.createElement('span');\n modalZoom.id = 'modal_zoom';\n modalZoom.className = 'cursor';\n modalZoom.innerHTML = '\\uf531';\n modalZoom.title = 'Toggle zoomed view';\n modalZoom.addEventListener('click', modalZoomToggle, true);\n\n const modalReset = document.createElement('span');\n modalReset.id = 'modal_reset';\n modalReset.className = 'cursor';\n modalReset.innerHTML = '\\uf532';\n modalReset.title = 'Reset zoomed view';\n modalReset.addEventListener('click', modalResetInstance, true);\n\n const modalTile = document.createElement('span');\n modalTile.id = 'modal_tile';\n modalTile.className = 'cursor';\n modalTile.innerHTML = '\\udb81\\udd70';\n modalTile.title = 'Preview tiling';\n modalTile.addEventListener('click', modalTileToggle, true);\n\n const modalSave = document.createElement('span');\n modalSave.id = 'modal_save';\n modalSave.className = 'cursor';\n modalSave.innerHTML = '\\udb80\\udd93';\n modalSave.title = 'Save Image';\n modalSave.addEventListener('click', modalSaveImage, true);\n\n const modalDownload = document.createElement('span');\n modalDownload.id = 'modal_download';\n modalDownload.className = 'cursor';\n modalDownload.innerHTML = '\\udb85\\udc62';\n modalDownload.title = 'Download Image';\n modalDownload.addEventListener('click', modalDownloadImage, true);\n\n const modalClose = document.createElement('span');\n modalClose.id = 'modal_close';\n modalClose.className = 'cursor';\n modalClose.innerHTML = '\\udb80\\udd57';\n modalClose.title = 'Close';\n modalClose.addEventListener('click', (evt) => closeModal(evt, true), true);\n\n const modalToggleParamsBtn = document.createElement('span');\n modalToggleParamsBtn.id = 'modal_toggle_params';\n modalToggleParamsBtn.className = 'cursor';\n modalToggleParamsBtn.innerHTML = '\\uf05a';\n modalToggleParamsBtn.title = 'Toggle Parameters';\n modalToggleParamsBtn.addEventListener('click', modalToggleParams, true);\n\n // exif\n const modalExif = document.createElement('div');\n modalExif.id = 'modalExif';\n modalExif.style = 'position: absolute; bottom: 0px; width: 100%; background-color: rgba(0, 0, 0, 0.5); color: var(--neutral-300); padding: 1em; font-size: small; line-height: 1.2em; z-index: 1; display: none;';\n\n // handlers\n modalPreviewZone.addEventListener('mousedown', () => { previewDrag = false; });\n modalPreviewZone.addEventListener('touchstart', () => { previewDrag = false; }, { passive: true });\n modalPreviewZone.addEventListener('mousemove', () => { previewDrag = true; });\n modalPreviewZone.addEventListener('touchmove', () => { previewDrag = true; }, { passive: true });\n modalPreviewZone.addEventListener('scroll', () => { previewDrag = true; });\n modalPreviewZone.addEventListener('mouseup', (evt) => closeModal(evt));\n modalPreviewZone.addEventListener('touchend', (evt) => closeModal(evt));\n\n const modalPrev = document.createElement('a');\n modalPrev.className = 'modalPrev';\n modalPrev.innerHTML = '❮';\n modalPrev.addEventListener('click', () => modalImageSwitch(-1), true);\n // modalPrev.addEventListener('keydown', modalKeyHandler, true);\n\n const modalNext = document.createElement('a');\n modalNext.className = 'modalNext';\n modalNext.innerHTML = '❯';\n modalNext.addEventListener('click', () => modalImageSwitch(1), true);\n // modalNext.addEventListener('keydown', modalKeyHandler, true);\n\n const modalControls = document.createElement('div');\n modalControls.className = 'modalControls gradio-container';\n\n // build interface\n modal.appendChild(modalPrev);\n modal.appendChild(modalPreviewZone);\n modal.appendChild(modalNext);\n modal.append(modalControls);\n modalControls.appendChild(modalZoom);\n modalControls.appendChild(modalReset);\n modalControls.appendChild(modalTile);\n modalControls.appendChild(modalSave);\n modalControls.appendChild(modalDownload);\n modalControls.appendChild(modalToggleParamsBtn);\n modalControls.appendChild(modalClose);\n modal.append(modalExif);\n\n gradioApp().appendChild(modal);\n const t1 = performance.now();\n log('initImageViewer', Math.round(t1 - t0));\n timer('initImageViewer', t1 - t0);\n}\n\nonAfterUiUpdate(bindImageViewer);\n", "import { log } from './logger';\n\n/*\n * Extra-networks completion for SD.Next prompt textareas.\n *\n * Companion to autocomplete.js: exposes sorted indices for LoRAs, embeddings, and wildcards,\n * each backed by an existing enumeration endpoint. Dispatch and insertion are driven from\n * autocomplete.js via the mode returned by getCurrentWord().\n */\n\ninterface XnItem {\n name: string;\n display?: string;\n}\n\ninterface SearchItem {\n name: string;\n display: string;\n}\n\ntype SearchResult = SearchItem & { kind: 'lora' | 'embed' | 'wildcard' };\n\n/** Binary search for the first item where item.name >= query. */\nexport function lowerBound(items: { name: string }[], query: string): number {\n let lo = 0;\n let hi = items.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (items[mid].name < query) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n}\n\ninterface XnEngine {\n lora: XnIndex;\n embed: XnIndex;\n wildcard: XnIndex;\n fetchJson(path: string): Promise;\n loadAll(): Promise;\n searchLoras(prefix: string, limit?: number): SearchResult[];\n searchEmbeddings(prefix: string, limit?: number): SearchResult[];\n searchWildcards(prefix: string, limit?: number): SearchResult[];\n}\n\n// -- Indices --\n\nclass XnIndex {\n items: SearchItem[];\n\n constructor(items: XnItem[]) {\n // items: [{ name, display }]. Sorted in-place by lowercase name.\n this.items = items.map(({ name, display }) => ({\n name: String(name).toLowerCase(),\n display: display ?? name,\n }));\n this.items.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n search(prefix: string, limit = 20): SearchItem[] {\n const query = String(prefix).toLowerCase();\n // Empty query returns the first `limit` items so `= 3) {\n for (let i = 0; i < this.items.length && matches.length < limit; i++) {\n if (this.items[i].name.includes(query)) matches.push(this.items[i]);\n }\n }\n return matches.slice(0, limit);\n }\n}\n\n// -- Engine --\n\nexport const xnEngine: XnEngine = {\n lora: new XnIndex([]),\n embed: new XnIndex([]),\n wildcard: new XnIndex([]),\n\n async fetchJson(path) {\n try {\n const resp = await fetch(`${window.api}${path}`, { credentials: 'include' });\n if (!resp.ok) throw new Error(`${resp.status}`);\n return await resp.json();\n } catch (e) {\n log('autoComplete', { xnFetchFailed: path, error: String(e) });\n return null;\n }\n },\n\n async loadAll() {\n // LoRAs: [{name, alias, path, metadata}, ...]\n const loraData = await this.fetchJson('/loras');\n if (Array.isArray(loraData)) {\n const items: XnItem[] = [];\n for (const lo of loraData) {\n if (typeof lo === 'object' && lo && 'name' in lo && typeof lo.name === 'string') items.push({ name: lo.name });\n if (typeof lo === 'object' && lo && 'alias' in lo && typeof lo.alias === 'string' && lo.alias !== (lo as { name?: string }).name) items.push({ name: lo.alias });\n }\n this.lora = new XnIndex(items);\n }\n // Embeddings: {loaded: [...], skipped: [...]}\n const embData = await this.fetchJson('/embeddings') as Record | null;\n if (embData && typeof embData === 'object') {\n const loaded = Array.isArray(embData.loaded) ? embData.loaded : [];\n this.embed = new XnIndex(loaded.map((name) => ({ name: String(name) })));\n }\n // Wildcards: [{name}, ...]\n const wcData = await this.fetchJson('/wildcards');\n if (Array.isArray(wcData)) {\n this.wildcard = new XnIndex(\n wcData\n .filter((w) => typeof w === 'object' && w && 'name' in w && typeof w.name === 'string')\n .map((w) => ({ name: w.name })),\n );\n }\n log('autoComplete', {\n xnLoaded: true,\n lora: this.lora.items.length,\n embed: this.embed.items.length,\n wildcard: this.wildcard.items.length,\n });\n },\n\n searchLoras(prefix, limit = 20) {\n return this.lora.search(prefix, limit).map((item) => ({ ...item, kind: 'lora' as const }));\n },\n\n searchEmbeddings(prefix, limit = 20) {\n return this.embed.search(prefix, limit).map((item) => ({ ...item, kind: 'embed' as const }));\n },\n\n searchWildcards(prefix, limit = 20) {\n return this.wildcard.search(prefix, limit).map((item) => ({ ...item, kind: 'wildcard' as const }));\n },\n};\n", "import { xnEngine, lowerBound } from './autocomplete_xn';\nimport { log } from './logger';\nimport { gradioApp, onAfterUiUpdate, onOptionsChanged, executeCallbacks, optionsChangedCallbacks } from './script';\nimport { timer } from './timers';\nimport { updateInput } from './ui';\n\n/*\n * Tag autocomplete for SD.Next prompt textareas.\n *\n * Ported from Enso's CodeMirror-based autocomplete (autocomplete.ts).\n * Uses binary search on sorted tag arrays for O(log n) prefix lookup,\n * with substring fallback for 4+ char queries.\n */\n\n// -- Category colors (unified 14-category scheme) --\n\nconst CATEGORY_COLORS = {\n 0: '#0075f8', // general\n 1: '#cc0000', // artist\n 2: '#ff4500', // studio\n 3: '#9900ff', // copyright\n 4: '#00ab2c', // character\n 5: '#ed5d1f', // species\n 6: '#8a66ff', // genre\n 7: '#00cccc', // medium\n 8: '#6b7280', // meta\n 9: '#228b22', // lore\n 10: '#e67e22', // lens\n 11: '#f1c40f', // lighting\n 12: '#1abc9c', // composition\n 13: '#e84393', // color\n};\n\nconst CATEGORY_NAMES = {\n 0: 'general',\n 1: 'artist',\n 2: 'studio',\n 3: 'copyright',\n 4: 'character',\n 5: 'species',\n 6: 'genre',\n 7: 'medium',\n 8: 'meta',\n 9: 'lore',\n 10: 'lens',\n 11: 'lighting',\n 12: 'composition',\n 13: 'color',\n};\n\n// Glyph + color per result kind. Renders in place of the category dot for non-tag results.\nconst KIND_GLYPHS = {\n tag: { glyph: '\u25CF', color: null }, // color pulled from tag category\n lora: { glyph: '\u25C6', color: '#8a66ff' },\n embed: { glyph: '\u25B2', color: '#1abc9c' },\n wildcard: { glyph: '\u2605', color: '#f1c40f' },\n};\n\nlet active = false;\n\ninterface TagResult {\n name: string;\n display: string;\n category: number | string;\n count: number;\n aliases?: string[];\n matchedVia?: 'alias' | 'translation';\n matchedAlias?: string;\n matchedTerm?: string;\n}\n\n// -- Utilities (ported from Enso) --\n\n/** Format post count as abbreviated string. */\nfunction formatCount(count: number): string {\n if (count >= 1_000_000) return `${(count / 1_000_000).toFixed(1)}M`;\n if (count >= 1_000) return `${Math.round(count / 1_000)}k`;\n return String(count);\n}\n\n/**\n * Estimate viewport Y of the bottom of the caret line using a persistent\n * offscreen mirror div. Styles and width are re-read from the textarea on\n * every call so resized textareas are handled correctly.\n */\nlet caretMirror: HTMLDivElement | null = null;\nlet caretMarker: HTMLSpanElement | null = null;\nconst MIRROR_PROPS = ['fontFamily', 'fontSize', 'fontWeight', 'fontStyle',\n 'lineHeight', 'letterSpacing', 'wordSpacing', 'textTransform',\n 'padding', 'border', 'boxSizing'];\n\nfunction caretViewportY(textarea: HTMLTextAreaElement): number {\n if (!caretMirror) {\n caretMirror = document.createElement('div');\n caretMirror.className = 'autocomplete-mirror';\n caretMirror.style.whiteSpace = 'pre-wrap';\n caretMirror.style.wordWrap = 'break-word';\n caretMirror.style.position = 'absolute';\n caretMirror.style.left = '-9999px';\n caretMirror.style.overflow = 'hidden';\n caretMarker = document.createElement('span');\n caretMarker.textContent = '\\u200b';\n document.body.appendChild(caretMirror);\n }\n const cs = getComputedStyle(textarea);\n for (const p of MIRROR_PROPS) caretMirror.style[p] = cs[p];\n caretMirror.style.width = `${textarea.offsetWidth}px`;\n caretMirror.textContent = textarea.value.substring(0, textarea.selectionStart);\n caretMirror.appendChild(caretMarker);\n const offset = caretMarker.offsetTop + caretMarker.offsetHeight;\n return textarea.getBoundingClientRect().top + offset - textarea.scrollTop;\n}\n\n// -- TagIndex --\n\nclass TagIndex {\n categories: Record;\n tags: TagResult[];\n aliasEntries: { name: string; display: string; tag: TagResult }[];\n translations: Map;\n tagByName: Map;\n translationEntries: { name: string; foreign: string; canonical: string }[];\n\n constructor(data: any) {\n this.categories = data.categories || {};\n // Tuples are [name, catId, count] or [name, catId, count, aliases]. Default `aliases = []`\n // keeps legacy 3-tuple dictionaries working unchanged.\n this.tags = data.tags.map(([name, category, count, aliases = []]) => ({\n name: name.toLowerCase(),\n display: name,\n category,\n count,\n aliases,\n }));\n this.tags.sort((a, b) => a.name.localeCompare(b.name));\n // Alias index parallel to this.tags. Each entry has .name so lowerBound works on both.\n this.aliasEntries = [];\n for (const tag of this.tags) {\n if (!tag.aliases || tag.aliases.length === 0) continue;\n for (const alias of tag.aliases) {\n this.aliasEntries.push({ name: alias.toLowerCase(), display: alias, tag });\n }\n }\n this.aliasEntries.sort((a, b) => a.name.localeCompare(b.name));\n // Optional translations companion: foreign_term -> canonical_tag_name.\n // tagByName is keyed on canonical lowercased name for O(1) resolution from a translation hit.\n this.translations = new Map();\n this.tagByName = new Map(this.tags.map((t) => [t.name, t]));\n if (data.translations && typeof data.translations === 'object') {\n for (const [foreign, canonical] of Object.entries(data.translations)) {\n if (typeof foreign !== 'string' || typeof canonical !== 'string') continue;\n this.translations.set(foreign.toLowerCase(), { canonical: canonical.toLowerCase(), foreign });\n }\n }\n // Sorted translation keys for prefix+substring scan via lowerBound.\n this.translationEntries = [...this.translations.entries()]\n .map(([foreignLower, { canonical, foreign }]) => ({ name: foreignLower, foreign, canonical }))\n .sort((a, b) => a.name.localeCompare(b.name));\n }\n\n /** Prefix search with binary search across canonical names and aliases. Returns matches sorted by count descending. */\n search(prefix: string, limit = 20): TagResult[] {\n const query = prefix.toLowerCase().replace(/ /g, '_');\n if (!query) return [];\n // Canonical prefix matches\n const matches = [];\n const start = lowerBound(this.tags, query);\n for (let i = start; i < this.tags.length && matches.length < limit * 5; i++) {\n if (!this.tags[i].name.startsWith(query)) break;\n matches.push(this.tags[i]);\n }\n // Alias prefix matches. Annotate so render can show \"canonical (alias)\".\n const aliasStart = lowerBound(this.aliasEntries, query);\n for (let i = aliasStart; i < this.aliasEntries.length && matches.length < limit * 10; i++) {\n const entry = this.aliasEntries[i];\n if (!entry.name.startsWith(query)) break;\n matches.push({ ...entry.tag, matchedVia: 'alias', matchedAlias: entry.display });\n }\n // Substring fallback (canonical + aliases) for 4+ char queries when prefix matching returned nothing.\n if (matches.length === 0 && query.length >= 4) {\n for (let i = 0; i < this.tags.length && matches.length < limit * 5; i++) {\n if (this.tags[i].name.includes(query)) matches.push(this.tags[i]);\n }\n for (let i = 0; i < this.aliasEntries.length && matches.length < limit * 10; i++) {\n const entry = this.aliasEntries[i];\n if (entry.name.includes(query)) matches.push({ ...entry.tag, matchedVia: 'alias', matchedAlias: entry.display });\n }\n }\n // Translation lookup. Prefix scan over foreign terms, resolving to canonical tags when present.\n if (this.translationEntries.length > 0) {\n const tStart = lowerBound(this.translationEntries, query);\n for (let i = tStart; i < this.translationEntries.length && matches.length < limit * 10; i++) {\n const entry = this.translationEntries[i];\n if (!entry.name.startsWith(query)) break;\n const canonicalTag = this.tagByName.get(entry.canonical);\n if (canonicalTag) matches.push({ ...canonicalTag, matchedVia: 'translation', matchedTerm: entry.foreign });\n }\n // Substring fallback over translation keys (CJK/short foreign terms benefit from 2-char threshold)\n if (query.length >= 2) {\n for (let i = 0; i < this.translationEntries.length && matches.length < limit * 10; i++) {\n const entry = this.translationEntries[i];\n if (entry.name.includes(query) && !entry.name.startsWith(query)) {\n const canonicalTag = this.tagByName.get(entry.canonical);\n if (canonicalTag) matches.push({ ...canonicalTag, matchedVia: 'translation', matchedTerm: entry.foreign });\n }\n }\n }\n }\n // Dedupe by canonical name; prefer canonical (no matchedVia) over alias/translation matches.\n const seen = new Map();\n for (const tag of matches) {\n const existing = seen.get(tag.name);\n if (!existing || (existing.matchedVia && !tag.matchedVia)) seen.set(tag.name, tag);\n }\n const result = [...seen.values()];\n result.sort((a, b) => b.count - a.count);\n return result.slice(0, limit);\n }\n}\n\n// -- Engine --\n\nconst engine = {\n indices: new Map(), // name -> TagIndex\n categoryColors: { ...CATEGORY_COLORS },\n categoryNames: { ...CATEGORY_NAMES },\n\n async loadEnabled() {\n const enabled = window.opts?.autocomplete_enabled || [];\n active = window.opts?.autocomplete_active || false;\n if (!active) {\n this.indices.clear();\n return;\n }\n const t0 = performance.now();\n const toLoad = enabled.filter((n) => !this.indices.has(n));\n const toRemove = [...this.indices.keys()].filter((n) => !enabled.includes(n));\n toRemove.forEach((n) => this.indices.delete(n));\n await Promise.all(toLoad.map(async (name) => {\n try {\n const resp = await fetch(`${window.api}/autocomplete/${name}`, { credentials: 'include' });\n if (!resp.ok) throw new Error(`${resp.status}`);\n const data = await resp.json();\n this.indices.set(name, new TagIndex(data));\n // Extract category colors from first loaded file\n if (data.categories) {\n Object.entries(data.categories).forEach(([id, cat]) => {\n const category: any = cat;\n if (category.color) this.categoryColors[id] = category.color;\n if (category.name) this.categoryNames[id] = category.name;\n });\n }\n const t1 = performance.now();\n log('autoComplete', { loaded: name, tags: data.tags?.length || 0, time: Math.round(t1 - t0) });\n timer(`autocompleteLoad:${name}`, t1 - t0);\n } catch (e) {\n log('autoComplete', { failed: name, error: e });\n }\n }));\n },\n\n searchAll(prefix, limit = 20) {\n if (this.indices.size === 0) return [];\n const all = [];\n this.indices.forEach((index) => {\n all.push(...index.search(prefix, limit));\n });\n // Deduplicate by name, keeping highest count\n const seen = new Map();\n all.forEach((tag) => {\n const existing = seen.get(tag.name);\n if (!existing || tag.count > existing.count) seen.set(tag.name, tag);\n });\n const results = [...seen.values()];\n results.sort((a, b) => b.count - a.count);\n return results.slice(0, limit);\n },\n};\n\n// -- Textarea integration --\n\n/**\n * Extract the current completion context at the cursor position.\n *\n * Returns { word, start, end, mode } where:\n * mode === 'tag': ordinary tag completion\n * mode === 'artist': leading `@` trigger; results filtered to artist category and inserted with `@` preserved\n * mode === 'lora': inside an unclosed ` 0) {\n const ch = value[wordStart - 1];\n if (ch === ',' || ch === '\\n') break;\n wordStart--;\n }\n // Skip leading whitespace between the separator and the typed word\n while (wordStart < selectionStart && value[wordStart] === ' ') wordStart++;\n const segment = value.slice(wordStart, selectionStart);\n // LoRA / extra-network trigger: unclosed `<` with `kind:` prefix\n const before = value.slice(0, selectionStart);\n const lastOpen = before.lastIndexOf('<');\n const lastClose = before.lastIndexOf('>');\n if (lastOpen > lastClose && lastOpen >= wordStart) {\n const inside = before.slice(lastOpen + 1); // e.g. \"lora:foo\", \"lora:\", \"lor\", or \"\"\n const colon = inside.indexOf(':');\n if (colon < 0) {\n // Bare `<` (or `` kind we ship,\n // so browse-all-loras; whatever the user typed gets overwritten on accept.\n return { word: '', start: lastOpen, end: selectionStart, mode: 'lora' };\n }\n if (inside.slice(0, colon).toLowerCase() === 'lora') {\n return { word: inside.slice(colon + 1), start: lastOpen, end: selectionStart, mode: 'lora' };\n }\n // Recognized colon but unknown kind, suppress completion.\n return null;\n }\n // Wildcard trigger: unclosed `__` that doesn't close within the current word\n if (segment.startsWith('__') && !segment.slice(2).includes('__')) {\n return { word: segment.slice(2), start: wordStart, end: selectionStart, mode: 'wildcard' };\n }\n // Artist trigger: leading `@` filters tag results to the artist category.\n if (segment.startsWith('@')) {\n return { word: segment.slice(1), start: wordStart, end: selectionStart, mode: 'artist' };\n }\n // Ordinary tag\n if (!segment) return null;\n return { word: segment, start: wordStart, end: selectionStart, mode: 'tag' };\n}\n\n// Booru schemas (danbooru/e621/sankaku) all assign category id 1 to artist tags.\nconst ARTIST_CATEGORY_ID = 1;\n\n/** Escape bare parens so tag names like `fate_(series)` aren't parsed as attention syntax. */\nfunction escapeParensForPrompt(name) {\n return name.replace(/([()])/g, '\\\\$1');\n}\n\n/**\n * Insert an extra-network reference at the current trigger position.\n * kind === 'lora': inserts `` over the range including the leading `<`\n * kind === 'wildcard': inserts `__name__` over the range including the leading `__`\n * Embeddings use insertTag directly so they go through comma-separator and paren-escape logic.\n */\nfunction insertExtraNetwork(textarea, item, kind) {\n const info = getCurrentWord(textarea);\n if (!info || info.mode !== kind) return;\n const { value } = textarea;\n const before = value.slice(0, info.start);\n const after = value.slice(info.end);\n let insertion;\n if (kind === 'lora') {\n insertion = ``;\n } else if (kind === 'wildcard') {\n insertion = `__${item.display ?? item.name}__`;\n } else {\n return;\n }\n textarea.value = before + insertion + after;\n const cursorPos = before.length + insertion.length;\n textarea.selectionStart = cursorPos;\n textarea.selectionEnd = cursorPos;\n if (typeof updateInput === 'function') updateInput(textarea);\n}\n\n/** Insert a tag at the current word position, replacing the typed prefix. */\nfunction insertTag(textarea, tagName, kind = 'tag') {\n const info = getCurrentWord(textarea);\n if (!info || (info.mode !== 'tag' && info.mode !== 'artist')) return;\n const { value } = textarea;\n const before = value.slice(0, info.start);\n const after = value.slice(info.end);\n // Build insertion: tag + separator. Parens in tag names are escaped so the prompt parser doesn't read them as attention syntax.\n const useComma = window.opts?.autocomplete_append_comma ?? true;\n const sep = useComma ? ',' : '';\n const needsSepBefore = before.length > 0 && before.trimEnd().length > 0 && !before.trimEnd().endsWith(',');\n const prefix = needsSepBefore ? `${sep} ` : '';\n let suffix = `${sep} `;\n if (after.length > 0 && after.trimStart().startsWith(',')) suffix = ' ';\n // Embedding names are file-system identifiers, so underscores must be preserved regardless of the user setting.\n // Tags and artists honor `autocomplete_keep_underscores`; default is to swap `_` for space.\n const keepUnderscores = window.opts?.autocomplete_keep_underscores ?? false;\n let body = tagName;\n if (kind !== 'embed' && !keepUnderscores) body = body.replace(/_/g, ' ');\n // Artist mode optionally keeps the `@` prefix (Anima syntax). The `@` is consumed for non-Anima models.\n if (info.mode === 'artist' && window.opts?.autocomplete_at_prefix_artist) body = `@${body}`;\n const insertion = `${prefix}${escapeParensForPrompt(body)}${suffix}`;\n textarea.value = before.trimEnd() + (before.trimEnd().length > 0 ? ' ' : '') + insertion + after.trimStart();\n // Position cursor after the inserted tag + separator\n const cursorPos = before.trimEnd().length + (before.trimEnd().length > 0 ? 1 : 0) + insertion.length;\n textarea.selectionStart = cursorPos;\n textarea.selectionEnd = cursorPos;\n // Sync with Gradio\n if (typeof updateInput === 'function') updateInput(textarea);\n}\n\n// -- Dropdown --\n\nconst dropdown = {\n el: null,\n listEl: null,\n selectedIndex: -1,\n results: [],\n textarea: null,\n query: '',\n visible: false,\n resizeObserver: null as ResizeObserver | null,\n\n init() {\n this.el = document.createElement('div');\n this.el.className = 'autocompleteResults';\n this.el.style.display = 'none';\n this.listEl = document.createElement('ul');\n this.listEl.className = 'autocompleteResultsList';\n this.el.appendChild(this.listEl);\n document.body.appendChild(this.el);\n this.el.addEventListener('mousedown', (e) => e.preventDefault()); // prevent blur on click\n this.el.addEventListener('click', (e) => {\n const li = e.target.closest('li');\n if (!li) return;\n const idx = [...this.listEl.children].indexOf(li);\n if (idx >= 0 && idx < this.results.length) {\n this.selectedIndex = idx;\n this.accept();\n }\n });\n this.resizeObserver = new ResizeObserver(() => {\n if (this.visible) this.position();\n });\n },\n\n show(results, textarea, query) {\n if (results.length === 0) { this.hide(); return; }\n // Switching textareas: clear prior state so a stale render can't leak across.\n if (this.textarea && this.textarea !== textarea) this.hide();\n if (this.textarea !== textarea) this.resizeObserver?.observe(textarea);\n this.results = results;\n this.textarea = textarea;\n this.query = query || '';\n this.selectedIndex = -1;\n this.render();\n this.position();\n this.el.style.display = '';\n this.visible = true;\n },\n\n hide() {\n if (this.textarea) this.resizeObserver?.unobserve(this.textarea);\n this.textarea = null;\n this.el.style.display = 'none';\n this.visible = false;\n this.results = [];\n this.selectedIndex = -1;\n },\n\n render() {\n const keepUnderscores = window.opts?.autocomplete_keep_underscores ?? false;\n const queryNorm = this.query.toLowerCase().replace(/ /g, '_');\n this.listEl.replaceChildren();\n this.results.forEach((tag, i) => {\n const li = document.createElement('li');\n if (i === this.selectedIndex) li.classList.add('selected');\n const dot = document.createElement('span');\n dot.className = 'autocomplete-category';\n const kind = tag.kind || 'tag';\n const kindStyle = KIND_GLYPHS[kind] || KIND_GLYPHS.tag;\n dot.style.color = kindStyle.color || engine.categoryColors[tag.category] || '#888';\n dot.textContent = kindStyle.glyph;\n dot.title = kind === 'tag' ? (engine.categoryNames[tag.category] || '') : kind;\n const name = document.createElement('span');\n name.className = 'autocomplete-tag';\n // Embeddings are file-name identifiers, so they always render as-is to match how they get inserted.\n const swapForKind = kind !== 'embed';\n const tagText = (swapForKind && !keepUnderscores) ? tag.display.replace(/_/g, ' ') : tag.display;\n const canonicalMatch = tag.name.indexOf(queryNorm);\n if (canonicalMatch >= 0 && queryNorm.length > 0) {\n const mark = document.createElement('mark');\n mark.textContent = tagText.slice(canonicalMatch, canonicalMatch + queryNorm.length);\n name.append(\n document.createTextNode(tagText.slice(0, canonicalMatch)),\n mark,\n document.createTextNode(tagText.slice(canonicalMatch + queryNorm.length)),\n );\n } else {\n name.textContent = tagText;\n }\n // Alias/translation-matched rows append \" (foreign)\" with the query fragment highlighted.\n let annotationTerm = null;\n if (tag.matchedVia === 'alias') annotationTerm = tag.matchedAlias;\n else if (tag.matchedVia === 'translation') annotationTerm = tag.matchedTerm;\n if (annotationTerm) {\n const annotationDisplay = (swapForKind && !keepUnderscores) ? annotationTerm.replace(/_/g, ' ') : annotationTerm;\n const annotationLower = annotationTerm.toLowerCase();\n const annotationMatch = annotationLower.indexOf(queryNorm);\n const prefix = tag.matchedVia === 'translation' ? ' \\u{1F310} ' : ' (';\n const suffix = tag.matchedVia === 'translation' ? '' : ')';\n name.appendChild(document.createTextNode(prefix));\n if (annotationMatch >= 0 && queryNorm.length > 0) {\n const mark = document.createElement('mark');\n mark.textContent = annotationDisplay.slice(annotationMatch, annotationMatch + queryNorm.length);\n name.append(\n document.createTextNode(annotationDisplay.slice(0, annotationMatch)),\n mark,\n document.createTextNode(annotationDisplay.slice(annotationMatch + queryNorm.length)),\n );\n } else {\n name.appendChild(document.createTextNode(annotationDisplay));\n }\n if (suffix) name.appendChild(document.createTextNode(suffix));\n }\n const count = document.createElement('span');\n count.className = 'autocomplete-count';\n count.textContent = tag.count > 0 ? formatCount(tag.count) : '';\n li.append(dot, name, count);\n li.addEventListener('mouseenter', () => {\n this.selectedIndex = i;\n this.updateSelection();\n });\n this.listEl.appendChild(li);\n });\n },\n\n position() {\n if (!this.textarea) return;\n const rect = this.textarea.getBoundingClientRect();\n // Position near the caret line instead of the textarea bottom\n const cursorBottom = caretViewportY(this.textarea);\n const anchorY = Math.max(rect.top, Math.min(cursorBottom, rect.bottom));\n const spaceBelow = window.innerHeight - anchorY;\n const dropHeight = Math.min(this.el.scrollHeight, 300);\n if (spaceBelow >= dropHeight || spaceBelow >= anchorY - rect.top) {\n this.el.style.top = `${anchorY + 2}px`;\n } else {\n this.el.style.top = `${anchorY - dropHeight - 2}px`;\n }\n this.el.style.left = `${rect.left}px`;\n this.el.style.width = `${rect.width}px`;\n },\n\n updateSelection() {\n [...this.listEl.children].forEach((li, i) => {\n li.classList.toggle('selected', i === this.selectedIndex);\n });\n const selected = this.listEl.children[this.selectedIndex];\n if (selected) selected.scrollIntoView({ block: 'nearest' });\n },\n\n navigate(dir) {\n if (this.results.length === 0) return;\n if (this.selectedIndex === -1) {\n this.selectedIndex = dir > 0 ? 0 : this.results.length - 1;\n } else {\n this.selectedIndex = (this.selectedIndex + dir + this.results.length) % this.results.length;\n }\n this.updateSelection();\n },\n\n accept() {\n if (this.selectedIndex < 0 || this.selectedIndex >= this.results.length) {\n // Tab with no selection: select first\n if (this.results.length > 0) {\n this.selectedIndex = 0;\n this.updateSelection();\n }\n return;\n }\n const result = this.results[this.selectedIndex];\n if (this.textarea) {\n if (result.kind === 'lora' || result.kind === 'wildcard') {\n insertExtraNetwork(this.textarea, result, result.kind);\n } else {\n // 'embed' kind and untagged tag results both go through insertTag (comma-aware, paren-escaped).\n insertTag(this.textarea, result.display ?? result.name, result.kind);\n }\n }\n this.hide();\n },\n};\n\n// -- Event handlers --\n\nlet debounceInput: ReturnType | undefined;\nlet debounceFocus: ReturnType | undefined;\n\nfunction onInput(textarea) {\n if (!active) return;\n // IME candidate window open: value isn't committed, and Enter would race with tag accept.\n if (textarea.dataset.imeActive === '1') return;\n const minChars = window.opts?.autocomplete_min_chars ?? 3;\n const info = getCurrentWord(textarea);\n if (!info) {\n dropdown.hide();\n return;\n }\n // Threshold by mode. Trigger characters carry their own signal so we can lower (or zero) the bar.\n let threshold = minChars;\n if (info.mode === 'lora' || info.mode === 'wildcard') threshold = 0;\n else if (info.mode === 'artist') threshold = 1;\n if (info.word.length < threshold) {\n dropdown.hide();\n return;\n }\n clearTimeout(debounceInput);\n debounceInput = setTimeout(() => {\n let results;\n if (info.mode === 'lora') {\n results = xnEngine.searchLoras(info.word);\n } else if (info.mode === 'wildcard') {\n results = xnEngine.searchWildcards(info.word);\n } else if (info.mode === 'artist') {\n // `@` trigger: tag-search filtered to the artist category. The category-1 color carries the visual cue.\n results = engine.searchAll(info.word).filter((t) => t.category === ARTIST_CATEGORY_ID);\n } else {\n const tagResults = engine.searchAll(info.word);\n const embedResults = xnEngine.searchEmbeddings(info.word);\n // Embeddings fold into tag-mode results (a1111 tagcomplete parity).\n results = [...embedResults, ...tagResults];\n }\n dropdown.show(results, textarea, info.word);\n }, 150);\n}\n\nfunction onKeyDown(e) {\n if (!dropdown.visible) return;\n if (e.isComposing) return; // IME candidate selection, let the browser commit the candidate\n // Modifier + nav/accept keys belong to other handlers (editAttention.js on Ctrl+Arrow,\n // generate hotkey on Ctrl+Enter). Let them through even with the dropdown open.\n const hasModifier = e.ctrlKey || e.metaKey || e.altKey;\n switch (e.key) {\n case 'ArrowDown':\n if (hasModifier) return;\n e.preventDefault();\n e.stopPropagation();\n dropdown.navigate(1);\n break;\n case 'ArrowUp':\n if (hasModifier) return;\n e.preventDefault();\n e.stopPropagation();\n dropdown.navigate(-1);\n break;\n case 'Enter':\n if (hasModifier) return;\n if (dropdown.selectedIndex >= 0) {\n e.preventDefault();\n e.stopPropagation();\n dropdown.accept();\n }\n break;\n case 'Tab':\n if (hasModifier) return;\n e.preventDefault();\n e.stopPropagation();\n dropdown.accept();\n break;\n case 'Escape':\n e.preventDefault();\n e.stopPropagation();\n dropdown.hide();\n break;\n default:\n break;\n }\n}\n\n/** Attach autocomplete to a single textarea. */\nfunction attachAutocomplete(textarea) {\n textarea.addEventListener('input', () => onInput(textarea));\n textarea.addEventListener('keydown', onKeyDown);\n textarea.addEventListener('compositionstart', () => { textarea.dataset.imeActive = '1'; });\n textarea.addEventListener('compositionend', () => { delete textarea.dataset.imeActive; });\n textarea.addEventListener('focusin', () => {\n if (dropdown.visible && dropdown.textarea && dropdown.textarea !== textarea) dropdown.hide();\n // Cancel any pending hide from a recent blur so refocusing within 200ms doesn't close the dropdown.\n clearTimeout(debounceFocus);\n debounceFocus = undefined;\n // Re-fire input handling so a partial tag at the cursor reopens the dropdown.\n onInput(textarea);\n });\n textarea.addEventListener('focusout', () => {\n // Cancel any in-flight debounced dropdown.show; otherwise it fires against a stale textarea.\n clearTimeout(debounceInput);\n debounceFocus = setTimeout(() => dropdown.hide(), 200);\n });\n}\n\n// -- Prompt textarea IDs --\n\nconst PROMPT_IDS = [\n 'txt2img_prompt', 'txt2img_neg_prompt',\n 'img2img_prompt', 'img2img_neg_prompt',\n 'control_prompt', 'control_neg_prompt',\n 'video_prompt', 'video_neg_prompt',\n];\n\n// -- Active button --\n\nfunction patchActiveButton() {\n const buttons = [...gradioApp().querySelectorAll('.autocomplete-active')];\n active = window.opts?.autocomplete_active || false;\n buttons.forEach((btn) => {\n btn.classList.toggle('autocomplete-active', active);\n btn.classList.toggle('autocomplete-inactive', !active);\n btn.parentElement.onclick = () => {\n active = !active;\n window.opts.autocomplete_active = !active;\n btn.classList.toggle('autocomplete-active', active);\n btn.classList.toggle('autocomplete-inactive', !active);\n };\n });\n}\n\n// -- Config bridge --\n\n/** Monkey-patch script config bridge textboxes to push autocomplete config changes to window.opts immediately. */\nlet bridgeWarnedMissingDescriptor = false;\nfunction patchConfigBridge() {\n const proto = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, 'value');\n if (!proto?.get || !proto?.set) {\n if (!bridgeWarnedMissingDescriptor) {\n log('autoComplete', { bridge: 'skipped', reason: 'HTMLTextAreaElement.prototype.value descriptor missing' });\n bridgeWarnedMissingDescriptor = true;\n }\n return;\n }\n const elements = gradioApp().querySelectorAll('[id$=\"_tag_autocomplete_config_json\"]');\n for (const el of elements) {\n const textarea = el.querySelector('textarea');\n if (!textarea || textarea.acBridgePatched) continue;\n textarea.acBridgePatched = true;\n Object.defineProperty(textarea, 'value', {\n set(newValue) {\n const oldValue = proto.get.call(textarea);\n proto.set.call(textarea, newValue);\n if (oldValue !== newValue && newValue) {\n try {\n const cfg = JSON.parse(newValue);\n for (const [key, val] of Object.entries(cfg)) window.opts[key] = val;\n executeCallbacks(optionsChangedCallbacks);\n } catch { /* ignore parse errors; the bridge is best-effort */ }\n }\n },\n get() { return proto.get.call(textarea); },\n });\n }\n}\n\n// -- Initialization --\n\nexport async function initAutocomplete() {\n const t0 = performance.now();\n const enabled = window.opts?.autocomplete_enabled || [];\n active = window.opts?.autocomplete_active || false;\n log('autoComplete', { active, enabled });\n // Inject styles (CSS files in javascript/ are not auto-loaded)\n const style = document.createElement('style');\n style.textContent = `\n .autocompleteResults { position: fixed; z-index: 9999; max-height: 300px; overflow-y: auto;\n background: var(--sd-main-background-color, var(--background-fill-primary, #1f2937));\n border: 1px solid var(--sd-input-border-color, var(--border-color-primary, #374151));\n border-radius: var(--sd-border-radius, 6px); box-shadow: 0 4px 16px rgba(0,0,0,0.4);\n font-size: 13px; scrollbar-width: thin; color: var(--body-text-color-subdued); }\n .autocompleteResultsList { list-style: none; margin: 0; padding: 4px 0; }\n .autocompleteResultsList > li { display: flex; align-items: center; padding: 6px 12px; cursor: pointer;\n gap: 8px; line-height: 1.4; transition: background 0.1s ease; border-bottom: 1px solid rgba(255,255,255,0.03); }\n .autocompleteResultsList > li:last-child { border-bottom: none; }\n .autocompleteResultsList > li:hover { background: var(--sd-panel-background-color, var(--input-background-fill-focus, #374151)); }\n .autocompleteResultsList > li.selected { background: var(--sd-main-accent-color, var(--button-primary-background-fill, #4b5563)); }\n .autocomplete-category { font-size: 10px; flex-shrink: 0; width: 10px; text-align: center; cursor: help; }\n .autocomplete-tag { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n .autocomplete-tag mark { background: transparent; color: inherit; font-weight: 700; }\n .autocomplete-count { font-size: 0.75em; opacity: 0.45; flex-shrink: 0; font-variant-numeric: tabular-nums;\n background: rgba(255,255,255,0.06); padding: 1px 6px; border-radius: 8px; min-width: 28px; text-align: right; }\n `;\n document.head.appendChild(style);\n dropdown.init();\n await engine.loadEnabled();\n xnEngine.loadAll();\n // Attach to all prompt textareas; even if no dictionaries loaded yet, they may be enabled later via script UI\n let attached = 0;\n PROMPT_IDS.forEach((id) => {\n const textarea = gradioApp().querySelector(`#${id} > label > textarea`);\n if (textarea) {\n attachAutocomplete(textarea);\n attached++;\n }\n });\n // Reload when settings change\n\n async function optionsChangedCallback() {\n const newActive = window.opts?.autocomplete_active || false;\n const newEnabled = window.opts?.autocomplete_enabled || [];\n const currentKeys = [...engine.indices.keys()].sort().join(',');\n const newKeys = [...newEnabled].sort().join(',');\n if ((currentKeys !== newKeys) || (active !== newActive)) {\n log('autoComplete', { reload: newEnabled });\n await engine.loadEnabled();\n active = newActive;\n patchActiveButton();\n }\n xnEngine.loadAll();\n }\n onOptionsChanged(optionsChangedCallback);\n // Watch for config updates from the script UI bridge\n patchConfigBridge();\n patchActiveButton();\n onAfterUiUpdate(patchConfigBridge);\n const t1 = performance.now();\n log('autoComplete', { attached, dicts: engine.indices.size, time: Math.round(t1 - t0) });\n timer('autocompleteInit', t1 - t0);\n}\n", "/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { log } from './logger';\nimport { gradioApp } from './script';\nimport { timer } from './timers';\n\nlet hintsObserver: MutationObserver | null = null;\nconst allLocales = ['en', 'tb', 'nb', 'hr', 'es', 'it', 'fr', 'de', 'pt', 'ru', 'zh', 'ja', 'ko', 'hi', 'ar', 'bn', 'ur', 'id', 'vi', 'tr', 'sr', 'po', 'he', 'xx', 'qq', 'tlh'];\nconst localeData = {\n prev: null,\n locale: null,\n data: [],\n timeout: null,\n finished: false,\n initial: true,\n type: 2,\n hint: null,\n btn: null,\n expandTimeout: undefined, // Property for expansion timeout\n currentElement: null, // Track current element for expansion\n};\nlet localeTimeout: ReturnType | undefined;\nconst isTouchDevice = 'ontouchstart' in window;\n\nasync function cycleLocale() {\n clearTimeout(localeTimeout);\n localeTimeout = setTimeout(() => {\n log('cycleLocale', localeData.prev, localeData.locale);\n const index = allLocales.indexOf(localeData.prev);\n localeData.locale = allLocales[(index + 1) % allLocales.length];\n localeData.btn.innerText = localeData.locale;\n // localeData.btn.style.backgroundColor = localeData.locale !== 'en' ? 'var(--primary-500)' : '';\n localeData.finished = false;\n localeData.data = [];\n localeData.prev = localeData.locale;\n window.opts.ui_locale = localeData.locale;\n setHints();\n }, 250);\n}\n\nasync function resetLocale() {\n clearTimeout(localeTimeout); // Prevent the single click logic\n localeData.locale = 'en';\n log('resetLocale', localeData.locale);\n const index = allLocales.indexOf(localeData.locale);\n localeData.locale = allLocales[(index) % allLocales.length];\n localeData.btn.innerText = localeData.locale;\n localeData.finished = false;\n localeData.data = [];\n window.opts.ui_locale = localeData.locale;\n setHints();\n}\n\nasync function tooltipCreate() {\n localeData.hint = document.createElement('div');\n localeData.hint.className = 'tooltip';\n localeData.hint.id = 'tooltip-container';\n localeData.hint.innerText = 'this is a hint';\n gradioApp().appendChild(localeData.hint);\n localeData.btn = gradioApp().getElementById('locale-container');\n if (!localeData.btn) {\n localeData.btn = document.createElement('div');\n localeData.btn.className = 'locale';\n localeData.btn.id = 'locale-container';\n gradioApp().appendChild(localeData.btn);\n }\n localeData.btn.innerText = localeData.locale;\n localeData.btn.ondblclick = resetLocale;\n localeData.btn.onclick = cycleLocale;\n if (window.opts.tooltips === 'None') localeData.type = 0;\n if (window.opts.tooltips === 'Browser default') localeData.type = 1;\n if (window.opts.tooltips === 'UI tooltips') localeData.type = 2;\n\n if (localeData.type === 2) { // setup event delegation for tooltips instead of individual listeners\n if (isTouchDevice) {\n gradioApp().addEventListener('touchstart', tooltipShowDelegated);\n gradioApp().addEventListener('touchend', tooltipHideDelegated);\n }\n gradioApp().addEventListener('pointerover', tooltipShowDelegated);\n gradioApp().addEventListener('pointerout', tooltipHideDelegated);\n }\n if (!hintsObserver) initializeDOMObserver();\n}\n\nasync function expandTooltip(element, longHint) {\n if (localeData.currentElement === element && localeData.hint.classList.contains('tooltip-show')) {\n const ring = localeData.hint.querySelector('.tooltip-progress-ring');\n if (ring) ring.style.opacity = '0';\n localeData.hint.classList.add('tooltip-expanded');\n setTimeout(() => {\n const longContent = localeData.hint.querySelector('.long-content');\n if (longContent) longContent.classList.add('show');\n }, 100);\n }\n}\n\nasync function tooltipShowDelegated(e) { // use event delegation to handle dynamically created elements\n if (e.target.dataset && e.target.dataset.hint) tooltipShow(e);\n}\n\nasync function tooltipHideDelegated(e) {\n if (e.target.dataset && e.target.dataset.hint) tooltipHide(e);\n}\n\nasync function tooltipShow(e) {\n if (localeData.expandTimeout) { // clear any existing expansion timeout\n clearTimeout(localeData.expandTimeout);\n localeData.expandTimeout = undefined;\n }\n\n localeData.hint.classList.remove('tooltip-expanded'); // remove expanded class and reset current element\n localeData.currentElement = e.target;\n\n if (e.target.dataset.hint) {\n const progressRing = ` // create progress ring SVG\n
\n \n \n \n \n
\n `;\n // set up the complete content structure from the start\n let content = `\n
\n ${e.target.textContent}\n ${e.target.dataset.longHint ? progressRing : ''}\n
\n
\n ${e.target.dataset.hint}\n `;\n if (e.target.dataset.longHint) content += `
${e.target.dataset.longHint}
`; // add long content if available, but keep it hidden\n if (e.target.dataset.reload) { // add reload notice if needed\n const reloadType = e.target.dataset.reload;\n let reloadText = '';\n if (reloadType === 'model') reloadText = 'Requires model reload';\n else if (reloadType === 'server') reloadText = 'Requires server restart';\n if (reloadText) {\n content += `\n
\n
\n ${reloadText}\n
\n `;\n }\n }\n\n localeData.hint.innerHTML = content;\n localeData.hint.classList.add('tooltip-show');\n\n if (e.clientX > window.innerWidth / 2) localeData.hint.classList.add('tooltip-left');\n else localeData.hint.classList.remove('tooltip-left');\n\n if (e.target.dataset.longHint) { // set up expansion timer if long hint is available\n const ring = localeData.hint.querySelector('.tooltip-progress-ring'); // start progress ring animation\n const ringProgress = localeData.hint.querySelector('.ring-progress');\n if (ring && ringProgress) {\n setTimeout(() => {\n ring.classList.add('active');\n ringProgress.classList.add('animate');\n }, 100);\n }\n localeData.expandTimeout = setTimeout(() => expandTooltip(e.target, e.target.dataset.longHint), 3000);\n }\n }\n}\n\nasync function tooltipHide(e) {\n if (localeData.expandTimeout) {\n clearTimeout(localeData.expandTimeout);\n localeData.expandTimeout = undefined;\n }\n localeData.hint.classList.remove('tooltip-show', 'tooltip-expanded');\n localeData.currentElement = null;\n}\n\nasync function replaceButtonText(el) {\n // https://www.nerdfonts.com/cheat-sheet\n // use unicode of icon with format nf-md-_circle\n const textIcons = {\n Generate: '\\uf144',\n Enqueue: '\\udb81\\udc17',\n Stop: '\\udb81\\ude66',\n Skip: '\\udb81\\ude61',\n Pause: '\\udb80\\udfe5',\n Restore: '\\udb82\\udd9b',\n Clear: '\\udb80\\udd59',\n Networks: '\\uf261',\n };\n if (textIcons[el.innerText]) {\n el.classList.add('button-icon');\n el.innerText = textIcons[el.innerText];\n }\n}\n\nasync function getLocaleData(desiredLocale = null) {\n if (desiredLocale) desiredLocale = desiredLocale.split(':')[0];\n if (desiredLocale === 'Auto') {\n try {\n localeData.locale = navigator.languages && navigator.languages.length ? navigator.languages[0] : navigator.language;\n localeData.locale = localeData.locale.split('-')[0];\n localeData.prev = localeData.locale;\n } catch (e) {\n localeData.locale = 'en';\n log('getLocale', e);\n }\n } else {\n localeData.locale = desiredLocale || 'en';\n localeData.prev = localeData.locale;\n }\n log('getLocale', { lang: desiredLocale, locale: localeData.locale });\n // primary\n let json: any = {};\n try {\n let res = await fetch(`${window.subpath}/file=ui/locale/locale_${localeData.locale}.json`);\n if (!res || !res.ok) {\n localeData.locale = 'en';\n res = await fetch(`${window.subpath}/file=ui/locale/locale_${localeData.locale}.json`);\n }\n json = await res.json();\n } catch { /**/ }\n\n try {\n const res = await fetch(`${window.subpath}/file=ui/locale/override_${localeData.locale}.json`);\n if (res && res.ok) json.override = await res.json();\n } catch { /**/ }\n\n return json;\n}\n\nasync function replaceTextContent(el, text) {\n if (el.children.length === 1 && el.firstElementChild.classList.contains('mask-icon')) return;\n if (el.querySelector('span')) el = el.querySelector('span');\n if (el.querySelector('div')) el = el.querySelector('div');\n if (el.classList.contains('mask-icon')) return; // skip icon buttons\n if (el.dataset.selector) { // replace on rehosted child if exists\n el = el.firstElementChild || el.querySelector(el.dataset.selector);\n replaceTextContent(el, text);\n return;\n }\n el.textContent = text;\n}\n\nasync function setHint(el, entry) {\n if (localeData.type === 1) {\n el.title = entry.hint;\n } else if (localeData.type === 2) {\n el.dataset.hint = entry.hint;\n if (entry.longHint && entry.longHint.length > 0) el.dataset.longHint = entry.longHint;\n if (entry.reload && entry.reload.length > 0) el.dataset.reload = entry.reload;\n } else {\n // tooltips disabled\n }\n}\n\nfunction createLocaleJSON() {\n const excludeText = ['\u25BC']; // add any common non-label elements to exclude\n const ecxcludeIds = ['logo_nav']; // add any specific element IDs to exclude\n const elements = [...new Set([\n ...Array.from(gradioApp().querySelectorAll('button')),\n ...Array.from(gradioApp().querySelectorAll('h1')),\n ...Array.from(gradioApp().querySelectorAll('h2')),\n ...Array.from(gradioApp().querySelectorAll('h3')),\n ...Array.from(gradioApp().querySelectorAll('.hint')),\n ...Array.from(gradioApp().querySelectorAll('label > span')),\n ...Array.from(gradioApp().querySelectorAll('.label-wrap > span')),\n ...Array.from(gradioApp().querySelectorAll('span[data-testid=\"block-info\"]')),\n ])];\n const json = {};\n const allSeen = {};\n for (const el of elements) {\n const label = el.textContent.trim();\n if (!label || label.length < 1 || label.length > 1024) continue; // likely not UI element\n if (excludeText.includes(label)) continue; // skip common non-label elements\n if (ecxcludeIds.includes(el.id)) continue; // skip specific element IDs\n\n let hint = el.dataset.hint || '';\n if (hint.toLowerCase() === label.toLowerCase()) hint = ''; // skip if hint is same as label\n if (Object.keys(allSeen).includes(label.toLowerCase())) {\n if (hint.length === 0 || allSeen[label.toLowerCase()] === hint) continue; // seen this label and hint is empty or same as before\n hint = allSeen[label.toLowerCase()]; // use existing hint for this label\n }\n allSeen[label.toLowerCase()] = hint; // track seen labels\n\n let section = label[0].toLowerCase();\n if (section >= '0' && section <= '9') section = '0';\n if ((section < 'a' || section > 'z') && section !== '0') section = '_';\n\n let ui = el.closest('.group-extension')\n || el.closest('.group-scripts')\n || el.closest('.main-tab')\n || el.closest('.settings_section')\n || el.closest('.tabitem')\n || 'other';\n ui = ui?.id?.replace('_tabitem_parent', '').replace('_section_row', '');\n if (ui?.includes('_script')) ui = ui?.split('_').slice(1).join('_').split(':')[0];\n\n if (!json[section]) json[section] = [];\n const entry = { id: el.id || '', label, localized: '', hint, ui };\n json[section].push(entry); // add new entry\n }\n const sorted = Object.keys(json).sort().reduce((obj, key) => {\n obj[key] = json[key];\n return obj;\n }, {});\n console.log('localeJSON', sorted);\n}\n\nexport async function setHints() {\n let json: any;\n let overrideData: any[] = [];\n if (localeData.finished) return;\n if (Object.keys(opts).length === 0) return;\n const elements = [...new Set([\n ...Array.from(gradioApp().querySelectorAll('button')),\n ...Array.from(gradioApp().querySelectorAll('h2')),\n ...Array.from(gradioApp().querySelectorAll('label > span')),\n ...Array.from(gradioApp().querySelectorAll('.label-wrap > span')),\n ...Array.from(gradioApp().querySelectorAll('span[data-testid=\"block-info\"]')), // radio/checkboxgroup titles render as a bare block-info span, not under a label\n ])];\n if (elements.length === 0) return;\n if (localeData.data.length === 0) {\n json = await getLocaleData(window.opts.ui_locale);\n overrideData = Object.values(json.override || {}).flat().filter((e: any) => e.hint.length > 0);\n const jsonData = Object.values(json).flat().filter((e: any) => e.hint.length > 0);\n localeData.data = [...overrideData, ...jsonData];\n }\n if (!localeData.hint) tooltipCreate();\n let localized = 0;\n let hints = 0;\n const t0 = performance.now();\n\n for (const el of elements) {\n // localize elements text\n let found;\n if (el.id) found = localeData.data.find((l) => l.id && (l.id === el.id || el.id.endsWith(l.id))); // prefer id match for disambiguation\n if (!found) {\n if (el.dataset.original) found = localeData.data.find((l) => l.label.toLowerCase().trim() === el.dataset.original.toLowerCase().trim());\n else found = localeData.data.find((l) => l.label.toLowerCase().trim() === el.textContent.toLowerCase().trim());\n }\n if (found?.localized?.length > 0) {\n if (!el.dataset.original) el.dataset.original = el.textContent;\n replaceTextContent(el, found.localized);\n localized++;\n } else if (found?.label && !localeData.initial && (localeData.locale === 'en')) { // reset to english\n replaceTextContent(el, found.label);\n }\n // set hints\n if (found?.hint?.length > 0) {\n hints++;\n setHint(el, found);\n }\n }\n localeData.finished = true;\n localeData.initial = false;\n const t1 = performance.now();\n timer('setHints', t1 - t0);\n // localeData.btn.style.backgroundColor = localeData.locale !== 'en' ? 'var(--primary-500)' : '';\n log('touchDevice', isTouchDevice);\n log('setHints', { type: localeData.type, locale: localeData.locale, elements: elements.length, localized, hints, data: localeData.data.length, override: overrideData.length, time: Math.round(t1 - t0) });\n // sortUIElements();\n}\n\n// Apply hints to a single element immediately\nasync function applyHintToElement(el) {\n if (!localeData.data || localeData.data.length === 0) return;\n // if (!el.textContent) return;\n\n // check if element matches our selector criteria\n const isValidElement = el.tagName === 'BUTTON'\n || el.tagName === 'H2'\n || el.classList.contains('hint')\n || (el.tagName === 'SPAN' && (el.parentElement?.tagName === 'LABEL' || el.parentElement?.classList.contains('label-wrap') || el.dataset.testid === 'block-info'));\n if (!isValidElement) return;\n\n let found; // find matching hint data - prefer id match for disambiguation\n if (el.id) found = localeData.data.find((l) => l.id && (l.id === el.id || el.id.endsWith(l.id)));\n if (!found) {\n if (el.dataset.original) found = localeData.data.find((l) => l.label.toLowerCase().trim() === el.dataset.original.toLowerCase().trim());\n else found = localeData.data.find((l) => l.label.toLowerCase().trim() === el.textContent.toLowerCase().trim());\n }\n\n if (el.textContent && el.textContent.length > 0 && found?.localized?.length > 0) { // apply localization if found\n if (!el.dataset.original) el.dataset.original = el.textContent;\n replaceTextContent(el, found.localized);\n }\n\n if (found?.hint?.length > 0) setHint(el, found); // apply hint if found\n}\n\n// Initialize MutationObserver for immediate hint application\nfunction initializeDOMObserver() {\n if (hintsObserver) hintsObserver.disconnect();\n\n hintsObserver = new MutationObserver((mutations) => {\n // Process added nodes immediately\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n for (const node of mutation.addedNodes) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n // Apply hints to the node itself\n applyHintToElement(node);\n\n // Apply hints to all relevant children\n const elements = [\n ...Array.from(node.querySelectorAll('button')),\n ...Array.from(gradioApp().querySelectorAll('h1')),\n ...Array.from(gradioApp().querySelectorAll('h2')),\n ...Array.from(gradioApp().querySelectorAll('h3')),\n ...Array.from(gradioApp().querySelectorAll('.hint')),\n ...Array.from(node.querySelectorAll('label > span')),\n ...Array.from(node.querySelectorAll('.label-wrap > span')),\n ...Array.from(node.querySelectorAll('span[data-testid=\"block-info\"]')),\n ];\n\n // Include the node itself if it matches\n if (node.matches && (\n node.matches('button')\n || node.matches('h1')\n || node.matches('h2')\n || node.matches('h3')\n || node.matches('label > span')\n || node.matches('.hint')\n || node.matches('.label-wrap > span')\n || node.matches('span[data-testid=\"block-info\"]')\n )) {\n elements.push(node);\n }\n\n // Apply hints immediately to all found elements\n elements.forEach((el) => applyHintToElement(el));\n }\n }\n }\n }\n });\n\n // Start observing the entire gradio app for changes\n const targetNode = gradioApp();\n if (targetNode) {\n hintsObserver.observe(targetNode, {\n childList: true,\n subtree: true,\n });\n }\n}\n\nexport function disconnectHintsObserver() {\n if (hintsObserver) {\n hintsObserver.disconnect();\n hintsObserver = null;\n }\n}\n\n// Export for external use if needed\nconst forceReapplyHints = () => setHints();\n", "import { gradioApp, getUICurrentTabContent } from './script';\nimport { log } from './logger';\nimport { authFetch } from './authWrap';\nimport { quickApplyStyle, quickSaveStyle } from './extraNetworks';\n\ninterface ContextMenuItem {\n id: string;\n name: string;\n func: () => void;\n primary: boolean;\n}\n\nconst contextMenuInit = () => {\n let eventListenerApplied = false;\n const menuSpecs = new Map();\n\n const uid = () => Date.now().toString(36) + Math.random().toString(36).substring(2);\n\n function showContextMenu(event: MouseEvent, _element: Element, menuEntries: ContextMenuItem[]): void {\n const posx = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n const posy = event.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n const oldMenu = gradioApp().querySelector('#context-menu');\n if (oldMenu) oldMenu.remove();\n const contextMenu = document.createElement('nav');\n contextMenu.id = 'context-menu';\n contextMenu.style.top = `${posy}px`;\n contextMenu.style.left = `${posx}px`;\n const contextMenuList = document.createElement('ul');\n contextMenuList.className = 'context-menu-items';\n contextMenu.append(contextMenuList);\n menuEntries.forEach((entry) => {\n const contextMenuEntry = document.createElement('a');\n contextMenuEntry.innerHTML = entry.name;\n contextMenuEntry.addEventListener('click', () => entry.func());\n contextMenuList.append(contextMenuEntry);\n });\n gradioApp().appendChild(contextMenu);\n const menuWidth = contextMenu.offsetWidth + 4;\n const menuHeight = contextMenu.offsetHeight + 4;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n if ((windowWidth - posx) < menuWidth) contextMenu.style.left = `${windowWidth - menuWidth}px`;\n if ((windowHeight - posy) < menuHeight) contextMenu.style.top = `${windowHeight - menuHeight}px`;\n }\n\n function appendContextMenuOption(targetElementSelector: string, entryName: string, entryFunction: () => void, primary = false): string {\n let currentItems = menuSpecs.get(targetElementSelector);\n if (!currentItems) {\n currentItems = [];\n menuSpecs.set(targetElementSelector, currentItems);\n }\n const newItem = {\n id: `${targetElementSelector}_${uid()}`,\n name: entryName,\n func: entryFunction,\n primary,\n // isNew: true,\n };\n currentItems.push(newItem);\n return newItem.id;\n }\n\n function removeContextMenuOption(id: string): void {\n menuSpecs.forEach((v, k) => {\n let index = -1;\n v.forEach((e, ei) => {\n if (e.id === id) { index = ei; }\n });\n if (index >= 0) v.splice(index, 1);\n });\n }\n\n window.appendContextMenuOption = appendContextMenuOption;\n window.removeContextMenuOption = removeContextMenuOption;\n\n async function addContextMenuEventListener(): Promise {\n if (eventListenerApplied) return;\n log('initContextMenu');\n gradioApp().addEventListener('click', (e: Event) => {\n const mouseEvent = e as MouseEvent;\n if (!mouseEvent.isTrusted) return;\n const oldMenu = gradioApp().querySelector('#context-menu');\n if (oldMenu) oldMenu.remove();\n menuSpecs.forEach((v, k) => {\n const items = v.filter((item) => item.primary);\n const target = mouseEvent.target as Element | null;\n if (!target) return;\n const matched = target.closest(k);\n if (items.length > 0 && matched) {\n showContextMenu(mouseEvent, matched, items);\n mouseEvent.preventDefault();\n }\n });\n });\n gradioApp().addEventListener('contextmenu', (e: Event) => {\n const mouseEvent = e as MouseEvent;\n const oldMenu = gradioApp().querySelector('#context-menu');\n if (oldMenu) oldMenu.remove();\n menuSpecs.forEach((v, k) => {\n const items = v.filter((item) => !item.primary);\n const target = mouseEvent.target as Element | null;\n if (!target) return;\n const matched = target.closest(k);\n if (items.length > 0 && matched) {\n showContextMenu(mouseEvent, matched, items);\n mouseEvent.preventDefault();\n }\n });\n });\n eventListenerApplied = true;\n }\n return [appendContextMenuOption, removeContextMenuOption, addContextMenuEventListener];\n};\n\nconst initContextResponse = contextMenuInit();\nconst appendContextMenuOption = initContextResponse[0];\nconst removeContextMenuOption = initContextResponse[1];\nconst addContextMenuEventListener = initContextResponse[2] as () => void;\n\nlet generateOnRepeatInterval: ReturnType | null = null;\n\nexport const generateForever = (genbuttonid: string): void => {\n if (generateOnRepeatInterval) {\n log('generateForever: cancel');\n clearInterval(generateOnRepeatInterval);\n generateOnRepeatInterval = null;\n } else {\n const genbutton = gradioApp().querySelector(genbuttonid);\n if (!(genbutton instanceof HTMLElement)) return;\n const isBusy = () => {\n let busy = document.getElementById('progressbar')?.style.display === 'block';\n if (!busy) {\n // Also check in Modern UI\n const outerButton = genbutton.parentElement.closest('button');\n busy = outerButton?.classList.contains('generate') && outerButton?.classList.contains('active');\n }\n return busy;\n };\n log('generateForever: start');\n if (!isBusy()) genbutton.click();\n generateOnRepeatInterval = setInterval(() => {\n if (!isBusy()) genbutton.click();\n }, 500);\n }\n};\nwindow.generateForever = generateForever;\n\nconst reprocessClick = (tabId: string, state: string): void => {\n const btn = document.getElementById(`${tabId}_${state}`);\n window.submit_state = state;\n if (btn) btn.click();\n};\n\nconst getStatus = async () => {\n const headers = new Headers();\n const body = JSON.stringify({ id_task: -1, id_live_preview: false });\n headers.set('Content-Type', 'application/json');\n const tab = getUICurrentTabContent()?.id.replace('tab_', '') || '';\n const el = gradioApp().querySelector(`#html_log_${tab} .performance p`);\n\n let res;\n let data;\n res = await fetch('./internal/progress', { method: 'POST', headers, body });\n if (res?.ok) {\n data = await res.json();\n log('progressInternal:', data);\n if (el) el.innerText += `\\nProgress internal:\\n${JSON.stringify(data, null, 2)}`;\n }\n res = await authFetch('./sdapi/v1/progress?skip_current_image=true', { method: 'GET', headers });\n if (res?.ok) {\n data = await res.json();\n log('progressAPI:', data);\n if (el) el.innerText += `\\nProgress API:\\n${JSON.stringify(data, null, 2)}`;\n }\n};\n\nexport async function initContextMenu() {\n for (const tab of ['txt2img', 'img2img', 'control', 'video']) {\n appendContextMenuOption(`#${tab}_generate`, 'Get server status', getStatus);\n appendContextMenuOption(`#${tab}_generate`, 'Copy prompt to clipboard', () => navigator.clipboard.writeText(document.querySelector(`#${tab}_prompt > label > textarea`).value));\n appendContextMenuOption(`#${tab}_generate`, 'Generate forever', () => generateForever(`#${tab}_generate`));\n appendContextMenuOption(`#${tab}_generate`, 'Apply selected style', quickApplyStyle);\n appendContextMenuOption(`#${tab}_generate`, 'Quick save style', quickSaveStyle);\n appendContextMenuOption(`#${tab}_reprocess`, 'Decode full quality', () => reprocessClick(tab, 'reprocess_decode'), true);\n appendContextMenuOption(`#${tab}_reprocess`, 'Refine & HiRes pass', () => reprocessClick(tab, 'reprocess_refine'), true);\n appendContextMenuOption(`#${tab}_reprocess`, 'Detailer pass', () => reprocessClick(tab, 'reprocess_detail'), true);\n }\n // Right-click send-to-control button for prompt/params-only transfer.\n for (const tab of ['gallery', 'txt2img', 'img2img', 'extras']) {\n appendContextMenuOption(`#${tab}_tabitem #control_tab`, 'Transfer only prompt to Images tab', () => {\n document.querySelector(`#image_buttons_${tab} #control_tab_prompt`)?.click();\n document.getElementById('control_nav')?.click();\n });\n appendContextMenuOption(`#${tab}_tabitem #control_tab`, 'Transfer all parameters to Images tab', () => {\n document.querySelector(`#image_buttons_${tab} #control_tab_params`)?.click();\n document.getElementById('control_nav')?.click();\n });\n }\n addContextMenuEventListener();\n}\n", "import { gradioApp } from './script';\n\nexport function uiOpenSubmenus() {\n const accordions = Array.from(gradioApp().querySelectorAll('.gradio-accordion'));\n const states: Record = {};\n accordions.forEach((el) => {\n const labelEl = el.querySelector('.label-wrap > span:not(.icon)');\n const name = labelEl instanceof HTMLElement ? labelEl.innerText.trim() : '';\n if (!name) return;\n const children = Array.from(el.childNodes);\n const open = children.filter((c) => c instanceof HTMLElement && c.style.display === 'block');\n if (states[name] === undefined) states[name] = open.length > 0;\n });\n return states;\n}\n\nexport async function getUIDefaults() {\n const btn = gradioApp().getElementById('ui_defaults_view');\n if (!btn) return;\n const intersectionObserver = new IntersectionObserver((entries) => {\n if (entries[0].intersectionRatio <= 0) { /* Pass */ }\n if (entries[0].intersectionRatio > 0) btn.click();\n });\n intersectionObserver.observe(btn); // monitor visibility of tab\n}\n\nwindow.uiOpenSubmenus = uiOpenSubmenus;\n", "import { error, log, xhrPost } from './logger';\nimport { authFetch } from './authWrap';\nimport { timer } from './timers';\n\nexport const appStartTime = performance.now();\nlet monitorLogActive = false;\n\nasync function preloadImages(): Promise {\n const dark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;\n const imagePromises: Promise[] = [];\n const num = Math.floor(9.99 * Math.random());\n const imageUrls = [\n `file=ui/assets/logo-bg-${dark ? 'dark' : 'light'}.jpg`,\n `file=ui/assets/logo-bg-${num}.jpg`,\n ];\n for (const url of imageUrls) {\n const img = new Image();\n const promise = new Promise((resolve, reject) => {\n img.onload = () => resolve();\n img.onerror = () => reject(new Error(`failed to preload image: ${url}`));\n });\n img.src = url;\n imagePromises.push(promise);\n }\n try {\n await Promise.all(imagePromises);\n return true;\n } catch (err) {\n error(`preloadImages: ${err}`);\n return false;\n }\n}\n\nfunction joinArgs(messages: unknown[]): string {\n let output = '';\n for (let i = 0; i < messages.length; i++) {\n let arg = messages[i];\n if (arg === undefined) arg = 'undefined';\n if (arg === null) arg = 'null';\n output += ' ';\n if (typeof arg === 'object') output += JSON.stringify(arg).replace(/[\"]+/g, '');\n else output += arg;\n }\n return output;\n}\n\nfunction monitorLog(): void {\n if (window.logBufferDirty) {\n window.logBufferDirty = false;\n const maxLines = 100; // print last n logs from ring buffer to splash-log\n const lines: string[] = [];\n // print last n logs from ring buffer in time order\n for (let i = Math.max(0, window.logRingBuffer.length - maxLines); i < window.logRingBuffer.length; i++) {\n const logEntry = window.logRingBuffer[i];\n let color = 'white';\n if (logEntry.type === 'error') color = 'palevioletred';\n else if (logEntry.type === 'debug') color = 'gray';\n const html = `
${logEntry.ts}   ${joinArgs(logEntry.msg)}
`;\n lines.push(html);\n }\n const splashLogEl = document.getElementById('splashLog');\n if (splashLogEl) splashLogEl.innerHTML = lines.join('');\n }\n if (monitorLogActive) setTimeout(monitorLog, 250);\n}\n\nexport async function removeSplash() {\n const splash = document.getElementById('splash');\n if (splash) splash.remove();\n log('removeSplash');\n const t = Math.round(performance.now() - appStartTime);\n log('startupTime', t);\n timer('splashVisible', t);\n xhrPost(`${window.api}/log`, { message: `ready time=${t}` });\n monitorLogActive = false;\n}\n\nasync function createSplash() {\n const dark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;\n log('createSplash', { theme: dark ? 'dark' : 'light' });\n const num = Math.floor(9.99 * Math.random());\n const splash = `\n
\n
\n
\n
\n
`;\n document.body.insertAdjacentHTML('beforeend', splash);\n const ok = await preloadImages();\n if (!ok) {\n removeSplash();\n return;\n }\n const imgEl = `
`;\n const splashEl = document.getElementById('splash');\n if (splashEl) splashEl.insertAdjacentHTML('afterbegin', imgEl);\n\n monitorLogActive = true;\n monitorLog();\n\n await authFetch(`${window.api}/motd`)\n .then((res) => res.text())\n .then((text) => {\n const clean = text.replace(/[\"]+/g, '');\n const boldMatch = clean.match(/(.*?)<\\/b>/);\n const boldText = boldMatch ? boldMatch[1] : clean;\n if (boldMatch) log('getMOTD', { version: boldText });\n else log('getMOTD', { text: clean });\n const motdEl = document.getElementById('motd');\n if (motdEl) motdEl.innerHTML = clean;\n })\n .catch((err) => error(`getMOTD: ${err}`));\n\n log('loadGradioUi');\n}\n\nwindow.onload = createSplash;\n", "import { log } from './logger';\n\nexport function addLegacyNotice() {\n log('legacyNotice');\n const notice = document.createElement('div');\n notice.id = 'legacy-notice';\n notice.className = 'legacy-standard';\n notice.textContent = 'Legacy';\n notice.title = 'Standard UI is a legacy interface that is no longer maintained and will be removed in the future. Please switch to ModernUI for best experience.';\n document.body.appendChild(notice);\n}\n", "import { initChangelog } from './changelog';\nimport { setupControlUI } from './control';\nimport { initiGenerationParams } from './generationParams';\nimport { initDragDrop } from './imageParams';\nimport { initAccordions } from './inputAccordion';\nimport { initIndexDB } from './indexdb';\nimport { initLogMonitor } from './logMonitor';\nimport { monitorConnection } from './monitor';\nimport { setRefreshInterval } from './progressBar';\nimport { initPromptChecker } from './promptChecker';\nimport { initModels, initSettings } from './settings';\nimport { initGallery } from './gallery';\nimport { initImageViewer } from './imageViewer';\nimport { reconnectUI } from './ui';\nimport { setupExtraNetworks, showNetworks, applyStyles } from './extraNetworks';\nimport { initAutocomplete } from './autocomplete';\nimport { setHints, disconnectHintsObserver } from './setHints';\nimport { initContextMenu } from './contextMenus';\nimport { executeCallbacks, onUiLoaded, onUiReady, sleep, uiReadyCallbacks, initTableSorter } from './script';\nimport { timer, logTimers } from './timers';\nimport { getUIDefaults } from './uiConfig';\nimport { log } from './logger';\nimport { appStartTime, removeSplash } from './loader';\nimport { addLegacyNotice } from './legacy';\n\nwindow.api = '/sdapi/v1';\nwindow.subpath = '';\n\nconst startupPromises: Promise[] = [];\nlet ok = false;\n\nasync function waitForOpts() {\n // make sure all of the ui is ready and options are loaded\n const t0 = performance.now();\n let t1 = performance.now();\n while (true) {\n if (t1 - t0 > 120000) {\n log('waitForOpts timeout');\n break;\n }\n if (window.opts && Object.keys(window.opts).length > 0) {\n ok = window.opts.theme_type === 'Modern' ? 'uiux_separator_appearance' in window.opts : true;\n if (ok) {\n log('waitForOpts', Math.round(t1 - t0));\n timer('waitForOpts', t1 - t0);\n break;\n }\n }\n await sleep(100);\n t1 = performance.now();\n }\n}\n\nasync function postStartup() {\n log('postStartup');\n disconnectHintsObserver();\n logTimers();\n}\n\nasync function updateSubpath() {\n log('mountURL', window.opts.subpath);\n if (window.opts.subpath?.length > 0) {\n window.subpath = window.opts.subpath;\n window.api = `${window.subpath}/sdapi/v1`;\n }\n log('API', { url: window.api });\n}\n\nasync function initStartup() {\n const t0 = performance.now();\n log('initGradio', Math.round(t0 - appStartTime));\n timer('initGradio', t0 - appStartTime);\n log('initUi');\n if (window.setupLogger) await window.setupLogger();\n\n // all items here are non-blocking async calls\n\n startupPromises.push(initModels());\n startupPromises.push(getUIDefaults());\n startupPromises.push(initPromptChecker());\n startupPromises.push(initContextMenu());\n startupPromises.push(initDragDrop());\n startupPromises.push(Promise.resolve(initAccordions()));\n startupPromises.push(Promise.resolve(initSettings()));\n startupPromises.push(Promise.resolve(initImageViewer()));\n startupPromises.push(Promise.resolve(initGallery()));\n startupPromises.push(Promise.resolve(initiGenerationParams()));\n startupPromises.push(Promise.resolve(initChangelog()));\n startupPromises.push(Promise.resolve(setupControlUI()));\n\n // reconnect server session\n await reconnectUI();\n await waitForOpts();\n await updateSubpath();\n\n executeCallbacks(uiReadyCallbacks);\n\n // optionally wait for modern ui\n if (window.waitForUiReady) await window.waitForUiReady();\n\n // post startup tasks that may take longer but are not critical\n startupPromises.push(Promise.resolve(initLogMonitor()));\n startupPromises.push(Promise.resolve(initGallery()));\n startupPromises.push(Promise.resolve(setRefreshInterval()));\n startupPromises.push(Promise.resolve(setupExtraNetworks()));\n startupPromises.push(Promise.resolve(initAutocomplete()));\n startupPromises.push(Promise.resolve(monitorConnection()));\n startupPromises.push(Promise.resolve(showNetworks()));\n startupPromises.push(Promise.resolve(setHints()));\n startupPromises.push(Promise.resolve(applyStyles()));\n startupPromises.push(Promise.resolve(initIndexDB()));\n startupPromises.push(Promise.resolve(initTableSorter()));\n\n if (window.opts.theme_type !== 'Modern') addLegacyNotice();\n\n const t1 = performance.now();\n log('initStartup', Math.round(1000 * (t1 - t0) / 1000000));\n\n removeSplash();\n\n await Promise.all(startupPromises);\n const t2 = performance.now();\n log('initComplete', Math.round(1000 * (t2 - t0) / 1000000));\n postStartup();\n}\n\nonUiLoaded(initStartup);\nonUiReady(() => log('uiReady'));\n\n// onAfterUiUpdate(() => log('evt onAfterUiUpdate'));\n// onUiLoaded(() => log('evt onUiLoaded'));\n// onOptionsChanged(() => log('evt onOptionsChanged'));\n// onUiTabChange(() => log('evt onUiTabChange'));\n// onUiUpdate(() => log('evt onUiUpdate'));\n", "import { randomId } from './progressBar';\n\nimport { log } from './logger';\nimport { gradioApp } from './script';\nimport { restartReload, updateInput } from './ui';\n\nexport function extensions_apply(_extensionsDisabledList: unknown, _extensionsUpdateList: unknown, disableAll: unknown): [string, string, unknown] {\n const disable = [];\n const update = [];\n gradioApp().querySelectorAll('#extensions input[type=\"checkbox\"]').forEach((x) => {\n if (!(x instanceof HTMLInputElement)) return;\n if (x.name.startsWith('enable_') && !x.checked) disable.push(x.name.substring(7));\n if (x.name.startsWith('update_') && x.checked) update.push(x.name.substring(7));\n });\n restartReload();\n log('Extensions apply:', { disable, update });\n return [JSON.stringify(disable), JSON.stringify(update), disableAll];\n}\n\nexport function extensions_check(_info: unknown, _extensionsDisabledList: unknown, searchText: unknown, sortColumn: unknown): [string, string, unknown, unknown] {\n const disable = [];\n gradioApp().querySelectorAll('#extensions input[type=\"checkbox\"]').forEach((x) => {\n if (!(x instanceof HTMLInputElement)) return;\n if (x.name.startsWith('enable_') && !x.checked) disable.push(x.name.substring(7));\n });\n const id = randomId();\n log('Extensions check:', { disable });\n return [id, JSON.stringify(disable), searchText, sortColumn];\n}\n\nexport function install_extension(button: HTMLButtonElement | HTMLInputElement, url: string): void {\n button.disabled = true;\n button.value = 'Installing...';\n button.innerHTML = 'installing';\n const textarea = gradioApp().querySelector('#extension_to_install textarea');\n if (!(textarea instanceof HTMLTextAreaElement)) return;\n textarea.value = url;\n updateInput(textarea);\n log('Extension install:', { url });\n const installBtn = gradioApp().querySelector('#install_extension_button');\n if (installBtn instanceof HTMLElement) installBtn.click();\n}\n\nexport function uninstall_extension(button: HTMLButtonElement | HTMLInputElement, url: string): void {\n button.disabled = true;\n button.value = 'Uninstalling...';\n button.innerHTML = 'uninstalling';\n const textarea = gradioApp().querySelector('#extension_to_install textarea');\n if (!(textarea instanceof HTMLTextAreaElement)) return;\n textarea.value = url;\n updateInput(textarea);\n log('Extension uninstall:', { url });\n const uninstallBtn = gradioApp().querySelector('#uninstall_extension_button');\n if (uninstallBtn instanceof HTMLElement) uninstallBtn.click();\n}\n\nexport function update_extension(button: HTMLButtonElement | HTMLInputElement, url: string): void {\n button.value = 'Updating...';\n button.innerHTML = 'updating';\n const textarea = gradioApp().querySelector('#extension_to_install textarea');\n if (!(textarea instanceof HTMLTextAreaElement)) return;\n textarea.value = url;\n updateInput(textarea);\n log('Extension update:', { url });\n const updateBtn = gradioApp().querySelector('#update_extension_button');\n if (updateBtn instanceof HTMLInputElement) updateBtn.click();\n}\n\nwindow.extensions_apply = extensions_apply;\nwindow.extensions_check = extensions_check;\nwindow.uninstall_extension = uninstall_extension;\nwindow.install_extension = install_extension;\nwindow.update_extension = update_extension;\n", "import { log } from './logger';\nimport { gradioApp, uiElementIsVisible, uiElementInSight } from './script';\n\ntype PromptDropTarget = EventTarget & {\n placeholder?: string;\n closest: (selector: string) => Element | null;\n};\n\nfunction isValidImageList(files: FileList | null | undefined): files is FileList {\n return files && files?.length === 1 && ['image/png', 'image/gif', 'image/jpeg'].includes(files[0].type);\n}\n\nfunction dropReplaceImage(imgWrap: Element, files: FileList): void {\n log('dropReplaceImage', imgWrap, files);\n if (!isValidImageList(files)) return;\n const tmpFile = files[0];\n imgWrap.querySelector('.modify-upload button + button, .touch-none + div button + button')?.click();\n const callback = () => {\n const fileInput = imgWrap.querySelector('input[type=\"file\"]');\n if (fileInput instanceof HTMLInputElement) {\n if (files.length === 0) {\n const dt = new DataTransfer();\n dt.items.add(tmpFile);\n fileInput.files = dt.files;\n } else {\n fileInput.files = files;\n }\n fileInput.dispatchEvent(new Event('change'));\n }\n };\n\n if (imgWrap.closest('#pnginfo_image')) {\n const oldFetch = window.fetch;\n window.fetch = async (input: RequestInfo | URL, options?: RequestInit) => {\n const response = await oldFetch(input, options);\n if (input === 'api/predict/') {\n const content = await response.text();\n window.fetch = oldFetch;\n window.requestAnimationFrame(() => callback());\n return new Response(content, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n }\n return response;\n };\n } else {\n window.requestAnimationFrame(() => callback());\n }\n}\n\nwindow.document.addEventListener('dragover', (e) => {\n const target = e.composedPath()[0] as PromptDropTarget;\n const imgWrap = target.closest('[data-testid=\"image\"]');\n if (!imgWrap && target.placeholder && target.placeholder.indexOf('Prompt') === -1) return;\n if ((e.dataTransfer?.files?.length || 0) > 0) {\n e.stopPropagation();\n e.preventDefault();\n e.dataTransfer.dropEffect = 'copy';\n }\n});\n\nwindow.document.addEventListener('drop', (e) => {\n const target = e.composedPath()[0] as PromptDropTarget;\n log('dropEvent', e, target);\n if (!target.placeholder) return;\n if (target.placeholder.indexOf('Prompt') === -1) return;\n const imgWrap = target.closest('[data-testid=\"image\"]');\n if (!imgWrap) return;\n if ((e.dataTransfer?.files?.length || 0) > 0) {\n e.stopPropagation();\n e.preventDefault();\n dropReplaceImage(imgWrap, e.dataTransfer.files);\n }\n});\n\nwindow.addEventListener('paste', (e) => {\n log('pasteEvent', e);\n const files = e.clipboardData?.files;\n if (!isValidImageList(files)) return;\n const visibleImageFields = [...gradioApp().querySelectorAll('[data-testid=\"image\"]')]\n .filter((el) => uiElementIsVisible(el))\n .sort((a, b) => Number(uiElementInSight(b)) - Number(uiElementInSight(a)));\n if (!visibleImageFields.length) return;\n const firstFreeImageField = visibleImageFields.filter((el) => el.querySelector('input[type=file]'))?.[0];\n dropReplaceImage(firstFreeImageField || visibleImageFields[visibleImageFields.length - 1], files);\n});\n", "import { gradioApp, onUiLoaded } from './script';\nimport { log, error } from './logger';\nimport { authFetch } from './authWrap';\n\ninterface CivitFile {\n url?: string;\n name?: string;\n type?: string;\n size?: number;\n}\n\ninterface CivitImage {\n url: string;\n}\n\ninterface CivitVersion {\n id: number;\n name?: string;\n base?: string;\n mtime: string;\n availability?: string;\n desc?: string;\n files: CivitFile[];\n images: CivitImage[];\n}\n\ninterface CivitModel {\n id: number;\n url: string;\n name?: string;\n type?: string;\n tags?: string[];\n nsfw?: boolean;\n level?: number;\n availability?: string;\n downloads?: number;\n creator?: string;\n desc?: string;\n versions: CivitVersion[];\n}\n\n// eslint-disable-next-line no-extend-native\nString.prototype.format = function format(this: string, args: Record): string {\n let thisString = '';\n for (let charPos = 0; charPos < this.length; charPos++) thisString += this[charPos];\n for (const key in args) {\n const stringKey = `{${key}}`;\n thisString = thisString.replace(new RegExp(stringKey, 'g'), String(args[key]));\n }\n return thisString;\n};\n\nlet selectedURL: string[] = [];\nlet selectedName: string[] = [];\nlet selectedType: string[] = [];\nlet selectedBase: string[] = [];\nlet selectedModelId: number[] = [];\nlet selectedVersionId: number[] = [];\n\nexport function clearModelDetails() {\n const el = gradioApp().getElementById('model-details') || gradioApp().getElementById('civitai_models_output') || gradioApp().getElementById('models_outcome');\n if (!el) return;\n el.innerHTML = '';\n}\nwindow.clearModelDetails = clearModelDetails;\n\nconst modelDetailsHTML = `\n
\n \"model\n \n \n \n \n \n \n \n \n \n \n \n
Name{name}
Type{type}
Tags
{tags}
NSFW{nsfw} | {level}
Availability{availability}
Downloads{downloads}
Author{creator}
Description
{desc}
Download
All variants
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {versions}\n \n
VersionTypeBaseFileUpdatedSizeAvailabilityDescription
\n
\n`;\n\nconst modelVersionsHTML = `\n \n {url}\n {name}\n {type}\n {base}\n {file}\n {mtime}\n {size}\n {availability}\n
{desc}
\n \n`;\n\nexport async function modelCardClick(id) {\n log('modelCardClick id', id);\n const el = gradioApp().getElementById('model-details') || gradioApp().getElementById('civitai_models_output') || gradioApp().getElementById('models_outcome');\n if (!el) return;\n const res = await authFetch(`${window.api}/civitai?model_id=${encodeURI(id)}`);\n if (!res || res.status !== 200) {\n error(`modelCardClick: id=${id} status=${res ? res.status : 'unknown'}`);\n return;\n }\n const dataArray = await res.json();\n log('modelCardClick data', dataArray);\n if (!dataArray || dataArray.length === 0) return;\n const data: any = dataArray[0]; // assuming the first item is the one we want\n\n const versionsHTML = data.versions.map((v: CivitVersion) => modelVersionsHTML.format({\n url: `
\\udb80\\uddda
`,\n name: v.name || 'unknown',\n type: v.files[0]?.type || 'unknown',\n base: v.base || 'unknown',\n mtime: (new Date(v.mtime)).toLocaleDateString(),\n availability: v.availability || 'unknown',\n size: v.files[0]?.size ? `${(v.files[0].size / 1024 / 1024).toFixed(2)} MB` : 'unknown',\n file: `${v.files[0]?.name || 'unknown'}`,\n desc: v.desc || 'no description available',\n })).join('');\n const url = `${data.name || 'unknown'}`;\n const creator = `${data.creator || 'unknown'}`;\n const images = data.versions.map((v: CivitVersion) => v.images).flat().map((i: CivitImage) => i.url); // TODO image gallery\n const modelHTML = modelDetailsHTML.format({\n name: url,\n type: data.type || 'unknown',\n tags: data.tags?.join(', ') || '',\n nsfw: data.nsfw ? 'yes' : 'no',\n level: data.level?.toString() || '',\n availability: data.availability || 'unknown',\n downloads: data.downloads?.toString() || '',\n creator,\n desc: data.desc || 'no description available',\n image: images.length > 0 ? images[0] : '/sdapi/v1/network/thumb?filename=ui/assets/missing.png',\n versions: versionsHTML || '',\n });\n el.innerHTML = modelHTML;\n}\nwindow.modelCardClick = modelCardClick;\n\nexport function startCivitDownload(url, name, type, base, modelId, versionId) {\n log('startCivitDownload', { url, name, type, base, modelId, versionId });\n selectedURL = [url];\n selectedName = [name];\n selectedType = [type];\n selectedBase = [base || ''];\n selectedModelId = [modelId || 0];\n selectedVersionId = [versionId || 0];\n const civitDownloadBtn = gradioApp().getElementById('civitai_download_btn');\n if (civitDownloadBtn) civitDownloadBtn.click();\n}\nwindow.startCivitDownload = startCivitDownload;\n\nexport function startCivitAllDownload(evt) {\n log('startCivitAllDownload', evt);\n const table = gradioApp().getElementById('model-versions-table');\n if (!table) return;\n const versions = table.querySelectorAll('tr');\n selectedURL = [];\n selectedName = [];\n selectedType = [];\n selectedBase = [];\n selectedModelId = [];\n selectedVersionId = [];\n for (const version of versions) {\n const parsed = version.querySelector('td:nth-child(1) div')?.getAttribute('onclick')?.match(/startCivitDownload\\('([^']+)', '([^']+)', '([^']+)', '([^']*)', (\\d+), (\\d+)\\)/);\n if (!parsed || parsed.length < 7) continue;\n selectedURL.push(parsed[1]);\n selectedName.push(parsed[2]);\n selectedType.push(parsed[3]);\n selectedBase.push(parsed[4]);\n selectedModelId.push(parseInt(parsed[5], 10));\n selectedVersionId.push(parseInt(parsed[6], 10));\n }\n const civitDownloadBtn = gradioApp().getElementById('civitai_download_btn');\n if (civitDownloadBtn) civitDownloadBtn.click();\n}\nwindow.startCivitAllDownload = startCivitAllDownload;\n\nexport function downloadCivitModel(modelUrl, modelName, modelType, modelBase, mId, vId, modelPath, civitToken, innerHTML) {\n log('downloadCivitModel', { modelUrl, modelName, modelType, modelBase, mId, vId, modelPath, civitToken });\n const el = gradioApp().getElementById('civitai_models_output') || gradioApp().getElementById('models_outcome');\n const currentHTML = el?.innerHTML || '';\n return [selectedURL, selectedName, selectedType, selectedBase, selectedModelId, selectedVersionId, modelPath, civitToken, currentHTML];\n}\nwindow.downloadCivitModel = downloadCivitModel;\n\nlet civitMutualExcludeBound = false;\n\nexport function civitaiMutualExclude() {\n if (civitMutualExcludeBound) return;\n const searchEl = gradioApp().querySelector('#civit_search_text textarea');\n const tagEl = gradioApp().querySelector('#civit_search_tag textarea');\n if (!searchEl || !tagEl) return;\n civitMutualExcludeBound = true;\n searchEl.addEventListener('input', () => {\n tagEl.closest('.gradio-textbox')?.classList.toggle('disabled-look', !!searchEl.value.trim());\n });\n tagEl.addEventListener('input', () => {\n searchEl.closest('.gradio-textbox')?.classList.toggle('disabled-look', !!tagEl.value.trim());\n });\n}\n\nonUiLoaded(civitaiMutualExclude);\n", "import { log } from './logger';\n\ntype GuiderLike = string | { label?: string };\n\nconst guiders: Record = {\n None: '',\n 'LSC: LayerSkipConfig': 'https://github.com/huggingface/diffusers/blob/041501aea92919c9c7f36e189fc9cf7d865ebb96/src/diffusers/hooks/layer_skip.py#L41',\n 'CFG: ClassifierFreeGuidance': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.ClassifierFreeGuidance',\n 'Auto: AutoGuidance': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.AutoGuidance',\n 'Zero: ClassifierFreeZeroStar': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.ClassifierFreeZeroStarGuidance',\n 'PAG: PerturbedAttentionGuidance': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.PerturbedAttentionGuidance',\n 'APG: AdaptiveProjectedGuidance': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.AdaptiveProjectedGuidance',\n 'SLG: SkipLayerGuidance': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.SkipLayerGuidance',\n 'SEG: SmoothedEnergyGuidance': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.SmoothedEnergyGuidance',\n 'TCFG: TangentialClassifierFreeGuidance': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.TangentialClassifierFreeGuidance',\n 'FDG: FrequencyDecoupledGuidance': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.FrequencyDecoupledGuidance',\n};\n\nexport function getGuidanceDocs(guider: GuiderLike): void {\n const key = typeof guider === 'object' && guider?.label ? guider.label : guider;\n const url = guiders[key as string];\n log('getGuidanceDocs', guider, url);\n if (url) window.open(url, '_blank');\n}\n\nwindow.getGuidanceDocs = getGuidanceDocs;\n", "/* eslint max-classes-per-file: [\"error\", 2] */\n\ninterface TimesheetItem {\n start: number;\n end: number;\n label: string;\n type: string;\n}\n\nclass Bubble {\n type: string;\n label: string;\n min: number;\n start: number;\n end: number;\n scale: number;\n offset: number;\n width: number;\n duration: number;\n title: string;\n\n constructor(min: number, start: number, end: number, label: string, scale: number, type: string) {\n this.type = type;\n this.label = label;\n this.min = min;\n this.start = start;\n this.end = end;\n this.scale = scale;\n this.offset = Math.round(this.scale * (this.start - this.min));\n this.width = Math.round(this.scale * (this.end - this.start));\n this.duration = Math.round(1000 * (this.end - this.start)) / 1000;\n this.title = `Job: ${this.label}\\nDuration: ${this.duration}s\\nStart: ${new Date(1000 * this.start).toLocaleString()}\\nEnd: ${new Date(1000 * this.end).toLocaleString()}`;\n }\n\n getDateLabel(): number {\n return Math.round(1000 * (this.end - this.start)) / 1000;\n }\n}\n\nexport class Timesheet {\n min: number;\n max: number;\n data: TimesheetItem[];\n container: HTMLElement;\n scale: number;\n\n constructor(container: HTMLElement, data: TimesheetItem[]) {\n this.min = Math.floor(data[0].start);\n this.max = Math.round(data[data.length - 1].end + 0.5);\n this.data = data;\n this.container = container;\n const box = container.getBoundingClientRect();\n const width = box.width - 140;\n this.scale = width / (this.max - this.min);\n\n // draw sections\n let html: string[] = [];\n for (let c = 0; c <= this.max - this.min; c++) html.push(`
`);\n container.className = 'timesheet color-scheme-default';\n container.innerHTML = `
${html.join('')}
`;\n\n // insert data\n html = [];\n for (let n = 0, m = this.data.length; n < m; n++) {\n const cur = this.data[n];\n const bubble = new Bubble(this.min, cur.start, cur.end, cur.label, this.scale, cur.type);\n const line = [\n ``,\n `${bubble.duration} `,\n `${bubble.label}`,\n ].join('');\n html.push(`
  • ${line}
  • `);\n }\n this.container.innerHTML += `
      ${html.join('')}
    `;\n }\n}\n", "import { Timesheet } from './timesheet';\nimport { log } from './logger';\nimport { authFetch } from './authWrap';\n\ninterface HistoryEntry {\n timestamp: number;\n id: string;\n job: string;\n op: string;\n duration?: number;\n outputs: string[];\n type?: 'inference' | 'io' | 'default';\n}\n\ninterface TimelineEntry {\n start: number;\n end: number;\n label: string;\n type: 'inference' | 'io' | 'default';\n}\n\nconst inferenceTypes = ['inference', 'vae', 'te'];\nconst ioTypes = ['load', 'save'];\n\nexport function refreshHistory() {\n log('refreshHistory');\n authFetch(`${window.api}/history`, { priority: 'low' }).then((res) => {\n if (!res) return;\n const timeline = document.getElementById('history_timeline');\n const table = document.getElementById('history_table');\n if (!timeline || !table) return;\n timeline.innerHTML = '';\n res.json().then((rawData) => {\n let data = rawData as HistoryEntry[];\n if (!data || !data.length) {\n table.innerHTML = '

    No history data available.

    ';\n return;\n }\n\n // build table\n let html = '';\n for (const entry of data) {\n const ts = new Date(1000 * entry.timestamp).toLocaleString();\n const duration = entry.duration ? (entry.duration).toFixed(3) : '';\n const outputs = entry.outputs.join(', ');\n html += ``;\n }\n html += '
    TimeIDJobActionDurationOutputs
    ${ts}${entry.id}${entry.job}${entry.op}${duration}${outputs}
    ';\n table.innerHTML = html;\n\n // crop data to last processing session\n let startIdx = -1;\n for (let i = data.length - 1; i >= 0; --i) {\n const e = data[i];\n if ((e.job === 'control' || e.job === 'text' || e.job === 'control' || e.job === 'image') && (e.op === 'begin')) {\n startIdx = i;\n break;\n }\n }\n if (startIdx >= 0) data = data.slice(startIdx);\n\n // build timeline\n const ts: TimelineEntry[] = [];\n for (const entry of data) {\n if (entry.op === 'begin') {\n const start = entry.timestamp;\n const endEntry = data.find((e) => (e.id === entry.id && e.op === 'end'));\n const end = endEntry?.timestamp ?? data[data.length - 1].timestamp;\n if (end - start < 0.02) continue; // skip very short entries\n if (inferenceTypes.some((type) => entry.job.toLowerCase().startsWith(type))) entry.type = 'inference';\n else if (ioTypes.some((type) => entry.job.toLowerCase().startsWith(type))) entry.type = 'io';\n else entry.type = 'default';\n if (start && end) ts.push({ start, end, label: entry.job, type: entry.type });\n }\n }\n if (!ts.length) return;\n // eslint-disable-next-line no-new\n new Timesheet(timeline, ts);\n });\n });\n}\n\nwindow.refreshHistory = refreshHistory;\n", "import { gradioApp, onAfterUiUpdate } from './script';\nimport { get_tab_index } from './ui';\n\nlet currentWidth: number | null = null;\nlet currentHeight: number | null = null;\nlet arFrameTimeout: ReturnType | undefined;\n\nfunction dimensionChange(e: Event, isWidth: boolean, isHeight: boolean): void {\n const { target } = e;\n if (!(target instanceof HTMLInputElement)) return;\n if (isWidth) currentWidth = Number(target.value);\n if (isHeight) currentHeight = Number(target.value);\n const tabImg2img = gradioApp().querySelector('#tab_img2img');\n if (!(tabImg2img instanceof HTMLElement)) return;\n const inImg2img = tabImg2img.style.display === 'block';\n if (!inImg2img) return;\n let targetElement: HTMLImageElement | null = null;\n const tabIndex = get_tab_index('mode_img2img');\n if (tabIndex === 0) targetElement = gradioApp().querySelector('#img2img_image div[data-testid=image] img'); // img2img\n else if (tabIndex === 1) targetElement = gradioApp().querySelector('#img2img_sketch div[data-testid=image] img'); // Sketch\n else if (tabIndex === 2) targetElement = gradioApp().querySelector('#img2maskimg div[data-testid=image] img'); // Inpaint\n else if (tabIndex === 3) targetElement = gradioApp().querySelector('#composite div[data-testid=image] img'); // Inpaint sketch\n\n if (targetElement && currentWidth && currentHeight) {\n let arPreviewRect = gradioApp().querySelector('#imageARPreview');\n if (!arPreviewRect) {\n arPreviewRect = document.createElement('div');\n arPreviewRect.id = 'imageARPreview';\n gradioApp().appendChild(arPreviewRect);\n }\n\n const viewportOffset = targetElement.getBoundingClientRect();\n const viewportscale = Math.min(targetElement.clientWidth / targetElement.naturalWidth, targetElement.clientHeight / targetElement.naturalHeight);\n const scaledx = targetElement.naturalWidth * viewportscale;\n const scaledy = targetElement.naturalHeight * viewportscale;\n const cleintRectTop = (viewportOffset.top + window.scrollY);\n const cleintRectLeft = (viewportOffset.left + window.scrollX);\n const cleintRectCentreY = cleintRectTop + (targetElement.clientHeight / 2);\n const cleintRectCentreX = cleintRectLeft + (targetElement.clientWidth / 2);\n const arscale = Math.min(scaledx / currentWidth, scaledy / currentHeight);\n const arscaledx = currentWidth * arscale;\n const arscaledy = currentHeight * arscale;\n const arRectTop = cleintRectCentreY - (arscaledy / 2);\n const arRectLeft = cleintRectCentreX - (arscaledx / 2);\n const arRectWidth = arscaledx;\n const arRectHeight = arscaledy;\n arPreviewRect.style.top = `${arRectTop}px`;\n arPreviewRect.style.left = `${arRectLeft}px`;\n arPreviewRect.style.width = `${arRectWidth}px`;\n arPreviewRect.style.height = `${arRectHeight}px`;\n\n if (arFrameTimeout) clearTimeout(arFrameTimeout);\n arFrameTimeout = setTimeout(() => { arPreviewRect.style.display = 'none'; }, 2000);\n arPreviewRect.style.display = 'block';\n }\n}\n\nexport function aspectRatioCallback(): void {\n const arPreviewRect = gradioApp().querySelector('#imageARPreview');\n if (arPreviewRect instanceof HTMLElement) arPreviewRect.style.display = 'none';\n const tabImg2img = gradioApp().querySelector('#tab_img2img');\n if (tabImg2img instanceof HTMLElement) {\n const inImg2img = tabImg2img.style.display === 'block';\n if (inImg2img) {\n const inputs = gradioApp().querySelectorAll('input');\n inputs.forEach((e) => {\n if (!(e instanceof HTMLInputElement) || !(e.parentElement instanceof HTMLElement)) return;\n const isWidth = e.parentElement.id === 'img2img_width';\n const isHeight = e.parentElement.id === 'img2img_height';\n if ((isWidth || isHeight) && !e.classList.contains('scrollwatch')) {\n e.addEventListener('input', (evt) => { dimensionChange(evt, isWidth, isHeight); });\n e.classList.add('scrollwatch');\n }\n if (isWidth) currentWidth = Number(e.value);\n if (isHeight) currentHeight = Number(e.value);\n });\n }\n }\n}\n\nonAfterUiUpdate(aspectRatioCallback);\n", "import { gradioApp, onAfterUiUpdate } from './script';\n\n// Aspect-ratio lock for the paired width/height sliders. The math runs client-side and debounced,\n// and only the partner axis is ever written, never the field being edited; writing the edited field\n// back is what yanked the value mid-type when this went through a gradio round-trip. Programmatic\n// updates dispatch a synthetic input event so gradio's store stays in sync. State is keyed per\n// dropdown element so duplicate elem ids across tabs stay isolated.\n\nconst RES_DEBOUNCE = 350;\nconst AR_DEBOUNCE = 120;\nconst timers = new WeakMap>();\nconst busy = new WeakSet();\n\nfunction parseAR(ar: string): [number, number] | null {\n if (!ar || ar === 'AR') return null;\n const parts = ar.split(':');\n if (parts.length !== 2) return null;\n const w = parseInt(parts[0], 10);\n const h = parseInt(parts[1], 10);\n return (w > 0 && h > 0) ? [w, h] : null;\n}\n\nfunction numberInput(group: Element): HTMLInputElement | null {\n const inp = group.querySelector('input[type=number]') || group.querySelector('input');\n return inp instanceof HTMLInputElement ? inp : null;\n}\n\nfunction readValue(group: Element): number {\n const inp = numberInput(group);\n return inp ? Number(inp.value) : 0;\n}\n\nfunction writeValue(group: Element, raw: number): void {\n const inp = numberInput(group);\n if (!inp) return;\n const step = Number(inp.step) || 8;\n const min = inp.min !== '' ? Number(inp.min) : 0;\n const max = inp.max !== '' ? Number(inp.max) : 8192;\n const value = Math.max(min, Math.min(max, Math.round(raw / step) * step));\n if (value === Number(inp.value)) return; // unchanged: skip so the listeners do not refire\n group.querySelectorAll('input').forEach((el) => {\n if (!(el instanceof HTMLInputElement)) return;\n el.value = String(value);\n const e = new Event('input', { bubbles: true });\n Object.defineProperty(e, 'target', { value: el });\n el.dispatchEvent(e);\n });\n}\n\nfunction arValue(arEl: Element): string {\n const inp = arEl.querySelector('input');\n return inp instanceof HTMLInputElement ? inp.value : 'AR';\n}\n\nfunction pairOf(arEl: Element): { width: Element; height: Element } | null {\n let container: Element | null = arEl.parentElement;\n for (let i = 0; i < 6 && container; i++) {\n const width = container.querySelector('[id$=\"_width\"]');\n const height = container.querySelector('[id$=\"_height\"]');\n if (width && height) return { width, height };\n container = container.parentElement;\n }\n return null;\n}\n\nfunction settle(arEl: Element, source: 'width' | 'height'): void {\n const ar = parseAR(arValue(arEl));\n if (!ar) return;\n const pair = pairOf(arEl);\n if (!pair) return;\n const [rw, rh] = ar;\n busy.add(arEl);\n if (source === 'height') writeValue(pair.width, (readValue(pair.height) * rw) / rh);\n else writeValue(pair.height, (readValue(pair.width) * rh) / rw);\n busy.delete(arEl);\n}\n\nfunction schedule(arEl: Element, source: 'width' | 'height', delay: number): void {\n if (busy.has(arEl)) return; // ignore the input events our own writes dispatch\n clearTimeout(timers.get(arEl));\n timers.set(arEl, setTimeout(() => settle(arEl, source), delay));\n}\n\nfunction flush(arEl: Element, source: 'width' | 'height'): void {\n if (busy.has(arEl)) return;\n clearTimeout(timers.get(arEl));\n settle(arEl, source);\n}\n\nfunction bind(arEl: Element, group: Element, source: 'width' | 'height'): void {\n group.querySelectorAll('input').forEach((el) => {\n if (!(el instanceof HTMLInputElement) || el.classList.contains('ar-lock-bound')) return;\n el.classList.add('ar-lock-bound');\n el.addEventListener('input', () => schedule(arEl, source, RES_DEBOUNCE));\n el.addEventListener('change', () => flush(arEl, source)); // commit on blur, enter, or slider release\n });\n}\n\nexport function setupResolutionLock(): void {\n gradioApp().querySelectorAll('.ar-dropdown').forEach((arEl) => {\n const pair = pairOf(arEl);\n if (!pair) return;\n bind(arEl, pair.width, 'width');\n bind(arEl, pair.height, 'height');\n arEl.querySelectorAll('input').forEach((el) => {\n if (!(el instanceof HTMLInputElement) || el.classList.contains('ar-lock-bound')) return;\n el.classList.add('ar-lock-bound');\n el.addEventListener('change', () => flush(arEl, 'width')); // new ratio: keep width, derive height\n el.addEventListener('input', () => schedule(arEl, 'width', AR_DEBOUNCE));\n });\n });\n}\n\nonAfterUiUpdate(setupResolutionLock);\n", "import { updateInput } from './ui';\n\nexport function keyupEditAttention(event: KeyboardEvent): void {\n const target = (event as any).originalTarget || event.composedPath()[0];\n if (!(target instanceof HTMLTextAreaElement)) return;\n if (!target.matches(\"*:is([id*='_toprow'] [id*='_prompt'], .prompt) textarea\")) return;\n if (!(event.metaKey || event.ctrlKey)) return;\n const isPlus = event.key === 'ArrowUp';\n const isMinus = event.key === 'ArrowDown';\n if (!isPlus && !isMinus) return;\n let { selectionStart } = target;\n let { selectionEnd } = target;\n let text = target.value;\n\n function selectCurrentParenthesisBlock(OPEN: string, CLOSE: string): boolean {\n if (selectionStart !== selectionEnd) return false;\n\n // Find opening parenthesis around current cursor\n const before = text.substring(0, selectionStart);\n let beforeParen = before.lastIndexOf(OPEN);\n if (beforeParen === -1) return false;\n let beforeParenClose = before.lastIndexOf(CLOSE);\n while (beforeParenClose !== -1 && beforeParenClose > beforeParen) {\n beforeParen = before.lastIndexOf(OPEN, beforeParen - 1);\n beforeParenClose = before.lastIndexOf(CLOSE, beforeParenClose - 1);\n }\n\n // Find closing parenthesis around current cursor\n const after = text.substring(selectionStart);\n let afterParen = after.indexOf(CLOSE);\n if (afterParen === -1) return false;\n let afterParenOpen = after.indexOf(OPEN);\n while (afterParenOpen !== -1 && afterParen > afterParenOpen) {\n afterParen = after.indexOf(CLOSE, afterParen + 1);\n afterParenOpen = after.indexOf(OPEN, afterParenOpen + 1);\n }\n if (beforeParen === -1 || afterParen === -1) return false;\n\n // Set the selection to the text between the parenthesis\n const parenContent = text.substring(beforeParen + 1, selectionStart + afterParen);\n const lastColon = parenContent.lastIndexOf(':');\n selectionStart = beforeParen + 1;\n selectionEnd = selectionStart + lastColon;\n target.setSelectionRange(selectionStart, selectionEnd);\n return true;\n }\n\n function selectCurrentWord(): boolean {\n if (selectionStart !== selectionEnd) return false;\n const delimiters = `${window.opts.keyedit_delimiters} \\r\\n\\t`;\n // seek backward until to find beginning\n while (!delimiters.includes(text[selectionStart - 1]) && selectionStart > 0) selectionStart--;\n // seek forward to find end\n while (!delimiters.includes(text[selectionEnd]) && selectionEnd < text.length) selectionEnd++;\n target.setSelectionRange(selectionStart, selectionEnd);\n return true;\n }\n\n // If the user hasn't selected anything, let's select their current parenthesis block or word\n if (!selectCurrentParenthesisBlock('<', '>') && !selectCurrentParenthesisBlock('(', ')')) selectCurrentWord();\n event.preventDefault();\n\n let closeCharacter = ')';\n let delta = window.opts.keyedit_precision_attention;\n\n if (selectionStart > 0 && text[selectionStart - 1] === '<') {\n closeCharacter = '>';\n delta = window.opts.keyedit_precision_extra;\n } else if (selectionStart === 0 || text[selectionStart - 1] !== '(') {\n while (selectionEnd > selectionStart && text[selectionEnd - 1] === ' ') selectionEnd -= 1;\n if (selectionStart === selectionEnd) return;\n text = `${text.slice(0, selectionStart)}(${text.slice(selectionStart, selectionEnd)}:1.0)${text.slice(selectionEnd)}`;\n selectionStart += 1;\n selectionEnd += 1;\n }\n const end = text.slice(selectionEnd + 1).indexOf(closeCharacter) + 1;\n let weight: any = parseFloat(text.slice(selectionEnd + 1, selectionEnd + 1 + end));\n if (Number.isNaN(weight)) return;\n weight += isPlus ? delta : -delta;\n weight = parseFloat(weight.toPrecision(12));\n if (String(weight).length === 1) weight += '.0';\n if (closeCharacter === ')' && weight === 1) {\n text = text.slice(0, selectionStart - 1) + text.slice(selectionStart, selectionEnd) + text.slice(selectionEnd + 5);\n selectionStart--;\n selectionEnd--;\n } else {\n text = text.slice(0, selectionEnd + 1) + weight + text.slice(selectionEnd + 1 + end - 1);\n }\n target.focus();\n target.value = text;\n target.selectionStart = selectionStart;\n target.selectionEnd = selectionEnd;\n updateInput(target);\n}\n\naddEventListener('keydown', (event) => keyupEditAttention(event));\n", "/**\n*\n* jquery.sparkline.js\n*\n* v2.4.1\n* (c) Splunk, Inc\n* Contact: Gareth Watts (gareth@splunk.com)\n* http://omnipotent.net/jquery.sparkline/\n*\n* Generates inline sparkline charts from data supplied either to the method\n* or inline in HTML\n*\n* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag\n* (Firefox 2.0+, Safari, Opera, etc)\n*\n* License: New BSD License\n*\n* Copyright (c) 2012, Splunk Inc.\n* All rights reserved.\n*\n* Redistribution and use in source and binary forms, with or without modification,\n* are permitted provided that the following conditions are met:\n*\n* * Redistributions of source code must retain the above copyright notice,\n* this list of conditions and the following disclaimer.\n* * Redistributions in binary form must reproduce the above copyright notice,\n* this list of conditions and the following disclaimer in the documentation\n* and/or other materials provided with the distribution.\n* * Neither the name of Splunk Inc nor the names of its contributors may\n* be used to endorse or promote products derived from this software without\n* specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*\n*\n* Usage:\n* $(selector).sparkline(values, options)\n*\n* If values is undefined or set to 'html' then the data values are read from the specified tag:\n*

    Sparkline: 1,4,6,6,8,5,3,5

    \n* $('.sparkline').sparkline();\n* There must be no spaces in the enclosed data set\n*\n* Otherwise values must be an array of numbers or null values\n*

    Sparkline: This text replaced if the browser is compatible

    \n* $('#sparkline1').sparkline([1,4,6,6,8,5,3,5])\n* $('#sparkline2').sparkline([1,4,6,null,null,5,3,5])\n*\n* Values can also be specified in an HTML comment, or as a values attribute:\n*

    Sparkline:

    \n*

    Sparkline:

    \n* $('.sparkline').sparkline();\n*\n* For line charts, x values can also be specified:\n*

    Sparkline: 1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5

    \n* $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ])\n*\n* By default, options should be passed in as the second argument to the sparkline function:\n* $('.sparkline').sparkline([1,2,3,4], {type: 'bar'})\n*\n* Options can also be set by passing them on the tag itself. This feature is disabled by default though\n* as there's a slight performance overhead:\n* $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true})\n*

    Sparkline: loading

    \n* Prefix all options supplied as tag attribute with \"spark\" (configurable by setting tagOptionsPrefix)\n*\n* Supported options:\n* lineColor - Color of the line used for the chart\n* fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart\n* width - Width of the chart - Defaults to 3 times the number of values in pixels\n* height - Height of the chart - Defaults to the height of the containing element\n* chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied\n* chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied\n* chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax\n* chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied\n* chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied\n* composite - If true then don't erase any existing chart attached to the tag, but draw\n* another chart over the top - Note that width and height are ignored if an\n* existing chart is detected.\n* tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values'\n* enableTagOptions - Whether to check tags for sparkline options\n* tagOptionsPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark'\n* disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a\n* hidden dom element, avoding a browser reflow\n* disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled,\n* making the plugin perform much like it did in 1.x\n* disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled)\n* disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled\n* defaults to false (highlights enabled)\n* highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase\n* tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body\n* tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied\n* tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis\n* tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis\n* tooltipFormatter - Optional callback that allows you to override the HTML displayed in the tooltip\n* callback is given arguments of (sparkline, options, fields)\n* tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title\n* tooltipFormat - A format string or SPFormat object (or an array thereof for multiple entries)\n* to control the format of the tooltip\n* tooltipPrefix - A string to prepend to each field displayed in a tooltip\n* tooltipSuffix - A string to append to each field displayed in a tooltip\n* tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true)\n* tooltipValueLookups - An object or range map to map field values to tooltip strings\n* (eg. to map -1 to \"Lost\", 0 to \"Draw\", and 1 to \"Win\")\n* numberFormatter - Optional callback for formatting numbers in tooltips\n* numberDigitGroupSep - Character to use for group separator in numbers \"1,234\" - Defaults to \",\"\n* numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to \".\"\n* numberDigitGroupCount - Number of digits between group separator - Defaults to 3\n*\n* There are 7 types of sparkline, selected by supplying a \"type\" option of 'line' (default),\n* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box'\n* line - Line chart. Options:\n* spotColor - Set to '' to not end each line in a circular spot\n* minSpotColor - If set, color of spot at minimum value\n* maxSpotColor - If set, color of spot at maximum value\n* spotRadius - Radius in pixels\n* lineWidth - Width of line in pixels\n* normalRangeMin\n* normalRangeMax - If set draws a filled horizontal bar between these two values marking the \"normal\"\n* or expected range of values\n* normalRangeColor - Color to use for the above bar\n* drawNormalOnTop - Draw the normal range above the chart fill color if true\n* defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart\n* highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable\n* highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable\n* valueSpots - Specify which points to draw spots on, and in which color. Accepts a range map\n*\n* bar - Bar chart. Options:\n* barColor - Color of bars for postive values\n* negBarColor - Color of bars for negative values\n* zeroColor - Color of bars with zero values\n* nullColor - Color of bars with null values - Defaults to omitting the bar entirely\n* barWidth - Width of bars in pixels\n* colorMap - Optional mappnig of values to colors to override the *BarColor values above\n* can be an Array of values to control the color of individual bars or a range map\n* to specify colors for individual ranges of values\n* barSpacing - Gap between bars in pixels\n* zeroAxis - Centers the y-axis around zero if true\n*\n* tristate - Charts values of win (>0), lose (<0) or draw (=0)\n* posBarColor - Color of win values\n* negBarColor - Color of lose values\n* zeroBarColor - Color of draw values\n* barWidth - Width of bars in pixels\n* barSpacing - Gap between bars in pixels\n* colorMap - Optional mappnig of values to colors to override the *BarColor values above\n* can be an Array of values to control the color of individual bars or a range map\n* to specify colors for individual ranges of values\n*\n* discrete - Options:\n* lineHeight - Height of each line in pixels - Defaults to 30% of the graph height\n* thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor\n* thresholdColor\n*\n* bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ...\n* options:\n* targetColor - The color of the vertical target marker\n* targetWidth - The width of the target marker in pixels\n* performanceColor - The color of the performance measure horizontal bar\n* rangeColors - Colors to use for each qualitative range background color\n*\n* pie - Pie chart. Options:\n* sliceColors - An array of colors to use for pie slices\n* offset - Angle in degrees to offset the first slice - Try -90 or +90\n* borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border)\n* borderColor - Color to use for the pie chart border - Defaults to #000\n*\n* box - Box plot. Options:\n* raw - Set to true to supply pre-computed plot points as values\n* values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier\n* When set to false you can supply any number of values and the box plot will\n* be computed for you. Default is false.\n* showOutliers - Set to true (default) to display outliers as circles\n* outlierIQR - Interquartile range used to determine outliers. Default 1.5\n* boxLineColor - Outline color of the box\n* boxFillColor - Fill color for the box\n* whiskerColor - Line color used for whiskers\n* outlierLineColor - Outline color of outlier circles\n* outlierFillColor - Fill color of the outlier circles\n* spotRadius - Radius of outlier circles\n* medianColor - Line color of the median line\n* target - Draw a target cross hair at the supplied value (default undefined)\n*\n*\n*\n* Examples:\n* $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false });\n* $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 });\n* $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }):\n* $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' });\n* $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' });\n* $('#pie').sparkline([1,1,2], { type:'pie' });\n*/\n\n/*jslint regexp: true, browser: true, jquery: true, white: true, nomen: false, plusplus: false, maxerr: 500, indent: 4 */\n\n(function(document, Math, undefined) { // performance/minified-size optimization\n(function(factory) {\n if(typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (jQuery && !jQuery.fn.sparkline) {\n factory(jQuery);\n }\n}\n(function($) {\n 'use strict';\n\n var UNSET_OPTION = {},\n getDefaults, createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues,\n remove, isNumber, all, sum, addCSS, ensureArray, formatNumber, RangeMap,\n MouseHandler, Tooltip, barHighlightMixin,\n line, bar, tristate, discrete, bullet, pie, box, defaultStyles, initStyles,\n VShape, VCanvas_base, VCanvas_canvas, VCanvas_vml, pending, shapeCount = 0;\n\n /**\n * Default configuration settings\n */\n getDefaults = function () {\n return {\n // Settings common to most/all chart types\n common: {\n type: 'line',\n lineColor: '#00f',\n fillColor: '#cdf',\n defaultPixelsPerValue: 3,\n width: 'auto',\n height: 'auto',\n composite: false,\n tagValuesAttribute: 'values',\n tagOptionsPrefix: 'spark',\n enableTagOptions: false,\n enableHighlight: true,\n highlightLighten: 1.4,\n tooltipSkipNull: true,\n tooltipPrefix: '',\n tooltipSuffix: '',\n disableHiddenCheck: false,\n numberFormatter: false,\n numberDigitGroupCount: 3,\n numberDigitGroupSep: ',',\n numberDecimalMark: '.',\n disableTooltips: false,\n disableInteraction: false\n },\n // Defaults for line charts\n line: {\n spotColor: '#f80',\n highlightSpotColor: '#5f5',\n highlightLineColor: '#f22',\n spotRadius: 1.5,\n minSpotColor: '#f80',\n maxSpotColor: '#f80',\n lineWidth: 1,\n normalRangeMin: undefined,\n normalRangeMax: undefined,\n normalRangeColor: '#ccc',\n drawNormalOnTop: false,\n chartRangeMin: undefined,\n chartRangeMax: undefined,\n chartRangeMinX: undefined,\n chartRangeMaxX: undefined,\n tooltipFormat: new SPFormat(' {{prefix}}{{y}}{{suffix}}')\n },\n // Defaults for bar charts\n bar: {\n barColor: '#3366cc',\n negBarColor: '#f44',\n stackedBarColor: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n '#dd4477', '#0099c6', '#990099'],\n zeroColor: undefined,\n nullColor: undefined,\n zeroAxis: true,\n barWidth: 4,\n barSpacing: 1,\n chartRangeMax: undefined,\n chartRangeMin: undefined,\n chartRangeClip: false,\n colorMap: undefined,\n tooltipFormat: new SPFormat(' {{prefix}}{{value}}{{suffix}}')\n },\n // Defaults for tristate charts\n tristate: {\n barWidth: 4,\n barSpacing: 1,\n posBarColor: '#6f6',\n negBarColor: '#f44',\n zeroBarColor: '#999',\n colorMap: {},\n tooltipFormat: new SPFormat(' {{value:map}}'),\n tooltipValueLookups: { map: { '-1': 'Loss', '0': 'Draw', '1': 'Win' } }\n },\n // Defaults for discrete charts\n discrete: {\n lineHeight: 'auto',\n thresholdColor: undefined,\n thresholdValue: 0,\n chartRangeMax: undefined,\n chartRangeMin: undefined,\n chartRangeClip: false,\n tooltipFormat: new SPFormat('{{prefix}}{{value}}{{suffix}}')\n },\n // Defaults for bullet charts\n bullet: {\n targetColor: '#f33',\n targetWidth: 3, // width of the target bar in pixels\n performanceColor: '#33f',\n rangeColors: ['#d3dafe', '#a8b6ff', '#7f94ff'],\n base: undefined, // set this to a number to change the base start number\n tooltipFormat: new SPFormat('{{fieldkey:fields}} - {{value}}'),\n tooltipValueLookups: { fields: {r: 'Range', p: 'Performance', t: 'Target'} }\n },\n // Defaults for pie charts\n pie: {\n offset: 0,\n sliceColors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n '#dd4477', '#0099c6', '#990099'],\n borderWidth: 0,\n borderColor: '#000',\n tooltipFormat: new SPFormat(' {{value}} ({{percent.1}}%)')\n },\n // Defaults for box plots\n box: {\n raw: false,\n boxLineColor: '#000',\n boxFillColor: '#cdf',\n whiskerColor: '#000',\n outlierLineColor: '#333',\n outlierFillColor: '#fff',\n medianColor: '#f00',\n showOutliers: true,\n outlierIQR: 1.5,\n spotRadius: 1.5,\n target: undefined,\n targetColor: '#4a2',\n chartRangeMax: undefined,\n chartRangeMin: undefined,\n tooltipFormat: new SPFormat('{{field:fields}}: {{value}}'),\n tooltipFormatFieldlistKey: 'field',\n tooltipValueLookups: { fields: { lq: 'Lower Quartile', med: 'Median',\n uq: 'Upper Quartile', lo: 'Left Outlier', ro: 'Right Outlier',\n lw: 'Left Whisker', rw: 'Right Whisker'} }\n }\n };\n };\n\n // You can have tooltips use a css class other than jqstooltip by specifying tooltipClassname\n defaultStyles = '.jqstooltip { ' +\n 'position: absolute;' +\n 'left: 0px;' +\n 'top: 0px;' +\n 'visibility: hidden;' +\n 'background: rgb(0, 0, 0) transparent;' +\n 'background-color: rgba(0,0,0,0.6);' +\n 'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);' +\n '-ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)\";' +\n 'color: white;' +\n 'font: 10px arial, san serif;' +\n 'text-align: left;' +\n 'white-space: nowrap;' +\n 'padding: 5px;' +\n 'border: 1px solid white;' +\n 'box-sizing: content-box;' +\n 'z-index: 10000;' +\n '}' +\n '.jqsfield { ' +\n 'color: white;' +\n 'font: 10px arial, san serif;' +\n 'text-align: left;' +\n '}';\n\n /**\n * Utilities\n */\n\n createClass = function (/* [baseclass, [mixin, ...]], definition */) {\n var Class, args;\n Class = function () {\n this.init.apply(this, arguments);\n };\n if (arguments.length > 1) {\n if (arguments[0]) {\n Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]);\n Class._super = arguments[0].prototype;\n } else {\n Class.prototype = arguments[arguments.length - 1];\n }\n if (arguments.length > 2) {\n args = Array.prototype.slice.call(arguments, 1, -1);\n args.unshift(Class.prototype);\n $.extend.apply($, args);\n }\n } else {\n Class.prototype = arguments[0];\n }\n Class.prototype.cls = Class;\n return Class;\n };\n\n /**\n * Wraps a format string for tooltips\n * {{x}}\n * {{x.2}\n * {{x:months}}\n */\n $.SPFormatClass = SPFormat = createClass({\n fre: /\\{\\{([\\w.]+?)(:(.+?))?\\}\\}/g,\n precre: /(\\w+)\\.(\\d+)/,\n\n init: function (format, fclass) {\n this.format = format;\n this.fclass = fclass;\n },\n\n render: function (fieldset, lookups, options) {\n var self = this,\n fields = fieldset,\n match, token, lookupkey, fieldvalue, prec;\n return this.format.replace(this.fre, function () {\n var lookup;\n token = arguments[1];\n lookupkey = arguments[3];\n match = self.precre.exec(token);\n if (match) {\n prec = match[2];\n token = match[1];\n } else {\n prec = false;\n }\n fieldvalue = fields[token];\n if (fieldvalue === undefined) {\n return '';\n }\n if (lookupkey && lookups && lookups[lookupkey]) {\n lookup = lookups[lookupkey];\n if (lookup.get) { // RangeMap\n return lookups[lookupkey].get(fieldvalue) || fieldvalue;\n } else {\n return lookups[lookupkey][fieldvalue] || fieldvalue;\n }\n }\n if (isNumber(fieldvalue)) {\n if (options.get('numberFormatter')) {\n fieldvalue = options.get('numberFormatter')(fieldvalue);\n } else {\n fieldvalue = formatNumber(fieldvalue, prec,\n options.get('numberDigitGroupCount'),\n options.get('numberDigitGroupSep'),\n options.get('numberDecimalMark'));\n }\n }\n return fieldvalue;\n });\n }\n });\n\n // convience method to avoid needing the new operator\n $.spformat = function(format, fclass) {\n return new SPFormat(format, fclass);\n };\n\n clipval = function (val, min, max) {\n if (val < min) {\n return min;\n }\n if (val > max) {\n return max;\n }\n return val;\n };\n\n quartile = function (values, q) {\n var vl;\n if (q === 2) {\n vl = Math.floor(values.length / 2);\n return values.length % 2 ? values[vl] : (values[vl-1] + values[vl]) / 2;\n } else {\n if (values.length % 2 ) { // odd\n vl = (values.length * q + q) / 4;\n return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1];\n } else { //even\n vl = (values.length * q + 2) / 4;\n return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1];\n\n }\n }\n };\n\n normalizeValue = function (val) {\n var nf;\n switch (val) {\n case 'undefined':\n val = undefined;\n break;\n case 'null':\n val = null;\n break;\n case 'true':\n val = true;\n break;\n case 'false':\n val = false;\n break;\n default:\n nf = parseFloat(val);\n if (val == nf) {\n val = nf;\n }\n }\n return val;\n };\n\n normalizeValues = function (vals) {\n var i, result = [];\n for (i = vals.length; i--;) {\n result[i] = normalizeValue(vals[i]);\n }\n return result;\n };\n\n remove = function (vals, filter) {\n var i, vl, result = [];\n for (i = 0, vl = vals.length; i < vl; i++) {\n if (vals[i] !== filter) {\n result.push(vals[i]);\n }\n }\n return result;\n };\n\n isNumber = function (num) {\n return !isNaN(parseFloat(num)) && isFinite(num);\n };\n\n formatNumber = function (num, prec, groupsize, groupsep, decsep) {\n var p, i;\n num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split('');\n p = (p = $.inArray('.', num)) < 0 ? num.length : p;\n if (p < num.length) {\n num[p] = decsep;\n }\n for (i = p - groupsize; i > 0; i -= groupsize) {\n num.splice(i, 0, groupsep);\n }\n return num.join('');\n };\n\n // determine if all values of an array match a value\n // returns true if the array is empty\n all = function (val, arr, ignoreNull) {\n var i;\n for (i = arr.length; i--; ) {\n if (ignoreNull && arr[i] === null) continue;\n if (arr[i] !== val) {\n return false;\n }\n }\n return true;\n };\n\n // sums the numeric values in an array, ignoring other values\n sum = function (vals) {\n var total = 0, i;\n for (i = vals.length; i--;) {\n total += typeof vals[i] === 'number' ? vals[i] : 0;\n }\n return total;\n };\n\n ensureArray = function (val) {\n return $.isArray(val) ? val : [val];\n };\n\n // http://paulirish.com/2008/bookmarklet-inject-new-css-rules/\n addCSS = function(css) {\n var tag, iefail;\n if (document.createStyleSheet) {\n try {\n document.createStyleSheet().cssText = css;\n return;\n } catch (e) {\n // IE <= 9 maxes out at 31 stylesheets; inject into page instead.\n iefail = true;\n }\n }\n tag = document.createElement('style');\n tag.type = 'text/css';\n document.getElementsByTagName('head')[0].appendChild(tag);\n if (iefail) {\n document.styleSheets[document.styleSheets.length - 1].cssText = css;\n } else {\n tag[(typeof document.body.style.WebkitAppearance == 'string') /* webkit only */ ? 'innerText' : 'innerHTML'] = css;\n }\n };\n\n // Provide a cross-browser interface to a few simple drawing primitives\n $.fn.simpledraw = function (width, height, useExisting, interact) {\n var target, mhandler;\n if (useExisting && (target = this.data('_jqs_vcanvas'))) {\n return target;\n }\n\n if ($.fn.sparkline.canvas === false) {\n // We've already determined that neither Canvas nor VML are available\n return false;\n\n } else if ($.fn.sparkline.canvas === undefined) {\n // No function defined yet -- need to see if we support Canvas or VML\n var el = document.createElement('canvas');\n if (!!(el.getContext && el.getContext('2d'))) {\n // Canvas is available\n $.fn.sparkline.canvas = function(width, height, target, interact) {\n return new VCanvas_canvas(width, height, target, interact);\n };\n } else if (document.namespaces && !document.namespaces.v) {\n // VML is available\n document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML');\n $.fn.sparkline.canvas = function(width, height, target, interact) {\n return new VCanvas_vml(width, height, target);\n };\n } else {\n // Neither Canvas nor VML are available\n $.fn.sparkline.canvas = false;\n return false;\n }\n }\n\n if (width === undefined) {\n width = $(this).innerWidth();\n }\n if (height === undefined) {\n height = $(this).innerHeight();\n }\n\n target = $.fn.sparkline.canvas(width, height, this, interact);\n\n mhandler = $(this).data('_jqs_mhandler');\n if (mhandler) {\n mhandler.registerCanvas(target);\n }\n return target;\n };\n\n $.fn.cleardraw = function () {\n var target = this.data('_jqs_vcanvas');\n if (target) {\n target.reset();\n }\n };\n\n $.RangeMapClass = RangeMap = createClass({\n init: function (map) {\n var key, range, rangelist = [];\n for (key in map) {\n if (map.hasOwnProperty(key) && typeof key === 'string' && key.indexOf(':') > -1) {\n range = key.split(':');\n range[0] = range[0].length === 0 ? -Infinity : parseFloat(range[0]);\n range[1] = range[1].length === 0 ? Infinity : parseFloat(range[1]);\n range[2] = map[key];\n rangelist.push(range);\n }\n }\n this.map = map;\n this.rangelist = rangelist || false;\n },\n\n get: function (value) {\n var rangelist = this.rangelist,\n i, range, result;\n if ((result = this.map[value]) !== undefined) {\n return result;\n }\n if (rangelist) {\n for (i = rangelist.length; i--;) {\n range = rangelist[i];\n if (range[0] <= value && range[1] >= value) {\n return range[2];\n }\n }\n }\n return undefined;\n }\n });\n\n // Convenience function\n $.range_map = function(map) {\n return new RangeMap(map);\n };\n\n MouseHandler = createClass({\n init: function (el, options) {\n var $el = $(el);\n this.$el = $el;\n this.options = options;\n this.currentPageX = 0;\n this.currentPageY = 0;\n this.el = el;\n this.splist = [];\n this.tooltip = null;\n this.over = false;\n this.displayTooltips = !options.get('disableTooltips');\n this.highlightEnabled = !options.get('disableHighlight');\n },\n\n registerSparkline: function (sp) {\n this.splist.push(sp);\n if (this.over) {\n this.updateDisplay();\n }\n },\n\n registerCanvas: function (canvas) {\n var $canvas = $(canvas.canvas);\n this.canvas = canvas;\n this.$canvas = $canvas;\n $canvas.mouseenter($.proxy(this.mouseenter, this));\n $canvas.mouseleave($.proxy(this.mouseleave, this));\n $canvas.click($.proxy(this.mouseclick, this));\n },\n\n reset: function (removeTooltip) {\n this.splist = [];\n if (this.tooltip && removeTooltip) {\n this.tooltip.remove();\n this.tooltip = undefined;\n }\n },\n\n mouseclick: function (e) {\n var clickEvent = $.Event('sparklineClick');\n clickEvent.originalEvent = e;\n clickEvent.sparklines = this.splist;\n this.$el.trigger(clickEvent);\n },\n\n mouseenter: function (e) {\n $(document.body).unbind('mousemove.jqs');\n $(document.body).bind('mousemove.jqs', $.proxy(this.mousemove, this));\n this.over = true;\n this.currentPageX = e.pageX;\n this.currentPageY = e.pageY;\n this.currentEl = e.target;\n if (!this.tooltip && this.displayTooltips) {\n this.tooltip = new Tooltip(this.options);\n this.tooltip.updatePosition(e.pageX, e.pageY);\n }\n this.updateDisplay();\n },\n\n mouseleave: function () {\n $(document.body).unbind('mousemove.jqs');\n var splist = this.splist,\n spcount = splist.length,\n needsRefresh = false,\n sp, i;\n this.over = false;\n this.currentEl = null;\n\n if (this.tooltip) {\n this.tooltip.remove();\n this.tooltip = null;\n }\n\n for (i = 0; i < spcount; i++) {\n sp = splist[i];\n if (sp.clearRegionHighlight()) {\n needsRefresh = true;\n }\n }\n\n if (needsRefresh) {\n this.canvas.render();\n }\n },\n\n mousemove: function (e) {\n this.currentPageX = e.pageX;\n this.currentPageY = e.pageY;\n this.currentEl = e.target;\n if (this.tooltip) {\n this.tooltip.updatePosition(e.pageX, e.pageY);\n }\n this.updateDisplay();\n },\n\n updateDisplay: function () {\n var splist = this.splist,\n spcount = splist.length,\n needsRefresh = false,\n offset = this.$canvas.offset(),\n localX = this.currentPageX - offset.left,\n localY = this.currentPageY - offset.top,\n tooltiphtml, sp, i, result, changeEvent;\n if (!this.over) {\n return;\n }\n for (i = 0; i < spcount; i++) {\n sp = splist[i];\n result = sp.setRegionHighlight(this.currentEl, localX, localY);\n if (result) {\n needsRefresh = true;\n }\n }\n if (needsRefresh) {\n changeEvent = $.Event('sparklineRegionChange');\n changeEvent.sparklines = this.splist;\n this.$el.trigger(changeEvent);\n if (this.tooltip) {\n tooltiphtml = '';\n for (i = 0; i < spcount; i++) {\n sp = splist[i];\n tooltiphtml += sp.getCurrentRegionTooltip();\n }\n this.tooltip.setContent(tooltiphtml);\n }\n if (!this.disableHighlight) {\n this.canvas.render();\n }\n }\n if (result === null) {\n this.mouseleave();\n }\n }\n });\n\n\n Tooltip = createClass({\n sizeStyle: 'position: static !important;' +\n 'display: block !important;' +\n 'visibility: hidden !important;' +\n 'float: left !important;',\n\n init: function (options) {\n var tooltipClassname = options.get('tooltipClassname', 'jqstooltip'),\n sizetipStyle = this.sizeStyle,\n offset;\n this.container = options.get('tooltipContainer') || document.body;\n this.tooltipOffsetX = options.get('tooltipOffsetX', 10);\n this.tooltipOffsetY = options.get('tooltipOffsetY', 12);\n // remove any previous lingering tooltip\n $('#jqssizetip').remove();\n $('#jqstooltip').remove();\n this.sizetip = $('
    ', {\n id: 'jqssizetip',\n style: sizetipStyle,\n 'class': tooltipClassname\n });\n this.tooltip = $('
    ', {\n id: 'jqstooltip',\n 'class': tooltipClassname\n }).appendTo(this.container);\n // account for the container's location\n offset = this.tooltip.offset();\n this.offsetLeft = offset.left;\n this.offsetTop = offset.top;\n this.hidden = true;\n $(window).unbind('resize.jqs scroll.jqs');\n $(window).bind('resize.jqs scroll.jqs', $.proxy(this.updateWindowDims, this));\n this.updateWindowDims();\n },\n\n updateWindowDims: function () {\n this.scrollTop = $(window).scrollTop();\n this.scrollLeft = $(window).scrollLeft();\n this.scrollRight = this.scrollLeft + $(window).width();\n this.updatePosition();\n },\n\n getSize: function (content) {\n this.sizetip.html(content).appendTo(this.container);\n this.width = this.sizetip.width() + 1;\n this.height = this.sizetip.height();\n this.sizetip.remove();\n },\n\n setContent: function (content) {\n if (!content) {\n this.tooltip.css('visibility', 'hidden');\n this.hidden = true;\n return;\n }\n this.getSize(content);\n this.tooltip.html(content)\n .css({\n 'width': this.width,\n 'height': this.height,\n 'visibility': 'visible'\n });\n if (this.hidden) {\n this.hidden = false;\n this.updatePosition();\n }\n },\n\n updatePosition: function (x, y) {\n if (x === undefined) {\n if (this.mousex === undefined) {\n return;\n }\n x = this.mousex - this.offsetLeft;\n y = this.mousey - this.offsetTop;\n\n } else {\n this.mousex = x = x - this.offsetLeft;\n this.mousey = y = y - this.offsetTop;\n }\n if (!this.height || !this.width || this.hidden) {\n return;\n }\n\n y -= this.height + this.tooltipOffsetY;\n x += this.tooltipOffsetX;\n\n if (y < this.scrollTop) {\n y = this.scrollTop;\n }\n if (x < this.scrollLeft) {\n x = this.scrollLeft;\n } else if (x + this.width > this.scrollRight) {\n x = this.scrollRight - this.width;\n }\n\n this.tooltip.css({\n 'left': x,\n 'top': y\n });\n },\n\n remove: function () {\n this.tooltip.remove();\n this.sizetip.remove();\n this.sizetip = this.tooltip = undefined;\n $(window).unbind('resize.jqs scroll.jqs');\n }\n });\n\n initStyles = function() {\n addCSS(defaultStyles);\n };\n\n $(initStyles);\n\n pending = [];\n $.fn.sparkline = function (userValues, userOptions) {\n return this.each(function () {\n var options = new $.fn.sparkline.options(this, userOptions),\n $this = $(this),\n render, i;\n render = function () {\n var values, width, height, tmp, mhandler, sp, vals;\n if (userValues === 'html' || userValues === undefined) {\n vals = this.getAttribute(options.get('tagValuesAttribute'));\n if (vals === undefined || vals === null) {\n vals = $this.html();\n }\n values = vals.replace(/(^\\s*\\s*$)|\\s+/g, '').split(',');\n } else {\n values = userValues;\n }\n\n width = options.get('width') === 'auto' ? values.length * options.get('defaultPixelsPerValue') : options.get('width');\n if (options.get('height') === 'auto') {\n if (!options.get('composite') || !$.data(this, '_jqs_vcanvas')) {\n // must be a better way to get the line height\n tmp = document.createElement('span');\n tmp.innerHTML = 'a';\n $this.html(tmp);\n height = $(tmp).innerHeight() || $(tmp).height();\n $(tmp).remove();\n tmp = null;\n }\n } else {\n height = options.get('height');\n }\n\n if (!options.get('disableInteraction')) {\n mhandler = $.data(this, '_jqs_mhandler');\n if (!mhandler) {\n mhandler = new MouseHandler(this, options);\n $.data(this, '_jqs_mhandler', mhandler);\n } else if (!options.get('composite')) {\n mhandler.reset();\n }\n } else {\n mhandler = false;\n }\n\n if (options.get('composite') && !$.data(this, '_jqs_vcanvas')) {\n if (!$.data(this, '_jqs_errnotify')) {\n alert('Attempted to attach a composite sparkline to an element with no existing sparkline');\n $.data(this, '_jqs_errnotify', true);\n }\n return;\n }\n\n sp = new $.fn.sparkline[options.get('type')](this, values, options, width, height);\n\n sp.render();\n\n if (mhandler) {\n mhandler.registerSparkline(sp);\n }\n };\n if (($(this).html() && !options.get('disableHiddenCheck') && $(this).is(':hidden')) || !$(this).parents('body').length) {\n if (!options.get('composite') && $.data(this, '_jqs_pending')) {\n // remove any existing references to the element\n for (i = pending.length; i; i--) {\n if (pending[i - 1][0] == this) {\n pending.splice(i - 1, 1);\n }\n }\n }\n pending.push([this, render]);\n $.data(this, '_jqs_pending', true);\n } else {\n render.call(this);\n }\n });\n };\n\n $.fn.sparkline.defaults = getDefaults();\n\n\n $.sparkline_display_visible = function () {\n var el, i, pl;\n var done = [];\n for (i = 0, pl = pending.length; i < pl; i++) {\n el = pending[i][0];\n if ($(el).is(':visible') && !$(el).parents().is(':hidden')) {\n pending[i][1].call(el);\n $.data(pending[i][0], '_jqs_pending', false);\n done.push(i);\n } else if (!$(el).closest('html').length && !$.data(el, '_jqs_pending')) {\n // element has been inserted and removed from the DOM\n // If it was not yet inserted into the dom then the .data request\n // will return true.\n // removing from the dom causes the data to be removed.\n $.data(pending[i][0], '_jqs_pending', false);\n done.push(i);\n }\n }\n for (i = done.length; i; i--) {\n pending.splice(done[i - 1], 1);\n }\n };\n\n\n /**\n * User option handler\n */\n $.fn.sparkline.options = createClass({\n init: function (tag, userOptions) {\n var extendedOptions, defaults, base, tagOptionType;\n this.userOptions = userOptions = userOptions || {};\n this.tag = tag;\n this.tagValCache = {};\n defaults = $.fn.sparkline.defaults;\n base = defaults.common;\n this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix);\n\n tagOptionType = this.getTagSetting('type');\n if (tagOptionType === UNSET_OPTION) {\n extendedOptions = defaults[userOptions.type || base.type];\n } else {\n extendedOptions = defaults[tagOptionType];\n }\n this.mergedOptions = $.extend({}, base, extendedOptions, userOptions);\n },\n\n\n getTagSetting: function (key) {\n var prefix = this.tagOptionsPrefix,\n val, i, pairs, keyval;\n if (prefix === false || prefix === undefined) {\n return UNSET_OPTION;\n }\n if (this.tagValCache.hasOwnProperty(key)) {\n val = this.tagValCache.key;\n } else {\n val = this.tag.getAttribute(prefix + key);\n if (val === undefined || val === null) {\n val = UNSET_OPTION;\n } else if (val.substr(0, 1) === '[') {\n val = val.substr(1, val.length - 2).split(',');\n for (i = val.length; i--;) {\n val[i] = normalizeValue(val[i].replace(/(^\\s*)|(\\s*$)/g, ''));\n }\n } else if (val.substr(0, 1) === '{') {\n pairs = val.substr(1, val.length - 2).split(',');\n val = {};\n for (i = pairs.length; i--;) {\n keyval = pairs[i].split(':', 2);\n val[keyval[0].replace(/(^\\s*)|(\\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\\s*)|(\\s*$)/g, ''));\n }\n } else {\n val = normalizeValue(val);\n }\n this.tagValCache.key = val;\n }\n return val;\n },\n\n get: function (key, defaultval) {\n var tagOption = this.getTagSetting(key),\n result;\n if (tagOption !== UNSET_OPTION) {\n return tagOption;\n }\n return (result = this.mergedOptions[key]) === undefined ? defaultval : result;\n }\n });\n\n\n $.fn.sparkline._base = createClass({\n disabled: false,\n\n init: function (el, values, options, width, height) {\n this.el = el;\n this.$el = $(el);\n this.values = values;\n this.options = options;\n this.width = width;\n this.height = height;\n this.currentRegion = undefined;\n },\n\n /**\n * Setup the canvas\n */\n initTarget: function () {\n var interactive = !this.options.get('disableInteraction');\n if (!(this.target = this.$el.simpledraw(this.width, this.height, this.options.get('composite'), interactive))) {\n this.disabled = true;\n } else {\n this.canvasWidth = this.target.pixelWidth;\n this.canvasHeight = this.target.pixelHeight;\n }\n },\n\n /**\n * Actually render the chart to the canvas\n */\n render: function () {\n if (this.disabled) {\n this.el.innerHTML = '';\n return false;\n }\n return true;\n },\n\n /**\n * Return a region id for a given x/y co-ordinate\n */\n getRegion: function (x, y) {\n },\n\n /**\n * Highlight an item based on the moused-over x,y co-ordinate\n */\n setRegionHighlight: function (el, x, y) {\n var currentRegion = this.currentRegion,\n highlightEnabled = !this.options.get('disableHighlight'),\n newRegion;\n if (x > this.canvasWidth || y > this.canvasHeight || x < 0 || y < 0) {\n return null;\n }\n newRegion = this.getRegion(el, x, y);\n if (currentRegion !== newRegion) {\n if (currentRegion !== undefined && highlightEnabled) {\n this.removeHighlight();\n }\n this.currentRegion = newRegion;\n if (newRegion !== undefined && highlightEnabled) {\n this.renderHighlight();\n }\n return true;\n }\n return false;\n },\n\n /**\n * Reset any currently highlighted item\n */\n clearRegionHighlight: function () {\n if (this.currentRegion !== undefined) {\n this.removeHighlight();\n this.currentRegion = undefined;\n return true;\n }\n return false;\n },\n\n renderHighlight: function () {\n this.changeHighlight(true);\n },\n\n removeHighlight: function () {\n this.changeHighlight(false);\n },\n\n changeHighlight: function (highlight) {},\n\n /**\n * Fetch the HTML to display as a tooltip\n */\n getCurrentRegionTooltip: function () {\n var options = this.options,\n header = '',\n entries = [],\n fields, formats, formatlen, fclass, text, i,\n showFields, showFieldsKey, newFields, fv,\n formatter, format, fieldlen, j;\n if (this.currentRegion === undefined) {\n return '';\n }\n fields = this.getCurrentRegionFields();\n formatter = options.get('tooltipFormatter');\n if (formatter) {\n return formatter(this, options, fields);\n }\n if (options.get('tooltipChartTitle')) {\n header += '
    ' + options.get('tooltipChartTitle') + '
    \\n';\n }\n formats = this.options.get('tooltipFormat');\n if (!formats) {\n return '';\n }\n if (!$.isArray(formats)) {\n formats = [formats];\n }\n if (!$.isArray(fields)) {\n fields = [fields];\n }\n showFields = this.options.get('tooltipFormatFieldlist');\n showFieldsKey = this.options.get('tooltipFormatFieldlistKey');\n if (showFields && showFieldsKey) {\n // user-selected ordering of fields\n newFields = [];\n for (i = fields.length; i--;) {\n fv = fields[i][showFieldsKey];\n if ((j = $.inArray(fv, showFields)) != -1) {\n newFields[j] = fields[i];\n }\n }\n fields = newFields;\n }\n formatlen = formats.length;\n fieldlen = fields.length;\n for (i = 0; i < formatlen; i++) {\n format = formats[i];\n if (typeof format === 'string') {\n format = new SPFormat(format);\n }\n fclass = format.fclass || 'jqsfield';\n for (j = 0; j < fieldlen; j++) {\n if (!fields[j].isNull || !options.get('tooltipSkipNull')) {\n $.extend(fields[j], {\n prefix: options.get('tooltipPrefix'),\n suffix: options.get('tooltipSuffix')\n });\n text = format.render(fields[j], options.get('tooltipValueLookups'), options);\n entries.push('
    ' + text + '
    ');\n }\n }\n }\n if (entries.length) {\n return header + entries.join('\\n');\n }\n return '';\n },\n\n getCurrentRegionFields: function () {},\n\n calcHighlightColor: function (color, options) {\n var highlightColor = options.get('highlightColor'),\n lighten = options.get('highlightLighten'),\n parse, mult, rgbnew, i;\n if (highlightColor) {\n return highlightColor;\n }\n if (lighten) {\n // extract RGB values\n parse = /^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(color) || /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color);\n if (parse) {\n rgbnew = [];\n mult = color.length === 4 ? 16 : 1;\n for (i = 0; i < 3; i++) {\n rgbnew[i] = clipval(Math.round(parseInt(parse[i + 1], 16) * mult * lighten), 0, 255);\n }\n return 'rgb(' + rgbnew.join(',') + ')';\n }\n\n }\n return color;\n }\n\n });\n\n barHighlightMixin = {\n changeHighlight: function (highlight) {\n var currentRegion = this.currentRegion,\n target = this.target,\n shapeids = this.regionShapes[currentRegion],\n newShapes;\n // will be null if the region value was null\n if (shapeids) {\n newShapes = this.renderRegion(currentRegion, highlight);\n if ($.isArray(newShapes) || $.isArray(shapeids)) {\n target.replaceWithShapes(shapeids, newShapes);\n this.regionShapes[currentRegion] = $.map(newShapes, function (newShape) {\n return newShape.id;\n });\n } else {\n target.replaceWithShape(shapeids, newShapes);\n this.regionShapes[currentRegion] = newShapes.id;\n }\n }\n },\n\n render: function () {\n var values = this.values,\n target = this.target,\n regionShapes = this.regionShapes,\n shapes, ids, i, j;\n\n if (!this.cls._super.render.call(this)) {\n return;\n }\n for (i = values.length; i--;) {\n shapes = this.renderRegion(i);\n if (shapes) {\n if ($.isArray(shapes)) {\n ids = [];\n for (j = shapes.length; j--;) {\n shapes[j].append();\n ids.push(shapes[j].id);\n }\n regionShapes[i] = ids;\n } else {\n shapes.append();\n regionShapes[i] = shapes.id; // store just the shapeid\n }\n } else {\n // null value\n regionShapes[i] = null;\n }\n }\n target.render();\n }\n };\n\n /**\n * Line charts\n */\n $.fn.sparkline.line = line = createClass($.fn.sparkline._base, {\n type: 'line',\n\n init: function (el, values, options, width, height) {\n line._super.init.call(this, el, values, options, width, height);\n this.vertices = [];\n this.regionMap = [];\n this.xvalues = [];\n this.yvalues = [];\n this.yminmax = [];\n this.hightlightSpotId = null;\n this.lastShapeId = null;\n this.initTarget();\n },\n\n getRegion: function (el, x, y) {\n var i,\n regionMap = this.regionMap; // maps regions to value positions\n for (i = regionMap.length; i--;) {\n if (regionMap[i] !== null && x >= regionMap[i][0] && x <= regionMap[i][1]) {\n return regionMap[i][2];\n }\n }\n return undefined;\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion;\n return {\n isNull: this.yvalues[currentRegion] === null,\n x: this.xvalues[currentRegion],\n y: this.yvalues[currentRegion],\n color: this.options.get('lineColor'),\n fillColor: this.options.get('fillColor'),\n offset: currentRegion\n };\n },\n\n renderHighlight: function () {\n var currentRegion = this.currentRegion,\n target = this.target,\n vertex = this.vertices[currentRegion],\n options = this.options,\n spotRadius = options.get('spotRadius'),\n highlightSpotColor = options.get('highlightSpotColor'),\n highlightLineColor = options.get('highlightLineColor'),\n highlightSpot, highlightLine;\n\n if (!vertex) {\n return;\n }\n if (spotRadius && highlightSpotColor) {\n highlightSpot = target.drawCircle(vertex[0], vertex[1],\n spotRadius, undefined, highlightSpotColor);\n this.highlightSpotId = highlightSpot.id;\n target.insertAfterShape(this.lastShapeId, highlightSpot);\n }\n if (highlightLineColor) {\n highlightLine = target.drawLine(vertex[0], this.canvasTop, vertex[0],\n this.canvasTop + this.canvasHeight, highlightLineColor);\n this.highlightLineId = highlightLine.id;\n target.insertAfterShape(this.lastShapeId, highlightLine);\n }\n },\n\n removeHighlight: function () {\n var target = this.target;\n if (this.highlightSpotId) {\n target.removeShapeId(this.highlightSpotId);\n this.highlightSpotId = null;\n }\n if (this.highlightLineId) {\n target.removeShapeId(this.highlightLineId);\n this.highlightLineId = null;\n }\n },\n\n scanValues: function () {\n var values = this.values,\n valcount = values.length,\n xvalues = this.xvalues,\n yvalues = this.yvalues,\n yminmax = this.yminmax,\n i, val, isStr, isArray, sp;\n for (i = 0; i < valcount; i++) {\n val = values[i];\n isStr = typeof(values[i]) === 'string';\n isArray = typeof(values[i]) === 'object' && values[i] instanceof Array;\n sp = isStr && values[i].split(':');\n if (isStr && sp.length === 2) { // x:y\n xvalues.push(Number(sp[0]));\n yvalues.push(Number(sp[1]));\n yminmax.push(Number(sp[1]));\n } else if (isArray) {\n xvalues.push(val[0]);\n yvalues.push(val[1]);\n yminmax.push(val[1]);\n } else {\n xvalues.push(i);\n if (values[i] === null || values[i] === 'null') {\n yvalues.push(null);\n } else {\n yvalues.push(Number(val));\n yminmax.push(Number(val));\n }\n }\n }\n if (this.options.get('xvalues')) {\n xvalues = this.options.get('xvalues');\n }\n\n this.maxy = this.maxyorg = Math.max.apply(Math, yminmax);\n this.miny = this.minyorg = Math.min.apply(Math, yminmax);\n\n this.maxx = Math.max.apply(Math, xvalues);\n this.minx = Math.min.apply(Math, xvalues);\n\n this.xvalues = xvalues;\n this.yvalues = yvalues;\n this.yminmax = yminmax;\n\n },\n\n processRangeOptions: function () {\n var options = this.options,\n normalRangeMin = options.get('normalRangeMin'),\n normalRangeMax = options.get('normalRangeMax');\n\n if (normalRangeMin !== undefined) {\n if (normalRangeMin < this.miny) {\n this.miny = normalRangeMin;\n }\n if (normalRangeMax > this.maxy) {\n this.maxy = normalRangeMax;\n }\n }\n if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.miny)) {\n this.miny = options.get('chartRangeMin');\n }\n if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.maxy)) {\n this.maxy = options.get('chartRangeMax');\n }\n if (options.get('chartRangeMinX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMinX') < this.minx)) {\n this.minx = options.get('chartRangeMinX');\n }\n if (options.get('chartRangeMaxX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMaxX') > this.maxx)) {\n this.maxx = options.get('chartRangeMaxX');\n }\n\n },\n\n drawNormalRange: function (canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey) {\n var normalRangeMin = this.options.get('normalRangeMin'),\n normalRangeMax = this.options.get('normalRangeMax'),\n ytop = canvasTop + Math.round(canvasHeight - (canvasHeight * ((normalRangeMax - this.miny) / rangey))),\n height = Math.round((canvasHeight * (normalRangeMax - normalRangeMin)) / rangey);\n this.target.drawRect(canvasLeft, ytop, canvasWidth, height, undefined, this.options.get('normalRangeColor')).append();\n },\n\n render: function () {\n var options = this.options,\n target = this.target,\n canvasWidth = this.canvasWidth,\n canvasHeight = this.canvasHeight,\n vertices = this.vertices,\n spotRadius = options.get('spotRadius'),\n regionMap = this.regionMap,\n rangex, rangey, yvallast,\n canvasTop, canvasLeft,\n vertex, path, paths, x, y, xnext, xpos, xposnext,\n last, next, yvalcount, lineShapes, fillShapes, plen,\n valueSpots, hlSpotsEnabled, color, xvalues, yvalues, i;\n\n if (!line._super.render.call(this)) {\n return;\n }\n\n this.scanValues();\n this.processRangeOptions();\n\n xvalues = this.xvalues;\n yvalues = this.yvalues;\n\n if (!this.yminmax.length || this.yvalues.length < 2) {\n // empty or all null valuess\n return;\n }\n\n canvasTop = canvasLeft = 0;\n\n rangex = this.maxx - this.minx === 0 ? 1 : this.maxx - this.minx;\n rangey = this.maxy - this.miny === 0 ? 1 : this.maxy - this.miny;\n yvallast = this.yvalues.length - 1;\n\n if (spotRadius && (canvasWidth < (spotRadius * 4) || canvasHeight < (spotRadius * 4))) {\n spotRadius = 0;\n }\n if (spotRadius) {\n // adjust the canvas size as required so that spots will fit\n hlSpotsEnabled = options.get('highlightSpotColor') && !options.get('disableInteraction');\n if (hlSpotsEnabled || options.get('minSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.miny)) {\n canvasHeight -= Math.ceil(spotRadius);\n }\n if (hlSpotsEnabled || options.get('maxSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.maxy)) {\n canvasHeight -= Math.ceil(spotRadius);\n canvasTop += Math.ceil(spotRadius);\n }\n if (hlSpotsEnabled ||\n ((options.get('minSpotColor') || options.get('maxSpotColor')) && (yvalues[0] === this.miny || yvalues[0] === this.maxy))) {\n canvasLeft += Math.ceil(spotRadius);\n canvasWidth -= Math.ceil(spotRadius);\n }\n if (hlSpotsEnabled || options.get('spotColor') ||\n (options.get('minSpotColor') || options.get('maxSpotColor') &&\n (yvalues[yvallast] === this.miny || yvalues[yvallast] === this.maxy))) {\n canvasWidth -= Math.ceil(spotRadius);\n }\n }\n\n\n canvasHeight--;\n\n if (options.get('normalRangeMin') !== undefined && !options.get('drawNormalOnTop')) {\n this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n }\n\n path = [];\n paths = [path];\n last = next = null;\n yvalcount = yvalues.length;\n for (i = 0; i < yvalcount; i++) {\n x = xvalues[i];\n xnext = xvalues[i + 1];\n y = yvalues[i];\n xpos = canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex));\n xposnext = i < yvalcount - 1 ? canvasLeft + Math.round((xnext - this.minx) * (canvasWidth / rangex)) : canvasWidth;\n next = xpos + ((xposnext - xpos) / 2);\n regionMap[i] = [last || 0, next, i];\n last = next;\n if (y === null) {\n if (i) {\n if (yvalues[i - 1] !== null) {\n path = [];\n paths.push(path);\n }\n vertices.push(null);\n }\n } else {\n if (y < this.miny) {\n y = this.miny;\n }\n if (y > this.maxy) {\n y = this.maxy;\n }\n if (!path.length) {\n // previous value was null\n path.push([xpos, canvasTop + canvasHeight]);\n }\n vertex = [xpos, canvasTop + Math.round(canvasHeight - (canvasHeight * ((y - this.miny) / rangey)))];\n path.push(vertex);\n vertices.push(vertex);\n }\n }\n\n lineShapes = [];\n fillShapes = [];\n plen = paths.length;\n for (i = 0; i < plen; i++) {\n path = paths[i];\n if (path.length) {\n if (options.get('fillColor')) {\n path.push([path[path.length - 1][0], (canvasTop + canvasHeight)]);\n fillShapes.push(path.slice(0));\n path.pop();\n }\n // if there's only a single point in this path, then we want to display it\n // as a vertical line which means we keep path[0] as is\n if (path.length > 2) {\n // else we want the first value\n path[0] = [path[0][0], path[1][1]];\n }\n lineShapes.push(path);\n }\n }\n\n // draw the fill first, then optionally the normal range, then the line on top of that\n plen = fillShapes.length;\n for (i = 0; i < plen; i++) {\n target.drawShape(fillShapes[i],\n options.get('fillColor'), options.get('fillColor')).append();\n }\n\n if (options.get('normalRangeMin') !== undefined && options.get('drawNormalOnTop')) {\n this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n }\n\n plen = lineShapes.length;\n for (i = 0; i < plen; i++) {\n target.drawShape(lineShapes[i], options.get('lineColor'), undefined,\n options.get('lineWidth')).append();\n }\n\n if (spotRadius && options.get('valueSpots')) {\n valueSpots = options.get('valueSpots');\n if (valueSpots.get === undefined) {\n valueSpots = new RangeMap(valueSpots);\n }\n for (i = 0; i < yvalcount; i++) {\n color = valueSpots.get(yvalues[i]);\n if (color) {\n target.drawCircle(canvasLeft + Math.round((xvalues[i] - this.minx) * (canvasWidth / rangex)),\n canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[i] - this.miny) / rangey))),\n spotRadius, undefined,\n color).append();\n }\n }\n\n }\n if (spotRadius && options.get('spotColor') && yvalues[yvallast] !== null) {\n target.drawCircle(canvasLeft + Math.round((xvalues[xvalues.length - 1] - this.minx) * (canvasWidth / rangex)),\n canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[yvallast] - this.miny) / rangey))),\n spotRadius, undefined,\n options.get('spotColor')).append();\n }\n if (this.maxy !== this.minyorg) {\n if (spotRadius && options.get('minSpotColor')) {\n x = xvalues[$.inArray(this.minyorg, yvalues)];\n target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.minyorg - this.miny) / rangey))),\n spotRadius, undefined,\n options.get('minSpotColor')).append();\n }\n if (spotRadius && options.get('maxSpotColor')) {\n x = xvalues[$.inArray(this.maxyorg, yvalues)];\n target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.maxyorg - this.miny) / rangey))),\n spotRadius, undefined,\n options.get('maxSpotColor')).append();\n }\n }\n\n this.lastShapeId = target.getLastShapeId();\n this.canvasTop = canvasTop;\n target.render();\n }\n });\n\n /**\n * Bar charts\n */\n $.fn.sparkline.bar = bar = createClass($.fn.sparkline._base, barHighlightMixin, {\n type: 'bar',\n\n init: function (el, values, options, width, height) {\n var barWidth = parseInt(options.get('barWidth'), 10),\n barSpacing = parseInt(options.get('barSpacing'), 10),\n chartRangeMin = options.get('chartRangeMin'),\n chartRangeMax = options.get('chartRangeMax'),\n chartRangeClip = options.get('chartRangeClip'),\n stackMin = Infinity,\n stackMax = -Infinity,\n isStackString, groupMin, groupMax, stackRanges,\n numValues, i, vlen, range, zeroAxis, xaxisOffset, min, max, clipMin, clipMax,\n stacked, vlist, j, slen, svals, val, yoffset, yMaxCalc, canvasHeightEf;\n bar._super.init.call(this, el, values, options, width, height);\n\n // scan values to determine whether to stack bars\n for (i = 0, vlen = values.length; i < vlen; i++) {\n val = values[i];\n isStackString = typeof(val) === 'string' && val.indexOf(':') > -1;\n if (isStackString || $.isArray(val)) {\n stacked = true;\n if (isStackString) {\n val = values[i] = normalizeValues(val.split(':'));\n }\n val = remove(val, null); // min/max will treat null as zero\n groupMin = Math.min.apply(Math, val);\n groupMax = Math.max.apply(Math, val);\n if (groupMin < stackMin) {\n stackMin = groupMin;\n }\n if (groupMax > stackMax) {\n stackMax = groupMax;\n }\n }\n }\n\n this.stacked = stacked;\n this.regionShapes = {};\n this.barWidth = barWidth;\n this.barSpacing = barSpacing;\n this.totalBarWidth = barWidth + barSpacing;\n this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n this.initTarget();\n\n if (chartRangeClip) {\n clipMin = chartRangeMin === undefined ? -Infinity : chartRangeMin;\n clipMax = chartRangeMax === undefined ? Infinity : chartRangeMax;\n }\n\n numValues = [];\n stackRanges = stacked ? [] : numValues;\n var stackTotals = [];\n var stackRangesNeg = [];\n for (i = 0, vlen = values.length; i < vlen; i++) {\n if (stacked) {\n vlist = values[i];\n values[i] = svals = [];\n stackTotals[i] = 0;\n stackRanges[i] = stackRangesNeg[i] = 0;\n for (j = 0, slen = vlist.length; j < slen; j++) {\n val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j];\n if (val !== null) {\n if (val > 0) {\n stackTotals[i] += val;\n }\n if (stackMin < 0 && stackMax > 0) {\n if (val < 0) {\n stackRangesNeg[i] += Math.abs(val);\n } else {\n stackRanges[i] += val;\n }\n } else {\n stackRanges[i] += Math.abs(val - (val < 0 ? stackMax : stackMin));\n }\n numValues.push(val);\n }\n }\n } else {\n val = chartRangeClip ? clipval(values[i], clipMin, clipMax) : values[i];\n val = values[i] = normalizeValue(val);\n if (val !== null) {\n numValues.push(val);\n }\n }\n }\n this.max = max = Math.max.apply(Math, numValues);\n this.min = min = Math.min.apply(Math, numValues);\n this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max;\n this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min;\n\n if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < min)) {\n min = options.get('chartRangeMin');\n }\n if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > max)) {\n max = options.get('chartRangeMax');\n }\n\n this.zeroAxis = zeroAxis = options.get('zeroAxis', true);\n if (min <= 0 && max >= 0 && zeroAxis) {\n xaxisOffset = 0;\n } else if (zeroAxis == false) {\n xaxisOffset = min;\n } else if (min > 0) {\n xaxisOffset = min;\n } else {\n xaxisOffset = max;\n }\n this.xaxisOffset = xaxisOffset;\n\n range = stacked ? (Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg)) : max - min;\n\n // as we plot zero/min values a single pixel line, we add a pixel to all other\n // values - Reduce the effective canvas size to suit\n this.canvasHeightEf = (zeroAxis && min < 0) ? this.canvasHeight - 2 : this.canvasHeight - 1;\n\n if (min < xaxisOffset) {\n yMaxCalc = (stacked && max >= 0) ? stackMax : max;\n yoffset = (yMaxCalc - xaxisOffset) / range * this.canvasHeight;\n if (yoffset !== Math.ceil(yoffset)) {\n this.canvasHeightEf -= 2;\n yoffset = Math.ceil(yoffset);\n }\n } else {\n yoffset = this.canvasHeight;\n }\n this.yoffset = yoffset;\n\n if ($.isArray(options.get('colorMap'))) {\n this.colorMapByIndex = options.get('colorMap');\n this.colorMapByValue = null;\n } else {\n this.colorMapByIndex = null;\n this.colorMapByValue = options.get('colorMap');\n if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n this.colorMapByValue = new RangeMap(this.colorMapByValue);\n }\n }\n\n this.range = range;\n },\n\n getRegion: function (el, x, y) {\n var result = Math.floor(x / this.totalBarWidth);\n return (result < 0 || result >= this.values.length) ? undefined : result;\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion,\n values = ensureArray(this.values[currentRegion]),\n result = [],\n value, i;\n for (i = values.length; i--;) {\n value = values[i];\n result.push({\n isNull: value === null,\n value: value,\n color: this.calcColor(i, value, currentRegion),\n offset: currentRegion\n });\n }\n return result;\n },\n\n calcColor: function (stacknum, value, valuenum) {\n var colorMapByIndex = this.colorMapByIndex,\n colorMapByValue = this.colorMapByValue,\n options = this.options,\n color, newColor;\n if (this.stacked) {\n color = options.get('stackedBarColor');\n } else {\n color = (value < 0) ? options.get('negBarColor') : options.get('barColor');\n }\n if (value === 0 && options.get('zeroColor') !== undefined) {\n color = options.get('zeroColor');\n }\n if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n color = newColor;\n } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n color = colorMapByIndex[valuenum];\n }\n return $.isArray(color) ? color[stacknum % color.length] : color;\n },\n\n /**\n * Render bar(s) for a region\n */\n renderRegion: function (valuenum, highlight) {\n var vals = this.values[valuenum],\n options = this.options,\n xaxisOffset = this.xaxisOffset,\n result = [],\n range = this.range,\n stacked = this.stacked,\n target = this.target,\n x = valuenum * this.totalBarWidth,\n canvasHeightEf = this.canvasHeightEf,\n yoffset = this.yoffset,\n y, height, color, isNull, yoffsetNeg, i, valcount, val, minPlotted, allMin;\n\n vals = $.isArray(vals) ? vals : [vals];\n valcount = vals.length;\n val = vals[0];\n isNull = all(null, vals);\n allMin = all(xaxisOffset, vals, true);\n\n if (isNull) {\n if (options.get('nullColor')) {\n color = highlight ? options.get('nullColor') : this.calcHighlightColor(options.get('nullColor'), options);\n y = (yoffset > 0) ? yoffset - 1 : yoffset;\n return target.drawRect(x, y, this.barWidth - 1, 0, color, color);\n } else {\n return undefined;\n }\n }\n yoffsetNeg = yoffset;\n for (i = 0; i < valcount; i++) {\n val = vals[i];\n\n if (stacked && val === xaxisOffset) {\n if (!allMin || minPlotted) {\n continue;\n }\n minPlotted = true;\n }\n\n if (range > 0) {\n height = Math.floor(canvasHeightEf * ((Math.abs(val - xaxisOffset) / range))) + 1;\n } else {\n height = 1;\n }\n if (val < xaxisOffset || (val === xaxisOffset && yoffset === 0)) {\n y = yoffsetNeg;\n yoffsetNeg += height;\n } else {\n y = yoffset - height;\n yoffset -= height;\n }\n color = this.calcColor(i, val, valuenum);\n if (highlight) {\n color = this.calcHighlightColor(color, options);\n }\n result.push(target.drawRect(x, y, this.barWidth - 1, height - 1, color, color));\n }\n if (result.length === 1) {\n return result[0];\n }\n return result;\n }\n });\n\n /**\n * Tristate charts\n */\n $.fn.sparkline.tristate = tristate = createClass($.fn.sparkline._base, barHighlightMixin, {\n type: 'tristate',\n\n init: function (el, values, options, width, height) {\n var barWidth = parseInt(options.get('barWidth'), 10),\n barSpacing = parseInt(options.get('barSpacing'), 10);\n tristate._super.init.call(this, el, values, options, width, height);\n\n this.regionShapes = {};\n this.barWidth = barWidth;\n this.barSpacing = barSpacing;\n this.totalBarWidth = barWidth + barSpacing;\n this.values = $.map(values, Number);\n this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n if ($.isArray(options.get('colorMap'))) {\n this.colorMapByIndex = options.get('colorMap');\n this.colorMapByValue = null;\n } else {\n this.colorMapByIndex = null;\n this.colorMapByValue = options.get('colorMap');\n if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n this.colorMapByValue = new RangeMap(this.colorMapByValue);\n }\n }\n this.initTarget();\n },\n\n getRegion: function (el, x, y) {\n return Math.floor(x / this.totalBarWidth);\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion;\n return {\n isNull: this.values[currentRegion] === undefined,\n value: this.values[currentRegion],\n color: this.calcColor(this.values[currentRegion], currentRegion),\n offset: currentRegion\n };\n },\n\n calcColor: function (value, valuenum) {\n var values = this.values,\n options = this.options,\n colorMapByIndex = this.colorMapByIndex,\n colorMapByValue = this.colorMapByValue,\n color, newColor;\n\n if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n color = newColor;\n } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n color = colorMapByIndex[valuenum];\n } else if (values[valuenum] < 0) {\n color = options.get('negBarColor');\n } else if (values[valuenum] > 0) {\n color = options.get('posBarColor');\n } else {\n color = options.get('zeroBarColor');\n }\n return color;\n },\n\n renderRegion: function (valuenum, highlight) {\n var values = this.values,\n options = this.options,\n target = this.target,\n canvasHeight, height, halfHeight,\n x, y, color;\n\n canvasHeight = target.pixelHeight;\n halfHeight = Math.round(canvasHeight / 2);\n\n x = valuenum * this.totalBarWidth;\n if (values[valuenum] < 0) {\n y = halfHeight;\n height = halfHeight - 1;\n } else if (values[valuenum] > 0) {\n y = 0;\n height = halfHeight - 1;\n } else {\n y = halfHeight - 1;\n height = 2;\n }\n color = this.calcColor(values[valuenum], valuenum);\n if (color === null) {\n return;\n }\n if (highlight) {\n color = this.calcHighlightColor(color, options);\n }\n return target.drawRect(x, y, this.barWidth - 1, height - 1, color, color);\n }\n });\n\n /**\n * Discrete charts\n */\n $.fn.sparkline.discrete = discrete = createClass($.fn.sparkline._base, barHighlightMixin, {\n type: 'discrete',\n\n init: function (el, values, options, width, height) {\n discrete._super.init.call(this, el, values, options, width, height);\n\n this.regionShapes = {};\n this.values = values = $.map(values, Number);\n this.min = Math.min.apply(Math, values);\n this.max = Math.max.apply(Math, values);\n this.range = this.max - this.min;\n this.width = width = options.get('width') === 'auto' ? values.length * 2 : this.width;\n this.interval = Math.floor(width / values.length);\n this.itemWidth = width / values.length;\n if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.min)) {\n this.min = options.get('chartRangeMin');\n }\n if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.max)) {\n this.max = options.get('chartRangeMax');\n }\n this.initTarget();\n if (this.target) {\n this.lineHeight = options.get('lineHeight') === 'auto' ? Math.round(this.canvasHeight * 0.3) : options.get('lineHeight');\n }\n },\n\n getRegion: function (el, x, y) {\n return Math.floor(x / this.itemWidth);\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion;\n return {\n isNull: this.values[currentRegion] === undefined,\n value: this.values[currentRegion],\n offset: currentRegion\n };\n },\n\n renderRegion: function (valuenum, highlight) {\n var values = this.values,\n options = this.options,\n min = this.min,\n max = this.max,\n range = this.range,\n interval = this.interval,\n target = this.target,\n canvasHeight = this.canvasHeight,\n lineHeight = this.lineHeight,\n pheight = canvasHeight - lineHeight,\n ytop, val, color, x;\n\n val = clipval(values[valuenum], min, max);\n x = valuenum * interval;\n ytop = Math.round(pheight - pheight * ((val - min) / range));\n color = (options.get('thresholdColor') && val < options.get('thresholdValue')) ? options.get('thresholdColor') : options.get('lineColor');\n if (highlight) {\n color = this.calcHighlightColor(color, options);\n }\n return target.drawLine(x, ytop, x, ytop + lineHeight, color);\n }\n });\n\n /**\n * Bullet charts\n */\n $.fn.sparkline.bullet = bullet = createClass($.fn.sparkline._base, {\n type: 'bullet',\n\n init: function (el, values, options, width, height) {\n var min, max, vals;\n bullet._super.init.call(this, el, values, options, width, height);\n\n // values: target, performance, range1, range2, range3\n this.values = values = normalizeValues(values);\n // target or performance could be null\n vals = values.slice();\n vals[0] = vals[0] === null ? vals[2] : vals[0];\n vals[1] = values[1] === null ? vals[2] : vals[1];\n min = Math.min.apply(Math, values);\n max = Math.max.apply(Math, values);\n if (options.get('base') === undefined) {\n min = min < 0 ? min : 0;\n } else {\n min = options.get('base');\n }\n this.min = min;\n this.max = max;\n this.range = max - min;\n this.shapes = {};\n this.valueShapes = {};\n this.regiondata = {};\n this.width = width = options.get('width') === 'auto' ? '4.0em' : width;\n this.target = this.$el.simpledraw(width, height, options.get('composite'));\n if (!values.length) {\n this.disabled = true;\n }\n this.initTarget();\n },\n\n getRegion: function (el, x, y) {\n var shapeid = this.target.getShapeAt(el, x, y);\n return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion;\n return {\n fieldkey: currentRegion.substr(0, 1),\n value: this.values[currentRegion.substr(1)],\n region: currentRegion\n };\n },\n\n changeHighlight: function (highlight) {\n var currentRegion = this.currentRegion,\n shapeid = this.valueShapes[currentRegion],\n shape;\n delete this.shapes[shapeid];\n switch (currentRegion.substr(0, 1)) {\n case 'r':\n shape = this.renderRange(currentRegion.substr(1), highlight);\n break;\n case 'p':\n shape = this.renderPerformance(highlight);\n break;\n case 't':\n shape = this.renderTarget(highlight);\n break;\n }\n this.valueShapes[currentRegion] = shape.id;\n this.shapes[shape.id] = currentRegion;\n this.target.replaceWithShape(shapeid, shape);\n },\n\n renderRange: function (rn, highlight) {\n var rangeval = this.values[rn],\n rangewidth = Math.round(this.canvasWidth * ((rangeval - this.min) / this.range)),\n color = this.options.get('rangeColors')[rn - 2];\n if (highlight) {\n color = this.calcHighlightColor(color, this.options);\n }\n return this.target.drawRect(0, 0, rangewidth - 1, this.canvasHeight - 1, color, color);\n },\n\n renderPerformance: function (highlight) {\n var perfval = this.values[1],\n perfwidth = Math.round(this.canvasWidth * ((perfval - this.min) / this.range)),\n color = this.options.get('performanceColor');\n if (highlight) {\n color = this.calcHighlightColor(color, this.options);\n }\n return this.target.drawRect(0, Math.round(this.canvasHeight * 0.3), perfwidth - 1,\n Math.round(this.canvasHeight * 0.4) - 1, color, color);\n },\n\n renderTarget: function (highlight) {\n var targetval = this.values[0],\n x = Math.round(this.canvasWidth * ((targetval - this.min) / this.range) - (this.options.get('targetWidth') / 2)),\n targettop = Math.round(this.canvasHeight * 0.10),\n targetheight = this.canvasHeight - (targettop * 2),\n color = this.options.get('targetColor');\n if (highlight) {\n color = this.calcHighlightColor(color, this.options);\n }\n return this.target.drawRect(x, targettop, this.options.get('targetWidth') - 1, targetheight - 1, color, color);\n },\n\n render: function () {\n var vlen = this.values.length,\n target = this.target,\n i, shape;\n if (!bullet._super.render.call(this)) {\n return;\n }\n for (i = 2; i < vlen; i++) {\n shape = this.renderRange(i).append();\n this.shapes[shape.id] = 'r' + i;\n this.valueShapes['r' + i] = shape.id;\n }\n if (this.values[1] !== null) {\n shape = this.renderPerformance().append();\n this.shapes[shape.id] = 'p1';\n this.valueShapes.p1 = shape.id;\n }\n if (this.values[0] !== null) {\n shape = this.renderTarget().append();\n this.shapes[shape.id] = 't0';\n this.valueShapes.t0 = shape.id;\n }\n target.render();\n }\n });\n\n /**\n * Pie charts\n */\n $.fn.sparkline.pie = pie = createClass($.fn.sparkline._base, {\n type: 'pie',\n\n init: function (el, values, options, width, height) {\n var total = 0, i;\n\n pie._super.init.call(this, el, values, options, width, height);\n\n this.shapes = {}; // map shape ids to value offsets\n this.valueShapes = {}; // maps value offsets to shape ids\n this.values = values = $.map(values, Number);\n\n if (options.get('width') === 'auto') {\n this.width = this.height;\n }\n\n if (values.length > 0) {\n for (i = values.length; i--;) {\n total += values[i];\n }\n }\n this.total = total;\n this.initTarget();\n this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2);\n },\n\n getRegion: function (el, x, y) {\n var shapeid = this.target.getShapeAt(el, x, y);\n return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion;\n return {\n isNull: this.values[currentRegion] === undefined,\n value: this.values[currentRegion],\n percent: this.values[currentRegion] / this.total * 100,\n color: this.options.get('sliceColors')[currentRegion % this.options.get('sliceColors').length],\n offset: currentRegion\n };\n },\n\n changeHighlight: function (highlight) {\n var currentRegion = this.currentRegion,\n newslice = this.renderSlice(currentRegion, highlight),\n shapeid = this.valueShapes[currentRegion];\n delete this.shapes[shapeid];\n this.target.replaceWithShape(shapeid, newslice);\n this.valueShapes[currentRegion] = newslice.id;\n this.shapes[newslice.id] = currentRegion;\n },\n\n renderSlice: function (valuenum, highlight) {\n var target = this.target,\n options = this.options,\n radius = this.radius,\n borderWidth = options.get('borderWidth'),\n offset = options.get('offset'),\n circle = 2 * Math.PI,\n values = this.values,\n total = this.total,\n next = offset ? (2*Math.PI)*(offset/360) : 0,\n start, end, i, vlen, color;\n\n vlen = values.length;\n for (i = 0; i < vlen; i++) {\n start = next;\n end = next;\n if (total > 0) { // avoid divide by zero\n end = next + (circle * (values[i] / total));\n }\n if (valuenum === i) {\n color = options.get('sliceColors')[i % options.get('sliceColors').length];\n if (highlight) {\n color = this.calcHighlightColor(color, options);\n }\n\n return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, undefined, color);\n }\n next = end;\n }\n },\n\n render: function () {\n var target = this.target,\n values = this.values,\n options = this.options,\n radius = this.radius,\n borderWidth = options.get('borderWidth'),\n donutWidth = options.get('donutWidth'),\n shape, i;\n\n if (!pie._super.render.call(this)) {\n return;\n }\n if (borderWidth) {\n target.drawCircle(radius, radius, Math.floor(radius - (borderWidth / 2)),\n options.get('borderColor'), undefined, borderWidth).append();\n }\n for (i = values.length; i--;) {\n if (values[i]) { // don't render zero values\n shape = this.renderSlice(i).append();\n this.valueShapes[i] = shape.id; // store just the shapeid\n this.shapes[shape.id] = i;\n }\n }\n if (donutWidth) {\n target.drawCircle(radius, radius, radius - donutWidth, options.get('donutColor'), \n options.get('donutColor'), 0).append();\n }\n target.render();\n }\n });\n\n /**\n * Box plots\n */\n $.fn.sparkline.box = box = createClass($.fn.sparkline._base, {\n type: 'box',\n\n init: function (el, values, options, width, height) {\n box._super.init.call(this, el, values, options, width, height);\n this.values = $.map(values, Number);\n this.width = options.get('width') === 'auto' ? '4.0em' : width;\n this.initTarget();\n if (!this.values.length) {\n this.disabled = 1;\n }\n },\n\n /**\n * Simulate a single region\n */\n getRegion: function () {\n return 1;\n },\n\n getCurrentRegionFields: function () {\n var result = [\n { field: 'lq', value: this.quartiles[0] },\n { field: 'med', value: this.quartiles[1] },\n { field: 'uq', value: this.quartiles[2] }\n ];\n if (this.loutlier !== undefined) {\n result.push({ field: 'lo', value: this.loutlier});\n }\n if (this.routlier !== undefined) {\n result.push({ field: 'ro', value: this.routlier});\n }\n if (this.lwhisker !== undefined) {\n result.push({ field: 'lw', value: this.lwhisker});\n }\n if (this.rwhisker !== undefined) {\n result.push({ field: 'rw', value: this.rwhisker});\n }\n return result;\n },\n\n render: function () {\n var target = this.target,\n values = this.values,\n vlen = values.length,\n options = this.options,\n canvasWidth = this.canvasWidth,\n canvasHeight = this.canvasHeight,\n minValue = options.get('chartRangeMin') === undefined ? Math.min.apply(Math, values) : options.get('chartRangeMin'),\n maxValue = options.get('chartRangeMax') === undefined ? Math.max.apply(Math, values) : options.get('chartRangeMax'),\n canvasLeft = 0,\n lwhisker, loutlier, iqr, q1, q2, q3, rwhisker, routlier, i,\n size, unitSize;\n\n if (!box._super.render.call(this)) {\n return;\n }\n\n if (options.get('raw')) {\n if (options.get('showOutliers') && values.length > 5) {\n loutlier = values[0];\n lwhisker = values[1];\n q1 = values[2];\n q2 = values[3];\n q3 = values[4];\n rwhisker = values[5];\n routlier = values[6];\n } else {\n lwhisker = values[0];\n q1 = values[1];\n q2 = values[2];\n q3 = values[3];\n rwhisker = values[4];\n }\n } else {\n values.sort(function (a, b) { return a - b; });\n q1 = quartile(values, 1);\n q2 = quartile(values, 2);\n q3 = quartile(values, 3);\n iqr = q3 - q1;\n if (options.get('showOutliers')) {\n lwhisker = rwhisker = undefined;\n for (i = 0; i < vlen; i++) {\n if (lwhisker === undefined && values[i] > q1 - (iqr * options.get('outlierIQR'))) {\n lwhisker = values[i];\n }\n if (values[i] < q3 + (iqr * options.get('outlierIQR'))) {\n rwhisker = values[i];\n }\n }\n loutlier = values[0];\n routlier = values[vlen - 1];\n } else {\n lwhisker = values[0];\n rwhisker = values[vlen - 1];\n }\n }\n this.quartiles = [q1, q2, q3];\n this.lwhisker = lwhisker;\n this.rwhisker = rwhisker;\n this.loutlier = loutlier;\n this.routlier = routlier;\n\n unitSize = canvasWidth / (maxValue - minValue + 1);\n if (options.get('showOutliers')) {\n canvasLeft = Math.ceil(options.get('spotRadius'));\n canvasWidth -= 2 * Math.ceil(options.get('spotRadius'));\n unitSize = canvasWidth / (maxValue - minValue + 1);\n if (loutlier < lwhisker) {\n target.drawCircle((loutlier - minValue) * unitSize + canvasLeft,\n canvasHeight / 2,\n options.get('spotRadius'),\n options.get('outlierLineColor'),\n options.get('outlierFillColor')).append();\n }\n if (routlier > rwhisker) {\n target.drawCircle((routlier - minValue) * unitSize + canvasLeft,\n canvasHeight / 2,\n options.get('spotRadius'),\n options.get('outlierLineColor'),\n options.get('outlierFillColor')).append();\n }\n }\n\n // box\n target.drawRect(\n Math.round((q1 - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight * 0.1),\n Math.round((q3 - q1) * unitSize),\n Math.round(canvasHeight * 0.8),\n options.get('boxLineColor'),\n options.get('boxFillColor')).append();\n // left whisker\n target.drawLine(\n Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 2),\n Math.round((q1 - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 2),\n options.get('lineColor')).append();\n target.drawLine(\n Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 4),\n Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight - canvasHeight / 4),\n options.get('whiskerColor')).append();\n // right whisker\n target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 2),\n Math.round((q3 - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 2),\n options.get('lineColor')).append();\n target.drawLine(\n Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 4),\n Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight - canvasHeight / 4),\n options.get('whiskerColor')).append();\n // median line\n target.drawLine(\n Math.round((q2 - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight * 0.1),\n Math.round((q2 - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight * 0.9),\n options.get('medianColor')).append();\n if (options.get('target')) {\n size = Math.ceil(options.get('spotRadius'));\n target.drawLine(\n Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n Math.round((canvasHeight / 2) - size),\n Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n Math.round((canvasHeight / 2) + size),\n options.get('targetColor')).append();\n target.drawLine(\n Math.round((options.get('target') - minValue) * unitSize + canvasLeft - size),\n Math.round(canvasHeight / 2),\n Math.round((options.get('target') - minValue) * unitSize + canvasLeft + size),\n Math.round(canvasHeight / 2),\n options.get('targetColor')).append();\n }\n target.render();\n }\n });\n\n // Setup a very simple \"virtual canvas\" to make drawing the few shapes we need easier\n // This is accessible as $(foo).simpledraw()\n\n VShape = createClass({\n init: function (target, id, type, args) {\n this.target = target;\n this.id = id;\n this.type = type;\n this.args = args;\n },\n append: function () {\n this.target.appendShape(this);\n return this;\n }\n });\n\n VCanvas_base = createClass({\n _pxregex: /(\\d+)(px)?\\s*$/i,\n\n init: function (width, height, target) {\n if (!width) {\n return;\n }\n this.width = width;\n this.height = height;\n this.target = target;\n this.lastShapeId = null;\n if (target[0]) {\n target = target[0];\n }\n $.data(target, '_jqs_vcanvas', this);\n },\n\n drawLine: function (x1, y1, x2, y2, lineColor, lineWidth) {\n return this.drawShape([[x1, y1], [x2, y2]], lineColor, lineWidth);\n },\n\n drawShape: function (path, lineColor, fillColor, lineWidth) {\n return this._genShape('Shape', [path, lineColor, fillColor, lineWidth]);\n },\n\n drawCircle: function (x, y, radius, lineColor, fillColor, lineWidth) {\n return this._genShape('Circle', [x, y, radius, lineColor, fillColor, lineWidth]);\n },\n\n drawPieSlice: function (x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n return this._genShape('PieSlice', [x, y, radius, startAngle, endAngle, lineColor, fillColor]);\n },\n\n drawRect: function (x, y, width, height, lineColor, fillColor) {\n return this._genShape('Rect', [x, y, width, height, lineColor, fillColor]);\n },\n\n getElement: function () {\n return this.canvas;\n },\n\n /**\n * Return the most recently inserted shape id\n */\n getLastShapeId: function () {\n return this.lastShapeId;\n },\n\n /**\n * Clear and reset the canvas\n */\n reset: function () {\n alert('reset not implemented');\n },\n\n _insert: function (el, target) {\n $(target).html(el);\n },\n\n /**\n * Calculate the pixel dimensions of the canvas\n */\n _calculatePixelDims: function (width, height, canvas) {\n // XXX This should probably be a configurable option\n var match;\n match = this._pxregex.exec(height);\n if (match) {\n this.pixelHeight = match[1];\n } else {\n this.pixelHeight = $(canvas).height();\n }\n match = this._pxregex.exec(width);\n if (match) {\n this.pixelWidth = match[1];\n } else {\n this.pixelWidth = $(canvas).width();\n }\n },\n\n /**\n * Generate a shape object and id for later rendering\n */\n _genShape: function (shapetype, shapeargs) {\n var id = shapeCount++;\n shapeargs.unshift(id);\n return new VShape(this, id, shapetype, shapeargs);\n },\n\n /**\n * Add a shape to the end of the render queue\n */\n appendShape: function (shape) {\n alert('appendShape not implemented');\n },\n\n /**\n * Replace one shape with another\n */\n replaceWithShape: function (shapeid, shape) {\n alert('replaceWithShape not implemented');\n },\n\n /**\n * Insert one shape after another in the render queue\n */\n insertAfterShape: function (shapeid, shape) {\n alert('insertAfterShape not implemented');\n },\n\n /**\n * Remove a shape from the queue\n */\n removeShapeId: function (shapeid) {\n alert('removeShapeId not implemented');\n },\n\n /**\n * Find a shape at the specified x/y co-ordinates\n */\n getShapeAt: function (el, x, y) {\n alert('getShapeAt not implemented');\n },\n\n /**\n * Render all queued shapes onto the canvas\n */\n render: function () {\n alert('render not implemented');\n }\n });\n\n VCanvas_canvas = createClass(VCanvas_base, {\n init: function (width, height, target, interact) {\n VCanvas_canvas._super.init.call(this, width, height, target);\n this.canvas = document.createElement('canvas');\n if (target[0]) {\n target = target[0];\n }\n $.data(target, '_jqs_vcanvas', this);\n $(this.canvas).css({ display: 'inline-block', width: width, height: height, verticalAlign: 'top' });\n this._insert(this.canvas, target);\n this._calculatePixelDims(width, height, this.canvas);\n this.canvas.width = this.pixelWidth;\n this.canvas.height = this.pixelHeight;\n this.interact = interact;\n this.shapes = {};\n this.shapeseq = [];\n this.currentTargetShapeId = undefined;\n $(this.canvas).css({width: this.pixelWidth, height: this.pixelHeight});\n },\n\n _getContext: function (lineColor, fillColor, lineWidth) {\n var context = this.canvas.getContext('2d');\n if (lineColor !== undefined) {\n context.strokeStyle = lineColor;\n }\n context.lineWidth = lineWidth === undefined ? 1 : lineWidth;\n if (fillColor !== undefined) {\n context.fillStyle = fillColor;\n }\n return context;\n },\n\n reset: function () {\n var context = this._getContext();\n context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n this.shapes = {};\n this.shapeseq = [];\n this.currentTargetShapeId = undefined;\n },\n\n _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n var context = this._getContext(lineColor, fillColor, lineWidth),\n i, plen;\n context.beginPath();\n context.moveTo(path[0][0] + 0.5, path[0][1] + 0.5);\n for (i = 1, plen = path.length; i < plen; i++) {\n context.lineTo(path[i][0] + 0.5, path[i][1] + 0.5); // the 0.5 offset gives us crisp pixel-width lines\n }\n if (lineColor !== undefined) {\n context.stroke();\n }\n if (fillColor !== undefined) {\n context.fill();\n }\n if (this.targetX !== undefined && this.targetY !== undefined &&\n context.isPointInPath(this.targetX, this.targetY)) {\n this.currentTargetShapeId = shapeid;\n }\n },\n\n _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n var context = this._getContext(lineColor, fillColor, lineWidth);\n context.beginPath();\n context.arc(x, y, radius, 0, 2 * Math.PI, false);\n if (this.targetX !== undefined && this.targetY !== undefined &&\n context.isPointInPath(this.targetX, this.targetY)) {\n this.currentTargetShapeId = shapeid;\n }\n if (lineColor !== undefined) {\n context.stroke();\n }\n if (fillColor !== undefined) {\n context.fill();\n }\n },\n\n _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n var context = this._getContext(lineColor, fillColor);\n context.beginPath();\n context.moveTo(x, y);\n context.arc(x, y, radius, startAngle, endAngle, false);\n context.lineTo(x, y);\n context.closePath();\n if (lineColor !== undefined) {\n context.stroke();\n }\n if (fillColor) {\n context.fill();\n }\n if (this.targetX !== undefined && this.targetY !== undefined &&\n context.isPointInPath(this.targetX, this.targetY)) {\n this.currentTargetShapeId = shapeid;\n }\n },\n\n _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n return this._drawShape(shapeid, [[x, y], [x + width, y], [x + width, y + height], [x, y + height], [x, y]], lineColor, fillColor);\n },\n\n appendShape: function (shape) {\n this.shapes[shape.id] = shape;\n this.shapeseq.push(shape.id);\n this.lastShapeId = shape.id;\n return shape.id;\n },\n\n replaceWithShape: function (shapeid, shape) {\n var shapeseq = this.shapeseq,\n i;\n this.shapes[shape.id] = shape;\n for (i = shapeseq.length; i--;) {\n if (shapeseq[i] == shapeid) {\n shapeseq[i] = shape.id;\n }\n }\n delete this.shapes[shapeid];\n },\n\n replaceWithShapes: function (shapeids, shapes) {\n var shapeseq = this.shapeseq,\n shapemap = {},\n sid, i, first;\n\n for (i = shapeids.length; i--;) {\n shapemap[shapeids[i]] = true;\n }\n for (i = shapeseq.length; i--;) {\n sid = shapeseq[i];\n if (shapemap[sid]) {\n shapeseq.splice(i, 1);\n delete this.shapes[sid];\n first = i;\n }\n }\n for (i = shapes.length; i--;) {\n shapeseq.splice(first, 0, shapes[i].id);\n this.shapes[shapes[i].id] = shapes[i];\n }\n\n },\n\n insertAfterShape: function (shapeid, shape) {\n var shapeseq = this.shapeseq,\n i;\n for (i = shapeseq.length; i--;) {\n if (shapeseq[i] === shapeid) {\n shapeseq.splice(i + 1, 0, shape.id);\n this.shapes[shape.id] = shape;\n return;\n }\n }\n },\n\n removeShapeId: function (shapeid) {\n var shapeseq = this.shapeseq,\n i;\n for (i = shapeseq.length; i--;) {\n if (shapeseq[i] === shapeid) {\n shapeseq.splice(i, 1);\n break;\n }\n }\n delete this.shapes[shapeid];\n },\n\n getShapeAt: function (el, x, y) {\n this.targetX = x;\n this.targetY = y;\n this.render();\n return this.currentTargetShapeId;\n },\n\n render: function () {\n var shapeseq = this.shapeseq,\n shapes = this.shapes,\n shapeCount = shapeseq.length,\n context = this._getContext(),\n shapeid, shape, i;\n context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n for (i = 0; i < shapeCount; i++) {\n shapeid = shapeseq[i];\n shape = shapes[shapeid];\n this['_draw' + shape.type].apply(this, shape.args);\n }\n if (!this.interact) {\n // not interactive so no need to keep the shapes array\n this.shapes = {};\n this.shapeseq = [];\n }\n }\n\n });\n\n VCanvas_vml = createClass(VCanvas_base, {\n init: function (width, height, target) {\n var groupel;\n VCanvas_vml._super.init.call(this, width, height, target);\n if (target[0]) {\n target = target[0];\n }\n $.data(target, '_jqs_vcanvas', this);\n this.canvas = document.createElement('span');\n $(this.canvas).css({ display: 'inline-block', position: 'relative', overflow: 'hidden', width: width, height: height, margin: '0px', padding: '0px', verticalAlign: 'top'});\n this._insert(this.canvas, target);\n this._calculatePixelDims(width, height, this.canvas);\n this.canvas.width = this.pixelWidth;\n this.canvas.height = this.pixelHeight;\n groupel = '';\n this.canvas.insertAdjacentHTML('beforeEnd', groupel);\n this.group = $(this.canvas).children()[0];\n this.rendered = false;\n this.prerender = '';\n },\n\n _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n var vpath = [],\n initial, stroke, fill, closed, vel, plen, i;\n for (i = 0, plen = path.length; i < plen; i++) {\n vpath[i] = '' + (path[i][0]) + ',' + (path[i][1]);\n }\n initial = vpath.splice(0, 1);\n lineWidth = lineWidth === undefined ? 1 : lineWidth;\n stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n closed = vpath[0] === vpath[vpath.length - 1] ? 'x ' : '';\n vel = '' +\n ' ';\n return vel;\n },\n\n _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n var stroke, fill, vel;\n x -= radius;\n y -= radius;\n stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n vel = '';\n return vel;\n\n },\n\n _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n var vpath, startx, starty, endx, endy, stroke, fill, vel;\n if (startAngle === endAngle) {\n return ''; // VML seems to have problem when start angle equals end angle.\n }\n if ((endAngle - startAngle) === (2 * Math.PI)) {\n startAngle = 0.0; // VML seems to have a problem when drawing a full circle that doesn't start 0\n endAngle = (2 * Math.PI);\n }\n\n startx = x + Math.round(Math.cos(startAngle) * radius);\n starty = y + Math.round(Math.sin(startAngle) * radius);\n endx = x + Math.round(Math.cos(endAngle) * radius);\n endy = y + Math.round(Math.sin(endAngle) * radius);\n\n if (startx === endx && starty === endy) {\n if ((endAngle - startAngle) < Math.PI) {\n // Prevent very small slices from being mistaken as a whole pie\n return '';\n }\n // essentially going to be the entire circle, so ignore startAngle\n startx = endx = x + radius;\n starty = endy = y;\n }\n\n if (startx === endx && starty === endy && (endAngle - startAngle) < Math.PI) {\n return '';\n }\n\n vpath = [x - radius, y - radius, x + radius, y + radius, startx, starty, endx, endy];\n stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"1px\" strokeColor=\"' + lineColor + '\" ';\n fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n vel = '' +\n ' ';\n return vel;\n },\n\n _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n return this._drawShape(shapeid, [[x, y], [x, y + height], [x + width, y + height], [x + width, y], [x, y]], lineColor, fillColor);\n },\n\n reset: function () {\n this.group.innerHTML = '';\n },\n\n appendShape: function (shape) {\n var vel = this['_draw' + shape.type].apply(this, shape.args);\n if (this.rendered) {\n this.group.insertAdjacentHTML('beforeEnd', vel);\n } else {\n this.prerender += vel;\n }\n this.lastShapeId = shape.id;\n return shape.id;\n },\n\n replaceWithShape: function (shapeid, shape) {\n var existing = $('#jqsshape' + shapeid),\n vel = this['_draw' + shape.type].apply(this, shape.args);\n existing[0].outerHTML = vel;\n },\n\n replaceWithShapes: function (shapeids, shapes) {\n // replace the first shapeid with all the new shapes then toast the remaining old shapes\n var existing = $('#jqsshape' + shapeids[0]),\n replace = '',\n slen = shapes.length,\n i;\n for (i = 0; i < slen; i++) {\n replace += this['_draw' + shapes[i].type].apply(this, shapes[i].args);\n }\n existing[0].outerHTML = replace;\n for (i = 1; i < shapeids.length; i++) {\n $('#jqsshape' + shapeids[i]).remove();\n }\n },\n\n insertAfterShape: function (shapeid, shape) {\n var existing = $('#jqsshape' + shapeid),\n vel = this['_draw' + shape.type].apply(this, shape.args);\n existing[0].insertAdjacentHTML('afterEnd', vel);\n },\n\n removeShapeId: function (shapeid) {\n var existing = $('#jqsshape' + shapeid);\n this.group.removeChild(existing[0]);\n },\n\n getShapeAt: function (el, x, y) {\n var shapeid = el.id.substr(8);\n return shapeid;\n },\n\n render: function () {\n if (!this.rendered) {\n // batch the intial render into a single repaint\n this.group.innerHTML = this.prerender;\n this.rendered = true;\n }\n }\n });\n\n}))}(document, Math));\n", "import './vendor';\nimport 'jquery-sparkline';\nimport { authFetch } from './authWrap';\nimport { error, log } from './logger';\n\ninterface GpuInfo {\n name: string;\n data: Record;\n chart?: [number, number];\n}\n\nlet gpuInterval: ReturnType | null = null;\nconst chartData: { mem: number[]; load: number[] } = { mem: [], load: [] };\n\nasync function updateGPUChart(mem: number, load: number): Promise {\n const maxLen = 120;\n const colorRangeMap = $.range_map({\n '0:5': '#fffafa',\n '6:10': '#fff7ed',\n '11:20': '#fed7aa',\n '21:30': '#fdba74',\n '31:40': '#fb923c',\n '41:50': '#f97316',\n '51:60': '#ea580c',\n '61:70': '#c2410c',\n '71:80': '#9a3412',\n '81:90': '#7c2d12',\n '91:100': '#6c2e12',\n });\n const sparklineConfigLOAD = { type: 'bar', height: '128px', barWidth: '3px', barSpacing: '1px', chartRangeMin: 0, chartRangeMax: 100, barColor: '#89007D' };\n const sparklineConfigMEM = { type: 'bar', height: '128px', barWidth: '3px', barSpacing: '1px', chartRangeMin: 0, chartRangeMax: 100, colorMap: colorRangeMap, composite: true };\n if (chartData.load.length > maxLen) chartData.load.shift();\n chartData.load.push(load);\n if (chartData.mem.length > maxLen) chartData.mem.shift();\n chartData.mem.push(mem);\n $('#gpuChart').sparkline(chartData.load, sparklineConfigLOAD);\n $('#gpuChart').sparkline(chartData.mem, sparklineConfigMEM);\n}\n\nasync function updateGPU(): Promise {\n const gpuEl = document.getElementById('gpu');\n const gpuTable = document.getElementById('gpu-table');\n if (!gpuEl || !gpuTable) return;\n try {\n const res = await authFetch(`${window.api}/gpu-smi`);\n if (!res || !res.ok) {\n clearInterval(gpuInterval);\n gpuEl.style.display = 'none';\n return;\n }\n const data = (await res.json()) as GpuInfo[];\n if (!data) {\n clearInterval(gpuInterval);\n gpuEl.style.display = 'none';\n return;\n }\n const gpuTbody = gpuTable.querySelector('tbody');\n if (!gpuTbody) return;\n let gpu = { data: {} } as GpuInfo;\n if (Array.isArray(data) && data.length >= 1) gpu = data[0];\n let rows = `GPU${gpu.name || 'unknown'}`;\n for (const item of Object.entries(gpu.data)) rows += `${item[0]}${item[1]}`;\n gpuTbody.innerHTML = rows;\n if (gpu.chart && gpu.chart.length === 2) updateGPUChart(gpu.chart[0], gpu.chart[1]);\n gpuEl.style.display = 'block';\n } catch (e) {\n error('updateGPU', e);\n clearInterval(gpuInterval);\n gpuEl.style.display = 'none';\n }\n}\n\nexport async function startGPU(): Promise {\n const gpuEl = document.getElementById('gpu');\n if (!gpuEl) return;\n gpuEl.style.display = 'block';\n if (gpuInterval) clearInterval(gpuInterval);\n const interval = window.opts?.gpu_monitor || 3000;\n log('startGPUmonitor', interval);\n gpuInterval = setInterval(updateGPU, interval);\n updateGPU();\n}\n\nwindow.startGPU = startGPU;\n\nexport async function disableGPU(): Promise {\n clearInterval(gpuInterval);\n const gpuEl = document.getElementById('gpu');\n if (gpuEl) gpuEl.style.display = 'none';\n}\n\nwindow.disableGPU = disableGPU;\n"], - "mappings": "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", + "sourcesContent": ["/*!\n * jQuery JavaScript Library v4.0.0\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.com/license/\n *\n * Date: 2026-01-18T00:20Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\tmodule.exports = factory( global, true );\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\"use strict\";\n\nif ( !window.document ) {\n\tthrow new Error( \"jQuery requires a window with a document\" );\n}\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\n// Support: IE 11+\n// IE doesn't have Array#flat; provide a fallback.\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\n// [[Class]] -> type pairs\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\n// All support tests are defined in their respective modules.\nvar support = {};\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\treturn typeof obj === \"object\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n\nfunction isWindow( obj ) {\n\treturn obj != null && obj === obj.window;\n}\n\nfunction isArrayLike( obj ) {\n\n\tvar length = !!obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( typeof obj === \"function\" || 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}\n\nvar document$1 = window.document;\n\nvar preservedScriptAttributes = {\n\ttype: true,\n\tsrc: true,\n\tnonce: true,\n\tnoModule: true\n};\n\nfunction DOMEval( code, node, doc ) {\n\tdoc = doc || document$1;\n\n\tvar i,\n\t\tscript = doc.createElement( \"script\" );\n\n\tscript.text = code;\n\tfor ( i in preservedScriptAttributes ) {\n\t\tif ( node && node[ i ] ) {\n\t\t\tscript[ i ] = node[ i ];\n\t\t}\n\t}\n\n\tif ( doc.head.appendChild( script ).parentNode ) {\n\t\tscript.parentNode.removeChild( script );\n\t}\n}\n\nvar version = \"4.0.0\",\n\n\trhtmlSuffix = /HTML$/i,\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\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\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\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\" && typeof target !== \"function\" ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\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\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\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\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\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Note: an element does not contain itself\n\tcontains: function( a, b ) {\n\t\tvar bup = b && b.parentNode;\n\n\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// IE doesn't have `contains` on SVG.\n\t\t\ta.contains ?\n\t\t\t\ta.contains( bup ) :\n\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t) );\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 flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction nodeName( elem, name ) {\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n}\n\nvar pop = arr.pop;\n\n// https://www.w3.org/TR/css3-selectors/#whitespace\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\nvar isIE = document$1.documentMode;\n\nvar rbuggyQSA = isIE && new RegExp(\n\n\t// Support: IE 9 - 11+\n\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\":enabled|:disabled|\" +\n\n\t// Support: IE 11+\n\t// IE 11 doesn't find elements on a `[name='']` query in some cases.\n\t// Adding a temporary attribute to the document before the selection works\n\t// around the issue.\n\t\"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\twhitespace + \"*(?:''|\\\"\\\")\"\n\n);\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\nvar identifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\";\n\nvar rleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" +\n\twhitespace + \")\" + whitespace + \"*\" );\n\nvar rdescend = new RegExp( whitespace + \"|>\" );\n\nvar rsibling = /[+~]/;\n\nvar documentElement$1 = document$1.documentElement;\n\n// Support: IE 9 - 11+\n// IE requires a prefix.\nvar matches = documentElement$1.matches || documentElement$1.msMatchesSelector;\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\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > jQuery.expr.cacheLength ) {\n\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 * Checks a node for validity as a jQuery selector 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// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\nvar attributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t// Operator (capture 2)\n\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\twhitespace + \"*\\\\]\";\n\nvar pseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t// 2. simple (capture 6)\n\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t// 3. anything else (capture 2)\n\t\".*\" +\n\t\")\\\\)|)\";\n\nvar filterMatchExpr = {\n\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\tATTR: new RegExp( \"^\" + attributes ),\n\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\tCHILD: new RegExp(\n\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" )\n};\n\nvar rpseudo = new RegExp( pseudos );\n\n// CSS escapes\n// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\nvar runescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t};\n\nfunction unescapeSelector( sel ) {\n\treturn sel.replace( runescape, funescape );\n}\n\nfunction selectorError( msg ) {\n\tjQuery.error( \"Syntax error, unrecognized expression: \" + msg );\n}\n\nvar rcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" );\n\nvar tokenCache = createCache();\n\nfunction tokenize( 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 = jQuery.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\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 = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\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 filterMatchExpr ) {\n\t\t\tif ( ( match = jQuery.expr.match[ 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\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tselectorError( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nvar preFilter = {\n\tATTR: function( match ) {\n\t\tmatch[ 1 ] = unescapeSelector( match[ 1 ] );\n\n\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\tmatch[ 3 ] = unescapeSelector( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" );\n\n\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t}\n\n\t\treturn match.slice( 0, 4 );\n\t},\n\n\tCHILD: function( match ) {\n\n\t\t/* matches from filterMatchExpr[\"CHILD\"]\n\t\t\t1 type (only|nth|...)\n\t\t\t2 what (child|of-type)\n\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t5 sign of xn-component\n\t\t\t6 x of xn-component\n\t\t\t7 sign of y-component\n\t\t\t8 y of y-component\n\t\t*/\n\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t// nth-* requires argument\n\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\tselectorError( match[ 0 ] );\n\t\t\t}\n\n\t\t\t// numeric x and y parameters for jQuery.expr.filter.CHILD\n\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t);\n\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t// other types prohibit arguments\n\t\t} else if ( match[ 3 ] ) {\n\t\t\tselectorError( match[ 0 ] );\n\t\t}\n\n\t\treturn match;\n\t},\n\n\tPSEUDO: function( match ) {\n\t\tvar excess,\n\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\tif ( filterMatchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// Accept quoted arguments as-is\n\t\tif ( match[ 3 ] ) {\n\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t// Strip excess characters from unquoted arguments\n\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t// Get excess from tokenize (recursively)\n\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t// advance to the next closing parenthesis\n\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) -\n\t\t\t\tunquoted.length ) ) {\n\n\t\t\t// excess is a negative index\n\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t}\n\n\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\treturn match.slice( 0, 3 );\n\t}\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\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nfunction access( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( typeof value !== \"function\" ) {\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\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n}\n\n// Only count HTML whitespace\n// Other whitespace should count in values\n// https://infra.spec.whatwg.org/#ascii-whitespace\nvar rnothtmlwhite = /[^\\x20\\t\\r\\n\\f]+/g;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ||\n\n\t\t\t\t// For compat with previous handling of boolean attributes,\n\t\t\t\t// remove when `false` passed. For ARIA attributes -\n\t\t\t\t// many of which recognize a `\"false\"` value - continue to\n\t\t\t\t// set the `\"false\"` value as jQuery <4 did.\n\t\t\t\t( value === false && name.toLowerCase().indexOf( \"aria-\" ) !== 0 ) ) {\n\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = elem.getAttribute( name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Support: IE <=11+\n// An input loses its value after becoming a radio\nif ( isIE ) {\n\tjQuery.attrHooks.type = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( value === \"radio\" && nodeName( elem, \"input\" ) ) {\n\t\t\t\tvar val = elem.value;\n\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\tif ( val ) {\n\t\t\t\t\telem.value = val;\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t}\n\t};\n}\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nvar sort = arr.sort;\n\nvar splice = arr.splice;\n\nvar hasDuplicate;\n\n// Document order sorting\nfunction sortOrder( a, b ) {\n\n\t// Flag for duplicate removal\n\tif ( a === b ) {\n\t\thasDuplicate = true;\n\t\treturn 0;\n\t}\n\n\t// Sort on method existence if only one input has compareDocumentPosition\n\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\tif ( compare ) {\n\t\treturn compare;\n\t}\n\n\t// Calculate position if both inputs belong to the same document\n\t// Support: IE 11+\n\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\ta.compareDocumentPosition( b ) :\n\n\t\t// Otherwise we know they are disconnected\n\t\t1;\n\n\t// Disconnected nodes\n\tif ( compare & 1 ) {\n\n\t\t// Choose the first element that is related to the document\n\t\t// Support: IE 11+\n\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tif ( a == document$1 || a.ownerDocument == document$1 &&\n\t\t\tjQuery.contains( document$1, a ) ) {\n\t\t\treturn -1;\n\t\t}\n\n\t\t// Support: IE 11+\n\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tif ( b == document$1 || b.ownerDocument == document$1 &&\n\t\t\tjQuery.contains( document$1, b ) ) {\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Maintain original order\n\t\treturn 0;\n\t}\n\n\treturn compare & 4 ? -1 : 1;\n}\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\thasDuplicate = false;\n\n\tsort.call( results, 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\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nvar i,\n\toutermostContext,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\n\t// Instance-specific data\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\n\t// Regular expressions\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = jQuery.extend( {\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t}, filterMatchExpr ),\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr$1 = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\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$1.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\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn results;\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tjQuery.contains( context, elem ) ) {\n\n\t\t\t\t\t\t\tpush.call( results, 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 ] ) && context.getElementsByClassName ) {\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 ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// Outside of IE, if we're not changing the context we can\n\t\t\t\t\t// use :scope instead of an ID.\n\t\t\t\t\t// Support: IE 11+\n\t\t\t\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || isIE ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = jQuery.expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === jQuery.expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ jQuery.expando ] = true;\n\treturn fn;\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\treturn nodeName( elem, \"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\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : document$1;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+\n\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 ) {\n\t\treturn;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: IE 9 - 11+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (see trac-13936)\n\t// Support: IE 11+\n\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( isIE && document$1 != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\treturn matches.call( elem, expr );\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\njQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tfind: {\n\t\tID: function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t},\n\n\t\tTAG: function( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t},\n\n\t\tCLASS: function( className, context ) {\n\t\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\t\treturn context.getElementsByClassName( className );\n\t\t\t}\n\t\t}\n\t},\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: preFilter,\n\n\tfilter: {\n\t\tID: function( id ) {\n\t\t\tvar attrId = unescapeSelector( id );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t},\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = unescapeSelector( nodeNameSelector ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: 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 +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = jQuery.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\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: 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, 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\tnodeName( node, 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\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\t\t\t\t\t\t\touterCache = parent[ jQuery.expando ] ||\n\t\t\t\t\t\t\t\t( parent[ jQuery.expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ 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\touterCache[ 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\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\touterCache = elem[ jQuery.expando ] ||\n\t\t\t\t\t\t\t\t\t( elem[ jQuery.expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ 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\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\tnodeName( node, 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[ jQuery.expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ jQuery.expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ 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\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://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 fn = jQuery.expr.pseudos[ pseudo ] ||\n\t\t\t\tjQuery.expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\tselectorError( \"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 jQuery does\n\t\t\tif ( fn[ jQuery.expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\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( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ jQuery.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\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/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\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = unescapeSelector( text );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( 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// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tselectorError( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = unescapeSelector( lang ).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\ttarget: 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\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( isIE && elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\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\tempty: function( elem ) {\n\n\t\t\t// https://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\tparent: function( elem ) {\n\t\t\treturn !jQuery.expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\";\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: 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\todd: 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\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\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\tgt: 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\njQuery.expr.pseudos.nth = jQuery.expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tjQuery.expr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tjQuery.expr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = jQuery.expr.pseudos;\njQuery.expr.setFilters = new setFilters();\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, 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[ jQuery.expando ] || ( elem[ jQuery.expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( 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[ jQuery.expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ jQuery.expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\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 ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.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\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\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\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\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.call( 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 = jQuery.expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || jQuery.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.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\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\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = jQuery.expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = jQuery.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[ jQuery.expando ] ) {\n\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 ( jQuery.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\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 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$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\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && jQuery.expr.find.TAG( \"*\", outermost ),\n\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\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+\n\t\t\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\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\tfor ( ; ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+\n\t\t\t\t\t// IE sometimes throws a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\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\tpush.call( results, 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\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\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\tjQuery.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\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\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[ jQuery.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,\n\t\t\tmatcherFromGroupMatchers( 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 jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML &&\n\t\t\t\tjQuery.expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( jQuery.expr.find.ID(\n\t\t\t\tunescapeSelector( token.matches[ 0 ] ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 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 ( jQuery.expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = jQuery.expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\tunescapeSelector( token.matches[ 0 ] ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( 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// Initialize against the default document\nsetDocument();\n\njQuery.find = find;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfunction dir( 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\nfunction siblings( 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\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n// rsingleTag matches a string consisting of a single HTML element with no attributes\n// and captures the element's name\nvar rsingleTag = /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i;\n\nfunction isObviousHtml( input ) {\n\treturn input[ 0 ] === \"<\" &&\n\t\tinput[ input.length - 1 ] === \">\" &&\n\t\tinput.length >= 3;\n}\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( typeof qualifier === \"function\" ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n// Initialize a jQuery object\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 (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context ) {\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// HANDLE: $(DOMElement)\n\t\tif ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( typeof selector === \"function\" ) {\n\t\t\treturn rootjQuery.ready !== undefined ?\n\t\t\t\trootjQuery.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\n\t\t} else {\n\n\t\t\t// Handle obvious HTML strings\n\t\t\tmatch = selector + \"\";\n\t\t\tif ( isObviousHtml( match ) ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip\n\t\t\t\t// the regex check. This also handles browser-supported HTML wrappers\n\t\t\t\t// like TrustedHTML.\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t// Handle HTML strings or selectors\n\t\t\t} else if ( typeof selector === \"string\" ) {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t} else {\n\t\t\t\treturn jQuery.makeArray( selector, this );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\t// Note: match[1] may be a string or a TrustedHTML wrapper\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$1,\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 ( typeof this[ match ] === \"function\" ) {\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$1.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr) & $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || rootjQuery ).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\t\t}\n\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$1 );\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11+\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( typeof arg === \"function\" ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && typeof( method = value.promise ) === \"function\" ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && typeof( method = value.then ) === \"function\" ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\t\treject( value );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\tcatch: function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = typeof fns[ tuple[ 4 ] ] === \"function\" &&\n\t\t\t\t\t\t\t\tfns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && typeof returned.promise === \"function\" ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( typeof then === \"function\" ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\ttypeof onProgress === \"function\" ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\ttypeof onFulfilled === \"function\" ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\ttypeof onRejected === \"function\" ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\ttypeof( resolveValues[ i ] && resolveValues[ i ].then ) === \"function\" ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\tif ( error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn(\n\t\t\t\"jQuery.Deferred exception\",\n\t\t\terror,\n\t\t\tasyncError\n\t\t);\n\t}\n};\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document$1, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument$1.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\nif ( document$1.readyState !== \"loading\" ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument$1.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n// Matches dashed string for camelizing\nvar rdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase\nfunction camelCase( string ) {\n\treturn string.replace( rdashAlpha, fcamelCase );\n}\n\n/**\n * Determines whether an object can have data\n */\nfunction acceptData( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n}\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = Object.create( null );\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 trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\n\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11+\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.set( 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.set( 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} );\n\nvar pnum = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\n// isHiddenWithinTree reports if an element has a non-\"none\" display style (inline and/or\n// through the CSS cascade), which is useful in deciding whether or not to make it visible.\n// It differs from the :hidden selector (jQuery.expr.pseudos.hidden) in two important ways:\n// * A hidden ancestor does not force an element to be classified as hidden.\n// * Being disconnected from the document does not force an element to be classified as hidden.\n// These differences improve the behavior of .toggle() et al. when applied to elements that are\n// detached or contained within hidden ancestors (gh-2404, gh-2863).\nfunction isHiddenWithinTree( elem, el ) {\n\n\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t// in that case, element will be second argument\n\telem = el || elem;\n\n\t// Inline style trumps all\n\treturn elem.style.display === \"none\" ||\n\t\telem.style.display === \"\" &&\n\t\tjQuery.css( elem, \"display\" ) === \"none\";\n}\n\nvar ralphaStart = /^[a-z]/,\n\n\t// The regex visualized:\n\t//\n\t// /----------\\\n\t// | | /-------\\\n\t// | / Top \\ | | |\n\t// /--- Border ---+-| Right |-+---+- Width -+---\\\n\t// | | Bottom | |\n\t// | \\ Left / |\n\t// | |\n\t// | /----------\\ |\n\t// | /-------------\\ | | |- END\n\t// | | | | / Top \\ | |\n\t// | | / Margin \\ | | | Right | | |\n\t// |---------+-| |-+---+-| Bottom |-+----|\n\t// | \\ Padding / \\ Left / |\n\t// BEGIN -| |\n\t// | /---------\\ |\n\t// | | | |\n\t// | | / Min \\ | / Width \\ |\n\t// \\--------------+-| |-+---| |---/\n\t// \\ Max / \\ Height /\n\trautoPx = /^(?:Border(?:Top|Right|Bottom|Left)?(?:Width|)|(?:Margin|Padding)?(?:Top|Right|Bottom|Left)?|(?:Min|Max)?(?:Width|Height))$/;\n\nfunction isAutoPx( prop ) {\n\n\t// The first test is used to ensure that:\n\t// 1. The prop starts with a lowercase letter (as we uppercase it for the second regex).\n\t// 2. The prop is not empty.\n\treturn ralphaStart.test( prop ) &&\n\t\trautoPx.test( prop[ 0 ].toUpperCase() + prop.slice( 1 ) );\n}\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( isAutoPx( prop ) ? \"px\" : \"\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( !isAutoPx( prop ) || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54 - 66+\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/;\n\n// Convert dashed to camelCase, handle vendor prefixes.\n// Used by the css & effects modules.\n// Support: IE <=9 - 11+\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction cssCamelCase( string ) {\n\treturn camelCase( string.replace( rmsPrefix, \"ms-\" ) );\n}\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\n\nvar isAttached = function( elem ) {\n\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t},\n\tcomposed = { composed: true };\n\n// Support: IE 9 - 11+\n// Check attachment across shadow DOM boundaries when possible (gh-3504).\n// Provide a fallback for browsers without Shadow DOM v1 support.\nif ( !documentElement$1.getRootNode ) {\n\tisAttached = function( elem ) {\n\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t};\n}\n\n// rtagName captures the name from the first start tag in a string of HTML\n// https://html.spec.whatwg.org/multipage/syntax.html#tag-open-state\n// https://html.spec.whatwg.org/multipage/syntax.html#tag-name-state\nvar rtagName = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i;\n\nvar wrapMap = {\n\n\t// Table parts need to be wrapped with `` or they're\n\t// stripped to their contents when put in a div.\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: [ \"table\" ],\n\tcol: [ \"colgroup\", \"table\" ],\n\ttr: [ \"tbody\", \"table\" ],\n\ttd: [ \"tr\", \"tbody\", \"table\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11+\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\n\t\t// Use slice to snapshot the live collection from gEBTN\n\t\tret = arr.slice.call( context.getElementsByTagName( tag || \"*\" ) );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\nvar rscriptType = /^$|^module$|\\/(?:java|ecma)script/i;\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\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" && ( elem.nodeType || isArrayLike( elem ) ) ) {\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 ] || arr;\n\n\t\t\t\t// Create wrappers & descend into them.\n\t\t\t\tj = wrap.length;\n\t\t\t\twhile ( --j > -1 ) {\n\t\t\t\t\ttmp = tmp.appendChild( context.createElement( wrap[ j ] ) );\n\t\t\t\t}\n\n\t\t\t\ttmp.innerHTML = jQuery.htmlPrefilter( elem );\n\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 (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = typeof value === \"function\";\n\n\tif ( valueIsFunction ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\targs[ 0 ] = value.call( this, index, self.html() );\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 (trac-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\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// Re-enable 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.get( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce,\n\t\t\t\t\t\t\t\t\tcrossOrigin: node.crossOrigin\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent, node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nvar rcheckableType = /^(?:checkbox|radio)$/i;\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\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\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// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement$1, 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 = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: Firefox <=42 - 66+\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11+\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: typeof hook === \"function\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: jQuery.extend( Object.create( null ), {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\t\t\t\tif ( event.result !== undefined ) {\n\n\t\t\t\t\t// Setting `event.originalEvent.returnValue` in modern\n\t\t\t\t\t// browsers does the same as just calling `preventDefault()`,\n\t\t\t\t\t// the browsers ignore the value anyway.\n\t\t\t\t\t// Incidentally, IE 11 is the only browser from our supported\n\t\t\t\t\t// ones which respects the value returned from a `beforeunload`\n\t\t\t\t\t// handler attached by `addEventListener`; other browsers do\n\t\t\t\t\t// so only for inline handlers, so not setting the value\n\t\t\t\t\t// directly shouldn't reduce any functionality.\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} )\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\t// This controller function is invoked under multiple circumstances,\n\t\t\t// differentiated by the stored value in `saved`:\n\t\t\t// 1. For an outer synthetic `.trigger()`ed event (detected by\n\t\t\t// `event.isTrigger & 1` and non-array `saved`), it records arguments\n\t\t\t// as an array and fires an [inner] native event to prompt state\n\t\t\t// changes that should be observed by registered listeners (such as\n\t\t\t// checkbox toggling and focus updating), then clears the stored value.\n\t\t\t// 2. For an [inner] native event (detected by `saved` being\n\t\t\t// an array), it triggers an inner synthetic event, records the\n\t\t\t// result, and preempts propagation to further jQuery listeners.\n\t\t\t// 3. For an inner synthetic event (detected by `event.isTrigger & 1` and\n\t\t\t// array `saved`), it prevents double-propagation of surrogate events\n\t\t\t// but otherwise allows everything to proceed (particularly including\n\t\t\t// further listeners).\n\t\t\t// Possible `saved` data shapes: `[...], `{ value }`, `false`.\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object),\n\t\t\t\t\t// so this array will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is\n\t\t\t\t\t\t// blurred by clicking outside of it, it invokes the handler\n\t\t\t\t\t\t// synchronously. If that handler calls `.remove()` on\n\t\t\t\t\t\t// the element, the data is cleared, leaving `result`\n\t\t\t\t\t\t// undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling\n\t\t\t\t// surrogate (focus or blur), assume that the surrogate already\n\t\t\t\t// propagated from triggering the native event and prevent that\n\t\t\t\t// from happening again here.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order.\n\t\t\t// Fire an inner synthetic event with the original arguments.\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\t\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\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\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\tthis.target = src.target;\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\t// Support: IE 11+\n\t// Attach a single focusin/focusout handler on the document while someone wants focus/blur.\n\t// This is because the former are synchronous in IE while the latter are async. In other\n\t// browsers, all those handlers are invoked synchronously.\n\tfunction focusMappedHandler( nativeEvent ) {\n\n\t\t// `eventHandle` would already wrap the event, but we need to change the `type` here.\n\t\tvar event = jQuery.event.fix( nativeEvent );\n\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\tevent.isSimulated = true;\n\n\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t// invoking the handler at the lower level.\n\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t// by this point.\n\t\t\tdataPriv.get( this, \"handle\" )( event );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( isIE ) {\n\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tif ( isIE ) {\n\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\nvar\n\n\t// Support: IE <=10 - 11+\n\t// In IE using regex groups here causes severe slowdowns.\n\trnoInnerhtml = / 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\t\t\tpush.apply( ret, elems );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\n\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\nfunction getStyles( elem ) {\n\n\t// Support: IE <=11+ (trac-14150)\n\t// In IE popup's `window` is the opener window which makes `window.getComputedStyle( elem )`\n\t// break. Using `elem.ownerDocument.defaultView` avoids the issue.\n\tvar view = elem.ownerDocument.defaultView;\n\n\t// `document.implementation.createHTMLDocument( \"\" )` has a `null` `defaultView`\n\t// property; check `defaultView` truthiness to fallback to window in such a case.\n\tif ( !view ) {\n\t\tview = window;\n\t}\n\n\treturn view.getComputedStyle( elem );\n}\n\n// A method for quickly swapping in/out CSS properties to get correct calculations.\nfunction swap( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n}\n\nfunction curCSS( elem, name, computed ) {\n\tvar ret,\n\t\tisCustomProp = rcustomProp.test( name );\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for `.css('--customProperty')` (gh-3144)\n\tif ( computed ) {\n\n\t\t// A fallback to direct property access is needed as `computed`, being\n\t\t// the output of `getComputedStyle`, contains camelCased keys and\n\t\t// `getPropertyValue` requires kebab-case ones.\n\t\t//\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105 - 135+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document$1.createElement( \"div\" ).style;\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped vendor prefixed property\nfunction finalPropName( name ) {\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorPropName( name ) || name;\n}\n\nvar reliableTrDimensionsVal, reliableColDimensionsVal,\n\ttable = document$1.createElement( \"table\" );\n\n// Executing table tests requires only one layout, so they're executed\n// at the same time to save the second computation.\nfunction computeTableStyleTests() {\n\tif (\n\n\t\t// This is a singleton, we need to execute it only once\n\t\t!table ||\n\n\t\t// Finish early in limited (non-browser) environments\n\t\t!table.style\n\t) {\n\t\treturn;\n\t}\n\n\tvar trStyle,\n\t\tcol = document$1.createElement( \"col\" ),\n\t\ttr = document$1.createElement( \"tr\" ),\n\t\ttd = document$1.createElement( \"td\" );\n\n\ttable.style.cssText = \"position:absolute;left:-11111px;\" +\n\t\t\"border-collapse:separate;border-spacing:0\";\n\ttr.style.cssText = \"box-sizing:content-box;border:1px solid;height:1px\";\n\ttd.style.cssText = \"height:9px;width:9px;padding:0\";\n\n\tcol.span = 2;\n\n\tdocumentElement$1\n\t\t.appendChild( table )\n\t\t.appendChild( col )\n\t\t.parentNode\n\t\t.appendChild( tr )\n\t\t.appendChild( td )\n\t\t.parentNode\n\t\t.appendChild( td.cloneNode( true ) );\n\n\t// Don't run until window is visible\n\tif ( table.offsetWidth === 0 ) {\n\t\tdocumentElement$1.removeChild( table );\n\t\treturn;\n\t}\n\n\ttrStyle = window.getComputedStyle( tr );\n\n\t// Support: Firefox 135+\n\t// Firefox always reports computed width as if `span` was 1.\n\t// Support: Safari 18.3+\n\t// In Safari, computed width for columns is always 0.\n\t// In both these browsers, using `offsetWidth` solves the issue.\n\t// Support: IE 11+\n\t// In IE, `` computed width is `\"auto\"` unless `width` is set\n\t// explicitly via CSS so measurements there remain incorrect. Because of\n\t// the lack of a proper workaround, we accept this limitation, treating\n\t// IE as passing the test.\n\treliableColDimensionsVal = isIE || Math.round( parseFloat(\n\t\twindow.getComputedStyle( col ).width )\n\t) === 18;\n\n\t// Support: IE 10 - 11+\n\t// IE misreports `getComputedStyle` of table rows with width/height\n\t// set in CSS while `offset*` properties report correct values.\n\t// Support: Firefox 70 - 135+\n\t// Only Firefox includes border widths\n\t// in computed dimensions for table rows. (gh-4529)\n\treliableTrDimensionsVal = Math.round( parseFloat( trStyle.height ) +\n\t\tparseFloat( trStyle.borderTopWidth ) +\n\t\tparseFloat( trStyle.borderBottomWidth ) ) === tr.offsetHeight;\n\n\tdocumentElement$1.removeChild( table );\n\n\t// Nullify the table so it wouldn't be stored in the memory;\n\t// it will also be a sign that checks were already performed.\n\ttable = null;\n}\n\njQuery.extend( support, {\n\treliableTrDimensions: function() {\n\t\tcomputeTableStyleTests();\n\t\treturn reliableTrDimensionsVal;\n\t},\n\n\treliableColDimensions: function() {\n\t\tcomputeTableStyleTests();\n\t\treturn reliableColDimensionsVal;\n\t}\n} );\n\nvar cssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = isIE || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\tif (\n\t\t(\n\n\t\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\t\tval === \"auto\" ||\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t\t\t// In those cases, the computed value can be trusted to be border-box.\n\t\t\t( isIE && isBorderBox ) ||\n\n\t\t\t( !support.reliableColDimensions() && nodeName( elem, \"col\" ) ) ||\n\n\t\t\t( !support.reliableTrDimensions() && nodeName( elem, \"tr\" ) )\n\t\t) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = cssCamelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If the value is a number, add `px` for certain CSS properties\n\t\t\tif ( type === \"number\" ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( isAutoPx( origName ) ? \"px\" : \"\" );\n\t\t\t}\n\n\t\t\t// Support: IE <=9 - 11+\n\t\t\t// background-* props of a cloned element affect the source element (trac-8908)\n\t\t\tif ( isIE && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = cssCamelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Elements with `display: none` can have dimension info if\n\t\t\t\t// we invisibly show them.\n\t\t\t\treturn jQuery.css( elem, \"display\" ) === \"none\" ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tisBorderBox = extra &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( isAutoPx( prop ) ? \"px\" : \"\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document$1.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, 13 );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.set( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t// eslint-disable-next-line no-loop-func\n\t\t\tanim.done( function() {\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = cssCamelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\tpercent = 1 - ( remaining / animation.duration || 0 ),\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( typeof result.stop === \"function\" ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( typeof animation.opts.start === \"function\" ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( typeof props === \"function\" ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || easing ||\n\t\t\ttypeof speed === \"function\" && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && typeof easing !== \"function\" && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( typeof opt.old === \"function\" ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = elem.getAttribute( \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\n\t\t\t\t\t// href-less anchor's `tabIndex` property value is `0` and\n\t\t\t\t\t// the `tabindex` attribute value: `null`. We want `-1`.\n\t\t\t\t\trclickable.test( elem.nodeName ) && elem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11+\n// Accessing the selectedIndex property forces the browser to respect\n// setting selected on the option. The getter ensures a default option\n// is selected when in an optgroup. ESLint rule \"no-unused-expressions\"\n// is disabled for this code since it considers such accessions noop.\nif ( isIE ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n// Strip and collapse whitespace according to HTML spec\n// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\nfunction stripAndCollapse( value ) {\n\tvar tokens = value.match( rnothtmlwhite ) || [];\n\treturn tokens.join( \" \" );\n}\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( typeof value === \"function\" ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( typeof value === \"function\" ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self;\n\n\t\tif ( typeof value === \"function\" ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = typeof value === \"function\";\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\tif ( option.selected &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\tif ( ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery( option ).val(), values ) > -1\n\t\t\t\t\t) ) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\nif ( isIE ) {\n\tjQuery.valHooks.option = {\n\t\tget: function( elem ) {\n\n\t\t\tvar val = elem.getAttribute( \"value\" );\n\t\t\treturn val != null ?\n\t\t\t\tval :\n\n\t\t\t\t// Support: IE <=10 - 11+\n\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t}\n\t};\n}\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n} );\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document$1 ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document$1;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document$1 ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && typeof elem[ type ] === \"function\" && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = /\\?/;\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11+\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = typeof valueOrFunction === \"function\" ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document$1.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( typeof func === \"function\" ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\n\t\t\t\t\t\t\t\t// Support: IE 11+\n\t\t\t\t\t\t\t\t// `getResponseHeader( key )` in IE doesn't combine all header\n\t\t\t\t\t\t\t\t// values for the provided key into a single result with values\n\t\t\t\t\t\t\t\t// joined by commas as other browsers do. Instead, it returns\n\t\t\t\t\t\t\t\t// them on separate lines.\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document$1.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11+\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11+\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an ESM-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" +\n\t\t\t\t\t( nonce.guid++ ) + uncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted.\n\t\t// Handle the null callback placeholder.\n\t\tif ( typeof data === \"function\" || data === null ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\t\tscriptAttrs: options.crossOrigin ? { \"crossOrigin\": options.crossOrigin } : undefined,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( typeof html === \"function\" ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( typeof html === \"function\" ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = typeof html === \"function\";\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\njQuery.ajaxSettings.xhr = function() {\n\treturn new window.XMLHttpRequest();\n};\n\nvar xhrSuccessStatus = {\n\n\t// File protocol always yields status code 0, assume 200\n\t0: 200\n};\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback;\n\n\treturn {\n\t\tsend: function( headers, complete ) {\n\t\t\tvar i,\n\t\t\t\txhr = options.xhr();\n\n\t\t\txhr.open(\n\t\t\t\toptions.type,\n\t\t\t\toptions.url,\n\t\t\t\toptions.async,\n\t\t\t\toptions.username,\n\t\t\t\toptions.password\n\t\t\t);\n\n\t\t\t// Apply custom fields if provided\n\t\t\tif ( options.xhrFields ) {\n\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override mime type if needed\n\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t}\n\n\t\t\t// X-Requested-With header\n\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t}\n\n\t\t\t// Set headers\n\t\t\tfor ( i in headers ) {\n\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t}\n\n\t\t\t// Callback\n\t\t\tcallback = function( type ) {\n\t\t\t\treturn function() {\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tcallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = null;\n\n\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) === \"text\" ?\n\t\t\t\t\t\t\t\t\t{ text: xhr.responseText } :\n\t\t\t\t\t\t\t\t\t{ binary: xhr.response },\n\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\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\n\t\t\t// Listen to events\n\t\t\txhr.onload = callback();\n\t\t\txhr.onabort = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t// Create the abort callback\n\t\t\tcallback = callback( \"abort\" );\n\n\t\t\ttry {\n\n\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tabort: function() {\n\t\t\tif ( callback ) {\n\t\t\t\tcallback();\n\t\t\t}\n\t\t}\n\t};\n} );\n\nfunction canUseScriptTag( s ) {\n\n\t// A script tag can only be used for async, cross domain or forced-by-attrs requests.\n\t// Requests with headers cannot use a script tag. However, when both `scriptAttrs` &\n\t// `headers` options are specified, both are impossible to satisfy together; we\n\t// prefer `scriptAttrs` then.\n\t// Sync requests remain handled differently to preserve strict script ordering.\n\treturn s.scriptAttrs || (\n\t\t!s.headers &&\n\t\t(\n\t\t\ts.crossDomain ||\n\n\t\t\t// When dealing with JSONP (`s.dataTypes` include \"json\" then)\n\t\t\t// don't use a script tag so that error responses still may have\n\t\t\t// `responseJSON` set. Continue using a script tag for JSONP requests that:\n\t\t\t// * are cross-domain as AJAX requests won't work without a CORS setup\n\t\t\t// * have `scriptAttrs` set as that's a script-only functionality\n\t\t\t// Note that this means JSONP requests violate strict CSP script-src settings.\n\t\t\t// A proper solution is to migrate from using JSONP to a CORS setup.\n\t\t\t( s.async && jQuery.inArray( \"json\", s.dataTypes ) < 0 )\n\t\t)\n\t);\n}\n\n// Install script dataType. Don't specify `contents.script` so that an explicit\n// `dataType: \"script\"` is required (see gh-2432, gh-4822)\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\n\t// These types of requests are handled via a script tag\n\t// so force their methods to GET.\n\tif ( canUseScriptTag( s ) ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\tif ( canUseScriptTag( s ) ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"\n \n \n `);\n document.close();\n}\n\nconst delay = (ms: number) => new Promise((resolve) => { setTimeout(resolve, ms); });\n\nexport async function restartReload(initial = true) {\n document.body.style = 'background: #222222; font-size: 1rem; font-family:monospace; margin-top:20%; color:lightgray; text-align:center';\n document.body.innerHTML = '

    Server shutdown in progress...

    ';\n if (initial) await delay(10000);\n try {\n const res = await authFetch(`${window.api}/progress?skip_current_image=true`);\n console.log('restartReload', res);\n if (res?.ok) {\n document.body.innerHTML = '

    Server restart in progress...

    ';\n setTimeout(() => location.reload(), 10000);\n } else {\n setTimeout(() => restartReload(false), 2500);\n }\n } catch {\n setTimeout(() => restartReload(false), 2500);\n }\n return [];\n}\n\nexport function updateInput(target) {\n const e = new Event('input', { bubbles: true });\n Object.defineProperty(e, 'target', { value: target });\n target.dispatchEvent(e);\n}\n\nlet desiredCheckpointName = null;\nexport function selectCheckpoint(name) {\n desiredCheckpointName = name;\n const tabName = getENActiveTab();\n const btnModel = gradioApp().getElementById(`${tabName}_extra_model`);\n const isRefiner = btnModel && btnModel.classList.contains('toolbutton-selected');\n if (isRefiner) gradioApp().getElementById('change_refiner').click();\n else gradioApp().getElementById('change_checkpoint').click();\n log(`selectCheckpoint ${isRefiner ? 'refiner' : 'model'}: ${desiredCheckpointName}`);\n markSelectedCards([desiredCheckpointName], 'model');\n setTimeout(requestProgress, 250);\n}\n\nlet desiredVAEName = null;\nexport function selectVAE(name) {\n desiredVAEName = name;\n gradioApp().getElementById('change_vae').click();\n log(`selectVAE: ${desiredVAEName}`);\n markSelectedCards([desiredVAEName], 'vae');\n}\n\nlet desiredUNetName = null;\n\nfunction consumeDesiredCheckpointName(v) {\n const res = desiredCheckpointName;\n desiredCheckpointName = null;\n return [res || v, null];\n}\n\nfunction consumeDesiredVAEName(v) {\n const res = desiredVAEName;\n desiredVAEName = null;\n return [res || v, null];\n}\n\nfunction consumeDesiredUNetName(v) {\n const res = desiredUNetName;\n desiredUNetName = null;\n return [res || v, null];\n}\n\nfunction getDesiredCheckpointName() {\n return desiredCheckpointName;\n}\n\nexport function selectUNet(name) {\n desiredUNetName = name;\n const tabName = getENActiveTab();\n const btnModel = gradioApp().getElementById(`${tabName}_extra_model`);\n const isSecondary = btnModel && btnModel.classList.contains('toolbutton-selected');\n if (isSecondary) gradioApp().getElementById('change_unet_secondary').click();\n else gradioApp().getElementById('change_unet').click();\n log(`selectUNet ${isSecondary ? 'secondary' : 'primary'}: ${desiredUNetName}`);\n markSelectedCards([desiredUNetName], 'unet');\n}\n\nexport function selectReference(name) {\n log(`selectReference: ${name}`);\n desiredCheckpointName = name;\n gradioApp().getElementById('change_reference').click();\n markSelectedCards([desiredCheckpointName], 'model');\n setTimeout(requestProgress, 250);\n}\n\nfunction currentImageResolutionimg2img(_a, _b, scaleBy) {\n const img = gradioApp().querySelector('#mode_img2img > div[style=\"display: block;\"] img');\n return img ? [img.naturalWidth, img.naturalHeight, scaleBy] : [0, 0, scaleBy];\n}\n\nfunction currentImageResolutioncontrol(_a, _b, scaleBy) {\n if (window.kanvas) {\n const active = window.kanvas.stages?.getActiveStage();\n return [active?.width || 0, active?.height || 0, scaleBy];\n }\n const img = gradioApp().querySelector('#control-tab-input > div[style=\"display: block;\"] img');\n return img ? [img.naturalWidth, img.naturalHeight, scaleBy] : [0, 0, scaleBy];\n}\n\nfunction updateImg2imgResizeToTextAfterChangingImage() {\n const el = gradioApp().getElementById('img2img_update_resize_to');\n if (el) setTimeout(() => gradioApp().getElementById('img2img_update_resize_to').click(), 500);\n return [];\n}\n\nfunction createThemeElement(): HTMLImageElement {\n const el = document.createElement('img');\n el.id = 'theme-preview';\n el.className = 'theme-preview';\n el.onclick = () => { el.style.display = 'none'; };\n document.body.appendChild(el);\n return el;\n}\n\nexport async function toggleCompact(val, old) {\n if (val === old) return;\n log('toggleCompact', val, old);\n if (val) {\n gradioApp().style.setProperty('--layout-gap', 'var(--spacing-md)');\n gradioApp().querySelectorAll('input[type=range]').forEach((el) => el.classList.add('hidden'));\n gradioApp().querySelectorAll('div .form').forEach((el) => el.classList.add('form-compact'));\n gradioApp().querySelectorAll('.small-accordion .label-wrap').forEach((el) => el.classList.add('accordion-compact'));\n } else {\n gradioApp().style.setProperty('--layout-gap', 'var(--spacing-xxl)');\n gradioApp().querySelectorAll('input[type=range]').forEach((el) => el.classList.remove('hidden'));\n gradioApp().querySelectorAll('div .form').forEach((el) => el.classList.remove('form-compact'));\n gradioApp().querySelectorAll('.small-accordion .label-wrap').forEach((el) => el.classList.remove('accordion-compact'));\n }\n}\n\nfunction previewTheme() {\n let name = gradioApp().getElementById('setting_gradio_theme').querySelectorAll('input')?.[0].value || '';\n fetch(`${window.subpath}/file=data/themes.json`)\n .then((res) => {\n res.json()\n .then((themes) => {\n const theme = Array.isArray(themes) ? themes.find((t) => t.id === name) : null;\n if (theme) {\n window.open(theme.subdomain, '_blank');\n } else {\n const el = document.getElementById('theme-preview') as HTMLImageElement | null || createThemeElement();\n el.style.display = el.style.display === 'block' ? 'none' : 'block';\n name = name.replace('/', '-');\n el.src = `/file=ui/css/${name}.jpg`;\n }\n })\n .catch((e) => error(`previewTheme: ${e}`));\n })\n .catch((e) => error(`previewTheme: ${e}`));\n}\n\nasync function browseFolder() {\n const picker = window.showDirectoryPicker?.();\n if (!picker) return null;\n const f = await picker;\n if (f && f.kind === 'directory') return f.name;\n return null;\n}\n\nlet kanvasNotifyTimer: ReturnType | undefined;\n// Notify kanvas to resize its stage when the resize-panel width/height change. Wired through gradio's\n// .change so it also fires on programmatic updates (detect-size, paste params, swap, send-to) that the\n// client-side resolutionLock input listeners never see. Writes nothing back, so it cannot loop.\nexport function notifyKanvasResize(width: number, height: number) {\n if (window.resizeStage) {\n const w = Number(width);\n const h = Number(height);\n clearTimeout(kanvasNotifyTimer);\n kanvasNotifyTimer = setTimeout(() => window.resizeStage?.(w, h), 250);\n }\n}\n\nexport async function reconnectUI() {\n const t0 = performance.now();\n const gallery = gradioApp().getElementById('txt2img_gallery');\n const task_id = localStorage.getItem('task');\n const api_logo = Array.from(gradioApp().querySelectorAll('img')).filter((el) => el.src.endsWith('api-logo.svg'));\n if (api_logo.length > 0) api_logo[0].remove();\n if (task_id) {\n debug('task check:', task_id);\n requestProgress(task_id, null, gallery, null, null, true);\n }\n uiLoaded = true;\n\n const sd_model = gradioApp().getElementById('setting_sd_model_checkpoint');\n let loadingStarted = 0;\n let loadingMonitor: ReturnType | null = null;\n\n const sd_model_callback = () => {\n const loading = sd_model.querySelector('.eta-bar');\n if (!loading) {\n loadingStarted = 0;\n clearInterval(loadingMonitor);\n } else if (loadingStarted === 0) {\n loadingStarted = Date.now();\n loadingMonitor = setInterval(() => {\n const elapsed = Date.now() - loadingStarted;\n if (elapsed > 3000 && loading) loading.style.display = 'none';\n }, 5000);\n }\n };\n const sd_model_observer = new MutationObserver(sd_model_callback);\n sd_model_observer.observe(sd_model, { attributes: true, childList: true, subtree: true });\n const t1 = performance.now();\n log('reconnectUI', Math.round(t1 - t0));\n timer('reconnectUI', t1 - t0);\n}\n\nwindow.restartReload = restartReload;\nwindow.updateInput = updateInput;\nwindow.notifyKanvasResize = notifyKanvasResize;\nwindow.clip_gallery_urls = clip_gallery_urls;\nwindow.extract_image_from_gallery = extract_image_from_gallery;\nwindow.getCaptionActiveTab = getCaptionActiveTab;\nwindow.get_img2img_tab_index = get_img2img_tab_index;\nwindow.modelmerger = modelmerger;\nwindow.selected_gallery_index = selected_gallery_index;\nwindow.selected_gallery_files = selected_gallery_files;\nwindow.send_to_kanvas = send_to_kanvas;\nwindow.submit_control = submit_control;\nwindow.submit_framepack = submit_framepack;\nwindow.submit_img2img = submit_img2img;\nwindow.submit_ltx = submit_ltx;\nwindow.submit_postprocessing = submit_postprocessing;\nwindow.submit = submit_txt2img; // compatibility alias\nwindow.submit_txt2img = submit_txt2img;\nwindow.submit_video = submit_video;\nwindow.submit_video_wrapper = submit_video_wrapper;\nwindow.switch_to_txt2img = switch_to_txt2img;\nwindow.switch_to_img2img_tab = switch_to_img2img_tab;\nwindow.switch_to_img2img = switch_to_img2img;\nwindow.switch_to_inpaint = switch_to_inpaint;\nwindow.switch_to_sketch = switch_to_sketch;\nwindow.switch_to_composite = switch_to_composite;\nwindow.switch_to_extras = switch_to_extras;\nwindow.switch_to_control = switch_to_control;\nwindow.switch_to_video = switch_to_video;\nwindow.switch_to_caption = switch_to_caption;\nwindow.recalculate_prompts_txt2img = recalculate_prompts_txt2img;\nwindow.recalculate_prompts_img2img = recalculate_prompts_img2img;\nwindow.recalculate_prompts_inpaint = recalculate_prompts_inpaint;\nwindow.recalculate_prompts_control = recalculate_prompts_control;\nwindow.selectCheckpoint = selectCheckpoint;\nwindow.selectVAE = selectVAE;\nwindow.selectUNet = selectUNet;\nwindow.selectReference = selectReference;\nwindow.consumeDesiredCheckpointName = consumeDesiredCheckpointName;\nwindow.consumeDesiredVAEName = consumeDesiredVAEName;\nwindow.consumeDesiredUNetName = consumeDesiredUNetName;\nwindow.getDesiredCheckpointName = getDesiredCheckpointName;\nwindow.currentImageResolutionimg2img = currentImageResolutionimg2img;\nwindow.currentImageResolutioncontrol = currentImageResolutioncontrol;\nwindow.updateImg2imgResizeToTextAfterChangingImage = updateImg2imgResizeToTextAfterChangingImage;\nwindow.create_submit_args = create_submit_args;\nwindow.set_theme = set_theme;\n", "import { gradioApp } from './script';\nimport { updateInput } from './ui';\n\ntype AccordionElement = HTMLElement & {\n visibleCheckbox: HTMLInputElement;\n onVisibleCheckboxChange: () => void;\n onChecked: (checked: boolean) => void;\n};\n\nexport function inputAccordionChecked(id: string, checked: boolean): void {\n const accordion = gradioApp().getElementById(id);\n if (!(accordion instanceof HTMLElement)) return;\n const acc = accordion as AccordionElement;\n acc.visibleCheckbox.checked = checked;\n acc.onVisibleCheckboxChange();\n}\n\nfunction setupAccordion(accordion: Element): void {\n if (!(accordion instanceof HTMLElement)) return;\n const acc = accordion as AccordionElement;\n const labelWrap = accordion.querySelector('.label-wrap');\n const gradioCheckbox = gradioApp().querySelector(`#${accordion.id}-checkbox input`);\n const extra = gradioApp().querySelector(`#${accordion.id}-extra`);\n if (!(labelWrap instanceof HTMLElement) || !(gradioCheckbox instanceof HTMLInputElement)) return;\n const span = labelWrap.querySelector('span');\n if (!(span instanceof HTMLElement)) return;\n let linked = true;\n const isOpen = () => labelWrap.classList.contains('open');\n const observerAccordionOpen = new MutationObserver((mutations) => {\n mutations.forEach((mutationRecord) => {\n accordion.classList.toggle('input-accordion-open', isOpen());\n if (linked) {\n acc.visibleCheckbox.checked = isOpen();\n acc.onVisibleCheckboxChange();\n }\n });\n });\n observerAccordionOpen.observe(labelWrap, { attributes: true, attributeFilter: ['class'] });\n if (extra instanceof Node) labelWrap.insertBefore(extra, labelWrap.lastElementChild);\n acc.onChecked = (checked: boolean) => {\n if (isOpen() !== checked) labelWrap.click();\n };\n\n const visibleCheckbox = document.createElement('INPUT');\n visibleCheckbox.type = 'checkbox';\n visibleCheckbox.checked = isOpen();\n visibleCheckbox.id = `${accordion.id}-visible-checkbox`;\n visibleCheckbox.className = `${gradioCheckbox.className} input-accordion-checkbox`;\n span.insertBefore(visibleCheckbox, span.firstChild);\n acc.visibleCheckbox = visibleCheckbox as any;\n acc.onVisibleCheckboxChange = () => {\n if (linked && isOpen() !== visibleCheckbox.checked) labelWrap.click();\n gradioCheckbox.checked = visibleCheckbox.checked;\n updateInput(gradioCheckbox);\n };\n\n visibleCheckbox.addEventListener('click', (event) => {\n linked = false;\n event.stopPropagation();\n });\n visibleCheckbox.addEventListener('input', acc.onVisibleCheckboxChange);\n}\n\nwindow.inputAccordionChecked = inputAccordionChecked;\n\n// onUiLoaded(() => {\n// for (const accordion of gradioApp().querySelectorAll('.input-accordion')) setupAccordion(accordion);\n// });\n\nexport function initAccordions() {\n for (const accordion of gradioApp().querySelectorAll('.input-accordion')) setupAccordion(accordion);\n}\n", "/**\n * @type {?IDBDatabase}\n */\nimport { log } from './logger';\n\nlet db = null;\n\ninterface ThumbRecord {\n hash: string;\n folder?: string;\n [key: string]: unknown;\n}\n\nexport async function initIndexDB(): Promise {\n async function createDB(): Promise {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open('SDNext', 2);\n request.onerror = (evt: Event) => reject(evt);\n request.onsuccess = (evt: Event) => {\n db = (evt.target as IDBOpenDBRequest).result;\n const countAll = db\n .transaction(['thumbs'], 'readwrite')\n .objectStore('thumbs')\n .count();\n countAll.onsuccess = () => log('initIndexDB', countAll.result);\n resolve();\n };\n request.onupgradeneeded = (evt: IDBVersionChangeEvent) => {\n db = (evt.target as IDBOpenDBRequest).result;\n const oldver = evt.oldVersion;\n if (oldver < 1) {\n const store = db.createObjectStore('thumbs', { keyPath: 'hash' });\n store.createIndex('hash', 'hash', { unique: true });\n }\n if (oldver < 2) {\n const existingStore = request.transaction.objectStore('thumbs');\n existingStore.createIndex('folder', 'folder', { unique: false });\n }\n resolve();\n };\n });\n }\n\n if (!db) await createDB();\n}\n\nexport function idbIsReady(): boolean {\n return db !== null;\n}\n\n/**\n * Reusable setup for handling IDB transactions.\n * @param {Object} resources - Required resources for implementation\n * @param {IDBTransaction} resources.transaction\n * @param {AbortSignal} resources.signal\n * @param {Function} resources.resolve\n * @param {Function} resources.reject\n * @param {*} resolveValue - Value to resolve the outer Promise with\n * @returns {() => void} - Function for manually aborting the transaction\n */\nfunction configureTransactionAbort({\n transaction,\n signal,\n resolve,\n reject,\n}: {\n transaction: IDBTransaction;\n signal: AbortSignal;\n resolve: (value: T) => void;\n reject: (reason?: unknown) => void;\n}, resolveValue: T): () => void {\n function abortTransaction() {\n signal.removeEventListener('abort', abortTransaction);\n transaction.abort();\n }\n signal.addEventListener('abort', abortTransaction);\n transaction.onabort = () => {\n signal.removeEventListener('abort', abortTransaction);\n reject(new DOMException(`Aborting database transaction. ${signal.reason}`, 'AbortError'));\n };\n transaction.onerror = (e) => {\n signal.removeEventListener('abort', abortTransaction);\n reject(new Error('Database transaction error.'));\n };\n transaction.oncomplete = () => {\n signal.removeEventListener('abort', abortTransaction);\n resolve(resolveValue);\n };\n return abortTransaction;\n}\n\nasync function add(record: ThumbRecord): Promise {\n if (!db) return null;\n return new Promise((resolve, reject) => {\n const request = db\n .transaction(['thumbs'], 'readwrite')\n .objectStore('thumbs')\n .add(record);\n request.onsuccess = (evt) => resolve(evt);\n request.onerror = (evt) => reject(evt);\n });\n}\n\nasync function del(hash: string): Promise {\n if (!db) return null;\n return new Promise((resolve, reject) => {\n const request = db\n .transaction(['thumbs'], 'readwrite')\n .objectStore('thumbs')\n .delete(hash);\n request.onsuccess = (evt) => resolve(evt);\n request.onerror = (evt) => reject(evt);\n });\n}\n\nasync function get(hash: string): Promise {\n if (!db) return null;\n return new Promise((resolve, reject) => {\n const request = db\n .transaction(['thumbs'], 'readonly')\n .objectStore('thumbs')\n .index('hash')\n .get(hash);\n request.onsuccess = () => resolve(request.result);\n request.onerror = (evt) => reject(evt);\n });\n}\n\nasync function getKeys(hash: string): Promise {\n if (!db) return null;\n return new Promise((resolve, reject) => {\n const request = db\n .transaction(['thumbs'], 'readonly')\n .objectStore('thumbs')\n .index('hash')\n .getAllKeys();\n request.onsuccess = () => resolve(request.result);\n request.onerror = (evt) => reject(evt);\n });\n}\n\nasync function put(record: ThumbRecord): Promise {\n if (!db) return null;\n return new Promise((resolve, reject) => {\n const request = db\n .transaction(['thumbs'], 'readwrite')\n .objectStore('thumbs')\n .put(record);\n request.onsuccess = (evt) => resolve(evt);\n request.onerror = (evt) => reject(evt);\n });\n}\n\nexport async function idbGetAllKeys(index: string | null = null, query: IDBValidKey | IDBKeyRange | null = null): Promise {\n if (!db) return null;\n return new Promise((resolve, reject) => {\n try {\n let request;\n const transaction = db.transaction('thumbs', 'readonly');\n transaction.onabort = (e) => reject(e);\n const store = transaction.objectStore('thumbs');\n if (index) request = store.index(index).getAllKeys(query);\n else request = store.getAllKeys(query);\n request.onsuccess = () => resolve(request.result);\n request.onerror = (e) => reject(e);\n } catch (err) {\n reject(err);\n }\n });\n}\n\n/**\n * Get the number of entries in the IndexedDB thumbnail cache.\n * @global\n * @param {IDBValidKey | IDBKeyRange | undefined} folder - If specified, get the count for this gallery folder. Otherwise get the total count.\n * @returns {Promise}\n */\nexport async function idbCount(folder?: IDBValidKey | IDBKeyRange): Promise {\n if (!db) return null;\n return new Promise((resolve, reject) => {\n try {\n let request;\n const transaction = db.transaction('thumbs', 'readonly');\n transaction.onabort = (e) => reject(e);\n const store = transaction.objectStore('thumbs');\n if (folder) request = store.index('folder').count(folder);\n else request = store.count();\n request.onsuccess = () => resolve(request.result);\n request.onerror = (e) => reject(e);\n } catch (err) {\n reject(err);\n }\n });\n}\n\n/**\n * Cleanup function for IndexedDB thumbnail cache.\n * @global\n * @param {Set} keepSet - Set containing the hashes of the current files in the folder\n * @param {IDBValidKey | IDBKeyRange} folder - Folder name/path or range\n * @param {AbortSignal} signal - Signal from the AbortController for thumbCacheCleanup()\n */\nexport async function idbFolderCleanup(keepSet: Set, folder: IDBValidKey | IDBKeyRange, signal: AbortSignal): Promise {\n if (!db) return null;\n const existing = await idbGetAllKeys('folder', folder);\n const removals = new Set((existing ?? []).map((entry) => String(entry)).filter((entry) => !keepSet.has(entry))); // Don't need to keep full set in memory\n const totalRemovals = removals.size;\n if (signal.aborted) {\n throw new Error(`Aborting. ${String(signal.reason)}`);\n }\n return new Promise((resolve, reject) => {\n const transaction = db.transaction('thumbs', 'readwrite');\n const props = { transaction, signal, resolve, reject };\n configureTransactionAbort(props, totalRemovals);\n const store = transaction.objectStore('thumbs');\n removals.forEach((entry) => { store.delete(entry); });\n });\n}\n\nexport async function idbClearAll(signal: AbortSignal): Promise {\n if (!db) return null;\n return new Promise((resolve, reject) => {\n const transaction = db.transaction(['thumbs'], 'readwrite');\n const props = { transaction, signal, resolve, reject };\n configureTransactionAbort(props, null);\n transaction.objectStore('thumbs').clear();\n });\n}\n\nexport const idbAdd = add;\nexport const idbDel = del;\nexport const idbGet = get;\nexport const idbPut = put;\nexport const idbKeys = getKeys;\n", "import { authFetch } from './authWrap';\nimport { log, error, xhrPost } from './logger';\nimport { timer } from './timers';\n\ninterface LogLine {\n created: number;\n level: string;\n module: string;\n facility: string;\n msg: string;\n}\n\nlet logMonitorEl: HTMLElement | null = null;\nlet logMonitorStatus = true;\nlet logWarnings = 0;\nlet logErrors = 0;\nlet logConnected = false;\n\nfunction dateToStr(ts: number): string {\n const dt = new Date(1000 * ts);\n // const year = dt.getFullYear();\n // const mo = String(dt.getMonth() + 1).padStart(2, '0');\n // const day = String(dt.getDate()).padStart(2, '0');\n const hour = String(dt.getHours()).padStart(2, '0');\n const min = String(dt.getMinutes()).padStart(2, '0');\n const sec = String(dt.getSeconds()).padStart(2, '0');\n const ms = String(dt.getMilliseconds()).padStart(3, '0');\n // const s = `${year}-${mo}-${day} ${hour}:${min}:${sec}.${ms}`;\n const s = `${hour}:${min}:${sec}.${ms}`;\n return s;\n}\n\nfunction htmlEscape(text: string): string {\n return text.replaceAll('&', '&').replaceAll('<', '<').replaceAll('>', '>');\n}\n\nfunction parseLogLine(line: string): LogLine {\n let str = line.replaceAll('\\n', ' ').replaceAll('\\\\', '\\\\\\\\');\n const tracebackIndex = str.indexOf('Traceback');\n if (tracebackIndex !== -1) str = str.substring(0, tracebackIndex);\n const parsed = JSON.parse(str) as Partial;\n return {\n created: Number(parsed.created ?? Date.now()),\n level: String(parsed.level ?? 'INFO'),\n module: String(parsed.module ?? 'logMonitor'),\n facility: String(parsed.facility ?? 'ui'),\n msg: String(parsed.msg ?? ''),\n };\n}\n\nasync function clearErrors(): Promise {\n logWarnings = 0;\n logErrors = 0;\n log('clearErrors');\n}\n\nexport async function initClearErrorsButton() {\n const btnServerClear = document.getElementById('btn_console_log_server_clear');\n if (btnServerClear) {\n btnServerClear.onclick = async (evt) => {\n evt.preventDefault();\n evt.stopPropagation();\n clearErrors();\n };\n }\n}\n\nasync function logMonitor() {\n const addLogLine = (line: string): void => {\n if (!logMonitorEl) logMonitorEl = document.getElementById('logMonitorData');\n if (!logMonitorEl) return;\n try {\n const l = parseLogLine(line);\n const row = document.createElement('tr');\n // row.style = 'padding: 10px; margin: 0;';\n const level = ``;\n if (l.level === 'WARNING') logWarnings++;\n if (l.level === 'ERROR') logErrors++;\n const module = ``;\n const facilityText = l.facility.length > 20 ? `${l.facility.substring(0, 20)}...` : l.facility;\n const facility = l.facility !== 'sd' ? `` : '';\n row.innerHTML = `${level}${facility}${module}`;\n logMonitorEl.appendChild(row);\n } catch (err) {\n error('logMonitor', { error: String(err), line });\n }\n };\n\n const cleanupLog = (atBottom: boolean): void => {\n if (!logMonitorEl) return;\n while (logMonitorEl.childElementCount > 100 && logMonitorEl.firstElementChild) {\n logMonitorEl.removeChild(logMonitorEl.firstElementChild);\n }\n if (atBottom) logMonitorEl.scrollTop = logMonitorEl.scrollHeight;\n else if (logMonitorEl.parentElement) logMonitorEl.parentElement.style.cssText = 'border-bottom: 2px solid var(--highlight-color);';\n const elWarn = document.getElementById('logWarnings');\n const elErr = document.getElementById('logErrors');\n const modenUIBtn = document.getElementById('btn_console');\n if (elWarn) elWarn.innerText = String(logWarnings);\n if (elErr) elErr.innerText = String(logErrors);\n if (modenUIBtn) {\n modenUIBtn.setAttribute('error-count', logErrors > 0 ? String(logErrors) : '');\n modenUIBtn.style.backgroundColor = logErrors > 0 ? 'var(--color-error)' : '';\n modenUIBtn.title = `Log\\nErrors ${logErrors}\\nWarnings ${logWarnings}`;\n }\n };\n\n const txtGallery = document.getElementById('txt2img_gallery');\n if (txtGallery) txtGallery.style.height = window.opts.logmonitor_show ? '50vh' : '55vh';\n const imgGallery = document.getElementById('img2img_gallery');\n if (imgGallery) imgGallery.style.height = window.opts.logmonitor_show ? '50vh' : '55vh';\n\n if (!window.opts.logmonitor_show) {\n Array.from(document.getElementsByClassName('log-monitor')).forEach((el) => {\n if (el instanceof HTMLElement) el.style.display = 'none';\n });\n return;\n }\n\n if (logMonitorStatus) setTimeout(logMonitor, window.opts.logmonitor_refresh_period);\n else setTimeout(logMonitor, 10 * 1000); // on failure try to reconnect every 10sec\n\n logMonitorStatus = false;\n if (!logMonitorEl) {\n logMonitorEl = document.getElementById('logMonitorData');\n if (logMonitorEl) {\n logMonitorEl.addEventListener('scroll', () => {\n const atBottom = logMonitorEl.scrollHeight <= (logMonitorEl.scrollTop + logMonitorEl.clientHeight);\n if (atBottom && logMonitorEl.parentElement) logMonitorEl.parentElement.style.cssText = '';\n });\n }\n }\n if (!logMonitorEl) return;\n const atBottom = logMonitorEl.scrollHeight <= (logMonitorEl.scrollTop + logMonitorEl.clientHeight);\n\n try {\n const res = await authFetch(`${window.api}/log?clear=True`);\n if (res?.ok) {\n logMonitorStatus = true;\n const lines = (await res.json()) as string[];\n if (logMonitorEl && lines?.length > 0 && logMonitorEl.parentElement?.parentElement instanceof HTMLElement) {\n logMonitorEl.parentElement.parentElement.style.display = window.opts.logmonitor_show ? 'block' : 'none';\n }\n if (!logConnected) {\n logConnected = true;\n xhrPost(`${window.api}/log`, { debug: 'connected' });\n logErrors = 0; // reset error count on reconnect\n }\n for (const line of lines) addLogLine(line);\n } else {\n logConnected = false;\n logErrors++;\n if (res) addLogLine(`{ \"created\": ${Date.now()}, \"level\":\"ERROR\", \"module\":\"logMonitor\", \"facility\":\"ui\", \"msg\":\"Failed to fetch log: ${res?.status} ${res?.statusText}\" }`);\n else addLogLine(`{ \"created\": ${Date.now()}, \"level\":\"ERROR\", \"module\":\"logMonitor\", \"facility\":\"ui\", \"msg\":\"Server unreachable\" }`);\n }\n cleanupLog(atBottom);\n } catch {\n logConnected = false;\n logErrors++;\n addLogLine(`{ \"created\": ${Date.now()}, \"level\":\"ERROR\", \"module\":\"logMonitor\", \"facility\":\"ui\", \"msg\":\"Server unreachable\" }`);\n cleanupLog(atBottom);\n }\n}\n\nexport async function initLogMonitor() {\n let el = document.getElementById('logMonitorPlaceholder');\n const modernUi = Boolean(el);\n if (!el) el = document.getElementsByTagName('footer')[0];\n if (!el) return;\n const t0 = performance.now();\n el.classList.add('log-monitor');\n const uiDisabled = Array.isArray(window.opts.ui_disabled) ? window.opts.ui_disabled : [];\n if (uiDisabled.includes('logs')) return;\n if (modernUi) {\n el.style.overflow = 'auto';\n el.innerHTML = `\n
    ${l.level}${l.module}${facilityText}${dateToStr(l.created)}${htmlEscape(l.msg)}
    \n \n \n
    \n `;\n } else {\n el.innerHTML = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    TimeLevelModuleMessageWarnings 0Errors 0
    \n `;\n }\n el.style.display = 'none';\n authFetch(`${window.api}/start?agent=${encodeURI(navigator.userAgent)}`);\n logMonitor();\n initClearErrorsButton();\n const t1 = performance.now();\n log('initLogMonitor', { show: window.opts.logmonitor_show, time: Math.round(t1 - t0) });\n timer('initLogMonitor', t1 - t0);\n}\n", "import { authFetch } from './authWrap';\nimport { gradioApp, onAfterUiUpdate, onOptionsChanged, executeCallbacks, optionsChangedCallbacks } from './script';\nimport { log, debug, error } from './logger';\nimport { getENActiveTab } from './extraNetworks';\nimport { registerDragDrop, toggleCompact, setTheme, setFontSize, updateInput } from './ui';\nimport { timer } from './timers';\n\nlet settingsInitialized = false;\nlet opts_metadata = {};\nconst opts_tabs = {};\n\nfunction getSettingsTabs() {\n let nodes = gradioApp().querySelectorAll('#tab_settings .tabitem');\n if (!nodes || nodes.length === 0) nodes = gradioApp().querySelectorAll('.tab-content .tabitem');\n return nodes;\n}\n\nconst monitoredOpts: Record[] = [\n { sd_model_checkpoint: null },\n { sd_backend: () => gradioApp().getElementById('refresh_sd_model_checkpoint')?.click() },\n];\n\nexport function monitorOption(option, callback) {\n monitoredOpts.push({ [option]: callback });\n}\n\nconst AppyOpts = [ // monitored opts\n { compact_view: (val, old) => toggleCompact(val, old) },\n { gradio_theme: (val, old) => setTheme(val, old) },\n { font_size: (val, old) => setFontSize(val, old) },\n];\n\nasync function updateOpts(json_string) {\n const t0 = performance.now();\n const settings_data = JSON.parse(json_string);\n const new_opts = settings_data.values;\n opts_metadata = settings_data.metadata;\n\n const t1 = performance.now();\n for (const op of monitoredOpts) {\n const [key, callback] = Object.entries(op)[0];\n if (Object.hasOwn(opts, key) && opts[key] !== new_opts[key]) {\n log('updateOpt', key, opts[key], new_opts[key]);\n if (callback) callback(new_opts[key], opts[key]);\n }\n }\n\n for (const op of AppyOpts) {\n const [key, callback] = Object.entries(op)[0];\n if (callback) {\n const t3 = performance.now();\n callback(new_opts[key], opts[key]);\n const t4 = performance.now();\n if (t4 - t3 > 100) debug('AppyOptSlow', key, `time=${Math.round(t4 - t3)}`);\n }\n }\n\n window.opts = new_opts;\n Object.entries(opts_metadata as Record).forEach(([opt, meta]: [string, any]) => {\n if (!opts_tabs[meta.tab_name]) opts_tabs[meta.tab_name] = {};\n if (!opts_tabs[meta.tab_name].unsaved_keys) opts_tabs[meta.tab_name].unsaved_keys = new Set();\n if (!opts_tabs[meta.tab_name].saved_keys) opts_tabs[meta.tab_name].saved_keys = new Set();\n if (!meta.is_stored) opts_tabs[meta.tab_name].unsaved_keys.add(opt);\n else opts_tabs[meta.tab_name].saved_keys.add(opt);\n });\n const t2 = performance.now();\n log('updateOpts', { settings: Object.keys(new_opts).length, callbacks: Math.round(t2 - t1), apply: Math.round(t1 - t0) });\n timer('updateOpts', t2 - t0);\n}\n\nfunction showAllSettings() {\n // Try to ensure that the show all settings tab is opened by clicking on its tab button\n // const tab_dirty_indicator = gradioApp().getElementById('modification_indicator_show_all_pages');\n // if (tab_dirty_indicator && tab_dirty_indicator.nextSibling) tab_dirty_indicator.nextSibling.click();\n getSettingsTabs().forEach((elem) => {\n if (elem.id === 'settings_tab_licenses' || elem.id === 'settings_show_all_pages') return;\n elem.style.display = 'block';\n });\n}\n\nfunction markIfModified(setting_name, value) {\n if (!opts_metadata[setting_name]) return;\n const elem = gradioApp().getElementById(`modification_indicator_${setting_name}`);\n if (!elem) return;\n const previous_value = JSON.stringify(opts[setting_name]);\n const current_value = JSON.stringify(value);\n const changed_value = previous_value !== current_value;\n if (changed_value) elem.title = `click to revert to previous value: ${previous_value}`;\n const { is_stored } = opts_metadata[setting_name];\n if (is_stored) elem.title = 'custom value';\n elem.disabled = !changed_value && !is_stored;\n elem.classList.toggle('changed', changed_value);\n elem.classList.toggle('saved', is_stored);\n\n const { tab_name } = opts_metadata[setting_name];\n if (!opts_tabs[tab_name].changed) opts_tabs[tab_name].changed = new Set();\n const changed_items = opts_tabs[tab_name].changed;\n if (changed_value) changed_items.add(setting_name);\n else changed_items.delete(setting_name);\n const unsaved = opts_tabs[tab_name].unsaved_keys;\n const saved = opts_tabs[tab_name].saved_keys;\n\n // Set the indicator on the tab nav element\n const tab_nav_indicator = gradioApp().getElementById(`modification_indicator_${tab_name}`);\n tab_nav_indicator.disabled = (changed_items.size === 0) && (unsaved.size === 0);\n tab_nav_indicator.title = '';\n tab_nav_indicator.classList.toggle('changed', changed_items.size > 0);\n tab_nav_indicator.classList.toggle('saved', saved.size > 0);\n if (changed_items.size > 0) tab_nav_indicator.title += `click to reset ${changed_items.size} unapplied changes in this tab\\n`;\n if (saved.size > 0) tab_nav_indicator.title += `${saved.size} custom values\\n${unsaved.size} default values`;\n // TODO why is scroll happening on every change if all pages are visible?\n // elem.scrollIntoView({ behavior: 'smooth', block: 'center' });\n}\nwindow.markIfModified = markIfModified;\n\nfunction updateAllOpts() {\n if (Object.keys(opts).length !== 0) return false;\n const json_elem = gradioApp().getElementById('settings_json');\n log('updateAllOpts', !!json_elem);\n if (!json_elem) return false;\n json_elem.parentElement.style.display = 'none';\n const textarea = json_elem.querySelector('textarea');\n const jsdata = textarea.value;\n updateOpts(jsdata);\n return true;\n}\n\nasync function onAfterUiUpdateCallback() {\n if (!updateAllOpts()) return;\n const json_elem = gradioApp().getElementById('settings_json');\n const textarea = json_elem.querySelector('textarea');\n executeCallbacks(optionsChangedCallbacks);\n registerDragDrop();\n\n Object.defineProperty(textarea, 'value', {\n set(newValue) {\n const valueProp = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, 'value');\n const oldValue = valueProp.get.call(textarea);\n valueProp.set.call(textarea, newValue);\n if (oldValue !== newValue) updateOpts(textarea.value);\n executeCallbacks(optionsChangedCallbacks);\n },\n get() {\n const valueProp = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, 'value');\n return valueProp.get.call(textarea);\n },\n });\n\n const settingsSearch = gradioApp().querySelectorAll('#settings_search > label > textarea')[0];\n let settingsTimer: ReturnType | undefined;\n let settingSearchValue = '';\n\n function doSettingsSearch() {\n if (settingSearchValue === settingsSearch.value.trim().toLowerCase()) return;\n showAllSettings();\n const value = settingsSearch.value.trim().toLowerCase();\n log('doSettingsSearch', value);\n settingSearchValue = value;\n getSettingsTabs().forEach((section) => {\n section.querySelectorAll('.dirtyable').forEach((setting) => {\n const visible = setting.innerText.toLowerCase().includes(value) || setting.id.toLowerCase().includes(value);\n const parent = setting.closest('.settings_section');\n if (!visible) parent.style.display = 'none';\n else parent.style.removeProperty('display');\n });\n });\n }\n\n settingsSearch.oninput = (e) => {\n if (settingsTimer) clearTimeout(settingsTimer);\n settingsTimer = setTimeout(doSettingsSearch, 250);\n };\n settingsSearch.onkeypress = (e) => {\n if (e.key === 'Enter') {\n if (settingsTimer) clearTimeout(settingsTimer);\n doSettingsSearch();\n }\n };\n}\n\nonAfterUiUpdate(onAfterUiUpdateCallback);\n\nasync function onOptionsChangedCallback() {\n const setting_elems = gradioApp().querySelectorAll('#settings [id^=\"setting_\"]');\n setting_elems.forEach((elem) => {\n const setting_name = elem.id.replace('setting_', '');\n markIfModified(setting_name, opts[setting_name]);\n });\n}\n\nonOptionsChanged(onOptionsChangedCallback);\n\nexport async function initModels() {\n const warn = () => `\n

    No models available

    \n - Select a model from reference list to download or
    \n - Set model path to a folder containing your models
    \n Current model path: ${opts.ckpt_dir}
    \n `;\n const el = gradioApp().getElementById('main_info');\n const en = gradioApp().getElementById('txt2img_extra_networks');\n if (!el || !en) return;\n const req = await authFetch(`${window.api}/sd-models`);\n const res = req.ok ? await req.json() : [];\n log('initModels', res.length);\n const ready = () => `\n

    Ready

    \n ${res.length} models available
    \n `;\n el.innerHTML = res.length > 0 ? ready() : warn();\n el.style.display = 'block';\n setTimeout(() => { el.style.display = 'none'; }, res.length === 0 ? 30000 : 1500);\n if (res.length === 0) {\n if (en.classList.contains('hide')) gradioApp().getElementById('txt2img_extra_networks_btn').click();\n const repeat = setInterval(() => {\n const buttons = Array.from(gradioApp().querySelectorAll('#txt2img_model_subdirs > button')) || [];\n const reference = buttons.find((b) => (b.innerText === 'Reference') || (b.innerText === 'Distilled') || (b.innerText === 'Community') || (b.innerText === 'Quantized') || (b.innerText === 'Cloud'));\n if (reference) {\n clearInterval(repeat);\n reference.click();\n log('enReferenceSelect');\n }\n }, 100);\n }\n}\n\nexport async function initSettings() {\n if (settingsInitialized) return;\n const t0 = performance.now();\n settingsInitialized = true;\n const tabNavElements = gradioApp().querySelector('#settings > .tab-nav');\n if (!tabNavElements) {\n error('initSettings', 'No tab nav elements found');\n return;\n }\n const tabNavButtons = gradioApp().querySelectorAll('#settings > .tab-nav > button');\n const tabElements = gradioApp().querySelectorAll('#settings > div:not(.tab-nav)');\n const observer = new MutationObserver((mutations) => {\n const showAllPages = gradioApp().getElementById('settings_show_all_pages');\n if (showAllPages.style.display === 'none') return;\n const mutation = (mut) => mut.type === 'attributes' && mut.attributeName === 'style';\n if (mutations.some(mutation)) showAllSettings();\n });\n const tabContentWrapper = document.createElement('div');\n tabContentWrapper.className = 'tab-content';\n tabNavElements.parentElement.insertBefore(tabContentWrapper, tabNavElements.nextSibling);\n tabElements.forEach((elem, index) => {\n const tabName = elem.id.replace('settings_section_tab_', '');\n const indicator = gradioApp().getElementById(`modification_indicator_${tabName}`);\n if (indicator) {\n tabNavElements.insertBefore(document.createElement('br'), tabNavButtons[index]);\n tabNavElements.insertBefore(indicator, tabNavButtons[index]);\n }\n tabContentWrapper.appendChild(elem);\n observer.observe(elem, { attributes: true, attributeFilter: ['style'] });\n });\n const t1 = performance.now();\n log('initSettings', Math.round(t1 - t0));\n timer('initSettings', t1 - t0);\n}\n", "import { debug, log } from './logger';\nimport { authFetch } from './authWrap';\nimport { monitorOption } from './settings';\n\ninterface VersionInfo {\n updated?: string;\n commit?: string;\n branch?: string;\n model?: string;\n}\n\nlet monitorActive = false;\n\nexport class ConnectionMonitorState {\n static ws: WebSocket | undefined;\n static url = '';\n static delay = 1000;\n static element: HTMLElement | undefined;\n static version = '';\n static commit = '';\n static branch = '';\n static model = '';\n static startup: Date = new Date();\n static online = false;\n static ts: Date = new Date();\n\n static getModel(): string {\n const cp = window.opts?.sd_model_checkpoint || '';\n return cp ? this.trimModelName(cp) : 'unknown model';\n }\n\n static trimModelName(name: string): string {\n return name.replace(/\\s*\\[.*\\]\\s*$/, '').split(/[\\\\/]/).pop().trim() || 'unknown model';\n }\n\n static setData({ online, data }: { online: boolean; data: VersionInfo }) {\n if (online !== this.online) {\n this.online = online;\n this.ts = new Date();\n debug('monitorState', { online: ConnectionMonitorState.online, ts: ConnectionMonitorState.ts });\n }\n if (data?.updated) this.version = data.updated;\n if (data?.commit) this.commit = data.commit;\n if (data?.branch) this.branch = data.branch;\n if (data?.model) this.model = this.trimModelName(data.model);\n }\n\n static toHTML(): string {\n if (!this.model) this.model = this.getModel();\n return `\n Version: ${this.version}
    \n Commit: ${this.commit}
    \n Branch: ${this.branch}
    \n Status: ${this.online ? 'online' : 'offline'}
    \n Model: ${this.model}
    \n Since: ${this.startup.toLocaleString()}
    \n `;\n }\n\n static updateState() {\n if (!this.element) {\n const el = document.getElementById('logo_nav');\n if (el) this.element = el;\n else return;\n }\n this.element.dataset.hint = this.toHTML();\n this.element.style.backgroundColor = this.online ? 'var(--sd-main-accent-color)' : 'var(--color-error)';\n }\n}\n\nasync function updateIndicator(online: boolean, data: VersionInfo = {}, msg?: string): Promise {\n ConnectionMonitorState.setData({ online, data });\n ConnectionMonitorState.updateState();\n if (msg) log('monitorConnection:', { online, data, msg });\n}\n\nasync function wsMonitorLoop() {\n const delayed = Date.now() - ConnectionMonitorState.ts.getTime();\n if ((delayed > 60 * 60) && (ConnectionMonitorState.delay < 10) && !ConnectionMonitorState.online) ConnectionMonitorState.delay = 10000;\n else if ((delayed > 5 * 60) && (ConnectionMonitorState.delay < 5) && !ConnectionMonitorState.online) ConnectionMonitorState.delay = 5000;\n else ConnectionMonitorState.delay = 2000;\n try {\n ConnectionMonitorState.ws = new WebSocket(`${ConnectionMonitorState.url}/queue/join`);\n ConnectionMonitorState.ws.onopen = () => {};\n ConnectionMonitorState.ws.onmessage = () => updateIndicator(true);\n ConnectionMonitorState.ws.onclose = () => setTimeout(wsMonitorLoop, ConnectionMonitorState.delay); // main re-check loop\n ConnectionMonitorState.ws.onerror = (e: Event) => updateIndicator(false, {}, String((e as ErrorEvent).message || 'unknown error')); // actual error\n } catch (e) {\n updateIndicator(false, {}, String((e as Error).message || e));\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n setTimeout(monitorConnection, ConnectionMonitorState.delay);\n }\n}\n\nexport async function monitorConnection() {\n if (!monitorActive) { // start monitor loop only once on startup\n monitorActive = true;\n monitorOption('sd_model_checkpoint', (newVal) => { // runs before opt actually changes\n ConnectionMonitorState.model = newVal;\n ConnectionMonitorState.updateState();\n });\n }\n ConnectionMonitorState.startup = new Date();\n\n let data: VersionInfo = {};\n try {\n const res = await authFetch(`${window.api}/version`);\n if (!res) throw new Error('No response');\n data = await res.json();\n log('monitorConnection:', { data });\n ConnectionMonitorState.startup = new Date();\n ConnectionMonitorState.url = res.url.split('/sdapi')[0].replace('https:', 'wss:').replace('http:', 'ws:'); // update global url as ws need fqdn\n updateIndicator(true, data);\n wsMonitorLoop();\n } catch {\n updateIndicator(false, data);\n setTimeout(monitorConnection, ConnectionMonitorState.delay);\n }\n}\n", "// Stable Diffusion WebUI - Bracket checker\n// By Hingashi no Florin/Bwin4L & @akx\n// Counts open and closed brackets (round, square, curly) in the prompt and negative prompt text boxes in the txt2img and img2img tabs.\n// If there's a mismatch, the keyword counter turns red and if you hover on it, a tooltip tells you what's wrong.\n\nimport { gradioApp } from './script';\nimport { log } from './logger';\nimport { timer } from './timers';\n\nfunction checkBrackets(textArea: HTMLTextAreaElement, counterElt: HTMLElement): void {\n const counts: Record = {};\n const errors: string[] = [];\n\n function checkPair(open: string, close: string, kind: string): void {\n if (counts[open] !== counts[close]) errors.push(`${open}...${close} - Detected ${counts[open] || 0} opening and ${counts[close] || 0} closing ${kind}.`);\n }\n\n (textArea.value.match(/[(){}[\\]]/g) || []).forEach((bracket) => { counts[bracket] = (counts[bracket] || 0) + 1; });\n checkPair('(', ')', 'round brackets');\n checkPair('[', ']', 'square brackets');\n checkPair('{', '}', 'curly brackets');\n counterElt.title = errors.join('\\n');\n counterElt.classList.toggle('error', errors.length !== 0);\n}\n\nfunction setupBracketChecking(idPrompt: string, idCounter: string): void {\n const textarea = gradioApp().querySelector(`#${idPrompt} > label > textarea`);\n const counter = gradioApp().getElementById(idCounter);\n if (!(textarea instanceof HTMLTextAreaElement) || !counter) return;\n textarea.addEventListener('input', () => checkBrackets(textarea, counter));\n}\n\nexport async function initPromptChecker() {\n const t0 = performance.now();\n setupBracketChecking('txt2img_prompt', 'txt2img_token_counter');\n setupBracketChecking('txt2img_neg_prompt', 'txt2img_negative_token_counter');\n setupBracketChecking('img2img_prompt', 'img2img_token_counter');\n setupBracketChecking('img2img_neg_prompt', 'img2img_negative_token_counter');\n setupBracketChecking('control_prompt', 'control_token_counter');\n setupBracketChecking('control_neg_prompt', 'control_negative_token_counter');\n setupBracketChecking('video_prompt', 'video_token_counter');\n setupBracketChecking('video_neg_prompt', 'video_negative_token_counter');\n const t1 = performance.now();\n log('initPromptChecker', Math.round(t1 - t0));\n timer('initPromptChecker', t1 - t0);\n}\n", "// @ts-nocheck\n\n// SHA-256 (+ HMAC and PBKDF2) for JavaScript.\n//\n// Written in 2014-2016 by Dmitry Chestnykh.\n// Public domain, no warranty.\n//\n// Functions (accept and return Uint8Arrays):\n//\n// sha256(message) -> hash\n// sha256.hmac(key, message) -> mac\n// sha256.pbkdf2(password, salt, rounds, dkLen) -> dk\n//\n// Classes:\n//\n// new sha256.Hash()\n// new sha256.HMAC(key)\n//\n\n\nconst digestLength = 32;\nconst blockSize = 64;\n\n// SHA-256 constants\n\nconst K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n]);\nfunction hashBlocks(w, v, p, pos, len) {\n let a; let b; let c; let d; let e; let f; let g; let h; let u; let i; let j; let t1; let\n t2;\n while (len >= 64) {\n a = v[0];\n b = v[1];\n c = v[2];\n d = v[3];\n e = v[4];\n f = v[5];\n g = v[6];\n h = v[7];\n for (i = 0; i < 16; i++) {\n j = pos + i * 4;\n w[i] = (((p[j] & 0xff) << 24) | ((p[j + 1] & 0xff) << 16)\n | ((p[j + 2] & 0xff) << 8) | (p[j + 3] & 0xff));\n }\n for (i = 16; i < 64; i++) {\n u = w[i - 2];\n t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10);\n u = w[i - 15];\n t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3);\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0);\n }\n for (i = 0; i < 64; i++) {\n t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11))\n ^ (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0)\n + ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13))\n ^ (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n v[0] += a;\n v[1] += b;\n v[2] += c;\n v[3] += d;\n v[4] += e;\n v[5] += f;\n v[6] += g;\n v[7] += h;\n pos += 64;\n len -= 64;\n }\n return pos;\n}\n// Hash implements SHA256 hash algorithm.\nconst Hash = /** @class */ (function () {\n function Hash() {\n this.digestLength = digestLength;\n this.blockSize = blockSize;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this.state = new Int32Array(8); // hash state\n this.temp = new Int32Array(64); // temporary state\n this.buffer = new Uint8Array(128); // buffer for data to hash\n this.bufferLength = 0; // number of bytes in buffer\n this.bytesHashed = 0; // number of total bytes hashed\n this.finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n // Resets hash state making it possible\n // to reuse this instance to hash other data.\n Hash.prototype.reset = function () {\n this.state[0] = 0x6a09e667;\n this.state[1] = 0xbb67ae85;\n this.state[2] = 0x3c6ef372;\n this.state[3] = 0xa54ff53a;\n this.state[4] = 0x510e527f;\n this.state[5] = 0x9b05688c;\n this.state[6] = 0x1f83d9ab;\n this.state[7] = 0x5be0cd19;\n this.bufferLength = 0;\n this.bytesHashed = 0;\n this.finished = false;\n return this;\n };\n // Cleans internal buffers and re-initializes hash state.\n Hash.prototype.clean = function () {\n for (var i = 0; i < this.buffer.length; i++) {\n this.buffer[i] = 0;\n }\n for (var i = 0; i < this.temp.length; i++) {\n this.temp[i] = 0;\n }\n this.reset();\n };\n // Updates hash state with the given data.\n //\n // Optionally, length of the data can be specified to hash\n // fewer bytes than data.length.\n //\n // Throws error when trying to update already finalized hash:\n // instance must be reset to use it again.\n Hash.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this.finished) {\n throw new Error(\"SHA256: can't update because hash was finished.\");\n }\n let dataPos = 0;\n this.bytesHashed += dataLength;\n if (this.bufferLength > 0) {\n while (this.bufferLength < 64 && dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this.bufferLength === 64) {\n hashBlocks(this.temp, this.state, this.buffer, 0, 64);\n this.bufferLength = 0;\n }\n }\n if (dataLength >= 64) {\n dataPos = hashBlocks(this.temp, this.state, data, dataPos, dataLength);\n dataLength %= 64;\n }\n while (dataLength > 0) {\n this.buffer[this.bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n // Finalizes hash state and puts hash into out.\n //\n // If hash was already finalized, puts the same value.\n Hash.prototype.finish = function (out) {\n if (!this.finished) {\n const bytesHashed = this.bytesHashed;\n const left = this.bufferLength;\n const bitLenHi = (bytesHashed / 0x20000000) | 0;\n const bitLenLo = bytesHashed << 3;\n const padLength = (bytesHashed % 64 < 56) ? 64 : 128;\n this.buffer[left] = 0x80;\n for (let i = left + 1; i < padLength - 8; i++) {\n this.buffer[i] = 0;\n }\n this.buffer[padLength - 8] = (bitLenHi >>> 24) & 0xff;\n this.buffer[padLength - 7] = (bitLenHi >>> 16) & 0xff;\n this.buffer[padLength - 6] = (bitLenHi >>> 8) & 0xff;\n this.buffer[padLength - 5] = (bitLenHi >>> 0) & 0xff;\n this.buffer[padLength - 4] = (bitLenLo >>> 24) & 0xff;\n this.buffer[padLength - 3] = (bitLenLo >>> 16) & 0xff;\n this.buffer[padLength - 2] = (bitLenLo >>> 8) & 0xff;\n this.buffer[padLength - 1] = (bitLenLo >>> 0) & 0xff;\n hashBlocks(this.temp, this.state, this.buffer, 0, padLength);\n this.finished = true;\n }\n for (let i = 0; i < 8; i++) {\n out[i * 4 + 0] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n return this;\n };\n // Returns the final hash digest.\n Hash.prototype.digest = function () {\n const out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n // Internal function for use in HMAC for optimization.\n Hash.prototype._saveState = function (out) {\n for (let i = 0; i < this.state.length; i++) {\n out[i] = this.state[i];\n }\n };\n // Internal function for use in HMAC for optimization.\n Hash.prototype._restoreState = function (from, bytesHashed) {\n for (let i = 0; i < this.state.length; i++) {\n this.state[i] = from[i];\n }\n this.bytesHashed = bytesHashed;\n this.finished = false;\n this.bufferLength = 0;\n };\n return Hash;\n}());\nwindow.Hash = Hash;\n// HMAC implements HMAC-SHA256 message authentication algorithm.\nconst HMAC = /** @class */ (function () {\n function HMAC(key) {\n this.inner = new Hash();\n this.outer = new Hash();\n this.blockSize = this.inner.blockSize;\n this.digestLength = this.inner.digestLength;\n const pad = new Uint8Array(this.blockSize);\n if (key.length > this.blockSize) {\n (new Hash()).update(key).finish(pad).clean();\n } else {\n for (let i = 0; i < key.length; i++) {\n pad[i] = key[i];\n }\n }\n for (let i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36;\n }\n this.inner.update(pad);\n for (let i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c;\n }\n this.outer.update(pad);\n this.istate = new Uint32Array(8);\n this.ostate = new Uint32Array(8);\n this.inner._saveState(this.istate);\n this.outer._saveState(this.ostate);\n for (let i = 0; i < pad.length; i++) {\n pad[i] = 0;\n }\n }\n // Returns HMAC state to the state initialized with key\n // to make it possible to run HMAC over the other data with the same\n // key without creating a new instance.\n HMAC.prototype.reset = function () {\n this.inner._restoreState(this.istate, this.inner.blockSize);\n this.outer._restoreState(this.ostate, this.outer.blockSize);\n return this;\n };\n // Cleans HMAC state.\n HMAC.prototype.clean = function () {\n for (let i = 0; i < this.istate.length; i++) {\n this.ostate[i] = this.istate[i] = 0;\n }\n this.inner.clean();\n this.outer.clean();\n };\n // Updates state with provided data.\n HMAC.prototype.update = function (data) {\n this.inner.update(data);\n return this;\n };\n // Finalizes HMAC and puts the result in out.\n HMAC.prototype.finish = function (out) {\n if (this.outer.finished) {\n this.outer.finish(out);\n } else {\n this.inner.finish(out);\n this.outer.update(out, this.digestLength).finish(out);\n }\n return this;\n };\n // Returns message authentication code.\n HMAC.prototype.digest = function () {\n const out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n return HMAC;\n}());\nwindow.HMAC = HMAC;\n// Returns SHA256 hash of data.\nfunction hash(data) {\n const h = (new Hash()).update(data);\n const digest = h.digest();\n h.clean();\n return digest;\n}\nwindow.hash = hash;\n// Function hash is both available as module.hash and as default export.\n// Returns HMAC-SHA256 of data under the key.\nfunction hmac(key, data) {\n const h = (new HMAC(key)).update(data);\n const digest = h.digest();\n h.clean();\n return digest;\n}\nwindow.hmac = hmac;\n// Fills hkdf buffer like this:\n// T(1) = HMAC-Hash(PRK, T(0) | info | 0x01)\nfunction fillBuffer(buffer, hmac, info, counter) {\n // Counter is a byte value: check if it overflowed.\n const num = counter[0];\n if (num === 0) {\n throw new Error('hkdf: cannot expand more');\n }\n // Prepare HMAC instance for new data with old key.\n hmac.reset();\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (num > 1) {\n hmac.update(buffer);\n }\n // Hash in info if it exists.\n if (info) {\n hmac.update(info);\n }\n // Hash in the counter.\n hmac.update(counter);\n // Output result to buffer and clean HMAC instance.\n hmac.finish(buffer);\n // Increment counter inside typed array, this works properly.\n counter[0]++;\n}\nconst hkdfSalt = new Uint8Array(digestLength); // Filled with zeroes.\nfunction hkdf(key, salt, info, length) {\n if (salt === void 0) { salt = hkdfSalt; }\n if (length === void 0) { length = 32; }\n const counter = new Uint8Array([1]);\n // HKDF-Extract uses salt as HMAC key, and key as data.\n const okm = hmac(salt, key);\n // Initialize HMAC for expanding with extracted key.\n // Ensure no collisions with `hmac` function.\n const hmac_ = new HMAC(okm);\n // Allocate buffer.\n const buffer = new Uint8Array(hmac_.digestLength);\n let bufpos = buffer.length;\n const out = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n if (bufpos === buffer.length) {\n fillBuffer(buffer, hmac_, info, counter);\n bufpos = 0;\n }\n out[i] = buffer[bufpos++];\n }\n hmac_.clean();\n buffer.fill(0);\n counter.fill(0);\n return out;\n}\nwindow.hkdf = hkdf;\n// Derives a key from password and salt using PBKDF2-HMAC-SHA256\n// with the given number of iterations.\n//\n// The number of bytes returned is equal to dkLen.\n//\n// (For better security, avoid dkLen greater than hash length - 32 bytes).\nfunction pbkdf2(password, salt, iterations, dkLen) {\n const prf = new HMAC(password);\n const len = prf.digestLength;\n const ctr = new Uint8Array(4);\n const t = new Uint8Array(len);\n const u = new Uint8Array(len);\n const dk = new Uint8Array(dkLen);\n for (var i = 0; i * len < dkLen; i++) {\n const c = i + 1;\n ctr[0] = (c >>> 24) & 0xff;\n ctr[1] = (c >>> 16) & 0xff;\n ctr[2] = (c >>> 8) & 0xff;\n ctr[3] = (c >>> 0) & 0xff;\n prf.reset();\n prf.update(salt);\n prf.update(ctr);\n prf.finish(u);\n for (var j = 0; j < len; j++) {\n t[j] = u[j];\n }\n for (var j = 2; j <= iterations; j++) {\n prf.reset();\n prf.update(u).finish(u);\n for (let k = 0; k < len; k++) {\n t[k] ^= u[k];\n }\n }\n for (var j = 0; j < len && i * len + j < dkLen; j++) {\n dk[i * len + j] = t[j];\n }\n }\n for (var i = 0; i < len; i++) {\n t[i] = u[i] = 0;\n }\n for (var i = 0; i < 4; i++) {\n ctr[i] = 0;\n }\n prf.clean();\n return dk;\n}\nwindow.pbkdf2 = pbkdf2;\n", "/* eslint-disable max-classes-per-file, @typescript-eslint/no-use-before-define */\nimport './js/sha256';\nimport { log, debug, error } from './logger';\nimport { authFetch } from './authWrap';\nimport { gradioApp, onAfterUiUpdate } from './script';\nimport { timer } from './timers';\nimport { monitorOption } from './settings';\n\nimport {\n idbAdd,\n idbCount,\n idbFolderCleanup,\n idbClearAll,\n idbGet,\n idbKeys,\n idbIsReady,\n} from './indexdb';\n\nlet ws;\nlet url;\nlet currentSize = 0;\nlet currentSort = 'none';\nlet currentName = '';\nlet currentImage = null;\nlet currentTitle = '';\nlet currentGalleryFolder = null;\nlet pruneImagesTimer;\nlet outstanding = 0;\nlet gallerySelection = { files: [], index: -1 };\nlet maintenanceController = new AbortController();\nconst maxFetchRequests = 32;\nconst fragmentSize = 100;\nconst minCleanupCount = 1000;\nconst minCleanupTime = 1000 * 60 * 60; // 1 hour\nconst folderStylesheet = new CSSStyleSheet();\nconst fileStylesheet = new CSSStyleSheet();\n// Store separator states for the session\nconst separatorStates = new Map();\nconst el = {\n folders: undefined,\n files: undefined,\n search: undefined,\n status: undefined,\n btnSend: undefined,\n overlay: undefined,\n size: undefined,\n};\nconst cleanupTimers = {};\nconst maintenanceTimers = {};\nconst fetchQueue = [];\nconst icons = {\n Time: String.fromCodePoint(9201),\n Folder: String.fromCodePoint(128448), // or 128449;\n Sort: String.fromCodePoint(8645),\n Images: String.fromCodePoint(128461),\n};\n\nconst SUPPORTED_EXTENSIONS = ['jpg', 'jpeg', 'png', 'webp', 'tiff', 'jp2', 'jxl', 'gif', 'mp4', 'mkv', 'avi', 'mjpeg', 'mpg', 'avr'];\n\nconst gallerySorter = {\n nameA: { name: 'Name Ascending', func: (a, b) => a.name.localeCompare(b.name) },\n nameD: { name: 'Name Descending', func: (b, a) => a.name.localeCompare(b.name) },\n sizeD: { name: 'Size Ascending', func: (a, b) => a.size - b.size },\n sizeA: { name: 'Size Descending', func: (b, a) => a.size - b.size },\n resD: { name: 'Resolution Ascending', func: (a, b) => a.width * a.height - b.width * b.height },\n resA: { name: 'Resolution Descending', func: (b, a) => a.width * a.height - b.width * b.height },\n modD: { name: 'Modified Ascending', func: (a, b) => a.mtime - b.mtime },\n modA: { name: 'Modified Descending', func: (b, a) => a.mtime - b.mtime },\n none: { name: 'None', func: undefined },\n};\nconst folderSorter = {\n nameA: { name: 'Name Ascending', func: (a, b) => a.name.localeCompare(b.name) },\n nameD: { name: 'Name Descending', func: (b, a) => a.name.localeCompare(b.name) },\n sizeD: { name: 'Size Ascending', func: (a, b) => a.size - b.size },\n sizeA: { name: 'Size Descending', func: (b, a) => a.size - b.size },\n resD: { name: 'Resolution Ascending', func: (a, b) => a.width * a.height - b.width * b.height },\n resA: { name: 'Resolution Descending', func: (b, a) => a.width * a.height - b.width * b.height },\n modD: { name: 'Modified Ascending', func: (a, b) => a.mtime - b.mtime },\n modA: { name: 'Modified Descending', func: (b, a) => a.mtime - b.mtime },\n none: { name: 'None', func: undefined },\n};\n\nlet sortMode = gallerySorter.none;\n\nasync function getHash(str) {\n let hex = '';\n const strBuf = new TextEncoder().encode(str);\n let hashBuf;\n if (crypto?.subtle?.digest) {\n hashBuf = await crypto.subtle.digest('SHA-256', strBuf);\n } else {\n const hashResult: any = hash(strBuf);\n hashBuf = hashResult.buffer; // from sha256.js\n }\n const view = new DataView(hashBuf);\n for (let i = 0; i < hashBuf.byteLength; i += 4) hex += (`00000000${view.getUint32(i).toString(16)}`).slice(-8);\n return hex;\n}\n\nfunction getVisibleGalleryFiles() {\n if (!el.files) return [];\n return Array.from(el.files.children).filter((node) => node.name && node.offsetParent);\n}\n\nfunction updateGallerySelectionClasses(files = gallerySelection.files, index = gallerySelection.index) {\n files.forEach((file, i) => {\n file.classList.toggle('gallery-file-selected', i === index);\n });\n}\n\nfunction refreshGallerySelection() {\n updateGallerySelectionClasses(gallerySelection.files, -1);\n const files = getVisibleGalleryFiles();\n const index = files.findIndex((file) => file.src === currentImage);\n gallerySelection = { files, index };\n updateGallerySelectionClasses(files, index);\n}\n\nfunction resetGallerySelection() {\n updateGallerySelectionClasses(gallerySelection.files, -1);\n gallerySelection = { files: [], index: -1 };\n currentImage = null;\n currentName = '';\n currentTitle = '';\n}\n\nfunction applyGallerySelection(index, { send = true } = {}) {\n if (!gallerySelection.files.length) refreshGallerySelection();\n const { files } = gallerySelection;\n if (!files.length) return;\n if (!Number.isInteger(index) || index < 0 || index >= files.length) {\n log('gallery selection index out of range', index, files.length);\n resetGallerySelection();\n return;\n }\n gallerySelection.index = index;\n currentImage = files[index].src;\n currentName = files[index].name;\n currentTitle = files[index].title;\n updateGallerySelectionClasses(files, index);\n if (send && el.btnSend) el.btnSend.click();\n}\n\nfunction setGallerySelectionByElement(element, options) {\n if (!gallerySelection.files.length) refreshGallerySelection();\n let index = gallerySelection.files.findIndex((file) => file === element);\n if (index < 0) {\n refreshGallerySelection();\n index = gallerySelection.files.findIndex((file) => file === element);\n }\n if (index >= 0) applyGallerySelection(index, options);\n}\n\nfunction buildGalleryFileUrl(path) {\n return new URL(`/file=${encodeURI(path)}`, window.location.origin).toString();\n}\n\nwindow.getGallerySelection = () => ({ index: gallerySelection.index, files: gallerySelection.files });\nwindow.setGallerySelection = (index, options) => applyGallerySelection(index, options);\nwindow.getGallerySelectedUrl = () => (currentImage ? buildGalleryFileUrl(currentImage) : null);\n\n/**\n * Wait for gallery to finish populating\n * @param {number} expectedSize - Expected gallery size\n * @param {AbortSignal} signal - AbortController signal\n */\nasync function awaitForGallery(expectedSize, signal) {\n while (Math.max(galleryHashes.size, galleryHashes.fallback) < expectedSize && !signal.aborted) await new Promise((resolve) => { setTimeout(resolve, 500); }); // longer interval because it's a low priority check\n signal.throwIfAborted();\n}\n\nfunction updateGalleryStyles() {\n if (opts.theme_type?.toLowerCase() === 'modern') {\n folderStylesheet.replace(`\n .gallery-folder {\n cursor: pointer;\n padding: 8px 6px 8px 6px;\n background-color: var(--sd-button-normal-color);\n border-radius: var(--sd-border-radius);\n text-align: left;\n direction: rtl; /* Used to overflow the beginning instead of the end */\n min-width: 12em;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n transition-duration: 0.2s;\n transition-property: color, opacity, background-color, border-color;\n transition-timing-function: ease-out;\n }\n .gallery-folder:hover {\n background-color: var(--button-primary-background-fill-hover, var(--sd-button-hover-color));\n }\n .gallery-folder-selected {\n background-color: var(--sd-button-selected-color);\n color: var(--sd-button-selected-text-color);\n }\n .gallery-folder-icon {\n font-size: 1.2em;\n color: var(--sd-button-icon-color);\n margin-right: 1em;\n filter: drop-shadow(1px 1px 2px black);\n float: left;\n }\n `);\n } else {\n folderStylesheet.replace(`\n .gallery-folder {\n cursor: pointer;\n padding: 8px 6px 8px 6px;\n max-width: 200px;\n overflow-x: hidden;\n text-wrap: nowrap;\n text-overflow: ellipsis;\n }\n .gallery-folder:hover {\n background-color: var(--button-primary-background-fill-hover);\n }\n .gallery-folder-selected {\n background-color: var(--button-primary-background-fill);\n }\n `);\n }\n const size = el.size ? el.size.value : opts.extra_networks_card_size;\n fileStylesheet.replace(`\n .gallery-file {\n object-fit: contain;\n cursor: pointer;\n height: ${size}px;\n width: ${opts.browser_fixed_width ? `${size}px` : 'unset'};\n }\n .gallery-file:hover {\n filter: grayscale(100%);\n }\n .gallery-overlay {\n position: absolute;\n height: 24px;\n background-color: rgba(0,0,0,0.7);\n display: block;\n text-align: right;\n padding: 4px;\n font-size: 1.2em;\n letter-spacing: 0.5em;\n margin-top: calc(140px - 32px);\n opacity: 75%;\n border-radius: var(--sd-border-radius);\n }\n :host(.gallery-file-selected) .gallery-file {\n box-shadow: 0 0 0 2px var(--sd-button-selected-color);\n }\n `);\n}\n\n// Classes\n\nclass HashSet extends Set {\n fallback = 0;\n constructor(val?: any) {\n super(val);\n this.fallback = 0;\n }\n\n override add(value: any): this {\n ++this.fallback;\n super.add(value);\n return this;\n }\n\n override clear(): void {\n this.fallback = 0;\n super.clear();\n }\n}\n\nconst galleryHashes = new HashSet();\n\nclass SimpleProgressBar {\n #container = document.createElement('div');\n #progress = document.createElement('div');\n #textDiv = document.createElement('div');\n #text = document.createElement('span');\n #visible = false;\n #interval: ReturnType | undefined;\n #max = 0;\n defaultStats = { queue: 0, fetch: 0, hash: 0, db: 0, cached: 0, fetched: 0, failed: 0, error: 0, callback: 0, elapsed: 0, count: 0 };\n stats = { ...this.defaultStats };\n /** @type {Set} */\n #monitoredSet;\n\n constructor(monitoredSet) {\n this.#monitoredSet = monitoredSet; // This is required because incrementing a variable with a class method turned out to not be an atomic operation\n this.#container.style.cssText = 'position:relative; overflow:hidden; border-radius:var(--sd-border-radius); width:100%; background-color:hsla(0,0%,36%,0.3); height:1.2rem; margin:0; padding:0; display:none;';\n this.#progress.style.cssText = 'position:absolute; left:0; height:100%; width:0; transition:width 200ms;';\n this.#progress.style.backgroundColor = 'var(--sd-main-accent-color)';\n this.#textDiv.style.cssText = 'position:relative; margin:auto; width:max-content; height:100%;';\n this.#text.style.cssText = 'user-select:none; color:white;';\n this.#textDiv.append(this.#text);\n this.#container.append(this.#progress, this.#textDiv);\n }\n\n start(total) {\n if (total <= 0) return;\n this.hide();\n this.#max = total;\n if (this.#monitoredSet.size >= this.#max) {\n this.stop();\n return;\n }\n this.#interval = setInterval(() => this.update(this.#monitoredSet.size, this.#max), 100);\n }\n\n attachTo(element) {\n if (element.hasChildNodes) element.innerHTML = '';\n element.appendChild(this.#container);\n }\n\n hide() {\n this.#container.style.display = 'none';\n this.#visible = false;\n this.#progress.style.width = '0';\n this.#text.textContent = '';\n }\n\n update(loaded, max) {\n this.#progress.style.width = `${Math.floor((loaded / max) * 100)}%`;\n this.#text.textContent = `${loaded}/${max}`;\n if (!this.#visible) {\n this.#container.style.display = 'block';\n this.#visible = true;\n }\n if (loaded >= max) this.stop();\n }\n\n stop() {\n clearInterval(this.#interval);\n // this.#interval = undefined;\n if (this.stats.count) {\n debug('gallery: thumbnail stats', this.stats);\n this.stats = { ...this.defaultStats };\n }\n setTimeout(() => this.hide(), 100);\n }\n}\n\nconst pb = new SimpleProgressBar(galleryHashes);\n\n/* This isn't as robust as the Web Locks API, but it will at least work if accessing a remote machine without HTTPS */\nclass SimpleFunctionQueue {\n #id;\n #running;\n #queue;\n\n constructor(id) {\n this.#id = id;\n this.#running = false;\n this.#queue = [];\n }\n\n static abortLogger(identifier, result) {\n if (typeof result === 'string' || (result instanceof DOMException && result.name === 'AbortError')) {\n log(identifier, typeof result === 'object' && result !== null ? (result as any).message || result : result);\n } else {\n error(identifier, result.message);\n }\n }\n\n /**\n * @param {{\n * signal: AbortSignal,\n * callback: Function\n * }} config\n */\n enqueue(config) {\n if (!(config.signal instanceof AbortSignal) || typeof config.callback !== 'function') {\n throw new Error('Invalid configuration. Object must contain an AbortSignal and a function');\n }\n if (config.signal.aborted) {\n debug(`${this.#id} Queue: Skipping addition to queue due to \"${config.signal.reason}\"`);\n return;\n }\n this.#queue.push(config);\n this.#tryRunNext();\n }\n\n async #tryRunNext() {\n if (this.#running || !this.#queue.length) return;\n try {\n const { signal, callback } = this.#queue.shift();\n if (signal.aborted) {\n return;\n }\n this.#running = true;\n if (callback.constructor.name.toLowerCase() === 'asyncfunction') {\n await callback();\n } else {\n callback();\n }\n } catch (err) {\n error(`${this.#id} Queue:`, err);\n } finally {\n this.#running = false;\n this.#tryRunNext();\n }\n }\n}\n\n// HTML Elements\n\nclass GalleryFolder extends HTMLElement {\n static folders = new Set();\n /** @type {GalleryFolder | null} */\n static #active = null;\n\n constructor(folder) {\n super();\n // Support both old format (string) and new format (object with path and label)\n if (typeof folder === 'object' && folder !== null) {\n this.name = decodeURI(folder.path || '');\n this.label = decodeURI(folder.label || folder.path || '');\n } else {\n this.name = decodeURI(folder);\n this.label = this.name;\n }\n this.style.overflowX = 'hidden';\n this.shadow = this.attachShadow({ mode: 'open' });\n this.shadow.adoptedStyleSheets = [folderStylesheet];\n\n this.div = document.createElement('div');\n }\n\n connectedCallback() {\n if (GalleryFolder.folders.has(this)) return; // Element is just being moved\n this.div.className = 'gallery-folder';\n this.div.innerHTML = `\\uf03e ${this.label}`;\n this.div.title = this.name; // Show full path on hover\n this.addEventListener('click', this.updateSelected);\n this.addEventListener('click', fetchFilesWS);\n this.shadow.appendChild(this.div);\n GalleryFolder.folders.add(this);\n if (this.name === currentGalleryFolder) {\n this.updateSelected();\n }\n }\n\n async disconnectedCallback() {\n await Promise.resolve(); // Wait for other microtasks (such as element moving)\n if (this.isConnected) return;\n GalleryFolder.folders.delete(this);\n if (GalleryFolder.#active === this) {\n GalleryFolder.#active = null;\n }\n }\n\n static getActive() {\n return GalleryFolder.#active;\n }\n\n updateSelected() {\n this.div.classList.add('gallery-folder-selected');\n GalleryFolder.#active = this;\n for (const folder of GalleryFolder.folders as any) {\n if (folder !== this) folder.div.classList.remove('gallery-folder-selected');\n }\n }\n}\n\n/**\n * Event-driven wait mechanism replacing the 50ms polling loop\n * @param {AbortSignal} signal - AbortController signal\n */\nasync function awaitForOutstanding(signal) {\n if (signal?.aborted) throw new DOMException('Aborted', 'AbortError');\n if (outstanding < maxFetchRequests) return; // if we are under the limit, proceed immediately\n await new Promise((resolve, reject) => { // otherwise, register a promise and wait for the queue to resolve us\n const onResolve = () => { // define what happens when this item gets its turn or gets aborted\n signal?.removeEventListener('abort', onAbort);\n resolve(true);\n };\n const onAbort = () => {\n const idx = fetchQueue.findIndex((item) => item.resolve === onResolve); // remove this specific request from the waiting queue if aborted\n if (idx !== -1) fetchQueue.splice(idx, 1);\n reject(new DOMException('Aborted', 'AbortError'));\n };\n fetchQueue.push({ resolve: onResolve });\n signal?.addEventListener('abort', onAbort);\n });\n}\n\nasync function delayFetchThumb(fn, signal) {\n const t0 = performance.now();\n try {\n await awaitForOutstanding(signal);\n } catch (err) {\n if ((err as DOMException).name === 'AbortError') return undefined;\n throw err;\n }\n pb.stats.queue = (pb.stats.queue || 0) + Math.round(performance.now() - t0);\n const t1 = performance.now();\n try {\n outstanding++;\n const ts = t0.toString();\n const res = await authFetch(`${window.api}/browser/thumb?file=${encodeURI(fn)}&ts=${ts}&exif=false`, { priority: 'low' });\n if (!res.ok) {\n error(`fetchThumb: ${res.statusText}`);\n return undefined;\n }\n const json = await res.json();\n if (!res || !json || json.error || Object.keys(json).length === 0) {\n if (json.error) error(`fetchThumb: ${json.error}`);\n return undefined;\n }\n return json;\n } finally {\n outstanding--;\n pb.stats.fetch = (pb.stats.fetch || 0) + Math.round(performance.now() - t1);\n if (fetchQueue.length > 0 && outstanding < maxFetchRequests) { // queue magic: trigger the next waiting fetch immediately\n const nextRequest = fetchQueue.shift();\n nextRequest.resolve(); // This wakes up the next awaitForOutstanding()\n }\n }\n}\n\nclass GalleryFile extends HTMLElement {\n /** @type {AbortSignal} */\n #signal;\n\n constructor(folder, file, signal) {\n super();\n this.folder = folder;\n this.name = file;\n this.#signal = signal;\n this.src = `${this.folder}/${this.name}`.replace(/\\/+/g, '/'); // Ensure no //, ///, etc...\n this.fullFolder = this.src.replace(/\\/[^/]+$/, '');\n this.size = 0;\n this.mtime = 0;\n this.hash = undefined;\n this.exif = '';\n this.width = 0;\n this.height = 0;\n this.shadow = this.attachShadow({ mode: 'open' });\n this.shadow.adoptedStyleSheets = [fileStylesheet];\n this.firstRun = true;\n }\n\n async connectedCallback() {\n if (!this.firstRun) return; // Element is just being moved\n this.firstRun = false;\n const t0 = performance.now();\n pb.stats.count = (pb.stats.count || 0) + 1;\n // Check separator state early to hide the element immediately\n const dir = this.name.match(/(.*)[/\\\\]/);\n if (dir && dir[1]) {\n const dirPath = dir[1];\n const isOpen = separatorStates.get(dirPath);\n if (isOpen === false) this.style.display = 'none';\n }\n\n this.hash = await getHash(`${this.src}/${this.size}/${this.mtime}`)\n .catch((err) => {\n error('getHash:', err);\n return null;\n });\n pb.stats.hash = (pb.stats.hash || 0) + Math.round(performance.now() - t0);\n let cachedData;\n if (opts.browser_cache) {\n const t1 = performance.now();\n // if (!pb.stats.keys) pb.stats.keys = await idbKeys();\n // if (pb.stats.keys && this.hash && pb.stats.keys.includes(this.hash)) cachedData = await idbGet(this.hash).catch(() => undefined);\n cachedData = await idbGet(this.hash).catch(() => undefined);\n pb.stats.db = (pb.stats.db || 0) + Math.round(performance.now() - t1);\n }\n const img = document.createElement('img');\n img.className = 'gallery-file';\n img.loading = 'lazy';\n img.onload = async () => {\n img.title += `\\nResolution: ${this.width} x ${this.height}`;\n this.title = img.title;\n if (!cachedData && opts.browser_cache) {\n if ((this.width === 0) || (this.height === 0)) { // fetch thumb failed so we use actual image\n this.width = img.naturalWidth;\n this.height = img.naturalHeight;\n }\n }\n };\n let ok = true;\n if (cachedData?.img) {\n img.src = cachedData.img;\n this.exif = cachedData.exif;\n this.width = cachedData.width;\n this.height = cachedData.height;\n this.size = cachedData.size;\n this.mtime = new Date(cachedData.mtime);\n pb.stats.cached = (pb.stats.cached || 0) + 1;\n } else {\n try {\n const json = await delayFetchThumb(this.src, this.#signal);\n if (!json) {\n ok = false;\n pb.stats.failed = (pb.stats.failed || 0) + 1;\n } else {\n img.src = json.data;\n this.exif = json.exif;\n this.width = json.width;\n this.height = json.height;\n this.size = json.size;\n this.mtime = new Date(json.mtime);\n pb.stats.fetched = (pb.stats.fetched || 0) + 1;\n if (opts.browser_cache && this.hash) {\n idbAdd({\n hash: this.hash,\n folder: this.fullFolder,\n file: this.name,\n size: this.size,\n mtime: this.mtime,\n width: this.width,\n height: this.height,\n src: this.src,\n exif: this.exif,\n img: img.src,\n // exif: await getExif(img), // alternative client-side exif\n // img: await createThumb(img), // alternative client-side thumb\n });\n }\n }\n } catch (err) { // thumb fetch failed so assign actual image\n img.src = `file=${this.src}`;\n pb.stats.error = (pb.stats.error || 0) + 1;\n }\n }\n pb.stats.callback = (pb.stats.callback || 0) + Math.round(performance.now() - t0);\n if (this.#signal.aborted) return;\n galleryHashes.add(this.hash);\n if (!ok) return;\n\n img.onclick = () => {\n setGallerySelectionByElement(this, { send: true });\n };\n img.onpointerenter = () => {\n el.overlay.display = 'block';\n this.shadow.appendChild(el.overlay);\n currentImage = this.src;\n currentName = this.name;\n currentTitle = this.title;\n };\n img.onpointerleave = () => {\n el.overlay.display = 'none';\n };\n img.title = `Folder: ${this.folder}\\nFile: ${this.name}\\nSize: ${this.size.toLocaleString()} bytes\\nModified: ${this.mtime.toLocaleString()}`;\n this.title = img.title;\n const shouldDisplayBasedOnSearch = this.title.toLowerCase().includes(el.search.value.toLowerCase()); // Final visibility check based on search term.\n if (this.style.display !== 'none') this.style.display = shouldDisplayBasedOnSearch ? '' : 'none'; // Only proceed if not already hidden by a closed separator\n this.shadow.appendChild(img);\n pb.stats.elapsed = (pb.stats.elapsed || 0) + Math.round(performance.now() - t0);\n }\n}\n\nasync function createThumb(img) {\n const sizeEl = document.getElementById('gallery-thumb-size');\n currentSize = sizeEl ? parseInt(sizeEl.value, 10) : opts.extra_networks_card_size;\n const height = currentSize;\n const width = opts.browser_fixed_width ? currentSize : 0;\n const canvas = document.createElement('canvas');\n const scaleY = height / img.height;\n const scaleX = width > 0 ? width / img.width : scaleY;\n const scale = Math.min(scaleX, scaleY);\n const scaledWidth = img.width * scale;\n const scaledHeight = img.height * scale;\n canvas.width = scaledWidth;\n canvas.height = scaledHeight;\n const ctx = canvas.getContext('2d');\n ctx.drawImage(img, 0, 0, scaledWidth, scaledHeight);\n const dataURL = canvas.toDataURL('image/jpeg', 0.5);\n return dataURL;\n}\n\nasync function handleSeparator(separator) {\n separator.classList.toggle('gallery-separator-hidden');\n const nowHidden = separator.classList.contains('gallery-separator-hidden');\n\n // Store the state (true = open, false = closed)\n separatorStates.set(separator.title, !nowHidden);\n\n // Update arrow and count\n const arrow = separator.querySelector('.gallery-separator-arrow');\n arrow.style.transform = nowHidden ? 'rotate(0deg)' : 'rotate(90deg)';\n\n const all = Array.from(el.files.children);\n for (const f of all) {\n if (!f.name) continue; // Skip separators\n\n // Check if file belongs to this exact directory\n const fileDir = f.name.match(/(.*)[/\\\\]/);\n const fileDirPath = fileDir ? fileDir[1] : '';\n\n if (separator.title.length > 0 && fileDirPath === separator.title) {\n f.style.display = nowHidden ? 'none' : '';\n }\n }\n // Note: Count is not updated here on manual toggle, as it reflects the total.\n // If I end up implementing it, the search function will handle dynamic count updates.\n}\n\nasync function addSeparators() {\n document.querySelectorAll('.gallery-separator').forEach((node) => { el.files.removeChild(node); });\n const all = Array.from(el.files.children);\n let lastDir;\n\n // Count root files (files without a directory path)\n const hasRootFiles = all.some((f) => f.name && !f.name.match(/[/\\\\]/));\n // Only auto-open first separator if there are no root files to display\n let isFirstSeparator = !hasRootFiles;\n\n // First pass: create separators\n for (const f of all) {\n let dir = f.name?.match(/(.*)[/\\\\]/);\n if (!dir) dir = '';\n else dir = dir[1];\n if (dir !== lastDir) {\n lastDir = dir;\n if (dir.length > 0) {\n // Count files in this directory\n let fileCount = 0;\n for (const file of all) {\n if (!file.name) continue;\n const fileDir = file.name.match(/(.*)[/\\\\]/);\n const fileDirPath = fileDir ? fileDir[1] : '';\n if (fileDirPath === dir) fileCount++;\n }\n\n const sep = document.createElement('div');\n sep.className = 'gallery-separator';\n sep.title = dir;\n\n // Default to open for the first separator if no state is saved, otherwise closed.\n const isOpen = separatorStates.has(dir) ? separatorStates.get(dir) : isFirstSeparator;\n separatorStates.set(dir, isOpen); // Ensure it's in the map\n if (isFirstSeparator) isFirstSeparator = false; // Subsequent separators will default to closed\n\n if (!isOpen) {\n sep.classList.add('gallery-separator-hidden');\n }\n\n // Create arrow span\n const arrow = document.createElement('span');\n arrow.className = 'gallery-separator-arrow';\n arrow.textContent = '\u25B6';\n arrow.style.transform = isOpen ? 'rotate(90deg)' : 'rotate(0deg)';\n\n // Create directory name span\n const dirName = document.createElement('span');\n dirName.className = 'gallery-separator-name';\n dirName.textContent = dir;\n dirName.title = dir; // Show full path on hover\n\n // Create count span\n const count = document.createElement('span');\n count.className = 'gallery-separator-count';\n count.textContent = `${fileCount} files`;\n sep.dataset.totalFiles = String(fileCount); // Store total count for search filtering\n\n sep.appendChild(arrow);\n sep.appendChild(dirName);\n sep.appendChild(count);\n\n sep.onclick = () => handleSeparator(sep);\n el.files.insertBefore(sep, f);\n }\n }\n }\n\n // Second pass: hide files in closed directories\n for (const f of all) {\n if (!f.name) continue; // Skip separators\n\n const dir = f.name.match(/(.*)[/\\\\]/);\n if (dir && dir[1]) {\n const dirPath = dir[1];\n const isOpen = separatorStates.get(dirPath);\n if (isOpen === false) {\n f.style.display = 'none';\n }\n }\n }\n}\n\n// methods\n\nconst gallerySendImage = (_images) => [currentImage]; // invoked by gradio button\nwindow.gallerySendImage = gallerySendImage;\n\n/**\n * Helper function to update status with sort mode\n * @param {...string|[string, string]} messages - Each can be either a string to use as-is, or an array of a string label and value\n * @returns {void}\n */\nfunction updateStatusLine(...messages) {\n if (!el.status) return;\n messages.unshift(['Sort', sortMode.name]);\n const fragment = document.createDocumentFragment();\n for (let i = 0; i < messages.length; i++) {\n const div = document.createElement('div');\n if (Array.isArray(messages[i])) {\n const [k, v] = messages[i];\n const tDiv = document.createElement('div');\n const ico = icons[k] || `${k}:`;\n tDiv.innerText = `${ico} ${v}`;\n div.append(tDiv);\n } else {\n const tDiv = document.createElement('div');\n tDiv.innerText = messages[i];\n div.append(tDiv);\n }\n fragment.append(div);\n }\n if (el.status.hasChildNodes()) el.status.innerHTML = '';\n el.status.append(fragment);\n}\n\nasync function injectGalleryStatusCSS() {\n const style = document.createElement('style');\n style.textContent = `\n #tab-gallery-status {\n display: inline-flex;\n flex-flow: row wrap;\n justify-content: ${opts.theme_type?.toLowerCase() === 'modern' ? 'flex-start' : 'flex-end'};\n }\n #tab-gallery-status > div {\n display: flex;\n max-width: 100%;\n white-space: nowrap;\n & div {\n &:first-child {\n flex-shrink: 0;\n margin-right: 4px;\n }\n &:last-child:not(:first-child) {\n flex-shrink: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n direction: rtl;\n text-align: left;\n }\n }\n }\n #tab-gallery-status > div:not(:last-child)::after {\n content: '|';\n margin-inline: 6px;\n }`;\n document.head.append(style);\n}\n\nasync function wsConnect(socket, timeout = 5000) {\n const intrasleep = 100;\n const ttl = timeout / intrasleep;\n const isOpened = () => (socket.readyState === WebSocket.OPEN);\n if (socket.readyState !== WebSocket.CONNECTING) return isOpened();\n\n let loop = 0;\n while (socket.readyState === WebSocket.CONNECTING && loop < ttl) {\n await new Promise((resolve) => { setTimeout(resolve, intrasleep); });\n loop++;\n }\n return isOpened();\n}\n\nasync function gallerySearch() {\n if (el.search.busy) clearTimeout(el.search.busy);\n el.search.busy = setTimeout(async () => {\n const t0 = performance.now();\n const str = el.search.value.toLowerCase();\n const allFiles = Array.from(el.files.children).filter((node) => node.name);\n const allSeparators = Array.from(el.files.children).filter((node) => node.classList.contains('gallery-separator'));\n\n // If search is cleared, restore original view\n if (str === '') {\n allSeparators.forEach((sep) => {\n sep.style.display = 'flex';\n const isOpen = separatorStates.has(sep.title) ? separatorStates.get(sep.title) : false;\n\n const countSpan = sep.querySelector('.gallery-separator-count');\n if (countSpan && sep.dataset.totalFiles) {\n countSpan.textContent = `${sep.dataset.totalFiles} files`;\n }\n\n const arrow = sep.querySelector('.gallery-separator-arrow');\n sep.classList.toggle('gallery-separator-hidden', !isOpen);\n if (arrow) arrow.style.transform = isOpen ? 'rotate(90deg)' : 'rotate(0deg)';\n });\n\n allFiles.forEach((f) => {\n const dir = f.name.match(/(.*)[/\\\\]/);\n const dirPath = (dir && dir[1]) ? dir[1] : '';\n const isOpen = separatorStates.get(dirPath);\n f.style.display = (!dirPath || isOpen) ? 'unset' : 'none';\n });\n\n updateStatusLine('Filter', 'Cleared', ['Images', allFiles.length.toLocaleString()]);\n return;\n }\n\n // --- Search logic ---\n let totalFound = 0;\n const directoryMatches = new Map();\n const fileMatches = new WeakSet();\n const r = /^(.+)([=<>])(.*)/;\n\n for (const f of allFiles) {\n let isMatch = false;\n if (r.test(str)) {\n const match = str.match(r);\n const key = match[1].trim();\n const op = match[2].trim();\n let val = match[3].trim();\n if (key === 'mtime') val = new Date(val);\n if (((op === '=') && (f[key] === val)) || ((op === '>') && (f[key] > val)) || ((op === '<') && (f[key] < val))) {\n isMatch = true;\n }\n } else if (f.title?.toLowerCase().includes(str) || f.exif?.toLowerCase().includes(str)) {\n isMatch = true;\n }\n\n if (isMatch) {\n fileMatches.add(f);\n totalFound++;\n const dir = f.name.match(/(.*)[/\\\\]/);\n const dirPath = (dir && dir[1]) ? dir[1] : '';\n directoryMatches.set(dirPath, (directoryMatches.get(dirPath) || 0) + 1);\n }\n }\n\n // Update separators based on search results\n for (const sep of allSeparators) {\n const dirPath = sep.title;\n const foundCount = directoryMatches.get(dirPath) || 0;\n\n if (foundCount > 0) {\n sep.style.display = 'flex'; // Show separator\n sep.classList.remove('gallery-separator-hidden'); // Force open\n\n const arrow = sep.querySelector('.gallery-separator-arrow');\n if (arrow) arrow.style.transform = 'rotate(90deg)';\n\n // Removed file count update during search as it was buggy.\n } else {\n sep.style.display = 'none'; // Hide separator\n }\n }\n\n // Update file visibility\n for (const f of allFiles) {\n f.style.display = fileMatches.has(f) ? 'unset' : 'none';\n }\n\n const t1 = performance.now();\n updateStatusLine('Filter', ['Images', `${totalFound.toLocaleString()} / ${allFiles.length.toLocaleString()}`], ['Time', `${Math.round(t1 - t0).toLocaleString()}ms`]);\n timer(`galleryFilter:${str}`, t1 - t0);\n refreshGallerySelection();\n }, 250);\n}\n\nconst findDuplicates = (arr, key) => {\n const map = new Map();\n return arr.filter((item) => {\n const value = item[key];\n if (map.has(value)) return true;\n map.set(value, true);\n return false;\n });\n};\n\nexport async function gallerySort(key) {\n // if currentSort does not start with key, default to key+A\n // else if currentSort ends with A change to D and vice versa for toggling sort order\n if (currentSort.startsWith(key)) currentSort = currentSort.endsWith('A') ? `${key}D` : `${key}A`;\n else currentSort = `${key}A`;\n\n if (!Object.hasOwn(gallerySorter, currentSort)) {\n error(`Gallery: \"${currentSort}\" is not a valid gallery sorting key`);\n return;\n }\n const t0 = performance.now();\n const arr = Array.from(el.files.children).filter((node) => node.name); // filter out separators\n if (arr.length === 0) return; // no files to sort\n const fragment = document.createDocumentFragment();\n\n // Helper to get directory path from a file node\n const getDirPath = (node) => {\n const match = node.name.match(/(.*)[/\\\\]/);\n return match ? match[1] : '';\n };\n\n // Partition into root files and subfolder files - root files always stay at top\n const rootFiles = arr.filter((node) => !getDirPath(node));\n const subfolderFiles = arr.filter((node) => getDirPath(node));\n\n // Group subfolder files by directory\n const folderGroups = new Map();\n for (const file of subfolderFiles) {\n const dir = getDirPath(file);\n if (!folderGroups.has(dir)) folderGroups.set(dir, []);\n folderGroups.get(dir).push(file);\n }\n\n sortMode = gallerySorter[currentSort];\n\n // Sort root files\n rootFiles.sort(sortMode.func);\n rootFiles.forEach((node) => fragment.appendChild(node));\n\n // Sort folder names alphabetically, then sort files within each folder\n // const sortedFolderNames = Array.from(folderGroups.keys()).sort((a, b) => a.localeCompare(b));\n const folderNames = Array.from(folderGroups.keys());\n const sortedFolderNames = currentSort.endsWith('A') ? folderNames.sort((a, b) => a.localeCompare(b)) : folderNames.sort((a, b) => b.localeCompare(a));\n\n for (const folderName of sortedFolderNames) {\n const files = folderGroups.get(folderName);\n files.sort(sortMode.func);\n files.forEach((node) => fragment.appendChild(node));\n }\n\n if (fragment.children.length === 0) return;\n el.files.innerHTML = '';\n el.files.appendChild(fragment);\n addSeparators();\n\n // After sorting and adding separators, ensure files respect separator states\n const all = Array.from(el.files.children);\n for (const f of all) {\n if (!f.name) continue; // Skip separators\n\n const dir = f.name.match(/(.*)[/\\\\]/);\n if (dir && dir[1]) {\n const dirPath = dir[1];\n const isOpen = separatorStates.get(dirPath);\n if (isOpen === false) {\n f.style.display = 'none';\n }\n }\n }\n\n const t1 = performance.now();\n log(`gallerySort: sort=${sortMode.name} len=${arr.length} time=${Math.floor(t1 - t0)}`);\n updateStatusLine(['Images', arr.length.toLocaleString()], ['Time', `${Math.round(t1 - t0).toLocaleString()}ms`]);\n timer(`gallerySort:${sortMode.name}`, t1 - t0);\n refreshGallerySelection();\n}\nwindow.gallerySort = gallerySort;\n\n/**\n * Function for removing the cleaning overlay\n * @callback ClearMsgCallback\n * @returns {void}\n */\n\n/**\n * Generate and display the overlay to announce cleanup is in progress.\n * @param {number} count - Number of entries being cleaned up\n * @param {boolean} all - Indicate that all thumbnails are being cleared\n * @returns {ClearMsgCallback}\n */\nfunction showCleaningMsg(count, all = false) {\n // Rendering performance isn't a priority since this doesn't run often\n const parent = el.folders.parentElement;\n const cleaningOverlay = document.createElement('div');\n const msgDiv = document.createElement('div');\n const msgText = document.createElement('div');\n const msgInfo = document.createElement('div');\n const anim = document.createElement('span');\n\n parent.style.position = 'relative';\n cleaningOverlay.style.cssText = 'position: absolute; height: 100%; width: 100%; background-color: var(--sd-main-accent-color); display: flex; align-items: center; justify-content: center; align-content: center; flex-wrap: wrap; opacity: 0.8; border-radius: var(--sd-border-radius);';\n msgDiv.style.cssText = 'display: block; color: var(--sd-button-normal-color); padding: 12px; border-radius: 8px; border-radius: var(--sd-border-radius);';\n msgText.style.cssText = 'font-size: 1.2em';\n msgInfo.style.cssText = 'font-size: 0.9em; text-align: center;';\n msgText.innerText = 'Thumbnail cleanup...';\n msgInfo.innerText = all ? 'Clearing all entries' : `Found ${count} old entries`;\n anim.classList.add('idbBusyAnim');\n\n msgDiv.append(msgText, msgInfo);\n cleaningOverlay.append(msgDiv, anim);\n parent.append(cleaningOverlay);\n return () => { cleaningOverlay.remove(); };\n}\n\nconst maintenanceQueue = new SimpleFunctionQueue('Gallery Maintenance');\n\n/**\n * Handles calling the cleanup function for the thumbnail cache\n * @param {string} folder - Folder to clean\n * @param {number} imgCount - Expected number of images in gallery\n * @param {AbortController} controller - AbortController that's handling this task\n * @param {boolean} force - Force full cleanup of the folder\n */\nasync function thumbCacheCleanup(folder, imgCount, controller, force = false) {\n if (!opts.browser_cache && !force) return;\n if (!folder || !imgCount) return;\n if (Date.now() - cleanupTimers[folder] < minCleanupTime) return; // Prevents multiple calls in quick succession\n cleanupTimers[folder] = Date.now();\n try {\n if (typeof folder !== 'string' || typeof imgCount !== 'number') {\n throw new Error('Function called with invalid arguments');\n }\n debug('thumbCacheCleanup', { folder, imgCount });\n await awaitForGallery(imgCount, controller.signal);\n } catch (err) {\n error('thumbCacheCleanup', { folder, error: err });\n return;\n }\n\n maintenanceQueue.enqueue({\n signal: controller.signal,\n callback: async () => {\n if (Date.now() - maintenanceTimers[folder] < minCleanupTime) return;\n maintenanceTimers[folder] = Date.now();\n const t0 = performance.now();\n const keptGalleryHashes = force ? new Set() : new Set(galleryHashes.values()); // External context should be safe since this function run is guarded by AbortController/AbortSignal in the SimpleFunctionQueue\n const folderNormalized = folder.replace(/\\/+/g, '/').replace(/\\/$/, '');\n const recursiveFolder = IDBKeyRange.bound(folderNormalized, `${folderNormalized}\\uffff`, false, true);\n if (keptGalleryHashes.size < minCleanupCount && !force) return; // Don't run when there aren't many excess entries\n const cachedHashesCount = await idbCount(recursiveFolder)\n .catch((e) => {\n error('maintenanceQueue', { folder, error: e });\n return Infinity; // Forces next check to fail if something went wrong\n });\n const cleanupCount = cachedHashesCount - keptGalleryHashes.size;\n if (!force && (cleanupCount < minCleanupCount || !Number.isFinite(cleanupCount))) return; // Don't run when there aren't many excess entries\n log('galleryMaintenance', { folder });\n\n if (controller.signal.aborted) {\n debug('maintenanceQueue', { folder, reason: controller.signal.reason });\n return;\n }\n const cb_clearMsg = showCleaningMsg(cleanupCount);\n await idbFolderCleanup(keptGalleryHashes, recursiveFolder, controller.signal)\n .then((delcount) => {\n const t1 = performance.now();\n log('galleryMaintenance', { folder, kept: keptGalleryHashes.size, deleted: delcount, time: Math.round(t1 - t0) });\n timer(`thumbnailDBCleanup:${folder}`, t1 - t0);\n currentGalleryFolder = null;\n updateStatusLine('Thumbnail cache cleared');\n })\n .catch((reason) => {\n SimpleFunctionQueue.abortLogger('thumbCacheCleanup', reason);\n })\n .finally(async () => {\n await new Promise((resolve) => { setTimeout(resolve, 1000); }); // Delay removal by 1 second to ensure at least minimum visibility\n cb_clearMsg();\n });\n },\n });\n}\n\nfunction resetGalleryState(reason) {\n maintenanceController.abort(reason);\n const controller = new AbortController();\n maintenanceController = controller;\n\n galleryHashes.clear(); // Must happen AFTER the AbortController steps\n pb.hide();\n resetGallerySelection();\n return controller;\n}\n\nfunction clearCacheIfDisabled(browser_cache) {\n if (browser_cache === false) {\n log('thumbCacheCleanup', { disabled: true });\n const controller = resetGalleryState('Clearing all thumbnails from cache');\n maintenanceQueue.enqueue({\n signal: controller.signal,\n callback: async () => {\n const t0 = performance.now();\n const cb_clearMsg = showCleaningMsg(0, true);\n await idbClearAll(controller.signal)\n .then(() => {\n log('thumbCacheCleanup', { time: Math.floor(performance.now() - t0) });\n currentGalleryFolder = null;\n updateStatusLine('Thumbnail cache cleared');\n })\n .catch((e) => {\n SimpleFunctionQueue.abortLogger('thumbCacheCleanup', e);\n })\n .finally(async () => {\n await new Promise((resolve) => { setTimeout(resolve, 1000); });\n cb_clearMsg();\n });\n },\n });\n }\n}\n\nexport function clearCache() {\n if (!currentGalleryFolder) return;\n const controller = resetGalleryState('Clearing folder thumbnails cache');\n el.files.innerHTML = '';\n log('clearCache', { folder: currentGalleryFolder });\n thumbCacheCleanup(currentGalleryFolder, 0, controller, true);\n}\nwindow.clearCache = clearCache;\n\nasync function fetchFilesHT(evt, controller) {\n const t0 = performance.now();\n const fragment = document.createDocumentFragment();\n updateStatusLine(['Folder', evt.target.name], 'in-progress');\n let numFiles = 0;\n\n const res = await authFetch(`${window.api}/browser/files?folder=${encodeURI(evt.target.name)}`);\n if (!res || res.status !== 200) {\n updateStatusLine(['Folder', evt.target.name], ['Failed', res?.statusText || 'No response']);\n return;\n }\n const jsonData = await res.json();\n for (const line of jsonData) {\n const data = decodeURI(line).split('##F##');\n const fileName = data[1];\n const ext = fileName.split('.').pop().toLowerCase();\n if (SUPPORTED_EXTENSIONS.includes(ext)) {\n numFiles++;\n const f = new GalleryFile(data[0], fileName, controller.signal);\n fragment.appendChild(f);\n }\n }\n\n if (controller.signal.aborted) return;\n el.files.appendChild(fragment);\n\n const t1 = performance.now();\n log(`gallery: folder=${evt.target.name} num=${numFiles} method=http time=${Math.floor(t1 - t0)}ms`);\n timer(`galleryFetch:${evt.target.name}`, t1 - t0);\n updateStatusLine(['Folder', evt.target.name], ['Images', numFiles.toLocaleString()], ['Time', `${Math.floor(t1 - t0).toLocaleString()}ms`]);\n pb.start(numFiles);\n addSeparators();\n refreshGallerySelection();\n thumbCacheCleanup(evt.target.name, numFiles, controller);\n}\n\nasync function fetchFilesWS(evt) { // fetch file-by-file list over websockets\n if (!url) return;\n // Abort previous controller and point to new controller for next time\n const controller = resetGalleryState('Gallery update'); // Called here because fetchFilesHT isn't called directly\n\n el.files.innerHTML = '';\n updateGalleryStyles();\n if (ws && ws.readyState === WebSocket.OPEN) ws.close(); // abort previous request\n let wsConnected = false;\n try {\n ws = new WebSocket(`${url}/sdapi/v1/browser/files`);\n wsConnected = await wsConnect(ws);\n } catch (err) {\n log('gallery: ws connect error', err);\n return;\n }\n log(`gallery: connected=${wsConnected} state=${ws?.readyState} url=${ws?.url}`);\n currentGalleryFolder = evt.target.name;\n if (!wsConnected) {\n await fetchFilesHT(evt, controller); // fallback to http\n return;\n }\n updateStatusLine(['Folder', evt.target.name]);\n const t0 = performance.now();\n let numFiles = 0;\n let t1 = performance.now();\n let fragment = document.createDocumentFragment();\n\n ws.onmessage = (event) => {\n t1 = performance.now();\n const data = decodeURI(event.data).split('##F##');\n if (data[0] === '#END#') {\n ws.close();\n } else {\n const fileName = data[1];\n const ext = fileName.split('.').pop().toLowerCase();\n if (SUPPORTED_EXTENSIONS.includes(ext)) {\n const file = new GalleryFile(data[0], fileName, controller.signal);\n numFiles++;\n fragment.appendChild(file);\n if (numFiles % fragmentSize === 0) {\n updateStatusLine(['Folder', evt.target.name], ['Images', numFiles.toLocaleString()], ['Status', 'in-progress'], ['Time', `${Math.floor(t1 - t0).toLocaleString()}ms`]);\n el.files.appendChild(fragment);\n fragment = document.createDocumentFragment();\n }\n }\n }\n };\n ws.onclose = (event) => {\n if (controller.signal.aborted) return;\n el.files.appendChild(fragment);\n // gallerySort();\n log(`gallery: folder=${evt.target.name} num=${numFiles} method=ws time=${Math.floor(t1 - t0)}ms`);\n updateStatusLine(['Folder', evt.target.name], ['Images', numFiles.toLocaleString()], ['Time', `${Math.floor(t1 - t0).toLocaleString()}ms`]);\n pb.start(numFiles);\n addSeparators();\n refreshGallerySelection();\n thumbCacheCleanup(evt.target.name, numFiles, controller);\n };\n ws.onerror = (event) => {\n log('gallery ws error', event);\n };\n ws.send(encodeURI(evt.target.name));\n}\n\nasync function updateFolders() {\n // if (el.folders.children.length > 0) return;\n const res = await authFetch(`${window.api}/browser/folders`);\n if (!res || res.status !== 200) return;\n url = res.url.split('/sdapi')[0].replace('http', 'ws'); // update global url as ws need fqdn\n const folders = await res.json();\n el.folders.innerHTML = '';\n for (const folder of folders) {\n const f = new GalleryFolder(folder);\n el.folders.appendChild(f);\n }\n}\n\nasync function monitorGalleries() {\n async function galleryMutation(mutations) {\n const galleries = mutations.filter((m) => m.target?.classList?.contains('preview'));\n for (const gallery of galleries) {\n const links = gallery.target.querySelectorAll('a');\n for (const link of links) {\n const href = link.getAttribute('href');\n if (!href) continue;\n const fn = href.split('/').pop().split('\\\\').pop();\n link.setAttribute('download', fn);\n }\n }\n }\n\n const galleryElements = gradioApp().querySelectorAll('.gradio-gallery');\n for (const gallery of galleryElements) {\n const galleryObserver = new MutationObserver(galleryMutation);\n galleryObserver.observe(gallery, { childList: true, subtree: true, attributes: true });\n }\n}\n\nasync function setOverlayAnimation() {\n const busyAnimation = document.createElement('style');\n\n // eslint-disable-next-line @stylistic/max-len\n busyAnimation.textContent = '.idbBusyAnim{width:16px;height:16px;border-radius:50%;display:block;margin:40px;position:relative;background:#aa3d00;color:#fff;box-shadow:-24px 0,24px 0;box-sizing:border-box;animation:2s ease-in-out infinite overlayRotation}@keyframes overlayRotation{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}';\n document.head.append(busyAnimation);\n}\n\nasync function initGalleryAutoRefresh() {\n const isModern = opts.theme_type?.toLowerCase() === 'modern';\n let galleryTab = isModern ? document.getElementById('gallery_tabitem') : document.getElementById('tab_gallery');\n let timeout = 0;\n while (!galleryTab && timeout++ < 60) {\n await new Promise((resolve) => { setTimeout(resolve, 2500); });\n galleryTab = isModern ? document.getElementById('gallery_tabitem') : document.getElementById('tab_gallery');\n }\n if (!galleryTab) {\n error('Gallery: timeout');\n return;\n }\n const displayNoneRegEx = /display:\\s*none/;\n async function galleryAutoRefresh(mutations) {\n if (!opts.browser_gallery_autoupdate) return;\n for (const mutation of mutations) {\n switch (mutation.attributeName) {\n case 'class':\n if (mutation.oldValue.includes('hidden') && !mutation.target.classList.contains('hidden')) {\n await updateFolders();\n GalleryFolder.getActive()?.click();\n }\n break;\n case 'style':\n if (displayNoneRegEx.test(mutation.oldValue) && !displayNoneRegEx.test(mutation.target.style.display)) {\n await updateFolders();\n GalleryFolder.getActive()?.click();\n }\n break;\n default:\n break;\n }\n }\n }\n const galleryVisObserver = new MutationObserver(galleryAutoRefresh);\n galleryVisObserver.observe(galleryTab, { attributeFilter: ['class', 'style'], attributeOldValue: true });\n}\n\nasync function overlayDelete(evt) {\n const res = await authFetch(`${window.api}/delete-image?file=${encodeURIComponent(currentImage)}`, { method: 'DELETE' });\n evt.stopPropagation();\n if (!res || res.status !== 200) {\n error('galleryDelete', { file: currentImage, status: res?.status, statusText: res?.statusText });\n return;\n }\n const data = await res.json();\n log('galleryDelete', data);\n GalleryFolder.getActive()?.click();\n}\n\nasync function overlayDownload(evt) {\n log('galleryDownload', currentImage);\n const link = document.createElement('a');\n link.href = `/file=${encodeURIComponent(currentImage)}`;\n link.download = currentName;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n evt.stopPropagation();\n}\n\nasync function overlayInfo(evt) {\n evt.stopPropagation();\n const tgt = document.getElementById('html_info_formatted_gallery');\n if (!tgt) return;\n const res = await authFetch(`${window.api}/png-info?file=${encodeURI(currentImage)}`);\n if (!res || res.status !== 200) return;\n const data = await res.json();\n log('galleryInfo res', data);\n const prompt = data?.parameters?.Prompt || '';\n const negative = data?.parameters?.Negative || data?.parameters?.['Negative prompt'] || '';\n const raw = data?.info || '';\n const params = data?.parameters || {};\n delete params.Prompt;\n delete params.Negative;\n delete params['Negative prompt'];\n const paramsFormatted = Object.entries(params).map(([key, value]) => `${key}: ${value}`).join(' | ');\n tgt.innerHTML = `\n
    File: ${currentImage}
    \n
    Prompt: ${prompt}
    \n
    Negative: ${negative}
    \n
    ${paramsFormatted}
    \n
    Raw:
    ${raw}
    \n `;\n const img = document.querySelector('#gallery_gallery img');\n if (img) img.src = `/file=${encodeURIComponent(currentImage)}?t=${Date.now()}`; // Force refresh in case info endpoint is faster than cache update\n const status = document.querySelector('#html_log_gallery p');\n if (status) status.innerText = currentTitle;\n}\n\nasync function createOverlay() {\n if (el.overlay) return;\n el.overlay = document.createElement('div');\n el.overlay.className = 'gallery-overlay';\n const btnDownload = document.createElement('span');\n btnDownload.innerHTML = '\\udb85\\udc64';\n btnDownload.title = 'Download image';\n btnDownload.style.cursor = 'pointer';\n btnDownload.addEventListener('click', overlayDownload);\n const btnDelete = document.createElement('span');\n btnDelete.innerHTML = '\\uf05c';\n btnDelete.title = 'Delete image';\n btnDelete.style.cursor = 'pointer';\n btnDelete.addEventListener('click', overlayDelete);\n const btnInfo = document.createElement('span');\n btnInfo.innerHTML = '\\uf05a';\n btnInfo.title = 'Image metadata';\n btnInfo.style.cursor = 'pointer';\n btnInfo.addEventListener('click', overlayInfo);\n el.overlay.append(btnInfo, btnDelete, btnDownload);\n}\n\nasync function blockQueueUntilReady() {\n // Add block to maintenanceQueue until cache is ready\n maintenanceQueue.enqueue({\n signal: new AbortController().signal, // Use standalone AbortSignal that can't be aborted\n callback: async () => {\n let timeout = 0;\n while (!idbIsReady() && timeout++ < 60) {\n await new Promise((resolve) => { setTimeout(resolve, 1000); });\n }\n if (!idbIsReady()) {\n throw new Error('Timed out waiting for thumbnail cache');\n }\n },\n });\n}\n\nexport async function initGallery() { // triggered on gradio change to monitor when ui gets sufficiently constructed\n const t0 = performance.now();\n el.folders = gradioApp().getElementById('tab-gallery-folders');\n el.files = gradioApp().getElementById('tab-gallery-files');\n el.status = gradioApp().getElementById('tab-gallery-status');\n el.search = gradioApp().querySelector('#tab-gallery-search textarea');\n el.size = document.getElementById('tab-gallery-thumb-size');\n if (!el.folders || !el.files || !el.status || !el.search) {\n error('initGallery', 'Missing gallery elements');\n return;\n }\n\n if (el.size) {\n el.size.value = opts.extra_networks_card_size;\n el.size.addEventListener('input', updateGalleryStyles);\n }\n blockQueueUntilReady(); // Run first\n createOverlay();\n updateGalleryStyles();\n injectGalleryStatusCSS();\n setOverlayAnimation();\n\n const progress = gradioApp().getElementById('tab-gallery-progress');\n if (progress) pb.attachTo(progress);\n else log('initGallery', 'Failed to attach loading progress bar');\n\n el.search.addEventListener('input', gallerySearch);\n el.btnSend = gradioApp().getElementById('tab-gallery-send-image');\n document.getElementById('tab-gallery-files').style.height = opts.logmonitor_show ? '75vh' : '85vh';\n\n monitorGalleries();\n updateFolders();\n initGalleryAutoRefresh();\n [\n 'browser_folders',\n 'outdir_samples',\n 'outdir_txt2img_samples',\n 'outdir_img2img_samples',\n 'outdir_control_samples',\n 'outdir_extras_samples',\n 'outdir_save',\n 'outdir_video',\n 'outdir_init_images',\n 'outdir_grids',\n 'outdir_txt2img_grids',\n 'outdir_img2img_grids',\n 'outdir_control_grids',\n ].forEach((op) => { monitorOption(op, updateFolders); });\n const t1 = performance.now();\n log('initGallery', Math.round(t1 - t0));\n timer('initGallery', t1 - t0);\n}\n\n// register on startup\n\ncustomElements.define('gallery-folder', GalleryFolder);\ncustomElements.define('gallery-file', GalleryFile);\n", "import exifr from 'exifr';\nimport Panzoom from 'panzoom';\nimport { log, debug } from './logger';\nimport { gradioApp, onAfterUiUpdate } from './script';\nimport { getENActiveTab } from './extraNetworks';\nimport { all_gallery_buttons, selected_gallery_button } from './ui';\nimport { timer } from './timers';\n\n// A full size 'lightbox' preview modal shown when left clicking on gallery previews\nlet previewDrag = false;\nlet modalPreviewZone;\nlet previewInstance;\n\nfunction cycleImageFit() {\n const root = document.documentElement;\n const current = getComputedStyle(root).getPropertyValue('--sd-image-fit').trim();\n let next = 'contain';\n if (current === 'contain') next = 'cover';\n else if (current === 'cover') next = 'fill';\n else if (current === 'fill') next = 'scale-down';\n else if (current === 'scale-down') next = 'none';\n root.style.setProperty('--sd-image-fit', next);\n log('cycleImageFit', current, next);\n}\n\nwindow.cycleImageFit = cycleImageFit;\n\nfunction isInViewport(element) {\n const rect = element.getBoundingClientRect();\n return rect.top >= 0 && rect.left >= 0 && rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && rect.right <= (window.innerWidth || document.documentElement.clientWidth);\n}\n\nfunction closeModal(evt, force = false) {\n if (force) gradioApp().getElementById('lightboxModal').style.display = 'none';\n if (previewDrag) return;\n if (evt?.button !== 0) return;\n gradioApp().getElementById('lightboxModal').style.display = 'none';\n let thumbnails = Array.from(gradioApp().querySelectorAll('.thumbnails .thumbnail-item'));\n thumbnails = thumbnails.filter((el) => el.checkVisibility());\n if (thumbnails.length === 0) return;\n thumbnails[0].focus();\n}\n\nfunction modalImageSwitch(offset) {\n const negmod = (n, m) => ((n % m) + m) % m;\n const galleryButtons = all_gallery_buttons();\n if (galleryButtons.length > 1) {\n const currentButton = selected_gallery_button();\n let result = -1;\n galleryButtons.forEach((v, i) => {\n if (v === currentButton) result = i;\n });\n if (result !== -1) {\n const nextButton = galleryButtons[negmod((result + offset), galleryButtons.length)];\n nextButton.click();\n const modalImage = gradioApp().getElementById('modalImage');\n const modal = gradioApp().getElementById('lightboxModal');\n modalImage.src = nextButton.children[0].src;\n if (modalImage.style.display === 'none') modal.style.setProperty('background-image', `url(${modalImage.src})`);\n return;\n }\n }\n\n const galleryFilesContainer = gradioApp().getElementById('tab-gallery-files');\n if (!galleryFilesContainer || !galleryFilesContainer.offsetParent) return;\n const gallerySelection = window.getGallerySelection();\n if (!gallerySelection.files.length || gallerySelection.files.length <= 1) return;\n const baseIndex = gallerySelection.index >= 0 ? gallerySelection.index : 0;\n const nextIndex = negmod((baseIndex + offset), gallerySelection.files.length);\n window.setGallerySelection(nextIndex, { send: true });\n const modalImage = gradioApp().getElementById('modalImage');\n const modal = gradioApp().getElementById('lightboxModal');\n const directSrc = window.getGallerySelectedUrl();\n if (modalImage && modal && directSrc) {\n modalImage.src = directSrc;\n if (modalImage.style.display === 'none') modal.style.setProperty('background-image', `url(${directSrc})`);\n }\n}\n\nfunction modalSaveImage(event?: any) {\n const tabName = getENActiveTab();\n const saveBtn = gradioApp().getElementById(`save_${tabName}`);\n log('modalSaveImage', tabName, saveBtn);\n if (saveBtn) saveBtn.click();\n modalImageSwitch(0);\n}\n\nfunction modalKeyHandler(event) {\n log('modalKeyHandler', event.key);\n switch (event.key) {\n case 's':\n modalSaveImage();\n break;\n case 'ArrowLeft':\n modalImageSwitch(-1);\n break;\n case 'ArrowRight':\n modalImageSwitch(1);\n break;\n case 'Escape':\n closeModal(null, true);\n break;\n }\n event.stopPropagation();\n}\n\nfunction decodeBytes(bytes: Uint8Array): string {\n if (!bytes || bytes.length < 8) return '';\n const prefix = new TextDecoder('ascii').decode(bytes.slice(0, 8));\n const data = bytes.slice(8);\n if (prefix.startsWith('ASCII')) return new TextDecoder('ascii').decode(data).replace(/\\0+$/, '');\n if (prefix.startsWith('UNICODE')) return new TextDecoder('utf-16be').decode(data).replace(/\\0+$/, '');\n if (prefix.startsWith('JIS')) return new TextDecoder('shift-jis').decode(data).replace(/\\0+$/, '');\n return new TextDecoder().decode(bytes).replace(/\\0+$/, '');\n}\n\nexport async function getExif(el) {\n let exif: any = '';\n try {\n exif = await exifr.parse(el, { userComment: true });\n } catch (e) {\n log('getExif', el, e);\n return exif;\n }\n // let html = `Image ${el.src} Size ${el.naturalWidth}x${el.naturalHeight}
    `;\n let html = '';\n let params;\n if (!exif) {\n log('getExif', 'exif is none');\n return html;\n }\n if (exif.parameters) params = exif.parameters;\n else if (exif.userComment) params = decodeBytes(exif.userComment);\n else params = '';\n // debug('getExif', params);\n if (params.length > 0) html += `Prompt ${params || ''}
    `;\n html = html.replace('Negative prompt:', '
    Negative');\n html = html.replace('Steps:', '
    Params Steps:');\n html = html.replaceAll('\\n', '
    ');\n html = html.replaceAll('

    ', '
    ');\n return html;\n}\n\nasync function displayExif(el) {\n const modalExif = gradioApp().getElementById('modalExif');\n const html = await getExif(el);\n modalExif.innerHTML = html;\n}\n\nfunction showModal(event) {\n const source = event.target || event.srcElement;\n const modalImage = gradioApp().getElementById('modalImage');\n const lb = gradioApp().getElementById('lightboxModal');\n lb.ownerSVGElement = modalImage;\n modalImage.onload = () => {\n previewInstance.moveTo(0, 0);\n modalPreviewZone.focus();\n if (opts.viewer_show_metadata) displayExif(modalImage);\n };\n modalImage.src = source.src;\n if (modalImage.style.display === 'none') lb.style.setProperty('background-image', `url(${source.src})`);\n lb.style.display = 'flex';\n lb.onkeydown = modalKeyHandler;\n event.stopPropagation();\n}\n\nfunction modalDownloadImage() {\n const link = document.createElement('a');\n link.style.display = 'none';\n link.href = gradioApp().getElementById('modalImage').src;\n link.download = 'image';\n document.body.appendChild(link);\n link.click();\n setTimeout(() => {\n URL.revokeObjectURL(link.href);\n link.parentNode.removeChild(link);\n }, 0);\n}\n\nfunction modalZoomSet(modalImage, enable) {\n localStorage.setItem('modalZoom', enable ? 'yes' : 'no');\n if (modalImage) modalImage.classList.toggle('modalImageFullscreen', !!enable);\n}\n\nfunction setupImageForLightbox(image) {\n if (image.dataset.modded) return;\n image.dataset.modded = 'true';\n image.style.cursor = 'pointer';\n image.style.userSelect = 'none';\n}\n\nfunction modalZoomToggle(event) {\n const modalImage = gradioApp().getElementById('modalImage');\n modalZoomSet(modalImage, !modalImage.classList.contains('modalImageFullscreen'));\n event.stopPropagation();\n modalImageSwitch(0);\n}\n\nfunction modalTileToggle(event) {\n const modalImage = gradioApp().getElementById('modalImage');\n const modal = gradioApp().getElementById('lightboxModal');\n const isTiling = modalImage.style.display === 'none';\n if (isTiling) {\n modalImage.style.display = 'block';\n modal.style.setProperty('background-image', 'none');\n } else {\n modalImage.style.display = 'none';\n modal.style.setProperty('background-image', `url(${modalImage.src})`);\n }\n event.stopPropagation();\n modalImageSwitch(0);\n}\n\nfunction modalResetInstance(event) {\n const modalImage = document.getElementById('modalImage');\n previewInstance.dispose();\n previewInstance = Panzoom(modalImage, { zoomSpeed: 0.05, minZoom: 0.1, maxZoom: 5.0, filterKey: (/* e, dx, dy, dz */) => true });\n event.stopPropagation();\n modalImageSwitch(0);\n}\n\nfunction modalToggleParams(event) {\n const modalExif = gradioApp().getElementById('modalExif');\n if (modalExif.style.display === 'none' || modalExif.style.display === '') {\n modalExif.style.display = 'block';\n } else {\n modalExif.style.display = 'none';\n }\n event.stopPropagation();\n modalImageSwitch(0);\n}\n\nfunction galleryClickEventHandler(event) {\n if (event.button !== 0) return;\n if (event.target.nodeName === 'IMG' && !event.target.parentNode.classList.contains('thumbnail-item')) {\n const initialZoom = (localStorage.getItem('modalZoom') || true) === 'yes';\n modalZoomSet(gradioApp().getElementById('modalImage'), initialZoom);\n event.preventDefault();\n showModal(event);\n }\n}\n\nasync function bindImageViewer() {\n // Each tab has its own gradio-gallery\n const galleryPreviews = gradioApp().querySelectorAll('.gradio-gallery > div.preview');\n for (const galleryPreview of galleryPreviews) {\n if (!galleryPreview.hasAttribute('data-listener')) galleryPreview.addEventListener('click', galleryClickEventHandler, true);\n galleryPreview.setAttribute('data-listener', 'true');\n galleryPreview.querySelectorAll('img').forEach(setupImageForLightbox);\n }\n}\n\nexport async function initImageViewer() {\n const t0 = performance.now();\n // main elements\n const modal = document.createElement('div');\n modal.id = 'lightboxModal';\n\n modalPreviewZone = document.createElement('div');\n modalPreviewZone.className = 'lightboxModalPreviewZone';\n\n const modalImage = document.createElement('img');\n modalImage.id = 'modalImage';\n modalPreviewZone.appendChild(modalImage);\n previewInstance = Panzoom(modalImage, { zoomSpeed: 0.05, minZoom: 0.1, maxZoom: 5.0, filterKey: (/* e, dx, dy, dz */) => true });\n\n // toolbar\n const modalZoom = document.createElement('span');\n modalZoom.id = 'modal_zoom';\n modalZoom.className = 'cursor';\n modalZoom.innerHTML = '\\uf531';\n modalZoom.title = 'Toggle zoomed view';\n modalZoom.addEventListener('click', modalZoomToggle, true);\n\n const modalReset = document.createElement('span');\n modalReset.id = 'modal_reset';\n modalReset.className = 'cursor';\n modalReset.innerHTML = '\\uf532';\n modalReset.title = 'Reset zoomed view';\n modalReset.addEventListener('click', modalResetInstance, true);\n\n const modalTile = document.createElement('span');\n modalTile.id = 'modal_tile';\n modalTile.className = 'cursor';\n modalTile.innerHTML = '\\udb81\\udd70';\n modalTile.title = 'Preview tiling';\n modalTile.addEventListener('click', modalTileToggle, true);\n\n const modalSave = document.createElement('span');\n modalSave.id = 'modal_save';\n modalSave.className = 'cursor';\n modalSave.innerHTML = '\\udb80\\udd93';\n modalSave.title = 'Save Image';\n modalSave.addEventListener('click', modalSaveImage, true);\n\n const modalDownload = document.createElement('span');\n modalDownload.id = 'modal_download';\n modalDownload.className = 'cursor';\n modalDownload.innerHTML = '\\udb85\\udc62';\n modalDownload.title = 'Download Image';\n modalDownload.addEventListener('click', modalDownloadImage, true);\n\n const modalClose = document.createElement('span');\n modalClose.id = 'modal_close';\n modalClose.className = 'cursor';\n modalClose.innerHTML = '\\udb80\\udd57';\n modalClose.title = 'Close';\n modalClose.addEventListener('click', (evt) => closeModal(evt, true), true);\n\n const modalToggleParamsBtn = document.createElement('span');\n modalToggleParamsBtn.id = 'modal_toggle_params';\n modalToggleParamsBtn.className = 'cursor';\n modalToggleParamsBtn.innerHTML = '\\uf05a';\n modalToggleParamsBtn.title = 'Toggle Parameters';\n modalToggleParamsBtn.addEventListener('click', modalToggleParams, true);\n\n // exif\n const modalExif = document.createElement('div');\n modalExif.id = 'modalExif';\n modalExif.style = 'position: absolute; bottom: 0px; width: 100%; background-color: rgba(0, 0, 0, 0.5); color: var(--neutral-300); padding: 1em; font-size: small; line-height: 1.2em; z-index: 1; display: none;';\n\n // handlers\n modalPreviewZone.addEventListener('mousedown', () => { previewDrag = false; });\n modalPreviewZone.addEventListener('touchstart', () => { previewDrag = false; }, { passive: true });\n modalPreviewZone.addEventListener('mousemove', () => { previewDrag = true; });\n modalPreviewZone.addEventListener('touchmove', () => { previewDrag = true; }, { passive: true });\n modalPreviewZone.addEventListener('scroll', () => { previewDrag = true; });\n modalPreviewZone.addEventListener('mouseup', (evt) => closeModal(evt));\n modalPreviewZone.addEventListener('touchend', (evt) => closeModal(evt));\n\n const modalPrev = document.createElement('a');\n modalPrev.className = 'modalPrev';\n modalPrev.innerHTML = '❮';\n modalPrev.addEventListener('click', () => modalImageSwitch(-1), true);\n // modalPrev.addEventListener('keydown', modalKeyHandler, true);\n\n const modalNext = document.createElement('a');\n modalNext.className = 'modalNext';\n modalNext.innerHTML = '❯';\n modalNext.addEventListener('click', () => modalImageSwitch(1), true);\n // modalNext.addEventListener('keydown', modalKeyHandler, true);\n\n const modalControls = document.createElement('div');\n modalControls.className = 'modalControls gradio-container';\n\n // build interface\n modal.appendChild(modalPrev);\n modal.appendChild(modalPreviewZone);\n modal.appendChild(modalNext);\n modal.append(modalControls);\n modalControls.appendChild(modalZoom);\n modalControls.appendChild(modalReset);\n modalControls.appendChild(modalTile);\n modalControls.appendChild(modalSave);\n modalControls.appendChild(modalDownload);\n modalControls.appendChild(modalToggleParamsBtn);\n modalControls.appendChild(modalClose);\n modal.append(modalExif);\n\n gradioApp().appendChild(modal);\n const t1 = performance.now();\n log('initImageViewer', Math.round(t1 - t0));\n timer('initImageViewer', t1 - t0);\n}\n\nonAfterUiUpdate(bindImageViewer);\n", "import { log } from './logger';\n\n/*\n * Extra-networks completion for SD.Next prompt textareas.\n *\n * Companion to autocomplete.js: exposes sorted indices for LoRAs, embeddings, and wildcards,\n * each backed by an existing enumeration endpoint. Dispatch and insertion are driven from\n * autocomplete.js via the mode returned by getCurrentWord().\n */\n\ninterface XnItem {\n name: string;\n display?: string;\n}\n\ninterface SearchItem {\n name: string;\n display: string;\n}\n\ntype SearchResult = SearchItem & { kind: 'lora' | 'embed' | 'wildcard' };\n\n/** Binary search for the first item where item.name >= query. */\nexport function lowerBound(items: { name: string }[], query: string): number {\n let lo = 0;\n let hi = items.length;\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (items[mid].name < query) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n}\n\ninterface XnEngine {\n lora: XnIndex;\n embed: XnIndex;\n wildcard: XnIndex;\n fetchJson(path: string): Promise;\n loadAll(): Promise;\n searchLoras(prefix: string, limit?: number): SearchResult[];\n searchEmbeddings(prefix: string, limit?: number): SearchResult[];\n searchWildcards(prefix: string, limit?: number): SearchResult[];\n}\n\n// -- Indices --\n\nclass XnIndex {\n items: SearchItem[];\n\n constructor(items: XnItem[]) {\n // items: [{ name, display }]. Sorted in-place by lowercase name.\n this.items = items.map(({ name, display }) => ({\n name: String(name).toLowerCase(),\n display: display ?? name,\n }));\n this.items.sort((a, b) => a.name.localeCompare(b.name));\n }\n\n search(prefix: string, limit = 20): SearchItem[] {\n const query = String(prefix).toLowerCase();\n // Empty query returns the first `limit` items so `= 3) {\n for (let i = 0; i < this.items.length && matches.length < limit; i++) {\n if (this.items[i].name.includes(query)) matches.push(this.items[i]);\n }\n }\n return matches.slice(0, limit);\n }\n}\n\n// -- Engine --\n\nexport const xnEngine: XnEngine = {\n lora: new XnIndex([]),\n embed: new XnIndex([]),\n wildcard: new XnIndex([]),\n\n async fetchJson(path) {\n try {\n const resp = await fetch(`${window.api}${path}`, { credentials: 'include' });\n if (!resp.ok) throw new Error(`${resp.status}`);\n return await resp.json();\n } catch (e) {\n log('autoComplete', { xnFetchFailed: path, error: String(e) });\n return null;\n }\n },\n\n async loadAll() {\n // LoRAs: [{name, alias, path, metadata}, ...]\n const loraData = await this.fetchJson('/loras');\n if (Array.isArray(loraData)) {\n const items: XnItem[] = [];\n for (const lo of loraData) {\n if (typeof lo === 'object' && lo && 'name' in lo && typeof lo.name === 'string') items.push({ name: lo.name });\n if (typeof lo === 'object' && lo && 'alias' in lo && typeof lo.alias === 'string' && lo.alias !== (lo as { name?: string }).name) items.push({ name: lo.alias });\n }\n this.lora = new XnIndex(items);\n }\n // Embeddings: {loaded: [...], skipped: [...]}\n const embData = await this.fetchJson('/embeddings') as Record | null;\n if (embData && typeof embData === 'object') {\n const loaded = Array.isArray(embData.loaded) ? embData.loaded : [];\n this.embed = new XnIndex(loaded.map((name) => ({ name: String(name) })));\n }\n // Wildcards: [{name}, ...]\n const wcData = await this.fetchJson('/wildcards');\n if (Array.isArray(wcData)) {\n this.wildcard = new XnIndex(\n wcData\n .filter((w) => typeof w === 'object' && w && 'name' in w && typeof w.name === 'string')\n .map((w) => ({ name: w.name })),\n );\n }\n log('autoComplete', {\n xnLoaded: true,\n lora: this.lora.items.length,\n embed: this.embed.items.length,\n wildcard: this.wildcard.items.length,\n });\n },\n\n searchLoras(prefix, limit = 20) {\n return this.lora.search(prefix, limit).map((item) => ({ ...item, kind: 'lora' as const }));\n },\n\n searchEmbeddings(prefix, limit = 20) {\n return this.embed.search(prefix, limit).map((item) => ({ ...item, kind: 'embed' as const }));\n },\n\n searchWildcards(prefix, limit = 20) {\n return this.wildcard.search(prefix, limit).map((item) => ({ ...item, kind: 'wildcard' as const }));\n },\n};\n", "import { xnEngine, lowerBound } from './autocomplete_xn';\nimport { log } from './logger';\nimport { gradioApp, onAfterUiUpdate, onOptionsChanged, executeCallbacks, optionsChangedCallbacks } from './script';\nimport { timer } from './timers';\nimport { updateInput } from './ui';\n\n/*\n * Tag autocomplete for SD.Next prompt textareas.\n *\n * Ported from Enso's CodeMirror-based autocomplete (autocomplete.ts).\n * Uses binary search on sorted tag arrays for O(log n) prefix lookup,\n * with substring fallback for 4+ char queries.\n */\n\n// -- Category colors (unified 14-category scheme) --\n\nconst CATEGORY_COLORS = {\n 0: '#0075f8', // general\n 1: '#cc0000', // artist\n 2: '#ff4500', // studio\n 3: '#9900ff', // copyright\n 4: '#00ab2c', // character\n 5: '#ed5d1f', // species\n 6: '#8a66ff', // genre\n 7: '#00cccc', // medium\n 8: '#6b7280', // meta\n 9: '#228b22', // lore\n 10: '#e67e22', // lens\n 11: '#f1c40f', // lighting\n 12: '#1abc9c', // composition\n 13: '#e84393', // color\n};\n\nconst CATEGORY_NAMES = {\n 0: 'general',\n 1: 'artist',\n 2: 'studio',\n 3: 'copyright',\n 4: 'character',\n 5: 'species',\n 6: 'genre',\n 7: 'medium',\n 8: 'meta',\n 9: 'lore',\n 10: 'lens',\n 11: 'lighting',\n 12: 'composition',\n 13: 'color',\n};\n\n// Glyph + color per result kind. Renders in place of the category dot for non-tag results.\nconst KIND_GLYPHS = {\n tag: { glyph: '\u25CF', color: null }, // color pulled from tag category\n lora: { glyph: '\u25C6', color: '#8a66ff' },\n embed: { glyph: '\u25B2', color: '#1abc9c' },\n wildcard: { glyph: '\u2605', color: '#f1c40f' },\n};\n\nlet active = false;\n\ninterface TagResult {\n name: string;\n display: string;\n category: number | string;\n count: number;\n aliases?: string[];\n matchedVia?: 'alias' | 'translation';\n matchedAlias?: string;\n matchedTerm?: string;\n}\n\n// -- Utilities (ported from Enso) --\n\n/** Format post count as abbreviated string. */\nfunction formatCount(count: number): string {\n if (count >= 1_000_000) return `${(count / 1_000_000).toFixed(1)}M`;\n if (count >= 1_000) return `${Math.round(count / 1_000)}k`;\n return String(count);\n}\n\n/**\n * Estimate viewport Y of the bottom of the caret line using a persistent\n * offscreen mirror div. Styles and width are re-read from the textarea on\n * every call so resized textareas are handled correctly.\n */\nlet caretMirror: HTMLDivElement | null = null;\nlet caretMarker: HTMLSpanElement | null = null;\nconst MIRROR_PROPS = ['fontFamily', 'fontSize', 'fontWeight', 'fontStyle',\n 'lineHeight', 'letterSpacing', 'wordSpacing', 'textTransform',\n 'padding', 'border', 'boxSizing'];\n\nfunction caretViewportY(textarea: HTMLTextAreaElement): number {\n if (!caretMirror) {\n caretMirror = document.createElement('div');\n caretMirror.className = 'autocomplete-mirror';\n caretMirror.style.whiteSpace = 'pre-wrap';\n caretMirror.style.wordWrap = 'break-word';\n caretMirror.style.position = 'absolute';\n caretMirror.style.left = '-9999px';\n caretMirror.style.overflow = 'hidden';\n caretMarker = document.createElement('span');\n caretMarker.textContent = '\\u200b';\n document.body.appendChild(caretMirror);\n }\n const cs = getComputedStyle(textarea);\n for (const p of MIRROR_PROPS) caretMirror.style[p] = cs[p];\n caretMirror.style.width = `${textarea.offsetWidth}px`;\n caretMirror.textContent = textarea.value.substring(0, textarea.selectionStart);\n caretMirror.appendChild(caretMarker);\n const offset = caretMarker.offsetTop + caretMarker.offsetHeight;\n return textarea.getBoundingClientRect().top + offset - textarea.scrollTop;\n}\n\n// -- TagIndex --\n\nclass TagIndex {\n categories: Record;\n tags: TagResult[];\n aliasEntries: { name: string; display: string; tag: TagResult }[];\n translations: Map;\n tagByName: Map;\n translationEntries: { name: string; foreign: string; canonical: string }[];\n\n constructor(data: any) {\n this.categories = data.categories || {};\n // Tuples are [name, catId, count] or [name, catId, count, aliases]. Default `aliases = []`\n // keeps legacy 3-tuple dictionaries working unchanged.\n this.tags = data.tags.map(([name, category, count, aliases = []]) => ({\n name: name.toLowerCase(),\n display: name,\n category,\n count,\n aliases,\n }));\n this.tags.sort((a, b) => a.name.localeCompare(b.name));\n // Alias index parallel to this.tags. Each entry has .name so lowerBound works on both.\n this.aliasEntries = [];\n for (const tag of this.tags) {\n if (!tag.aliases || tag.aliases.length === 0) continue;\n for (const alias of tag.aliases) {\n this.aliasEntries.push({ name: alias.toLowerCase(), display: alias, tag });\n }\n }\n this.aliasEntries.sort((a, b) => a.name.localeCompare(b.name));\n // Optional translations companion: foreign_term -> canonical_tag_name.\n // tagByName is keyed on canonical lowercased name for O(1) resolution from a translation hit.\n this.translations = new Map();\n this.tagByName = new Map(this.tags.map((t) => [t.name, t]));\n if (data.translations && typeof data.translations === 'object') {\n for (const [foreign, canonical] of Object.entries(data.translations)) {\n if (typeof foreign !== 'string' || typeof canonical !== 'string') continue;\n this.translations.set(foreign.toLowerCase(), { canonical: canonical.toLowerCase(), foreign });\n }\n }\n // Sorted translation keys for prefix+substring scan via lowerBound.\n this.translationEntries = [...this.translations.entries()]\n .map(([foreignLower, { canonical, foreign }]) => ({ name: foreignLower, foreign, canonical }))\n .sort((a, b) => a.name.localeCompare(b.name));\n }\n\n /** Prefix search with binary search across canonical names and aliases. Returns matches sorted by count descending. */\n search(prefix: string, limit = 20): TagResult[] {\n const query = prefix.toLowerCase().replace(/ /g, '_');\n if (!query) return [];\n // Canonical prefix matches\n const matches = [];\n const start = lowerBound(this.tags, query);\n for (let i = start; i < this.tags.length && matches.length < limit * 5; i++) {\n if (!this.tags[i].name.startsWith(query)) break;\n matches.push(this.tags[i]);\n }\n // Alias prefix matches. Annotate so render can show \"canonical (alias)\".\n const aliasStart = lowerBound(this.aliasEntries, query);\n for (let i = aliasStart; i < this.aliasEntries.length && matches.length < limit * 10; i++) {\n const entry = this.aliasEntries[i];\n if (!entry.name.startsWith(query)) break;\n matches.push({ ...entry.tag, matchedVia: 'alias', matchedAlias: entry.display });\n }\n // Substring fallback (canonical + aliases) for 4+ char queries when prefix matching returned nothing.\n if (matches.length === 0 && query.length >= 4) {\n for (let i = 0; i < this.tags.length && matches.length < limit * 5; i++) {\n if (this.tags[i].name.includes(query)) matches.push(this.tags[i]);\n }\n for (let i = 0; i < this.aliasEntries.length && matches.length < limit * 10; i++) {\n const entry = this.aliasEntries[i];\n if (entry.name.includes(query)) matches.push({ ...entry.tag, matchedVia: 'alias', matchedAlias: entry.display });\n }\n }\n // Translation lookup. Prefix scan over foreign terms, resolving to canonical tags when present.\n if (this.translationEntries.length > 0) {\n const tStart = lowerBound(this.translationEntries, query);\n for (let i = tStart; i < this.translationEntries.length && matches.length < limit * 10; i++) {\n const entry = this.translationEntries[i];\n if (!entry.name.startsWith(query)) break;\n const canonicalTag = this.tagByName.get(entry.canonical);\n if (canonicalTag) matches.push({ ...canonicalTag, matchedVia: 'translation', matchedTerm: entry.foreign });\n }\n // Substring fallback over translation keys (CJK/short foreign terms benefit from 2-char threshold)\n if (query.length >= 2) {\n for (let i = 0; i < this.translationEntries.length && matches.length < limit * 10; i++) {\n const entry = this.translationEntries[i];\n if (entry.name.includes(query) && !entry.name.startsWith(query)) {\n const canonicalTag = this.tagByName.get(entry.canonical);\n if (canonicalTag) matches.push({ ...canonicalTag, matchedVia: 'translation', matchedTerm: entry.foreign });\n }\n }\n }\n }\n // Dedupe by canonical name; prefer canonical (no matchedVia) over alias/translation matches.\n const seen = new Map();\n for (const tag of matches) {\n const existing = seen.get(tag.name);\n if (!existing || (existing.matchedVia && !tag.matchedVia)) seen.set(tag.name, tag);\n }\n const result = [...seen.values()];\n result.sort((a, b) => b.count - a.count);\n return result.slice(0, limit);\n }\n}\n\n// -- Engine --\n\nconst engine = {\n indices: new Map(), // name -> TagIndex\n categoryColors: { ...CATEGORY_COLORS },\n categoryNames: { ...CATEGORY_NAMES },\n\n async loadEnabled() {\n const enabled = window.opts?.autocomplete_enabled || [];\n active = window.opts?.autocomplete_active || false;\n if (!active) {\n this.indices.clear();\n return;\n }\n const t0 = performance.now();\n const toLoad = enabled.filter((n) => !this.indices.has(n));\n const toRemove = [...this.indices.keys()].filter((n) => !enabled.includes(n));\n toRemove.forEach((n) => this.indices.delete(n));\n await Promise.all(toLoad.map(async (name) => {\n try {\n const resp = await fetch(`${window.api}/autocomplete/${name}`, { credentials: 'include' });\n if (!resp.ok) throw new Error(`${resp.status}`);\n const data = await resp.json();\n this.indices.set(name, new TagIndex(data));\n // Extract category colors from first loaded file\n if (data.categories) {\n Object.entries(data.categories).forEach(([id, cat]) => {\n const category: any = cat;\n if (category.color) this.categoryColors[id] = category.color;\n if (category.name) this.categoryNames[id] = category.name;\n });\n }\n const t1 = performance.now();\n log('autoComplete', { loaded: name, tags: data.tags?.length || 0, time: Math.round(t1 - t0) });\n timer(`autocompleteLoad:${name}`, t1 - t0);\n } catch (e) {\n log('autoComplete', { failed: name, error: e });\n }\n }));\n },\n\n searchAll(prefix, limit = 20) {\n if (this.indices.size === 0) return [];\n const all = [];\n this.indices.forEach((index) => {\n all.push(...index.search(prefix, limit));\n });\n // Deduplicate by name, keeping highest count\n const seen = new Map();\n all.forEach((tag) => {\n const existing = seen.get(tag.name);\n if (!existing || tag.count > existing.count) seen.set(tag.name, tag);\n });\n const results = [...seen.values()];\n results.sort((a, b) => b.count - a.count);\n return results.slice(0, limit);\n },\n};\n\n// -- Textarea integration --\n\n/**\n * Extract the current completion context at the cursor position.\n *\n * Returns { word, start, end, mode } where:\n * mode === 'tag': ordinary tag completion\n * mode === 'artist': leading `@` trigger; results filtered to artist category and inserted with `@` preserved\n * mode === 'lora': inside an unclosed ` 0) {\n const ch = value[wordStart - 1];\n if (ch === ',' || ch === '\\n') break;\n wordStart--;\n }\n // Skip leading whitespace between the separator and the typed word\n while (wordStart < selectionStart && value[wordStart] === ' ') wordStart++;\n const segment = value.slice(wordStart, selectionStart);\n // LoRA / extra-network trigger: unclosed `<` with `kind:` prefix\n const before = value.slice(0, selectionStart);\n const lastOpen = before.lastIndexOf('<');\n const lastClose = before.lastIndexOf('>');\n if (lastOpen > lastClose && lastOpen >= wordStart) {\n const inside = before.slice(lastOpen + 1); // e.g. \"lora:foo\", \"lora:\", \"lor\", or \"\"\n const colon = inside.indexOf(':');\n if (colon < 0) {\n // Bare `<` (or `` kind we ship,\n // so browse-all-loras; whatever the user typed gets overwritten on accept.\n return { word: '', start: lastOpen, end: selectionStart, mode: 'lora' };\n }\n if (inside.slice(0, colon).toLowerCase() === 'lora') {\n return { word: inside.slice(colon + 1), start: lastOpen, end: selectionStart, mode: 'lora' };\n }\n // Recognized colon but unknown kind, suppress completion.\n return null;\n }\n // Wildcard trigger: unclosed `__` that doesn't close within the current word\n if (segment.startsWith('__') && !segment.slice(2).includes('__')) {\n return { word: segment.slice(2), start: wordStart, end: selectionStart, mode: 'wildcard' };\n }\n // Artist trigger: leading `@` filters tag results to the artist category.\n if (segment.startsWith('@')) {\n return { word: segment.slice(1), start: wordStart, end: selectionStart, mode: 'artist' };\n }\n // Ordinary tag\n if (!segment) return null;\n return { word: segment, start: wordStart, end: selectionStart, mode: 'tag' };\n}\n\n// Booru schemas (danbooru/e621/sankaku) all assign category id 1 to artist tags.\nconst ARTIST_CATEGORY_ID = 1;\n\n/** Escape bare parens so tag names like `fate_(series)` aren't parsed as attention syntax. */\nfunction escapeParensForPrompt(name) {\n return name.replace(/([()])/g, '\\\\$1');\n}\n\n/**\n * Insert an extra-network reference at the current trigger position.\n * kind === 'lora': inserts `` over the range including the leading `<`\n * kind === 'wildcard': inserts `__name__` over the range including the leading `__`\n * Embeddings use insertTag directly so they go through comma-separator and paren-escape logic.\n */\nfunction insertExtraNetwork(textarea, item, kind) {\n const info = getCurrentWord(textarea);\n if (!info || info.mode !== kind) return;\n const { value } = textarea;\n const before = value.slice(0, info.start);\n const after = value.slice(info.end);\n let insertion;\n if (kind === 'lora') {\n insertion = ``;\n } else if (kind === 'wildcard') {\n insertion = `__${item.display ?? item.name}__`;\n } else {\n return;\n }\n textarea.value = before + insertion + after;\n const cursorPos = before.length + insertion.length;\n textarea.selectionStart = cursorPos;\n textarea.selectionEnd = cursorPos;\n if (typeof updateInput === 'function') updateInput(textarea);\n}\n\n/** Insert a tag at the current word position, replacing the typed prefix. */\nfunction insertTag(textarea, tagName, kind = 'tag') {\n const info = getCurrentWord(textarea);\n if (!info || (info.mode !== 'tag' && info.mode !== 'artist')) return;\n const { value } = textarea;\n const before = value.slice(0, info.start);\n const after = value.slice(info.end);\n // Build insertion: tag + separator. Parens in tag names are escaped so the prompt parser doesn't read them as attention syntax.\n const useComma = window.opts?.autocomplete_append_comma ?? true;\n const sep = useComma ? ',' : '';\n const needsSepBefore = before.length > 0 && before.trimEnd().length > 0 && !before.trimEnd().endsWith(',');\n const prefix = needsSepBefore ? `${sep} ` : '';\n let suffix = `${sep} `;\n if (after.length > 0 && after.trimStart().startsWith(',')) suffix = ' ';\n // Embedding names are file-system identifiers, so underscores must be preserved regardless of the user setting.\n // Tags and artists honor `autocomplete_keep_underscores`; default is to swap `_` for space.\n const keepUnderscores = window.opts?.autocomplete_keep_underscores ?? false;\n let body = tagName;\n if (kind !== 'embed' && !keepUnderscores) body = body.replace(/_/g, ' ');\n // Artist mode optionally keeps the `@` prefix (Anima syntax). The `@` is consumed for non-Anima models.\n if (info.mode === 'artist' && window.opts?.autocomplete_at_prefix_artist) body = `@${body}`;\n const insertion = `${prefix}${escapeParensForPrompt(body)}${suffix}`;\n textarea.value = before.trimEnd() + (before.trimEnd().length > 0 ? ' ' : '') + insertion + after.trimStart();\n // Position cursor after the inserted tag + separator\n const cursorPos = before.trimEnd().length + (before.trimEnd().length > 0 ? 1 : 0) + insertion.length;\n textarea.selectionStart = cursorPos;\n textarea.selectionEnd = cursorPos;\n // Sync with Gradio\n if (typeof updateInput === 'function') updateInput(textarea);\n}\n\n// -- Dropdown --\n\nconst dropdown = {\n el: null,\n listEl: null,\n selectedIndex: -1,\n results: [],\n textarea: null,\n query: '',\n visible: false,\n resizeObserver: null as ResizeObserver | null,\n\n init() {\n this.el = document.createElement('div');\n this.el.className = 'autocompleteResults';\n this.el.style.display = 'none';\n this.listEl = document.createElement('ul');\n this.listEl.className = 'autocompleteResultsList';\n this.el.appendChild(this.listEl);\n document.body.appendChild(this.el);\n this.el.addEventListener('mousedown', (e) => e.preventDefault()); // prevent blur on click\n this.el.addEventListener('click', (e) => {\n const li = e.target.closest('li');\n if (!li) return;\n const idx = [...this.listEl.children].indexOf(li);\n if (idx >= 0 && idx < this.results.length) {\n this.selectedIndex = idx;\n this.accept();\n }\n });\n this.resizeObserver = new ResizeObserver(() => {\n if (this.visible) this.position();\n });\n },\n\n show(results, textarea, query) {\n if (results.length === 0) { this.hide(); return; }\n // Switching textareas: clear prior state so a stale render can't leak across.\n if (this.textarea && this.textarea !== textarea) this.hide();\n if (this.textarea !== textarea) this.resizeObserver?.observe(textarea);\n this.results = results;\n this.textarea = textarea;\n this.query = query || '';\n this.selectedIndex = -1;\n this.render();\n this.position();\n this.el.style.display = '';\n this.visible = true;\n },\n\n hide() {\n if (this.textarea) this.resizeObserver?.unobserve(this.textarea);\n this.textarea = null;\n this.el.style.display = 'none';\n this.visible = false;\n this.results = [];\n this.selectedIndex = -1;\n },\n\n render() {\n const keepUnderscores = window.opts?.autocomplete_keep_underscores ?? false;\n const queryNorm = this.query.toLowerCase().replace(/ /g, '_');\n this.listEl.replaceChildren();\n this.results.forEach((tag, i) => {\n const li = document.createElement('li');\n if (i === this.selectedIndex) li.classList.add('selected');\n const dot = document.createElement('span');\n dot.className = 'autocomplete-category';\n const kind = tag.kind || 'tag';\n const kindStyle = KIND_GLYPHS[kind] || KIND_GLYPHS.tag;\n dot.style.color = kindStyle.color || engine.categoryColors[tag.category] || '#888';\n dot.textContent = kindStyle.glyph;\n dot.title = kind === 'tag' ? (engine.categoryNames[tag.category] || '') : kind;\n const name = document.createElement('span');\n name.className = 'autocomplete-tag';\n // Embeddings are file-name identifiers, so they always render as-is to match how they get inserted.\n const swapForKind = kind !== 'embed';\n const tagText = (swapForKind && !keepUnderscores) ? tag.display.replace(/_/g, ' ') : tag.display;\n const canonicalMatch = tag.name.indexOf(queryNorm);\n if (canonicalMatch >= 0 && queryNorm.length > 0) {\n const mark = document.createElement('mark');\n mark.textContent = tagText.slice(canonicalMatch, canonicalMatch + queryNorm.length);\n name.append(\n document.createTextNode(tagText.slice(0, canonicalMatch)),\n mark,\n document.createTextNode(tagText.slice(canonicalMatch + queryNorm.length)),\n );\n } else {\n name.textContent = tagText;\n }\n // Alias/translation-matched rows append \" (foreign)\" with the query fragment highlighted.\n let annotationTerm = null;\n if (tag.matchedVia === 'alias') annotationTerm = tag.matchedAlias;\n else if (tag.matchedVia === 'translation') annotationTerm = tag.matchedTerm;\n if (annotationTerm) {\n const annotationDisplay = (swapForKind && !keepUnderscores) ? annotationTerm.replace(/_/g, ' ') : annotationTerm;\n const annotationLower = annotationTerm.toLowerCase();\n const annotationMatch = annotationLower.indexOf(queryNorm);\n const prefix = tag.matchedVia === 'translation' ? ' \\u{1F310} ' : ' (';\n const suffix = tag.matchedVia === 'translation' ? '' : ')';\n name.appendChild(document.createTextNode(prefix));\n if (annotationMatch >= 0 && queryNorm.length > 0) {\n const mark = document.createElement('mark');\n mark.textContent = annotationDisplay.slice(annotationMatch, annotationMatch + queryNorm.length);\n name.append(\n document.createTextNode(annotationDisplay.slice(0, annotationMatch)),\n mark,\n document.createTextNode(annotationDisplay.slice(annotationMatch + queryNorm.length)),\n );\n } else {\n name.appendChild(document.createTextNode(annotationDisplay));\n }\n if (suffix) name.appendChild(document.createTextNode(suffix));\n }\n const count = document.createElement('span');\n count.className = 'autocomplete-count';\n count.textContent = tag.count > 0 ? formatCount(tag.count) : '';\n li.append(dot, name, count);\n li.addEventListener('mouseenter', () => {\n this.selectedIndex = i;\n this.updateSelection();\n });\n this.listEl.appendChild(li);\n });\n },\n\n position() {\n if (!this.textarea) return;\n const rect = this.textarea.getBoundingClientRect();\n // Position near the caret line instead of the textarea bottom\n const cursorBottom = caretViewportY(this.textarea);\n const anchorY = Math.max(rect.top, Math.min(cursorBottom, rect.bottom));\n const spaceBelow = window.innerHeight - anchorY;\n const dropHeight = Math.min(this.el.scrollHeight, 300);\n if (spaceBelow >= dropHeight || spaceBelow >= anchorY - rect.top) {\n this.el.style.top = `${anchorY + 2}px`;\n } else {\n this.el.style.top = `${anchorY - dropHeight - 2}px`;\n }\n this.el.style.left = `${rect.left}px`;\n this.el.style.width = `${rect.width}px`;\n },\n\n updateSelection() {\n [...this.listEl.children].forEach((li, i) => {\n li.classList.toggle('selected', i === this.selectedIndex);\n });\n const selected = this.listEl.children[this.selectedIndex];\n if (selected) selected.scrollIntoView({ block: 'nearest' });\n },\n\n navigate(dir) {\n if (this.results.length === 0) return;\n if (this.selectedIndex === -1) {\n this.selectedIndex = dir > 0 ? 0 : this.results.length - 1;\n } else {\n this.selectedIndex = (this.selectedIndex + dir + this.results.length) % this.results.length;\n }\n this.updateSelection();\n },\n\n accept() {\n if (this.selectedIndex < 0 || this.selectedIndex >= this.results.length) {\n // Tab with no selection: select first\n if (this.results.length > 0) {\n this.selectedIndex = 0;\n this.updateSelection();\n }\n return;\n }\n const result = this.results[this.selectedIndex];\n if (this.textarea) {\n if (result.kind === 'lora' || result.kind === 'wildcard') {\n insertExtraNetwork(this.textarea, result, result.kind);\n } else {\n // 'embed' kind and untagged tag results both go through insertTag (comma-aware, paren-escaped).\n insertTag(this.textarea, result.display ?? result.name, result.kind);\n }\n }\n this.hide();\n },\n};\n\n// -- Event handlers --\n\nlet debounceInput: ReturnType | undefined;\nlet debounceFocus: ReturnType | undefined;\n\nfunction onInput(textarea) {\n if (!active) return;\n // IME candidate window open: value isn't committed, and Enter would race with tag accept.\n if (textarea.dataset.imeActive === '1') return;\n const minChars = window.opts?.autocomplete_min_chars ?? 3;\n const info = getCurrentWord(textarea);\n if (!info) {\n dropdown.hide();\n return;\n }\n // Threshold by mode. Trigger characters carry their own signal so we can lower (or zero) the bar.\n let threshold = minChars;\n if (info.mode === 'lora' || info.mode === 'wildcard') threshold = 0;\n else if (info.mode === 'artist') threshold = 1;\n if (info.word.length < threshold) {\n dropdown.hide();\n return;\n }\n clearTimeout(debounceInput);\n debounceInput = setTimeout(() => {\n let results;\n if (info.mode === 'lora') {\n results = xnEngine.searchLoras(info.word);\n } else if (info.mode === 'wildcard') {\n results = xnEngine.searchWildcards(info.word);\n } else if (info.mode === 'artist') {\n // `@` trigger: tag-search filtered to the artist category. The category-1 color carries the visual cue.\n results = engine.searchAll(info.word).filter((t) => t.category === ARTIST_CATEGORY_ID);\n } else {\n const tagResults = engine.searchAll(info.word);\n const embedResults = xnEngine.searchEmbeddings(info.word);\n // Embeddings fold into tag-mode results (a1111 tagcomplete parity).\n results = [...embedResults, ...tagResults];\n }\n dropdown.show(results, textarea, info.word);\n }, 150);\n}\n\nfunction onKeyDown(e) {\n if (!dropdown.visible) return;\n if (e.isComposing) return; // IME candidate selection, let the browser commit the candidate\n // Modifier + nav/accept keys belong to other handlers (editAttention.js on Ctrl+Arrow,\n // generate hotkey on Ctrl+Enter). Let them through even with the dropdown open.\n const hasModifier = e.ctrlKey || e.metaKey || e.altKey;\n switch (e.key) {\n case 'ArrowDown':\n if (hasModifier) return;\n e.preventDefault();\n e.stopPropagation();\n dropdown.navigate(1);\n break;\n case 'ArrowUp':\n if (hasModifier) return;\n e.preventDefault();\n e.stopPropagation();\n dropdown.navigate(-1);\n break;\n case 'Enter':\n if (hasModifier) return;\n if (dropdown.selectedIndex >= 0) {\n e.preventDefault();\n e.stopPropagation();\n dropdown.accept();\n }\n break;\n case 'Tab':\n if (hasModifier) return;\n e.preventDefault();\n e.stopPropagation();\n dropdown.accept();\n break;\n case 'Escape':\n e.preventDefault();\n e.stopPropagation();\n dropdown.hide();\n break;\n default:\n break;\n }\n}\n\n/** Attach autocomplete to a single textarea. */\nfunction attachAutocomplete(textarea) {\n textarea.addEventListener('input', () => onInput(textarea));\n textarea.addEventListener('keydown', onKeyDown);\n textarea.addEventListener('compositionstart', () => { textarea.dataset.imeActive = '1'; });\n textarea.addEventListener('compositionend', () => { delete textarea.dataset.imeActive; });\n textarea.addEventListener('focusin', () => {\n if (dropdown.visible && dropdown.textarea && dropdown.textarea !== textarea) dropdown.hide();\n // Cancel any pending hide from a recent blur so refocusing within 200ms doesn't close the dropdown.\n clearTimeout(debounceFocus);\n debounceFocus = undefined;\n // Re-fire input handling so a partial tag at the cursor reopens the dropdown.\n onInput(textarea);\n });\n textarea.addEventListener('focusout', () => {\n // Cancel any in-flight debounced dropdown.show; otherwise it fires against a stale textarea.\n clearTimeout(debounceInput);\n debounceFocus = setTimeout(() => dropdown.hide(), 200);\n });\n}\n\n// -- Prompt textarea IDs --\n\nconst PROMPT_IDS = [\n 'txt2img_prompt', 'txt2img_neg_prompt',\n 'img2img_prompt', 'img2img_neg_prompt',\n 'control_prompt', 'control_neg_prompt',\n 'video_prompt', 'video_neg_prompt',\n];\n\n// -- Active button --\n\nfunction patchActiveButton() {\n const buttons = [...gradioApp().querySelectorAll('.autocomplete-active')];\n active = window.opts?.autocomplete_active || false;\n buttons.forEach((btn) => {\n btn.classList.toggle('autocomplete-active', active);\n btn.classList.toggle('autocomplete-inactive', !active);\n btn.parentElement.onclick = () => {\n active = !active;\n window.opts.autocomplete_active = !active;\n btn.classList.toggle('autocomplete-active', active);\n btn.classList.toggle('autocomplete-inactive', !active);\n };\n });\n}\n\n// -- Config bridge --\n\n/** Monkey-patch script config bridge textboxes to push autocomplete config changes to window.opts immediately. */\nlet bridgeWarnedMissingDescriptor = false;\nfunction patchConfigBridge() {\n const proto = Object.getOwnPropertyDescriptor(HTMLTextAreaElement.prototype, 'value');\n if (!proto?.get || !proto?.set) {\n if (!bridgeWarnedMissingDescriptor) {\n log('autoComplete', { bridge: 'skipped', reason: 'HTMLTextAreaElement.prototype.value descriptor missing' });\n bridgeWarnedMissingDescriptor = true;\n }\n return;\n }\n const elements = gradioApp().querySelectorAll('[id$=\"_tag_autocomplete_config_json\"]');\n for (const el of elements) {\n const textarea = el.querySelector('textarea');\n if (!textarea || textarea.acBridgePatched) continue;\n textarea.acBridgePatched = true;\n Object.defineProperty(textarea, 'value', {\n set(newValue) {\n const oldValue = proto.get.call(textarea);\n proto.set.call(textarea, newValue);\n if (oldValue !== newValue && newValue) {\n try {\n const cfg = JSON.parse(newValue);\n for (const [key, val] of Object.entries(cfg)) window.opts[key] = val;\n executeCallbacks(optionsChangedCallbacks);\n } catch { /* ignore parse errors; the bridge is best-effort */ }\n }\n },\n get() { return proto.get.call(textarea); },\n });\n }\n}\n\n// -- Initialization --\n\nexport async function initAutocomplete() {\n const t0 = performance.now();\n const enabled = window.opts?.autocomplete_enabled || [];\n active = window.opts?.autocomplete_active || false;\n log('autoComplete', { active, enabled });\n // Inject styles (CSS files in javascript/ are not auto-loaded)\n const style = document.createElement('style');\n style.textContent = `\n .autocompleteResults { position: fixed; z-index: 9999; max-height: 300px; overflow-y: auto;\n background: var(--sd-main-background-color, var(--background-fill-primary, #1f2937));\n border: 1px solid var(--sd-input-border-color, var(--border-color-primary, #374151));\n border-radius: var(--sd-border-radius, 6px); box-shadow: 0 4px 16px rgba(0,0,0,0.4);\n font-size: 13px; scrollbar-width: thin; color: var(--body-text-color-subdued); }\n .autocompleteResultsList { list-style: none; margin: 0; padding: 4px 0; }\n .autocompleteResultsList > li { display: flex; align-items: center; padding: 6px 12px; cursor: pointer;\n gap: 8px; line-height: 1.4; transition: background 0.1s ease; border-bottom: 1px solid rgba(255,255,255,0.03); }\n .autocompleteResultsList > li:last-child { border-bottom: none; }\n .autocompleteResultsList > li:hover { background: var(--sd-panel-background-color, var(--input-background-fill-focus, #374151)); }\n .autocompleteResultsList > li.selected { background: var(--sd-main-accent-color, var(--button-primary-background-fill, #4b5563)); }\n .autocomplete-category { font-size: 10px; flex-shrink: 0; width: 10px; text-align: center; cursor: help; }\n .autocomplete-tag { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n .autocomplete-tag mark { background: transparent; color: inherit; font-weight: 700; }\n .autocomplete-count { font-size: 0.75em; opacity: 0.45; flex-shrink: 0; font-variant-numeric: tabular-nums;\n background: rgba(255,255,255,0.06); padding: 1px 6px; border-radius: 8px; min-width: 28px; text-align: right; }\n `;\n document.head.appendChild(style);\n dropdown.init();\n await engine.loadEnabled();\n xnEngine.loadAll();\n // Attach to all prompt textareas; even if no dictionaries loaded yet, they may be enabled later via script UI\n let attached = 0;\n PROMPT_IDS.forEach((id) => {\n const textarea = gradioApp().querySelector(`#${id} > label > textarea`);\n if (textarea) {\n attachAutocomplete(textarea);\n attached++;\n }\n });\n // Reload when settings change\n\n async function optionsChangedCallback() {\n const newActive = window.opts?.autocomplete_active || false;\n const newEnabled = window.opts?.autocomplete_enabled || [];\n const currentKeys = [...engine.indices.keys()].sort().join(',');\n const newKeys = [...newEnabled].sort().join(',');\n if ((currentKeys !== newKeys) || (active !== newActive)) {\n log('autoComplete', { reload: newEnabled });\n await engine.loadEnabled();\n active = newActive;\n patchActiveButton();\n }\n xnEngine.loadAll();\n }\n onOptionsChanged(optionsChangedCallback);\n // Watch for config updates from the script UI bridge\n patchConfigBridge();\n patchActiveButton();\n onAfterUiUpdate(patchConfigBridge);\n const t1 = performance.now();\n log('autoComplete', { attached, dicts: engine.indices.size, time: Math.round(t1 - t0) });\n timer('autocompleteInit', t1 - t0);\n}\n", "/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { log } from './logger';\nimport { gradioApp } from './script';\nimport { timer } from './timers';\n\nlet hintsObserver: MutationObserver | null = null;\nconst allLocales = ['en', 'tb', 'nb', 'hr', 'es', 'it', 'fr', 'de', 'pt', 'ru', 'zh', 'ja', 'ko', 'hi', 'ar', 'bn', 'ur', 'id', 'vi', 'tr', 'sr', 'po', 'he', 'xx', 'qq', 'tlh'];\nconst localeData = {\n prev: null,\n locale: null,\n data: [],\n timeout: null,\n finished: false,\n initial: true,\n type: 2,\n hint: null,\n btn: null,\n expandTimeout: undefined, // Property for expansion timeout\n currentElement: null, // Track current element for expansion\n};\nlet localeTimeout: ReturnType | undefined;\nconst isTouchDevice = 'ontouchstart' in window;\n\nasync function cycleLocale() {\n clearTimeout(localeTimeout);\n localeTimeout = setTimeout(() => {\n log('cycleLocale', localeData.prev, localeData.locale);\n const index = allLocales.indexOf(localeData.prev);\n localeData.locale = allLocales[(index + 1) % allLocales.length];\n localeData.btn.innerText = localeData.locale;\n // localeData.btn.style.backgroundColor = localeData.locale !== 'en' ? 'var(--primary-500)' : '';\n localeData.finished = false;\n localeData.data = [];\n localeData.prev = localeData.locale;\n window.opts.ui_locale = localeData.locale;\n setHints();\n }, 250);\n}\n\nasync function resetLocale() {\n clearTimeout(localeTimeout); // Prevent the single click logic\n localeData.locale = 'en';\n log('resetLocale', localeData.locale);\n const index = allLocales.indexOf(localeData.locale);\n localeData.locale = allLocales[(index) % allLocales.length];\n localeData.btn.innerText = localeData.locale;\n localeData.finished = false;\n localeData.data = [];\n window.opts.ui_locale = localeData.locale;\n setHints();\n}\n\nasync function tooltipCreate() {\n localeData.hint = document.createElement('div');\n localeData.hint.className = 'tooltip';\n localeData.hint.id = 'tooltip-container';\n localeData.hint.innerText = 'this is a hint';\n gradioApp().appendChild(localeData.hint);\n localeData.btn = gradioApp().getElementById('locale-container');\n if (!localeData.btn) {\n localeData.btn = document.createElement('div');\n localeData.btn.className = 'locale';\n localeData.btn.id = 'locale-container';\n gradioApp().appendChild(localeData.btn);\n }\n localeData.btn.innerText = localeData.locale;\n localeData.btn.ondblclick = resetLocale;\n localeData.btn.onclick = cycleLocale;\n if (window.opts.tooltips === 'None') localeData.type = 0;\n if (window.opts.tooltips === 'Browser default') localeData.type = 1;\n if (window.opts.tooltips === 'UI tooltips') localeData.type = 2;\n\n if (localeData.type === 2) { // setup event delegation for tooltips instead of individual listeners\n if (isTouchDevice) {\n gradioApp().addEventListener('touchstart', tooltipShowDelegated);\n gradioApp().addEventListener('touchend', tooltipHideDelegated);\n }\n gradioApp().addEventListener('pointerover', tooltipShowDelegated);\n gradioApp().addEventListener('pointerout', tooltipHideDelegated);\n }\n if (!hintsObserver) initializeDOMObserver();\n}\n\nasync function expandTooltip(element, longHint) {\n if (localeData.currentElement === element && localeData.hint.classList.contains('tooltip-show')) {\n const ring = localeData.hint.querySelector('.tooltip-progress-ring');\n if (ring) ring.style.opacity = '0';\n localeData.hint.classList.add('tooltip-expanded');\n setTimeout(() => {\n const longContent = localeData.hint.querySelector('.long-content');\n if (longContent) longContent.classList.add('show');\n }, 100);\n }\n}\n\nasync function tooltipShowDelegated(e) { // use event delegation to handle dynamically created elements\n if (e.target.dataset && e.target.dataset.hint) tooltipShow(e);\n}\n\nasync function tooltipHideDelegated(e) {\n if (e.target.dataset && e.target.dataset.hint) tooltipHide(e);\n}\n\nasync function tooltipShow(e) {\n if (localeData.expandTimeout) { // clear any existing expansion timeout\n clearTimeout(localeData.expandTimeout);\n localeData.expandTimeout = undefined;\n }\n\n localeData.hint.classList.remove('tooltip-expanded'); // remove expanded class and reset current element\n localeData.currentElement = e.target;\n\n if (e.target.dataset.hint) {\n const progressRing = ` // create progress ring SVG\n
    \n \n \n \n \n
    \n `;\n // set up the complete content structure from the start\n let content = `\n
    \n ${e.target.textContent}\n ${e.target.dataset.longHint ? progressRing : ''}\n
    \n
    \n ${e.target.dataset.hint}\n `;\n if (e.target.dataset.longHint) content += `
    ${e.target.dataset.longHint}
    `; // add long content if available, but keep it hidden\n if (e.target.dataset.reload) { // add reload notice if needed\n const reloadType = e.target.dataset.reload;\n let reloadText = '';\n if (reloadType === 'model') reloadText = 'Requires model reload';\n else if (reloadType === 'server') reloadText = 'Requires server restart';\n if (reloadText) {\n content += `\n
    \n
    \n ${reloadText}\n
    \n `;\n }\n }\n\n localeData.hint.innerHTML = content;\n localeData.hint.classList.add('tooltip-show');\n\n if (e.clientX > window.innerWidth / 2) localeData.hint.classList.add('tooltip-left');\n else localeData.hint.classList.remove('tooltip-left');\n\n if (e.target.dataset.longHint) { // set up expansion timer if long hint is available\n const ring = localeData.hint.querySelector('.tooltip-progress-ring'); // start progress ring animation\n const ringProgress = localeData.hint.querySelector('.ring-progress');\n if (ring && ringProgress) {\n setTimeout(() => {\n ring.classList.add('active');\n ringProgress.classList.add('animate');\n }, 100);\n }\n localeData.expandTimeout = setTimeout(() => expandTooltip(e.target, e.target.dataset.longHint), 3000);\n }\n }\n}\n\nasync function tooltipHide(e) {\n if (localeData.expandTimeout) {\n clearTimeout(localeData.expandTimeout);\n localeData.expandTimeout = undefined;\n }\n localeData.hint.classList.remove('tooltip-show', 'tooltip-expanded');\n localeData.currentElement = null;\n}\n\nasync function replaceButtonText(el) {\n // https://www.nerdfonts.com/cheat-sheet\n // use unicode of icon with format nf-md-_circle\n const textIcons = {\n Generate: '\\uf144',\n Enqueue: '\\udb81\\udc17',\n Stop: '\\udb81\\ude66',\n Skip: '\\udb81\\ude61',\n Pause: '\\udb80\\udfe5',\n Restore: '\\udb82\\udd9b',\n Clear: '\\udb80\\udd59',\n Networks: '\\uf261',\n };\n if (textIcons[el.innerText]) {\n el.classList.add('button-icon');\n el.innerText = textIcons[el.innerText];\n }\n}\n\nasync function getLocaleData(desiredLocale = null) {\n if (desiredLocale) desiredLocale = desiredLocale.split(':')[0];\n if (desiredLocale === 'Auto') {\n try {\n localeData.locale = navigator.languages && navigator.languages.length ? navigator.languages[0] : navigator.language;\n localeData.locale = localeData.locale.split('-')[0];\n localeData.prev = localeData.locale;\n } catch (e) {\n localeData.locale = 'en';\n log('getLocale', e);\n }\n } else {\n localeData.locale = desiredLocale || 'en';\n localeData.prev = localeData.locale;\n }\n log('getLocale', { lang: desiredLocale, locale: localeData.locale });\n // primary\n let json: any = {};\n try {\n let res = await fetch(`${window.subpath}/file=ui/locale/locale_${localeData.locale}.json`);\n if (!res || !res.ok) {\n localeData.locale = 'en';\n res = await fetch(`${window.subpath}/file=ui/locale/locale_${localeData.locale}.json`);\n }\n json = await res.json();\n } catch { /**/ }\n\n try {\n const res = await fetch(`${window.subpath}/file=ui/locale/override_${localeData.locale}.json`);\n if (res && res.ok) json.override = await res.json();\n } catch { /**/ }\n\n return json;\n}\n\nasync function replaceTextContent(el, text) {\n if (el.children.length === 1 && el.firstElementChild.classList.contains('mask-icon')) return;\n if (el.querySelector('span')) el = el.querySelector('span');\n if (el.querySelector('div')) el = el.querySelector('div');\n if (el.classList.contains('mask-icon')) return; // skip icon buttons\n if (el.dataset.selector) { // replace on rehosted child if exists\n el = el.firstElementChild || el.querySelector(el.dataset.selector);\n replaceTextContent(el, text);\n return;\n }\n el.textContent = text;\n}\n\nasync function setHint(el, entry) {\n if (localeData.type === 1) {\n el.title = entry.hint;\n } else if (localeData.type === 2) {\n el.dataset.hint = entry.hint;\n if (entry.longHint && entry.longHint.length > 0) el.dataset.longHint = entry.longHint;\n if (entry.reload && entry.reload.length > 0) el.dataset.reload = entry.reload;\n } else {\n // tooltips disabled\n }\n}\n\nfunction createLocaleJSON() {\n const excludeText = ['\u25BC']; // add any common non-label elements to exclude\n const ecxcludeIds = ['logo_nav']; // add any specific element IDs to exclude\n const elements = [...new Set([\n ...Array.from(gradioApp().querySelectorAll('button')),\n ...Array.from(gradioApp().querySelectorAll('h1')),\n ...Array.from(gradioApp().querySelectorAll('h2')),\n ...Array.from(gradioApp().querySelectorAll('h3')),\n ...Array.from(gradioApp().querySelectorAll('.hint')),\n ...Array.from(gradioApp().querySelectorAll('label > span')),\n ...Array.from(gradioApp().querySelectorAll('.label-wrap > span')),\n ...Array.from(gradioApp().querySelectorAll('span[data-testid=\"block-info\"]')),\n ])];\n const json = {};\n const allSeen = {};\n for (const el of elements) {\n const label = el.textContent.trim();\n if (!label || label.length < 1 || label.length > 1024) continue; // likely not UI element\n if (excludeText.includes(label)) continue; // skip common non-label elements\n if (ecxcludeIds.includes(el.id)) continue; // skip specific element IDs\n\n let hint = el.dataset.hint || '';\n if (hint.toLowerCase() === label.toLowerCase()) hint = ''; // skip if hint is same as label\n if (Object.keys(allSeen).includes(label.toLowerCase())) {\n if (hint.length === 0 || allSeen[label.toLowerCase()] === hint) continue; // seen this label and hint is empty or same as before\n hint = allSeen[label.toLowerCase()]; // use existing hint for this label\n }\n allSeen[label.toLowerCase()] = hint; // track seen labels\n\n let section = label[0].toLowerCase();\n if (section >= '0' && section <= '9') section = '0';\n if ((section < 'a' || section > 'z') && section !== '0') section = '_';\n\n let ui = el.closest('.group-extension')\n || el.closest('.group-scripts')\n || el.closest('.main-tab')\n || el.closest('.settings_section')\n || el.closest('.tabitem')\n || 'other';\n ui = ui?.id?.replace('_tabitem_parent', '').replace('_section_row', '');\n if (ui?.includes('_script')) ui = ui?.split('_').slice(1).join('_').split(':')[0];\n\n if (!json[section]) json[section] = [];\n const entry = { id: el.id || '', label, localized: '', hint, ui };\n json[section].push(entry); // add new entry\n }\n const sorted = Object.keys(json).sort().reduce((obj, key) => {\n obj[key] = json[key];\n return obj;\n }, {});\n console.log('localeJSON', sorted);\n}\n\nexport async function setHints() {\n let json: any;\n let overrideData: any[] = [];\n if (localeData.finished) return;\n if (Object.keys(opts).length === 0) return;\n const elements = [...new Set([\n ...Array.from(gradioApp().querySelectorAll('button')),\n ...Array.from(gradioApp().querySelectorAll('h2')),\n ...Array.from(gradioApp().querySelectorAll('label > span')),\n ...Array.from(gradioApp().querySelectorAll('.label-wrap > span')),\n ...Array.from(gradioApp().querySelectorAll('span[data-testid=\"block-info\"]')), // radio/checkboxgroup titles render as a bare block-info span, not under a label\n ])];\n if (elements.length === 0) return;\n if (localeData.data.length === 0) {\n json = await getLocaleData(window.opts.ui_locale);\n overrideData = Object.values(json.override || {}).flat().filter((e: any) => e.hint.length > 0);\n const jsonData = Object.values(json).flat().filter((e: any) => e.hint.length > 0);\n localeData.data = [...overrideData, ...jsonData];\n }\n if (!localeData.hint) tooltipCreate();\n let localized = 0;\n let hints = 0;\n const t0 = performance.now();\n\n for (const el of elements) {\n // localize elements text\n let found;\n if (el.id) found = localeData.data.find((l) => l.id && (l.id === el.id || el.id.endsWith(l.id))); // prefer id match for disambiguation\n if (!found) {\n if (el.dataset.original) found = localeData.data.find((l) => l.label.toLowerCase().trim() === el.dataset.original.toLowerCase().trim());\n else found = localeData.data.find((l) => l.label.toLowerCase().trim() === el.textContent.toLowerCase().trim());\n }\n if (found?.localized?.length > 0) {\n if (!el.dataset.original) el.dataset.original = el.textContent;\n replaceTextContent(el, found.localized);\n localized++;\n } else if (found?.label && !localeData.initial && (localeData.locale === 'en')) { // reset to english\n replaceTextContent(el, found.label);\n }\n // set hints\n if (found?.hint?.length > 0) {\n hints++;\n setHint(el, found);\n }\n }\n localeData.finished = true;\n localeData.initial = false;\n const t1 = performance.now();\n timer('setHints', t1 - t0);\n // localeData.btn.style.backgroundColor = localeData.locale !== 'en' ? 'var(--primary-500)' : '';\n log('touchDevice', isTouchDevice);\n log('setHints', { type: localeData.type, locale: localeData.locale, elements: elements.length, localized, hints, data: localeData.data.length, override: overrideData.length, time: Math.round(t1 - t0) });\n // sortUIElements();\n}\n\n// Apply hints to a single element immediately\nasync function applyHintToElement(el) {\n if (!localeData.data || localeData.data.length === 0) return;\n // if (!el.textContent) return;\n\n // check if element matches our selector criteria\n const isValidElement = el.tagName === 'BUTTON'\n || el.tagName === 'H2'\n || el.classList.contains('hint')\n || (el.tagName === 'SPAN' && (el.parentElement?.tagName === 'LABEL' || el.parentElement?.classList.contains('label-wrap') || el.dataset.testid === 'block-info'));\n if (!isValidElement) return;\n\n let found; // find matching hint data - prefer id match for disambiguation\n if (el.id) found = localeData.data.find((l) => l.id && (l.id === el.id || el.id.endsWith(l.id)));\n if (!found) {\n if (el.dataset.original) found = localeData.data.find((l) => l.label.toLowerCase().trim() === el.dataset.original.toLowerCase().trim());\n else found = localeData.data.find((l) => l.label.toLowerCase().trim() === el.textContent.toLowerCase().trim());\n }\n\n if (el.textContent && el.textContent.length > 0 && found?.localized?.length > 0) { // apply localization if found\n if (!el.dataset.original) el.dataset.original = el.textContent;\n replaceTextContent(el, found.localized);\n }\n\n if (found?.hint?.length > 0) setHint(el, found); // apply hint if found\n}\n\n// Initialize MutationObserver for immediate hint application\nfunction initializeDOMObserver() {\n if (hintsObserver) hintsObserver.disconnect();\n\n hintsObserver = new MutationObserver((mutations) => {\n // Process added nodes immediately\n for (const mutation of mutations) {\n if (mutation.type === 'childList') {\n for (const node of mutation.addedNodes) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n // Apply hints to the node itself\n applyHintToElement(node);\n\n // Apply hints to all relevant children\n const elements = [\n ...Array.from(node.querySelectorAll('button')),\n ...Array.from(gradioApp().querySelectorAll('h1')),\n ...Array.from(gradioApp().querySelectorAll('h2')),\n ...Array.from(gradioApp().querySelectorAll('h3')),\n ...Array.from(gradioApp().querySelectorAll('.hint')),\n ...Array.from(node.querySelectorAll('label > span')),\n ...Array.from(node.querySelectorAll('.label-wrap > span')),\n ...Array.from(node.querySelectorAll('span[data-testid=\"block-info\"]')),\n ];\n\n // Include the node itself if it matches\n if (node.matches && (\n node.matches('button')\n || node.matches('h1')\n || node.matches('h2')\n || node.matches('h3')\n || node.matches('label > span')\n || node.matches('.hint')\n || node.matches('.label-wrap > span')\n || node.matches('span[data-testid=\"block-info\"]')\n )) {\n elements.push(node);\n }\n\n // Apply hints immediately to all found elements\n elements.forEach((el) => applyHintToElement(el));\n }\n }\n }\n }\n });\n\n // Start observing the entire gradio app for changes\n const targetNode = gradioApp();\n if (targetNode) {\n hintsObserver.observe(targetNode, {\n childList: true,\n subtree: true,\n });\n }\n}\n\nexport function disconnectHintsObserver() {\n if (hintsObserver) {\n hintsObserver.disconnect();\n hintsObserver = null;\n }\n}\n\n// Export for external use if needed\nconst forceReapplyHints = () => setHints();\n", "import { gradioApp, getUICurrentTabContent } from './script';\nimport { log } from './logger';\nimport { authFetch } from './authWrap';\nimport { quickApplyStyle, quickSaveStyle } from './extraNetworks';\n\ninterface ContextMenuItem {\n id: string;\n name: string;\n func: () => void;\n primary: boolean;\n}\n\nconst contextMenuInit = () => {\n let eventListenerApplied = false;\n const menuSpecs = new Map();\n\n const uid = () => Date.now().toString(36) + Math.random().toString(36).substring(2);\n\n function showContextMenu(event: MouseEvent, _element: Element, menuEntries: ContextMenuItem[]): void {\n const posx = event.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n const posy = event.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n const oldMenu = gradioApp().querySelector('#context-menu');\n if (oldMenu) oldMenu.remove();\n const contextMenu = document.createElement('nav');\n contextMenu.id = 'context-menu';\n contextMenu.style.top = `${posy}px`;\n contextMenu.style.left = `${posx}px`;\n const contextMenuList = document.createElement('ul');\n contextMenuList.className = 'context-menu-items';\n contextMenu.append(contextMenuList);\n menuEntries.forEach((entry) => {\n const contextMenuEntry = document.createElement('a');\n contextMenuEntry.innerHTML = entry.name;\n contextMenuEntry.addEventListener('click', () => entry.func());\n contextMenuList.append(contextMenuEntry);\n });\n gradioApp().appendChild(contextMenu);\n const menuWidth = contextMenu.offsetWidth + 4;\n const menuHeight = contextMenu.offsetHeight + 4;\n const windowWidth = window.innerWidth;\n const windowHeight = window.innerHeight;\n if ((windowWidth - posx) < menuWidth) contextMenu.style.left = `${windowWidth - menuWidth}px`;\n if ((windowHeight - posy) < menuHeight) contextMenu.style.top = `${windowHeight - menuHeight}px`;\n }\n\n function appendContextMenuOption(targetElementSelector: string, entryName: string, entryFunction: () => void, primary = false): string {\n let currentItems = menuSpecs.get(targetElementSelector);\n if (!currentItems) {\n currentItems = [];\n menuSpecs.set(targetElementSelector, currentItems);\n }\n const newItem = {\n id: `${targetElementSelector}_${uid()}`,\n name: entryName,\n func: entryFunction,\n primary,\n // isNew: true,\n };\n currentItems.push(newItem);\n return newItem.id;\n }\n\n function removeContextMenuOption(id: string): void {\n menuSpecs.forEach((v, k) => {\n let index = -1;\n v.forEach((e, ei) => {\n if (e.id === id) { index = ei; }\n });\n if (index >= 0) v.splice(index, 1);\n });\n }\n\n window.appendContextMenuOption = appendContextMenuOption;\n window.removeContextMenuOption = removeContextMenuOption;\n\n async function addContextMenuEventListener(): Promise {\n if (eventListenerApplied) return;\n log('initContextMenu');\n gradioApp().addEventListener('click', (e: Event) => {\n const mouseEvent = e as MouseEvent;\n if (!mouseEvent.isTrusted) return;\n const oldMenu = gradioApp().querySelector('#context-menu');\n if (oldMenu) oldMenu.remove();\n menuSpecs.forEach((v, k) => {\n const items = v.filter((item) => item.primary);\n const target = mouseEvent.target as Element | null;\n if (!target) return;\n const matched = target.closest(k);\n if (items.length > 0 && matched) {\n showContextMenu(mouseEvent, matched, items);\n mouseEvent.preventDefault();\n }\n });\n });\n gradioApp().addEventListener('contextmenu', (e: Event) => {\n const mouseEvent = e as MouseEvent;\n const oldMenu = gradioApp().querySelector('#context-menu');\n if (oldMenu) oldMenu.remove();\n menuSpecs.forEach((v, k) => {\n const items = v.filter((item) => !item.primary);\n const target = mouseEvent.target as Element | null;\n if (!target) return;\n const matched = target.closest(k);\n if (items.length > 0 && matched) {\n showContextMenu(mouseEvent, matched, items);\n mouseEvent.preventDefault();\n }\n });\n });\n eventListenerApplied = true;\n }\n return [appendContextMenuOption, removeContextMenuOption, addContextMenuEventListener];\n};\n\nconst initContextResponse = contextMenuInit();\nconst appendContextMenuOption = initContextResponse[0];\nconst removeContextMenuOption = initContextResponse[1];\nconst addContextMenuEventListener = initContextResponse[2] as () => void;\n\nlet generateOnRepeatInterval: ReturnType | null = null;\n\nexport const generateForever = (genbuttonid: string): void => {\n if (generateOnRepeatInterval) {\n log('generateForever: cancel');\n clearInterval(generateOnRepeatInterval);\n generateOnRepeatInterval = null;\n } else {\n const genbutton = gradioApp().querySelector(genbuttonid);\n if (!(genbutton instanceof HTMLElement)) return;\n const isBusy = () => {\n let busy = document.getElementById('progressbar')?.style.display === 'block';\n if (!busy) {\n // Also check in Modern UI\n const outerButton = genbutton.parentElement.closest('button');\n busy = outerButton?.classList.contains('generate') && outerButton?.classList.contains('active');\n }\n return busy;\n };\n log('generateForever: start');\n if (!isBusy()) genbutton.click();\n generateOnRepeatInterval = setInterval(() => {\n if (!isBusy()) genbutton.click();\n }, 500);\n }\n};\nwindow.generateForever = generateForever;\n\nconst reprocessClick = (tabId: string, state: string): void => {\n const btn = document.getElementById(`${tabId}_${state}`);\n window.submit_state = state;\n if (btn) btn.click();\n};\n\nconst getStatus = async () => {\n const headers = new Headers();\n const body = JSON.stringify({ id_task: -1, id_live_preview: false });\n headers.set('Content-Type', 'application/json');\n const tab = getUICurrentTabContent()?.id.replace('tab_', '') || '';\n const el = gradioApp().querySelector(`#html_log_${tab} .performance p`);\n\n let res;\n let data;\n res = await fetch('./internal/progress', { method: 'POST', headers, body });\n if (res?.ok) {\n data = await res.json();\n log('progressInternal:', data);\n if (el) el.innerText += `\\nProgress internal:\\n${JSON.stringify(data, null, 2)}`;\n }\n res = await authFetch('./sdapi/v1/progress?skip_current_image=true', { method: 'GET', headers });\n if (res?.ok) {\n data = await res.json();\n log('progressAPI:', data);\n if (el) el.innerText += `\\nProgress API:\\n${JSON.stringify(data, null, 2)}`;\n }\n};\n\nexport async function initContextMenu() {\n for (const tab of ['txt2img', 'img2img', 'control', 'video']) {\n appendContextMenuOption(`#${tab}_generate`, 'Get server status', getStatus);\n appendContextMenuOption(`#${tab}_generate`, 'Copy prompt to clipboard', () => navigator.clipboard.writeText(document.querySelector(`#${tab}_prompt > label > textarea`).value));\n appendContextMenuOption(`#${tab}_generate`, 'Generate forever', () => generateForever(`#${tab}_generate`));\n appendContextMenuOption(`#${tab}_generate`, 'Apply selected style', quickApplyStyle);\n appendContextMenuOption(`#${tab}_generate`, 'Quick save style', quickSaveStyle);\n appendContextMenuOption(`#${tab}_reprocess`, 'Decode full quality', () => reprocessClick(tab, 'reprocess_decode'), true);\n appendContextMenuOption(`#${tab}_reprocess`, 'Refine & HiRes pass', () => reprocessClick(tab, 'reprocess_refine'), true);\n appendContextMenuOption(`#${tab}_reprocess`, 'Detailer pass', () => reprocessClick(tab, 'reprocess_detail'), true);\n }\n // Right-click send-to-control button for prompt/params-only transfer.\n for (const tab of ['gallery', 'txt2img', 'img2img', 'extras']) {\n appendContextMenuOption(`#${tab}_tabitem #control_tab`, 'Transfer only prompt to Images tab', () => {\n document.querySelector(`#image_buttons_${tab} #control_tab_prompt`)?.click();\n document.getElementById('control_nav')?.click();\n });\n appendContextMenuOption(`#${tab}_tabitem #control_tab`, 'Transfer all parameters to Images tab', () => {\n document.querySelector(`#image_buttons_${tab} #control_tab_params`)?.click();\n document.getElementById('control_nav')?.click();\n });\n }\n addContextMenuEventListener();\n}\n", "import { gradioApp } from './script';\n\nexport function uiOpenSubmenus() {\n const accordions = Array.from(gradioApp().querySelectorAll('.gradio-accordion'));\n const states: Record = {};\n accordions.forEach((el) => {\n const labelEl = el.querySelector('.label-wrap > span:not(.icon)');\n const name = labelEl instanceof HTMLElement ? labelEl.innerText.trim() : '';\n if (!name) return;\n const children = Array.from(el.childNodes);\n const open = children.filter((c) => c instanceof HTMLElement && c.style.display === 'block');\n if (states[name] === undefined) states[name] = open.length > 0;\n });\n return states;\n}\n\nexport async function getUIDefaults() {\n const btn = gradioApp().getElementById('ui_defaults_view');\n if (!btn) return;\n const intersectionObserver = new IntersectionObserver((entries) => {\n if (entries[0].intersectionRatio <= 0) { /* Pass */ }\n if (entries[0].intersectionRatio > 0) btn.click();\n });\n intersectionObserver.observe(btn); // monitor visibility of tab\n}\n\nwindow.uiOpenSubmenus = uiOpenSubmenus;\n", "import { error, log, xhrPost } from './logger';\nimport { authFetch } from './authWrap';\nimport { timer } from './timers';\n\nexport const appStartTime = performance.now();\nlet monitorLogActive = false;\n\nasync function preloadImages(): Promise {\n const dark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;\n const imagePromises: Promise[] = [];\n const num = Math.floor(9.99 * Math.random());\n const imageUrls = [\n `file=ui/assets/logo-bg-${dark ? 'dark' : 'light'}.jpg`,\n `file=ui/assets/logo-bg-${num}.jpg`,\n ];\n for (const url of imageUrls) {\n const img = new Image();\n const promise = new Promise((resolve, reject) => {\n img.onload = () => resolve();\n img.onerror = () => reject(new Error(`failed to preload image: ${url}`));\n });\n img.src = url;\n imagePromises.push(promise);\n }\n try {\n await Promise.all(imagePromises);\n return true;\n } catch (err) {\n error(`preloadImages: ${err}`);\n return false;\n }\n}\n\nfunction joinArgs(messages: unknown[]): string {\n let output = '';\n for (let i = 0; i < messages.length; i++) {\n let arg = messages[i];\n if (arg === undefined) arg = 'undefined';\n if (arg === null) arg = 'null';\n output += ' ';\n if (typeof arg === 'object') output += JSON.stringify(arg).replace(/[\"]+/g, '');\n else output += arg;\n }\n return output;\n}\n\nfunction monitorLog(): void {\n if (window.logBufferDirty) {\n window.logBufferDirty = false;\n const maxLines = 100; // print last n logs from ring buffer to splash-log\n const lines: string[] = [];\n // print last n logs from ring buffer in time order\n for (let i = Math.max(0, window.logRingBuffer.length - maxLines); i < window.logRingBuffer.length; i++) {\n const logEntry = window.logRingBuffer[i];\n let color = 'white';\n if (logEntry.type === 'error') color = 'palevioletred';\n else if (logEntry.type === 'debug') color = 'gray';\n const html = `
    ${logEntry.ts}   ${joinArgs(logEntry.msg)}
    `;\n lines.push(html);\n }\n const splashLogEl = document.getElementById('splashLog');\n if (splashLogEl) splashLogEl.innerHTML = lines.join('');\n }\n if (monitorLogActive) setTimeout(monitorLog, 250);\n}\n\nexport async function removeSplash() {\n const splash = document.getElementById('splash');\n if (splash) splash.remove();\n log('removeSplash');\n const t = Math.round(performance.now() - appStartTime);\n log('startupTime', t);\n timer('splashVisible', t);\n xhrPost(`${window.api}/log`, { message: `ready time=${t}` });\n monitorLogActive = false;\n}\n\nasync function createSplash() {\n const dark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;\n log('createSplash', { theme: dark ? 'dark' : 'light' });\n const num = Math.floor(9.99 * Math.random());\n const splash = `\n
    \n
    \n
    \n
    \n
    `;\n document.body.insertAdjacentHTML('beforeend', splash);\n const ok = await preloadImages();\n if (!ok) {\n removeSplash();\n return;\n }\n const imgEl = `
    `;\n const splashEl = document.getElementById('splash');\n if (splashEl) splashEl.insertAdjacentHTML('afterbegin', imgEl);\n\n monitorLogActive = true;\n monitorLog();\n\n await authFetch(`${window.api}/motd`)\n .then((res) => res.text())\n .then((text) => {\n const clean = text.replace(/[\"]+/g, '');\n const boldMatch = clean.match(/(.*?)<\\/b>/);\n const boldText = boldMatch ? boldMatch[1] : clean;\n if (boldMatch) log('getMOTD', { version: boldText });\n else log('getMOTD', { text: clean });\n const motdEl = document.getElementById('motd');\n if (motdEl) motdEl.innerHTML = clean;\n })\n .catch((err) => error(`getMOTD: ${err}`));\n\n log('loadGradioUi');\n}\n\nwindow.onload = createSplash;\n", "import { log } from './logger';\n\nexport function addLegacyNotice() {\n log('legacyNotice');\n const notice = document.createElement('div');\n notice.id = 'legacy-notice';\n notice.className = 'legacy-standard';\n notice.textContent = 'Legacy';\n notice.title = 'Standard UI is a legacy interface that is no longer maintained and will be removed in the future. Please switch to ModernUI for best experience.';\n document.body.appendChild(notice);\n}\n", "import { initChangelog } from './changelog';\nimport { setupControlUI } from './control';\nimport { initiGenerationParams } from './generationParams';\nimport { initDragDrop } from './imageParams';\nimport { initAccordions } from './inputAccordion';\nimport { initIndexDB } from './indexdb';\nimport { initLogMonitor } from './logMonitor';\nimport { monitorConnection } from './monitor';\nimport { setRefreshInterval } from './progressBar';\nimport { initPromptChecker } from './promptChecker';\nimport { initModels, initSettings } from './settings';\nimport { initGallery } from './gallery';\nimport { initImageViewer } from './imageViewer';\nimport { reconnectUI } from './ui';\nimport { setupExtraNetworks, showNetworks, applyStyles } from './extraNetworks';\nimport { initAutocomplete } from './autocomplete';\nimport { setHints, disconnectHintsObserver } from './setHints';\nimport { initContextMenu } from './contextMenus';\nimport { executeCallbacks, onUiLoaded, onUiReady, sleep, uiReadyCallbacks, initTableSorter } from './script';\nimport { timer, logTimers } from './timers';\nimport { getUIDefaults } from './uiConfig';\nimport { log } from './logger';\nimport { appStartTime, removeSplash } from './loader';\nimport { addLegacyNotice } from './legacy';\n\nwindow.api = '/sdapi/v1';\nwindow.subpath = '';\n\nconst startupPromises: Promise[] = [];\nlet ok = false;\n\nasync function waitForOpts() {\n // make sure all of the ui is ready and options are loaded\n const t0 = performance.now();\n let t1 = performance.now();\n while (true) {\n if (t1 - t0 > 120000) {\n log('waitForOpts timeout');\n break;\n }\n if (window.opts && Object.keys(window.opts).length > 0) {\n ok = window.opts.theme_type === 'Modern' ? 'uiux_separator_appearance' in window.opts : true;\n if (ok) {\n log('waitForOpts', Math.round(t1 - t0));\n timer('waitForOpts', t1 - t0);\n break;\n }\n }\n await sleep(100);\n t1 = performance.now();\n }\n}\n\nasync function postStartup() {\n log('postStartup');\n disconnectHintsObserver();\n logTimers();\n}\n\nasync function updateSubpath() {\n log('mountURL', window.opts.subpath);\n if (window.opts.subpath?.length > 0) {\n window.subpath = window.opts.subpath;\n window.api = `${window.subpath}/sdapi/v1`;\n }\n log('API', { url: window.api });\n}\n\nasync function initStartup() {\n const t0 = performance.now();\n log('initGradio', Math.round(t0 - appStartTime));\n timer('initGradio', t0 - appStartTime);\n log('initUi');\n if (window.setupLogger) await window.setupLogger();\n\n // all items here are non-blocking async calls\n\n startupPromises.push(initModels());\n startupPromises.push(getUIDefaults());\n startupPromises.push(initPromptChecker());\n startupPromises.push(initContextMenu());\n startupPromises.push(initDragDrop());\n startupPromises.push(Promise.resolve(initAccordions()));\n startupPromises.push(Promise.resolve(initSettings()));\n startupPromises.push(Promise.resolve(initImageViewer()));\n startupPromises.push(Promise.resolve(initGallery()));\n startupPromises.push(Promise.resolve(initiGenerationParams()));\n startupPromises.push(Promise.resolve(initChangelog()));\n startupPromises.push(Promise.resolve(setupControlUI()));\n\n // reconnect server session\n await reconnectUI();\n await waitForOpts();\n await updateSubpath();\n\n executeCallbacks(uiReadyCallbacks);\n\n // optionally wait for modern ui\n if (window.waitForUiReady) await window.waitForUiReady();\n\n // post startup tasks that may take longer but are not critical\n startupPromises.push(Promise.resolve(initLogMonitor()));\n startupPromises.push(Promise.resolve(initGallery()));\n startupPromises.push(Promise.resolve(setRefreshInterval()));\n startupPromises.push(Promise.resolve(setupExtraNetworks()));\n startupPromises.push(Promise.resolve(initAutocomplete()));\n startupPromises.push(Promise.resolve(monitorConnection()));\n startupPromises.push(Promise.resolve(showNetworks()));\n startupPromises.push(Promise.resolve(setHints()));\n startupPromises.push(Promise.resolve(applyStyles()));\n startupPromises.push(Promise.resolve(initIndexDB()));\n startupPromises.push(Promise.resolve(initTableSorter()));\n\n if (window.opts.theme_type !== 'Modern') addLegacyNotice();\n\n const t1 = performance.now();\n log('initStartup', Math.round(1000 * (t1 - t0) / 1000000));\n\n removeSplash();\n\n await Promise.all(startupPromises);\n const t2 = performance.now();\n log('initComplete', Math.round(1000 * (t2 - t0) / 1000000));\n postStartup();\n}\n\nonUiLoaded(initStartup);\nonUiReady(() => log('uiReady'));\n\n// onAfterUiUpdate(() => log('evt onAfterUiUpdate'));\n// onUiLoaded(() => log('evt onUiLoaded'));\n// onOptionsChanged(() => log('evt onOptionsChanged'));\n// onUiTabChange(() => log('evt onUiTabChange'));\n// onUiUpdate(() => log('evt onUiUpdate'));\n", "import { randomId } from './progressBar';\n\nimport { log } from './logger';\nimport { gradioApp } from './script';\nimport { restartReload, updateInput } from './ui';\n\nexport function extensions_apply(_extensionsDisabledList: unknown, _extensionsUpdateList: unknown, disableAll: unknown): [string, string, unknown] {\n const disable = [];\n const update = [];\n gradioApp().querySelectorAll('#extensions input[type=\"checkbox\"]').forEach((x) => {\n if (!(x instanceof HTMLInputElement)) return;\n if (x.name.startsWith('enable_') && !x.checked) disable.push(x.name.substring(7));\n if (x.name.startsWith('update_') && x.checked) update.push(x.name.substring(7));\n });\n restartReload();\n log('Extensions apply:', { disable, update });\n return [JSON.stringify(disable), JSON.stringify(update), disableAll];\n}\n\nexport function extensions_check(_info: unknown, _extensionsDisabledList: unknown, searchText: unknown, sortColumn: unknown): [string, string, unknown, unknown] {\n const disable = [];\n gradioApp().querySelectorAll('#extensions input[type=\"checkbox\"]').forEach((x) => {\n if (!(x instanceof HTMLInputElement)) return;\n if (x.name.startsWith('enable_') && !x.checked) disable.push(x.name.substring(7));\n });\n const id = randomId();\n log('Extensions check:', { disable });\n return [id, JSON.stringify(disable), searchText, sortColumn];\n}\n\nexport function install_extension(button: HTMLButtonElement | HTMLInputElement, url: string): void {\n button.disabled = true;\n button.value = 'Installing...';\n button.innerHTML = 'installing';\n const textarea = gradioApp().querySelector('#extension_to_install textarea');\n if (!(textarea instanceof HTMLTextAreaElement)) return;\n textarea.value = url;\n updateInput(textarea);\n log('Extension install:', { url });\n const installBtn = gradioApp().querySelector('#install_extension_button');\n if (installBtn instanceof HTMLElement) installBtn.click();\n}\n\nexport function uninstall_extension(button: HTMLButtonElement | HTMLInputElement, url: string): void {\n button.disabled = true;\n button.value = 'Uninstalling...';\n button.innerHTML = 'uninstalling';\n const textarea = gradioApp().querySelector('#extension_to_install textarea');\n if (!(textarea instanceof HTMLTextAreaElement)) return;\n textarea.value = url;\n updateInput(textarea);\n log('Extension uninstall:', { url });\n const uninstallBtn = gradioApp().querySelector('#uninstall_extension_button');\n if (uninstallBtn instanceof HTMLElement) uninstallBtn.click();\n}\n\nexport function update_extension(button: HTMLButtonElement | HTMLInputElement, url: string): void {\n button.value = 'Updating...';\n button.innerHTML = 'updating';\n const textarea = gradioApp().querySelector('#extension_to_install textarea');\n if (!(textarea instanceof HTMLTextAreaElement)) return;\n textarea.value = url;\n updateInput(textarea);\n log('Extension update:', { url });\n const updateBtn = gradioApp().querySelector('#update_extension_button');\n if (updateBtn instanceof HTMLInputElement) updateBtn.click();\n}\n\nwindow.extensions_apply = extensions_apply;\nwindow.extensions_check = extensions_check;\nwindow.uninstall_extension = uninstall_extension;\nwindow.install_extension = install_extension;\nwindow.update_extension = update_extension;\n", "import { log } from './logger';\nimport { gradioApp, uiElementIsVisible, uiElementInSight } from './script';\n\ntype PromptDropTarget = EventTarget & {\n placeholder?: string;\n closest: (selector: string) => Element | null;\n};\n\nfunction isValidImageList(files: FileList | null | undefined): files is FileList {\n return files && files?.length === 1 && ['image/png', 'image/gif', 'image/jpeg'].includes(files[0].type);\n}\n\nfunction dropReplaceImage(imgWrap: Element, files: FileList): void {\n log('dropReplaceImage', imgWrap, files);\n if (!isValidImageList(files)) return;\n const tmpFile = files[0];\n imgWrap.querySelector('.modify-upload button + button, .touch-none + div button + button')?.click();\n const callback = () => {\n const fileInput = imgWrap.querySelector('input[type=\"file\"]');\n if (fileInput instanceof HTMLInputElement) {\n if (files.length === 0) {\n const dt = new DataTransfer();\n dt.items.add(tmpFile);\n fileInput.files = dt.files;\n } else {\n fileInput.files = files;\n }\n fileInput.dispatchEvent(new Event('change'));\n }\n };\n\n if (imgWrap.closest('#pnginfo_image')) {\n const oldFetch = window.fetch;\n window.fetch = async (input: RequestInfo | URL, options?: RequestInit) => {\n const response = await oldFetch(input, options);\n if (input === 'api/predict/') {\n const content = await response.text();\n window.fetch = oldFetch;\n window.requestAnimationFrame(() => callback());\n return new Response(content, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n }\n return response;\n };\n } else {\n window.requestAnimationFrame(() => callback());\n }\n}\n\nwindow.document.addEventListener('dragover', (e) => {\n const target = e.composedPath()[0] as PromptDropTarget;\n const imgWrap = target.closest('[data-testid=\"image\"]');\n if (!imgWrap && target.placeholder && target.placeholder.indexOf('Prompt') === -1) return;\n if ((e.dataTransfer?.files?.length || 0) > 0) {\n e.stopPropagation();\n e.preventDefault();\n e.dataTransfer.dropEffect = 'copy';\n }\n});\n\nwindow.document.addEventListener('drop', (e) => {\n const target = e.composedPath()[0] as PromptDropTarget;\n log('dropEvent', e, target);\n if (!target.placeholder) return;\n if (target.placeholder.indexOf('Prompt') === -1) return;\n const imgWrap = target.closest('[data-testid=\"image\"]');\n if (!imgWrap) return;\n if ((e.dataTransfer?.files?.length || 0) > 0) {\n e.stopPropagation();\n e.preventDefault();\n dropReplaceImage(imgWrap, e.dataTransfer.files);\n }\n});\n\nwindow.addEventListener('paste', (e) => {\n log('pasteEvent', e);\n const files = e.clipboardData?.files;\n if (!isValidImageList(files)) return;\n const visibleImageFields = [...gradioApp().querySelectorAll('[data-testid=\"image\"]')]\n .filter((el) => uiElementIsVisible(el))\n .sort((a, b) => Number(uiElementInSight(b)) - Number(uiElementInSight(a)));\n if (!visibleImageFields.length) return;\n const firstFreeImageField = visibleImageFields.filter((el) => el.querySelector('input[type=file]'))?.[0];\n dropReplaceImage(firstFreeImageField || visibleImageFields[visibleImageFields.length - 1], files);\n});\n", "import { gradioApp, onUiLoaded } from './script';\nimport { log, error } from './logger';\nimport { authFetch } from './authWrap';\n\ninterface CivitFile {\n url?: string;\n name?: string;\n type?: string;\n size?: number;\n}\n\ninterface CivitImage {\n url: string;\n}\n\ninterface CivitVersion {\n id: number;\n name?: string;\n base?: string;\n mtime: string;\n availability?: string;\n desc?: string;\n files: CivitFile[];\n images: CivitImage[];\n}\n\ninterface CivitModel {\n id: number;\n url: string;\n name?: string;\n type?: string;\n tags?: string[];\n nsfw?: boolean;\n level?: number;\n availability?: string;\n downloads?: number;\n creator?: string;\n desc?: string;\n versions: CivitVersion[];\n}\n\n// eslint-disable-next-line no-extend-native\nString.prototype.format = function format(this: string, args: Record): string {\n let thisString = '';\n for (let charPos = 0; charPos < this.length; charPos++) thisString += this[charPos];\n for (const key in args) {\n const stringKey = `{${key}}`;\n thisString = thisString.replace(new RegExp(stringKey, 'g'), String(args[key]));\n }\n return thisString;\n};\n\nlet selectedURL: string[] = [];\nlet selectedName: string[] = [];\nlet selectedType: string[] = [];\nlet selectedBase: string[] = [];\nlet selectedModelId: number[] = [];\nlet selectedVersionId: number[] = [];\n\nexport function clearModelDetails() {\n const el = gradioApp().getElementById('model-details') || gradioApp().getElementById('civitai_models_output') || gradioApp().getElementById('models_outcome');\n if (!el) return;\n el.innerHTML = '';\n}\nwindow.clearModelDetails = clearModelDetails;\n\nconst modelDetailsHTML = `\n
    \n \"model\n \n \n \n \n \n \n \n \n \n \n \n
    Name{name}
    Type{type}
    Tags
    {tags}
    NSFW{nsfw} | {level}
    Availability{availability}
    Downloads{downloads}
    Author{creator}
    Description
    {desc}
    Download
    All variants
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {versions}\n \n
    VersionTypeBaseFileUpdatedSizeAvailabilityDescription
    \n
    \n`;\n\nconst modelVersionsHTML = `\n \n {url}\n {name}\n {type}\n {base}\n {file}\n {mtime}\n {size}\n {availability}\n
    {desc}
    \n \n`;\n\nexport async function modelCardClick(id) {\n log('modelCardClick id', id);\n const el = gradioApp().getElementById('model-details') || gradioApp().getElementById('civitai_models_output') || gradioApp().getElementById('models_outcome');\n if (!el) return;\n const res = await authFetch(`${window.api}/civitai?model_id=${encodeURI(id)}`);\n if (!res || res.status !== 200) {\n error(`modelCardClick: id=${id} status=${res ? res.status : 'unknown'}`);\n return;\n }\n const dataArray = await res.json();\n log('modelCardClick data', dataArray);\n if (!dataArray || dataArray.length === 0) return;\n const data: any = dataArray[0]; // assuming the first item is the one we want\n\n const versionsHTML = data.versions.map((v: CivitVersion) => modelVersionsHTML.format({\n url: `
    \\udb80\\uddda
    `,\n name: v.name || 'unknown',\n type: v.files[0]?.type || 'unknown',\n base: v.base || 'unknown',\n mtime: (new Date(v.mtime)).toLocaleDateString(),\n availability: v.availability || 'unknown',\n size: v.files[0]?.size ? `${(v.files[0].size / 1024 / 1024).toFixed(2)} MB` : 'unknown',\n file: `${v.files[0]?.name || 'unknown'}`,\n desc: v.desc || 'no description available',\n })).join('');\n const url = `${data.name || 'unknown'}`;\n const creator = `${data.creator || 'unknown'}`;\n const images = data.versions.map((v: CivitVersion) => v.images).flat().map((i: CivitImage) => i.url); // TODO image gallery\n const modelHTML = modelDetailsHTML.format({\n name: url,\n type: data.type || 'unknown',\n tags: data.tags?.join(', ') || '',\n nsfw: data.nsfw ? 'yes' : 'no',\n level: data.level?.toString() || '',\n availability: data.availability || 'unknown',\n downloads: data.downloads?.toString() || '',\n creator,\n desc: data.desc || 'no description available',\n image: images.length > 0 ? images[0] : '/sdapi/v1/network/thumb?filename=ui/assets/missing.png',\n versions: versionsHTML || '',\n });\n el.innerHTML = modelHTML;\n}\nwindow.modelCardClick = modelCardClick;\n\nexport function startCivitDownload(url, name, type, base, modelId, versionId) {\n log('startCivitDownload', { url, name, type, base, modelId, versionId });\n selectedURL = [url];\n selectedName = [name];\n selectedType = [type];\n selectedBase = [base || ''];\n selectedModelId = [modelId || 0];\n selectedVersionId = [versionId || 0];\n const civitDownloadBtn = gradioApp().getElementById('civitai_download_btn');\n if (civitDownloadBtn) civitDownloadBtn.click();\n}\nwindow.startCivitDownload = startCivitDownload;\n\nexport function startCivitAllDownload(evt) {\n log('startCivitAllDownload', evt);\n const table = gradioApp().getElementById('model-versions-table');\n if (!table) return;\n const versions = table.querySelectorAll('tr');\n selectedURL = [];\n selectedName = [];\n selectedType = [];\n selectedBase = [];\n selectedModelId = [];\n selectedVersionId = [];\n for (const version of versions) {\n const parsed = version.querySelector('td:nth-child(1) div')?.getAttribute('onclick')?.match(/startCivitDownload\\('([^']+)', '([^']+)', '([^']+)', '([^']*)', (\\d+), (\\d+)\\)/);\n if (!parsed || parsed.length < 7) continue;\n selectedURL.push(parsed[1]);\n selectedName.push(parsed[2]);\n selectedType.push(parsed[3]);\n selectedBase.push(parsed[4]);\n selectedModelId.push(parseInt(parsed[5], 10));\n selectedVersionId.push(parseInt(parsed[6], 10));\n }\n const civitDownloadBtn = gradioApp().getElementById('civitai_download_btn');\n if (civitDownloadBtn) civitDownloadBtn.click();\n}\nwindow.startCivitAllDownload = startCivitAllDownload;\n\nexport function downloadCivitModel(modelUrl, modelName, modelType, modelBase, mId, vId, modelPath, civitToken, innerHTML) {\n log('downloadCivitModel', { modelUrl, modelName, modelType, modelBase, mId, vId, modelPath, civitToken });\n const el = gradioApp().getElementById('civitai_models_output') || gradioApp().getElementById('models_outcome');\n const currentHTML = el?.innerHTML || '';\n return [selectedURL, selectedName, selectedType, selectedBase, selectedModelId, selectedVersionId, modelPath, civitToken, currentHTML];\n}\nwindow.downloadCivitModel = downloadCivitModel;\n\nlet civitMutualExcludeBound = false;\n\nexport function civitaiMutualExclude() {\n if (civitMutualExcludeBound) return;\n const searchEl = gradioApp().querySelector('#civit_search_text textarea');\n const tagEl = gradioApp().querySelector('#civit_search_tag textarea');\n if (!searchEl || !tagEl) return;\n civitMutualExcludeBound = true;\n searchEl.addEventListener('input', () => {\n tagEl.closest('.gradio-textbox')?.classList.toggle('disabled-look', !!searchEl.value.trim());\n });\n tagEl.addEventListener('input', () => {\n searchEl.closest('.gradio-textbox')?.classList.toggle('disabled-look', !!tagEl.value.trim());\n });\n}\n\nonUiLoaded(civitaiMutualExclude);\n", "import { log } from './logger';\n\ntype GuiderLike = string | { label?: string };\n\nconst guiders: Record = {\n None: '',\n 'LSC: LayerSkipConfig': 'https://github.com/huggingface/diffusers/blob/041501aea92919c9c7f36e189fc9cf7d865ebb96/src/diffusers/hooks/layer_skip.py#L41',\n 'CFG: ClassifierFreeGuidance': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.ClassifierFreeGuidance',\n 'Auto: AutoGuidance': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.AutoGuidance',\n 'Zero: ClassifierFreeZeroStar': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.ClassifierFreeZeroStarGuidance',\n 'PAG: PerturbedAttentionGuidance': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.PerturbedAttentionGuidance',\n 'APG: AdaptiveProjectedGuidance': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.AdaptiveProjectedGuidance',\n 'SLG: SkipLayerGuidance': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.SkipLayerGuidance',\n 'SEG: SmoothedEnergyGuidance': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.SmoothedEnergyGuidance',\n 'TCFG: TangentialClassifierFreeGuidance': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.TangentialClassifierFreeGuidance',\n 'FDG: FrequencyDecoupledGuidance': 'https://huggingface.co/docs/diffusers/v0.35.1/en/api/modular_diffusers/guiders#diffusers.FrequencyDecoupledGuidance',\n};\n\nexport function getGuidanceDocs(guider: GuiderLike): void {\n const key = typeof guider === 'object' && guider?.label ? guider.label : guider;\n const url = guiders[key as string];\n log('getGuidanceDocs', guider, url);\n if (url) window.open(url, '_blank');\n}\n\nwindow.getGuidanceDocs = getGuidanceDocs;\n", "/* eslint max-classes-per-file: [\"error\", 2] */\n\ninterface TimesheetItem {\n start: number;\n end: number;\n label: string;\n type: string;\n}\n\nclass Bubble {\n type: string;\n label: string;\n min: number;\n start: number;\n end: number;\n scale: number;\n offset: number;\n width: number;\n duration: number;\n title: string;\n\n constructor(min: number, start: number, end: number, label: string, scale: number, type: string) {\n this.type = type;\n this.label = label;\n this.min = min;\n this.start = start;\n this.end = end;\n this.scale = scale;\n this.offset = Math.round(this.scale * (this.start - this.min));\n this.width = Math.round(this.scale * (this.end - this.start));\n this.duration = Math.round(1000 * (this.end - this.start)) / 1000;\n this.title = `Job: ${this.label}\\nDuration: ${this.duration}s\\nStart: ${new Date(1000 * this.start).toLocaleString()}\\nEnd: ${new Date(1000 * this.end).toLocaleString()}`;\n }\n\n getDateLabel(): number {\n return Math.round(1000 * (this.end - this.start)) / 1000;\n }\n}\n\nexport class Timesheet {\n min: number;\n max: number;\n data: TimesheetItem[];\n container: HTMLElement;\n scale: number;\n\n constructor(container: HTMLElement, data: TimesheetItem[]) {\n this.min = Math.floor(data[0].start);\n this.max = Math.round(data[data.length - 1].end + 0.5);\n this.data = data;\n this.container = container;\n const box = container.getBoundingClientRect();\n const width = box.width - 140;\n this.scale = width / (this.max - this.min);\n\n // draw sections\n let html: string[] = [];\n for (let c = 0; c <= this.max - this.min; c++) html.push(`
    `);\n container.className = 'timesheet color-scheme-default';\n container.innerHTML = `
    ${html.join('')}
    `;\n\n // insert data\n html = [];\n for (let n = 0, m = this.data.length; n < m; n++) {\n const cur = this.data[n];\n const bubble = new Bubble(this.min, cur.start, cur.end, cur.label, this.scale, cur.type);\n const line = [\n ``,\n `${bubble.duration} `,\n `${bubble.label}`,\n ].join('');\n html.push(`
  • ${line}
  • `);\n }\n this.container.innerHTML += `
      ${html.join('')}
    `;\n }\n}\n", "import { Timesheet } from './timesheet';\nimport { log } from './logger';\nimport { authFetch } from './authWrap';\n\ninterface HistoryEntry {\n timestamp: number;\n id: string;\n job: string;\n op: string;\n duration?: number;\n outputs: string[];\n type?: 'inference' | 'io' | 'default';\n}\n\ninterface TimelineEntry {\n start: number;\n end: number;\n label: string;\n type: 'inference' | 'io' | 'default';\n}\n\nconst inferenceTypes = ['inference', 'vae', 'te'];\nconst ioTypes = ['load', 'save'];\n\nexport function refreshHistory() {\n log('refreshHistory');\n authFetch(`${window.api}/history`, { priority: 'low' }).then((res) => {\n if (!res) return;\n const timeline = document.getElementById('history_timeline');\n const table = document.getElementById('history_table');\n if (!timeline || !table) return;\n timeline.innerHTML = '';\n res.json().then((rawData) => {\n let data = rawData as HistoryEntry[];\n if (!data || !data.length) {\n table.innerHTML = '

    No history data available.

    ';\n return;\n }\n\n // build table\n let html = '';\n for (const entry of data) {\n const ts = new Date(1000 * entry.timestamp).toLocaleString();\n const duration = entry.duration ? (entry.duration).toFixed(3) : '';\n const outputs = entry.outputs.join(', ');\n html += ``;\n }\n html += '
    TimeIDJobActionDurationOutputs
    ${ts}${entry.id}${entry.job}${entry.op}${duration}${outputs}
    ';\n table.innerHTML = html;\n\n // crop data to last processing session\n let startIdx = -1;\n for (let i = data.length - 1; i >= 0; --i) {\n const e = data[i];\n if ((e.job === 'control' || e.job === 'text' || e.job === 'control' || e.job === 'image') && (e.op === 'begin')) {\n startIdx = i;\n break;\n }\n }\n if (startIdx >= 0) data = data.slice(startIdx);\n\n // build timeline\n const ts: TimelineEntry[] = [];\n for (const entry of data) {\n if (entry.op === 'begin') {\n const start = entry.timestamp;\n const endEntry = data.find((e) => (e.id === entry.id && e.op === 'end'));\n const end = endEntry?.timestamp ?? data[data.length - 1].timestamp;\n if (end - start < 0.02) continue; // skip very short entries\n if (inferenceTypes.some((type) => entry.job.toLowerCase().startsWith(type))) entry.type = 'inference';\n else if (ioTypes.some((type) => entry.job.toLowerCase().startsWith(type))) entry.type = 'io';\n else entry.type = 'default';\n if (start && end) ts.push({ start, end, label: entry.job, type: entry.type });\n }\n }\n if (!ts.length) return;\n // eslint-disable-next-line no-new\n new Timesheet(timeline, ts);\n });\n });\n}\n\nwindow.refreshHistory = refreshHistory;\n", "import { gradioApp, onAfterUiUpdate } from './script';\nimport { get_tab_index } from './ui';\n\nlet currentWidth: number | null = null;\nlet currentHeight: number | null = null;\nlet arFrameTimeout: ReturnType | undefined;\n\nfunction dimensionChange(e: Event, isWidth: boolean, isHeight: boolean): void {\n const { target } = e;\n if (!(target instanceof HTMLInputElement)) return;\n if (isWidth) currentWidth = Number(target.value);\n if (isHeight) currentHeight = Number(target.value);\n const tabImg2img = gradioApp().querySelector('#tab_img2img');\n if (!(tabImg2img instanceof HTMLElement)) return;\n const inImg2img = tabImg2img.style.display === 'block';\n if (!inImg2img) return;\n let targetElement: HTMLImageElement | null = null;\n const tabIndex = get_tab_index('mode_img2img');\n if (tabIndex === 0) targetElement = gradioApp().querySelector('#img2img_image div[data-testid=image] img'); // img2img\n else if (tabIndex === 1) targetElement = gradioApp().querySelector('#img2img_sketch div[data-testid=image] img'); // Sketch\n else if (tabIndex === 2) targetElement = gradioApp().querySelector('#img2maskimg div[data-testid=image] img'); // Inpaint\n else if (tabIndex === 3) targetElement = gradioApp().querySelector('#composite div[data-testid=image] img'); // Inpaint sketch\n\n if (targetElement && currentWidth && currentHeight) {\n let arPreviewRect = gradioApp().querySelector('#imageARPreview');\n if (!arPreviewRect) {\n arPreviewRect = document.createElement('div');\n arPreviewRect.id = 'imageARPreview';\n gradioApp().appendChild(arPreviewRect);\n }\n\n const viewportOffset = targetElement.getBoundingClientRect();\n const viewportscale = Math.min(targetElement.clientWidth / targetElement.naturalWidth, targetElement.clientHeight / targetElement.naturalHeight);\n const scaledx = targetElement.naturalWidth * viewportscale;\n const scaledy = targetElement.naturalHeight * viewportscale;\n const cleintRectTop = (viewportOffset.top + window.scrollY);\n const cleintRectLeft = (viewportOffset.left + window.scrollX);\n const cleintRectCentreY = cleintRectTop + (targetElement.clientHeight / 2);\n const cleintRectCentreX = cleintRectLeft + (targetElement.clientWidth / 2);\n const arscale = Math.min(scaledx / currentWidth, scaledy / currentHeight);\n const arscaledx = currentWidth * arscale;\n const arscaledy = currentHeight * arscale;\n const arRectTop = cleintRectCentreY - (arscaledy / 2);\n const arRectLeft = cleintRectCentreX - (arscaledx / 2);\n const arRectWidth = arscaledx;\n const arRectHeight = arscaledy;\n arPreviewRect.style.top = `${arRectTop}px`;\n arPreviewRect.style.left = `${arRectLeft}px`;\n arPreviewRect.style.width = `${arRectWidth}px`;\n arPreviewRect.style.height = `${arRectHeight}px`;\n\n if (arFrameTimeout) clearTimeout(arFrameTimeout);\n arFrameTimeout = setTimeout(() => { arPreviewRect.style.display = 'none'; }, 2000);\n arPreviewRect.style.display = 'block';\n }\n}\n\nexport function aspectRatioCallback(): void {\n const arPreviewRect = gradioApp().querySelector('#imageARPreview');\n if (arPreviewRect instanceof HTMLElement) arPreviewRect.style.display = 'none';\n const tabImg2img = gradioApp().querySelector('#tab_img2img');\n if (tabImg2img instanceof HTMLElement) {\n const inImg2img = tabImg2img.style.display === 'block';\n if (inImg2img) {\n const inputs = gradioApp().querySelectorAll('input');\n inputs.forEach((e) => {\n if (!(e instanceof HTMLInputElement) || !(e.parentElement instanceof HTMLElement)) return;\n const isWidth = e.parentElement.id === 'img2img_width';\n const isHeight = e.parentElement.id === 'img2img_height';\n if ((isWidth || isHeight) && !e.classList.contains('scrollwatch')) {\n e.addEventListener('input', (evt) => { dimensionChange(evt, isWidth, isHeight); });\n e.classList.add('scrollwatch');\n }\n if (isWidth) currentWidth = Number(e.value);\n if (isHeight) currentHeight = Number(e.value);\n });\n }\n }\n}\n\nonAfterUiUpdate(aspectRatioCallback);\n", "import { gradioApp, onAfterUiUpdate } from './script';\n\n// Aspect-ratio lock for the paired width/height sliders. The math runs client-side and debounced,\n// and only the partner axis is ever written, never the field being edited; writing the edited field\n// back is what yanked the value mid-type when this went through a gradio round-trip. Programmatic\n// updates dispatch a synthetic input event so gradio's store stays in sync. State is keyed per\n// dropdown element so duplicate elem ids across tabs stay isolated.\n\nconst RES_DEBOUNCE = 350;\nconst AR_DEBOUNCE = 120;\nconst timers = new WeakMap>();\nconst busy = new WeakSet();\n\nfunction parseAR(ar: string): [number, number] | null {\n if (!ar || ar === 'AR') return null;\n const parts = ar.split(':');\n if (parts.length !== 2) return null;\n const w = parseInt(parts[0], 10);\n const h = parseInt(parts[1], 10);\n return (w > 0 && h > 0) ? [w, h] : null;\n}\n\nfunction numberInput(group: Element): HTMLInputElement | null {\n const inp = group.querySelector('input[type=number]') || group.querySelector('input');\n return inp instanceof HTMLInputElement ? inp : null;\n}\n\nfunction readValue(group: Element): number {\n const inp = numberInput(group);\n return inp ? Number(inp.value) : 0;\n}\n\nfunction writeValue(group: Element, raw: number): void {\n const inp = numberInput(group);\n if (!inp) return;\n const step = Number(inp.step) || 8;\n const min = inp.min !== '' ? Number(inp.min) : 0;\n const max = inp.max !== '' ? Number(inp.max) : 8192;\n const value = Math.max(min, Math.min(max, Math.round(raw / step) * step));\n if (value === Number(inp.value)) return; // unchanged: skip so the listeners do not refire\n group.querySelectorAll('input').forEach((el) => {\n if (!(el instanceof HTMLInputElement)) return;\n el.value = String(value);\n const e = new Event('input', { bubbles: true });\n Object.defineProperty(e, 'target', { value: el });\n el.dispatchEvent(e);\n });\n}\n\nfunction arValue(arEl: Element): string {\n const inp = arEl.querySelector('input');\n return inp instanceof HTMLInputElement ? inp.value : 'AR';\n}\n\nfunction pairOf(arEl: Element): { width: Element; height: Element } | null {\n let container: Element | null = arEl.parentElement;\n for (let i = 0; i < 6 && container; i++) {\n const width = container.querySelector('[id$=\"_width\"]');\n const height = container.querySelector('[id$=\"_height\"]');\n if (width && height) return { width, height };\n container = container.parentElement;\n }\n return null;\n}\n\nfunction settle(arEl: Element, source: 'width' | 'height'): void {\n const ar = parseAR(arValue(arEl));\n if (!ar) return;\n const pair = pairOf(arEl);\n if (!pair) return;\n const [rw, rh] = ar;\n busy.add(arEl);\n if (source === 'height') writeValue(pair.width, (readValue(pair.height) * rw) / rh);\n else writeValue(pair.height, (readValue(pair.width) * rh) / rw);\n busy.delete(arEl);\n}\n\nfunction schedule(arEl: Element, source: 'width' | 'height', delay: number): void {\n if (busy.has(arEl)) return; // ignore the input events our own writes dispatch\n clearTimeout(timers.get(arEl));\n timers.set(arEl, setTimeout(() => settle(arEl, source), delay));\n}\n\nfunction flush(arEl: Element, source: 'width' | 'height'): void {\n if (busy.has(arEl)) return;\n clearTimeout(timers.get(arEl));\n settle(arEl, source);\n}\n\nfunction bind(arEl: Element, group: Element, source: 'width' | 'height'): void {\n group.querySelectorAll('input').forEach((el) => {\n if (!(el instanceof HTMLInputElement) || el.classList.contains('ar-lock-bound')) return;\n el.classList.add('ar-lock-bound');\n el.addEventListener('input', () => schedule(arEl, source, RES_DEBOUNCE));\n el.addEventListener('change', () => flush(arEl, source)); // commit on blur, enter, or slider release\n });\n}\n\nexport function setupResolutionLock(): void {\n gradioApp().querySelectorAll('.ar-dropdown').forEach((arEl) => {\n const pair = pairOf(arEl);\n if (!pair) return;\n bind(arEl, pair.width, 'width');\n bind(arEl, pair.height, 'height');\n arEl.querySelectorAll('input').forEach((el) => {\n if (!(el instanceof HTMLInputElement) || el.classList.contains('ar-lock-bound')) return;\n el.classList.add('ar-lock-bound');\n el.addEventListener('change', () => flush(arEl, 'width')); // new ratio: keep width, derive height\n el.addEventListener('input', () => schedule(arEl, 'width', AR_DEBOUNCE));\n });\n });\n}\n\nonAfterUiUpdate(setupResolutionLock);\n", "import { updateInput } from './ui';\n\nexport function keyupEditAttention(event: KeyboardEvent): void {\n const target = (event as any).originalTarget || event.composedPath()[0];\n if (!(target instanceof HTMLTextAreaElement)) return;\n if (!target.matches(\"*:is([id*='_toprow'] [id*='_prompt'], .prompt) textarea\")) return;\n if (!(event.metaKey || event.ctrlKey)) return;\n const isPlus = event.key === 'ArrowUp';\n const isMinus = event.key === 'ArrowDown';\n if (!isPlus && !isMinus) return;\n let { selectionStart } = target;\n let { selectionEnd } = target;\n let text = target.value;\n\n function selectCurrentParenthesisBlock(OPEN: string, CLOSE: string): boolean {\n if (selectionStart !== selectionEnd) return false;\n\n // Find opening parenthesis around current cursor\n const before = text.substring(0, selectionStart);\n let beforeParen = before.lastIndexOf(OPEN);\n if (beforeParen === -1) return false;\n let beforeParenClose = before.lastIndexOf(CLOSE);\n while (beforeParenClose !== -1 && beforeParenClose > beforeParen) {\n beforeParen = before.lastIndexOf(OPEN, beforeParen - 1);\n beforeParenClose = before.lastIndexOf(CLOSE, beforeParenClose - 1);\n }\n\n // Find closing parenthesis around current cursor\n const after = text.substring(selectionStart);\n let afterParen = after.indexOf(CLOSE);\n if (afterParen === -1) return false;\n let afterParenOpen = after.indexOf(OPEN);\n while (afterParenOpen !== -1 && afterParen > afterParenOpen) {\n afterParen = after.indexOf(CLOSE, afterParen + 1);\n afterParenOpen = after.indexOf(OPEN, afterParenOpen + 1);\n }\n if (beforeParen === -1 || afterParen === -1) return false;\n\n // Set the selection to the text between the parenthesis\n const parenContent = text.substring(beforeParen + 1, selectionStart + afterParen);\n const lastColon = parenContent.lastIndexOf(':');\n selectionStart = beforeParen + 1;\n selectionEnd = selectionStart + lastColon;\n target.setSelectionRange(selectionStart, selectionEnd);\n return true;\n }\n\n function selectCurrentWord(): boolean {\n if (selectionStart !== selectionEnd) return false;\n const delimiters = `${window.opts.keyedit_delimiters} \\r\\n\\t`;\n // seek backward until to find beginning\n while (!delimiters.includes(text[selectionStart - 1]) && selectionStart > 0) selectionStart--;\n // seek forward to find end\n while (!delimiters.includes(text[selectionEnd]) && selectionEnd < text.length) selectionEnd++;\n target.setSelectionRange(selectionStart, selectionEnd);\n return true;\n }\n\n // If the user hasn't selected anything, let's select their current parenthesis block or word\n if (!selectCurrentParenthesisBlock('<', '>') && !selectCurrentParenthesisBlock('(', ')')) selectCurrentWord();\n event.preventDefault();\n\n let closeCharacter = ')';\n let delta = window.opts.keyedit_precision_attention;\n\n if (selectionStart > 0 && text[selectionStart - 1] === '<') {\n closeCharacter = '>';\n delta = window.opts.keyedit_precision_extra;\n } else if (selectionStart === 0 || text[selectionStart - 1] !== '(') {\n while (selectionEnd > selectionStart && text[selectionEnd - 1] === ' ') selectionEnd -= 1;\n if (selectionStart === selectionEnd) return;\n text = `${text.slice(0, selectionStart)}(${text.slice(selectionStart, selectionEnd)}:1.0)${text.slice(selectionEnd)}`;\n selectionStart += 1;\n selectionEnd += 1;\n }\n const end = text.slice(selectionEnd + 1).indexOf(closeCharacter) + 1;\n let weight: any = parseFloat(text.slice(selectionEnd + 1, selectionEnd + 1 + end));\n if (Number.isNaN(weight)) return;\n weight += isPlus ? delta : -delta;\n weight = parseFloat(weight.toPrecision(12));\n if (String(weight).length === 1) weight += '.0';\n if (closeCharacter === ')' && weight === 1) {\n text = text.slice(0, selectionStart - 1) + text.slice(selectionStart, selectionEnd) + text.slice(selectionEnd + 5);\n selectionStart--;\n selectionEnd--;\n } else {\n text = text.slice(0, selectionEnd + 1) + weight + text.slice(selectionEnd + 1 + end - 1);\n }\n target.focus();\n target.value = text;\n target.selectionStart = selectionStart;\n target.selectionEnd = selectionEnd;\n updateInput(target);\n}\n\naddEventListener('keydown', (event) => keyupEditAttention(event));\n", "/**\n*\n* jquery.sparkline.js\n*\n* v2.4.1\n* (c) Splunk, Inc\n* Contact: Gareth Watts (gareth@splunk.com)\n* http://omnipotent.net/jquery.sparkline/\n*\n* Generates inline sparkline charts from data supplied either to the method\n* or inline in HTML\n*\n* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag\n* (Firefox 2.0+, Safari, Opera, etc)\n*\n* License: New BSD License\n*\n* Copyright (c) 2012, Splunk Inc.\n* All rights reserved.\n*\n* Redistribution and use in source and binary forms, with or without modification,\n* are permitted provided that the following conditions are met:\n*\n* * Redistributions of source code must retain the above copyright notice,\n* this list of conditions and the following disclaimer.\n* * Redistributions in binary form must reproduce the above copyright notice,\n* this list of conditions and the following disclaimer in the documentation\n* and/or other materials provided with the distribution.\n* * Neither the name of Splunk Inc nor the names of its contributors may\n* be used to endorse or promote products derived from this software without\n* specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY\n* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES\n* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT\n* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT\n* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)\n* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\n* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*\n*\n* Usage:\n* $(selector).sparkline(values, options)\n*\n* If values is undefined or set to 'html' then the data values are read from the specified tag:\n*

    Sparkline: 1,4,6,6,8,5,3,5

    \n* $('.sparkline').sparkline();\n* There must be no spaces in the enclosed data set\n*\n* Otherwise values must be an array of numbers or null values\n*

    Sparkline: This text replaced if the browser is compatible

    \n* $('#sparkline1').sparkline([1,4,6,6,8,5,3,5])\n* $('#sparkline2').sparkline([1,4,6,null,null,5,3,5])\n*\n* Values can also be specified in an HTML comment, or as a values attribute:\n*

    Sparkline:

    \n*

    Sparkline:

    \n* $('.sparkline').sparkline();\n*\n* For line charts, x values can also be specified:\n*

    Sparkline: 1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5

    \n* $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ])\n*\n* By default, options should be passed in as the second argument to the sparkline function:\n* $('.sparkline').sparkline([1,2,3,4], {type: 'bar'})\n*\n* Options can also be set by passing them on the tag itself. This feature is disabled by default though\n* as there's a slight performance overhead:\n* $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true})\n*

    Sparkline: loading

    \n* Prefix all options supplied as tag attribute with \"spark\" (configurable by setting tagOptionsPrefix)\n*\n* Supported options:\n* lineColor - Color of the line used for the chart\n* fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart\n* width - Width of the chart - Defaults to 3 times the number of values in pixels\n* height - Height of the chart - Defaults to the height of the containing element\n* chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied\n* chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied\n* chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax\n* chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied\n* chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied\n* composite - If true then don't erase any existing chart attached to the tag, but draw\n* another chart over the top - Note that width and height are ignored if an\n* existing chart is detected.\n* tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values'\n* enableTagOptions - Whether to check tags for sparkline options\n* tagOptionsPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark'\n* disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a\n* hidden dom element, avoding a browser reflow\n* disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled,\n* making the plugin perform much like it did in 1.x\n* disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled)\n* disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled\n* defaults to false (highlights enabled)\n* highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase\n* tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body\n* tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied\n* tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis\n* tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis\n* tooltipFormatter - Optional callback that allows you to override the HTML displayed in the tooltip\n* callback is given arguments of (sparkline, options, fields)\n* tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title\n* tooltipFormat - A format string or SPFormat object (or an array thereof for multiple entries)\n* to control the format of the tooltip\n* tooltipPrefix - A string to prepend to each field displayed in a tooltip\n* tooltipSuffix - A string to append to each field displayed in a tooltip\n* tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true)\n* tooltipValueLookups - An object or range map to map field values to tooltip strings\n* (eg. to map -1 to \"Lost\", 0 to \"Draw\", and 1 to \"Win\")\n* numberFormatter - Optional callback for formatting numbers in tooltips\n* numberDigitGroupSep - Character to use for group separator in numbers \"1,234\" - Defaults to \",\"\n* numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to \".\"\n* numberDigitGroupCount - Number of digits between group separator - Defaults to 3\n*\n* There are 7 types of sparkline, selected by supplying a \"type\" option of 'line' (default),\n* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box'\n* line - Line chart. Options:\n* spotColor - Set to '' to not end each line in a circular spot\n* minSpotColor - If set, color of spot at minimum value\n* maxSpotColor - If set, color of spot at maximum value\n* spotRadius - Radius in pixels\n* lineWidth - Width of line in pixels\n* normalRangeMin\n* normalRangeMax - If set draws a filled horizontal bar between these two values marking the \"normal\"\n* or expected range of values\n* normalRangeColor - Color to use for the above bar\n* drawNormalOnTop - Draw the normal range above the chart fill color if true\n* defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart\n* highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable\n* highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable\n* valueSpots - Specify which points to draw spots on, and in which color. Accepts a range map\n*\n* bar - Bar chart. Options:\n* barColor - Color of bars for postive values\n* negBarColor - Color of bars for negative values\n* zeroColor - Color of bars with zero values\n* nullColor - Color of bars with null values - Defaults to omitting the bar entirely\n* barWidth - Width of bars in pixels\n* colorMap - Optional mappnig of values to colors to override the *BarColor values above\n* can be an Array of values to control the color of individual bars or a range map\n* to specify colors for individual ranges of values\n* barSpacing - Gap between bars in pixels\n* zeroAxis - Centers the y-axis around zero if true\n*\n* tristate - Charts values of win (>0), lose (<0) or draw (=0)\n* posBarColor - Color of win values\n* negBarColor - Color of lose values\n* zeroBarColor - Color of draw values\n* barWidth - Width of bars in pixels\n* barSpacing - Gap between bars in pixels\n* colorMap - Optional mappnig of values to colors to override the *BarColor values above\n* can be an Array of values to control the color of individual bars or a range map\n* to specify colors for individual ranges of values\n*\n* discrete - Options:\n* lineHeight - Height of each line in pixels - Defaults to 30% of the graph height\n* thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor\n* thresholdColor\n*\n* bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ...\n* options:\n* targetColor - The color of the vertical target marker\n* targetWidth - The width of the target marker in pixels\n* performanceColor - The color of the performance measure horizontal bar\n* rangeColors - Colors to use for each qualitative range background color\n*\n* pie - Pie chart. Options:\n* sliceColors - An array of colors to use for pie slices\n* offset - Angle in degrees to offset the first slice - Try -90 or +90\n* borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border)\n* borderColor - Color to use for the pie chart border - Defaults to #000\n*\n* box - Box plot. Options:\n* raw - Set to true to supply pre-computed plot points as values\n* values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier\n* When set to false you can supply any number of values and the box plot will\n* be computed for you. Default is false.\n* showOutliers - Set to true (default) to display outliers as circles\n* outlierIQR - Interquartile range used to determine outliers. Default 1.5\n* boxLineColor - Outline color of the box\n* boxFillColor - Fill color for the box\n* whiskerColor - Line color used for whiskers\n* outlierLineColor - Outline color of outlier circles\n* outlierFillColor - Fill color of the outlier circles\n* spotRadius - Radius of outlier circles\n* medianColor - Line color of the median line\n* target - Draw a target cross hair at the supplied value (default undefined)\n*\n*\n*\n* Examples:\n* $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false });\n* $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 });\n* $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }):\n* $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' });\n* $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' });\n* $('#pie').sparkline([1,1,2], { type:'pie' });\n*/\n\n/*jslint regexp: true, browser: true, jquery: true, white: true, nomen: false, plusplus: false, maxerr: 500, indent: 4 */\n\n(function(document, Math, undefined) { // performance/minified-size optimization\n(function(factory) {\n if(typeof define === 'function' && define.amd) {\n define(['jquery'], factory);\n } else if (jQuery && !jQuery.fn.sparkline) {\n factory(jQuery);\n }\n}\n(function($) {\n 'use strict';\n\n var UNSET_OPTION = {},\n getDefaults, createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues,\n remove, isNumber, all, sum, addCSS, ensureArray, formatNumber, RangeMap,\n MouseHandler, Tooltip, barHighlightMixin,\n line, bar, tristate, discrete, bullet, pie, box, defaultStyles, initStyles,\n VShape, VCanvas_base, VCanvas_canvas, VCanvas_vml, pending, shapeCount = 0;\n\n /**\n * Default configuration settings\n */\n getDefaults = function () {\n return {\n // Settings common to most/all chart types\n common: {\n type: 'line',\n lineColor: '#00f',\n fillColor: '#cdf',\n defaultPixelsPerValue: 3,\n width: 'auto',\n height: 'auto',\n composite: false,\n tagValuesAttribute: 'values',\n tagOptionsPrefix: 'spark',\n enableTagOptions: false,\n enableHighlight: true,\n highlightLighten: 1.4,\n tooltipSkipNull: true,\n tooltipPrefix: '',\n tooltipSuffix: '',\n disableHiddenCheck: false,\n numberFormatter: false,\n numberDigitGroupCount: 3,\n numberDigitGroupSep: ',',\n numberDecimalMark: '.',\n disableTooltips: false,\n disableInteraction: false\n },\n // Defaults for line charts\n line: {\n spotColor: '#f80',\n highlightSpotColor: '#5f5',\n highlightLineColor: '#f22',\n spotRadius: 1.5,\n minSpotColor: '#f80',\n maxSpotColor: '#f80',\n lineWidth: 1,\n normalRangeMin: undefined,\n normalRangeMax: undefined,\n normalRangeColor: '#ccc',\n drawNormalOnTop: false,\n chartRangeMin: undefined,\n chartRangeMax: undefined,\n chartRangeMinX: undefined,\n chartRangeMaxX: undefined,\n tooltipFormat: new SPFormat(' {{prefix}}{{y}}{{suffix}}')\n },\n // Defaults for bar charts\n bar: {\n barColor: '#3366cc',\n negBarColor: '#f44',\n stackedBarColor: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n '#dd4477', '#0099c6', '#990099'],\n zeroColor: undefined,\n nullColor: undefined,\n zeroAxis: true,\n barWidth: 4,\n barSpacing: 1,\n chartRangeMax: undefined,\n chartRangeMin: undefined,\n chartRangeClip: false,\n colorMap: undefined,\n tooltipFormat: new SPFormat(' {{prefix}}{{value}}{{suffix}}')\n },\n // Defaults for tristate charts\n tristate: {\n barWidth: 4,\n barSpacing: 1,\n posBarColor: '#6f6',\n negBarColor: '#f44',\n zeroBarColor: '#999',\n colorMap: {},\n tooltipFormat: new SPFormat(' {{value:map}}'),\n tooltipValueLookups: { map: { '-1': 'Loss', '0': 'Draw', '1': 'Win' } }\n },\n // Defaults for discrete charts\n discrete: {\n lineHeight: 'auto',\n thresholdColor: undefined,\n thresholdValue: 0,\n chartRangeMax: undefined,\n chartRangeMin: undefined,\n chartRangeClip: false,\n tooltipFormat: new SPFormat('{{prefix}}{{value}}{{suffix}}')\n },\n // Defaults for bullet charts\n bullet: {\n targetColor: '#f33',\n targetWidth: 3, // width of the target bar in pixels\n performanceColor: '#33f',\n rangeColors: ['#d3dafe', '#a8b6ff', '#7f94ff'],\n base: undefined, // set this to a number to change the base start number\n tooltipFormat: new SPFormat('{{fieldkey:fields}} - {{value}}'),\n tooltipValueLookups: { fields: {r: 'Range', p: 'Performance', t: 'Target'} }\n },\n // Defaults for pie charts\n pie: {\n offset: 0,\n sliceColors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',\n '#dd4477', '#0099c6', '#990099'],\n borderWidth: 0,\n borderColor: '#000',\n tooltipFormat: new SPFormat(' {{value}} ({{percent.1}}%)')\n },\n // Defaults for box plots\n box: {\n raw: false,\n boxLineColor: '#000',\n boxFillColor: '#cdf',\n whiskerColor: '#000',\n outlierLineColor: '#333',\n outlierFillColor: '#fff',\n medianColor: '#f00',\n showOutliers: true,\n outlierIQR: 1.5,\n spotRadius: 1.5,\n target: undefined,\n targetColor: '#4a2',\n chartRangeMax: undefined,\n chartRangeMin: undefined,\n tooltipFormat: new SPFormat('{{field:fields}}: {{value}}'),\n tooltipFormatFieldlistKey: 'field',\n tooltipValueLookups: { fields: { lq: 'Lower Quartile', med: 'Median',\n uq: 'Upper Quartile', lo: 'Left Outlier', ro: 'Right Outlier',\n lw: 'Left Whisker', rw: 'Right Whisker'} }\n }\n };\n };\n\n // You can have tooltips use a css class other than jqstooltip by specifying tooltipClassname\n defaultStyles = '.jqstooltip { ' +\n 'position: absolute;' +\n 'left: 0px;' +\n 'top: 0px;' +\n 'visibility: hidden;' +\n 'background: rgb(0, 0, 0) transparent;' +\n 'background-color: rgba(0,0,0,0.6);' +\n 'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);' +\n '-ms-filter: \"progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)\";' +\n 'color: white;' +\n 'font: 10px arial, san serif;' +\n 'text-align: left;' +\n 'white-space: nowrap;' +\n 'padding: 5px;' +\n 'border: 1px solid white;' +\n 'box-sizing: content-box;' +\n 'z-index: 10000;' +\n '}' +\n '.jqsfield { ' +\n 'color: white;' +\n 'font: 10px arial, san serif;' +\n 'text-align: left;' +\n '}';\n\n /**\n * Utilities\n */\n\n createClass = function (/* [baseclass, [mixin, ...]], definition */) {\n var Class, args;\n Class = function () {\n this.init.apply(this, arguments);\n };\n if (arguments.length > 1) {\n if (arguments[0]) {\n Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]);\n Class._super = arguments[0].prototype;\n } else {\n Class.prototype = arguments[arguments.length - 1];\n }\n if (arguments.length > 2) {\n args = Array.prototype.slice.call(arguments, 1, -1);\n args.unshift(Class.prototype);\n $.extend.apply($, args);\n }\n } else {\n Class.prototype = arguments[0];\n }\n Class.prototype.cls = Class;\n return Class;\n };\n\n /**\n * Wraps a format string for tooltips\n * {{x}}\n * {{x.2}\n * {{x:months}}\n */\n $.SPFormatClass = SPFormat = createClass({\n fre: /\\{\\{([\\w.]+?)(:(.+?))?\\}\\}/g,\n precre: /(\\w+)\\.(\\d+)/,\n\n init: function (format, fclass) {\n this.format = format;\n this.fclass = fclass;\n },\n\n render: function (fieldset, lookups, options) {\n var self = this,\n fields = fieldset,\n match, token, lookupkey, fieldvalue, prec;\n return this.format.replace(this.fre, function () {\n var lookup;\n token = arguments[1];\n lookupkey = arguments[3];\n match = self.precre.exec(token);\n if (match) {\n prec = match[2];\n token = match[1];\n } else {\n prec = false;\n }\n fieldvalue = fields[token];\n if (fieldvalue === undefined) {\n return '';\n }\n if (lookupkey && lookups && lookups[lookupkey]) {\n lookup = lookups[lookupkey];\n if (lookup.get) { // RangeMap\n return lookups[lookupkey].get(fieldvalue) || fieldvalue;\n } else {\n return lookups[lookupkey][fieldvalue] || fieldvalue;\n }\n }\n if (isNumber(fieldvalue)) {\n if (options.get('numberFormatter')) {\n fieldvalue = options.get('numberFormatter')(fieldvalue);\n } else {\n fieldvalue = formatNumber(fieldvalue, prec,\n options.get('numberDigitGroupCount'),\n options.get('numberDigitGroupSep'),\n options.get('numberDecimalMark'));\n }\n }\n return fieldvalue;\n });\n }\n });\n\n // convience method to avoid needing the new operator\n $.spformat = function(format, fclass) {\n return new SPFormat(format, fclass);\n };\n\n clipval = function (val, min, max) {\n if (val < min) {\n return min;\n }\n if (val > max) {\n return max;\n }\n return val;\n };\n\n quartile = function (values, q) {\n var vl;\n if (q === 2) {\n vl = Math.floor(values.length / 2);\n return values.length % 2 ? values[vl] : (values[vl-1] + values[vl]) / 2;\n } else {\n if (values.length % 2 ) { // odd\n vl = (values.length * q + q) / 4;\n return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1];\n } else { //even\n vl = (values.length * q + 2) / 4;\n return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1];\n\n }\n }\n };\n\n normalizeValue = function (val) {\n var nf;\n switch (val) {\n case 'undefined':\n val = undefined;\n break;\n case 'null':\n val = null;\n break;\n case 'true':\n val = true;\n break;\n case 'false':\n val = false;\n break;\n default:\n nf = parseFloat(val);\n if (val == nf) {\n val = nf;\n }\n }\n return val;\n };\n\n normalizeValues = function (vals) {\n var i, result = [];\n for (i = vals.length; i--;) {\n result[i] = normalizeValue(vals[i]);\n }\n return result;\n };\n\n remove = function (vals, filter) {\n var i, vl, result = [];\n for (i = 0, vl = vals.length; i < vl; i++) {\n if (vals[i] !== filter) {\n result.push(vals[i]);\n }\n }\n return result;\n };\n\n isNumber = function (num) {\n return !isNaN(parseFloat(num)) && isFinite(num);\n };\n\n formatNumber = function (num, prec, groupsize, groupsep, decsep) {\n var p, i;\n num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split('');\n p = (p = $.inArray('.', num)) < 0 ? num.length : p;\n if (p < num.length) {\n num[p] = decsep;\n }\n for (i = p - groupsize; i > 0; i -= groupsize) {\n num.splice(i, 0, groupsep);\n }\n return num.join('');\n };\n\n // determine if all values of an array match a value\n // returns true if the array is empty\n all = function (val, arr, ignoreNull) {\n var i;\n for (i = arr.length; i--; ) {\n if (ignoreNull && arr[i] === null) continue;\n if (arr[i] !== val) {\n return false;\n }\n }\n return true;\n };\n\n // sums the numeric values in an array, ignoring other values\n sum = function (vals) {\n var total = 0, i;\n for (i = vals.length; i--;) {\n total += typeof vals[i] === 'number' ? vals[i] : 0;\n }\n return total;\n };\n\n ensureArray = function (val) {\n return $.isArray(val) ? val : [val];\n };\n\n // http://paulirish.com/2008/bookmarklet-inject-new-css-rules/\n addCSS = function(css) {\n var tag, iefail;\n if (document.createStyleSheet) {\n try {\n document.createStyleSheet().cssText = css;\n return;\n } catch (e) {\n // IE <= 9 maxes out at 31 stylesheets; inject into page instead.\n iefail = true;\n }\n }\n tag = document.createElement('style');\n tag.type = 'text/css';\n document.getElementsByTagName('head')[0].appendChild(tag);\n if (iefail) {\n document.styleSheets[document.styleSheets.length - 1].cssText = css;\n } else {\n tag[(typeof document.body.style.WebkitAppearance == 'string') /* webkit only */ ? 'innerText' : 'innerHTML'] = css;\n }\n };\n\n // Provide a cross-browser interface to a few simple drawing primitives\n $.fn.simpledraw = function (width, height, useExisting, interact) {\n var target, mhandler;\n if (useExisting && (target = this.data('_jqs_vcanvas'))) {\n return target;\n }\n\n if ($.fn.sparkline.canvas === false) {\n // We've already determined that neither Canvas nor VML are available\n return false;\n\n } else if ($.fn.sparkline.canvas === undefined) {\n // No function defined yet -- need to see if we support Canvas or VML\n var el = document.createElement('canvas');\n if (!!(el.getContext && el.getContext('2d'))) {\n // Canvas is available\n $.fn.sparkline.canvas = function(width, height, target, interact) {\n return new VCanvas_canvas(width, height, target, interact);\n };\n } else if (document.namespaces && !document.namespaces.v) {\n // VML is available\n document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML');\n $.fn.sparkline.canvas = function(width, height, target, interact) {\n return new VCanvas_vml(width, height, target);\n };\n } else {\n // Neither Canvas nor VML are available\n $.fn.sparkline.canvas = false;\n return false;\n }\n }\n\n if (width === undefined) {\n width = $(this).innerWidth();\n }\n if (height === undefined) {\n height = $(this).innerHeight();\n }\n\n target = $.fn.sparkline.canvas(width, height, this, interact);\n\n mhandler = $(this).data('_jqs_mhandler');\n if (mhandler) {\n mhandler.registerCanvas(target);\n }\n return target;\n };\n\n $.fn.cleardraw = function () {\n var target = this.data('_jqs_vcanvas');\n if (target) {\n target.reset();\n }\n };\n\n $.RangeMapClass = RangeMap = createClass({\n init: function (map) {\n var key, range, rangelist = [];\n for (key in map) {\n if (map.hasOwnProperty(key) && typeof key === 'string' && key.indexOf(':') > -1) {\n range = key.split(':');\n range[0] = range[0].length === 0 ? -Infinity : parseFloat(range[0]);\n range[1] = range[1].length === 0 ? Infinity : parseFloat(range[1]);\n range[2] = map[key];\n rangelist.push(range);\n }\n }\n this.map = map;\n this.rangelist = rangelist || false;\n },\n\n get: function (value) {\n var rangelist = this.rangelist,\n i, range, result;\n if ((result = this.map[value]) !== undefined) {\n return result;\n }\n if (rangelist) {\n for (i = rangelist.length; i--;) {\n range = rangelist[i];\n if (range[0] <= value && range[1] >= value) {\n return range[2];\n }\n }\n }\n return undefined;\n }\n });\n\n // Convenience function\n $.range_map = function(map) {\n return new RangeMap(map);\n };\n\n MouseHandler = createClass({\n init: function (el, options) {\n var $el = $(el);\n this.$el = $el;\n this.options = options;\n this.currentPageX = 0;\n this.currentPageY = 0;\n this.el = el;\n this.splist = [];\n this.tooltip = null;\n this.over = false;\n this.displayTooltips = !options.get('disableTooltips');\n this.highlightEnabled = !options.get('disableHighlight');\n },\n\n registerSparkline: function (sp) {\n this.splist.push(sp);\n if (this.over) {\n this.updateDisplay();\n }\n },\n\n registerCanvas: function (canvas) {\n var $canvas = $(canvas.canvas);\n this.canvas = canvas;\n this.$canvas = $canvas;\n $canvas.mouseenter($.proxy(this.mouseenter, this));\n $canvas.mouseleave($.proxy(this.mouseleave, this));\n $canvas.click($.proxy(this.mouseclick, this));\n },\n\n reset: function (removeTooltip) {\n this.splist = [];\n if (this.tooltip && removeTooltip) {\n this.tooltip.remove();\n this.tooltip = undefined;\n }\n },\n\n mouseclick: function (e) {\n var clickEvent = $.Event('sparklineClick');\n clickEvent.originalEvent = e;\n clickEvent.sparklines = this.splist;\n this.$el.trigger(clickEvent);\n },\n\n mouseenter: function (e) {\n $(document.body).unbind('mousemove.jqs');\n $(document.body).bind('mousemove.jqs', $.proxy(this.mousemove, this));\n this.over = true;\n this.currentPageX = e.pageX;\n this.currentPageY = e.pageY;\n this.currentEl = e.target;\n if (!this.tooltip && this.displayTooltips) {\n this.tooltip = new Tooltip(this.options);\n this.tooltip.updatePosition(e.pageX, e.pageY);\n }\n this.updateDisplay();\n },\n\n mouseleave: function () {\n $(document.body).unbind('mousemove.jqs');\n var splist = this.splist,\n spcount = splist.length,\n needsRefresh = false,\n sp, i;\n this.over = false;\n this.currentEl = null;\n\n if (this.tooltip) {\n this.tooltip.remove();\n this.tooltip = null;\n }\n\n for (i = 0; i < spcount; i++) {\n sp = splist[i];\n if (sp.clearRegionHighlight()) {\n needsRefresh = true;\n }\n }\n\n if (needsRefresh) {\n this.canvas.render();\n }\n },\n\n mousemove: function (e) {\n this.currentPageX = e.pageX;\n this.currentPageY = e.pageY;\n this.currentEl = e.target;\n if (this.tooltip) {\n this.tooltip.updatePosition(e.pageX, e.pageY);\n }\n this.updateDisplay();\n },\n\n updateDisplay: function () {\n var splist = this.splist,\n spcount = splist.length,\n needsRefresh = false,\n offset = this.$canvas.offset(),\n localX = this.currentPageX - offset.left,\n localY = this.currentPageY - offset.top,\n tooltiphtml, sp, i, result, changeEvent;\n if (!this.over) {\n return;\n }\n for (i = 0; i < spcount; i++) {\n sp = splist[i];\n result = sp.setRegionHighlight(this.currentEl, localX, localY);\n if (result) {\n needsRefresh = true;\n }\n }\n if (needsRefresh) {\n changeEvent = $.Event('sparklineRegionChange');\n changeEvent.sparklines = this.splist;\n this.$el.trigger(changeEvent);\n if (this.tooltip) {\n tooltiphtml = '';\n for (i = 0; i < spcount; i++) {\n sp = splist[i];\n tooltiphtml += sp.getCurrentRegionTooltip();\n }\n this.tooltip.setContent(tooltiphtml);\n }\n if (!this.disableHighlight) {\n this.canvas.render();\n }\n }\n if (result === null) {\n this.mouseleave();\n }\n }\n });\n\n\n Tooltip = createClass({\n sizeStyle: 'position: static !important;' +\n 'display: block !important;' +\n 'visibility: hidden !important;' +\n 'float: left !important;',\n\n init: function (options) {\n var tooltipClassname = options.get('tooltipClassname', 'jqstooltip'),\n sizetipStyle = this.sizeStyle,\n offset;\n this.container = options.get('tooltipContainer') || document.body;\n this.tooltipOffsetX = options.get('tooltipOffsetX', 10);\n this.tooltipOffsetY = options.get('tooltipOffsetY', 12);\n // remove any previous lingering tooltip\n $('#jqssizetip').remove();\n $('#jqstooltip').remove();\n this.sizetip = $('
    ', {\n id: 'jqssizetip',\n style: sizetipStyle,\n 'class': tooltipClassname\n });\n this.tooltip = $('
    ', {\n id: 'jqstooltip',\n 'class': tooltipClassname\n }).appendTo(this.container);\n // account for the container's location\n offset = this.tooltip.offset();\n this.offsetLeft = offset.left;\n this.offsetTop = offset.top;\n this.hidden = true;\n $(window).unbind('resize.jqs scroll.jqs');\n $(window).bind('resize.jqs scroll.jqs', $.proxy(this.updateWindowDims, this));\n this.updateWindowDims();\n },\n\n updateWindowDims: function () {\n this.scrollTop = $(window).scrollTop();\n this.scrollLeft = $(window).scrollLeft();\n this.scrollRight = this.scrollLeft + $(window).width();\n this.updatePosition();\n },\n\n getSize: function (content) {\n this.sizetip.html(content).appendTo(this.container);\n this.width = this.sizetip.width() + 1;\n this.height = this.sizetip.height();\n this.sizetip.remove();\n },\n\n setContent: function (content) {\n if (!content) {\n this.tooltip.css('visibility', 'hidden');\n this.hidden = true;\n return;\n }\n this.getSize(content);\n this.tooltip.html(content)\n .css({\n 'width': this.width,\n 'height': this.height,\n 'visibility': 'visible'\n });\n if (this.hidden) {\n this.hidden = false;\n this.updatePosition();\n }\n },\n\n updatePosition: function (x, y) {\n if (x === undefined) {\n if (this.mousex === undefined) {\n return;\n }\n x = this.mousex - this.offsetLeft;\n y = this.mousey - this.offsetTop;\n\n } else {\n this.mousex = x = x - this.offsetLeft;\n this.mousey = y = y - this.offsetTop;\n }\n if (!this.height || !this.width || this.hidden) {\n return;\n }\n\n y -= this.height + this.tooltipOffsetY;\n x += this.tooltipOffsetX;\n\n if (y < this.scrollTop) {\n y = this.scrollTop;\n }\n if (x < this.scrollLeft) {\n x = this.scrollLeft;\n } else if (x + this.width > this.scrollRight) {\n x = this.scrollRight - this.width;\n }\n\n this.tooltip.css({\n 'left': x,\n 'top': y\n });\n },\n\n remove: function () {\n this.tooltip.remove();\n this.sizetip.remove();\n this.sizetip = this.tooltip = undefined;\n $(window).unbind('resize.jqs scroll.jqs');\n }\n });\n\n initStyles = function() {\n addCSS(defaultStyles);\n };\n\n $(initStyles);\n\n pending = [];\n $.fn.sparkline = function (userValues, userOptions) {\n return this.each(function () {\n var options = new $.fn.sparkline.options(this, userOptions),\n $this = $(this),\n render, i;\n render = function () {\n var values, width, height, tmp, mhandler, sp, vals;\n if (userValues === 'html' || userValues === undefined) {\n vals = this.getAttribute(options.get('tagValuesAttribute'));\n if (vals === undefined || vals === null) {\n vals = $this.html();\n }\n values = vals.replace(/(^\\s*\\s*$)|\\s+/g, '').split(',');\n } else {\n values = userValues;\n }\n\n width = options.get('width') === 'auto' ? values.length * options.get('defaultPixelsPerValue') : options.get('width');\n if (options.get('height') === 'auto') {\n if (!options.get('composite') || !$.data(this, '_jqs_vcanvas')) {\n // must be a better way to get the line height\n tmp = document.createElement('span');\n tmp.innerHTML = 'a';\n $this.html(tmp);\n height = $(tmp).innerHeight() || $(tmp).height();\n $(tmp).remove();\n tmp = null;\n }\n } else {\n height = options.get('height');\n }\n\n if (!options.get('disableInteraction')) {\n mhandler = $.data(this, '_jqs_mhandler');\n if (!mhandler) {\n mhandler = new MouseHandler(this, options);\n $.data(this, '_jqs_mhandler', mhandler);\n } else if (!options.get('composite')) {\n mhandler.reset();\n }\n } else {\n mhandler = false;\n }\n\n if (options.get('composite') && !$.data(this, '_jqs_vcanvas')) {\n if (!$.data(this, '_jqs_errnotify')) {\n alert('Attempted to attach a composite sparkline to an element with no existing sparkline');\n $.data(this, '_jqs_errnotify', true);\n }\n return;\n }\n\n sp = new $.fn.sparkline[options.get('type')](this, values, options, width, height);\n\n sp.render();\n\n if (mhandler) {\n mhandler.registerSparkline(sp);\n }\n };\n if (($(this).html() && !options.get('disableHiddenCheck') && $(this).is(':hidden')) || !$(this).parents('body').length) {\n if (!options.get('composite') && $.data(this, '_jqs_pending')) {\n // remove any existing references to the element\n for (i = pending.length; i; i--) {\n if (pending[i - 1][0] == this) {\n pending.splice(i - 1, 1);\n }\n }\n }\n pending.push([this, render]);\n $.data(this, '_jqs_pending', true);\n } else {\n render.call(this);\n }\n });\n };\n\n $.fn.sparkline.defaults = getDefaults();\n\n\n $.sparkline_display_visible = function () {\n var el, i, pl;\n var done = [];\n for (i = 0, pl = pending.length; i < pl; i++) {\n el = pending[i][0];\n if ($(el).is(':visible') && !$(el).parents().is(':hidden')) {\n pending[i][1].call(el);\n $.data(pending[i][0], '_jqs_pending', false);\n done.push(i);\n } else if (!$(el).closest('html').length && !$.data(el, '_jqs_pending')) {\n // element has been inserted and removed from the DOM\n // If it was not yet inserted into the dom then the .data request\n // will return true.\n // removing from the dom causes the data to be removed.\n $.data(pending[i][0], '_jqs_pending', false);\n done.push(i);\n }\n }\n for (i = done.length; i; i--) {\n pending.splice(done[i - 1], 1);\n }\n };\n\n\n /**\n * User option handler\n */\n $.fn.sparkline.options = createClass({\n init: function (tag, userOptions) {\n var extendedOptions, defaults, base, tagOptionType;\n this.userOptions = userOptions = userOptions || {};\n this.tag = tag;\n this.tagValCache = {};\n defaults = $.fn.sparkline.defaults;\n base = defaults.common;\n this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix);\n\n tagOptionType = this.getTagSetting('type');\n if (tagOptionType === UNSET_OPTION) {\n extendedOptions = defaults[userOptions.type || base.type];\n } else {\n extendedOptions = defaults[tagOptionType];\n }\n this.mergedOptions = $.extend({}, base, extendedOptions, userOptions);\n },\n\n\n getTagSetting: function (key) {\n var prefix = this.tagOptionsPrefix,\n val, i, pairs, keyval;\n if (prefix === false || prefix === undefined) {\n return UNSET_OPTION;\n }\n if (this.tagValCache.hasOwnProperty(key)) {\n val = this.tagValCache.key;\n } else {\n val = this.tag.getAttribute(prefix + key);\n if (val === undefined || val === null) {\n val = UNSET_OPTION;\n } else if (val.substr(0, 1) === '[') {\n val = val.substr(1, val.length - 2).split(',');\n for (i = val.length; i--;) {\n val[i] = normalizeValue(val[i].replace(/(^\\s*)|(\\s*$)/g, ''));\n }\n } else if (val.substr(0, 1) === '{') {\n pairs = val.substr(1, val.length - 2).split(',');\n val = {};\n for (i = pairs.length; i--;) {\n keyval = pairs[i].split(':', 2);\n val[keyval[0].replace(/(^\\s*)|(\\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\\s*)|(\\s*$)/g, ''));\n }\n } else {\n val = normalizeValue(val);\n }\n this.tagValCache.key = val;\n }\n return val;\n },\n\n get: function (key, defaultval) {\n var tagOption = this.getTagSetting(key),\n result;\n if (tagOption !== UNSET_OPTION) {\n return tagOption;\n }\n return (result = this.mergedOptions[key]) === undefined ? defaultval : result;\n }\n });\n\n\n $.fn.sparkline._base = createClass({\n disabled: false,\n\n init: function (el, values, options, width, height) {\n this.el = el;\n this.$el = $(el);\n this.values = values;\n this.options = options;\n this.width = width;\n this.height = height;\n this.currentRegion = undefined;\n },\n\n /**\n * Setup the canvas\n */\n initTarget: function () {\n var interactive = !this.options.get('disableInteraction');\n if (!(this.target = this.$el.simpledraw(this.width, this.height, this.options.get('composite'), interactive))) {\n this.disabled = true;\n } else {\n this.canvasWidth = this.target.pixelWidth;\n this.canvasHeight = this.target.pixelHeight;\n }\n },\n\n /**\n * Actually render the chart to the canvas\n */\n render: function () {\n if (this.disabled) {\n this.el.innerHTML = '';\n return false;\n }\n return true;\n },\n\n /**\n * Return a region id for a given x/y co-ordinate\n */\n getRegion: function (x, y) {\n },\n\n /**\n * Highlight an item based on the moused-over x,y co-ordinate\n */\n setRegionHighlight: function (el, x, y) {\n var currentRegion = this.currentRegion,\n highlightEnabled = !this.options.get('disableHighlight'),\n newRegion;\n if (x > this.canvasWidth || y > this.canvasHeight || x < 0 || y < 0) {\n return null;\n }\n newRegion = this.getRegion(el, x, y);\n if (currentRegion !== newRegion) {\n if (currentRegion !== undefined && highlightEnabled) {\n this.removeHighlight();\n }\n this.currentRegion = newRegion;\n if (newRegion !== undefined && highlightEnabled) {\n this.renderHighlight();\n }\n return true;\n }\n return false;\n },\n\n /**\n * Reset any currently highlighted item\n */\n clearRegionHighlight: function () {\n if (this.currentRegion !== undefined) {\n this.removeHighlight();\n this.currentRegion = undefined;\n return true;\n }\n return false;\n },\n\n renderHighlight: function () {\n this.changeHighlight(true);\n },\n\n removeHighlight: function () {\n this.changeHighlight(false);\n },\n\n changeHighlight: function (highlight) {},\n\n /**\n * Fetch the HTML to display as a tooltip\n */\n getCurrentRegionTooltip: function () {\n var options = this.options,\n header = '',\n entries = [],\n fields, formats, formatlen, fclass, text, i,\n showFields, showFieldsKey, newFields, fv,\n formatter, format, fieldlen, j;\n if (this.currentRegion === undefined) {\n return '';\n }\n fields = this.getCurrentRegionFields();\n formatter = options.get('tooltipFormatter');\n if (formatter) {\n return formatter(this, options, fields);\n }\n if (options.get('tooltipChartTitle')) {\n header += '
    ' + options.get('tooltipChartTitle') + '
    \\n';\n }\n formats = this.options.get('tooltipFormat');\n if (!formats) {\n return '';\n }\n if (!$.isArray(formats)) {\n formats = [formats];\n }\n if (!$.isArray(fields)) {\n fields = [fields];\n }\n showFields = this.options.get('tooltipFormatFieldlist');\n showFieldsKey = this.options.get('tooltipFormatFieldlistKey');\n if (showFields && showFieldsKey) {\n // user-selected ordering of fields\n newFields = [];\n for (i = fields.length; i--;) {\n fv = fields[i][showFieldsKey];\n if ((j = $.inArray(fv, showFields)) != -1) {\n newFields[j] = fields[i];\n }\n }\n fields = newFields;\n }\n formatlen = formats.length;\n fieldlen = fields.length;\n for (i = 0; i < formatlen; i++) {\n format = formats[i];\n if (typeof format === 'string') {\n format = new SPFormat(format);\n }\n fclass = format.fclass || 'jqsfield';\n for (j = 0; j < fieldlen; j++) {\n if (!fields[j].isNull || !options.get('tooltipSkipNull')) {\n $.extend(fields[j], {\n prefix: options.get('tooltipPrefix'),\n suffix: options.get('tooltipSuffix')\n });\n text = format.render(fields[j], options.get('tooltipValueLookups'), options);\n entries.push('
    ' + text + '
    ');\n }\n }\n }\n if (entries.length) {\n return header + entries.join('\\n');\n }\n return '';\n },\n\n getCurrentRegionFields: function () {},\n\n calcHighlightColor: function (color, options) {\n var highlightColor = options.get('highlightColor'),\n lighten = options.get('highlightLighten'),\n parse, mult, rgbnew, i;\n if (highlightColor) {\n return highlightColor;\n }\n if (lighten) {\n // extract RGB values\n parse = /^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(color) || /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color);\n if (parse) {\n rgbnew = [];\n mult = color.length === 4 ? 16 : 1;\n for (i = 0; i < 3; i++) {\n rgbnew[i] = clipval(Math.round(parseInt(parse[i + 1], 16) * mult * lighten), 0, 255);\n }\n return 'rgb(' + rgbnew.join(',') + ')';\n }\n\n }\n return color;\n }\n\n });\n\n barHighlightMixin = {\n changeHighlight: function (highlight) {\n var currentRegion = this.currentRegion,\n target = this.target,\n shapeids = this.regionShapes[currentRegion],\n newShapes;\n // will be null if the region value was null\n if (shapeids) {\n newShapes = this.renderRegion(currentRegion, highlight);\n if ($.isArray(newShapes) || $.isArray(shapeids)) {\n target.replaceWithShapes(shapeids, newShapes);\n this.regionShapes[currentRegion] = $.map(newShapes, function (newShape) {\n return newShape.id;\n });\n } else {\n target.replaceWithShape(shapeids, newShapes);\n this.regionShapes[currentRegion] = newShapes.id;\n }\n }\n },\n\n render: function () {\n var values = this.values,\n target = this.target,\n regionShapes = this.regionShapes,\n shapes, ids, i, j;\n\n if (!this.cls._super.render.call(this)) {\n return;\n }\n for (i = values.length; i--;) {\n shapes = this.renderRegion(i);\n if (shapes) {\n if ($.isArray(shapes)) {\n ids = [];\n for (j = shapes.length; j--;) {\n shapes[j].append();\n ids.push(shapes[j].id);\n }\n regionShapes[i] = ids;\n } else {\n shapes.append();\n regionShapes[i] = shapes.id; // store just the shapeid\n }\n } else {\n // null value\n regionShapes[i] = null;\n }\n }\n target.render();\n }\n };\n\n /**\n * Line charts\n */\n $.fn.sparkline.line = line = createClass($.fn.sparkline._base, {\n type: 'line',\n\n init: function (el, values, options, width, height) {\n line._super.init.call(this, el, values, options, width, height);\n this.vertices = [];\n this.regionMap = [];\n this.xvalues = [];\n this.yvalues = [];\n this.yminmax = [];\n this.hightlightSpotId = null;\n this.lastShapeId = null;\n this.initTarget();\n },\n\n getRegion: function (el, x, y) {\n var i,\n regionMap = this.regionMap; // maps regions to value positions\n for (i = regionMap.length; i--;) {\n if (regionMap[i] !== null && x >= regionMap[i][0] && x <= regionMap[i][1]) {\n return regionMap[i][2];\n }\n }\n return undefined;\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion;\n return {\n isNull: this.yvalues[currentRegion] === null,\n x: this.xvalues[currentRegion],\n y: this.yvalues[currentRegion],\n color: this.options.get('lineColor'),\n fillColor: this.options.get('fillColor'),\n offset: currentRegion\n };\n },\n\n renderHighlight: function () {\n var currentRegion = this.currentRegion,\n target = this.target,\n vertex = this.vertices[currentRegion],\n options = this.options,\n spotRadius = options.get('spotRadius'),\n highlightSpotColor = options.get('highlightSpotColor'),\n highlightLineColor = options.get('highlightLineColor'),\n highlightSpot, highlightLine;\n\n if (!vertex) {\n return;\n }\n if (spotRadius && highlightSpotColor) {\n highlightSpot = target.drawCircle(vertex[0], vertex[1],\n spotRadius, undefined, highlightSpotColor);\n this.highlightSpotId = highlightSpot.id;\n target.insertAfterShape(this.lastShapeId, highlightSpot);\n }\n if (highlightLineColor) {\n highlightLine = target.drawLine(vertex[0], this.canvasTop, vertex[0],\n this.canvasTop + this.canvasHeight, highlightLineColor);\n this.highlightLineId = highlightLine.id;\n target.insertAfterShape(this.lastShapeId, highlightLine);\n }\n },\n\n removeHighlight: function () {\n var target = this.target;\n if (this.highlightSpotId) {\n target.removeShapeId(this.highlightSpotId);\n this.highlightSpotId = null;\n }\n if (this.highlightLineId) {\n target.removeShapeId(this.highlightLineId);\n this.highlightLineId = null;\n }\n },\n\n scanValues: function () {\n var values = this.values,\n valcount = values.length,\n xvalues = this.xvalues,\n yvalues = this.yvalues,\n yminmax = this.yminmax,\n i, val, isStr, isArray, sp;\n for (i = 0; i < valcount; i++) {\n val = values[i];\n isStr = typeof(values[i]) === 'string';\n isArray = typeof(values[i]) === 'object' && values[i] instanceof Array;\n sp = isStr && values[i].split(':');\n if (isStr && sp.length === 2) { // x:y\n xvalues.push(Number(sp[0]));\n yvalues.push(Number(sp[1]));\n yminmax.push(Number(sp[1]));\n } else if (isArray) {\n xvalues.push(val[0]);\n yvalues.push(val[1]);\n yminmax.push(val[1]);\n } else {\n xvalues.push(i);\n if (values[i] === null || values[i] === 'null') {\n yvalues.push(null);\n } else {\n yvalues.push(Number(val));\n yminmax.push(Number(val));\n }\n }\n }\n if (this.options.get('xvalues')) {\n xvalues = this.options.get('xvalues');\n }\n\n this.maxy = this.maxyorg = Math.max.apply(Math, yminmax);\n this.miny = this.minyorg = Math.min.apply(Math, yminmax);\n\n this.maxx = Math.max.apply(Math, xvalues);\n this.minx = Math.min.apply(Math, xvalues);\n\n this.xvalues = xvalues;\n this.yvalues = yvalues;\n this.yminmax = yminmax;\n\n },\n\n processRangeOptions: function () {\n var options = this.options,\n normalRangeMin = options.get('normalRangeMin'),\n normalRangeMax = options.get('normalRangeMax');\n\n if (normalRangeMin !== undefined) {\n if (normalRangeMin < this.miny) {\n this.miny = normalRangeMin;\n }\n if (normalRangeMax > this.maxy) {\n this.maxy = normalRangeMax;\n }\n }\n if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.miny)) {\n this.miny = options.get('chartRangeMin');\n }\n if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.maxy)) {\n this.maxy = options.get('chartRangeMax');\n }\n if (options.get('chartRangeMinX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMinX') < this.minx)) {\n this.minx = options.get('chartRangeMinX');\n }\n if (options.get('chartRangeMaxX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMaxX') > this.maxx)) {\n this.maxx = options.get('chartRangeMaxX');\n }\n\n },\n\n drawNormalRange: function (canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey) {\n var normalRangeMin = this.options.get('normalRangeMin'),\n normalRangeMax = this.options.get('normalRangeMax'),\n ytop = canvasTop + Math.round(canvasHeight - (canvasHeight * ((normalRangeMax - this.miny) / rangey))),\n height = Math.round((canvasHeight * (normalRangeMax - normalRangeMin)) / rangey);\n this.target.drawRect(canvasLeft, ytop, canvasWidth, height, undefined, this.options.get('normalRangeColor')).append();\n },\n\n render: function () {\n var options = this.options,\n target = this.target,\n canvasWidth = this.canvasWidth,\n canvasHeight = this.canvasHeight,\n vertices = this.vertices,\n spotRadius = options.get('spotRadius'),\n regionMap = this.regionMap,\n rangex, rangey, yvallast,\n canvasTop, canvasLeft,\n vertex, path, paths, x, y, xnext, xpos, xposnext,\n last, next, yvalcount, lineShapes, fillShapes, plen,\n valueSpots, hlSpotsEnabled, color, xvalues, yvalues, i;\n\n if (!line._super.render.call(this)) {\n return;\n }\n\n this.scanValues();\n this.processRangeOptions();\n\n xvalues = this.xvalues;\n yvalues = this.yvalues;\n\n if (!this.yminmax.length || this.yvalues.length < 2) {\n // empty or all null valuess\n return;\n }\n\n canvasTop = canvasLeft = 0;\n\n rangex = this.maxx - this.minx === 0 ? 1 : this.maxx - this.minx;\n rangey = this.maxy - this.miny === 0 ? 1 : this.maxy - this.miny;\n yvallast = this.yvalues.length - 1;\n\n if (spotRadius && (canvasWidth < (spotRadius * 4) || canvasHeight < (spotRadius * 4))) {\n spotRadius = 0;\n }\n if (spotRadius) {\n // adjust the canvas size as required so that spots will fit\n hlSpotsEnabled = options.get('highlightSpotColor') && !options.get('disableInteraction');\n if (hlSpotsEnabled || options.get('minSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.miny)) {\n canvasHeight -= Math.ceil(spotRadius);\n }\n if (hlSpotsEnabled || options.get('maxSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.maxy)) {\n canvasHeight -= Math.ceil(spotRadius);\n canvasTop += Math.ceil(spotRadius);\n }\n if (hlSpotsEnabled ||\n ((options.get('minSpotColor') || options.get('maxSpotColor')) && (yvalues[0] === this.miny || yvalues[0] === this.maxy))) {\n canvasLeft += Math.ceil(spotRadius);\n canvasWidth -= Math.ceil(spotRadius);\n }\n if (hlSpotsEnabled || options.get('spotColor') ||\n (options.get('minSpotColor') || options.get('maxSpotColor') &&\n (yvalues[yvallast] === this.miny || yvalues[yvallast] === this.maxy))) {\n canvasWidth -= Math.ceil(spotRadius);\n }\n }\n\n\n canvasHeight--;\n\n if (options.get('normalRangeMin') !== undefined && !options.get('drawNormalOnTop')) {\n this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n }\n\n path = [];\n paths = [path];\n last = next = null;\n yvalcount = yvalues.length;\n for (i = 0; i < yvalcount; i++) {\n x = xvalues[i];\n xnext = xvalues[i + 1];\n y = yvalues[i];\n xpos = canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex));\n xposnext = i < yvalcount - 1 ? canvasLeft + Math.round((xnext - this.minx) * (canvasWidth / rangex)) : canvasWidth;\n next = xpos + ((xposnext - xpos) / 2);\n regionMap[i] = [last || 0, next, i];\n last = next;\n if (y === null) {\n if (i) {\n if (yvalues[i - 1] !== null) {\n path = [];\n paths.push(path);\n }\n vertices.push(null);\n }\n } else {\n if (y < this.miny) {\n y = this.miny;\n }\n if (y > this.maxy) {\n y = this.maxy;\n }\n if (!path.length) {\n // previous value was null\n path.push([xpos, canvasTop + canvasHeight]);\n }\n vertex = [xpos, canvasTop + Math.round(canvasHeight - (canvasHeight * ((y - this.miny) / rangey)))];\n path.push(vertex);\n vertices.push(vertex);\n }\n }\n\n lineShapes = [];\n fillShapes = [];\n plen = paths.length;\n for (i = 0; i < plen; i++) {\n path = paths[i];\n if (path.length) {\n if (options.get('fillColor')) {\n path.push([path[path.length - 1][0], (canvasTop + canvasHeight)]);\n fillShapes.push(path.slice(0));\n path.pop();\n }\n // if there's only a single point in this path, then we want to display it\n // as a vertical line which means we keep path[0] as is\n if (path.length > 2) {\n // else we want the first value\n path[0] = [path[0][0], path[1][1]];\n }\n lineShapes.push(path);\n }\n }\n\n // draw the fill first, then optionally the normal range, then the line on top of that\n plen = fillShapes.length;\n for (i = 0; i < plen; i++) {\n target.drawShape(fillShapes[i],\n options.get('fillColor'), options.get('fillColor')).append();\n }\n\n if (options.get('normalRangeMin') !== undefined && options.get('drawNormalOnTop')) {\n this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);\n }\n\n plen = lineShapes.length;\n for (i = 0; i < plen; i++) {\n target.drawShape(lineShapes[i], options.get('lineColor'), undefined,\n options.get('lineWidth')).append();\n }\n\n if (spotRadius && options.get('valueSpots')) {\n valueSpots = options.get('valueSpots');\n if (valueSpots.get === undefined) {\n valueSpots = new RangeMap(valueSpots);\n }\n for (i = 0; i < yvalcount; i++) {\n color = valueSpots.get(yvalues[i]);\n if (color) {\n target.drawCircle(canvasLeft + Math.round((xvalues[i] - this.minx) * (canvasWidth / rangex)),\n canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[i] - this.miny) / rangey))),\n spotRadius, undefined,\n color).append();\n }\n }\n\n }\n if (spotRadius && options.get('spotColor') && yvalues[yvallast] !== null) {\n target.drawCircle(canvasLeft + Math.round((xvalues[xvalues.length - 1] - this.minx) * (canvasWidth / rangex)),\n canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[yvallast] - this.miny) / rangey))),\n spotRadius, undefined,\n options.get('spotColor')).append();\n }\n if (this.maxy !== this.minyorg) {\n if (spotRadius && options.get('minSpotColor')) {\n x = xvalues[$.inArray(this.minyorg, yvalues)];\n target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.minyorg - this.miny) / rangey))),\n spotRadius, undefined,\n options.get('minSpotColor')).append();\n }\n if (spotRadius && options.get('maxSpotColor')) {\n x = xvalues[$.inArray(this.maxyorg, yvalues)];\n target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),\n canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.maxyorg - this.miny) / rangey))),\n spotRadius, undefined,\n options.get('maxSpotColor')).append();\n }\n }\n\n this.lastShapeId = target.getLastShapeId();\n this.canvasTop = canvasTop;\n target.render();\n }\n });\n\n /**\n * Bar charts\n */\n $.fn.sparkline.bar = bar = createClass($.fn.sparkline._base, barHighlightMixin, {\n type: 'bar',\n\n init: function (el, values, options, width, height) {\n var barWidth = parseInt(options.get('barWidth'), 10),\n barSpacing = parseInt(options.get('barSpacing'), 10),\n chartRangeMin = options.get('chartRangeMin'),\n chartRangeMax = options.get('chartRangeMax'),\n chartRangeClip = options.get('chartRangeClip'),\n stackMin = Infinity,\n stackMax = -Infinity,\n isStackString, groupMin, groupMax, stackRanges,\n numValues, i, vlen, range, zeroAxis, xaxisOffset, min, max, clipMin, clipMax,\n stacked, vlist, j, slen, svals, val, yoffset, yMaxCalc, canvasHeightEf;\n bar._super.init.call(this, el, values, options, width, height);\n\n // scan values to determine whether to stack bars\n for (i = 0, vlen = values.length; i < vlen; i++) {\n val = values[i];\n isStackString = typeof(val) === 'string' && val.indexOf(':') > -1;\n if (isStackString || $.isArray(val)) {\n stacked = true;\n if (isStackString) {\n val = values[i] = normalizeValues(val.split(':'));\n }\n val = remove(val, null); // min/max will treat null as zero\n groupMin = Math.min.apply(Math, val);\n groupMax = Math.max.apply(Math, val);\n if (groupMin < stackMin) {\n stackMin = groupMin;\n }\n if (groupMax > stackMax) {\n stackMax = groupMax;\n }\n }\n }\n\n this.stacked = stacked;\n this.regionShapes = {};\n this.barWidth = barWidth;\n this.barSpacing = barSpacing;\n this.totalBarWidth = barWidth + barSpacing;\n this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n this.initTarget();\n\n if (chartRangeClip) {\n clipMin = chartRangeMin === undefined ? -Infinity : chartRangeMin;\n clipMax = chartRangeMax === undefined ? Infinity : chartRangeMax;\n }\n\n numValues = [];\n stackRanges = stacked ? [] : numValues;\n var stackTotals = [];\n var stackRangesNeg = [];\n for (i = 0, vlen = values.length; i < vlen; i++) {\n if (stacked) {\n vlist = values[i];\n values[i] = svals = [];\n stackTotals[i] = 0;\n stackRanges[i] = stackRangesNeg[i] = 0;\n for (j = 0, slen = vlist.length; j < slen; j++) {\n val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j];\n if (val !== null) {\n if (val > 0) {\n stackTotals[i] += val;\n }\n if (stackMin < 0 && stackMax > 0) {\n if (val < 0) {\n stackRangesNeg[i] += Math.abs(val);\n } else {\n stackRanges[i] += val;\n }\n } else {\n stackRanges[i] += Math.abs(val - (val < 0 ? stackMax : stackMin));\n }\n numValues.push(val);\n }\n }\n } else {\n val = chartRangeClip ? clipval(values[i], clipMin, clipMax) : values[i];\n val = values[i] = normalizeValue(val);\n if (val !== null) {\n numValues.push(val);\n }\n }\n }\n this.max = max = Math.max.apply(Math, numValues);\n this.min = min = Math.min.apply(Math, numValues);\n this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max;\n this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min;\n\n if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < min)) {\n min = options.get('chartRangeMin');\n }\n if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > max)) {\n max = options.get('chartRangeMax');\n }\n\n this.zeroAxis = zeroAxis = options.get('zeroAxis', true);\n if (min <= 0 && max >= 0 && zeroAxis) {\n xaxisOffset = 0;\n } else if (zeroAxis == false) {\n xaxisOffset = min;\n } else if (min > 0) {\n xaxisOffset = min;\n } else {\n xaxisOffset = max;\n }\n this.xaxisOffset = xaxisOffset;\n\n range = stacked ? (Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg)) : max - min;\n\n // as we plot zero/min values a single pixel line, we add a pixel to all other\n // values - Reduce the effective canvas size to suit\n this.canvasHeightEf = (zeroAxis && min < 0) ? this.canvasHeight - 2 : this.canvasHeight - 1;\n\n if (min < xaxisOffset) {\n yMaxCalc = (stacked && max >= 0) ? stackMax : max;\n yoffset = (yMaxCalc - xaxisOffset) / range * this.canvasHeight;\n if (yoffset !== Math.ceil(yoffset)) {\n this.canvasHeightEf -= 2;\n yoffset = Math.ceil(yoffset);\n }\n } else {\n yoffset = this.canvasHeight;\n }\n this.yoffset = yoffset;\n\n if ($.isArray(options.get('colorMap'))) {\n this.colorMapByIndex = options.get('colorMap');\n this.colorMapByValue = null;\n } else {\n this.colorMapByIndex = null;\n this.colorMapByValue = options.get('colorMap');\n if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n this.colorMapByValue = new RangeMap(this.colorMapByValue);\n }\n }\n\n this.range = range;\n },\n\n getRegion: function (el, x, y) {\n var result = Math.floor(x / this.totalBarWidth);\n return (result < 0 || result >= this.values.length) ? undefined : result;\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion,\n values = ensureArray(this.values[currentRegion]),\n result = [],\n value, i;\n for (i = values.length; i--;) {\n value = values[i];\n result.push({\n isNull: value === null,\n value: value,\n color: this.calcColor(i, value, currentRegion),\n offset: currentRegion\n });\n }\n return result;\n },\n\n calcColor: function (stacknum, value, valuenum) {\n var colorMapByIndex = this.colorMapByIndex,\n colorMapByValue = this.colorMapByValue,\n options = this.options,\n color, newColor;\n if (this.stacked) {\n color = options.get('stackedBarColor');\n } else {\n color = (value < 0) ? options.get('negBarColor') : options.get('barColor');\n }\n if (value === 0 && options.get('zeroColor') !== undefined) {\n color = options.get('zeroColor');\n }\n if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n color = newColor;\n } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n color = colorMapByIndex[valuenum];\n }\n return $.isArray(color) ? color[stacknum % color.length] : color;\n },\n\n /**\n * Render bar(s) for a region\n */\n renderRegion: function (valuenum, highlight) {\n var vals = this.values[valuenum],\n options = this.options,\n xaxisOffset = this.xaxisOffset,\n result = [],\n range = this.range,\n stacked = this.stacked,\n target = this.target,\n x = valuenum * this.totalBarWidth,\n canvasHeightEf = this.canvasHeightEf,\n yoffset = this.yoffset,\n y, height, color, isNull, yoffsetNeg, i, valcount, val, minPlotted, allMin;\n\n vals = $.isArray(vals) ? vals : [vals];\n valcount = vals.length;\n val = vals[0];\n isNull = all(null, vals);\n allMin = all(xaxisOffset, vals, true);\n\n if (isNull) {\n if (options.get('nullColor')) {\n color = highlight ? options.get('nullColor') : this.calcHighlightColor(options.get('nullColor'), options);\n y = (yoffset > 0) ? yoffset - 1 : yoffset;\n return target.drawRect(x, y, this.barWidth - 1, 0, color, color);\n } else {\n return undefined;\n }\n }\n yoffsetNeg = yoffset;\n for (i = 0; i < valcount; i++) {\n val = vals[i];\n\n if (stacked && val === xaxisOffset) {\n if (!allMin || minPlotted) {\n continue;\n }\n minPlotted = true;\n }\n\n if (range > 0) {\n height = Math.floor(canvasHeightEf * ((Math.abs(val - xaxisOffset) / range))) + 1;\n } else {\n height = 1;\n }\n if (val < xaxisOffset || (val === xaxisOffset && yoffset === 0)) {\n y = yoffsetNeg;\n yoffsetNeg += height;\n } else {\n y = yoffset - height;\n yoffset -= height;\n }\n color = this.calcColor(i, val, valuenum);\n if (highlight) {\n color = this.calcHighlightColor(color, options);\n }\n result.push(target.drawRect(x, y, this.barWidth - 1, height - 1, color, color));\n }\n if (result.length === 1) {\n return result[0];\n }\n return result;\n }\n });\n\n /**\n * Tristate charts\n */\n $.fn.sparkline.tristate = tristate = createClass($.fn.sparkline._base, barHighlightMixin, {\n type: 'tristate',\n\n init: function (el, values, options, width, height) {\n var barWidth = parseInt(options.get('barWidth'), 10),\n barSpacing = parseInt(options.get('barSpacing'), 10);\n tristate._super.init.call(this, el, values, options, width, height);\n\n this.regionShapes = {};\n this.barWidth = barWidth;\n this.barSpacing = barSpacing;\n this.totalBarWidth = barWidth + barSpacing;\n this.values = $.map(values, Number);\n this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);\n\n if ($.isArray(options.get('colorMap'))) {\n this.colorMapByIndex = options.get('colorMap');\n this.colorMapByValue = null;\n } else {\n this.colorMapByIndex = null;\n this.colorMapByValue = options.get('colorMap');\n if (this.colorMapByValue && this.colorMapByValue.get === undefined) {\n this.colorMapByValue = new RangeMap(this.colorMapByValue);\n }\n }\n this.initTarget();\n },\n\n getRegion: function (el, x, y) {\n return Math.floor(x / this.totalBarWidth);\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion;\n return {\n isNull: this.values[currentRegion] === undefined,\n value: this.values[currentRegion],\n color: this.calcColor(this.values[currentRegion], currentRegion),\n offset: currentRegion\n };\n },\n\n calcColor: function (value, valuenum) {\n var values = this.values,\n options = this.options,\n colorMapByIndex = this.colorMapByIndex,\n colorMapByValue = this.colorMapByValue,\n color, newColor;\n\n if (colorMapByValue && (newColor = colorMapByValue.get(value))) {\n color = newColor;\n } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {\n color = colorMapByIndex[valuenum];\n } else if (values[valuenum] < 0) {\n color = options.get('negBarColor');\n } else if (values[valuenum] > 0) {\n color = options.get('posBarColor');\n } else {\n color = options.get('zeroBarColor');\n }\n return color;\n },\n\n renderRegion: function (valuenum, highlight) {\n var values = this.values,\n options = this.options,\n target = this.target,\n canvasHeight, height, halfHeight,\n x, y, color;\n\n canvasHeight = target.pixelHeight;\n halfHeight = Math.round(canvasHeight / 2);\n\n x = valuenum * this.totalBarWidth;\n if (values[valuenum] < 0) {\n y = halfHeight;\n height = halfHeight - 1;\n } else if (values[valuenum] > 0) {\n y = 0;\n height = halfHeight - 1;\n } else {\n y = halfHeight - 1;\n height = 2;\n }\n color = this.calcColor(values[valuenum], valuenum);\n if (color === null) {\n return;\n }\n if (highlight) {\n color = this.calcHighlightColor(color, options);\n }\n return target.drawRect(x, y, this.barWidth - 1, height - 1, color, color);\n }\n });\n\n /**\n * Discrete charts\n */\n $.fn.sparkline.discrete = discrete = createClass($.fn.sparkline._base, barHighlightMixin, {\n type: 'discrete',\n\n init: function (el, values, options, width, height) {\n discrete._super.init.call(this, el, values, options, width, height);\n\n this.regionShapes = {};\n this.values = values = $.map(values, Number);\n this.min = Math.min.apply(Math, values);\n this.max = Math.max.apply(Math, values);\n this.range = this.max - this.min;\n this.width = width = options.get('width') === 'auto' ? values.length * 2 : this.width;\n this.interval = Math.floor(width / values.length);\n this.itemWidth = width / values.length;\n if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.min)) {\n this.min = options.get('chartRangeMin');\n }\n if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.max)) {\n this.max = options.get('chartRangeMax');\n }\n this.initTarget();\n if (this.target) {\n this.lineHeight = options.get('lineHeight') === 'auto' ? Math.round(this.canvasHeight * 0.3) : options.get('lineHeight');\n }\n },\n\n getRegion: function (el, x, y) {\n return Math.floor(x / this.itemWidth);\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion;\n return {\n isNull: this.values[currentRegion] === undefined,\n value: this.values[currentRegion],\n offset: currentRegion\n };\n },\n\n renderRegion: function (valuenum, highlight) {\n var values = this.values,\n options = this.options,\n min = this.min,\n max = this.max,\n range = this.range,\n interval = this.interval,\n target = this.target,\n canvasHeight = this.canvasHeight,\n lineHeight = this.lineHeight,\n pheight = canvasHeight - lineHeight,\n ytop, val, color, x;\n\n val = clipval(values[valuenum], min, max);\n x = valuenum * interval;\n ytop = Math.round(pheight - pheight * ((val - min) / range));\n color = (options.get('thresholdColor') && val < options.get('thresholdValue')) ? options.get('thresholdColor') : options.get('lineColor');\n if (highlight) {\n color = this.calcHighlightColor(color, options);\n }\n return target.drawLine(x, ytop, x, ytop + lineHeight, color);\n }\n });\n\n /**\n * Bullet charts\n */\n $.fn.sparkline.bullet = bullet = createClass($.fn.sparkline._base, {\n type: 'bullet',\n\n init: function (el, values, options, width, height) {\n var min, max, vals;\n bullet._super.init.call(this, el, values, options, width, height);\n\n // values: target, performance, range1, range2, range3\n this.values = values = normalizeValues(values);\n // target or performance could be null\n vals = values.slice();\n vals[0] = vals[0] === null ? vals[2] : vals[0];\n vals[1] = values[1] === null ? vals[2] : vals[1];\n min = Math.min.apply(Math, values);\n max = Math.max.apply(Math, values);\n if (options.get('base') === undefined) {\n min = min < 0 ? min : 0;\n } else {\n min = options.get('base');\n }\n this.min = min;\n this.max = max;\n this.range = max - min;\n this.shapes = {};\n this.valueShapes = {};\n this.regiondata = {};\n this.width = width = options.get('width') === 'auto' ? '4.0em' : width;\n this.target = this.$el.simpledraw(width, height, options.get('composite'));\n if (!values.length) {\n this.disabled = true;\n }\n this.initTarget();\n },\n\n getRegion: function (el, x, y) {\n var shapeid = this.target.getShapeAt(el, x, y);\n return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion;\n return {\n fieldkey: currentRegion.substr(0, 1),\n value: this.values[currentRegion.substr(1)],\n region: currentRegion\n };\n },\n\n changeHighlight: function (highlight) {\n var currentRegion = this.currentRegion,\n shapeid = this.valueShapes[currentRegion],\n shape;\n delete this.shapes[shapeid];\n switch (currentRegion.substr(0, 1)) {\n case 'r':\n shape = this.renderRange(currentRegion.substr(1), highlight);\n break;\n case 'p':\n shape = this.renderPerformance(highlight);\n break;\n case 't':\n shape = this.renderTarget(highlight);\n break;\n }\n this.valueShapes[currentRegion] = shape.id;\n this.shapes[shape.id] = currentRegion;\n this.target.replaceWithShape(shapeid, shape);\n },\n\n renderRange: function (rn, highlight) {\n var rangeval = this.values[rn],\n rangewidth = Math.round(this.canvasWidth * ((rangeval - this.min) / this.range)),\n color = this.options.get('rangeColors')[rn - 2];\n if (highlight) {\n color = this.calcHighlightColor(color, this.options);\n }\n return this.target.drawRect(0, 0, rangewidth - 1, this.canvasHeight - 1, color, color);\n },\n\n renderPerformance: function (highlight) {\n var perfval = this.values[1],\n perfwidth = Math.round(this.canvasWidth * ((perfval - this.min) / this.range)),\n color = this.options.get('performanceColor');\n if (highlight) {\n color = this.calcHighlightColor(color, this.options);\n }\n return this.target.drawRect(0, Math.round(this.canvasHeight * 0.3), perfwidth - 1,\n Math.round(this.canvasHeight * 0.4) - 1, color, color);\n },\n\n renderTarget: function (highlight) {\n var targetval = this.values[0],\n x = Math.round(this.canvasWidth * ((targetval - this.min) / this.range) - (this.options.get('targetWidth') / 2)),\n targettop = Math.round(this.canvasHeight * 0.10),\n targetheight = this.canvasHeight - (targettop * 2),\n color = this.options.get('targetColor');\n if (highlight) {\n color = this.calcHighlightColor(color, this.options);\n }\n return this.target.drawRect(x, targettop, this.options.get('targetWidth') - 1, targetheight - 1, color, color);\n },\n\n render: function () {\n var vlen = this.values.length,\n target = this.target,\n i, shape;\n if (!bullet._super.render.call(this)) {\n return;\n }\n for (i = 2; i < vlen; i++) {\n shape = this.renderRange(i).append();\n this.shapes[shape.id] = 'r' + i;\n this.valueShapes['r' + i] = shape.id;\n }\n if (this.values[1] !== null) {\n shape = this.renderPerformance().append();\n this.shapes[shape.id] = 'p1';\n this.valueShapes.p1 = shape.id;\n }\n if (this.values[0] !== null) {\n shape = this.renderTarget().append();\n this.shapes[shape.id] = 't0';\n this.valueShapes.t0 = shape.id;\n }\n target.render();\n }\n });\n\n /**\n * Pie charts\n */\n $.fn.sparkline.pie = pie = createClass($.fn.sparkline._base, {\n type: 'pie',\n\n init: function (el, values, options, width, height) {\n var total = 0, i;\n\n pie._super.init.call(this, el, values, options, width, height);\n\n this.shapes = {}; // map shape ids to value offsets\n this.valueShapes = {}; // maps value offsets to shape ids\n this.values = values = $.map(values, Number);\n\n if (options.get('width') === 'auto') {\n this.width = this.height;\n }\n\n if (values.length > 0) {\n for (i = values.length; i--;) {\n total += values[i];\n }\n }\n this.total = total;\n this.initTarget();\n this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2);\n },\n\n getRegion: function (el, x, y) {\n var shapeid = this.target.getShapeAt(el, x, y);\n return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;\n },\n\n getCurrentRegionFields: function () {\n var currentRegion = this.currentRegion;\n return {\n isNull: this.values[currentRegion] === undefined,\n value: this.values[currentRegion],\n percent: this.values[currentRegion] / this.total * 100,\n color: this.options.get('sliceColors')[currentRegion % this.options.get('sliceColors').length],\n offset: currentRegion\n };\n },\n\n changeHighlight: function (highlight) {\n var currentRegion = this.currentRegion,\n newslice = this.renderSlice(currentRegion, highlight),\n shapeid = this.valueShapes[currentRegion];\n delete this.shapes[shapeid];\n this.target.replaceWithShape(shapeid, newslice);\n this.valueShapes[currentRegion] = newslice.id;\n this.shapes[newslice.id] = currentRegion;\n },\n\n renderSlice: function (valuenum, highlight) {\n var target = this.target,\n options = this.options,\n radius = this.radius,\n borderWidth = options.get('borderWidth'),\n offset = options.get('offset'),\n circle = 2 * Math.PI,\n values = this.values,\n total = this.total,\n next = offset ? (2*Math.PI)*(offset/360) : 0,\n start, end, i, vlen, color;\n\n vlen = values.length;\n for (i = 0; i < vlen; i++) {\n start = next;\n end = next;\n if (total > 0) { // avoid divide by zero\n end = next + (circle * (values[i] / total));\n }\n if (valuenum === i) {\n color = options.get('sliceColors')[i % options.get('sliceColors').length];\n if (highlight) {\n color = this.calcHighlightColor(color, options);\n }\n\n return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, undefined, color);\n }\n next = end;\n }\n },\n\n render: function () {\n var target = this.target,\n values = this.values,\n options = this.options,\n radius = this.radius,\n borderWidth = options.get('borderWidth'),\n donutWidth = options.get('donutWidth'),\n shape, i;\n\n if (!pie._super.render.call(this)) {\n return;\n }\n if (borderWidth) {\n target.drawCircle(radius, radius, Math.floor(radius - (borderWidth / 2)),\n options.get('borderColor'), undefined, borderWidth).append();\n }\n for (i = values.length; i--;) {\n if (values[i]) { // don't render zero values\n shape = this.renderSlice(i).append();\n this.valueShapes[i] = shape.id; // store just the shapeid\n this.shapes[shape.id] = i;\n }\n }\n if (donutWidth) {\n target.drawCircle(radius, radius, radius - donutWidth, options.get('donutColor'), \n options.get('donutColor'), 0).append();\n }\n target.render();\n }\n });\n\n /**\n * Box plots\n */\n $.fn.sparkline.box = box = createClass($.fn.sparkline._base, {\n type: 'box',\n\n init: function (el, values, options, width, height) {\n box._super.init.call(this, el, values, options, width, height);\n this.values = $.map(values, Number);\n this.width = options.get('width') === 'auto' ? '4.0em' : width;\n this.initTarget();\n if (!this.values.length) {\n this.disabled = 1;\n }\n },\n\n /**\n * Simulate a single region\n */\n getRegion: function () {\n return 1;\n },\n\n getCurrentRegionFields: function () {\n var result = [\n { field: 'lq', value: this.quartiles[0] },\n { field: 'med', value: this.quartiles[1] },\n { field: 'uq', value: this.quartiles[2] }\n ];\n if (this.loutlier !== undefined) {\n result.push({ field: 'lo', value: this.loutlier});\n }\n if (this.routlier !== undefined) {\n result.push({ field: 'ro', value: this.routlier});\n }\n if (this.lwhisker !== undefined) {\n result.push({ field: 'lw', value: this.lwhisker});\n }\n if (this.rwhisker !== undefined) {\n result.push({ field: 'rw', value: this.rwhisker});\n }\n return result;\n },\n\n render: function () {\n var target = this.target,\n values = this.values,\n vlen = values.length,\n options = this.options,\n canvasWidth = this.canvasWidth,\n canvasHeight = this.canvasHeight,\n minValue = options.get('chartRangeMin') === undefined ? Math.min.apply(Math, values) : options.get('chartRangeMin'),\n maxValue = options.get('chartRangeMax') === undefined ? Math.max.apply(Math, values) : options.get('chartRangeMax'),\n canvasLeft = 0,\n lwhisker, loutlier, iqr, q1, q2, q3, rwhisker, routlier, i,\n size, unitSize;\n\n if (!box._super.render.call(this)) {\n return;\n }\n\n if (options.get('raw')) {\n if (options.get('showOutliers') && values.length > 5) {\n loutlier = values[0];\n lwhisker = values[1];\n q1 = values[2];\n q2 = values[3];\n q3 = values[4];\n rwhisker = values[5];\n routlier = values[6];\n } else {\n lwhisker = values[0];\n q1 = values[1];\n q2 = values[2];\n q3 = values[3];\n rwhisker = values[4];\n }\n } else {\n values.sort(function (a, b) { return a - b; });\n q1 = quartile(values, 1);\n q2 = quartile(values, 2);\n q3 = quartile(values, 3);\n iqr = q3 - q1;\n if (options.get('showOutliers')) {\n lwhisker = rwhisker = undefined;\n for (i = 0; i < vlen; i++) {\n if (lwhisker === undefined && values[i] > q1 - (iqr * options.get('outlierIQR'))) {\n lwhisker = values[i];\n }\n if (values[i] < q3 + (iqr * options.get('outlierIQR'))) {\n rwhisker = values[i];\n }\n }\n loutlier = values[0];\n routlier = values[vlen - 1];\n } else {\n lwhisker = values[0];\n rwhisker = values[vlen - 1];\n }\n }\n this.quartiles = [q1, q2, q3];\n this.lwhisker = lwhisker;\n this.rwhisker = rwhisker;\n this.loutlier = loutlier;\n this.routlier = routlier;\n\n unitSize = canvasWidth / (maxValue - minValue + 1);\n if (options.get('showOutliers')) {\n canvasLeft = Math.ceil(options.get('spotRadius'));\n canvasWidth -= 2 * Math.ceil(options.get('spotRadius'));\n unitSize = canvasWidth / (maxValue - minValue + 1);\n if (loutlier < lwhisker) {\n target.drawCircle((loutlier - minValue) * unitSize + canvasLeft,\n canvasHeight / 2,\n options.get('spotRadius'),\n options.get('outlierLineColor'),\n options.get('outlierFillColor')).append();\n }\n if (routlier > rwhisker) {\n target.drawCircle((routlier - minValue) * unitSize + canvasLeft,\n canvasHeight / 2,\n options.get('spotRadius'),\n options.get('outlierLineColor'),\n options.get('outlierFillColor')).append();\n }\n }\n\n // box\n target.drawRect(\n Math.round((q1 - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight * 0.1),\n Math.round((q3 - q1) * unitSize),\n Math.round(canvasHeight * 0.8),\n options.get('boxLineColor'),\n options.get('boxFillColor')).append();\n // left whisker\n target.drawLine(\n Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 2),\n Math.round((q1 - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 2),\n options.get('lineColor')).append();\n target.drawLine(\n Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 4),\n Math.round((lwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight - canvasHeight / 4),\n options.get('whiskerColor')).append();\n // right whisker\n target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 2),\n Math.round((q3 - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 2),\n options.get('lineColor')).append();\n target.drawLine(\n Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight / 4),\n Math.round((rwhisker - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight - canvasHeight / 4),\n options.get('whiskerColor')).append();\n // median line\n target.drawLine(\n Math.round((q2 - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight * 0.1),\n Math.round((q2 - minValue) * unitSize + canvasLeft),\n Math.round(canvasHeight * 0.9),\n options.get('medianColor')).append();\n if (options.get('target')) {\n size = Math.ceil(options.get('spotRadius'));\n target.drawLine(\n Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n Math.round((canvasHeight / 2) - size),\n Math.round((options.get('target') - minValue) * unitSize + canvasLeft),\n Math.round((canvasHeight / 2) + size),\n options.get('targetColor')).append();\n target.drawLine(\n Math.round((options.get('target') - minValue) * unitSize + canvasLeft - size),\n Math.round(canvasHeight / 2),\n Math.round((options.get('target') - minValue) * unitSize + canvasLeft + size),\n Math.round(canvasHeight / 2),\n options.get('targetColor')).append();\n }\n target.render();\n }\n });\n\n // Setup a very simple \"virtual canvas\" to make drawing the few shapes we need easier\n // This is accessible as $(foo).simpledraw()\n\n VShape = createClass({\n init: function (target, id, type, args) {\n this.target = target;\n this.id = id;\n this.type = type;\n this.args = args;\n },\n append: function () {\n this.target.appendShape(this);\n return this;\n }\n });\n\n VCanvas_base = createClass({\n _pxregex: /(\\d+)(px)?\\s*$/i,\n\n init: function (width, height, target) {\n if (!width) {\n return;\n }\n this.width = width;\n this.height = height;\n this.target = target;\n this.lastShapeId = null;\n if (target[0]) {\n target = target[0];\n }\n $.data(target, '_jqs_vcanvas', this);\n },\n\n drawLine: function (x1, y1, x2, y2, lineColor, lineWidth) {\n return this.drawShape([[x1, y1], [x2, y2]], lineColor, lineWidth);\n },\n\n drawShape: function (path, lineColor, fillColor, lineWidth) {\n return this._genShape('Shape', [path, lineColor, fillColor, lineWidth]);\n },\n\n drawCircle: function (x, y, radius, lineColor, fillColor, lineWidth) {\n return this._genShape('Circle', [x, y, radius, lineColor, fillColor, lineWidth]);\n },\n\n drawPieSlice: function (x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n return this._genShape('PieSlice', [x, y, radius, startAngle, endAngle, lineColor, fillColor]);\n },\n\n drawRect: function (x, y, width, height, lineColor, fillColor) {\n return this._genShape('Rect', [x, y, width, height, lineColor, fillColor]);\n },\n\n getElement: function () {\n return this.canvas;\n },\n\n /**\n * Return the most recently inserted shape id\n */\n getLastShapeId: function () {\n return this.lastShapeId;\n },\n\n /**\n * Clear and reset the canvas\n */\n reset: function () {\n alert('reset not implemented');\n },\n\n _insert: function (el, target) {\n $(target).html(el);\n },\n\n /**\n * Calculate the pixel dimensions of the canvas\n */\n _calculatePixelDims: function (width, height, canvas) {\n // XXX This should probably be a configurable option\n var match;\n match = this._pxregex.exec(height);\n if (match) {\n this.pixelHeight = match[1];\n } else {\n this.pixelHeight = $(canvas).height();\n }\n match = this._pxregex.exec(width);\n if (match) {\n this.pixelWidth = match[1];\n } else {\n this.pixelWidth = $(canvas).width();\n }\n },\n\n /**\n * Generate a shape object and id for later rendering\n */\n _genShape: function (shapetype, shapeargs) {\n var id = shapeCount++;\n shapeargs.unshift(id);\n return new VShape(this, id, shapetype, shapeargs);\n },\n\n /**\n * Add a shape to the end of the render queue\n */\n appendShape: function (shape) {\n alert('appendShape not implemented');\n },\n\n /**\n * Replace one shape with another\n */\n replaceWithShape: function (shapeid, shape) {\n alert('replaceWithShape not implemented');\n },\n\n /**\n * Insert one shape after another in the render queue\n */\n insertAfterShape: function (shapeid, shape) {\n alert('insertAfterShape not implemented');\n },\n\n /**\n * Remove a shape from the queue\n */\n removeShapeId: function (shapeid) {\n alert('removeShapeId not implemented');\n },\n\n /**\n * Find a shape at the specified x/y co-ordinates\n */\n getShapeAt: function (el, x, y) {\n alert('getShapeAt not implemented');\n },\n\n /**\n * Render all queued shapes onto the canvas\n */\n render: function () {\n alert('render not implemented');\n }\n });\n\n VCanvas_canvas = createClass(VCanvas_base, {\n init: function (width, height, target, interact) {\n VCanvas_canvas._super.init.call(this, width, height, target);\n this.canvas = document.createElement('canvas');\n if (target[0]) {\n target = target[0];\n }\n $.data(target, '_jqs_vcanvas', this);\n $(this.canvas).css({ display: 'inline-block', width: width, height: height, verticalAlign: 'top' });\n this._insert(this.canvas, target);\n this._calculatePixelDims(width, height, this.canvas);\n this.canvas.width = this.pixelWidth;\n this.canvas.height = this.pixelHeight;\n this.interact = interact;\n this.shapes = {};\n this.shapeseq = [];\n this.currentTargetShapeId = undefined;\n $(this.canvas).css({width: this.pixelWidth, height: this.pixelHeight});\n },\n\n _getContext: function (lineColor, fillColor, lineWidth) {\n var context = this.canvas.getContext('2d');\n if (lineColor !== undefined) {\n context.strokeStyle = lineColor;\n }\n context.lineWidth = lineWidth === undefined ? 1 : lineWidth;\n if (fillColor !== undefined) {\n context.fillStyle = fillColor;\n }\n return context;\n },\n\n reset: function () {\n var context = this._getContext();\n context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n this.shapes = {};\n this.shapeseq = [];\n this.currentTargetShapeId = undefined;\n },\n\n _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n var context = this._getContext(lineColor, fillColor, lineWidth),\n i, plen;\n context.beginPath();\n context.moveTo(path[0][0] + 0.5, path[0][1] + 0.5);\n for (i = 1, plen = path.length; i < plen; i++) {\n context.lineTo(path[i][0] + 0.5, path[i][1] + 0.5); // the 0.5 offset gives us crisp pixel-width lines\n }\n if (lineColor !== undefined) {\n context.stroke();\n }\n if (fillColor !== undefined) {\n context.fill();\n }\n if (this.targetX !== undefined && this.targetY !== undefined &&\n context.isPointInPath(this.targetX, this.targetY)) {\n this.currentTargetShapeId = shapeid;\n }\n },\n\n _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n var context = this._getContext(lineColor, fillColor, lineWidth);\n context.beginPath();\n context.arc(x, y, radius, 0, 2 * Math.PI, false);\n if (this.targetX !== undefined && this.targetY !== undefined &&\n context.isPointInPath(this.targetX, this.targetY)) {\n this.currentTargetShapeId = shapeid;\n }\n if (lineColor !== undefined) {\n context.stroke();\n }\n if (fillColor !== undefined) {\n context.fill();\n }\n },\n\n _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n var context = this._getContext(lineColor, fillColor);\n context.beginPath();\n context.moveTo(x, y);\n context.arc(x, y, radius, startAngle, endAngle, false);\n context.lineTo(x, y);\n context.closePath();\n if (lineColor !== undefined) {\n context.stroke();\n }\n if (fillColor) {\n context.fill();\n }\n if (this.targetX !== undefined && this.targetY !== undefined &&\n context.isPointInPath(this.targetX, this.targetY)) {\n this.currentTargetShapeId = shapeid;\n }\n },\n\n _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n return this._drawShape(shapeid, [[x, y], [x + width, y], [x + width, y + height], [x, y + height], [x, y]], lineColor, fillColor);\n },\n\n appendShape: function (shape) {\n this.shapes[shape.id] = shape;\n this.shapeseq.push(shape.id);\n this.lastShapeId = shape.id;\n return shape.id;\n },\n\n replaceWithShape: function (shapeid, shape) {\n var shapeseq = this.shapeseq,\n i;\n this.shapes[shape.id] = shape;\n for (i = shapeseq.length; i--;) {\n if (shapeseq[i] == shapeid) {\n shapeseq[i] = shape.id;\n }\n }\n delete this.shapes[shapeid];\n },\n\n replaceWithShapes: function (shapeids, shapes) {\n var shapeseq = this.shapeseq,\n shapemap = {},\n sid, i, first;\n\n for (i = shapeids.length; i--;) {\n shapemap[shapeids[i]] = true;\n }\n for (i = shapeseq.length; i--;) {\n sid = shapeseq[i];\n if (shapemap[sid]) {\n shapeseq.splice(i, 1);\n delete this.shapes[sid];\n first = i;\n }\n }\n for (i = shapes.length; i--;) {\n shapeseq.splice(first, 0, shapes[i].id);\n this.shapes[shapes[i].id] = shapes[i];\n }\n\n },\n\n insertAfterShape: function (shapeid, shape) {\n var shapeseq = this.shapeseq,\n i;\n for (i = shapeseq.length; i--;) {\n if (shapeseq[i] === shapeid) {\n shapeseq.splice(i + 1, 0, shape.id);\n this.shapes[shape.id] = shape;\n return;\n }\n }\n },\n\n removeShapeId: function (shapeid) {\n var shapeseq = this.shapeseq,\n i;\n for (i = shapeseq.length; i--;) {\n if (shapeseq[i] === shapeid) {\n shapeseq.splice(i, 1);\n break;\n }\n }\n delete this.shapes[shapeid];\n },\n\n getShapeAt: function (el, x, y) {\n this.targetX = x;\n this.targetY = y;\n this.render();\n return this.currentTargetShapeId;\n },\n\n render: function () {\n var shapeseq = this.shapeseq,\n shapes = this.shapes,\n shapeCount = shapeseq.length,\n context = this._getContext(),\n shapeid, shape, i;\n context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);\n for (i = 0; i < shapeCount; i++) {\n shapeid = shapeseq[i];\n shape = shapes[shapeid];\n this['_draw' + shape.type].apply(this, shape.args);\n }\n if (!this.interact) {\n // not interactive so no need to keep the shapes array\n this.shapes = {};\n this.shapeseq = [];\n }\n }\n\n });\n\n VCanvas_vml = createClass(VCanvas_base, {\n init: function (width, height, target) {\n var groupel;\n VCanvas_vml._super.init.call(this, width, height, target);\n if (target[0]) {\n target = target[0];\n }\n $.data(target, '_jqs_vcanvas', this);\n this.canvas = document.createElement('span');\n $(this.canvas).css({ display: 'inline-block', position: 'relative', overflow: 'hidden', width: width, height: height, margin: '0px', padding: '0px', verticalAlign: 'top'});\n this._insert(this.canvas, target);\n this._calculatePixelDims(width, height, this.canvas);\n this.canvas.width = this.pixelWidth;\n this.canvas.height = this.pixelHeight;\n groupel = '';\n this.canvas.insertAdjacentHTML('beforeEnd', groupel);\n this.group = $(this.canvas).children()[0];\n this.rendered = false;\n this.prerender = '';\n },\n\n _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {\n var vpath = [],\n initial, stroke, fill, closed, vel, plen, i;\n for (i = 0, plen = path.length; i < plen; i++) {\n vpath[i] = '' + (path[i][0]) + ',' + (path[i][1]);\n }\n initial = vpath.splice(0, 1);\n lineWidth = lineWidth === undefined ? 1 : lineWidth;\n stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n closed = vpath[0] === vpath[vpath.length - 1] ? 'x ' : '';\n vel = '' +\n ' ';\n return vel;\n },\n\n _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {\n var stroke, fill, vel;\n x -= radius;\n y -= radius;\n stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"' + lineWidth + 'px\" strokeColor=\"' + lineColor + '\" ';\n fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n vel = '';\n return vel;\n\n },\n\n _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {\n var vpath, startx, starty, endx, endy, stroke, fill, vel;\n if (startAngle === endAngle) {\n return ''; // VML seems to have problem when start angle equals end angle.\n }\n if ((endAngle - startAngle) === (2 * Math.PI)) {\n startAngle = 0.0; // VML seems to have a problem when drawing a full circle that doesn't start 0\n endAngle = (2 * Math.PI);\n }\n\n startx = x + Math.round(Math.cos(startAngle) * radius);\n starty = y + Math.round(Math.sin(startAngle) * radius);\n endx = x + Math.round(Math.cos(endAngle) * radius);\n endy = y + Math.round(Math.sin(endAngle) * radius);\n\n if (startx === endx && starty === endy) {\n if ((endAngle - startAngle) < Math.PI) {\n // Prevent very small slices from being mistaken as a whole pie\n return '';\n }\n // essentially going to be the entire circle, so ignore startAngle\n startx = endx = x + radius;\n starty = endy = y;\n }\n\n if (startx === endx && starty === endy && (endAngle - startAngle) < Math.PI) {\n return '';\n }\n\n vpath = [x - radius, y - radius, x + radius, y + radius, startx, starty, endx, endy];\n stroke = lineColor === undefined ? ' stroked=\"false\" ' : ' strokeWeight=\"1px\" strokeColor=\"' + lineColor + '\" ';\n fill = fillColor === undefined ? ' filled=\"false\"' : ' fillColor=\"' + fillColor + '\" filled=\"true\" ';\n vel = '' +\n ' ';\n return vel;\n },\n\n _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {\n return this._drawShape(shapeid, [[x, y], [x, y + height], [x + width, y + height], [x + width, y], [x, y]], lineColor, fillColor);\n },\n\n reset: function () {\n this.group.innerHTML = '';\n },\n\n appendShape: function (shape) {\n var vel = this['_draw' + shape.type].apply(this, shape.args);\n if (this.rendered) {\n this.group.insertAdjacentHTML('beforeEnd', vel);\n } else {\n this.prerender += vel;\n }\n this.lastShapeId = shape.id;\n return shape.id;\n },\n\n replaceWithShape: function (shapeid, shape) {\n var existing = $('#jqsshape' + shapeid),\n vel = this['_draw' + shape.type].apply(this, shape.args);\n existing[0].outerHTML = vel;\n },\n\n replaceWithShapes: function (shapeids, shapes) {\n // replace the first shapeid with all the new shapes then toast the remaining old shapes\n var existing = $('#jqsshape' + shapeids[0]),\n replace = '',\n slen = shapes.length,\n i;\n for (i = 0; i < slen; i++) {\n replace += this['_draw' + shapes[i].type].apply(this, shapes[i].args);\n }\n existing[0].outerHTML = replace;\n for (i = 1; i < shapeids.length; i++) {\n $('#jqsshape' + shapeids[i]).remove();\n }\n },\n\n insertAfterShape: function (shapeid, shape) {\n var existing = $('#jqsshape' + shapeid),\n vel = this['_draw' + shape.type].apply(this, shape.args);\n existing[0].insertAdjacentHTML('afterEnd', vel);\n },\n\n removeShapeId: function (shapeid) {\n var existing = $('#jqsshape' + shapeid);\n this.group.removeChild(existing[0]);\n },\n\n getShapeAt: function (el, x, y) {\n var shapeid = el.id.substr(8);\n return shapeid;\n },\n\n render: function () {\n if (!this.rendered) {\n // batch the intial render into a single repaint\n this.group.innerHTML = this.prerender;\n this.rendered = true;\n }\n }\n });\n\n}))}(document, Math));\n", "import './vendor';\nimport 'jquery-sparkline';\nimport { authFetch } from './authWrap';\nimport { error, log } from './logger';\n\ninterface GpuInfo {\n name: string;\n data: Record;\n chart?: [number, number];\n}\n\nlet gpuInterval: ReturnType | null = null;\nconst chartData: { mem: number[]; load: number[] } = { mem: [], load: [] };\n\nasync function updateGPUChart(mem: number, load: number): Promise {\n const maxLen = 120;\n const colorRangeMap = $.range_map({\n '0:5': '#fffafa',\n '6:10': '#fff7ed',\n '11:20': '#fed7aa',\n '21:30': '#fdba74',\n '31:40': '#fb923c',\n '41:50': '#f97316',\n '51:60': '#ea580c',\n '61:70': '#c2410c',\n '71:80': '#9a3412',\n '81:90': '#7c2d12',\n '91:100': '#6c2e12',\n });\n const sparklineConfigLOAD = { type: 'bar', height: '128px', barWidth: '3px', barSpacing: '1px', chartRangeMin: 0, chartRangeMax: 100, barColor: '#89007D' };\n const sparklineConfigMEM = { type: 'bar', height: '128px', barWidth: '3px', barSpacing: '1px', chartRangeMin: 0, chartRangeMax: 100, colorMap: colorRangeMap, composite: true };\n if (chartData.load.length > maxLen) chartData.load.shift();\n chartData.load.push(load);\n if (chartData.mem.length > maxLen) chartData.mem.shift();\n chartData.mem.push(mem);\n $('#gpuChart').sparkline(chartData.load, sparklineConfigLOAD);\n $('#gpuChart').sparkline(chartData.mem, sparklineConfigMEM);\n}\n\nasync function updateGPU(): Promise {\n const gpuEl = document.getElementById('gpu');\n const gpuTable = document.getElementById('gpu-table');\n if (!gpuEl || !gpuTable) return;\n try {\n const res = await authFetch(`${window.api}/gpu-smi`);\n if (!res || !res.ok) {\n clearInterval(gpuInterval);\n gpuEl.style.display = 'none';\n return;\n }\n const data = (await res.json()) as GpuInfo[];\n if (!data) {\n clearInterval(gpuInterval);\n gpuEl.style.display = 'none';\n return;\n }\n const gpuTbody = gpuTable.querySelector('tbody');\n if (!gpuTbody) return;\n let gpu = { data: {} } as GpuInfo;\n if (Array.isArray(data) && data.length >= 1) gpu = data[0];\n let rows = `GPU${gpu.name || 'unknown'}`;\n for (const item of Object.entries(gpu.data)) rows += `${item[0]}${item[1]}`;\n gpuTbody.innerHTML = rows;\n if (gpu.chart && gpu.chart.length === 2) updateGPUChart(gpu.chart[0], gpu.chart[1]);\n gpuEl.style.display = 'block';\n } catch (e) {\n error('updateGPU', e);\n clearInterval(gpuInterval);\n gpuEl.style.display = 'none';\n }\n}\n\nexport async function startGPU(): Promise {\n const gpuEl = document.getElementById('gpu');\n if (!gpuEl) return;\n gpuEl.style.display = 'block';\n if (gpuInterval) clearInterval(gpuInterval);\n const interval = window.opts?.gpu_monitor || 3000;\n log('startGPUmonitor', interval);\n gpuInterval = setInterval(updateGPU, interval);\n updateGPU();\n}\n\nwindow.startGPU = startGPU;\n\nexport async function disableGPU(): Promise {\n clearInterval(gpuInterval);\n const gpuEl = document.getElementById('gpu');\n if (gpuEl) gpuEl.style.display = 'none';\n}\n\nwindow.disableGPU = disableGPU;\n"], + "mappings": "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", "names": ["global", "window", "i", "jQuery", "arr", "matches", "escape", "value", "document", "dir", "parent", "hash", "preFilter", "token", "find", "elem", "self", "add", "deferred", "process", "error", "data", "el", "nodeName", "event", "name", "schedule", "opts", "index", "length", "timers", "timer", "location", "val", "url", "completed", "done", "method", "type", "undefined", "requestAnimationFrame", "timer", "addEventListener", "el", "log", "event", "iframeId", "location", "hash", "error", "MutationObserver", "options", "isVisible", "$", "e", "t", "i", "n", "s", "r", "a", "o", "l", "h", "u", "c", "f", "d", "K", "$", "eventify", "subject", "validateSubject", "eventsStorage", "createEventsStorage", "registeredEvents", "eventName", "callback", "ctx", "handlers", "callbacks", "fireArguments", "i", "callbackInfo", "reservedWords", "cancelAnimationFrame", "requestAnimationFrame", "isNaN", "parent", "onKeyDown", "el", "jQuery", "el", "url", "url", "event", "el", "isVisible", "el", "el", "el", "event", "el", "el", "event", "el", "el", "ok", "el", "gallerySelection", "updateInput", "active", "el", "el", "el", "updateInput", "updateInput", "event", "hash", "atBottom", "el", "parent", "el", "el", "Hash", "HMAC", "hash", "hmac", "ok", "parent", "event", "el", "modalImage", "modal", "gallerySelection", "event", "exifr", "Panzoom", "updateInput", "el", "el", "el", "event", "appendContextMenuOption", "removeContextMenuOption", "addContextMenuEventListener", "busy", "el", "el", "url", "ok", "url", "updateInput", "el", "el", "url", "url", "ts", "el", "delay", "event", "updateInput", "document", "Math", "undefined", "$", "format", "self", "token", "el", "width", "height", "target", "interact", "shapeCount"] }