{"version":3,"sources":["jsdelivr-header.js","/gh/88lin/picx-images-hosting@master/cdn/chat/chat.js"],"names":[],"mappings":"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","file":"/gh/88lin/picx-images-hosting@master/cdn/chat/chat.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.48.0.\n * Original file: /gh/88lin/picx-images-hosting@master/cdn/chat/chat.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","! function o(a, s, c) {\n    function l(e, t) {\n        if (!s[e]) {\n            if (!a[e]) { var n = \"function\" == typeof require && require; if (!t && n) return n(e, !0); if (u) return u(e, !0); var r = new Error(\"Cannot find module '\" + e + \"'\"); throw r.code = \"MODULE_NOT_FOUND\", r }\n            var i = s[e] = { exports: {} };\n            a[e][0].call(i.exports, function (t) { return l(a[e][1][t] || t) }, i, i.exports, o, a, s, c)\n        }\n        return s[e].exports\n    }\n    for (var u = \"function\" == typeof require && require, t = 0; t < c.length; t++) l(c[t]);\n    return l\n}({\n    0: [function () {\n        \"use strict\";\n        var _createClass = function () {\n            function defineProperties(target, props) {\n                for (var i = 0; i < props.length; i++) {\n                    var descriptor = props[i];\n                    descriptor.enumerable = descriptor.enumerable || false;\n                    descriptor.configurable = true;\n                    if (\"value\" in descriptor) descriptor.writable = true;\n                    Object.defineProperty(target, descriptor.key, descriptor);\n                }\n            }\n\n            return function (Constructor, protoProps, staticProps) {\n                if (protoProps) defineProperties(Constructor.prototype, protoProps);\n                if (staticProps) defineProperties(Constructor, staticProps);\n                return Constructor;\n            };\n        }();\n        function _classCallCheck(instance, Constructor) {\n            if (!(instance instanceof Constructor)) {\n                throw new TypeError(\"Cannot call a class as a function\");\n            }\n        }\n        (function () {\n            var OwO = function () {\n                function OwO(option) {\n                    var _this = this;\n\n                    _classCallCheck(this, OwO);\n\n                    // 定义默认选项 该项api不起作用，在下面另行插入了js\n                    var defaultOption = {\n                        logo: 'OwO表情',\n                        container: document.getElementsByClassName('OwO')[0],\n                        target: document.getElementsByTagName('textarea')[0],\n                        position: 'up',\n                        width: '100%',\n                        maxHeight: '235px',\n                        api: 'js/owo.json'\n                    };\n\n                    for (var defaultKey in defaultOption) {\n                        if (defaultOption.hasOwnProperty(defaultKey) && !option.hasOwnProperty(defaultKey)) {\n                            option[defaultKey] = defaultOption[defaultKey];\n                        }\n                    }\n\n                    this.container = option.container;\n                    this.target = option.target;\n\n                    if (option.position === 'up') {\n                        this.container.classList.add('OwO-up');\n                    }\n\n                    var xhr = new XMLHttpRequest();\n                    xhr.onreadystatechange = function () {\n                        if (xhr.readyState === 4) {\n                            if (xhr.status >= 200 && xhr.status < 300 || xhr.status === 304) {\n                                _this.odata = JSON.parse(xhr.responseText);\n                                Object.keys(_this.odata).forEach(function (key) {\n                                    if (key === \"颜文字\" || key.indexOf(\"小黄豆\") !== -1) {\n                                        delete _this.odata[key];\n                                    }\n                                });\n\n                                _this.init(option);\n                            } else {\n                                console.log('OwO data request was unsuccessful: ' + xhr.status);\n                            }\n                        }\n                    };\n\n                    xhr.open('get', option.api, true);\n                    xhr.send(null);\n                }\n\n                _createClass(OwO, [{\n                    key: 'init',\n                    value: function init(option) {\n                        var _this2 = this;\n\n                        this.area = option.target;\n                        this.packages = Object.keys(this.odata);\n\n                        var html = '\\n <div class=\"OwO-logo sb\">' + option.logo + '</div>\\n <div class=\"OwO-body\" style=\"width: ' + option.width + '\">';\n\n                        for (var i = 0; i < this.packages.length; i++) {\n                            html += '\\n <ul class=\"OwO-items OwO-' + this.odata[this.packages[i]].name + ' OwO-items-' + this.odata[this.packages[i]].type + '\" style=\"max-height: ' + (parseInt(option.maxHeight) - 53 + 'px') + ';\">';\n                            var opackage = this.odata[this.packages[i]].container;\n\n                            for (var _i = 0; _i < opackage.length; _i++) {\n                                if (this.odata[this.packages[i]].type === 'image-zl') {\n                                    html += '\\n <li class=\"OwO-item\" title=\"' + opackage[_i].text + '\" data-input=\"' + this.odata[this.packages[i]].name + \"/\" + opackage[_i].icon + '\">' + '<img data-original=\"' + 'https://emoticons.z-l.top/' + this.odata[this.packages[i]].name + \"/\" + opackage[_i].icon + '.png\" src=\"\" icon=\"' + opackage[_i].text + '\" referrerpolicy=\"no-referrer\"></li>';\n                                } else if (this.odata[this.packages[i]].type === 'image') {\n                                    html += '\\n <li class=\"OwO-item\" title=\"' + opackage[_i].text + '\" data-input=\"' + opackage[_i].text + '\">' + '<img data-original=\"' + 'https://cdn.jsdmirror.com/gh/btwoa/Fluent-Emoji-3D/' + opackage[_i].text + '.gif\" src=\"\" icon=\"' + opackage[_i].text + '\" referrerpolicy=\"no-referrer\"></li>';\n                                } else if (this.odata[this.packages[i]].type === 'cat') {\n                                    html += '\\n <li class=\"OwO-item\" title=\"' + opackage[_i].text + '\" data-input=\"' + this.odata[this.packages[i]].name + opackage[_i].icon + '\">' + '<img data-original=\"' + 'https://npm.elemecdn.com/blobcat@1.0.0' + \"/\" + opackage[_i].icon + '.png\" src=\"\" icon=\"' + opackage[_i].text + '\" referrerpolicy=\"no-referrer\"></li>';\n                                } else if (this.odata[this.packages[i]].type === 'bb_') {\n                                    html += '\\n <li class=\"OwO-item\" title=\"' + opackage[_i].text + '\" data-input=\"' + this.odata[this.packages[i]].name + opackage[_i].icon + '\">' + '<img data-original=\"' + 'https://unpkg.com/@waline/emojis@1.1.0/bilibili/bb_' + opackage[_i].icon + '.png\" src=\"\" icon=\"' + opackage[_i].text + '\" referrerpolicy=\"no-referrer\"></li>';\n                                } else if (this.odata[this.packages[i]].type === 'tuzki') {\n                                    html += '\\n <li class=\"OwO-item\" title=\"' + opackage[_i].text + '\" data-input=\"' + this.odata[this.packages[i]].name + opackage[_i].icon + '\">' + '<img data-original=\"' + 'https://tools.kalvinbg.cn/static/image/emotion/tuzki/' + opackage[_i].icon + '.gif\" src=\"\" icon=\"' + opackage[_i].text + '\" style=\"min-height:4rem\" referrerpolicy=\"no-referrer\"></li>';\n                                } else if (this.odata[this.packages[i]].type === 'quicker') {\n                                    html += '\\n <li class=\"OwO-item\" title=\"' + opackage[_i].text + '\" data-input=\"quicker/' + opackage[_i].icon + '\">' + '<img data-original=\"https://files.getquicker.net/_sitefiles/_guides/52593d69-c99a-4367-8b98-08d9a65be47e/2022/07/04/' + opackage[_i].icon + '.png\" src=\"\" icon=\"' + opackage[_i].text + '\" referrerpolicy=\"no-referrer\"></li>';\n                                } else if (this.odata[this.packages[i]].type === 'quicker-gif') {\n                                    html += '\\n <li class=\"OwO-item\" title=\"' + opackage[_i].text + '\" data-input=\"' + opackage[_i].icon + '\">' + '<img data-original=\"https://files.getquicker.net/_sitefiles/_guides/52593d69-c99a-4367-8b98-08d9a65be47e/2022/07/06/' + opackage[_i].icon + '.gif\" src=\"\" icon=\"' + opackage[_i].text + '\" referrerpolicy=\"no-referrer\"></li>';\n                                } else if (this.odata[this.packages[i]].type === 'ka_pian_men') {\n                                    html += '\\n <li class=\"OwO-item\" title=\"' + opackage[_i].text + '\" data-input=\"' + opackage[_i].icon + '\">' + '<img data-original=\"https://files.getquicker.net/_sitefiles/_guides/52593d69-c99a-4367-8b98-08d9a65be47e/2022/03/27/' + opackage[_i].icon + '.gif\" src=\"\" icon=\"' + opackage[_i].text + '\" referrerpolicy=\"no-referrer\"></li>';\n                                } else {\n                                    html += '\\n <li class=\"OwO-item\" title=\"' + opackage[_i].text + '\">' + opackage[_i].icon + '</li>';\n                                }\n                            }\n\n\n                            html += '\\n </ul>';\n                        }\n\n                        html += '\\n <div class=\"OwO-bar\">\\n <ul class=\"OwO-packages\">';\n\n                        for (var _i2 = 0; _i2 < this.packages.length; _i2++) {\n                            html += '\\n <li><span>' + this.packages[_i2] + '</span></li>';\n                        }\n\n                        html += '\\n </ul>\\n </div>\\n </div>\\n ';\n                        this.container.innerHTML = html;\n\n                        this.logo = this.container.getElementsByClassName('OwO-logo')[0];\n                        this.logo.addEventListener('click', function () {\n                            _this2.toggle();\n                        });\n\n                        this.container.getElementsByClassName('OwO-body')[0].addEventListener('click', function (e) {\n                            var target = null;\n\n                            if (e.target.classList.contains('OwO-item')) {\n                                target = e.target;\n                            } else if (e.target.parentNode.classList.contains('OwO-item')) {\n                                target = e.target.parentNode;\n                            }\n\n                            if (target) {\n                                var startPos = _this2.area.selectionStart;\n                                var endPos = _this2.area.selectionEnd;\n                                var areaValue = _this2.area.value;\n                                var insertContent;\n\n                                if (target.dataset.hasOwnProperty(\"input\")) {\n                                    if (target.dataset.input && target.dataset.input.startsWith('quicker/')) {\n                                        insertContent = \"【\" + target.dataset.input.replace('quicker/', '') + \"】\";\n                                    } else {\n                                        insertContent = \"【\" + target.dataset.input + \"】\";\n                                    }\n                                } else {\n                                    insertContent = target.innerHTML;\n                                }\n\n                                _this2.area.value = areaValue.slice(0, startPos) + insertContent + areaValue.slice(endPos);\n                                _this2.area.selectionStart = startPos + insertContent.length;\n                                _this2.area.selectionEnd = startPos + insertContent.length;\n                                _this2.area.focus();\n                                _this2.toggle();\n                            }\n                        });\n\n                        this.packagesEle = this.container.getElementsByClassName('OwO-packages')[0];\n\n                        var _loop = function _loop(_i3) {\n                            (function (index) {\n                                _this2.packagesEle.children[_i3].addEventListener('click', function () {\n                                    _this2.tab(index);\n                                });\n                            })(_i3);\n                        };\n\n                        for (var _i3 = 0; _i3 < this.packagesEle.children.length; _i3++) {\n                            _loop(_i3);\n                        }\n\n                        this.tab(0);\n                    }\n                }, {\n                    key: 'toggle',\n                    value: function toggle() {\n                        if (this.container.classList.contains('OwO-open')) {\n                            this.container.classList.remove('OwO-open');\n                        } else {\n                            this.container.classList.add('OwO-open');\n                        }\n\n                        try {\n                            $(\"img\").lazyload({\n                                effect: \"fadeIn\"\n                            });\n                        } catch (e) {\n                            if (this.container.classList.contains(\"OwO-open\")) {\n                                var a = this.container.querySelectorAll(\".OwO-items.OwO-items-show>li img\");\n                                [].forEach.call(a, function (a) {\n                                    var b = a.dataset.original;\n                                    b && (a.src = b, a.removeAttribute(\"data-src\"));\n                                });\n                            }\n                        }\n                    }\n                }, {\n                    key: 'tab',\n                    value: function tab(index) {\n                        var itemsShow = this.container.getElementsByClassName('OwO-items-show')[0];\n\n                        if (itemsShow) {\n                            itemsShow.classList.remove('OwO-items-show');\n                        }\n\n                        this.container.getElementsByClassName('OwO-items')[index].classList.add('OwO-items-show');\n\n                        var packageActive = this.container.getElementsByClassName('OwO-package-active')[0];\n\n                        if (packageActive) {\n                            packageActive.classList.remove('OwO-package-active');\n                        }\n\n                        this.packagesEle.getElementsByTagName('li')[index].classList.add('OwO-package-active');\n\n                        try {\n                            $(\"img\").lazyload({\n                                effect: \"fadeIn\"\n                            });\n                        } catch (e) {\n                            if (this.container.classList.contains(\"OwO-open\")) {\n                                var a = this.container.querySelectorAll(\".OwO-items.OwO-items-show>li img\");\n                                [].forEach.call(a, function (a) {\n                                    var b = a.dataset.original;\n                                    b && (a.src = b, a.removeAttribute(\"data-original\"));\n                                });\n                            }\n                        }\n                    }\n                }]);\n\n                return OwO;\n            }();\n\n            if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n                module.exports = OwO;\n            } else {\n                window.OwO = OwO;\n            }\n        })();\n    }()],\n    1: [function (t, n, e) {\n        ! function (t, e) { \"use strict\"; \"object\" == typeof n && \"object\" == typeof n.exports ? n.exports = t.document ? e(t, !0) : function (t) { if (!t.document) throw new Error(\"jQuery requires a window with a document\"); return e(t) } : e(t) }(\"undefined\" != typeof window ? window : this, function (h, t) {\n            \"use strict\";\n            var e = [],\n                m = h.document,\n                r = Object.getPrototypeOf,\n                s = e.slice,\n                g = e.concat,\n                c = e.push,\n                i = e.indexOf,\n                n = {},\n                o = n.toString,\n                v = n.hasOwnProperty,\n                a = v.toString,\n                l = a.call(Object),\n                y = {};\n\n            function b(t, e) {\n                var n = (e = e || m).createElement(\"script\");\n                n.text = t, e.head.appendChild(n).parentNode.removeChild(n)\n            }\n\n            function u(t, e) { return e.toUpperCase() }\n            var d = \"3.0.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector,-deprecated\",\n                w = function (t, e) { return new w.fn.init(t, e) },\n                f = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g,\n                p = /^-ms-/,\n                x = /-([a-z])/g;\n\n            function C(t) {\n                var e = !!t && \"length\" in t && t.length,\n                    n = w.type(t);\n                return \"function\" !== n && !w.isWindow(t) && (\"array\" === n || 0 === e || \"number\" == typeof e && 0 < e && e - 1 in t)\n            }\n            w.fn = w.prototype = {\n                jquery: d,\n                constructor: w,\n                length: 0,\n                toArray: function () { return s.call(this) },\n                get: function (t) { return null != t ? t < 0 ? this[t + this.length] : this[t] : s.call(this) },\n                pushStack: function (t) { var e = w.merge(this.constructor(), t); return e.prevObject = this, e },\n                each: function (t) { return w.each(this, t) },\n                map: function (n) { return this.pushStack(w.map(this, function (t, e) { return n.call(t, e, t) })) },\n                slice: function () { return this.pushStack(s.apply(this, arguments)) },\n                first: function () { return this.eq(0) },\n                last: function () { return this.eq(-1) },\n                eq: function (t) {\n                    var e = this.length,\n                        n = +t + (t < 0 ? e : 0);\n                    return this.pushStack(0 <= n && n < e ? [this[n]] : [])\n                },\n                end: function () { return this.prevObject || this.constructor() },\n                push: c,\n                sort: e.sort,\n                splice: e.splice\n            }, w.extend = w.fn.extend = function () {\n                var t, e, n, r, i, o, a = arguments[0] || {},\n                    s = 1,\n                    c = arguments.length,\n                    l = !1;\n                for (\"boolean\" == typeof a && (l = a, a = arguments[s] || {}, s++), \"object\" == typeof a || w.isFunction(a) || (a = {}), s === c && (a = this, s--); s < c; s++)\n                    if (null != (t = arguments[s]))\n                        for (e in t) n = a[e], a !== (r = t[e]) && (l && r && (w.isPlainObject(r) || (i = w.isArray(r))) ? (o = i ? (i = !1, n && w.isArray(n) ? n : []) : n && w.isPlainObject(n) ? n : {}, a[e] = w.extend(l, o, r)) : void 0 !== r && (a[e] = r));\n                return a\n            }, w.extend({\n                expando: \"jQuery\" + (d + Math.random()).replace(/\\D/g, \"\"),\n                isReady: !0,\n                error: function (t) { throw new Error(t) },\n                noop: function () { },\n                isFunction: function (t) { return \"function\" === w.type(t) },\n                isArray: Array.isArray,\n                isWindow: function (t) { return null != t && t === t.window },\n                isNumeric: function (t) { var e = w.type(t); return (\"number\" === e || \"string\" === e) && !isNaN(t - parseFloat(t)) },\n                isPlainObject: function (t) { var e, n; return !(!t || \"[object Object]\" !== o.call(t)) && (!(e = r(t)) || \"function\" == typeof (n = v.call(e, \"constructor\") && e.constructor) && a.call(n) === l) },\n                isEmptyObject: function (t) { var e; for (e in t) return !1; return !0 },\n                type: function (t) { return null == t ? t + \"\" : \"object\" == typeof t || \"function\" == typeof t ? n[o.call(t)] || \"object\" : typeof t },\n                globalEval: function (t) { b(t) },\n                camelCase: function (t) { return t.replace(p, \"ms-\").replace(x, u) },\n                nodeName: function (t, e) { return t.nodeName && t.nodeName.toLowerCase() === e.toLowerCase() },\n                each: function (t, e) {\n                    var n, r = 0;\n                    if (C(t))\n                        for (n = t.length; r < n && !1 !== e.call(t[r], r, t[r]); r++);\n                    else\n                        for (r in t)\n                            if (!1 === e.call(t[r], r, t[r])) break; return t\n                },\n                trim: function (t) { return null == t ? \"\" : (t + \"\").replace(f, \"\") },\n                makeArray: function (t, e) { var n = e || []; return null != t && (C(Object(t)) ? w.merge(n, \"string\" == typeof t ? [t] : t) : c.call(n, t)), n },\n                inArray: function (t, e, n) { return null == e ? -1 : i.call(e, t, n) },\n                merge: function (t, e) { for (var n = +e.length, r = 0, i = t.length; r < n; r++) t[i++] = e[r]; return t.length = i, t },\n                grep: function (t, e, n) { for (var r = [], i = 0, o = t.length, a = !n; i < o; i++) !e(t[i], i) != a && r.push(t[i]); return r },\n                map: function (t, e, n) {\n                    var r, i, o = 0,\n                        a = [];\n                    if (C(t))\n                        for (r = t.length; o < r; o++) null != (i = e(t[o], o, n)) && a.push(i);\n                    else\n                        for (o in t) null != (i = e(t[o], o, n)) && a.push(i);\n                    return g.apply([], a)\n                },\n                guid: 1,\n                proxy: function (t, e) { var n, r, i; if (\"string\" == typeof e && (n = t[e], e = t, t = n), w.isFunction(t)) return r = s.call(arguments, 2), (i = function () { return t.apply(e || this, r.concat(s.call(arguments))) }).guid = t.guid = t.guid || w.guid++, i },\n                now: Date.now,\n                support: y\n            }), \"function\" == typeof Symbol && (w.fn[Symbol.iterator] = e[Symbol.iterator]), w.each(\"Boolean Number String Function Array Date RegExp Object Error Symbol\".split(\" \"), function (t, e) { n[\"[object \" + e + \"]\"] = e.toLowerCase() });\n            var k = function (n) {\n                function d(t, e, n) { var r = \"0x\" + e - 65536; return r != r || n ? e : r < 0 ? String.fromCharCode(65536 + r) : String.fromCharCode(r >> 10 | 55296, 1023 & r | 56320) }\n\n                function i() { C() }\n                var t, p, w, o, a, h, f, m, x, c, l, C, k, s, T, g, u, v, y, E = \"sizzle\" + 1 * new Date,\n                    b = n.document,\n                    N = 0,\n                    r = 0,\n                    S = at(),\n                    D = at(),\n                    A = at(),\n                    L = function (t, e) { return t === e && (l = !0), 0 },\n                    j = {}.hasOwnProperty,\n                    e = [],\n                    _ = e.pop,\n                    q = e.push,\n                    O = e.push,\n                    F = e.slice,\n                    P = function (t, e) {\n                        for (var n = 0, r = t.length; n < r; n++)\n                            if (t[n] === e) return n;\n                        return -1\n                    },\n                    H = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\n                    z = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n                    I = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\n                    R = \"\\\\[\" + z + \"*(\" + I + \")(?:\" + z + \"*([*^$|!~]?=)\" + z + \"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + I + \"))|)\" + z + \"*\\\\]\",\n                    W = \":(\" + I + \")(?:\\\\((('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + R + \")*)|.*)\\\\)|)\",\n                    B = new RegExp(z + \"+\", \"g\"),\n                    M = new RegExp(\"^\" + z + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + z + \"+$\", \"g\"),\n                    $ = new RegExp(\"^\" + z + \"*,\" + z + \"*\"),\n                    U = new RegExp(\"^\" + z + \"*([>+~]|\" + z + \")\" + z + \"*\"),\n                    V = new RegExp(\"=\" + z + \"*([^\\\\]'\\\"]*?)\" + z + \"*\\\\]\", \"g\"),\n                    X = new RegExp(W),\n                    Q = new RegExp(\"^\" + I + \"$\"),\n                    Y = { ID: new RegExp(\"^#(\" + I + \")\"), CLASS: new RegExp(\"^\\\\.(\" + I + \")\"), TAG: new RegExp(\"^(\" + I + \"|[*])\"), ATTR: new RegExp(\"^\" + R), PSEUDO: new RegExp(\"^\" + W), CHILD: new RegExp(\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + z + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + z + \"*(?:([+-]|)\" + z + \"*(\\\\d+)|))\" + z + \"*\\\\)|)\", \"i\"), bool: new RegExp(\"^(?:\" + H + \")$\", \"i\"), needsContext: new RegExp(\"^\" + z + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + z + \"*((?:-\\\\d)?\\\\d*)\" + z + \"*\\\\)|)(?=[^-]|$)\", \"i\") },\n                    G = /^(?:input|select|textarea|button)$/i,\n                    J = /^h\\d$/i,\n                    K = /^[^{]+\\{\\s*\\[native \\w/,\n                    Z = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n                    tt = /[+~]/,\n                    et = new RegExp(\"\\\\\\\\([\\\\da-f]{1,6}\" + z + \"?|(\" + z + \")|.)\", \"ig\"),\n                    nt = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g,\n                    rt = function (t, e) { return e ? \"\\0\" === t ? \"�\" : t.slice(0, -1) + \"\\\\\" + t.charCodeAt(t.length - 1).toString(16) + \" \" : \"\\\\\" + t },\n                    it = yt(function (t) { return !0 === t.disabled }, { dir: \"parentNode\", next: \"legend\" });\n                try { O.apply(e = F.call(b.childNodes), b.childNodes), e[b.childNodes.length].nodeType } catch (t) {\n                    O = {\n                        apply: e.length ? function (t, e) { q.apply(t, F.call(e)) } : function (t, e) {\n                            for (var n = t.length, r = 0; t[n++] = e[r++];);\n                            t.length = n - 1\n                        }\n                    }\n                }\n\n                function ot(t, e, n, r) {\n                    var i, o, a, s, c, l, u, d = e && e.ownerDocument,\n                        f = e ? e.nodeType : 9;\n                    if (n = n || [], \"string\" != typeof t || !t || 1 !== f && 9 !== f && 11 !== f) return n;\n                    if (!r && ((e ? e.ownerDocument || e : b) !== k && C(e), e = e || k, T)) {\n                        if (11 !== f && (c = Z.exec(t)))\n                            if (i = c[1]) { if (9 === f) { if (!(a = e.getElementById(i))) return n; if (a.id === i) return n.push(a), n } else if (d && (a = d.getElementById(i)) && y(e, a) && a.id === i) return n.push(a), n } else { if (c[2]) return O.apply(n, e.getElementsByTagName(t)), n; if ((i = c[3]) && p.getElementsByClassName && e.getElementsByClassName) return O.apply(n, e.getElementsByClassName(i)), n }\n                        if (p.qsa && !A[t + \" \"] && (!g || !g.test(t))) {\n                            if (1 !== f) d = e, u = t;\n                            else if (\"object\" !== e.nodeName.toLowerCase()) {\n                                for ((s = e.getAttribute(\"id\")) ? s = s.replace(nt, rt) : e.setAttribute(\"id\", s = E), o = (l = h(t)).length; o--;) l[o] = \"#\" + s + \" \" + vt(l[o]);\n                                u = l.join(\",\"), d = tt.test(t) && mt(e.parentNode) || e\n                            }\n                            if (u) try { return O.apply(n, d.querySelectorAll(u)), n } catch (t) { } finally { s === E && e.removeAttribute(\"id\") }\n                        }\n                    }\n                    return m(t.replace(M, \"$1\"), e, n, r)\n                }\n\n                function at() { var r = []; return function t(e, n) { return r.push(e + \" \") > w.cacheLength && delete t[r.shift()], t[e + \" \"] = n } }\n\n                function st(t) { return t[E] = !0, t }\n\n                function ct(t) { var e = k.createElement(\"fieldset\"); try { return !!t(e) } catch (t) { return !1 } finally { e.parentNode && e.parentNode.removeChild(e), e = null } }\n\n                function lt(t, e) { for (var n = t.split(\"|\"), r = n.length; r--;) w.attrHandle[n[r]] = e }\n\n                function ut(t, e) {\n                    var n = e && t,\n                        r = n && 1 === t.nodeType && 1 === e.nodeType && t.sourceIndex - e.sourceIndex;\n                    if (r) return r;\n                    if (n)\n                        for (; n = n.nextSibling;)\n                            if (n === e) return -1;\n                    return t ? 1 : -1\n                }\n\n                function dt(e) { return function (t) { return \"input\" === t.nodeName.toLowerCase() && t.type === e } }\n\n                function ft(n) { return function (t) { var e = t.nodeName.toLowerCase(); return (\"input\" === e || \"button\" === e) && t.type === n } }\n\n                function pt(e) { return function (t) { return \"label\" in t && t.disabled === e || \"form\" in t && t.disabled === e || \"form\" in t && !1 === t.disabled && (t.isDisabled === e || t.isDisabled !== !e && (\"label\" in t || !it(t)) !== e) } }\n\n                function ht(a) { return st(function (o) { return o = +o, st(function (t, e) { for (var n, r = a([], t.length, o), i = r.length; i--;) t[n = r[i]] && (t[n] = !(e[n] = t[n])) }) }) }\n\n                function mt(t) { return t && void 0 !== t.getElementsByTagName && t }\n                for (t in p = ot.support = {}, a = ot.isXML = function (t) { var e = t && (t.ownerDocument || t).documentElement; return !!e && \"HTML\" !== e.nodeName }, C = ot.setDocument = function (t) {\n                    var e, n, r = t ? t.ownerDocument || t : b;\n                    return r !== k && 9 === r.nodeType && r.documentElement && (s = (k = r).documentElement, T = !a(k), b !== k && (n = k.defaultView) && n.top !== n && (n.addEventListener ? n.addEventListener(\"unload\", i, !1) : n.attachEvent && n.attachEvent(\"onunload\", i)), p.attributes = ct(function (t) { return t.className = \"i\", !t.getAttribute(\"className\") }), p.getElementsByTagName = ct(function (t) { return t.appendChild(k.createComment(\"\")), !t.getElementsByTagName(\"*\").length }), p.getElementsByClassName = K.test(k.getElementsByClassName), p.getById = ct(function (t) { return s.appendChild(t).id = E, !k.getElementsByName || !k.getElementsByName(E).length }), p.getById ? (w.find.ID = function (t, e) { if (void 0 !== e.getElementById && T) { var n = e.getElementById(t); return n ? [n] : [] } }, w.filter.ID = function (t) { var e = t.replace(et, d); return function (t) { return t.getAttribute(\"id\") === e } }) : (delete w.find.ID, w.filter.ID = function (t) { var n = t.replace(et, d); return function (t) { var e = void 0 !== t.getAttributeNode && t.getAttributeNode(\"id\"); return e && e.value === n } }), w.find.TAG = p.getElementsByTagName ? function (t, e) { return void 0 !== e.getElementsByTagName ? e.getElementsByTagName(t) : p.qsa ? e.querySelectorAll(t) : void 0 } : function (t, e) {\n                        var n, r = [],\n                            i = 0,\n                            o = e.getElementsByTagName(t);\n                        if (\"*\" !== t) return o;\n                        for (; n = o[i++];) 1 === n.nodeType && r.push(n);\n                        return r\n                    }, w.find.CLASS = p.getElementsByClassName && function (t, e) { if (void 0 !== e.getElementsByClassName && T) return e.getElementsByClassName(t) }, u = [], g = [], (p.qsa = K.test(k.querySelectorAll)) && (ct(function (t) { s.appendChild(t).innerHTML = \"<a id='\" + E + \"'></a><select id='\" + E + \"-\\r\\\\' msallowcapture=''><option selected=''></option></select>\", t.querySelectorAll(\"[msallowcapture^='']\").length && g.push(\"[*^$]=\" + z + \"*(?:''|\\\"\\\")\"), t.querySelectorAll(\"[selected]\").length || g.push(\"\\\\[\" + z + \"*(?:value|\" + H + \")\"), t.querySelectorAll(\"[id~=\" + E + \"-]\").length || g.push(\"~=\"), t.querySelectorAll(\":checked\").length || g.push(\":checked\"), t.querySelectorAll(\"a#\" + E + \"+*\").length || g.push(\".#.+[+~]\") }), ct(function (t) {\n                        t.innerHTML = \"<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>\";\n                        var e = k.createElement(\"input\");\n                        e.setAttribute(\"type\", \"hidden\"), t.appendChild(e).setAttribute(\"name\", \"D\"), t.querySelectorAll(\"[name=d]\").length && g.push(\"name\" + z + \"*[*^$|!~]?=\"), 2 !== t.querySelectorAll(\":enabled\").length && g.push(\":enabled\", \":disabled\"), s.appendChild(t).disabled = !0, 2 !== t.querySelectorAll(\":disabled\").length && g.push(\":enabled\", \":disabled\"), t.querySelectorAll(\"*,:x\"), g.push(\",.*:\")\n                    })), (p.matchesSelector = K.test(v = s.matches || s.webkitMatchesSelector || s.mozMatchesSelector || s.oMatchesSelector || s.msMatchesSelector)) && ct(function (t) { p.disconnectedMatch = v.call(t, \"*\"), v.call(t, \"[s!='']:x\"), u.push(\"!=\", W) }), g = g.length && new RegExp(g.join(\"|\")), u = u.length && new RegExp(u.join(\"|\")), e = K.test(s.compareDocumentPosition), y = e || K.test(s.contains) ? function (t, e) {\n                        var n = 9 === t.nodeType ? t.documentElement : t,\n                            r = e && e.parentNode;\n                        return t === r || !(!r || 1 !== r.nodeType || !(n.contains ? n.contains(r) : t.compareDocumentPosition && 16 & t.compareDocumentPosition(r)))\n                    } : function (t, e) {\n                        if (e)\n                            for (; e = e.parentNode;)\n                                if (e === t) return !0;\n                        return !1\n                    }, L = e ? function (t, e) { if (t === e) return l = !0, 0; var n = !t.compareDocumentPosition - !e.compareDocumentPosition; return n || (1 & (n = (t.ownerDocument || t) === (e.ownerDocument || e) ? t.compareDocumentPosition(e) : 1) || !p.sortDetached && e.compareDocumentPosition(t) === n ? t === k || t.ownerDocument === b && y(b, t) ? -1 : e === k || e.ownerDocument === b && y(b, e) ? 1 : c ? P(c, t) - P(c, e) : 0 : 4 & n ? -1 : 1) } : function (t, e) {\n                        if (t === e) return l = !0, 0;\n                        var n, r = 0,\n                            i = t.parentNode,\n                            o = e.parentNode,\n                            a = [t],\n                            s = [e];\n                        if (!i || !o) return t === k ? -1 : e === k ? 1 : i ? -1 : o ? 1 : c ? P(c, t) - P(c, e) : 0;\n                        if (i === o) return ut(t, e);\n                        for (n = t; n = n.parentNode;) a.unshift(n);\n                        for (n = e; n = n.parentNode;) s.unshift(n);\n                        for (; a[r] === s[r];) r++;\n                        return r ? ut(a[r], s[r]) : a[r] === b ? -1 : s[r] === b ? 1 : 0\n                    }), k\n                }, ot.matches = function (t, e) { return ot(t, null, null, e) }, ot.matchesSelector = function (t, e) {\n                    if ((t.ownerDocument || t) !== k && C(t), e = e.replace(V, \"='$1']\"), p.matchesSelector && T && !A[e + \" \"] && (!u || !u.test(e)) && (!g || !g.test(e))) try { var n = v.call(t, e); if (n || p.disconnectedMatch || t.document && 11 !== t.document.nodeType) return n } catch (t) { }\n                    return 0 < ot(e, k, null, [t]).length\n                }, ot.contains = function (t, e) { return (t.ownerDocument || t) !== k && C(t), y(t, e) }, ot.attr = function (t, e) {\n                    (t.ownerDocument || t) !== k && C(t);\n                    var n = w.attrHandle[e.toLowerCase()],\n                        r = n && j.call(w.attrHandle, e.toLowerCase()) ? n(t, e, !T) : void 0;\n                    return void 0 !== r ? r : p.attributes || !T ? t.getAttribute(e) : (r = t.getAttributeNode(e)) && r.specified ? r.value : null\n                }, ot.escape = function (t) { return (t + \"\").replace(nt, rt) }, ot.error = function (t) { throw new Error(\"Syntax error, unrecognized expression: \" + t) }, ot.uniqueSort = function (t) {\n                    var e, n = [],\n                        r = 0,\n                        i = 0;\n                    if (l = !p.detectDuplicates, c = !p.sortStable && t.slice(0), t.sort(L), l) { for (; e = t[i++];) e === t[i] && (r = n.push(i)); for (; r--;) t.splice(n[r], 1) }\n                    return c = null, t\n                }, o = ot.getText = function (t) {\n                    var e, n = \"\",\n                        r = 0,\n                        i = t.nodeType;\n                    if (i) { if (1 === i || 9 === i || 11 === i) { if (\"string\" == typeof t.textContent) return t.textContent; for (t = t.firstChild; t; t = t.nextSibling) n += o(t) } else if (3 === i || 4 === i) return t.nodeValue } else\n                        for (; e = t[r++];) n += o(e);\n                    return n\n                }, (w = ot.selectors = {\n                    cacheLength: 50,\n                    createPseudo: st,\n                    match: Y,\n                    attrHandle: {},\n                    find: {},\n                    relative: { \">\": { dir: \"parentNode\", first: !0 }, \" \": { dir: \"parentNode\" }, \"+\": { dir: \"previousSibling\", first: !0 }, \"~\": { dir: \"previousSibling\" } },\n                    preFilter: { ATTR: function (t) { return t[1] = t[1].replace(et, d), t[3] = (t[3] || t[4] || t[5] || \"\").replace(et, d), \"~=\" === t[2] && (t[3] = \" \" + t[3] + \" \"), t.slice(0, 4) }, CHILD: function (t) { return t[1] = t[1].toLowerCase(), \"nth\" === t[1].slice(0, 3) ? (t[3] || ot.error(t[0]), t[4] = +(t[4] ? t[5] + (t[6] || 1) : 2 * (\"even\" === t[3] || \"odd\" === t[3])), t[5] = +(t[7] + t[8] || \"odd\" === t[3])) : t[3] && ot.error(t[0]), t }, PSEUDO: function (t) { var e, n = !t[6] && t[2]; return Y.CHILD.test(t[0]) ? null : (t[3] ? t[2] = t[4] || t[5] || \"\" : n && X.test(n) && (e = h(n, !0)) && (e = n.indexOf(\")\", n.length - e) - n.length) && (t[0] = t[0].slice(0, e), t[2] = n.slice(0, e)), t.slice(0, 3)) } },\n                    filter: {\n                        TAG: function (t) { var e = t.replace(et, d).toLowerCase(); return \"*\" === t ? function () { return !0 } : function (t) { return t.nodeName && t.nodeName.toLowerCase() === e } },\n                        CLASS: function (t) { var e = S[t + \" \"]; return e || (e = new RegExp(\"(^|\" + z + \")\" + t + \"(\" + z + \"|$)\")) && S(t, function (t) { return e.test(\"string\" == typeof t.className && t.className || void 0 !== t.getAttribute && t.getAttribute(\"class\") || \"\") }) },\n                        ATTR: function (n, r, i) { return function (t) { var e = ot.attr(t, n); return null == e ? \"!=\" === r : !r || (e += \"\", \"=\" === r ? e === i : \"!=\" === r ? e !== i : \"^=\" === r ? i && 0 === e.indexOf(i) : \"*=\" === r ? i && -1 < e.indexOf(i) : \"$=\" === r ? i && e.slice(-i.length) === i : \"~=\" === r ? -1 < (\" \" + e.replace(B, \" \") + \" \").indexOf(i) : \"|=\" === r && (e === i || e.slice(0, i.length + 1) === i + \"-\")) } },\n                        CHILD: function (h, t, e, m, g) {\n                            var v = \"nth\" !== h.slice(0, 3),\n                                y = \"last\" !== h.slice(-4),\n                                b = \"of-type\" === t;\n                            return 1 === m && 0 === g ? function (t) { return !!t.parentNode } : function (t, e, n) {\n                                var r, i, o, a, s, c, l = v != y ? \"nextSibling\" : \"previousSibling\",\n                                    u = t.parentNode,\n                                    d = b && t.nodeName.toLowerCase(),\n                                    f = !n && !b,\n                                    p = !1;\n                                if (u) {\n                                    if (v) {\n                                        for (; l;) {\n                                            for (a = t; a = a[l];)\n                                                if (b ? a.nodeName.toLowerCase() === d : 1 === a.nodeType) return !1;\n                                            c = l = \"only\" === h && !c && \"nextSibling\"\n                                        }\n                                        return !0\n                                    }\n                                    if (c = [y ? u.firstChild : u.lastChild], y && f) {\n                                        for (p = (s = (r = (i = (o = (a = u)[E] || (a[E] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] || [])[0] === N && r[1]) && r[2], a = s && u.childNodes[s]; a = ++s && a && a[l] || (p = s = 0) || c.pop();)\n                                            if (1 === a.nodeType && ++p && a === t) { i[h] = [N, s, p]; break }\n                                    } else if (f && (p = s = (r = (i = (o = (a = t)[E] || (a[E] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] || [])[0] === N && r[1]), !1 === p)\n                                        for (;\n                                            (a = ++s && a && a[l] || (p = s = 0) || c.pop()) && ((b ? a.nodeName.toLowerCase() !== d : 1 !== a.nodeType) || !++p || (f && ((i = (o = a[E] || (a[E] = {}))[a.uniqueID] || (o[a.uniqueID] = {}))[h] = [N, p]), a !== t)););\n                                    return (p -= g) === m || p % m == 0 && 0 <= p / m\n                                }\n                            }\n                        },\n                        PSEUDO: function (t, o) { var e, a = w.pseudos[t] || w.setFilters[t.toLowerCase()] || ot.error(\"unsupported pseudo: \" + t); return a[E] ? a(o) : 1 < a.length ? (e = [t, t, \"\", o], w.setFilters.hasOwnProperty(t.toLowerCase()) ? st(function (t, e) { for (var n, r = a(t, o), i = r.length; i--;) t[n = P(t, r[i])] = !(e[n] = r[i]) }) : function (t) { return a(t, 0, e) }) : a }\n                    },\n                    pseudos: {\n                        not: st(function (t) {\n                            var r = [],\n                                i = [],\n                                s = f(t.replace(M, \"$1\"));\n                            return s[E] ? st(function (t, e, n, r) { for (var i, o = s(t, null, r, []), a = t.length; a--;)(i = o[a]) && (t[a] = !(e[a] = i)) }) : function (t, e, n) { return r[0] = t, s(r, null, n, i), r[0] = null, !i.pop() }\n                        }),\n                        has: st(function (e) { return function (t) { return 0 < ot(e, t).length } }),\n                        contains: st(function (e) {\n                            return e = e.replace(et, d),\n                                function (t) { return -1 < (t.textContent || t.innerText || o(t)).indexOf(e) }\n                        }),\n                        lang: st(function (n) {\n                            return Q.test(n || \"\") || ot.error(\"unsupported lang: \" + n), n = n.replace(et, d).toLowerCase(),\n                                function (t) {\n                                    var e;\n                                    do { if (e = T ? t.lang : t.getAttribute(\"xml:lang\") || t.getAttribute(\"lang\")) return (e = e.toLowerCase()) === n || 0 === e.indexOf(n + \"-\") } while ((t = t.parentNode) && 1 === t.nodeType);\n                                    return !1\n                                }\n                        }),\n                        target: function (t) { var e = n.location && n.location.hash; return e && e.slice(1) === t.id },\n                        root: function (t) { return t === s },\n                        focus: function (t) { return t === k.activeElement && (!k.hasFocus || k.hasFocus()) && !!(t.type || t.href || ~t.tabIndex) },\n                        enabled: pt(!1),\n                        disabled: pt(!0),\n                        checked: function (t) { var e = t.nodeName.toLowerCase(); return \"input\" === e && !!t.checked || \"option\" === e && !!t.selected },\n                        selected: function (t) { return t.parentNode && t.parentNode.selectedIndex, !0 === t.selected },\n                        empty: function (t) {\n                            for (t = t.firstChild; t; t = t.nextSibling)\n                                if (t.nodeType < 6) return !1;\n                            return !0\n                        },\n                        parent: function (t) { return !w.pseudos.empty(t) },\n                        header: function (t) { return J.test(t.nodeName) },\n                        input: function (t) { return G.test(t.nodeName) },\n                        button: function (t) { var e = t.nodeName.toLowerCase(); return \"input\" === e && \"button\" === t.type || \"button\" === e },\n                        text: function (t) { var e; return \"input\" === t.nodeName.toLowerCase() && \"text\" === t.type && (null == (e = t.getAttribute(\"type\")) || \"text\" === e.toLowerCase()) },\n                        first: ht(function () { return [0] }),\n                        last: ht(function (t, e) { return [e - 1] }),\n                        eq: ht(function (t, e, n) { return [n < 0 ? n + e : n] }),\n                        even: ht(function (t, e) { for (var n = 0; n < e; n += 2) t.push(n); return t }),\n                        odd: ht(function (t, e) { for (var n = 1; n < e; n += 2) t.push(n); return t }),\n                        lt: ht(function (t, e, n) { for (var r = n < 0 ? n + e : n; 0 <= --r;) t.push(r); return t }),\n                        gt: ht(function (t, e, n) { for (var r = n < 0 ? n + e : n; ++r < e;) t.push(r); return t })\n                    }\n                }).pseudos.nth = w.pseudos.eq, { radio: !0, checkbox: !0, file: !0, password: !0, image: !0 }) w.pseudos[t] = dt(t);\n                for (t in { submit: !0, reset: !0 }) w.pseudos[t] = ft(t);\n\n                function gt() { }\n\n                function vt(t) { for (var e = 0, n = t.length, r = \"\"; e < n; e++) r += t[e].value; return r }\n\n                function yt(s, t, e) {\n                    var c = t.dir,\n                        l = t.next,\n                        u = l || c,\n                        d = e && \"parentNode\" === u,\n                        f = r++;\n                    return t.first ? function (t, e, n) {\n                        for (; t = t[c];)\n                            if (1 === t.nodeType || d) return s(t, e, n)\n                    } : function (t, e, n) {\n                        var r, i, o, a = [N, f];\n                        if (n) {\n                            for (; t = t[c];)\n                                if ((1 === t.nodeType || d) && s(t, e, n)) return !0\n                        } else\n                            for (; t = t[c];)\n                                if (1 === t.nodeType || d)\n                                    if (i = (o = t[E] || (t[E] = {}))[t.uniqueID] || (o[t.uniqueID] = {}), l && l === t.nodeName.toLowerCase()) t = t[c] || t;\n                                    else { if ((r = i[u]) && r[0] === N && r[1] === f) return a[2] = r[2]; if ((i[u] = a)[2] = s(t, e, n)) return !0 }\n                    }\n                }\n\n                function bt(i) {\n                    return 1 < i.length ? function (t, e, n) {\n                        for (var r = i.length; r--;)\n                            if (!i[r](t, e, n)) return !1;\n                        return !0\n                    } : i[0]\n                }\n\n                function wt(t, e, n, r, i) { for (var o, a = [], s = 0, c = t.length, l = null != e; s < c; s++)(o = t[s]) && (n && !n(o, r, i) || (a.push(o), l && e.push(s))); return a }\n\n                function xt(p, h, m, g, v, t) {\n                    return g && !g[E] && (g = xt(g)), v && !v[E] && (v = xt(v, t)), st(function (t, e, n, r) {\n                        var i, o, a, s = [],\n                            c = [],\n                            l = e.length,\n                            u = t || function (t, e, n) { for (var r = 0, i = e.length; r < i; r++) ot(t, e[r], n); return n }(h || \"*\", n.nodeType ? [n] : n, []),\n                            d = !p || !t && h ? u : wt(u, s, p, n, r),\n                            f = m ? v || (t ? p : l || g) ? [] : e : d;\n                        if (m && m(d, f, n, r), g)\n                            for (i = wt(f, c), g(i, [], n, r), o = i.length; o--;)(a = i[o]) && (f[c[o]] = !(d[c[o]] = a));\n                        if (t) {\n                            if (v || p) {\n                                if (v) {\n                                    for (i = [], o = f.length; o--;)(a = f[o]) && i.push(d[o] = a);\n                                    v(null, f = [], i, r)\n                                }\n                                for (o = f.length; o--;)(a = f[o]) && -1 < (i = v ? P(t, a) : s[o]) && (t[i] = !(e[i] = a))\n                            }\n                        } else f = wt(f === e ? f.splice(l, f.length) : f), v ? v(null, e, f, r) : O.apply(e, f)\n                    })\n                }\n\n                function Ct(t) {\n                    for (var i, e, n, r = t.length, o = w.relative[t[0].type], a = o || w.relative[\" \"], s = o ? 1 : 0, c = yt(function (t) { return t === i }, a, !0), l = yt(function (t) { return -1 < P(i, t) }, a, !0), u = [function (t, e, n) { var r = !o && (n || e !== x) || ((i = e).nodeType ? c(t, e, n) : l(t, e, n)); return i = null, r }]; s < r; s++)\n                        if (e = w.relative[t[s].type]) u = [yt(bt(u), e)];\n                        else {\n                            if ((e = w.filter[t[s].type].apply(null, t[s].matches))[E]) { for (n = ++s; n < r && !w.relative[t[n].type]; n++); return xt(1 < s && bt(u), 1 < s && vt(t.slice(0, s - 1).concat({ value: \" \" === t[s - 2].type ? \"*\" : \"\" })).replace(M, \"$1\"), e, s < n && Ct(t.slice(s, n)), n < r && Ct(t = t.slice(n)), n < r && vt(t)) }\n                            u.push(e)\n                        }\n                    return bt(u)\n                }\n                return gt.prototype = w.filters = w.pseudos, w.setFilters = new gt, h = ot.tokenize = function (t, e) { var n, r, i, o, a, s, c, l = D[t + \" \"]; if (l) return e ? 0 : l.slice(0); for (a = t, s = [], c = w.preFilter; a;) { for (o in n && !(r = $.exec(a)) || (r && (a = a.slice(r[0].length) || a), s.push(i = [])), n = !1, (r = U.exec(a)) && (n = r.shift(), i.push({ value: n, type: r[0].replace(M, \" \") }), a = a.slice(n.length)), w.filter) !(r = Y[o].exec(a)) || c[o] && !(r = c[o](r)) || (n = r.shift(), i.push({ value: n, type: o, matches: r }), a = a.slice(n.length)); if (!n) break } return e ? a.length : a ? ot.error(t) : D(t, s).slice(0) }, f = ot.compile = function (t, e) {\n                    var n, r = [],\n                        i = [],\n                        o = A[t + \" \"];\n                    if (!o) {\n                        for (n = (e = e || h(t)).length; n--;)(o = Ct(e[n]))[E] ? r.push(o) : i.push(o);\n                        (o = A(t, function (g, v) {\n                            function t(t, e, n, r, i) {\n                                var o, a, s, c = 0,\n                                    l = \"0\",\n                                    u = t && [],\n                                    d = [],\n                                    f = x,\n                                    p = t || b && w.find.TAG(\"*\", i),\n                                    h = N += null == f ? 1 : Math.random() || .1,\n                                    m = p.length;\n                                for (i && (x = e === k || e || i); l !== m && null != (o = p[l]); l++) {\n                                    if (b && o) {\n                                        for (a = 0, e || o.ownerDocument === k || (C(o), n = !T); s = g[a++];)\n                                            if (s(o, e || k, n)) { r.push(o); break }\n                                        i && (N = h)\n                                    }\n                                    y && ((o = !s && o) && c--, t && u.push(o))\n                                }\n                                if (c += l, y && l !== c) {\n                                    for (a = 0; s = v[a++];) s(u, d, e, n);\n                                    if (t) {\n                                        if (0 < c)\n                                            for (; l--;) u[l] || d[l] || (d[l] = _.call(r));\n                                        d = wt(d)\n                                    }\n                                    O.apply(r, d), i && !t && 0 < d.length && 1 < c + v.length && ot.uniqueSort(r)\n                                }\n                                return i && (N = h, x = f), u\n                            }\n                            var y = 0 < v.length,\n                                b = 0 < g.length;\n                            return y ? st(t) : t\n                        }(i, r))).selector = t\n                    }\n                    return o\n                }, m = ot.select = function (t, e, n, r) {\n                    var i, o, a, s, c, l = \"function\" == typeof t && t,\n                        u = !r && h(t = l.selector || t);\n                    if (n = n || [], 1 === u.length) {\n                        if (2 < (o = u[0] = u[0].slice(0)).length && \"ID\" === (a = o[0]).type && p.getById && 9 === e.nodeType && T && w.relative[o[1].type]) {\n                            if (!(e = (w.find.ID(a.matches[0].replace(et, d), e) || [])[0])) return n;\n                            l && (e = e.parentNode), t = t.slice(o.shift().value.length)\n                        }\n                        for (i = Y.needsContext.test(t) ? 0 : o.length; i-- && (a = o[i], !w.relative[s = a.type]);)\n                            if ((c = w.find[s]) && (r = c(a.matches[0].replace(et, d), tt.test(o[0].type) && mt(e.parentNode) || e))) { if (o.splice(i, 1), !(t = r.length && vt(o))) return O.apply(n, r), n; break }\n                    }\n                    return (l || f(t, u))(r, e, !T, n, !e || tt.test(t) && mt(e.parentNode) || e), n\n                }, p.sortStable = E.split(\"\").sort(L).join(\"\") === E, p.detectDuplicates = !!l, C(), p.sortDetached = ct(function (t) { return 1 & t.compareDocumentPosition(k.createElement(\"fieldset\")) }), ct(function (t) { return t.innerHTML = \"<a href='#'></a>\", \"#\" === t.firstChild.getAttribute(\"href\") }) || lt(\"type|href|height|width\", function (t, e, n) { if (!n) return t.getAttribute(e, \"type\" === e.toLowerCase() ? 1 : 2) }), p.attributes && ct(function (t) { return t.innerHTML = \"<input/>\", t.firstChild.setAttribute(\"value\", \"\"), \"\" === t.firstChild.getAttribute(\"value\") }) || lt(\"value\", function (t, e, n) { if (!n && \"input\" === t.nodeName.toLowerCase()) return t.defaultValue }), ct(function (t) { return null == t.getAttribute(\"disabled\") }) || lt(H, function (t, e, n) { var r; if (!n) return !0 === t[e] ? e.toLowerCase() : (r = t.getAttributeNode(e)) && r.specified ? r.value : null }), ot\n            }(h);\n            w.find = k, w.expr = k.selectors, w.expr[\":\"] = w.expr.pseudos, w.uniqueSort = w.unique = k.uniqueSort, w.text = k.getText, w.isXMLDoc = k.isXML, w.contains = k.contains, w.escapeSelector = k.escape;\n\n            function T(t, e, n) {\n                for (var r = [], i = void 0 !== n;\n                    (t = t[e]) && 9 !== t.nodeType;)\n                    if (1 === t.nodeType) {\n                        if (i && w(t).is(n)) break;\n                        r.push(t)\n                    }\n                return r\n            }\n\n            function E(t, e) { for (var n = []; t; t = t.nextSibling) 1 === t.nodeType && t !== e && n.push(t); return n }\n            var N = w.expr.match.needsContext,\n                S = /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i,\n                D = /^.[^:#\\[\\.,]*$/;\n\n            function A(t, n, r) {\n                if (w.isFunction(n)) return w.grep(t, function (t, e) { return !!n.call(t, e, t) !== r });\n                if (n.nodeType) return w.grep(t, function (t) { return t === n !== r });\n                if (\"string\" == typeof n) {\n                    if (D.test(n)) return w.filter(n, t, r);\n                    n = w.filter(n, t)\n                }\n                return w.grep(t, function (t) { return -1 < i.call(n, t) !== r && 1 === t.nodeType })\n            }\n            w.filter = function (t, e, n) { var r = e[0]; return n && (t = \":not(\" + t + \")\"), 1 === e.length && 1 === r.nodeType ? w.find.matchesSelector(r, t) ? [r] : [] : w.find.matches(t, w.grep(e, function (t) { return 1 === t.nodeType })) }, w.fn.extend({\n                find: function (t) {\n                    var e, n, r = this.length,\n                        i = this;\n                    if (\"string\" != typeof t) return this.pushStack(w(t).filter(function () {\n                        for (e = 0; e < r; e++)\n                            if (w.contains(i[e], this)) return !0\n                    }));\n                    for (n = this.pushStack([]), e = 0; e < r; e++) w.find(t, i[e], n);\n                    return 1 < r ? w.uniqueSort(n) : n\n                },\n                filter: function (t) { return this.pushStack(A(this, t || [], !1)) },\n                not: function (t) { return this.pushStack(A(this, t || [], !0)) },\n                is: function (t) { return !!A(this, \"string\" == typeof t && N.test(t) ? w(t) : t || [], !1).length }\n            });\n            var L, j = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/;\n            (w.fn.init = function (t, e, n) {\n                var r, i;\n                if (!t) return this;\n                if (n = n || L, \"string\" != typeof t) return t.nodeType ? (this[0] = t, this.length = 1, this) : w.isFunction(t) ? void 0 !== n.ready ? n.ready(t) : t(w) : w.makeArray(t, this);\n                if (!(r = \"<\" === t[0] && \">\" === t[t.length - 1] && 3 <= t.length ? [null, t, null] : j.exec(t)) || !r[1] && e) return !e || e.jquery ? (e || n).find(t) : this.constructor(e).find(t);\n                if (r[1]) {\n                    if (e = e instanceof w ? e[0] : e, w.merge(this, w.parseHTML(r[1], e && e.nodeType ? e.ownerDocument || e : m, !0)), S.test(r[1]) && w.isPlainObject(e))\n                        for (r in e) w.isFunction(this[r]) ? this[r](e[r]) : this.attr(r, e[r]);\n                    return this\n                }\n                return (i = m.getElementById(r[2])) && (this[0] = i, this.length = 1), this\n            }).prototype = w.fn, L = w(m);\n            var _ = /^(?:parents|prev(?:Until|All))/,\n                q = { children: !0, contents: !0, next: !0, prev: !0 };\n\n            function O(t, e) {\n                for (;\n                    (t = t[e]) && 1 !== t.nodeType;);\n                return t\n            }\n            w.fn.extend({\n                has: function (t) {\n                    var e = w(t, this),\n                        n = e.length;\n                    return this.filter(function () {\n                        for (var t = 0; t < n; t++)\n                            if (w.contains(this, e[t])) return !0\n                    })\n                },\n                closest: function (t, e) {\n                    var n, r = 0,\n                        i = this.length,\n                        o = [],\n                        a = \"string\" != typeof t && w(t);\n                    if (!N.test(t))\n                        for (; r < i; r++)\n                            for (n = this[r]; n && n !== e; n = n.parentNode)\n                                if (n.nodeType < 11 && (a ? -1 < a.index(n) : 1 === n.nodeType && w.find.matchesSelector(n, t))) { o.push(n); break }\n                    return this.pushStack(1 < o.length ? w.uniqueSort(o) : o)\n                },\n                index: function (t) { return t ? \"string\" == typeof t ? i.call(w(t), this[0]) : i.call(this, t.jquery ? t[0] : t) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1 },\n                add: function (t, e) { return this.pushStack(w.uniqueSort(w.merge(this.get(), w(t, e)))) },\n                addBack: function (t) { return this.add(null == t ? this.prevObject : this.prevObject.filter(t)) }\n            }), w.each({ parent: function (t) { var e = t.parentNode; return e && 11 !== e.nodeType ? e : null }, parents: function (t) { return T(t, \"parentNode\") }, parentsUntil: function (t, e, n) { return T(t, \"parentNode\", n) }, next: function (t) { return O(t, \"nextSibling\") }, prev: function (t) { return O(t, \"previousSibling\") }, nextAll: function (t) { return T(t, \"nextSibling\") }, prevAll: function (t) { return T(t, \"previousSibling\") }, nextUntil: function (t, e, n) { return T(t, \"nextSibling\", n) }, prevUntil: function (t, e, n) { return T(t, \"previousSibling\", n) }, siblings: function (t) { return E((t.parentNode || {}).firstChild, t) }, children: function (t) { return E(t.firstChild) }, contents: function (t) { return t.contentDocument || w.merge([], t.childNodes) } }, function (r, i) { w.fn[r] = function (t, e) { var n = w.map(this, i, t); return \"Until\" !== r.slice(-5) && (e = t), e && \"string\" == typeof e && (n = w.filter(e, n)), 1 < this.length && (q[r] || w.uniqueSort(n), _.test(r) && n.reverse()), this.pushStack(n) } });\n            var F = /\\S+/g;\n\n            function P(t) { return t }\n\n            function H(t) { throw t }\n\n            function z(t, e, n) { var r; try { t && w.isFunction(r = t.promise) ? r.call(t).done(e).fail(n) : t && w.isFunction(r = t.then) ? r.call(t, e, n) : e.call(void 0, t) } catch (t) { n.call(void 0, t) } }\n            w.Callbacks = function (r) {\n                r = \"string\" == typeof r ? function (t) { var n = {}; return w.each(t.match(F) || [], function (t, e) { n[e] = !0 }), n }(r) : w.extend({}, r);\n\n                function n() {\n                    for (o = r.once, e = i = !0; s.length; c = -1)\n                        for (t = s.shift(); ++c < a.length;) !1 === a[c].apply(t[0], t[1]) && r.stopOnFalse && (c = a.length, t = !1);\n                    r.memory || (t = !1), i = !1, o && (a = t ? [] : \"\")\n                }\n                var i, t, e, o, a = [],\n                    s = [],\n                    c = -1,\n                    l = { add: function () { return a && (t && !i && (c = a.length - 1, s.push(t)), function n(t) { w.each(t, function (t, e) { w.isFunction(e) ? r.unique && l.has(e) || a.push(e) : e && e.length && \"string\" !== w.type(e) && n(e) }) }(arguments), t && !i && n()), this }, remove: function () { return w.each(arguments, function (t, e) { for (var n; - 1 < (n = w.inArray(e, a, n));) a.splice(n, 1), n <= c && c-- }), this }, has: function (t) { return t ? -1 < w.inArray(t, a) : 0 < a.length }, empty: function () { return a = a && [], this }, disable: function () { return o = s = [], a = t = \"\", this }, disabled: function () { return !a }, lock: function () { return o = s = [], t || i || (a = t = \"\"), this }, locked: function () { return !!o }, fireWith: function (t, e) { return o || (e = [t, (e = e || []).slice ? e.slice() : e], s.push(e), i || n()), this }, fire: function () { return l.fireWith(this, arguments), this }, fired: function () { return !!e } };\n                return l\n            }, w.extend({\n                Deferred: function (t) {\n                    var o = [\n                        [\"notify\", \"progress\", w.Callbacks(\"memory\"), w.Callbacks(\"memory\"), 2],\n                        [\"resolve\", \"done\", w.Callbacks(\"once memory\"), w.Callbacks(\"once memory\"), 0, \"resolved\"],\n                        [\"reject\", \"fail\", w.Callbacks(\"once memory\"), w.Callbacks(\"once memory\"), 1, \"rejected\"]\n                    ],\n                        i = \"pending\",\n                        a = {\n                            state: function () { return i },\n                            always: function () { return s.done(arguments).fail(arguments), this },\n                            catch: function (t) { return a.then(null, t) },\n                            pipe: function () {\n                                var i = arguments;\n                                return w.Deferred(function (r) {\n                                    w.each(o, function (t, e) {\n                                        var n = w.isFunction(i[e[4]]) && i[e[4]];\n                                        s[e[1]](function () {\n                                            var t = n && n.apply(this, arguments);\n                                            t && w.isFunction(t.promise) ? t.promise().progress(r.notify).done(r.resolve).fail(r.reject) : r[e[0] + \"With\"](this, n ? [t] : arguments)\n                                        })\n                                    }), i = null\n                                }).promise()\n                            },\n                            then: function (e, n, r) {\n                                var c = 0;\n\n                                function l(i, o, a, s) {\n                                    return function () {\n                                        function t() {\n                                            var t, e;\n                                            if (!(i < c)) {\n                                                if ((t = a.apply(n, r)) === o.promise()) throw new TypeError(\"Thenable self-resolution\");\n                                                e = t && (\"object\" == typeof t || \"function\" == typeof t) && t.then, w.isFunction(e) ? s ? e.call(t, l(c, o, P, s), l(c, o, H, s)) : (c++, e.call(t, l(c, o, P, s), l(c, o, H, s), l(c, o, P, o.notifyWith))) : (a !== P && (n = void 0, r = [t]), (s || o.resolveWith)(n, r))\n                                            }\n                                        }\n                                        var n = this,\n                                            r = arguments,\n                                            e = s ? t : function () { try { t() } catch (t) { w.Deferred.exceptionHook && w.Deferred.exceptionHook(t, e.stackTrace), c <= i + 1 && (a !== H && (n = void 0, r = [t]), o.rejectWith(n, r)) } };\n                                        i ? e() : (w.Deferred.getStackHook && (e.stackTrace = w.Deferred.getStackHook()), h.setTimeout(e))\n                                    }\n                                }\n                                return w.Deferred(function (t) { o[0][3].add(l(0, t, w.isFunction(r) ? r : P, t.notifyWith)), o[1][3].add(l(0, t, w.isFunction(e) ? e : P)), o[2][3].add(l(0, t, w.isFunction(n) ? n : H)) }).promise()\n                            },\n                            promise: function (t) { return null != t ? w.extend(t, a) : a }\n                        },\n                        s = {};\n                    return w.each(o, function (t, e) {\n                        var n = e[2],\n                            r = e[5];\n                        a[e[1]] = n.add, r && n.add(function () { i = r }, o[3 - t][2].disable, o[0][2].lock), n.add(e[3].fire), s[e[0]] = function () { return s[e[0] + \"With\"](this === s ? void 0 : this, arguments), this }, s[e[0] + \"With\"] = n.fireWith\n                    }), a.promise(s), t && t.call(s, s), s\n                },\n                when: function (t) {\n                    function e(e) { return function (t) { i[e] = this, o[e] = 1 < arguments.length ? s.call(arguments) : t, --n || a.resolveWith(i, o) } }\n                    var n = arguments.length,\n                        r = n,\n                        i = Array(r),\n                        o = s.call(arguments),\n                        a = w.Deferred();\n                    if (n <= 1 && (z(t, a.done(e(r)).resolve, a.reject), \"pending\" === a.state() || w.isFunction(o[r] && o[r].then))) return a.then();\n                    for (; r--;) z(o[r], e(r), a.reject);\n                    return a.promise()\n                }\n            });\n            var I = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n            w.Deferred.exceptionHook = function (t, e) { h.console && h.console.warn && t && I.test(t.name) && h.console.warn(\"jQuery.Deferred exception: \" + t.message, t.stack, e) };\n            var R = w.Deferred();\n\n            function W() { m.removeEventListener(\"DOMContentLoaded\", W), h.removeEventListener(\"load\", W), w.ready() }\n            w.fn.ready = function (t) { return R.then(t), this }, w.extend({\n                isReady: !1,\n                readyWait: 1,\n                holdReady: function (t) { t ? w.readyWait++ : w.ready(!0) },\n                ready: function (t) {\n                    (!0 === t ? --w.readyWait : w.isReady) || (w.isReady = !0) !== t && 0 < --w.readyWait || R.resolveWith(m, [w])\n                }\n            }), w.ready.then = R.then, \"complete\" === m.readyState || \"loading\" !== m.readyState && !m.documentElement.doScroll ? h.setTimeout(w.ready) : (m.addEventListener(\"DOMContentLoaded\", W), h.addEventListener(\"load\", W));\n\n            function B(t) { return 1 === t.nodeType || 9 === t.nodeType || !+t.nodeType }\n            var M = function (t, e, n, r, i, o, a) {\n                var s = 0,\n                    c = t.length,\n                    l = null == n;\n                if (\"object\" === w.type(n))\n                    for (s in i = !0, n) M(t, e, s, n[s], !0, o, a);\n                else if (void 0 !== r && (i = !0, w.isFunction(r) || (a = !0), l && (e = a ? (e.call(t, r), null) : (l = e, function (t, e, n) { return l.call(w(t), n) })), e))\n                    for (; s < c; s++) e(t[s], n, a ? r : r.call(t[s], s, e(t[s], n)));\n                return i ? t : l ? e.call(t) : c ? e(t[0], n) : o\n            };\n\n            function $() { this.expando = w.expando + $.uid++ }\n            $.uid = 1, $.prototype = {\n                cache: function (t) { var e = t[this.expando]; return e || (e = {}, B(t) && (t.nodeType ? t[this.expando] = e : Object.defineProperty(t, this.expando, { value: e, configurable: !0 }))), e },\n                set: function (t, e, n) {\n                    var r, i = this.cache(t);\n                    if (\"string\" == typeof e) i[w.camelCase(e)] = n;\n                    else\n                        for (r in e) i[w.camelCase(r)] = e[r];\n                    return i\n                },\n                get: function (t, e) { return void 0 === e ? this.cache(t) : t[this.expando] && t[this.expando][w.camelCase(e)] },\n                access: function (t, e, n) { return void 0 === e || e && \"string\" == typeof e && void 0 === n ? this.get(t, e) : (this.set(t, e, n), void 0 !== n ? n : e) },\n                remove: function (t, e) {\n                    var n, r = t[this.expando];\n                    if (void 0 !== r) {\n                        if (void 0 !== e) { n = (e = w.isArray(e) ? e.map(w.camelCase) : (e = w.camelCase(e)) in r ? [e] : e.match(F) || []).length; for (; n--;) delete r[e[n]] }\n                        void 0 !== e && !w.isEmptyObject(r) || (t.nodeType ? t[this.expando] = void 0 : delete t[this.expando])\n                    }\n                },\n                hasData: function (t) { var e = t[this.expando]; return void 0 !== e && !w.isEmptyObject(e) }\n            };\n            var U = new $,\n                V = new $,\n                X = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n                Q = /[A-Z]/g;\n\n            function Y(t, e, n) {\n                var r;\n                if (void 0 === n && 1 === t.nodeType)\n                    if (r = \"data-\" + e.replace(Q, \"-$&\").toLowerCase(), \"string\" == typeof (n = t.getAttribute(r))) {\n                        try { n = \"true\" === n || \"false\" !== n && (\"null\" === n ? null : +n + \"\" === n ? +n : X.test(n) ? JSON.parse(n) : n) } catch (t) { }\n                        V.set(t, e, n)\n                    } else n = void 0;\n                return n\n            }\n            w.extend({ hasData: function (t) { return V.hasData(t) || U.hasData(t) }, data: function (t, e, n) { return V.access(t, e, n) }, removeData: function (t, e) { V.remove(t, e) }, _data: function (t, e, n) { return U.access(t, e, n) }, _removeData: function (t, e) { U.remove(t, e) } }), w.fn.extend({\n                data: function (n, t) {\n                    var e, r, i, o = this[0],\n                        a = o && o.attributes;\n                    if (void 0 !== n) return \"object\" == typeof n ? this.each(function () { V.set(this, n) }) : M(this, function (t) {\n                        var e;\n                        if (o && void 0 === t) return void 0 !== (e = V.get(o, n)) ? e : void 0 !== (e = Y(o, n)) ? e : void 0;\n                        this.each(function () { V.set(this, n, t) })\n                    }, null, t, 1 < arguments.length, null, !0);\n                    if (this.length && (i = V.get(o), 1 === o.nodeType && !U.get(o, \"hasDataAttrs\"))) {\n                        for (e = a.length; e--;) a[e] && 0 === (r = a[e].name).indexOf(\"data-\") && (r = w.camelCase(r.slice(5)), Y(o, r, i[r]));\n                        U.set(o, \"hasDataAttrs\", !0)\n                    }\n                    return i\n                },\n                removeData: function (t) { return this.each(function () { V.remove(this, t) }) }\n            }), w.extend({\n                queue: function (t, e, n) { var r; if (t) return e = (e || \"fx\") + \"queue\", r = U.get(t, e), n && (!r || w.isArray(n) ? r = U.access(t, e, w.makeArray(n)) : r.push(n)), r || [] },\n                dequeue: function (t, e) {\n                    e = e || \"fx\";\n                    var n = w.queue(t, e),\n                        r = n.length,\n                        i = n.shift(),\n                        o = w._queueHooks(t, e);\n                    \"inprogress\" === i && (i = n.shift(), r--), i && (\"fx\" === e && n.unshift(\"inprogress\"), delete o.stop, i.call(t, function () { w.dequeue(t, e) }, o)), !r && o && o.empty.fire()\n                },\n                _queueHooks: function (t, e) { var n = e + \"queueHooks\"; return U.get(t, n) || U.access(t, n, { empty: w.Callbacks(\"once memory\").add(function () { U.remove(t, [e + \"queue\", n]) }) }) }\n            }), w.fn.extend({\n                queue: function (e, n) {\n                    var t = 2;\n                    return \"string\" != typeof e && (n = e, e = \"fx\", t--), arguments.length < t ? w.queue(this[0], e) : void 0 === n ? this : this.each(function () {\n                        var t = w.queue(this, e, n);\n                        w._queueHooks(this, e), \"fx\" === e && \"inprogress\" !== t[0] && w.dequeue(this, e)\n                    })\n                },\n                dequeue: function (t) { return this.each(function () { w.dequeue(this, t) }) },\n                clearQueue: function (t) { return this.queue(t || \"fx\", []) },\n                promise: function (t, e) {\n                    function n() { --i || o.resolveWith(a, [a]) }\n                    var r, i = 1,\n                        o = w.Deferred(),\n                        a = this,\n                        s = this.length;\n                    for (\"string\" != typeof t && (e = t, t = void 0), t = t || \"fx\"; s--;)(r = U.get(a[s], t + \"queueHooks\")) && r.empty && (i++, r.empty.add(n));\n                    return n(), o.promise(e)\n                }\n            });\n\n            function G(t, e) { return \"none\" === (t = e || t).style.display || \"\" === t.style.display && w.contains(t.ownerDocument, t) && \"none\" === w.css(t, \"display\") }\n\n            function J(t, e, n, r) { var i, o, a = {}; for (o in e) a[o] = t.style[o], t.style[o] = e[o]; for (o in i = n.apply(t, r || []), e) t.style[o] = a[o]; return i }\n            var K = /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/.source,\n                Z = new RegExp(\"^(?:([+-])=|)(\" + K + \")([a-z%]*)$\", \"i\"),\n                tt = [\"Top\", \"Right\", \"Bottom\", \"Left\"];\n            var et = {};\n\n            function nt(t, e) { for (var n, r, i, o, a, s, c, l = [], u = 0, d = t.length; u < d; u++)(r = t[u]).style && (n = r.style.display, e ? (\"none\" === n && (l[u] = U.get(r, \"display\") || null, l[u] || (r.style.display = \"\")), \"\" === r.style.display && G(r) && (l[u] = (c = a = o = void 0, a = (i = r).ownerDocument, s = i.nodeName, (c = et[s]) || (o = a.body.appendChild(a.createElement(s)), c = w.css(o, \"display\"), o.parentNode.removeChild(o), \"none\" === c && (c = \"block\"), et[s] = c)))) : \"none\" !== n && (l[u] = \"none\", U.set(r, \"display\", n))); for (u = 0; u < d; u++) null != l[u] && (t[u].style.display = l[u]); return t }\n            w.fn.extend({ show: function () { return nt(this, !0) }, hide: function () { return nt(this) }, toggle: function (t) { return \"boolean\" == typeof t ? t ? this.show() : this.hide() : this.each(function () { G(this) ? w(this).show() : w(this).hide() }) } });\n            var rt = /^(?:checkbox|radio)$/i,\n                it = /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i,\n                ot = /^$|\\/(?:java|ecma)script/i,\n                at = { option: [1, \"<select multiple='multiple'>\", \"</select>\"], thead: [1, \"<table>\", \"</table>\"], col: [2, \"<table><colgroup>\", \"</colgroup></table>\"], tr: [2, \"<table><tbody>\", \"</tbody></table>\"], td: [3, \"<table><tbody><tr>\", \"</tr></tbody></table>\"], _default: [0, \"\", \"\"] };\n\n            function st(t, e) { var n = void 0 !== t.getElementsByTagName ? t.getElementsByTagName(e || \"*\") : void 0 !== t.querySelectorAll ? t.querySelectorAll(e || \"*\") : []; return void 0 === e || e && w.nodeName(t, e) ? w.merge([t], n) : n }\n\n            function ct(t, e) { for (var n = 0, r = t.length; n < r; n++) U.set(t[n], \"globalEval\", !e || U.get(e[n], \"globalEval\")) }\n            at.optgroup = at.option, at.tbody = at.tfoot = at.colgroup = at.caption = at.thead, at.th = at.td;\n            var lt, ut, dt = /<|&#?\\w+;/;\n\n            function ft(t, e, n, r, i) {\n                for (var o, a, s, c, l, u, d = e.createDocumentFragment(), f = [], p = 0, h = t.length; p < h; p++)\n                    if ((o = t[p]) || 0 === o)\n                        if (\"object\" === w.type(o)) w.merge(f, o.nodeType ? [o] : o);\n                        else if (dt.test(o)) {\n                            for (a = a || d.appendChild(e.createElement(\"div\")), s = (it.exec(o) || [\"\", \"\"])[1].toLowerCase(), c = at[s] || at._default, a.innerHTML = c[1] + w.htmlPrefilter(o) + c[2], u = c[0]; u--;) a = a.lastChild;\n                            w.merge(f, a.childNodes), (a = d.firstChild).textContent = \"\"\n                        } else f.push(e.createTextNode(o));\n                for (d.textContent = \"\", p = 0; o = f[p++];)\n                    if (r && -1 < w.inArray(o, r)) i && i.push(o);\n                    else if (l = w.contains(o.ownerDocument, o), a = st(d.appendChild(o), \"script\"), l && ct(a), n)\n                        for (u = 0; o = a[u++];) ot.test(o.type || \"\") && n.push(o);\n                return d\n            }\n            lt = m.createDocumentFragment().appendChild(m.createElement(\"div\")), (ut = m.createElement(\"input\")).setAttribute(\"type\", \"radio\"), ut.setAttribute(\"checked\", \"checked\"), ut.setAttribute(\"name\", \"t\"), lt.appendChild(ut), y.checkClone = lt.cloneNode(!0).cloneNode(!0).lastChild.checked, lt.innerHTML = \"<textarea>x</textarea>\", y.noCloneChecked = !!lt.cloneNode(!0).lastChild.defaultValue;\n            var pt = m.documentElement,\n                ht = /^key/,\n                mt = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n                gt = /^([^.]*)(?:\\.(.+)|)/;\n\n            function vt() { return !0 }\n\n            function yt() { return !1 }\n\n            function bt() { try { return m.activeElement } catch (t) { } }\n\n            function wt(t, e, n, r, i, o) {\n                var a, s;\n                if (\"object\" == typeof e) { for (s in \"string\" != typeof n && (r = r || n, n = void 0), e) wt(t, s, n, r, e[s], o); return t }\n                if (null == r && null == i ? (i = n, r = n = void 0) : null == i && (\"string\" == typeof n ? (i = r, r = void 0) : (i = r, r = n, n = void 0)), !1 === i) i = yt;\n                else if (!i) return t;\n                return 1 === o && (a = i, (i = function (t) { return w().off(t), a.apply(this, arguments) }).guid = a.guid || (a.guid = w.guid++)), t.each(function () { w.event.add(this, e, i, r, n) })\n            }\n            w.event = {\n                global: {},\n                add: function (e, t, n, r, i) {\n                    var o, a, s, c, l, u, d, f, p, h, m, g = U.get(e);\n                    if (g)\n                        for (n.handler && (n = (o = n).handler, i = o.selector), i && w.find.matchesSelector(pt, i), n.guid || (n.guid = w.guid++), (c = g.events) || (c = g.events = {}), (a = g.handle) || (a = g.handle = function (t) { return void 0 !== w && w.event.triggered !== t.type ? w.event.dispatch.apply(e, arguments) : void 0 }), l = (t = (t || \"\").match(F) || [\"\"]).length; l--;) p = m = (s = gt.exec(t[l]) || [])[1], h = (s[2] || \"\").split(\".\").sort(), p && (d = w.event.special[p] || {}, p = (i ? d.delegateType : d.bindType) || p, d = w.event.special[p] || {}, u = w.extend({ type: p, origType: m, data: r, handler: n, guid: n.guid, selector: i, needsContext: i && w.expr.match.needsContext.test(i), namespace: h.join(\".\") }, o), (f = c[p]) || ((f = c[p] = []).delegateCount = 0, d.setup && !1 !== d.setup.call(e, r, h, a) || e.addEventListener && e.addEventListener(p, a)), d.add && (d.add.call(e, u), u.handler.guid || (u.handler.guid = n.guid)), i ? f.splice(f.delegateCount++, 0, u) : f.push(u), w.event.global[p] = !0)\n                },\n                remove: function (t, e, n, r, i) {\n                    var o, a, s, c, l, u, d, f, p, h, m, g = U.hasData(t) && U.get(t);\n                    if (g && (c = g.events)) {\n                        for (l = (e = (e || \"\").match(F) || [\"\"]).length; l--;)\n                            if (p = m = (s = gt.exec(e[l]) || [])[1], h = (s[2] || \"\").split(\".\").sort(), p) {\n                                for (d = w.event.special[p] || {}, f = c[p = (r ? d.delegateType : d.bindType) || p] || [], s = s[2] && new RegExp(\"(^|\\\\.)\" + h.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\"), a = o = f.length; o--;) u = f[o], !i && m !== u.origType || n && n.guid !== u.guid || s && !s.test(u.namespace) || r && r !== u.selector && (\"**\" !== r || !u.selector) || (f.splice(o, 1), u.selector && f.delegateCount--, d.remove && d.remove.call(t, u));\n                                a && !f.length && (d.teardown && !1 !== d.teardown.call(t, h, g.handle) || w.removeEvent(t, p, g.handle), delete c[p])\n                            } else\n                                for (p in c) w.event.remove(t, p + e[l], n, r, !0);\n                        w.isEmptyObject(c) && U.remove(t, \"handle events\")\n                    }\n                },\n                dispatch: function (t) {\n                    var e, n, r, i, o, a, s = w.event.fix(t),\n                        c = new Array(arguments.length),\n                        l = (U.get(this, \"events\") || {})[s.type] || [],\n                        u = w.event.special[s.type] || {};\n                    for (c[0] = s, e = 1; e < arguments.length; e++) c[e] = arguments[e];\n                    if (s.delegateTarget = this, !u.preDispatch || !1 !== u.preDispatch.call(this, s)) {\n                        for (a = w.event.handlers.call(this, s, l), e = 0;\n                            (i = a[e++]) && !s.isPropagationStopped();)\n                            for (s.currentTarget = i.elem, n = 0;\n                                (o = i.handlers[n++]) && !s.isImmediatePropagationStopped();) s.rnamespace && !s.rnamespace.test(o.namespace) || (s.handleObj = o, s.data = o.data, void 0 !== (r = ((w.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, c)) && !1 === (s.result = r) && (s.preventDefault(), s.stopPropagation()));\n                        return u.postDispatch && u.postDispatch.call(this, s), s.result\n                    }\n                },\n                handlers: function (t, e) {\n                    var n, r, i, o, a = [],\n                        s = e.delegateCount,\n                        c = t.target;\n                    if (s && c.nodeType && (\"click\" !== t.type || isNaN(t.button) || t.button < 1))\n                        for (; c !== this; c = c.parentNode || this)\n                            if (1 === c.nodeType && (!0 !== c.disabled || \"click\" !== t.type)) {\n                                for (r = [], n = 0; n < s; n++) void 0 === r[i = (o = e[n]).selector + \" \"] && (r[i] = o.needsContext ? -1 < w(i, this).index(c) : w.find(i, this, null, [c]).length), r[i] && r.push(o);\n                                r.length && a.push({ elem: c, handlers: r })\n                            }\n                    return s < e.length && a.push({ elem: this, handlers: e.slice(s) }), a\n                },\n                addProp: function (e, t) { Object.defineProperty(w.Event.prototype, e, { enumerable: !0, configurable: !0, get: w.isFunction(t) ? function () { if (this.originalEvent) return t(this.originalEvent) } : function () { if (this.originalEvent) return this.originalEvent[e] }, set: function (t) { Object.defineProperty(this, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) } }) },\n                fix: function (t) { return t[w.expando] ? t : new w.Event(t) },\n                special: { load: { noBubble: !0 }, focus: { trigger: function () { if (this !== bt() && this.focus) return this.focus(), !1 }, delegateType: \"focusin\" }, blur: { trigger: function () { if (this === bt() && this.blur) return this.blur(), !1 }, delegateType: \"focusout\" }, click: { trigger: function () { if (\"checkbox\" === this.type && this.click && w.nodeName(this, \"input\")) return this.click(), !1 }, _default: function (t) { return w.nodeName(t.target, \"a\") } }, beforeunload: { postDispatch: function (t) { void 0 !== t.result && t.originalEvent && (t.originalEvent.returnValue = t.result) } } }\n            }, w.removeEvent = function (t, e, n) { t.removeEventListener && t.removeEventListener(e, n) }, w.Event = function (t, e) {\n                if (!(this instanceof w.Event)) return new w.Event(t, e);\n                t && t.type ? (this.originalEvent = t, this.type = t.type, this.isDefaultPrevented = t.defaultPrevented || void 0 === t.defaultPrevented && !1 === t.returnValue ? vt : yt, this.target = t.target && 3 === t.target.nodeType ? t.target.parentNode : t.target, this.currentTarget = t.currentTarget, this.relatedTarget = t.relatedTarget) : this.type = t, e && w.extend(this, e), this.timeStamp = t && t.timeStamp || w.now(), this[w.expando] = !0\n            }, w.Event.prototype = {\n                constructor: w.Event,\n                isDefaultPrevented: yt,\n                isPropagationStopped: yt,\n                isImmediatePropagationStopped: yt,\n                isSimulated: !1,\n                preventDefault: function () {\n                    var t = this.originalEvent;\n                    this.isDefaultPrevented = vt, t && !this.isSimulated && t.preventDefault()\n                },\n                stopPropagation: function () {\n                    var t = this.originalEvent;\n                    this.isPropagationStopped = vt, t && !this.isSimulated && t.stopPropagation()\n                },\n                stopImmediatePropagation: function () {\n                    var t = this.originalEvent;\n                    this.isImmediatePropagationStopped = vt, t && !this.isSimulated && t.stopImmediatePropagation(), this.stopPropagation()\n                }\n            }, w.each({ altKey: !0, bubbles: !0, cancelable: !0, changedTouches: !0, ctrlKey: !0, detail: !0, eventPhase: !0, metaKey: !0, pageX: !0, pageY: !0, shiftKey: !0, view: !0, char: !0, charCode: !0, key: !0, keyCode: !0, button: !0, buttons: !0, clientX: !0, clientY: !0, offsetX: !0, offsetY: !0, pointerId: !0, pointerType: !0, screenX: !0, screenY: !0, targetTouches: !0, toElement: !0, touches: !0, which: function (t) { var e = t.button; return null == t.which && ht.test(t.type) ? null != t.charCode ? t.charCode : t.keyCode : !t.which && void 0 !== e && mt.test(t.type) ? 1 & e ? 1 : 2 & e ? 3 : 4 & e ? 2 : 0 : t.which } }, w.event.addProp), w.each({ mouseenter: \"mouseover\", mouseleave: \"mouseout\", pointerenter: \"pointerover\", pointerleave: \"pointerout\" }, function (t, i) {\n                w.event.special[t] = {\n                    delegateType: i,\n                    bindType: i,\n                    handle: function (t) {\n                        var e, n = t.relatedTarget,\n                            r = t.handleObj;\n                        return n && (n === this || w.contains(this, n)) || (t.type = r.origType, e = r.handler.apply(this, arguments), t.type = i), e\n                    }\n                }\n            }), w.fn.extend({ on: function (t, e, n, r) { return wt(this, t, e, n, r) }, one: function (t, e, n, r) { return wt(this, t, e, n, r, 1) }, off: function (t, e, n) { var r, i; if (t && t.preventDefault && t.handleObj) return r = t.handleObj, w(t.delegateTarget).off(r.namespace ? r.origType + \".\" + r.namespace : r.origType, r.selector, r.handler), this; if (\"object\" != typeof t) return !1 !== e && \"function\" != typeof e || (n = e, e = void 0), !1 === n && (n = yt), this.each(function () { w.event.remove(this, t, n, e) }); for (i in t) this.off(i, e, t[i]); return this } });\n            var xt = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\n                Ct = /<script|<style|<link/i,\n                kt = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n                Tt = /^true\\/(.*)/,\n                Et = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n            function Nt(t, e) { return w.nodeName(t, \"table\") && w.nodeName(11 !== e.nodeType ? e : e.firstChild, \"tr\") && t.getElementsByTagName(\"tbody\")[0] || t }\n\n            function St(t) { return t.type = (null !== t.getAttribute(\"type\")) + \"/\" + t.type, t }\n\n            function Dt(t) { var e = Tt.exec(t.type); return e ? t.type = e[1] : t.removeAttribute(\"type\"), t }\n\n            function At(t, e) {\n                var n, r, i, o, a, s, c, l;\n                if (1 === e.nodeType) {\n                    if (U.hasData(t) && (o = U.access(t), a = U.set(e, o), l = o.events))\n                        for (i in delete a.handle, a.events = {}, l)\n                            for (n = 0, r = l[i].length; n < r; n++) w.event.add(e, i, l[i][n]);\n                    V.hasData(t) && (s = V.access(t), c = w.extend({}, s), V.set(e, c))\n                }\n            }\n\n            function Lt(n, r, i, o) {\n                r = g.apply([], r);\n                var t, e, a, s, c, l, u = 0,\n                    d = n.length,\n                    f = d - 1,\n                    p = r[0],\n                    h = w.isFunction(p);\n                if (h || 1 < d && \"string\" == typeof p && !y.checkClone && kt.test(p)) return n.each(function (t) {\n                    var e = n.eq(t);\n                    h && (r[0] = p.call(this, t, e.html())), Lt(e, r, i, o)\n                });\n                if (d && (e = (t = ft(r, n[0].ownerDocument, !1, n, o)).firstChild, 1 === t.childNodes.length && (t = e), e || o)) {\n                    for (s = (a = w.map(st(t, \"script\"), St)).length; u < d; u++) c = t, u !== f && (c = w.clone(c, !0, !0), s && w.merge(a, st(c, \"script\"))), i.call(n[u], c, u);\n                    if (s)\n                        for (l = a[a.length - 1].ownerDocument, w.map(a, Dt), u = 0; u < s; u++) c = a[u], ot.test(c.type || \"\") && !U.access(c, \"globalEval\") && w.contains(l, c) && (c.src ? w._evalUrl && w._evalUrl(c.src) : b(c.textContent.replace(Et, \"\"), l))\n                }\n                return n\n            }\n\n            function jt(t, e, n) { for (var r, i = e ? w.filter(e, t) : t, o = 0; null != (r = i[o]); o++) n || 1 !== r.nodeType || w.cleanData(st(r)), r.parentNode && (n && w.contains(r.ownerDocument, r) && ct(st(r, \"script\")), r.parentNode.removeChild(r)); return t }\n            w.extend({\n                // CVE-2020-11022/11023 修复：原实现 t.replace(xt, \"<$1></$2>\") 会重写自闭合标签，\n                // 3.5.0 起原样返回。模板里的自闭合标签全是 SVG 子元素，别改回去。\n                htmlPrefilter: function (t) { return t },\n                clone: function (t, e, n) {\n                    var r, i, o, a, s, c, l, u = t.cloneNode(!0),\n                        d = w.contains(t.ownerDocument, t);\n                    if (!(y.noCloneChecked || 1 !== t.nodeType && 11 !== t.nodeType || w.isXMLDoc(t)))\n                        for (a = st(u), r = 0, i = (o = st(t)).length; r < i; r++) s = o[r], c = a[r], void 0, \"input\" === (l = c.nodeName.toLowerCase()) && rt.test(s.type) ? c.checked = s.checked : \"input\" !== l && \"textarea\" !== l || (c.defaultValue = s.defaultValue);\n                    if (e)\n                        if (n)\n                            for (o = o || st(t), a = a || st(u), r = 0, i = o.length; r < i; r++) At(o[r], a[r]);\n                        else At(t, u);\n                    return 0 < (a = st(u, \"script\")).length && ct(a, !d && st(t, \"script\")), u\n                },\n                cleanData: function (t) {\n                    for (var e, n, r, i = w.event.special, o = 0; void 0 !== (n = t[o]); o++)\n                        if (B(n)) {\n                            if (e = n[U.expando]) {\n                                if (e.events)\n                                    for (r in e.events) i[r] ? w.event.remove(n, r) : w.removeEvent(n, r, e.handle);\n                                n[U.expando] = void 0\n                            }\n                            n[V.expando] && (n[V.expando] = void 0)\n                        }\n                }\n            }), w.fn.extend({\n                detach: function (t) { return jt(this, t, !0) },\n                remove: function (t) { return jt(this, t) },\n                text: function (t) { return M(this, function (t) { return void 0 === t ? w.text(this) : this.empty().each(function () { 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = t) }) }, null, t, arguments.length) },\n                append: function () { return Lt(this, arguments, function (t) { 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || Nt(this, t).appendChild(t) }) },\n                prepend: function () {\n                    return Lt(this, arguments, function (t) {\n                        if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {\n                            var e = Nt(this, t);\n                            e.insertBefore(t, e.firstChild)\n                        }\n                    })\n                },\n                before: function () { return Lt(this, arguments, function (t) { this.parentNode && this.parentNode.insertBefore(t, this) }) },\n                after: function () { return Lt(this, arguments, function (t) { this.parentNode && this.parentNode.insertBefore(t, this.nextSibling) }) },\n                empty: function () { for (var t, e = 0; null != (t = this[e]); e++) 1 === t.nodeType && (w.cleanData(st(t, !1)), t.textContent = \"\"); return this },\n                clone: function (t, e) { return t = null != t && t, e = null == e ? t : e, this.map(function () { return w.clone(this, t, e) }) },\n                html: function (t) {\n                    return M(this, function (t) {\n                        var e = this[0] || {},\n                            n = 0,\n                            r = this.length;\n                        if (void 0 === t && 1 === e.nodeType) return e.innerHTML;\n                        if (\"string\" == typeof t && !Ct.test(t) && !at[(it.exec(t) || [\"\", \"\"])[1].toLowerCase()]) {\n                            t = w.htmlPrefilter(t);\n                            try {\n                                for (; n < r; n++) 1 === (e = this[n] || {}).nodeType && (w.cleanData(st(e, !1)), e.innerHTML = t);\n                                e = 0\n                            } catch (t) { }\n                        }\n                        e && this.empty().append(t)\n                    }, null, t, arguments.length)\n                },\n                replaceWith: function () {\n                    var n = [];\n                    return Lt(this, arguments, function (t) {\n                        var e = this.parentNode;\n                        w.inArray(this, n) < 0 && (w.cleanData(st(this)), e && e.replaceChild(t, this))\n                    }, n)\n                }\n            }), w.each({ appendTo: \"append\", prependTo: \"prepend\", insertBefore: \"before\", insertAfter: \"after\", replaceAll: \"replaceWith\" }, function (t, a) { w.fn[t] = function (t) { for (var e, n = [], r = w(t), i = r.length - 1, o = 0; o <= i; o++) e = o === i ? this : this.clone(!0), w(r[o])[a](e), c.apply(n, e.get()); return this.pushStack(n) } });\n            var _t, qt, Ot, Ft, Pt, Ht, zt = /^margin/,\n                It = new RegExp(\"^(\" + K + \")(?!px)[a-z%]+$\", \"i\"),\n                Rt = function (t) { var e = t.ownerDocument.defaultView; return e && e.opener || (e = h), e.getComputedStyle(t) };\n\n            function Wt() {\n                if (Ht) {\n                    Ht.style.cssText = \"box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%\", Ht.innerHTML = \"\", pt.appendChild(Pt);\n                    var t = h.getComputedStyle(Ht);\n                    _t = \"1%\" !== t.top, Ft = \"2px\" === t.marginLeft, qt = \"4px\" === t.width, Ht.style.marginRight = \"50%\", Ot = \"4px\" === t.marginRight, pt.removeChild(Pt), Ht = null\n                }\n            }\n\n            function Bt(t, e, n) { var r, i, o, a, s = t.style; return (n = n || Rt(t)) && (\"\" !== (a = n.getPropertyValue(e) || n[e]) || w.contains(t.ownerDocument, t) || (a = w.style(t, e)), !y.pixelMarginRight() && It.test(a) && zt.test(e) && (r = s.width, i = s.minWidth, o = s.maxWidth, s.minWidth = s.maxWidth = s.width = a, a = n.width, s.width = r, s.minWidth = i, s.maxWidth = o)), void 0 !== a ? a + \"\" : a }\n\n            function Mt(t, e) {\n                return {\n                    get: function () {\n                        if (!t()) return (this.get = e).apply(this, arguments);\n                        delete this.get\n                    }\n                }\n            }\n            Pt = m.createElement(\"div\"), (Ht = m.createElement(\"div\")).style && (Ht.style.backgroundClip = \"content-box\", Ht.cloneNode(!0).style.backgroundClip = \"\", y.clearCloneStyle = \"content-box\" === Ht.style.backgroundClip, Pt.style.cssText = \"border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute\", Pt.appendChild(Ht), w.extend(y, { pixelPosition: function () { return Wt(), _t }, boxSizingReliable: function () { return Wt(), qt }, pixelMarginRight: function () { return Wt(), Ot }, reliableMarginLeft: function () { return Wt(), Ft } }));\n            var $t, Ut, Vt = /^(none|table(?!-c[ea]).+)/,\n                Xt = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n                Qt = { letterSpacing: \"0\", fontWeight: \"400\" },\n                Yt = [\"Webkit\", \"Moz\", \"ms\"],\n                Gt = m.createElement(\"div\").style;\n\n            function Jt(t) {\n                if (t in Gt) return t;\n                for (var e = t[0].toUpperCase() + t.slice(1), n = Yt.length; n--;)\n                    if ((t = Yt[n] + e) in Gt) return t\n            }\n\n            function Kt(t, e, n) { var r = Z.exec(e); return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || \"px\") : e }\n\n            function Zt(t, e, n, r, i) { for (var o = n === (r ? \"border\" : \"content\") ? 4 : \"width\" === e ? 1 : 0, a = 0; o < 4; o += 2) \"margin\" === n && (a += w.css(t, n + tt[o], !0, i)), r ? (\"content\" === n && (a -= w.css(t, \"padding\" + tt[o], !0, i)), \"margin\" !== n && (a -= w.css(t, \"border\" + tt[o] + \"Width\", !0, i))) : (a += w.css(t, \"padding\" + tt[o], !0, i), \"padding\" !== n && (a += w.css(t, \"border\" + tt[o] + \"Width\", !0, i))); return a }\n\n            function te(t, e, n) {\n                var r, i = !0,\n                    o = Rt(t),\n                    a = \"border-box\" === w.css(t, \"boxSizing\", !1, o);\n                if (t.getClientRects().length && (r = t.getBoundingClientRect()[e]), r <= 0 || null == r) {\n                    if (((r = Bt(t, e, o)) < 0 || null == r) && (r = t.style[e]), It.test(r)) return r;\n                    i = a && (y.boxSizingReliable() || r === t.style[e]), r = parseFloat(r) || 0\n                }\n                return r + Zt(t, e, n || (a ? \"border\" : \"content\"), i, o) + \"px\"\n            }\n            w.extend({\n                cssHooks: { opacity: { get: function (t, e) { if (e) { var n = Bt(t, \"opacity\"); return \"\" === n ? \"1\" : n } } } },\n                cssNumber: { animationIterationCount: !0, columnCount: !0, fillOpacity: !0, flexGrow: !0, flexShrink: !0, fontWeight: !0, lineHeight: !0, opacity: !0, order: !0, orphans: !0, widows: !0, zIndex: !0, zoom: !0 },\n                cssProps: { float: \"cssFloat\" },\n                style: function (t, e, n, r) {\n                    if (t && 3 !== t.nodeType && 8 !== t.nodeType && t.style) {\n                        var i, o, a, s = w.camelCase(e),\n                            c = t.style;\n                        if (e = w.cssProps[s] || (w.cssProps[s] = Jt(s) || s), a = w.cssHooks[e] || w.cssHooks[s], void 0 === n) return a && \"get\" in a && void 0 !== (i = a.get(t, !1, r)) ? i : c[e];\n                        \"string\" === (o = typeof n) && (i = Z.exec(n)) && i[1] && (n = function (t, e, n, r) {\n                            var i, o = 1,\n                                a = 20,\n                                s = r ? function () { return r.cur() } : function () { return w.css(t, e, \"\") },\n                                c = s(),\n                                l = n && n[3] || (w.cssNumber[e] ? \"\" : \"px\"),\n                                u = (w.cssNumber[e] || \"px\" !== l && +c) && Z.exec(w.css(t, e));\n                            if (u && u[3] !== l)\n                                for (l = l || u[3], n = n || [], u = +c || 1; u /= o = o || \".5\", w.style(t, e, u + l), o !== (o = s() / c) && 1 !== o && --a;);\n                            return n && (u = +u || +c || 0, i = n[1] ? u + (n[1] + 1) * n[2] : +n[2], r && (r.unit = l, r.start = u, r.end = i)), i\n                        }(t, e, i), o = \"number\"), null != n && n == n && (\"number\" === o && (n += i && i[3] || (w.cssNumber[s] ? \"\" : \"px\")), y.clearCloneStyle || \"\" !== n || 0 !== e.indexOf(\"background\") || (c[e] = \"inherit\"), a && \"set\" in a && void 0 === (n = a.set(t, n, r)) || (c[e] = n))\n                    }\n                },\n                css: function (t, e, n, r) { var i, o, a, s = w.camelCase(e); return e = w.cssProps[s] || (w.cssProps[s] = Jt(s) || s), (a = w.cssHooks[e] || w.cssHooks[s]) && \"get\" in a && (i = a.get(t, !0, n)), void 0 === i && (i = Bt(t, e, r)), \"normal\" === i && e in Qt && (i = Qt[e]), \"\" === n || n ? (o = parseFloat(i), !0 === n || isFinite(o) ? o || 0 : i) : i }\n            }), w.each([\"height\", \"width\"], function (t, a) {\n                w.cssHooks[a] = {\n                    get: function (t, e, n) { if (e) return !Vt.test(w.css(t, \"display\")) || t.getClientRects().length && t.getBoundingClientRect().width ? te(t, a, n) : J(t, Xt, function () { return te(t, a, n) }) },\n                    set: function (t, e, n) {\n                        var r, i = n && Rt(t),\n                            o = n && Zt(t, a, n, \"border-box\" === w.css(t, \"boxSizing\", !1, i), i);\n                        return o && (r = Z.exec(e)) && \"px\" !== (r[3] || \"px\") && (t.style[a] = e, e = w.css(t, a)), Kt(0, e, o)\n                    }\n                }\n            }), w.cssHooks.marginLeft = Mt(y.reliableMarginLeft, function (t, e) { if (e) return (parseFloat(Bt(t, \"marginLeft\")) || t.getBoundingClientRect().left - J(t, { marginLeft: 0 }, function () { return t.getBoundingClientRect().left })) + \"px\" }), w.each({ margin: \"\", padding: \"\", border: \"Width\" }, function (i, o) { w.cssHooks[i + o] = { expand: function (t) { for (var e = 0, n = {}, r = \"string\" == typeof t ? t.split(\" \") : [t]; e < 4; e++) n[i + tt[e] + o] = r[e] || r[e - 2] || r[0]; return n } }, zt.test(i) || (w.cssHooks[i + o].set = Kt) }), w.fn.extend({\n                css: function (t, e) {\n                    return M(this, function (t, e, n) {\n                        var r, i, o = {},\n                            a = 0;\n                        if (w.isArray(e)) { for (r = Rt(t), i = e.length; a < i; a++) o[e[a]] = w.css(t, e[a], !1, r); return o }\n                        return void 0 !== n ? w.style(t, e, n) : w.css(t, e)\n                    }, t, e, 1 < arguments.length)\n                }\n            }), w.fn.delay = function (r, t) {\n                return r = w.fx && w.fx.speeds[r] || r, t = t || \"fx\", this.queue(t, function (t, e) {\n                    var n = h.setTimeout(t, r);\n                    e.stop = function () { h.clearTimeout(n) }\n                })\n            }, $t = m.createElement(\"input\"), Ut = m.createElement(\"select\").appendChild(m.createElement(\"option\")), $t.type = \"checkbox\", y.checkOn = \"\" !== $t.value, y.optSelected = Ut.selected, ($t = m.createElement(\"input\")).value = \"t\", $t.type = \"radio\", y.radioValue = \"t\" === $t.value;\n            var ee, ne = w.expr.attrHandle;\n            w.fn.extend({ attr: function (t, e) { return M(this, w.attr, t, e, 1 < arguments.length) }, removeAttr: function (t) { return this.each(function () { w.removeAttr(this, t) }) } }), w.extend({\n                attr: function (t, e, n) { var r, i, o = t.nodeType; if (3 !== o && 8 !== o && 2 !== o) return void 0 === t.getAttribute ? w.prop(t, e, n) : (1 === o && w.isXMLDoc(t) || (i = w.attrHooks[e.toLowerCase()] || (w.expr.match.bool.test(e) ? ee : void 0)), void 0 !== n ? null === n ? void w.removeAttr(t, e) : i && \"set\" in i && void 0 !== (r = i.set(t, n, e)) ? r : (t.setAttribute(e, n + \"\"), n) : i && \"get\" in i && null !== (r = i.get(t, e)) ? r : null == (r = w.find.attr(t, e)) ? void 0 : r) },\n                attrHooks: { type: { set: function (t, e) { if (!y.radioValue && \"radio\" === e && w.nodeName(t, \"input\")) { var n = t.value; return t.setAttribute(\"type\", e), n && (t.value = n), e } } } },\n                removeAttr: function (t, e) {\n                    var n, r = 0,\n                        i = e && e.match(F);\n                    if (i && 1 === t.nodeType)\n                        for (; n = i[r++];) t.removeAttribute(n)\n                }\n            }), ee = { set: function (t, e, n) { return !1 === e ? w.removeAttr(t, n) : t.setAttribute(n, n), n } }, w.each(w.expr.match.bool.source.match(/\\w+/g), function (t, e) {\n                var a = ne[e] || w.find.attr;\n                ne[e] = function (t, e, n) { var r, i, o = e.toLowerCase(); return n || (i = ne[o], ne[o] = r, r = null != a(t, e, n) ? o : null, ne[o] = i), r }\n            });\n            var re = /^(?:input|select|textarea|button)$/i,\n                ie = /^(?:a|area)$/i;\n            w.fn.extend({ prop: function (t, e) { return M(this, w.prop, t, e, 1 < arguments.length) }, removeProp: function (t) { return this.each(function () { delete this[w.propFix[t] || t] }) } }), w.extend({ prop: function (t, e, n) { var r, i, o = t.nodeType; if (3 !== o && 8 !== o && 2 !== o) return 1 === o && w.isXMLDoc(t) || (e = w.propFix[e] || e, i = w.propHooks[e]), void 0 !== n ? i && \"set\" in i && void 0 !== (r = i.set(t, n, e)) ? r : t[e] = n : i && \"get\" in i && null !== (r = i.get(t, e)) ? r : t[e] }, propHooks: { tabIndex: { get: function (t) { var e = w.find.attr(t, \"tabindex\"); return e ? parseInt(e, 10) : re.test(t.nodeName) || ie.test(t.nodeName) && t.href ? 0 : -1 } } }, propFix: { for: \"htmlFor\", class: \"className\" } }), y.optSelected || (w.propHooks.selected = {\n                get: function (t) { var e = t.parentNode; return e && e.parentNode && e.parentNode.selectedIndex, null },\n                set: function (t) {\n                    var e = t.parentNode;\n                    e && (e.selectedIndex, e.parentNode && e.parentNode.selectedIndex)\n                }\n            }), w.each([\"tabIndex\", \"readOnly\", \"maxLength\", \"cellSpacing\", \"cellPadding\", \"rowSpan\", \"colSpan\", \"useMap\", \"frameBorder\", \"contentEditable\"], function () { w.propFix[this.toLowerCase()] = this });\n            var oe = /[\\t\\r\\n\\f]/g;\n\n            function ae(t) { return t.getAttribute && t.getAttribute(\"class\") || \"\" }\n            w.fn.extend({\n                addClass: function (e) {\n                    var t, n, r, i, o, a, s, c = 0;\n                    if (w.isFunction(e)) return this.each(function (t) { w(this).addClass(e.call(this, t, ae(this))) });\n                    if (\"string\" == typeof e && e)\n                        for (t = e.match(F) || []; n = this[c++];)\n                            if (i = ae(n), r = 1 === n.nodeType && (\" \" + i + \" \").replace(oe, \" \")) {\n                                for (a = 0; o = t[a++];) r.indexOf(\" \" + o + \" \") < 0 && (r += o + \" \");\n                                i !== (s = w.trim(r)) && n.setAttribute(\"class\", s)\n                            }\n                    return this\n                },\n                removeClass: function (e) {\n                    var t, n, r, i, o, a, s, c = 0;\n                    if (w.isFunction(e)) return this.each(function (t) { w(this).removeClass(e.call(this, t, ae(this))) });\n                    if (!arguments.length) return this.attr(\"class\", \"\");\n                    if (\"string\" == typeof e && e)\n                        for (t = e.match(F) || []; n = this[c++];)\n                            if (i = ae(n), r = 1 === n.nodeType && (\" \" + i + \" \").replace(oe, \" \")) {\n                                for (a = 0; o = t[a++];)\n                                    for (; - 1 < r.indexOf(\" \" + o + \" \");) r = r.replace(\" \" + o + \" \", \" \");\n                                i !== (s = w.trim(r)) && n.setAttribute(\"class\", s)\n                            }\n                    return this\n                },\n                toggleClass: function (i, e) {\n                    var o = typeof i;\n                    return \"boolean\" == typeof e && \"string\" == o ? e ? this.addClass(i) : this.removeClass(i) : w.isFunction(i) ? this.each(function (t) { w(this).toggleClass(i.call(this, t, ae(this), e), e) }) : this.each(function () {\n                        var t, e, n, r;\n                        if (\"string\" == o)\n                            for (e = 0, n = w(this), r = i.match(F) || []; t = r[e++];) n.hasClass(t) ? n.removeClass(t) : n.addClass(t);\n                        else void 0 !== i && \"boolean\" != o || ((t = ae(this)) && U.set(this, \"__className__\", t), this.setAttribute && this.setAttribute(\"class\", t || !1 === i ? \"\" : U.get(this, \"__className__\") || \"\"))\n                    })\n                },\n                hasClass: function (t) {\n                    var e, n, r = 0;\n                    for (e = \" \" + t + \" \"; n = this[r++];)\n                        if (1 === n.nodeType && -1 < (\" \" + ae(n) + \" \").replace(oe, \" \").indexOf(e)) return !0;\n                    return !1\n                }\n            });\n            var se = /\\r/g,\n                ce = /[\\x20\\t\\r\\n\\f]+/g;\n            w.fn.extend({\n                val: function (n) {\n                    var r, t, i, e = this[0];\n                    return arguments.length ? (i = w.isFunction(n), this.each(function (t) {\n                        var e;\n                        1 === this.nodeType && (null == (e = i ? n.call(this, t, w(this).val()) : n) ? e = \"\" : \"number\" == typeof e ? e += \"\" : w.isArray(e) && (e = w.map(e, function (t) { return null == t ? \"\" : t + \"\" })), (r = w.valHooks[this.type] || w.valHooks[this.nodeName.toLowerCase()]) && \"set\" in r && void 0 !== r.set(this, e, \"value\") || (this.value = e))\n                    })) : e ? (r = w.valHooks[e.type] || w.valHooks[e.nodeName.toLowerCase()]) && \"get\" in r && void 0 !== (t = r.get(e, \"value\")) ? t : \"string\" == typeof (t = e.value) ? t.replace(se, \"\") : null == t ? \"\" : t : void 0\n                }\n            }), w.extend({\n                valHooks: {\n                    option: { get: function (t) { var e = w.find.attr(t, \"value\"); return null != e ? e : w.trim(w.text(t)).replace(ce, \" \") } },\n                    select: {\n                        get: function (t) {\n                            for (var e, n, r = t.options, i = t.selectedIndex, o = \"select-one\" === t.type, a = o ? null : [], s = o ? i + 1 : r.length, c = i < 0 ? s : o ? i : 0; c < s; c++)\n                                if (((n = r[c]).selected || c === i) && !n.disabled && (!n.parentNode.disabled || !w.nodeName(n.parentNode, \"optgroup\"))) {\n                                    if (e = w(n).val(), o) return e;\n                                    a.push(e)\n                                }\n                            return a\n                        },\n                        set: function (t, e) { for (var n, r, i = t.options, o = w.makeArray(e), a = i.length; a--;)((r = i[a]).selected = -1 < w.inArray(w.valHooks.option.get(r), o)) && (n = !0); return n || (t.selectedIndex = -1), o }\n                    }\n                }\n            }), w.each([\"radio\", \"checkbox\"], function () { w.valHooks[this] = { set: function (t, e) { if (w.isArray(e)) return t.checked = -1 < w.inArray(w(t).val(), e) } }, y.checkOn || (w.valHooks[this].get = function (t) { return null === t.getAttribute(\"value\") ? \"on\" : t.value }) });\n            var le = /^(?:focusinfocus|focusoutblur)$/;\n            w.extend(w.event, {\n                trigger: function (t, e, n, r) {\n                    var i, o, a, s, c, l, u, d = [n || m],\n                        f = v.call(t, \"type\") ? t.type : t,\n                        p = v.call(t, \"namespace\") ? t.namespace.split(\".\") : [];\n                    if (o = a = n = n || m, 3 !== n.nodeType && 8 !== n.nodeType && !le.test(f + w.event.triggered) && (-1 < f.indexOf(\".\") && (f = (p = f.split(\".\")).shift(), p.sort()), c = f.indexOf(\":\") < 0 && \"on\" + f, (t = t[w.expando] ? t : new w.Event(f, \"object\" == typeof t && t)).isTrigger = r ? 2 : 3, t.namespace = p.join(\".\"), t.rnamespace = t.namespace ? new RegExp(\"(^|\\\\.)\" + p.join(\"\\\\.(?:.*\\\\.|)\") + \"(\\\\.|$)\") : null, t.result = void 0, t.target || (t.target = n), e = null == e ? [t] : w.makeArray(e, [t]), u = w.event.special[f] || {}, r || !u.trigger || !1 !== u.trigger.apply(n, e))) {\n                        if (!r && !u.noBubble && !w.isWindow(n)) {\n                            for (s = u.delegateType || f, le.test(s + f) || (o = o.parentNode); o; o = o.parentNode) d.push(o), a = o;\n                            a === (n.ownerDocument || m) && d.push(a.defaultView || a.parentWindow || h)\n                        }\n                        for (i = 0;\n                            (o = d[i++]) && !t.isPropagationStopped();) t.type = 1 < i ? s : u.bindType || f, (l = (U.get(o, \"events\") || {})[t.type] && U.get(o, \"handle\")) && l.apply(o, e), (l = c && o[c]) && l.apply && B(o) && (t.result = l.apply(o, e), !1 === t.result && t.preventDefault());\n                        return t.type = f, r || t.isDefaultPrevented() || u._default && !1 !== u._default.apply(d.pop(), e) || !B(n) || c && w.isFunction(n[f]) && !w.isWindow(n) && ((a = n[c]) && (n[c] = null), n[w.event.triggered = f](), w.event.triggered = void 0, a && (n[c] = a)), t.result\n                    }\n                },\n                simulate: function (t, e, n) {\n                    var r = w.extend(new w.Event, n, { type: t, isSimulated: !0 });\n                    w.event.trigger(r, null, e)\n                }\n            }), w.fn.extend({ trigger: function (t, e) { return this.each(function () { w.event.trigger(t, e, this) }) }, triggerHandler: function (t, e) { var n = this[0]; if (n) return w.event.trigger(t, e, n, !0) } }), w.each(\"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu\".split(\" \"), function (t, n) { w.fn[n] = function (t, e) { return 0 < arguments.length ? this.on(n, null, t, e) : this.trigger(n) } }), w.fn.extend({ hover: function (t, e) { return this.mouseenter(t).mouseleave(e || t) } }), y.focusin = \"onfocusin\" in h, y.focusin || w.each({ focus: \"focusin\", blur: \"focusout\" }, function (n, r) {\n                function i(t) { w.event.simulate(r, t.target, w.event.fix(t)) }\n                w.event.special[r] = {\n                    setup: function () {\n                        var t = this.ownerDocument || this,\n                            e = U.access(t, r);\n                        e || t.addEventListener(n, i, !0), U.access(t, r, (e || 0) + 1)\n                    },\n                    teardown: function () {\n                        var t = this.ownerDocument || this,\n                            e = U.access(t, r) - 1;\n                        e ? U.access(t, r, e) : (t.removeEventListener(n, i, !0), U.remove(t, r))\n                    }\n                }\n            });\n            var ue, de = /\\[\\]$/,\n                fe = /\\r?\\n/g,\n                pe = /^(?:submit|button|image|reset|file)$/i,\n                he = /^(?:input|select|textarea|keygen)/i;\n\n            function me(n, t, r, i) {\n                var e;\n                if (w.isArray(t)) w.each(t, function (t, e) { r || de.test(n) ? i(n, e) : me(n + \"[\" + (\"object\" == typeof e && null != e ? t : \"\") + \"]\", e, r, i) });\n                else if (r || \"object\" !== w.type(t)) i(n, t);\n                else\n                    for (e in t) me(n + \"[\" + e + \"]\", t[e], r, i)\n            }\n\n            function ge(t) { return w.isWindow(t) ? t : 9 === t.nodeType && t.defaultView }\n            w.param = function (t, e) {\n                function n(t, e) {\n                    var n = w.isFunction(e) ? e() : e;\n                    i[i.length] = encodeURIComponent(t) + \"=\" + encodeURIComponent(null == n ? \"\" : n)\n                }\n                var r, i = [];\n                if (w.isArray(t) || t.jquery && !w.isPlainObject(t)) w.each(t, function () { n(this.name, this.value) });\n                else\n                    for (r in t) me(r, t[r], e, n);\n                return i.join(\"&\")\n            }, w.fn.extend({ serialize: function () { return w.param(this.serializeArray()) }, serializeArray: function () { return this.map(function () { var t = w.prop(this, \"elements\"); return t ? w.makeArray(t) : this }).filter(function () { var t = this.type; return this.name && !w(this).is(\":disabled\") && he.test(this.nodeName) && !pe.test(t) && (this.checked || !rt.test(t)) }).map(function (t, e) { var n = w(this).val(); return null == n ? null : w.isArray(n) ? w.map(n, function (t) { return { name: e.name, value: t.replace(fe, \"\\r\\n\") } }) : { name: e.name, value: n.replace(fe, \"\\r\\n\") } }).get() } }), w.fn.extend({\n                wrapAll: function (t) { var e; return this[0] && (w.isFunction(t) && (t = t.call(this[0])), e = w(t, this[0].ownerDocument).eq(0).clone(!0), this[0].parentNode && e.insertBefore(this[0]), e.map(function () { for (var t = this; t.firstElementChild;) t = t.firstElementChild; return t }).append(this)), this },\n                wrapInner: function (n) {\n                    return w.isFunction(n) ? this.each(function (t) { w(this).wrapInner(n.call(this, t)) }) : this.each(function () {\n                        var t = w(this),\n                            e = t.contents();\n                        e.length ? e.wrapAll(n) : t.append(n)\n                    })\n                },\n                wrap: function (e) { var n = w.isFunction(e); return this.each(function (t) { w(this).wrapAll(n ? e.call(this, t) : e) }) },\n                unwrap: function (t) { return this.parent(t).not(\"body\").each(function () { w(this).replaceWith(this.childNodes) }), this }\n            }), w.expr.pseudos.hidden = function (t) { return !w.expr.pseudos.visible(t) }, w.expr.pseudos.visible = function (t) { return !!(t.offsetWidth || t.offsetHeight || t.getClientRects().length) }, y.createHTMLDocument = ((ue = m.implementation.createHTMLDocument(\"\").body).innerHTML = \"<form></form><form></form>\", 2 === ue.childNodes.length), w.parseHTML = function (t, e, n) { return \"string\" != typeof t ? [] : (\"boolean\" == typeof e && (n = e, e = !1), e || (y.createHTMLDocument ? ((r = (e = m.implementation.createHTMLDocument(\"\")).createElement(\"base\")).href = m.location.href, e.head.appendChild(r)) : e = m), o = !n && [], (i = S.exec(t)) ? [e.createElement(i[1])] : (i = ft([t], e, o), o && o.length && w(o).remove(), w.merge([], i.childNodes))); var r, i, o }, w.offset = {\n                setOffset: function (t, e, n) {\n                    var r, i, o, a, s, c, l = w.css(t, \"position\"),\n                        u = w(t),\n                        d = {};\n                    \"static\" === l && (t.style.position = \"relative\"), s = u.offset(), o = w.css(t, \"top\"), c = w.css(t, \"left\"), i = (\"absolute\" === l || \"fixed\" === l) && -1 < (o + c).indexOf(\"auto\") ? (a = (r = u.position()).top, r.left) : (a = parseFloat(o) || 0, parseFloat(c) || 0), w.isFunction(e) && (e = e.call(t, n, w.extend({}, s))), null != e.top && (d.top = e.top - s.top + a), null != e.left && (d.left = e.left - s.left + i), \"using\" in e ? e.using.call(t, d) : u.css(d)\n                }\n            }, w.fn.extend({\n                offset: function (e) { if (arguments.length) return void 0 === e ? this : this.each(function (t) { w.offset.setOffset(this, e, t) }); var t, n, r, i, o = this[0]; return o ? o.getClientRects().length ? (r = o.getBoundingClientRect()).width || r.height ? (n = ge(i = o.ownerDocument), t = i.documentElement, { top: r.top + n.pageYOffset - t.clientTop, left: r.left + n.pageXOffset - t.clientLeft }) : r : { top: 0, left: 0 } : void 0 },\n                position: function () {\n                    if (this[0]) {\n                        var t, e, n = this[0],\n                            r = { top: 0, left: 0 };\n                        return \"fixed\" === w.css(n, \"position\") ? e = n.getBoundingClientRect() : (t = this.offsetParent(), e = this.offset(), w.nodeName(t[0], \"html\") || (r = t.offset()), r = { top: r.top + w.css(t[0], \"borderTopWidth\", !0), left: r.left + w.css(t[0], \"borderLeftWidth\", !0) }), { top: e.top - r.top - w.css(n, \"marginTop\", !0), left: e.left - r.left - w.css(n, \"marginLeft\", !0) }\n                    }\n                },\n                offsetParent: function () { return this.map(function () { for (var t = this.offsetParent; t && \"static\" === w.css(t, \"position\");) t = t.offsetParent; return t || pt }) }\n            }), w.each({ scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function (e, i) {\n                var o = \"pageYOffset\" === i;\n                w.fn[e] = function (t) {\n                    return M(this, function (t, e, n) {\n                        var r = ge(t);\n                        if (void 0 === n) return r ? r[i] : t[e];\n                        r ? r.scrollTo(o ? r.pageXOffset : n, o ? n : r.pageYOffset) : t[e] = n\n                    }, e, t, arguments.length)\n                }\n            }), w.each([\"top\", \"left\"], function (t, n) { w.cssHooks[n] = Mt(y.pixelPosition, function (t, e) { if (e) return e = Bt(t, n), It.test(e) ? w(t).position()[n] + \"px\" : e }) }), w.each({ Height: \"height\", Width: \"width\" }, function (a, s) {\n                w.each({ padding: \"inner\" + a, content: s, \"\": \"outer\" + a }, function (r, o) {\n                    w.fn[o] = function (t, e) {\n                        var n = arguments.length && (r || \"boolean\" != typeof t),\n                            i = r || (!0 === t || !0 === e ? \"margin\" : \"border\");\n                        return M(this, function (t, e, n) { var r; return w.isWindow(t) ? 0 === o.indexOf(\"outer\") ? t[\"inner\" + a] : t.document.documentElement[\"client\" + a] : 9 === t.nodeType ? (r = t.documentElement, Math.max(t.body[\"scroll\" + a], r[\"scroll\" + a], t.body[\"offset\" + a], r[\"offset\" + a], r[\"client\" + a])) : void 0 === n ? w.css(t, e, i) : w.style(t, e, n, i) }, s, n ? t : void 0, n)\n                    }\n                })\n            }), \"function\" == typeof define && define.amd && define(\"jquery\", [], function () { return w });\n            var ve = h.jQuery,\n                ye = h.$;\n            return w.noConflict = function (t) { return h.$ === w && (h.$ = ye), t && h.jQuery === w && (h.jQuery = ve), w }, t || (h.jQuery = h.$ = w), w\n        })\n    }, {}],\n    2: [function (M, t, e) {\n        \"use strict\";\n        ! function () {\n            if (-1 === document.domain.indexOf(\".\")) return location.href = \"#\";\n            if (window._hasCtrmInjected) return document.querySelector(\".ctrm-title\").click();\n            window._hasCtrmInjected = !0;\n            var i = void 0,\n                n = void 0,\n                r = void 0,\n                e = void 0,\n                o = !0,\n                a = void 0,\n                s = void 0,\n                c = void 0,\n                l = [],\n                u = !1,\n                d = void 0,\n                t = \"wss://topurl.cn:9001\",\n                f = (i = window.jQuery ? window.jQuery : M(\"jQuery-slim\"))(M(\"./dom.js\"));\n\n            // 内联 jQuery 走的是 CommonJS 分支，不会自己创建 window.$；下面 fancybox、\n            // lazyload 用的是裸 $，宿主页面不一定有，所以在这里补挂全局。\n            if (!window.jQuery) window.jQuery = i;\n            if (!window.$) window.$ = i;\n\n            i(document.body).append(f), loadDeferredScripts(f), _();\n            var p, h, m = i(\"#ctrm_\"),\n                g = m.find(\".ctrm-title\"),\n                v = m.find(\".ctrm-title-url\"),\n                y = (m.find(\".ctrm-panel\"), m.find(\".ctrm-bottom\")),\n                b = m.find(\".ctrm-dialog\"),\n                w = m.find(\".ctrm-textarea textarea\"),\n                x = m.find(\".ctrm-emit\"),\n                C = m.find(\".ctrm-online-wrap\"),\n                k = m.find(\".ctrm-domain-wrap\"),\n                T = m.find(\".ctrm-domain-show\"),\n                E = m.find(\".ctrm-title-countwrap\"),\n                N = m.find(\".ctrm-title-count\"),\n                S = m.find(\".ctrm-title-close\"),\n                D = m.find(\".ctrm-title-reconn\"),\n                // 上行的 char 字段。服务端一直按这个常量在收，别改（原实现从一个不存在的\n                // 元素上取字符，结果恒等于此值）。\n                L = \"Gtuundefined\";\n\n            function j() { setTimeout(function () { m.hasClass(\"ctrm-close\") || document.activeElement !== w.get(0) && S.click() }, 1) }\n\n            function escapeHtml(t) {\n                return null == t ? \"\" : String(t)\n                    .replace(/&/g, \"&amp;\")\n                    .replace(/</g, \"&lt;\")\n                    .replace(/>/g, \"&gt;\")\n                    .replace(/\"/g, \"&quot;\")\n                    .replace(/'/g, \"&#39;\");\n            }\n\n            // 轻量非阻塞提示条。挂到 window 上供文件末尾那几个独立 IIFE 复用。\n            function ctrmToast(msg, type) {\n                var el = document.createElement(\"div\");\n                el.className = \"ctrm-toast\";\n                el.setAttribute(\"role\", \"status\");\n                el.textContent = msg;\n                el.style.cssText = \"position:fixed;left:50%;bottom:88px;transform:translateX(-50%);\" +\n                    \"max-width:78vw;padding:8px 16px;border-radius:16px;font-size:14px;line-height:1.4;\" +\n                    \"color:#fff;z-index:100000;pointer-events:none;white-space:pre-wrap;text-align:center;\" +\n                    \"box-shadow:0 4px 18px rgba(47,36,41,.16);background:\" +\n                    // 红绿是语义色，故意不进配色表：主色是粉的，报错也用粉系就分不出来了。\n                    (\"error\" === type ? \"#b8362b\" : \"success\" === type ? \"#2f7a4f\" : \"var(--cx-brand-ink)\");\n                document.body.appendChild(el);\n                setTimeout(function () { el.parentNode && el.parentNode.removeChild(el) }, 2600)\n            }\n            window.__ctrmToast = ctrmToast;\n\n            function injectStyleOnce(id, css) {\n                if (document.getElementById(id)) return;\n                var el = document.createElement(\"style\");\n                el.id = id;\n                el.textContent = css;\n                document.head.appendChild(el)\n            }\n\n            // 凡是拿消息内容拼 DOM id 的地方都必须用它：同内容的两条消息会撞 id。\n            var ctrmUidSeq = 0;\n\n            function ctrmUid(prefix) {\n                return (prefix || \"ctrm\") + \"-\" + Date.now().toString(36) + \"-\" + (++ctrmUidSeq)\n            }\n\n            // ===== 以下是一次性初始化用的常量和函数，不要挪回 H() 里 =====\n\n            var CTRM_VOICE_CSS = `\n.ctrm-voice-bubble {\n  display: flex;\n  align-items: center;\n  background: #fdf8f9;\n  border-radius: 18px;\n  /* 用 inset 描边而不是 border：这里没写 box-sizing:border-box，border 会把盒子撑大。 */\n  box-shadow: inset 0 0 0 1px rgba(47,36,41,.10);\n  padding: 6px 16px 6px 10px;\n  min-height: 38px;\n  margin: 6px 0;\n  font-size: 15px;\n  position: relative;\n  gap: 10px;\n  cursor: pointer;\n  transition: background 0.2s;\n}\n.ctrm-voice-bubble.playing { background: var(--cx-tint); }\n.ctrm-voice-play {\n  background: var(--cx-brand);\n  border: none;\n  border-radius: 50%;\n  width: 32px;\n  height: 32px;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  cursor: pointer;\n  transition: background 0.2s;\n  padding: 0;\n}\n.ctrm-voice-bubble.playing .ctrm-voice-play { background: var(--cx-brand-deep); }\n.ctrm-voice-play .icon-play { display: block; }\n.ctrm-voice-play .icon-pause { display: none; }\n.ctrm-voice-bubble.playing .icon-play { display: none; }\n.ctrm-voice-bubble.playing .icon-pause { display: block; }\n.ctrm-voice-progress {\n  flex: 1;\n  height: 4px;\n  background: rgba(47,36,41,.12);\n  border-radius: 2px;\n  margin: 0 8px;\n  position: relative;\n  min-width: 60px;\n  max-width: 120px;\n}\n.ctrm-voice-bar {\n  background: var(--cx-brand);\n  height: 100%;\n  border-radius: 2px;\n  width: 0;\n  transition: width 0.2s;\n}\n.ctrm-voice-time {\n  color: var(--cx-ink-3);\n  font-size: 13px;\n  min-width: 36px;\n  text-align: right;\n}\n`;\n\n            var CTRM_PLAYING_CSS = `\n@keyframes blink {\n    0% { opacity: 1; }\n    50% { opacity: 0.5; }\n    100% { opacity: 1; }\n}\nimg.playing {\n    animation: blink 0.5s infinite;\n}\n`;\n\n            var CTRM_FANCYBOX_OPTS = {\n                caption: function (instance, item) { return i(this).find(\"img\").attr(\"alt\") },\n                loop: !0,\n                animationEffect: \"fade\",\n                buttons: [\"zoom\", \"share\", \"slideShow\", \"fullScreen\", \"close\"],\n                wheel: { scrollZoom: !0 },\n                thumbs: { autoStart: !0, axis: \"y\" },\n                fullScreen: { autoStart: !1 },\n                slideShow: { playOnStart: !0 },\n                protect: !0,\n                keyboard: { Escape: \"close\", ArrowLeft: \"prev\", ArrowRight: \"next\" },\n                touch: { vertical: !0, momentum: !0 },\n                lang: \"zh\",\n                i18n: {\n                    zh: {\n                        CLOSE: \"关闭\", NEXT: \"下一张\", PREV: \"上一张\",\n                        ERROR: \"无法加载内容。请稍后再试。\",\n                        PLAY_START: \"开始幻灯片播放\", PLAY_STOP: \"停止幻灯片播放\",\n                        FULL_SCREEN: \"全屏\", THUMBS: \"缩略图\",\n                        DOWNLOAD: \"下载\", SHARE: \"分享\", ZOOM: \"缩放\"\n                    }\n                }\n            };\n\n            // 只给传入的节点做灯箱绑定；不传就全量补一次。\n            function ctrmBindFancybox(scope) {\n                if (!i.fn || !i.fn.fancybox) return;\n                (scope ? scope.find('[data-fancybox=\"gallery\"]') : i('[data-fancybox=\"gallery\"]'))\n                    .fancybox(CTRM_FANCYBOX_OPTS)\n            }\n\n            // fancybox 是异步外链脚本，比首批历史消息晚到，就绪后补一次全量绑定。\n            function ctrmWhenFancyboxReady() {\n                var tries = 0,\n                    timer = setInterval(function () {\n                        if (i.fn && i.fn.fancybox) { clearInterval(timer), ctrmBindFancybox(null) }\n                        else if (60 < ++tries) { clearInterval(timer), console.warn(\"[ctrm] fancybox 未就绪，图片灯箱不可用\") }\n                    }, 200)\n            }\n\n            function ctrmVoiceLabel(sec) {\n                var mm = Math.floor(sec / 60),\n                    ss = Math.floor(sec % 60);\n                return (mm < 10 ? \"0\" : \"\") + mm + \":\" + (ss < 10 ? \"0\" : \"\") + ss\n            }\n\n            function ctrmPlayVoice(bubble, audio) {\n                var p = audio.play();\n                if (!p || !p.then) return bubble.classList.add(\"playing\"), void (window._voicePlaying = audio);\n                p.then(function () {\n                    bubble.classList.add(\"playing\"), window._voicePlaying = audio\n                }).catch(function (err) {\n                    bubble.classList.remove(\"playing\"),\n                        ctrmToast(\"无法播放语音：\" + (err && err.message || err), \"error\")\n                })\n            }\n\n            function ctrmToggleVoice(bubble, audio) {\n                var bar = bubble.querySelector(\".ctrm-voice-bar\"),\n                    label = bubble.querySelector(\".ctrm-voice-time\");\n                audio.volume = 1, audio.muted = !1;\n                // 换一条语音时先停掉上一条\n                if (window._voicePlaying && window._voicePlaying !== audio) {\n                    var prev = window._voicePlaying.closest(\".ctrm-voice-bubble\");\n                    window._voicePlaying.pause(), prev && prev.classList.remove(\"playing\"), window._voicePlaying = null\n                }\n                if (!audio.paused) return audio.pause(), bubble.classList.remove(\"playing\"), void (window._voicePlaying = null);\n                audio.ontimeupdate = function () {\n                    audio.duration && isFinite(audio.duration) && (\n                        bar && (bar.style.width = audio.currentTime / audio.duration * 100 + \"%\"),\n                        label && (label.textContent = ctrmVoiceLabel(Math.max(0, audio.duration - audio.currentTime)))\n                    )\n                };\n                audio.onended = function () {\n                    bubble.classList.remove(\"playing\"), bar && (bar.style.width = \"100%\"), window._voicePlaying = null\n                };\n                audio.onloadedmetadata = function () {\n                    isFinite(audio.duration) && label && (label.textContent = ctrmVoiceLabel(audio.duration))\n                };\n                // 元数据还没到就先 load()，用 canplay 续上\n                if (audio.readyState < 2) return audio.load(), void (audio.oncanplay = function () {\n                    audio.oncanplay = null, ctrmPlayVoice(bubble, audio)\n                });\n                ctrmPlayVoice(bubble, audio)\n            }\n\n            // 语音播放的唯一入口：一个 document 级委托\n            function ctrmBindVoicePlayback() {\n                document.addEventListener(\"click\", function (ev) {\n                    var playBtn = ev.target && ev.target.closest && ev.target.closest(\".ctrm-voice-play\");\n                    if (!playBtn) return;\n                    var bubble = playBtn.closest(\".ctrm-voice-bubble\");\n                    if (!bubble) return;\n                    ev.preventDefault(), ev.stopPropagation();\n                    var audio = bubble.querySelector(\"audio\");\n                    audio ? ctrmToggleVoice(bubble, audio) : console.warn(\"[ctrm] 语音气泡里没有 audio 元素\")\n                })\n            }\n\n            function ctrmInitOnce() {\n                injectStyleOnce(\"ctrm-voice-bubble-style\", CTRM_VOICE_CSS);\n                injectStyleOnce(\"ctrm-playing-anim-style\", CTRM_PLAYING_CSS);\n                ctrmBindVoicePlayback();\n                // 点击昵称 -> @他。一次性委托，不要改回每条消息重新绑定。\n                b.on(\"click\", \".ctrm-dialog-sender\", function () {\n                    var item = this.parentNode;\n                    if (item && -1 < item.className.indexOf(\"ctrm-me\")) return;\n                    w.val(\"@\" + this.innerText + \" \"), w.get(0).focus()\n                });\n                ctrmWhenFancyboxReady()\n            }\n\n            // 这个 jQuery build 剪掉了 _evalUrl，带 src 的 <script> 插进 DOM 后不会执行\n            // （模板里的 fancybox、图床脚本都是这种），所以重建成新节点触发加载。\n            function loadDeferredScripts(nodes) {\n                nodes.filter(\"script[src]\").each(function () {\n                    var old = this,\n                        fresh = document.createElement(\"script\");\n                    for (var idx = 0; idx < old.attributes.length; idx++) {\n                        fresh.setAttribute(old.attributes[idx].name, old.attributes[idx].value);\n                    }\n                    fresh.onerror = function () { console.warn(\"[ctrm] 外部脚本加载失败: \" + fresh.src) };\n                    old.parentNode && old.parentNode.replaceChild(fresh, old);\n                })\n            }\n\n            var reconnectTimer = null,\n                reconnectDelay = 1e3,\n                heartbeatTimer = null,\n                offlineNoticed = !1,\n                stalledTicks = 0,\n                unloading = !1;\n\n            // 心跳复用已有的 update 帧（服务端本来就收这个类型）。25s 短于代理常见的 60s 空闲断连。\n            function ctrmSendHello() {\n                try {\n                    n && 1 === n.readyState &&\n                        n.send(JSON.stringify({ type: \"update\", data: { domainFrom: location.hostname }, char: L }))\n                } catch (err) { }\n            }\n\n            // 指数退避重连：1s → 2s → 4s … 上限 30s，带随机抖动，避免整个房间同时重连\n            function ctrmScheduleReconnect() {\n                if (unloading || reconnectTimer) return;\n                var wait = Math.min(reconnectDelay, 3e4);\n                reconnectDelay = Math.min(2 * reconnectDelay, 3e4),\n                    reconnectTimer = setTimeout(function () { reconnectTimer = null, _() }, wait + Math.floor(1e3 * Math.random()))\n            }\n\n            // 立刻重连，不走退避。只在拿到明确外部信号时用（回前台、网络恢复、bfcache 恢复）。\n            function ctrmReconnectNow(reason) {\n                if (unloading) return;\n                console.warn(\"[ctrm] 立即重连：\" + reason),\n                    reconnectDelay = 1e3, stalledTicks = 0,\n                    clearTimeout(reconnectTimer), reconnectTimer = null, _()\n            }\n\n            function _() {\n                clearTimeout(reconnectTimer), reconnectTimer = null;\n                // 换新连接前先摘掉旧连接的回调再关，否则它的 onclose 会再排一次重连\n                if (n) try { n.onopen = n.onmessage = n.onclose = n.onerror = null, n.close() } catch (err) { }\n                var sock = n = new WebSocket(t);\n                sock.onopen = function () {\n                    if (sock !== n) return;\n                    reconnectDelay = 1e3, offlineNoticed = !1;\n                    ctrmSendHello();\n                    clearInterval(heartbeatTimer), heartbeatTimer = setInterval(ctrmSendHello, 25e3);\n                    clearInterval(a), a = setInterval(q, 15e3)\n                };\n                sock.onerror = function () { sock === n && console.warn(\"[ctrm] WebSocket 出错，等 onclose 后重连\") };\n                sock.onclose = function () { sock === n && (z(), ctrmScheduleReconnect()) };\n                sock.onmessage = function (ev) {\n                    sock === n && function (t) {\n                        var e;\n                        try { e = JSON.parse(t.data) } catch (err) { return void console.warn(\"[ctrm] 收到无法解析的帧\", t.data) }\n                        var n = e.type,\n                            r = e.data;\n                        switch (n) {\n                                case \"identity\":\n                                    s = r.id, c = r.name,\n                                        function (t) {\n                                            if (!t || 0 === t.length) return;\n                                            // 重连后服务端会重发整份 history，先清旧的再画，否则记录会重复一遍。\n                                            b.find(\".ctrm-dialog-item\").remove();\n                                            t.forEach(function (t) { H(t, !0) })\n                                        }(r.history),\n                                        function t(e) {\n                                            e ? l = e : e = l || [];\n                                            k.empty();\n                                            if (!e || 0 === e.length) return;\n                                            e.sort(function (t, e) { return e.times - t.times });\n                                            u || (e = e.slice(0, 3));\n                                            e.forEach(function (t, e) {\n                                                var r = escapeHtml(t.domainFrom),\n                                                    n = i('<a class=\"ctrm-domain-item\" target=\"_blank\" rel=\"noopener\" href=\"http://' + r + '?source=' + escapeHtml(location.hostname) + '\">' + r + \"</a>\");\n                                                k.append(n)\n                                            });\n                                            if (!u && 3 < l.length) {\n                                                var n = i('<a class=\"ctrm-domain-item\" href=\"javascript:void(0);\">更多...</a>');\n                                                n.click(function () { u = !0, t() }), k.append(n)\n                                            }\n                                        }(r.billboard);\n                                    break;\n                                case \"memberList\":\n                                    O(r);\n                                    break;\n                                case \"chat\":\n                                    H(r);\n                                    break;\n                                case \"ack\":\n                                    w.val(\"\")\n                            }\n                        }(ev)\n                };\n            }\n\n            // 看门狗。除了看 readyState，还要查发送缓冲：半开连接（睡眠、NAT 超时、换网）上\n            // readyState 会一直停在 OPEN，onclose 可能十几分钟才来。心跳只有几十字节，连着\n            // 4 个 15s 周期都排不出去就是死连接；这个判据不依赖服务端回话，安静房间也不误判。\n            function q() {\n                if (!n) return;\n                if (1 !== n.readyState) return z(), void ctrmScheduleReconnect();\n                if (0 < n.bufferedAmount) {\n                    if (4 <= ++stalledTicks) return stalledTicks = 0, z(), void ctrmReconnectNow(\"发送缓冲 60s 不清零，连接已半开\")\n                } else stalledTicks = 0\n            }\n\n            function O(t) {\n                F(d = t), C.empty(), d.forEach(function (t) {\n                    var e = i('<div class=\"ctrm-online-item\" style=\"background-color: ' + t.color + '\">' + escapeHtml(t.name) + \"</div>\");\n                    t.isSelf && e.css({ \"font-weight\": \"bold\" }), C.append(e), e.click(function () {\n                        var t = this.innerText;\n                        w.val(\"@\" + t + \" \"), w.get(0).focus()\n                    })\n                });\n                var e = C.find(\".ctrm-online-item\").length;\n                N.text(e), E.show()\n            }\n\n            function F(t) {\n                function e(t) { var e = +t.toString().slice(-4, -1); return \"rgba(\" + 11 * e % 256 + \", \" + 7 * e % 256 + \", \" + 5 * e % 256 + \", 0.3)\" }\n                t.id ? (t.color = e(t.id), t.isSelf = t.id === s) : t.forEach(function (t) { t.color = e(t.id), t.isSelf = t.id === s })\n            }\n\n            function P(t, e) {\n                var n = new Date(t),\n                    r = void 0;\n                return (r = \"hours\" === e ? \"\" + n.getHours() : \"\" + n.getMinutes()) === r[0] && (r = \"0\" + r), r\n            }\n\n            // 消息列表裁剪：不裁的话挂几小时就是几千个节点 + 图片/iframe/语音全留在内存里，\n            // 手机上标签页会被系统回收。稳态保留 300 条，攒到 350 才裁一次。\n            var CTRM_MSG_KEEP = 300,\n                CTRM_MSG_TRIM_AT = 350,\n                // 用户滚上去看历史时先不裁，但不能真的无上限，到这个数照裁\n                CTRM_MSG_HARD_CAP = 600;\n\n            // 返回这批消息持有的 blob: 地址，交给 ctrmReleaseVoiceBlobs 去放。\n            function ctrmDetachVoices(scope) {\n                var srcs = [];\n                scope.find(\"audio\").each(function () {\n                    // 脱离文档的 <audio> 还会继续出声，而气泡已经没了，用户没法让它停\n                    if (window._voicePlaying === this) {\n                        try { this.pause() } catch (err) { }\n                        window._voicePlaying = null\n                    }\n                    var src = this.getAttribute(\"src\");\n                    src && 0 === src.indexOf(\"blob:\") && srcs.push(src)\n                });\n                return srcs\n            }\n\n            // 放掉是安全的：H() 查不到本地副本会退回用服务器地址，照样能播。\n            // 必须等节点已经从列表里摘掉之后再查引用 —— 同一个 blob 可能被多条消息引用。\n            function ctrmReleaseVoiceBlobs(srcs) {\n                var map = window._myVoiceBlobs;\n                if (!map || !srcs.length) return;\n                srcs.forEach(function (src) {\n                    if (b.find('audio[src=\"' + src + '\"]').length) return;\n                    Object.keys(map).forEach(function (k) { map[k] === src && delete map[k] });\n                    try { URL.revokeObjectURL(src) } catch (err) { }\n                })\n            }\n\n            function ctrmTrimHistory() {\n                var el = b && b[0];\n                if (!el || el.children.length <= CTRM_MSG_TRIM_AT) return;\n                var items = b.children(\".ctrm-dialog-item\"),\n                    drop = items.length - CTRM_MSG_KEEP;\n                if (0 >= drop) return;\n                // o 为假 = 用户滚上去在看历史，裁掉的正是他在看的那段，先攒着\n                if (!o && items.length <= CTRM_MSG_HARD_CAP) return;\n                var dropped = items.slice(0, drop),\n                    scrollBefore = el.scrollTop,\n                    heightBefore = el.scrollHeight,\n                    blobs = ctrmDetachVoices(dropped);\n                dropped.remove();\n                ctrmReleaseVoiceBlobs(blobs);\n                // 裁掉的都在视口上方：钉底时随后的 I() 会贴底，否则要按删掉的高度回补 scrollTop。\n                o || (el.scrollTop = Math.max(0, scrollBefore - (heightBefore - el.scrollHeight)))\n            }\n\n            // quiet 为真 = 这条不算\"新消息\"，折叠成球时不闪。两处会传真：重连后重发的整份\n            // history，和\"连接已断开\"那条系统提示（切回标签页时这两件事常常一起发生）。\n            function H(t, quiet) {\n                F(t);\n\n                // 正文来自其他访客，先整体转义；之后只有下面这些正则显式产出的标签才是真 HTML。\n                t.msg = escapeHtml(t.msg);\n                t.name = escapeHtml(t.name);\n\n                // @我 高亮：c 是服务端下发的昵称，要与已转义的正文同形才能匹配上\n                var selfName = escapeHtml(c);\n\n                // 字符类不能放宽成 .*：贪婪且跨空白，一行两个图片链接会被合并成一个坏 src。\n                t.msg = t.msg.replace(\n                    /\\[url=([^\\]]+)\\](?:\\[img\\][^\\]]*\\[\\/img\\]) ?\\[\\/url\\]|(https?:\\/\\/[^\\s<>\"]*\\.(?:png|jpg|jpeg|gif|webp|svg|bmp|apng|ico|tiff|avif|heic|tga|jxr))|(https?:\\/\\/[^\\s<>\"]*\\.tutu\\.to\\/[^\\s<>\"]*\\/[^\"\\s]+)/gi,\n                    '<a data-fancybox=\"gallery\" data-src=\"$1$2$3\"><img src=\"$1$2$3\" alt=\"$1$2$3\" style=\"max-width: 100%;\" referrerpolicy=\"no-referrer\"></a>'\n                );\n\n                t.msg = t.msg.replace(\"@\" + selfName, '<span class=\"ctrm-b\">@' + selfName + \"</span>\");\n\n                t.msg = t.msg.replace(/我们还是说点其他的吧！|我们换个话题吧|这真是个好问题，让我想一想再告诉你吧/, '我是笨蛋机器人小尬,不是聪明的ChatGpt也不是机智的豆包,你的提问太难了');\n\n                t.msg = t.msg.replace(/违禁词汇/, '不可以说脏话哦，小尬会截图告诉警察叔叔的。');\n\n                t.msg = t.msg.replace(/一个中国|台湾/, '<a data-fancybox=\"gallery\" data-src=\"https://pic1.zhimg.com/v2-e93e8719fc6cbdb6dd9cbdb501e68fd8_720w.jpg\"><img src=\"https://pic1.zhimg.com/v2-e93e8719fc6cbdb6dd9cbdb501e68fd8_720w.jpg\" alt=\"祖国统一势不可挡\" style=\"max-width: 100%;\" referrerpolicy=\"no-referrer\"></a>');\n\n                t.msg = t.msg.replace(\"龙哥威武\", '<img src=\"https://api.cenguigui.cn/api/jp/?msg=龙哥我爱你\" alt=\"Image\" style=\"max-width: 100%;\" referrerpolicy=\"no-referrer\">');\n\n                t.msg = t.msg.replace(\"摸鱼\", '<a data-fancybox=\"gallery\" data-src=\"https://api.vvhan.com/api/moyu\"><img src=\"https://api.vvhan.com/api/moyu\" alt=\"🐟\" style=\"max-width: 10rem;\" referrerpolicy=\"no-referrer\"></a>');\n\n                t.msg = t.msg.replace(/\\/?jp (.+)/, '<img src=\"https://api.cenguigui.cn/api/jp/?msg=$1\" alt=\"Image\" style=\"max-width: 100%;\" referrerpolicy=\"no-referrer\">');\n\n                t.msg = t.msg.replace(/(https?:\\/\\/[^\\s<>\"]*\\.(?:mp4|avi|m3u8))/gi, function (match, url, offset, whole) {\n                    // iOS 录音是 mp4 容器。这条规则跑在语音气泡之前，不排除就会把 iOS 语音当视频。\n                    if (/\\[语音消息 \\d{2}:\\d{2}\\]\\s*$/.test(whole.slice(0, offset))) return match;\n                    return '<iframe src=\"https://www.yemu.xyz/?url=' + url + '\" id=\"player\" width=\"100%\" scrolling=\"no\" allowfullscreen=\"true\" allowtransparency=\"true\" marginheight=\"0\" marginwidth=\"0\" frameborder=\"0\"></iframe><a href=\"https://www.yemu.xyz/?url=' + url + '\" target=\"_blank\">点我试试,</a>仅供学习使用<img src=\"https://npm.elemecdn.com/blobcat@1.0.0/ablobcatheart.png\" alt=\"Image\" style=\"max-width: 2rem;\" referrerpolicy=\"no-referrer\">'\n                });\n\n                t.msg = t.msg.replace(/(https:\\/\\/music\\.163\\.com\\/#\\/song\\?id=(\\d+))/g,\n                    '<iframe frameborder=\"no\" border=\"0\" marginwidth=\"0\" marginheight=\"0\" width=\"calc(100% + 20px)\" style=\"width: calc(100% + 20px); margin-left: -10px\" height=\"86\" src=\"//music.163.com/outchain/player?type=2&id=$2&auto=0&height=66\"></iframe>')\n                    .replace(/(https:\\/\\/music\\.163\\.com\\/#\\/playlist\\?id=(\\d+))/g,\n                        '<div style=\"font-family: -apple-system, BlinkMacSystemFont, \\'Segoe UI\\', Roboto, \\'Helvetica Neue\\', Arial, sans-serif; background-color: #ffffff; border-radius: 14px; padding: 18px; margin: 15px 0; box-shadow: 0 1px 4px rgba(47,36,41,.05), inset 0 0 0 1px rgba(47,36,41,.10); display: flex; flex-direction: column; align-items: center;\">' +\n                        '<p style=\"margin: 0; color: var(--cx-ink-2); font-size: 14px; font-weight: 500; text-align: center;\"><b>该链接为歌曲列表，点击播放即可</b></p><p style=\"margin: 0; color: var(--cx-ink-3); font-size: 12px; font-weight: 500; text-align: center;\">这里不显示歌曲列表，只会按照歌曲顺序依次播放</p>' +\n                        '<iframe frameborder=\"no\" border=\"0\" marginwidth=\"0\" marginheight=\"0\" width=\"calc(100% + 20px)\" style=\"width: calc(100% + 20px); margin-left: -10px; margin-top: 15px;\" height=\"86\" src=\"//music.163.com/outchain/player?type=0&id=$2&auto=0&height=66\"></iframe>' +\n                        '<a class=\"ctrm-163-btn\" href=\"$1\" target=\"_blank\" style=\"display: inline-block;padding: 6px 14px;margin-top: 15px;border: none;border-radius: 999px;background-color: var(--cx-brand);color: white;text-align: center;text-decoration: none;font-weight: bold;transition: background-color 0.3s;font-size: 14px;\">跳转到网易云音乐列表</a> <a><img style=\"position:absolute;bottom: -9px;right: 0px;width: 66%;pointer-events:none;z-index:999;\" src=\"https://cdn.h5ds.com/space/files/600972551685382144/20240307/689876818574024704.webp\" alt=\"Image\" referrerpolicy=\"no-referrer\"></a>' +\n                        '</div>');\n                t.msg = t.msg.replace(/【(.*?)】/g, function (match, p1) {\n                    if (/^2\\d{5}_202824_\\d{1,3}$/.test(p1)) {\n                        // 卡片门icon\n                        return `<a><img src=\"https://files.getquicker.net/_sitefiles/_guides/52593d69-c99a-4367-8b98-08d9a65be47e/2022/03/27/${p1}.gif\" alt=\"${p1}\" style=\"max-width: 3rem;\"></a>`;\n                    } else if (/^\\d{6}_202824_\\d{3}$/.test(p1) || /^234433_202824_1$/.test(p1)) {\n                        // Quicker-GIF icon\n                        return `<a><img src=\"https://files.getquicker.net/_sitefiles/_guides/52593d69-c99a-4367-8b98-08d9a65be47e/2022/07/06/${p1}.gif\" alt=\"${p1}\" style=\"max-width: 3rem;\"></a>`;\n                    } else if (/^\\d+_202824_\\d+$/.test(p1)) {\n                        // Quicker PNG icon\n                        return `<a><img src=\"https://files.getquicker.net/_sitefiles/_guides/52593d69-c99a-4367-8b98-08d9a65be47e/2022/07/04/${p1}.png\" alt=\"${p1}\" style=\"max-width: 3rem;\"></a>`;\n                    } else if (p1.startsWith('quicker/')) {\n                        var fname = p1.replace('quicker/', '');\n                        return `<a><img src=\"https://files.getquicker.net/_sitefiles/_guides/52593d69-c99a-4367-8b98-08d9a65be47e/2022/07/04/${fname}.png\" alt=\"${fname}\" style=\"max-width: 3rem;\"></a>`;\n                    } else if (p1.includes('blob') || p1.includes('comfy')) {\n                        return `<a><img src=\"https://npm.elemecdn.com/blobcat@1.0.0/${p1}.png\" alt=\"${p1}\" style=\"max-width: 3rem;\"></a>`;\n                    } else if (p1.includes('bb_')) {\n                        return `<a><img src=\"https://unpkg.com/@waline/emojis@1.1.0/bilibili/${p1}.png\" alt=\"${p1}\" style=\"max-width: 3rem;\"></a>`;\n                    } else if (p1.includes('tuzki')) {\n                        return `<a data-fancybox=\\\"gallery\\\" data-src=\\\"https://tools.kalvinbg.cn/static/image/emotion/${p1}.gif\\\"><img src=\\\"https://tools.kalvinbg.cn/static/image/emotion/${p1}.gif\\\" alt=\\\"${p1}\\\" style=\\\"max-width: 4rem;\\\"></a>`;\n                    } else if (p1.includes('long') || p1.includes('iq')) {\n                        return `<a><img src=\"https://emoticons.z-l.top/${p1}.png\" alt=\"${p1}\" style=\"max-width: 3rem;\"></a>`;\n                    }\n                    else {\n                        return `<a><img src=\"https://cdn.jsdmirror.com/gh/btwoa/Fluent-Emoji-3D/${p1}.gif\" alt=\"${p1}\" style=\"max-width: 3rem;\"></a>`;\n                    }\n                });\n\n                // v: 这里是文字转语音的代码\n                t.msg = t.msg.replace(/\\/?v:([^<]*)?(?:<a[^>]*>[^<]*<\\/a>)?/, function (match, $1) {\n                    // id 必须全局唯一，不能拿消息文本拼：同内容的两条消息会撞 id。\n                    const uid = ctrmUid(\"tts\");\n                    const audioId = `audio-${uid}`;\n                    const buttonId = `play-button-${uid}`;\n                    const textId = `transcribe-text-${uid}`;\n                    const imgId = `img-${uid}`;\n                    const barId = `audio-bar-${uid}`;\n                    const transcribeId = `transcribe-button-${uid}`;\n\n                    const html = `\n    <a class=\"ctrm-tts-pill\" style=\"display: inline-flex; align-items: center; text-decoration: none; color: inherit; border: 1px solid var(--cx-line); border-radius: 999px; padding: 4px 8px; background-color: #fff; transition: background-color 0.3s, border-color 0.3s; cursor: pointer;\">\n        <img id=\"${imgId}\" src=\"//dh.z-l.top/js/语音.svg\" alt=\"audio icon\" style=\"width: 24px; height: 24px; margin-right: 8px;\">\n        <audio id=\"${audioId}\" preload=\"metadata\" style=\"display: none;\">\n            <source src=\"https://dict.youdao.com/dictvoice?audio=${$1}&le=zh\" type=\"audio/mp3\">\n        </audio>\n        <span id=\"${buttonId}\" style=\"margin-left: 8px; font-size: 0.9rem; color: var(--cx-ink-2);\">加载中...</span>\n        <button id=\"${transcribeId}\" style=\"margin-left: 8px; border: none; background: transparent; cursor: pointer;\">\n            <img src=\"//dh.z-l.top/js/语音转文字.svg\" alt=\"转文字\" style=\"width: 24px; height: 24px;\">\n        </button>\n    </a>\n    <div id=\"${textId}\" style=\"display: none; margin-top: 8px; font-size: 0.9rem; color: var(--cx-ink);\"></div>\n    <div style=\"background: rgba(47,36,41,.12); height: 4px; border-radius: 2px; margin-top: 4px; width: 100%;\">\n        <div id=\"${barId}\" style=\"background: var(--cx-brand); height: 100%; border-radius: 2px; width: 0;\"></div>\n    </div>\n    `;\n\n                    setTimeout(() => {\n                        const button = document.getElementById(buttonId);\n                        const audio = document.getElementById(audioId);\n                        const imgElement = document.getElementById(imgId);\n                        const audioBar = document.getElementById(barId);\n                        const transcribeButton = document.getElementById(transcribeId);\n                        const textElement = document.getElementById(textId);\n                        // 消息可能已被清掉（重连会 remove 所有 .ctrm-dialog-item），那时这些全是 null\n                        if (!button || !audio || !imgElement || !audioBar || !transcribeButton || !textElement) return;\n\n                        audio.addEventListener('loadedmetadata', () => {\n                            const duration = formatTime(audio.duration);\n                            button.textContent = duration;\n                        });\n\n                        audio.addEventListener('timeupdate', () => {\n                            const remainingTime = audio.duration - audio.currentTime;\n                            button.textContent = formatTime(remainingTime);\n                            const lengthPercentage = (audio.currentTime / audio.duration) * 100;\n                            audioBar.style.width = `${lengthPercentage}%`;\n                        });\n\n                        audio.addEventListener('ended', () => {\n                            button.textContent = formatTime(audio.duration);\n                            audioBar.style.width = '100%';\n                            imgElement.classList.remove('playing');\n                        });\n\n                        // 整个 <a> 都是播放/暂停的点击区\n                        button.parentElement.addEventListener('click', () => {\n                            if (audio.paused) {\n                                audio.play();\n                                imgElement.classList.add('playing');\n                            } else {\n                                audio.pause();\n                                imgElement.classList.remove('playing');\n                            }\n                        });\n\n                        transcribeButton.addEventListener('click', (e) => {\n                            e.stopPropagation();\n                            if (textElement.style.display === 'none') {\n                                textElement.style.display = 'block';\n                                textElement.textContent = '';\n                                typeWriter(textElement, $1);\n                            } else {\n                                textElement.style.display = 'none';\n                                textElement.textContent = '';\n                            }\n                        });\n                    }, 0);\n\n                    return html;\n                });\n\n                function typeWriter(element, text, i = 0) {\n                    if (i < text.length) {\n                        element.textContent += text.charAt(i);\n                        i++;\n                        setTimeout(() => typeWriter(element, text, i), 100);\n                    }\n                }\n\n                function formatTime(seconds) {\n                    const minutes = Math.floor(seconds / 60);\n                    const secs = Math.floor(seconds % 60);\n                    return `${String(minutes).padStart(2, '0')}:${String(secs).padStart(2, '0')}`;\n                }\n\n                // end: 这里是文字转语音的代码\n                t.msg = t.msg.replace(/(https?:\\/\\/[^\\s<>\"]+)(?![^<>]*>.*<\\/a>)/g, function (match, url) {\n                    const currentHostname = window.location.hostname;\n\n                    // new URL 遇到畸形串会抛 TypeError，而这里是 H() 的同步流程，\n                    // 抛出去就会打断本条及之后所有消息的渲染。\n                    let hostname, origin;\n                    try {\n                        const u = new URL(url);\n                        hostname = u.hostname;\n                        origin = u.origin;\n                    } catch (e) {\n                        return match;\n                    }\n\n                    // 黑名单域名列表,将需要不转为url卡片的域名填这里\n                    const blacklist = ['dict.youdao.com', 'npm.elemecdn.com', 'api.cenguigui.cn', 't.tutu.to', 'img.z-l.top', 'imgdd.com', 'tucdn.wpon.cn', 'share-text.org'];\n\n                    if (blacklist.includes(hostname)) {\n                        return match;\n                    }\n\n                    const isSameDomain = hostname === currentHostname;\n\n                    // 白名单域名列表\n                    const safeDomains = ['http://localhost:3000', 'bilibili.com', '88lin.github.io', '*.88lin.eu.org', 'jasnode.github.io'];\n\n                    // 白名单域名及其二级域名\n                    const isSafeDomain = safeDomains.some(domain => {\n                        const regex = new RegExp(`(?:^|\\\\.)${domain.replace('.', '\\\\.')}$`);\n                        return regex.test(hostname);\n                    });\n\n                    // 直接取站点自己的图标：先 /favicon.ico，失败由 onerror 按 data-ic 的顺序往下试\n                    // （实测 20 个站 18 个命中，ico 14 / svg 3 / apple-touch-icon 1），全挂才用兜底图。\n                    var faviconUrl = origin + '/favicon.ico';\n                    var faviconRest = origin + '/favicon.png|' + origin + '/favicon.svg|' + origin + '/apple-touch-icon.png';\n\n                    const tooltipMessage = isSameDomain\n                        ? '<div class=\"tag-link-tips\" style=\"border-bottom: 1px solid rgba(47,122,79,.4); padding-bottom: 4px; font-size: .7rem; color: #2f7a4f; font-weight: 400; pointer-events: none;\">站内链接，可放心访问</div>'\n                        : isSafeDomain\n                            ? '<div class=\"tag-link-tips\" style=\"border-bottom: 1px solid rgba(47,122,79,.4); padding-bottom: 4px; font-size: .7rem; color: #2f7a4f; font-weight: 400; pointer-events: none;\">链接域名在白名单中，可放心访问<img src=\"https://cdn.jsdmirror.com/gh/btwoa/Fluent-Emoji-3D/%E6%8B%89%E7%82%AE%E5%BD%A9%E5%B8%A6.gif\" icon=\"反手食指向左指\" style=\"height: 1.5rem; display: inline;\"></div>'\n                            : '<div class=\"tag-link-tips\" style=\"border-bottom: 1px solid var(--cx-hairline); padding-bottom: 4px; font-size: .6rem; color: var(--cx-ink-2); font-weight: 400; pointer-events: none;\">引用站外地址，不保证链接的可用性和安全性</div>';\n\n                    const linkCard = '<a class=\"tag-Link\" target=\"_blank\" href=\"' + url + '\" rel=\"external nofollow\" title=\"即将进入' + hostname + '\" style=\"background: #fff; border-radius: 12px !important; display: flex; border: 1px solid rgba(47,36,41,.10); box-shadow: 0 1px 4px rgba(47,36,41,.05); flex-direction: column; padding: .3rem 0.9rem .6rem; border-width: 1px !important;\">' +\n                        tooltipMessage +\n                        '<div class=\"tag-link-bottom\" style=\"display: flex; margin-top: .5rem; align-items: center; justify-content: space-around; pointer-events: none;\">' +\n                        '<div class=\"tag-link-left\" style=\"width: 30px; min-width: 30px; height: 30px; background-size: cover !important; border-radius: 999px; background: rgba(242,118,155,.16); pointer-events: none; display: flex;\">' +\n                        '<img loading=\"lazy\" referrerpolicy=\"no-referrer\" data-ic=\"' + faviconRest + '\" onerror=\"var l=this.dataset.ic?this.dataset.ic.split(\\'|\\'):[];this.dataset.ic=l.slice(1).join(\\'|\\');if(!l.length)this.onerror=null;this.src=l[0]||\\'https://go.88lin.eu.org/favicon.svg\\'\" style=\"padding: 0; margin: auto; font-size: 24px; width: 30px; border-radius: 999px; color: darkred;\" src=\"' + faviconUrl + '\" alt=\"Favicon\" class=\"tag-link-favicon\">' +\n                        '</div>' +\n                        '<div class=\"tag-link-right\" style=\"margin-left: 1rem; pointer-events: none;width: calc(100% - 5.5rem);\">' +\n                        '<div class=\"siteDesc\" style=\"font-size: 0.9rem; line-height: 1.2; font-weight: 700; pointer-events: none; color: var(--cx-ink); word-break: break-all; text-overflow: ellipsis; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden;\">' + hostname + '</div>' +\n                        '<div style=\"font-size: .7rem; color: var(--cx-ink-3); font-weight: 400; margin-top: 8px; pointer-events: none; line-height: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\">' + url + '</div>' +\n                        '</div>' +\n                        '<i class=\"icon-arrow-right-s-line\" style=\"margin-left: auto; filter: opacity(0.5); font-size: 1.5rem; padding-left: .5rem; pointer-events: none;\">🔗</i>' +\n                        '</div>' +\n                        '</a>';\n\n                    return linkCard;\n                });\n\n\n                // 语音消息：只渲染一个 audio[src]，优先用本地 blob。扩展名不能只认 .webm ——\n                // iOS 录出来是 mp4 容器，只认 webm 的话 iOS 发的语音谁都看不到气泡。\n                t.msg = t.msg.replace(/\\[语音消息 (\\d{2}:\\d{2})\\]\\s*(https?:\\/\\/[^\\s<>\"]+\\.(?:webm|mp4|m4a|ogg|mp3|wav))/g, function (_, duration, url) {\n                    var uid = ctrmUid(\"voice\");\n                    var localSrc = '';\n                    if (window._myVoiceBlobs && window._myVoiceBlobs[url] && t.id === s) {\n                        localSrc = window._myVoiceBlobs[url];\n                    }\n                    return `\n    <div class=\"ctrm-voice-bubble\" id=\"${uid}\">\n      <button class=\"ctrm-voice-play\" type=\"button\" title=\"播放/暂停\">\n        <svg class=\"icon-play\" viewBox=\"0 0 24 24\" width=\"20\" height=\"20\"><polygon points=\"6,4 20,12 6,20\" fill=\"#fff\"/></svg>\n        <svg class=\"icon-pause\" viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" style=\"display:none;\"><rect x=\"6\" y=\"4\" width=\"4\" height=\"16\" fill=\"#fff\"/><rect x=\"14\" y=\"4\" width=\"4\" height=\"16\" fill=\"#fff\"/></svg>\n      </button>\n      <div class=\"ctrm-voice-progress\"><div class=\"ctrm-voice-bar\"></div></div>\n      <span class=\"ctrm-voice-time\">${duration}</span>\n      <audio preload=\"metadata\" style=\"display:none;\" src=\"${localSrc || url}\"></audio>\n    </div>`;\n                });\n\n                // 语音气泡样式、语音播放委托、灯箱初始化都在 ctrmInitOnce() 里做一次，\n                // 不要挪回这里 —— 这个函数每条消息都跑一遍。\n                var e = (\n                    '\\n\\t\\t\\t\\t<div class=\"ctrm-dialog-item\">\\n\\t\\t\\t\\t\\t<div class=\"ctrm-dialog-sender\">\\n\\t\\t\\t\\t\\t\\t<span>' +\n                    t.name +\n                    '</span>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t<div class=\"ctrm-clearfix\">\\n\\t\\t\\t\\t\\t\\t<div class=\"ctrm-dialog-bubble ctrm-break\" style=\"background-color: ' +\n                    t.color +\n                    '\">\\n\\t\\t\\t\\t\\t\\t\\t' +\n                    t.msg +\n                    '\\n\\t\\t\\t\\t\\t\\t\\t<div class=\"ctrm-dialog-time\">\\n\\t\\t\\t\\t\\t\\t\\t\\t' +\n                    P(t.time, \"hours\") +\n                    \":\" +\n                    P(t.time, \"minutes\") +\n                    \"\\n\\t\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t\\t</div>\\n\\t\\t\\t\\t</div>\\n\\t\\t\\t\"\n                )\n                    .replace(/\\t/g, \"\")\n                    .replace(/\\n/g, \"\");\n\n                var n = i(e);\n\n                if (s === t.id) {\n                    n.addClass(\"ctrm-me\");\n                    var r = n.find(\".ctrm-dialog-sender span\").text();\n                    n.find(\".ctrm-dialog-sender span\").text(r + \"（我）\");\n                }\n\n                b.append(n);\n\n                // 必须在下面任何读版面的代码之前，让这一帧只重排一次\n                ctrmTrimHistory();\n\n                // 只给这条新消息里的灯箱元素做初始化\n                ctrmBindFancybox(n);\n\n                I();\n\n                // 折叠成球时来了新消息，让球边上闪一圈光晕。\n                // .ctrm-ding 必须挂在 #ctrm_ 上：光晕借的是 .ctrm-container 的 ::after，\n                // CSS 里选不到父级。.glow 不管视觉，只是压住模板里那条\n                // .glow{background:#fbe6c4!important}，不让球被拍成一块死色。\n                // 950ms 必须晚于 .9s 动画，早了动画会被掐断、直接跳回原样。\n                // 先摘类 + 读一次 offsetWidth 再挂回去，连着来消息时才能重新触发动画；\n                // 定时器 id 存在 DOM 节点上，因为这个函数每条消息都重新声明一次。\n                function showNewMessageHalo() {\n                    if (quiet || !m.hasClass(\"ctrm-close\")) return;\n                    var root = m[0];\n                    clearTimeout(root.cxHaloTimer);\n                    m.removeClass(\"ctrm-ding\");\n                    void root.offsetWidth;\n                    g.addClass(\"glow\");\n                    m.addClass(\"ctrm-ding\");\n                    root.cxHaloTimer = setTimeout(function () {\n                        m.removeClass(\"ctrm-ding\");\n                        g.removeClass(\"glow\");\n                    }, 950);\n                }\n                showNewMessageHalo();\n\n                // 仅在消息来源不是 SYSTEM 时发送邮件通知\n                // if (t.name !== 'SYSTEM') {\n                //     const emailMessage = `Time: ${P(t.time, \"hours\")}:${P(t.time, \"minutes\")}\\nSender: ${t.name}\\nMessage: ${t.msg}`;\n                //     fetch('https://email.z-l.top/api/send-email', {\n                //         method: 'POST',\n                //         headers: {\n                //             'Content-Type': 'application/json'\n                //         },\n                //         body: JSON.stringify({ message: emailMessage })\n                //     }).then(response => response.json())\n                //         .then(data => console.log(data))\n                //         .catch(error => console.error('Error sending email:', error));\n                // }\n            }\n\n            function z() {\n                clearInterval(heartbeatTimer), heartbeatTimer = null, O([]);\n                // 整段离线期只提示一次。这里不要 clearInterval(a)：那会把看门狗也停掉。\n                if (e || offlineNoticed || unloading) return;\n                offlineNoticed = !0,\n                    H({ time: Date.now(), id: 111111111211, name: \"SYSTEM\", msg: \"连接已断开，正在自动重连…（也可点 '😜' 立即重连）\" }, !0)\n            }\n\n\n            function I() { o && b.scrollTop(9999999) }\n\n            var chatThrottleUntil = 0;\n\n            function R() {\n                var t = w.val().slice(0, 700).trim(); // 上限 700，已与 textarea 的 maxlength 对齐\n                if (0 === t.length) return void ctrmToast(\"你好像什么也没有输入呢\");\n                if (!n || 1 !== n.readyState)\n                    return void ctrmToast(\"还没连上服务器，这条没发出去；重连后再点一次发送\", \"error\");\n                if (r) {\n                    // 被 5s 节流拦下必须提示：语音也走这条路（上传完塞进输入框再 click\n                    // .ctrm-emit），不提示的话整条语音就静默消失了。\n                    var left = Math.max(1, Math.ceil((chatThrottleUntil - Date.now()) / 1e3));\n                    return void ctrmToast(\"发得太快了，还要等 \" + left + \" 秒；内容已保留，稍后再点发送\", \"error\")\n                }\n                var e = { type: \"chat\", data: { msg: t }, char: L };\n                r = !0, chatThrottleUntil = Date.now() + 5e3,\n                    n.send(JSON.stringify(e)),\n                    setTimeout(function () { r = !1 }, 5e3)\n            }\n\n            // 手动重连（😜）。_() 自己会摘旧回调 + 关旧连接，这里只把退避状态归零；\n            // 不要在这里 n.close()，它的 onclose 会再排一次重连，等于开两条。\n            function W() {\n                e || (e = !0, reconnectDelay = 1e3, offlineNoticed = !1,\n                    clearTimeout(reconnectTimer), reconnectTimer = null,\n                    _(), b.find(\".ctrm-dialog-item\").remove(), w.val(\"\"),\n                    setTimeout(function () { e = !1 }, 2e3))\n            }\n\n            function B() {\n                var t = window.innerWidth;\n                t / window.innerHeight <= 1.2 ? m.addClass(\"ctrm-mobile\") : m.removeClass(\"ctrm-mobile\"), t <= 1210 || m.hasClass(\"ctrm-mobile\") ? v.hide() : m.hasClass(\"ctrm-mobile\") || v.show(), b.scrollTop(9999999)\n            }\n            // 折叠成球。animate 为真时走 cxFoldOut / cxOrbPop 两条动画，下面两个 setTimeout\n            // 的时长必须跟它们对齐。初始化那次传 false：刷新时不该有任何动作。\n            function foldToBall(animate) {\n                if (m.hasClass(\"ctrm-close\") || m.hasClass(\"ctrm-folding\")) return;\n                S.hide(), D.hide(), v.hide(), E.show();\n                if (!animate) return void m.addClass(\"ctrm-close\");\n                m.addClass(\"ctrm-folding\");\n                setTimeout(function () {\n                    m.removeClass(\"ctrm-folding\").addClass(\"ctrm-close ctrm-popin\");\n                    setTimeout(function () { m.removeClass(\"ctrm-popin\") }, 320);\n                }, 190);\n            }\n            // 用 pagehide 而不是 beforeunload：手机浏览器（尤其 iOS Safari）常常不触发后者。\n            // unloading 必须由下面的 pageshow 放开 —— 页面会从 bfcache 原样恢复，\n            // 不放开就永远不再重连了。\n            window.addEventListener(\"pagehide\", function () {\n                unloading = !0, clearTimeout(reconnectTimer), reconnectTimer = null,\n                    clearInterval(heartbeatTimer), clearInterval(a);\n                try { n && n.close() } catch (err) { }\n            });\n            window.addEventListener(\"pageshow\", function (ev) {\n                unloading = !1;\n                // pageshow 首次加载时也会触发（那时 _() 刚开始连），别把在飞的连接拆掉重来\n                (ev && ev.persisted || !n || 2 === n.readyState || 3 === n.readyState) && ctrmReconnectNow(\"页面恢复\")\n            });\n            // 切后台时定时器被降频甚至冻结，心跳停摆、连接被代理掐掉。所以一回前台就查一次：\n            // 连接还在就补发一帧心跳探活，已经断了就立刻重连。\n            document.addEventListener(\"visibilitychange\", function () {\n                if (document.hidden || unloading) return;\n                n && 1 === n.readyState ? ctrmSendHello() : ctrmReconnectNow(\"回到前台\")\n            });\n            // 换 WiFi / 切蜂窝：旧连接通常是半开的，onclose 十几分钟都不来\n            window.addEventListener(\"online\", function () { ctrmReconnectNow(\"网络恢复\") });\n            window.addEventListener(\"offline\", function () { z() });\n            ctrmInitOnce();\n            // 回车发送只在 keydown 里处理，且必须跳过输入法组合态，否则中文选词那一下回车\n            // 会把半句话发出去。\n            var ctrmComposing = !1,\n                ctrmComposeEndAt = 0;\n            w.on(\"compositionstart\", function () { ctrmComposing = !0 });\n            w.on(\"compositionend\", function () { ctrmComposing = !1, ctrmComposeEndAt = Date.now() });\n\n            function ctrmIsEnterSend(t) {\n                if (13 !== t.keyCode && \"Enter\" !== t.key) return !1;\n                // isComposing 得从原生事件上取（不在 jQuery 属性白名单里）；229 是部分安卓输入法的组合态 keyCode\n                var native = t.originalEvent || t;\n                if (ctrmComposing || native.isComposing || 229 === t.keyCode) return !1;\n                // 少数输入法把 compositionend 排在 keydown 之前，只能靠时间差挡掉选词那一下回车\n                return !(80 > Date.now() - ctrmComposeEndAt)\n            }\n            document.body.addEventListener(\"click\", j), window.addEventListener(\"popstate\", j), m.on(\"click\", function (t) { return t.stopPropagation() }), m.on(\"touchstart\", function (t) { return t.stopPropagation() }), m.on(\"touchend\", function (t) { return t.stopPropagation() }), m.on(\"touchmove\", function (t) { return t.stopPropagation() }), S.click(function (t) { foldToBall(!0), t.stopPropagation() }), g.click(function () { m.hasClass(\"ctrm-close\") && (m.removeClass(\"ctrm-close\"), S.show(), D.show(), E.show(), B()) }), D.click(W), x.click(R), w.on(\"keydown\", function (t) {\n                // 组合态不 preventDefault：那一下回车要留给输入法上屏\n                ctrmIsEnterSend(t) && (t.preventDefault(), R())\n            }), b.on(\"scroll\", function () {\n                var t = b[0],\n                    e = t.clientHeight,\n                    n = t.scrollTop,\n                    r = t.scrollHeight;\n                o = e + n < .9 * r ? (y.show(), !1) : (y.hide(), !0)\n            }), y.click(function () { y.hide(), o = !0, I() }), T.click(function () { m.find(\".ctrm-domain-filter\").hide() }), B(), p = document.querySelector(\"script[src*=z-l]\"),\n                // 默认折叠成球。想让它一进来就展开，在引入本脚本的 <script> 上加 open 属性。\n                h = !(p && null !== p.getAttribute(\"open\")),\n                // 折叠必须和 m.show() 在同一个 tick 里做，否则会先闪一下展开态。不带动画。\n                (m.hasClass(\"ctrm-mobile\") || h) && foldToBall(!1), m.show(), window.addEventListener(\"resize\", B)\n        }()\n    }, { \"./dom.js\": 3, \"jQuery-slim\": 1 }],\n\n    3: [function (t, e, n) {\n        \"use strict\";\n        var r = `\n<!-- 图床插件 -->\n<!--<script src=\"https://cdn.h5ds.com/space/files/600972551685382144/20240715/737001333214105600.js\" data-url=\"https://image.teammoeg.com/upload\" data-auto-insert=\"direct-links\"></script>-->\n<!--<script async src=\"js/pup.js\" data-url=\"https://tutu.to/upload\" data-auto-insert=\"direct-links\"></script>-->\n<script async src=\"https://cdn.h5ds.com/space/files/600972551685382144/20250608/856129445817171968.js\" data-url=\"https://tutu.to/upload\" data-auto-insert=\"direct-links\"></script>\n\n<!-- css -->\n<link rel=\"stylesheet\" href=\"https://cdn.h5ds.com/space/files/600972551685382144/20250722/871856997280043008.css\">\n<!-- Fancybox CSS -->\n<link rel=\"stylesheet\" href=\"https://cdnjs.snrat.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.css\" />\n<!-- 引入 Fancybox JS -->\n<script src=\"https://cdnjs.snrat.com/ajax/libs/fancybox/3.5.7/jquery.fancybox.min.js\"></script>\n<script>\nvar OwO_demo = new OwO({\n    logo: '<svg fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" class=\"size-6\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15.182 15.182a4.5 4.5 0 0 1-6.364 0M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0zM9.75 9.75c0 .414-.168.75-.375.75S9 10.164 9 9.75 9.168 9 9.375 9s.375.336.375.75zm-.375 0h.008v.015h-.008V9.75zm5.625 0c0 .414-.168.75-.375.75s-.375-.336-.375-.75.168-.75.375-.75.375.336.375.75zm-.375 0h.008v.015h-.008V9.75z\"/></svg>表情包',\n    container: document.getElementsByClassName('OwO')[0],\n    target: document.getElementsByClassName('OwO-textarea')[0],\n    api: 'https://dh.z-l.top/assets/js/owo.json',\n    position: 'up',\n    width: '100%',\n    maxHeight: '250px'\n});\n</script>\n<style>\n.ctrm-voice-container {\n    position: relative;\n    display:table;\n}\n\n.ctrm-voice-btn {\n    cursor: pointer;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    transition: background .2s ease, color .2s ease, border-color .2s ease;\n}\n\n/* 这排按钮是 float 排在一行里，hover 不能放大或位移，会压到邻居身上，只换底色。 */\n.ctrm-voice-btn:hover {\n    background: var(--cx-tint);\n}\n\n.recommend-tag:before {\n    border: 1px solid var(--cx-brand);\n    border-radius: 12px;\n    box-sizing: border-box;\n    content: \"\";\n    height: 200%;\n    left: 0;\n    pointer-events: none;\n    position: absolute;\n    top: 0;\n    transform: scale(.5);\n    transform-origin: 0 0;\n    width: 200%;\n}\n.recommend-tag{\n    color: var(--cx-brand-ink);\n    border-radius: 6px;\n    padding: 0 4px;\n    position: relative;\n    font-size: 10px;\n    font-weight: 600;\n    line-height: 16px;\n}\n/* 两处特异性都是踩过坑的，别简化：\n   1) 必须带 #ctrm_ —— 按钮的 class 是 \"sb ctrm-voice-btn\"，主题表里 #ctrm_ .sb 是\n      (1,1,0)，不带 id 的 (0,2,0) 反而压不过它。\n   2) 必须显式写出 :hover —— 不写就跟 #ctrm_ .sb:hover 平手、被后面的主题表压掉，\n      表现是录音中一碰鼠标整颗按钮变白、图标也白。带 :hover 的这条是 (1,3,0)。\n   底色用深粉：图标是白的，白配 #c23b6e 是 5:1，配 #f2769b 只有 2.6:1。 */\n#ctrm_ .ctrm-voice-btn.recording,\n#ctrm_ .ctrm-voice-btn.recording:hover {\n    background: var(--cx-brand-ink);\n    border-color: var(--cx-brand-ink);\n    color: #fff;\n}\n#ctrm_ .ctrm-voice-btn.recording svg,\n#ctrm_ .ctrm-voice-btn.recording:hover svg { stroke: #fff; }\n#ctrm_ .ctrm-voice-btn.recording .recommend-tag { display: none; }\n\n.ctrm-voice-timer {\n    color: var(--cx-warm);\n    font-variant-numeric: tabular-nums;\n}\n\n.ctrm-voice-recording-indicator {\n    position: absolute;\n    gap:8px;\n    top: -40px;\n    left: 50%;\n    transform: translateX(-50%);\n    background: rgba(42, 42, 51, .92);\n    color: white;\n    padding: 5px 10px;\n    border-radius: var(--cx-pill);\n    font-size: 12px;\n    white-space: nowrap;\n    align-items: center;\n    z-index: 1;\n}\n\n.ctrm-voice-wave {\n    display: inline-block;\n    width: 20px;\n    height: 20px;\n    background: url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 100 100\"><circle cx=\"20\" cy=\"50\" r=\"10\" fill=\"white\"><animate attributeName=\"r\" values=\"10;20;10\" dur=\"1s\" repeatCount=\"indefinite\"/></circle><circle cx=\"50\" cy=\"50\" r=\"10\" fill=\"white\"><animate attributeName=\"r\" values=\"10;20;10\" dur=\"1s\" begin=\"0.2s\" repeatCount=\"indefinite\"/></circle><circle cx=\"80\" cy=\"50\" r=\"10\" fill=\"white\"><animate attributeName=\"r\" values=\"10;20;10\" dur=\"1s\" begin=\"0.4s\" repeatCount=\"indefinite\"/></circle></svg>') no-repeat center;\n    background-size: contain;\n}\n</style>\n<style>\n/* ==========================================================================\n   茉灵聊天室 · 白天模式配色（樱花粉）\n\n   两条硬规矩：\n   1) 只碰 color / background / border-color / border-radius。padding / margin /\n      width / height / font-size / border-width 一律不动 —— 工具条那排按钮是 float\n      排在一行里的，给 .sb 多加 2px padding 就会挤成两行。\n   2) 底色留白：主色只出现在描边、图标、按钮和低透明度的悬停底上，大面积保持白色。\n      .ctrm-panel / .ctrm-online 的底色一个都别动。\n\n   描边一律用墨色低透明度，不用彩色 —— 会跟气泡里服务端下发的随机色打架。\n   阴影只给表情面板和图床下拉这两个浮层，别处一律没有。\n   位置要紧：必须排在上面那个 CDN 主样式表 <link> 之后，靠文档顺序压过它，\n   才不用满篇 !important。CSS 里不能写 // 注释，会吞掉后面的声明。\n   ========================================================================== */\n:root {\n    /* 粉色分两档，别混用：--cx-brand 亮粉只做\"面\"（实底按钮、描边、虚线、hover 边框），\n       --cx-brand-ink 深粉只做\"字\"（图标、链接、@提示、hover 文字）。亮粉当文字只有 2.6:1。 */\n    --cx-brand: #f2769b;\n    --cx-brand-deep: #e05a84;\n    --cx-brand-ink: #c23b6e;\n    --cx-warm: #e8a94f;\n    /* 墨色也是暖调的（带一点红），跟粉放一起才像一套。ink-2 7.7:1、ink-3 4.7:1 */\n    --cx-ink: #2f2429;\n    --cx-ink-2: #5f4f56;\n    --cx-ink-3: #7f6e75;\n    --cx-hairline: rgba(47, 36, 41, .10);\n    --cx-line: rgba(47, 36, 41, .16);\n    --cx-tint: rgba(242, 118, 155, .09);\n    --cx-tint-2: rgba(242, 118, 155, .16);\n    /* 唯一一档常规阴影，几乎看不出来，只用在链接卡片这种\"卡片\"上 */\n    --cx-shadow: 0 1px 4px rgba(47, 36, 41, .05);\n    /* 浮层专用，也只是一层很淡的散开 */\n    --cx-shadow-pop: 0 4px 18px rgba(47, 36, 41, .10);\n    --cx-pill: 999px;\n}\n\n/* ---------- 外壳 ---------- */\n#ctrm_ { color: var(--cx-ink); }\n#ctrm_ .ctrm-container { border-top-right-radius: 2vw; }\n\n/* ---------- 标题栏 ---------- */\n/* 底部用 inset 画发丝线，不能用 border-bottom：.ctrm-title 高度是 8%，真边框会撑高 1px。 */\n#ctrm_ .ctrm-title {\n    /* 标题背景渐变色 */\n    background: linear-gradient(90deg, #ffdee9, #b5fffc) !important;\n    box-shadow: inset 0 -1px 0 var(--cx-hairline);\n}\n/* 有新消息时的闪烁底色。必须是暖色 —— 标题栏本身是粉蓝渐变，再闪一格粉根本看不出来。 */\n#ctrm_ .ctrm-title.glow { background: #fbe6c4 !important; }\n#ctrm_ .ctrm-title-span { font-weight: 600; }\n#ctrm_ .ctrm-title-span strong { font-weight: 600; }\n/* 在线人数。CDN 那套只在折叠态显示它（JS 一展开就 hide），聊着天反而看不见人数，\n   标题栏右边还空一大块。现在两个态都留着（见 O() 末尾的 E.show()），展开态就是标题后\n   面一串跟标题同粗的灰字，别做成胶囊 —— 标题栏本身已经是渐变底了。折叠态的角标样式在下面折叠段里，\n   选择器带 .ctrm-close、排在这条后面，压得住。 */\n#ctrm_ .ctrm-title-countwrap { margin-left: .35em; color: var(--cx-ink-2); font-weight: 600; }\n#ctrm_ .ctrm-title-count { color: var(--cx-brand-ink); }\n/* 手机端标题整行偏下 2~4px：.ctrm-title-span 的行高只有 3vw（390px 手机上 11.7px），\n   而里面那颗心是写死的 width=\"19px\" + vertical-align:middle，行盒被它顶高、baseline\n   跟着往下掉。把行盒撑到装得下内容，心改成跟着字号走。 */\n#ctrm_.ctrm-mobile .ctrm-title-span { height: 4.6vw; line-height: 4.6vw; }\n#ctrm_.ctrm-mobile .ctrm-title-span img { width: auto; height: 1em; }\n\n#ctrm_ .ctrm-title-close,\n#ctrm_ .ctrm-title-reconn {\n    background: #fff;\n    border-color: var(--cx-line);\n    color: var(--cx-brand-ink);\n    transition: background .18s, border-color .18s;\n}\n#ctrm_ .ctrm-title-close:hover,\n#ctrm_ .ctrm-title-reconn:hover { background: var(--cx-tint); border-color: var(--cx-brand); }\n\n/* ---------- 折叠态：右下角的悬浮光球 ---------- */\n/* 观感移植自 react-ai-orb（MIT）。原版是 6 个兄弟 div + 4 个 SVG blob，这边能用的\n   只有 .ctrm-title 那一小棵树，所以压成 7 个\"元素 / 伪元素\"：\n     .ctrm-title                球体（主渐变 + 外发光）\n     .ctrm-title::before        shape-a\n     .ctrm-title::after         shape-b   soft-light\n     .ctrm-title-span           glass     白色内圈高光（静止）\n     .ctrm-title-span>span:first-child  纯容器，不画东西\n       ::before                 shape-c   color-dodge\n       ::after                  shape-d   color\n     .ctrm-title-span strong    裁剪筐，收住光斑的 blur\n       ::before                 光斑 A    hard-light\n       ::after                  光斑 B    plus-lighter\n     .ctrm-title-countwrap      人数角标（照旧）\n   四条硬约束，改之前先看：\n   ① mix-blend-mode 只跟最近那个层叠上下文里已经画好的东西混。球体上写 isolation:isolate\n      把混合关在球里；中间两层容器 —— .ctrm-title-span 和它里面那个 span —— 绝对不能带\n      transform / opacity / filter / z-index / mix-blend-mode：一带就生成层叠上下文，\n      颜色立刻塌成一片死渐变。glass 那层原版的 opacity:.8 就是因此乘进 rgba 的 alpha 的。\n   ② 球体不能 overflow:hidden —— 人数角标要露在球外面。光斑那圈 blur 改用 strong 裁。\n   ③ 原版的 px 都是照它默认的 82px 球调的，这颗只有 42~58px，所以全部折算成 --cx-ball\n      的比例，缩放时观感才不变。\n   ④ 原版 shape-b/c/d 上的 filter:blur 会被变色那条动画整条顶掉（同一属性，动画优先），\n      所以那几层实际不带模糊，这里照它的实际观感写，没把 blur 补回去。\n   展开态一个字节都没动：下面每条选择器都带 .ctrm-close，展开的点击照旧绑在 .ctrm-title 上。 */\n#ctrm_.ctrm-close {\n    /* 球径。聊天窗关着它也一直挂在页面上，所以不跟着视口无限长大：1280 屏 42px，1920 屏 58px。 */\n    --cx-ball: clamp(42px, 3.2vw, 58px);\n    /* 这几条 position 是补 CDN 那张远程样式表的（值跟它写的完全一样）。widget 是 JS 插进\n       DOM 的，样式表还在路上时第一帧就已经画了，那一帧整条祖先链全是 static，下面所有\n       absolute 的光效层就按视口算百分比 —— 满屏一颗横躺的大椭圆。别删。 */\n    position: fixed;\n    bottom: clamp(14px, 1.1vw, 22px);\n    right: clamp(14px, 1.1vw, 22px);\n    /* CDN 给 #ctrm_ 和 .ctrm-container 都写了 transition:all .3s，不关掉的话折叠会被演成\n       \"一颗占掉四分之一屏的大球慢慢缩小\"。展开不受影响（那时读的是基础规则里那条）。 */\n    transition: none;\n    /* 新消息时球边上那圈光晕的颜色。默认跟着调色板走，想单独换就只改这一行。 */\n    --cx-orb-ring: var(--cx-orb-b-mid);\n    /* 光球调色板：换配色只动这一段，17 个色位跟 react-ai-orb 的 palette 一一对应。 */\n    --cx-orb-bg-start: rgb(236, 133, 255);\n    --cx-orb-bg-end: rgb(49, 138, 255);\n    --cx-orb-sh1: rgba(166, 35, 248, 0);\n    --cx-orb-sh2: rgba(121, 19, 255, 0.5);\n    --cx-orb-sh3: rgba(255, 255, 255, 0.9);\n    --cx-orb-sh4: rgb(253, 164, 250);\n    --cx-orb-a-start: rgb(133, 210, 255);\n    --cx-orb-a-end: rgba(115, 49, 255, 0);\n    --cx-orb-b-start: rgb(254, 245, 254);\n    --cx-orb-b-mid: rgb(253, 109, 255);\n    --cx-orb-b-end: rgba(203, 56, 255, 0);\n    --cx-orb-c-start: rgba(254, 254, 254, 0);\n    --cx-orb-c-mid: rgba(254, 111, 255, 0);\n    --cx-orb-c-end: #7006fe;\n    --cx-orb-d-start: rgba(254, 254, 254, 0);\n    --cx-orb-d-mid: rgba(142, 111, 255, 0);\n    --cx-orb-d-end: #00eeff;\n    --cx-orb-rot: 2s;\n    --cx-orb-hue: 2s;\n    --cx-orb-hue-deg: 120deg;\n    --cx-orb-main-hue: none;\n    --cx-orb-shine-a: 0.9;\n    --cx-orb-shine-b: 0.3;\n    --cx-orb-glow: 1;\n}\n#ctrm_.ctrm-close .ctrm-container {\n    /* 见上面 position 那段：这一层是光效层的定位参照，必须自己写死。 */\n    position: relative;\n    width: var(--cx-ball);\n    height: var(--cx-ball);\n    max-height: none;\n    /* 同上：宽高是在这一层身上变的，不关掉缩小动画照样跑。 */\n    transition: none;\n    /* 人数角标和光晕都要能露到球外面。折叠态里 .ctrm-panel / .ctrm-online 已经 display:none。 */\n    overflow: visible;\n}\n#ctrm_.ctrm-close .ctrm-panel,\n#ctrm_.ctrm-close .ctrm-online { display: none; }\n/* 防御性：▼ / 😜 正常是 JS 折叠时 hide() 掉的，这条保证它们不会糊在球里。展开时 JS 先\n   摘掉 .ctrm-close 再 show()，所以挡不住它们。 */\n#ctrm_.ctrm-close .ctrm-title-close,\n#ctrm_.ctrm-close .ctrm-title-reconn { display: none; }\n/* 标题里那颗心在球上没有意义（它是站点装饰，不是\"聊天\"这个语义），收掉。 */\n#ctrm_.ctrm-close .ctrm-title-span img { display: none; }\n\n/* ---- 球体本身 = .ctrm-title ---- */\n#ctrm_.ctrm-close .ctrm-title {\n    /* 同样是补 CDN 的：球里的光效层全是 absolute + 百分比，参照的就是这一层。 */\n    position: relative;\n    width: 100%;\n    height: 100%;\n    border-radius: 50%;\n    /* 两条 !important 是为了压住 #ctrm_ .ctrm-title 那条带 !important 的渐变底色 ——\n       不加，折叠态的球会被拍成标题栏的粉蓝渐变。 */\n    background-color: transparent !important;\n    background-image: radial-gradient(circle at 50% 30%, var(--cx-orb-bg-start) 0, var(--cx-orb-bg-end) 70%) !important;\n    box-shadow:\n        var(--cx-orb-sh1) 0 calc(var(--cx-ball) * .049 * var(--cx-orb-glow)) calc(var(--cx-ball) * .073 * var(--cx-orb-glow)) 0,\n        var(--cx-orb-sh2) 0 calc(var(--cx-ball) * .061 * var(--cx-orb-glow)) calc(var(--cx-ball) * .122 * var(--cx-orb-glow)) 0,\n        var(--cx-orb-sh3) 0 0 calc(var(--cx-ball) * .012) 0 inset,\n        var(--cx-orb-sh4) 0 calc(var(--cx-ball) * .012) calc(var(--cx-ball) * .085) 0 inset;\n    isolation: isolate;\n    animation: var(--cx-orb-main-hue);\n    transition: transform .18s;\n}\n#ctrm_.ctrm-close .ctrm-title:hover { transform: scale(1.06); }\n/* 新消息的提示只有球边上那一圈化开的光（见下面 .ctrm-ding），球本身不动也不变形。\n   所以这条 .glow 不负责任何视觉，纯防御：上面那条\n   #ctrm_ .ctrm-title.glow { background:#fbe6c4 !important }（CDN 里也有同名的）\n   会把整颗球拍成一块死色，这条 (1,3,0) 压过它们、把球原样留住。 */\n#ctrm_.ctrm-close .ctrm-title.glow {\n    background-color: transparent !important;\n    background-image: radial-gradient(circle at 50% 30%, var(--cx-orb-bg-start) 0, var(--cx-orb-bg-end) 70%) !important;\n}\n/* ---- 新消息那一圈光晕。球的 7 个伪元素都被光效占满了，所以借 .ctrm-container 的 ::after\n   （它一直空着，尺寸又刚好等于球）。z-index:-1 让它沉到球后面，不糊人数角标也不挡点击。\n   实心到 42% 再化开，中间那块正好被球自己挡掉，露出来的只有球边化开的那一圈。\n   类挂在 #ctrm_ 上而不是球上，因为 CSS 选不到父级；JS 那边 950ms 后摘掉。 ---- */\n#ctrm_.ctrm-close.ctrm-ding .ctrm-container::after {\n    content: \"\";\n    position: absolute;\n    top: -12%;\n    right: -12%;\n    bottom: -12%;\n    left: -12%;\n    z-index: -1;\n    border-radius: 50%;\n    background: radial-gradient(circle, var(--cx-orb-ring) 42%, transparent 76%);\n    pointer-events: none;\n    animation: cxOrbHalo .9s ease-out both;\n}\n/* ---- shape-a：不带混合模式、不带模糊，就是一层会转的浅色球面 ---- */\n#ctrm_.ctrm-close .ctrm-title::before {\n    content: \"\";\n    position: absolute;\n    left: 0; top: 0;\n    width: 87.8%; height: 87.8%;\n    border-radius: 50%;\n    background-image: radial-gradient(circle at 50% 90%, var(--cx-orb-a-start) 0, var(--cx-orb-a-end) 70%);\n    transform-style: preserve-3d;\n    animation: cxOrbSpin var(--cx-orb-rot) linear infinite,\n               cxOrbHue var(--cx-orb-hue) linear infinite;\n}\n/* ---- shape-b：soft-light，偏右下一点，转得比 a 慢 1.5 倍 ---- */\n#ctrm_.ctrm-close .ctrm-title::after {\n    content: \"\";\n    position: absolute;\n    left: 10%; top: 5%;\n    width: 87.8%; height: 87.8%;\n    border-radius: 50%;\n    background-image: radial-gradient(circle at 33% 12%, var(--cx-orb-b-start) 0, var(--cx-orb-b-mid) 26%, var(--cx-orb-b-end) 63%);\n    mix-blend-mode: soft-light;\n    transform-style: preserve-3d;\n    animation: cxOrbSpin calc(var(--cx-orb-rot) * 1.5) linear infinite,\n               cxOrbHue calc(var(--cx-orb-hue) * 1.5) linear infinite;\n}\n/* ---- glass：白色内圈高光，静止，不参与混合。挂在 .ctrm-title-span 上，87.8% 大小居中，\n   不能用 transform 居中（见约束①），只能算成 left/top：(82-72)/2/82 = 6.1%。\n   原版的 opacity:.8 同样因此乘进了下面两条 rgba 的 alpha（.5 × .8 = .4）。 ---- */\n#ctrm_.ctrm-close .ctrm-title-span {\n    /* 也是补 CDN 的：<span> 默认 inline，inline 盒子的百分比宽高会被忽略，光效层就散了。 */\n    position: absolute;\n    display: block;\n    left: 6.1%; top: 6.1%;\n    right: auto; bottom: auto;\n    margin: 0;\n    width: 87.8%; height: 87.8%;\n    border-radius: 50%;\n    box-shadow: inset 0 calc(var(--cx-ball) * -.012) calc(var(--cx-ball) * .073) calc(var(--cx-ball) * .012) rgba(255, 255, 255, .4),\n                inset 0 calc(var(--cx-ball) * .037) calc(var(--cx-ball) * .049) 0 rgba(255, 255, 255, .4);\n    /* \"聊天室\"三个字是裸文本节点，选不中，只能 font-size:0 连锅端，再把要留的那个元素的\n       字号加回来。\"(在线\"和\"人)\"同理，于是角标里干干净净只剩一个数字。 */\n    font-size: 0;\n    line-height: 0;\n}\n/* ---- 里面那个 span 只当容器，一笔都不画（见约束①）。必须写 :first-child —— 人数角标\n   .ctrm-title-countwrap 本身也是 .ctrm-title-span 的 span 子元素，不加会被一起撑成满圈，\n   那块白底直接把整颗球盖成白饼。 ---- */\n#ctrm_.ctrm-close .ctrm-title-span > span:first-child {\n    position: absolute;\n    left: 0; top: 0;\n    width: 100%; height: 100%;\n}\n/* shape-c / shape-d：原版是相对球体 (5%,5%)，这里的参照系是上面那个 87.8% 的框，\n   所以要减掉框自己的 6.1% 偏移：(5% - 6.1%) × 82/72 ≈ -1.25%。 */\n#ctrm_.ctrm-close .ctrm-title-span > span:first-child::before,\n#ctrm_.ctrm-close .ctrm-title-span > span:first-child::after {\n    content: \"\";\n    position: absolute;\n    left: -1.25%; top: -1.25%;\n    width: 100%; height: 100%;\n    border-radius: 50%;\n    transform-style: preserve-3d;\n}\n#ctrm_.ctrm-close .ctrm-title-span > span:first-child::before {\n    background-image: radial-gradient(circle at 31% 12%, var(--cx-orb-c-start) 0, var(--cx-orb-c-mid) 31%, var(--cx-orb-c-end) 77%);\n    mix-blend-mode: color-dodge;\n    opacity: .65;\n    animation: cxOrbSpin calc(var(--cx-orb-rot) * 2) linear infinite,\n               cxOrbHue calc(var(--cx-orb-hue) * 2) linear infinite;\n}\n#ctrm_.ctrm-close .ctrm-title-span > span:first-child::after {\n    background-image: radial-gradient(circle at 12% 80%, var(--cx-orb-d-start) 0, var(--cx-orb-d-mid) 31%, var(--cx-orb-d-end) 77%);\n    mix-blend-mode: color;\n    opacity: .55;\n    animation: cxOrbSpin calc(var(--cx-orb-rot) * 2.5) linear infinite,\n               cxOrbHue calc(var(--cx-orb-hue) * 2.5) linear infinite;\n}\n/* ---- strong 当裁剪筐：两颗光斑带着 blur，不收一下会糊到球外面去。\n   它要撑回整颗球那么大（82/72 = 113.9%，左上各退 5/72 = 6.94%）。 ---- */\n#ctrm_.ctrm-close .ctrm-title-span strong {\n    display: block;\n    position: absolute;\n    left: -6.94%; top: -6.94%;\n    width: 113.9%; height: 113.9%;\n    border-radius: 50%;\n    overflow: hidden;\n}\n/* ---- 两颗白色光斑。原版是 SVG blob + blur + scale 呼吸，这边没法加 SVG，改用一个\n   \"窄而高\"的椭圆渐变，模糊完就是原版那道斜高光。核心不能太白（横向只给 26%、alpha .8）：\n   满框的圆渐变会把整颗球洗成白饼。filter 在 transform 之前生效，scale 会把 blur 一起缩。 ---- */\n#ctrm_.ctrm-close .ctrm-title-span strong::before,\n#ctrm_.ctrm-close .ctrm-title-span strong::after {\n    content: \"\";\n    position: absolute;\n    left: 0; top: 0;\n    width: 100%; height: 100%;\n    border-radius: 50%;\n    background-image: radial-gradient(ellipse 26% 52% at 44% 40%, rgba(255, 255, 255, .8) 0, rgba(255, 255, 255, .45) 34%, rgba(255, 255, 255, 0) 72%);\n    filter: blur(calc(var(--cx-ball) * .183));\n}\n#ctrm_.ctrm-close .ctrm-title-span strong::before {\n    mix-blend-mode: hard-light;\n    opacity: var(--cx-orb-shine-a);\n    transform: scale(.4);\n    animation: cxOrbShineA 3.5s linear infinite;\n}\n#ctrm_.ctrm-close .ctrm-title-span strong::after {\n    left: 15%;\n    mix-blend-mode: plus-lighter;\n    opacity: var(--cx-orb-shine-b);\n    transform: scale(.6);\n    animation: cxOrbShineB 5s ease-in-out infinite;\n}\n/* ---- 人数角标。定位参照是 .ctrm-title-span（87.8% 大小、往右下偏了 6.1%），所以负偏移\n   要把这 6.1% 一起补回来：-.04 - .061 ≈ -.101（按球径算）。垂直居中走 line-height 不走\n   flex：这个元素的 display 是 jQuery 的 show()/hide() 在管的，别去跟它抢。 ---- */\n#ctrm_.ctrm-close .ctrm-title-countwrap {\n    position: absolute;\n    top: calc(var(--cx-ball) * -.101);\n    right: calc(var(--cx-ball) * -.101);\n    min-width: calc(var(--cx-ball) * .4);\n    height: calc(var(--cx-ball) * .4);\n    line-height: calc(var(--cx-ball) * .4);\n    padding: 0 calc(var(--cx-ball) * .07);\n    box-sizing: border-box;\n    border-radius: var(--cx-pill);\n    background: #fff;\n    color: var(--cx-brand-ink);\n    font-weight: 700;\n    text-align: center;\n    box-shadow: 0 1px 4px rgba(47, 36, 41, .16);\n}\n#ctrm_.ctrm-close .ctrm-title-count { font-size: calc(var(--cx-ball) * .24); }\n/* ---- 移动端：球给大一点好点，位置也让开一点边。\n   这条必须显式写 width/height —— CDN 那边 #ctrm_.ctrm-close.ctrm-mobile .ctrm-container\n   是 (1,3,0)，比上面那条 (1,2,0) 高一级，不重写的话宽度会被它的 65vw 拽回去。 ---- */\n#ctrm_.ctrm-close.ctrm-mobile {\n    --cx-ball: clamp(48px, 13vw, 64px);\n    bottom: clamp(14px, 3.5vw, 24px);\n    right: clamp(14px, 3.5vw, 24px);\n}\n#ctrm_.ctrm-close.ctrm-mobile .ctrm-container {\n    width: var(--cx-ball);\n    height: var(--cx-ball);\n}\n/* ---- 系统里关了动效的人，就别让球一直转。停下来颜色一层不少，只是不动了。 ---- */\n@media (prefers-reduced-motion: reduce) {\n    #ctrm_.ctrm-close .ctrm-title,\n    #ctrm_.ctrm-close .ctrm-title::before,\n    #ctrm_.ctrm-close .ctrm-title::after,\n    #ctrm_.ctrm-close .ctrm-title-span > span:first-child::before,\n    #ctrm_.ctrm-close .ctrm-title-span > span:first-child::after,\n    #ctrm_.ctrm-close .ctrm-title-span strong::before,\n    #ctrm_.ctrm-close .ctrm-title-span strong::after { animation: none; }\n    /* 光晕整个不要，不能停在半路 —— 停住等于球边上永远糊着一圈光。 */\n    #ctrm_.ctrm-close.ctrm-ding .ctrm-container::after { content: none; }\n}\n/* ---- 光球的五条动画。转的动 transform，变色的动 filter，并行互不干扰。名字全带 cxOrb\n   前缀，跟 CDN 里的 blink / ctrm-spin 不撞。 ---- */\n@keyframes cxOrbSpin { 0% { transform: rotate3d(1, 1, 1, 0deg) } 100% { transform: rotate3d(1, 1, 1, 1turn) } }\n@keyframes cxOrbHue { 0% { filter: hue-rotate(0deg) } 50% { filter: hue-rotate(var(--cx-orb-hue-deg)) } 100% { filter: hue-rotate(0deg) } }\n@keyframes cxOrbShineA { 0% { transform: scale(.4) } 50% { transform: scale(.1) } 100% { transform: scale(.4) } }\n@keyframes cxOrbShineB { 0% { transform: scale(.6) } 50% { transform: scale(.1) } 100% { transform: scale(.6) } }\n/* 球边上那圈光：涨开同时淡掉。opacity 在 18% 就到顶，所以是\"亮一下再散\"。 */\n@keyframes cxOrbHalo { 0% { transform: scale(.9); opacity: 0 } 18% { opacity: .7 } 100% { transform: scale(1.5); opacity: 0 } }\n\n/* ---------- 点 ▼ 收起来的那一下（这一段不在调参页那份可复制的块里）----------\n   不要去动宽高：宽高从 35vw/40vw 掉到 42px 的过渡就是\"一颗占掉四分之一屏的大球慢慢\n   缩小\"的来源。这里是面板带着 transform 缩着淡出（190ms），然后球自己弹进来（320ms）。\n   两个类都是 JS 临时挂的，刷新那次一个都不挂。 */\n#ctrm_.ctrm-folding .ctrm-container {\n    /* 落点大致对着球心，不然面板会往屏幕最角上钻，看着像掉下去了。 */\n    transform-origin: calc(100% - 22px) calc(100% - 22px);\n    animation: cxFoldOut .19s cubic-bezier(.4, 0, 1, 1) both;\n}\n#ctrm_.ctrm-close.ctrm-popin .ctrm-title {\n    /* 逗号后半截把球自己的变色动画接回来，跟上面 .glow 那条一个道理。 */\n    animation: cxOrbPop .32s cubic-bezier(.34, 1.5, .64, 1) both, var(--cx-orb-main-hue);\n}\n@keyframes cxFoldOut { 0% { transform: scale(1); opacity: 1 } 100% { transform: scale(.32); opacity: 0 } }\n@keyframes cxOrbPop { 0% { transform: scale(.35); opacity: 0 } 55% { transform: scale(1.1); opacity: 1 } 100% { transform: scale(1); opacity: 1 } }\n/* 关了动效的人：折叠还是一步到位，不闪不动。 */\n@media (prefers-reduced-motion: reduce) {\n    #ctrm_.ctrm-folding .ctrm-container,\n    #ctrm_.ctrm-close.ctrm-popin .ctrm-title { animation: none; }\n}\n\n/* ---------- 消息区 ---------- */\n/* .ctrm-panel / .ctrm-online 的底色一个都不动，保持原来的近白和浅灰。 */\n#ctrm_ .ctrm-dialog { scrollbar-width: thin; scrollbar-color: var(--cx-line) transparent; }\n#ctrm_ .ctrm-dialog::-webkit-scrollbar { width: 6px; }\n#ctrm_ .ctrm-dialog::-webkit-scrollbar-track { background: transparent; }\n#ctrm_ .ctrm-dialog::-webkit-scrollbar-thumb { background: var(--cx-line); border-radius: var(--cx-pill); }\n\n#ctrm_ .ctrm-dialog-item .ctrm-dialog-sender { color: var(--cx-ink-2); }\n#ctrm_ .ctrm-dialog-item .ctrm-dialog-time { color: var(--cx-ink-3); }\n\n/* 气泡只把靠说话人那侧的角收窄。底色一律不碰 —— 那是服务端下发的 t.color，写在内联\n   style 上（真要压饱和度得叠一层 background-image 渐变，background-color 压不过它）。 */\n#ctrm_ .ctrm-dialog-item .ctrm-dialog-bubble { border-radius: 14px 14px 14px 4px; }\n#ctrm_ .ctrm-dialog-item.ctrm-me .ctrm-dialog-bubble { border-radius: 14px 14px 4px 14px; }\n#ctrm_.ctrm-mobile .ctrm-dialog-item .ctrm-dialog-bubble { border-radius: 10px 10px 10px 3px; }\n#ctrm_.ctrm-mobile .ctrm-dialog-item.ctrm-me .ctrm-dialog-bubble { border-radius: 10px 10px 3px 10px; }\n\n/* @我 的高亮：深粉实底 + 白字（5:1），落在任何一种气泡底色上都读得出来。\n   padding 必须有、且要用 em 不用 px —— 999px 圆角会切进首尾那两个字，而移动端气泡是\n   font-size:2.8em，写死 px 在手机上小得看不见。nowrap 防止胶囊在行尾折成两半。\n   font-weight 只到 500：实底胶囊再加粗就变成\"喊\"，但也不降到 400（白字压饱和色显细）。 */\n#ctrm_ .ctrm-dialog-item .ctrm-b {\n    background: var(--cx-brand-ink);\n    color: #fff;\n    font-weight: 500;\n    border-radius: var(--cx-pill);\n    padding: .08em .5em;\n    white-space: nowrap;\n}\n\n#ctrm_ .ctrm-dialog-item a[data-fancybox] img { border-radius: 10px; }\n#ctrm_ .ctrm-dialog-item iframe { border-radius: 10px; }\n\n/* ---------- 回到底部 ---------- */\n/* 2.2vw = 跟标题栏那两颗圆按钮一样大，界面上的圆形按钮统一成一个尺寸。 */\n#ctrm_ .ctrm-bottom {\n    width: 2.2vw;\n    height: 2.2vw;\n    line-height: 2.2vw;\n    font-size: 1.3vw;\n    background: var(--cx-brand);\n    color: #fff;\n    border-radius: 50%;\n    transition: background .18s;\n    /* CDN 的 bottom:28% 让按钮落在工具条那一排上，看着像第五个工具按钮。输入框占\n       25%、工具条 27px，再往上留 8px 才是浮在消息区里面。 */\n    bottom: calc(25% + 35px);\n}\n#ctrm_ .ctrm-bottom:hover { background: var(--cx-brand-deep); }\n/* CDN 手机端是 3vw 的盒子 + transform:scale(2)，缩放基准 (0 40%) 会把按钮往右下角带、\n   越过消息区。直接写成 6vw：视觉尺寸跟缩放后一模一样，位置才算得准。 */\n#ctrm_.ctrm-mobile .ctrm-bottom {\n    width: 6vw;\n    height: 6vw;\n    line-height: 6vw;\n    font-size: 3.5vw;\n    transform: none;\n}\n\n/* ---------- 工具条按钮 ---------- */\n/* 盒子不能碰：height:22px / padding:2px 5px / margin 都算进了下面 .ctrm-dialog 的\n   calc 里，变大就折成两排。字号是唯一例外，窄屏那条规则要靠它收掉文字。 */\n#ctrm_ .sb {\n    border-radius: var(--cx-pill);\n    background: #fff;\n    border-color: var(--cx-line);\n    color: var(--cx-ink-2);\n    transition: background .18s, border-color .18s, color .18s;\n}\n#ctrm_ .sb:hover { background: var(--cx-tint); border-color: var(--cx-brand); color: var(--cx-brand-ink); }\n/* 表情按钮的 class 是 \"OwO-logo sb\"，上面那条 .sb 也管着它。面板展开时给个\"按下去了\"\n   的状态：带 #ctrm_ 是 (1,3,0)，压得住 CDN 里 (0,3,0) 的 .OwO.OwO-open .OwO-logo。 */\n#ctrm_ .OwO.OwO-open .OwO-logo { background: var(--cx-tint); border-color: var(--cx-brand); color: var(--cx-brand-ink); }\n\n/* 三颗图标各给一个色，扫一眼能分开，但都是同一套色里的 */\n#ctrm_ #file svg { color: var(--cx-brand-ink); }\n#ctrm_ .ThirdPartyImageHost svg { color: var(--cx-brand); }\n#ctrm_ #cfbed svg { color: var(--cx-warm); }\n\n/* ---------- 工具条必须永远只有一行 ---------- */\n/* 折成两排 = 输入框和发送键被顶到 .ctrm-container 外面裁掉（手机上的表现就是\"看不见\n   发送按钮\"）。按钮宽度是固定 px，容器宽度是 vw：五个带文字的按钮要 342px，而\n   .ctrm-panel 只有 24.5vw，视口窄于 1440px 就装不下了。窄屏只留图标 —— 按钮里的\n   文字是裸文本节点、选不中，只能 font-size:0 连锅端（svg 有固定宽高，不受影响），\n   顺手把 flex 的 gap 收掉，否则空文本节点还占 4px。 */\n@media (max-width: 1439px) {\n    #ctrm_ .ctrm-panel .sb { font-size: 0; gap: 0; }\n}\n#ctrm_.ctrm-mobile .ctrm-panel .sb { font-size: 0; gap: 0; }\n/* 这排按钮实际吃掉 22px 高 + 5px 下边距，CDN 的 calc 只减了 22px，差的 5px 一直在把\n   输入框往外顶（桌面端的表现是虚线框底边被裁掉一条）。 */\n#ctrm_ .ctrm-dialog { height: calc(75% - 27px); }\n\n/* ---------- 表情包面板 ---------- */\n/* CDN 那版是\"每颗表情一个灰底圆角格子 + 10px 外边距\"，格子比表情本身还显眼，横竖还各\n   一条滚动条。这里改成纯网格：格子不要底色，只在 hover 时给一层浅粉；圆角压到 6px\n   —— 表情本身只有 32px，圆角再大整颗就成药丸了。 */\n#ctrm_ .OwO .OwO-body {\n    border-color: var(--cx-hairline);\n    border-radius: 10px;\n    box-shadow: var(--cx-shadow-pop);\n    /* 内联的 width:100% 是 content-box，左右各 1px 边框会让面板比 .ctrm-panel 宽 2px、\n       压在右边的在线名单上。 */\n    box-sizing: border-box;\n}\n#ctrm_ .OwO.OwO-up .OwO-body { border-radius: 10px 10px 10px 2px; }\n/* display 只能写在 .OwO-items-show 上：.OwO-items 本身是 display:none，没选中的表情包\n   全靠它藏着，改成 flex 会所有包一起摊开。 */\n#ctrm_ .OwO .OwO-body .OwO-items.OwO-items-show {\n    display: flex;\n    flex-wrap: wrap;\n    align-content: flex-start;\n    gap: 4px;\n    padding: 8px;\n    overflow-x: hidden;\n    overflow-y: auto;\n    scrollbar-width: none;\n    -ms-overflow-style: none;\n}\n#ctrm_ .OwO .OwO-body .OwO-items::-webkit-scrollbar { width: 0; height: 0; }\n#ctrm_ .OwO .OwO-body .OwO-items .OwO-item {\n    margin: 0;\n    padding: 3px;\n    background: transparent;\n    border-radius: 6px;\n}\n/* hover 不要叠阴影，一颗小格子扛不住。抖动动画是原有的，留着。 */\n#ctrm_ .OwO .OwO-body .OwO-items .OwO-item:hover { background: var(--cx-tint); box-shadow: none; }\n/* 宽度就用内联那个 width:100% —— .OwO 是块级、和 .ctrm-panel 一样宽，再宽一点就压到\n   右边的在线名单上去了。别再往大改。\n   max-height 是内联的 197px，正好切在第五行中间，露半排脑袋。一格 40px + 4px 间距，\n   而 overflow 是裁在 padding 边上（上下各 8px 都算进可视区），所以要 4*44 - 16 = 168px：\n   第五行正好从可视区外面开始。面板是向上展开的（.OwO-up，底边贴着按钮），所以这个上限\n   同时管着它会不会盖到标题栏 —— 一样别往大改。 */\n#ctrm_ .OwO .OwO-body .OwO-items { max-height: 168px !important; }\n#ctrm_ .OwO .OwO-body .OwO-bar {\n    background: #fff;\n    border-top-color: var(--cx-hairline);\n    border-radius: 0 0 10px 10px;\n    color: var(--cx-ink-2);\n}\n/* 包名条是横向滚的，滚动条同样藏掉；左右各留 4px，否则选中态那块粉底会怼在面板\n   左下角的圆角上，露出一个直角。 */\n#ctrm_ .OwO .OwO-body .OwO-bar .OwO-packages { padding: 0 4px; scrollbar-width: none; -ms-overflow-style: none; }\n#ctrm_ .OwO .OwO-body .OwO-bar .OwO-packages::-webkit-scrollbar { width: 0; height: 0; }\n#ctrm_ .OwO .OwO-body .OwO-bar .OwO-packages li { border-radius: 6px; }\n#ctrm_ .OwO .OwO-body .OwO-bar .OwO-packages li:hover { background: var(--cx-tint); }\n#ctrm_ .OwO .OwO-body .OwO-bar .OwO-packages .OwO-package-active { background: var(--cx-tint-2); color: var(--cx-brand-ink); }\n\n/* ---------- 输入框 ---------- */\n/* 手绘虚线要保留：2px dashed + 圆角，宽度和虚线样式都不能动，只换颜色。 */\n#ctrm_ .ctrm-textarea textarea {\n    border: 2px dashed rgba(242, 118, 155, .45);\n    color: var(--cx-ink);\n}\n#ctrm_ .ctrm-textarea textarea:hover { border-color: rgba(242, 118, 155, .7); }\n#ctrm_ .ctrm-textarea textarea:focus { border-color: var(--cx-brand); }\n/* 两个 placeholder 选择器必须分开写：塞进同一个选择器列表，浏览器不认识的那个\n   会让整条规则作废。 */\n#ctrm_ .ctrm-textarea textarea::placeholder { color: var(--cx-ink-3); }\n#ctrm_ .ctrm-textarea textarea::-webkit-input-placeholder { color: var(--cx-ink-3); }\n\n#ctrm_ .ctrm-emit {\n    background: var(--cx-brand);\n    color: #fff;\n    border-radius: var(--cx-pill);\n    transition: background .18s;\n}\n#ctrm_ .ctrm-emit:hover { background: var(--cx-brand-deep); }\n#ctrm_.ctrm-mobile .ctrm-emit { border-radius: var(--cx-pill); }\n\n/* ---------- 右侧：在线名单 + 排行 ---------- */\n/* 底色同样是服务端下发的，同样保持原色，只改圆角和字色 */\n#ctrm_ .ctrm-online-item {\n    border-radius: var(--cx-pill);\n    color: var(--cx-ink);\n}\n/* 名单 75% + 域名榜 25% 已经占满，CDN 还给名单加了 padding-top:2%（百分比内边距按\n   宽度算，约 3px），content-box 下这 3px 是额外撑出来的，域名榜最后一行底部被\n   .ctrm-container 的 overflow:hidden 削掉一条。改 border-box 让内边距算进 75% 里。 */\n#ctrm_ .ctrm-online-wrap { box-sizing: border-box; }\n#ctrm_.ctrm-mobile .ctrm-online-item { border-radius: var(--cx-pill); }\n\n#ctrm_ .ctrm-domain-title { color: var(--cx-ink-2); }\n#ctrm_ .ctrm-domain-item {\n    color: var(--cx-brand-ink);\n    border-radius: var(--cx-pill);\n    transition: background .16s;\n}\n#ctrm_ .ctrm-domain-item:hover { background: var(--cx-tint); }\n\n/* ---------- JS 拼内联样式的几处，hover 只能写在这儿 ---------- */\n/* 分享链接卡片：内联里已经写了 border 和 box-shadow，要 !important 才压得住 */\n.tag-Link { transition: border-color .18s, box-shadow .18s; }\n.tag-Link:hover { border-color: var(--cx-brand) !important; }\n.ctrm-tts-pill:hover { background-color: var(--cx-tint) !important; border-color: var(--cx-brand) !important; }\n.ctrm-163-btn:hover { background: var(--cx-brand-deep) !important; }\n.img-host-dropdown [data-img-host] { color: var(--cx-ink); border-radius: 8px; transition: background .16s, color .16s; }\n.img-host-dropdown [data-img-host]:hover { background: var(--cx-tint); color: var(--cx-brand-ink); }\n</style>\n<!-- display:none 是初始状态，不是装饰：jQuery 的 append() 遇到 HTML 里的外链\n     script 标签会走同步 XHR（jQuery._evalUrl 的 async:false），插好的 DOM 就摊在那儿\n     等一个跨域往返，浏览器完全有机会先画一帧 —— 而那时 .ctrm-close 还没挂上（在下面\n     初始化那段的末尾才挂），远程样式表也可能还没到，画出来的就是\"展开态的大白板\"或者\n     一坨没样式的聊天 DOM，刷新时闪一下很明显。\n     初始化收尾处 m.show() 把它放出来，那一刻折叠与否已经定了，第一帧就是最终样子。 -->\n<div id=\"ctrm_\" style=\"z-index:10002!important;display:none;\" class=\" \" >\n    <div class=\"ctrm-container\">\n        <div class=\"ctrm-title\">\n            <span class=\"ctrm-title-span\">\n                <span>茉灵智库 の</span>\n                <strong style=\"color:var(--cx-brand-ink);\">匿名</strong>聊天室\n                <img width=\"19px\" src=\"https://img.z-l.top/file/dh/heart.gif\" alt=\"\">\n                <span class=\"ctrm-title-countwrap\" style=\"display: none;\">(在线<span class=\"ctrm-title-count\">0</span>人)</span>\n            </span>\n            <div class=\"ctrm-title-close\" title=\"下拉\">▼</div>\n            <div class=\"ctrm-title-reconn\" title=\"点我刷新\">😜</div>\n        </div>\n        <div class=\"ctrm-panel\">\n            <div class=\"ctrm-bottom\" style=\"display: none;\">⇩</div>\n            <div class=\"ctrm-dialog\"></div>\n            <button class=\"sb\" id=\"file\" title=\"选择文件\"><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M9.035 15.956a1.29 1.29 0 0 0 1.821-.004l6.911-6.911a3.15 3.15 0 0 0 0-4.457l-.034-.034a3.15 3.15 0 0 0-4.456 0l-7.235 7.234a5.031 5.031 0 0 0 7.115 7.115l6.577-6.577a1.035 1.035 0 0 1 1.463 1.464l-6.576 6.577A7.1 7.1 0 0 1 4.579 10.32l7.235-7.234a5.22 5.22 0 0 1 7.382 0l.034.034a5.22 5.22 0 0 1 0 7.383l-6.91 6.91a3.36 3.36 0 0 1-4.741.012l-.006-.005-.012-.011a3.346 3.346 0 0 1 0-4.732L12.76 7.48a1.035 1.035 0 0 1 1.464 1.463l-5.198 5.198a1.277 1.277 0 0 0 0 1.805z\" clip-rule=\"evenodd\"/></svg></button>\n             <button data-chevereto-pup-trigger data-target=\"#editor\" class=\"sb ThirdPartyImageHost\" title=\"选择第三方图床上传\"><svg class=\"flex-shrink-0 size-6\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M2.25 15.75l5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5l1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5zm10.5-11.25h.008v.008h-.008V8.25zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0z\"/></svg>图床上传</button>\n              <div class=\"img-host-dropdown\" style=\"display:none;position:fixed;background:#fff;border:1px solid var(--cx-hairline);border-radius:12px;padding:4px;box-shadow:var(--cx-shadow-pop);z-index:9999;text-align:center;box-sizing:border-box;\">\n                 <div data-img-host=\"tutu\" style=\"padding:6px 8px;cursor:pointer;font-size:13px;white-space:nowrap;\">tutu.to</div>\n                 <div data-img-host=\"imgdd\" style=\"padding:6px 8px;cursor:pointer;font-size:13px;white-space:nowrap;\">imgdd</div>\n                 <div data-img-host=\"tucdn\" style=\"padding:6px 8px;cursor:pointer;font-size:13px;white-space:nowrap;\">tucdn</div>\n                 <div data-img-host=\"share-text\" style=\"padding:6px 8px;cursor:pointer;font-size:13px;white-space:nowrap;\">share</div>\n             </div>\n            <button  class=\"sb\" id=\"cfbed\" title=\"上传图片\"><svg fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" fill-rule=\"evenodd\" d=\"M19.11 9.827c.26 0 .451-.192.488-.445.23-1.406.43-2.127.865-2.575.433-.447 1.131-.654 2.49-.89a.503.503 0 0 0 .446-.502.5.5 0 0 0-.447-.503c-1.358-.237-2.056-.445-2.49-.892-.433-.447-.634-1.168-.864-2.571-.037-.256-.227-.449-.488-.449-.257 0-.45.193-.49.447-.23 1.405-.432 2.126-.865 2.573s-1.13.655-2.486.892a.5.5 0 0 0-.451.503c0 .273.203.47.447.503 1.36.235 2.057.438 2.49.882.433.445.635 1.167.864 2.583.04.252.235.444.491.444M3.853 3.207h9.058v1.961H3.853v9.867l1.488-1.327a2.8 2.8 0 0 1 3.704-.037l1.011.867 3.428-2.886a2.8 2.8 0 0 1 3.621-.001l2.957 2.483v-2.346h1.907v7.601c0 1.084-.854 1.962-1.907 1.962H3.852c-1.052 0-1.906-.878-1.906-1.962V5.17c0-1.084.854-1.962 1.907-1.962m16.209 13.46l-4.163-3.497a.93.93 0 0 0-1.207 0l-4.038 3.399a.93.93 0 0 1-1.214-.006l-1.615-1.385a.933.933 0 0 0-1.235.012l-2.737 2.44v1.76h16.209zm-9.535-7.625c0 1.084-.854 1.962-1.907 1.962s-1.907-.878-1.907-1.962c0-1.083.854-1.961 1.907-1.961s1.907.878 1.907 1.961\" clip-rule=\"evenodd\"/></svg>上传图片</button>\n            <!-- 表情包 -->\n            <div class=\"OwO\"></div>\n            <!-- 在ctrm-panel内，ctrm-textarea之前添加 -->\n<div class=\"ctrm-voice-container\">\n    <button class=\"sb ctrm-voice-btn\" id=\"ctrm-voice-btn\" title=\"点击录音\">\n        <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n            <path d=\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\"></path>\n            <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\"></path>\n            <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\"></line>\n            <line x1=\"8\" y1=\"23\" x2=\"16\" y2=\"23\"></line>\n        </svg>\n        <div class=\"recommend-tag\">新</div>\n    </button>\n    <div class=\"ctrm-voice-recording-indicator\" style=\"display: none;\">\n        <div class=\"ctrm-voice-wave\"></div>\n        <span>正在录音</span>\n        <span class=\"ctrm-voice-timer\">00:00</span>\n    </div>\n</div>\n            <div class=\"ctrm-textarea\">\n                <textarea id=\"editor\" placeholder=\"拖拽或Ctrl+V至此可发图片...\" maxlength=\"700\" class=\"OwO-textarea\" contenteditable></textarea>\n                <div id=\"sendMessageButton\" class=\"ctrm-emit\">发送</div>\n                <div class=\"image-preview-overlay\" style=\"display: none;\"><img src=\"\" alt=\"preview\"></div>\n            </div>\n        </div>\n        <div class=\"ctrm-online\">\n            <div class=\"ctrm-online-wrap\"></div>\n            <div class=\"ctrm-domain\">\n                <div class=\"ctrm-domain-title\">本周尬聊网站排行</div>\n                <div class=\"ctrm-domain-wrap\"></div>\n                <div class=\"ctrm-domain-filter\">\n                    ~<br>\n                    <span class=\"ctrm-domain-show\">_</span>\n                </div>\n            </div>\n        </div>\n    </div>\n</div>    \n\n`;\n        // 别再把模板压成一行：<script> / <style> 里的 // 注释压平后会注释掉它后面的全部内容。\n        e.exports = r;\n    }, {}]\n}, {}, [2]);\n\n\n// Telegram 图床\n(function () {\n    if (window.imageUploaderInitialized) return;\n    window.imageUploaderInitialized = true;\n\n    function GM_xmlhttpRequest(details) {\n        const xhr = new XMLHttpRequest();\n        xhr.open(details.method, details.url, true);\n        xhr.onload = () => details.onload?.(xhr);\n        xhr.onerror = () => details.onerror?.(xhr);\n        xhr.send(details.data);\n    }\n\n    function GM_addStyle(css) {\n        const style = document.createElement(\"style\");\n        style.textContent = css;\n        document.head.appendChild(style);\n    }\n\n    const CONFIG = {\n        AUTH_CODE: \"z-l.top\",\n        SERVER_URL: \"https://img.z-l.top\",\n        UPLOAD_PARAMS: {\n            serverCompress: true,\n            uploadChannel: \"telegram\",\n            autoRetry: true,\n            uploadNameType: \"short\",\n            returnFormat: \"full\",\n            uploadFolder: \"dh\",\n        },\n        NOTIFICATION_DURATION: 3000,\n        ENABLE_MANUAL_UPLOAD: true,\n        UPLOAD_TRIGGER_SELECTOR: \"#cfbed\",\n        MARKDOWN_TEMPLATE: \"{url}\", // 插入原始链接\n        AUTO_COPY_URL: true,\n        ALLOWED_HOSTS: ['http://localhost:3000', 'bilibili.com', '88lin.github.io', '*.88lin.eu.org', 'jasnode.github.io'],\n        MAX_FILE_SIZE: 5 * 1024 * 1024,\n    };\n\n    const currentHost = location.hostname;\n    const isAllowed = CONFIG.ALLOWED_HOSTS.some(host => {\n        if (host === \"*\") return true;\n        if (host.startsWith(\"*.\")) return currentHost.endsWith(host.slice(1));\n        return currentHost === host;\n    });\n\n    GM_addStyle(`\n        .ctrm-textarea {\n            position: relative;\n            box-sizing: border-box;\n        }\n        .ctrm-textarea::after {\n            content: '释放上传图片';\n            position: absolute;\n            top: 0px;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background: rgba(242,118,155,0);\n            color: #fff;\n            font-size: 16px;\n            display: flex;\n            align-items: center;\n            justify-content: center;\n            pointer-events: none;\n            z-index: 9;\n            /* 保持 2px dashed —— 拖拽时这圈虚线要和输入框本身那圈手绘虚线对得上 */\n            border: 2px dashed rgba(242,118,155,0);\n            border-radius: 0.5rem;\n            opacity: 0;\n            transition: opacity 0.3s ease, background 0.3s ease, border-color 0.3s ease;\n            box-sizing: border-box;\n        }\n        .ctrm-textarea.dragover::after {\n            background: rgba(194,59,110,0.55);\n            border-color: rgba(255,255,255,0.85);\n            opacity: 1;\n            backdrop-filter: blur(1px);\n        }\n        .upload-warning {\n            position: fixed;\n            top: 10px;\n            right: 10px;\n            padding: 16px;\n            background-color: #b8362b;\n            color: white;\n            border-radius: 14px;\n            box-shadow: 0 4px 18px rgba(47,36,41,.16);\n            z-index: 10000;\n            font-size: 14px;\n            display: none;\n        }\n        .upload-warning a {\n            color: #fff;\n            text-decoration: underline;\n        }\n        .image-preview-overlay {\n          z-index: 10;\n          position: absolute;\n          /* 缩略图 60px + 边框，-80px 会压住工具条那一排按钮。往上挪够 27px 的工具条高度\n             才完全落在消息区里。 */\n          top: -92px;\n          left: 6px;\n          border-radius: 10px;\n          box-shadow: 0 4px 18px rgba(47,36,41,.10);\n          pointer-events: none;\n          transition: opacity 0.3s ease;\n        }\n        .image-preview-overlay img {\n          height: 60px;\n          width: auto;\n          border-radius: 10px;\n          border: 1px solid rgba(242,118,155,.5);\n        }\n    `);\n\n    const preview = document.querySelector(\".image-preview-overlay img\");\n\n    function showNotification(msg, type = \"info\") {\n        const el = document.createElement(\"div\");\n        el.textContent = msg;\n        // 跟 ctrmToast 用同一套语义色，免得同一个页面上冒出两种风格的提示条。\n        el.style = `position:fixed;top:10px;right:10px;padding:8px 16px;\n        background:${type === \"error\" ? \"#b8362b\" : type === \"success\" ? \"#2f7a4f\" : \"var(--cx-brand-ink)\"};\n        color:white;border-radius:16px;box-shadow:0 4px 18px rgba(47,36,41,.16);z-index:10000;font-size:14px`;\n        document.body.appendChild(el);\n        setTimeout(() => el.remove(), CONFIG.NOTIFICATION_DURATION);\n    }\n\n    function checkFileSize(file) {\n        if (file.size > CONFIG.MAX_FILE_SIZE) {\n            showNotification(`文件过大，最大 ${Math.round(CONFIG.MAX_FILE_SIZE / 1024 / 1024)}MB`, \"error\");\n            return false;\n        }\n        return true;\n    }\n\n    function insertRawUrl(url, element, filename = \"\") {\n        if (!element || typeof element.value !== \"string\") {\n            showNotification(\"插入失败，未找到输入框\", \"error\");\n            return;\n        }\n        const tpl = CONFIG.MARKDOWN_TEMPLATE\n            .replace(\"{url}\", url)\n            .replace(\"{filename}\", filename.replace(/\\.[^/.]+$/, \"\"));\n\n        // 必须判 typeof：光标在最前面时 selectionStart 是 0，用 || 会被 fallback 顶掉，\n        // 链接插到末尾。只有真的取不到选区才 fallback。\n        const start = typeof element.selectionStart === \"number\" ? element.selectionStart : element.value.length;\n        const end = typeof element.selectionEnd === \"number\" ? element.selectionEnd : element.value.length;\n        const text = element.value;\n        element.value = text.substring(0, start) + tpl + text.substring(end);\n        element.selectionStart = element.selectionEnd = start + tpl.length;\n        element.focus();\n\n        if (CONFIG.AUTO_COPY_URL && navigator.clipboard) {\n            navigator.clipboard.writeText(url).then(() => {\n                showNotification(\"链接已复制到剪贴板\", \"success\");\n            }).catch(() => {\n                showNotification(\"复制失败\", \"error\");\n            });\n        }\n    }\n\n    function showImagePreview(file) {\n        const reader = new FileReader();\n        reader.onload = function (e) {\n            preview.src = e.target.result;\n            const overlay = document.querySelector(\".image-preview-overlay\");\n            overlay.style.display = \"block\";\n        };\n        reader.readAsDataURL(file);\n    }\n\n    function hideImagePreview() {\n        const overlay = document.querySelector(\".image-preview-overlay\");\n        overlay.style.display = \"none\";\n    }\n\n    async function uploadImage(blob, targetElement) {\n        if (!isAllowed) {\n            showNotification(`当前域名 ${currentHost} 不在白名单`, \"error\");\n            return;\n        }\n\n        showImagePreview(blob);\n\n        const filename = `image-${Date.now()}`;\n        const formData = new FormData();\n        formData.append(\"file\", blob, filename);\n\n        const query = new URLSearchParams({\n            authCode: CONFIG.AUTH_CODE,\n            ...CONFIG.UPLOAD_PARAMS,\n        }).toString();\n\n        GM_xmlhttpRequest({\n            method: \"POST\",\n            url: `${CONFIG.SERVER_URL}/upload?${query}`,\n            data: formData,\n            onload: (res) => {\n                hideImagePreview();\n                try {\n                    const json = JSON.parse(res.responseText);\n                    const imageUrl = json?.[0]?.src;\n                    if (imageUrl) {\n                        showNotification(\"上传成功\", \"success\");\n                        insertRawUrl(imageUrl, targetElement, filename);\n                    } else {\n                        showNotification(\"上传成功但未返回链接\", \"error\");\n                    }\n                } catch (e) {\n                    showNotification(\"解析响应失败：\" + e.message, \"error\");\n                }\n            },\n            onerror: () => {\n                hideImagePreview();\n                showNotification(\"上传失败（网络错误）\", \"error\");\n            },\n        });\n    }\n\n    const dropContainer = document.querySelector(\".ctrm-textarea\");\n    const dropTarget = dropContainer?.querySelector(\"textarea\");\n\n    if (dropContainer && dropTarget) {\n        [\"dragenter\", \"dragover\"].forEach(evt =>\n            dropContainer.addEventListener(evt, (e) => {\n                e.preventDefault();\n                dropContainer.classList.add(\"dragover\");\n            })\n        );\n        [\"dragleave\", \"drop\"].forEach(evt =>\n            dropContainer.addEventListener(evt, (e) => {\n                e.preventDefault();\n                dropContainer.classList.remove(\"dragover\");\n            })\n        );\n\n        dropContainer.addEventListener(\"drop\", async (event) => {\n            const file = event.dataTransfer.files?.[0];\n            if (!file || !file.type.startsWith(\"image/\")) return;\n            if (!checkFileSize(file)) return;\n            showNotification(\"正在上传...\", \"info\");\n            await uploadImage(file, dropTarget);\n        });\n\n        dropContainer.addEventListener(\"paste\", async (event) => {\n            const items = event.clipboardData.items;\n            for (let item of items) {\n                if (item.type.startsWith(\"image/\")) {\n                    event.preventDefault();\n                    const blob = item.getAsFile();\n                    if (!checkFileSize(blob)) return;\n                    showNotification(\"正在上传...\", \"info\");\n                    await uploadImage(blob, dropTarget);\n                    break;\n                }\n            }\n        });\n    }\n\n    const uploadBtn = CONFIG.ENABLE_MANUAL_UPLOAD ? document.querySelector(CONFIG.UPLOAD_TRIGGER_SELECTOR) : null;\n    if (uploadBtn) {\n        const input = document.createElement(\"input\");\n        input.type = \"file\";\n        input.accept = \"image/*\";\n        input.style.display = \"none\";\n        document.body.appendChild(input);\n\n        input.addEventListener(\"change\", async () => {\n            const file = input.files?.[0];\n            if (!file) return;\n            const textTarget = document.querySelector(\".ctrm-textarea textarea\");\n            if (!textTarget || !checkFileSize(file)) return;\n            showNotification(\"正在上传...\", \"info\");\n            await uploadImage(file, textTarget);\n            input.value = \"\";\n        });\n\n        uploadBtn.addEventListener(\"click\", () => {\n            const chatBox = document.getElementById(\"ctrm_\");\n            if (chatBox) {\n                chatBox.dispatchEvent(new MouseEvent(\"click\", { bubbles: true }));\n            }\n            input.click();\n        });\n    }\n})();\n\n// ========== 全局头像上传 Promise 函数 ==========\nwindow.uploadToTelegram = function (file) {\n    return new Promise((resolve, reject) => {\n        const CONFIG = {\n            AUTH_CODE: \"z-l.top\",\n            SERVER_URL: \"https://img.z-l.top\",\n            UPLOAD_PARAMS: {\n                serverCompress: true,\n                uploadChannel: \"telegram\",\n                autoRetry: true,\n                uploadNameType: \"short\",\n                returnFormat: \"full\",\n                uploadFolder: \"dh\",\n            },\n            ALLOWED_HOSTS: ['http://localhost:3000', 'bilibili.com', '88lin.github.io', '*.88lin.eu.org', 'jasnode.github.io'],\n            MAX_FILE_SIZE: 5 * 1024 * 1024,\n        };\n        const currentHost = location.hostname;\n        const isAllowed = CONFIG.ALLOWED_HOSTS.some(host => {\n            if (host === \"*\") return true;\n            if (host.startsWith(\"*.\")) return currentHost.endsWith(host.slice(1));\n            return currentHost === host;\n        });\n        if (!isAllowed) {\n            reject(new Error(\"当前域名不在白名单\"));\n            return;\n        }\n        if (file.size > CONFIG.MAX_FILE_SIZE) {\n            reject(new Error(\"文件过大\"));\n            return;\n        }\n        const filename = `image-${Date.now()}`;\n        const formData = new FormData();\n        formData.append(\"file\", file, filename);\n        const query = new URLSearchParams({\n            authCode: CONFIG.AUTH_CODE,\n            ...CONFIG.UPLOAD_PARAMS,\n        }).toString();\n        const xhr = new XMLHttpRequest();\n        xhr.open(\"POST\", `${CONFIG.SERVER_URL}/upload?${query}`, true);\n        xhr.onload = function () {\n            try {\n                const json = JSON.parse(xhr.responseText);\n                const imageUrl = json?.[0]?.src;\n                if (imageUrl) {\n                    resolve(imageUrl);\n                } else {\n                    reject(new Error(\"上传成功但未返回链接\"));\n                }\n            } catch (e) {\n                reject(new Error(\"解析响应失败：\" + e.message));\n            }\n        };\n        xhr.onerror = function () {\n            reject(new Error(\"上传失败（网络错误）\"));\n        };\n        xhr.send(formData);\n    });\n};\n\n\n// ========== 自定义图床上传（hover 下拉选图床） ==========\n(function () {\n    const HOSTS = {\n        \"tutu\":       \"https://tutu.to/upload\",\n        \"imgdd\":      \"https://imgdd.com\",\n        \"tucdn\":      \"https://tucdn.wpon.cn\",\n        \"share-text\": \"https://share-text.org/zh/image-to-url\",\n    };\n\n    const pupBtn = document.querySelector(\"[data-chevereto-pup-trigger]\");\n    const dropdown = document.querySelector(\".img-host-dropdown\");\n    if (!pupBtn || !dropdown) return;\n\n    let hoverTimer = null;\n    let openedAt = 0;\n    // 只有下面选 tutu 那一次放行，见 item 的 click。\n    let allowPup = false;\n\n    function show() {\n        const rect = pupBtn.getBoundingClientRect();\n        dropdown.style.display = \"block\";\n        // 宽度对齐按钮；内容比按钮宽时（手机上按钮只剩图标 28px）按内容走，然后左右居中。\n        dropdown.style.minWidth = rect.width + \"px\";\n        const w = dropdown.offsetWidth;\n        dropdown.style.left = Math.min(Math.max(4, rect.left + rect.width / 2 - w / 2), window.innerWidth - w - 4) + \"px\";\n        dropdown.style.bottom = (window.innerHeight - rect.top + 4) + \"px\";\n        openedAt = Date.now();\n    }\n    function hide() { dropdown.style.display = \"none\"; }\n\n    // 按钮身上挂着 data-chevereto-pup-trigger，直接点会被第三方脚本接走、弹一个图床窗口。\n    // 它只该当菜单用：在 window 捕获阶段截下这一下（捕获比按钮自己的监听器先跑，\n    // stopPropagation 之后事件到不了按钮），改成开合菜单。手机上没有 hover，也全靠这条。\n    window.addEventListener(\"click\", function (e) {\n        if (!e.target || !e.target.closest) return;\n        if (e.target.closest(\"[data-chevereto-pup-trigger]\")) {\n            if (allowPup) return;\n            e.preventDefault();\n            e.stopPropagation();\n            // 触屏上一次 tap 会先合成 mouseenter（已经 show 过），400ms 内的这下不算\"再点一次\"。\n            if (dropdown.style.display === \"block\" && Date.now() - openedAt > 400) hide();\n            else show();\n        } else if (!e.target.closest(\".img-host-dropdown\")) {\n            hide();\n        }\n    }, true);\n\n    pupBtn.addEventListener(\"mouseenter\", () => { clearTimeout(hoverTimer); show(); });\n    pupBtn.addEventListener(\"mouseleave\", () => { hoverTimer = setTimeout(hide, 200); });\n    dropdown.addEventListener(\"mouseenter\", () => clearTimeout(hoverTimer));\n    dropdown.addEventListener(\"mouseleave\", () => { hoverTimer = setTimeout(hide, 200); });\n\n    dropdown.querySelectorAll(\"[data-img-host]\").forEach(item => {\n        // hover 交给 CSS 的 .img-host-dropdown [data-img-host]:hover —— 别在这里写内联\n        // background，内联样式会压过样式表里的 :hover。\n        item.addEventListener(\"click\", () => {\n            hide();\n            const hostKey = item.getAttribute(\"data-img-host\");\n            const url = HOSTS[hostKey];\n            if (!url) return;\n            if (hostKey === \"tutu\") {\n                // tutu 这条路本来就是借第三方脚本上传的，只有这一下放行给它。\n                allowPup = true;\n                pupBtn.click();\n                allowPup = false;\n            } else {\n                window.open(url, \"_blank\", \"width=720,height=690\");\n            }\n        });\n    });\n})();\n\n\n// 语音功能实现\n(function () {\n    if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) {\n        console.warn('浏览器不支持语音功能');\n        return;\n    }\n    const VOICE_CONFIG = {\n        MAX_RECORD_TIME: 30000,\n        MIN_RECORD_TIME: 1000,\n        UPLOAD_FOLDER: \"v\"\n    };\n    let mediaRecorder = null;\n    let audioChunks = [];\n    let startTime = null;\n    let timerInterval = null;\n    let voiceAutoSendLock = false;\n    let recordedMime = 'audio/webm';\n    let recordedExt = 'webm';\n\n    // iOS Safari 不支持 audio/webm（new MediaRecorder 抛 NotSupportedError），硬编码 webm\n    // 等于 iOS 用户没有录音。按支持度依次探测；全都不支持就不传 mimeType，让浏览器自己挑。\n    const VOICE_MIME_CANDIDATES = [\n        ['audio/webm;codecs=opus', 'webm'],\n        ['audio/webm', 'webm'],\n        ['audio/mp4;codecs=mp4a.40.2', 'mp4'],\n        ['audio/mp4', 'mp4'],\n        ['audio/ogg;codecs=opus', 'ogg'],\n        ['audio/ogg', 'ogg']\n    ];\n\n    function pickVoiceMime() {\n        if (typeof MediaRecorder === 'undefined' || !MediaRecorder.isTypeSupported) return null;\n        for (const [mime, ext] of VOICE_MIME_CANDIDATES) {\n            if (MediaRecorder.isTypeSupported(mime)) return { mime, ext };\n        }\n        return null;\n    }\n\n    // 从 mediaRecorder.mimeType 反查扩展名：浏览器实际用的格式可能和我们请求的不同\n    function extFromMime(mime) {\n        if (!mime) return 'webm';\n        if (mime.indexOf('mp4') !== -1 || mime.indexOf('aac') !== -1 || mime.indexOf('m4a') !== -1) return 'mp4';\n        if (mime.indexOf('ogg') !== -1) return 'ogg';\n        if (mime.indexOf('wav') !== -1) return 'wav';\n        if (mime.indexOf('mpeg') !== -1) return 'mp3';\n        return 'webm';\n    }\n\n    // blob URL 必须显式 revoke，否则每录一次泄漏一个（连着 blob 本体常驻内存）。但上传成功后\n    // 那个 URL 的所有权归 window._myVoiceBlobs（H() 拿它当 <audio src>），那种情况下不能 revoke。\n    function revokeVoiceUrl(url) {\n        if (!url) return;\n        try { URL.revokeObjectURL(url) } catch (err) { }\n    }\n\n    function dropPendingVoiceBlob() {\n        if (window._lastVoiceBlobUrl) {\n            // 只有还没被 _myVoiceBlobs 接管的才revoke\n            const inUse = window._myVoiceBlobs && Object.keys(window._myVoiceBlobs)\n                .some(function (k) { return window._myVoiceBlobs[k] === window._lastVoiceBlobUrl });\n            if (!inUse) revokeVoiceUrl(window._lastVoiceBlobUrl);\n        }\n        window._lastVoiceBlob = null;\n        window._lastVoiceBlobUrl = null;\n    }\n\n    // 复用主模块的提示条；主模块若提前 return（hostname 不含点号）就退回 alert\n    function voiceToast(msg, type) {\n        window.__ctrmToast ? window.__ctrmToast(msg, type) : alert(msg);\n    }\n    let audioBlob = null;\n    let state = 'idle'; // idle, recording, review\n    let reviewPanel = null;\n    const voiceBtn = document.getElementById('ctrm-voice-btn');\n    const timerDisplay = document.querySelector('.ctrm-voice-recording-indicator .ctrm-voice-timer');\n    const recordingIndicator = document.querySelector('.ctrm-voice-recording-indicator');\n\n    // 主逻辑提前 return（hostname 不含点号）时 dom.js 模板没被注入，这两个都是 null，\n    // 下面的 addEventListener 会抛 TypeError 打断整个 IIFE。\n    if (!voiceBtn || !recordingIndicator) {\n        console.warn('[ctrm] 未找到录音按钮，语音功能未启用');\n        return;\n    }\n\n    // 把录音提示气泡对齐到按钮上方。必须留在这个闭包里 —— startRecording 是局部函数，\n    // 顶层作用域取不到它。\n    function alignRecordingIndicator() {\n        if (recordingIndicator.style.display === 'none') return;\n        const rect = voiceBtn.getBoundingClientRect();\n        recordingIndicator.style.position = 'fixed';\n        recordingIndicator.style.left = (rect.left + rect.width / 2) + 'px';\n        recordingIndicator.style.top = (rect.top - recordingIndicator.offsetHeight - 12) + 'px';\n        recordingIndicator.style.transform = 'translateX(-50%)';\n        recordingIndicator.style.zIndex = '9999';\n    }\n    window.addEventListener('resize', alignRecordingIndicator);\n    window.addEventListener('scroll', alignRecordingIndicator);\n\n    voiceBtn.addEventListener('click', async function () {\n        if (state === 'idle') {\n            await startRecording();\n        } else if (state === 'recording') {\n            await stopRecording();\n        }\n    });\n\n    async function startRecording() {\n        if (state !== 'idle') return;\n        try {\n            const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n            const picked = pickVoiceMime();\n            mediaRecorder = picked ? new MediaRecorder(stream, { mimeType: picked.mime }) : new MediaRecorder(stream);\n            recordedMime = mediaRecorder.mimeType || (picked && picked.mime) || 'audio/webm';\n            recordedExt = extFromMime(recordedMime);\n            audioChunks = [];\n            mediaRecorder.ondataavailable = (event) => {\n                if (event.data.size > 0) {\n                    audioChunks.push(event.data);\n                }\n            };\n            mediaRecorder.onstop = onRecordingStop;\n            mediaRecorder.start();\n            voiceBtn.classList.add('recording');\n            recordingIndicator.style.display = 'flex';\n            alignRecordingIndicator();\n            if (timerDisplay) timerDisplay.textContent = '00:00';\n            startTime = Date.now();\n            timerInterval = setInterval(() => {\n                const elapsed = Date.now() - startTime;\n                if (timerDisplay) timerDisplay.textContent = formatTime(elapsed);\n                if (elapsed >= VOICE_CONFIG.MAX_RECORD_TIME) {\n                    stopRecording();\n                }\n            }, 100);\n            state = 'recording';\n        } catch (err) {\n            console.error('录音错误:', err);\n            if (err.name === 'NotAllowedError') {\n                voiceToast('请允许麦克风权限', 'error');\n            } else if (err.name === 'NotFoundError') {\n                voiceToast('未找到麦克风设备', 'error');\n            } else {\n                // 兜底：NotSupportedError 之类不给提示的话，按钮点下去毫无反应\n                voiceToast('无法开始录音：' + (err && (err.message || err.name) || err), 'error');\n            }\n        }\n    }\n\n    async function stopRecording() {\n        if (state !== 'recording') return;\n        if (mediaRecorder && mediaRecorder.state === 'recording') {\n            mediaRecorder.stop();\n            mediaRecorder.stream.getTracks().forEach(track => track.stop());\n        }\n        if (timerInterval) {\n            clearInterval(timerInterval);\n            timerInterval = null;\n        }\n        voiceBtn.classList.remove('recording');\n        recordingIndicator.style.display = 'none';\n        if (timerDisplay) timerDisplay.textContent = '00:00';\n        state = 'review';\n    }\n\n    function onRecordingStop() {\n        const durationMs = Date.now() - startTime;\n        audioBlob = new Blob(audioChunks, { type: recordedMime });\n        if (durationMs < VOICE_CONFIG.MIN_RECORD_TIME || audioBlob.size === 0) {\n            voiceToast('录音内容过短或失败，请重试', 'error');\n            state = 'idle';\n            return;\n        }\n        // 录完不发、直接再录一次时旧的 blob URL 会被下面覆盖掉，先放掉它\n        dropPendingVoiceBlob();\n        window._lastVoiceBlob = audioBlob;\n        window._lastVoiceBlobUrl = URL.createObjectURL(audioBlob);\n        showReviewPanel(durationMs);\n    }\n\n    function showReviewPanel(durationMs) {\n        if (reviewPanel) reviewPanel.remove();\n        reviewPanel = document.createElement('div');\n        reviewPanel.className = 'ctrm-voice-review-panel';\n        reviewPanel.innerHTML = `\n            <audio class=\"ctrm-voice-review-audio\" src=\"${window._lastVoiceBlobUrl}\" controls style=\"vertical-align:middle;width:180px;display:none;\"></audio>\n            <button class=\"ctrm-voice-review-btn play\">试听</button>\n            <button class=\"ctrm-voice-review-btn delete\">删除</button>\n            <button class=\"ctrm-voice-review-btn send\">发送</button>\n        `;\n        voiceBtn.parentNode.insertBefore(reviewPanel, voiceBtn.nextSibling);\n        const audio = reviewPanel.querySelector('.ctrm-voice-review-audio');\n        const playBtn = reviewPanel.querySelector('.ctrm-voice-review-btn.play');\n        playBtn.onclick = function () {\n            if (audio.paused) {\n                audio.play();\n                playBtn.textContent = '暂停';\n            } else {\n                audio.pause();\n                playBtn.textContent = '试听';\n            }\n        };\n        audio.onended = () => { playBtn.textContent = '试听'; };\n        reviewPanel.querySelector('.ctrm-voice-review-btn.delete').onclick = function () {\n            // 必须 revoke，只置 null 的话录一次删一次就永久漏一个 blob\n            audio.pause();\n            audio.removeAttribute('src');\n            dropPendingVoiceBlob();\n            reviewPanel.remove();\n            reviewPanel = null;\n            state = 'idle';\n        };\n        const sendBtn = reviewPanel.querySelector('.ctrm-voice-review-btn.send');\n        sendBtn.onclick = async function () {\n            sendBtn.disabled = true;\n            sendBtn.innerHTML = '发送中...<span class=\"ctrm-send-loading\"></span>';\n            sendBtn.classList.add('sending');\n            if (!document.getElementById('ctrm-voice-send-style')) {\n                const style = document.createElement('style');\n                style.id = 'ctrm-voice-send-style';\n                style.innerHTML = `\n                .ctrm-voice-review-btn.sending {\n                    position: relative;\n                    color: #fff;\n                    background: #2f7a4f;\n                    border-color: #2f7a4f;\n                    padding-right: 8px !important;\n                }\n                .ctrm-send-loading {\n                    display: inline-block;\n                    width: 16px;\n                    height: 16px;\n                    vertical-align: middle;\n                    margin-left: 6px;\n                    border: 2px solid rgba(255,255,255,.45);\n                    border-radius: 50%;\n                    border-top: 2px solid #fff;\n                    animation: ctrm-spin 0.7s linear infinite;\n                    box-sizing: border-box;\n                }\n                @keyframes ctrm-spin {\n                    0% { transform: rotate(0deg);}\n                    100% { transform: rotate(360deg);}\n                }\n                `;\n                document.head.appendChild(style);\n            }\n            await uploadAndSendVoice(window._lastVoiceBlob, durationMs);\n            sendBtn.disabled = false;\n            sendBtn.innerHTML = '发送';\n            sendBtn.classList.remove('sending');\n            reviewPanel.remove();\n            reviewPanel = null;\n            state = 'idle';\n        };\n    }\n\n    (function () {\n        if (document.getElementById('ctrm-voice-review-style')) return;\n        var style = document.createElement('style');\n        style.id = 'ctrm-voice-review-style';\n        style.innerHTML = `\n        .ctrm-voice-review-panel {\n            position: absolute;\n            top: -40px;\n            left: 50%;\n            transform: translateX(-50%);\n            background: rgba(47, 36, 41, 0.92);\n            color: white;\n            padding: 5px 10px;\n            border-radius: 999px;\n            font-size: 12px;\n            white-space: nowrap;\n            z-index: 1;\n            flex-direction: row;\n            flex-wrap: wrap;\n        }\n        .ctrm-voice-review-btn {\n            /* color 必须显式写：面板是深底 + color:white，按钮自己是白底，不写就是白字白底。 */\n            color: var(--cx-ink-2);\n            background: #fff; border: 1px solid rgba(47,36,41,.16); border-radius: 999px; padding: 3px 12px; cursor: pointer; font-size: 13px; transition: background 0.2s, border-color 0.2s, color 0.2s;\n        }\n        .ctrm-voice-review-btn:hover { background: rgba(242,118,155,.12); border-color: #f2769b; color: #c23b6e; }\n        /* 红/绿是语义色，跟提示条一致。删除走描边、发送走实底 —— 三颗一样白看不出该点哪个。 */\n        .ctrm-voice-review-btn.delete { color: #b8362b; border-color: rgba(184,54,43,.45); }\n        .ctrm-voice-review-btn.delete:hover { background: rgba(184,54,43,.10); border-color: #b8362b; color: #b8362b; }\n        .ctrm-voice-review-btn.send { color: #fff; background: #2f7a4f; border-color: #2f7a4f; }\n        .ctrm-voice-review-btn.send:hover { color: #fff; background: #26643f; border-color: #26643f; }\n        /* disabled 的元素照样匹配 :hover，不写这条鼠标放上去还会变深，像\"还能再点一下\"。\n           :disabled:hover 是 (0,4,0)，压得住上面 .send:hover 的 (0,3,0)。 */\n        .ctrm-voice-review-btn:disabled { cursor: default; }\n        .ctrm-voice-review-btn.send:disabled:hover { background: #2f7a4f; border-color: #2f7a4f; }\n        `;\n        document.head.appendChild(style);\n    })();\n\n    function formatTime(ms) {\n        const seconds = Math.floor(ms / 1000);\n        const minutes = Math.floor(seconds / 60);\n        const displaySeconds = seconds % 60;\n        return `${minutes.toString().padStart(2, '0')}:${displaySeconds.toString().padStart(2, '0')}`;\n    }\n\n    async function uploadAndSendVoice(blob, durationMs) {\n        console.log('uploadAndSendVoice blob:', blob, typeof blob, blob && blob.size);\n        // 不能裸 return：静默丢弃的话面板照样关、录音也没了，用户不知道那条没发出去\n        if (voiceAutoSendLock) return void voiceToast('上一条语音还在发送中，请稍候再试', 'error');\n        voiceAutoSendLock = true;\n        // 扩展名跟着实际录音格式走：iOS 录出来是 mp4 容器，硬写 .webm 会拿到名不副实的 URL\n        const filename = `voice-${Date.now()}.${recordedExt}`;\n        const formData = new FormData();\n        formData.append('file', blob, filename);\n        const query = new URLSearchParams({\n            authCode: 'z-l.top',\n            serverCompress: true,\n            uploadChannel: 'telegram',\n            autoRetry: true,\n            uploadNameType: 'short',\n            returnFormat: 'full',\n            uploadFolder: VOICE_CONFIG.UPLOAD_FOLDER\n        }).toString();\n        try {\n            const response = await fetch(`https://img.z-l.top/upload?${query}`, {\n                method: 'POST',\n                body: formData\n            });\n            const text = await response.text();\n            console.log('upload response text:', text);\n            let result;\n            try {\n                result = JSON.parse(text);\n            } catch (e) {\n                throw new Error('服务器返回内容不是合法JSON: ' + text);\n            }\n            if (result[0]?.src) {\n                const voiceUrl = result[0].src;\n                if (!window._myVoiceBlobs || typeof window._myVoiceBlobs !== 'object') window._myVoiceBlobs = {};\n                if (window._lastVoiceBlobUrl) {\n                    // 同一个 URL 又传了一次时，先把旧的那个 blob URL 放掉\n                    if (window._myVoiceBlobs[voiceUrl] && window._myVoiceBlobs[voiceUrl] !== window._lastVoiceBlobUrl) {\n                        revokeVoiceUrl(window._myVoiceBlobs[voiceUrl]);\n                    }\n                    // 所有权从这里起归 _myVoiceBlobs（H() 拿它当 <audio src>），所以不 revoke\n                    window._myVoiceBlobs[voiceUrl] = window._lastVoiceBlobUrl;\n                    window._lastVoiceBlob = null;\n                    window._lastVoiceBlobUrl = null;\n                }\n                const message = `[语音消息 ${formatTime(durationMs)}] ${voiceUrl}`;\n                const chatInput = document.querySelector('.ctrm-textarea textarea');\n                const emitBtn = document.querySelector('.ctrm-emit');\n                if (chatInput && emitBtn) {\n                    chatInput.value = message;\n                    // 发送仍然走主模块的 R()：若被 5 秒节流拦下，那边会提示并保留内容\n                    emitBtn.click();\n                } else {\n                    voiceToast('找不到聊天输入框，语音没能发出；链接已复制到控制台\\n' + voiceUrl, 'error');\n                    console.warn('[ctrm] 语音已上传但无法发送:', voiceUrl);\n                }\n            } else {\n                voiceToast('语音上传失败', 'error');\n                dropPendingVoiceBlob();\n            }\n        } catch (error) {\n            console.error('上传错误:', error);\n            voiceToast('语音上传失败，请检查网络\\n' + (error && error.message ? error.message : ''), 'error');\n            // 上传没成功，没人接管这个 blob URL，直接放掉\n            dropPendingVoiceBlob();\n        } finally {\n            setTimeout(() => voiceAutoSendLock = false, 1000);\n        }\n    }\n})();\n\n// 语音气泡后台预加载\nfunction preloadAllVoiceAudios() {\n    document.querySelectorAll('.ctrm-voice-bubble audio').forEach(audio => {\n        if (!audio._preloadTried) {\n            audio._preloadTried = true;\n            if (audio.src) {\n                audio.load();\n                audio.onerror = function () {\n                    const bubble = audio.closest('.ctrm-voice-bubble');\n                    if (bubble && !bubble.querySelector('.ctrm-voice-error')) {\n                        const err = document.createElement('span');\n                        err.className = 'ctrm-voice-error';\n                        err.textContent = '语音加载失败';\n                        err.style.color = '#b8362b';\n                        err.style.marginLeft = '8px';\n                        bubble.appendChild(err);\n                    }\n                };\n            }\n        }\n    });\n}\nsetTimeout(preloadAllVoiceAudios, 300);\n"]}