1(() => { 2 var __create = Object.create; 3 var __defProp = Object.defineProperty; 4 var __getOwnPropDesc = Object.getOwnPropertyDescriptor; 5 var __getOwnPropNames = Object.getOwnPropertyNames; 6 var __getProtoOf = Object.getPrototypeOf; 7 var __hasOwnProp = Object.prototype.hasOwnProperty; 8 var __esm = (fn, res) => function __init() { 9 return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; 10 }; 11 var __commonJS = (cb, mod) => function __require() { 12 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; 13 }; 14 var __copyProps = (to, from, except, desc) => { 15 if (from && typeof from === "object" || typeof from === "function") { 16 for (let key of __getOwnPropNames(from)) 17 if (!__hasOwnProp.call(to, key) && key !== except) 18 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); 19 } 20 return to; 21 }; 22 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( 23 // If the importer is in node compatibility mode or this is not an ESM 24 // file that has been converted to a CommonJS file using a Babel- 25 // compatible transform (i.e. "__esModule" has not been set), then set 26 // "default" to the CommonJS "module.exports" for node compatibility. 27 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, 28 mod 29 )); 30 31 // <define:process> 32 var init_define_process = __esm({ 33 "<define:process>"() { 34 } 35 }); 36 37
vendor: 265,498 bytes, lines 37-6480
37// node_modules/jquery/dist/jquery.js 38 var require_jquery = __commonJS({ 39 "node_modules/jquery/dist/jquery.js"(exports, module) { 40 init_define_process(); 41 init_jquery(); 42 (function(global2, factory) { 43 "use strict"; 44 if (typeof module === "object" && typeof module.exports === "object") { 45 module.exports = global2.document ? factory(global2, true) : function(w) { 46 if (!w.document) { 47 throw new Error("jQuery requires a window with a document"); 48 } 49 return factory(w); 50 }; 51 } else { 52 factory(global2); 53 } 54 })(typeof window !== "undefined" ? window : exports, function(window2, noGlobal) { 55 "use strict"; 56 var arr = []; 57 var getProto = Object.getPrototypeOf; 58 var slice = arr.slice; 59 var flat = arr.flat ? function(array) { 60 return arr.flat.call(array); 61 } : function(array) { 62 return arr.concat.apply([], array); 63 }; 64 var push = arr.push; 65 var indexOf = arr.indexOf; 66 var class2type = {}; 67 var toString = class2type.toString; 68 var hasOwn = class2type.hasOwnProperty; 69 var fnToString = hasOwn.toString; 70 var ObjectFunctionString = fnToString.call(Object); 71 var support = {}; 72 var isFunction = function isFunction2(obj) { 73 return typeof obj === "function" && typeof obj.nodeType !== "number"; 74 }; 75 var isWindow = function isWindow2(obj) { 76 return obj != null && obj === obj.window; 77 }; 78 var document = window2.document; 79 var preservedScriptAttributes = { 80 type: true, 81 src: true, 82 nonce: true, 83 noModule: true 84 }; 85 function DOMEval(code, node, doc) { 86 doc = doc || document; 87 var i, val, script = doc.createElement("script"); 88 script.text = code; 89 if (node) { 90 for (i in preservedScriptAttributes) { 91 val = node[i] || node.getAttribute && node.getAttribute(i); 92 if (val) { 93 script.setAttribute(i, val); 94 } 95 } 96 } 97 doc.head.appendChild(script).parentNode.removeChild(script); 98 } 99 function toType(obj) { 100 if (obj == null) { 101 return obj + ""; 102 } 103 return typeof obj === "object" || typeof obj === "function" ? class2type[toString.call(obj)] || "object" : typeof obj; 104 } 105 var version = "3.5.1", jQuery = function(selector, context) { 106 return new jQuery.fn.init(selector, context); 107 }; 108 jQuery.fn = jQuery.prototype = { 109 // The current version of jQuery being used 110 jquery: version, 111 constructor: jQuery, 112 // The default length of a jQuery object is 0 113 length: 0, 114 toArray: function() { 115 return slice.call(this); 116 }, 117 // Get the Nth element in the matched element set OR 118 // Get the whole matched element set as a clean array 119 get: function(num) { 120 if (num == null) { 121 return slice.call(this); 122 } 123 return num < 0 ? this[num + this.length] : this[num]; 124 }, 125 // Take an array of elements and push it onto the stack 126 // (returning the new matched element set) 127 pushStack: function(elems) { 128 var ret = jQuery.merge(this.constructor(), elems); 129 ret.prevObject = this; 130 return ret; 131 }, 132 // Execute a callback for every element in the matched set. 133 each: function(callback) { 134 return jQuery.each(this, callback); 135 }, 136 map: function(callback) { 137 return this.pushStack(jQuery.map(this, function(elem, i) { 138 return callback.call(elem, i, elem); 139 })); 140 }, 141 slice: function() { 142 return this.pushStack(slice.apply(this, arguments)); 143 }, 144 first: function() { 145 return this.eq(0); 146 }, 147 last: function() { 148 return this.eq(-1); 149 }, 150 even: function() { 151 return this.pushStack(jQuery.grep(this, function(_elem, i) { 152 return (i + 1) % 2; 153 })); 154 }, 155 odd: function() { 156 return this.pushStack(jQuery.grep(this, function(_elem, i) { 157 return i % 2; 158 })); 159 }, 160 eq: function(i) { 161 var len = this.length, j = +i + (i < 0 ? len : 0); 162 return this.pushStack(j >= 0 && j < len ? [this[j]] : []); 163 }, 164 end: function() { 165 return this.prevObject || this.constructor(); 166 }, 167 // For internal use only. 168 // Behaves like an Array's method, not like a jQuery method. 169 push, 170 sort: arr.sort, 171 splice: arr.splice 172 }; 173 jQuery.extend = jQuery.fn.extend = function() { 174 var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; 175 if (typeof target === "boolean") { 176 deep = target; 177 target = arguments[i] || {}; 178 i++; 179 } 180 if (typeof target !== "object" && !isFunction(target)) { 181 target = {}; 182 } 183 if (i === length) { 184 target = this; 185 i--; 186 } 187 for (; i < length; i++) { 188 if ((options = arguments[i]) != null) { 189 for (name in options) { 190 copy = options[name]; 191 if (name === "__proto__" || target === copy) { 192 continue; 193 } 194 if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { 195 src = target[name]; 196 if (copyIsArray && !Array.isArray(src)) { 197 clone = []; 198 } else if (!copyIsArray && !jQuery.isPlainObject(src)) { 199 clone = {}; 200 } else { 201 clone = src; 202 } 203 copyIsArray = false; 204 target[name] = jQuery.extend(deep, clone, copy); 205 } else if (copy !== void 0) { 206 target[name] = copy; 207 } 208 } 209 } 210 } 211 return target; 212 }; 213 jQuery.extend({ 214 // Unique for each copy of jQuery on the page 215 expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""), 216 // Assume jQuery is ready without the ready module 217 isReady: true, 218 error: function(msg) { 219 throw new Error(msg); 220 }, 221 noop: function() { 222 }, 223 isPlainObject: function(obj) { 224 var proto, Ctor; 225 if (!obj || toString.call(obj) !== "[object Object]") { 226 return false; 227 } 228 proto = getProto(obj); 229 if (!proto) { 230 return true; 231 } 232 Ctor = hasOwn.call(proto, "constructor") && proto.constructor; 233 return typeof Ctor === "function" && fnToString.call(Ctor) === ObjectFunctionString; 234 }, 235 isEmptyObject: function(obj) { 236 var name; 237 for (name in obj) { 238 return false; 239 } 240 return true; 241 }, 242 // Evaluates a script in a provided context; falls back to the global one 243 // if not specified. 244 globalEval: function(code, options, doc) { 245 DOMEval(code, { nonce: options && options.nonce }, doc); 246 }, 247 each: function(obj, callback) { 248 var length, i = 0; 249 if (isArrayLike(obj)) { 250 length = obj.length; 251 for (; i < length; i++) { 252 if (callback.call(obj[i], i, obj[i]) === false) { 253 break; 254 } 255 } 256 } else { 257 for (i in obj) { 258 if (callback.call(obj[i], i, obj[i]) === false) { 259 break; 260 } 261 } 262 } 263 return obj; 264 }, 265 // results is for internal usage only 266 makeArray: function(arr2, results) { 267 var ret = results || []; 268 if (arr2 != null) { 269 if (isArrayLike(Object(arr2))) { 270 jQuery.merge( 271 ret, 272 typeof arr2 === "string" ? [arr2] : arr2 273 ); 274 } else { 275 push.call(ret, arr2); 276 } 277 } 278 return ret; 279 }, 280 inArray: function(elem, arr2, i) { 281 return arr2 == null ? -1 : indexOf.call(arr2, elem, i); 282 }, 283 // Support: Android <=4.0 only, PhantomJS 1 only 284 // push.apply(_, arraylike) throws on ancient WebKit 285 merge: function(first, second) { 286 var len = +second.length, j = 0, i = first.length; 287 for (; j < len; j++) { 288 first[i++] = second[j]; 289 } 290 first.length = i; 291 return first; 292 }, 293 grep: function(elems, callback, invert) { 294 var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; 295 for (; i < length; i++) { 296 callbackInverse = !callback(elems[i], i); 297 if (callbackInverse !== callbackExpect) { 298 matches.push(elems[i]); 299 } 300 } 301 return matches; 302 }, 303 // arg is for internal usage only 304 map: function(elems, callback, arg) { 305 var length, value, i = 0, ret = []; 306 if (isArrayLike(elems)) { 307 length = elems.length; 308 for (; i < length; i++) { 309 value = callback(elems[i], i, arg); 310 if (value != null) { 311 ret.push(value); 312 } 313 } 314 } else { 315 for (i in elems) { 316 value = callback(elems[i], i, arg); 317 if (value != null) { 318 ret.push(value); 319 } 320 } 321 } 322 return flat(ret); 323 }, 324 // A global GUID counter for objects 325 guid: 1, 326 // jQuery.support is not used in Core but other projects attach their 327 // properties to it so it needs to exist. 328 support 329 }); 330 if (typeof Symbol === "function") { 331 jQuery.fn[Symbol.iterator] = arr[Symbol.iterator]; 332 } 333 jQuery.each( 334 "Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), 335 function(_i, name) { 336 class2type["[object " + name + "]"] = name.toLowerCase(); 337 } 338 ); 339 function isArrayLike(obj) { 340 var length = !!obj && "length" in obj && obj.length, type = toType(obj); 341 if (isFunction(obj) || isWindow(obj)) { 342 return false; 343 } 344 return type === "array" || length === 0 || typeof length === "number" && length > 0 && length - 1 in obj; 345 } 346 var Sizzle = ( 347 /*! 348 * Sizzle CSS Selector Engine v2.3.5 349 * https://sizzlejs.com/ 350 * 351 * Copyright JS Foundation and other contributors 352 * Released under the MIT license 353 * https://js.foundation/ 354 * 355 * Date: 2020-03-14 356 */ 357 function(window3) { 358 var i, support2, Expr, getText, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate, setDocument, document2, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains, expando = "sizzle" + 1 * /* @__PURE__ */ new Date(), preferredDoc = window3.document, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), nonnativeSelectorCache = createCache(), sortOrder = function(a, b) { 359 if (a === b) { 360 hasDuplicate = true; 361 } 362 return 0; 363 }, hasOwn2 = {}.hasOwnProperty, arr2 = [], pop = arr2.pop, pushNative = arr2.push, push2 = arr2.push, slice2 = arr2.slice, indexOf2 = function(list, elem) { 364 var i2 = 0, len = list.length; 365 for (; i2 < len; i2++) { 366 if (list[i2] === elem) { 367 return i2; 368 } 369 } 370 return -1; 371 }, booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", whitespace = "[\\x20\\t\\r\\n\\f]", identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + // Operator (capture 2) 372 "*([*^$|!~]?=)" + whitespace + // "Attribute values must be CSS identifiers [capture 5] 373 // or strings [capture 3 or capture 4]" 374 `*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(` + identifier + "))|)" + whitespace + "*\\]", pseudos = ":(" + identifier + `)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|` + attributes + ")*)|.*)\\)|)", rwhitespace = new RegExp(whitespace + "+", "g"), rtrim2 = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"), rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"), rcombinators = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"), rdescend = new RegExp(whitespace + "|>"), rpseudo = new RegExp(pseudos), ridentifier = new RegExp("^" + identifier + "$"), matchExpr = { 375 "ID": new RegExp("^#(" + identifier + ")"), 376 "CLASS": new RegExp("^\\.(" + identifier + ")"), 377 "TAG": new RegExp("^(" + identifier + "|[*])"), 378 "ATTR": new RegExp("^" + attributes), 379 "PSEUDO": new RegExp("^" + pseudos), 380 "CHILD": new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"), 381 "bool": new RegExp("^(?:" + booleans + ")$", "i"), 382 // For use in libraries implementing .is() 383 // We use this for POS matching in `select` 384 "needsContext": new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i") 385 }, rhtml2 = /HTML$/i, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, rnative = /^[^{]+\{\s*\[native \w/, rquickExpr2 = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, runescape = new RegExp("\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g"), funescape = function(escape, nonHex) { 386 var high = "0x" + escape.slice(1) - 65536; 387 return nonHex ? ( 388 // Strip the backslash prefix from a non-hex escape sequence 389 nonHex 390 ) : ( 391 // Replace a hexadecimal escape sequence with the encoded Unicode code point 392 // Support: IE <=11+ 393 // For values outside the Basic Multilingual Plane (BMP), manually construct a 394 // surrogate pair 395 high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320) 396 ); 397 }, rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, fcssescape = function(ch, asCodePoint) { 398 if (asCodePoint) { 399 if (ch === "\0") { 400 return "\uFFFD"; 401 } 402 return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " "; 403 } 404 return "\\" + ch; 405 }, unloadHandler = function() { 406 setDocument(); 407 }, inDisabledFieldset = addCombinator( 408 function(elem) { 409 return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; 410 }, 411 { dir: "parentNode", next: "legend" } 412 ); 413 try { 414 push2.apply( 415 arr2 = slice2.call(preferredDoc.childNodes), 416 preferredDoc.childNodes 417 ); 418 arr2[preferredDoc.childNodes.length].nodeType; 419 } catch (e) { 420 push2 = { 421 apply: arr2.length ? ( 422 // Leverage slice if possible 423 function(target, els) { 424 pushNative.apply(target, slice2.call(els)); 425 } 426 ) : ( 427 // Support: IE<9 428 // Otherwise append directly 429 function(target, els) { 430 var j = target.length, i2 = 0; 431 while (target[j++] = els[i2++]) { 432 } 433 target.length = j - 1; 434 } 435 ) 436 }; 437 } 438 function Sizzle2(selector, context, results, seed) { 439 var m, i2, elem, nid, match, groups, newSelector, newContext = context && context.ownerDocument, nodeType = context ? context.nodeType : 9; 440 results = results || []; 441 if (typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) { 442 return results; 443 } 444 if (!seed) { 445 setDocument(context); 446 context = context || document2; 447 if (documentIsHTML) { 448 if (nodeType !== 11 && (match = rquickExpr2.exec(selector))) { 449 if (m = match[1]) { 450 if (nodeType === 9) { 451 if (elem = context.getElementById(m)) { 452 if (elem.id === m) { 453 results.push(elem); 454 return results; 455 } 456 } else { 457 return results; 458 } 459 } else { 460 if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) { 461 results.push(elem); 462 return results; 463 } 464 } 465 } else if (match[2]) { 466 push2.apply(results, context.getElementsByTagName(selector)); 467 return results; 468 } else if ((m = match[3]) && support2.getElementsByClassName && context.getElementsByClassName) { 469 push2.apply(results, context.getElementsByClassName(m)); 470 return results; 471 } 472 } 473 if (support2.qsa && !nonnativeSelectorCache[selector + " "] && (!rbuggyQSA || !rbuggyQSA.test(selector)) && // Support: IE 8 only 474 // Exclude object elements 475 (nodeType !== 1 || context.nodeName.toLowerCase() !== "object")) { 476 newSelector = selector; 477 newContext = context; 478 if (nodeType === 1 && (rdescend.test(selector) || rcombinators.test(selector))) { 479 newContext = rsibling.test(selector) && testContext(context.parentNode) || context; 480 if (newContext !== context || !support2.scope) { 481 if (nid = context.getAttribute("id")) { 482 nid = nid.replace(rcssescape, fcssescape); 483 } else { 484 context.setAttribute("id", nid = expando); 485 } 486 } 487 groups = tokenize(selector); 488 i2 = groups.length; 489 while (i2--) { 490 groups[i2] = (nid ? "#" + nid : ":scope") + " " + toSelector(groups[i2]); 491 } 492 newSelector = groups.join(","); 493 } 494 try { 495 push2.apply( 496 results, 497 newContext.querySelectorAll(newSelector) 498 ); 499 return results; 500 } catch (qsaError) { 501 nonnativeSelectorCache(selector, true); 502 } finally { 503 if (nid === expando) { 504 context.removeAttribute("id"); 505 } 506 } 507 } 508 } 509 } 510 return select(selector.replace(rtrim2, "$1"), context, results, seed); 511 } 512 function createCache() { 513 var keys = []; 514 function cache(key, value) { 515 if (keys.push(key + " ") > Expr.cacheLength) { 516 delete cache[keys.shift()]; 517 } 518 return cache[key + " "] = value; 519 } 520 return cache; 521 } 522 function markFunction(fn) { 523 fn[expando] = true; 524 return fn; 525 } 526 function assert(fn) { 527 var el = document2.createElement("fieldset"); 528 try { 529 return !!fn(el); 530 } catch (e) { 531 return false; 532 } finally { 533 if (el.parentNode) { 534 el.parentNode.removeChild(el); 535 } 536 el = null; 537 } 538 } 539 function addHandle(attrs, handler) { 540 var arr3 = attrs.split("|"), i2 = arr3.length; 541 while (i2--) { 542 Expr.attrHandle[arr3[i2]] = handler; 543 } 544 } 545 function siblingCheck(a, b) { 546 var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && a.sourceIndex - b.sourceIndex; 547 if (diff) { 548 return diff; 549 } 550 if (cur) { 551 while (cur = cur.nextSibling) { 552 if (cur === b) { 553 return -1; 554 } 555 } 556 } 557 return a ? 1 : -1; 558 } 559 function createInputPseudo(type) { 560 return function(elem) { 561 var name = elem.nodeName.toLowerCase(); 562 return name === "input" && elem.type === type; 563 }; 564 } 565 function createButtonPseudo(type) { 566 return function(elem) { 567 var name = elem.nodeName.toLowerCase(); 568 return (name === "input" || name === "button") && elem.type === type; 569 }; 570 } 571 function createDisabledPseudo(disabled) { 572 return function(elem) { 573 if ("form" in elem) { 574 if (elem.parentNode && elem.disabled === false) { 575 if ("label" in elem) { 576 if ("label" in elem.parentNode) { 577 return elem.parentNode.disabled === disabled; 578 } else { 579 return elem.disabled === disabled; 580 } 581 } 582 return elem.isDisabled === disabled || // Where there is no isDisabled, check manually 583 /* jshint -W018 */ 584 elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled; 585 } 586 return elem.disabled === disabled; 587 } else if ("label" in elem) { 588 return elem.disabled === disabled; 589 } 590 return false; 591 }; 592 } 593 function createPositionalPseudo(fn) { 594 return markFunction(function(argument) { 595 argument = +argument; 596 return markFunction(function(seed, matches2) { 597 var j, matchIndexes = fn([], seed.length, argument), i2 = matchIndexes.length; 598 while (i2--) { 599 if (seed[j = matchIndexes[i2]]) { 600 seed[j] = !(matches2[j] = seed[j]); 601 } 602 } 603 }); 604 }); 605 } 606 function testContext(context) { 607 return context && typeof context.getElementsByTagName !== "undefined" && context; 608 } 609 support2 = Sizzle2.support = {}; 610 isXML = Sizzle2.isXML = function(elem) { 611 var namespace = elem.namespaceURI, docElem2 = (elem.ownerDocument || elem).documentElement; 612 return !rhtml2.test(namespace || docElem2 && docElem2.nodeName || "HTML"); 613 }; 614 setDocument = Sizzle2.setDocument = function(node) { 615 var hasCompare, subWindow, doc = node ? node.ownerDocument || node : preferredDoc; 616 if (doc == document2 || doc.nodeType !== 9 || !doc.documentElement) { 617 return document2; 618 } 619 document2 = doc; 620 docElem = document2.documentElement; 621 documentIsHTML = !isXML(document2); 622 if (preferredDoc != document2 && (subWindow = document2.defaultView) && subWindow.top !== subWindow) { 623 if (subWindow.addEventListener) { 624 subWindow.addEventListener("unload", unloadHandler, false); 625 } else if (subWindow.attachEvent) { 626 subWindow.attachEvent("onunload", unloadHandler); 627 } 628 } 629 support2.scope = assert(function(el) { 630 docElem.appendChild(el).appendChild(document2.createElement("div")); 631 return typeof el.querySelectorAll !== "undefined" && !el.querySelectorAll(":scope fieldset div").length; 632 }); 633 support2.attributes = assert(function(el) { 634 el.className = "i"; 635 return !el.getAttribute("className"); 636 }); 637 support2.getElementsByTagName = assert(function(el) { 638 el.appendChild(document2.createComment("")); 639 return !el.getElementsByTagName("*").length; 640 }); 641 support2.getElementsByClassName = rnative.test(document2.getElementsByClassName); 642 support2.getById = assert(function(el) { 643 docElem.appendChild(el).id = expando; 644 return !document2.getElementsByName || !document2.getElementsByName(expando).length; 645 }); 646 if (support2.getById) { 647 Expr.filter["ID"] = function(id) { 648 var attrId = id.replace(runescape, funescape); 649 return function(elem) { 650 return elem.getAttribute("id") === attrId; 651 }; 652 }; 653 Expr.find["ID"] = function(id, context) { 654 if (typeof context.getElementById !== "undefined" && documentIsHTML) { 655 var elem = context.getElementById(id); 656 return elem ? [elem] : []; 657 } 658 }; 659 } else { 660 Expr.filter["ID"] = function(id) { 661 var attrId = id.replace(runescape, funescape); 662 return function(elem) { 663 var node2 = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); 664 return node2 && node2.value === attrId; 665 }; 666 }; 667 Expr.find["ID"] = function(id, context) { 668 if (typeof context.getElementById !== "undefined" && documentIsHTML) { 669 var node2, i2, elems, elem = context.getElementById(id); 670 if (elem) { 671 node2 = elem.getAttributeNode("id"); 672 if (node2 && node2.value === id) { 673 return [elem]; 674 } 675 elems = context.getElementsByName(id); 676 i2 = 0; 677 while (elem = elems[i2++]) { 678 node2 = elem.getAttributeNode("id"); 679 if (node2 && node2.value === id) { 680 return [elem]; 681 } 682 } 683 } 684 return []; 685 } 686 }; 687 } 688 Expr.find["TAG"] = support2.getElementsByTagName ? function(tag, context) { 689 if (typeof context.getElementsByTagName !== "undefined") { 690 return context.getElementsByTagName(tag); 691 } else if (support2.qsa) { 692 return context.querySelectorAll(tag); 693 } 694 } : function(tag, context) { 695 var elem, tmp = [], i2 = 0, results = context.getElementsByTagName(tag); 696 if (tag === "*") { 697 while (elem = results[i2++]) { 698 if (elem.nodeType === 1) { 699 tmp.push(elem); 700 } 701 } 702 return tmp; 703 } 704 return results; 705 }; 706 Expr.find["CLASS"] = support2.getElementsByClassName && function(className, context) { 707 if (typeof context.getElementsByClassName !== "undefined" && documentIsHTML) { 708 return context.getElementsByClassName(className); 709 } 710 }; 711 rbuggyMatches = []; 712 rbuggyQSA = []; 713 if (support2.qsa = rnative.test(document2.querySelectorAll)) { 714 assert(function(el) { 715 var input; 716 docElem.appendChild(el).innerHTML = "<a id='" + expando + "'></a><select id='" + expando + "-\r\\' msallowcapture=''><option selected=''></option></select>"; 717 if (el.querySelectorAll("[msallowcapture^='']").length) { 718 rbuggyQSA.push("[*^$]=" + whitespace + `*(?:''|"")`); 719 } 720 if (!el.querySelectorAll("[selected]").length) { 721 rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")"); 722 } 723 if (!el.querySelectorAll("[id~=" + expando + "-]").length) { 724 rbuggyQSA.push("~="); 725 } 726 input = document2.createElement("input"); 727 input.setAttribute("name", ""); 728 el.appendChild(input); 729 if (!el.querySelectorAll("[name='']").length) { 730 rbuggyQSA.push("\\[" + whitespace + "*name" + whitespace + "*=" + whitespace + `*(?:''|"")`); 731 } 732 if (!el.querySelectorAll(":checked").length) { 733 rbuggyQSA.push(":checked"); 734 } 735 if (!el.querySelectorAll("a#" + expando + "+*").length) { 736 rbuggyQSA.push(".#.+[+~]"); 737 } 738 el.querySelectorAll("\\\f"); 739 rbuggyQSA.push("[\\r\\n\\f]"); 740 }); 741 assert(function(el) { 742 el.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>"; 743 var input = document2.createElement("input"); 744 input.setAttribute("type", "hidden"); 745 el.appendChild(input).setAttribute("name", "D"); 746 if (el.querySelectorAll("[name=d]").length) { 747 rbuggyQSA.push("name" + whitespace + "*[*^$|!~]?="); 748 } 749 if (el.querySelectorAll(":enabled").length !== 2) { 750 rbuggyQSA.push(":enabled", ":disabled"); 751 } 752 docElem.appendChild(el).disabled = true; 753 if (el.querySelectorAll(":disabled").length !== 2) { 754 rbuggyQSA.push(":enabled", ":disabled"); 755 } 756 el.querySelectorAll("*,:x"); 757 rbuggyQSA.push(",.*:"); 758 }); 759 } 760 if (support2.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) { 761 assert(function(el) { 762 support2.disconnectedMatch = matches.call(el, "*"); 763 matches.call(el, "[s!='']:x"); 764 rbuggyMatches.push("!=", pseudos); 765 }); 766 } 767 rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|")); 768 rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join("|")); 769 hasCompare = rnative.test(docElem.compareDocumentPosition); 770 contains = hasCompare || rnative.test(docElem.contains) ? function(a, b) { 771 var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode; 772 return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16)); 773 } : function(a, b) { 774 if (b) { 775 while (b = b.parentNode) { 776 if (b === a) { 777 return true; 778 } 779 } 780 } 781 return false; 782 }; 783 sortOrder = hasCompare ? function(a, b) { 784 if (a === b) { 785 hasDuplicate = true; 786 return 0; 787 } 788 var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; 789 if (compare) { 790 return compare; 791 } 792 compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : ( 793 // Otherwise we know they are disconnected 794 1 795 ); 796 if (compare & 1 || !support2.sortDetached && b.compareDocumentPosition(a) === compare) { 797 if (a == document2 || a.ownerDocument == preferredDoc && contains(preferredDoc, a)) { 798 return -1; 799 } 800 if (b == document2 || b.ownerDocument == preferredDoc && contains(preferredDoc, b)) { 801 return 1; 802 } 803 return sortInput ? indexOf2(sortInput, a) - indexOf2(sortInput, b) : 0; 804 } 805 return compare & 4 ? -1 : 1; 806 } : function(a, b) { 807 if (a === b) { 808 hasDuplicate = true; 809 return 0; 810 } 811 var cur, i2 = 0, aup = a.parentNode, bup = b.parentNode, ap = [a], bp = [b]; 812 if (!aup || !bup) { 813 return a == document2 ? -1 : b == document2 ? 1 : ( 814 /* eslint-enable eqeqeq */ 815 aup ? -1 : bup ? 1 : sortInput ? indexOf2(sortInput, a) - indexOf2(sortInput, b) : 0 816 ); 817 } else if (aup === bup) { 818 return siblingCheck(a, b); 819 } 820 cur = a; 821 while (cur = cur.parentNode) { 822 ap.unshift(cur); 823 } 824 cur = b; 825 while (cur = cur.parentNode) { 826 bp.unshift(cur); 827 } 828 while (ap[i2] === bp[i2]) { 829 i2++; 830 } 831 return i2 ? ( 832 // Do a sibling check if the nodes have a common ancestor 833 siblingCheck(ap[i2], bp[i2]) 834 ) : ( 835 // Otherwise nodes in our document sort first 836 // Support: IE 11+, Edge 17 - 18+ 837 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 838 // two documents; shallow comparisons work. 839 /* eslint-disable eqeqeq */ 840 ap[i2] == preferredDoc ? -1 : bp[i2] == preferredDoc ? 1 : ( 841 /* eslint-enable eqeqeq */ 842 0 843 ) 844 ); 845 }; 846 return document2; 847 }; 848 Sizzle2.matches = function(expr, elements) { 849 return Sizzle2(expr, null, null, elements); 850 }; 851 Sizzle2.matchesSelector = function(elem, expr) { 852 setDocument(elem); 853 if (support2.matchesSelector && documentIsHTML && !nonnativeSelectorCache[expr + " "] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) { 854 try { 855 var ret = matches.call(elem, expr); 856 if (ret || support2.disconnectedMatch || // As well, disconnected nodes are said to be in a document 857 // fragment in IE 9 858 elem.document && elem.document.nodeType !== 11) { 859 return ret; 860 } 861 } catch (e) { 862 nonnativeSelectorCache(expr, true); 863 } 864 } 865 return Sizzle2(expr, document2, null, [elem]).length > 0; 866 }; 867 Sizzle2.contains = function(context, elem) { 868 if ((context.ownerDocument || context) != document2) { 869 setDocument(context); 870 } 871 return contains(context, elem); 872 }; 873 Sizzle2.attr = function(elem, name) { 874 if ((elem.ownerDocument || elem) != document2) { 875 setDocument(elem); 876 } 877 var fn = Expr.attrHandle[name.toLowerCase()], val = fn && hasOwn2.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : void 0; 878 return val !== void 0 ? val : support2.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null; 879 }; 880 Sizzle2.escape = function(sel) { 881 return (sel + "").replace(rcssescape, fcssescape); 882 }; 883 Sizzle2.error = function(msg) { 884 throw new Error("Syntax error, unrecognized expression: " + msg); 885 }; 886 Sizzle2.uniqueSort = function(results) { 887 var elem, duplicates = [], j = 0, i2 = 0; 888 hasDuplicate = !support2.detectDuplicates; 889 sortInput = !support2.sortStable && results.slice(0); 890 results.sort(sortOrder); 891 if (hasDuplicate) { 892 while (elem = results[i2++]) { 893 if (elem === results[i2]) { 894 j = duplicates.push(i2); 895 } 896 } 897 while (j--) { 898 results.splice(duplicates[j], 1); 899 } 900 } 901 sortInput = null; 902 return results; 903 }; 904 getText = Sizzle2.getText = function(elem) { 905 var node, ret = "", i2 = 0, nodeType = elem.nodeType; 906 if (!nodeType) { 907 while (node = elem[i2++]) { 908 ret += getText(node); 909 } 910 } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) { 911 if (typeof elem.textContent === "string") { 912 return elem.textContent; 913 } else { 914 for (elem = elem.firstChild; elem; elem = elem.nextSibling) { 915 ret += getText(elem); 916 } 917 } 918 } else if (nodeType === 3 || nodeType === 4) { 919 return elem.nodeValue; 920 } 921 return ret; 922 }; 923 Expr = Sizzle2.selectors = { 924 // Can be adjusted by the user 925 cacheLength: 50, 926 createPseudo: markFunction, 927 match: matchExpr, 928 attrHandle: {}, 929 find: {}, 930 relative: { 931 ">": { dir: "parentNode", first: true }, 932 " ": { dir: "parentNode" }, 933 "+": { dir: "previousSibling", first: true }, 934 "~": { dir: "previousSibling" } 935 }, 936 preFilter: { 937 "ATTR": function(match) { 938 match[1] = match[1].replace(runescape, funescape); 939 match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape); 940 if (match[2] === "~=") { 941 match[3] = " " + match[3] + " "; 942 } 943 return match.slice(0, 4); 944 }, 945 "CHILD": function(match) { 946 match[1] = match[1].toLowerCase(); 947 if (match[1].slice(0, 3) === "nth") { 948 if (!match[3]) { 949 Sizzle2.error(match[0]); 950 } 951 match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === "even" || match[3] === "odd")); 952 match[5] = +(match[7] + match[8] || match[3] === "odd"); 953 } else if (match[3]) { 954 Sizzle2.error(match[0]); 955 } 956 return match; 957 }, 958 "PSEUDO": function(match) { 959 var excess, unquoted = !match[6] && match[2]; 960 if (matchExpr["CHILD"].test(match[0])) { 961 return null; 962 } 963 if (match[3]) { 964 match[2] = match[4] || match[5] || ""; 965 } else if (unquoted && rpseudo.test(unquoted) && // Get excess from tokenize (recursively) 966 (excess = tokenize(unquoted, true)) && // advance to the next closing parenthesis 967 (excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) { 968 match[0] = match[0].slice(0, excess); 969 match[2] = unquoted.slice(0, excess); 970 } 971 return match.slice(0, 3); 972 } 973 }, 974 filter: { 975 "TAG": function(nodeNameSelector) { 976 var nodeName2 = nodeNameSelector.replace(runescape, funescape).toLowerCase(); 977 return nodeNameSelector === "*" ? function() { 978 return true; 979 } : function(elem) { 980 return elem.nodeName && elem.nodeName.toLowerCase() === nodeName2; 981 }; 982 }, 983 "CLASS": function(className) { 984 var pattern = classCache[className + " "]; 985 return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache( 986 className, 987 function(elem) { 988 return pattern.test( 989 typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" 990 ); 991 } 992 ); 993 }, 994 "ATTR": function(name, operator, check) { 995 return function(elem) { 996 var result = Sizzle2.attr(elem, name); 997 if (result == null) { 998 return operator === "!="; 999 } 1000 if (!operator) { 1001 return true; 1002 } 1003 result += ""; 1004 return operator === "=" ? result === check : operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf(check) === 0 : operator === "*=" ? check && result.indexOf(check) > -1 : operator === "$=" ? check && result.slice(-check.length) === check : operator === "~=" ? (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1 : operator === "|=" ? result === check || result.slice(0, check.length + 1) === check + "-" : false; 1005 }; 1006 }, 1007 "CHILD": function(type, what, _argument, first, last) { 1008 var simple = type.slice(0, 3) !== "nth", forward = type.slice(-4) !== "last", ofType = what === "of-type"; 1009 return first === 1 && last === 0 ? ( 1010 // Shortcut for :nth-*(n) 1011 function(elem) { 1012 return !!elem.parentNode; 1013 } 1014 ) : function(elem, _context, xml) { 1015 var cache, uniqueCache, outerCache, node, nodeIndex, start, dir2 = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType, diff = false; 1016 if (parent) { 1017 if (simple) { 1018 while (dir2) { 1019 node = elem; 1020 while (node = node[dir2]) { 1021 if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) { 1022 return false; 1023 } 1024 } 1025 start = dir2 = type === "only" && !start && "nextSibling"; 1026 } 1027 return true; 1028 } 1029 start = [forward ? parent.firstChild : parent.lastChild]; 1030 if (forward && useCache) { 1031 node = parent; 1032 outerCache = node[expando] || (node[expando] = {}); 1033 uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {}); 1034 cache = uniqueCache[type] || []; 1035 nodeIndex = cache[0] === dirruns && cache[1]; 1036 diff = nodeIndex && cache[2]; 1037 node = nodeIndex && parent.childNodes[nodeIndex]; 1038 while (node = ++nodeIndex && node && node[dir2] || // Fallback to seeking `elem` from the start 1039 (diff = nodeIndex = 0) || start.pop()) { 1040 if (node.nodeType === 1 && ++diff && node === elem) { 1041 uniqueCache[type] = [dirruns, nodeIndex, diff]; 1042 break; 1043 } 1044 } 1045 } else { 1046 if (useCache) { 1047 node = elem; 1048 outerCache = node[expando] || (node[expando] = {}); 1049 uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {}); 1050 cache = uniqueCache[type] || []; 1051 nodeIndex = cache[0] === dirruns && cache[1]; 1052 diff = nodeIndex; 1053 } 1054 if (diff === false) { 1055 while (node = ++nodeIndex && node && node[dir2] || (diff = nodeIndex = 0) || start.pop()) { 1056 if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) { 1057 if (useCache) { 1058 outerCache = node[expando] || (node[expando] = {}); 1059 uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {}); 1060 uniqueCache[type] = [dirruns, diff]; 1061 } 1062 if (node === elem) { 1063 break; 1064 } 1065 } 1066 } 1067 } 1068 } 1069 diff -= last; 1070 return diff === first || diff % first === 0 && diff / first >= 0; 1071 } 1072 }; 1073 }, 1074 "PSEUDO": function(pseudo, argument) { 1075 var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle2.error("unsupported pseudo: " + pseudo); 1076 if (fn[expando]) { 1077 return fn(argument); 1078 } 1079 if (fn.length > 1) { 1080 args = [pseudo, pseudo, "", argument]; 1081 return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function(seed, matches2) { 1082 var idx, matched = fn(seed, argument), i2 = matched.length; 1083 while (i2--) { 1084 idx = indexOf2(seed, matched[i2]); 1085 seed[idx] = !(matches2[idx] = matched[i2]); 1086 } 1087 }) : function(elem) { 1088 return fn(elem, 0, args); 1089 }; 1090 } 1091 return fn; 1092 } 1093 }, 1094 pseudos: { 1095 // Potentially complex pseudos 1096 "not": markFunction(function(selector) { 1097 var input = [], results = [], matcher = compile(selector.replace(rtrim2, "$1")); 1098 return matcher[expando] ? markFunction(function(seed, matches2, _context, xml) { 1099 var elem, unmatched = matcher(seed, null, xml, []), i2 = seed.length; 1100 while (i2--) { 1101 if (elem = unmatched[i2]) { 1102 seed[i2] = !(matches2[i2] = elem); 1103 } 1104 } 1105 }) : function(elem, _context, xml) { 1106 input[0] = elem; 1107 matcher(input, null, xml, results); 1108 input[0] = null; 1109 return !results.pop(); 1110 }; 1111 }), 1112 "has": markFunction(function(selector) { 1113 return function(elem) { 1114 return Sizzle2(selector, elem).length > 0; 1115 }; 1116 }), 1117 "contains": markFunction(function(text) { 1118 text = text.replace(runescape, funescape); 1119 return function(elem) { 1120 return (elem.textContent || getText(elem)).indexOf(text) > -1; 1121 }; 1122 }), 1123 // "Whether an element is represented by a :lang() selector 1124 // is based solely on the element's language value 1125 // being equal to the identifier C, 1126 // or beginning with the identifier C immediately followed by "-". 1127 // The matching of C against the element's language value is performed case-insensitively. 1128 // The identifier C does not have to be a valid language name." 1129 // http://www.w3.org/TR/selectors/#lang-pseudo 1130 "lang": markFunction(function(lang) { 1131 if (!ridentifier.test(lang || "")) { 1132 Sizzle2.error("unsupported lang: " + lang); 1133 } 1134 lang = lang.replace(runescape, funescape).toLowerCase(); 1135 return function(elem) { 1136 var elemLang; 1137 do { 1138 if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) { 1139 elemLang = elemLang.toLowerCase(); 1140 return elemLang === lang || elemLang.indexOf(lang + "-") === 0; 1141 } 1142 } while ((elem = elem.parentNode) && elem.nodeType === 1); 1143 return false; 1144 }; 1145 }), 1146 // Miscellaneous 1147 "target": function(elem) { 1148 var hash = window3.location && window3.location.hash; 1149 return hash && hash.slice(1) === elem.id; 1150 }, 1151 "root": function(elem) { 1152 return elem === docElem; 1153 }, 1154 "focus": function(elem) { 1155 return elem === document2.activeElement && (!document2.hasFocus || document2.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); 1156 }, 1157 // Boolean properties 1158 "enabled": createDisabledPseudo(false), 1159 "disabled": createDisabledPseudo(true), 1160 "checked": function(elem) { 1161 var nodeName2 = elem.nodeName.toLowerCase(); 1162 return nodeName2 === "input" && !!elem.checked || nodeName2 === "option" && !!elem.selected; 1163 }, 1164 "selected": function(elem) { 1165 if (elem.parentNode) { 1166 elem.parentNode.selectedIndex; 1167 } 1168 return elem.selected === true; 1169 }, 1170 // Contents 1171 "empty": function(elem) { 1172 for (elem = elem.firstChild; elem; elem = elem.nextSibling) { 1173 if (elem.nodeType < 6) { 1174 return false; 1175 } 1176 } 1177 return true; 1178 }, 1179 "parent": function(elem) { 1180 return !Expr.pseudos["empty"](elem); 1181 }, 1182 // Element/input types 1183 "header": function(elem) { 1184 return rheader.test(elem.nodeName); 1185 }, 1186 "input": function(elem) { 1187 return rinputs.test(elem.nodeName); 1188 }, 1189 "button": function(elem) { 1190 var name = elem.nodeName.toLowerCase(); 1191 return name === "input" && elem.type === "button" || name === "button"; 1192 }, 1193 "text": function(elem) { 1194 var attr; 1195 return elem.nodeName.toLowerCase() === "input" && elem.type === "text" && // Support: IE<8 1196 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" 1197 ((attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text"); 1198 }, 1199 // Position-in-collection 1200 "first": createPositionalPseudo(function() { 1201 return [0]; 1202 }), 1203 "last": createPositionalPseudo(function(_matchIndexes, length) { 1204 return [length - 1]; 1205 }), 1206 "eq": createPositionalPseudo(function(_matchIndexes, length, argument) { 1207 return [argument < 0 ? argument + length : argument]; 1208 }), 1209 "even": createPositionalPseudo(function(matchIndexes, length) { 1210 var i2 = 0; 1211 for (; i2 < length; i2 += 2) { 1212 matchIndexes.push(i2); 1213 } 1214 return matchIndexes; 1215 }), 1216 "odd": createPositionalPseudo(function(matchIndexes, length) { 1217 var i2 = 1; 1218 for (; i2 < length; i2 += 2) { 1219 matchIndexes.push(i2); 1220 } 1221 return matchIndexes; 1222 }), 1223 "lt": createPositionalPseudo(function(matchIndexes, length, argument) { 1224 var i2 = argument < 0 ? argument + length : argument > length ? length : argument; 1225 for (; --i2 >= 0; ) { 1226 matchIndexes.push(i2); 1227 } 1228 return matchIndexes; 1229 }), 1230 "gt": createPositionalPseudo(function(matchIndexes, length, argument) { 1231 var i2 = argument < 0 ? argument + length : argument; 1232 for (; ++i2 < length; ) { 1233 matchIndexes.push(i2); 1234 } 1235 return matchIndexes; 1236 }) 1237 } 1238 }; 1239 Expr.pseudos["nth"] = Expr.pseudos["eq"]; 1240 for (i in { radio: true, checkbox: true, file: true, password: true, image: true }) { 1241 Expr.pseudos[i] = createInputPseudo(i); 1242 } 1243 for (i in { submit: true, reset: true }) { 1244 Expr.pseudos[i] = createButtonPseudo(i); 1245 } 1246 function setFilters() { 1247 } 1248 setFilters.prototype = Expr.filters = Expr.pseudos; 1249 Expr.setFilters = new setFilters(); 1250 tokenize = Sizzle2.tokenize = function(selector, parseOnly) { 1251 var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + " "]; 1252 if (cached) { 1253 return parseOnly ? 0 : cached.slice(0); 1254 } 1255 soFar = selector; 1256 groups = []; 1257 preFilters = Expr.preFilter; 1258 while (soFar) { 1259 if (!matched || (match = rcomma.exec(soFar))) { 1260 if (match) { 1261 soFar = soFar.slice(match[0].length) || soFar; 1262 } 1263 groups.push(tokens = []); 1264 } 1265 matched = false; 1266 if (match = rcombinators.exec(soFar)) { 1267 matched = match.shift(); 1268 tokens.push({ 1269 value: matched, 1270 // Cast descendant combinators to space 1271 type: match[0].replace(rtrim2, " ") 1272 }); 1273 soFar = soFar.slice(matched.length); 1274 } 1275 for (type in Expr.filter) { 1276 if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) { 1277 matched = match.shift(); 1278 tokens.push({ 1279 value: matched, 1280 type, 1281 matches: match 1282 }); 1283 soFar = soFar.slice(matched.length); 1284 } 1285 } 1286 if (!matched) { 1287 break; 1288 } 1289 } 1290 return parseOnly ? soFar.length : soFar ? Sizzle2.error(selector) : ( 1291 // Cache the tokens 1292 tokenCache(selector, groups).slice(0) 1293 ); 1294 }; 1295 function toSelector(tokens) { 1296 var i2 = 0, len = tokens.length, selector = ""; 1297 for (; i2 < len; i2++) { 1298 selector += tokens[i2].value; 1299 } 1300 return selector; 1301 } 1302 function addCombinator(matcher, combinator, base) { 1303 var dir2 = combinator.dir, skip = combinator.next, key = skip || dir2, checkNonElements = base && key === "parentNode", doneName = done++; 1304 return combinator.first ? ( 1305 // Check against closest ancestor/preceding element 1306 function(elem, context, xml) { 1307 while (elem = elem[dir2]) { 1308 if (elem.nodeType === 1 || checkNonElements) { 1309 return matcher(elem, context, xml); 1310 } 1311 } 1312 return false; 1313 } 1314 ) : ( 1315 // Check against all ancestor/preceding elements 1316 function(elem, context, xml) { 1317 var oldCache, uniqueCache, outerCache, newCache = [dirruns, doneName]; 1318 if (xml) { 1319 while (elem = elem[dir2]) { 1320 if (elem.nodeType === 1 || checkNonElements) { 1321 if (matcher(elem, context, xml)) { 1322 return true; 1323 } 1324 } 1325 } 1326 } else { 1327 while (elem = elem[dir2]) { 1328 if (elem.nodeType === 1 || checkNonElements) { 1329 outerCache = elem[expando] || (elem[expando] = {}); 1330 uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {}); 1331 if (skip && skip === elem.nodeName.toLowerCase()) { 1332 elem = elem[dir2] || elem; 1333 } else if ((oldCache = uniqueCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) { 1334 return newCache[2] = oldCache[2]; 1335 } else { 1336 uniqueCache[key] = newCache; 1337 if (newCache[2] = matcher(elem, context, xml)) { 1338 return true; 1339 } 1340 } 1341 } 1342 } 1343 } 1344 return false; 1345 } 1346 ); 1347 } 1348 function elementMatcher(matchers) { 1349 return matchers.length > 1 ? function(elem, context, xml) { 1350 var i2 = matchers.length; 1351 while (i2--) { 1352 if (!matchers[i2](elem, context, xml)) { 1353 return false; 1354 } 1355 } 1356 return true; 1357 } : matchers[0]; 1358 } 1359 function multipleContexts(selector, contexts, results) { 1360 var i2 = 0, len = contexts.length; 1361 for (; i2 < len; i2++) { 1362 Sizzle2(selector, contexts[i2], results); 1363 } 1364 return results; 1365 } 1366 function condense(unmatched, map, filter, context, xml) { 1367 var elem, newUnmatched = [], i2 = 0, len = unmatched.length, mapped = map != null; 1368 for (; i2 < len; i2++) { 1369 if (elem = unmatched[i2]) { 1370 if (!filter || filter(elem, context, xml)) { 1371 newUnmatched.push(elem); 1372 if (mapped) { 1373 map.push(i2); 1374 } 1375 } 1376 } 1377 } 1378 return newUnmatched; 1379 } 1380 function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) { 1381 if (postFilter && !postFilter[expando]) { 1382 postFilter = setMatcher(postFilter); 1383 } 1384 if (postFinder && !postFinder[expando]) { 1385 postFinder = setMatcher(postFinder, postSelector); 1386 } 1387 return markFunction(function(seed, results, context, xml) { 1388 var temp, i2, elem, preMap = [], postMap = [], preexisting = results.length, elems = seed || multipleContexts( 1389 selector || "*", 1390 context.nodeType ? [context] : context, 1391 [] 1392 ), matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems, matcherOut = matcher ? ( 1393 // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, 1394 postFinder || (seed ? preFilter : preexisting || postFilter) ? ( 1395 // ...intermediate processing is necessary 1396 [] 1397 ) : ( 1398 // ...otherwise use results directly 1399 results 1400 ) 1401 ) : matcherIn; 1402 if (matcher) { 1403 matcher(matcherIn, matcherOut, context, xml); 1404 } 1405 if (postFilter) { 1406 temp = condense(matcherOut, postMap); 1407 postFilter(temp, [], context, xml); 1408 i2 = temp.length; 1409 while (i2--) { 1410 if (elem = temp[i2]) { 1411 matcherOut[postMap[i2]] = !(matcherIn[postMap[i2]] = elem); 1412 } 1413 } 1414 } 1415 if (seed) { 1416 if (postFinder || preFilter) { 1417 if (postFinder) { 1418 temp = []; 1419 i2 = matcherOut.length; 1420 while (i2--) { 1421 if (elem = matcherOut[i2]) { 1422 temp.push(matcherIn[i2] = elem); 1423 } 1424 } 1425 postFinder(null, matcherOut = [], temp, xml); 1426 } 1427 i2 = matcherOut.length; 1428 while (i2--) { 1429 if ((elem = matcherOut[i2]) && (temp = postFinder ? indexOf2(seed, elem) : preMap[i2]) > -1) { 1430 seed[temp] = !(results[temp] = elem); 1431 } 1432 } 1433 } 1434 } else { 1435 matcherOut = condense( 1436 matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut 1437 ); 1438 if (postFinder) { 1439 postFinder(null, results, matcherOut, xml); 1440 } else { 1441 push2.apply(results, matcherOut); 1442 } 1443 } 1444 }); 1445 } 1446 function matcherFromTokens(tokens) { 1447 var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[" "], i2 = leadingRelative ? 1 : 0, matchContext = addCombinator(function(elem) { 1448 return elem === checkContext; 1449 }, implicitRelative, true), matchAnyContext = addCombinator(function(elem) { 1450 return indexOf2(checkContext, elem) > -1; 1451 }, implicitRelative, true), matchers = [function(elem, context, xml) { 1452 var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); 1453 checkContext = null; 1454 return ret; 1455 }]; 1456 for (; i2 < len; i2++) { 1457 if (matcher = Expr.relative[tokens[i2].type]) { 1458 matchers = [addCombinator(elementMatcher(matchers), matcher)]; 1459 } else { 1460 matcher = Expr.filter[tokens[i2].type].apply(null, tokens[i2].matches); 1461 if (matcher[expando]) { 1462 j = ++i2; 1463 for (; j < len; j++) { 1464 if (Expr.relative[tokens[j].type]) { 1465 break; 1466 } 1467 } 1468 return setMatcher( 1469 i2 > 1 && elementMatcher(matchers), 1470 i2 > 1 && toSelector( 1471 // If the preceding token was a descendant combinator, insert an implicit any-element `*` 1472 tokens.slice(0, i2 - 1).concat({ value: tokens[i2 - 2].type === " " ? "*" : "" }) 1473 ).replace(rtrim2, "$1"), 1474 matcher, 1475 i2 < j && matcherFromTokens(tokens.slice(i2, j)), 1476 j < len && matcherFromTokens(tokens = tokens.slice(j)), 1477 j < len && toSelector(tokens) 1478 ); 1479 } 1480 matchers.push(matcher); 1481 } 1482 } 1483 return elementMatcher(matchers); 1484 } 1485 function matcherFromGroupMatchers(elementMatchers, setMatchers) { 1486 var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function(seed, context, xml, results, outermost) { 1487 var elem, j, matcher, matchedCount = 0, i2 = "0", unmatched = seed && [], setMatched = [], contextBackup = outermostContext, elems = seed || byElement && Expr.find["TAG"]("*", outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length; 1488 if (outermost) { 1489 outermostContext = context == document2 || context || outermost; 1490 } 1491 for (; i2 !== len && (elem = elems[i2]) != null; i2++) { 1492 if (byElement && elem) { 1493 j = 0; 1494 if (!context && elem.ownerDocument != document2) { 1495 setDocument(elem); 1496 xml = !documentIsHTML; 1497 } 1498 while (matcher = elementMatchers[j++]) { 1499 if (matcher(elem, context || document2, xml)) { 1500 results.push(elem); 1501 break; 1502 } 1503 } 1504 if (outermost) { 1505 dirruns = dirrunsUnique; 1506 } 1507 } 1508 if (bySet) { 1509 if (elem = !matcher && elem) { 1510 matchedCount--; 1511 } 1512 if (seed) { 1513 unmatched.push(elem); 1514 } 1515 } 1516 } 1517 matchedCount += i2; 1518 if (bySet && i2 !== matchedCount) { 1519 j = 0; 1520 while (matcher = setMatchers[j++]) { 1521 matcher(unmatched, setMatched, context, xml); 1522 } 1523 if (seed) { 1524 if (matchedCount > 0) { 1525 while (i2--) { 1526 if (!(unmatched[i2] || setMatched[i2])) { 1527 setMatched[i2] = pop.call(results); 1528 } 1529 } 1530 } 1531 setMatched = condense(setMatched); 1532 } 1533 push2.apply(results, setMatched); 1534 if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) { 1535 Sizzle2.uniqueSort(results); 1536 } 1537 } 1538 if (outermost) { 1539 dirruns = dirrunsUnique; 1540 outermostContext = contextBackup; 1541 } 1542 return unmatched; 1543 }; 1544 return bySet ? markFunction(superMatcher) : superMatcher; 1545 } 1546 compile = Sizzle2.compile = function(selector, match) { 1547 var i2, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + " "]; 1548 if (!cached) { 1549 if (!match) { 1550 match = tokenize(selector); 1551 } 1552 i2 = match.length; 1553 while (i2--) { 1554 cached = matcherFromTokens(match[i2]); 1555 if (cached[expando]) { 1556 setMatchers.push(cached); 1557 } else { 1558 elementMatchers.push(cached); 1559 } 1560 } 1561 cached = compilerCache( 1562 selector, 1563 matcherFromGroupMatchers(elementMatchers, setMatchers) 1564 ); 1565 cached.selector = selector; 1566 } 1567 return cached; 1568 }; 1569 select = Sizzle2.select = function(selector, context, results, seed) { 1570 var i2, tokens, token, type, find, compiled = typeof selector === "function" && selector, match = !seed && tokenize(selector = compiled.selector || selector); 1571 results = results || []; 1572 if (match.length === 1) { 1573 tokens = match[0] = match[0].slice(0); 1574 if (tokens.length > 2 && (token = tokens[0]).type === "ID" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) { 1575 context = (Expr.find["ID"](token.matches[0].replace(runescape, funescape), context) || [])[0]; 1576 if (!context) { 1577 return results; 1578 } else if (compiled) { 1579 context = context.parentNode; 1580 } 1581 selector = selector.slice(tokens.shift().value.length); 1582 } 1583 i2 = matchExpr["needsContext"].test(selector) ? 0 : tokens.length; 1584 while (i2--) { 1585 token = tokens[i2]; 1586 if (Expr.relative[type = token.type]) { 1587 break; 1588 } 1589 if (find = Expr.find[type]) { 1590 if (seed = find( 1591 token.matches[0].replace(runescape, funescape), 1592 rsibling.test(tokens[0].type) && testContext(context.parentNode) || context 1593 )) { 1594 tokens.splice(i2, 1); 1595 selector = seed.length && toSelector(tokens); 1596 if (!selector) { 1597 push2.apply(results, seed); 1598 return results; 1599 } 1600 break; 1601 } 1602 } 1603 } 1604 } 1605 (compiled || compile(selector, match))( 1606 seed, 1607 context, 1608 !documentIsHTML, 1609 results, 1610 !context || rsibling.test(selector) && testContext(context.parentNode) || context 1611 ); 1612 return results; 1613 }; 1614 support2.sortStable = expando.split("").sort(sortOrder).join("") === expando; 1615 support2.detectDuplicates = !!hasDuplicate; 1616 setDocument(); 1617 support2.sortDetached = assert(function(el) { 1618 return el.compareDocumentPosition(document2.createElement("fieldset")) & 1; 1619 }); 1620 if (!assert(function(el) { 1621 el.innerHTML = "<a href='#'></a>"; 1622 return el.firstChild.getAttribute("href") === "#"; 1623 })) { 1624 addHandle("type|href|height|width", function(elem, name, isXML2) { 1625 if (!isXML2) { 1626 return elem.getAttribute(name, name.toLowerCase() === "type" ? 1 : 2); 1627 } 1628 }); 1629 } 1630 if (!support2.attributes || !assert(function(el) { 1631 el.innerHTML = "<input/>"; 1632 el.firstChild.setAttribute("value", ""); 1633 return el.firstChild.getAttribute("value") === ""; 1634 })) { 1635 addHandle("value", function(elem, _name, isXML2) { 1636 if (!isXML2 && elem.nodeName.toLowerCase() === "input") { 1637 return elem.defaultValue; 1638 } 1639 }); 1640 } 1641 if (!assert(function(el) { 1642 return el.getAttribute("disabled") == null; 1643 })) { 1644 addHandle(booleans, function(elem, name, isXML2) { 1645 var val; 1646 if (!isXML2) { 1647 return elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null; 1648 } 1649 }); 1650 } 1651 return Sizzle2; 1652 }(window2) 1653 ); 1654 jQuery.find = Sizzle; 1655 jQuery.expr = Sizzle.selectors; 1656 jQuery.expr[":"] = jQuery.expr.pseudos; 1657 jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; 1658 jQuery.text = Sizzle.getText; 1659 jQuery.isXMLDoc = Sizzle.isXML; 1660 jQuery.contains = Sizzle.contains; 1661 jQuery.escapeSelector = Sizzle.escape; 1662 var dir = function(elem, dir2, until) { 1663 var matched = [], truncate = until !== void 0; 1664 while ((elem = elem[dir2]) && elem.nodeType !== 9) { 1665 if (elem.nodeType === 1) { 1666 if (truncate && jQuery(elem).is(until)) { 1667 break; 1668 } 1669 matched.push(elem); 1670 } 1671 } 1672 return matched; 1673 }; 1674 var siblings = function(n, elem) { 1675 var matched = []; 1676 for (; n; n = n.nextSibling) { 1677 if (n.nodeType === 1 && n !== elem) { 1678 matched.push(n); 1679 } 1680 } 1681 return matched; 1682 }; 1683 var rneedsContext = jQuery.expr.match.needsContext; 1684 function nodeName(elem, name) { 1685 return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); 1686 } 1687 ; 1688 var rsingleTag = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i; 1689 function winnow(elements, qualifier, not) { 1690 if (isFunction(qualifier)) { 1691 return jQuery.grep(elements, function(elem, i) { 1692 return !!qualifier.call(elem, i, elem) !== not; 1693 }); 1694 } 1695 if (qualifier.nodeType) { 1696 return jQuery.grep(elements, function(elem) { 1697 return elem === qualifier !== not; 1698 }); 1699 } 1700 if (typeof qualifier !== "string") { 1701 return jQuery.grep(elements, function(elem) { 1702 return indexOf.call(qualifier, elem) > -1 !== not; 1703 }); 1704 } 1705 return jQuery.filter(qualifier, elements, not); 1706 } 1707 jQuery.filter = function(expr, elems, not) { 1708 var elem = elems[0]; 1709 if (not) { 1710 expr = ":not(" + expr + ")"; 1711 } 1712 if (elems.length === 1 && elem.nodeType === 1) { 1713 return jQuery.find.matchesSelector(elem, expr) ? [elem] : []; 1714 } 1715 return jQuery.find.matches(expr, jQuery.grep(elems, function(elem2) { 1716 return elem2.nodeType === 1; 1717 })); 1718 }; 1719 jQuery.fn.extend({ 1720 find: function(selector) { 1721 var i, ret, len = this.length, self2 = this; 1722 if (typeof selector !== "string") { 1723 return this.pushStack(jQuery(selector).filter(function() { 1724 for (i = 0; i < len; i++) { 1725 if (jQuery.contains(self2[i], this)) { 1726 return true; 1727 } 1728 } 1729 })); 1730 } 1731 ret = this.pushStack([]); 1732 for (i = 0; i < len; i++) { 1733 jQuery.find(selector, self2[i], ret); 1734 } 1735 return len > 1 ? jQuery.uniqueSort(ret) : ret; 1736 }, 1737 filter: function(selector) { 1738 return this.pushStack(winnow(this, selector || [], false)); 1739 }, 1740 not: function(selector) { 1741 return this.pushStack(winnow(this, selector || [], true)); 1742 }, 1743 is: function(selector) { 1744 return !!winnow( 1745 this, 1746 // If this is a positional/relative selector, check membership in the returned set 1747 // so $("p:first").is("p:last") won't return true for a doc with two "p". 1748 typeof selector === "string" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], 1749 false 1750 ).length; 1751 } 1752 }); 1753 var rootjQuery, rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, init = jQuery.fn.init = function(selector, context, root) { 1754 var match, elem; 1755 if (!selector) { 1756 return this; 1757 } 1758 root = root || rootjQuery; 1759 if (typeof selector === "string") { 1760 if (selector[0] === "<" && selector[selector.length - 1] === ">" && selector.length >= 3) { 1761 match = [null, selector, null]; 1762 } else { 1763 match = rquickExpr.exec(selector); 1764 } 1765 if (match && (match[1] || !context)) { 1766 if (match[1]) { 1767 context = context instanceof jQuery ? context[0] : context; 1768 jQuery.merge(this, jQuery.parseHTML( 1769 match[1], 1770 context && context.nodeType ? context.ownerDocument || context : document, 1771 true 1772 )); 1773 if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) { 1774 for (match in context) { 1775 if (isFunction(this[match])) { 1776 this[match](context[match]); 1777 } else { 1778 this.attr(match, context[match]); 1779 } 1780 } 1781 } 1782 return this; 1783 } else { 1784 elem = document.getElementById(match[2]); 1785 if (elem) { 1786 this[0] = elem; 1787 this.length = 1; 1788 } 1789 return this; 1790 } 1791 } else if (!context || context.jquery) { 1792 return (context || root).find(selector); 1793 } else { 1794 return this.constructor(context).find(selector); 1795 } 1796 } else if (selector.nodeType) { 1797 this[0] = selector; 1798 this.length = 1; 1799 return this; 1800 } else if (isFunction(selector)) { 1801 return root.ready !== void 0 ? root.ready(selector) : ( 1802 // Execute immediately if ready is not present 1803 selector(jQuery) 1804 ); 1805 } 1806 return jQuery.makeArray(selector, this); 1807 }; 1808 init.prototype = jQuery.fn; 1809 rootjQuery = jQuery(document); 1810 var rparentsprev = /^(?:parents|prev(?:Until|All))/, guaranteedUnique = { 1811 children: true, 1812 contents: true, 1813 next: true, 1814 prev: true 1815 }; 1816 jQuery.fn.extend({ 1817 has: function(target) { 1818 var targets = jQuery(target, this), l = targets.length; 1819 return this.filter(function() { 1820 var i = 0; 1821 for (; i < l; i++) { 1822 if (jQuery.contains(this, targets[i])) { 1823 return true; 1824 } 1825 } 1826 }); 1827 }, 1828 closest: function(selectors, context) { 1829 var cur, i = 0, l = this.length, matched = [], targets = typeof selectors !== "string" && jQuery(selectors); 1830 if (!rneedsContext.test(selectors)) { 1831 for (; i < l; i++) { 1832 for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) { 1833 if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : ( 1834 // Don't pass non-elements to Sizzle 1835 cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors) 1836 ))) { 1837 matched.push(cur); 1838 break; 1839 } 1840 } 1841 } 1842 } 1843 return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched); 1844 }, 1845 // Determine the position of an element within the set 1846 index: function(elem) { 1847 if (!elem) { 1848 return this[0] && this[0].parentNode ? this.first().prevAll().length : -1; 1849 } 1850 if (typeof elem === "string") { 1851 return indexOf.call(jQuery(elem), this[0]); 1852 } 1853 return indexOf.call( 1854 this, 1855 // If it receives a jQuery object, the first element is used 1856 elem.jquery ? elem[0] : elem 1857 ); 1858 }, 1859 add: function(selector, context) { 1860 return this.pushStack( 1861 jQuery.uniqueSort( 1862 jQuery.merge(this.get(), jQuery(selector, context)) 1863 ) 1864 ); 1865 }, 1866 addBack: function(selector) { 1867 return this.add( 1868 selector == null ? this.prevObject : this.prevObject.filter(selector) 1869 ); 1870 } 1871 }); 1872 function sibling(cur, dir2) { 1873 while ((cur = cur[dir2]) && cur.nodeType !== 1) { 1874 } 1875 return cur; 1876 } 1877 jQuery.each({ 1878 parent: function(elem) { 1879 var parent = elem.parentNode; 1880 return parent && parent.nodeType !== 11 ? parent : null; 1881 }, 1882 parents: function(elem) { 1883 return dir(elem, "parentNode"); 1884 }, 1885 parentsUntil: function(elem, _i, until) { 1886 return dir(elem, "parentNode", until); 1887 }, 1888 next: function(elem) { 1889 return sibling(elem, "nextSibling"); 1890 }, 1891 prev: function(elem) { 1892 return sibling(elem, "previousSibling"); 1893 }, 1894 nextAll: function(elem) { 1895 return dir(elem, "nextSibling"); 1896 }, 1897 prevAll: function(elem) { 1898 return dir(elem, "previousSibling"); 1899 }, 1900 nextUntil: function(elem, _i, until) { 1901 return dir(elem, "nextSibling", until); 1902 }, 1903 prevUntil: function(elem, _i, until) { 1904 return dir(elem, "previousSibling", until); 1905 }, 1906 siblings: function(elem) { 1907 return siblings((elem.parentNode || {}).firstChild, elem); 1908 }, 1909 children: function(elem) { 1910 return siblings(elem.firstChild); 1911 }, 1912 contents: function(elem) { 1913 if (elem.contentDocument != null && // Support: IE 11+ 1914 // <object> elements with no `data` attribute has an object 1915 // `contentDocument` with a `null` prototype. 1916 getProto(elem.contentDocument)) { 1917 return elem.contentDocument; 1918 } 1919 if (nodeName(elem, "template")) { 1920 elem = elem.content || elem; 1921 } 1922 return jQuery.merge([], elem.childNodes); 1923 } 1924 }, function(name, fn) { 1925 jQuery.fn[name] = function(until, selector) { 1926 var matched = jQuery.map(this, fn, until); 1927 if (name.slice(-5) !== "Until") { 1928 selector = until; 1929 } 1930 if (selector && typeof selector === "string") { 1931 matched = jQuery.filter(selector, matched); 1932 } 1933 if (this.length > 1) { 1934 if (!guaranteedUnique[name]) { 1935 jQuery.uniqueSort(matched); 1936 } 1937 if (rparentsprev.test(name)) { 1938 matched.reverse(); 1939 } 1940 } 1941 return this.pushStack(matched); 1942 }; 1943 }); 1944 var rnothtmlwhite = /[^\x20\t\r\n\f]+/g; 1945 function createOptions(options) { 1946 var object = {}; 1947 jQuery.each(options.match(rnothtmlwhite) || [], function(_, flag) { 1948 object[flag] = true; 1949 }); 1950 return object; 1951 } 1952 jQuery.Callbacks = function(options) { 1953 options = typeof options === "string" ? createOptions(options) : jQuery.extend({}, options); 1954 var firing, memory, fired, locked, list = [], queue = [], firingIndex = -1, fire = function() { 1955 locked = locked || options.once; 1956 fired = firing = true; 1957 for (; queue.length; firingIndex = -1) { 1958 memory = queue.shift(); 1959 while (++firingIndex < list.length) { 1960 if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) { 1961 firingIndex = list.length; 1962 memory = false; 1963 } 1964 } 1965 } 1966 if (!options.memory) { 1967 memory = false; 1968 } 1969 firing = false; 1970 if (locked) { 1971 if (memory) { 1972 list = []; 1973 } else { 1974 list = ""; 1975 } 1976 } 1977 }, self2 = { 1978 // Add a callback or a collection of callbacks to the list 1979 add: function() { 1980 if (list) { 1981 if (memory && !firing) { 1982 firingIndex = list.length - 1; 1983 queue.push(memory); 1984 } 1985 (function add(args) { 1986 jQuery.each(args, function(_, arg) { 1987 if (isFunction(arg)) { 1988 if (!options.unique || !self2.has(arg)) { 1989 list.push(arg); 1990 } 1991 } else if (arg && arg.length && toType(arg) !== "string") { 1992 add(arg); 1993 } 1994 }); 1995 })(arguments); 1996 if (memory && !firing) { 1997 fire(); 1998 } 1999 } 2000 return this; 2001 }, 2002 // Remove a callback from the list 2003 remove: function() { 2004 jQuery.each(arguments, function(_, arg) { 2005 var index; 2006 while ((index = jQuery.inArray(arg, list, index)) > -1) { 2007 list.splice(index, 1); 2008 if (index <= firingIndex) { 2009 firingIndex--; 2010 } 2011 } 2012 }); 2013 return this; 2014 }, 2015 // Check if a given callback is in the list. 2016 // If no argument is given, return whether or not list has callbacks attached. 2017 has: function(fn) { 2018 return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0; 2019 }, 2020 // Remove all callbacks from the list 2021 empty: function() { 2022 if (list) { 2023 list = []; 2024 } 2025 return this; 2026 }, 2027 // Disable .fire and .add 2028 // Abort any current/pending executions 2029 // Clear all callbacks and values 2030 disable: function() { 2031 locked = queue = []; 2032 list = memory = ""; 2033 return this; 2034 }, 2035 disabled: function() { 2036 return !list; 2037 }, 2038 // Disable .fire 2039 // Also disable .add unless we have memory (since it would have no effect) 2040 // Abort any pending executions 2041 lock: function() { 2042 locked = queue = []; 2043 if (!memory && !firing) { 2044 list = memory = ""; 2045 } 2046 return this; 2047 }, 2048 locked: function() { 2049 return !!locked; 2050 }, 2051 // Call all callbacks with the given context and arguments 2052 fireWith: function(context, args) { 2053 if (!locked) { 2054 args = args || []; 2055 args = [context, args.slice ? args.slice() : args]; 2056 queue.push(args); 2057 if (!firing) { 2058 fire(); 2059 } 2060 } 2061 return this; 2062 }, 2063 // Call all the callbacks with the given arguments 2064 fire: function() { 2065 self2.fireWith(this, arguments); 2066 return this; 2067 }, 2068 // To know if the callbacks have already been called at least once 2069 fired: function() { 2070 return !!fired; 2071 } 2072 }; 2073 return self2; 2074 }; 2075 function Identity(v) { 2076 return v; 2077 } 2078 function Thrower(ex) { 2079 throw ex; 2080 } 2081 function adoptValue(value, resolve, reject, noValue) { 2082 var method; 2083 try { 2084 if (value && isFunction(method = value.promise)) { 2085 method.call(value).done(resolve).fail(reject); 2086 } else if (value && isFunction(method = value.then)) { 2087 method.call(value, resolve, reject); 2088 } else { 2089 resolve.apply(void 0, [value].slice(noValue)); 2090 } 2091 } catch (value2) { 2092 reject.apply(void 0, [value2]); 2093 } 2094 } 2095 jQuery.extend({ 2096 Deferred: function(func) { 2097 var tuples = [ 2098 // action, add listener, callbacks, 2099 // ... .then handlers, argument index, [final state] 2100 [ 2101 "notify", 2102 "progress", 2103 jQuery.Callbacks("memory"), 2104 jQuery.Callbacks("memory"), 2105 2 2106 ], 2107 [ 2108 "resolve", 2109 "done", 2110 jQuery.Callbacks("once memory"), 2111 jQuery.Callbacks("once memory"), 2112 0, 2113 "resolved" 2114 ], 2115 [ 2116 "reject", 2117 "fail", 2118 jQuery.Callbacks("once memory"), 2119 jQuery.Callbacks("once memory"), 2120 1, 2121 "rejected" 2122 ] 2123 ], state = "pending", promise = { 2124 state: function() { 2125 return state; 2126 }, 2127 always: function() { 2128 deferred.done(arguments).fail(arguments); 2129 return this; 2130 }, 2131 "catch": function(fn) { 2132 return promise.then(null, fn); 2133 }, 2134 // Keep pipe for back-compat 2135 pipe: function() { 2136 var fns = arguments; 2137 return jQuery.Deferred(function(newDefer) { 2138 jQuery.each(tuples, function(_i, tuple) { 2139 var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]]; 2140 deferred[tuple[1]](function() { 2141 var returned = fn && fn.apply(this, arguments); 2142 if (returned && isFunction(returned.promise)) { 2143 returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject); 2144 } else { 2145 newDefer[tuple[0] + "With"]( 2146 this, 2147 fn ? [returned] : arguments 2148 ); 2149 } 2150 }); 2151 }); 2152 fns = null; 2153 }).promise(); 2154 }, 2155 then: function(onFulfilled, onRejected, onProgress) { 2156 var maxDepth = 0; 2157 function resolve(depth, deferred2, handler, special) { 2158 return function() { 2159 var that = this, args = arguments, mightThrow = function() { 2160 var returned, then; 2161 if (depth < maxDepth) { 2162 return; 2163 } 2164 returned = handler.apply(that, args); 2165 if (returned === deferred2.promise()) { 2166 throw new TypeError("Thenable self-resolution"); 2167 } 2168 then = returned && // Support: Promises/A+ section 2.3.4 2169 // https://promisesaplus.com/#point-64 2170 // Only check objects and functions for thenability 2171 (typeof returned === "object" || typeof returned === "function") && returned.then; 2172 if (isFunction(then)) { 2173 if (special) { 2174 then.call( 2175 returned, 2176 resolve(maxDepth, deferred2, Identity, special), 2177 resolve(maxDepth, deferred2, Thrower, special) 2178 ); 2179 } else { 2180 maxDepth++; 2181 then.call( 2182 returned, 2183 resolve(maxDepth, deferred2, Identity, special), 2184 resolve(maxDepth, deferred2, Thrower, special), 2185 resolve( 2186 maxDepth, 2187 deferred2, 2188 Identity, 2189 deferred2.notifyWith 2190 ) 2191 ); 2192 } 2193 } else { 2194 if (handler !== Identity) { 2195 that = void 0; 2196 args = [returned]; 2197 } 2198 (special || deferred2.resolveWith)(that, args); 2199 } 2200 }, process = special ? mightThrow : function() { 2201 try { 2202 mightThrow(); 2203 } catch (e) { 2204 if (jQuery.Deferred.exceptionHook) { 2205 jQuery.Deferred.exceptionHook( 2206 e, 2207 process.stackTrace 2208 ); 2209 } 2210 if (depth + 1 >= maxDepth) { 2211 if (handler !== Thrower) { 2212 that = void 0; 2213 args = [e]; 2214 } 2215 deferred2.rejectWith(that, args); 2216 } 2217 } 2218 }; 2219 if (depth) { 2220 process(); 2221 } else { 2222 if (jQuery.Deferred.getStackHook) { 2223 process.stackTrace = jQuery.Deferred.getStackHook(); 2224 } 2225 window2.setTimeout(process); 2226 } 2227 }; 2228 } 2229 return jQuery.Deferred(function(newDefer) { 2230 tuples[0][3].add( 2231 resolve( 2232 0, 2233 newDefer, 2234 isFunction(onProgress) ? onProgress : Identity, 2235 newDefer.notifyWith 2236 ) 2237 ); 2238 tuples[1][3].add( 2239 resolve( 2240 0, 2241 newDefer, 2242 isFunction(onFulfilled) ? onFulfilled : Identity 2243 ) 2244 ); 2245 tuples[2][3].add( 2246 resolve( 2247 0, 2248 newDefer, 2249 isFunction(onRejected) ? onRejected : Thrower 2250 ) 2251 ); 2252 }).promise(); 2253 }, 2254 // Get a promise for this deferred 2255 // If obj is provided, the promise aspect is added to the object 2256 promise: function(obj) { 2257 return obj != null ? jQuery.extend(obj, promise) : promise; 2258 } 2259 }, deferred = {}; 2260 jQuery.each(tuples, function(i, tuple) { 2261 var list = tuple[2], stateString = tuple[5]; 2262 promise[tuple[1]] = list.add; 2263 if (stateString) { 2264 list.add( 2265 function() { 2266 state = stateString; 2267 }, 2268 // rejected_callbacks.disable 2269 // fulfilled_callbacks.disable 2270 tuples[3 - i][2].disable, 2271 // rejected_handlers.disable 2272 // fulfilled_handlers.disable 2273 tuples[3 - i][3].disable, 2274 // progress_callbacks.lock 2275 tuples[0][2].lock, 2276 // progress_handlers.lock 2277 tuples[0][3].lock 2278 ); 2279 } 2280 list.add(tuple[3].fire); 2281 deferred[tuple[0]] = function() { 2282 deferred[tuple[0] + "With"](this === deferred ? void 0 : this, arguments); 2283 return this; 2284 }; 2285 deferred[tuple[0] + "With"] = list.fireWith; 2286 }); 2287 promise.promise(deferred); 2288 if (func) { 2289 func.call(deferred, deferred); 2290 } 2291 return deferred; 2292 }, 2293 // Deferred helper 2294 when: function(singleValue) { 2295 var remaining = arguments.length, i = remaining, resolveContexts = Array(i), resolveValues = slice.call(arguments), master = jQuery.Deferred(), updateFunc = function(i2) { 2296 return function(value) { 2297 resolveContexts[i2] = this; 2298 resolveValues[i2] = arguments.length > 1 ? slice.call(arguments) : value; 2299 if (!--remaining) { 2300 master.resolveWith(resolveContexts, resolveValues); 2301 } 2302 }; 2303 }; 2304 if (remaining <= 1) { 2305 adoptValue( 2306 singleValue, 2307 master.done(updateFunc(i)).resolve, 2308 master.reject, 2309 !remaining 2310 ); 2311 if (master.state() === "pending" || isFunction(resolveValues[i] && resolveValues[i].then)) { 2312 return master.then(); 2313 } 2314 } 2315 while (i--) { 2316 adoptValue(resolveValues[i], updateFunc(i), master.reject); 2317 } 2318 return master.promise(); 2319 } 2320 }); 2321 var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; 2322 jQuery.Deferred.exceptionHook = function(error, stack) { 2323 if (window2.console && window2.console.warn && error && rerrorNames.test(error.name)) { 2324 window2.console.warn("jQuery.Deferred exception: " + error.message, error.stack, stack); 2325 } 2326 }; 2327 jQuery.readyException = function(error) { 2328 window2.setTimeout(function() { 2329 throw error; 2330 }); 2331 }; 2332 var readyList = jQuery.Deferred(); 2333 jQuery.fn.ready = function(fn) { 2334 readyList.then(fn).catch(function(error) { 2335 jQuery.readyException(error); 2336 }); 2337 return this; 2338 }; 2339 jQuery.extend({ 2340 // Is the DOM ready to be used? Set to true once it occurs. 2341 isReady: false, 2342 // A counter to track how many items to wait for before 2343 // the ready event fires. See #6781 2344 readyWait: 1, 2345 // Handle when the DOM is ready 2346 ready: function(wait) { 2347 if (wait === true ? --jQuery.readyWait : jQuery.isReady) { 2348 return; 2349 } 2350 jQuery.isReady = true; 2351 if (wait !== true && --jQuery.readyWait > 0) { 2352 return; 2353 } 2354 readyList.resolveWith(document, [jQuery]); 2355 } 2356 }); 2357 jQuery.ready.then = readyList.then; 2358 function completed() { 2359 document.removeEventListener("DOMContentLoaded", completed); 2360 window2.removeEventListener("load", completed); 2361 jQuery.ready(); 2362 } 2363 if (document.readyState === "complete" || document.readyState !== "loading" && !document.documentElement.doScroll) { 2364 window2.setTimeout(jQuery.ready); 2365 } else { 2366 document.addEventListener("DOMContentLoaded", completed); 2367 window2.addEventListener("load", completed); 2368 } 2369 var access = function(elems, fn, key, value, chainable, emptyGet, raw) { 2370 var i = 0, len = elems.length, bulk = key == null; 2371 if (toType(key) === "object") { 2372 chainable = true; 2373 for (i in key) { 2374 access(elems, fn, i, key[i], true, emptyGet, raw); 2375 } 2376 } else if (value !== void 0) { 2377 chainable = true; 2378 if (!isFunction(value)) { 2379 raw = true; 2380 } 2381 if (bulk) { 2382 if (raw) { 2383 fn.call(elems, value); 2384 fn = null; 2385 } else { 2386 bulk = fn; 2387 fn = function(elem, _key, value2) { 2388 return bulk.call(jQuery(elem), value2); 2389 }; 2390 } 2391 } 2392 if (fn) { 2393 for (; i < len; i++) { 2394 fn( 2395 elems[i], 2396 key, 2397 raw ? value : value.call(elems[i], i, fn(elems[i], key)) 2398 ); 2399 } 2400 } 2401 } 2402 if (chainable) { 2403 return elems; 2404 } 2405 if (bulk) { 2406 return fn.call(elems); 2407 } 2408 return len ? fn(elems[0], key) : emptyGet; 2409 }; 2410 var rmsPrefix = /^-ms-/, rdashAlpha = /-([a-z])/g; 2411 function fcamelCase(_all, letter) { 2412 return letter.toUpperCase(); 2413 } 2414 function camelCase(string) { 2415 return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase); 2416 } 2417 var acceptData = function(owner) { 2418 return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType; 2419 }; 2420 function Data() { 2421 this.expando = jQuery.expando + Data.uid++; 2422 } 2423 Data.uid = 1; 2424 Data.prototype = { 2425 cache: function(owner) { 2426 var value = owner[this.expando]; 2427 if (!value) { 2428 value = {}; 2429 if (acceptData(owner)) { 2430 if (owner.nodeType) { 2431 owner[this.expando] = value; 2432 } else { 2433 Object.defineProperty(owner, this.expando, { 2434 value, 2435 configurable: true 2436 }); 2437 } 2438 } 2439 } 2440 return value; 2441 }, 2442 set: function(owner, data, value) { 2443 var prop, cache = this.cache(owner); 2444 if (typeof data === "string") { 2445 cache[camelCase(data)] = value; 2446 } else { 2447 for (prop in data) { 2448 cache[camelCase(prop)] = data[prop]; 2449 } 2450 } 2451 return cache; 2452 }, 2453 get: function(owner, key) { 2454 return key === void 0 ? this.cache(owner) : ( 2455 // Always use camelCase key (gh-2257) 2456 owner[this.expando] && owner[this.expando][camelCase(key)] 2457 ); 2458 }, 2459 access: function(owner, key, value) { 2460 if (key === void 0 || key && typeof key === "string" && value === void 0) { 2461 return this.get(owner, key); 2462 } 2463 this.set(owner, key, value); 2464 return value !== void 0 ? value : key; 2465 }, 2466 remove: function(owner, key) { 2467 var i, cache = owner[this.expando]; 2468 if (cache === void 0) { 2469 return; 2470 } 2471 if (key !== void 0) { 2472 if (Array.isArray(key)) { 2473 key = key.map(camelCase); 2474 } else { 2475 key = camelCase(key); 2476 key = key in cache ? [key] : key.match(rnothtmlwhite) || []; 2477 } 2478 i = key.length; 2479 while (i--) { 2480 delete cache[key[i]]; 2481 } 2482 } 2483 if (key === void 0 || jQuery.isEmptyObject(cache)) { 2484 if (owner.nodeType) { 2485 owner[this.expando] = void 0; 2486 } else { 2487 delete owner[this.expando]; 2488 } 2489 } 2490 }, 2491 hasData: function(owner) { 2492 var cache = owner[this.expando]; 2493 return cache !== void 0 && !jQuery.isEmptyObject(cache); 2494 } 2495 }; 2496 var dataPriv = new Data(); 2497 var dataUser = new Data(); 2498 var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /[A-Z]/g; 2499 function getData(data) { 2500 if (data === "true") { 2501 return true; 2502 } 2503 if (data === "false") { 2504 return false; 2505 } 2506 if (data === "null") { 2507 return null; 2508 } 2509 if (data === +data + "") { 2510 return +data; 2511 } 2512 if (rbrace.test(data)) { 2513 return JSON.parse(data); 2514 } 2515 return data; 2516 } 2517 function dataAttr(elem, key, data) { 2518 var name; 2519 if (data === void 0 && elem.nodeType === 1) { 2520 name = "data-" + key.replace(rmultiDash, "-$&").toLowerCase(); 2521 data = elem.getAttribute(name); 2522 if (typeof data === "string") { 2523 try { 2524 data = getData(data); 2525 } catch (e) { 2526 } 2527 dataUser.set(elem, key, data); 2528 } else { 2529 data = void 0; 2530 } 2531 } 2532 return data; 2533 } 2534 jQuery.extend({ 2535 hasData: function(elem) { 2536 return dataUser.hasData(elem) || dataPriv.hasData(elem); 2537 }, 2538 data: function(elem, name, data) { 2539 return dataUser.access(elem, name, data); 2540 }, 2541 removeData: function(elem, name) { 2542 dataUser.remove(elem, name); 2543 }, 2544 // TODO: Now that all calls to _data and _removeData have been replaced 2545 // with direct calls to dataPriv methods, these can be deprecated. 2546 _data: function(elem, name, data) { 2547 return dataPriv.access(elem, name, data); 2548 }, 2549 _removeData: function(elem, name) { 2550 dataPriv.remove(elem, name); 2551 } 2552 }); 2553 jQuery.fn.extend({ 2554 data: function(key, value) { 2555 var i, name, data, elem = this[0], attrs = elem && elem.attributes; 2556 if (key === void 0) { 2557 if (this.length) { 2558 data = dataUser.get(elem); 2559 if (elem.nodeType === 1 && !dataPriv.get(elem, "hasDataAttrs")) { 2560 i = attrs.length; 2561 while (i--) { 2562 if (attrs[i]) { 2563 name = attrs[i].name; 2564 if (name.indexOf("data-") === 0) { 2565 name = camelCase(name.slice(5)); 2566 dataAttr(elem, name, data[name]); 2567 } 2568 } 2569 } 2570 dataPriv.set(elem, "hasDataAttrs", true); 2571 } 2572 } 2573 return data; 2574 } 2575 if (typeof key === "object") { 2576 return this.each(function() { 2577 dataUser.set(this, key); 2578 }); 2579 } 2580 return access(this, function(value2) { 2581 var data2; 2582 if (elem && value2 === void 0) { 2583 data2 = dataUser.get(elem, key); 2584 if (data2 !== void 0) { 2585 return data2; 2586 } 2587 data2 = dataAttr(elem, key); 2588 if (data2 !== void 0) { 2589 return data2; 2590 } 2591 return; 2592 } 2593 this.each(function() { 2594 dataUser.set(this, key, value2); 2595 }); 2596 }, null, value, arguments.length > 1, null, true); 2597 }, 2598 removeData: function(key) { 2599 return this.each(function() { 2600 dataUser.remove(this, key); 2601 }); 2602 } 2603 }); 2604 jQuery.extend({ 2605 queue: function(elem, type, data) { 2606 var queue; 2607 if (elem) { 2608 type = (type || "fx") + "queue"; 2609 queue = dataPriv.get(elem, type); 2610 if (data) { 2611 if (!queue || Array.isArray(data)) { 2612 queue = dataPriv.access(elem, type, jQuery.makeArray(data)); 2613 } else { 2614 queue.push(data); 2615 } 2616 } 2617 return queue || []; 2618 } 2619 }, 2620 dequeue: function(elem, type) { 2621 type = type || "fx"; 2622 var queue = jQuery.queue(elem, type), startLength = queue.length, fn = queue.shift(), hooks = jQuery._queueHooks(elem, type), next = function() { 2623 jQuery.dequeue(elem, type); 2624 }; 2625 if (fn === "inprogress") { 2626 fn = queue.shift(); 2627 startLength--; 2628 } 2629 if (fn) { 2630 if (type === "fx") { 2631 queue.unshift("inprogress"); 2632 } 2633 delete hooks.stop; 2634 fn.call(elem, next, hooks); 2635 } 2636 if (!startLength && hooks) { 2637 hooks.empty.fire(); 2638 } 2639 }, 2640 // Not public - generate a queueHooks object, or return the current one 2641 _queueHooks: function(elem, type) { 2642 var key = type + "queueHooks"; 2643 return dataPriv.get(elem, key) || dataPriv.access(elem, key, { 2644 empty: jQuery.Callbacks("once memory").add(function() { 2645 dataPriv.remove(elem, [type + "queue", key]); 2646 }) 2647 }); 2648 } 2649 }); 2650 jQuery.fn.extend({ 2651 queue: function(type, data) { 2652 var setter = 2; 2653 if (typeof type !== "string") { 2654 data = type; 2655 type = "fx"; 2656 setter--; 2657 } 2658 if (arguments.length < setter) { 2659 return jQuery.queue(this[0], type); 2660 } 2661 return data === void 0 ? this : this.each(function() { 2662 var queue = jQuery.queue(this, type, data); 2663 jQuery._queueHooks(this, type); 2664 if (type === "fx" && queue[0] !== "inprogress") { 2665 jQuery.dequeue(this, type); 2666 } 2667 }); 2668 }, 2669 dequeue: function(type) { 2670 return this.each(function() { 2671 jQuery.dequeue(this, type); 2672 }); 2673 }, 2674 clearQueue: function(type) { 2675 return this.queue(type || "fx", []); 2676 }, 2677 // Get a promise resolved when queues of a certain type 2678 // are emptied (fx is the type by default) 2679 promise: function(type, obj) { 2680 var tmp, count = 1, defer = jQuery.Deferred(), elements = this, i = this.length, resolve = function() { 2681 if (!--count) { 2682 defer.resolveWith(elements, [elements]); 2683 } 2684 }; 2685 if (typeof type !== "string") { 2686 obj = type; 2687 type = void 0; 2688 } 2689 type = type || "fx"; 2690 while (i--) { 2691 tmp = dataPriv.get(elements[i], type + "queueHooks"); 2692 if (tmp && tmp.empty) { 2693 count++; 2694 tmp.empty.add(resolve); 2695 } 2696 } 2697 resolve(); 2698 return defer.promise(obj); 2699 } 2700 }); 2701 var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source; 2702 var rcssNum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i"); 2703 var cssExpand = ["Top", "Right", "Bottom", "Left"]; 2704 var documentElement = document.documentElement; 2705 var isAttached = function(elem) { 2706 return jQuery.contains(elem.ownerDocument, elem); 2707 }, composed = { composed: true }; 2708 if (documentElement.getRootNode) { 2709 isAttached = function(elem) { 2710 return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument; 2711 }; 2712 } 2713 var isHiddenWithinTree = function(elem, el) { 2714 elem = el || elem; 2715 return elem.style.display === "none" || elem.style.display === "" && // Otherwise, check computed style 2716 // Support: Firefox <=43 - 45 2717 // Disconnected elements can have computed display: none, so first confirm that elem is 2718 // in the document. 2719 isAttached(elem) && jQuery.css(elem, "display") === "none"; 2720 }; 2721 function adjustCSS(elem, prop, valueParts, tween) { 2722 var adjusted, scale, maxIterations = 20, currentValue = tween ? function() { 2723 return tween.cur(); 2724 } : function() { 2725 return jQuery.css(elem, prop, ""); 2726 }, initial = currentValue(), unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? "" : "px"), initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== "px" && +initial) && rcssNum.exec(jQuery.css(elem, prop)); 2727 if (initialInUnit && initialInUnit[3] !== unit) { 2728 initial = initial / 2; 2729 unit = unit || initialInUnit[3]; 2730 initialInUnit = +initial || 1; 2731 while (maxIterations--) { 2732 jQuery.style(elem, prop, initialInUnit + unit); 2733 if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) { 2734 maxIterations = 0; 2735 } 2736 initialInUnit = initialInUnit / scale; 2737 } 2738 initialInUnit = initialInUnit * 2; 2739 jQuery.style(elem, prop, initialInUnit + unit); 2740 valueParts = valueParts || []; 2741 } 2742 if (valueParts) { 2743 initialInUnit = +initialInUnit || +initial || 0; 2744 adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2]; 2745 if (tween) { 2746 tween.unit = unit; 2747 tween.start = initialInUnit; 2748 tween.end = adjusted; 2749 } 2750 } 2751 return adjusted; 2752 } 2753 var defaultDisplayMap = {}; 2754 function getDefaultDisplay(elem) { 2755 var temp, doc = elem.ownerDocument, nodeName2 = elem.nodeName, display = defaultDisplayMap[nodeName2]; 2756 if (display) { 2757 return display; 2758 } 2759 temp = doc.body.appendChild(doc.createElement(nodeName2)); 2760 display = jQuery.css(temp, "display"); 2761 temp.parentNode.removeChild(temp); 2762 if (display === "none") { 2763 display = "block"; 2764 } 2765 defaultDisplayMap[nodeName2] = display; 2766 return display; 2767 } 2768 function showHide(elements, show) { 2769 var display, elem, values = [], index = 0, length = elements.length; 2770 for (; index < length; index++) { 2771 elem = elements[index]; 2772 if (!elem.style) { 2773 continue; 2774 } 2775 display = elem.style.display; 2776 if (show) { 2777 if (display === "none") { 2778 values[index] = dataPriv.get(elem, "display") || null; 2779 if (!values[index]) { 2780 elem.style.display = ""; 2781 } 2782 } 2783 if (elem.style.display === "" && isHiddenWithinTree(elem)) { 2784 values[index] = getDefaultDisplay(elem); 2785 } 2786 } else { 2787 if (display !== "none") { 2788 values[index] = "none"; 2789 dataPriv.set(elem, "display", display); 2790 } 2791 } 2792 } 2793 for (index = 0; index < length; index++) { 2794 if (values[index] != null) { 2795 elements[index].style.display = values[index]; 2796 } 2797 } 2798 return elements; 2799 } 2800 jQuery.fn.extend({ 2801 show: function() { 2802 return showHide(this, true); 2803 }, 2804 hide: function() { 2805 return showHide(this); 2806 }, 2807 toggle: function(state) { 2808 if (typeof state === "boolean") { 2809 return state ? this.show() : this.hide(); 2810 } 2811 return this.each(function() { 2812 if (isHiddenWithinTree(this)) { 2813 jQuery(this).show(); 2814 } else { 2815 jQuery(this).hide(); 2816 } 2817 }); 2818 } 2819 }); 2820 var rcheckableType = /^(?:checkbox|radio)$/i; 2821 var rtagName = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i; 2822 var rscriptType = /^$|^module$|\/(?:java|ecma)script/i; 2823 (function() { 2824 var fragment = document.createDocumentFragment(), div = fragment.appendChild(document.createElement("div")), input = document.createElement("input"); 2825 input.setAttribute("type", "radio"); 2826 input.setAttribute("checked", "checked"); 2827 input.setAttribute("name", "t"); 2828 div.appendChild(input); 2829 support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked; 2830 div.innerHTML = "<textarea>x</textarea>"; 2831 support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue; 2832 div.innerHTML = "<option></option>"; 2833 support.option = !!div.lastChild; 2834 })(); 2835 var wrapMap = { 2836 // XHTML parsers do not magically insert elements in the 2837 // same way that tag soup parsers do. So we cannot shorten 2838 // this by omitting <tbody> or other required elements. 2839 thead: [1, "<table>", "</table>"], 2840 col: [2, "<table><colgroup>", "</colgroup></table>"], 2841 tr: [2, "<table><tbody>", "</tbody></table>"], 2842 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"], 2843 _default: [0, "", ""] 2844 }; 2845 wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; 2846 wrapMap.th = wrapMap.td; 2847 if (!support.option) { 2848 wrapMap.optgroup = wrapMap.option = [1, "<select multiple='multiple'>", "</select>"]; 2849 } 2850 function getAll(context, tag) { 2851 var ret; 2852 if (typeof context.getElementsByTagName !== "undefined") { 2853 ret = context.getElementsByTagName(tag || "*"); 2854 } else if (typeof context.querySelectorAll !== "undefined") { 2855 ret = context.querySelectorAll(tag || "*"); 2856 } else { 2857 ret = []; 2858 } 2859 if (tag === void 0 || tag && nodeName(context, tag)) { 2860 return jQuery.merge([context], ret); 2861 } 2862 return ret; 2863 } 2864 function setGlobalEval(elems, refElements) { 2865 var i = 0, l = elems.length; 2866 for (; i < l; i++) { 2867 dataPriv.set( 2868 elems[i], 2869 "globalEval", 2870 !refElements || dataPriv.get(refElements[i], "globalEval") 2871 ); 2872 } 2873 } 2874 var rhtml = /<|&#?\w+;/; 2875 function buildFragment(elems, context, scripts, selection, ignored) { 2876 var elem, tmp, tag, wrap, attached, j, fragment = context.createDocumentFragment(), nodes = [], i = 0, l = elems.length; 2877 for (; i < l; i++) { 2878 elem = elems[i]; 2879 if (elem || elem === 0) { 2880 if (toType(elem) === "object") { 2881 jQuery.merge(nodes, elem.nodeType ? [elem] : elem); 2882 } else if (!rhtml.test(elem)) { 2883 nodes.push(context.createTextNode(elem)); 2884 } else { 2885 tmp = tmp || fragment.appendChild(context.createElement("div")); 2886 tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase(); 2887 wrap = wrapMap[tag] || wrapMap._default; 2888 tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2]; 2889 j = wrap[0]; 2890 while (j--) { 2891 tmp = tmp.lastChild; 2892 } 2893 jQuery.merge(nodes, tmp.childNodes); 2894 tmp = fragment.firstChild; 2895 tmp.textContent = ""; 2896 } 2897 } 2898 } 2899 fragment.textContent = ""; 2900 i = 0; 2901 while (elem = nodes[i++]) { 2902 if (selection && jQuery.inArray(elem, selection) > -1) { 2903 if (ignored) { 2904 ignored.push(elem); 2905 } 2906 continue; 2907 } 2908 attached = isAttached(elem); 2909 tmp = getAll(fragment.appendChild(elem), "script"); 2910 if (attached) { 2911 setGlobalEval(tmp); 2912 } 2913 if (scripts) { 2914 j = 0; 2915 while (elem = tmp[j++]) { 2916 if (rscriptType.test(elem.type || "")) { 2917 scripts.push(elem); 2918 } 2919 } 2920 } 2921 } 2922 return fragment; 2923 } 2924 var rkeyEvent = /^key/, rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, rtypenamespace = /^([^.]*)(?:\.(.+)|)/; 2925 function returnTrue() { 2926 return true; 2927 } 2928 function returnFalse() { 2929 return false; 2930 } 2931 function expectSync(elem, type) { 2932 return elem === safeActiveElement() === (type === "focus"); 2933 } 2934 function safeActiveElement() { 2935 try { 2936 return document.activeElement; 2937 } catch (err) { 2938 } 2939 } 2940 function on(elem, types, selector, data, fn, one) { 2941 var origFn, type; 2942 if (typeof types === "object") { 2943 if (typeof selector !== "string") { 2944 data = data || selector; 2945 selector = void 0; 2946 } 2947 for (type in types) { 2948 on(elem, type, selector, data, types[type], one); 2949 } 2950 return elem; 2951 } 2952 if (data == null && fn == null) { 2953 fn = selector; 2954 data = selector = void 0; 2955 } else if (fn == null) { 2956 if (typeof selector === "string") { 2957 fn = data; 2958 data = void 0; 2959 } else { 2960 fn = data; 2961 data = selector; 2962 selector = void 0; 2963 } 2964 } 2965 if (fn === false) { 2966 fn = returnFalse; 2967 } else if (!fn) { 2968 return elem; 2969 } 2970 if (one === 1) { 2971 origFn = fn; 2972 fn = function(event) { 2973 jQuery().off(event); 2974 return origFn.apply(this, arguments); 2975 }; 2976 fn.guid = origFn.guid || (origFn.guid = jQuery.guid++); 2977 } 2978 return elem.each(function() { 2979 jQuery.event.add(this, types, fn, data, selector); 2980 }); 2981 } 2982 jQuery.event = { 2983 global: {}, 2984 add: function(elem, types, handler, data, selector) { 2985 var handleObjIn, eventHandle, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.get(elem); 2986 if (!acceptData(elem)) { 2987 return; 2988 } 2989 if (handler.handler) { 2990 handleObjIn = handler; 2991 handler = handleObjIn.handler; 2992 selector = handleObjIn.selector; 2993 } 2994 if (selector) { 2995 jQuery.find.matchesSelector(documentElement, selector); 2996 } 2997 if (!handler.guid) { 2998 handler.guid = jQuery.guid++; 2999 } 3000 if (!(events = elemData.events)) { 3001 events = elemData.events = /* @__PURE__ */ Object.create(null); 3002 } 3003 if (!(eventHandle = elemData.handle)) { 3004 eventHandle = elemData.handle = function(e) { 3005 return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : void 0; 3006 }; 3007 } 3008 types = (types || "").match(rnothtmlwhite) || [""]; 3009 t = types.length; 3010 while (t--) { 3011 tmp = rtypenamespace.exec(types[t]) || []; 3012 type = origType = tmp[1]; 3013 namespaces = (tmp[2] || "").split(".").sort(); 3014 if (!type) { 3015 continue; 3016 } 3017 special = jQuery.event.special[type] || {}; 3018 type = (selector ? special.delegateType : special.bindType) || type; 3019 special = jQuery.event.special[type] || {}; 3020 handleObj = jQuery.extend({ 3021 type, 3022 origType, 3023 data, 3024 handler, 3025 guid: handler.guid, 3026 selector, 3027 needsContext: selector && jQuery.expr.match.needsContext.test(selector), 3028 namespace: namespaces.join(".") 3029 }, handleObjIn); 3030 if (!(handlers = events[type])) { 3031 handlers = events[type] = []; 3032 handlers.delegateCount = 0; 3033 if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) { 3034 if (elem.addEventListener) { 3035 elem.addEventListener(type, eventHandle); 3036 } 3037 } 3038 } 3039 if (special.add) { 3040 special.add.call(elem, handleObj); 3041 if (!handleObj.handler.guid) { 3042 handleObj.handler.guid = handler.guid; 3043 } 3044 } 3045 if (selector) { 3046 handlers.splice(handlers.delegateCount++, 0, handleObj); 3047 } else { 3048 handlers.push(handleObj); 3049 } 3050 jQuery.event.global[type] = true; 3051 } 3052 }, 3053 // Detach an event or set of events from an element 3054 remove: function(elem, types, handler, selector, mappedTypes) { 3055 var j, origCount, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.hasData(elem) && dataPriv.get(elem); 3056 if (!elemData || !(events = elemData.events)) { 3057 return; 3058 } 3059 types = (types || "").match(rnothtmlwhite) || [""]; 3060 t = types.length; 3061 while (t--) { 3062 tmp = rtypenamespace.exec(types[t]) || []; 3063 type = origType = tmp[1]; 3064 namespaces = (tmp[2] || "").split(".").sort(); 3065 if (!type) { 3066 for (type in events) { 3067 jQuery.event.remove(elem, type + types[t], handler, selector, true); 3068 } 3069 continue; 3070 } 3071 special = jQuery.event.special[type] || {}; 3072 type = (selector ? special.delegateType : special.bindType) || type; 3073 handlers = events[type] || []; 3074 tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)"); 3075 origCount = j = handlers.length; 3076 while (j--) { 3077 handleObj = handlers[j]; 3078 if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === "**" && handleObj.selector)) { 3079 handlers.splice(j, 1); 3080 if (handleObj.selector) { 3081 handlers.delegateCount--; 3082 } 3083 if (special.remove) { 3084 special.remove.call(elem, handleObj); 3085 } 3086 } 3087 } 3088 if (origCount && !handlers.length) { 3089 if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) { 3090 jQuery.removeEvent(elem, type, elemData.handle); 3091 } 3092 delete events[type]; 3093 } 3094 } 3095 if (jQuery.isEmptyObject(events)) { 3096 dataPriv.remove(elem, "handle events"); 3097 } 3098 }, 3099 dispatch: function(nativeEvent) { 3100 var i, j, ret, matched, handleObj, handlerQueue, args = new Array(arguments.length), event = jQuery.event.fix(nativeEvent), handlers = (dataPriv.get(this, "events") || /* @__PURE__ */ Object.create(null))[event.type] || [], special = jQuery.event.special[event.type] || {}; 3101 args[0] = event; 3102 for (i = 1; i < arguments.length; i++) { 3103 args[i] = arguments[i]; 3104 } 3105 event.delegateTarget = this; 3106 if (special.preDispatch && special.preDispatch.call(this, event) === false) { 3107 return; 3108 } 3109 handlerQueue = jQuery.event.handlers.call(this, event, handlers); 3110 i = 0; 3111 while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) { 3112 event.currentTarget = matched.elem; 3113 j = 0; 3114 while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) { 3115 if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) { 3116 event.handleObj = handleObj; 3117 event.data = handleObj.data; 3118 ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args); 3119 if (ret !== void 0) { 3120 if ((event.result = ret) === false) { 3121 event.preventDefault(); 3122 event.stopPropagation(); 3123 } 3124 } 3125 } 3126 } 3127 } 3128 if (special.postDispatch) { 3129 special.postDispatch.call(this, event); 3130 } 3131 return event.result; 3132 }, 3133 handlers: function(event, handlers) { 3134 var i, handleObj, sel, matchedHandlers, matchedSelectors, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target; 3135 if (delegateCount && // Support: IE <=9 3136 // Black-hole SVG <use> instance trees (trac-13180) 3137 cur.nodeType && // Support: Firefox <=42 3138 // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) 3139 // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click 3140 // Support: IE 11 only 3141 // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) 3142 !(event.type === "click" && event.button >= 1)) { 3143 for (; cur !== this; cur = cur.parentNode || this) { 3144 if (cur.nodeType === 1 && !(event.type === "click" && cur.disabled === true)) { 3145 matchedHandlers = []; 3146 matchedSelectors = {}; 3147 for (i = 0; i < delegateCount; i++) { 3148 handleObj = handlers[i]; 3149 sel = handleObj.selector + " "; 3150 if (matchedSelectors[sel] === void 0) { 3151 matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length; 3152 } 3153 if (matchedSelectors[sel]) { 3154 matchedHandlers.push(handleObj); 3155 } 3156 } 3157 if (matchedHandlers.length) { 3158 handlerQueue.push({ elem: cur, handlers: matchedHandlers }); 3159 } 3160 } 3161 } 3162 } 3163 cur = this; 3164 if (delegateCount < handlers.length) { 3165 handlerQueue.push({ elem: cur, handlers: handlers.slice(delegateCount) }); 3166 } 3167 return handlerQueue; 3168 }, 3169 addProp: function(name, hook) { 3170 Object.defineProperty(jQuery.Event.prototype, name, { 3171 enumerable: true, 3172 configurable: true, 3173 get: isFunction(hook) ? function() { 3174 if (this.originalEvent) { 3175 return hook(this.originalEvent); 3176 } 3177 } : function() { 3178 if (this.originalEvent) { 3179 return this.originalEvent[name]; 3180 } 3181 }, 3182 set: function(value) { 3183 Object.defineProperty(this, name, { 3184 enumerable: true, 3185 configurable: true, 3186 writable: true, 3187 value 3188 }); 3189 } 3190 }); 3191 }, 3192 fix: function(originalEvent) { 3193 return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent); 3194 }, 3195 special: { 3196 load: { 3197 // Prevent triggered image.load events from bubbling to window.load 3198 noBubble: true 3199 }, 3200 click: { 3201 // Utilize native event to ensure correct state for checkable inputs 3202 setup: function(data) { 3203 var el = this || data; 3204 if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) { 3205 leverageNative(el, "click", returnTrue); 3206 } 3207 return false; 3208 }, 3209 trigger: function(data) { 3210 var el = this || data; 3211 if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) { 3212 leverageNative(el, "click"); 3213 } 3214 return true; 3215 }, 3216 // For cross-browser consistency, suppress native .click() on links 3217 // Also prevent it if we're currently inside a leveraged native-event stack 3218 _default: function(event) { 3219 var target = event.target; 3220 return rcheckableType.test(target.type) && target.click && nodeName(target, "input") && dataPriv.get(target, "click") || nodeName(target, "a"); 3221 } 3222 }, 3223 beforeunload: { 3224 postDispatch: function(event) { 3225 if (event.result !== void 0 && event.originalEvent) { 3226 event.originalEvent.returnValue = event.result; 3227 } 3228 } 3229 } 3230 } 3231 }; 3232 function leverageNative(el, type, expectSync2) { 3233 if (!expectSync2) { 3234 if (dataPriv.get(el, type) === void 0) { 3235 jQuery.event.add(el, type, returnTrue); 3236 } 3237 return; 3238 } 3239 dataPriv.set(el, type, false); 3240 jQuery.event.add(el, type, { 3241 namespace: false, 3242 handler: function(event) { 3243 var notAsync, result, saved = dataPriv.get(this, type); 3244 if (event.isTrigger & 1 && this[type]) { 3245 if (!saved.length) { 3246 saved = slice.call(arguments); 3247 dataPriv.set(this, type, saved); 3248 notAsync = expectSync2(this, type); 3249 this[type](); 3250 result = dataPriv.get(this, type); 3251 if (saved !== result || notAsync) { 3252 dataPriv.set(this, type, false); 3253 } else { 3254 result = {}; 3255 } 3256 if (saved !== result) { 3257 event.stopImmediatePropagation(); 3258 event.preventDefault(); 3259 return result.value; 3260 } 3261 } else if ((jQuery.event.special[type] || {}).delegateType) { 3262 event.stopPropagation(); 3263 } 3264 } else if (saved.length) { 3265 dataPriv.set(this, type, { 3266 value: jQuery.event.trigger( 3267 // Support: IE <=9 - 11+ 3268 // Extend with the prototype to reset the above stopImmediatePropagation() 3269 jQuery.extend(saved[0], jQuery.Event.prototype), 3270 saved.slice(1), 3271 this 3272 ) 3273 }); 3274 event.stopImmediatePropagation(); 3275 } 3276 } 3277 }); 3278 } 3279 jQuery.removeEvent = function(elem, type, handle) { 3280 if (elem.removeEventListener) { 3281 elem.removeEventListener(type, handle); 3282 } 3283 }; 3284 jQuery.Event = function(src, props) { 3285 if (!(this instanceof jQuery.Event)) { 3286 return new jQuery.Event(src, props); 3287 } 3288 if (src && src.type) { 3289 this.originalEvent = src; 3290 this.type = src.type; 3291 this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === void 0 && // Support: Android <=2.3 only 3292 src.returnValue === false ? returnTrue : returnFalse; 3293 this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target; 3294 this.currentTarget = src.currentTarget; 3295 this.relatedTarget = src.relatedTarget; 3296 } else { 3297 this.type = src; 3298 } 3299 if (props) { 3300 jQuery.extend(this, props); 3301 } 3302 this.timeStamp = src && src.timeStamp || Date.now(); 3303 this[jQuery.expando] = true; 3304 }; 3305 jQuery.Event.prototype = { 3306 constructor: jQuery.Event, 3307 isDefaultPrevented: returnFalse, 3308 isPropagationStopped: returnFalse, 3309 isImmediatePropagationStopped: returnFalse, 3310 isSimulated: false, 3311 preventDefault: function() { 3312 var e = this.originalEvent; 3313 this.isDefaultPrevented = returnTrue; 3314 if (e && !this.isSimulated) { 3315 e.preventDefault(); 3316 } 3317 }, 3318 stopPropagation: function() { 3319 var e = this.originalEvent; 3320 this.isPropagationStopped = returnTrue; 3321 if (e && !this.isSimulated) { 3322 e.stopPropagation(); 3323 } 3324 }, 3325 stopImmediatePropagation: function() { 3326 var e = this.originalEvent; 3327 this.isImmediatePropagationStopped = returnTrue; 3328 if (e && !this.isSimulated) { 3329 e.stopImmediatePropagation(); 3330 } 3331 this.stopPropagation(); 3332 } 3333 }; 3334 jQuery.each({ 3335 altKey: true, 3336 bubbles: true, 3337 cancelable: true, 3338 changedTouches: true, 3339 ctrlKey: true, 3340 detail: true, 3341 eventPhase: true, 3342 metaKey: true, 3343 pageX: true, 3344 pageY: true, 3345 shiftKey: true, 3346 view: true, 3347 "char": true, 3348 code: true, 3349 charCode: true, 3350 key: true, 3351 keyCode: true, 3352 button: true, 3353 buttons: true, 3354 clientX: true, 3355 clientY: true, 3356 offsetX: true, 3357 offsetY: true, 3358 pointerId: true, 3359 pointerType: true, 3360 screenX: true, 3361 screenY: true, 3362 targetTouches: true, 3363 toElement: true, 3364 touches: true, 3365 which: function(event) { 3366 var button = event.button; 3367 if (event.which == null && rkeyEvent.test(event.type)) { 3368 return event.charCode != null ? event.charCode : event.keyCode; 3369 } 3370 if (!event.which && button !== void 0 && rmouseEvent.test(event.type)) { 3371 if (button & 1) { 3372 return 1; 3373 } 3374 if (button & 2) { 3375 return 3; 3376 } 3377 if (button & 4) { 3378 return 2; 3379 } 3380 return 0; 3381 } 3382 return event.which; 3383 } 3384 }, jQuery.event.addProp); 3385 jQuery.each({ focus: "focusin", blur: "focusout" }, function(type, delegateType) { 3386 jQuery.event.special[type] = { 3387 // Utilize native event if possible so blur/focus sequence is correct 3388 setup: function() { 3389 leverageNative(this, type, expectSync); 3390 return false; 3391 }, 3392 trigger: function() { 3393 leverageNative(this, type); 3394 return true; 3395 }, 3396 delegateType 3397 }; 3398 }); 3399 jQuery.each({ 3400 mouseenter: "mouseover", 3401 mouseleave: "mouseout", 3402 pointerenter: "pointerover", 3403 pointerleave: "pointerout" 3404 }, function(orig, fix) { 3405 jQuery.event.special[orig] = { 3406 delegateType: fix, 3407 bindType: fix, 3408 handle: function(event) { 3409 var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj; 3410 if (!related || related !== target && !jQuery.contains(target, related)) { 3411 event.type = handleObj.origType; 3412 ret = handleObj.handler.apply(this, arguments); 3413 event.type = fix; 3414 } 3415 return ret; 3416 } 3417 }; 3418 }); 3419 jQuery.fn.extend({ 3420 on: function(types, selector, data, fn) { 3421 return on(this, types, selector, data, fn); 3422 }, 3423 one: function(types, selector, data, fn) { 3424 return on(this, types, selector, data, fn, 1); 3425 }, 3426 off: function(types, selector, fn) { 3427 var handleObj, type; 3428 if (types && types.preventDefault && types.handleObj) { 3429 handleObj = types.handleObj; 3430 jQuery(types.delegateTarget).off( 3431 handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, 3432 handleObj.selector, 3433 handleObj.handler 3434 ); 3435 return this; 3436 } 3437 if (typeof types === "object") { 3438 for (type in types) { 3439 this.off(type, selector, types[type]); 3440 } 3441 return this; 3442 } 3443 if (selector === false || typeof selector === "function") { 3444 fn = selector; 3445 selector = void 0; 3446 } 3447 if (fn === false) { 3448 fn = returnFalse; 3449 } 3450 return this.each(function() { 3451 jQuery.event.remove(this, types, fn, selector); 3452 }); 3453 } 3454 }); 3455 var rnoInnerhtml = /<script|<style|<link/i, rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g; 3456 function manipulationTarget(elem, content) { 3457 if (nodeName(elem, "table") && nodeName(content.nodeType !== 11 ? content : content.firstChild, "tr")) { 3458 return jQuery(elem).children("tbody")[0] || elem; 3459 } 3460 return elem; 3461 } 3462 function disableScript(elem) { 3463 elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; 3464 return elem; 3465 } 3466 function restoreScript(elem) { 3467 if ((elem.type || "").slice(0, 5) === "true/") { 3468 elem.type = elem.type.slice(5); 3469 } else { 3470 elem.removeAttribute("type"); 3471 } 3472 return elem; 3473 } 3474 function cloneCopyEvent(src, dest) { 3475 var i, l, type, pdataOld, udataOld, udataCur, events; 3476 if (dest.nodeType !== 1) { 3477 return; 3478 } 3479 if (dataPriv.hasData(src)) { 3480 pdataOld = dataPriv.get(src); 3481 events = pdataOld.events; 3482 if (events) { 3483 dataPriv.remove(dest, "handle events"); 3484 for (type in events) { 3485 for (i = 0, l = events[type].length; i < l; i++) { 3486 jQuery.event.add(dest, type, events[type][i]); 3487 } 3488 } 3489 } 3490 } 3491 if (dataUser.hasData(src)) { 3492 udataOld = dataUser.access(src); 3493 udataCur = jQuery.extend({}, udataOld); 3494 dataUser.set(dest, udataCur); 3495 } 3496 } 3497 function fixInput(src, dest) { 3498 var nodeName2 = dest.nodeName.toLowerCase(); 3499 if (nodeName2 === "input" && rcheckableType.test(src.type)) { 3500 dest.checked = src.checked; 3501 } else if (nodeName2 === "input" || nodeName2 === "textarea") { 3502 dest.defaultValue = src.defaultValue; 3503 } 3504 } 3505 function domManip(collection, args, callback, ignored) { 3506 args = flat(args); 3507 var fragment, first, scripts, hasScripts, node, doc, i = 0, l = collection.length, iNoClone = l - 1, value = args[0], valueIsFunction = isFunction(value); 3508 if (valueIsFunction || l > 1 && typeof value === "string" && !support.checkClone && rchecked.test(value)) { 3509 return collection.each(function(index) { 3510 var self2 = collection.eq(index); 3511 if (valueIsFunction) { 3512 args[0] = value.call(this, index, self2.html()); 3513 } 3514 domManip(self2, args, callback, ignored); 3515 }); 3516 } 3517 if (l) { 3518 fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored); 3519 first = fragment.firstChild; 3520 if (fragment.childNodes.length === 1) { 3521 fragment = first; 3522 } 3523 if (first || ignored) { 3524 scripts = jQuery.map(getAll(fragment, "script"), disableScript); 3525 hasScripts = scripts.length; 3526 for (; i < l; i++) { 3527 node = fragment; 3528 if (i !== iNoClone) { 3529 node = jQuery.clone(node, true, true); 3530 if (hasScripts) { 3531 jQuery.merge(scripts, getAll(node, "script")); 3532 } 3533 } 3534 callback.call(collection[i], node, i); 3535 } 3536 if (hasScripts) { 3537 doc = scripts[scripts.length - 1].ownerDocument; 3538 jQuery.map(scripts, restoreScript); 3539 for (i = 0; i < hasScripts; i++) { 3540 node = scripts[i]; 3541 if (rscriptType.test(node.type || "") && !dataPriv.access(node, "globalEval") && jQuery.contains(doc, node)) { 3542 if (node.src && (node.type || "").toLowerCase() !== "module") { 3543 if (jQuery._evalUrl && !node.noModule) { 3544 jQuery._evalUrl(node.src, { 3545 nonce: node.nonce || node.getAttribute("nonce") 3546 }, doc); 3547 } 3548 } else { 3549 DOMEval(node.textContent.replace(rcleanScript, ""), node, doc); 3550 } 3551 } 3552 } 3553 } 3554 } 3555 } 3556 return collection; 3557 } 3558 function remove(elem, selector, keepData) { 3559 var node, nodes = selector ? jQuery.filter(selector, elem) : elem, i = 0; 3560 for (; (node = nodes[i]) != null; i++) { 3561 if (!keepData && node.nodeType === 1) { 3562 jQuery.cleanData(getAll(node)); 3563 } 3564 if (node.parentNode) { 3565 if (keepData && isAttached(node)) { 3566 setGlobalEval(getAll(node, "script")); 3567 } 3568 node.parentNode.removeChild(node); 3569 } 3570 } 3571 return elem; 3572 } 3573 jQuery.extend({ 3574 htmlPrefilter: function(html) { 3575 return html; 3576 }, 3577 clone: function(elem, dataAndEvents, deepDataAndEvents) { 3578 var i, l, srcElements, destElements, clone = elem.cloneNode(true), inPage = isAttached(elem); 3579 if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) { 3580 destElements = getAll(clone); 3581 srcElements = getAll(elem); 3582 for (i = 0, l = srcElements.length; i < l; i++) { 3583 fixInput(srcElements[i], destElements[i]); 3584 } 3585 } 3586 if (dataAndEvents) { 3587 if (deepDataAndEvents) { 3588 srcElements = srcElements || getAll(elem); 3589 destElements = destElements || getAll(clone); 3590 for (i = 0, l = srcElements.length; i < l; i++) { 3591 cloneCopyEvent(srcElements[i], destElements[i]); 3592 } 3593 } else { 3594 cloneCopyEvent(elem, clone); 3595 } 3596 } 3597 destElements = getAll(clone, "script"); 3598 if (destElements.length > 0) { 3599 setGlobalEval(destElements, !inPage && getAll(elem, "script")); 3600 } 3601 return clone; 3602 }, 3603 cleanData: function(elems) { 3604 var data, elem, type, special = jQuery.event.special, i = 0; 3605 for (; (elem = elems[i]) !== void 0; i++) { 3606 if (acceptData(elem)) { 3607 if (data = elem[dataPriv.expando]) { 3608 if (data.events) { 3609 for (type in data.events) { 3610 if (special[type]) { 3611 jQuery.event.remove(elem, type); 3612 } else { 3613 jQuery.removeEvent(elem, type, data.handle); 3614 } 3615 } 3616 } 3617 elem[dataPriv.expando] = void 0; 3618 } 3619 if (elem[dataUser.expando]) { 3620 elem[dataUser.expando] = void 0; 3621 } 3622 } 3623 } 3624 } 3625 }); 3626 jQuery.fn.extend({ 3627 detach: function(selector) { 3628 return remove(this, selector, true); 3629 }, 3630 remove: function(selector) { 3631 return remove(this, selector); 3632 }, 3633 text: function(value) { 3634 return access(this, function(value2) { 3635 return value2 === void 0 ? jQuery.text(this) : this.empty().each(function() { 3636 if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { 3637 this.textContent = value2; 3638 } 3639 }); 3640 }, null, value, arguments.length); 3641 }, 3642 append: function() { 3643 return domManip(this, arguments, function(elem) { 3644 if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { 3645 var target = manipulationTarget(this, elem); 3646 target.appendChild(elem); 3647 } 3648 }); 3649 }, 3650 prepend: function() { 3651 return domManip(this, arguments, function(elem) { 3652 if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { 3653 var target = manipulationTarget(this, elem); 3654 target.insertBefore(elem, target.firstChild); 3655 } 3656 }); 3657 }, 3658 before: function() { 3659 return domManip(this, arguments, function(elem) { 3660 if (this.parentNode) { 3661 this.parentNode.insertBefore(elem, this); 3662 } 3663 }); 3664 }, 3665 after: function() { 3666 return domManip(this, arguments, function(elem) { 3667 if (this.parentNode) { 3668 this.parentNode.insertBefore(elem, this.nextSibling); 3669 } 3670 }); 3671 }, 3672 empty: function() { 3673 var elem, i = 0; 3674 for (; (elem = this[i]) != null; i++) { 3675 if (elem.nodeType === 1) { 3676 jQuery.cleanData(getAll(elem, false)); 3677 elem.textContent = ""; 3678 } 3679 } 3680 return this; 3681 }, 3682 clone: function(dataAndEvents, deepDataAndEvents) { 3683 dataAndEvents = dataAndEvents == null ? false : dataAndEvents; 3684 deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; 3685 return this.map(function() { 3686 return jQuery.clone(this, dataAndEvents, deepDataAndEvents); 3687 }); 3688 }, 3689 html: function(value) { 3690 return access(this, function(value2) { 3691 var elem = this[0] || {}, i = 0, l = this.length; 3692 if (value2 === void 0 && elem.nodeType === 1) { 3693 return elem.innerHTML; 3694 } 3695 if (typeof value2 === "string" && !rnoInnerhtml.test(value2) && !wrapMap[(rtagName.exec(value2) || ["", ""])[1].toLowerCase()]) { 3696 value2 = jQuery.htmlPrefilter(value2); 3697 try { 3698 for (; i < l; i++) { 3699 elem = this[i] || {}; 3700 if (elem.nodeType === 1) { 3701 jQuery.cleanData(getAll(elem, false)); 3702 elem.innerHTML = value2; 3703 } 3704 } 3705 elem = 0; 3706 } catch (e) { 3707 } 3708 } 3709 if (elem) { 3710 this.empty().append(value2); 3711 } 3712 }, null, value, arguments.length); 3713 }, 3714 replaceWith: function() { 3715 var ignored = []; 3716 return domManip(this, arguments, function(elem) { 3717 var parent = this.parentNode; 3718 if (jQuery.inArray(this, ignored) < 0) { 3719 jQuery.cleanData(getAll(this)); 3720 if (parent) { 3721 parent.replaceChild(elem, this); 3722 } 3723 } 3724 }, ignored); 3725 } 3726 }); 3727 jQuery.each({ 3728 appendTo: "append", 3729 prependTo: "prepend", 3730 insertBefore: "before", 3731 insertAfter: "after", 3732 replaceAll: "replaceWith" 3733 }, function(name, original) { 3734 jQuery.fn[name] = function(selector) { 3735 var elems, ret = [], insert = jQuery(selector), last = insert.length - 1, i = 0; 3736 for (; i <= last; i++) { 3737 elems = i === last ? this : this.clone(true); 3738 jQuery(insert[i])[original](elems); 3739 push.apply(ret, elems.get()); 3740 } 3741 return this.pushStack(ret); 3742 }; 3743 }); 3744 var rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i"); 3745 var getStyles = function(elem) { 3746 var view = elem.ownerDocument.defaultView; 3747 if (!view || !view.opener) { 3748 view = window2; 3749 } 3750 return view.getComputedStyle(elem); 3751 }; 3752 var swap = function(elem, options, callback) { 3753 var ret, name, old = {}; 3754 for (name in options) { 3755 old[name] = elem.style[name]; 3756 elem.style[name] = options[name]; 3757 } 3758 ret = callback.call(elem); 3759 for (name in options) { 3760 elem.style[name] = old[name]; 3761 } 3762 return ret; 3763 }; 3764 var rboxStyle = new RegExp(cssExpand.join("|"), "i"); 3765 (function() { 3766 function computeStyleTests() { 3767 if (!div) { 3768 return; 3769 } 3770 container.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0"; 3771 div.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%"; 3772 documentElement.appendChild(container).appendChild(div); 3773 var divStyle = window2.getComputedStyle(div); 3774 pixelPositionVal = divStyle.top !== "1%"; 3775 reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12; 3776 div.style.right = "60%"; 3777 pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36; 3778 boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36; 3779 div.style.position = "absolute"; 3780 scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12; 3781 documentElement.removeChild(container); 3782 div = null; 3783 } 3784 function roundPixelMeasures(measure) { 3785 return Math.round(parseFloat(measure)); 3786 } 3787 var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, reliableTrDimensionsVal, reliableMarginLeftVal, container = document.createElement("div"), div = document.createElement("div"); 3788 if (!div.style) { 3789 return; 3790 } 3791 div.style.backgroundClip = "content-box"; 3792 div.cloneNode(true).style.backgroundClip = ""; 3793 support.clearCloneStyle = div.style.backgroundClip === "content-box"; 3794 jQuery.extend(support, { 3795 boxSizingReliable: function() { 3796 computeStyleTests(); 3797 return boxSizingReliableVal; 3798 }, 3799 pixelBoxStyles: function() { 3800 computeStyleTests(); 3801 return pixelBoxStylesVal; 3802 }, 3803 pixelPosition: function() { 3804 computeStyleTests(); 3805 return pixelPositionVal; 3806 }, 3807 reliableMarginLeft: function() { 3808 computeStyleTests(); 3809 return reliableMarginLeftVal; 3810 }, 3811 scrollboxSize: function() { 3812 computeStyleTests(); 3813 return scrollboxSizeVal; 3814 }, 3815 // Support: IE 9 - 11+, Edge 15 - 18+ 3816 // IE/Edge misreport `getComputedStyle` of table rows with width/height 3817 // set in CSS while `offset*` properties report correct values. 3818 // Behavior in IE 9 is more subtle than in newer versions & it passes 3819 // some versions of this test; make sure not to make it pass there! 3820 reliableTrDimensions: function() { 3821 var table, tr, trChild, trStyle; 3822 if (reliableTrDimensionsVal == null) { 3823 table = document.createElement("table"); 3824 tr = document.createElement("tr"); 3825 trChild = document.createElement("div"); 3826 table.style.cssText = "position:absolute;left:-11111px"; 3827 tr.style.height = "1px"; 3828 trChild.style.height = "9px"; 3829 documentElement.appendChild(table).appendChild(tr).appendChild(trChild); 3830 trStyle = window2.getComputedStyle(tr); 3831 reliableTrDimensionsVal = parseInt(trStyle.height) > 3; 3832 documentElement.removeChild(table); 3833 } 3834 return reliableTrDimensionsVal; 3835 } 3836 }); 3837 })(); 3838 function curCSS(elem, name, computed) { 3839 var width, minWidth, maxWidth, ret, style = elem.style; 3840 computed = computed || getStyles(elem); 3841 if (computed) { 3842 ret = computed.getPropertyValue(name) || computed[name]; 3843 if (ret === "" && !isAttached(elem)) { 3844 ret = jQuery.style(elem, name); 3845 } 3846 if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) { 3847 width = style.width; 3848 minWidth = style.minWidth; 3849 maxWidth = style.maxWidth; 3850 style.minWidth = style.maxWidth = style.width = ret; 3851 ret = computed.width; 3852 style.width = width; 3853 style.minWidth = minWidth; 3854 style.maxWidth = maxWidth; 3855 } 3856 } 3857 return ret !== void 0 ? ( 3858 // Support: IE <=9 - 11 only 3859 // IE returns zIndex value as an integer. 3860 ret + "" 3861 ) : ret; 3862 } 3863 function addGetHookIf(conditionFn, hookFn) { 3864 return { 3865 get: function() { 3866 if (conditionFn()) { 3867 delete this.get; 3868 return; 3869 } 3870 return (this.get = hookFn).apply(this, arguments); 3871 } 3872 }; 3873 } 3874 var cssPrefixes = ["Webkit", "Moz", "ms"], emptyStyle = document.createElement("div").style, vendorProps = {}; 3875 function vendorPropName(name) { 3876 var capName = name[0].toUpperCase() + name.slice(1), i = cssPrefixes.length; 3877 while (i--) { 3878 name = cssPrefixes[i] + capName; 3879 if (name in emptyStyle) { 3880 return name; 3881 } 3882 } 3883 } 3884 function finalPropName(name) { 3885 var final = jQuery.cssProps[name] || vendorProps[name]; 3886 if (final) { 3887 return final; 3888 } 3889 if (name in emptyStyle) { 3890 return name; 3891 } 3892 return vendorProps[name] = vendorPropName(name) || name; 3893 } 3894 var rdisplayswap = /^(none|table(?!-c[ea]).+)/, rcustomProp = /^--/, cssShow = { position: "absolute", visibility: "hidden", display: "block" }, cssNormalTransform = { 3895 letterSpacing: "0", 3896 fontWeight: "400" 3897 }; 3898 function setPositiveNumber(_elem, value, subtract) { 3899 var matches = rcssNum.exec(value); 3900 return matches ? ( 3901 // Guard against undefined "subtract", e.g., when used as in cssHooks 3902 Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || "px") 3903 ) : value; 3904 } 3905 function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) { 3906 var i = dimension === "width" ? 1 : 0, extra = 0, delta = 0; 3907 if (box === (isBorderBox ? "border" : "content")) { 3908 return 0; 3909 } 3910 for (; i < 4; i += 2) { 3911 if (box === "margin") { 3912 delta += jQuery.css(elem, box + cssExpand[i], true, styles); 3913 } 3914 if (!isBorderBox) { 3915 delta += jQuery.css(elem, "padding" + cssExpand[i], true, styles); 3916 if (box !== "padding") { 3917 delta += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles); 3918 } else { 3919 extra += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles); 3920 } 3921 } else { 3922 if (box === "content") { 3923 delta -= jQuery.css(elem, "padding" + cssExpand[i], true, styles); 3924 } 3925 if (box !== "margin") { 3926 delta -= jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles); 3927 } 3928 } 3929 } 3930 if (!isBorderBox && computedVal >= 0) { 3931 delta += Math.max(0, Math.ceil( 3932 elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5 3933 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter 3934 // Use an explicit zero to avoid NaN (gh-3964) 3935 )) || 0; 3936 } 3937 return delta; 3938 } 3939 function getWidthOrHeight(elem, dimension, extra) { 3940 var styles = getStyles(elem), boxSizingNeeded = !support.boxSizingReliable() || extra, isBorderBox = boxSizingNeeded && jQuery.css(elem, "boxSizing", false, styles) === "border-box", valueIsBorderBox = isBorderBox, val = curCSS(elem, dimension, styles), offsetProp = "offset" + dimension[0].toUpperCase() + dimension.slice(1); 3941 if (rnumnonpx.test(val)) { 3942 if (!extra) { 3943 return val; 3944 } 3945 val = "auto"; 3946 } 3947 if ((!support.boxSizingReliable() && isBorderBox || // Support: IE 10 - 11+, Edge 15 - 18+ 3948 // IE/Edge misreport `getComputedStyle` of table rows with width/height 3949 // set in CSS while `offset*` properties report correct values. 3950 // Interestingly, in some cases IE 9 doesn't suffer from this issue. 3951 !support.reliableTrDimensions() && nodeName(elem, "tr") || // Fall back to offsetWidth/offsetHeight when value is "auto" 3952 // This happens for inline elements with no explicit setting (gh-3571) 3953 val === "auto" || // Support: Android <=4.1 - 4.3 only 3954 // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) 3955 !parseFloat(val) && jQuery.css(elem, "display", false, styles) === "inline") && // Make sure the element is visible & connected 3956 elem.getClientRects().length) { 3957 isBorderBox = jQuery.css(elem, "boxSizing", false, styles) === "border-box"; 3958 valueIsBorderBox = offsetProp in elem; 3959 if (valueIsBorderBox) { 3960 val = elem[offsetProp]; 3961 } 3962 } 3963 val = parseFloat(val) || 0; 3964 return val + boxModelAdjustment( 3965 elem, 3966 dimension, 3967 extra || (isBorderBox ? "border" : "content"), 3968 valueIsBorderBox, 3969 styles, 3970 // Provide the current computed size to request scroll gutter calculation (gh-3589) 3971 val 3972 ) + "px"; 3973 } 3974 jQuery.extend({ 3975 // Add in style property hooks for overriding the default 3976 // behavior of getting and setting a style property 3977 cssHooks: { 3978 opacity: { 3979 get: function(elem, computed) { 3980 if (computed) { 3981 var ret = curCSS(elem, "opacity"); 3982 return ret === "" ? "1" : ret; 3983 } 3984 } 3985 } 3986 }, 3987 // Don't automatically add "px" to these possibly-unitless properties 3988 cssNumber: { 3989 "animationIterationCount": true, 3990 "columnCount": true, 3991 "fillOpacity": true, 3992 "flexGrow": true, 3993 "flexShrink": true, 3994 "fontWeight": true, 3995 "gridArea": true, 3996 "gridColumn": true, 3997 "gridColumnEnd": true, 3998 "gridColumnStart": true, 3999 "gridRow": true, 4000 "gridRowEnd": true, 4001 "gridRowStart": true, 4002 "lineHeight": true, 4003 "opacity": true, 4004 "order": true, 4005 "orphans": true, 4006 "widows": true, 4007 "zIndex": true, 4008 "zoom": true 4009 }, 4010 // Add in properties whose names you wish to fix before 4011 // setting or getting the value 4012 cssProps: {}, 4013 // Get and set the style property on a DOM Node 4014 style: function(elem, name, value, extra) { 4015 if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) { 4016 return; 4017 } 4018 var ret, type, hooks, origName = camelCase(name), isCustomProp = rcustomProp.test(name), style = elem.style; 4019 if (!isCustomProp) { 4020 name = finalPropName(origName); 4021 } 4022 hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; 4023 if (value !== void 0) { 4024 type = typeof value; 4025 if (type === "string" && (ret = rcssNum.exec(value)) && ret[1]) { 4026 value = adjustCSS(elem, name, ret); 4027 type = "number"; 4028 } 4029 if (value == null || value !== value) { 4030 return; 4031 } 4032 if (type === "number" && !isCustomProp) { 4033 value += ret && ret[3] || (jQuery.cssNumber[origName] ? "" : "px"); 4034 } 4035 if (!support.clearCloneStyle && value === "" && name.indexOf("background") === 0) { 4036 style[name] = "inherit"; 4037 } 4038 if (!hooks || !("set" in hooks) || (value = hooks.set(elem, value, extra)) !== void 0) { 4039 if (isCustomProp) { 4040 style.setProperty(name, value); 4041 } else { 4042 style[name] = value; 4043 } 4044 } 4045 } else { 4046 if (hooks && "get" in hooks && (ret = hooks.get(elem, false, extra)) !== void 0) { 4047 return ret; 4048 } 4049 return style[name]; 4050 } 4051 }, 4052 css: function(elem, name, extra, styles) { 4053 var val, num, hooks, origName = camelCase(name), isCustomProp = rcustomProp.test(name); 4054 if (!isCustomProp) { 4055 name = finalPropName(origName); 4056 } 4057 hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; 4058 if (hooks && "get" in hooks) { 4059 val = hooks.get(elem, true, extra); 4060 } 4061 if (val === void 0) { 4062 val = curCSS(elem, name, styles); 4063 } 4064 if (val === "normal" && name in cssNormalTransform) { 4065 val = cssNormalTransform[name]; 4066 } 4067 if (extra === "" || extra) { 4068 num = parseFloat(val); 4069 return extra === true || isFinite(num) ? num || 0 : val; 4070 } 4071 return val; 4072 } 4073 }); 4074 jQuery.each(["height", "width"], function(_i, dimension) { 4075 jQuery.cssHooks[dimension] = { 4076 get: function(elem, computed, extra) { 4077 if (computed) { 4078 return rdisplayswap.test(jQuery.css(elem, "display")) && // Support: Safari 8+ 4079 // Table columns in Safari have non-zero offsetWidth & zero 4080 // getBoundingClientRect().width unless display is changed. 4081 // Support: IE <=11 only 4082 // Running getBoundingClientRect on a disconnected node 4083 // in IE throws an error. 4084 (!elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function() { 4085 return getWidthOrHeight(elem, dimension, extra); 4086 }) : getWidthOrHeight(elem, dimension, extra); 4087 } 4088 }, 4089 set: function(elem, value, extra) { 4090 var matches, styles = getStyles(elem), scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === "absolute", boxSizingNeeded = scrollboxSizeBuggy || extra, isBorderBox = boxSizingNeeded && jQuery.css(elem, "boxSizing", false, styles) === "border-box", subtract = extra ? boxModelAdjustment( 4091 elem, 4092 dimension, 4093 extra, 4094 isBorderBox, 4095 styles 4096 ) : 0; 4097 if (isBorderBox && scrollboxSizeBuggy) { 4098 subtract -= Math.ceil( 4099 elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, "border", false, styles) - 0.5 4100 ); 4101 } 4102 if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || "px") !== "px") { 4103 elem.style[dimension] = value; 4104 value = jQuery.css(elem, dimension); 4105 } 4106 return setPositiveNumber(elem, value, subtract); 4107 } 4108 }; 4109 }); 4110 jQuery.cssHooks.marginLeft = addGetHookIf( 4111 support.reliableMarginLeft, 4112 function(elem, computed) { 4113 if (computed) { 4114 return (parseFloat(curCSS(elem, "marginLeft")) || elem.getBoundingClientRect().left - swap(elem, { marginLeft: 0 }, function() { 4115 return elem.getBoundingClientRect().left; 4116 })) + "px"; 4117 } 4118 } 4119 ); 4120 jQuery.each({ 4121 margin: "", 4122 padding: "", 4123 border: "Width" 4124 }, function(prefix, suffix) { 4125 jQuery.cssHooks[prefix + suffix] = { 4126 expand: function(value) { 4127 var i = 0, expanded = {}, parts = typeof value === "string" ? value.split(" ") : [value]; 4128 for (; i < 4; i++) { 4129 expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0]; 4130 } 4131 return expanded; 4132 } 4133 }; 4134 if (prefix !== "margin") { 4135 jQuery.cssHooks[prefix + suffix].set = setPositiveNumber; 4136 } 4137 }); 4138 jQuery.fn.extend({ 4139 css: function(name, value) { 4140 return access(this, function(elem, name2, value2) { 4141 var styles, len, map = {}, i = 0; 4142 if (Array.isArray(name2)) { 4143 styles = getStyles(elem); 4144 len = name2.length; 4145 for (; i < len; i++) { 4146 map[name2[i]] = jQuery.css(elem, name2[i], false, styles); 4147 } 4148 return map; 4149 } 4150 return value2 !== void 0 ? jQuery.style(elem, name2, value2) : jQuery.css(elem, name2); 4151 }, name, value, arguments.length > 1); 4152 } 4153 }); 4154 function Tween(elem, options, prop, end, easing) { 4155 return new Tween.prototype.init(elem, options, prop, end, easing); 4156 } 4157 jQuery.Tween = Tween; 4158 Tween.prototype = { 4159 constructor: Tween, 4160 init: function(elem, options, prop, end, easing, unit) { 4161 this.elem = elem; 4162 this.prop = prop; 4163 this.easing = easing || jQuery.easing._default; 4164 this.options = options; 4165 this.start = this.now = this.cur(); 4166 this.end = end; 4167 this.unit = unit || (jQuery.cssNumber[prop] ? "" : "px"); 4168 }, 4169 cur: function() { 4170 var hooks = Tween.propHooks[this.prop]; 4171 return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this); 4172 }, 4173 run: function(percent) { 4174 var eased, hooks = Tween.propHooks[this.prop]; 4175 if (this.options.duration) { 4176 this.pos = eased = jQuery.easing[this.easing]( 4177 percent, 4178 this.options.duration * percent, 4179 0, 4180 1, 4181 this.options.duration 4182 ); 4183 } else { 4184 this.pos = eased = percent; 4185 } 4186 this.now = (this.end - this.start) * eased + this.start; 4187 if (this.options.step) { 4188 this.options.step.call(this.elem, this.now, this); 4189 } 4190 if (hooks && hooks.set) { 4191 hooks.set(this); 4192 } else { 4193 Tween.propHooks._default.set(this); 4194 } 4195 return this; 4196 } 4197 }; 4198 Tween.prototype.init.prototype = Tween.prototype; 4199 Tween.propHooks = { 4200 _default: { 4201 get: function(tween) { 4202 var result; 4203 if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) { 4204 return tween.elem[tween.prop]; 4205 } 4206 result = jQuery.css(tween.elem, tween.prop, ""); 4207 return !result || result === "auto" ? 0 : result; 4208 }, 4209 set: function(tween) { 4210 if (jQuery.fx.step[tween.prop]) { 4211 jQuery.fx.step[tween.prop](tween); 4212 } else if (tween.elem.nodeType === 1 && (jQuery.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) { 4213 jQuery.style(tween.elem, tween.prop, tween.now + tween.unit); 4214 } else { 4215 tween.elem[tween.prop] = tween.now; 4216 } 4217 } 4218 } 4219 }; 4220 Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { 4221 set: function(tween) { 4222 if (tween.elem.nodeType && tween.elem.parentNode) { 4223 tween.elem[tween.prop] = tween.now; 4224 } 4225 } 4226 }; 4227 jQuery.easing = { 4228 linear: function(p) { 4229 return p; 4230 }, 4231 swing: function(p) { 4232 return 0.5 - Math.cos(p * Math.PI) / 2; 4233 }, 4234 _default: "swing" 4235 }; 4236 jQuery.fx = Tween.prototype.init; 4237 jQuery.fx.step = {}; 4238 var fxNow, inProgress, rfxtypes = /^(?:toggle|show|hide)$/, rrun = /queueHooks$/; 4239 function schedule() { 4240 if (inProgress) { 4241 if (document.hidden === false && window2.requestAnimationFrame) { 4242 window2.requestAnimationFrame(schedule); 4243 } else { 4244 window2.setTimeout(schedule, jQuery.fx.interval); 4245 } 4246 jQuery.fx.tick(); 4247 } 4248 } 4249 function createFxNow() { 4250 window2.setTimeout(function() { 4251 fxNow = void 0; 4252 }); 4253 return fxNow = Date.now(); 4254 } 4255 function genFx(type, includeWidth) { 4256 var which, i = 0, attrs = { height: type }; 4257 includeWidth = includeWidth ? 1 : 0; 4258 for (; i < 4; i += 2 - includeWidth) { 4259 which = cssExpand[i]; 4260 attrs["margin" + which] = attrs["padding" + which] = type; 4261 } 4262 if (includeWidth) { 4263 attrs.opacity = attrs.width = type; 4264 } 4265 return attrs; 4266 } 4267 function createTween(value, prop, animation) { 4268 var tween, collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners["*"]), index = 0, length = collection.length; 4269 for (; index < length; index++) { 4270 if (tween = collection[index].call(animation, prop, value)) { 4271 return tween; 4272 } 4273 } 4274 } 4275 function defaultPrefilter(elem, props, opts) { 4276 var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, isBox = "width" in props || "height" in props, anim = this, orig = {}, style = elem.style, hidden = elem.nodeType && isHiddenWithinTree(elem), dataShow = dataPriv.get(elem, "fxshow"); 4277 if (!opts.queue) { 4278 hooks = jQuery._queueHooks(elem, "fx"); 4279 if (hooks.unqueued == null) { 4280 hooks.unqueued = 0; 4281 oldfire = hooks.empty.fire; 4282 hooks.empty.fire = function() { 4283 if (!hooks.unqueued) { 4284 oldfire(); 4285 } 4286 }; 4287 } 4288 hooks.unqueued++; 4289 anim.always(function() { 4290 anim.always(function() { 4291 hooks.unqueued--; 4292 if (!jQuery.queue(elem, "fx").length) { 4293 hooks.empty.fire(); 4294 } 4295 }); 4296 }); 4297 } 4298 for (prop in props) { 4299 value = props[prop]; 4300 if (rfxtypes.test(value)) { 4301 delete props[prop]; 4302 toggle = toggle || value === "toggle"; 4303 if (value === (hidden ? "hide" : "show")) { 4304 if (value === "show" && dataShow && dataShow[prop] !== void 0) { 4305 hidden = true; 4306 } else { 4307 continue; 4308 } 4309 } 4310 orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop); 4311 } 4312 } 4313 propTween = !jQuery.isEmptyObject(props); 4314 if (!propTween && jQuery.isEmptyObject(orig)) { 4315 return; 4316 } 4317 if (isBox && elem.nodeType === 1) { 4318 opts.overflow = [style.overflow, style.overflowX, style.overflowY]; 4319 restoreDisplay = dataShow && dataShow.display; 4320 if (restoreDisplay == null) { 4321 restoreDisplay = dataPriv.get(elem, "display"); 4322 } 4323 display = jQuery.css(elem, "display"); 4324 if (display === "none") { 4325 if (restoreDisplay) { 4326 display = restoreDisplay; 4327 } else { 4328 showHide([elem], true); 4329 restoreDisplay = elem.style.display || restoreDisplay; 4330 display = jQuery.css(elem, "display"); 4331 showHide([elem]); 4332 } 4333 } 4334 if (display === "inline" || display === "inline-block" && restoreDisplay != null) { 4335 if (jQuery.css(elem, "float") === "none") { 4336 if (!propTween) { 4337 anim.done(function() { 4338 style.display = restoreDisplay; 4339 }); 4340 if (restoreDisplay == null) { 4341 display = style.display; 4342 restoreDisplay = display === "none" ? "" : display; 4343 } 4344 } 4345 style.display = "inline-block"; 4346 } 4347 } 4348 } 4349 if (opts.overflow) { 4350 style.overflow = "hidden"; 4351 anim.always(function() { 4352 style.overflow = opts.overflow[0]; 4353 style.overflowX = opts.overflow[1]; 4354 style.overflowY = opts.overflow[2]; 4355 }); 4356 } 4357 propTween = false; 4358 for (prop in orig) { 4359 if (!propTween) { 4360 if (dataShow) { 4361 if ("hidden" in dataShow) { 4362 hidden = dataShow.hidden; 4363 } 4364 } else { 4365 dataShow = dataPriv.access(elem, "fxshow", { display: restoreDisplay }); 4366 } 4367 if (toggle) { 4368 dataShow.hidden = !hidden; 4369 } 4370 if (hidden) { 4371 showHide([elem], true); 4372 } 4373 anim.done(function() { 4374 if (!hidden) { 4375 showHide([elem]); 4376 } 4377 dataPriv.remove(elem, "fxshow"); 4378 for (prop in orig) { 4379 jQuery.style(elem, prop, orig[prop]); 4380 } 4381 }); 4382 } 4383 propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim); 4384 if (!(prop in dataShow)) { 4385 dataShow[prop] = propTween.start; 4386 if (hidden) { 4387 propTween.end = propTween.start; 4388 propTween.start = 0; 4389 } 4390 } 4391 } 4392 } 4393 function propFilter(props, specialEasing) { 4394 var index, name, easing, value, hooks; 4395 for (index in props) { 4396 name = camelCase(index); 4397 easing = specialEasing[name]; 4398 value = props[index]; 4399 if (Array.isArray(value)) { 4400 easing = value[1]; 4401 value = props[index] = value[0]; 4402 } 4403 if (index !== name) { 4404 props[name] = value; 4405 delete props[index]; 4406 } 4407 hooks = jQuery.cssHooks[name]; 4408 if (hooks && "expand" in hooks) { 4409 value = hooks.expand(value); 4410 delete props[name]; 4411 for (index in value) { 4412 if (!(index in props)) { 4413 props[index] = value[index]; 4414 specialEasing[index] = easing; 4415 } 4416 } 4417 } else { 4418 specialEasing[name] = easing; 4419 } 4420 } 4421 } 4422 function Animation(elem, properties, options) { 4423 var result, stopped, index = 0, length = Animation.prefilters.length, deferred = jQuery.Deferred().always(function() { 4424 delete tick.elem; 4425 }), tick = function() { 4426 if (stopped) { 4427 return false; 4428 } 4429 var currentTime = fxNow || createFxNow(), remaining = Math.max(0, animation.startTime + animation.duration - currentTime), temp = remaining / animation.duration || 0, percent = 1 - temp, index2 = 0, length2 = animation.tweens.length; 4430 for (; index2 < length2; index2++) { 4431 animation.tweens[index2].run(percent); 4432 } 4433 deferred.notifyWith(elem, [animation, percent, remaining]); 4434 if (percent < 1 && length2) { 4435 return remaining; 4436 } 4437 if (!length2) { 4438 deferred.notifyWith(elem, [animation, 1, 0]); 4439 } 4440 deferred.resolveWith(elem, [animation]); 4441 return false; 4442 }, animation = deferred.promise({ 4443 elem, 4444 props: jQuery.extend({}, properties), 4445 opts: jQuery.extend(true, { 4446 specialEasing: {}, 4447 easing: jQuery.easing._default 4448 }, options), 4449 originalProperties: properties, 4450 originalOptions: options, 4451 startTime: fxNow || createFxNow(), 4452 duration: options.duration, 4453 tweens: [], 4454 createTween: function(prop, end) { 4455 var tween = jQuery.Tween( 4456 elem, 4457 animation.opts, 4458 prop, 4459 end, 4460 animation.opts.specialEasing[prop] || animation.opts.easing 4461 ); 4462 animation.tweens.push(tween); 4463 return tween; 4464 }, 4465 stop: function(gotoEnd) { 4466 var index2 = 0, length2 = gotoEnd ? animation.tweens.length : 0; 4467 if (stopped) { 4468 return this; 4469 } 4470 stopped = true; 4471 for (; index2 < length2; index2++) { 4472 animation.tweens[index2].run(1); 4473 } 4474 if (gotoEnd) { 4475 deferred.notifyWith(elem, [animation, 1, 0]); 4476 deferred.resolveWith(elem, [animation, gotoEnd]); 4477 } else { 4478 deferred.rejectWith(elem, [animation, gotoEnd]); 4479 } 4480 return this; 4481 } 4482 }), props = animation.props; 4483 propFilter(props, animation.opts.specialEasing); 4484 for (; index < length; index++) { 4485 result = Animation.prefilters[index].call(animation, elem, props, animation.opts); 4486 if (result) { 4487 if (isFunction(result.stop)) { 4488 jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result); 4489 } 4490 return result; 4491 } 4492 } 4493 jQuery.map(props, createTween, animation); 4494 if (isFunction(animation.opts.start)) { 4495 animation.opts.start.call(elem, animation); 4496 } 4497 animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always); 4498 jQuery.fx.timer( 4499 jQuery.extend(tick, { 4500 elem, 4501 anim: animation, 4502 queue: animation.opts.queue 4503 }) 4504 ); 4505 return animation; 4506 } 4507 jQuery.Animation = jQuery.extend(Animation, { 4508 tweeners: { 4509 "*": [function(prop, value) { 4510 var tween = this.createTween(prop, value); 4511 adjustCSS(tween.elem, prop, rcssNum.exec(value), tween); 4512 return tween; 4513 }] 4514 }, 4515 tweener: function(props, callback) { 4516 if (isFunction(props)) { 4517 callback = props; 4518 props = ["*"]; 4519 } else { 4520 props = props.match(rnothtmlwhite); 4521 } 4522 var prop, index = 0, length = props.length; 4523 for (; index < length; index++) { 4524 prop = props[index]; 4525 Animation.tweeners[prop] = Animation.tweeners[prop] || []; 4526 Animation.tweeners[prop].unshift(callback); 4527 } 4528 }, 4529 prefilters: [defaultPrefilter], 4530 prefilter: function(callback, prepend) { 4531 if (prepend) { 4532 Animation.prefilters.unshift(callback); 4533 } else { 4534 Animation.prefilters.push(callback); 4535 } 4536 } 4537 }); 4538 jQuery.speed = function(speed, easing, fn) { 4539 var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : { 4540 complete: fn || !fn && easing || isFunction(speed) && speed, 4541 duration: speed, 4542 easing: fn && easing || easing && !isFunction(easing) && easing 4543 }; 4544 if (jQuery.fx.off) { 4545 opt.duration = 0; 4546 } else { 4547 if (typeof opt.duration !== "number") { 4548 if (opt.duration in jQuery.fx.speeds) { 4549 opt.duration = jQuery.fx.speeds[opt.duration]; 4550 } else { 4551 opt.duration = jQuery.fx.speeds._default; 4552 } 4553 } 4554 } 4555 if (opt.queue == null || opt.queue === true) { 4556 opt.queue = "fx"; 4557 } 4558 opt.old = opt.complete; 4559 opt.complete = function() { 4560 if (isFunction(opt.old)) { 4561 opt.old.call(this); 4562 } 4563 if (opt.queue) { 4564 jQuery.dequeue(this, opt.queue); 4565 } 4566 }; 4567 return opt; 4568 }; 4569 jQuery.fn.extend({ 4570 fadeTo: function(speed, to, easing, callback) { 4571 return this.filter(isHiddenWithinTree).css("opacity", 0).show().end().animate({ opacity: to }, speed, easing, callback); 4572 }, 4573 animate: function(prop, speed, easing, callback) { 4574 var empty = jQuery.isEmptyObject(prop), optall = jQuery.speed(speed, easing, callback), doAnimation = function() { 4575 var anim = Animation(this, jQuery.extend({}, prop), optall); 4576 if (empty || dataPriv.get(this, "finish")) { 4577 anim.stop(true); 4578 } 4579 }; 4580 doAnimation.finish = doAnimation; 4581 return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation); 4582 }, 4583 stop: function(type, clearQueue, gotoEnd) { 4584 var stopQueue = function(hooks) { 4585 var stop = hooks.stop; 4586 delete hooks.stop; 4587 stop(gotoEnd); 4588 }; 4589 if (typeof type !== "string") { 4590 gotoEnd = clearQueue; 4591 clearQueue = type; 4592 type = void 0; 4593 } 4594 if (clearQueue) { 4595 this.queue(type || "fx", []); 4596 } 4597 return this.each(function() { 4598 var dequeue = true, index = type != null && type + "queueHooks", timers = jQuery.timers, data = dataPriv.get(this); 4599 if (index) { 4600 if (data[index] && data[index].stop) { 4601 stopQueue(data[index]); 4602 } 4603 } else { 4604 for (index in data) { 4605 if (data[index] && data[index].stop && rrun.test(index)) { 4606 stopQueue(data[index]); 4607 } 4608 } 4609 } 4610 for (index = timers.length; index--; ) { 4611 if (timers[index].elem === this && (type == null || timers[index].queue === type)) { 4612 timers[index].anim.stop(gotoEnd); 4613 dequeue = false; 4614 timers.splice(index, 1); 4615 } 4616 } 4617 if (dequeue || !gotoEnd) { 4618 jQuery.dequeue(this, type); 4619 } 4620 }); 4621 }, 4622 finish: function(type) { 4623 if (type !== false) { 4624 type = type || "fx"; 4625 } 4626 return this.each(function() { 4627 var index, data = dataPriv.get(this), queue = data[type + "queue"], hooks = data[type + "queueHooks"], timers = jQuery.timers, length = queue ? queue.length : 0; 4628 data.finish = true; 4629 jQuery.queue(this, type, []); 4630 if (hooks && hooks.stop) { 4631 hooks.stop.call(this, true); 4632 } 4633 for (index = timers.length; index--; ) { 4634 if (timers[index].elem === this && timers[index].queue === type) { 4635 timers[index].anim.stop(true); 4636 timers.splice(index, 1); 4637 } 4638 } 4639 for (index = 0; index < length; index++) { 4640 if (queue[index] && queue[index].finish) { 4641 queue[index].finish.call(this); 4642 } 4643 } 4644 delete data.finish; 4645 }); 4646 } 4647 }); 4648 jQuery.each(["toggle", "show", "hide"], function(_i, name) { 4649 var cssFn = jQuery.fn[name]; 4650 jQuery.fn[name] = function(speed, easing, callback) { 4651 return speed == null || typeof speed === "boolean" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback); 4652 }; 4653 }); 4654 jQuery.each({ 4655 slideDown: genFx("show"), 4656 slideUp: genFx("hide"), 4657 slideToggle: genFx("toggle"), 4658 fadeIn: { opacity: "show" }, 4659 fadeOut: { opacity: "hide" }, 4660 fadeToggle: { opacity: "toggle" } 4661 }, function(name, props) { 4662 jQuery.fn[name] = function(speed, easing, callback) { 4663 return this.animate(props, speed, easing, callback); 4664 }; 4665 }); 4666 jQuery.timers = []; 4667 jQuery.fx.tick = function() { 4668 var timer, i = 0, timers = jQuery.timers; 4669 fxNow = Date.now(); 4670 for (; i < timers.length; i++) { 4671 timer = timers[i]; 4672 if (!timer() && timers[i] === timer) { 4673 timers.splice(i--, 1); 4674 } 4675 } 4676 if (!timers.length) { 4677 jQuery.fx.stop(); 4678 } 4679 fxNow = void 0; 4680 }; 4681 jQuery.fx.timer = function(timer) { 4682 jQuery.timers.push(timer); 4683 jQuery.fx.start(); 4684 }; 4685 jQuery.fx.interval = 13; 4686 jQuery.fx.start = function() { 4687 if (inProgress) { 4688 return; 4689 } 4690 inProgress = true; 4691 schedule(); 4692 }; 4693 jQuery.fx.stop = function() { 4694 inProgress = null; 4695 }; 4696 jQuery.fx.speeds = { 4697 slow: 600, 4698 fast: 200, 4699 // Default speed 4700 _default: 400 4701 }; 4702 jQuery.fn.delay = function(time, type) { 4703 time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; 4704 type = type || "fx"; 4705 return this.queue(type, function(next, hooks) { 4706 var timeout = window2.setTimeout(next, time); 4707 hooks.stop = function() { 4708 window2.clearTimeout(timeout); 4709 }; 4710 }); 4711 }; 4712 (function() { 4713 var input = document.createElement("input"), select = document.createElement("select"), opt = select.appendChild(document.createElement("option")); 4714 input.type = "checkbox"; 4715 support.checkOn = input.value !== ""; 4716 support.optSelected = opt.selected; 4717 input = document.createElement("input"); 4718 input.value = "t"; 4719 input.type = "radio"; 4720 support.radioValue = input.value === "t"; 4721 })(); 4722 var boolHook, attrHandle = jQuery.expr.attrHandle; 4723 jQuery.fn.extend({ 4724 attr: function(name, value) { 4725 return access(this, jQuery.attr, name, value, arguments.length > 1); 4726 }, 4727 removeAttr: function(name) { 4728 return this.each(function() { 4729 jQuery.removeAttr(this, name); 4730 }); 4731 } 4732 }); 4733 jQuery.extend({ 4734 attr: function(elem, name, value) { 4735 var ret, hooks, nType = elem.nodeType; 4736 if (nType === 3 || nType === 8 || nType === 2) { 4737 return; 4738 } 4739 if (typeof elem.getAttribute === "undefined") { 4740 return jQuery.prop(elem, name, value); 4741 } 4742 if (nType !== 1 || !jQuery.isXMLDoc(elem)) { 4743 hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : void 0); 4744 } 4745 if (value !== void 0) { 4746 if (value === null) { 4747 jQuery.removeAttr(elem, name); 4748 return; 4749 } 4750 if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== void 0) { 4751 return ret; 4752 } 4753 elem.setAttribute(name, value + ""); 4754 return value; 4755 } 4756 if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) { 4757 return ret; 4758 } 4759 ret = jQuery.find.attr(elem, name); 4760 return ret == null ? void 0 : ret; 4761 }, 4762 attrHooks: { 4763 type: { 4764 set: function(elem, value) { 4765 if (!support.radioValue && value === "radio" && nodeName(elem, "input")) { 4766 var val = elem.value; 4767 elem.setAttribute("type", value); 4768 if (val) { 4769 elem.value = val; 4770 } 4771 return value; 4772 } 4773 } 4774 } 4775 }, 4776 removeAttr: function(elem, value) { 4777 var name, i = 0, attrNames = value && value.match(rnothtmlwhite); 4778 if (attrNames && elem.nodeType === 1) { 4779 while (name = attrNames[i++]) { 4780 elem.removeAttribute(name); 4781 } 4782 } 4783 } 4784 }); 4785 boolHook = { 4786 set: function(elem, value, name) { 4787 if (value === false) { 4788 jQuery.removeAttr(elem, name); 4789 } else { 4790 elem.setAttribute(name, name); 4791 } 4792 return name; 4793 } 4794 }; 4795 jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function(_i, name) { 4796 var getter = attrHandle[name] || jQuery.find.attr; 4797 attrHandle[name] = function(elem, name2, isXML) { 4798 var ret, handle, lowercaseName = name2.toLowerCase(); 4799 if (!isXML) { 4800 handle = attrHandle[lowercaseName]; 4801 attrHandle[lowercaseName] = ret; 4802 ret = getter(elem, name2, isXML) != null ? lowercaseName : null; 4803 attrHandle[lowercaseName] = handle; 4804 } 4805 return ret; 4806 }; 4807 }); 4808 var rfocusable = /^(?:input|select|textarea|button)$/i, rclickable = /^(?:a|area)$/i; 4809 jQuery.fn.extend({ 4810 prop: function(name, value) { 4811 return access(this, jQuery.prop, name, value, arguments.length > 1); 4812 }, 4813 removeProp: function(name) { 4814 return this.each(function() { 4815 delete this[jQuery.propFix[name] || name]; 4816 }); 4817 } 4818 }); 4819 jQuery.extend({ 4820 prop: function(elem, name, value) { 4821 var ret, hooks, nType = elem.nodeType; 4822 if (nType === 3 || nType === 8 || nType === 2) { 4823 return; 4824 } 4825 if (nType !== 1 || !jQuery.isXMLDoc(elem)) { 4826 name = jQuery.propFix[name] || name; 4827 hooks = jQuery.propHooks[name]; 4828 } 4829 if (value !== void 0) { 4830 if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== void 0) { 4831 return ret; 4832 } 4833 return elem[name] = value; 4834 } 4835 if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) { 4836 return ret; 4837 } 4838 return elem[name]; 4839 }, 4840 propHooks: { 4841 tabIndex: { 4842 get: function(elem) { 4843 var tabindex = jQuery.find.attr(elem, "tabindex"); 4844 if (tabindex) { 4845 return parseInt(tabindex, 10); 4846 } 4847 if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) { 4848 return 0; 4849 } 4850 return -1; 4851 } 4852 } 4853 }, 4854 propFix: { 4855 "for": "htmlFor", 4856 "class": "className" 4857 } 4858 }); 4859 if (!support.optSelected) { 4860 jQuery.propHooks.selected = { 4861 get: function(elem) { 4862 var parent = elem.parentNode; 4863 if (parent && parent.parentNode) { 4864 parent.parentNode.selectedIndex; 4865 } 4866 return null; 4867 }, 4868 set: function(elem) { 4869 var parent = elem.parentNode; 4870 if (parent) { 4871 parent.selectedIndex; 4872 if (parent.parentNode) { 4873 parent.parentNode.selectedIndex; 4874 } 4875 } 4876 } 4877 }; 4878 } 4879 jQuery.each([ 4880 "tabIndex", 4881 "readOnly", 4882 "maxLength", 4883 "cellSpacing", 4884 "cellPadding", 4885 "rowSpan", 4886 "colSpan", 4887 "useMap", 4888 "frameBorder", 4889 "contentEditable" 4890 ], function() { 4891 jQuery.propFix[this.toLowerCase()] = this; 4892 }); 4893 function stripAndCollapse(value) { 4894 var tokens = value.match(rnothtmlwhite) || []; 4895 return tokens.join(" "); 4896 } 4897 function getClass(elem) { 4898 return elem.getAttribute && elem.getAttribute("class") || ""; 4899 } 4900 function classesToArray(value) { 4901 if (Array.isArray(value)) { 4902 return value; 4903 } 4904 if (typeof value === "string") { 4905 return value.match(rnothtmlwhite) || []; 4906 } 4907 return []; 4908 } 4909 jQuery.fn.extend({ 4910 addClass: function(value) { 4911 var classes, elem, cur, curValue, clazz, j, finalValue, i = 0; 4912 if (isFunction(value)) { 4913 return this.each(function(j2) { 4914 jQuery(this).addClass(value.call(this, j2, getClass(this))); 4915 }); 4916 } 4917 classes = classesToArray(value); 4918 if (classes.length) { 4919 while (elem = this[i++]) { 4920 curValue = getClass(elem); 4921 cur = elem.nodeType === 1 && " " + stripAndCollapse(curValue) + " "; 4922 if (cur) { 4923 j = 0; 4924 while (clazz = classes[j++]) { 4925 if (cur.indexOf(" " + clazz + " ") < 0) { 4926 cur += clazz + " "; 4927 } 4928 } 4929 finalValue = stripAndCollapse(cur); 4930 if (curValue !== finalValue) { 4931 elem.setAttribute("class", finalValue); 4932 } 4933 } 4934 } 4935 } 4936 return this; 4937 }, 4938 removeClass: function(value) { 4939 var classes, elem, cur, curValue, clazz, j, finalValue, i = 0; 4940 if (isFunction(value)) { 4941 return this.each(function(j2) { 4942 jQuery(this).removeClass(value.call(this, j2, getClass(this))); 4943 }); 4944 } 4945 if (!arguments.length) { 4946 return this.attr("class", ""); 4947 } 4948 classes = classesToArray(value); 4949 if (classes.length) { 4950 while (elem = this[i++]) { 4951 curValue = getClass(elem); 4952 cur = elem.nodeType === 1 && " " + stripAndCollapse(curValue) + " "; 4953 if (cur) { 4954 j = 0; 4955 while (clazz = classes[j++]) { 4956 while (cur.indexOf(" " + clazz + " ") > -1) { 4957 cur = cur.replace(" " + clazz + " ", " "); 4958 } 4959 } 4960 finalValue = stripAndCollapse(cur); 4961 if (curValue !== finalValue) { 4962 elem.setAttribute("class", finalValue); 4963 } 4964 } 4965 } 4966 } 4967 return this; 4968 }, 4969 toggleClass: function(value, stateVal) { 4970 var type = typeof value, isValidValue = type === "string" || Array.isArray(value); 4971 if (typeof stateVal === "boolean" && isValidValue) { 4972 return stateVal ? this.addClass(value) : this.removeClass(value); 4973 } 4974 if (isFunction(value)) { 4975 return this.each(function(i) { 4976 jQuery(this).toggleClass( 4977 value.call(this, i, getClass(this), stateVal), 4978 stateVal 4979 ); 4980 }); 4981 } 4982 return this.each(function() { 4983 var className, i, self2, classNames; 4984 if (isValidValue) { 4985 i = 0; 4986 self2 = jQuery(this); 4987 classNames = classesToArray(value); 4988 while (className = classNames[i++]) { 4989 if (self2.hasClass(className)) { 4990 self2.removeClass(className); 4991 } else { 4992 self2.addClass(className); 4993 } 4994 } 4995 } else if (value === void 0 || type === "boolean") { 4996 className = getClass(this); 4997 if (className) { 4998 dataPriv.set(this, "__className__", className); 4999 } 5000 if (this.setAttribute) { 5001 this.setAttribute( 5002 "class", 5003 className || value === false ? "" : dataPriv.get(this, "__className__") || "" 5004 ); 5005 } 5006 } 5007 }); 5008 }, 5009 hasClass: function(selector) { 5010 var className, elem, i = 0; 5011 className = " " + selector + " "; 5012 while (elem = this[i++]) { 5013 if (elem.nodeType === 1 && (" " + stripAndCollapse(getClass(elem)) + " ").indexOf(className) > -1) { 5014 return true; 5015 } 5016 } 5017 return false; 5018 } 5019 }); 5020 var rreturn = /\r/g; 5021 jQuery.fn.extend({ 5022 val: function(value) { 5023 var hooks, ret, valueIsFunction, elem = this[0]; 5024 if (!arguments.length) { 5025 if (elem) { 5026 hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()]; 5027 if (hooks && "get" in hooks && (ret = hooks.get(elem, "value")) !== void 0) { 5028 return ret; 5029 } 5030 ret = elem.value; 5031 if (typeof ret === "string") { 5032 return ret.replace(rreturn, ""); 5033 } 5034 return ret == null ? "" : ret; 5035 } 5036 return; 5037 } 5038 valueIsFunction = isFunction(value); 5039 return this.each(function(i) { 5040 var val; 5041 if (this.nodeType !== 1) { 5042 return; 5043 } 5044 if (valueIsFunction) { 5045 val = value.call(this, i, jQuery(this).val()); 5046 } else { 5047 val = value; 5048 } 5049 if (val == null) { 5050 val = ""; 5051 } else if (typeof val === "number") { 5052 val += ""; 5053 } else if (Array.isArray(val)) { 5054 val = jQuery.map(val, function(value2) { 5055 return value2 == null ? "" : value2 + ""; 5056 }); 5057 } 5058 hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()]; 5059 if (!hooks || !("set" in hooks) || hooks.set(this, val, "value") === void 0) { 5060 this.value = val; 5061 } 5062 }); 5063 } 5064 }); 5065 jQuery.extend({ 5066 valHooks: { 5067 option: { 5068 get: function(elem) { 5069 var val = jQuery.find.attr(elem, "value"); 5070 return val != null ? val : ( 5071 // Support: IE <=10 - 11 only 5072 // option.text throws exceptions (#14686, #14858) 5073 // Strip and collapse whitespace 5074 // https://html.spec.whatwg.org/#strip-and-collapse-whitespace 5075 stripAndCollapse(jQuery.text(elem)) 5076 ); 5077 } 5078 }, 5079 select: { 5080 get: function(elem) { 5081 var value, option, i, options = elem.options, index = elem.selectedIndex, one = elem.type === "select-one", values = one ? null : [], max = one ? index + 1 : options.length; 5082 if (index < 0) { 5083 i = max; 5084 } else { 5085 i = one ? index : 0; 5086 } 5087 for (; i < max; i++) { 5088 option = options[i]; 5089 if ((option.selected || i === index) && // Don't return options that are disabled or in a disabled optgroup 5090 !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, "optgroup"))) { 5091 value = jQuery(option).val(); 5092 if (one) { 5093 return value; 5094 } 5095 values.push(value); 5096 } 5097 } 5098 return values; 5099 }, 5100 set: function(elem, value) { 5101 var optionSet, option, options = elem.options, values = jQuery.makeArray(value), i = options.length; 5102 while (i--) { 5103 option = options[i]; 5104 if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) { 5105 optionSet = true; 5106 } 5107 } 5108 if (!optionSet) { 5109 elem.selectedIndex = -1; 5110 } 5111 return values; 5112 } 5113 } 5114 } 5115 }); 5116 jQuery.each(["radio", "checkbox"], function() { 5117 jQuery.valHooks[this] = { 5118 set: function(elem, value) { 5119 if (Array.isArray(value)) { 5120 return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1; 5121 } 5122 } 5123 }; 5124 if (!support.checkOn) { 5125 jQuery.valHooks[this].get = function(elem) { 5126 return elem.getAttribute("value") === null ? "on" : elem.value; 5127 }; 5128 } 5129 }); 5130 support.focusin = "onfocusin" in window2; 5131 var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, stopPropagationCallback = function(e) { 5132 e.stopPropagation(); 5133 }; 5134 jQuery.extend(jQuery.event, { 5135 trigger: function(event, data, elem, onlyHandlers) { 5136 var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, eventPath = [elem || document], type = hasOwn.call(event, "type") ? event.type : event, namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : []; 5137 cur = lastElement = tmp = elem = elem || document; 5138 if (elem.nodeType === 3 || elem.nodeType === 8) { 5139 return; 5140 } 5141 if (rfocusMorph.test(type + jQuery.event.triggered)) { 5142 return; 5143 } 5144 if (type.indexOf(".") > -1) { 5145 namespaces = type.split("."); 5146 type = namespaces.shift(); 5147 namespaces.sort(); 5148 } 5149 ontype = type.indexOf(":") < 0 && "on" + type; 5150 event = event[jQuery.expando] ? event : new jQuery.Event(type, typeof event === "object" && event); 5151 event.isTrigger = onlyHandlers ? 2 : 3; 5152 event.namespace = namespaces.join("."); 5153 event.rnamespace = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null; 5154 event.result = void 0; 5155 if (!event.target) { 5156 event.target = elem; 5157 } 5158 data = data == null ? [event] : jQuery.makeArray(data, [event]); 5159 special = jQuery.event.special[type] || {}; 5160 if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) { 5161 return; 5162 } 5163 if (!onlyHandlers && !special.noBubble && !isWindow(elem)) { 5164 bubbleType = special.delegateType || type; 5165 if (!rfocusMorph.test(bubbleType + type)) { 5166 cur = cur.parentNode; 5167 } 5168 for (; cur; cur = cur.parentNode) { 5169 eventPath.push(cur); 5170 tmp = cur; 5171 } 5172 if (tmp === (elem.ownerDocument || document)) { 5173 eventPath.push(tmp.defaultView || tmp.parentWindow || window2); 5174 } 5175 } 5176 i = 0; 5177 while ((cur = eventPath[i++]) && !event.isPropagationStopped()) { 5178 lastElement = cur; 5179 event.type = i > 1 ? bubbleType : special.bindType || type; 5180 handle = (dataPriv.get(cur, "events") || /* @__PURE__ */ Object.create(null))[event.type] && dataPriv.get(cur, "handle"); 5181 if (handle) { 5182 handle.apply(cur, data); 5183 } 5184 handle = ontype && cur[ontype]; 5185 if (handle && handle.apply && acceptData(cur)) { 5186 event.result = handle.apply(cur, data); 5187 if (event.result === false) { 5188 event.preventDefault(); 5189 } 5190 } 5191 } 5192 event.type = type; 5193 if (!onlyHandlers && !event.isDefaultPrevented()) { 5194 if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) { 5195 if (ontype && isFunction(elem[type]) && !isWindow(elem)) { 5196 tmp = elem[ontype]; 5197 if (tmp) { 5198 elem[ontype] = null; 5199 } 5200 jQuery.event.triggered = type; 5201 if (event.isPropagationStopped()) { 5202 lastElement.addEventListener(type, stopPropagationCallback); 5203 } 5204 elem[type](); 5205 if (event.isPropagationStopped()) { 5206 lastElement.removeEventListener(type, stopPropagationCallback); 5207 } 5208 jQuery.event.triggered = void 0; 5209 if (tmp) { 5210 elem[ontype] = tmp; 5211 } 5212 } 5213 } 5214 } 5215 return event.result; 5216 }, 5217 // Piggyback on a donor event to simulate a different one 5218 // Used only for `focus(in | out)` events 5219 simulate: function(type, elem, event) { 5220 var e = jQuery.extend( 5221 new jQuery.Event(), 5222 event, 5223 { 5224 type, 5225 isSimulated: true 5226 } 5227 ); 5228 jQuery.event.trigger(e, null, elem); 5229 } 5230 }); 5231 jQuery.fn.extend({ 5232 trigger: function(type, data) { 5233 return this.each(function() { 5234 jQuery.event.trigger(type, data, this); 5235 }); 5236 }, 5237 triggerHandler: function(type, data) { 5238 var elem = this[0]; 5239 if (elem) { 5240 return jQuery.event.trigger(type, data, elem, true); 5241 } 5242 } 5243 }); 5244 if (!support.focusin) { 5245 jQuery.each({ focus: "focusin", blur: "focusout" }, function(orig, fix) { 5246 var handler = function(event) { 5247 jQuery.event.simulate(fix, event.target, jQuery.event.fix(event)); 5248 }; 5249 jQuery.event.special[fix] = { 5250 setup: function() { 5251 var doc = this.ownerDocument || this.document || this, attaches = dataPriv.access(doc, fix); 5252 if (!attaches) { 5253 doc.addEventListener(orig, handler, true); 5254 } 5255 dataPriv.access(doc, fix, (attaches || 0) + 1); 5256 }, 5257 teardown: function() { 5258 var doc = this.ownerDocument || this.document || this, attaches = dataPriv.access(doc, fix) - 1; 5259 if (!attaches) { 5260 doc.removeEventListener(orig, handler, true); 5261 dataPriv.remove(doc, fix); 5262 } else { 5263 dataPriv.access(doc, fix, attaches); 5264 } 5265 } 5266 }; 5267 }); 5268 } 5269 var location = window2.location; 5270 var nonce = { guid: Date.now() }; 5271 var rquery = /\?/; 5272 jQuery.parseXML = function(data) { 5273 var xml; 5274 if (!data || typeof data !== "string") { 5275 return null; 5276 } 5277 try { 5278 xml = new window2.DOMParser().parseFromString(data, "text/xml"); 5279 } catch (e) { 5280 xml = void 0; 5281 } 5282 if (!xml || xml.getElementsByTagName("parsererror").length) { 5283 jQuery.error("Invalid XML: " + data); 5284 } 5285 return xml; 5286 }; 5287 var rbracket = /\[\]$/, rCRLF = /\r?\n/g, rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, rsubmittable = /^(?:input|select|textarea|keygen)/i; 5288 function buildParams(prefix, obj, traditional, add) { 5289 var name; 5290 if (Array.isArray(obj)) { 5291 jQuery.each(obj, function(i, v) { 5292 if (traditional || rbracket.test(prefix)) { 5293 add(prefix, v); 5294 } else { 5295 buildParams( 5296 prefix + "[" + (typeof v === "object" && v != null ? i : "") + "]", 5297 v, 5298 traditional, 5299 add 5300 ); 5301 } 5302 }); 5303 } else if (!traditional && toType(obj) === "object") { 5304 for (name in obj) { 5305 buildParams(prefix + "[" + name + "]", obj[name], traditional, add); 5306 } 5307 } else { 5308 add(prefix, obj); 5309 } 5310 } 5311 jQuery.param = function(a, traditional) { 5312 var prefix, s = [], add = function(key, valueOrFunction) { 5313 var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction; 5314 s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value == null ? "" : value); 5315 }; 5316 if (a == null) { 5317 return ""; 5318 } 5319 if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) { 5320 jQuery.each(a, function() { 5321 add(this.name, this.value); 5322 }); 5323 } else { 5324 for (prefix in a) { 5325 buildParams(prefix, a[prefix], traditional, add); 5326 } 5327 } 5328 return s.join("&"); 5329 }; 5330 jQuery.fn.extend({ 5331 serialize: function() { 5332 return jQuery.param(this.serializeArray()); 5333 }, 5334 serializeArray: function() { 5335 return this.map(function() { 5336 var elements = jQuery.prop(this, "elements"); 5337 return elements ? jQuery.makeArray(elements) : this; 5338 }).filter(function() { 5339 var type = this.type; 5340 return this.name && !jQuery(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type)); 5341 }).map(function(_i, elem) { 5342 var val = jQuery(this).val(); 5343 if (val == null) { 5344 return null; 5345 } 5346 if (Array.isArray(val)) { 5347 return jQuery.map(val, function(val2) { 5348 return { name: elem.name, value: val2.replace(rCRLF, "\r\n") }; 5349 }); 5350 } 5351 return { name: elem.name, value: val.replace(rCRLF, "\r\n") }; 5352 }).get(); 5353 } 5354 }); 5355 var r20 = /%20/g, rhash = /#.*$/, rantiCache = /([?&])_=[^&]*/, rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, prefilters = {}, transports = {}, allTypes = "*/".concat("*"), originAnchor = document.createElement("a"); 5356 originAnchor.href = location.href; 5357 function addToPrefiltersOrTransports(structure) { 5358 return function(dataTypeExpression, func) { 5359 if (typeof dataTypeExpression !== "string") { 5360 func = dataTypeExpression; 5361 dataTypeExpression = "*"; 5362 } 5363 var dataType, i = 0, dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || []; 5364 if (isFunction(func)) { 5365 while (dataType = dataTypes[i++]) { 5366 if (dataType[0] === "+") { 5367 dataType = dataType.slice(1) || "*"; 5368 (structure[dataType] = structure[dataType] || []).unshift(func); 5369 } else { 5370 (structure[dataType] = structure[dataType] || []).push(func); 5371 } 5372 } 5373 } 5374 }; 5375 } 5376 function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) { 5377 var inspected = {}, seekingTransport = structure === transports; 5378 function inspect(dataType) { 5379 var selected; 5380 inspected[dataType] = true; 5381 jQuery.each(structure[dataType] || [], function(_, prefilterOrFactory) { 5382 var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR); 5383 if (typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[dataTypeOrTransport]) { 5384 options.dataTypes.unshift(dataTypeOrTransport); 5385 inspect(dataTypeOrTransport); 5386 return false; 5387 } else if (seekingTransport) { 5388 return !(selected = dataTypeOrTransport); 5389 } 5390 }); 5391 return selected; 5392 } 5393 return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*"); 5394 } 5395 function ajaxExtend(target, src) { 5396 var key, deep, flatOptions = jQuery.ajaxSettings.flatOptions || {}; 5397 for (key in src) { 5398 if (src[key] !== void 0) { 5399 (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key]; 5400 } 5401 } 5402 if (deep) { 5403 jQuery.extend(true, target, deep); 5404 } 5405 return target; 5406 } 5407 function ajaxHandleResponses(s, jqXHR, responses) { 5408 var ct, type, finalDataType, firstDataType, contents = s.contents, dataTypes = s.dataTypes; 5409 while (dataTypes[0] === "*") { 5410 dataTypes.shift(); 5411 if (ct === void 0) { 5412 ct = s.mimeType || jqXHR.getResponseHeader("Content-Type"); 5413 } 5414 } 5415 if (ct) { 5416 for (type in contents) { 5417 if (contents[type] && contents[type].test(ct)) { 5418 dataTypes.unshift(type); 5419 break; 5420 } 5421 } 5422 } 5423 if (dataTypes[0] in responses) { 5424 finalDataType = dataTypes[0]; 5425 } else { 5426 for (type in responses) { 5427 if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) { 5428 finalDataType = type; 5429 break; 5430 } 5431 if (!firstDataType) { 5432 firstDataType = type; 5433 } 5434 } 5435 finalDataType = finalDataType || firstDataType; 5436 } 5437 if (finalDataType) { 5438 if (finalDataType !== dataTypes[0]) { 5439 dataTypes.unshift(finalDataType); 5440 } 5441 return responses[finalDataType]; 5442 } 5443 } 5444 function ajaxConvert(s, response, jqXHR, isSuccess) { 5445 var conv2, current, conv, tmp, prev, converters = {}, dataTypes = s.dataTypes.slice(); 5446 if (dataTypes[1]) { 5447 for (conv in s.converters) { 5448 converters[conv.toLowerCase()] = s.converters[conv]; 5449 } 5450 } 5451 current = dataTypes.shift(); 5452 while (current) { 5453 if (s.responseFields[current]) { 5454 jqXHR[s.responseFields[current]] = response; 5455 } 5456 if (!prev && isSuccess && s.dataFilter) { 5457 response = s.dataFilter(response, s.dataType); 5458 } 5459 prev = current; 5460 current = dataTypes.shift(); 5461 if (current) { 5462 if (current === "*") { 5463 current = prev; 5464 } else if (prev !== "*" && prev !== current) { 5465 conv = converters[prev + " " + current] || converters["* " + current]; 5466 if (!conv) { 5467 for (conv2 in converters) { 5468 tmp = conv2.split(" "); 5469 if (tmp[1] === current) { 5470 conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]]; 5471 if (conv) { 5472 if (conv === true) { 5473 conv = converters[conv2]; 5474 } else if (converters[conv2] !== true) { 5475 current = tmp[0]; 5476 dataTypes.unshift(tmp[1]); 5477 } 5478 break; 5479 } 5480 } 5481 } 5482 } 5483 if (conv !== true) { 5484 if (conv && s.throws) { 5485 response = conv(response); 5486 } else { 5487 try { 5488 response = conv(response); 5489 } catch (e) { 5490 return { 5491 state: "parsererror", 5492 error: conv ? e : "No conversion from " + prev + " to " + current 5493 }; 5494 } 5495 } 5496 } 5497 } 5498 } 5499 } 5500 return { state: "success", data: response }; 5501 } 5502 jQuery.extend({ 5503 // Counter for holding the number of active queries 5504 active: 0, 5505 // Last-Modified header cache for next request 5506 lastModified: {}, 5507 etag: {}, 5508 ajaxSettings: { 5509 url: location.href, 5510 type: "GET", 5511 isLocal: rlocalProtocol.test(location.protocol), 5512 global: true, 5513 processData: true, 5514 async: true, 5515 contentType: "application/x-www-form-urlencoded; charset=UTF-8", 5516 /* 5517 timeout: 0, 5518 data: null, 5519 dataType: null, 5520 username: null, 5521 password: null, 5522 cache: null, 5523 throws: false, 5524 traditional: false, 5525 headers: {}, 5526 */ 5527 accepts: { 5528 "*": allTypes, 5529 text: "text/plain", 5530 html: "text/html", 5531 xml: "application/xml, text/xml", 5532 json: "application/json, text/javascript" 5533 }, 5534 contents: { 5535 xml: /\bxml\b/, 5536 html: /\bhtml/, 5537 json: /\bjson\b/ 5538 }, 5539 responseFields: { 5540 xml: "responseXML", 5541 text: "responseText", 5542 json: "responseJSON" 5543 }, 5544 // Data converters 5545 // Keys separate source (or catchall "*") and destination types with a single space 5546 converters: { 5547 // Convert anything to text 5548 "* text": String, 5549 // Text to html (true = no transformation) 5550 "text html": true, 5551 // Evaluate text as a json expression 5552 "text json": JSON.parse, 5553 // Parse text as xml 5554 "text xml": jQuery.parseXML 5555 }, 5556 // For options that shouldn't be deep extended: 5557 // you can add your own custom options here if 5558 // and when you create one that shouldn't be 5559 // deep extended (see ajaxExtend) 5560 flatOptions: { 5561 url: true, 5562 context: true 5563 } 5564 }, 5565 // Creates a full fledged settings object into target 5566 // with both ajaxSettings and settings fields. 5567 // If target is omitted, writes into ajaxSettings. 5568 ajaxSetup: function(target, settings) { 5569 return settings ? ( 5570 // Building a settings object 5571 ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) 5572 ) : ( 5573 // Extending ajaxSettings 5574 ajaxExtend(jQuery.ajaxSettings, target) 5575 ); 5576 }, 5577 ajaxPrefilter: addToPrefiltersOrTransports(prefilters), 5578 ajaxTransport: addToPrefiltersOrTransports(transports), 5579 // Main method 5580 ajax: function(url, options) { 5581 if (typeof url === "object") { 5582 options = url; 5583 url = void 0; 5584 } 5585 options = options || {}; 5586 var transport, cacheURL, responseHeadersString, responseHeaders, timeoutTimer, urlAnchor, completed2, fireGlobals, i, uncached, s = jQuery.ajaxSetup({}, options), callbackContext = s.context || s, globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event, deferred = jQuery.Deferred(), completeDeferred = jQuery.Callbacks("once memory"), statusCode = s.statusCode || {}, requestHeaders = {}, requestHeadersNames = {}, strAbort = "canceled", jqXHR = { 5587 readyState: 0, 5588 // Builds headers hashtable if needed 5589 getResponseHeader: function(key) { 5590 var match; 5591 if (completed2) { 5592 if (!responseHeaders) { 5593 responseHeaders = {}; 5594 while (match = rheaders.exec(responseHeadersString)) { 5595 responseHeaders[match[1].toLowerCase() + " "] = (responseHeaders[match[1].toLowerCase() + " "] || []).concat(match[2]); 5596 } 5597 } 5598 match = responseHeaders[key.toLowerCase() + " "]; 5599 } 5600 return match == null ? null : match.join(", "); 5601 }, 5602 // Raw string 5603 getAllResponseHeaders: function() { 5604 return completed2 ? responseHeadersString : null; 5605 }, 5606 // Caches the header 5607 setRequestHeader: function(name, value) { 5608 if (completed2 == null) { 5609 name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name; 5610 requestHeaders[name] = value; 5611 } 5612 return this; 5613 }, 5614 // Overrides response content-type header 5615 overrideMimeType: function(type) { 5616 if (completed2 == null) { 5617 s.mimeType = type; 5618 } 5619 return this; 5620 }, 5621 // Status-dependent callbacks 5622 statusCode: function(map) { 5623 var code; 5624 if (map) { 5625 if (completed2) { 5626 jqXHR.always(map[jqXHR.status]); 5627 } else { 5628 for (code in map) { 5629 statusCode[code] = [statusCode[code], map[code]]; 5630 } 5631 } 5632 } 5633 return this; 5634 }, 5635 // Cancel the request 5636 abort: function(statusText) { 5637 var finalText = statusText || strAbort; 5638 if (transport) { 5639 transport.abort(finalText); 5640 } 5641 done(0, finalText); 5642 return this; 5643 } 5644 }; 5645 deferred.promise(jqXHR); 5646 s.url = ((url || s.url || location.href) + "").replace(rprotocol, location.protocol + "//"); 5647 s.type = options.method || options.type || s.method || s.type; 5648 s.dataTypes = (s.dataType || "*").toLowerCase().match(rnothtmlwhite) || [""]; 5649 if (s.crossDomain == null) { 5650 urlAnchor = document.createElement("a"); 5651 try { 5652 urlAnchor.href = s.url; 5653 urlAnchor.href = urlAnchor.href; 5654 s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== urlAnchor.protocol + "//" + urlAnchor.host; 5655 } catch (e) { 5656 s.crossDomain = true; 5657 } 5658 } 5659 if (s.data && s.processData && typeof s.data !== "string") { 5660 s.data = jQuery.param(s.data, s.traditional); 5661 } 5662 inspectPrefiltersOrTransports(prefilters, s, options, jqXHR); 5663 if (completed2) { 5664 return jqXHR; 5665 } 5666 fireGlobals = jQuery.event && s.global; 5667 if (fireGlobals && jQuery.active++ === 0) { 5668 jQuery.event.trigger("ajaxStart"); 5669 } 5670 s.type = s.type.toUpperCase(); 5671 s.hasContent = !rnoContent.test(s.type); 5672 cacheURL = s.url.replace(rhash, ""); 5673 if (!s.hasContent) { 5674 uncached = s.url.slice(cacheURL.length); 5675 if (s.data && (s.processData || typeof s.data === "string")) { 5676 cacheURL += (rquery.test(cacheURL) ? "&" : "?") + s.data; 5677 delete s.data; 5678 } 5679 if (s.cache === false) { 5680 cacheURL = cacheURL.replace(rantiCache, "$1"); 5681 uncached = (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce.guid++ + uncached; 5682 } 5683 s.url = cacheURL + uncached; 5684 } else if (s.data && s.processData && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0) { 5685 s.data = s.data.replace(r20, "+"); 5686 } 5687 if (s.ifModified) { 5688 if (jQuery.lastModified[cacheURL]) { 5689 jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[cacheURL]); 5690 } 5691 if (jQuery.etag[cacheURL]) { 5692 jqXHR.setRequestHeader("If-None-Match", jQuery.etag[cacheURL]); 5693 } 5694 } 5695 if (s.data && s.hasContent && s.contentType !== false || options.contentType) { 5696 jqXHR.setRequestHeader("Content-Type", s.contentType); 5697 } 5698 jqXHR.setRequestHeader( 5699 "Accept", 5700 s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== "*" ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"] 5701 ); 5702 for (i in s.headers) { 5703 jqXHR.setRequestHeader(i, s.headers[i]); 5704 } 5705 if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed2)) { 5706 return jqXHR.abort(); 5707 } 5708 strAbort = "abort"; 5709 completeDeferred.add(s.complete); 5710 jqXHR.done(s.success); 5711 jqXHR.fail(s.error); 5712 transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR); 5713 if (!transport) { 5714 done(-1, "No Transport"); 5715 } else { 5716 jqXHR.readyState = 1; 5717 if (fireGlobals) { 5718 globalEventContext.trigger("ajaxSend", [jqXHR, s]); 5719 } 5720 if (completed2) { 5721 return jqXHR; 5722 } 5723 if (s.async && s.timeout > 0) { 5724 timeoutTimer = window2.setTimeout(function() { 5725 jqXHR.abort("timeout"); 5726 }, s.timeout); 5727 } 5728 try { 5729 completed2 = false; 5730 transport.send(requestHeaders, done); 5731 } catch (e) { 5732 if (completed2) { 5733 throw e; 5734 } 5735 done(-1, e); 5736 } 5737 } 5738 function done(status, nativeStatusText, responses, headers) { 5739 var isSuccess, success, error, response, modified, statusText = nativeStatusText; 5740 if (completed2) { 5741 return; 5742 } 5743 completed2 = true; 5744 if (timeoutTimer) { 5745 window2.clearTimeout(timeoutTimer); 5746 } 5747 transport = void 0; 5748 responseHeadersString = headers || ""; 5749 jqXHR.readyState = status > 0 ? 4 : 0; 5750 isSuccess = status >= 200 && status < 300 || status === 304; 5751 if (responses) { 5752 response = ajaxHandleResponses(s, jqXHR, responses); 5753 } 5754 if (!isSuccess && jQuery.inArray("script", s.dataTypes) > -1) { 5755 s.converters["text script"] = function() { 5756 }; 5757 } 5758 response = ajaxConvert(s, response, jqXHR, isSuccess); 5759 if (isSuccess) { 5760 if (s.ifModified) { 5761 modified = jqXHR.getResponseHeader("Last-Modified"); 5762 if (modified) { 5763 jQuery.lastModified[cacheURL] = modified; 5764 } 5765 modified = jqXHR.getResponseHeader("etag"); 5766 if (modified) { 5767 jQuery.etag[cacheURL] = modified; 5768 } 5769 } 5770 if (status === 204 || s.type === "HEAD") { 5771 statusText = "nocontent"; 5772 } else if (status === 304) { 5773 statusText = "notmodified"; 5774 } else { 5775 statusText = response.state; 5776 success = response.data; 5777 error = response.error; 5778 isSuccess = !error; 5779 } 5780 } else { 5781 error = statusText; 5782 if (status || !statusText) { 5783 statusText = "error"; 5784 if (status < 0) { 5785 status = 0; 5786 } 5787 } 5788 } 5789 jqXHR.status = status; 5790 jqXHR.statusText = (nativeStatusText || statusText) + ""; 5791 if (isSuccess) { 5792 deferred.resolveWith(callbackContext, [success, statusText, jqXHR]); 5793 } else { 5794 deferred.rejectWith(callbackContext, [jqXHR, statusText, error]); 5795 } 5796 jqXHR.statusCode(statusCode); 5797 statusCode = void 0; 5798 if (fireGlobals) { 5799 globalEventContext.trigger( 5800 isSuccess ? "ajaxSuccess" : "ajaxError", 5801 [jqXHR, s, isSuccess ? success : error] 5802 ); 5803 } 5804 completeDeferred.fireWith(callbackContext, [jqXHR, statusText]); 5805 if (fireGlobals) { 5806 globalEventContext.trigger("ajaxComplete", [jqXHR, s]); 5807 if (!--jQuery.active) { 5808 jQuery.event.trigger("ajaxStop"); 5809 } 5810 } 5811 } 5812 return jqXHR; 5813 }, 5814 getJSON: function(url, data, callback) { 5815 return jQuery.get(url, data, callback, "json"); 5816 }, 5817 getScript: function(url, callback) { 5818 return jQuery.get(url, void 0, callback, "script"); 5819 } 5820 }); 5821 jQuery.each(["get", "post"], function(_i, method) { 5822 jQuery[method] = function(url, data, callback, type) { 5823 if (isFunction(data)) { 5824 type = type || callback; 5825 callback = data; 5826 data = void 0; 5827 } 5828 return jQuery.ajax(jQuery.extend({ 5829 url, 5830 type: method, 5831 dataType: type, 5832 data, 5833 success: callback 5834 }, jQuery.isPlainObject(url) && url)); 5835 }; 5836 }); 5837 jQuery.ajaxPrefilter(function(s) { 5838 var i; 5839 for (i in s.headers) { 5840 if (i.toLowerCase() === "content-type") { 5841 s.contentType = s.headers[i] || ""; 5842 } 5843 } 5844 }); 5845 jQuery._evalUrl = function(url, options, doc) { 5846 return jQuery.ajax({ 5847 url, 5848 // Make this explicit, since user can override this through ajaxSetup (#11264) 5849 type: "GET", 5850 dataType: "script", 5851 cache: true, 5852 async: false, 5853 global: false, 5854 // Only evaluate the response if it is successful (gh-4126) 5855 // dataFilter is not invoked for failure responses, so using it instead 5856 // of the default converter is kludgy but it works. 5857 converters: { 5858 "text script": function() { 5859 } 5860 }, 5861 dataFilter: function(response) { 5862 jQuery.globalEval(response, options, doc); 5863 } 5864 }); 5865 }; 5866 jQuery.fn.extend({ 5867 wrapAll: function(html) { 5868 var wrap; 5869 if (this[0]) { 5870 if (isFunction(html)) { 5871 html = html.call(this[0]); 5872 } 5873 wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true); 5874 if (this[0].parentNode) { 5875 wrap.insertBefore(this[0]); 5876 } 5877 wrap.map(function() { 5878 var elem = this; 5879 while (elem.firstElementChild) { 5880 elem = elem.firstElementChild; 5881 } 5882 return elem; 5883 }).append(this); 5884 } 5885 return this; 5886 }, 5887 wrapInner: function(html) { 5888 if (isFunction(html)) { 5889 return this.each(function(i) { 5890 jQuery(this).wrapInner(html.call(this, i)); 5891 }); 5892 } 5893 return this.each(function() { 5894 var self2 = jQuery(this), contents = self2.contents(); 5895 if (contents.length) { 5896 contents.wrapAll(html); 5897 } else { 5898 self2.append(html); 5899 } 5900 }); 5901 }, 5902 wrap: function(html) { 5903 var htmlIsFunction = isFunction(html); 5904 return this.each(function(i) { 5905 jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html); 5906 }); 5907 }, 5908 unwrap: function(selector) { 5909 this.parent(selector).not("body").each(function() { 5910 jQuery(this).replaceWith(this.childNodes); 5911 }); 5912 return this; 5913 } 5914 }); 5915 jQuery.expr.pseudos.hidden = function(elem) { 5916 return !jQuery.expr.pseudos.visible(elem); 5917 }; 5918 jQuery.expr.pseudos.visible = function(elem) { 5919 return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length); 5920 }; 5921 jQuery.ajaxSettings.xhr = function() { 5922 try { 5923 return new window2.XMLHttpRequest(); 5924 } catch (e) { 5925 } 5926 }; 5927 var xhrSuccessStatus = { 5928 // File protocol always yields status code 0, assume 200 5929 0: 200, 5930 // Support: IE <=9 only 5931 // #1450: sometimes IE returns 1223 when it should be 204 5932 1223: 204 5933 }, xhrSupported = jQuery.ajaxSettings.xhr(); 5934 support.cors = !!xhrSupported && "withCredentials" in xhrSupported; 5935 support.ajax = xhrSupported = !!xhrSupported; 5936 jQuery.ajaxTransport(function(options) { 5937 var callback, errorCallback; 5938 if (support.cors || xhrSupported && !options.crossDomain) { 5939 return { 5940 send: function(headers, complete) { 5941 var i, xhr = options.xhr(); 5942 xhr.open( 5943 options.type, 5944 options.url, 5945 options.async, 5946 options.username, 5947 options.password 5948 ); 5949 if (options.xhrFields) { 5950 for (i in options.xhrFields) { 5951 xhr[i] = options.xhrFields[i]; 5952 } 5953 } 5954 if (options.mimeType && xhr.overrideMimeType) { 5955 xhr.overrideMimeType(options.mimeType); 5956 } 5957 if (!options.crossDomain && !headers["X-Requested-With"]) { 5958 headers["X-Requested-With"] = "XMLHttpRequest"; 5959 } 5960 for (i in headers) { 5961 xhr.setRequestHeader(i, headers[i]); 5962 } 5963 callback = function(type) { 5964 return function() { 5965 if (callback) { 5966 callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null; 5967 if (type === "abort") { 5968 xhr.abort(); 5969 } else if (type === "error") { 5970 if (typeof xhr.status !== "number") { 5971 complete(0, "error"); 5972 } else { 5973 complete( 5974 // File: protocol always yields status 0; see #8605, #14207 5975 xhr.status, 5976 xhr.statusText 5977 ); 5978 } 5979 } else { 5980 complete( 5981 xhrSuccessStatus[xhr.status] || xhr.status, 5982 xhr.statusText, 5983 // Support: IE <=9 only 5984 // IE9 has no XHR2 but throws on binary (trac-11426) 5985 // For XHR2 non-text, let the caller handle it (gh-2498) 5986 (xhr.responseType || "text") !== "text" || typeof xhr.responseText !== "string" ? { binary: xhr.response } : { text: xhr.responseText }, 5987 xhr.getAllResponseHeaders() 5988 ); 5989 } 5990 } 5991 }; 5992 }; 5993 xhr.onload = callback(); 5994 errorCallback = xhr.onerror = xhr.ontimeout = callback("error"); 5995 if (xhr.onabort !== void 0) { 5996 xhr.onabort = errorCallback; 5997 } else { 5998 xhr.onreadystatechange = function() { 5999 if (xhr.readyState === 4) { 6000 window2.setTimeout(function() { 6001 if (callback) { 6002 errorCallback(); 6003 } 6004 }); 6005 } 6006 }; 6007 } 6008 callback = callback("abort"); 6009 try { 6010 xhr.send(options.hasContent && options.data || null); 6011 } catch (e) { 6012 if (callback) { 6013 throw e; 6014 } 6015 } 6016 }, 6017 abort: function() { 6018 if (callback) { 6019 callback(); 6020 } 6021 } 6022 }; 6023 } 6024 }); 6025 jQuery.ajaxPrefilter(function(s) { 6026 if (s.crossDomain) { 6027 s.contents.script = false; 6028 } 6029 }); 6030 jQuery.ajaxSetup({ 6031 accepts: { 6032 script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" 6033 }, 6034 contents: { 6035 script: /\b(?:java|ecma)script\b/ 6036 }, 6037 converters: { 6038 "text script": function(text) { 6039 jQuery.globalEval(text); 6040 return text; 6041 } 6042 } 6043 }); 6044 jQuery.ajaxPrefilter("script", function(s) { 6045 if (s.cache === void 0) { 6046 s.cache = false; 6047 } 6048 if (s.crossDomain) { 6049 s.type = "GET"; 6050 } 6051 }); 6052 jQuery.ajaxTransport("script", function(s) { 6053 if (s.crossDomain || s.scriptAttrs) { 6054 var script, callback; 6055 return { 6056 send: function(_, complete) { 6057 script = jQuery("<script>").attr(s.scriptAttrs || {}).prop({ charset: s.scriptCharset, src: s.url }).on("load error", callback = function(evt) { 6058 script.remove(); 6059 callback = null; 6060 if (evt) { 6061 complete(evt.type === "error" ? 404 : 200, evt.type); 6062 } 6063 }); 6064 document.head.appendChild(script[0]); 6065 }, 6066 abort: function() { 6067 if (callback) { 6068 callback(); 6069 } 6070 } 6071 }; 6072 } 6073 }); 6074 var oldCallbacks = [], rjsonp = /(=)\?(?=&|$)|\?\?/; 6075 jQuery.ajaxSetup({ 6076 jsonp: "callback", 6077 jsonpCallback: function() { 6078 var callback = oldCallbacks.pop() || jQuery.expando + "_" + nonce.guid++; 6079 this[callback] = true; 6080 return callback; 6081 } 6082 }); 6083 jQuery.ajaxPrefilter("json jsonp", function(s, originalSettings, jqXHR) { 6084 var callbackName, overwritten, responseContainer, jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? "url" : typeof s.data === "string" && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0 && rjsonp.test(s.data) && "data"); 6085 if (jsonProp || s.dataTypes[0] === "jsonp") { 6086 callbackName = s.jsonpCallback = isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback; 6087 if (jsonProp) { 6088 s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName); 6089 } else if (s.jsonp !== false) { 6090 s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName; 6091 } 6092 s.converters["script json"] = function() { 6093 if (!responseContainer) { 6094 jQuery.error(callbackName + " was not called"); 6095 } 6096 return responseContainer[0]; 6097 }; 6098 s.dataTypes[0] = "json"; 6099 overwritten = window2[callbackName]; 6100 window2[callbackName] = function() { 6101 responseContainer = arguments; 6102 }; 6103 jqXHR.always(function() { 6104 if (overwritten === void 0) { 6105 jQuery(window2).removeProp(callbackName); 6106 } else { 6107 window2[callbackName] = overwritten; 6108 } 6109 if (s[callbackName]) { 6110 s.jsonpCallback = originalSettings.jsonpCallback; 6111 oldCallbacks.push(callbackName); 6112 } 6113 if (responseContainer && isFunction(overwritten)) { 6114 overwritten(responseContainer[0]); 6115 } 6116 responseContainer = overwritten = void 0; 6117 }); 6118 return "script"; 6119 } 6120 }); 6121 support.createHTMLDocument = function() { 6122 var body = document.implementation.createHTMLDocument("").body; 6123 body.innerHTML = "<form></form><form></form>"; 6124 return body.childNodes.length === 2; 6125 }(); 6126 jQuery.parseHTML = function(data, context, keepScripts) { 6127 if (typeof data !== "string") { 6128 return []; 6129 } 6130 if (typeof context === "boolean") { 6131 keepScripts = context; 6132 context = false; 6133 } 6134 var base, parsed, scripts; 6135 if (!context) { 6136 if (support.createHTMLDocument) { 6137 context = document.implementation.createHTMLDocument(""); 6138 base = context.createElement("base"); 6139 base.href = document.location.href; 6140 context.head.appendChild(base); 6141 } else { 6142 context = document; 6143 } 6144 } 6145 parsed = rsingleTag.exec(data); 6146 scripts = !keepScripts && []; 6147 if (parsed) { 6148 return [context.createElement(parsed[1])]; 6149 } 6150 parsed = buildFragment([data], context, scripts); 6151 if (scripts && scripts.length) { 6152 jQuery(scripts).remove(); 6153 } 6154 return jQuery.merge([], parsed.childNodes); 6155 }; 6156 jQuery.fn.load = function(url, params, callback) { 6157 var selector, type, response, self2 = this, off = url.indexOf(" "); 6158 if (off > -1) { 6159 selector = stripAndCollapse(url.slice(off)); 6160 url = url.slice(0, off); 6161 } 6162 if (isFunction(params)) { 6163 callback = params; 6164 params = void 0; 6165 } else if (params && typeof params === "object") { 6166 type = "POST"; 6167 } 6168 if (self2.length > 0) { 6169 jQuery.ajax({ 6170 url, 6171 // If "type" variable is undefined, then "GET" method will be used. 6172 // Make value of this field explicit since 6173 // user can override it through ajaxSetup method 6174 type: type || "GET", 6175 dataType: "html", 6176 data: params 6177 }).done(function(responseText) { 6178 response = arguments; 6179 self2.html(selector ? ( 6180 // If a selector was specified, locate the right elements in a dummy div 6181 // Exclude scripts to avoid IE 'Permission Denied' errors 6182 jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector) 6183 ) : ( 6184 // Otherwise use the full result 6185 responseText 6186 )); 6187 }).always(callback && function(jqXHR, status) { 6188 self2.each(function() { 6189 callback.apply(this, response || [jqXHR.responseText, status, jqXHR]); 6190 }); 6191 }); 6192 } 6193 return this; 6194 }; 6195 jQuery.expr.pseudos.animated = function(elem) { 6196 return jQuery.grep(jQuery.timers, function(fn) { 6197 return elem === fn.elem; 6198 }).length; 6199 }; 6200 jQuery.offset = { 6201 setOffset: function(elem, options, i) { 6202 var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, position = jQuery.css(elem, "position"), curElem = jQuery(elem), props = {}; 6203 if (position === "static") { 6204 elem.style.position = "relative"; 6205 } 6206 curOffset = curElem.offset(); 6207 curCSSTop = jQuery.css(elem, "top"); 6208 curCSSLeft = jQuery.css(elem, "left"); 6209 calculatePosition = (position === "absolute" || position === "fixed") && (curCSSTop + curCSSLeft).indexOf("auto") > -1; 6210 if (calculatePosition) { 6211 curPosition = curElem.position(); 6212 curTop = curPosition.top; 6213 curLeft = curPosition.left; 6214 } else { 6215 curTop = parseFloat(curCSSTop) || 0; 6216 curLeft = parseFloat(curCSSLeft) || 0; 6217 } 6218 if (isFunction(options)) { 6219 options = options.call(elem, i, jQuery.extend({}, curOffset)); 6220 } 6221 if (options.top != null) { 6222 props.top = options.top - curOffset.top + curTop; 6223 } 6224 if (options.left != null) { 6225 props.left = options.left - curOffset.left + curLeft; 6226 } 6227 if ("using" in options) { 6228 options.using.call(elem, props); 6229 } else { 6230 if (typeof props.top === "number") { 6231 props.top += "px"; 6232 } 6233 if (typeof props.left === "number") { 6234 props.left += "px"; 6235 } 6236 curElem.css(props); 6237 } 6238 } 6239 }; 6240 jQuery.fn.extend({ 6241 // offset() relates an element's border box to the document origin 6242 offset: function(options) { 6243 if (arguments.length) { 6244 return options === void 0 ? this : this.each(function(i) { 6245 jQuery.offset.setOffset(this, options, i); 6246 }); 6247 } 6248 var rect, win, elem = this[0]; 6249 if (!elem) { 6250 return; 6251 } 6252 if (!elem.getClientRects().length) { 6253 return { top: 0, left: 0 }; 6254 } 6255 rect = elem.getBoundingClientRect(); 6256 win = elem.ownerDocument.defaultView; 6257 return { 6258 top: rect.top + win.pageYOffset, 6259 left: rect.left + win.pageXOffset 6260 }; 6261 }, 6262 // position() relates an element's margin box to its offset parent's padding box 6263 // This corresponds to the behavior of CSS absolute positioning 6264 position: function() { 6265 if (!this[0]) { 6266 return; 6267 } 6268 var offsetParent, offset, doc, elem = this[0], parentOffset = { top: 0, left: 0 }; 6269 if (jQuery.css(elem, "position") === "fixed") { 6270 offset = elem.getBoundingClientRect(); 6271 } else { 6272 offset = this.offset(); 6273 doc = elem.ownerDocument; 6274 offsetParent = elem.offsetParent || doc.documentElement; 6275 while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery.css(offsetParent, "position") === "static") { 6276 offsetParent = offsetParent.parentNode; 6277 } 6278 if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) { 6279 parentOffset = jQuery(offsetParent).offset(); 6280 parentOffset.top += jQuery.css(offsetParent, "borderTopWidth", true); 6281 parentOffset.left += jQuery.css(offsetParent, "borderLeftWidth", true); 6282 } 6283 } 6284 return { 6285 top: offset.top - parentOffset.top - jQuery.css(elem, "marginTop", true), 6286 left: offset.left - parentOffset.left - jQuery.css(elem, "marginLeft", true) 6287 }; 6288 }, 6289 // This method will return documentElement in the following cases: 6290 // 1) For the element inside the iframe without offsetParent, this method will return 6291 // documentElement of the parent window 6292 // 2) For the hidden or detached element 6293 // 3) For body or html element, i.e. in case of the html node - it will return itself 6294 // 6295 // but those exceptions were never presented as a real life use-cases 6296 // and might be considered as more preferable results. 6297 // 6298 // This logic, however, is not guaranteed and can change at any point in the future 6299 offsetParent: function() { 6300 return this.map(function() { 6301 var offsetParent = this.offsetParent; 6302 while (offsetParent && jQuery.css(offsetParent, "position") === "static") { 6303 offsetParent = offsetParent.offsetParent; 6304 } 6305 return offsetParent || documentElement; 6306 }); 6307 } 6308 }); 6309 jQuery.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(method, prop) { 6310 var top = "pageYOffset" === prop; 6311 jQuery.fn[method] = function(val) { 6312 return access(this, function(elem, method2, val2) { 6313 var win; 6314 if (isWindow(elem)) { 6315 win = elem; 6316 } else if (elem.nodeType === 9) { 6317 win = elem.defaultView; 6318 } 6319 if (val2 === void 0) { 6320 return win ? win[prop] : elem[method2]; 6321 } 6322 if (win) { 6323 win.scrollTo( 6324 !top ? val2 : win.pageXOffset, 6325 top ? val2 : win.pageYOffset 6326 ); 6327 } else { 6328 elem[method2] = val2; 6329 } 6330 }, method, val, arguments.length); 6331 }; 6332 }); 6333 jQuery.each(["top", "left"], function(_i, prop) { 6334 jQuery.cssHooks[prop] = addGetHookIf( 6335 support.pixelPosition, 6336 function(elem, computed) { 6337 if (computed) { 6338 computed = curCSS(elem, prop); 6339 return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + "px" : computed; 6340 } 6341 } 6342 ); 6343 }); 6344 jQuery.each({ Height: "height", Width: "width" }, function(name, type) { 6345 jQuery.each( 6346 { padding: "inner" + name, content: type, "": "outer" + name }, 6347 function(defaultExtra, funcName) { 6348 jQuery.fn[funcName] = function(margin, value) { 6349 var chainable = arguments.length && (defaultExtra || typeof margin !== "boolean"), extra = defaultExtra || (margin === true || value === true ? "margin" : "border"); 6350 return access(this, function(elem, type2, value2) { 6351 var doc; 6352 if (isWindow(elem)) { 6353 return funcName.indexOf("outer") === 0 ? elem["inner" + name] : elem.document.documentElement["client" + name]; 6354 } 6355 if (elem.nodeType === 9) { 6356 doc = elem.documentElement; 6357 return Math.max( 6358 elem.body["scroll" + name], 6359 doc["scroll" + name], 6360 elem.body["offset" + name], 6361 doc["offset" + name], 6362 doc["client" + name] 6363 ); 6364 } 6365 return value2 === void 0 ? ( 6366 // Get width or height on the element, requesting but not forcing parseFloat 6367 jQuery.css(elem, type2, extra) 6368 ) : ( 6369 // Set width or height on the element 6370 jQuery.style(elem, type2, value2, extra) 6371 ); 6372 }, type, chainable ? margin : void 0, chainable); 6373 }; 6374 } 6375 ); 6376 }); 6377 jQuery.each([ 6378 "ajaxStart", 6379 "ajaxStop", 6380 "ajaxComplete", 6381 "ajaxError", 6382 "ajaxSuccess", 6383 "ajaxSend" 6384 ], function(_i, type) { 6385 jQuery.fn[type] = function(fn) { 6386 return this.on(type, fn); 6387 }; 6388 }); 6389 jQuery.fn.extend({ 6390 bind: function(types, data, fn) { 6391 return this.on(types, null, data, fn); 6392 }, 6393 unbind: function(types, fn) { 6394 return this.off(types, null, fn); 6395 }, 6396 delegate: function(selector, types, data, fn) { 6397 return this.on(types, selector, data, fn); 6398 }, 6399 undelegate: function(selector, types, fn) { 6400 return arguments.length === 1 ? this.off(selector, "**") : this.off(types, selector || "**", fn); 6401 }, 6402 hover: function(fnOver, fnOut) { 6403 return this.mouseenter(fnOver).mouseleave(fnOut || fnOver); 6404 } 6405 }); 6406 jQuery.each( 6407 "blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), 6408 function(_i, name) { 6409 jQuery.fn[name] = function(data, fn) { 6410 return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name); 6411 }; 6412 } 6413 ); 6414 var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; 6415 jQuery.proxy = function(fn, context) { 6416 var tmp, args, proxy; 6417 if (typeof context === "string") { 6418 tmp = fn[context]; 6419 context = fn; 6420 fn = tmp; 6421 } 6422 if (!isFunction(fn)) { 6423 return void 0; 6424 } 6425 args = slice.call(arguments, 2); 6426 proxy = function() { 6427 return fn.apply(context || this, args.concat(slice.call(arguments))); 6428 }; 6429 proxy.guid = fn.guid = fn.guid || jQuery.guid++; 6430 return proxy; 6431 }; 6432 jQuery.holdReady = function(hold) { 6433 if (hold) { 6434 jQuery.readyWait++; 6435 } else { 6436 jQuery.ready(true); 6437 } 6438 }; 6439 jQuery.isArray = Array.isArray; 6440 jQuery.parseJSON = JSON.parse; 6441 jQuery.nodeName = nodeName; 6442 jQuery.isFunction = isFunction; 6443 jQuery.isWindow = isWindow; 6444 jQuery.camelCase = camelCase; 6445 jQuery.type = toType; 6446 jQuery.now = Date.now; 6447 jQuery.isNumeric = function(obj) { 6448 var type = jQuery.type(obj); 6449 return (type === "number" || type === "string") && // parseFloat NaNs numeric-cast false positives ("") 6450 // ...but misinterprets leading-number strings, particularly hex literals ("0x...") 6451 // subtraction forces infinities to NaN 6452 !isNaN(obj - parseFloat(obj)); 6453 }; 6454 jQuery.trim = function(text) { 6455 return text == null ? "" : (text + "").replace(rtrim, ""); 6456 }; 6457 if (typeof define === "function" && define.amd) { 6458 define("jquery", [], function() { 6459 return jQuery; 6460 }); 6461 } 6462 var _jQuery = window2.jQuery, _$ = window2.$; 6463 jQuery.noConflict = function(deep) { 6464 if (window2.$ === jQuery) { 6465 window2.$ = _$; 6466 } 6467 if (deep && window2.jQuery === jQuery) { 6468 window2.jQuery = _jQuery; 6469 } 6470 return jQuery; 6471 }; 6472 if (typeof noGlobal === "undefined") { 6473 window2.jQuery = window2.$ = jQuery; 6474 } 6475 return jQuery; 6476 }); 6477 } 6478 }); 6479 6480
6480// app/javascript/jquery.js 6481 function defineJQuery(target) { 6482 if (typeof target !== "undefined" && target.$ === void 0) { 6483 target.$ = target.jQuery = target.jquery = import_jquery.default; 6484 } 6485 } 6486 var import_jquery; 6487 var init_jquery = __esm({ 6488 "app/javascript/jquery.js"() { 6489 import_jquery = __toESM(require_jquery()); 6490 if (typeof window !== "undefined") { 6491 defineJQuery(window); 6492 } 6493 if (typeof window !== "undefined") { 6494 defineJQuery(window); 6495 } 6496 } 6497 }); 6498 6499
vendor: 108,295 bytes, lines 6499-9488
6499// node_modules/chroma-js/chroma.js 6500 var require_chroma = __commonJS({ 6501 "node_modules/chroma-js/chroma.js"(exports, module) { 6502 init_define_process(); 6503 init_jquery(); 6504 (function(global2, factory) { 6505 typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.chroma = factory()); 6506 })(exports, function() { 6507 "use strict"; 6508 var limit$2 = function(x, min2, max2) { 6509 if (min2 === void 0) min2 = 0; 6510 if (max2 === void 0) max2 = 1; 6511 return x < min2 ? min2 : x > max2 ? max2 : x; 6512 }; 6513 var limit$1 = limit$2; 6514 var clip_rgb$3 = function(rgb2) { 6515 rgb2._clipped = false; 6516 rgb2._unclipped = rgb2.slice(0); 6517 for (var i2 = 0; i2 <= 3; i2++) { 6518 if (i2 < 3) { 6519 if (rgb2[i2] < 0 || rgb2[i2] > 255) { 6520 rgb2._clipped = true; 6521 } 6522 rgb2[i2] = limit$1(rgb2[i2], 0, 255); 6523 } else if (i2 === 3) { 6524 rgb2[i2] = limit$1(rgb2[i2], 0, 1); 6525 } 6526 } 6527 return rgb2; 6528 }; 6529 var classToType = {}; 6530 for (var i$1 = 0, list$1 = ["Boolean", "Number", "String", "Function", "Array", "Date", "RegExp", "Undefined", "Null"]; i$1 < list$1.length; i$1 += 1) { 6531 var name = list$1[i$1]; 6532 classToType["[object " + name + "]"] = name.toLowerCase(); 6533 } 6534 var type$p = function(obj) { 6535 return classToType[Object.prototype.toString.call(obj)] || "object"; 6536 }; 6537 var type$o = type$p; 6538 var unpack$B = function(args, keyOrder) { 6539 if (keyOrder === void 0) keyOrder = null; 6540 if (args.length >= 3) { 6541 return Array.prototype.slice.call(args); 6542 } 6543 if (type$o(args[0]) == "object" && keyOrder) { 6544 return keyOrder.split("").filter(function(k) { 6545 return args[0][k] !== void 0; 6546 }).map(function(k) { 6547 return args[0][k]; 6548 }); 6549 } 6550 return args[0]; 6551 }; 6552 var type$n = type$p; 6553 var last$4 = function(args) { 6554 if (args.length < 2) { 6555 return null; 6556 } 6557 var l = args.length - 1; 6558 if (type$n(args[l]) == "string") { 6559 return args[l].toLowerCase(); 6560 } 6561 return null; 6562 }; 6563 var PI$2 = Math.PI; 6564 var utils = { 6565 clip_rgb: clip_rgb$3, 6566 limit: limit$2, 6567 type: type$p, 6568 unpack: unpack$B, 6569 last: last$4, 6570 PI: PI$2, 6571 TWOPI: PI$2 * 2, 6572 PITHIRD: PI$2 / 3, 6573 DEG2RAD: PI$2 / 180, 6574 RAD2DEG: 180 / PI$2 6575 }; 6576 var input$h = { 6577 format: {}, 6578 autodetect: [] 6579 }; 6580 var last$3 = utils.last; 6581 var clip_rgb$2 = utils.clip_rgb; 6582 var type$m = utils.type; 6583 var _input = input$h; 6584 var Color$D = function Color2() { 6585 var args = [], len = arguments.length; 6586 while (len--) args[len] = arguments[len]; 6587 var me = this; 6588 if (type$m(args[0]) === "object" && args[0].constructor && args[0].constructor === this.constructor) { 6589 return args[0]; 6590 } 6591 var mode = last$3(args); 6592 var autodetect = false; 6593 if (!mode) { 6594 autodetect = true; 6595 if (!_input.sorted) { 6596 _input.autodetect = _input.autodetect.sort(function(a, b) { 6597 return b.p - a.p; 6598 }); 6599 _input.sorted = true; 6600 } 6601 for (var i2 = 0, list2 = _input.autodetect; i2 < list2.length; i2 += 1) { 6602 var chk = list2[i2]; 6603 mode = chk.test.apply(chk, args); 6604 if (mode) { 6605 break; 6606 } 6607 } 6608 } 6609 if (_input.format[mode]) { 6610 var rgb2 = _input.format[mode].apply(null, autodetect ? args : args.slice(0, -1)); 6611 me._rgb = clip_rgb$2(rgb2); 6612 } else { 6613 throw new Error("unknown format: " + args); 6614 } 6615 if (me._rgb.length === 3) { 6616 me._rgb.push(1); 6617 } 6618 }; 6619 Color$D.prototype.toString = function toString() { 6620 if (type$m(this.hex) == "function") { 6621 return this.hex(); 6622 } 6623 return "[" + this._rgb.join(",") + "]"; 6624 }; 6625 var Color_1 = Color$D; 6626 var chroma$k = function() { 6627 var args = [], len = arguments.length; 6628 while (len--) args[len] = arguments[len]; 6629 return new (Function.prototype.bind.apply(chroma$k.Color, [null].concat(args)))(); 6630 }; 6631 chroma$k.Color = Color_1; 6632 chroma$k.version = "2.4.2"; 6633 var chroma_1 = chroma$k; 6634 var unpack$A = utils.unpack; 6635 var max$2 = Math.max; 6636 var rgb2cmyk$1 = function() { 6637 var args = [], len = arguments.length; 6638 while (len--) args[len] = arguments[len]; 6639 var ref = unpack$A(args, "rgb"); 6640 var r = ref[0]; 6641 var g = ref[1]; 6642 var b = ref[2]; 6643 r = r / 255; 6644 g = g / 255; 6645 b = b / 255; 6646 var k = 1 - max$2(r, max$2(g, b)); 6647 var f = k < 1 ? 1 / (1 - k) : 0; 6648 var c = (1 - r - k) * f; 6649 var m = (1 - g - k) * f; 6650 var y = (1 - b - k) * f; 6651 return [c, m, y, k]; 6652 }; 6653 var rgb2cmyk_1 = rgb2cmyk$1; 6654 var unpack$z = utils.unpack; 6655 var cmyk2rgb = function() { 6656 var args = [], len = arguments.length; 6657 while (len--) args[len] = arguments[len]; 6658 args = unpack$z(args, "cmyk"); 6659 var c = args[0]; 6660 var m = args[1]; 6661 var y = args[2]; 6662 var k = args[3]; 6663 var alpha = args.length > 4 ? args[4] : 1; 6664 if (k === 1) { 6665 return [0, 0, 0, alpha]; 6666 } 6667 return [ 6668 c >= 1 ? 0 : 255 * (1 - c) * (1 - k), 6669 // r 6670 m >= 1 ? 0 : 255 * (1 - m) * (1 - k), 6671 // g 6672 y >= 1 ? 0 : 255 * (1 - y) * (1 - k), 6673 // b 6674 alpha 6675 ]; 6676 }; 6677 var cmyk2rgb_1 = cmyk2rgb; 6678 var chroma$j = chroma_1; 6679 var Color$C = Color_1; 6680 var input$g = input$h; 6681 var unpack$y = utils.unpack; 6682 var type$l = utils.type; 6683 var rgb2cmyk = rgb2cmyk_1; 6684 Color$C.prototype.cmyk = function() { 6685 return rgb2cmyk(this._rgb); 6686 }; 6687 chroma$j.cmyk = function() { 6688 var args = [], len = arguments.length; 6689 while (len--) args[len] = arguments[len]; 6690 return new (Function.prototype.bind.apply(Color$C, [null].concat(args, ["cmyk"])))(); 6691 }; 6692 input$g.format.cmyk = cmyk2rgb_1; 6693 input$g.autodetect.push({ 6694 p: 2, 6695 test: function() { 6696 var args = [], len = arguments.length; 6697 while (len--) args[len] = arguments[len]; 6698 args = unpack$y(args, "cmyk"); 6699 if (type$l(args) === "array" && args.length === 4) { 6700 return "cmyk"; 6701 } 6702 } 6703 }); 6704 var unpack$x = utils.unpack; 6705 var last$2 = utils.last; 6706 var rnd = function(a) { 6707 return Math.round(a * 100) / 100; 6708 }; 6709 var hsl2css$1 = function() { 6710 var args = [], len = arguments.length; 6711 while (len--) args[len] = arguments[len]; 6712 var hsla = unpack$x(args, "hsla"); 6713 var mode = last$2(args) || "lsa"; 6714 hsla[0] = rnd(hsla[0] || 0); 6715 hsla[1] = rnd(hsla[1] * 100) + "%"; 6716 hsla[2] = rnd(hsla[2] * 100) + "%"; 6717 if (mode === "hsla" || hsla.length > 3 && hsla[3] < 1) { 6718 hsla[3] = hsla.length > 3 ? hsla[3] : 1; 6719 mode = "hsla"; 6720 } else { 6721 hsla.length = 3; 6722 } 6723 return mode + "(" + hsla.join(",") + ")"; 6724 }; 6725 var hsl2css_1 = hsl2css$1; 6726 var unpack$w = utils.unpack; 6727 var rgb2hsl$3 = function() { 6728 var args = [], len = arguments.length; 6729 while (len--) args[len] = arguments[len]; 6730 args = unpack$w(args, "rgba"); 6731 var r = args[0]; 6732 var g = args[1]; 6733 var b = args[2]; 6734 r /= 255; 6735 g /= 255; 6736 b /= 255; 6737 var min2 = Math.min(r, g, b); 6738 var max2 = Math.max(r, g, b); 6739 var l = (max2 + min2) / 2; 6740 var s, h; 6741 if (max2 === min2) { 6742 s = 0; 6743 h = Number.NaN; 6744 } else { 6745 s = l < 0.5 ? (max2 - min2) / (max2 + min2) : (max2 - min2) / (2 - max2 - min2); 6746 } 6747 if (r == max2) { 6748 h = (g - b) / (max2 - min2); 6749 } else if (g == max2) { 6750 h = 2 + (b - r) / (max2 - min2); 6751 } else if (b == max2) { 6752 h = 4 + (r - g) / (max2 - min2); 6753 } 6754 h *= 60; 6755 if (h < 0) { 6756 h += 360; 6757 } 6758 if (args.length > 3 && args[3] !== void 0) { 6759 return [h, s, l, args[3]]; 6760 } 6761 return [h, s, l]; 6762 }; 6763 var rgb2hsl_1 = rgb2hsl$3; 6764 var unpack$v = utils.unpack; 6765 var last$1 = utils.last; 6766 var hsl2css = hsl2css_1; 6767 var rgb2hsl$2 = rgb2hsl_1; 6768 var round$6 = Math.round; 6769 var rgb2css$1 = function() { 6770 var args = [], len = arguments.length; 6771 while (len--) args[len] = arguments[len]; 6772 var rgba = unpack$v(args, "rgba"); 6773 var mode = last$1(args) || "rgb"; 6774 if (mode.substr(0, 3) == "hsl") { 6775 return hsl2css(rgb2hsl$2(rgba), mode); 6776 } 6777 rgba[0] = round$6(rgba[0]); 6778 rgba[1] = round$6(rgba[1]); 6779 rgba[2] = round$6(rgba[2]); 6780 if (mode === "rgba" || rgba.length > 3 && rgba[3] < 1) { 6781 rgba[3] = rgba.length > 3 ? rgba[3] : 1; 6782 mode = "rgba"; 6783 } 6784 return mode + "(" + rgba.slice(0, mode === "rgb" ? 3 : 4).join(",") + ")"; 6785 }; 6786 var rgb2css_1 = rgb2css$1; 6787 var unpack$u = utils.unpack; 6788 var round$5 = Math.round; 6789 var hsl2rgb$1 = function() { 6790 var assign; 6791 var args = [], len = arguments.length; 6792 while (len--) args[len] = arguments[len]; 6793 args = unpack$u(args, "hsl"); 6794 var h = args[0]; 6795 var s = args[1]; 6796 var l = args[2]; 6797 var r, g, b; 6798 if (s === 0) { 6799 r = g = b = l * 255; 6800 } else { 6801 var t3 = [0, 0, 0]; 6802 var c = [0, 0, 0]; 6803 var t2 = l < 0.5 ? l * (1 + s) : l + s - l * s; 6804 var t1 = 2 * l - t2; 6805 var h_ = h / 360; 6806 t3[0] = h_ + 1 / 3; 6807 t3[1] = h_; 6808 t3[2] = h_ - 1 / 3; 6809 for (var i2 = 0; i2 < 3; i2++) { 6810 if (t3[i2] < 0) { 6811 t3[i2] += 1; 6812 } 6813 if (t3[i2] > 1) { 6814 t3[i2] -= 1; 6815 } 6816 if (6 * t3[i2] < 1) { 6817 c[i2] = t1 + (t2 - t1) * 6 * t3[i2]; 6818 } else if (2 * t3[i2] < 1) { 6819 c[i2] = t2; 6820 } else if (3 * t3[i2] < 2) { 6821 c[i2] = t1 + (t2 - t1) * (2 / 3 - t3[i2]) * 6; 6822 } else { 6823 c[i2] = t1; 6824 } 6825 } 6826 assign = [round$5(c[0] * 255), round$5(c[1] * 255), round$5(c[2] * 255)], r = assign[0], g = assign[1], b = assign[2]; 6827 } 6828 if (args.length > 3) { 6829 return [r, g, b, args[3]]; 6830 } 6831 return [r, g, b, 1]; 6832 }; 6833 var hsl2rgb_1 = hsl2rgb$1; 6834 var hsl2rgb = hsl2rgb_1; 6835 var input$f = input$h; 6836 var RE_RGB = /^rgb\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*\)$/; 6837 var RE_RGBA = /^rgba\(\s*(-?\d+),\s*(-?\d+)\s*,\s*(-?\d+)\s*,\s*([01]|[01]?\.\d+)\)$/; 6838 var RE_RGB_PCT = /^rgb\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; 6839 var RE_RGBA_PCT = /^rgba\(\s*(-?\d+(?:\.\d+)?)%,\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; 6840 var RE_HSL = /^hsl\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*\)$/; 6841 var RE_HSLA = /^hsla\(\s*(-?\d+(?:\.\d+)?),\s*(-?\d+(?:\.\d+)?)%\s*,\s*(-?\d+(?:\.\d+)?)%\s*,\s*([01]|[01]?\.\d+)\)$/; 6842 var round$4 = Math.round; 6843 var css2rgb$1 = function(css) { 6844 css = css.toLowerCase().trim(); 6845 var m; 6846 if (input$f.format.named) { 6847 try { 6848 return input$f.format.named(css); 6849 } catch (e) { 6850 } 6851 } 6852 if (m = css.match(RE_RGB)) { 6853 var rgb2 = m.slice(1, 4); 6854 for (var i2 = 0; i2 < 3; i2++) { 6855 rgb2[i2] = +rgb2[i2]; 6856 } 6857 rgb2[3] = 1; 6858 return rgb2; 6859 } 6860 if (m = css.match(RE_RGBA)) { 6861 var rgb$1 = m.slice(1, 5); 6862 for (var i$12 = 0; i$12 < 4; i$12++) { 6863 rgb$1[i$12] = +rgb$1[i$12]; 6864 } 6865 return rgb$1; 6866 } 6867 if (m = css.match(RE_RGB_PCT)) { 6868 var rgb$2 = m.slice(1, 4); 6869 for (var i$2 = 0; i$2 < 3; i$2++) { 6870 rgb$2[i$2] = round$4(rgb$2[i$2] * 2.55); 6871 } 6872 rgb$2[3] = 1; 6873 return rgb$2; 6874 } 6875 if (m = css.match(RE_RGBA_PCT)) { 6876 var rgb$3 = m.slice(1, 5); 6877 for (var i$3 = 0; i$3 < 3; i$3++) { 6878 rgb$3[i$3] = round$4(rgb$3[i$3] * 2.55); 6879 } 6880 rgb$3[3] = +rgb$3[3]; 6881 return rgb$3; 6882 } 6883 if (m = css.match(RE_HSL)) { 6884 var hsl2 = m.slice(1, 4); 6885 hsl2[1] *= 0.01; 6886 hsl2[2] *= 0.01; 6887 var rgb$4 = hsl2rgb(hsl2); 6888 rgb$4[3] = 1; 6889 return rgb$4; 6890 } 6891 if (m = css.match(RE_HSLA)) { 6892 var hsl$1 = m.slice(1, 4); 6893 hsl$1[1] *= 0.01; 6894 hsl$1[2] *= 0.01; 6895 var rgb$5 = hsl2rgb(hsl$1); 6896 rgb$5[3] = +m[4]; 6897 return rgb$5; 6898 } 6899 }; 6900 css2rgb$1.test = function(s) { 6901 return RE_RGB.test(s) || RE_RGBA.test(s) || RE_RGB_PCT.test(s) || RE_RGBA_PCT.test(s) || RE_HSL.test(s) || RE_HSLA.test(s); 6902 }; 6903 var css2rgb_1 = css2rgb$1; 6904 var chroma$i = chroma_1; 6905 var Color$B = Color_1; 6906 var input$e = input$h; 6907 var type$k = utils.type; 6908 var rgb2css = rgb2css_1; 6909 var css2rgb = css2rgb_1; 6910 Color$B.prototype.css = function(mode) { 6911 return rgb2css(this._rgb, mode); 6912 }; 6913 chroma$i.css = function() { 6914 var args = [], len = arguments.length; 6915 while (len--) args[len] = arguments[len]; 6916 return new (Function.prototype.bind.apply(Color$B, [null].concat(args, ["css"])))(); 6917 }; 6918 input$e.format.css = css2rgb; 6919 input$e.autodetect.push({ 6920 p: 5, 6921 test: function(h) { 6922 var rest = [], len = arguments.length - 1; 6923 while (len-- > 0) rest[len] = arguments[len + 1]; 6924 if (!rest.length && type$k(h) === "string" && css2rgb.test(h)) { 6925 return "css"; 6926 } 6927 } 6928 }); 6929 var Color$A = Color_1; 6930 var chroma$h = chroma_1; 6931 var input$d = input$h; 6932 var unpack$t = utils.unpack; 6933 input$d.format.gl = function() { 6934 var args = [], len = arguments.length; 6935 while (len--) args[len] = arguments[len]; 6936 var rgb2 = unpack$t(args, "rgba"); 6937 rgb2[0] *= 255; 6938 rgb2[1] *= 255; 6939 rgb2[2] *= 255; 6940 return rgb2; 6941 }; 6942 chroma$h.gl = function() { 6943 var args = [], len = arguments.length; 6944 while (len--) args[len] = arguments[len]; 6945 return new (Function.prototype.bind.apply(Color$A, [null].concat(args, ["gl"])))(); 6946 }; 6947 Color$A.prototype.gl = function() { 6948 var rgb2 = this._rgb; 6949 return [rgb2[0] / 255, rgb2[1] / 255, rgb2[2] / 255, rgb2[3]]; 6950 }; 6951 var unpack$s = utils.unpack; 6952 var rgb2hcg$1 = function() { 6953 var args = [], len = arguments.length; 6954 while (len--) args[len] = arguments[len]; 6955 var ref = unpack$s(args, "rgb"); 6956 var r = ref[0]; 6957 var g = ref[1]; 6958 var b = ref[2]; 6959 var min2 = Math.min(r, g, b); 6960 var max2 = Math.max(r, g, b); 6961 var delta = max2 - min2; 6962 var c = delta * 100 / 255; 6963 var _g = min2 / (255 - delta) * 100; 6964 var h; 6965 if (delta === 0) { 6966 h = Number.NaN; 6967 } else { 6968 if (r === max2) { 6969 h = (g - b) / delta; 6970 } 6971 if (g === max2) { 6972 h = 2 + (b - r) / delta; 6973 } 6974 if (b === max2) { 6975 h = 4 + (r - g) / delta; 6976 } 6977 h *= 60; 6978 if (h < 0) { 6979 h += 360; 6980 } 6981 } 6982 return [h, c, _g]; 6983 }; 6984 var rgb2hcg_1 = rgb2hcg$1; 6985 var unpack$r = utils.unpack; 6986 var floor$3 = Math.floor; 6987 var hcg2rgb = function() { 6988 var assign, assign$1, assign$2, assign$3, assign$4, assign$5; 6989 var args = [], len = arguments.length; 6990 while (len--) args[len] = arguments[len]; 6991 args = unpack$r(args, "hcg"); 6992 var h = args[0]; 6993 var c = args[1]; 6994 var _g = args[2]; 6995 var r, g, b; 6996 _g = _g * 255; 6997 var _c = c * 255; 6998 if (c === 0) { 6999 r = g = b = _g; 7000 } else { 7001 if (h === 360) { 7002 h = 0; 7003 } 7004 if (h > 360) { 7005 h -= 360; 7006 } 7007 if (h < 0) { 7008 h += 360; 7009 } 7010 h /= 60; 7011 var i2 = floor$3(h); 7012 var f = h - i2; 7013 var p = _g * (1 - c); 7014 var q = p + _c * (1 - f); 7015 var t = p + _c * f; 7016 var v = p + _c; 7017 switch (i2) { 7018 case 0: 7019 assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]; 7020 break; 7021 case 1: 7022 assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]; 7023 break; 7024 case 2: 7025 assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]; 7026 break; 7027 case 3: 7028 assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]; 7029 break; 7030 case 4: 7031 assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]; 7032 break; 7033 case 5: 7034 assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]; 7035 break; 7036 } 7037 } 7038 return [r, g, b, args.length > 3 ? args[3] : 1]; 7039 }; 7040 var hcg2rgb_1 = hcg2rgb; 7041 var unpack$q = utils.unpack; 7042 var type$j = utils.type; 7043 var chroma$g = chroma_1; 7044 var Color$z = Color_1; 7045 var input$c = input$h; 7046 var rgb2hcg = rgb2hcg_1; 7047 Color$z.prototype.hcg = function() { 7048 return rgb2hcg(this._rgb); 7049 }; 7050 chroma$g.hcg = function() { 7051 var args = [], len = arguments.length; 7052 while (len--) args[len] = arguments[len]; 7053 return new (Function.prototype.bind.apply(Color$z, [null].concat(args, ["hcg"])))(); 7054 }; 7055 input$c.format.hcg = hcg2rgb_1; 7056 input$c.autodetect.push({ 7057 p: 1, 7058 test: function() { 7059 var args = [], len = arguments.length; 7060 while (len--) args[len] = arguments[len]; 7061 args = unpack$q(args, "hcg"); 7062 if (type$j(args) === "array" && args.length === 3) { 7063 return "hcg"; 7064 } 7065 } 7066 }); 7067 var unpack$p = utils.unpack; 7068 var last = utils.last; 7069 var round$3 = Math.round; 7070 var rgb2hex$2 = function() { 7071 var args = [], len = arguments.length; 7072 while (len--) args[len] = arguments[len]; 7073 var ref = unpack$p(args, "rgba"); 7074 var r = ref[0]; 7075 var g = ref[1]; 7076 var b = ref[2]; 7077 var a = ref[3]; 7078 var mode = last(args) || "auto"; 7079 if (a === void 0) { 7080 a = 1; 7081 } 7082 if (mode === "auto") { 7083 mode = a < 1 ? "rgba" : "rgb"; 7084 } 7085 r = round$3(r); 7086 g = round$3(g); 7087 b = round$3(b); 7088 var u = r << 16 | g << 8 | b; 7089 var str = "000000" + u.toString(16); 7090 str = str.substr(str.length - 6); 7091 var hxa = "0" + round$3(a * 255).toString(16); 7092 hxa = hxa.substr(hxa.length - 2); 7093 switch (mode.toLowerCase()) { 7094 case "rgba": 7095 return "#" + str + hxa; 7096 case "argb": 7097 return "#" + hxa + str; 7098 default: 7099 return "#" + str; 7100 } 7101 }; 7102 var rgb2hex_1 = rgb2hex$2; 7103 var RE_HEX = /^#?([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/; 7104 var RE_HEXA = /^#?([A-Fa-f0-9]{8}|[A-Fa-f0-9]{4})$/; 7105 var hex2rgb$1 = function(hex) { 7106 if (hex.match(RE_HEX)) { 7107 if (hex.length === 4 || hex.length === 7) { 7108 hex = hex.substr(1); 7109 } 7110 if (hex.length === 3) { 7111 hex = hex.split(""); 7112 hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2]; 7113 } 7114 var u = parseInt(hex, 16); 7115 var r = u >> 16; 7116 var g = u >> 8 & 255; 7117 var b = u & 255; 7118 return [r, g, b, 1]; 7119 } 7120 if (hex.match(RE_HEXA)) { 7121 if (hex.length === 5 || hex.length === 9) { 7122 hex = hex.substr(1); 7123 } 7124 if (hex.length === 4) { 7125 hex = hex.split(""); 7126 hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2] + hex[3] + hex[3]; 7127 } 7128 var u$1 = parseInt(hex, 16); 7129 var r$1 = u$1 >> 24 & 255; 7130 var g$1 = u$1 >> 16 & 255; 7131 var b$1 = u$1 >> 8 & 255; 7132 var a = Math.round((u$1 & 255) / 255 * 100) / 100; 7133 return [r$1, g$1, b$1, a]; 7134 } 7135 throw new Error("unknown hex color: " + hex); 7136 }; 7137 var hex2rgb_1 = hex2rgb$1; 7138 var chroma$f = chroma_1; 7139 var Color$y = Color_1; 7140 var type$i = utils.type; 7141 var input$b = input$h; 7142 var rgb2hex$1 = rgb2hex_1; 7143 Color$y.prototype.hex = function(mode) { 7144 return rgb2hex$1(this._rgb, mode); 7145 }; 7146 chroma$f.hex = function() { 7147 var args = [], len = arguments.length; 7148 while (len--) args[len] = arguments[len]; 7149 return new (Function.prototype.bind.apply(Color$y, [null].concat(args, ["hex"])))(); 7150 }; 7151 input$b.format.hex = hex2rgb_1; 7152 input$b.autodetect.push({ 7153 p: 4, 7154 test: function(h) { 7155 var rest = [], len = arguments.length - 1; 7156 while (len-- > 0) rest[len] = arguments[len + 1]; 7157 if (!rest.length && type$i(h) === "string" && [3, 4, 5, 6, 7, 8, 9].indexOf(h.length) >= 0) { 7158 return "hex"; 7159 } 7160 } 7161 }); 7162 var unpack$o = utils.unpack; 7163 var TWOPI$2 = utils.TWOPI; 7164 var min$2 = Math.min; 7165 var sqrt$4 = Math.sqrt; 7166 var acos = Math.acos; 7167 var rgb2hsi$1 = function() { 7168 var args = [], len = arguments.length; 7169 while (len--) args[len] = arguments[len]; 7170 var ref = unpack$o(args, "rgb"); 7171 var r = ref[0]; 7172 var g = ref[1]; 7173 var b = ref[2]; 7174 r /= 255; 7175 g /= 255; 7176 b /= 255; 7177 var h; 7178 var min_ = min$2(r, g, b); 7179 var i2 = (r + g + b) / 3; 7180 var s = i2 > 0 ? 1 - min_ / i2 : 0; 7181 if (s === 0) { 7182 h = NaN; 7183 } else { 7184 h = (r - g + (r - b)) / 2; 7185 h /= sqrt$4((r - g) * (r - g) + (r - b) * (g - b)); 7186 h = acos(h); 7187 if (b > g) { 7188 h = TWOPI$2 - h; 7189 } 7190 h /= TWOPI$2; 7191 } 7192 return [h * 360, s, i2]; 7193 }; 7194 var rgb2hsi_1 = rgb2hsi$1; 7195 var unpack$n = utils.unpack; 7196 var limit = utils.limit; 7197 var TWOPI$1 = utils.TWOPI; 7198 var PITHIRD = utils.PITHIRD; 7199 var cos$4 = Math.cos; 7200 var hsi2rgb = function() { 7201 var args = [], len = arguments.length; 7202 while (len--) args[len] = arguments[len]; 7203 args = unpack$n(args, "hsi"); 7204 var h = args[0]; 7205 var s = args[1]; 7206 var i2 = args[2]; 7207 var r, g, b; 7208 if (isNaN(h)) { 7209 h = 0; 7210 } 7211 if (isNaN(s)) { 7212 s = 0; 7213 } 7214 if (h > 360) { 7215 h -= 360; 7216 } 7217 if (h < 0) { 7218 h += 360; 7219 } 7220 h /= 360; 7221 if (h < 1 / 3) { 7222 b = (1 - s) / 3; 7223 r = (1 + s * cos$4(TWOPI$1 * h) / cos$4(PITHIRD - TWOPI$1 * h)) / 3; 7224 g = 1 - (b + r); 7225 } else if (h < 2 / 3) { 7226 h -= 1 / 3; 7227 r = (1 - s) / 3; 7228 g = (1 + s * cos$4(TWOPI$1 * h) / cos$4(PITHIRD - TWOPI$1 * h)) / 3; 7229 b = 1 - (r + g); 7230 } else { 7231 h -= 2 / 3; 7232 g = (1 - s) / 3; 7233 b = (1 + s * cos$4(TWOPI$1 * h) / cos$4(PITHIRD - TWOPI$1 * h)) / 3; 7234 r = 1 - (g + b); 7235 } 7236 r = limit(i2 * r * 3); 7237 g = limit(i2 * g * 3); 7238 b = limit(i2 * b * 3); 7239 return [r * 255, g * 255, b * 255, args.length > 3 ? args[3] : 1]; 7240 }; 7241 var hsi2rgb_1 = hsi2rgb; 7242 var unpack$m = utils.unpack; 7243 var type$h = utils.type; 7244 var chroma$e = chroma_1; 7245 var Color$x = Color_1; 7246 var input$a = input$h; 7247 var rgb2hsi = rgb2hsi_1; 7248 Color$x.prototype.hsi = function() { 7249 return rgb2hsi(this._rgb); 7250 }; 7251 chroma$e.hsi = function() { 7252 var args = [], len = arguments.length; 7253 while (len--) args[len] = arguments[len]; 7254 return new (Function.prototype.bind.apply(Color$x, [null].concat(args, ["hsi"])))(); 7255 }; 7256 input$a.format.hsi = hsi2rgb_1; 7257 input$a.autodetect.push({ 7258 p: 2, 7259 test: function() { 7260 var args = [], len = arguments.length; 7261 while (len--) args[len] = arguments[len]; 7262 args = unpack$m(args, "hsi"); 7263 if (type$h(args) === "array" && args.length === 3) { 7264 return "hsi"; 7265 } 7266 } 7267 }); 7268 var unpack$l = utils.unpack; 7269 var type$g = utils.type; 7270 var chroma$d = chroma_1; 7271 var Color$w = Color_1; 7272 var input$9 = input$h; 7273 var rgb2hsl$1 = rgb2hsl_1; 7274 Color$w.prototype.hsl = function() { 7275 return rgb2hsl$1(this._rgb); 7276 }; 7277 chroma$d.hsl = function() { 7278 var args = [], len = arguments.length; 7279 while (len--) args[len] = arguments[len]; 7280 return new (Function.prototype.bind.apply(Color$w, [null].concat(args, ["hsl"])))(); 7281 }; 7282 input$9.format.hsl = hsl2rgb_1; 7283 input$9.autodetect.push({ 7284 p: 2, 7285 test: function() { 7286 var args = [], len = arguments.length; 7287 while (len--) args[len] = arguments[len]; 7288 args = unpack$l(args, "hsl"); 7289 if (type$g(args) === "array" && args.length === 3) { 7290 return "hsl"; 7291 } 7292 } 7293 }); 7294 var unpack$k = utils.unpack; 7295 var min$1 = Math.min; 7296 var max$1 = Math.max; 7297 var rgb2hsl = function() { 7298 var args = [], len = arguments.length; 7299 while (len--) args[len] = arguments[len]; 7300 args = unpack$k(args, "rgb"); 7301 var r = args[0]; 7302 var g = args[1]; 7303 var b = args[2]; 7304 var min_ = min$1(r, g, b); 7305 var max_ = max$1(r, g, b); 7306 var delta = max_ - min_; 7307 var h, s, v; 7308 v = max_ / 255; 7309 if (max_ === 0) { 7310 h = Number.NaN; 7311 s = 0; 7312 } else { 7313 s = delta / max_; 7314 if (r === max_) { 7315 h = (g - b) / delta; 7316 } 7317 if (g === max_) { 7318 h = 2 + (b - r) / delta; 7319 } 7320 if (b === max_) { 7321 h = 4 + (r - g) / delta; 7322 } 7323 h *= 60; 7324 if (h < 0) { 7325 h += 360; 7326 } 7327 } 7328 return [h, s, v]; 7329 }; 7330 var rgb2hsv$1 = rgb2hsl; 7331 var unpack$j = utils.unpack; 7332 var floor$2 = Math.floor; 7333 var hsv2rgb = function() { 7334 var assign, assign$1, assign$2, assign$3, assign$4, assign$5; 7335 var args = [], len = arguments.length; 7336 while (len--) args[len] = arguments[len]; 7337 args = unpack$j(args, "hsv"); 7338 var h = args[0]; 7339 var s = args[1]; 7340 var v = args[2]; 7341 var r, g, b; 7342 v *= 255; 7343 if (s === 0) { 7344 r = g = b = v; 7345 } else { 7346 if (h === 360) { 7347 h = 0; 7348 } 7349 if (h > 360) { 7350 h -= 360; 7351 } 7352 if (h < 0) { 7353 h += 360; 7354 } 7355 h /= 60; 7356 var i2 = floor$2(h); 7357 var f = h - i2; 7358 var p = v * (1 - s); 7359 var q = v * (1 - s * f); 7360 var t = v * (1 - s * (1 - f)); 7361 switch (i2) { 7362 case 0: 7363 assign = [v, t, p], r = assign[0], g = assign[1], b = assign[2]; 7364 break; 7365 case 1: 7366 assign$1 = [q, v, p], r = assign$1[0], g = assign$1[1], b = assign$1[2]; 7367 break; 7368 case 2: 7369 assign$2 = [p, v, t], r = assign$2[0], g = assign$2[1], b = assign$2[2]; 7370 break; 7371 case 3: 7372 assign$3 = [p, q, v], r = assign$3[0], g = assign$3[1], b = assign$3[2]; 7373 break; 7374 case 4: 7375 assign$4 = [t, p, v], r = assign$4[0], g = assign$4[1], b = assign$4[2]; 7376 break; 7377 case 5: 7378 assign$5 = [v, p, q], r = assign$5[0], g = assign$5[1], b = assign$5[2]; 7379 break; 7380 } 7381 } 7382 return [r, g, b, args.length > 3 ? args[3] : 1]; 7383 }; 7384 var hsv2rgb_1 = hsv2rgb; 7385 var unpack$i = utils.unpack; 7386 var type$f = utils.type; 7387 var chroma$c = chroma_1; 7388 var Color$v = Color_1; 7389 var input$8 = input$h; 7390 var rgb2hsv = rgb2hsv$1; 7391 Color$v.prototype.hsv = function() { 7392 return rgb2hsv(this._rgb); 7393 }; 7394 chroma$c.hsv = function() { 7395 var args = [], len = arguments.length; 7396 while (len--) args[len] = arguments[len]; 7397 return new (Function.prototype.bind.apply(Color$v, [null].concat(args, ["hsv"])))(); 7398 }; 7399 input$8.format.hsv = hsv2rgb_1; 7400 input$8.autodetect.push({ 7401 p: 2, 7402 test: function() { 7403 var args = [], len = arguments.length; 7404 while (len--) args[len] = arguments[len]; 7405 args = unpack$i(args, "hsv"); 7406 if (type$f(args) === "array" && args.length === 3) { 7407 return "hsv"; 7408 } 7409 } 7410 }); 7411 var labConstants = { 7412 // Corresponds roughly to RGB brighter/darker 7413 Kn: 18, 7414 // D65 standard referent 7415 Xn: 0.95047, 7416 Yn: 1, 7417 Zn: 1.08883, 7418 t0: 0.137931034, 7419 // 4 / 29 7420 t1: 0.206896552, 7421 // 6 / 29 7422 t2: 0.12841855, 7423 // 3 * t1 * t1 7424 t3: 8856452e-9 7425 // t1 * t1 * t1 7426 }; 7427 var LAB_CONSTANTS$3 = labConstants; 7428 var unpack$h = utils.unpack; 7429 var pow$a = Math.pow; 7430 var rgb2lab$2 = function() { 7431 var args = [], len = arguments.length; 7432 while (len--) args[len] = arguments[len]; 7433 var ref = unpack$h(args, "rgb"); 7434 var r = ref[0]; 7435 var g = ref[1]; 7436 var b = ref[2]; 7437 var ref$1 = rgb2xyz(r, g, b); 7438 var x = ref$1[0]; 7439 var y = ref$1[1]; 7440 var z = ref$1[2]; 7441 var l = 116 * y - 16; 7442 return [l < 0 ? 0 : l, 500 * (x - y), 200 * (y - z)]; 7443 }; 7444 var rgb_xyz = function(r) { 7445 if ((r /= 255) <= 0.04045) { 7446 return r / 12.92; 7447 } 7448 return pow$a((r + 0.055) / 1.055, 2.4); 7449 }; 7450 var xyz_lab = function(t) { 7451 if (t > LAB_CONSTANTS$3.t3) { 7452 return pow$a(t, 1 / 3); 7453 } 7454 return t / LAB_CONSTANTS$3.t2 + LAB_CONSTANTS$3.t0; 7455 }; 7456 var rgb2xyz = function(r, g, b) { 7457 r = rgb_xyz(r); 7458 g = rgb_xyz(g); 7459 b = rgb_xyz(b); 7460 var x = xyz_lab((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / LAB_CONSTANTS$3.Xn); 7461 var y = xyz_lab((0.2126729 * r + 0.7151522 * g + 0.072175 * b) / LAB_CONSTANTS$3.Yn); 7462 var z = xyz_lab((0.0193339 * r + 0.119192 * g + 0.9503041 * b) / LAB_CONSTANTS$3.Zn); 7463 return [x, y, z]; 7464 }; 7465 var rgb2lab_1 = rgb2lab$2; 7466 var LAB_CONSTANTS$2 = labConstants; 7467 var unpack$g = utils.unpack; 7468 var pow$9 = Math.pow; 7469 var lab2rgb$1 = function() { 7470 var args = [], len = arguments.length; 7471 while (len--) args[len] = arguments[len]; 7472 args = unpack$g(args, "lab"); 7473 var l = args[0]; 7474 var a = args[1]; 7475 var b = args[2]; 7476 var x, y, z, r, g, b_; 7477 y = (l + 16) / 116; 7478 x = isNaN(a) ? y : y + a / 500; 7479 z = isNaN(b) ? y : y - b / 200; 7480 y = LAB_CONSTANTS$2.Yn * lab_xyz(y); 7481 x = LAB_CONSTANTS$2.Xn * lab_xyz(x); 7482 z = LAB_CONSTANTS$2.Zn * lab_xyz(z); 7483 r = xyz_rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z); 7484 g = xyz_rgb(-0.969266 * x + 1.8760108 * y + 0.041556 * z); 7485 b_ = xyz_rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z); 7486 return [r, g, b_, args.length > 3 ? args[3] : 1]; 7487 }; 7488 var xyz_rgb = function(r) { 7489 return 255 * (r <= 304e-5 ? 12.92 * r : 1.055 * pow$9(r, 1 / 2.4) - 0.055); 7490 }; 7491 var lab_xyz = function(t) { 7492 return t > LAB_CONSTANTS$2.t1 ? t * t * t : LAB_CONSTANTS$2.t2 * (t - LAB_CONSTANTS$2.t0); 7493 }; 7494 var lab2rgb_1 = lab2rgb$1; 7495 var unpack$f = utils.unpack; 7496 var type$e = utils.type; 7497 var chroma$b = chroma_1; 7498 var Color$u = Color_1; 7499 var input$7 = input$h; 7500 var rgb2lab$1 = rgb2lab_1; 7501 Color$u.prototype.lab = function() { 7502 return rgb2lab$1(this._rgb); 7503 }; 7504 chroma$b.lab = function() { 7505 var args = [], len = arguments.length; 7506 while (len--) args[len] = arguments[len]; 7507 return new (Function.prototype.bind.apply(Color$u, [null].concat(args, ["lab"])))(); 7508 }; 7509 input$7.format.lab = lab2rgb_1; 7510 input$7.autodetect.push({ 7511 p: 2, 7512 test: function() { 7513 var args = [], len = arguments.length; 7514 while (len--) args[len] = arguments[len]; 7515 args = unpack$f(args, "lab"); 7516 if (type$e(args) === "array" && args.length === 3) { 7517 return "lab"; 7518 } 7519 } 7520 }); 7521 var unpack$e = utils.unpack; 7522 var RAD2DEG = utils.RAD2DEG; 7523 var sqrt$3 = Math.sqrt; 7524 var atan2$2 = Math.atan2; 7525 var round$2 = Math.round; 7526 var lab2lch$2 = function() { 7527 var args = [], len = arguments.length; 7528 while (len--) args[len] = arguments[len]; 7529 var ref = unpack$e(args, "lab"); 7530 var l = ref[0]; 7531 var a = ref[1]; 7532 var b = ref[2]; 7533 var c = sqrt$3(a * a + b * b); 7534 var h = (atan2$2(b, a) * RAD2DEG + 360) % 360; 7535 if (round$2(c * 1e4) === 0) { 7536 h = Number.NaN; 7537 } 7538 return [l, c, h]; 7539 }; 7540 var lab2lch_1 = lab2lch$2; 7541 var unpack$d = utils.unpack; 7542 var rgb2lab = rgb2lab_1; 7543 var lab2lch$1 = lab2lch_1; 7544 var rgb2lch$1 = function() { 7545 var args = [], len = arguments.length; 7546 while (len--) args[len] = arguments[len]; 7547 var ref = unpack$d(args, "rgb"); 7548 var r = ref[0]; 7549 var g = ref[1]; 7550 var b = ref[2]; 7551 var ref$1 = rgb2lab(r, g, b); 7552 var l = ref$1[0]; 7553 var a = ref$1[1]; 7554 var b_ = ref$1[2]; 7555 return lab2lch$1(l, a, b_); 7556 }; 7557 var rgb2lch_1 = rgb2lch$1; 7558 var unpack$c = utils.unpack; 7559 var DEG2RAD = utils.DEG2RAD; 7560 var sin$3 = Math.sin; 7561 var cos$3 = Math.cos; 7562 var lch2lab$2 = function() { 7563 var args = [], len = arguments.length; 7564 while (len--) args[len] = arguments[len]; 7565 var ref = unpack$c(args, "lch"); 7566 var l = ref[0]; 7567 var c = ref[1]; 7568 var h = ref[2]; 7569 if (isNaN(h)) { 7570 h = 0; 7571 } 7572 h = h * DEG2RAD; 7573 return [l, cos$3(h) * c, sin$3(h) * c]; 7574 }; 7575 var lch2lab_1 = lch2lab$2; 7576 var unpack$b = utils.unpack; 7577 var lch2lab$1 = lch2lab_1; 7578 var lab2rgb = lab2rgb_1; 7579 var lch2rgb$1 = function() { 7580 var args = [], len = arguments.length; 7581 while (len--) args[len] = arguments[len]; 7582 args = unpack$b(args, "lch"); 7583 var l = args[0]; 7584 var c = args[1]; 7585 var h = args[2]; 7586 var ref = lch2lab$1(l, c, h); 7587 var L = ref[0]; 7588 var a = ref[1]; 7589 var b_ = ref[2]; 7590 var ref$1 = lab2rgb(L, a, b_); 7591 var r = ref$1[0]; 7592 var g = ref$1[1]; 7593 var b = ref$1[2]; 7594 return [r, g, b, args.length > 3 ? args[3] : 1]; 7595 }; 7596 var lch2rgb_1 = lch2rgb$1; 7597 var unpack$a = utils.unpack; 7598 var lch2rgb = lch2rgb_1; 7599 var hcl2rgb = function() { 7600 var args = [], len = arguments.length; 7601 while (len--) args[len] = arguments[len]; 7602 var hcl = unpack$a(args, "hcl").reverse(); 7603 return lch2rgb.apply(void 0, hcl); 7604 }; 7605 var hcl2rgb_1 = hcl2rgb; 7606 var unpack$9 = utils.unpack; 7607 var type$d = utils.type; 7608 var chroma$a = chroma_1; 7609 var Color$t = Color_1; 7610 var input$6 = input$h; 7611 var rgb2lch = rgb2lch_1; 7612 Color$t.prototype.lch = function() { 7613 return rgb2lch(this._rgb); 7614 }; 7615 Color$t.prototype.hcl = function() { 7616 return rgb2lch(this._rgb).reverse(); 7617 }; 7618 chroma$a.lch = function() { 7619 var args = [], len = arguments.length; 7620 while (len--) args[len] = arguments[len]; 7621 return new (Function.prototype.bind.apply(Color$t, [null].concat(args, ["lch"])))(); 7622 }; 7623 chroma$a.hcl = function() { 7624 var args = [], len = arguments.length; 7625 while (len--) args[len] = arguments[len]; 7626 return new (Function.prototype.bind.apply(Color$t, [null].concat(args, ["hcl"])))(); 7627 }; 7628 input$6.format.lch = lch2rgb_1; 7629 input$6.format.hcl = hcl2rgb_1; 7630 ["lch", "hcl"].forEach(function(m) { 7631 return input$6.autodetect.push({ 7632 p: 2, 7633 test: function() { 7634 var args = [], len = arguments.length; 7635 while (len--) args[len] = arguments[len]; 7636 args = unpack$9(args, m); 7637 if (type$d(args) === "array" && args.length === 3) { 7638 return m; 7639 } 7640 } 7641 }); 7642 }); 7643 var w3cx11$1 = { 7644 aliceblue: "#f0f8ff", 7645 antiquewhite: "#faebd7", 7646 aqua: "#00ffff", 7647 aquamarine: "#7fffd4", 7648 azure: "#f0ffff", 7649 beige: "#f5f5dc", 7650 bisque: "#ffe4c4", 7651 black: "#000000", 7652 blanchedalmond: "#ffebcd", 7653 blue: "#0000ff", 7654 blueviolet: "#8a2be2", 7655 brown: "#a52a2a", 7656 burlywood: "#deb887", 7657 cadetblue: "#5f9ea0", 7658 chartreuse: "#7fff00", 7659 chocolate: "#d2691e", 7660 coral: "#ff7f50", 7661 cornflower: "#6495ed", 7662 cornflowerblue: "#6495ed", 7663 cornsilk: "#fff8dc", 7664 crimson: "#dc143c", 7665 cyan: "#00ffff", 7666 darkblue: "#00008b", 7667 darkcyan: "#008b8b", 7668 darkgoldenrod: "#b8860b", 7669 darkgray: "#a9a9a9", 7670 darkgreen: "#006400", 7671 darkgrey: "#a9a9a9", 7672 darkkhaki: "#bdb76b", 7673 darkmagenta: "#8b008b", 7674 darkolivegreen: "#556b2f", 7675 darkorange: "#ff8c00", 7676 darkorchid: "#9932cc", 7677 darkred: "#8b0000", 7678 darksalmon: "#e9967a", 7679 darkseagreen: "#8fbc8f", 7680 darkslateblue: "#483d8b", 7681 darkslategray: "#2f4f4f", 7682 darkslategrey: "#2f4f4f", 7683 darkturquoise: "#00ced1", 7684 darkviolet: "#9400d3", 7685 deeppink: "#ff1493", 7686 deepskyblue: "#00bfff", 7687 dimgray: "#696969", 7688 dimgrey: "#696969", 7689 dodgerblue: "#1e90ff", 7690 firebrick: "#b22222", 7691 floralwhite: "#fffaf0", 7692 forestgreen: "#228b22", 7693 fuchsia: "#ff00ff", 7694 gainsboro: "#dcdcdc", 7695 ghostwhite: "#f8f8ff", 7696 gold: "#ffd700", 7697 goldenrod: "#daa520", 7698 gray: "#808080", 7699 green: "#008000", 7700 greenyellow: "#adff2f", 7701 grey: "#808080", 7702 honeydew: "#f0fff0", 7703 hotpink: "#ff69b4", 7704 indianred: "#cd5c5c", 7705 indigo: "#4b0082", 7706 ivory: "#fffff0", 7707 khaki: "#f0e68c", 7708 laserlemon: "#ffff54", 7709 lavender: "#e6e6fa", 7710 lavenderblush: "#fff0f5", 7711 lawngreen: "#7cfc00", 7712 lemonchiffon: "#fffacd", 7713 lightblue: "#add8e6", 7714 lightcoral: "#f08080", 7715 lightcyan: "#e0ffff", 7716 lightgoldenrod: "#fafad2", 7717 lightgoldenrodyellow: "#fafad2", 7718 lightgray: "#d3d3d3", 7719 lightgreen: "#90ee90", 7720 lightgrey: "#d3d3d3", 7721 lightpink: "#ffb6c1", 7722 lightsalmon: "#ffa07a", 7723 lightseagreen: "#20b2aa", 7724 lightskyblue: "#87cefa", 7725 lightslategray: "#778899", 7726 lightslategrey: "#778899", 7727 lightsteelblue: "#b0c4de", 7728 lightyellow: "#ffffe0", 7729 lime: "#00ff00", 7730 limegreen: "#32cd32", 7731 linen: "#faf0e6", 7732 magenta: "#ff00ff", 7733 maroon: "#800000", 7734 maroon2: "#7f0000", 7735 maroon3: "#b03060", 7736 mediumaquamarine: "#66cdaa", 7737 mediumblue: "#0000cd", 7738 mediumorchid: "#ba55d3", 7739 mediumpurple: "#9370db", 7740 mediumseagreen: "#3cb371", 7741 mediumslateblue: "#7b68ee", 7742 mediumspringgreen: "#00fa9a", 7743 mediumturquoise: "#48d1cc", 7744 mediumvioletred: "#c71585", 7745 midnightblue: "#191970", 7746 mintcream: "#f5fffa", 7747 mistyrose: "#ffe4e1", 7748 moccasin: "#ffe4b5", 7749 navajowhite: "#ffdead", 7750 navy: "#000080", 7751 oldlace: "#fdf5e6", 7752 olive: "#808000", 7753 olivedrab: "#6b8e23", 7754 orange: "#ffa500", 7755 orangered: "#ff4500", 7756 orchid: "#da70d6", 7757 palegoldenrod: "#eee8aa", 7758 palegreen: "#98fb98", 7759 paleturquoise: "#afeeee", 7760 palevioletred: "#db7093", 7761 papayawhip: "#ffefd5", 7762 peachpuff: "#ffdab9", 7763 peru: "#cd853f", 7764 pink: "#ffc0cb", 7765 plum: "#dda0dd", 7766 powderblue: "#b0e0e6", 7767 purple: "#800080", 7768 purple2: "#7f007f", 7769 purple3: "#a020f0", 7770 rebeccapurple: "#663399", 7771 red: "#ff0000", 7772 rosybrown: "#bc8f8f", 7773 royalblue: "#4169e1", 7774 saddlebrown: "#8b4513", 7775 salmon: "#fa8072", 7776 sandybrown: "#f4a460", 7777 seagreen: "#2e8b57", 7778 seashell: "#fff5ee", 7779 sienna: "#a0522d", 7780 silver: "#c0c0c0", 7781 skyblue: "#87ceeb", 7782 slateblue: "#6a5acd", 7783 slategray: "#708090", 7784 slategrey: "#708090", 7785 snow: "#fffafa", 7786 springgreen: "#00ff7f", 7787 steelblue: "#4682b4", 7788 tan: "#d2b48c", 7789 teal: "#008080", 7790 thistle: "#d8bfd8", 7791 tomato: "#ff6347", 7792 turquoise: "#40e0d0", 7793 violet: "#ee82ee", 7794 wheat: "#f5deb3", 7795 white: "#ffffff", 7796 whitesmoke: "#f5f5f5", 7797 yellow: "#ffff00", 7798 yellowgreen: "#9acd32" 7799 }; 7800 var w3cx11_1 = w3cx11$1; 7801 var Color$s = Color_1; 7802 var input$5 = input$h; 7803 var type$c = utils.type; 7804 var w3cx11 = w3cx11_1; 7805 var hex2rgb = hex2rgb_1; 7806 var rgb2hex = rgb2hex_1; 7807 Color$s.prototype.name = function() { 7808 var hex = rgb2hex(this._rgb, "rgb"); 7809 for (var i2 = 0, list2 = Object.keys(w3cx11); i2 < list2.length; i2 += 1) { 7810 var n = list2[i2]; 7811 if (w3cx11[n] === hex) { 7812 return n.toLowerCase(); 7813 } 7814 } 7815 return hex; 7816 }; 7817 input$5.format.named = function(name2) { 7818 name2 = name2.toLowerCase(); 7819 if (w3cx11[name2]) { 7820 return hex2rgb(w3cx11[name2]); 7821 } 7822 throw new Error("unknown color name: " + name2); 7823 }; 7824 input$5.autodetect.push({ 7825 p: 5, 7826 test: function(h) { 7827 var rest = [], len = arguments.length - 1; 7828 while (len-- > 0) rest[len] = arguments[len + 1]; 7829 if (!rest.length && type$c(h) === "string" && w3cx11[h.toLowerCase()]) { 7830 return "named"; 7831 } 7832 } 7833 }); 7834 var unpack$8 = utils.unpack; 7835 var rgb2num$1 = function() { 7836 var args = [], len = arguments.length; 7837 while (len--) args[len] = arguments[len]; 7838 var ref = unpack$8(args, "rgb"); 7839 var r = ref[0]; 7840 var g = ref[1]; 7841 var b = ref[2]; 7842 return (r << 16) + (g << 8) + b; 7843 }; 7844 var rgb2num_1 = rgb2num$1; 7845 var type$b = utils.type; 7846 var num2rgb = function(num2) { 7847 if (type$b(num2) == "number" && num2 >= 0 && num2 <= 16777215) { 7848 var r = num2 >> 16; 7849 var g = num2 >> 8 & 255; 7850 var b = num2 & 255; 7851 return [r, g, b, 1]; 7852 } 7853 throw new Error("unknown num color: " + num2); 7854 }; 7855 var num2rgb_1 = num2rgb; 7856 var chroma$9 = chroma_1; 7857 var Color$r = Color_1; 7858 var input$4 = input$h; 7859 var type$a = utils.type; 7860 var rgb2num = rgb2num_1; 7861 Color$r.prototype.num = function() { 7862 return rgb2num(this._rgb); 7863 }; 7864 chroma$9.num = function() { 7865 var args = [], len = arguments.length; 7866 while (len--) args[len] = arguments[len]; 7867 return new (Function.prototype.bind.apply(Color$r, [null].concat(args, ["num"])))(); 7868 }; 7869 input$4.format.num = num2rgb_1; 7870 input$4.autodetect.push({ 7871 p: 5, 7872 test: function() { 7873 var args = [], len = arguments.length; 7874 while (len--) args[len] = arguments[len]; 7875 if (args.length === 1 && type$a(args[0]) === "number" && args[0] >= 0 && args[0] <= 16777215) { 7876 return "num"; 7877 } 7878 } 7879 }); 7880 var chroma$8 = chroma_1; 7881 var Color$q = Color_1; 7882 var input$3 = input$h; 7883 var unpack$7 = utils.unpack; 7884 var type$9 = utils.type; 7885 var round$1 = Math.round; 7886 Color$q.prototype.rgb = function(rnd2) { 7887 if (rnd2 === void 0) rnd2 = true; 7888 if (rnd2 === false) { 7889 return this._rgb.slice(0, 3); 7890 } 7891 return this._rgb.slice(0, 3).map(round$1); 7892 }; 7893 Color$q.prototype.rgba = function(rnd2) { 7894 if (rnd2 === void 0) rnd2 = true; 7895 return this._rgb.slice(0, 4).map(function(v, i2) { 7896 return i2 < 3 ? rnd2 === false ? v : round$1(v) : v; 7897 }); 7898 }; 7899 chroma$8.rgb = function() { 7900 var args = [], len = arguments.length; 7901 while (len--) args[len] = arguments[len]; 7902 return new (Function.prototype.bind.apply(Color$q, [null].concat(args, ["rgb"])))(); 7903 }; 7904 input$3.format.rgb = function() { 7905 var args = [], len = arguments.length; 7906 while (len--) args[len] = arguments[len]; 7907 var rgba = unpack$7(args, "rgba"); 7908 if (rgba[3] === void 0) { 7909 rgba[3] = 1; 7910 } 7911 return rgba; 7912 }; 7913 input$3.autodetect.push({ 7914 p: 3, 7915 test: function() { 7916 var args = [], len = arguments.length; 7917 while (len--) args[len] = arguments[len]; 7918 args = unpack$7(args, "rgba"); 7919 if (type$9(args) === "array" && (args.length === 3 || args.length === 4 && type$9(args[3]) == "number" && args[3] >= 0 && args[3] <= 1)) { 7920 return "rgb"; 7921 } 7922 } 7923 }); 7924 var log$1 = Math.log; 7925 var temperature2rgb$1 = function(kelvin) { 7926 var temp = kelvin / 100; 7927 var r, g, b; 7928 if (temp < 66) { 7929 r = 255; 7930 g = temp < 6 ? 0 : -155.25485562709179 - 0.44596950469579133 * (g = temp - 2) + 104.49216199393888 * log$1(g); 7931 b = temp < 20 ? 0 : -254.76935184120902 + 0.8274096064007395 * (b = temp - 10) + 115.67994401066147 * log$1(b); 7932 } else { 7933 r = 351.97690566805693 + 0.114206453784165 * (r = temp - 55) - 40.25366309332127 * log$1(r); 7934 g = 325.4494125711974 + 0.07943456536662342 * (g = temp - 50) - 28.0852963507957 * log$1(g); 7935 b = 255; 7936 } 7937 return [r, g, b, 1]; 7938 }; 7939 var temperature2rgb_1 = temperature2rgb$1; 7940 var temperature2rgb = temperature2rgb_1; 7941 var unpack$6 = utils.unpack; 7942 var round = Math.round; 7943 var rgb2temperature$1 = function() { 7944 var args = [], len = arguments.length; 7945 while (len--) args[len] = arguments[len]; 7946 var rgb2 = unpack$6(args, "rgb"); 7947 var r = rgb2[0], b = rgb2[2]; 7948 var minTemp = 1e3; 7949 var maxTemp = 4e4; 7950 var eps = 0.4; 7951 var temp; 7952 while (maxTemp - minTemp > eps) { 7953 temp = (maxTemp + minTemp) * 0.5; 7954 var rgb$1 = temperature2rgb(temp); 7955 if (rgb$1[2] / rgb$1[0] >= b / r) { 7956 maxTemp = temp; 7957 } else { 7958 minTemp = temp; 7959 } 7960 } 7961 return round(temp); 7962 }; 7963 var rgb2temperature_1 = rgb2temperature$1; 7964 var chroma$7 = chroma_1; 7965 var Color$p = Color_1; 7966 var input$2 = input$h; 7967 var rgb2temperature = rgb2temperature_1; 7968 Color$p.prototype.temp = Color$p.prototype.kelvin = Color$p.prototype.temperature = function() { 7969 return rgb2temperature(this._rgb); 7970 }; 7971 chroma$7.temp = chroma$7.kelvin = chroma$7.temperature = function() { 7972 var args = [], len = arguments.length; 7973 while (len--) args[len] = arguments[len]; 7974 return new (Function.prototype.bind.apply(Color$p, [null].concat(args, ["temp"])))(); 7975 }; 7976 input$2.format.temp = input$2.format.kelvin = input$2.format.temperature = temperature2rgb_1; 7977 var unpack$5 = utils.unpack; 7978 var cbrt = Math.cbrt; 7979 var pow$8 = Math.pow; 7980 var sign$1 = Math.sign; 7981 var rgb2oklab$2 = function() { 7982 var args = [], len = arguments.length; 7983 while (len--) args[len] = arguments[len]; 7984 var ref = unpack$5(args, "rgb"); 7985 var r = ref[0]; 7986 var g = ref[1]; 7987 var b = ref[2]; 7988 var ref$1 = [rgb2lrgb(r / 255), rgb2lrgb(g / 255), rgb2lrgb(b / 255)]; 7989 var lr = ref$1[0]; 7990 var lg = ref$1[1]; 7991 var lb = ref$1[2]; 7992 var l = cbrt(0.4122214708 * lr + 0.5363325363 * lg + 0.0514459929 * lb); 7993 var m = cbrt(0.2119034982 * lr + 0.6806995451 * lg + 0.1073969566 * lb); 7994 var s = cbrt(0.0883024619 * lr + 0.2817188376 * lg + 0.6299787005 * lb); 7995 return [ 7996 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s, 7997 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s, 7998 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s 7999 ]; 8000 }; 8001 var rgb2oklab_1 = rgb2oklab$2; 8002 function rgb2lrgb(c) { 8003 var abs2 = Math.abs(c); 8004 if (abs2 < 0.04045) { 8005 return c / 12.92; 8006 } 8007 return (sign$1(c) || 1) * pow$8((abs2 + 0.055) / 1.055, 2.4); 8008 } 8009 var unpack$4 = utils.unpack; 8010 var pow$7 = Math.pow; 8011 var sign = Math.sign; 8012 var oklab2rgb$1 = function() { 8013 var args = [], len = arguments.length; 8014 while (len--) args[len] = arguments[len]; 8015 args = unpack$4(args, "lab"); 8016 var L = args[0]; 8017 var a = args[1]; 8018 var b = args[2]; 8019 var l = pow$7(L + 0.3963377774 * a + 0.2158037573 * b, 3); 8020 var m = pow$7(L - 0.1055613458 * a - 0.0638541728 * b, 3); 8021 var s = pow$7(L - 0.0894841775 * a - 1.291485548 * b, 3); 8022 return [ 8023 255 * lrgb2rgb(4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s), 8024 255 * lrgb2rgb(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s), 8025 255 * lrgb2rgb(-0.0041960863 * l - 0.7034186147 * m + 1.707614701 * s), 8026 args.length > 3 ? args[3] : 1 8027 ]; 8028 }; 8029 var oklab2rgb_1 = oklab2rgb$1; 8030 function lrgb2rgb(c) { 8031 var abs2 = Math.abs(c); 8032 if (abs2 > 31308e-7) { 8033 return (sign(c) || 1) * (1.055 * pow$7(abs2, 1 / 2.4) - 0.055); 8034 } 8035 return c * 12.92; 8036 } 8037 var unpack$3 = utils.unpack; 8038 var type$8 = utils.type; 8039 var chroma$6 = chroma_1; 8040 var Color$o = Color_1; 8041 var input$1 = input$h; 8042 var rgb2oklab$1 = rgb2oklab_1; 8043 Color$o.prototype.oklab = function() { 8044 return rgb2oklab$1(this._rgb); 8045 }; 8046 chroma$6.oklab = function() { 8047 var args = [], len = arguments.length; 8048 while (len--) args[len] = arguments[len]; 8049 return new (Function.prototype.bind.apply(Color$o, [null].concat(args, ["oklab"])))(); 8050 }; 8051 input$1.format.oklab = oklab2rgb_1; 8052 input$1.autodetect.push({ 8053 p: 3, 8054 test: function() { 8055 var args = [], len = arguments.length; 8056 while (len--) args[len] = arguments[len]; 8057 args = unpack$3(args, "oklab"); 8058 if (type$8(args) === "array" && args.length === 3) { 8059 return "oklab"; 8060 } 8061 } 8062 }); 8063 var unpack$2 = utils.unpack; 8064 var rgb2oklab = rgb2oklab_1; 8065 var lab2lch = lab2lch_1; 8066 var rgb2oklch$1 = function() { 8067 var args = [], len = arguments.length; 8068 while (len--) args[len] = arguments[len]; 8069 var ref = unpack$2(args, "rgb"); 8070 var r = ref[0]; 8071 var g = ref[1]; 8072 var b = ref[2]; 8073 var ref$1 = rgb2oklab(r, g, b); 8074 var l = ref$1[0]; 8075 var a = ref$1[1]; 8076 var b_ = ref$1[2]; 8077 return lab2lch(l, a, b_); 8078 }; 8079 var rgb2oklch_1 = rgb2oklch$1; 8080 var unpack$1 = utils.unpack; 8081 var lch2lab = lch2lab_1; 8082 var oklab2rgb = oklab2rgb_1; 8083 var oklch2rgb = function() { 8084 var args = [], len = arguments.length; 8085 while (len--) args[len] = arguments[len]; 8086 args = unpack$1(args, "lch"); 8087 var l = args[0]; 8088 var c = args[1]; 8089 var h = args[2]; 8090 var ref = lch2lab(l, c, h); 8091 var L = ref[0]; 8092 var a = ref[1]; 8093 var b_ = ref[2]; 8094 var ref$1 = oklab2rgb(L, a, b_); 8095 var r = ref$1[0]; 8096 var g = ref$1[1]; 8097 var b = ref$1[2]; 8098 return [r, g, b, args.length > 3 ? args[3] : 1]; 8099 }; 8100 var oklch2rgb_1 = oklch2rgb; 8101 var unpack = utils.unpack; 8102 var type$7 = utils.type; 8103 var chroma$5 = chroma_1; 8104 var Color$n = Color_1; 8105 var input = input$h; 8106 var rgb2oklch = rgb2oklch_1; 8107 Color$n.prototype.oklch = function() { 8108 return rgb2oklch(this._rgb); 8109 }; 8110 chroma$5.oklch = function() { 8111 var args = [], len = arguments.length; 8112 while (len--) args[len] = arguments[len]; 8113 return new (Function.prototype.bind.apply(Color$n, [null].concat(args, ["oklch"])))(); 8114 }; 8115 input.format.oklch = oklch2rgb_1; 8116 input.autodetect.push({ 8117 p: 3, 8118 test: function() { 8119 var args = [], len = arguments.length; 8120 while (len--) args[len] = arguments[len]; 8121 args = unpack(args, "oklch"); 8122 if (type$7(args) === "array" && args.length === 3) { 8123 return "oklch"; 8124 } 8125 } 8126 }); 8127 var Color$m = Color_1; 8128 var type$6 = utils.type; 8129 Color$m.prototype.alpha = function(a, mutate) { 8130 if (mutate === void 0) mutate = false; 8131 if (a !== void 0 && type$6(a) === "number") { 8132 if (mutate) { 8133 this._rgb[3] = a; 8134 return this; 8135 } 8136 return new Color$m([this._rgb[0], this._rgb[1], this._rgb[2], a], "rgb"); 8137 } 8138 return this._rgb[3]; 8139 }; 8140 var Color$l = Color_1; 8141 Color$l.prototype.clipped = function() { 8142 return this._rgb._clipped || false; 8143 }; 8144 var Color$k = Color_1; 8145 var LAB_CONSTANTS$1 = labConstants; 8146 Color$k.prototype.darken = function(amount) { 8147 if (amount === void 0) amount = 1; 8148 var me = this; 8149 var lab2 = me.lab(); 8150 lab2[0] -= LAB_CONSTANTS$1.Kn * amount; 8151 return new Color$k(lab2, "lab").alpha(me.alpha(), true); 8152 }; 8153 Color$k.prototype.brighten = function(amount) { 8154 if (amount === void 0) amount = 1; 8155 return this.darken(-amount); 8156 }; 8157 Color$k.prototype.darker = Color$k.prototype.darken; 8158 Color$k.prototype.brighter = Color$k.prototype.brighten; 8159 var Color$j = Color_1; 8160 Color$j.prototype.get = function(mc) { 8161 var ref = mc.split("."); 8162 var mode = ref[0]; 8163 var channel = ref[1]; 8164 var src = this[mode](); 8165 if (channel) { 8166 var i2 = mode.indexOf(channel) - (mode.substr(0, 2) === "ok" ? 2 : 0); 8167 if (i2 > -1) { 8168 return src[i2]; 8169 } 8170 throw new Error("unknown channel " + channel + " in mode " + mode); 8171 } else { 8172 return src; 8173 } 8174 }; 8175 var Color$i = Color_1; 8176 var type$5 = utils.type; 8177 var pow$6 = Math.pow; 8178 var EPS = 1e-7; 8179 var MAX_ITER = 20; 8180 Color$i.prototype.luminance = function(lum) { 8181 if (lum !== void 0 && type$5(lum) === "number") { 8182 if (lum === 0) { 8183 return new Color$i([0, 0, 0, this._rgb[3]], "rgb"); 8184 } 8185 if (lum === 1) { 8186 return new Color$i([255, 255, 255, this._rgb[3]], "rgb"); 8187 } 8188 var cur_lum = this.luminance(); 8189 var mode = "rgb"; 8190 var max_iter = MAX_ITER; 8191 var test = function(low, high) { 8192 var mid = low.interpolate(high, 0.5, mode); 8193 var lm = mid.luminance(); 8194 if (Math.abs(lum - lm) < EPS || !max_iter--) { 8195 return mid; 8196 } 8197 return lm > lum ? test(low, mid) : test(mid, high); 8198 }; 8199 var rgb2 = (cur_lum > lum ? test(new Color$i([0, 0, 0]), this) : test(this, new Color$i([255, 255, 255]))).rgb(); 8200 return new Color$i(rgb2.concat([this._rgb[3]])); 8201 } 8202 return rgb2luminance.apply(void 0, this._rgb.slice(0, 3)); 8203 }; 8204 var rgb2luminance = function(r, g, b) { 8205 r = luminance_x(r); 8206 g = luminance_x(g); 8207 b = luminance_x(b); 8208 return 0.2126 * r + 0.7152 * g + 0.0722 * b; 8209 }; 8210 var luminance_x = function(x) { 8211 x /= 255; 8212 return x <= 0.03928 ? x / 12.92 : pow$6((x + 0.055) / 1.055, 2.4); 8213 }; 8214 var interpolator$1 = {}; 8215 var Color$h = Color_1; 8216 var type$4 = utils.type; 8217 var interpolator = interpolator$1; 8218 var mix$1 = function(col1, col2, f) { 8219 if (f === void 0) f = 0.5; 8220 var rest = [], len = arguments.length - 3; 8221 while (len-- > 0) rest[len] = arguments[len + 3]; 8222 var mode = rest[0] || "lrgb"; 8223 if (!interpolator[mode] && !rest.length) { 8224 mode = Object.keys(interpolator)[0]; 8225 } 8226 if (!interpolator[mode]) { 8227 throw new Error("interpolation mode " + mode + " is not defined"); 8228 } 8229 if (type$4(col1) !== "object") { 8230 col1 = new Color$h(col1); 8231 } 8232 if (type$4(col2) !== "object") { 8233 col2 = new Color$h(col2); 8234 } 8235 return interpolator[mode](col1, col2, f).alpha(col1.alpha() + f * (col2.alpha() - col1.alpha())); 8236 }; 8237 var Color$g = Color_1; 8238 var mix = mix$1; 8239 Color$g.prototype.mix = Color$g.prototype.interpolate = function(col2, f) { 8240 if (f === void 0) f = 0.5; 8241 var rest = [], len = arguments.length - 2; 8242 while (len-- > 0) rest[len] = arguments[len + 2]; 8243 return mix.apply(void 0, [this, col2, f].concat(rest)); 8244 }; 8245 var Color$f = Color_1; 8246 Color$f.prototype.premultiply = function(mutate) { 8247 if (mutate === void 0) mutate = false; 8248 var rgb2 = this._rgb; 8249 var a = rgb2[3]; 8250 if (mutate) { 8251 this._rgb = [rgb2[0] * a, rgb2[1] * a, rgb2[2] * a, a]; 8252 return this; 8253 } else { 8254 return new Color$f([rgb2[0] * a, rgb2[1] * a, rgb2[2] * a, a], "rgb"); 8255 } 8256 }; 8257 var Color$e = Color_1; 8258 var LAB_CONSTANTS = labConstants; 8259 Color$e.prototype.saturate = function(amount) { 8260 if (amount === void 0) amount = 1; 8261 var me = this; 8262 var lch2 = me.lch(); 8263 lch2[1] += LAB_CONSTANTS.Kn * amount; 8264 if (lch2[1] < 0) { 8265 lch2[1] = 0; 8266 } 8267 return new Color$e(lch2, "lch").alpha(me.alpha(), true); 8268 }; 8269 Color$e.prototype.desaturate = function(amount) { 8270 if (amount === void 0) amount = 1; 8271 return this.saturate(-amount); 8272 }; 8273 var Color$d = Color_1; 8274 var type$3 = utils.type; 8275 Color$d.prototype.set = function(mc, value, mutate) { 8276 if (mutate === void 0) mutate = false; 8277 var ref = mc.split("."); 8278 var mode = ref[0]; 8279 var channel = ref[1]; 8280 var src = this[mode](); 8281 if (channel) { 8282 var i2 = mode.indexOf(channel) - (mode.substr(0, 2) === "ok" ? 2 : 0); 8283 if (i2 > -1) { 8284 if (type$3(value) == "string") { 8285 switch (value.charAt(0)) { 8286 case "+": 8287 src[i2] += +value; 8288 break; 8289 case "-": 8290 src[i2] += +value; 8291 break; 8292 case "*": 8293 src[i2] *= +value.substr(1); 8294 break; 8295 case "/": 8296 src[i2] /= +value.substr(1); 8297 break; 8298 default: 8299 src[i2] = +value; 8300 } 8301 } else if (type$3(value) === "number") { 8302 src[i2] = value; 8303 } else { 8304 throw new Error("unsupported value for Color.set"); 8305 } 8306 var out = new Color$d(src, mode); 8307 if (mutate) { 8308 this._rgb = out._rgb; 8309 return this; 8310 } 8311 return out; 8312 } 8313 throw new Error("unknown channel " + channel + " in mode " + mode); 8314 } else { 8315 return src; 8316 } 8317 }; 8318 var Color$c = Color_1; 8319 var rgb = function(col1, col2, f) { 8320 var xyz0 = col1._rgb; 8321 var xyz1 = col2._rgb; 8322 return new Color$c( 8323 xyz0[0] + f * (xyz1[0] - xyz0[0]), 8324 xyz0[1] + f * (xyz1[1] - xyz0[1]), 8325 xyz0[2] + f * (xyz1[2] - xyz0[2]), 8326 "rgb" 8327 ); 8328 }; 8329 interpolator$1.rgb = rgb; 8330 var Color$b = Color_1; 8331 var sqrt$2 = Math.sqrt; 8332 var pow$5 = Math.pow; 8333 var lrgb = function(col1, col2, f) { 8334 var ref = col1._rgb; 8335 var x1 = ref[0]; 8336 var y1 = ref[1]; 8337 var z1 = ref[2]; 8338 var ref$1 = col2._rgb; 8339 var x2 = ref$1[0]; 8340 var y2 = ref$1[1]; 8341 var z2 = ref$1[2]; 8342 return new Color$b( 8343 sqrt$2(pow$5(x1, 2) * (1 - f) + pow$5(x2, 2) * f), 8344 sqrt$2(pow$5(y1, 2) * (1 - f) + pow$5(y2, 2) * f), 8345 sqrt$2(pow$5(z1, 2) * (1 - f) + pow$5(z2, 2) * f), 8346 "rgb" 8347 ); 8348 }; 8349 interpolator$1.lrgb = lrgb; 8350 var Color$a = Color_1; 8351 var lab = function(col1, col2, f) { 8352 var xyz0 = col1.lab(); 8353 var xyz1 = col2.lab(); 8354 return new Color$a( 8355 xyz0[0] + f * (xyz1[0] - xyz0[0]), 8356 xyz0[1] + f * (xyz1[1] - xyz0[1]), 8357 xyz0[2] + f * (xyz1[2] - xyz0[2]), 8358 "lab" 8359 ); 8360 }; 8361 interpolator$1.lab = lab; 8362 var Color$9 = Color_1; 8363 var _hsx = function(col1, col2, f, m) { 8364 var assign, assign$1; 8365 var xyz0, xyz1; 8366 if (m === "hsl") { 8367 xyz0 = col1.hsl(); 8368 xyz1 = col2.hsl(); 8369 } else if (m === "hsv") { 8370 xyz0 = col1.hsv(); 8371 xyz1 = col2.hsv(); 8372 } else if (m === "hcg") { 8373 xyz0 = col1.hcg(); 8374 xyz1 = col2.hcg(); 8375 } else if (m === "hsi") { 8376 xyz0 = col1.hsi(); 8377 xyz1 = col2.hsi(); 8378 } else if (m === "lch" || m === "hcl") { 8379 m = "hcl"; 8380 xyz0 = col1.hcl(); 8381 xyz1 = col2.hcl(); 8382 } else if (m === "oklch") { 8383 xyz0 = col1.oklch().reverse(); 8384 xyz1 = col2.oklch().reverse(); 8385 } 8386 var hue0, hue1, sat0, sat1, lbv0, lbv1; 8387 if (m.substr(0, 1) === "h" || m === "oklch") { 8388 assign = xyz0, hue0 = assign[0], sat0 = assign[1], lbv0 = assign[2]; 8389 assign$1 = xyz1, hue1 = assign$1[0], sat1 = assign$1[1], lbv1 = assign$1[2]; 8390 } 8391 var sat, hue, lbv, dh; 8392 if (!isNaN(hue0) && !isNaN(hue1)) { 8393 if (hue1 > hue0 && hue1 - hue0 > 180) { 8394 dh = hue1 - (hue0 + 360); 8395 } else if (hue1 < hue0 && hue0 - hue1 > 180) { 8396 dh = hue1 + 360 - hue0; 8397 } else { 8398 dh = hue1 - hue0; 8399 } 8400 hue = hue0 + f * dh; 8401 } else if (!isNaN(hue0)) { 8402 hue = hue0; 8403 if ((lbv1 == 1 || lbv1 == 0) && m != "hsv") { 8404 sat = sat0; 8405 } 8406 } else if (!isNaN(hue1)) { 8407 hue = hue1; 8408 if ((lbv0 == 1 || lbv0 == 0) && m != "hsv") { 8409 sat = sat1; 8410 } 8411 } else { 8412 hue = Number.NaN; 8413 } 8414 if (sat === void 0) { 8415 sat = sat0 + f * (sat1 - sat0); 8416 } 8417 lbv = lbv0 + f * (lbv1 - lbv0); 8418 return m === "oklch" ? new Color$9([lbv, sat, hue], m) : new Color$9([hue, sat, lbv], m); 8419 }; 8420 var interpolate_hsx$5 = _hsx; 8421 var lch = function(col1, col2, f) { 8422 return interpolate_hsx$5(col1, col2, f, "lch"); 8423 }; 8424 interpolator$1.lch = lch; 8425 interpolator$1.hcl = lch; 8426 var Color$8 = Color_1; 8427 var num = function(col1, col2, f) { 8428 var c1 = col1.num(); 8429 var c2 = col2.num(); 8430 return new Color$8(c1 + f * (c2 - c1), "num"); 8431 }; 8432 interpolator$1.num = num; 8433 var interpolate_hsx$4 = _hsx; 8434 var hcg = function(col1, col2, f) { 8435 return interpolate_hsx$4(col1, col2, f, "hcg"); 8436 }; 8437 interpolator$1.hcg = hcg; 8438 var interpolate_hsx$3 = _hsx; 8439 var hsi = function(col1, col2, f) { 8440 return interpolate_hsx$3(col1, col2, f, "hsi"); 8441 }; 8442 interpolator$1.hsi = hsi; 8443 var interpolate_hsx$2 = _hsx; 8444 var hsl = function(col1, col2, f) { 8445 return interpolate_hsx$2(col1, col2, f, "hsl"); 8446 }; 8447 interpolator$1.hsl = hsl; 8448 var interpolate_hsx$1 = _hsx; 8449 var hsv = function(col1, col2, f) { 8450 return interpolate_hsx$1(col1, col2, f, "hsv"); 8451 }; 8452 interpolator$1.hsv = hsv; 8453 var Color$7 = Color_1; 8454 var oklab = function(col1, col2, f) { 8455 var xyz0 = col1.oklab(); 8456 var xyz1 = col2.oklab(); 8457 return new Color$7( 8458 xyz0[0] + f * (xyz1[0] - xyz0[0]), 8459 xyz0[1] + f * (xyz1[1] - xyz0[1]), 8460 xyz0[2] + f * (xyz1[2] - xyz0[2]), 8461 "oklab" 8462 ); 8463 }; 8464 interpolator$1.oklab = oklab; 8465 var interpolate_hsx = _hsx; 8466 var oklch = function(col1, col2, f) { 8467 return interpolate_hsx(col1, col2, f, "oklch"); 8468 }; 8469 interpolator$1.oklch = oklch; 8470 var Color$6 = Color_1; 8471 var clip_rgb$1 = utils.clip_rgb; 8472 var pow$4 = Math.pow; 8473 var sqrt$1 = Math.sqrt; 8474 var PI$1 = Math.PI; 8475 var cos$2 = Math.cos; 8476 var sin$2 = Math.sin; 8477 var atan2$1 = Math.atan2; 8478 var average = function(colors, mode, weights) { 8479 if (mode === void 0) mode = "lrgb"; 8480 if (weights === void 0) weights = null; 8481 var l = colors.length; 8482 if (!weights) { 8483 weights = Array.from(new Array(l)).map(function() { 8484 return 1; 8485 }); 8486 } 8487 var k = l / weights.reduce(function(a, b) { 8488 return a + b; 8489 }); 8490 weights.forEach(function(w, i3) { 8491 weights[i3] *= k; 8492 }); 8493 colors = colors.map(function(c) { 8494 return new Color$6(c); 8495 }); 8496 if (mode === "lrgb") { 8497 return _average_lrgb(colors, weights); 8498 } 8499 var first = colors.shift(); 8500 var xyz = first.get(mode); 8501 var cnt = []; 8502 var dx = 0; 8503 var dy = 0; 8504 for (var i2 = 0; i2 < xyz.length; i2++) { 8505 xyz[i2] = (xyz[i2] || 0) * weights[0]; 8506 cnt.push(isNaN(xyz[i2]) ? 0 : weights[0]); 8507 if (mode.charAt(i2) === "h" && !isNaN(xyz[i2])) { 8508 var A = xyz[i2] / 180 * PI$1; 8509 dx += cos$2(A) * weights[0]; 8510 dy += sin$2(A) * weights[0]; 8511 } 8512 } 8513 var alpha = first.alpha() * weights[0]; 8514 colors.forEach(function(c, ci) { 8515 var xyz2 = c.get(mode); 8516 alpha += c.alpha() * weights[ci + 1]; 8517 for (var i3 = 0; i3 < xyz.length; i3++) { 8518 if (!isNaN(xyz2[i3])) { 8519 cnt[i3] += weights[ci + 1]; 8520 if (mode.charAt(i3) === "h") { 8521 var A2 = xyz2[i3] / 180 * PI$1; 8522 dx += cos$2(A2) * weights[ci + 1]; 8523 dy += sin$2(A2) * weights[ci + 1]; 8524 } else { 8525 xyz[i3] += xyz2[i3] * weights[ci + 1]; 8526 } 8527 } 8528 } 8529 }); 8530 for (var i$12 = 0; i$12 < xyz.length; i$12++) { 8531 if (mode.charAt(i$12) === "h") { 8532 var A$1 = atan2$1(dy / cnt[i$12], dx / cnt[i$12]) / PI$1 * 180; 8533 while (A$1 < 0) { 8534 A$1 += 360; 8535 } 8536 while (A$1 >= 360) { 8537 A$1 -= 360; 8538 } 8539 xyz[i$12] = A$1; 8540 } else { 8541 xyz[i$12] = xyz[i$12] / cnt[i$12]; 8542 } 8543 } 8544 alpha /= l; 8545 return new Color$6(xyz, mode).alpha(alpha > 0.99999 ? 1 : alpha, true); 8546 }; 8547 var _average_lrgb = function(colors, weights) { 8548 var l = colors.length; 8549 var xyz = [0, 0, 0, 0]; 8550 for (var i2 = 0; i2 < colors.length; i2++) { 8551 var col = colors[i2]; 8552 var f = weights[i2] / l; 8553 var rgb2 = col._rgb; 8554 xyz[0] += pow$4(rgb2[0], 2) * f; 8555 xyz[1] += pow$4(rgb2[1], 2) * f; 8556 xyz[2] += pow$4(rgb2[2], 2) * f; 8557 xyz[3] += rgb2[3] * f; 8558 } 8559 xyz[0] = sqrt$1(xyz[0]); 8560 xyz[1] = sqrt$1(xyz[1]); 8561 xyz[2] = sqrt$1(xyz[2]); 8562 if (xyz[3] > 0.9999999) { 8563 xyz[3] = 1; 8564 } 8565 return new Color$6(clip_rgb$1(xyz)); 8566 }; 8567 var chroma$4 = chroma_1; 8568 var type$2 = utils.type; 8569 var pow$3 = Math.pow; 8570 var scale$2 = function(colors) { 8571 var _mode = "rgb"; 8572 var _nacol = chroma$4("#ccc"); 8573 var _spread = 0; 8574 var _domain = [0, 1]; 8575 var _pos = []; 8576 var _padding = [0, 0]; 8577 var _classes = false; 8578 var _colors = []; 8579 var _out = false; 8580 var _min = 0; 8581 var _max = 1; 8582 var _correctLightness = false; 8583 var _colorCache = {}; 8584 var _useCache = true; 8585 var _gamma = 1; 8586 var setColors = function(colors2) { 8587 colors2 = colors2 || ["#fff", "#000"]; 8588 if (colors2 && type$2(colors2) === "string" && chroma$4.brewer && chroma$4.brewer[colors2.toLowerCase()]) { 8589 colors2 = chroma$4.brewer[colors2.toLowerCase()]; 8590 } 8591 if (type$2(colors2) === "array") { 8592 if (colors2.length === 1) { 8593 colors2 = [colors2[0], colors2[0]]; 8594 } 8595 colors2 = colors2.slice(0); 8596 for (var c = 0; c < colors2.length; c++) { 8597 colors2[c] = chroma$4(colors2[c]); 8598 } 8599 _pos.length = 0; 8600 for (var c$1 = 0; c$1 < colors2.length; c$1++) { 8601 _pos.push(c$1 / (colors2.length - 1)); 8602 } 8603 } 8604 resetCache(); 8605 return _colors = colors2; 8606 }; 8607 var getClass = function(value) { 8608 if (_classes != null) { 8609 var n = _classes.length - 1; 8610 var i2 = 0; 8611 while (i2 < n && value >= _classes[i2]) { 8612 i2++; 8613 } 8614 return i2 - 1; 8615 } 8616 return 0; 8617 }; 8618 var tMapLightness = function(t) { 8619 return t; 8620 }; 8621 var tMapDomain = function(t) { 8622 return t; 8623 }; 8624 var getColor = function(val, bypassMap) { 8625 var col, t; 8626 if (bypassMap == null) { 8627 bypassMap = false; 8628 } 8629 if (isNaN(val) || val === null) { 8630 return _nacol; 8631 } 8632 if (!bypassMap) { 8633 if (_classes && _classes.length > 2) { 8634 var c = getClass(val); 8635 t = c / (_classes.length - 2); 8636 } else if (_max !== _min) { 8637 t = (val - _min) / (_max - _min); 8638 } else { 8639 t = 1; 8640 } 8641 } else { 8642 t = val; 8643 } 8644 t = tMapDomain(t); 8645 if (!bypassMap) { 8646 t = tMapLightness(t); 8647 } 8648 if (_gamma !== 1) { 8649 t = pow$3(t, _gamma); 8650 } 8651 t = _padding[0] + t * (1 - _padding[0] - _padding[1]); 8652 t = Math.min(1, Math.max(0, t)); 8653 var k = Math.floor(t * 1e4); 8654 if (_useCache && _colorCache[k]) { 8655 col = _colorCache[k]; 8656 } else { 8657 if (type$2(_colors) === "array") { 8658 for (var i2 = 0; i2 < _pos.length; i2++) { 8659 var p = _pos[i2]; 8660 if (t <= p) { 8661 col = _colors[i2]; 8662 break; 8663 } 8664 if (t >= p && i2 === _pos.length - 1) { 8665 col = _colors[i2]; 8666 break; 8667 } 8668 if (t > p && t < _pos[i2 + 1]) { 8669 t = (t - p) / (_pos[i2 + 1] - p); 8670 col = chroma$4.interpolate(_colors[i2], _colors[i2 + 1], t, _mode); 8671 break; 8672 } 8673 } 8674 } else if (type$2(_colors) === "function") { 8675 col = _colors(t); 8676 } 8677 if (_useCache) { 8678 _colorCache[k] = col; 8679 } 8680 } 8681 return col; 8682 }; 8683 var resetCache = function() { 8684 return _colorCache = {}; 8685 }; 8686 setColors(colors); 8687 var f = function(v) { 8688 var c = chroma$4(getColor(v)); 8689 if (_out && c[_out]) { 8690 return c[_out](); 8691 } else { 8692 return c; 8693 } 8694 }; 8695 f.classes = function(classes) { 8696 if (classes != null) { 8697 if (type$2(classes) === "array") { 8698 _classes = classes; 8699 _domain = [classes[0], classes[classes.length - 1]]; 8700 } else { 8701 var d = chroma$4.analyze(_domain); 8702 if (classes === 0) { 8703 _classes = [d.min, d.max]; 8704 } else { 8705 _classes = chroma$4.limits(d, "e", classes); 8706 } 8707 } 8708 return f; 8709 } 8710 return _classes; 8711 }; 8712 f.domain = function(domain) { 8713 if (!arguments.length) { 8714 return _domain; 8715 } 8716 _min = domain[0]; 8717 _max = domain[domain.length - 1]; 8718 _pos = []; 8719 var k = _colors.length; 8720 if (domain.length === k && _min !== _max) { 8721 for (var i2 = 0, list2 = Array.from(domain); i2 < list2.length; i2 += 1) { 8722 var d = list2[i2]; 8723 _pos.push((d - _min) / (_max - _min)); 8724 } 8725 } else { 8726 for (var c = 0; c < k; c++) { 8727 _pos.push(c / (k - 1)); 8728 } 8729 if (domain.length > 2) { 8730 var tOut = domain.map(function(d2, i3) { 8731 return i3 / (domain.length - 1); 8732 }); 8733 var tBreaks = domain.map(function(d2) { 8734 return (d2 - _min) / (_max - _min); 8735 }); 8736 if (!tBreaks.every(function(val, i3) { 8737 return tOut[i3] === val; 8738 })) { 8739 tMapDomain = function(t) { 8740 if (t <= 0 || t >= 1) { 8741 return t; 8742 } 8743 var i3 = 0; 8744 while (t >= tBreaks[i3 + 1]) { 8745 i3++; 8746 } 8747 var f2 = (t - tBreaks[i3]) / (tBreaks[i3 + 1] - tBreaks[i3]); 8748 var out = tOut[i3] + f2 * (tOut[i3 + 1] - tOut[i3]); 8749 return out; 8750 }; 8751 } 8752 } 8753 } 8754 _domain = [_min, _max]; 8755 return f; 8756 }; 8757 f.mode = function(_m) { 8758 if (!arguments.length) { 8759 return _mode; 8760 } 8761 _mode = _m; 8762 resetCache(); 8763 return f; 8764 }; 8765 f.range = function(colors2, _pos2) { 8766 setColors(colors2); 8767 return f; 8768 }; 8769 f.out = function(_o) { 8770 _out = _o; 8771 return f; 8772 }; 8773 f.spread = function(val) { 8774 if (!arguments.length) { 8775 return _spread; 8776 } 8777 _spread = val; 8778 return f; 8779 }; 8780 f.correctLightness = function(v) { 8781 if (v == null) { 8782 v = true; 8783 } 8784 _correctLightness = v; 8785 resetCache(); 8786 if (_correctLightness) { 8787 tMapLightness = function(t) { 8788 var L0 = getColor(0, true).lab()[0]; 8789 var L1 = getColor(1, true).lab()[0]; 8790 var pol = L0 > L1; 8791 var L_actual = getColor(t, true).lab()[0]; 8792 var L_ideal = L0 + (L1 - L0) * t; 8793 var L_diff = L_actual - L_ideal; 8794 var t0 = 0; 8795 var t1 = 1; 8796 var max_iter = 20; 8797 while (Math.abs(L_diff) > 0.01 && max_iter-- > 0) { 8798 (function() { 8799 if (pol) { 8800 L_diff *= -1; 8801 } 8802 if (L_diff < 0) { 8803 t0 = t; 8804 t += (t1 - t) * 0.5; 8805 } else { 8806 t1 = t; 8807 t += (t0 - t) * 0.5; 8808 } 8809 L_actual = getColor(t, true).lab()[0]; 8810 return L_diff = L_actual - L_ideal; 8811 })(); 8812 } 8813 return t; 8814 }; 8815 } else { 8816 tMapLightness = function(t) { 8817 return t; 8818 }; 8819 } 8820 return f; 8821 }; 8822 f.padding = function(p) { 8823 if (p != null) { 8824 if (type$2(p) === "number") { 8825 p = [p, p]; 8826 } 8827 _padding = p; 8828 return f; 8829 } else { 8830 return _padding; 8831 } 8832 }; 8833 f.colors = function(numColors, out) { 8834 if (arguments.length < 2) { 8835 out = "hex"; 8836 } 8837 var result = []; 8838 if (arguments.length === 0) { 8839 result = _colors.slice(0); 8840 } else if (numColors === 1) { 8841 result = [f(0.5)]; 8842 } else if (numColors > 1) { 8843 var dm = _domain[0]; 8844 var dd = _domain[1] - dm; 8845 result = __range__(0, numColors, false).map(function(i3) { 8846 return f(dm + i3 / (numColors - 1) * dd); 8847 }); 8848 } else { 8849 colors = []; 8850 var samples = []; 8851 if (_classes && _classes.length > 2) { 8852 for (var i2 = 1, end = _classes.length, asc = 1 <= end; asc ? i2 < end : i2 > end; asc ? i2++ : i2--) { 8853 samples.push((_classes[i2 - 1] + _classes[i2]) * 0.5); 8854 } 8855 } else { 8856 samples = _domain; 8857 } 8858 result = samples.map(function(v) { 8859 return f(v); 8860 }); 8861 } 8862 if (chroma$4[out]) { 8863 result = result.map(function(c) { 8864 return c[out](); 8865 }); 8866 } 8867 return result; 8868 }; 8869 f.cache = function(c) { 8870 if (c != null) { 8871 _useCache = c; 8872 return f; 8873 } else { 8874 return _useCache; 8875 } 8876 }; 8877 f.gamma = function(g) { 8878 if (g != null) { 8879 _gamma = g; 8880 return f; 8881 } else { 8882 return _gamma; 8883 } 8884 }; 8885 f.nodata = function(d) { 8886 if (d != null) { 8887 _nacol = chroma$4(d); 8888 return f; 8889 } else { 8890 return _nacol; 8891 } 8892 }; 8893 return f; 8894 }; 8895 function __range__(left, right, inclusive) { 8896 var range = []; 8897 var ascending = left < right; 8898 var end = !inclusive ? right : ascending ? right + 1 : right - 1; 8899 for (var i2 = left; ascending ? i2 < end : i2 > end; ascending ? i2++ : i2--) { 8900 range.push(i2); 8901 } 8902 return range; 8903 } 8904 var Color$5 = Color_1; 8905 var scale$1 = scale$2; 8906 var binom_row = function(n) { 8907 var row = [1, 1]; 8908 for (var i2 = 1; i2 < n; i2++) { 8909 var newrow = [1]; 8910 for (var j = 1; j <= row.length; j++) { 8911 newrow[j] = (row[j] || 0) + row[j - 1]; 8912 } 8913 row = newrow; 8914 } 8915 return row; 8916 }; 8917 var bezier = function(colors) { 8918 var assign, assign$1, assign$2; 8919 var I, lab0, lab1, lab2; 8920 colors = colors.map(function(c) { 8921 return new Color$5(c); 8922 }); 8923 if (colors.length === 2) { 8924 assign = colors.map(function(c) { 8925 return c.lab(); 8926 }), lab0 = assign[0], lab1 = assign[1]; 8927 I = function(t) { 8928 var lab4 = [0, 1, 2].map(function(i2) { 8929 return lab0[i2] + t * (lab1[i2] - lab0[i2]); 8930 }); 8931 return new Color$5(lab4, "lab"); 8932 }; 8933 } else if (colors.length === 3) { 8934 assign$1 = colors.map(function(c) { 8935 return c.lab(); 8936 }), lab0 = assign$1[0], lab1 = assign$1[1], lab2 = assign$1[2]; 8937 I = function(t) { 8938 var lab4 = [0, 1, 2].map(function(i2) { 8939 return (1 - t) * (1 - t) * lab0[i2] + 2 * (1 - t) * t * lab1[i2] + t * t * lab2[i2]; 8940 }); 8941 return new Color$5(lab4, "lab"); 8942 }; 8943 } else if (colors.length === 4) { 8944 var lab3; 8945 assign$2 = colors.map(function(c) { 8946 return c.lab(); 8947 }), lab0 = assign$2[0], lab1 = assign$2[1], lab2 = assign$2[2], lab3 = assign$2[3]; 8948 I = function(t) { 8949 var lab4 = [0, 1, 2].map(function(i2) { 8950 return (1 - t) * (1 - t) * (1 - t) * lab0[i2] + 3 * (1 - t) * (1 - t) * t * lab1[i2] + 3 * (1 - t) * t * t * lab2[i2] + t * t * t * lab3[i2]; 8951 }); 8952 return new Color$5(lab4, "lab"); 8953 }; 8954 } else if (colors.length >= 5) { 8955 var labs, row, n; 8956 labs = colors.map(function(c) { 8957 return c.lab(); 8958 }); 8959 n = colors.length - 1; 8960 row = binom_row(n); 8961 I = function(t) { 8962 var u = 1 - t; 8963 var lab4 = [0, 1, 2].map(function(i2) { 8964 return labs.reduce(function(sum, el, j) { 8965 return sum + row[j] * Math.pow(u, n - j) * Math.pow(t, j) * el[i2]; 8966 }, 0); 8967 }); 8968 return new Color$5(lab4, "lab"); 8969 }; 8970 } else { 8971 throw new RangeError("No point in running bezier with only one color."); 8972 } 8973 return I; 8974 }; 8975 var bezier_1 = function(colors) { 8976 var f = bezier(colors); 8977 f.scale = function() { 8978 return scale$1(f); 8979 }; 8980 return f; 8981 }; 8982 var chroma$3 = chroma_1; 8983 var blend = function(bottom, top, mode) { 8984 if (!blend[mode]) { 8985 throw new Error("unknown blend mode " + mode); 8986 } 8987 return blend[mode](bottom, top); 8988 }; 8989 var blend_f = function(f) { 8990 return function(bottom, top) { 8991 var c0 = chroma$3(top).rgb(); 8992 var c1 = chroma$3(bottom).rgb(); 8993 return chroma$3.rgb(f(c0, c1)); 8994 }; 8995 }; 8996 var each = function(f) { 8997 return function(c0, c1) { 8998 var out = []; 8999 out[0] = f(c0[0], c1[0]); 9000 out[1] = f(c0[1], c1[1]); 9001 out[2] = f(c0[2], c1[2]); 9002 return out; 9003 }; 9004 }; 9005 var normal = function(a) { 9006 return a; 9007 }; 9008 var multiply = function(a, b) { 9009 return a * b / 255; 9010 }; 9011 var darken = function(a, b) { 9012 return a > b ? b : a; 9013 }; 9014 var lighten = function(a, b) { 9015 return a > b ? a : b; 9016 }; 9017 var screen = function(a, b) { 9018 return 255 * (1 - (1 - a / 255) * (1 - b / 255)); 9019 }; 9020 var overlay = function(a, b) { 9021 return b < 128 ? 2 * a * b / 255 : 255 * (1 - 2 * (1 - a / 255) * (1 - b / 255)); 9022 }; 9023 var burn = function(a, b) { 9024 return 255 * (1 - (1 - b / 255) / (a / 255)); 9025 }; 9026 var dodge = function(a, b) { 9027 if (a === 255) { 9028 return 255; 9029 } 9030 a = 255 * (b / 255) / (1 - a / 255); 9031 return a > 255 ? 255 : a; 9032 }; 9033 blend.normal = blend_f(each(normal)); 9034 blend.multiply = blend_f(each(multiply)); 9035 blend.screen = blend_f(each(screen)); 9036 blend.overlay = blend_f(each(overlay)); 9037 blend.darken = blend_f(each(darken)); 9038 blend.lighten = blend_f(each(lighten)); 9039 blend.dodge = blend_f(each(dodge)); 9040 blend.burn = blend_f(each(burn)); 9041 var blend_1 = blend; 9042 var type$1 = utils.type; 9043 var clip_rgb = utils.clip_rgb; 9044 var TWOPI = utils.TWOPI; 9045 var pow$2 = Math.pow; 9046 var sin$1 = Math.sin; 9047 var cos$1 = Math.cos; 9048 var chroma$2 = chroma_1; 9049 var cubehelix = function(start, rotations, hue, gamma, lightness) { 9050 if (start === void 0) start = 300; 9051 if (rotations === void 0) rotations = -1.5; 9052 if (hue === void 0) hue = 1; 9053 if (gamma === void 0) gamma = 1; 9054 if (lightness === void 0) lightness = [0, 1]; 9055 var dh = 0, dl; 9056 if (type$1(lightness) === "array") { 9057 dl = lightness[1] - lightness[0]; 9058 } else { 9059 dl = 0; 9060 lightness = [lightness, lightness]; 9061 } 9062 var f = function(fract) { 9063 var a = TWOPI * ((start + 120) / 360 + rotations * fract); 9064 var l = pow$2(lightness[0] + dl * fract, gamma); 9065 var h = dh !== 0 ? hue[0] + fract * dh : hue; 9066 var amp = h * l * (1 - l) / 2; 9067 var cos_a = cos$1(a); 9068 var sin_a = sin$1(a); 9069 var r = l + amp * (-0.14861 * cos_a + 1.78277 * sin_a); 9070 var g = l + amp * (-0.29227 * cos_a - 0.90649 * sin_a); 9071 var b = l + amp * (1.97294 * cos_a); 9072 return chroma$2(clip_rgb([r * 255, g * 255, b * 255, 1])); 9073 }; 9074 f.start = function(s) { 9075 if (s == null) { 9076 return start; 9077 } 9078 start = s; 9079 return f; 9080 }; 9081 f.rotations = function(r) { 9082 if (r == null) { 9083 return rotations; 9084 } 9085 rotations = r; 9086 return f; 9087 }; 9088 f.gamma = function(g) { 9089 if (g == null) { 9090 return gamma; 9091 } 9092 gamma = g; 9093 return f; 9094 }; 9095 f.hue = function(h) { 9096 if (h == null) { 9097 return hue; 9098 } 9099 hue = h; 9100 if (type$1(hue) === "array") { 9101 dh = hue[1] - hue[0]; 9102 if (dh === 0) { 9103 hue = hue[1]; 9104 } 9105 } else { 9106 dh = 0; 9107 } 9108 return f; 9109 }; 9110 f.lightness = function(h) { 9111 if (h == null) { 9112 return lightness; 9113 } 9114 if (type$1(h) === "array") { 9115 lightness = h; 9116 dl = h[1] - h[0]; 9117 } else { 9118 lightness = [h, h]; 9119 dl = 0; 9120 } 9121 return f; 9122 }; 9123 f.scale = function() { 9124 return chroma$2.scale(f); 9125 }; 9126 f.hue(hue); 9127 return f; 9128 }; 9129 var Color$4 = Color_1; 9130 var digits = "0123456789abcdef"; 9131 var floor$1 = Math.floor; 9132 var random = Math.random; 9133 var random_1 = function() { 9134 var code = "#"; 9135 for (var i2 = 0; i2 < 6; i2++) { 9136 code += digits.charAt(floor$1(random() * 16)); 9137 } 9138 return new Color$4(code, "hex"); 9139 }; 9140 var type = type$p; 9141 var log = Math.log; 9142 var pow$1 = Math.pow; 9143 var floor = Math.floor; 9144 var abs$1 = Math.abs; 9145 var analyze = function(data, key2) { 9146 if (key2 === void 0) key2 = null; 9147 var r = { 9148 min: Number.MAX_VALUE, 9149 max: Number.MAX_VALUE * -1, 9150 sum: 0, 9151 values: [], 9152 count: 0 9153 }; 9154 if (type(data) === "object") { 9155 data = Object.values(data); 9156 } 9157 data.forEach(function(val) { 9158 if (key2 && type(val) === "object") { 9159 val = val[key2]; 9160 } 9161 if (val !== void 0 && val !== null && !isNaN(val)) { 9162 r.values.push(val); 9163 r.sum += val; 9164 if (val < r.min) { 9165 r.min = val; 9166 } 9167 if (val > r.max) { 9168 r.max = val; 9169 } 9170 r.count += 1; 9171 } 9172 }); 9173 r.domain = [r.min, r.max]; 9174 r.limits = function(mode, num2) { 9175 return limits(r, mode, num2); 9176 }; 9177 return r; 9178 }; 9179 var limits = function(data, mode, num2) { 9180 if (mode === void 0) mode = "equal"; 9181 if (num2 === void 0) num2 = 7; 9182 if (type(data) == "array") { 9183 data = analyze(data); 9184 } 9185 var min2 = data.min; 9186 var max2 = data.max; 9187 var values = data.values.sort(function(a, b) { 9188 return a - b; 9189 }); 9190 if (num2 === 1) { 9191 return [min2, max2]; 9192 } 9193 var limits2 = []; 9194 if (mode.substr(0, 1) === "c") { 9195 limits2.push(min2); 9196 limits2.push(max2); 9197 } 9198 if (mode.substr(0, 1) === "e") { 9199 limits2.push(min2); 9200 for (var i2 = 1; i2 < num2; i2++) { 9201 limits2.push(min2 + i2 / num2 * (max2 - min2)); 9202 } 9203 limits2.push(max2); 9204 } else if (mode.substr(0, 1) === "l") { 9205 if (min2 <= 0) { 9206 throw new Error("Logarithmic scales are only possible for values > 0"); 9207 } 9208 var min_log = Math.LOG10E * log(min2); 9209 var max_log = Math.LOG10E * log(max2); 9210 limits2.push(min2); 9211 for (var i$12 = 1; i$12 < num2; i$12++) { 9212 limits2.push(pow$1(10, min_log + i$12 / num2 * (max_log - min_log))); 9213 } 9214 limits2.push(max2); 9215 } else if (mode.substr(0, 1) === "q") { 9216 limits2.push(min2); 9217 for (var i$2 = 1; i$2 < num2; i$2++) { 9218 var p = (values.length - 1) * i$2 / num2; 9219 var pb = floor(p); 9220 if (pb === p) { 9221 limits2.push(values[pb]); 9222 } else { 9223 var pr = p - pb; 9224 limits2.push(values[pb] * (1 - pr) + values[pb + 1] * pr); 9225 } 9226 } 9227 limits2.push(max2); 9228 } else if (mode.substr(0, 1) === "k") { 9229 var cluster; 9230 var n = values.length; 9231 var assignments = new Array(n); 9232 var clusterSizes = new Array(num2); 9233 var repeat = true; 9234 var nb_iters = 0; 9235 var centroids = null; 9236 centroids = []; 9237 centroids.push(min2); 9238 for (var i$3 = 1; i$3 < num2; i$3++) { 9239 centroids.push(min2 + i$3 / num2 * (max2 - min2)); 9240 } 9241 centroids.push(max2); 9242 while (repeat) { 9243 for (var j = 0; j < num2; j++) { 9244 clusterSizes[j] = 0; 9245 } 9246 for (var i$4 = 0; i$4 < n; i$4++) { 9247 var value = values[i$4]; 9248 var mindist = Number.MAX_VALUE; 9249 var best = void 0; 9250 for (var j$1 = 0; j$1 < num2; j$1++) { 9251 var dist = abs$1(centroids[j$1] - value); 9252 if (dist < mindist) { 9253 mindist = dist; 9254 best = j$1; 9255 } 9256 clusterSizes[best]++; 9257 assignments[i$4] = best; 9258 } 9259 } 9260 var newCentroids = new Array(num2); 9261 for (var j$2 = 0; j$2 < num2; j$2++) { 9262 newCentroids[j$2] = null; 9263 } 9264 for (var i$5 = 0; i$5 < n; i$5++) { 9265 cluster = assignments[i$5]; 9266 if (newCentroids[cluster] === null) { 9267 newCentroids[cluster] = values[i$5]; 9268 } else { 9269 newCentroids[cluster] += values[i$5]; 9270 } 9271 } 9272 for (var j$3 = 0; j$3 < num2; j$3++) { 9273 newCentroids[j$3] *= 1 / clusterSizes[j$3]; 9274 } 9275 repeat = false; 9276 for (var j$4 = 0; j$4 < num2; j$4++) { 9277 if (newCentroids[j$4] !== centroids[j$4]) { 9278 repeat = true; 9279 break; 9280 } 9281 } 9282 centroids = newCentroids; 9283 nb_iters++; 9284 if (nb_iters > 200) { 9285 repeat = false; 9286 } 9287 } 9288 var kClusters = {}; 9289 for (var j$5 = 0; j$5 < num2; j$5++) { 9290 kClusters[j$5] = []; 9291 } 9292 for (var i$6 = 0; i$6 < n; i$6++) { 9293 cluster = assignments[i$6]; 9294 kClusters[cluster].push(values[i$6]); 9295 } 9296 var tmpKMeansBreaks = []; 9297 for (var j$6 = 0; j$6 < num2; j$6++) { 9298 tmpKMeansBreaks.push(kClusters[j$6][0]); 9299 tmpKMeansBreaks.push(kClusters[j$6][kClusters[j$6].length - 1]); 9300 } 9301 tmpKMeansBreaks = tmpKMeansBreaks.sort(function(a, b) { 9302 return a - b; 9303 }); 9304 limits2.push(tmpKMeansBreaks[0]); 9305 for (var i$7 = 1; i$7 < tmpKMeansBreaks.length; i$7 += 2) { 9306 var v = tmpKMeansBreaks[i$7]; 9307 if (!isNaN(v) && limits2.indexOf(v) === -1) { 9308 limits2.push(v); 9309 } 9310 } 9311 } 9312 return limits2; 9313 }; 9314 var analyze_1 = { analyze, limits }; 9315 var Color$3 = Color_1; 9316 var contrast = function(a, b) { 9317 a = new Color$3(a); 9318 b = new Color$3(b); 9319 var l1 = a.luminance(); 9320 var l2 = b.luminance(); 9321 return l1 > l2 ? (l1 + 0.05) / (l2 + 0.05) : (l2 + 0.05) / (l1 + 0.05); 9322 }; 9323 var Color$2 = Color_1; 9324 var sqrt = Math.sqrt; 9325 var pow = Math.pow; 9326 var min = Math.min; 9327 var max = Math.max; 9328 var atan2 = Math.atan2; 9329 var abs = Math.abs; 9330 var cos = Math.cos; 9331 var sin = Math.sin; 9332 var exp = Math.exp; 9333 var PI = Math.PI; 9334 var deltaE = function(a, b, Kl, Kc, Kh) { 9335 if (Kl === void 0) Kl = 1; 9336 if (Kc === void 0) Kc = 1; 9337 if (Kh === void 0) Kh = 1; 9338 var rad2deg = function(rad) { 9339 return 360 * rad / (2 * PI); 9340 }; 9341 var deg2rad = function(deg) { 9342 return 2 * PI * deg / 360; 9343 }; 9344 a = new Color$2(a); 9345 b = new Color$2(b); 9346 var ref = Array.from(a.lab()); 9347 var L1 = ref[0]; 9348 var a1 = ref[1]; 9349 var b1 = ref[2]; 9350 var ref$1 = Array.from(b.lab()); 9351 var L2 = ref$1[0]; 9352 var a2 = ref$1[1]; 9353 var b2 = ref$1[2]; 9354 var avgL = (L1 + L2) / 2; 9355 var C1 = sqrt(pow(a1, 2) + pow(b1, 2)); 9356 var C2 = sqrt(pow(a2, 2) + pow(b2, 2)); 9357 var avgC = (C1 + C2) / 2; 9358 var G = 0.5 * (1 - sqrt(pow(avgC, 7) / (pow(avgC, 7) + pow(25, 7)))); 9359 var a1p = a1 * (1 + G); 9360 var a2p = a2 * (1 + G); 9361 var C1p = sqrt(pow(a1p, 2) + pow(b1, 2)); 9362 var C2p = sqrt(pow(a2p, 2) + pow(b2, 2)); 9363 var avgCp = (C1p + C2p) / 2; 9364 var arctan1 = rad2deg(atan2(b1, a1p)); 9365 var arctan2 = rad2deg(atan2(b2, a2p)); 9366 var h1p = arctan1 >= 0 ? arctan1 : arctan1 + 360; 9367 var h2p = arctan2 >= 0 ? arctan2 : arctan2 + 360; 9368 var avgHp = abs(h1p - h2p) > 180 ? (h1p + h2p + 360) / 2 : (h1p + h2p) / 2; 9369 var T = 1 - 0.17 * cos(deg2rad(avgHp - 30)) + 0.24 * cos(deg2rad(2 * avgHp)) + 0.32 * cos(deg2rad(3 * avgHp + 6)) - 0.2 * cos(deg2rad(4 * avgHp - 63)); 9370 var deltaHp = h2p - h1p; 9371 deltaHp = abs(deltaHp) <= 180 ? deltaHp : h2p <= h1p ? deltaHp + 360 : deltaHp - 360; 9372 deltaHp = 2 * sqrt(C1p * C2p) * sin(deg2rad(deltaHp) / 2); 9373 var deltaL = L2 - L1; 9374 var deltaCp = C2p - C1p; 9375 var sl = 1 + 0.015 * pow(avgL - 50, 2) / sqrt(20 + pow(avgL - 50, 2)); 9376 var sc = 1 + 0.045 * avgCp; 9377 var sh = 1 + 0.015 * avgCp * T; 9378 var deltaTheta = 30 * exp(-pow((avgHp - 275) / 25, 2)); 9379 var Rc = 2 * sqrt(pow(avgCp, 7) / (pow(avgCp, 7) + pow(25, 7))); 9380 var Rt = -Rc * sin(2 * deg2rad(deltaTheta)); 9381 var result = sqrt(pow(deltaL / (Kl * sl), 2) + pow(deltaCp / (Kc * sc), 2) + pow(deltaHp / (Kh * sh), 2) + Rt * (deltaCp / (Kc * sc)) * (deltaHp / (Kh * sh))); 9382 return max(0, min(100, result)); 9383 }; 9384 var Color$1 = Color_1; 9385 var distance = function(a, b, mode) { 9386 if (mode === void 0) mode = "lab"; 9387 a = new Color$1(a); 9388 b = new Color$1(b); 9389 var l1 = a.get(mode); 9390 var l2 = b.get(mode); 9391 var sum_sq = 0; 9392 for (var i2 in l1) { 9393 var d = (l1[i2] || 0) - (l2[i2] || 0); 9394 sum_sq += d * d; 9395 } 9396 return Math.sqrt(sum_sq); 9397 }; 9398 var Color = Color_1; 9399 var valid = function() { 9400 var args = [], len = arguments.length; 9401 while (len--) args[len] = arguments[len]; 9402 try { 9403 new (Function.prototype.bind.apply(Color, [null].concat(args)))(); 9404 return true; 9405 } catch (e) { 9406 return false; 9407 } 9408 }; 9409 var chroma$1 = chroma_1; 9410 var scale = scale$2; 9411 var scales = { 9412 cool: function cool() { 9413 return scale([chroma$1.hsl(180, 1, 0.9), chroma$1.hsl(250, 0.7, 0.4)]); 9414 }, 9415 hot: function hot() { 9416 return scale(["#000", "#f00", "#ff0", "#fff"]).mode("rgb"); 9417 } 9418 }; 9419 var colorbrewer = { 9420 // sequential 9421 OrRd: ["#fff7ec", "#fee8c8", "#fdd49e", "#fdbb84", "#fc8d59", "#ef6548", "#d7301f", "#b30000", "#7f0000"], 9422 PuBu: ["#fff7fb", "#ece7f2", "#d0d1e6", "#a6bddb", "#74a9cf", "#3690c0", "#0570b0", "#045a8d", "#023858"], 9423 BuPu: ["#f7fcfd", "#e0ecf4", "#bfd3e6", "#9ebcda", "#8c96c6", "#8c6bb1", "#88419d", "#810f7c", "#4d004b"], 9424 Oranges: ["#fff5eb", "#fee6ce", "#fdd0a2", "#fdae6b", "#fd8d3c", "#f16913", "#d94801", "#a63603", "#7f2704"], 9425 BuGn: ["#f7fcfd", "#e5f5f9", "#ccece6", "#99d8c9", "#66c2a4", "#41ae76", "#238b45", "#006d2c", "#00441b"], 9426 YlOrBr: ["#ffffe5", "#fff7bc", "#fee391", "#fec44f", "#fe9929", "#ec7014", "#cc4c02", "#993404", "#662506"], 9427 YlGn: ["#ffffe5", "#f7fcb9", "#d9f0a3", "#addd8e", "#78c679", "#41ab5d", "#238443", "#006837", "#004529"], 9428 Reds: ["#fff5f0", "#fee0d2", "#fcbba1", "#fc9272", "#fb6a4a", "#ef3b2c", "#cb181d", "#a50f15", "#67000d"], 9429 RdPu: ["#fff7f3", "#fde0dd", "#fcc5c0", "#fa9fb5", "#f768a1", "#dd3497", "#ae017e", "#7a0177", "#49006a"], 9430 Greens: ["#f7fcf5", "#e5f5e0", "#c7e9c0", "#a1d99b", "#74c476", "#41ab5d", "#238b45", "#006d2c", "#00441b"], 9431 YlGnBu: ["#ffffd9", "#edf8b1", "#c7e9b4", "#7fcdbb", "#41b6c4", "#1d91c0", "#225ea8", "#253494", "#081d58"], 9432 Purples: ["#fcfbfd", "#efedf5", "#dadaeb", "#bcbddc", "#9e9ac8", "#807dba", "#6a51a3", "#54278f", "#3f007d"], 9433 GnBu: ["#f7fcf0", "#e0f3db", "#ccebc5", "#a8ddb5", "#7bccc4", "#4eb3d3", "#2b8cbe", "#0868ac", "#084081"], 9434 Greys: ["#ffffff", "#f0f0f0", "#d9d9d9", "#bdbdbd", "#969696", "#737373", "#525252", "#252525", "#000000"], 9435 YlOrRd: ["#ffffcc", "#ffeda0", "#fed976", "#feb24c", "#fd8d3c", "#fc4e2a", "#e31a1c", "#bd0026", "#800026"], 9436 PuRd: ["#f7f4f9", "#e7e1ef", "#d4b9da", "#c994c7", "#df65b0", "#e7298a", "#ce1256", "#980043", "#67001f"], 9437 Blues: ["#f7fbff", "#deebf7", "#c6dbef", "#9ecae1", "#6baed6", "#4292c6", "#2171b5", "#08519c", "#08306b"], 9438 PuBuGn: ["#fff7fb", "#ece2f0", "#d0d1e6", "#a6bddb", "#67a9cf", "#3690c0", "#02818a", "#016c59", "#014636"], 9439 Viridis: ["#440154", "#482777", "#3f4a8a", "#31678e", "#26838f", "#1f9d8a", "#6cce5a", "#b6de2b", "#fee825"], 9440 // diverging 9441 Spectral: ["#9e0142", "#d53e4f", "#f46d43", "#fdae61", "#fee08b", "#ffffbf", "#e6f598", "#abdda4", "#66c2a5", "#3288bd", "#5e4fa2"], 9442 RdYlGn: ["#a50026", "#d73027", "#f46d43", "#fdae61", "#fee08b", "#ffffbf", "#d9ef8b", "#a6d96a", "#66bd63", "#1a9850", "#006837"], 9443 RdBu: ["#67001f", "#b2182b", "#d6604d", "#f4a582", "#fddbc7", "#f7f7f7", "#d1e5f0", "#92c5de", "#4393c3", "#2166ac", "#053061"], 9444 PiYG: ["#8e0152", "#c51b7d", "#de77ae", "#f1b6da", "#fde0ef", "#f7f7f7", "#e6f5d0", "#b8e186", "#7fbc41", "#4d9221", "#276419"], 9445 PRGn: ["#40004b", "#762a83", "#9970ab", "#c2a5cf", "#e7d4e8", "#f7f7f7", "#d9f0d3", "#a6dba0", "#5aae61", "#1b7837", "#00441b"], 9446 RdYlBu: ["#a50026", "#d73027", "#f46d43", "#fdae61", "#fee090", "#ffffbf", "#e0f3f8", "#abd9e9", "#74add1", "#4575b4", "#313695"], 9447 BrBG: ["#543005", "#8c510a", "#bf812d", "#dfc27d", "#f6e8c3", "#f5f5f5", "#c7eae5", "#80cdc1", "#35978f", "#01665e", "#003c30"], 9448 RdGy: ["#67001f", "#b2182b", "#d6604d", "#f4a582", "#fddbc7", "#ffffff", "#e0e0e0", "#bababa", "#878787", "#4d4d4d", "#1a1a1a"], 9449 PuOr: ["#7f3b08", "#b35806", "#e08214", "#fdb863", "#fee0b6", "#f7f7f7", "#d8daeb", "#b2abd2", "#8073ac", "#542788", "#2d004b"], 9450 // qualitative 9451 Set2: ["#66c2a5", "#fc8d62", "#8da0cb", "#e78ac3", "#a6d854", "#ffd92f", "#e5c494", "#b3b3b3"], 9452 Accent: ["#7fc97f", "#beaed4", "#fdc086", "#ffff99", "#386cb0", "#f0027f", "#bf5b17", "#666666"], 9453 Set1: ["#e41a1c", "#377eb8", "#4daf4a", "#984ea3", "#ff7f00", "#ffff33", "#a65628", "#f781bf", "#999999"], 9454 Set3: ["#8dd3c7", "#ffffb3", "#bebada", "#fb8072", "#80b1d3", "#fdb462", "#b3de69", "#fccde5", "#d9d9d9", "#bc80bd", "#ccebc5", "#ffed6f"], 9455 Dark2: ["#1b9e77", "#d95f02", "#7570b3", "#e7298a", "#66a61e", "#e6ab02", "#a6761d", "#666666"], 9456 Paired: ["#a6cee3", "#1f78b4", "#b2df8a", "#33a02c", "#fb9a99", "#e31a1c", "#fdbf6f", "#ff7f00", "#cab2d6", "#6a3d9a", "#ffff99", "#b15928"], 9457 Pastel2: ["#b3e2cd", "#fdcdac", "#cbd5e8", "#f4cae4", "#e6f5c9", "#fff2ae", "#f1e2cc", "#cccccc"], 9458 Pastel1: ["#fbb4ae", "#b3cde3", "#ccebc5", "#decbe4", "#fed9a6", "#ffffcc", "#e5d8bd", "#fddaec", "#f2f2f2"] 9459 }; 9460 for (var i = 0, list = Object.keys(colorbrewer); i < list.length; i += 1) { 9461 var key = list[i]; 9462 colorbrewer[key.toLowerCase()] = colorbrewer[key]; 9463 } 9464 var colorbrewer_1 = colorbrewer; 9465 var chroma2 = chroma_1; 9466 chroma2.average = average; 9467 chroma2.bezier = bezier_1; 9468 chroma2.blend = blend_1; 9469 chroma2.cubehelix = cubehelix; 9470 chroma2.mix = chroma2.interpolate = mix$1; 9471 chroma2.random = random_1; 9472 chroma2.scale = scale$2; 9473 chroma2.analyze = analyze_1.analyze; 9474 chroma2.contrast = contrast; 9475 chroma2.deltaE = deltaE; 9476 chroma2.distance = distance; 9477 chroma2.limits = analyze_1.limits; 9478 chroma2.valid = valid; 9479 chroma2.scales = scales; 9480 chroma2.colors = w3cx11_1; 9481 chroma2.brewer = colorbrewer_1; 9482 var chroma_js = chroma2; 9483 return chroma_js; 9484 }); 9485 } 9486 }); 9487 9488
9488// app/javascript/entrypoints/customer-center/chroma.js 9489 init_define_process(); 9490 init_jquery(); 9491 var import_chroma_js = __toESM(require_chroma()); 9492 window.chroma = import_chroma_js.default; 9493})(); 9494/*! Bundled license information: 9495 9496jquery/dist/jquery.js: 9497 (*! 9498 * jQuery JavaScript Library v3.5.1 9499 * https://jquery.com/ 9500 * 9501 * Includes Sizzle.js 9502 * https://sizzlejs.com/ 9503 * 9504 * Copyright JS Foundation and other contributors 9505 * Released under the MIT license 9506 * https://jquery.org/license 9507 * 9508 * Date: 2020-05-04T22:49Z 9509 *) 9510 9511chroma-js/chroma.js: 9512 (** 9513 * chroma.js - JavaScript library for color conversions 9514 * 9515 * Copyright (c) 2011-2019, Gregor Aisch 9516 * All rights reserved. 9517 * 9518 * Redistribution and use in source and binary forms, with or without 9519 * modification, are permitted provided that the following conditions are met: 9520 * 9521 * 1. Redistributions of source code must retain the above copyright notice, this 9522 * list of conditions and the following disclaimer. 9523 * 9524 * 2. Redistributions in binary form must reproduce the above copyright notice, 9525 * this list of conditions and the following disclaimer in the documentation 9526 * and/or other materials provided with the distribution. 9527 * 9528 * 3. The name Gregor Aisch may not be used to endorse or promote products 9529 * derived from this software without specific prior written permission. 9530 * 9531 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 9532 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 9533 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 9534 * DISCLAIMED. IN NO EVENT SHALL GREGOR AISCH OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 9535 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 9536 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 9537 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 9538 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 9539 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, 9540 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 9541 * 9542 * ------------------------------------------------------- 9543 * 9544 * chroma.js includes colors from colorbrewer2.org, which are released under 9545 * the following license: 9546 * 9547 * Copyright (c) 2002 Cynthia Brewer, Mark Harrower, 9548 * and The Pennsylvania State University. 9549 * 9550 * Licensed under the Apache License, Version 2.0 (the "License"); 9551 * you may not use this file except in compliance with the License. 9552 * You may obtain a copy of the License at 9553 * http://www.apache.org/licenses/LICENSE-2.0 9554 * 9555 * Unless required by applicable law or agreed to in writing, 9556 * software distributed under the License is distributed on an 9557 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 9558 * either express or implied. See the License for the specific 9559 * language governing permissions and limitations under the License. 9560 * 9561 * ------------------------------------------------------ 9562 * 9563 * Named colors are taken from X11 Color Names. 9564 * http://www.w3.org/TR/css3-color/#svg-color 9565 * 9566 * @preserve 9567 *) 9568*/ 9569//# sourceMappingURL=/assets/chroma.js-7c6a106a46b97e0ee0488143f4558d7f2f5b3b4a267fbee5c165a1cc0d22ceba.map 9570//! 9571;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.