Greasy Fork

Greasy Fork is available in English.

Twitter/X Media Batch Downloader Pro

Batch download all images & videos from any X/Twitter account — including withheld — in original quality, one click, no login.

在您安装前,Greasy Fork 希望您知道此脚本声明其包含了一些负面功能。这些功能也许会使脚本作者获利,而不能给您带来任何直接的金钱收益。

您只有在付费后才能使用脚本的全部功能。Greasy Fork 未参与到支付的流程,因此无法验证您是否获得了有价值的东西,亦无法帮助您申请退款。 脚本作者的说明: Using this script requires an active monthly subscription.

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name            Twitter/X Media Batch Downloader Pro
// @name:zh         Twitter 媒体批量下载器 Pro
// @name:ja         Twitter メディア一括ダウンローダー Pro
// @description     Batch download all images & videos from any X/Twitter account — including withheld — in original quality, one click, no login.
// @description:zh  批量下载任何 X/Twitter 账号的所有图片和视频(包括受限账号),原始质量,一键操作,无需登录。
// @description:ja  X/Twitter アカウントからすべての画像と動画(制限付きアカウントを含む)を元の品質で一括ダウンロード、ワンクリック、ログイン不要。
// @antifeature     payment Using this script requires an active monthly subscription.
// @icon            data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAA0jWNhQlgAADSNanVtYgAAAB5qdW1kYzJwYQARABCAAACqADibcQNjMnBhAAAANGdqdW1iAAAATWp1bWRjMm1hABEAEIAAAKoAOJtxA2Fkb2JlOnVybjp1dWlkOjAxMDUxZTgxLTdjODYtNGM2Zi05ZWI3LWQ2ODMyYjE2MDcyYQAAAAG0anVtYgAAAClqdW1kYzJhcwARABCAAACqADibcQNjMnBhLmFzc2VydGlvbnMAAAAA2Gp1bWIAAAAmanVtZGNib3IAEQAQgAAAqgA4m3EDYzJwYS5hY3Rpb25zAAAAAKpjYm9yoWdhY3Rpb25zgaNmYWN0aW9ua2MycGEuZWRpdGVkbXNvZnR3YXJlQWdlbnRtQWRvYmUgRmlyZWZseXFkaWdpdGFsU291cmNlVHlwZXhUaHR0cHM6Ly9jdi5pcHRjLm9yZy9uZXdzY29kZXMvZGlnaXRhbHNvdXJjZXR5cGUvY29tcG9zaXRlV2l0aFRyYWluZWRBbGdvcml0aG1pY01lZGlhAAAAq2p1bWIAAAAoanVtZGNib3IAEQAQgAAAqgA4m3EDYzJwYS5oYXNoLmRhdGEAAAAAe2Nib3KlamV4Y2x1c2lvbnOBomVzdGFydBghZmxlbmd0aBk0mWRuYW1lbmp1bWJmIG1hbmlmZXN0Y2FsZ2ZzaGEyNTZkaGFzaFggMD4YYfuuyS4zr1xZ43vCYDS39xrKTXMUA6ouyX7s5bZjcGFkSAAAAAAAAAAAAAACTmp1bWIAAAAkanVtZGMyY2wAEQAQgAAAqgA4m3EDYzJwYS5jbGFpbQAAAAIiY2JvcqhoZGM6dGl0bGVvR2VuZXJhdGVkIEltYWdlaWRjOmZvcm1hdGlpbWFnZS9wbmdqaW5zdGFuY2VJRHgseG1wOmlpZDoxYmQwODcyNy03YTc1LTQyNDgtODM4MS03ZjAzZTg3OTIyNjFvY2xhaW1fZ2VuZXJhdG9yeFlBZG9iZV9QaG90b3Nob3AvMjUuMC4wIChidWlsZCAyMDIzMDkwNi5yLjM3IGIxNGUzMTc7IHdpbikgYWRvYmVfYzJwYS8wLjcuNiBjMnBhLXJzLzAuMjUuMnRjbGFpbV9nZW5lcmF0b3JfaW5mb4G/ZG5hbWVvQWRvYmVfUGhv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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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
// @namespace       https://exyezed.cc
// @supportURL      https://www.patreon.com/exyezed
// @homepageURL     https://www.patreon.com/exyezed
// @version         1.1.1
// @author          exyezed
// @license         MIT
// @match           *://twitter.com/*
// @match           *://x.com/*
// @require         https://cdn.jsdelivr.net/npm/[email protected]/dayjs.min.js
// @require         https://cdn.jsdelivr.net/npm/[email protected]/dist/dexie.min.js
// @require         https://cdn.jsdelivr.net/npm/[email protected]/dist/FileSaver.min.js
// @require         https://cdn.jsdelivr.net/npm/[email protected]/dist/gifshot.min.js
// @require         https://cdn.jsdelivr.net/npm/[email protected]/i18next.min.js
// @require         https://cdn.jsdelivr.net/npm/[email protected]/dist/preact.min.js
// @require         https://cdn.jsdelivr.net/npm/[email protected]/hooks/dist/hooks.umd.js
// @require         https://cdn.jsdelivr.net/npm/@preact/[email protected]/dist/signals-core.min.js
// @require         https://cdn.jsdelivr.net/npm/@preact/[email protected]/dist/signals.min.js
// @require         https://cdn.jsdelivr.net/npm/[email protected]/umd/index.min.js
// @connect         eu-north-1.exyezed.cc
// @connect         ap-south-1.exyezed.cc
// @connect         eu-west-3.exyezed.cc
// @connect         us-east-2.exyezed.cc
// @connect         af-south-1.exyezed.cc
// @connect         eu-west-1.exyezed.cc
// @connect         me-central-1.exyezed.cc
// @connect         eu-central-1.exyezed.cc
// @connect         sa-east-1.exyezed.cc
// @connect         ap-east-1.exyezed.cc
// @connect         ap-northeast-1.exyezed.cc
// @connect         us-east-1.exyezed.cc
// @connect         ap-northeast-2.exyezed.cc
// @connect         ap-northeast-3.exyezed.cc
// @connect         eu-west-2.exyezed.cc
// @connect         us-west-2.exyezed.cc
// @connect         us-west-1.exyezed.cc
// @connect         ap-southeast-1.exyezed.cc
// @connect         ap-southeast-2.exyezed.cc
// @grant           GM_addStyle
// @grant           GM_xmlhttpRequest
// @grant           unsafeWindow
// @run-at          document-start
// ==/UserScript==

(function (preact, signals, hooks, i18next, dayjs, Dexie, fileSaverEs, gifshot, fflate) {
  'use strict';

  var f = 0;
  function u(e, t, n, o, i, u2) {
    t || (t = {});
    var a, c, p = t;
    if ("ref" in p) for (c in p = {}, t) "ref" == c ? a = t[c] : p[c] = t[c];
    var l = { type: e, props: p, key: n, ref: a, __k: null, __: null, __b: 0, __e: null, __c: null, constructor: void 0, __v: --f, __i: -1, __u: 0, __source: i, __self: u2 };
    if ("function" == typeof e && (a = e.defaultProps)) for (c in a) void 0 === p[c] && (p[c] = a[c]);
    return preact.options.vnode && preact.options.vnode(l), l;
  }
  var defaultAttributes = {
    outline: {
      xmlns: "http://www.w3.org/2000/svg",
      width: 24,
      height: 24,
      viewBox: "0 0 24 24",
      fill: "none",
      stroke: "currentColor",
      "stroke-width": 2,
      "stroke-linecap": "round",
      "stroke-linejoin": "round"
    },
    filled: {
      xmlns: "http://www.w3.org/2000/svg",
      width: 24,
      height: 24,
      viewBox: "0 0 24 24",
      fill: "currentColor",
      stroke: "none"
    }
  };
  const createPreactComponent = (type, iconName, iconNamePascal, iconNode) => {
    const Component2 = ({
      color = "currentColor",
      size = 24,
      stroke = 2,
      title,
      children,
      className = "",
      class: classes = "",
      style,
      ...rest
    }) => preact.h(
      "svg",
      {
        ...defaultAttributes[type],
        width: String(size),
        height: String(size),
        class: [`tabler-icon`, `tabler-icon-${iconName}`, classes, className].join(" "),
        ...type === "filled" ? {
          fill: color
        } : {
          "stroke-width": stroke,
          stroke: color
        },
        style,
        ...rest
      },
      [
        title && preact.h("title", {}, title),
        ...iconNode.map(([tag, attrs]) => preact.h(tag, attrs)),
        ...preact.toChildArray(children)
      ]
    );
    Component2.displayName = `${iconNamePascal}`;
    return Component2;
  };
  var IconAlertTriangle = createPreactComponent("outline", "alert-triangle", "AlertTriangle", [["path", { "d": "M12 9v4", "key": "svg-0" }], ["path", { "d": "M10.363 3.591l-8.106 13.534a1.914 1.914 0 0 0 1.636 2.871h16.214a1.914 1.914 0 0 0 1.636 -2.87l-8.106 -13.536a1.914 1.914 0 0 0 -3.274 0z", "key": "svg-1" }], ["path", { "d": "M12 16h.01", "key": "svg-2" }]]);
  var IconBook = createPreactComponent("outline", "book", "Book", [["path", { "d": "M3 19a9 9 0 0 1 9 0a9 9 0 0 1 9 0", "key": "svg-0" }], ["path", { "d": "M3 6a9 9 0 0 1 9 0a9 9 0 0 1 9 0", "key": "svg-1" }], ["path", { "d": "M3 6l0 13", "key": "svg-2" }], ["path", { "d": "M12 6l0 13", "key": "svg-3" }], ["path", { "d": "M21 6l0 13", "key": "svg-4" }]]);
  var IconBrandChrome = createPreactComponent("outline", "brand-chrome", "BrandChrome", [["path", { "d": "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0", "key": "svg-0" }], ["path", { "d": "M12 12m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0", "key": "svg-1" }], ["path", { "d": "M12 9h8.4", "key": "svg-2" }], ["path", { "d": "M14.598 13.5l-4.2 7.275", "key": "svg-3" }], ["path", { "d": "M9.402 13.5l-4.2 -7.275", "key": "svg-4" }]]);
  var IconBrandPatreon = createPreactComponent("outline", "brand-patreon", "BrandPatreon", [["path", { "d": "M20 8.408c-.003 -2.299 -1.746 -4.182 -3.79 -4.862c-2.54 -.844 -5.888 -.722 -8.312 .453c-2.939 1.425 -3.862 4.545 -3.896 7.656c-.028 2.559 .22 9.297 3.92 9.345c2.75 .036 3.159 -3.603 4.43 -5.356c.906 -1.247 2.071 -1.599 3.506 -1.963c2.465 -.627 4.146 -2.626 4.142 -5.273z", "key": "svg-0" }]]);
  var IconBrandTwitter = createPreactComponent("outline", "brand-twitter", "BrandTwitter", [["path", { "d": "M22 4.01c-1 .49 -1.98 .689 -3 .99c-1.121 -1.265 -2.783 -1.335 -4.38 -.737s-2.643 2.06 -2.62 3.737v1c-3.245 .083 -6.135 -1.395 -8 -4c0 0 -4.182 7.433 4 11c-1.872 1.247 -3.739 2.088 -6 2c3.308 1.803 6.913 2.423 10.034 1.517c3.58 -1.04 6.522 -3.723 7.651 -7.742a13.84 13.84 0 0 0 .497 -3.753c0 -.249 1.51 -2.772 1.818 -4.013z", "key": "svg-0" }]]);
  var IconCalendarWeek = createPreactComponent("outline", "calendar-week", "CalendarWeek", [["path", { "d": "M4 7a2 2 0 0 1 2 -2h12a2 2 0 0 1 2 2v12a2 2 0 0 1 -2 2h-12a2 2 0 0 1 -2 -2v-12z", "key": "svg-0" }], ["path", { "d": "M16 3v4", "key": "svg-1" }], ["path", { "d": "M8 3v4", "key": "svg-2" }], ["path", { "d": "M4 11h16", "key": "svg-3" }], ["path", { "d": "M7 14h.013", "key": "svg-4" }], ["path", { "d": "M10.01 14h.005", "key": "svg-5" }], ["path", { "d": "M13.01 14h.005", "key": "svg-6" }], ["path", { "d": "M16.015 14h.005", "key": "svg-7" }], ["path", { "d": "M13.015 17h.005", "key": "svg-8" }], ["path", { "d": "M7.01 17h.005", "key": "svg-9" }], ["path", { "d": "M10.01 17h.005", "key": "svg-10" }]]);
  var IconChevronLeft = createPreactComponent("outline", "chevron-left", "ChevronLeft", [["path", { "d": "M15 6l-6 6l6 6", "key": "svg-0" }]]);
  var IconChevronRight = createPreactComponent("outline", "chevron-right", "ChevronRight", [["path", { "d": "M9 6l6 6l-6 6", "key": "svg-0" }]]);
  var IconCircleCheck = createPreactComponent("outline", "circle-check", "CircleCheck", [["path", { "d": "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0", "key": "svg-0" }], ["path", { "d": "M9 12l2 2l4 -4", "key": "svg-1" }]]);
  var IconCircleX = createPreactComponent("outline", "circle-x", "CircleX", [["path", { "d": "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0", "key": "svg-0" }], ["path", { "d": "M10 10l4 4m0 -4l-4 4", "key": "svg-1" }]]);
  var IconCloudDown = createPreactComponent("outline", "cloud-down", "CloudDown", [["path", { "d": "M12 18.004h-5.343c-2.572 -.004 -4.657 -2.011 -4.657 -4.487c0 -2.475 2.085 -4.482 4.657 -4.482c.393 -1.762 1.794 -3.2 3.675 -3.773c1.88 -.572 3.956 -.193 5.444 1c1.488 1.19 2.162 3.007 1.77 4.769h.99c1.38 0 2.573 .813 3.13 1.99", "key": "svg-0" }], ["path", { "d": "M19 16v6", "key": "svg-1" }], ["path", { "d": "M22 19l-3 3l-3 -3", "key": "svg-2" }]]);
  var IconCloudUp = createPreactComponent("outline", "cloud-up", "CloudUp", [["path", { "d": "M12 18.004h-5.343c-2.572 -.004 -4.657 -2.011 -4.657 -4.487c0 -2.475 2.085 -4.482 4.657 -4.482c.393 -1.762 1.794 -3.2 3.675 -3.773c1.88 -.572 3.956 -.193 5.444 1c1.488 1.19 2.162 3.007 1.77 4.769h.99c1.38 0 2.57 .811 3.128 1.986", "key": "svg-0" }], ["path", { "d": "M19 22v-6", "key": "svg-1" }], ["path", { "d": "M22 19l-3 -3l-3 3", "key": "svg-2" }]]);
  var IconCopy = createPreactComponent("outline", "copy", "Copy", [["path", { "d": "M7 7m0 2.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667z", "key": "svg-0" }], ["path", { "d": "M4.012 16.737a2.005 2.005 0 0 1 -1.012 -1.737v-10c0 -1.1 .9 -2 2 -2h10c.75 0 1.158 .385 1.5 1", "key": "svg-1" }]]);
  var IconDatabaseExport = createPreactComponent("outline", "database-export", "DatabaseExport", [["path", { "d": "M4 6c0 1.657 3.582 3 8 3s8 -1.343 8 -3s-3.582 -3 -8 -3s-8 1.343 -8 3", "key": "svg-0" }], ["path", { "d": "M4 6v6c0 1.657 3.582 3 8 3c1.118 0 2.183 -.086 3.15 -.241", "key": "svg-1" }], ["path", { "d": "M20 12v-6", "key": "svg-2" }], ["path", { "d": "M4 12v6c0 1.657 3.582 3 8 3c.157 0 .312 -.002 .466 -.005", "key": "svg-3" }], ["path", { "d": "M16 19h6", "key": "svg-4" }], ["path", { "d": "M19 16l3 3l-3 3", "key": "svg-5" }]]);
  var IconDatabaseImport = createPreactComponent("outline", "database-import", "DatabaseImport", [["path", { "d": "M4 6c0 1.657 3.582 3 8 3s8 -1.343 8 -3s-3.582 -3 -8 -3s-8 1.343 -8 3", "key": "svg-0" }], ["path", { "d": "M4 6v6c0 1.657 3.582 3 8 3c.856 0 1.68 -.05 2.454 -.144m5.546 -2.856v-6", "key": "svg-1" }], ["path", { "d": "M4 12v6c0 1.657 3.582 3 8 3c.171 0 .341 -.002 .51 -.006", "key": "svg-2" }], ["path", { "d": "M19 22v-6", "key": "svg-3" }], ["path", { "d": "M22 19l-3 -3l-3 3", "key": "svg-4" }]]);
  var IconDatabaseSearch = createPreactComponent("outline", "database-search", "DatabaseSearch", [["path", { "d": "M4 6c0 1.657 3.582 3 8 3s8 -1.343 8 -3s-3.582 -3 -8 -3s-8 1.343 -8 3", "key": "svg-0" }], ["path", { "d": "M4 6v6c0 1.657 3.582 3 8 3m8 -3.5v-5.5", "key": "svg-1" }], ["path", { "d": "M4 12v6c0 1.657 3.582 3 8 3", "key": "svg-2" }], ["path", { "d": "M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0", "key": "svg-3" }], ["path", { "d": "M20.2 20.2l1.8 1.8", "key": "svg-4" }]]);
  var IconDatabaseX = createPreactComponent("outline", "database-x", "DatabaseX", [["path", { "d": "M4 6c0 1.657 3.582 3 8 3s8 -1.343 8 -3s-3.582 -3 -8 -3s-8 1.343 -8 3", "key": "svg-0" }], ["path", { "d": "M4 6v6c0 1.657 3.582 3 8 3c.537 0 1.062 -.02 1.57 -.058", "key": "svg-1" }], ["path", { "d": "M20 13.5v-7.5", "key": "svg-2" }], ["path", { "d": "M4 12v6c0 1.657 3.582 3 8 3c.384 0 .762 -.01 1.132 -.03", "key": "svg-3" }], ["path", { "d": "M22 22l-5 -5", "key": "svg-4" }], ["path", { "d": "M17 22l5 -5", "key": "svg-5" }]]);
  var IconDatabase = createPreactComponent("outline", "database", "Database", [["path", { "d": "M12 6m-8 0a8 3 0 1 0 16 0a8 3 0 1 0 -16 0", "key": "svg-0" }], ["path", { "d": "M4 6v6a8 3 0 0 0 16 0v-6", "key": "svg-1" }], ["path", { "d": "M4 12v6a8 3 0 0 0 16 0v-6", "key": "svg-2" }]]);
  var IconDots = createPreactComponent("outline", "dots", "Dots", [["path", { "d": "M5 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-0" }], ["path", { "d": "M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-1" }], ["path", { "d": "M19 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-2" }]]);
  var IconDownload = createPreactComponent("outline", "download", "Download", [["path", { "d": "M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2 -2v-2", "key": "svg-0" }], ["path", { "d": "M7 11l5 5l5 -5", "key": "svg-1" }], ["path", { "d": "M12 4l0 12", "key": "svg-2" }]]);
  var IconExclamationCircle = createPreactComponent("outline", "exclamation-circle", "ExclamationCircle", [["path", { "d": "M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0", "key": "svg-0" }], ["path", { "d": "M12 9v4", "key": "svg-1" }], ["path", { "d": "M12 16v.01", "key": "svg-2" }]]);
  var IconEyeOff = createPreactComponent("outline", "eye-off", "EyeOff", [["path", { "d": "M10.585 10.587a2 2 0 0 0 2.829 2.828", "key": "svg-0" }], ["path", { "d": "M16.681 16.673a8.717 8.717 0 0 1 -4.681 1.327c-3.6 0 -6.6 -2 -9 -6c1.272 -2.12 2.712 -3.678 4.32 -4.674m2.86 -1.146a9.055 9.055 0 0 1 1.82 -.18c3.6 0 6.6 2 9 6c-.666 1.11 -1.379 2.067 -2.138 2.87", "key": "svg-1" }], ["path", { "d": "M3 3l18 18", "key": "svg-2" }]]);
  var IconEye = createPreactComponent("outline", "eye", "Eye", [["path", { "d": "M10 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0", "key": "svg-0" }], ["path", { "d": "M21 12c-2.4 4 -5.4 6 -9 6c-3.6 0 -6.6 -2 -9 -6c2.4 -4 5.4 -6 9 -6c3.6 0 6.6 2 9 6", "key": "svg-1" }]]);
  var IconFileDownload = createPreactComponent("outline", "file-download", "FileDownload", [["path", { "d": "M14 3v4a1 1 0 0 0 1 1h4", "key": "svg-0" }], ["path", { "d": "M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z", "key": "svg-1" }], ["path", { "d": "M12 17v-6", "key": "svg-2" }], ["path", { "d": "M9.5 14.5l2.5 2.5l2.5 -2.5", "key": "svg-3" }]]);
  var IconFileText = createPreactComponent("outline", "file-text", "FileText", [["path", { "d": "M14 3v4a1 1 0 0 0 1 1h4", "key": "svg-0" }], ["path", { "d": "M17 21h-10a2 2 0 0 1 -2 -2v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2z", "key": "svg-1" }], ["path", { "d": "M9 9l1 0", "key": "svg-2" }], ["path", { "d": "M9 13l6 0", "key": "svg-3" }], ["path", { "d": "M9 17l6 0", "key": "svg-4" }]]);
  var IconFileTypeJs = createPreactComponent("outline", "file-type-js", "FileTypeJs", [["path", { "d": "M14 3v4a1 1 0 0 0 1 1h4", "key": "svg-0" }], ["path", { "d": "M3 15h3v4.5a1.5 1.5 0 0 1 -3 0", "key": "svg-1" }], ["path", { "d": "M9 20.25c0 .414 .336 .75 .75 .75h1.25a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1h-1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1h1.25a.75 .75 0 0 1 .75 .75", "key": "svg-2" }], ["path", { "d": "M5 12v-7a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-1", "key": "svg-3" }]]);
  var IconFileZip = createPreactComponent("outline", "file-zip", "FileZip", [["path", { "d": "M6 20.735a2 2 0 0 1 -1 -1.735v-14a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-1", "key": "svg-0" }], ["path", { "d": "M11 17a2 2 0 0 1 2 2v2a1 1 0 0 1 -1 1h-2a1 1 0 0 1 -1 -1v-2a2 2 0 0 1 2 -2z", "key": "svg-1" }], ["path", { "d": "M11 5l-1 0", "key": "svg-2" }], ["path", { "d": "M13 7l-1 0", "key": "svg-3" }], ["path", { "d": "M11 9l-1 0", "key": "svg-4" }], ["path", { "d": "M13 11l-1 0", "key": "svg-5" }], ["path", { "d": "M11 13l-1 0", "key": "svg-6" }], ["path", { "d": "M13 15l-1 0", "key": "svg-7" }]]);
  var IconGif = createPreactComponent("outline", "gif", "Gif", [["path", { "d": "M8 8h-2a2 2 0 0 0 -2 2v4a2 2 0 0 0 2 2h2v-4h-1", "key": "svg-0" }], ["path", { "d": "M12 8v8", "key": "svg-1" }], ["path", { "d": "M16 12h3", "key": "svg-2" }], ["path", { "d": "M20 8h-4v8", "key": "svg-3" }]]);
  var IconHome = createPreactComponent("outline", "home", "Home", [["path", { "d": "M5 12l-2 0l9 -9l9 9l-2 0", "key": "svg-0" }], ["path", { "d": "M5 12v7a2 2 0 0 0 2 2h10a2 2 0 0 0 2 -2v-7", "key": "svg-1" }], ["path", { "d": "M9 21v-6a2 2 0 0 1 2 -2h2a2 2 0 0 1 2 2v6", "key": "svg-2" }]]);
  var IconInfoCircle = createPreactComponent("outline", "info-circle", "InfoCircle", [["path", { "d": "M3 12a9 9 0 1 0 18 0a9 9 0 0 0 -18 0", "key": "svg-0" }], ["path", { "d": "M12 9h.01", "key": "svg-1" }], ["path", { "d": "M11 12h1v4h1", "key": "svg-2" }]]);
  var IconKey = createPreactComponent("outline", "key", "Key", [["path", { "d": "M16.555 3.843l3.602 3.602a2.877 2.877 0 0 1 0 4.069l-2.643 2.643a2.877 2.877 0 0 1 -4.069 0l-.301 -.301l-6.558 6.558a2 2 0 0 1 -1.239 .578l-.175 .008h-1.172a1 1 0 0 1 -.993 -.883l-.007 -.117v-1.172a2 2 0 0 1 .467 -1.284l.119 -.13l.414 -.414h2v-2h2v-2l2.144 -2.144l-.301 -.301a2.877 2.877 0 0 1 0 -4.069l2.643 -2.643a2.877 2.877 0 0 1 4.069 0z", "key": "svg-0" }], ["path", { "d": "M15 9h.01", "key": "svg-1" }]]);
  var IconLibraryPhoto = createPreactComponent("outline", "library-photo", "LibraryPhoto", [["path", { "d": "M7 3m0 2.667a2.667 2.667 0 0 1 2.667 -2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1 -2.667 2.667h-8.666a2.667 2.667 0 0 1 -2.667 -2.667z", "key": "svg-0" }], ["path", { "d": "M4.012 7.26a2.005 2.005 0 0 0 -1.012 1.737v10c0 1.1 .9 2 2 2h10c.75 0 1.158 -.385 1.5 -1", "key": "svg-1" }], ["path", { "d": "M17 7h.01", "key": "svg-2" }], ["path", { "d": "M7 13l3.644 -3.644a1.21 1.21 0 0 1 1.712 0l3.644 3.644", "key": "svg-3" }], ["path", { "d": "M15 12l1.644 -1.644a1.21 1.21 0 0 1 1.712 0l2.644 2.644", "key": "svg-4" }]]);
  var IconPhotoEdit = createPreactComponent("outline", "photo-edit", "PhotoEdit", [["path", { "d": "M15 8h.01", "key": "svg-0" }], ["path", { "d": "M11 20h-4a3 3 0 0 1 -3 -3v-10a3 3 0 0 1 3 -3h10a3 3 0 0 1 3 3v4", "key": "svg-1" }], ["path", { "d": "M4 15l4 -4c.928 -.893 2.072 -.893 3 0l3 3", "key": "svg-2" }], ["path", { "d": "M14 14l1 -1c.31 -.298 .644 -.497 .987 -.596", "key": "svg-3" }], ["path", { "d": "M18.42 15.61a2.1 2.1 0 0 1 2.97 2.97l-3.39 3.42h-3v-3l3.42 -3.39z", "key": "svg-4" }]]);
  var IconPhoto = createPreactComponent("outline", "photo", "Photo", [["path", { "d": "M15 8h.01", "key": "svg-0" }], ["path", { "d": "M3 6a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v12a3 3 0 0 1 -3 3h-12a3 3 0 0 1 -3 -3v-12z", "key": "svg-1" }], ["path", { "d": "M3 16l5 -5c.928 -.893 2.072 -.893 3 0l5 5", "key": "svg-2" }], ["path", { "d": "M14 14l1 -1c.928 -.893 2.072 -.893 3 0l3 3", "key": "svg-3" }]]);
  var IconPlayerStop = createPreactComponent("outline", "player-stop", "PlayerStop", [["path", { "d": "M5 5m0 2a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2z", "key": "svg-0" }]]);
  var IconRefresh = createPreactComponent("outline", "refresh", "Refresh", [["path", { "d": "M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4", "key": "svg-0" }], ["path", { "d": "M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4", "key": "svg-1" }]]);
  var IconRepeat = createPreactComponent("outline", "repeat", "Repeat", [["path", { "d": "M4 12v-3a3 3 0 0 1 3 -3h13m-3 -3l3 3l-3 3", "key": "svg-0" }], ["path", { "d": "M20 12v3a3 3 0 0 1 -3 3h-13m3 3l-3 -3l3 -3", "key": "svg-1" }]]);
  var IconRestore = createPreactComponent("outline", "restore", "Restore", [["path", { "d": "M3.06 13a9 9 0 1 0 .49 -4.087", "key": "svg-0" }], ["path", { "d": "M3 4.001v5h5", "key": "svg-1" }], ["path", { "d": "M12 12m-1 0a1 1 0 1 0 2 0a1 1 0 1 0 -2 0", "key": "svg-2" }]]);
  var IconSettings = createPreactComponent("outline", "settings", "Settings", [["path", { "d": "M10.325 4.317c.426 -1.756 2.924 -1.756 3.35 0a1.724 1.724 0 0 0 2.573 1.066c1.543 -.94 3.31 .826 2.37 2.37a1.724 1.724 0 0 0 1.065 2.572c1.756 .426 1.756 2.924 0 3.35a1.724 1.724 0 0 0 -1.066 2.573c.94 1.543 -.826 3.31 -2.37 2.37a1.724 1.724 0 0 0 -2.572 1.065c-.426 1.756 -2.924 1.756 -3.35 0a1.724 1.724 0 0 0 -2.573 -1.066c-1.543 .94 -3.31 -.826 -2.37 -2.37a1.724 1.724 0 0 0 -1.065 -2.572c-1.756 -.426 -1.756 -2.924 0 -3.35a1.724 1.724 0 0 0 1.066 -2.573c-.94 -1.543 .826 -3.31 2.37 -2.37c1 .608 2.296 .07 2.572 -1.065z", "key": "svg-0" }], ["path", { "d": "M9 12a3 3 0 1 0 6 0a3 3 0 0 0 -6 0", "key": "svg-1" }]]);
  var IconTags = createPreactComponent("outline", "tags", "Tags", [["path", { "d": "M3 8v4.172a2 2 0 0 0 .586 1.414l5.71 5.71a2.41 2.41 0 0 0 3.408 0l3.592 -3.592a2.41 2.41 0 0 0 0 -3.408l-5.71 -5.71a2 2 0 0 0 -1.414 -.586h-4.172a2 2 0 0 0 -2 2z", "key": "svg-0" }], ["path", { "d": "M18 19l1.592 -1.592a4.82 4.82 0 0 0 0 -6.816l-4.592 -4.592", "key": "svg-1" }], ["path", { "d": "M7 10h-.01", "key": "svg-2" }]]);
  var IconTrash = createPreactComponent("outline", "trash", "Trash", [["path", { "d": "M4 7l16 0", "key": "svg-0" }], ["path", { "d": "M10 11l0 6", "key": "svg-1" }], ["path", { "d": "M14 11l0 6", "key": "svg-2" }], ["path", { "d": "M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2 -2l1 -12", "key": "svg-3" }], ["path", { "d": "M9 7v-3a1 1 0 0 1 1 -1h4a1 1 0 0 1 1 1v3", "key": "svg-4" }]]);
  var IconVideo = createPreactComponent("outline", "video", "Video", [["path", { "d": "M15 10l4.553 -2.276a1 1 0 0 1 1.447 .894v6.764a1 1 0 0 1 -1.447 .894l-4.553 -2.276v-4z", "key": "svg-0" }], ["path", { "d": "M3 6m0 2a2 2 0 0 1 2 -2h8a2 2 0 0 1 2 2v8a2 2 0 0 1 -2 2h-8a2 2 0 0 1 -2 -2z", "key": "svg-1" }]]);
  var IconWriting = createPreactComponent("outline", "writing", "Writing", [["path", { "d": "M20 17v-12c0 -1.121 -.879 -2 -2 -2s-2 .879 -2 2v12l2 2l2 -2z", "key": "svg-0" }], ["path", { "d": "M16 7h4", "key": "svg-1" }], ["path", { "d": "M18 19h-13a2 2 0 1 1 0 -4h4a2 2 0 1 0 0 -4h-3", "key": "svg-2" }]]);
  var IconX = createPreactComponent("outline", "x", "X", [["path", { "d": "M18 6l-12 12", "key": "svg-0" }], ["path", { "d": "M6 6l12 12", "key": "svg-1" }]]);
  var IconUserFilled = createPreactComponent("filled", "user-filled", "UserFilled", [["path", { "d": "M12 2a5 5 0 1 1 -5 5l.005 -.217a5 5 0 0 1 4.995 -4.783z", "key": "svg-0" }], ["path", { "d": "M14 14a5 5 0 0 1 5 5v1a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-1a5 5 0 0 1 5 -5h4z", "key": "svg-1" }]]);
  const ar = { "common": { "Abort": "إحباط", "Add": "إضافة", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "بيانات الحساب @{{username}} موجودة بالفعل في قاعدة البيانات. هل تريد استبدالها؟", "Advanced Settings": "الإعدادات المتقدمة", "All": "الكل", "All Groups": "جميع المجموعات", "Are you sure to clear all data in the database?": "هل أنت متأكد من مسح جميع البيانات في قاعدة البيانات؟", "Are you sure you want to delete account data? This action cannot be undone": "هل أنت متأكد من حذف بيانات {{username}}؟ لا يمكن التراجع عن هذا الإجراء.", "Are you sure you want to reset settings to defaults?": "هل أنت متأكد من إعادة تعيين الإعدادات إلى القيم الافتراضية؟", "Auth": "المصادقة", "Auth Token": "رمز المصادقة", "Back": "العودة", "Batch: {{page}}": "الدُفعة: {{page}}", "Cancel": "إلغاء", "Change Language": "تغيير اللغة", "Change Theme": "تغيير السمة", "Choose the server closest to your location for best performance": "اختر الخادم الأقرب إلى موقعك للحصول على أفضل أداء", "Chrome": "Chrome", "Clear": "مسح", "Close": "إغلاق", "Combined Examples:": "أمثلة مجمعة:", "Common Formats:": "التنسيقات الشائعة:", "Concurrent Downloads": "التنزيلات المتزامنة", "Convert & Download": "تحويل وتحميل", "Convert Animated GIFs": "تحويل GIF", "Convert GIFs (External)": "تحويل GIF (خارجي)", "Converting GIFs...": "...تحويل صور GIF", "Converting...": "جارٍ التحويل...", "Copied": "تم النسخ", "Copy": "نسخ", "Current Media: {{current}} • Total Media: {{total}}": "الوسائط الحالية: {{current}} • إجمالي الوسائط: {{total}}", "Dashboard": "لوحة المراقبة", "Database": "قاعدة البيانات", "Date Formats:": "تنسيقات التاريخ:", "Date Since": "تاريخ البدء", "Date Time Format": "تنسيق التاريخ والوقت", "Date Until": "تاريخ الانتهاء", "Delete": "حذف", "Delete Account Data": "حذف بيانات الحساب", "Delete selected group": "حذف المجموعة المحددة", "Deleting...": "...حذف", "Demo mode is only available for @xbatchdemo": "وضع العرض التجريبي متاح فقط لـ @xbatchdemo", "Download": "تحميل", "Downloading...": "تحميل...", "Empty dates will fetch all available media": "التواريخ الفارغة ستجلب جميع الوسائط المتاحة", "Enter your Patreon auth": "أدخل مصادقة Patreon الخاصة بك", "Enter your auth token": "أدخل رمز المصادقة الخاص بك", "Enter group name": "أدخل اسم المجموعة", "Error:": "خطأ:", "Export": "تصدير", "Exporting...": "...تصدير", "Failed to download media": "فشل في تحميل الوسائط", "Failed to fetch data": "فشل في جلب البيانات", "Failed to generate token": "فشل في إنشاء الرمز", "Failed to refresh tokens": "فشل في تحديث الرموز المميزة", "Clear dates": "مسح التواريخ", "Failed to load data": "فشل في تحميل البيانات", "Fetched in {{time}}": "تم الجلب في {{time}}", "Fetch": "جلب", "Fetch All": "جلب الكل", "Fetch GIF": "جلب GIF", "Fetch Image": "جلب الصورة", "Fetch Text": "جلب النص", "Fetch Video": "جلب الفيديو", "Fetching...": "...جارٍ الجلب", "Filter by Date Range": "التصفية حسب نطاق التاريخ", "First Page": "الصفحة الأولى", "Followers": "المتابعون", "Following": "المتابَعون", "Font Family": "نوع الخط", "GIF": "GIF", "Generate": "إنشاء", "Generate Auth Token": "إنشاء رمز المصادقة", "Generating token...": "جارٍ إنشاء الرمز...", "Global Settings": "الإعدادات العامة", "Group": "مجموعة", "Group Account": "حساب المجموعة", "HTTP error! status: {{status}}": "خطأ HTTP! الحالة: {{status}}", "Home": "الصفحة الرئيسية", "{{hours}}h ago": "منذ {{hours}}س", "{{minutes}}m ago": "منذ {{minutes}}د", "{{days}}d ago": "منذ {{days}}ي", "Image": "صورة", "Import": "استيراد", "Importing...": "...استيراد", "Include Retweets": "تضمين إعادة التغريد", "Invalid Patreon auth": "مصادقة Patreon غير صحيحة", "Invalid Patreon auth. Please check your settings.": "مصادقة Patreon غير صحيحة. يرجى التحقق من إعداداتك.", "Invalid auth token. Please check your settings.": "رمز المصادقة غير صحيح. يرجى التحقق من إعداداتك.", "Invalid username format": "تنسيق اسم المستخدم غير صحيح", "Just now": "الآن", "Joined": "تاريخ الانضمام", "Language": "اللغة", "Larger size, same quality": "حجم أكبر، نفس الجودة", "Last Page": "الصفحة الأخيرة", "Load Database": "تحميل قاعدة البيانات", "Load from database": "تحميل من قاعدة البيانات", "Localized": "محلي", "Media": "الوسائط", "Media: {{media}}": "الوسائط: {{media}}", "Need help with Auth Token? See": "بحاجة إلى مساعدة بخصوص رمز المصادقة؟ راجع", "Next": "التالي", "No accounts yet": "لا توجد حسابات بعد", "No content available": "لا يوجد محتوى متاح", "No media files found": "لم يتم العثور على ملفات وسائط", "Overwrite": "استبدال", "Overwrite Existing Data?": "استبدال البيانات الحالية؟", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "يمكن للأعضاء المدفوعين إنشاء رموز المصادقة تلقائيًا بعد التحقق من مصادقة Patreon—لا حاجة للبحث اليدوي.", "Patreon": "Patreon", "Patreon Auth": "مصادقة Patreon", "Patreon auth verified successfully": "تم التحقق من مصادقة Patreon بنجاح", "Please configure authentication in the Auth tab first": "يرجى تكوين المصادقة في علامة تبويب المصادقة أولاً", "Please enter Patreon auth first": "يرجى إدخال مصادقة Patreon أولاً", "Please verify Patreon auth first": "يرجى التحقق من مصادقة Patreon أولاً", "Please visit a profile page for auto-detection": "يرجى زيارة صفحة ملف شخصي للاكتشاف التلقائي", "Posts": "المنشورات", "Posts: {{posts}}": "المنشورات: {{posts}}", "Prev": "السابق", "Preview": "معاينة", "Refresh": "تحديث", "Refreshing": "جارٍ التحديث", "Report bugs or request features:": "أبلغ عن الأخطاء أو اطلب الميزات:", "Request timeout": "انتهت مهلة الطلب", "Reset": "إعادة تعيين", "Reset Settings": "إعادة تعيين الإعدادات", "Remove Group": "إزالة المجموعة", "Resume": "متابعة", "Server": "الخادم", "Server Timeout": "انتهاء وقت الخادم", "Select a group": "اختر مجموعة", "Select All": "تحديد الكل", "selected": "محدد", "More options": "خيارات إضافية", "Explore Database": "استكشاف قاعدة البيانات", "Settings": "الإعدادات", "Smaller size, same quality": "حجم أصغر، نفس الجودة", "Something went wrong.": "حدث خطأ ما.", "Sound Effects": "المؤثرات الصوتية", "Start": "بدء", "Stop": "إيقاف", "Stop Fetch": "إيقاف الجلب", "Subscribe": "اشترك", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "اشترك مقابل 5 دولارات على Patreon وسيتم إرسال رمز المصادقة الخاص بك تلقائيًا عبر البريد الإلكتروني في غضون دقائق قليلة.", "System Default": "افتراضي النظام", "Text": "نص", "Theme": "السمة", "Time Formats:": "تنسيقات الوقت:", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "انتهاء وقت استجابة الخادم بالثواني. إنشاء رمز تلقائيًا في حالة انتهاء الوقت.", "Toggle visibility": "إظهار/إخفاء", "Token generated successfully": "تم إنشاء الرمز بنجاح ({{current}}/{{total}})", "Token generation failed. Please try again": "فشل إنشاء الرمز. يرجى المحاولة مرة أخرى", "Ungroup": "غير مجمعة", "Update": "تحديث", "Update will fetch the latest data and overwrite the database. Continue?": "سيقوم التحديث بجلب أحدث البيانات والكتابة فوق قاعدة البيانات. هل تريد المتابعة؟", "Updating...": "...جارٍ التحديث", "If downloads fail, use concurrent 1": "إذا فشلت التنزيلات، استخدم concurrent 1", "Use Dashboard to fetch data.": "استخدم لوحة المراقبة لجلب البيانات.", "Use code": "استخدم الرمز", "Userscript": "سكريبت المستخدم", "Verification failed. Please try again": "فشل التحقق. يرجى المحاولة مرة أخرى", "Verified": "تم التحقق", "Verify": "التحقق", "Verifying": "التحقق", "Version": "الإصدار", "Video": "فيديو", "for Patreon Auth, click Verify to unlock demo. Test at": 'لمصادقة Patreon، انقر "التحقق" لفتح العرض التجريبي. جرّب في', "the guide": "الدليل", "to get your Patreon Auth code and start downloading with ease!": "للحصول على رمز مصادقة Patreon والبدء في التنزيل بسهولة!" } };
  const de = { "common": { "Abort": "Abbrechen", "Add": "Hinzufügen", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "Kontodaten für @{{username}} existieren bereits in der Datenbank. Möchten Sie sie überschreiben?", "Advanced Settings": "Erweiterte Einstellungen", "All": "Alle", "All Groups": "Alle Gruppen", "Are you sure to clear all data in the database?": "Sind Sie sicher, dass Sie alle Daten in der Datenbank löschen möchten?", "Are you sure you want to delete account data? This action cannot be undone": "Sind Sie sicher, dass Sie die Daten von {{username}} löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.", "Are you sure you want to reset settings to defaults?": "Sind Sie sicher, dass Sie die Einstellungen auf Standardwerte zurücksetzen möchten?", "Auth": "Authentifizierung", "Auth Token": "Auth-Token", "Back": "Zurück", "Batch: {{page}}": "Stapel: {{page}}", "Cancel": "Abbrechen", "Change Language": "Sprache ändern", "Change Theme": "Design ändern", "Choose the server closest to your location for best performance": "Wählen Sie den Server, der Ihrem Standort am nächsten ist, für die beste Leistung", "Chrome": "Chrome", "Clear": "Löschen", "Close": "Schließen", "Combined Examples:": "Kombinierte Beispiele:", "Common Formats:": "Häufige Formate:", "Concurrent Downloads": "Gleichzeitige Downloads", "Convert & Download": "Konvertieren & Herunterladen", "Convert Animated GIFs": "GIFs konvertieren", "Convert GIFs (External)": "GIFs konvertieren (Extern)", "Converting GIFs...": "GIFs werden konvertiert...", "Converting...": "Konvertieren...", "Copied": "Kopiert", "Copy": "Kopieren", "Current Media: {{current}} • Total Media: {{total}}": "Aktuelle Medien: {{current}} • Medien gesamt: {{total}}", "Dashboard": "Dashboard", "Database": "Datenbank", "Date Formats:": "Datumsformate:", "Date Since": "Datum Von", "Date Time Format": "Datum-Uhrzeit-Format", "Date Until": "Datum Bis", "Delete": "Löschen", "Delete Account Data": "Kontodaten löschen", "Delete selected group": "Ausgewählte Gruppe löschen", "Deleting...": "Löschen...", "Demo mode is only available for @xbatchdemo": "Der Demo-Modus ist nur für @xbatchdemo verfügbar", "Download": "Herunterladen", "Downloading...": "Herunterladen...", "Empty dates will fetch all available media": "Leere Daten holen alle verfügbaren Medien", "Enter your Patreon auth": "Geben Sie Ihre Patreon-Authentifizierung ein", "Enter your auth token": "Geben Sie Ihren Auth-Token ein", "Enter group name": "Gruppenname eingeben", "Error:": "Fehler:", "Export": "Exportieren", "Exporting...": "Exportieren...", "Failed to download media": "Medien konnten nicht heruntergeladen werden", "Failed to fetch data": "Daten konnten nicht abgerufen werden", "Failed to generate token": "Token-Generierung fehlgeschlagen", "Failed to refresh tokens": "Token-Aktualisierung fehlgeschlagen", "Clear dates": "Daten löschen", "Failed to load data": "Daten konnten nicht geladen werden", "Fetched in {{time}}": "Abgerufen in {{time}}", "Fetch": "Abrufen", "Fetch All": "Alles abrufen", "Fetch GIF": "GIF abrufen", "Fetch Image": "Bild abrufen", "Fetch Text": "Text abrufen", "Fetch Video": "Video abrufen", "Fetching...": "Abrufen...", "Filter by Date Range": "Nach Datumsbereich filtern", "First Page": "Erste Seite", "Followers": "Follower", "Following": "Folge ich", "Font Family": "Schriftart", "GIF": "GIF", "Generate": "Generieren", "Generate Auth Token": "Auth-Token generieren", "Generating token...": "Token wird generiert...", "Global Settings": "Globale Einstellungen", "Group": "Gruppe", "Group Account": "Konto gruppieren", "HTTP error! status: {{status}}": "HTTP-Fehler! Status: {{status}}", "Home": "Startseite", "{{hours}}h ago": "vor {{hours}}h", "{{minutes}}m ago": "vor {{minutes}}m", "{{days}}d ago": "vor {{days}}T", "Image": "Bild", "Import": "Importieren", "Importing...": "Importieren...", "Include Retweets": "Retweets einbeziehen", "Invalid Patreon auth": "Ungültige Patreon-Authentifizierung", "Invalid Patreon auth. Please check your settings.": "Ungültige Patreon-Authentifizierung. Bitte überprüfen Sie Ihre Einstellungen.", "Invalid auth token. Please check your settings.": "Ungültiger Auth-Token. Bitte überprüfen Sie Ihre Einstellungen.", "Invalid username format": "Ungültiges Benutzernamen-Format", "Just now": "Gerade eben", "Joined": "Beigetreten", "Language": "Sprache", "Larger size, same quality": "Größere Größe, gleiche Qualität", "Last Page": "Letzte Seite", "Load Database": "Datenbank laden", "Load from database": "Aus Datenbank laden", "Localized": "Lokalisiert", "Media": "Medien", "Media: {{media}}": "Medien: {{media}}", "Need help with Auth Token? See": "Benötigen Sie Hilfe mit dem Auth-Token? Siehe", "Next": "Weiter", "No accounts yet": "Noch keine Konten", "No content available": "Kein Inhalt verfügbar", "No media files found": "Keine Mediendateien gefunden", "Overwrite": "Überschreiben", "Overwrite Existing Data?": "Vorhandene Daten überschreiben?", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "Bezahlte Mitglieder können nach der Verifizierung der Patreon-Authentifizierung automatisch Authentifizierungstoken generieren—keine manuelle Suche erforderlich.", "Patreon": "Patreon", "Patreon Auth": "Patreon-Authentifizierung", "Patreon auth verified successfully": "Patreon-Authentifizierung erfolgreich überprüft", "Please configure authentication in the Auth tab first": "Bitte konfigurieren Sie zuerst die Authentifizierung im Auth-Tab", "Please enter Patreon auth first": "Bitte geben Sie zuerst die Patreon-Authentifizierung ein", "Please verify Patreon auth first": "Bitte überprüfen Sie zuerst die Patreon-Authentifizierung", "Please visit a profile page for auto-detection": "Bitte besuchen Sie eine Profilseite für die automatische Erkennung", "Posts": "Beiträge", "Posts: {{posts}}": "Beiträge: {{posts}}", "Prev": "Zurück", "Preview": "Vorschau", "Refresh": "Aktualisieren", "Refreshing": "Aktualisieren", "Report bugs or request features:": "Fehler melden oder Funktionen anfordern:", "Request timeout": "Anfrage-Timeout", "Reset": "Zurücksetzen", "Reset Settings": "Einstellungen zurücksetzen", "Remove Group": "Gruppe entfernen", "Resume": "Fortsetzen", "Server": "Server", "Server Timeout": "Server-Zeitüberschreitung", "Select a group": "Gruppe auswählen", "Select All": "Alle auswählen", "selected": "ausgewählt", "More options": "Weitere Optionen", "Explore Database": "Datenbank durchsuchen", "Settings": "Einstellungen", "Smaller size, same quality": "Kleinere Größe, gleiche Qualität", "Something went wrong.": "Etwas ist schief gelaufen.", "Sound Effects": "Soundeffekte", "Start": "Start", "Stop": "Stopp", "Stop Fetch": "Abruf stoppen", "Subscribe": "Abonnieren", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "Abonnieren Sie für 5 $ auf Patreon und Ihr Authentifizierungscode wird Ihnen automatisch per E-Mail innerhalb weniger Minuten zugesandt.", "System Default": "Systemstandard", "Text": "Text", "Theme": "Design", "Time Formats:": "Zeitformate:", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "Zeitüberschreitung für Server-Antworten in Sekunden. Token automatisch generieren, wenn ein Timeout auftritt.", "Toggle visibility": "Ein-/Ausblenden", "Token generated successfully": "Token erfolgreich generiert ({{current}}/{{total}})", "Token generation failed. Please try again": "Token-Generierung fehlgeschlagen. Bitte versuchen Sie es erneut", "Ungroup": "Nicht gruppiert", "Update": "Aktualisieren", "Update will fetch the latest data and overwrite the database. Continue?": "Das Update holt die neuesten Daten und überschreibt die Datenbank. Fortfahren?", "Updating...": "Aktualisierung läuft...", "If downloads fail, use concurrent 1": "Wenn Downloads fehlschlagen, verwenden Sie concurrent 1", "Use Dashboard to fetch data.": "Verwenden Sie das Dashboard zum Abrufen von Daten.", "Use code": "Verwenden Sie den Code", "Userscript": "Benutzerskript", "Verification failed. Please try again": "Überprüfung fehlgeschlagen. Bitte versuchen Sie es erneut", "Verified": "Überprüft", "Verify": "Überprüfen", "Verifying": "Überprüfen", "Version": "Version", "Video": "Video", "for Patreon Auth, click Verify to unlock demo. Test at": "für die Patreon-Authentifizierung, klicken Sie auf „Überprüfen“, um die Demo freizuschalten. Testen bei", "the guide": "die Anleitung", "to get your Patreon Auth code and start downloading with ease!": "um Ihren Patreon-Authentifizierungscode zu erhalten und mühelos mit dem Herunterladen zu beginnen!" } };
  const en$1 = { "common": { "Abort": "Abort", "Add": "Add", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "Account data for @{{username}} already exists in the database. Do you want to overwrite it?", "Advanced Settings": "Advanced Settings", "All": "All", "All Groups": "All Groups", "Are you sure to clear all data in the database?": "Are you sure to clear all data in the database?", "Are you sure you want to delete account data? This action cannot be undone": "Are you sure you want to delete {{username}}'s data? This action cannot be undone.", "Are you sure you want to reset settings to defaults?": "Are you sure you want to reset settings to defaults?", "Auth": "Auth", "Auth Token": "Auth Token", "Back": "Back", "Batch: {{page}}": "Batch: {{page}}", "Cancel": "Cancel", "Change Language": "Change Language", "Change Theme": "Change Theme", "Choose the server closest to your location for best performance": "Choose the server closest to your location for best performance", "Chrome": "Chrome", "Clear": "Clear", "Close": "Close", "Combined Examples:": "Combined Examples:", "Common Formats:": "Common Formats:", "Concurrent Downloads": "Concurrent Downloads", "Convert & Download": "Convert & Download", "Convert Animated GIFs": "Convert GIFs", "Convert GIFs (External)": "Convert GIFs (External)", "Converting GIFs...": "Converting GIFs...", "Converting...": "Converting...", "Copied": "Copied", "Copy": "Copy", "Current Media: {{current}} • Total Media: {{total}}": "Current Media: {{current}} • Total Media: {{total}}", "Dashboard": "Dashboard", "Database": "Database", "Date Formats:": "Date Formats:", "Date Since": "Date Since", "Date Time Format": "Date Time Format", "Date Until": "Date Until", "Delete": "Delete", "Delete Account Data": "Delete Account Data", "Delete selected group": "Delete selected group", "Deleting...": "Deleting...", "Demo mode is only available for @xbatchdemo": "Demo mode is only available for @xbatchdemo", "Download": "Download", "Downloading...": "Downloading...", "Empty dates will fetch all available media": "Empty dates will fetch all available media", "Enter your Patreon auth": "Enter your Patreon auth", "Enter your auth token": "Enter your auth token", "Enter group name": "Enter group name", "Error:": "Error:", "Export": "Export", "Exporting...": "Exporting...", "Failed to download media": "Failed to download media", "Failed to fetch data": "Failed to fetch data", "Failed to generate token": "Failed to generate token", "Failed to refresh tokens": "Failed to refresh tokens", "Clear dates": "Clear dates", "Failed to load data": "Failed to load data", "Fetched in {{time}}": "Fetched in {{time}}", "Fetch": "Fetch", "Fetch All": "Fetch All", "Fetch GIF": "Fetch GIF", "Fetch Image": "Fetch Image", "Fetch Text": "Fetch Text", "Fetch Video": "Fetch Video", "Fetching...": "Fetching...", "Filter by Date Range": "Filter by Date Range", "First Page": "First Page", "Followers": "Followers", "Following": "Following", "Font Family": "Font Family", "GIF": "GIF", "Generate": "Generate", "Generate Auth Token": "Generate Auth Token", "Generating token...": "Generating token...", "Global Settings": "Global Settings", "Group": "Group", "Group Account": "Group Account", "HTTP error! status: {{status}}": "HTTP error! status: {{status}}", "Home": "Home", "{{hours}}h ago": "{{hours}}h ago", "{{minutes}}m ago": "{{minutes}}m ago", "{{days}}d ago": "{{days}}d ago", "Image": "Image", "Import": "Import", "Importing...": "Importing...", "Include Retweets": "Include Retweets", "Invalid Patreon auth": "Invalid Patreon auth", "Invalid Patreon auth. Please check your settings.": "Invalid Patreon auth. Please check your settings.", "Invalid auth token. Please check your settings.": "Invalid auth token. Please check your settings.", "Invalid username format": "Invalid username format", "Just now": "Just now", "Joined": "Joined", "Language": "Language", "Larger size, same quality": "Larger size, same quality", "Last Page": "Last Page", "Load Database": "Load Database", "Load from database": "Load from database", "Localized": "Localized", "Media": "Media", "Media: {{media}}": "Media: {{media}}", "Need help with Auth Token? See": "Need help with Auth Token? See", "Next": "Next", "No accounts yet": "No accounts yet", "No content available": "No content available", "No media files found": "No media files found", "Overwrite": "Overwrite", "Overwrite Existing Data?": "Overwrite Existing Data?", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.", "Patreon": "Patreon", "Patreon Auth": "Patreon Auth", "Patreon auth verified successfully": "Patreon auth verified successfully", "Please configure authentication in the Auth tab first": "Please configure authentication in the Auth tab first", "Please enter Patreon auth first": "Please enter Patreon auth first", "Please verify Patreon auth first": "Please verify Patreon auth first", "Please visit a profile page for auto-detection": "Please visit a profile page for auto-detection", "Posts": "Posts", "Posts: {{posts}}": "Posts: {{posts}}", "Prev": "Prev", "Preview": "Preview", "Refresh": "Refresh", "Refreshing": "Refreshing", "Report bugs or request features:": "Report bugs or request features:", "Request timeout": "Request timeout", "Reset": "Reset", "Reset Settings": "Reset Settings", "Remove Group": "Remove Group", "Resume": "Resume", "Server": "Server", "Server Timeout": "Server Timeout", "Select a group": "Select a group", "Select All": "Select All", "selected": "selected", "More options": "More options", "Explore Database": "Explore Database", "Settings": "Settings", "Smaller size, same quality": "Smaller size, same quality", "Something went wrong.": "Something went wrong.", "Sound Effects": "Sound Effects", "Start": "Start", "Stop": "Stop", "Stop Fetch": "Stop Fetch", "Subscribe": "Subscribe", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.", "System Default": "System Default", "Text": "Text", "Theme": "Theme", "Time Formats:": "Time Formats:", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "Timeout for server responses in seconds. Auto-generate token if timeout occurs.", "Toggle visibility": "Toggle visibility", "Token generated successfully": "Token generated successfully ({{current}}/{{total}})", "Token generation failed. Please try again": "Token generation failed. Please try again", "Ungroup": "Ungroup", "Update": "Update", "Update will fetch the latest data and overwrite the database. Continue?": "Update will fetch the latest data and overwrite the database. Continue?", "Updating...": "Updating...", "If downloads fail, use concurrent 1": "If downloads fail, use concurrent 1", "Use Dashboard to fetch data.": "Use Dashboard to fetch data.", "Use code": "Use code", "Userscript": "Userscript", "Verification failed. Please try again": "Verification failed. Please try again", "Verified": "Verified", "Verify": "Verify", "Verifying": "Verifying", "Version": "Version", "Video": "Video", "for Patreon Auth, click Verify to unlock demo. Test at": "for Patreon Auth, click Verify to unlock demo. Test at", "the guide": "the guide", "to get your Patreon Auth code and start downloading with ease!": "to get your Patreon Auth code and start downloading with ease!" } };
  const es = { "common": { "Abort": "Abortar", "Add": "Añadir", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "Los datos de la cuenta @{{username}} ya existen en la base de datos. ¿Deseas sobrescribirlos?", "Advanced Settings": "Configuración avanzada", "All": "Todo", "All Groups": "Todos los Grupos", "Are you sure to clear all data in the database?": "¿Estás seguro de que quieres borrar todos los datos de la base de datos?", "Are you sure you want to delete account data? This action cannot be undone": "¿Seguro que quieres eliminar los datos de {{username}}? Esta acción no se puede deshacer.", "Are you sure you want to reset settings to defaults?": "¿Seguro que quieres restablecer los ajustes a los valores predeterminados?", "Auth": "Autenticación", "Auth Token": "Token de autenticación", "Back": "Atrás", "Batch: {{page}}": "Lote: {{page}}", "Cancel": "Cancelar", "Change Language": "Cambiar idioma", "Change Theme": "Cambiar Tema", "Choose the server closest to your location for best performance": "Elija el servidor más cercano a su ubicación para un mejor rendimiento", "Chrome": "Chrome", "Clear": "Limpiar", "Close": "Cerrar", "Combined Examples:": "Ejemplos Combinados:", "Common Formats:": "Formatos Comunes:", "Concurrent Downloads": "Descargas simultáneas", "Convert & Download": "Convertir y descargar", "Convert Animated GIFs": "Convertir GIFs", "Convert GIFs (External)": "Convertir GIFs (Externo)", "Converting GIFs...": "Convirtiendo GIF...", "Converting...": "Convirtiendo...", "Copied": "Copiado", "Copy": "Copiar", "Current Media: {{current}} • Total Media: {{total}}": "Medios actuales: {{current}} • Medios totales: {{total}}", "Dashboard": "Panel de Control", "Database": "Base de Datos", "Date Formats:": "Formatos de Fecha:", "Date Since": "Fecha Desde", "Date Time Format": "Formato de Fecha y Hora", "Date Until": "Fecha Hasta", "Delete": "Eliminar", "Delete Account Data": "Eliminar datos de la cuenta", "Delete selected group": "Eliminar grupo seleccionado", "Deleting...": "Eliminando...", "Demo mode is only available for @xbatchdemo": "El modo demo solo está disponible para @xbatchdemo", "Download": "Descargar", "Downloading...": "Descargando...", "Empty dates will fetch all available media": "Fechas vacías obtendrán todos los medios disponibles", "Enter your Patreon auth": "Introduce tu autenticación de Patreon", "Enter your auth token": "Introduce tu token de autenticación", "Enter group name": "Ingrese el nombre del grupo", "Error:": "Error:", "Export": "Exportar", "Exporting...": "Exportando...", "Failed to download media": "Error al descargar los medios", "Failed to fetch data": "Error al obtener los datos", "Failed to generate token": "Error al generar el token", "Failed to refresh tokens": "Error al actualizar los tokens", "Clear dates": "Borrar fechas", "Failed to load data": "Error al cargar los datos", "Fetched in {{time}}": "Obtenido en {{time}}", "Fetch": "Obtener", "Fetch All": "Obtener todo", "Fetch GIF": "Obtener GIF", "Fetch Image": "Obtener imagen", "Fetch Text": "Obtener texto", "Fetch Video": "Obtener video", "Fetching...": "Obteniendo...", "Filter by Date Range": "Filtrar por rango de fechas", "First Page": "Primera Página", "Followers": "Seguidores", "Following": "Siguiendo", "Font Family": "Familia de Fuente", "GIF": "GIF", "Generate": "Generar", "Generate Auth Token": "Generar Token de Autenticación", "Generating token...": "Generando token...", "Global Settings": "Configuración Global", "Group": "Grupo", "Group Account": "Agrupar Cuenta", "HTTP error! status: {{status}}": "¡Error HTTP! estado: {{status}}", "Home": "Inicio", "{{hours}}h ago": "hace {{hours}}h", "{{minutes}}m ago": "hace {{minutes}}m", "{{days}}d ago": "hace {{days}}d", "Image": "Imagen", "Import": "Importar", "Importing...": "Importando...", "Include Retweets": "Incluir Retweets", "Invalid Patreon auth": "Autenticación de Patreon no válida", "Invalid Patreon auth. Please check your settings.": "Autenticación de Patreon no válida. Por favor, revisa tu configuración.", "Invalid auth token. Please check your settings.": "Token de autenticación no válido. Por favor, revisa tu configuración.", "Invalid username format": "Formato de nombre de usuario no válido", "Just now": "Ahora mismo", "Joined": "Se unió", "Language": "Idioma", "Larger size, same quality": "Tamaño más grande, misma calidad", "Last Page": "Última Página", "Load Database": "Cargar Base de Datos", "Load from database": "Cargar desde base de datos", "Localized": "Localizado", "Media": "Medios", "Media: {{media}}": "Medios: {{media}}", "Need help with Auth Token? See": "¿Necesitas ayuda con el token de autenticación? Consulta", "Next": "Siguiente", "No accounts yet": "Todavía no hay cuentas", "No content available": "No hay contenido disponible", "No media files found": "No se encontraron archivos multimedia", "Overwrite": "Sobrescribir", "Overwrite Existing Data?": "¿Sobrescribir datos existentes?", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "Los miembros de pago pueden generar automáticamente tokens de autenticación después de verificar la autenticación de Patreon—no se requiere búsqueda manual.", "Patreon": "Patreon", "Patreon Auth": "Autenticación de Patreon", "Patreon auth verified successfully": "Autenticación de Patreon verificada correctamente", "Please configure authentication in the Auth tab first": "Configura la autenticación en la pestaña Auth primero", "Please enter Patreon auth first": "Introduce primero la autenticación de Patreon", "Please verify Patreon auth first": "Verifica primero la autenticación de Patreon", "Please visit a profile page for auto-detection": "Visita una página de perfil para detección automática", "Posts": "Publicaciones", "Posts: {{posts}}": "Publicaciones: {{posts}}", "Prev": "Anterior", "Preview": "Vista previa", "Refresh": "Actualizar", "Refreshing": "Actualizando", "Report bugs or request features:": "Informa errores o solicita funciones:", "Request timeout": "Tiempo de espera agotado", "Reset": "Restablecer", "Reset Settings": "Restablecer ajustes", "Remove Group": "Quitar Grupo", "Resume": "Reanudar", "Server": "Servidor", "Server Timeout": "Tiempo de espera del servidor", "Select a group": "Seleccionar un grupo", "Select All": "Seleccionar todo", "selected": "seleccionado", "More options": "Más opciones", "Explore Database": "Explorar base de datos", "Settings": "Configuración", "Smaller size, same quality": "Tamaño más pequeño, misma calidad", "Something went wrong.": "Algo salió mal.", "Sound Effects": "Efectos de Sonido", "Start": "Iniciar", "Stop": "Detener", "Stop Fetch": "Detener Obtención", "Subscribe": "Suscríbete", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "Suscríbete por $5 en Patreon y tu código de autenticación se te enviará automáticamente por correo electrónico en unos minutos.", "System Default": "Predeterminado del Sistema", "Text": "Texto", "Theme": "Tema", "Time Formats:": "Formatos de Hora:", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "Tiempo de espera para respuestas del servidor en segundos. Generar token automáticamente si ocurre un tiempo de espera.", "Toggle visibility": "Mostrar/ocultar", "Token generated successfully": "Token generado correctamente ({{current}}/{{total}})", "Token generation failed. Please try again": "La generación del token falló. Inténtalo de nuevo", "Ungroup": "Sin Grupo", "Update": "Actualizar", "Update will fetch the latest data and overwrite the database. Continue?": "La actualización obtendrá los datos más recientes y sobrescribirá la base de datos. ¿Continuar?", "Updating...": "Actualizando...", "If downloads fail, use concurrent 1": "Si las descargas fallan, usa concurrent 1", "Use Dashboard to fetch data.": "Usa el Panel de Control para obtener datos.", "Use code": "Usa el código", "Userscript": "Script de usuario", "Verification failed. Please try again": "La verificación falló. Inténtalo de nuevo", "Verified": "Verificado", "Verify": "Verificar", "Verifying": "Verificando", "Version": "Versión", "Video": "Video", "for Patreon Auth, click Verify to unlock demo. Test at": 'para la Autenticación de Patreon, haz clic en "Verificar" para desbloquear la demo. Prueba en', "the guide": "la guía", "to get your Patreon Auth code and start downloading with ease!": "para obtener tu código de autenticación de Patreon y empezar a descargar fácilmente." } };
  const fil = { "common": { "Abort": "Itigil", "Add": "Idagdag", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "Ang account data para kay @{{username}} ay umiiral na sa database. Gusto mo bang i-overwrite ito?", "Advanced Settings": "Mga Advanced na Setting", "All": "Lahat", "All Groups": "Lahat ng Grupo", "Are you sure to clear all data in the database?": "Sigurado ka bang buburahin ang lahat ng data sa database?", "Are you sure you want to delete account data? This action cannot be undone": "Sigurado ka bang buburahin ang data ni {{username}}? Hindi na ito maaaring ibalik.", "Are you sure you want to reset settings to defaults?": "Sigurado ka bang gusto mong i-reset ang mga setting sa default?", "Auth": "Awtorisasyon", "Auth Token": "Auth Token", "Back": "Bumalik", "Batch: {{page}}": "Batch: {{page}}", "Cancel": "Kanselahin", "Change Language": "Baguhin ang Wika", "Change Theme": "Baguhin ang Tema", "Choose the server closest to your location for best performance": "Piliin ang server na pinakamalapit sa iyong lokasyon para sa pinakamahusay na pagganap", "Chrome": "Chrome", "Clear": "Burahin", "Close": "Isara", "Combined Examples:": "Pinagsama-samang Mga Halimbawa:", "Common Formats:": "Karaniwang Mga Format:", "Concurrent Downloads": "Sabay-sabay na Pag-download", "Convert & Download": "I-convert at I-download", "Convert Animated GIFs": "I-convert ang GIF", "Convert GIFs (External)": "I-convert ang GIF (External)", "Converting GIFs...": "Kino-convert ang mga GIF...", "Converting...": "Kino-convert...", "Copied": "Nakopya", "Copy": "Kopyahin", "Current Media: {{current}} • Total Media: {{total}}": "Kasalukuyang Media: {{current}} • Kabuuang Media: {{total}}", "Dashboard": "Dashboard", "Database": "Database", "Date Formats:": "Mga Format ng Petsa:", "Date Since": "Petsa Mula", "Date Time Format": "Format ng Petsa at Oras", "Date Until": "Petsa Hanggang", "Delete": "Burahin", "Delete Account Data": "Burahin ang Account Data", "Delete selected group": "Tanggalin ang napiling grupo", "Deleting...": "Binubura...", "Demo mode is only available for @xbatchdemo": "Ang demo mode ay available lang para sa @xbatchdemo", "Download": "I-download", "Downloading...": "Nagda-download...", "Empty dates will fetch all available media": "Walang petsa ay kukuha ng lahat ng available na media", "Enter your Patreon auth": "Ilagay ang iyong Patreon auth", "Enter your auth token": "Ilagay ang iyong auth token", "Enter group name": "Ilagay ang pangalan ng grupo", "Error:": "Error:", "Export": "Mag-export", "Exporting...": "Nag-eexport...", "Failed to download media": "Nabigong i-download ang media", "Failed to fetch data": "Nabigong kunin ang data", "Failed to generate token": "Nabigong gumawa ng token", "Failed to refresh tokens": "Nabigong i-refresh ang mga token", "Clear dates": "I-clear ang mga petsa", "Failed to load data": "Nabigong mag-load ng data", "Fetched in {{time}}": "Nakuha sa {{time}}", "Fetch": "Kunin", "Fetch All": "Kunin Lahat", "Fetch GIF": "Kunin ang GIF", "Fetch Image": "Kunin ang Larawan", "Fetch Text": "Kunin ang Teksto", "Fetch Video": "Kunin ang Video", "Fetching...": "Kumukuha...", "Filter by Date Range": "I-filter ayon sa Hanay ng Petsa", "First Page": "Unang Pahina", "Followers": "Mga Tagasunod", "Following": "Sinusundan", "Font Family": "Uri ng Font", "GIF": "GIF", "Generate": "Gumawa", "Generate Auth Token": "Gumawa ng Auth Token", "Generating token...": "Gumagawa ng token...", "Global Settings": "Pandaigdigang Mga Setting", "Group": "Grupo", "Group Account": "Grupo ng Account", "HTTP error! status: {{status}}": "HTTP error! status: {{status}}", "Home": "Home", "{{hours}}h ago": "{{hours}}h na ang nakalipas", "{{minutes}}m ago": "{{minutes}}m na ang nakalipas", "{{days}}d ago": "{{days}}d na ang nakalipas", "Image": "Larawan", "Import": "Mag-import", "Importing...": "Nag-iimport...", "Include Retweets": "Isama ang mga Retweet", "Invalid Patreon auth": "Di-wastong Patreon auth", "Invalid Patreon auth. Please check your settings.": "Di-wastong Patreon auth. Mangyaring suriin ang iyong mga setting.", "Invalid auth token. Please check your settings.": "Di-wastong auth token. Mangyaring suriin ang iyong mga setting.", "Invalid username format": "Di-wastong format ng username", "Just now": "Ngayon lang", "Joined": "Sumali", "Language": "Wika", "Larger size, same quality": "Mas malaking laki, parehong kalidad", "Last Page": "Huling Pahina", "Load Database": "Mag-load ng Database", "Load from database": "Mag-load mula sa database", "Localized": "Naka-localize", "Media": "Media", "Media: {{media}}": "Media: {{media}}", "Need help with Auth Token? See": "Kailangan ng tulong sa Auth Token? Tingnan ang", "Next": "Susunod", "No accounts yet": "Wala pang mga account", "No content available": "Walang available na content", "No media files found": "Walang nahanap na media files", "Overwrite": "I-overwrite", "Overwrite Existing Data?": "I-overwrite ang Existing Data?", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "Ang mga paid member ay maaaring awtomatikong makagawa ng auth tokens pagkatapos i-verify ang Patreon auth—hindi na kailangan ng manual na paghahanap.", "Patreon": "Patreon", "Patreon Auth": "Patreon Auth", "Patreon auth verified successfully": "Matagumpay na na-verify ang Patreon auth", "Please configure authentication in the Auth tab first": "Mangyaring i-configure muna ang authentication sa Auth tab", "Please enter Patreon auth first": "Mangyaring ilagay muna ang Patreon auth", "Please verify Patreon auth first": "Mangyaring i-verify muna ang Patreon auth", "Please visit a profile page for auto-detection": "Mangyaring bumisita sa isang profile page para sa auto-detection", "Posts": "Mga Post", "Posts: {{posts}}": "Mga Post: {{posts}}", "Prev": "Nakaraan", "Preview": "Preview", "Refresh": "I-refresh", "Refreshing": "Nagre-refresh", "Report bugs or request features:": "Mag-ulat ng mga bug o humingi ng mga feature:", "Request timeout": "Nag-expire ang request", "Reset": "I-reset", "Reset Settings": "I-reset ang mga Setting", "Remove Group": "Tanggalin ang Grupo", "Resume": "Ipagpatuloy", "Server": "Server", "Server Timeout": "Server Timeout", "Select a group": "Pumili ng grupo", "Select All": "Piliin Lahat", "selected": "napili", "More options": "Higit pang mga opsyon", "Explore Database": "Tuklasin ang Database", "Settings": "Mga Setting", "Smaller size, same quality": "Mas maliit na laki, parehong kalidad", "Something went wrong.": "May nangyaring mali.", "Sound Effects": "Mga Epekto ng Tunog", "Start": "Simulan", "Stop": "Itigil", "Stop Fetch": "Itigil ang Pagkuha", "Subscribe": "Mag-subscribe", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "Mag-subscribe sa $5 sa Patreon at awtomatikong ipapadala sa iyo ang iyong auth code sa loob ng ilang minuto.", "System Default": "Default ng Sistema", "Text": "Teksto", "Theme": "Tema", "Time Formats:": "Mga Format ng Oras:", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "Timeout para sa mga server response sa segundo. Awtomatikong gumawa ng token kung may timeout.", "Toggle visibility": "I-toggle ang visibility", "Token generated successfully": "Matagumpay na nagawa ang token ({{current}}/{{total}})", "Token generation failed. Please try again": "Nabigo ang paggawa ng token. Mangyaring subukan muli", "Ungroup": "Walang Grupo", "Update": "I-update", "Update will fetch the latest data and overwrite the database. Continue?": "Ang update ay kukuha ng pinakabagong data at i-overwrite ang database. Magpatuloy?", "Updating...": "Nag-uupdate...", "If downloads fail, use concurrent 1": "Kung nabigo ang mga download, gumamit ng concurrent 1", "Use Dashboard to fetch data.": "Gamitin ang Dashboard para kunin ang data.", "Use code": "Gamitin ang code", "Userscript": "Userscript", "Verification failed. Please try again": "Nabigo ang verification. Mangyaring subukan muli", "Verified": "Na-verify na", "Verify": "I-verify", "Verifying": "Vine-verify", "Version": "Bersyon", "Video": "Video", "for Patreon Auth, click Verify to unlock demo. Test at": "para sa Patreon Auth, i-click ang Verify para i-unlock ang demo. Subukan sa", "the guide": "gabay", "to get your Patreon Auth code and start downloading with ease!": "para makuha ang iyong Patreon Auth code at magsimulang mag-download nang madali!" } };
  const fr = { "common": { "Abort": "Abandonner", "Add": "Ajouter", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "Les données du compte @{{username}} existent déjà dans la base de données. Voulez-vous les écraser ?", "Advanced Settings": "Paramètres avancés", "All": "Tout", "All Groups": "Tous les Groupes", "Are you sure to clear all data in the database?": "Êtes-vous sûr de vouloir effacer toutes les données de la base ?", "Are you sure you want to delete account data? This action cannot be undone": "Êtes-vous sûr de vouloir supprimer les données de {{username}} ? Cette action ne peut pas être annulée.", "Are you sure you want to reset settings to defaults?": "Êtes-vous sûr de vouloir réinitialiser les paramètres par défaut ?", "Auth": "Authentification", "Auth Token": "Token d'authentification", "Back": "Retour", "Batch: {{page}}": "Lot : {{page}}", "Cancel": "Annuler", "Change Language": "Changer la langue", "Change Theme": "Changer le thème", "Choose the server closest to your location for best performance": "Choisissez le serveur le plus proche de votre emplacement pour de meilleures performances", "Chrome": "Chrome", "Clear": "Effacer", "Close": "Fermer", "Combined Examples:": "Exemples combinés :", "Common Formats:": "Formats courants :", "Concurrent Downloads": "Téléchargements simultanés", "Convert & Download": "Convertir et télécharger", "Convert Animated GIFs": "Convertir des GIFs", "Convert GIFs (External)": "Convertir des GIFs (Externe)", "Converting GIFs...": "Conversion des GIFs...", "Converting...": "Conversion...", "Copied": "Copié", "Copy": "Copier", "Current Media: {{current}} • Total Media: {{total}}": "Médias actuels : {{current}} • Médias totaux : {{total}}", "Dashboard": "Tableau de bord", "Database": "Base de données", "Date Formats:": "Formats de date :", "Date Since": "Date Depuis", "Date Time Format": "Format date et heure", "Date Until": "Date Jusqu'à", "Delete": "Supprimer", "Delete Account Data": "Supprimer les données du compte", "Delete selected group": "Supprimer le groupe sélectionné", "Deleting...": "Suppression...", "Demo mode is only available for @xbatchdemo": "Le mode démo est uniquement disponible pour @xbatchdemo", "Download": "Télécharger", "Downloading...": "Téléchargement...", "Empty dates will fetch all available media": "Dates vides récupéreront tous les médias disponibles", "Enter your Patreon auth": "Entrez votre authentification Patreon", "Enter your auth token": "Entrez votre token d'authentification", "Enter group name": "Entrez le nom du groupe", "Error:": "Erreur :", "Export": "Exporter", "Exporting...": "Exportation...", "Failed to download media": "Échec de téléchargement des médias", "Failed to fetch data": "Échec de récupération des données", "Failed to generate token": "Échec de génération du token", "Failed to refresh tokens": "Échec de l'actualisation des tokens", "Clear dates": "Effacer les dates", "Failed to load data": "Échec du chargement des données", "Fetched in {{time}}": "Récupéré en {{time}}", "Fetch": "Récupérer", "Fetch All": "Tout récupérer", "Fetch GIF": "Récupérer le GIF", "Fetch Image": "Récupérer l'image", "Fetch Text": "Récupérer le texte", "Fetch Video": "Récupérer la vidéo", "Fetching...": "Récupération...", "Filter by Date Range": "Filtrer par plage de dates", "First Page": "Première Page", "Followers": "Abonnés", "Following": "Abonnements", "Font Family": "Famille de Police", "GIF": "GIF", "Generate": "Générer", "Generate Auth Token": "Générer un Token d'Authentification", "Generating token...": "Génération du jeton...", "Global Settings": "Paramètres globaux", "Group": "Groupe", "Group Account": "Grouper le Compte", "HTTP error! status: {{status}}": "Erreur HTTP ! statut : {{status}}", "Home": "Accueil", "{{hours}}h ago": "il y a {{hours}}h", "{{minutes}}m ago": "il y a {{minutes}}m", "{{days}}d ago": "il y a {{days}}j", "Image": "Image", "Import": "Importer", "Importing...": "Importation...", "Include Retweets": "Inclure les retweets", "Invalid Patreon auth": "Authentification Patreon invalide", "Invalid Patreon auth. Please check your settings.": "Authentification Patreon invalide. Veuillez vérifier vos paramètres.", "Invalid auth token. Please check your settings.": "Token d'authentification invalide. Veuillez vérifier vos paramètres.", "Invalid username format": "Format de nom d'utilisateur invalide", "Just now": "À l'instant", "Joined": "Inscrit", "Language": "Langue", "Larger size, same quality": "Taille plus grande, même qualité", "Last Page": "Dernière Page", "Load Database": "Charger la base de données", "Load from database": "Charger depuis la base de données", "Localized": "Localisé", "Media": "Médias", "Media: {{media}}": "Médias : {{media}}", "Need help with Auth Token? See": "Besoin d’aide avec le jeton d’authentification ? Voir", "Next": "Suivant", "No accounts yet": "Aucun compte pour le moment", "No content available": "Aucun contenu disponible", "No media files found": "Aucun fichier multimédia trouvé", "Overwrite": "Écraser", "Overwrite Existing Data?": "Écraser les données existantes ?", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "Les membres payants peuvent générer automatiquement des jetons d'authentification après avoir vérifié l'authentification Patreon—aucune recherche manuelle requise.", "Patreon": "Patreon", "Patreon Auth": "Authentification Patreon", "Patreon auth verified successfully": "Authentification Patreon vérifiée avec succès", "Please configure authentication in the Auth tab first": "Veuillez d'abord configurer l'authentification dans l'onglet Auth", "Please enter Patreon auth first": "Veuillez d'abord saisir l'authentification Patreon", "Please verify Patreon auth first": "Veuillez d'abord vérifier l'authentification Patreon", "Please visit a profile page for auto-detection": "Veuillez visiter une page de profil pour la détection automatique", "Posts": "Publications", "Posts: {{posts}}": "Publications : {{posts}}", "Prev": "Précédent", "Preview": "Aperçu", "Refresh": "Actualiser", "Refreshing": "Actualisation", "Report bugs or request features:": "Signalez des bugs ou demandez des fonctionnalités :", "Request timeout": "Délai d'attente dépassé", "Reset": "Réinitialiser", "Reset Settings": "Réinitialiser les paramètres", "Remove Group": "Retirer le Groupe", "Resume": "Reprendre", "Server": "Serveur", "Server Timeout": "Délai d'expiration du serveur", "Select a group": "Sélectionner un groupe", "Select All": "Tout sélectionner", "selected": "sélectionné", "More options": "Plus d'options", "Explore Database": "Explorer la base de données", "Settings": "Paramètres", "Smaller size, same quality": "Taille plus petite, même qualité", "Something went wrong.": "Quelque chose s'est mal passé.", "Sound Effects": "Effets Sonores", "Start": "Démarrer", "Stop": "Arrêter", "Stop Fetch": "Arrêter la Récupération", "Subscribe": "S’abonner", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "Abonnez-vous pour 5 $ sur Patreon et votre code d'authentification vous sera automatiquement envoyé par e-mail dans quelques minutes.", "System Default": "Par Défaut du Système", "Text": "Texte", "Theme": "Thème", "Time Formats:": "Formats d'heure :", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "Délai d'expiration pour les réponses du serveur en secondes. Générer automatiquement un jeton en cas de dépassement du délai.", "Toggle visibility": "Afficher/masquer", "Token generated successfully": "Token généré avec succès ({{current}}/{{total}})", "Token generation failed. Please try again": "Échec de génération du token. Veuillez réessayer", "Ungroup": "Sans Groupe", "Update": "Mettre à jour", "Update will fetch the latest data and overwrite the database. Continue?": "La mise à jour récupérera les dernières données et écrasera la base de données. Continuer ?", "Updating...": "Mise à jour en cours...", "If downloads fail, use concurrent 1": "Si les téléchargements échouent, utilisez concurrent 1", "Use Dashboard to fetch data.": "Utilisez le Tableau de bord pour récupérer les données.", "Use code": "Utilisez le code", "Userscript": "Script utilisateur", "Verification failed. Please try again": "Échec de vérification. Veuillez réessayer", "Verified": "Vérifié", "Verify": "Vérifier", "Verifying": "Vérification", "Version": "Version", "Video": "Vidéo", "for Patreon Auth, click Verify to unlock demo. Test at": "pour l’authentification Patreon, cliquez sur « Vérifier » pour déverrouiller la démo. Testez sur", "the guide": "le guide", "to get your Patreon Auth code and start downloading with ease!": "pour obtenir votre code d’authentification Patreon et commencer à télécharger facilement !" } };
  const hi = { "common": { "Abort": "रद्द करें", "Add": "जोड़ें", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "@{{username}} के लिए खाता डेटा पहले से ही डेटाबेस में मौजूद है। क्या आप इसे ओवरराइट करना चाहते हैं?", "Advanced Settings": "उन्नत सेटिंग्स", "All": "सभी", "All Groups": "सभी समूह", "Are you sure to clear all data in the database?": "क्या आप वाकई डेटाबेस का सारा डेटा साफ़ करना चाहते हैं?", "Are you sure you want to delete account data? This action cannot be undone": "क्या आप वाकई {{username}} का डेटा हटाना चाहते हैं? यह क्रिया वापस नहीं की जा सकती।", "Are you sure you want to reset settings to defaults?": "क्या आप वाकई सेटिंग्स को डिफ़ॉल्ट पर रीसेट करना चाहते हैं?", "Auth": "प्रमाणीकरण", "Auth Token": "ऑथ टोकन", "Back": "वापस", "Batch: {{page}}": "बैच: {{page}}", "Cancel": "रद्द करें", "Change Language": "भाषा बदलें", "Change Theme": "थीम बदलें", "Choose the server closest to your location for best performance": "सर्वोत्तम प्रदर्शन के लिए अपने स्थान के निकटतम सर्वर चुनें", "Chrome": "Chrome", "Clear": "साफ़ करें", "Close": "बंद करें", "Combined Examples:": "संयुक्त उदाहरण:", "Common Formats:": "सामान्य प्रारूप:", "Concurrent Downloads": "समकालिक डाउनलोड", "Convert & Download": "कन्वर्ट करें और डाउनलोड करें", "Convert Animated GIFs": "GIFs कन्वर्ट करें", "Convert GIFs (External)": "GIFs कन्वर्ट करें (बाहरी)", "Converting GIFs...": "GIFs कन्वर्ट हो रहे हैं...", "Converting...": "कन्वर्ट हो रहा है...", "Copied": "कॉपी किया गया", "Copy": "कॉपी करें", "Current Media: {{current}} • Total Media: {{total}}": "वर्तमान मीडिया: {{current}} • कुल मीडिया: {{total}}", "Dashboard": "डैशबोर्ड", "Database": "डेटाबेस", "Date Formats:": "दिनांक प्रारूप:", "Date Since": "तारीख से", "Date Time Format": "दिनांक समय प्रारूप", "Date Until": "तारीख तक", "Delete": "हटाएं", "Delete Account Data": "खाता डेटा हटाएँ", "Delete selected group": "चयनित समूह हटाएं", "Deleting...": "हटा रहे हैं...", "Demo mode is only available for @xbatchdemo": "डेमो मोड केवल @xbatchdemo के लिए उपलब्ध है", "Download": "डाउनलोड करें", "Downloading...": "डाउनलोड हो रहा है...", "Empty dates will fetch all available media": "खाली तिथियां सभी उपलब्ध मीडिया प्राप्त करेंगी", "Enter your Patreon auth": "अपना Patreon ऑथ दर्ज करें", "Enter your auth token": "अपना ऑथ टोकन दर्ज करें", "Enter group name": "समूह का नाम दर्ज करें", "Error:": "त्रुटि:", "Export": "निर्यात करें", "Exporting...": "निर्यात हो रहा है...", "Failed to download media": "मीडिया डाउनलोड विफल", "Failed to fetch data": "डेटा लाना विफल", "Failed to generate token": "टोकन जनरेट करना विफल", "Failed to refresh tokens": "टोकन रीफ्रेश करना विफल", "Clear dates": "तारीखें साफ करें", "Failed to load data": "डेटा लोड करना विफल", "Fetched in {{time}}": "{{time}} में प्राप्त किया गया", "Fetch": "प्राप्त करें", "Fetch All": "सब कुछ प्राप्त करें", "Fetch GIF": "GIF प्राप्त करें", "Fetch Image": "छवि प्राप्त करें", "Fetch Text": "पाठ प्राप्त करें", "Fetch Video": "वीडियो प्राप्त करें", "Fetching...": "प्राप्त किया जा रहा है...", "Filter by Date Range": "दिनांक सीमा के अनुसार फ़िल्टर करें", "First Page": "पहला पृष्ठ", "Followers": "फॉलोवर्स", "Following": "फॉलो कर रहे हैं", "Font Family": "फ़ॉन्ट परिवार", "GIF": "GIF", "Generate": "उत्पन्न करें", "Generate Auth Token": "प्रमाणीकरण टोकन जेनरेट करें", "Generating token...": "टोकन जेनरेट किया जा रहा है...", "Global Settings": "वैश्विक सेटिंग्स", "Group": "समूह", "Group Account": "खाता समूह", "HTTP error! status: {{status}}": "HTTP त्रुटि! स्थिति: {{status}}", "Home": "होम", "{{hours}}h ago": "{{hours}}घंटे पहले", "{{minutes}}m ago": "{{minutes}}मिनट पहले", "{{days}}d ago": "{{days}}दिन पहले", "Image": "छवि", "Import": "आयात करें", "Importing...": "आयात हो रहा है...", "Include Retweets": "रीट्वीट शामिल करें", "Invalid Patreon auth": "अमान्य Patreon ऑथ", "Invalid Patreon auth. Please check your settings.": "अमान्य Patreon ऑथ। कृपया अपनी सेटिंग्स जाँचें।", "Invalid auth token. Please check your settings.": "अमान्य ऑथ टोकन। कृपया सेटिंग्स जाँचें।", "Invalid username format": "अमान्य उपयोगकर्ता नाम प्रारूप", "Just now": "अभी", "Joined": "जुड़े", "Language": "भाषा", "Larger size, same quality": "आकार बड़ा, गुणवत्ता समान", "Last Page": "अंतिम पृष्ठ", "Load Database": "डेटाबेस लोड करें", "Load from database": "डेटाबेस से लोड करें", "Localized": "स्थानीयकृत", "Media": "मीडिया", "Media: {{media}}": "मीडिया: {{media}}", "Need help with Auth Token? See": "ऑथ टोकन में मदद चाहिए? देखें", "Next": "अगला", "No accounts yet": "अभी तक कोई खाता नहीं", "No content available": "कोई सामग्री उपलब्ध नहीं", "No media files found": "कोई मीडिया फ़ाइलें नहीं मिलीं", "Overwrite": "ओवरराइट करें", "Overwrite Existing Data?": "मौजूदा डेटा ओवरराइट करें?", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "भुगतान करने वाले सदस्य Patreon प्रमाणीकरण सत्यापित करने के बाद स्वचालित रूप से प्रमाणीकरण टोकन उत्पन्न कर सकते हैं—कोई मैन्युअल खोज की आवश्यकता नहीं है।", "Patreon": "Patreon", "Patreon Auth": "Patreon ऑथ", "Patreon auth verified successfully": "Patreon ऑथ सफलतापूर्वक सत्यापित", "Please configure authentication in the Auth tab first": "कृपया पहले ऑथ टैब में प्रमाणीकरण कॉन्फ़िगर करें", "Please enter Patreon auth first": "कृपया पहले Patreon ऑथ दर्ज करें", "Please verify Patreon auth first": "कृपया पहले Patreon ऑथ सत्यापित करें", "Please visit a profile page for auto-detection": "कृपया ऑटो-डिटेक्शन के लिए प्रोफ़ाइल पेज पर जाएं", "Posts": "पोस्ट", "Posts: {{posts}}": "पोस्ट: {{posts}}", "Prev": "पिछला", "Preview": "पूर्वावलोकन", "Refresh": "ताज़ा करें", "Refreshing": "ताज़ा कर रहा है", "Report bugs or request features:": "बग रिपोर्ट करें या फीचर का अनुरोध करें:", "Request timeout": "अनुरोध समय समाप्त", "Reset": "रीसेट करें", "Reset Settings": "सेटिंग्स रीसेट करें", "Remove Group": "समूह हटाएं", "Resume": "जारी रखें", "Server": "सर्वर", "Server Timeout": "सर्वर टाइमआउट", "Select a group": "एक समूह चुनें", "Select All": "सभी चुनें", "selected": "चयनित", "More options": "अधिक विकल्प", "Explore Database": "डेटाबेस एक्सप्लोर करें", "Settings": "सेटिंग्स", "Smaller size, same quality": "आकार छोटा, गुणवत्ता समान", "Something went wrong.": "कुछ गलत हो गया।", "Sound Effects": "ध्वनि प्रभाव", "Start": "प्रारंभ", "Stop": "रोकें", "Stop Fetch": "डेटा लाना बंद करें", "Subscribe": "सदस्यता लें", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "Patreon पर $5 के लिए सदस्यता लें और आपका प्रमाणीकरण कोड कुछ मिनटों के भीतर आपको स्वचालित रूप से ईमेल किया जाएगा।", "System Default": "सिस्टम डिफ़ॉल्ट", "Text": "पाठ", "Theme": "थीम", "Time Formats:": "समय प्रारूप:", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "सेकंड में सर्वर प्रतिक्रियाओं के लिए टाइमआउट। टाइमआउट होने पर स्वचालित रूप से टोकन उत्पन्न करें।", "Toggle visibility": "दिखाएँ/छुपाएँ", "Token generated successfully": "टोकन सफलतापूर्वक जनरेट हुआ ({{current}}/{{total}})", "Token generation failed. Please try again": "टोकन जनरेशन विफल। कृपया पुनः प्रयास करें", "Ungroup": "असमूहीकृत", "Update": "अपडेट करें", "Update will fetch the latest data and overwrite the database. Continue?": "अपडेट नवीनतम डेटा प्राप्त करेगा और डेटाबेस को ओवरराइट करेगा। जारी रखें?", "Updating...": "अपडेट हो रहा है...", "If downloads fail, use concurrent 1": "यदि डाउनलोड विफल होते हैं, तो concurrent 1 का उपयोग करें", "Use Dashboard to fetch data.": "डेटा प्राप्त करने के लिए डैशबोर्ड का उपयोग करें।", "Use code": "कोड उपयोग करें", "Userscript": "यूज़रस्क्रिप्ट", "Verification failed. Please try again": "सत्यापन विफल। कृपया पुनः प्रयास करें", "Verified": "सत्यापित", "Verify": "सत्यापित करें", "Verifying": "सत्यापित किया जा रहा है", "Version": "संस्करण", "Video": "वीडियो", "for Patreon Auth, click Verify to unlock demo. Test at": 'Patreon प्रमाणीकरण के लिए, डेमो अनलॉक करने हेतु "सत्यापित करें" पर क्लिक करें। परीक्षण करें:', "the guide": "मार्गदर्शिका", "to get your Patreon Auth code and start downloading with ease!": "अपना Patreon ऑथ कोड प्राप्त करें और आसानी से डाउनलोड शुरू करें!" } };
  const id = { "common": { "Abort": "Batalkan", "Add": "Tambah", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "Data akun untuk @{{username}} sudah ada di database. Apakah Anda ingin menimpanya?", "Advanced Settings": "Pengaturan Lanjutan", "All": "Semua", "All Groups": "Semua Grup", "Are you sure to clear all data in the database?": "Apakah Anda yakin ingin menghapus semua data di database?", "Are you sure you want to delete account data? This action cannot be undone": "Apakah Anda yakin ingin menghapus data {{username}}? Tindakan ini tidak dapat dibatalkan.", "Are you sure you want to reset settings to defaults?": "Apakah Anda yakin ingin mereset pengaturan ke default?", "Auth": "Autentikasi", "Auth Token": "Token Autentikasi", "Back": "Kembali", "Batch: {{page}}": "Batch: {{page}}", "Cancel": "Batal", "Change Language": "Ubah Bahasa", "Change Theme": "Ubah Tema", "Choose the server closest to your location for best performance": "Pilih server yang paling dekat dengan lokasi Anda untuk performa terbaik", "Chrome": "Chrome", "Clear": "Hapus", "Close": "Tutup", "Combined Examples:": "Contoh Gabungan:", "Common Formats:": "Format Umum:", "Concurrent Downloads": "Unduhan Bersamaan", "Convert & Download": "Konversi & Unduh", "Convert Animated GIFs": "Konversi GIF", "Convert GIFs (External)": "Konversi GIF (Eksternal)", "Converting GIFs...": "Mengonversi GIF...", "Converting...": "Mengonversi...", "Copied": "Disalin", "Copy": "Salin", "Current Media: {{current}} • Total Media: {{total}}": "Media Saat Ini: {{current}} • Total Media: {{total}}", "Dashboard": "Dasbor", "Database": "Database", "Date Formats:": "Format Tanggal:", "Date Since": "Tanggal Mulai", "Date Time Format": "Format Tanggal Waktu", "Date Until": "Tanggal Sampai", "Delete": "Hapus", "Delete Account Data": "Hapus Data Akun", "Delete selected group": "Hapus grup yang dipilih", "Deleting...": "Menghapus...", "Demo mode is only available for @xbatchdemo": "Mode demo hanya tersedia untuk @xbatchdemo", "Download": "Unduh", "Downloading...": "Mengunduh...", "Empty dates will fetch all available media": "Tanggal kosong akan mengambil semua media yang tersedia", "Enter your Patreon auth": "Masukkan autentikasi Patreon Anda", "Enter your auth token": "Masukkan token autentikasi Anda", "Enter group name": "Masukkan nama grup", "Error:": "Kesalahan:", "Export": "Ekspor", "Exporting...": "Mengekspor...", "Failed to download media": "Gagal mengunduh media", "Failed to fetch data": "Gagal mengambil data", "Failed to generate token": "Gagal menghasilkan token", "Failed to refresh tokens": "Gagal memperbarui token", "Clear dates": "Hapus tanggal", "Failed to load data": "Gagal memuat data", "Fetched in {{time}}": "Diambil dalam {{time}}", "Fetch": "Ambil", "Fetch All": "Ambil Semua", "Fetch GIF": "Ambil GIF", "Fetch Image": "Ambil Gambar", "Fetch Text": "Ambil Teks", "Fetch Video": "Ambil Video", "Fetching...": "Mengambil...", "Filter by Date Range": "Filter berdasarkan Rentang Tanggal", "First Page": "Halaman Pertama", "Followers": "Pengikut", "Following": "Mengikuti", "Font Family": "Jenis Font", "GIF": "GIF", "Generate": "Hasilkan", "Generate Auth Token": "Buat Token Auth", "Generating token...": "Menghasilkan token...", "Global Settings": "Pengaturan Global", "Group": "Grup", "Group Account": "Grup Akun", "HTTP error! status: {{status}}": "Kesalahan HTTP! status: {{status}}", "Home": "Beranda", "{{hours}}h ago": "{{hours}}j lalu", "{{minutes}}m ago": "{{minutes}}m lalu", "{{days}}d ago": "{{days}}h lalu", "Image": "Gambar", "Import": "Impor", "Importing...": "Mengimpor...", "Include Retweets": "Sertakan Retweet", "Invalid Patreon auth": "Autentikasi Patreon tidak valid", "Invalid Patreon auth. Please check your settings.": "Autentikasi Patreon tidak valid. Silakan periksa pengaturan Anda.", "Invalid auth token. Please check your settings.": "Token autentikasi tidak valid. Silakan periksa pengaturan Anda.", "Invalid username format": "Format username tidak valid", "Just now": "Baru saja", "Joined": "Bergabung", "Language": "Bahasa", "Larger size, same quality": "Ukuran lebih besar, kualitas sama", "Last Page": "Halaman Terakhir", "Load Database": "Muat Database", "Load from database": "Muat dari database", "Localized": "Terlokalisasi", "Media": "Media", "Media: {{media}}": "Media: {{media}}", "Need help with Auth Token? See": "Butuh bantuan dengan Token Autentikasi? Lihat", "Next": "Selanjutnya", "No accounts yet": "Belum ada akun", "No content available": "Tidak ada konten tersedia", "No media files found": "Tidak ada file media ditemukan", "Overwrite": "Timpa", "Overwrite Existing Data?": "Timpa Data yang Ada?", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "Anggota berbayar dapat secara otomatis menghasilkan token autentikasi setelah memverifikasi autentikasi Patreon—tidak perlu pencarian manual.", "Patreon": "Patreon", "Patreon Auth": "Autentikasi Patreon", "Patreon auth verified successfully": "Autentikasi Patreon berhasil diverifikasi", "Please configure authentication in the Auth tab first": "Silakan konfigurasi autentikasi di tab Auth terlebih dahulu", "Please enter Patreon auth first": "Silakan masukkan autentikasi Patreon terlebih dahulu", "Please verify Patreon auth first": "Silakan verifikasi autentikasi Patreon terlebih dahulu", "Please visit a profile page for auto-detection": "Silakan kunjungi halaman profil untuk deteksi otomatis", "Posts": "Postingan", "Posts: {{posts}}": "Postingan: {{posts}}", "Prev": "Sebelumnya", "Preview": "Pratinjau", "Refresh": "Perbarui", "Refreshing": "Memperbarui", "Report bugs or request features:": "Laporkan bug atau minta fitur:", "Request timeout": "Waktu habis permintaan", "Reset": "Reset", "Reset Settings": "Reset Pengaturan", "Remove Group": "Hapus Grup", "Resume": "Lanjutkan", "Server": "Server", "Server Timeout": "Batas Waktu Server", "Select a group": "Pilih grup", "Select All": "Pilih Semua", "selected": "dipilih", "More options": "Opsi Lainnya", "Explore Database": "Jelajahi Database", "Settings": "Pengaturan", "Smaller size, same quality": "Ukuran lebih kecil, kualitas sama", "Something went wrong.": "Terjadi kesalahan.", "Sound Effects": "Efek Suara", "Start": "Mulai", "Stop": "Berhenti", "Stop Fetch": "Hentikan Fetch", "Subscribe": "Berlangganan", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "Berlangganan seharga $5 di Patreon dan kode autentikasi Anda akan otomatis dikirim melalui email dalam beberapa menit.", "System Default": "Bawaan Sistem", "Text": "Teks", "Theme": "Tema", "Time Formats:": "Format Waktu:", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "Batas waktu untuk respons server dalam detik. Otomatis menghasilkan token jika terjadi batas waktu.", "Toggle visibility": "Alihkan visibilitas", "Token generated successfully": "Token berhasil dihasilkan ({{current}}/{{total}})", "Token generation failed. Please try again": "Pembuatan token gagal. Silakan coba lagi", "Ungroup": "Tanpa Grup", "Update": "Perbarui", "Update will fetch the latest data and overwrite the database. Continue?": "Pembaruan akan mengambil data terbaru dan menimpa database. Lanjutkan?", "Updating...": "Memperbarui...", "If downloads fail, use concurrent 1": "Jika unduhan gagal, gunakan concurrent 1", "Use Dashboard to fetch data.": "Gunakan Dasbor untuk mengambil data.", "Use code": "Gunakan kode", "Userscript": "Userscript", "Verification failed. Please try again": "Verifikasi gagal. Silakan coba lagi", "Verified": "Terverifikasi", "Verify": "Verifikasi", "Verifying": "Memverifikasi", "Version": "Versi", "Video": "Video", "for Patreon Auth, click Verify to unlock demo. Test at": "untuk Autentikasi Patreon, klik Verifikasi untuk membuka demo. Tes di", "the guide": "panduannya", "to get your Patreon Auth code and start downloading with ease!": "untuk mendapatkan kode Autentikasi Patreon dan mulai mengunduh dengan mudah!" } };
  const it = { "common": { "Abort": "Interrompi", "Add": "Aggiungi", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "I dati dell'account per @{{username}} esistono già nel database. Vuoi sovrascriverli?", "Advanced Settings": "Impostazioni avanzate", "All": "Tutto", "All Groups": "Tutti i Gruppi", "Are you sure to clear all data in the database?": "Sei sicuro di voler cancellare tutti i dati nel database?", "Are you sure you want to delete account data? This action cannot be undone": "Sei sicuro di voler eliminare i dati di {{username}}? Questa azione non può essere annullata.", "Are you sure you want to reset settings to defaults?": "Sei sicuro di voler ripristinare le impostazioni predefinite?", "Auth": "Autenticazione", "Auth Token": "Token di Autenticazione", "Back": "Indietro", "Batch: {{page}}": "Batch: {{page}}", "Cancel": "Annulla", "Change Language": "Cambia Lingua", "Change Theme": "Cambia Tema", "Choose the server closest to your location for best performance": "Scegli il server più vicino alla tua posizione per le migliori prestazioni", "Chrome": "Chrome", "Clear": "Cancella", "Close": "Chiudi", "Combined Examples:": "Esempi Combinati:", "Common Formats:": "Formati Comuni:", "Concurrent Downloads": "Download Simultanei", "Convert & Download": "Converti e Scarica", "Convert Animated GIFs": "Converti GIF", "Convert GIFs (External)": "Converti GIF (Esterno)", "Converting GIFs...": "Conversione GIF...", "Converting...": "Conversione...", "Copied": "Copiato", "Copy": "Copia", "Current Media: {{current}} • Total Media: {{total}}": "Media Corrente: {{current}} • Media Totale: {{total}}", "Dashboard": "Dashboard", "Database": "Database", "Date Formats:": "Formati Data:", "Date Since": "Data Da", "Date Time Format": "Formato Data Ora", "Date Until": "Data Fino", "Delete": "Elimina", "Delete Account Data": "Elimina Dati Account", "Delete selected group": "Elimina gruppo selezionato", "Deleting...": "Eliminazione...", "Demo mode is only available for @xbatchdemo": "La modalità demo è disponibile solo per @xbatchdemo", "Download": "Scarica", "Downloading...": "Download in corso...", "Empty dates will fetch all available media": "Date vuote recupereranno tutti i media disponibili", "Enter your Patreon auth": "Inserisci la tua autenticazione Patreon", "Enter your auth token": "Inserisci il tuo token di autenticazione", "Enter group name": "Inserisci nome gruppo", "Error:": "Errore:", "Export": "Esporta", "Exporting...": "Esportazione...", "Failed to download media": "Impossibile scaricare i media", "Failed to fetch data": "Impossibile recuperare i dati", "Failed to generate token": "Impossibile generare il token", "Failed to refresh tokens": "Impossibile aggiornare i token", "Clear dates": "Cancella date", "Failed to load data": "Impossibile caricare i dati", "Fetched in {{time}}": "Recuperato in {{time}}", "Fetch": "Recupera", "Fetch All": "Recupera tutto", "Fetch GIF": "Recupera GIF", "Fetch Image": "Recupera immagine", "Fetch Text": "Recupera testo", "Fetch Video": "Recupera video", "Fetching...": "Recupero...", "Filter by Date Range": "Filtra per intervallo di date", "First Page": "Prima Pagina", "Followers": "Follower", "Following": "Seguiti", "Font Family": "Famiglia di Font", "GIF": "GIF", "Generate": "Genera", "Generate Auth Token": "Genera Token di Autenticazione", "Generating token...": "Generazione token...", "Global Settings": "Impostazioni Globali", "Group": "Gruppo", "Group Account": "Raggruppa Account", "HTTP error! status: {{status}}": "Errore HTTP! stato: {{status}}", "Home": "Home", "{{hours}}h ago": "{{hours}}h fa", "{{minutes}}m ago": "{{minutes}}m fa", "{{days}}d ago": "{{days}}g fa", "Image": "Immagine", "Import": "Importa", "Importing...": "Importazione...", "Include Retweets": "Includi Retweet", "Invalid Patreon auth": "Autenticazione Patreon non valida", "Invalid Patreon auth. Please check your settings.": "Autenticazione Patreon non valida. Controlla le impostazioni.", "Invalid auth token. Please check your settings.": "Token di autenticazione non valido. Controlla le impostazioni.", "Invalid username format": "Formato nome utente non valido", "Just now": "Proprio ora", "Joined": "Iscritto", "Language": "Lingua", "Larger size, same quality": "Dimensione maggiore, stessa qualità", "Last Page": "Ultima Pagina", "Load Database": "Carica Database", "Load from database": "Carica dal database", "Localized": "Localizzato", "Media": "Media", "Media: {{media}}": "Media: {{media}}", "Need help with Auth Token? See": "Hai bisogno di aiuto con il Token di Autenticazione? Vedi", "Next": "Succ", "No accounts yet": "Nessun account ancora", "No content available": "Nessun contenuto disponibile", "No media files found": "Nessun file multimediale trovato", "Overwrite": "Sovrascrivi", "Overwrite Existing Data?": "Sovrascrivere i Dati Esistenti?", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "I membri paganti possono generare automaticamente i token di autenticazione dopo aver verificato l'autenticazione Patreon—nessuna ricerca manuale richiesta.", "Patreon": "Patreon", "Patreon Auth": "Autenticazione Patreon", "Patreon auth verified successfully": "Autenticazione Patreon verificata con successo", "Please configure authentication in the Auth tab first": "Configura prima l'autenticazione nella scheda Auth", "Please enter Patreon auth first": "Inserisci prima l'autenticazione Patreon", "Please verify Patreon auth first": "Verifica prima l'autenticazione Patreon", "Please visit a profile page for auto-detection": "Visita una pagina profilo per il rilevamento automatico", "Posts": "Post", "Posts: {{posts}}": "Post: {{posts}}", "Prev": "Prec", "Preview": "Anteprima", "Refresh": "Aggiorna", "Refreshing": "Aggiornamento", "Report bugs or request features:": "Segnala bug o richiedi funzionalità:", "Request timeout": "Timeout della richiesta", "Reset": "Ripristina", "Reset Settings": "Ripristina Impostazioni", "Remove Group": "Rimuovi Gruppo", "Resume": "Riprendi", "Server": "Server", "Server Timeout": "Timeout Server", "Select a group": "Seleziona un gruppo", "Select All": "Seleziona tutto", "selected": "selezionato", "More options": "Altre opzioni", "Explore Database": "Esplora database", "Settings": "Impostazioni", "Smaller size, same quality": "Dimensione ridotta, stessa qualità", "Something went wrong.": "Qualcosa è andato storto.", "Sound Effects": "Effetti Sonori", "Start": "Avvia", "Stop": "Ferma", "Stop Fetch": "Interrompi Recupero", "Subscribe": "Abbonati", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "Abbonati per $5 su Patreon e il tuo codice di autenticazione ti verrà inviato automaticamente via email entro pochi minuti.", "System Default": "Predefinito di Sistema", "Text": "Testo", "Theme": "Tema", "Time Formats:": "Formati Ora:", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "Timeout per le risposte del server in secondi. Genera automaticamente il token se si verifica un timeout.", "Toggle visibility": "Attiva/disattiva visibilità", "Token generated successfully": "Token generato con successo ({{current}}/{{total}})", "Token generation failed. Please try again": "Generazione token fallita. Riprova", "Ungroup": "Senza Gruppo", "Update": "Aggiorna", "Update will fetch the latest data and overwrite the database. Continue?": "L'aggiornamento recupererà i dati più recenti e sovrascriverà il database. Continuare?", "Updating...": "Aggiornamento...", "If downloads fail, use concurrent 1": "Se i download falliscono, usa concurrent 1", "Use Dashboard to fetch data.": "Usa la Dashboard per recuperare i dati.", "Use code": "Usa il codice", "Userscript": "Userscript", "Verification failed. Please try again": "Verifica fallita. Riprova", "Verified": "Verificato", "Verify": "Verifica", "Verifying": "Verifica in corso", "Version": "Versione", "Video": "Video", "for Patreon Auth, click Verify to unlock demo. Test at": "per l'autenticazione Patreon, clicca Verifica per sbloccare la demo. Testa su", "the guide": "la guida", "to get your Patreon Auth code and start downloading with ease!": "per ottenere il tuo codice di autenticazione Patreon e iniziare a scaricare facilmente!" } };
  const ja = { "common": { "Abort": "中止", "Add": "追加", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "@{{username}} のアカウントデータは既にデータベースに存在します。上書きしますか?", "Advanced Settings": "詳細設定", "All": "すべて", "All Groups": "すべてのグループ", "Are you sure to clear all data in the database?": "データベースのすべてのデータをクリアしてもよろしいですか?", "Are you sure you want to delete account data? This action cannot be undone": "{{username}}のデータを削除してもよろしいですか?この操作は元に戻せません。", "Are you sure you want to reset settings to defaults?": "設定をデフォルトにリセットしてもよろしいですか?", "Auth": "認証", "Auth Token": "認証トークン", "Back": "戻る", "Batch: {{page}}": "バッチ: {{page}}", "Cancel": "キャンセル", "Change Language": "言語を変更", "Change Theme": "テーマを変更", "Choose the server closest to your location for best performance": "最高のパフォーマンスを得るために、お住まいの地域に最も近いサーバーを選択してください", "Chrome": "Chrome", "Clear": "クリア", "Close": "閉じる", "Combined Examples:": "組み合わせ例:", "Common Formats:": "一般的な形式:", "Concurrent Downloads": "同時ダウンロード数", "Convert & Download": "変換してダウンロード", "Convert Animated GIFs": "GIFを変換", "Convert GIFs (External)": "GIFを変換(外部)", "Converting GIFs...": "GIF変換中...", "Converting...": "変換中...", "Copied": "コピーしました", "Copy": "コピー", "Current Media: {{current}} • Total Media: {{total}}": "現在のメディア: {{current}} • 合計メディア: {{total}}", "Dashboard": "ダッシュボード", "Database": "データベース", "Date Formats:": "日付形式:", "Date Since": "開始日", "Date Time Format": "日時フォーマット", "Date Until": "終了日", "Delete": "削除", "Delete Account Data": "アカウントデータの削除", "Delete selected group": "選択したグループを削除", "Deleting...": "削除中...", "Demo mode is only available for @xbatchdemo": "デモモードは @xbatchdemo のみ利用できます", "Download": "ダウンロード", "Downloading...": "ダウンロード中...", "Empty dates will fetch all available media": "日付が空の場合、利用可能なすべてのメディアを取得します", "Enter your Patreon auth": "Patreon認証を入力", "Enter your auth token": "認証トークンを入力", "Enter group name": "グループ名を入力", "Error:": "エラー:", "Export": "エクスポート", "Exporting...": "エクスポート中...", "Failed to download media": "メディアダウンロードに失敗しました", "Failed to fetch data": "データ取得に失敗しました", "Failed to generate token": "トークン生成に失敗しました", "Failed to refresh tokens": "トークンの更新に失敗しました", "Clear dates": "日付をクリア", "Failed to load data": "データの読み込みに失敗しました", "Fetched in {{time}}": "{{time}}で取得", "Fetch": "取得", "Fetch All": "すべて取得", "Fetch GIF": "GIFを取得", "Fetch Image": "画像を取得", "Fetch Text": "テキストを取得", "Fetch Video": "ビデオを取得", "Fetching...": "取得中...", "Filter by Date Range": "日付範囲でフィルター", "First Page": "最初のページ", "Followers": "フォロワー", "Following": "フォロー中", "Font Family": "フォントファミリー", "GIF": "GIF", "Generate": "生成", "Generate Auth Token": "認証トークンを生成", "Generating token...": "トークン生成中...", "Global Settings": "グローバル設定", "Group": "グループ", "Group Account": "アカウントをグループ化", "HTTP error! status: {{status}}": "HTTP エラー! ステータス: {{status}}", "Home": "ホーム", "{{hours}}h ago": "{{hours}}時間前", "{{minutes}}m ago": "{{minutes}}分前", "{{days}}d ago": "{{days}}日前", "Image": "画像", "Import": "インポート", "Importing...": "インポート中...", "Include Retweets": "リツイートを含む", "Invalid Patreon auth": "無効なPatreon認証", "Invalid Patreon auth. Please check your settings.": "無効なPatreon認証です。設定を確認してください。", "Invalid auth token. Please check your settings.": "無効な認証トークンです。設定を確認してください。", "Invalid username format": "無効なユーザー名形式", "Just now": "たった今", "Joined": "参加日", "Language": "言語", "Larger size, same quality": "サイズは大きく、品質は同じです", "Last Page": "最後のページ", "Load Database": "データベースを読み込む", "Load from database": "データベースから読み込む", "Localized": "ローカライズ済み", "Media": "メディア", "Media: {{media}}": "メディア: {{media}}", "Need help with Auth Token? See": "認証トークンでお困りですか?こちらをご覧ください:", "Next": "次へ", "No accounts yet": "まだアカウントがありません", "No content available": "利用可能なコンテンツがありません", "No media files found": "メディアファイルが見つかりません", "Overwrite": "上書き", "Overwrite Existing Data?": "既存のデータを上書きしますか?", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "有料メンバーは、Patreon認証を確認した後、認証トークンを自動的に生成できます—手動検索は不要です。", "Patreon": "Patreon", "Patreon Auth": "Patreon認証", "Patreon auth verified successfully": "Patreon認証が正常に確認されました", "Please configure authentication in the Auth tab first": "最初に認証タブで認証を設定してください", "Please enter Patreon auth first": "最初にPatreon認証を入力してください", "Please verify Patreon auth first": "最初にPatreon認証を確認してください", "Please visit a profile page for auto-detection": "プロフィールページを訪問して自動検出してください", "Posts": "投稿", "Posts: {{posts}}": "投稿: {{posts}}", "Prev": "前へ", "Preview": "プレビュー", "Refresh": "更新", "Refreshing": "更新中", "Report bugs or request features:": "バグ報告や機能リクエストはこちら:", "Request timeout": "リクエストタイムアウト", "Reset": "リセット", "Reset Settings": "設定のリセット", "Remove Group": "グループを削除", "Resume": "再開", "Server": "サーバー", "Server Timeout": "サーバータイムアウト", "Select a group": "グループを選択", "Select All": "すべて選択", "selected": "選択済み", "More options": "その他のオプション", "Explore Database": "データベースを探索", "Settings": "設定", "Smaller size, same quality": "サイズは小さく、品質は同じです", "Something went wrong.": "何かが間違っています。", "Sound Effects": "サウンドエフェクト", "Start": "開始", "Stop": "停止", "Stop Fetch": "取得を停止", "Subscribe": "購読する", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "Patreonで$5のサブスクリプションを購入すると、認証コードが数分以内に自動的にメールで送信されます。", "System Default": "システムデフォルト", "Text": "テキスト", "Theme": "テーマ", "Time Formats:": "時刻形式:", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "サーバー応答のタイムアウト(秒単位)。タイムアウトが発生した場合、トークンを自動生成します。", "Toggle visibility": "表示/非表示を切り替え", "Token generated successfully": "トークンが正常に生成されました ({{current}}/{{total}})", "Token generation failed. Please try again": "トークン生成に失敗しました。再試行してください", "Ungroup": "グループなし", "Update": "更新", "Update will fetch the latest data and overwrite the database. Continue?": "更新により最新データを取得し、データベースを上書きします。続行しますか?", "Updating...": "更新中...", "If downloads fail, use concurrent 1": "ダウンロードが失敗した場合は、concurrent 1を使用してください", "Use Dashboard to fetch data.": "ダッシュボードを使用してデータを取得してください。", "Use code": "コードを使用", "Userscript": "ユーザースクリプト", "Verification failed. Please try again": "検証に失敗しました。再試行してください", "Verified": "確認済み", "Verify": "確認", "Verifying": "確認中", "Version": "バージョン", "Video": "ビデオ", "for Patreon Auth, click Verify to unlock demo. Test at": "Patreon 認証用。デモを有効にするには「確認」をクリック。テスト先:", "the guide": "ガイド", "to get your Patreon Auth code and start downloading with ease!": "Patreon 認証コードを入手して、簡単にダウンロードを開始しましょう!" } };
  const ko = { "common": { "Abort": "중단", "Add": "추가", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "@{{username}}의 계정 데이터가 이미 데이터베이스에 존재합니다. 덮어쓰시겠습니까?", "Advanced Settings": "고급 설정", "All": "전체", "All Groups": "모든 그룹", "Are you sure to clear all data in the database?": "데이터베이스의 모든 데이터를 삭제하시겠습니까?", "Are you sure you want to delete account data? This action cannot be undone": "{{username}}의 데이터를 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.", "Are you sure you want to reset settings to defaults?": "설정을 기본값으로 재설정하시겠습니까?", "Auth": "인증", "Auth Token": "인증 토큰", "Back": "뒤로", "Batch: {{page}}": "배치: {{page}}", "Cancel": "취소", "Change Language": "언어 변경", "Change Theme": "테마 변경", "Choose the server closest to your location for best performance": "최상의 성능을 위해 가장 가까운 서버를 선택하세요", "Chrome": "Chrome", "Clear": "삭제", "Close": "닫기", "Combined Examples:": "결합 예시:", "Common Formats:": "일반 형식:", "Concurrent Downloads": "동시 다운로드", "Convert & Download": "변환 및 다운로드", "Convert Animated GIFs": "GIF 변환", "Convert GIFs (External)": "GIF 변환 (외부)", "Converting GIFs...": "GIF 변환 중...", "Converting...": "변환 중...", "Copied": "복사됨", "Copy": "복사", "Current Media: {{current}} • Total Media: {{total}}": "현재 미디어: {{current}} • 전체 미디어: {{total}}", "Dashboard": "대시보드", "Database": "데이터베이스", "Date Formats:": "날짜 형식:", "Date Since": "시작 날짜", "Date Time Format": "날짜 시간 형식", "Date Until": "종료 날짜", "Delete": "삭제", "Delete Account Data": "계정 데이터 삭제", "Delete selected group": "선택한 그룹 삭제", "Deleting...": "삭제 중...", "Demo mode is only available for @xbatchdemo": "데모 모드는 @xbatchdemo에게만 제공됩니다", "Download": "다운로드", "Downloading...": "다운로드 중...", "Empty dates will fetch all available media": "날짜가 비어있으면 사용 가능한 모든 미디어를 가져옵니다", "Enter your Patreon auth": "Patreon 인증을 입력하세요", "Enter your auth token": "인증 토큰을 입력하세요", "Enter group name": "그룹 이름 입력", "Error:": "오류:", "Export": "내보내기", "Exporting...": "내보내는 중...", "Failed to download media": "미디어 다운로드 실패", "Failed to fetch data": "데이터 가져오기 실패", "Failed to generate token": "토큰 생성 실패", "Failed to refresh tokens": "토큰 새로고침 실패", "Clear dates": "날짜 지우기", "Failed to load data": "데이터 불러오기 실패", "Fetched in {{time}}": "{{time}}에 가져옴", "Fetch": "가져오기", "Fetch All": "전체 가져오기", "Fetch GIF": "GIF 가져오기", "Fetch Image": "이미지 가져오기", "Fetch Text": "텍스트 가져오기", "Fetch Video": "비디오 가져오기", "Fetching...": "가져오는 중...", "Filter by Date Range": "날짜 범위로 필터링", "First Page": "첫 페이지", "Followers": "팔로워", "Following": "팔로잉", "Font Family": "글꼴 모음", "GIF": "GIF", "Generate": "생성", "Generate Auth Token": "인증 토큰 생성", "Generating token...": "토큰 생성 중...", "Global Settings": "전역 설정", "Group": "그룹", "Group Account": "계정 그룹화", "HTTP error! status: {{status}}": "HTTP 오류! 상태: {{status}}", "Home": "홈", "{{hours}}h ago": "{{hours}}시간 전", "{{minutes}}m ago": "{{minutes}}분 전", "{{days}}d ago": "{{days}}일 전", "Image": "이미지", "Import": "가져오기", "Importing...": "가져오는 중...", "Include Retweets": "리트윗 포함", "Invalid Patreon auth": "잘못된 Patreon 인증", "Invalid Patreon auth. Please check your settings.": "잘못된 Patreon 인증입니다. 설정을 확인해주세요.", "Invalid auth token. Please check your settings.": "잘못된 인증 토큰입니다. 설정을 확인해주세요.", "Invalid username format": "잘못된 사용자명 형식", "Just now": "방금 전", "Joined": "가입일", "Language": "언어", "Larger size, same quality": "더 큰 용량, 동일한 품질", "Last Page": "마지막 페이지", "Load Database": "데이터베이스 불러오기", "Load from database": "데이터베이스에서 불러오기", "Localized": "현지화됨", "Media": "미디어", "Media: {{media}}": "미디어: {{media}}", "Need help with Auth Token? See": "인증 토큰이 필요하신가요? 다음을 참조하세요:", "Next": "다음", "No accounts yet": "아직 계정이 없습니다", "No content available": "사용 가능한 콘텐츠가 없습니다", "No media files found": "미디어 파일을 찾을 수 없습니다", "Overwrite": "덮어쓰기", "Overwrite Existing Data?": "기존 데이터를 덮어쓰시겠습니까?", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "유료 회원은 Patreon 인증을 확인한 후 자동으로 인증 토큰을 생성할 수 있습니다—수동 검색이 필요하지 않습니다.", "Patreon": "Patreon", "Patreon Auth": "Patreon 인증", "Patreon auth verified successfully": "Patreon 인증이 성공적으로 확인되었습니다", "Please configure authentication in the Auth tab first": "먼저 Auth 탭에서 인증을 구성해주세요", "Please enter Patreon auth first": "먼저 Patreon 인증을 입력해주세요", "Please verify Patreon auth first": "먼저 Patreon 인증을 확인해주세요", "Please visit a profile page for auto-detection": "자동 감지를 위해 프로필 페이지를 방문해주세요", "Posts": "게시물", "Posts: {{posts}}": "게시물: {{posts}}", "Prev": "이전", "Preview": "미리보기", "Refresh": "새로고침", "Refreshing": "새로고침 중", "Report bugs or request features:": "버그 신고 또는 기능 요청:", "Request timeout": "요청 시간 초과", "Reset": "재설정", "Reset Settings": "설정 재설정", "Remove Group": "그룹 제거", "Resume": "재개", "Server": "서버", "Server Timeout": "서버 타임아웃", "Select a group": "그룹 선택", "Select All": "모두 선택", "selected": "선택됨", "More options": "더 많은 옵션", "Explore Database": "데이터베이스 탐색", "Settings": "설정", "Smaller size, same quality": "더 작은 용량, 동일한 품질", "Something went wrong.": "문제가 발생했습니다.", "Sound Effects": "사운드 효과", "Start": "시작", "Stop": "중지", "Stop Fetch": "가져오기 중지", "Subscribe": "구독하기", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "Patreon에서 $5로 구독하면 인증 코드가 몇 분 내에 자동으로 이메일로 전송됩니다.", "System Default": "시스템 기본값", "Text": "텍스트", "Theme": "테마", "Time Formats:": "시간 형식:", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "서버 응답의 타임아웃(초 단위). 타임아웃이 발생하면 토큰을 자동으로 생성합니다.", "Toggle visibility": "표시/숨기기", "Token generated successfully": "토큰이 성공적으로 생성되었습니다 ({{current}}/{{total}})", "Token generation failed. Please try again": "토큰 생성 실패. 다시 시도해주세요", "Ungroup": "그룹 없음", "Update": "업데이트", "Update will fetch the latest data and overwrite the database. Continue?": "업데이트는 최신 데이터를 가져와 데이터베이스를 덮어씁니다. 계속하시겠습니까?", "Updating...": "업데이트 중...", "If downloads fail, use concurrent 1": "다운로드가 실패하면 concurrent 1을 사용하세요", "Use Dashboard to fetch data.": "대시보드를 사용하여 데이터를 가져와주세요.", "Use code": "코드를 사용", "Userscript": "유저스크립트", "Verification failed. Please try again": "확인 실패. 다시 시도해주세요", "Verified": "확인됨", "Verify": "확인", "Verifying": "확인 중", "Version": "버전", "Video": "비디오", "for Patreon Auth, click Verify to unlock demo. Test at": "Patreon 인증용입니다. 데모를 해제하려면 ‘확인’을 클릭하세요. 테스트:", "the guide": "가이드", "to get your Patreon Auth code and start downloading with ease!": "Patreon 인증 코드를 받아 손쉽게 다운로드를 시작하세요!" } };
  const nl = { "common": { "Abort": "Afbreken", "Add": "Toevoegen", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "Accountgegevens voor @{{username}} bestaan al in de database. Wil je deze overschrijven?", "Advanced Settings": "Geavanceerde instellingen", "All": "Alles", "All Groups": "Alle Groepen", "Are you sure to clear all data in the database?": "Weet je zeker dat je alle gegevens in de database wilt wissen?", "Are you sure you want to delete account data? This action cannot be undone": "Weet je zeker dat je de gegevens van {{username}} wilt verwijderen? Deze actie kan niet ongedaan worden gemaakt.", "Are you sure you want to reset settings to defaults?": "Weet je zeker dat je de instellingen wilt resetten naar standaard?", "Auth": "Authenticatie", "Auth Token": "Authenticatietoken", "Back": "Terug", "Batch: {{page}}": "Batch: {{page}}", "Cancel": "Annuleren", "Change Language": "Verander Taal", "Change Theme": "Verander Thema", "Choose the server closest to your location for best performance": "Kies de server die het dichtst bij uw locatie ligt voor de beste prestaties", "Chrome": "Chrome", "Clear": "Wissen", "Close": "Sluiten", "Combined Examples:": "Gecombineerde Voorbeelden:", "Common Formats:": "Veelgebruikte Formaten:", "Concurrent Downloads": "Gelijktijdige Downloads", "Convert & Download": "Converteren & Downloaden", "Convert Animated GIFs": "Converteer GIF's", "Convert GIFs (External)": "Converteer GIF's (Extern)", "Converting GIFs...": "GIF's converteren...", "Converting...": "Converteren...", "Copied": "Gekopieerd", "Copy": "Kopiëren", "Current Media: {{current}} • Total Media: {{total}}": "Huidige Media: {{current}} • Totale Media: {{total}}", "Dashboard": "Dashboard", "Database": "Database", "Date Formats:": "Datumformaten:", "Date Since": "Datum Vanaf", "Date Time Format": "Datum Tijd Formaat", "Date Until": "Datum Tot", "Delete": "Verwijderen", "Delete Account Data": "Accountgegevens Verwijderen", "Delete selected group": "Geselecteerde groep verwijderen", "Deleting...": "Verwijderen...", "Demo mode is only available for @xbatchdemo": "Demomodus is alleen beschikbaar voor @xbatchdemo", "Download": "Downloaden", "Downloading...": "Downloaden...", "Empty dates will fetch all available media": "Lege datums halen alle beschikbare media op", "Enter your Patreon auth": "Voer je Patreon-authenticatie in", "Enter your auth token": "Voer je authenticatietoken in", "Enter group name": "Voer groepsnaam in", "Error:": "Fout:", "Export": "Exporteren", "Exporting...": "Exporteren...", "Failed to download media": "Kan media niet downloaden", "Failed to fetch data": "Kan gegevens niet ophalen", "Failed to generate token": "Kan token niet genereren", "Failed to refresh tokens": "Kan tokens niet vernieuwen", "Clear dates": "Datums wissen", "Failed to load data": "Kan gegevens niet laden", "Fetched in {{time}}": "Opgehaald in {{time}}", "Fetch": "Ophalen", "Fetch All": "Alles ophalen", "Fetch GIF": "GIF ophalen", "Fetch Image": "Afbeelding ophalen", "Fetch Text": "Tekst ophalen", "Fetch Video": "Video ophalen", "Fetching...": "Ophalen...", "Filter by Date Range": "Filteren op datumbereik", "First Page": "Eerste Pagina", "Followers": "Volgers", "Following": "Volgend", "Font Family": "Lettertypefamilie", "GIF": "GIF", "Generate": "Genereren", "Generate Auth Token": "Authenticatietoken genereren", "Generating token...": "Token genereren...", "Global Settings": "Algemene Instellingen", "Group": "Groep", "Group Account": "Account Groeperen", "HTTP error! status: {{status}}": "HTTP-fout! status: {{status}}", "Home": "Home", "{{hours}}h ago": "{{hours}}u geleden", "{{minutes}}m ago": "{{minutes}}m geleden", "{{days}}d ago": "{{days}}d geleden", "Image": "Afbeelding", "Import": "Importeren", "Importing...": "Importeren...", "Include Retweets": "Retweets opnemen", "Invalid Patreon auth": "Ongeldige Patreon-authenticatie", "Invalid Patreon auth. Please check your settings.": "Ongeldige Patreon-authenticatie. Controleer je instellingen.", "Invalid auth token. Please check your settings.": "Ongeldig authenticatietoken. Controleer je instellingen.", "Invalid username format": "Ongeldige gebruikersnaam", "Just now": "Zojuist", "Joined": "Lid sinds", "Language": "Taal", "Larger size, same quality": "Grotere grootte, zelfde kwaliteit", "Last Page": "Laatste Pagina", "Load Database": "Database laden", "Load from database": "Laden vanuit database", "Localized": "Gelokaliseerd", "Media": "Media", "Media: {{media}}": "Media: {{media}}", "Need help with Auth Token? See": "Hulp nodig met Authenticatietoken? Zie", "Next": "Volgende", "No accounts yet": "Nog geen accounts", "No content available": "Geen inhoud beschikbaar", "No media files found": "Geen mediabestanden gevonden", "Overwrite": "Overschrijven", "Overwrite Existing Data?": "Bestaande Gegevens Overschrijven?", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "Betaalde leden kunnen automatisch authenticatietokens genereren na verificatie van Patreon-authenticatie—geen handmatig zoeken vereist.", "Patreon": "Patreon", "Patreon Auth": "Patreon Authenticatie", "Patreon auth verified successfully": "Patreon-authenticatie succesvol geverifieerd", "Please configure authentication in the Auth tab first": "Configureer eerst de authenticatie in het Auth-tabblad", "Please enter Patreon auth first": "Voer eerst Patreon-authenticatie in", "Please verify Patreon auth first": "Verifieer eerst Patreon-authenticatie", "Please visit a profile page for auto-detection": "Bezoek een profielpagina voor automatische detectie", "Posts": "Berichten", "Posts: {{posts}}": "Berichten: {{posts}}", "Prev": "Vorige", "Preview": "Voorbeeld", "Refresh": "Vernieuwen", "Refreshing": "Vernieuwen", "Report bugs or request features:": "Rapporteer bugs of vraag functies aan:", "Request timeout": "Verzoek time-out", "Reset": "Reset", "Reset Settings": "Reset Instellingen", "Remove Group": "Groep Verwijderen", "Resume": "Hervatten", "Server": "Server", "Server Timeout": "Server-time-out", "Select a group": "Selecteer een groep", "Select All": "Alles selecteren", "selected": "geselecteerd", "More options": "Meer opties", "Explore Database": "Database verkennen", "Settings": "Instellingen", "Smaller size, same quality": "Kleinere grootte, zelfde kwaliteit", "Something went wrong.": "Er is iets misgegaan.", "Sound Effects": "Geluidseffecten", "Start": "Start", "Stop": "Stop", "Stop Fetch": "Ophalen stoppen", "Subscribe": "Abonneren", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "Abonneer je voor $5 op Patreon en je authenticatiecode wordt automatisch per e-mail naar je gestuurd binnen een paar minuten.", "System Default": "Systeemstandaard", "Text": "Tekst", "Theme": "Thema", "Time Formats:": "Tijdformaten:", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "Time-out voor server-reacties in seconden. Genereer automatisch een token als er een time-out optreedt.", "Toggle visibility": "Schakel zichtbaarheid", "Token generated successfully": "Token succesvol gegenereerd ({{current}}/{{total}})", "Token generation failed. Please try again": "Tokengeneratie mislukt. Probeer opnieuw", "Ungroup": "Niet Gegroepeerd", "Update": "Bijwerken", "Update will fetch the latest data and overwrite the database. Continue?": "Bijwerken haalt de laatste gegevens op en overschrijft de database. Doorgaan?", "Updating...": "Bijwerken...", "If downloads fail, use concurrent 1": "Als downloads mislukken, gebruik concurrent 1", "Use Dashboard to fetch data.": "Gebruik Dashboard om gegevens op te halen.", "Use code": "Gebruik code", "Userscript": "Userscript", "Verification failed. Please try again": "Verificatie mislukt. Probeer opnieuw", "Verified": "Geverifieerd", "Verify": "Verifiëren", "Verifying": "Verifiëren", "Version": "Versie", "Video": "Video", "for Patreon Auth, click Verify to unlock demo. Test at": "voor Patreon Auth, klik op Verifiëren om demo te ontgrendelen. Test op", "the guide": "de handleiding", "to get your Patreon Auth code and start downloading with ease!": "om je Patreon Auth-code te krijgen en gemakkelijk te beginnen met downloaden!" } };
  const pt = { "common": { "Abort": "Abortar", "Add": "Adicionar", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "Os dados da conta @{{username}} já existem no banco de dados. Deseja substituí-los?", "Advanced Settings": "Configurações avançadas", "All": "Tudo", "All Groups": "Todos os Grupos", "Are you sure to clear all data in the database?": "Tem certeza de que deseja limpar todos os dados do banco de dados?", "Are you sure you want to delete account data? This action cannot be undone": "Tem certeza de que deseja excluir os dados de {{username}}? Esta ação não pode ser desfeita.", "Are you sure you want to reset settings to defaults?": "Tem certeza de que deseja redefinir as configurações para o padrão?", "Auth": "Autenticação", "Auth Token": "Token de autenticação", "Back": "Voltar", "Batch: {{page}}": "Lote: {{page}}", "Cancel": "Cancelar", "Change Language": "Alterar Idioma", "Change Theme": "Alterar Tema", "Choose the server closest to your location for best performance": "Escolha o servidor mais próximo da sua localização para melhor desempenho", "Chrome": "Chrome", "Clear": "Limpar", "Close": "Fechar", "Combined Examples:": "Exemplos Combinados:", "Common Formats:": "Formatos Comuns:", "Concurrent Downloads": "Downloads simultâneos", "Convert & Download": "Converter e baixar", "Convert Animated GIFs": "Converter GIFs", "Convert GIFs (External)": "Converter GIFs (Externo)", "Converting GIFs...": "Convertendo GIFs...", "Converting...": "Convertendo...", "Copied": "Copiado", "Copy": "Copiar", "Current Media: {{current}} • Total Media: {{total}}": "Mídia atual: {{current}} • Mídia total: {{total}}", "Dashboard": "Painel", "Database": "Banco de Dados", "Date Formats:": "Formatos de Data:", "Date Since": "Data Desde", "Date Time Format": "Formato de Data e Hora", "Date Until": "Data Até", "Delete": "Excluir", "Delete Account Data": "Excluir dados da conta", "Delete selected group": "Excluir grupo selecionado", "Deleting...": "Excluindo...", "Demo mode is only available for @xbatchdemo": "O modo demonstração está disponível apenas para @xbatchdemo", "Download": "Baixar", "Downloading...": "Baixando...", "Empty dates will fetch all available media": "Datas vazias buscarão todas as mídias disponíveis", "Enter your Patreon auth": "Insira sua autenticação do Patreon", "Enter your auth token": "Insira seu token de autenticação", "Enter group name": "Digite o nome do grupo", "Error:": "Erro:", "Export": "Exportar", "Exporting...": "Exportando...", "Failed to download media": "Falha ao baixar a mídia", "Failed to fetch data": "Falha ao buscar os dados", "Failed to generate token": "Falha ao gerar o token", "Failed to refresh tokens": "Falha ao atualizar os tokens", "Clear dates": "Limpar datas", "Failed to load data": "Falha ao carregar os dados", "Fetched in {{time}}": "Obtido em {{time}}", "Fetch": "Buscar", "Fetch All": "Buscar tudo", "Fetch GIF": "Buscar GIF", "Fetch Image": "Buscar imagem", "Fetch Text": "Buscar texto", "Fetch Video": "Buscar vídeo", "Fetching...": "Obtendo...", "Filter by Date Range": "Filtrar por intervalo de datas", "First Page": "Primeira Página", "Followers": "Seguidores", "Following": "Seguindo", "Font Family": "Família de Fonte", "GIF": "GIF", "Generate": "Gerar", "Generate Auth Token": "Gerar Token de Autenticação", "Generating token...": "Gerando token...", "Global Settings": "Configurações Globais", "Group": "Grupo", "Group Account": "Agrupar Conta", "HTTP error! status: {{status}}": "Erro HTTP! status: {{status}}", "Home": "Início", "{{hours}}h ago": "há {{hours}}h", "{{minutes}}m ago": "há {{minutes}}m", "{{days}}d ago": "há {{days}}d", "Image": "Imagem", "Import": "Importar", "Importing...": "Importando...", "Include Retweets": "Incluir Retweets", "Invalid Patreon auth": "Autenticação do Patreon inválida", "Invalid Patreon auth. Please check your settings.": "Autenticação do Patreon inválida. Verifique suas configurações.", "Invalid auth token. Please check your settings.": "Token de autenticação inválido. Verifique suas configurações.", "Invalid username format": "Formato de nome de usuário inválido", "Just now": "Agora mesmo", "Joined": "Entrou em", "Language": "Idioma", "Larger size, same quality": "Tamanho maior, mesma qualidade", "Last Page": "Última Página", "Load Database": "Carregar Banco de Dados", "Load from database": "Carregar do banco de dados", "Localized": "Localizado", "Media": "Mídia", "Media: {{media}}": "Mídia: {{media}}", "Need help with Auth Token? See": "Precisa de ajuda com o token de autenticação? Veja", "Next": "Próximo", "No accounts yet": "Ainda não há contas", "No content available": "Nenhum conteúdo disponível", "No media files found": "Nenhum arquivo de mídia encontrado", "Overwrite": "Substituir", "Overwrite Existing Data?": "Substituir dados existentes?", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "Membros pagos podem gerar automaticamente tokens de autenticação após verificar a autenticação do Patreon—nenhuma busca manual necessária.", "Patreon": "Patreon", "Patreon Auth": "Autenticação do Patreon", "Patreon auth verified successfully": "Autenticação do Patreon verificada com sucesso", "Please configure authentication in the Auth tab first": "Configure a autenticação na aba Auth primeiro", "Please enter Patreon auth first": "Insira primeiro a autenticação do Patreon", "Please verify Patreon auth first": "Verifique primeiro a autenticação do Patreon", "Please visit a profile page for auto-detection": "Visite uma página de perfil para detecção automática", "Posts": "Publicações", "Posts: {{posts}}": "Publicações: {{posts}}", "Prev": "Anterior", "Preview": "Visualizar", "Refresh": "Atualizar", "Refreshing": "Atualizando", "Report bugs or request features:": "Relate bugs ou solicite recursos:", "Request timeout": "Tempo limite da solicitação", "Reset": "Redefinir", "Reset Settings": "Redefinir configurações", "Remove Group": "Remover Grupo", "Resume": "Retomar", "Server": "Servidor", "Server Timeout": "Tempo limite do servidor", "Select a group": "Selecione um grupo", "Select All": "Selecionar tudo", "selected": "selecionado", "More options": "Mais opções", "Explore Database": "Explorar banco de dados", "Settings": "Configurações", "Smaller size, same quality": "Tamanho menor, mesma qualidade", "Something went wrong.": "Algo deu errado.", "Sound Effects": "Efeitos Sonoros", "Start": "Iniciar", "Stop": "Parar", "Stop Fetch": "Parar Busca", "Subscribe": "Assine", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "Assine por $5 no Patreon e seu código de autenticação será enviado automaticamente por e-mail em alguns minutos.", "System Default": "Padrão do Sistema", "Text": "Texto", "Theme": "Tema", "Time Formats:": "Formatos de Hora:", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "Tempo limite para respostas do servidor em segundos. Gere token automaticamente se ocorrer tempo limite.", "Toggle visibility": "Mostrar/ocultar", "Token generated successfully": "Token gerado com sucesso ({{current}}/{{total}})", "Token generation failed. Please try again": "Falha na geração do token. Tente novamente", "Ungroup": "Sem Grupo", "Update": "Atualizar", "Update will fetch the latest data and overwrite the database. Continue?": "A atualização buscará os dados mais recentes e sobrescreverá o banco de dados. Continuar?", "Updating...": "Atualizando...", "If downloads fail, use concurrent 1": "Se os downloads falharem, use concurrent 1", "Use Dashboard to fetch data.": "Use o Painel para buscar os dados.", "Use code": "Use o código", "Userscript": "Script de usuário", "Verification failed. Please try again": "Falha na verificação. Tente novamente", "Verified": "Verificado", "Verify": "Verificar", "Verifying": "Verificando", "Version": "Versão", "Video": "Vídeo", "for Patreon Auth, click Verify to unlock demo. Test at": 'para Autenticação do Patreon, clique em "Verificar" para desbloquear a demonstração. Teste em', "the guide": "o guia", "to get your Patreon Auth code and start downloading with ease!": "para obter seu código de autenticação do Patreon e começar a baixar com facilidade!" } };
  const ru = { "common": { "Abort": "Отменить", "Add": "Добавить", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "Данные аккаунта @{{username}} уже существуют в базе данных. Перезаписать их?", "Advanced Settings": "Дополнительные настройки", "All": "Все", "All Groups": "Все Группы", "Are you sure to clear all data in the database?": "Вы уверены, что хотите очистить все данные в базе данных?", "Are you sure you want to delete account data? This action cannot be undone": "Вы уверены, что хотите удалить данные {{username}}? Это действие нельзя отменить.", "Are you sure you want to reset settings to defaults?": "Вы уверены, что хотите сбросить настройки к значениям по умолчанию?", "Auth": "Аутентификация", "Auth Token": "Токен аутентификации", "Back": "Назад", "Batch: {{page}}": "Пакет: {{page}}", "Cancel": "Отмена", "Change Language": "Изменить язык", "Change Theme": "Изменить тему", "Choose the server closest to your location for best performance": "Выберите ближайший к вам сервер для лучшей производительности", "Chrome": "Chrome", "Clear": "Очистить", "Close": "Закрыть", "Combined Examples:": "Комбинированные примеры:", "Common Formats:": "Общие форматы:", "Concurrent Downloads": "Одновременные загрузки", "Convert & Download": "Конвертировать и скачать", "Convert Animated GIFs": "Конвертировать GIF", "Convert GIFs (External)": "Конвертировать GIF (внешний)", "Converting GIFs...": "Конвертация GIF...", "Converting...": "Конвертация...", "Copied": "Скопировано", "Copy": "Копировать", "Current Media: {{current}} • Total Media: {{total}}": "Текущая медиа: {{current}} • Всего медиа: {{total}}", "Dashboard": "Панель управления", "Database": "База данных", "Date Formats:": "Форматы дат:", "Date Since": "Дата С", "Date Time Format": "Формат даты и времени", "Date Until": "Дата По", "Delete": "Удалить", "Delete Account Data": "Удалить данные аккаунта", "Delete selected group": "Удалить выбранную группу", "Deleting...": "Удаление...", "Demo mode is only available for @xbatchdemo": "Демо-режим доступен только для @xbatchdemo", "Download": "Скачать", "Downloading...": "Загрузка...", "Empty dates will fetch all available media": "Пустые даты загрузят все доступные медиа", "Enter your Patreon auth": "Введите авторизацию Patreon", "Enter your auth token": "Введите токен аутентификации", "Enter group name": "Введите название группы", "Error:": "Ошибка:", "Export": "Экспорт", "Exporting...": "Экспорт...", "Failed to download media": "Не удалось скачать медиа", "Failed to fetch data": "Не удалось получить данные", "Failed to generate token": "Не удалось сгенерировать токен", "Failed to refresh tokens": "Не удалось обновить токены", "Clear dates": "Очистить даты", "Failed to load data": "Не удалось загрузить данные", "Fetched in {{time}}": "Получено за {{time}}", "Fetch": "Получить", "Fetch All": "Получить всё", "Fetch GIF": "Получить GIF", "Fetch Image": "Получить изображение", "Fetch Text": "Получить текст", "Fetch Video": "Получить видео", "Fetching...": "Получение...", "Filter by Date Range": "Фильтр по диапазону дат", "First Page": "Первая Страница", "Followers": "Подписчики", "Following": "Подписки", "Font Family": "Семейство шрифтов", "GIF": "GIF", "Generate": "Создать", "Generate Auth Token": "Сгенерировать токен аутентификации", "Generating token...": "Генерация токена...", "Global Settings": "Глобальные настройки", "Group": "Группа", "Group Account": "Группировать Аккаунт", "HTTP error! status: {{status}}": "Ошибка HTTP! статус: {{status}}", "Home": "Главная", "{{hours}}h ago": "{{hours}}ч назад", "{{minutes}}m ago": "{{minutes}}м назад", "{{days}}d ago": "{{days}}д назад", "Image": "Изображение", "Import": "Импорт", "Importing...": "Импорт...", "Include Retweets": "Включить ретвиты", "Invalid Patreon auth": "Недействительная авторизация Patreon", "Invalid Patreon auth. Please check your settings.": "Недействительная авторизация Patreon. Проверьте настройки.", "Invalid auth token. Please check your settings.": "Недействительный токен аутентификации. Проверьте настройки.", "Invalid username format": "Недопустимый формат имени пользователя", "Just now": "Только что", "Joined": "Дата регистрации", "Language": "Язык", "Larger size, same quality": "Больший размер, то же качество", "Last Page": "Последняя Страница", "Load Database": "Загрузить базу данных", "Load from database": "Загрузить из базы данных", "Localized": "Локализованный", "Media": "Медиа", "Media: {{media}}": "Медиа: {{media}}", "Need help with Auth Token? See": "Нужна помощь с токеном аутентификации? См.", "Next": "Далее", "No accounts yet": "Пока нет аккаунтов", "No content available": "Контент недоступен", "No media files found": "Медиафайлы не найдены", "Overwrite": "Перезаписать", "Overwrite Existing Data?": "Перезаписать существующие данные?", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "Платные участники могут автоматически генерировать токены аутентификации после проверки аутентификации Patreon—ручной поиск не требуется.", "Patreon": "Patreon", "Patreon Auth": "Авторизация Patreon", "Patreon auth verified successfully": "Авторизация Patreon успешно проверена", "Please configure authentication in the Auth tab first": "Сначала настройте аутентификацию на вкладке Auth", "Please enter Patreon auth first": "Сначала введите авторизацию Patreon", "Please verify Patreon auth first": "Сначала подтвердите авторизацию Patreon", "Please visit a profile page for auto-detection": "Посетите страницу профиля для автоопределения", "Posts": "Публикации", "Posts: {{posts}}": "Публикации: {{posts}}", "Prev": "Назад", "Preview": "Предпросмотр", "Refresh": "Обновить", "Refreshing": "Обновление", "Report bugs or request features:": "Сообщить об ошибках или запросить функции:", "Request timeout": "Таймаут запроса", "Reset": "Сброс", "Reset Settings": "Сбросить настройки", "Remove Group": "Удалить Группу", "Resume": "Продолжить", "Server": "Сервер", "Server Timeout": "Тайм-аут сервера", "Select a group": "Выберите группу", "Select All": "Выбрать все", "selected": "выбрано", "More options": "Дополнительные опции", "Explore Database": "Исследовать базу данных", "Settings": "Настройки", "Smaller size, same quality": "Меньший размер, то же качество", "Something went wrong.": "Что-то пошло не так.", "Sound Effects": "Звуковые Эффекты", "Start": "Старт", "Stop": "Стоп", "Stop Fetch": "Остановить получение", "Subscribe": "Подписаться", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "Подпишитесь на $5 в Patreon, и ваш код аутентификации будет автоматически отправлен вам по электронной почте в течение нескольких минут.", "System Default": "Системный по умолчанию", "Text": "Текст", "Theme": "Тема", "Time Formats:": "Форматы времени:", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "Тайм-аут для ответов сервера в секундах. Автоматически генерировать токен при возникновении тайм-аута.", "Toggle visibility": "Показать/скрыть", "Token generated successfully": "Токен успешно сгенерирован ({{current}}/{{total}})", "Token generation failed. Please try again": "Не удалось сгенерировать токен. Попробуйте ещё раз", "Ungroup": "Без Группы", "Update": "Обновить", "Update will fetch the latest data and overwrite the database. Continue?": "Обновление получит последние данные и перезапишет базу данных. Продолжить?", "Updating...": "Обновление...", "If downloads fail, use concurrent 1": "Если загрузки не удаются, используйте concurrent 1", "Use Dashboard to fetch data.": "Используйте панель, чтобы получить данные.", "Use code": "Используйте код", "Userscript": "Пользовательский скрипт", "Verification failed. Please try again": "Не удалось выполнить проверку. Попробуйте ещё раз", "Verified": "Проверено", "Verify": "Проверить", "Verifying": "Проверка...", "Version": "Версия", "Video": "Видео", "for Patreon Auth, click Verify to unlock demo. Test at": "для аутентификации Patreon, нажмите «Проверить», чтобы разблокировать демо. Тест:", "the guide": "руководство", "to get your Patreon Auth code and start downloading with ease!": "чтобы получить код аутентификации Patreon и с лёгкостью начать скачивание!" } };
  const th = { "common": { "Abort": "ยกเลิก", "Add": "เพิ่ม", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "ข้อมูลบัญชีสำหรับ @{{username}} มีอยู่แล้วในฐานข้อมูล คุณต้องการเขียนทับหรือไม่?", "Advanced Settings": "การตั้งค่าขั้นสูง", "All": "ทั้งหมด", "All Groups": "กลุ่มทั้งหมด", "Are you sure to clear all data in the database?": "คุณแน่ใจหรือไม่ที่จะล้างข้อมูลทั้งหมดในฐานข้อมูล?", "Are you sure you want to delete account data? This action cannot be undone": "คุณแน่ใจหรือไม่ที่จะลบข้อมูล {{username}}? การกระทำนี้ไม่สามารถยกเลิกได้", "Are you sure you want to reset settings to defaults?": "คุณแน่ใจหรือไม่ว่าต้องการรีเซ็ตการตั้งค่าเป็นค่าเริ่มต้น?", "Auth": "การยืนยันตัวตน", "Auth Token": "โทเค็นการยืนยันตัวตน", "Back": "กลับ", "Batch: {{page}}": "แบทช์: {{page}}", "Cancel": "ยกเลิก", "Change Language": "เปลี่ยนภาษา", "Change Theme": "เปลี่ยนธีม", "Choose the server closest to your location for best performance": "เลือกเซิร์ฟเวอร์ที่ใกล้ที่สุดกับตำแหน่งของคุณเพื่อประสิทธิภาพที่ดีที่สุด", "Chrome": "Chrome", "Clear": "ล้าง", "Close": "ปิด", "Combined Examples:": "ตัวอย่างรวม:", "Common Formats:": "รูปแบบทั่วไป:", "Concurrent Downloads": "ดาวน์โหลดพร้อมกัน", "Convert & Download": "แปลงและดาวน์โหลด", "Convert Animated GIFs": "แปลง GIF", "Convert GIFs (External)": "แปลง GIF (ภายนอก)", "Converting GIFs...": "กำลังแปลง GIF...", "Converting...": "กำลังแปลง...", "Copied": "คัดลอกแล้ว", "Copy": "คัดลอก", "Current Media: {{current}} • Total Media: {{total}}": "สื่อปัจจุบัน: {{current}} • สื่อทั้งหมด: {{total}}", "Dashboard": "แดชบอร์ด", "Database": "ฐานข้อมูล", "Date Formats:": "รูปแบบวันที่:", "Date Since": "วันที่เริ่มต้น", "Date Time Format": "รูปแบบวันที่และเวลา", "Date Until": "วันที่สิ้นสุด", "Delete": "ลบ", "Delete Account Data": "ลบข้อมูลบัญชี", "Delete selected group": "ลบกลุ่มที่เลือก", "Deleting...": "กำลังลบ...", "Demo mode is only available for @xbatchdemo": "โหมดสาธิตใช้ได้เฉพาะสำหรับ @xbatchdemo เท่านั้น", "Download": "ดาวน์โหลด", "Downloading...": "กำลังดาวน์โหลด...", "Empty dates will fetch all available media": "วันที่ว่างจะดึงสื่อทั้งหมดที่มี", "Enter your Patreon auth": "ป้อนการยืนยันตัวตน Patreon ของคุณ", "Enter your auth token": "ป้อนโทเค็นการยืนยันตัวตนของคุณ", "Enter group name": "ใส่ชื่อกลุ่ม", "Error:": "ข้อผิดพลาด:", "Export": "ส่งออก", "Exporting...": "กำลังส่งออก...", "Failed to download media": "ไม่สามารถดาวน์โหลดสื่อ", "Failed to fetch data": "ไม่สามารถดึงข้อมูล", "Failed to generate token": "ไม่สามารถสร้างโทเค็น", "Failed to refresh tokens": "ไม่สามารถรีเฟรชโทเค็น", "Clear dates": "ล้างวันที่", "Failed to load data": "ไม่สามารถโหลดข้อมูล", "Fetched in {{time}}": "ดึงข้อมูลใน {{time}}", "Fetch": "ดึง", "Fetch All": "ดึงทั้งหมด", "Fetch GIF": "ดึง GIF", "Fetch Image": "ดึงรูปภาพ", "Fetch Text": "ดึงข้อความ", "Fetch Video": "ดึงวิดีโอ", "Fetching...": "กำลังดึงข้อมูล...", "Filter by Date Range": "กรองตามช่วงวันที่", "First Page": "หน้าแรก", "Followers": "ผู้ติดตาม", "Following": "กำลังติดตาม", "Font Family": "ตระกูลฟอนต์", "GIF": "GIF", "Generate": "สร้าง", "Generate Auth Token": "สร้างโทเค็นการยืนยันตัวตน", "Generating token...": "กำลังสร้างโทเค็น...", "Global Settings": "การตั้งค่าทั่วไป", "Group": "กลุ่ม", "Group Account": "จัดกลุ่มบัญชี", "HTTP error! status: {{status}}": "ข้อผิดพลาด HTTP! สถานะ: {{status}}", "Home": "หน้าแรก", "{{hours}}h ago": "{{hours}}ชม. ที่แล้ว", "{{minutes}}m ago": "{{minutes}}นาที ที่แล้ว", "{{days}}d ago": "{{days}}วัน ที่แล้ว", "Image": "รูปภาพ", "Import": "นำเข้า", "Importing...": "กำลังนำเข้า...", "Include Retweets": "รวมรีทวีต", "Invalid Patreon auth": "การยืนยันตัวตน Patreon ไม่ถูกต้อง", "Invalid Patreon auth. Please check your settings.": "การยืนยันตัวตน Patreon ไม่ถูกต้อง โปรดตรวจสอบการตั้งค่าของคุณ", "Invalid auth token. Please check your settings.": "โทเค็นการยืนยันตัวตนไม่ถูกต้อง โปรดตรวจสอบการตั้งค่าของคุณ", "Invalid username format": "รูปแบบชื่อผู้ใช้ไม่ถูกต้อง", "Just now": "เมื่อสักครู่", "Joined": "เข้าร่วม", "Language": "ภาษา", "Larger size, same quality": "ขนาดใหญ่ขึ้น คุณภาพเท่าเดิม", "Last Page": "หน้าสุดท้าย", "Load Database": "โหลดฐานข้อมูล", "Load from database": "โหลดจากฐานข้อมูล", "Localized": "แปลเป็นภาษาท้องถิ่น", "Media": "สื่อ", "Media: {{media}}": "สื่อ: {{media}}", "Need help with Auth Token? See": "ต้องการความช่วยเหลือเกี่ยวกับโทเค็นการยืนยันตัวตนหรือไม่? ดู", "Next": "ถัดไป", "No accounts yet": "ยังไม่มีบัญชี", "No content available": "ไม่มีเนื้อหาที่ใช้ได้", "No media files found": "ไม่พบไฟล์สื่อ", "Overwrite": "เขียนทับ", "Overwrite Existing Data?": "เขียนทับข้อมูลที่มีอยู่?", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "สมาชิกที่จ่ายเงินสามารถสร้างโทเค็นยืนยันตัวตนได้โดยอัตโนมัติหลังจากยืนยัน Patreon auth—ไม่จำเป็นต้องค้นหาด้วยตนเอง", "Patreon": "Patreon", "Patreon Auth": "การยืนยันตัวตน Patreon", "Patreon auth verified successfully": "ยืนยันการยืนยันตัวตน Patreon สำเร็จ", "Please configure authentication in the Auth tab first": "โปรดกำหนดค่าการยืนยันตัวตนในแท็บ Auth ก่อน", "Please enter Patreon auth first": "โปรดป้อนการยืนยันตัวตน Patreon ก่อน", "Please verify Patreon auth first": "โปรดยืนยันการยืนยันตัวตน Patreon ก่อน", "Please visit a profile page for auto-detection": "โปรดไปที่หน้าโปรไฟล์สำหรับการตรวจจับอัตโนมัติ", "Posts": "โพสต์", "Posts: {{posts}}": "โพสต์: {{posts}}", "Prev": "ก่อนหน้า", "Preview": "ดูตัวอย่าง", "Refresh": "รีเฟรช", "Refreshing": "กำลังรีเฟรช", "Report bugs or request features:": "รายงานบั๊กหรือขอฟีเจอร์:", "Request timeout": "หมดเวลาการร้องขอ", "Reset": "รีเซ็ต", "Reset Settings": "รีเซ็ตการตั้งค่า", "Remove Group": "ลบกลุ่ม", "Resume": "ดำเนินการต่อ", "Server": "เซิร์ฟเวอร์", "Server Timeout": "หมดเวลาของเซิร์ฟเวอร์", "Select a group": "เลือกกลุ่ม", "Select All": "เลือกทั้งหมด", "selected": "เลือกแล้ว", "More options": "ตัวเลือกเพิ่มเติม", "Explore Database": "สำรวจฐานข้อมูล", "Settings": "การตั้งค่า", "Smaller size, same quality": "ขนาดเล็กลง คุณภาพเท่าเดิม", "Something went wrong.": "เกิดข้อผิดพลาดบางอย่าง", "Sound Effects": "เอฟเฟกต์เสียง", "Start": "เริ่ม", "Stop": "หยุด", "Stop Fetch": "หยุดการดึงข้อมูล", "Subscribe": "สมัครสมาชิก", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "สมัครสมาชิก $5 บน Patreon และรหัสยืนยันตัวตนของคุณจะถูกส่งอีเมลให้คุณโดยอัตโนมัติภายในไม่กี่นาที", "System Default": "ค่าเริ่มต้นของระบบ", "Text": "ข้อความ", "Theme": "ธีม", "Time Formats:": "รูปแบบเวลา:", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "หมดเวลาสำหรับการตอบกลับของเซิร์ฟเวอร์เป็นวินาที สร้างโทเค็นอัตโนมัติหากเกิดหมดเวลา", "Toggle visibility": "สลับการมองเห็น", "Token generated successfully": "สร้างโทเค็นสำเร็จ ({{current}}/{{total}})", "Token generation failed. Please try again": "การสร้างโทเค็นล้มเหลว โปรดลองอีกครั้ง", "Ungroup": "ไม่มีกลุ่ม", "Update": "อัปเดต", "Update will fetch the latest data and overwrite the database. Continue?": "การอัปเดตจะดึงข้อมูลล่าสุดและเขียนทับฐานข้อมูล ดำเนินการต่อหรือไม่?", "Updating...": "กำลังอัปเดต...", "If downloads fail, use concurrent 1": "หากดาวน์โหลดล้มเหลว ให้ใช้ concurrent 1", "Use Dashboard to fetch data.": "ใช้แดชบอร์ดเพื่อดึงข้อมูล", "Use code": "ใช้รหัส", "Userscript": "Userscript", "Verification failed. Please try again": "การยืนยันล้มเหลว โปรดลองอีกครั้ง", "Verified": "ยืนยันแล้ว", "Verify": "ยืนยัน", "Verifying": "กำลังยืนยัน", "Version": "เวอร์ชัน", "Video": "วิดีโอ", "for Patreon Auth, click Verify to unlock demo. Test at": "สำหรับการยืนยันตัวตน Patreon คลิกยืนยันเพื่อปลดล็อกสาธิต ทดสอบที่", "the guide": "คู่มือ", "to get your Patreon Auth code and start downloading with ease!": "เพื่อรับรหัสการยืนยันตัวตน Patreon และเริ่มดาวน์โหลดได้อย่างง่ายดาย!" } };
  const tr = { "common": { "Abort": "İptal Et", "Add": "Ekle", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "@{{username}} için hesap verileri veritabanında zaten mevcut. Üzerine yazmak istiyor musunuz?", "Advanced Settings": "Gelişmiş Ayarlar", "All": "Tümü", "All Groups": "Tüm Gruplar", "Are you sure to clear all data in the database?": "Veritabanındaki tüm verileri temizlemek istediğinizden emin misiniz?", "Are you sure you want to delete account data? This action cannot be undone": "{{username}} verilerini silmek istediğinizden emin misiniz? Bu işlem geri alınamaz.", "Are you sure you want to reset settings to defaults?": "Ayarları varsayılanlara sıfırlamak istediğinizden emin misiniz?", "Auth": "Kimlik Doğrulama", "Auth Token": "Kimlik Doğrulama Jetonu", "Back": "Geri", "Batch: {{page}}": "Toplu İşlem: {{page}}", "Cancel": "İptal", "Change Language": "Dil Değiştir", "Change Theme": "Tema Değiştir", "Choose the server closest to your location for best performance": "En iyi performans için konumunuza en yakın sunucuyu seçin", "Chrome": "Chrome", "Clear": "Temizle", "Close": "Kapat", "Combined Examples:": "Birleşik Örnekler:", "Common Formats:": "Yaygın Formatlar:", "Concurrent Downloads": "Eşzamanlı İndirmeler", "Convert & Download": "Dönüştür ve İndir", "Convert Animated GIFs": "GIF Dönüştür", "Convert GIFs (External)": "GIF Dönüştür (Harici)", "Converting GIFs...": "GIF'ler dönüştürülüyor...", "Converting...": "Dönüştürülüyor...", "Copied": "Kopyalandı", "Copy": "Kopyala", "Current Media: {{current}} • Total Media: {{total}}": "Mevcut Medya: {{current}} • Toplam Medya: {{total}}", "Dashboard": "Kontrol Paneli", "Database": "Veritabanı", "Date Formats:": "Tarih Formatları:", "Date Since": "Başlangıç Tarihi", "Date Time Format": "Tarih Saat Formatı", "Date Until": "Bitiş Tarihi", "Delete": "Sil", "Delete Account Data": "Hesap Verilerini Sil", "Delete selected group": "Seçili grubu sil", "Deleting...": "Siliniyor...", "Demo mode is only available for @xbatchdemo": "Demo modu yalnızca @xbatchdemo için kullanılabilir", "Download": "İndir", "Downloading...": "İndiriliyor...", "Empty dates will fetch all available media": "Boş tarihler mevcut tüm medyayı getirecek", "Enter your Patreon auth": "Patreon kimlik doğrulamanızı girin", "Enter your auth token": "Kimlik doğrulama jetonunuzu girin", "Enter group name": "Grup adını girin", "Error:": "Hata:", "Export": "Dışa Aktar", "Exporting...": "Dışa aktarılıyor...", "Failed to download media": "Medya indirilemedi", "Failed to fetch data": "Veri alınamadı", "Failed to generate token": "Jeton oluşturulamadı", "Failed to refresh tokens": "Token'lar yenilenemedi", "Clear dates": "Tarihleri temizle", "Failed to load data": "Veri yüklenemedi", "Fetched in {{time}}": "{{time}} içinde alındı", "Fetch": "Al", "Fetch All": "Tümünü al", "Fetch GIF": "GIF al", "Fetch Image": "Resim al", "Fetch Text": "Metin al", "Fetch Video": "Video al", "Fetching...": "Alınıyor...", "Filter by Date Range": "Tarih aralığına göre filtrele", "First Page": "İlk Sayfa", "Followers": "Takipçiler", "Following": "Takip Edilenler", "Font Family": "Yazı Tipi Ailesi", "GIF": "GIF", "Generate": "Oluştur", "Generate Auth Token": "Kimlik Doğrulama Token'ı Oluştur", "Generating token...": "Jeton oluşturuluyor...", "Global Settings": "Genel Ayarlar", "Group": "Grup", "Group Account": "Hesabı Grupla", "HTTP error! status: {{status}}": "HTTP hatası! durum: {{status}}", "Home": "Ana Sayfa", "{{hours}}h ago": "{{hours}}s önce", "{{minutes}}m ago": "{{minutes}}d önce", "{{days}}d ago": "{{days}}g önce", "Image": "Resim", "Import": "İçe Aktar", "Importing...": "İçe aktarılıyor...", "Include Retweets": "Retweetleri Dahil Et", "Invalid Patreon auth": "Geçersiz Patreon kimlik doğrulaması", "Invalid Patreon auth. Please check your settings.": "Geçersiz Patreon kimlik doğrulaması. Lütfen ayarlarınızı kontrol edin.", "Invalid auth token. Please check your settings.": "Geçersiz kimlik doğrulama jetonu. Lütfen ayarlarınızı kontrol edin.", "Invalid username format": "Geçersiz kullanıcı adı formatı", "Just now": "Az önce", "Joined": "Katıldı", "Language": "Dil", "Larger size, same quality": "Daha büyük boyut, aynı kalite", "Last Page": "Son Sayfa", "Load Database": "Veritabanını Yükle", "Load from database": "Veritabanından yükle", "Localized": "Yerelleştirilmiş", "Media": "Medya", "Media: {{media}}": "Medya: {{media}}", "Need help with Auth Token? See": "Kimlik Doğrulama Jetonu için yardıma mı ihtiyacınız var? Bakın:", "Next": "Sonraki", "No accounts yet": "Henüz hesap yok", "No content available": "İçerik mevcut değil", "No media files found": "Medya dosyası bulunamadı", "Overwrite": "Üzerine Yaz", "Overwrite Existing Data?": "Mevcut Verilerin Üzerine Yazılsın mı?", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "Ücretli üyeler Patreon kimlik doğrulamasını doğruladıktan sonra otomatik olarak kimlik doğrulama tokenları oluşturabilir—manuel arama gerekmez.", "Patreon": "Patreon", "Patreon Auth": "Patreon Kimlik Doğrulaması", "Patreon auth verified successfully": "Patreon kimlik doğrulaması başarıyla doğrulandı", "Please configure authentication in the Auth tab first": "Lütfen önce Kimlik Doğrulama sekmesinde kimlik doğrulamayı yapılandırın", "Please enter Patreon auth first": "Lütfen önce Patreon kimlik doğrulamasını girin", "Please verify Patreon auth first": "Lütfen önce Patreon kimlik doğrulamasını doğrulayın", "Please visit a profile page for auto-detection": "Otomatik algılama için lütfen bir profil sayfasını ziyaret edin", "Posts": "Gönderiler", "Posts: {{posts}}": "Gönderiler: {{posts}}", "Prev": "Önceki", "Preview": "Önizleme", "Refresh": "Yenile", "Refreshing": "Yenileniyor", "Report bugs or request features:": "Hata bildirin veya özellik isteyin:", "Request timeout": "İstek zaman aşımı", "Reset": "Sıfırla", "Reset Settings": "Ayarları Sıfırla", "Remove Group": "Grubu Kaldır", "Resume": "Devam Et", "Server": "Sunucu", "Server Timeout": "Sunucu Zaman Aşımı", "Select a group": "Bir grup seç", "Select All": "Tümünü seç", "selected": "seçildi", "More options": "Daha fazla seçenek", "Explore Database": "Veritabanını keşfet", "Settings": "Ayarlar", "Smaller size, same quality": "Daha küçük boyut, aynı kalite", "Something went wrong.": "Bir şeyler ters gitti.", "Sound Effects": "Ses Efektleri", "Start": "Başlat", "Stop": "Durdur", "Stop Fetch": "Almayı Durdur", "Subscribe": "Abone Ol", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "Patreon'da $5 karşılığında abone olun ve kimlik doğrulama kodunuz birkaç dakika içinde otomatik olarak e-posta ile gönderilecektir.", "System Default": "Sistem Varsayılanı", "Text": "Metin", "Theme": "Tema", "Time Formats:": "Saat Formatları:", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "Sunucu yanıtları için saniye cinsinden zaman aşımı. Zaman aşımı oluşursa otomatik olarak token oluşturun.", "Toggle visibility": "Görünürlüğü değiştir", "Token generated successfully": "Jeton başarıyla oluşturuldu ({{current}}/{{total}})", "Token generation failed. Please try again": "Jeton oluşturma başarısız. Lütfen tekrar deneyin", "Ungroup": "Grupsuz", "Update": "Güncelle", "Update will fetch the latest data and overwrite the database. Continue?": "Güncelleme en son verileri alacak ve veritabanının üzerine yazacak. Devam edilsin mi?", "Updating...": "Güncelleniyor...", "If downloads fail, use concurrent 1": "İndirmeler başarısız olursa, concurrent 1 kullanın", "Use Dashboard to fetch data.": "Veri almak için Kontrol Panelini kullanın.", "Use code": "Kodu kullan", "Userscript": "Kullanıcı Betiği", "Verification failed. Please try again": "Doğrulama başarısız. Lütfen tekrar deneyin", "Verified": "Doğrulandı", "Verify": "Doğrula", "Verifying": "Doğrulanıyor", "Version": "Sürüm", "Video": "Video", "for Patreon Auth, click Verify to unlock demo. Test at": "Patreon Kimlik Doğrulaması için, demoyu açmak için Doğrula'ya tıklayın. Test edin:", "the guide": "kılavuz", "to get your Patreon Auth code and start downloading with ease!": "Patreon Kimlik Doğrulama kodunuzu almak ve kolayca indirmeye başlamak için!" } };
  const vi = { "common": { "Abort": "Hủy bỏ", "Add": "Thêm", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "Dữ liệu tài khoản cho @{{username}} đã tồn tại trong cơ sở dữ liệu. Bạn có muốn ghi đè không?", "Advanced Settings": "Cài đặt nâng cao", "All": "Tất cả", "All Groups": "Tất cả Nhóm", "Are you sure to clear all data in the database?": "Bạn có chắc muốn xóa tất cả dữ liệu trong cơ sở dữ liệu không?", "Are you sure you want to delete account data? This action cannot be undone": "Bạn có chắc muốn xóa dữ liệu của {{username}} không? Hành động này không thể hoàn tác.", "Are you sure you want to reset settings to defaults?": "Bạn có chắc muốn đặt lại cài đặt về mặc định không?", "Auth": "Xác thực", "Auth Token": "Token xác thực", "Back": "Quay lại", "Batch: {{page}}": "Đợt: {{page}}", "Cancel": "Hủy", "Change Language": "Đổi ngôn ngữ", "Change Theme": "Đổi giao diện", "Choose the server closest to your location for best performance": "Chọn máy chủ gần vị trí của bạn nhất để có hiệu suất tốt nhất", "Chrome": "Chrome", "Clear": "Xóa", "Close": "Đóng", "Combined Examples:": "Ví dụ kết hợp:", "Common Formats:": "Định dạng phổ biến:", "Concurrent Downloads": "Tải xuống đồng thời", "Convert & Download": "Chuyển đổi và Tải xuống", "Convert Animated GIFs": "Chuyển đổi GIF", "Convert GIFs (External)": "Chuyển đổi GIF (Bên ngoài)", "Converting GIFs...": "Đang chuyển đổi GIF...", "Converting...": "Đang chuyển đổi...", "Copied": "Đã sao chép", "Copy": "Sao chép", "Current Media: {{current}} • Total Media: {{total}}": "Phương tiện hiện tại: {{current}} • Tổng phương tiện: {{total}}", "Dashboard": "Bảng điều khiển", "Database": "Cơ sở dữ liệu", "Date Formats:": "Định dạng ngày:", "Date Since": "Ngày Từ", "Date Time Format": "Định dạng ngày giờ", "Date Until": "Ngày Đến", "Delete": "Xóa", "Delete Account Data": "Xóa dữ liệu tài khoản", "Delete selected group": "Xóa nhóm đã chọn", "Deleting...": "Đang xóa...", "Demo mode is only available for @xbatchdemo": "Chế độ demo chỉ khả dụng cho @xbatchdemo", "Download": "Tải xuống", "Downloading...": "Đang tải xuống...", "Empty dates will fetch all available media": "Ngày trống sẽ tải tất cả phương tiện có sẵn", "Enter your Patreon auth": "Nhập xác thực Patreon của bạn", "Enter your auth token": "Nhập token xác thực của bạn", "Enter group name": "Nhập tên nhóm", "Error:": "Lỗi:", "Export": "Xuất", "Exporting...": "Đang xuất...", "Failed to download media": "Không thể tải xuống phương tiện", "Failed to fetch data": "Không thể lấy dữ liệu", "Failed to generate token": "Không thể tạo token", "Failed to refresh tokens": "Không thể làm mới token", "Clear dates": "Xóa ngày tháng", "Failed to load data": "Không thể tải dữ liệu", "Fetched in {{time}}": "Đã lấy trong {{time}}", "Fetch": "Lấy", "Fetch All": "Lấy tất cả", "Fetch GIF": "Lấy GIF", "Fetch Image": "Lấy hình ảnh", "Fetch Text": "Lấy văn bản", "Fetch Video": "Lấy video", "Fetching...": "Đang lấy...", "Filter by Date Range": "Lọc theo khoảng ngày", "First Page": "Trang Đầu", "Followers": "Người theo dõi", "Following": "Đang theo dõi", "Font Family": "Họ Phông Chữ", "GIF": "GIF", "Generate": "Tạo", "Generate Auth Token": "Tạo Token Xác thực", "Generating token...": "Đang tạo token...", "Global Settings": "Cài đặt chung", "Group": "Nhóm", "Group Account": "Nhóm Tài khoản", "HTTP error! status: {{status}}": "Lỗi HTTP! trạng thái: {{status}}", "Home": "Trang chủ", "{{hours}}h ago": "{{hours}}h trước", "{{minutes}}m ago": "{{minutes}}m trước", "{{days}}d ago": "{{days}}d trước", "Image": "Hình ảnh", "Import": "Nhập", "Importing...": "Đang nhập...", "Include Retweets": "Bao gồm Retweet", "Invalid Patreon auth": "Xác thực Patreon không hợp lệ", "Invalid Patreon auth. Please check your settings.": "Xác thực Patreon không hợp lệ. Vui lòng kiểm tra cài đặt của bạn.", "Invalid auth token. Please check your settings.": "Token xác thực không hợp lệ. Vui lòng kiểm tra cài đặt của bạn.", "Invalid username format": "Định dạng tên người dùng không hợp lệ", "Just now": "Vừa xong", "Joined": "Đã tham gia", "Language": "Ngôn ngữ", "Larger size, same quality": "Kích thước lớn hơn, chất lượng tương tự", "Last Page": "Trang Cuối", "Load Database": "Tải Cơ Sở Dữ Liệu", "Load from database": "Tải từ cơ sở dữ liệu", "Localized": "Đã bản địa hóa", "Media": "Phương tiện", "Media: {{media}}": "Phương tiện: {{media}}", "Need help with Auth Token? See": "Cần trợ giúp với Token xác thực? Xem", "Next": "Tiếp", "No accounts yet": "Chưa có tài khoản", "No content available": "Không có nội dung khả dụng", "No media files found": "Không tìm thấy tệp phương tiện", "Overwrite": "Ghi đè", "Overwrite Existing Data?": "Ghi đè dữ liệu hiện có?", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "Thành viên trả phí có thể tự động tạo token xác thực sau khi xác minh Patreon auth—không cần tìm kiếm thủ công.", "Patreon": "Patreon", "Patreon Auth": "Xác thực Patreon", "Patreon auth verified successfully": "Xác thực Patreon thành công", "Please configure authentication in the Auth tab first": "Vui lòng cấu hình xác thực trong tab Xác thực trước", "Please enter Patreon auth first": "Vui lòng nhập xác thực Patreon trước", "Please verify Patreon auth first": "Vui lòng xác minh xác thực Patreon trước", "Please visit a profile page for auto-detection": "Vui lòng truy cập trang hồ sơ để tự động phát hiện", "Posts": "Bài viết", "Posts: {{posts}}": "Bài viết: {{posts}}", "Prev": "Trước", "Preview": "Xem trước", "Refresh": "Làm mới", "Refreshing": "Đang làm mới", "Report bugs or request features:": "Báo cáo lỗi hoặc yêu cầu tính năng:", "Request timeout": "Hết thời gian yêu cầu", "Reset": "Đặt lại", "Reset Settings": "Đặt lại cài đặt", "Remove Group": "Xóa Nhóm", "Resume": "Tiếp tục", "Server": "Máy chủ", "Server Timeout": "Hết thời gian chờ máy chủ", "Select a group": "Chọn một nhóm", "Select All": "Chọn tất cả", "selected": "đã chọn", "More options": "Tùy chọn khác", "Explore Database": "Khám phá cơ sở dữ liệu", "Settings": "Cài đặt", "Smaller size, same quality": "Kích thước nhỏ hơn, chất lượng tương tự", "Something went wrong.": "Đã xảy ra lỗi.", "Sound Effects": "Hiệu Ứng Âm Thanh", "Start": "Bắt đầu", "Stop": "Dừng", "Stop Fetch": "Dừng Lấy dữ liệu", "Subscribe": "Đăng ký", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "Đăng ký $5 trên Patreon và mã xác thực của bạn sẽ được tự động gửi qua email trong vòng vài phút.", "System Default": "Mặc Định Hệ Thống", "Text": "Văn bản", "Theme": "Giao diện", "Time Formats:": "Định dạng giờ:", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "Thời gian chờ cho phản hồi máy chủ tính bằng giây. Tự động tạo token nếu xảy ra hết thời gian chờ.", "Toggle visibility": "Chuyển đổi hiển thị", "Token generated successfully": "Tạo token thành công ({{current}}/{{total}})", "Token generation failed. Please try again": "Tạo token thất bại. Vui lòng thử lại", "Ungroup": "Không Nhóm", "Update": "Cập nhật", "Update will fetch the latest data and overwrite the database. Continue?": "Cập nhật sẽ lấy dữ liệu mới nhất và ghi đè cơ sở dữ liệu. Tiếp tục?", "Updating...": "Đang cập nhật...", "If downloads fail, use concurrent 1": "Nếu tải xuống thất bại, sử dụng concurrent 1", "Use Dashboard to fetch data.": "Sử dụng Bảng điều khiển để lấy dữ liệu.", "Use code": "Sử dụng mã", "Userscript": "Userscript", "Verification failed. Please try again": "Xác minh thất bại. Vui lòng thử lại", "Verified": "Đã xác minh", "Verify": "Xác minh", "Verifying": "Đang xác minh", "Version": "Phiên bản", "Video": "Video", "for Patreon Auth, click Verify to unlock demo. Test at": "cho Xác thực Patreon, nhấp Xác minh để mở khóa demo. Thử nghiệm tại", "the guide": "hướng dẫn", "to get your Patreon Auth code and start downloading with ease!": "để nhận mã Xác thực Patreon và bắt đầu tải xuống dễ dàng!" } };
  const zh_Hans = { "common": { "Abort": "中止", "Add": "添加", "Account data for @{{username}} already exists in the database. Do you want to overwrite it?": "账户 @{{username}} 的数据已存在于数据库中。您要覆盖吗?", "Advanced Settings": "高级设置", "All": "全部", "All Groups": "所有组", "Are you sure to clear all data in the database?": "确定要清空数据库中的所有数据吗?", "Are you sure you want to delete account data? This action cannot be undone": "您确定要删除 {{username}} 的数据吗?此操作无法撤销。", "Are you sure you want to reset settings to defaults?": "确定要将设置重置为默认值吗?", "Auth": "认证", "Auth Token": "认证令牌", "Back": "返回", "Batch: {{page}}": "批次:{{page}}", "Cancel": "取消", "Change Language": "更改语言", "Change Theme": "更改主题", "Choose the server closest to your location for best performance": "选择离您最近的服务器以获得最佳性能", "Chrome": "Chrome", "Clear": "清空", "Close": "关闭", "Combined Examples:": "组合示例:", "Common Formats:": "常用格式:", "Concurrent Downloads": "并发下载", "Convert & Download": "转换并下载", "Convert Animated GIFs": "转换 GIF", "Convert GIFs (External)": "转换 GIF(外部)", "Converting GIFs...": "正在转换 GIF...", "Converting...": "转换中...", "Copied": "已复制", "Copy": "复制", "Current Media: {{current}} • Total Media: {{total}}": "当前媒体:{{current}} • 总媒体:{{total}}", "Dashboard": "仪表板", "Database": "数据库", "Date Formats:": "日期格式:", "Date Since": "开始日期", "Date Time Format": "日期时间格式", "Date Until": "结束日期", "Delete": "删除", "Delete Account Data": "删除账户数据", "Delete selected group": "删除选定的组", "Deleting...": "正在删除...", "Demo mode is only available for @xbatchdemo": "演示模式仅适用于 @xbatchdemo", "Download": "下载", "Downloading...": "正在下载...", "Empty dates will fetch all available media": "空日期将获取所有可用媒体", "Enter your Patreon auth": "输入您的 Patreon 认证", "Enter your auth token": "输入您的认证令牌", "Enter group name": "输入组名", "Error:": "错误:", "Export": "导出", "Exporting...": "正在导出...", "Failed to download media": "下载媒体失败", "Failed to fetch data": "获取数据失败", "Failed to generate token": "生成令牌失败", "Failed to refresh tokens": "刷新令牌失败", "Clear dates": "清除日期", "Failed to load data": "加载数据失败", "Fetched in {{time}}": "在 {{time}} 内获取", "Fetch": "获取", "Fetch All": "获取全部", "Fetch GIF": "获取 GIF", "Fetch Image": "获取图片", "Fetch Text": "获取文本", "Fetch Video": "获取视频", "Fetching...": "正在获取...", "Filter by Date Range": "按日期范围过滤", "First Page": "第一页", "Followers": "粉丝", "Following": "正在关注", "Font Family": "字体系列", "GIF": "GIF", "Generate": "生成", "Generate Auth Token": "生成认证令牌", "Generating token...": "正在生成令牌...", "Global Settings": "全局设置", "Group": "组", "Group Account": "分组账户", "HTTP error! status: {{status}}": "HTTP 错误!状态:{{status}}", "Home": "主页", "{{hours}}h ago": "{{hours}}小时前", "{{minutes}}m ago": "{{minutes}}分钟前", "{{days}}d ago": "{{days}}天前", "Image": "图片", "Import": "导入", "Importing...": "正在导入...", "Include Retweets": "包含转推", "Invalid Patreon auth": "无效的 Patreon 认证", "Invalid Patreon auth. Please check your settings.": "无效的 Patreon 认证,请检查您的设置。", "Invalid auth token. Please check your settings.": "无效的认证令牌,请检查您的设置。", "Invalid username format": "无效的用户名格式", "Just now": "刚刚", "Joined": "加入时间", "Language": "语言", "Larger size, same quality": "体积更大,质量相同", "Last Page": "最后一页", "Load Database": "加载数据库", "Load from database": "从数据库加载", "Localized": "本地化", "Media": "媒体", "Media: {{media}}": "媒体:{{media}}", "Need help with Auth Token? See": "需要获取认证令牌的帮助?请查看", "Next": "下一页", "No accounts yet": "尚未有账户", "No content available": "无可用内容", "No media files found": "未找到媒体文件", "Overwrite": "覆盖", "Overwrite Existing Data?": "覆盖现有数据?", "Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required.": "付费会员在验证 Patreon 身份验证后可以自动生成身份验证令牌—无需手动搜索。", "Patreon": "Patreon", "Patreon Auth": "Patreon 认证", "Patreon auth verified successfully": "Patreon 认证验证成功", "Please configure authentication in the Auth tab first": "请先在认证选项卡中配置身份验证", "Please enter Patreon auth first": "请先输入 Patreon 认证", "Please verify Patreon auth first": "请先验证 Patreon 认证", "Please visit a profile page for auto-detection": "请访问个人资料页面进行自动检测", "Posts": "帖子", "Posts: {{posts}}": "帖子:{{posts}}", "Prev": "上一页", "Preview": "预览", "Refresh": "刷新", "Refreshing": "刷新中", "Report bugs or request features:": "报告问题或请求功能:", "Request timeout": "请求超时", "Reset": "重置", "Reset Settings": "重置设置", "Remove Group": "移除组", "Resume": "继续", "Server": "服务器", "Server Timeout": "服务器超时", "Select a group": "选择一个组", "Select All": "全选", "selected": "已选择", "More options": "更多选项", "Explore Database": "浏览数据库", "Settings": "设置", "Smaller size, same quality": "体积更小,质量相同", "Something went wrong.": "出错了。", "Sound Effects": "音效", "Start": "开始", "Stop": "停止", "Stop Fetch": "停止获取", "Subscribe": "订阅", "Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes.": "在 Patreon 上订阅 $5,您的身份验证代码将在几分钟内自动通过电子邮件发送给您。", "System Default": "系统默认", "Text": "文本", "Theme": "主题", "Time Formats:": "时间格式:", "Timeout for server responses in seconds. Auto-generate token if timeout occurs.": "服务器响应的超时时间(秒)。如果发生超时,自动生成令牌。", "Toggle visibility": "显示/隐藏", "Token generated successfully": "令牌生成成功 ({{current}}/{{total}})", "Token generation failed. Please try again": "令牌生成失败,请重试", "Ungroup": "未分组", "Update": "更新", "Update will fetch the latest data and overwrite the database. Continue?": "更新将获取最新数据并覆盖数据库。继续吗?", "Updating...": "更新中...", "If downloads fail, use concurrent 1": "如果下载失败,请使用 concurrent 1", "Use Dashboard to fetch data.": "使用仪表板获取数据。", "Use code": "使用代码", "Userscript": "用户脚本", "Verification failed. Please try again": "验证失败,请重试", "Verified": "已验证", "Verify": "验证", "Verifying": "正在验证", "Version": "版本", "Video": "视频", "for Patreon Auth, click Verify to unlock demo. Test at": "用于 Patreon 认证,点击“验证”以解锁演示。测试地址:", "the guide": "指南", "to get your Patreon Auth code and start downloading with ease!": "即可获取您的 Patreon 认证码,轻松开始下载!" } };
  const resources = {
    "ar": ar,
    "de": de,
    "en": en$1,
    "es": es,
    "fil": fil,
    "fr": fr,
    "hi": hi,
    "id": id,
    "it": it,
    "ja": ja,
    "ko": ko,
    "nl": nl,
    "pt": pt,
    "ru": ru,
    "th": th,
    "tr": tr,
    "vi": vi,
    "zh-Hans": zh_Hans
  };
  const logLinesSignal = signals.signal([]);
  const APP_NAME = "twitter-x-media-batch-downloader-pro";
  class Logger {
    index = 0;
    buffer = [];
    bufferTimer = null;
    info(line, ...args) {
      this.writeBuffer({ type: "info", line, index: this.index++ });
    }
    warn(line, ...args) {
      this.writeBuffer({ type: "warn", line, index: this.index++ });
    }
    error(line, ...args) {
      console.error(`[${APP_NAME}]`, line, ...args);
      this.writeBuffer({ type: "error", line, index: this.index++ });
    }
    errorWithBanner(msg, err, ...args) {
      this.error(
        `${msg} (Message: ${err?.message ?? "none"})
  Report bugs: [email protected]`,
        ...args
      );
    }
    writeBuffer(log) {
      this.buffer.push(log);
      if (this.bufferTimer) {
        clearTimeout(this.bufferTimer);
      }
      this.bufferTimer = window.setTimeout(() => {
        this.bufferTimer = null;
        this.flushBuffer();
      }, 0);
    }
    flushBuffer() {
      logLinesSignal.value = [...logLinesSignal.value, ...this.buffer];
      this.buffer = [];
    }
  }
  const logger = new Logger();
  function safeJSONParse(text) {
    try {
      return JSON.parse(text);
    } catch (e) {
      logger.error(e.message);
      return null;
    }
  }
  function cx(...classNames) {
    return classNames.filter(Boolean).join(" ");
  }
  function isEqual(obj1, obj2) {
    return JSON.stringify(obj1) === JSON.stringify(obj2);
  }
  function formatDateTime(date, format) {
    if (typeof date === "number" || typeof date === "string") {
      date = dayjs(date);
    }
    return date.format(format);
  }
  function sanitizeFilename(name) {
    return name.replace(/[\\/:*?"<>|]/g, "-").replace(/\s+/g, "_").replace(/_+/g, "_").replace(/^_+|_+$/g, "");
  }
  const version = "1.1.1";
  const pkg = {
    version
  };
  const DEFAULT_APP_OPTIONS = {
    theme: "light",
    soundEffects: true,
    dateTimeFormat: "YYYY-MM-DD HH:mm:ss Z",
    language: "en",
    fontFamily: "system",
    version: pkg.version,
    convertAnimatedGifs: false,
    convertGifsExternal: false,
    downloadConcurrency: 1,
    mediaType: "all",
    includeRetweets: false,
    apiServer: "washington",
    apiTimeout: 60
  };
  const THEMES = [
    "abyss",
    "acid",
    "aqua",
    "autumn",
    "black",
    "bumblebee",
    "business",
    "caramellatte",
    "cmyk",
    "coffee",
    "corporate",
    "cupcake",
    "cyberpunk",
    "dark",
    "dim",
    "dracula",
    "emerald",
    "fantasy",
    "forest",
    "garden",
    "halloween",
    "lemonade",
    "light",
    "lofi",
    "luxury",
    "night",
    "nord",
    "pastel",
    "retro",
    "silk",
    "sunset",
    "synthwave",
    "valentine",
    "winter",
    "wireframe"
  ];
  const LOCAL_STORAGE_KEY = "twitter-x-media-batch-downloader-pro";
  class AppOptionsManager {
    appOptions = { ...DEFAULT_APP_OPTIONS };
    previous = { ...DEFAULT_APP_OPTIONS };
    signal = new signals.Signal(0);
    constructor() {
      this.loadAppOptions();
    }
    get(key, defaultValue) {
      return this.appOptions[key] ?? defaultValue;
    }
    set(key, value) {
      this.appOptions[key] = value;
      this.saveAppOptions();
    }
    loadAppOptions() {
      const stored = safeJSONParse(localStorage.getItem(LOCAL_STORAGE_KEY) || "{}");
      const migrated = { ...stored };
      if ("fetchMode" in migrated) {
        delete migrated.fetchMode;
      }
      if ("timelineType" in migrated) {
        delete migrated.timelineType;
      }
      if (migrated.mediaType && !["all", "image", "video", "gif", "text"].includes(migrated.mediaType)) {
        migrated.mediaType = "all";
      }
      const oldApiServers = {
        "oregon": "washington"
};
      if (migrated.apiServer && oldApiServers[migrated.apiServer]) {
        migrated.apiServer = oldApiServers[migrated.apiServer];
      }
      this.appOptions = {
        ...this.appOptions,
        ...migrated
      };
      const oldVersion = this.appOptions.version ?? "";
      const newVersion = DEFAULT_APP_OPTIONS.version;
      if (JSON.stringify(stored) !== JSON.stringify(migrated)) {
        setTimeout(() => this.saveAppOptions(), 0);
      } else if (newVersion.startsWith("1.1") && oldVersion.startsWith("1.0")) {
        setTimeout(() => this.saveAppOptions(), 0);
      }
      this.previous = { ...this.appOptions };
      this.signal.value++;
    }
    saveAppOptions() {
      const oldValue = this.previous;
      const newValue = {
        ...this.appOptions,
        version: pkg.version
      };
      if (isEqual(oldValue, newValue)) {
        return;
      }
      this.appOptions = newValue;
      localStorage.setItem(LOCAL_STORAGE_KEY, JSON.stringify(this.appOptions));
      this.previous = { ...this.appOptions };
      this.signal.value++;
    }
  }
  const appOptionsManager = new AppOptionsManager();
  const LANGUAGES_CONFIG = {
    ar: {
      name: "العربية",
      nameEn: "Arabic (العربية)",
      test: (code) => /^ar/.test(code)
    },
    "zh-Hans": {
      name: "中文",
      nameEn: "Chinese (中文)",
      test: (code) => /^zh/.test(code)
    },
    nl: {
      name: "Nederlands",
      nameEn: "Dutch (Nederlands)",
      test: (code) => /^nl/.test(code)
    },
    en: {
      name: "English",
      nameEn: "English",
      test: (code) => /^en/.test(code)
    },
    fil: {
      name: "Filipino",
      nameEn: "Filipino",
      test: (code) => /^fil/.test(code)
    },
    fr: {
      name: "Français",
      nameEn: "French (Français)",
      test: (code) => /^fr/.test(code)
    },
    de: {
      name: "Deutsch",
      nameEn: "German (Deutsch)",
      test: (code) => /^de/.test(code)
    },
    hi: {
      name: "हिन्दी",
      nameEn: "Hindi (हिन्दी)",
      test: (code) => /^hi/.test(code)
    },
    id: {
      name: "Bahasa Indonesia",
      nameEn: "Indonesian (Bahasa Indonesia)",
      test: (code) => /^id/.test(code)
    },
    it: {
      name: "Italiano",
      nameEn: "Italian (Italiano)",
      test: (code) => /^it/.test(code)
    },
    ja: {
      name: "日本語",
      nameEn: "Japanese (日本語)",
      test: (code) => /^ja/.test(code)
    },
    ko: {
      name: "한국어",
      nameEn: "Korean (한국어)",
      test: (code) => /^ko/.test(code)
    },
    pt: {
      name: "Português",
      nameEn: "Portuguese (Português)",
      test: (code) => /^pt/.test(code)
    },
    ru: {
      name: "Русский",
      nameEn: "Russian (Русский)",
      test: (code) => /^ru/.test(code)
    },
    es: {
      name: "Español",
      nameEn: "Spanish (Español)",
      test: (code) => /^es/.test(code)
    },
    th: {
      name: "ไทย",
      nameEn: "Thai (ไทย)",
      test: (code) => /^th/.test(code)
    },
    tr: {
      name: "Türkçe",
      nameEn: "Turkish (Türkçe)",
      test: (code) => /^tr/.test(code)
    },
    vi: {
      name: "Tiếng Việt",
      nameEn: "Vietnamese (Tiếng Việt)",
      test: (code) => /^vi/.test(code)
    }
  };
  function detectBrowserLanguage() {
    const language = window.navigator.language || "en";
    for (const [langTag, langConf] of Object.entries(LANGUAGES_CONFIG)) {
      if (langConf.test(language)) {
        return langTag;
      }
    }
    return language;
  }
  const languageDetector = {
    type: "languageDetector",
    detect: function() {
      return appOptionsManager.get("language") || detectBrowserLanguage();
    }
  };
  function initI18n() {
    if (i18next.isInitialized) {
      return i18next;
    }
    i18next.on("languageChanged", (lng) => {
      if (!appOptionsManager.get("language")) {
        appOptionsManager.set("language", lng);
      }
    });
    i18next.use(languageDetector).init({
      initImmediate: true,
      defaultNS: "common",
      fallbackLng: "en",
      nsSeparator: "::",
      debug: false,
      resources
    });
    return i18next;
  }
  function useTranslation(ns) {
    const i18n = initI18n();
    const [t, setT] = hooks.useState(() => i18n.getFixedT(null, ns ?? null));
    const isMountedRef = hooks.useRef(true);
    const previousNamespaceRef = hooks.useRef(ns);
    hooks.useEffect(() => {
      isMountedRef.current = true;
      if (previousNamespaceRef.current !== ns) {
        previousNamespaceRef.current = ns;
        setT(() => i18n.getFixedT(null, ns ?? null));
      }
      function boundReset() {
        if (isMountedRef.current) {
          setT(() => i18n.getFixedT(null, ns ?? null));
        }
      }
      i18n.on("languageChanged", boundReset);
      return () => {
        isMountedRef.current = false;
        i18n.off("languageChanged", boundReset);
      };
    }, [ns]);
    return { t, i18n };
  }
  function Trans({ i18nKey, ns = "common" }) {
    const { t } = useTranslation(ns);
    return u("span", { children: t(i18nKey) });
  }
  class ErrorBoundary extends preact.Component {
    state = { error: null };
    static getDerivedStateFromError(err) {
      return { error: err.message };
    }
    componentDidCatch(err) {
      logger.error(err.message, err);
      this.setState({ error: err.message });
    }
    render() {
      const i18n = initI18n();
      const isArabic = (i18n.language || "").startsWith("ar");
      if (this.state.error) {
        return u("div", { class: "alert alert-error alert-soft p-2", children: [
u(IconExclamationCircle, {}),
u("div", { dir: isArabic ? "rtl" : void 0, children: [
u("h3", { class: "font-bold leading-normal", children: u(Trans, { ns: "common", i18nKey: "Something went wrong." }) }),
u("p", { class: "text-xs", children: [
u(Trans, { ns: "common", i18nKey: "Error:" }),
              " ",
              this.state.error
            ] })
          ] })
        ] });
      }
      return this.props.children;
    }
  }
  const API_SERVERS = {
    stockholm: "https://eu-north-1.exyezed.cc",
    mumbai: "https://ap-south-1.exyezed.cc",
    paris: "https://eu-west-3.exyezed.cc",
    cleveland: "https://us-east-2.exyezed.cc",
    capetown: "https://af-south-1.exyezed.cc",
    dublin: "https://eu-west-1.exyezed.cc",
    dubai: "https://me-central-1.exyezed.cc",
    frankfurt: "https://eu-central-1.exyezed.cc",
    saopaulo: "https://sa-east-1.exyezed.cc",
    hongkong: "https://ap-east-1.exyezed.cc",
    tokyo: "https://ap-northeast-1.exyezed.cc",
    washington: "https://us-east-1.exyezed.cc",
    seoul: "https://ap-northeast-2.exyezed.cc",
    osaka: "https://ap-northeast-3.exyezed.cc",
    london: "https://eu-west-2.exyezed.cc",
    portland: "https://us-west-2.exyezed.cc",
    sanfrancisco: "https://us-west-1.exyezed.cc",
    singapore: "https://ap-southeast-1.exyezed.cc",
    sydney: "https://ap-southeast-2.exyezed.cc"
  };
  function getAPITimeout() {
    const timeout = appOptionsManager.get("apiTimeout") ?? 60;
    return Math.min(Math.max(timeout, 1), 300) * 1e3;
  }
  function getSelectedServer() {
    const server = appOptionsManager.get("apiServer") ?? "washington";
    return API_SERVERS[server] || API_SERVERS.washington;
  }
  const mediaDownloaderAPI = {
    async fetchMediaData(username, authToken, patreonAuth, params) {
      const mediaType = params?.mediaType ?? "all";
      const dateSince = params?.dateSince;
      const dateUntil = params?.dateUntil;
      const includeRetweets = params?.includeRetweets ?? false;
      const onProgress = params?.onProgress;
      const abortSignal = params?.abortSignal;
      const selectedServer = getSelectedServer();
      let endpoint;
      let baseRequestBody;
      if (dateSince || dateUntil) {
        endpoint = "/date";
        baseRequestBody = {
          username,
          auth_token: authToken,
          start_date: dateSince || "",
          end_date: dateUntil || "",
          media_filter: mediaType,
          retweets: includeRetweets,
          batch_size: 200,
patreon_auth: patreonAuth === "xbatchdemo" ? null : patreonAuth,
          demo_code: patreonAuth === "xbatchdemo" ? "xbatchdemo" : null
        };
      } else {
        endpoint = "/timeline";
        let timelineType;
        if (mediaType === "text" || includeRetweets) {
          timelineType = "tweets";
        } else {
          timelineType = "timeline";
        }
        baseRequestBody = {
          username,
          auth_token: authToken,
          timeline_type: timelineType,
          batch_size: 200,
media_type: mediaType,
          retweets: includeRetweets,
          patreon_auth: patreonAuth === "xbatchdemo" ? null : patreonAuth,
          demo_code: patreonAuth === "xbatchdemo" ? "xbatchdemo" : null
        };
      }
      let allTimeline = [];
      let allAccountInfo = null;
      let cursor = params?.initialCursor || null;
      let completed = false;
      let totalFetched = 0;
      const seenKeys = new Set();
      const globalTimeout = getAPITimeout();
      let fetchCompleted = false;
      const globalTimeoutId = setTimeout(() => {
        if (!fetchCompleted && abortSignal && !abortSignal.aborted) {
          const callback = abortSignal.__timeoutCallback;
          if (callback && typeof callback === "function") {
            callback();
          } else {
            abortSignal.abort?.();
          }
        }
      }, globalTimeout);
      try {
        while (!completed && !abortSignal?.aborted) {
          const requestBody = {
            ...baseRequestBody,
            cursor: cursor || void 0
          };
          if (abortSignal?.aborted) {
            break;
          }
          const batchResponse = await this.makePostRequest(selectedServer + endpoint, requestBody, abortSignal);
          if (abortSignal?.aborted) {
            break;
          }
          const newTimelineItems = batchResponse.timeline || [];
          const deduplicatedItems = [];
          const seenTweetIds = new Set();
          for (const item of newTimelineItems) {
            const key = `${item.tweet_id}|${item.url || ""}`;
            if (!seenKeys.has(key)) {
              seenKeys.add(key);
              deduplicatedItems.push(item);
            }
          }
          if (deduplicatedItems.length > 0) {
            allTimeline.push(...deduplicatedItems);
            totalFetched += deduplicatedItems.length;
          }
          if (!allAccountInfo && batchResponse.account_info) {
            allAccountInfo = batchResponse.account_info;
          }
          cursor = batchResponse.cursor || batchResponse.metadata?.cursor || null;
          const responseCompleted = batchResponse.completed ?? batchResponse.metadata?.completed ?? false;
          const hasMore = !!cursor && !responseCompleted;
          completed = !cursor || responseCompleted;
          if (abortSignal?.aborted) {
            break;
          }
          if (!abortSignal?.aborted && onProgress && deduplicatedItems.length > 0) {
            onProgress(totalFetched, deduplicatedItems.length, cursor, deduplicatedItems, allAccountInfo || void 0);
          }
          if (abortSignal?.aborted) {
            break;
          }
          if (!hasMore) {
            break;
          }
          if (!abortSignal?.aborted) {
            await new Promise((resolve) => setTimeout(resolve, 100));
          }
        }
        clearTimeout(globalTimeoutId);
        if (abortSignal?.aborted && cursor) {
          return {
            account_info: allAccountInfo || {
              name: username,
              nick: username,
              date: "",
              followers_count: 0,
              friends_count: 0,
              profile_image: "",
              statuses_count: 0
            },
            timeline: allTimeline,
            metadata: {
              batch_size: 200,
              cursor,
              has_more: true,
              new_entries: allTimeline.length,
              page: 0
            },
            cursor,
            completed: false
          };
        }
        fetchCompleted = true;
        if (allTimeline.length === 0) {
          const emptyResponse = {
            account_info: allAccountInfo || {
              name: username,
              nick: username,
              date: "",
              followers_count: 0,
              friends_count: 0,
              profile_image: "",
              statuses_count: 0
            },
            metadata: {
              batch_size: 200,
              cursor,
              has_more: false,
              new_entries: 0,
              page: 0
            },
            timeline: []
          };
          this.validateNonEmptyResult(emptyResponse);
          return emptyResponse;
        }
        const finalResponse = {
          account_info: allAccountInfo || {
            name: username,
            nick: username,
            date: "",
            followers_count: 0,
            friends_count: 0,
            profile_image: "",
            statuses_count: 0
          },
          metadata: {
            batch_size: 200,
            cursor: cursor || null,
            has_more: !completed && cursor !== null,
            new_entries: allTimeline.length,
page: 0
          },
          timeline: allTimeline
};
        return finalResponse;
      } catch (error) {
        clearTimeout(globalTimeoutId);
        fetchCompleted = true;
        if (allTimeline.length > 0) {
          return {
            account_info: allAccountInfo || {
              name: username,
              nick: username,
              date: "",
              followers_count: 0,
              friends_count: 0,
              profile_image: "",
              statuses_count: 0
            },
            metadata: {
              batch_size: 200,
              cursor,
              has_more: !completed && cursor !== null,
              new_entries: totalFetched,
              page: 0
            },
            timeline: allTimeline
          };
        }
        throw error;
      } finally {
        clearTimeout(globalTimeoutId);
      }
    },
    createAPIError(message, status) {
      let type = "unknown";
      let isRetryable = false;
      if (status === 400) {
        type = "validation";
        isRetryable = false;
      } else if (status === 401) {
        type = "authentication";
        isRetryable = false;
      } else if (status === 500) {
        type = "server";
        if (message.includes("Could not authenticate you") || message.includes("401") || message.includes("Unauthorized")) {
          isRetryable = true;
        } else {
          isRetryable = true;
        }
      } else if (message.includes("Network error") || message.includes("timeout")) {
        type = "network";
        isRetryable = true;
      }
      return { message, status, type, isRetryable };
    },
    async makeRequest(url) {
      return new Promise((resolve, reject) => {
        if (typeof GM_xmlhttpRequest !== "undefined") {
          GM_xmlhttpRequest({
            method: "GET",
            url,
            timeout: getAPITimeout(),
            headers: {
              "Accept": "application/json",
              "Content-Type": "application/json"
            },
            onload: (response) => {
              try {
                if (response.status === 400) {
                  const errorData = JSON.parse(response.responseText);
                  const errorMsg = errorData.error || errorData.detail || `HTTP error! status: ${response.status}`;
                  const apiError = this.createAPIError(errorMsg, 400);
                  const error = new Error(apiError.message);
                  error.apiError = apiError;
                  reject(error);
                  return;
                }
                if (response.status === 401) {
                  const errorData = JSON.parse(response.responseText);
                  const errorMsg = errorData.error || errorData.detail || `HTTP error! status: ${response.status}`;
                  const apiError = this.createAPIError(errorMsg, 401);
                  const error = new Error(apiError.message);
                  error.apiError = apiError;
                  reject(error);
                  return;
                }
                if (response.status === 500) {
                  const errorData = JSON.parse(response.responseText);
                  const errorMsg = errorData.error || errorData.detail || `HTTP error! status: ${response.status}`;
                  const apiError = this.createAPIError(errorMsg, 500);
                  const error = new Error(apiError.message);
                  error.apiError = apiError;
                  reject(error);
                  return;
                }
                if (response.status !== 200) {
                  const apiError = this.createAPIError(`HTTP error! status: ${response.status}`, response.status);
                  const error = new Error(apiError.message);
                  error.apiError = apiError;
                  reject(error);
                  return;
                }
                const data = JSON.parse(response.responseText);
                if (!this.validateResponse(data)) {
                  const apiError = this.createAPIError("Invalid API response structure");
                  const error = new Error(apiError.message);
                  error.apiError = apiError;
                  reject(error);
                  return;
                }
                resolve(data);
              } catch (parseError) {
                if (parseError instanceof Error && parseError.message.startsWith("Invalid")) {
                  reject(parseError);
                } else {
                  const apiError = this.createAPIError("Failed to parse API response");
                  const error = new Error(apiError.message);
                  error.apiError = apiError;
                  reject(error);
                }
              }
            },
            onerror: () => {
              const apiError = this.createAPIError("Network error occurred");
              const error = new Error(apiError.message);
              error.apiError = apiError;
              reject(error);
            },
            ontimeout: () => {
              const apiError = this.createAPIError("Request timeout - please try again");
              apiError.isRetryable = true;
              const error = new Error(apiError.message);
              error.apiError = apiError;
              reject(error);
            }
          });
        } else {
          this.makeRequestWithFetch(url).then(resolve).catch(reject);
        }
      });
    },
    async makePostRequest(url, body, abortSignal) {
      return new Promise((resolve, reject) => {
        if (typeof GM_xmlhttpRequest !== "undefined") {
          GM_xmlhttpRequest({
            method: "POST",
            url,
            timeout: getAPITimeout(),
            headers: {
              "Accept": "application/json",
              "Content-Type": "application/json"
            },
            data: JSON.stringify(body),
            onload: (response) => {
              try {
                if (response.status === 400) {
                  const errorData = JSON.parse(response.responseText);
                  const errorMsg = errorData.error || errorData.detail || `HTTP error! status: ${response.status}`;
                  const apiError = this.createAPIError(errorMsg, 400);
                  const error = new Error(apiError.message);
                  error.apiError = apiError;
                  reject(error);
                  return;
                }
                if (response.status === 401) {
                  const errorData = JSON.parse(response.responseText);
                  const errorMsg = errorData.error || errorData.detail || `HTTP error! status: ${response.status}`;
                  const apiError = this.createAPIError(errorMsg, 401);
                  const error = new Error(apiError.message);
                  error.apiError = apiError;
                  reject(error);
                  return;
                }
                if (response.status === 500) {
                  const errorData = JSON.parse(response.responseText);
                  const errorMsg = errorData.error || errorData.detail || `HTTP error! status: ${response.status}`;
                  const apiError = this.createAPIError(errorMsg, 500);
                  const error = new Error(apiError.message);
                  error.apiError = apiError;
                  reject(error);
                  return;
                }
                if (response.status !== 200) {
                  const apiError = this.createAPIError(`HTTP error! status: ${response.status}`, response.status);
                  const error = new Error(apiError.message);
                  error.apiError = apiError;
                  reject(error);
                  return;
                }
                const data = JSON.parse(response.responseText);
                if (!this.validateResponse(data)) {
                  const apiError = this.createAPIError("Invalid API response structure");
                  const error = new Error(apiError.message);
                  error.apiError = apiError;
                  reject(error);
                  return;
                }
                resolve(data);
              } catch (parseError) {
                if (parseError instanceof Error && parseError.message.startsWith("Invalid")) {
                  reject(parseError);
                } else {
                  const apiError = this.createAPIError("Failed to parse API response");
                  const error = new Error(apiError.message);
                  error.apiError = apiError;
                  reject(error);
                }
              }
            },
            onerror: () => {
              const apiError = this.createAPIError("Network error occurred");
              const error = new Error(apiError.message);
              error.apiError = apiError;
              reject(error);
            },
            ontimeout: () => {
              const apiError = this.createAPIError("Request timeout - please try again");
              const error = new Error(apiError.message);
              error.apiError = apiError;
              error.apiError.isRetryable = true;
              reject(error);
            }
          });
        } else {
          this.makePostRequestWithFetch(url, body).then(resolve).catch(reject);
        }
      });
    },
    async makeRequestWithFetch(url) {
      const controller = new AbortController();
      const timeoutId = setTimeout(() => controller.abort(), getAPITimeout());
      try {
        const response = await fetch(url, {
          method: "GET",
          signal: controller.signal,
          headers: {
            "Accept": "application/json",
            "Content-Type": "application/json"
          }
        });
        clearTimeout(timeoutId);
        if (response.status === 400) {
          const errorData = await response.json();
          const errorMsg = errorData.error || errorData.detail || `HTTP error! status: ${response.status}`;
          const apiError = this.createAPIError(errorMsg, 400);
          const error = new Error(apiError.message);
          error.apiError = apiError;
          throw error;
        }
        if (response.status === 401) {
          const errorData = await response.json();
          const errorMsg = errorData.error || errorData.detail || `HTTP error! status: ${response.status}`;
          const apiError = this.createAPIError(errorMsg, 401);
          const error = new Error(apiError.message);
          error.apiError = apiError;
          throw error;
        }
        if (response.status === 500) {
          const errorData = await response.json();
          const errorMsg = errorData.error || errorData.detail || `HTTP error! status: ${response.status}`;
          const apiError = this.createAPIError(errorMsg, 500);
          const error = new Error(apiError.message);
          error.apiError = apiError;
          throw error;
        }
        if (!response.ok) {
          const apiError = this.createAPIError(`HTTP error! status: ${response.status}`, response.status);
          const error = new Error(apiError.message);
          error.apiError = apiError;
          throw error;
        }
        const data = await response.json();
        if (!this.validateResponse(data)) {
          const apiError = this.createAPIError("Invalid API response structure");
          const error = new Error(apiError.message);
          error.apiError = apiError;
          throw error;
        }
        return data;
      } catch (error) {
        clearTimeout(timeoutId);
        if (error instanceof Error) {
          if (error.name === "AbortError") {
            const apiError2 = this.createAPIError("Request timeout - please try again");
            const err2 = new Error(apiError2.message);
            err2.apiError = apiError2;
            err2.apiError.isRetryable = true;
            throw err2;
          }
          throw error;
        }
        const apiError = this.createAPIError("Unknown error occurred");
        const err = new Error(apiError.message);
        err.apiError = apiError;
        throw err;
      }
    },
    async makePostRequestWithFetch(url, body, abortSignal) {
      if (abortSignal?.aborted) {
        const apiError = this.createAPIError("Request aborted");
        const error = new Error(apiError.message);
        error.apiError = apiError;
        throw error;
      }
      const controller = new AbortController();
      const timeoutId = setTimeout(() => controller.abort(), getAPITimeout());
      if (abortSignal) {
        abortSignal.addEventListener("abort", () => {
          controller.abort();
        });
      }
      try {
        const response = await fetch(url, {
          method: "POST",
          signal: controller.signal,
          headers: {
            "Accept": "application/json",
            "Content-Type": "application/json"
          },
          body: JSON.stringify(body)
        });
        clearTimeout(timeoutId);
        if (response.status === 400) {
          const errorData = await response.json();
          const errorMsg = errorData.error || errorData.detail || `HTTP error! status: ${response.status}`;
          const apiError = this.createAPIError(errorMsg, 400);
          const error = new Error(apiError.message);
          error.apiError = apiError;
          throw error;
        }
        if (response.status === 401) {
          const errorData = await response.json();
          const errorMsg = errorData.error || errorData.detail || `HTTP error! status: ${response.status}`;
          const apiError = this.createAPIError(errorMsg, 401);
          const error = new Error(apiError.message);
          error.apiError = apiError;
          throw error;
        }
        if (response.status === 500) {
          const errorData = await response.json();
          const errorMsg = errorData.error || errorData.detail || `HTTP error! status: ${response.status}`;
          const apiError = this.createAPIError(errorMsg, 500);
          const error = new Error(apiError.message);
          error.apiError = apiError;
          throw error;
        }
        if (!response.ok) {
          const apiError = this.createAPIError(`HTTP error! status: ${response.status}`, response.status);
          const error = new Error(apiError.message);
          error.apiError = apiError;
          throw error;
        }
        const data = await response.json();
        if (!this.validateResponse(data)) {
          const apiError = this.createAPIError("Invalid API response structure");
          const error = new Error(apiError.message);
          error.apiError = apiError;
          throw error;
        }
        return data;
      } catch (error) {
        clearTimeout(timeoutId);
        if (error instanceof Error) {
          if (error.name === "AbortError") {
            const apiError2 = this.createAPIError("Request timeout - please try again");
            const err2 = new Error(apiError2.message);
            err2.apiError = apiError2;
            err2.apiError.isRetryable = true;
            throw err2;
          }
          throw error;
        }
        const apiError = this.createAPIError("Unknown error occurred");
        const err = new Error(apiError.message);
        err.apiError = apiError;
        throw err;
      }
    },
    validateResponse(data) {
      return data && typeof data === "object" && data.account_info && typeof data.account_info === "object" && data.metadata && typeof data.metadata === "object" && Array.isArray(data.timeline);
    },
    formatUsername(username) {
      return username.replace(/^@/, "").trim().toLowerCase();
    },
    validateUsername(username) {
      const cleanUsername = this.formatUsername(username);
      return /^[a-zA-Z0-9_]{1,15}$/.test(cleanUsername);
    },
validateNonEmptyResult(data) {
      const isEmpty = data.timeline.length === 0 && (data.metadata.items_processed === 0 || data.metadata.new_entries === 0);
      if (isEmpty) {
        const isDateRangeSearch = !!data.metadata.date_range;
        let errorMsg = "";
        let errorData = void 0;
        if (isDateRangeSearch) {
          const { since, until } = data.metadata.date_range;
          errorMsg = "No media found for date range {{since}} to {{until}}";
          errorData = { since, until };
        } else if (data.metadata.items_processed === 0) {
          errorMsg = "No tweets found for this account";
        } else {
          errorMsg = "No media found in {{count}} tweets";
          errorData = { count: data.metadata.items_processed };
        }
        const apiError = this.createAPIError(errorMsg, 404);
        apiError.type = "validation";
        apiError.isRetryable = false;
        const error = new Error(errorMsg);
        error.apiError = apiError;
        error.errorData = errorData;
        throw error;
      }
    },
    validateAuthToken(token) {
      return token.trim().length > 10;
    },
    validatePatreonAuth(auth) {
      return auth.trim().length > 0;
    },
    async verifyPatreonAuth(patreonAuth) {
      if (patreonAuth === "xbatchdemo") {
        return { valid: true };
      }
      const endpoint = "/verify";
      const selectedServer = getSelectedServer();
      const url = selectedServer + endpoint;
      const requestBody = { patreon_auth: patreonAuth };
      return new Promise((resolve, reject) => {
        if (typeof GM_xmlhttpRequest !== "undefined") {
          GM_xmlhttpRequest({
            method: "POST",
            url,
            timeout: getAPITimeout(),
            headers: {
              "Accept": "application/json",
              "Content-Type": "application/json"
            },
            data: JSON.stringify(requestBody),
            onload: (response) => {
              try {
                if (response.status === 400) {
                  const errorData = JSON.parse(response.responseText);
                  resolve({ valid: false });
                  return;
                }
                if (response.status !== 200) {
                  resolve({ valid: false });
                  return;
                }
                const data = JSON.parse(response.responseText);
                const isValid = data.valid === true && data.status === "active";
                resolve({ valid: isValid });
              } catch (parseError) {
                resolve({ valid: false });
              }
            },
            onerror: () => {
              resolve({ valid: false });
            },
            ontimeout: () => {
              resolve({ valid: false });
            }
          });
        } else {
          const controller = new AbortController();
          const timeoutId = setTimeout(() => controller.abort(), getAPITimeout());
          fetch(url, {
            method: "POST",
            signal: controller.signal,
            headers: {
              "Accept": "application/json",
              "Content-Type": "application/json"
            },
            body: JSON.stringify(requestBody)
          }).then(async (response) => {
            clearTimeout(timeoutId);
            if (response.status === 400) {
              return { valid: false };
            }
            if (!response.ok) {
              return { valid: false };
            }
            const data = await response.json();
            const isValid = data.valid === true && data.status === "active";
            return { valid: isValid };
          }).then(resolve).catch(() => {
            clearTimeout(timeoutId);
            resolve({ valid: false });
          });
        }
      });
    },
    async generateAuthToken(patreonAuth) {
      const endpoint = `/token/${patreonAuth}`;
      const selectedServer = getSelectedServer();
      try {
        const response = await this.makeAuthRequest(selectedServer + endpoint);
        return response;
      } catch (error) {
        throw new Error("Failed to generate token");
      }
    },
    async makeAuthRequest(url) {
      return new Promise((resolve, reject) => {
        if (typeof GM_xmlhttpRequest !== "undefined") {
          GM_xmlhttpRequest({
            method: "GET",
            url,
            timeout: getAPITimeout(),
            headers: {
              "Accept": "application/json",
              "Content-Type": "application/json"
            },
            onload: (response) => {
              try {
                if (response.status !== 200) {
                  reject(new Error(`HTTP error! status: ${response.status}`));
                  return;
                }
                const data = JSON.parse(response.responseText);
                resolve(data);
              } catch (parseError) {
                reject(new Error("Failed to parse API response"));
              }
            },
            onerror: () => {
              reject(new Error("Network error occurred"));
            },
            ontimeout: () => {
              reject(new Error("Request timeout - please try again"));
            }
          });
        } else {
          this.makeAuthRequestWithFetch(url).then(resolve).catch(reject);
        }
      });
    },
    async makeAuthRequestWithFetch(url) {
      const controller = new AbortController();
      const timeoutId = setTimeout(() => controller.abort(), getAPITimeout());
      try {
        const response = await fetch(url, {
          method: "GET",
          signal: controller.signal,
          headers: {
            "Accept": "application/json",
            "Content-Type": "application/json"
          }
        });
        clearTimeout(timeoutId);
        if (!response.ok) {
          throw new Error(`HTTP error! status: ${response.status}`);
        }
        const data = await response.json();
        return data;
      } catch (error) {
        clearTimeout(timeoutId);
        if (error instanceof Error) {
          if (error.name === "AbortError") {
            throw new Error("Request timeout - please try again");
          }
          throw error;
        }
        throw new Error("Unknown error occurred");
      }
    },
    async refreshAuthTokens(patreonAuth) {
      const endpoint = "/token";
      const selectedServer = getSelectedServer();
      const url = selectedServer + endpoint;
      const requestBody = { patreon_auth: patreonAuth };
      return new Promise((resolve, reject) => {
        if (typeof GM_xmlhttpRequest !== "undefined") {
          GM_xmlhttpRequest({
            method: "POST",
            url,
            timeout: getAPITimeout(),
            headers: {
              "Accept": "application/json",
              "Content-Type": "application/json"
            },
            data: JSON.stringify(requestBody),
            onload: (response) => {
              try {
                if (response.status === 401) {
                  const errorData = JSON.parse(response.responseText);
                  const errorMsg = errorData.error || errorData.detail || "Invalid Patreon authentication";
                  reject(new Error(errorMsg));
                  return;
                }
                if (response.status !== 200) {
                  const errorData = JSON.parse(response.responseText);
                  const errorMsg = errorData.error || errorData.detail || `HTTP error! status: ${response.status}`;
                  reject(new Error(errorMsg));
                  return;
                }
                const data = JSON.parse(response.responseText);
                if (!data || typeof data !== "object" || !Array.isArray(data.tokens)) {
                  reject(new Error("Invalid token response structure"));
                  return;
                }
                const result = {
                  success: data.success ?? true,
                  tokens: data.tokens ?? [],
                  count: data.count ?? data.tokens?.length ?? 0,
                  message: data.message ?? "Tokens retrieved successfully"
                };
                resolve(result);
              } catch (parseError) {
                reject(new Error("Failed to parse token response"));
              }
            },
            onerror: () => {
              reject(new Error("Network error occurred"));
            },
            ontimeout: () => {
              reject(new Error("Request timeout - please try again"));
            }
          });
        } else {
          const controller = new AbortController();
          const timeoutId = setTimeout(() => controller.abort(), getAPITimeout());
          fetch(url, {
            method: "POST",
            signal: controller.signal,
            headers: {
              "Accept": "application/json",
              "Content-Type": "application/json"
            },
            body: JSON.stringify(requestBody)
          }).then(async (response) => {
            clearTimeout(timeoutId);
            const responseText = await response.text();
            if (response.status === 401) {
              const errorData = JSON.parse(responseText);
              const errorMsg = errorData.error || errorData.detail || "Invalid Patreon authentication";
              throw new Error(errorMsg);
            }
            if (!response.ok) {
              const errorData = JSON.parse(responseText);
              const errorMsg = errorData.error || errorData.detail || `HTTP error! status: ${response.status}`;
              throw new Error(errorMsg);
            }
            const data = JSON.parse(responseText);
            if (!data || typeof data !== "object" || !Array.isArray(data.tokens)) {
              throw new Error("Invalid token response structure");
            }
            return {
              success: data.success ?? true,
              tokens: data.tokens ?? [],
              count: data.count ?? data.tokens?.length ?? 0,
              message: data.message ?? "Tokens retrieved successfully"
            };
          }).then(resolve).catch((error) => {
            clearTimeout(timeoutId);
            if (error instanceof Error) {
              if (error.name === "AbortError") {
                reject(new Error("Request timeout - please try again"));
              } else {
                reject(error);
              }
            } else {
              reject(new Error("Unknown error occurred"));
            }
          });
        }
      });
    }
  };
  class MediaDownloaderDB extends Dexie {
    accounts;
    auth_settings;
    groups;
    constructor() {
      super("TwitterXMediaBatchDownloaderPro");
      this.version(1).stores({
        accounts: "++id, username, cached_at",
        auth_settings: "++id"
      });
      this.version(2).stores({
        accounts: "++id, username, cached_at, batch_identifier",
        auth_settings: "++id"
      });
      this.version(3).stores({
        accounts: "++id, username, cached_at, batch_identifier, batch_mode",
        auth_settings: "++id"
      });
      this.version(4).stores({
        accounts: "++id, username, cached_at, batch_identifier, batch_mode",
        auth_settings: "++id",
        groups: "++id, name, created_at"
      });
      this.version(5).stores({
        accounts: "++id, username, cached_at, batch_identifier, batch_mode, group",
        auth_settings: "++id",
        groups: "++id, name, created_at"
      });
    }
  }
  const mediaDB = new MediaDownloaderDB();
  const dbState = {
    totalAccounts: signals.signal(0),
    dbChangeSignal: signals.signal(0)
  };
  async function updateTotalCount() {
    try {
      dbState.totalAccounts.value = await mediaDB.accounts.count();
    } catch {
    }
  }
  const mediaDownloaderDB = {
    async saveAccount(data) {
      return await mediaDB.transaction("rw", mediaDB.accounts, async () => {
        const account = {
          ...data,
          cached_at: Date.now()
        };
        let existing;
        if (account.batch_mode === "date_range") {
          const dateRangeAccounts = await mediaDB.accounts.where("username").equals(data.username).filter(
            (acc) => acc.batch_mode === "date_range" && acc.date_since === data.date_since && acc.date_until === data.date_until && acc.media_type === data.media_type
          ).toArray();
          if (dateRangeAccounts.length > 0) {
            dateRangeAccounts.sort((a, b) => b.cached_at - a.cached_at);
            existing = dateRangeAccounts[0];
          }
        } else {
          const regularAccounts = await mediaDB.accounts.where("username").equals(data.username).filter((acc) => {
            const sameMode = !acc.batch_mode || acc.batch_mode !== "date_range";
            const sameDateRange = !acc.date_since && !data.date_since || acc.date_since === data.date_since && acc.date_until === data.date_until;
            const sameMediaType = acc.media_type === data.media_type;
            return sameMode && sameDateRange && sameMediaType;
          }).toArray();
          if (regularAccounts.length > 0) {
            regularAccounts.sort((a, b) => b.cached_at - a.cached_at);
            existing = regularAccounts[0];
          }
        }
        let id2;
        if (existing) {
          await mediaDB.accounts.update(existing.id, account);
          id2 = existing.id;
        } else {
          id2 = await mediaDB.accounts.add(account);
        }
        if (account.group) {
          await this.addGroup(account.group);
        }
        await updateTotalCount();
        dbState.dbChangeSignal.value++;
        return id2;
      });
    },
    async insertAccount(data) {
      const id2 = await mediaDB.accounts.add(data);
      await updateTotalCount();
      dbState.dbChangeSignal.value++;
      return id2;
    },
    async getAccounts(page = 1, limit = 3, filterByBatch = false, filterByDateRange = false, filterByBatchDateRange = false) {
      const offset = (page - 1) * limit;
      let collection = mediaDB.accounts.orderBy("cached_at").reverse();
      if (filterByDateRange) {
        collection = collection.filter((acc) => acc.batch_mode === "date_range");
      } else if (filterByBatchDateRange) {
        collection = collection.filter((acc) => acc.batch_mode === "date_range");
      } else if (filterByBatch) {
        collection = collection.filter((acc) => !acc.batch_mode || acc.batch_mode !== "date_range");
      }
      return await collection.offset(offset).limit(limit).toArray();
    },
    async getAccountsCount(filterByBatch = false, filterByDateRange = false, filterByBatchDateRange = false) {
      if (filterByDateRange) {
        return await mediaDB.accounts.filter((acc) => acc.batch_mode === "date_range").count();
      } else if (filterByBatchDateRange) {
        return await mediaDB.accounts.filter((acc) => acc.batch_mode === "date_range").count();
      } else if (filterByBatch) {
        return await mediaDB.accounts.filter((acc) => !acc.batch_mode || acc.batch_mode !== "date_range").count();
      }
      return await mediaDB.accounts.count();
    },
    async getAccountByUsername(username) {
      return await mediaDB.accounts.where("username").equals(username).first();
    },
    async getAccountsByUsername(username) {
      return await mediaDB.accounts.where("username").equals(username).reverse().sortBy("cached_at");
    },
    async getAccountsByUsernameAndMode(username, mode, dateSince, dateUntil, mediaType) {
      if (mode === "date_range") {
        return await mediaDB.accounts.where("username").equals(username).filter(
          (acc) => acc.batch_mode === "date_range" && acc.date_since === dateSince && acc.date_until === dateUntil && acc.media_type === mediaType
        ).toArray();
      } else {
        return await mediaDB.accounts.where("username").equals(username).filter(
          (acc) => (!acc.batch_mode || acc.batch_mode !== "date_range") && acc.media_type === mediaType
        ).toArray();
      }
    },
    async updateAccount(id2, data) {
      await mediaDB.accounts.update(id2, data);
      if (data.group) {
        await this.addGroup(data.group);
      }
      dbState.dbChangeSignal.value++;
    },
    async deleteAccount(id2) {
      await mediaDB.accounts.delete(id2);
      await updateTotalCount();
      dbState.dbChangeSignal.value++;
    },
    async saveAuthSettings(authToken, patreonAuth, showAuthToken, showPatreonAuth) {
      const existing = await mediaDB.auth_settings.toCollection().first();
      const base = existing ? { ...existing } : {};
      const settings = {
        ...base,
        auth_token: authToken,
        patreon_auth: patreonAuth,
        updated_at: Date.now(),
        patreon_verified: base.patreon_verified && base.patreon_verified_auth === patreonAuth ? base.patreon_verified : false,
        patreon_verified_auth: base.patreon_verified && base.patreon_verified_auth === patreonAuth ? base.patreon_verified_auth : patreonAuth,
        show_auth_token: showAuthToken !== void 0 ? showAuthToken : base.show_auth_token,
        show_patreon_auth: showPatreonAuth !== void 0 ? showPatreonAuth : base.show_patreon_auth
      };
      if (existing) {
        await mediaDB.auth_settings.update(existing.id, settings);
        return existing.id;
      } else {
        return await mediaDB.auth_settings.add(settings);
      }
    },
    async setPatreonVerified(verified) {
      const existing = await mediaDB.auth_settings.toCollection().first();
      if (existing) {
        await mediaDB.auth_settings.update(existing.id, {
          patreon_verified: verified,
          patreon_verified_auth: existing.patreon_auth,
          updated_at: Date.now()
        });
      } else {
        await mediaDB.auth_settings.add({
          auth_token: "",
          patreon_auth: "",
          patreon_verified: verified,
          patreon_verified_auth: "",
          updated_at: Date.now()
        });
      }
    },
    async getAuthSettings() {
      return await mediaDB.auth_settings.toCollection().first();
    },
    async saveTokenList(tokenList, currentIndex = 0) {
      const existing = await mediaDB.auth_settings.toCollection().first();
      if (existing) {
        await mediaDB.auth_settings.update(existing.id, {
          token_list: tokenList,
          current_token_index: currentIndex,
          last_token_refresh: Date.now(),
          updated_at: Date.now()
        });
      } else {
        await mediaDB.auth_settings.add({
          auth_token: tokenList[currentIndex] || "",
          patreon_auth: "",
          token_list: tokenList,
          current_token_index: currentIndex,
          last_token_refresh: Date.now(),
          updated_at: Date.now()
        });
      }
    },
    async getNextToken() {
      const settings = await mediaDB.auth_settings.toCollection().first();
      if (!settings || !settings.token_list || settings.token_list.length === 0) {
        return null;
      }
      const currentIndex = settings.current_token_index ?? 0;
      if (currentIndex >= settings.token_list.length) {
        return null;
      }
      const token = settings.token_list[currentIndex];
      if (!token) {
        return null;
      }
      await mediaDB.auth_settings.update(settings.id, {
        current_token_index: currentIndex + 1,
        auth_token: token,
        updated_at: Date.now()
      });
      return token;
    },
    async getAllGroups() {
      try {
        await mediaDB.open();
        const groups = await mediaDB.groups.toArray();
        return groups.map((g2) => g2.name).sort();
      } catch (error) {
        if (error?.name !== "NotFoundError" && error?.name !== "InvalidStateError") {
          console.error("Error loading groups:", error);
        }
        return [];
      }
    },
    async addGroup(groupName) {
      try {
        await mediaDB.open();
        const existing = await mediaDB.groups.where("name").equals(groupName).first();
        if (!existing) {
          await mediaDB.groups.add({
            name: groupName,
            created_at: Date.now()
          });
        }
      } catch (error) {
        if (error?.name !== "NotFoundError" && error?.name !== "InvalidStateError") {
          console.error("Error adding group:", error);
        }
      }
    },
    async removeGroup(groupName) {
      try {
        await mediaDB.open();
        await mediaDB.groups.where("name").equals(groupName).delete();
      } catch (error) {
        if (error?.name !== "NotFoundError" && error?.name !== "InvalidStateError") {
          console.error("Error removing group:", error);
        }
      }
    },
    async getAllAccounts() {
      return await mediaDB.accounts.orderBy("cached_at").reverse().toArray();
    },
    async clearAll() {
      await mediaDB.accounts.clear();
      dbState.totalAccounts.value = 0;
      dbState.dbChangeSignal.value++;
    }
  };
  class Crc32 {
    constructor() {
      this.crc = -1;
    }
    append(data) {
      var crc = this.crc | 0;
      var table = this.table;
      for (var offset = 0, len = data.length | 0; offset < len; offset++) {
        crc = crc >>> 8 ^ table[(crc ^ data[offset]) & 255];
      }
      this.crc = crc;
    }
    get() {
      return ~this.crc;
    }
  }
  Crc32.prototype.table = (() => {
    var i;
    var j2;
    var t;
    var table = [];
    for (i = 0; i < 256; i++) {
      t = i;
      for (j2 = 0; j2 < 8; j2++) {
        t = t & 1 ? t >>> 1 ^ 3988292384 : t >>> 1;
      }
      table[i] = t;
    }
    return table;
  })();
  const getDataHelper = (byteLength) => {
    var uint8 = new Uint8Array(byteLength);
    return {
      array: uint8,
      view: new DataView(uint8.buffer)
    };
  };
  const pump = (zipObj) => zipObj.reader.read().then((chunk) => {
    if (chunk.done) return zipObj.writeFooter();
    const outputData = chunk.value;
    zipObj.crc.append(outputData);
    zipObj.uncompressedLength += outputData.length;
    zipObj.compressedLength += outputData.length;
    zipObj.ctrl.enqueue(outputData);
  });
  function createWriter(underlyingSource) {
    const files = Object.create(null);
    const filenames = [];
    const encoder = new TextEncoder();
    let offset = 0;
    let activeZipIndex = 0;
    let ctrl;
    let activeZipObject, closed;
    function next() {
      activeZipIndex++;
      activeZipObject = files[filenames[activeZipIndex]];
      if (activeZipObject) processNextChunk();
      else if (closed) closeZip();
    }
    var zipWriter = {
      enqueue(fileLike) {
        if (closed)
          throw new TypeError(
            "Cannot enqueue a chunk into a readable stream that is closed or has been requested to be closed"
          );
        let name = fileLike.name.trim();
        const date = new Date(
          typeof fileLike.lastModified === "undefined" ? Date.now() : fileLike.lastModified
        );
        if (fileLike.directory && !name.endsWith("/")) name += "/";
        if (files[name]) throw new Error("File already exists.");
        const nameBuf = encoder.encode(name);
        filenames.push(name);
        const zipObject = files[name] = {
          level: 0,
          ctrl,
          directory: !!fileLike.directory,
          nameBuf,
          comment: encoder.encode(fileLike.comment || ""),
          compressedLength: 0,
          uncompressedLength: 0,
          writeHeader() {
            var header = getDataHelper(26);
            var data = getDataHelper(30 + nameBuf.length);
            zipObject.offset = offset;
            zipObject.header = header;
            if (zipObject.level !== 0 && !zipObject.directory) {
              header.view.setUint16(4, 2048);
            }
            header.view.setUint32(0, 335546376);
            header.view.setUint16(
              6,
              (date.getHours() << 6 | date.getMinutes()) << 5 | date.getSeconds() / 2,
              true
            );
            header.view.setUint16(
              8,
              (date.getFullYear() - 1980 << 4 | date.getMonth() + 1) << 5 | date.getDate(),
              true
            );
            header.view.setUint16(22, nameBuf.length, true);
            data.view.setUint32(0, 1347093252);
            data.array.set(header.array, 4);
            data.array.set(nameBuf, 30);
            offset += data.array.length;
            ctrl.enqueue(data.array);
          },
          writeFooter() {
            var footer = getDataHelper(16);
            footer.view.setUint32(0, 1347094280);
            if (zipObject.crc) {
              zipObject.header.view.setUint32(10, zipObject.crc.get(), true);
              zipObject.header.view.setUint32(14, zipObject.compressedLength, true);
              zipObject.header.view.setUint32(18, zipObject.uncompressedLength, true);
              footer.view.setUint32(4, zipObject.crc.get(), true);
              footer.view.setUint32(8, zipObject.compressedLength, true);
              footer.view.setUint32(12, zipObject.uncompressedLength, true);
            }
            ctrl.enqueue(footer.array);
            offset += zipObject.compressedLength + 16;
            next();
          },
          fileLike
        };
        if (!activeZipObject) {
          activeZipObject = zipObject;
          processNextChunk();
        }
      },
      close() {
        if (closed)
          throw new TypeError(
            "Cannot close a readable stream that has already been requested to be closed"
          );
        if (!activeZipObject) closeZip();
        closed = true;
      }
    };
    function closeZip() {
      var length = 0;
      var index = 0;
      var indexFilename, file;
      for (indexFilename = 0; indexFilename < filenames.length; indexFilename++) {
        file = files[filenames[indexFilename]];
        length += 46 + file.nameBuf.length + file.comment.length;
      }
      const data = getDataHelper(length + 22);
      for (indexFilename = 0; indexFilename < filenames.length; indexFilename++) {
        file = files[filenames[indexFilename]];
        data.view.setUint32(index, 1347092738);
        data.view.setUint16(index + 4, 5120);
        data.array.set(file.header.array, index + 6);
        data.view.setUint16(index + 32, file.comment.length, true);
        if (file.directory) {
          data.view.setUint8(index + 38, 16);
        }
        data.view.setUint32(index + 42, file.offset, true);
        data.array.set(file.nameBuf, index + 46);
        data.array.set(file.comment, index + 46 + file.nameBuf.length);
        index += 46 + file.nameBuf.length + file.comment.length;
      }
      data.view.setUint32(index, 1347093766);
      data.view.setUint16(index + 8, filenames.length, true);
      data.view.setUint16(index + 10, filenames.length, true);
      data.view.setUint32(index + 12, length, true);
      data.view.setUint32(index + 16, offset, true);
      ctrl.enqueue(data.array);
      ctrl.close();
    }
    function processNextChunk() {
      if (!activeZipObject) return;
      if (activeZipObject.directory)
        return activeZipObject.writeFooter(activeZipObject.writeHeader());
      if (activeZipObject.reader) return pump(activeZipObject);
      if (activeZipObject.fileLike.stream) {
        activeZipObject.crc = new Crc32();
        activeZipObject.reader = activeZipObject.fileLike.stream().getReader();
        activeZipObject.writeHeader();
      } else next();
    }
    return new ReadableStream({
      start: (c) => {
        ctrl = c;
        if (underlyingSource.start) Promise.resolve(underlyingSource.start(zipWriter));
      },
      pull() {
        return processNextChunk() || underlyingSource.pull && Promise.resolve(underlyingSource.pull(zipWriter));
      }
    });
  }
  async function streamToFile(readableStream, filename, useNativePicker = true, onProgress) {
    await streamToBlobDownload(readableStream, filename, onProgress);
  }
  async function streamToBlobDownload(readableStream, filename, onProgress) {
    const chunks = [];
    let bytesWritten = 0;
    const reader = readableStream.getReader();
    try {
      while (true) {
        const { done, value } = await reader.read();
        if (done) break;
        chunks.push(value);
        bytesWritten += value.byteLength || value.length || 0;
        if (onProgress) ;
      }
    } finally {
      reader.releaseLock();
    }
    const blob = new Blob(chunks);
    fileSaverEs.saveAs(blob, filename);
  }
  async function zipStreamDownload(zipFilename, files, onProgress, rateLimit = 1e3, concurrency = 1, abortSignal) {
    let current = 0;
    const total = files.length;
    if (concurrency <= 1) {
      const fileIterator = files.values();
      const readableZipStream2 = createWriter({
        async pull(ctrl) {
          if (abortSignal?.aborted) {
            ctrl.close();
            return;
          }
          const fileInfo = fileIterator.next();
          if (fileInfo.done) {
            ctrl.close();
          } else {
            const { filename, url } = fileInfo.value;
            try {
              const res = await fetch(url);
              if (abortSignal?.aborted) {
                ctrl.close();
                return;
              }
              ctrl.enqueue({
                name: filename,
                stream: () => res.body
              });
              onProgress?.(++current, total, fileInfo.value);
              await new Promise((resolve) => setTimeout(resolve, rateLimit));
            } catch (error) {
              if (abortSignal?.aborted) {
                ctrl.close();
                return;
              }
              throw error;
            }
          }
        }
      });
      await streamToFile(readableZipStream2, zipFilename);
      return;
    }
    let completed = 0;
    let fileIndex = 0;
    const queue = [];
    let resolveNext = null;
    let isZipClosed = false;
    const downloadWorker = async () => {
      while (fileIndex < files.length) {
        if (abortSignal?.aborted) {
          fileIndex = files.length;
          break;
        }
        const currentFileIndex = fileIndex++;
        const file = files[currentFileIndex];
        if (!file) continue;
        try {
          const fetchPromise = fetch(file.url);
          const abortCheckInterval = 100;
          const res = await Promise.race([
            fetchPromise,
            new Promise((_, reject) => {
              const checkInterval = setInterval(() => {
                if (abortSignal?.aborted) {
                  clearInterval(checkInterval);
                  reject(new Error("Download aborted"));
                }
              }, abortCheckInterval);
              fetchPromise.finally(() => clearInterval(checkInterval));
            })
          ]);
          if (abortSignal?.aborted) {
            fileIndex = files.length;
            break;
          }
          const body = res.body;
          if (!body) {
            logger.error(`No response body for ${file.filename}`);
            continue;
          }
          queue.push({
            name: file.filename,
            stream: () => body,
            original: file
          });
          if (resolveNext) {
            const resolve = resolveNext;
            resolveNext = null;
            resolve();
          }
        } catch (error) {
          if (abortSignal?.aborted) {
            fileIndex = files.length;
            break;
          }
          logger.error(`Failed to download ${file.filename}:`, error);
        }
      }
      if (resolveNext && !isZipClosed) {
        const resolve = resolveNext;
        resolveNext = null;
        resolve();
      }
    };
    const workers = Array.from({ length: Math.min(concurrency, files.length) }, () => downloadWorker());
    const readableZipStream = createWriter({
      async pull(ctrl) {
        if (abortSignal?.aborted && queue.length === 0) {
          isZipClosed = true;
          ctrl.close();
          return;
        }
        while (queue.length === 0 && fileIndex < files.length && !abortSignal?.aborted) {
          await new Promise((resolve) => {
            resolveNext = resolve;
          });
          if (abortSignal?.aborted) {
            break;
          }
        }
        if (queue.length > 0) {
          const fileData = queue.shift();
          if (fileData) {
            ctrl.enqueue({
              name: fileData.name,
              stream: fileData.stream
            });
            onProgress?.(++completed, total, fileData.original);
          }
        } else if (fileIndex >= files.length || abortSignal?.aborted) {
          isZipClosed = true;
          ctrl.close();
        }
      }
    });
    await Promise.all([
      streamToFile(readableZipStream, zipFilename),
      ...workers
    ]);
  }
  function getGifShotOptions() {
    return {
      sampleInterval: 10,
      numWorkers: 2,
      numFrames: 30,
      interval: 0.1,
      frameDuration: 0.1,
      crossOrigin: "anonymous"
    };
  }
  class MediaDownloader {
    isDownloading = false;
    createdBlobUrls = [];
    abortController = null;
    async downloadAccountMedia(account, onProgress, batchInfo) {
      if (this.isDownloading) {
        throw new Error("Download already in progress");
      }
      this.isDownloading = true;
      this.abortController = new AbortController();
      try {
        const timeline = account.timeline;
        const username = mediaDownloaderAPI.formatUsername(account.username);
        const downloadDate = formatDateTime(Date.now(), "YYYYMMDD_HHmmss");
        let zipFilename;
        const dateRangeSuffix = account.date_since || account.date_until ? `_${(account.date_since || "none").replace(/-/g, "")}-${(account.date_until || "none").replace(/-/g, "")}` : "";
        if (batchInfo?.mode === "date_range" || dateRangeSuffix) {
          zipFilename = `${username}_${downloadDate}${dateRangeSuffix}.zip`;
        } else {
          zipFilename = `${username}_${downloadDate}.zip`;
        }
        const files = this.createFileList(timeline, username);
        if (files.length === 0) {
          throw new Error("No media files found");
        }
        const shouldConvertGifs = appOptionsManager.get("convertAnimatedGifs") ?? true;
        if (shouldConvertGifs) {
          await this.downloadWithGifConversion(zipFilename, files, onProgress, this.abortController?.signal);
        } else {
          const progressCallback = (current, total, file) => {
            const percentage = Math.round(current / total * 100);
            onProgress?.({
              current,
              total,
              percentage,
              currentFile: file?.filename,
              converting: false
            });
          };
          await zipStreamDownload(
            zipFilename,
            files,
            progressCallback,
            500,
            appOptionsManager.get("downloadConcurrency") ?? 1,
            this.abortController?.signal
          );
        }
      } catch (error) {
        if (error?.message !== "Download aborted") {
          throw error;
        }
      } finally {
        this.isDownloading = false;
        this.abortController = null;
        this.createdBlobUrls.forEach((url) => {
          URL.revokeObjectURL(url);
        });
        this.createdBlobUrls = [];
      }
    }
    createFileList(timeline, username) {
      const files = [];
      const usedFilenames = new Set();
      const mediaGroups = {
        photo: timeline.filter((item) => item.type === "photo"),
        video: timeline.filter((item) => item.type === "video"),
        animated_gif: timeline.filter((item) => item.type === "animated_gif"),
        text: timeline.filter((item) => item.type === "text")
      };
      Object.entries(mediaGroups).forEach(([type, items]) => {
        if (items.length === 0) return;
        const folderName = type === "photo" ? "image" : type === "animated_gif" ? "gif" : type;
        items.forEach((item) => {
          const extension = this.getFileExtension(item);
          const baseFilename = `${username}_${this.formatDateForFilename(item.date)}_${item.tweet_id}`;
          const filename = this.getUniqueFilename(baseFilename, extension, usedFilenames);
          const fullPath = `${folderName}/${filename}`;
          if (item.type === "text") {
            const textContent = item.content || "";
            const blob = new Blob([textContent], { type: "text/plain;charset=utf-8" });
            const blobUrl = URL.createObjectURL(blob);
            this.createdBlobUrls.push(blobUrl);
            files.push({
              filename: fullPath,
              url: blobUrl
            });
          } else {
            files.push({
              filename: fullPath,
              url: item.url
            });
          }
          usedFilenames.add(filename);
        });
      });
      return files;
    }
    getFileExtension(item) {
      switch (item.type) {
        case "photo":
          const photoMatch = item.url.match(/format=(\w+)/);
          return photoMatch?.[1] || "jpg";
        case "video":
          return "mp4";
        case "animated_gif":
          const shouldConvertGifs = appOptionsManager.get("convertAnimatedGifs") ?? true;
          return shouldConvertGifs ? "gif" : "mp4";
        case "text":
          return "txt";
        default:
          return "unknown";
      }
    }
    formatDateForFilename(dateStr) {
      const m = dateStr.match(/(\d{4})-(\d{2})-(\d{2}).*?(\d{2}):(\d{2}):(\d{2})/);
      if (m) {
        const [, y, mo, d, h2, mi, s] = m;
        return `${y}${mo}${d}_${h2}${mi}${s}`;
      }
      const d2 = new Date(dateStr);
      if (!isNaN(d2.getTime())) {
        const pad = (n) => String(n).padStart(2, "0");
        return `${d2.getFullYear()}${pad(d2.getMonth() + 1)}${pad(d2.getDate())}_${pad(d2.getHours())}${pad(d2.getMinutes())}${pad(d2.getSeconds())}`;
      }
      return dateStr.replace(/\D/g, "");
    }
    getUniqueFilename(baseFilename, extension, usedFilenames) {
      let filename = `${baseFilename}.${extension}`;
      let counter = 1;
      while (usedFilenames.has(filename)) {
        filename = `${baseFilename}_${counter}.${extension}`;
        counter++;
      }
      return filename;
    }
    isDownloadInProgress() {
      return this.isDownloading;
    }
    abortDownload() {
      if (this.abortController) {
        this.abortController.abort();
      }
    }
    async downloadWithGifConversion(zipFilename, files, onProgress, abortSignal) {
      const gifFiles = files.filter((f2) => f2.filename.startsWith("gif/"));
      const convertedFiles = [];
      for (let i = 0; i < gifFiles.length; i++) {
        if (abortSignal?.aborted) {
          if (convertedFiles.length > 0) {
            const partialFiles = [
              ...files.filter((f2) => !f2.filename.startsWith("gif/")),
              ...convertedFiles
            ];
            const downloadProgressCallback2 = (current, total, file) => {
              const downloadProgress = 50 + Math.round(current / total * 50);
              onProgress?.({
                current,
                total,
                percentage: downloadProgress,
                currentFile: file?.filename,
                converting: false
              });
            };
            await zipStreamDownload(
              zipFilename,
              partialFiles,
              downloadProgressCallback2,
              500,
              appOptionsManager.get("downloadConcurrency") ?? 1,
              void 0
);
          }
          throw new Error("Download aborted");
        }
        const gifFile = gifFiles[i];
        if (!gifFile) continue;
        const conversionProgress = Math.round((i + 1) / gifFiles.length * 50);
        onProgress?.({
          current: i,
          total: gifFiles.length,
          percentage: conversionProgress,
          currentFile: gifFile.filename,
          converting: true
        });
        try {
          const gifData = await this.convertVideoToGifWithAbort(gifFile.url, abortSignal);
          if (gifData) {
            gifFile.url = gifData;
            convertedFiles.push(gifFile);
          }
        } catch (error) {
          if (error?.message === "Download aborted") {
            if (convertedFiles.length > 0) {
              const partialFiles = [
                ...files.filter((f2) => !f2.filename.startsWith("gif/")),
                ...convertedFiles
              ];
              const downloadProgressCallback2 = (current, total, file) => {
                const downloadProgress = 50 + Math.round(current / total * 50);
                onProgress?.({
                  current,
                  total,
                  percentage: downloadProgress,
                  currentFile: file?.filename,
                  converting: false
                });
              };
              await zipStreamDownload(
                zipFilename,
                partialFiles,
                downloadProgressCallback2,
                500,
                appOptionsManager.get("downloadConcurrency") ?? 1,
                void 0
);
            }
            throw error;
          }
        }
      }
      const downloadProgressCallback = (current, total, file) => {
        const downloadProgress = 50 + Math.round(current / total * 50);
        onProgress?.({
          current,
          total,
          percentage: downloadProgress,
          currentFile: file?.filename,
          converting: false
        });
      };
      await zipStreamDownload(
        zipFilename,
        files,
        downloadProgressCallback,
        500,
        appOptionsManager.get("downloadConcurrency") ?? 1,
        abortSignal
      );
    }
    convertVideoToGif(videoUrl) {
      return new Promise((resolve) => {
        if (!gifshot.isExistingVideoGIFSupported()) {
          resolve(null);
          return;
        }
        const gifOptions = getGifShotOptions();
        {
          this.getVideoDimensions(videoUrl).then(({ width, height }) => {
            gifshot.createGIF({
              video: videoUrl,
              gifWidth: width,
              gifHeight: height,
              ...gifOptions
            }, (obj) => {
              this.handleGifConversionResult(obj, resolve);
            });
          }).catch((error) => {
            gifshot.createGIF({
              video: videoUrl,
              ...gifOptions
            }, (obj) => {
              this.handleGifConversionResult(obj, resolve);
            });
          });
        }
      });
    }
    convertVideoToGifWithAbort(videoUrl, abortSignal) {
      if (!abortSignal) {
        return this.convertVideoToGif(videoUrl);
      }
      return new Promise((resolve, reject) => {
        if (abortSignal.aborted) {
          reject(new Error("Download aborted"));
          return;
        }
        let onAbort;
        onAbort = () => {
          reject(new Error("Download aborted"));
        };
        abortSignal.addEventListener("abort", onAbort, { once: true });
        this.convertVideoToGif(videoUrl).then((result) => {
          if (onAbort) {
            abortSignal.removeEventListener("abort", onAbort);
          }
          resolve(result);
        }).catch((error) => {
          if (onAbort) {
            abortSignal.removeEventListener("abort", onAbort);
          }
          reject(error);
        });
      });
    }
    handleGifConversionResult(obj, resolve) {
      if (obj.error) {
        resolve(null);
      } else if (obj.image) {
        try {
          const dataUrl = obj.image;
          const base64Data = dataUrl.split(",")[1];
          if (!base64Data) {
            resolve(null);
            return;
          }
          const byteCharacters = atob(base64Data);
          const byteNumbers = new Array(byteCharacters.length);
          for (let i = 0; i < byteCharacters.length; i++) {
            byteNumbers[i] = byteCharacters.charCodeAt(i);
          }
          const byteArray = new Uint8Array(byteNumbers);
          const blob = new Blob([byteArray], { type: "image/gif" });
          const blobUrl = URL.createObjectURL(blob);
          this.createdBlobUrls.push(blobUrl);
          resolve(blobUrl);
        } catch (error) {
          resolve(null);
        }
      } else {
        resolve(null);
      }
    }
    getVideoDimensions(videoUrl) {
      return new Promise((resolve, reject) => {
        const video = document.createElement("video");
        video.crossOrigin = "anonymous";
        video.onloadedmetadata = () => {
          const width = video.videoWidth;
          const height = video.videoHeight;
          video.remove();
          if (width && height) {
            resolve({ width, height });
          } else {
            reject(new Error("Could not determine video dimensions"));
          }
        };
        video.onerror = () => {
          video.remove();
          reject(new Error("Failed to load video for dimension detection"));
        };
        setTimeout(() => {
          video.remove();
          reject(new Error("Timeout while detecting video dimensions"));
        }, 1e4);
        video.src = videoUrl;
      });
    }
  }
  const mediaDownloader = new MediaDownloader();
  const urlParser = {
    getCurrentUsername() {
      try {
        const pathname = window.location.pathname;
        const pathParts = pathname.replace(/^\/+/, "").split("/");
        const username = pathParts[0];
        if (!username) return null;
        const skipPaths = [
          "i",
          "home",
          "explore",
          "notifications",
          "messages",
          "settings",
          "compose",
          "search",
          "hashtag",
          "lists",
          "moments",
          "bookmarks",
          "profile",
          "login",
          "logout",
          "signup",
          "welcome",
          "help",
          "tos",
          "privacy",
          "about",
          "download",
          "jobs",
          "ads",
          "analytics",
          "connect",
          "intent",
          "oauth",
          "account",
          "share"
        ];
        if (skipPaths.includes(username.toLowerCase())) {
          return null;
        }
        if (this.isValidUsername(username)) {
          return username;
        }
        return null;
      } catch (error) {
        return null;
      }
    },
    isValidUsername(username) {
      if (!username || typeof username !== "string") return false;
      const cleanUsername = username.replace(/^@/, "");
      return /^[a-zA-Z0-9_]{1,15}$/.test(cleanUsername);
    },
    isUserProfilePage() {
      const username = this.getCurrentUsername();
      if (!username) return false;
      const pathname = window.location.pathname;
      const pathParts = pathname.replace(/^\/+/, "").split("/");
      if (pathParts.length === 1) ;
      if (pathParts.length === 2 && pathParts[1] === "") ;
      const profileTabs = ["with_replies", "media", "likes", "followers", "following"];
      if (pathParts.length === 2 && pathParts[1] && profileTabs.includes(pathParts[1])) {
        return true;
      }
      return false;
    },
    onUrlChange(callback) {
      let currentUrl = window.location.href;
      const checkUrlChange = () => {
        const newUrl = window.location.href;
        if (newUrl !== currentUrl) {
          currentUrl = newUrl;
          const username = this.getCurrentUsername();
          callback(username);
        }
      };
      const interval = setInterval(checkUrlChange, 1e3);
      const handlePopState = () => {
        setTimeout(() => {
          const username = this.getCurrentUsername();
          callback(username);
        }, 100);
      };
      window.addEventListener("popstate", handlePopState);
      return () => {
        clearInterval(interval);
        window.removeEventListener("popstate", handlePopState);
      };
    },
    getProfileInfo() {
      return {
        username: this.getCurrentUsername(),
        isProfilePage: this.isUserProfilePage()
      };
    }
  };
  const dashboardState = {
    username: signals.signal(""),
    accountData: signals.signal(null),
    showAccountInfo: signals.signal(false),
    currentAccountUsername: signals.signal(null),
    isLoading: signals.signal(false),
    errorMessage: signals.signal(""),
    isDownloading: signals.signal(false),
    downloadProgress: signals.signal(0),
    downloadError: signals.signal(""),
    isConverting: signals.signal(false),
    currentFile: signals.signal(""),
    downloadingType: signals.signal(null),
    downloadCurrent: signals.signal(0),
    downloadTotal: signals.signal(0),
    detectedUsername: signals.signal(null),
    isProfilePage: signals.signal(false),
    currentPage: signals.signal(0),
    hasMore: signals.signal(false),
    isAutoBatching: signals.signal(false),
    isPaused: signals.signal(false),
    aggregatedTimeline: signals.signal([]),
    currentBatchTimeline: signals.signal([]),
    aggregatedCount: signals.signal(0),
    fetchedPages: signals.signal([]),
    pageMediaCounts: signals.signal({}),
    loadingDirection: signals.signal(null),
    resetForNewAccount(newUsername) {
      const currentUsername = this.currentAccountUsername.value;
      if (currentUsername && newUsername && currentUsername !== newUsername) {
        this.username.value = "";
        this.accountData.value = null;
        this.showAccountInfo.value = false;
        this.isLoading.value = false;
        this.errorMessage.value = "";
        this.downloadProgress.value = 0;
        this.downloadError.value = "";
        this.isDownloading.value = false;
        this.isConverting.value = false;
        this.currentFile.value = "";
        this.downloadingType.value = null;
        this.downloadCurrent.value = 0;
        this.downloadTotal.value = 0;
        this.currentPage.value = 0;
        this.hasMore.value = false;
        this.isAutoBatching.value = false;
        this.isPaused.value = false;
        this.aggregatedTimeline.value = [];
        this.currentBatchTimeline.value = [];
        this.aggregatedCount.value = 0;
        this.fetchedPages.value = [];
        this.pageMediaCounts.value = {};
        this.loadingDirection.value = null;
      }
      this.currentAccountUsername.value = newUsername;
    },
    resetInteractionStates() {
      this.isLoading.value = false;
      this.errorMessage.value = "";
      this.downloadProgress.value = 0;
      this.downloadError.value = "";
      this.isDownloading.value = false;
      this.isConverting.value = false;
      this.currentFile.value = "";
      this.downloadingType.value = null;
      this.downloadCurrent.value = 0;
      this.downloadTotal.value = 0;
    }
  };
  const databaseDownloadState = {
    downloadingId: signals.signal(null),
    downloadProgress: signals.signal({}),
    downloadCurrent: signals.signal({}),
    downloadTotal: signals.signal({}),
    downloadCurrentFile: signals.signal({}),
    downloadConverting: signals.signal({}),
    resetDownloadState(accountId) {
      this.downloadProgress.value = { ...this.downloadProgress.value, [accountId]: 0 };
      this.downloadCurrent.value = { ...this.downloadCurrent.value, [accountId]: 0 };
      this.downloadTotal.value = { ...this.downloadTotal.value, [accountId]: 0 };
      this.downloadCurrentFile.value = { ...this.downloadCurrentFile.value, [accountId]: "" };
      this.downloadConverting.value = { ...this.downloadConverting.value, [accountId]: false };
    },
    clearDownloadState(accountId) {
      if (this.downloadingId.value === accountId) {
        this.downloadingId.value = null;
      }
      this.resetDownloadState(accountId);
    }
  };
  const authState = {
    patreonVerified: signals.signal(false),
    patreonAuth: signals.signal(""),
    authToken: signals.signal("")
  };
  function g(n, t) {
    for (var e in t) n[e] = t[e];
    return n;
  }
  function E(n, t) {
    for (var e in n) if ("__source" !== e && !(e in t)) return true;
    for (var r in t) if ("__source" !== r && n[r] !== t[r]) return true;
    return false;
  }
  function N(n, t) {
    this.props = n, this.context = t;
  }
  (N.prototype = new preact.Component()).isPureReactComponent = true, N.prototype.shouldComponentUpdate = function(n, t) {
    return E(this.props, n) || E(this.state, t);
  };
  var T = preact.options.__b;
  preact.options.__b = function(n) {
    n.type && n.type.__f && n.ref && (n.props.ref = n.ref, n.ref = null), T && T(n);
  };
  var F = preact.options.__e;
  preact.options.__e = function(n, t, e, r) {
    if (n.then) {
      for (var u2, o = t; o = o.__; ) if ((u2 = o.__c) && u2.__c) return null == t.__e && (t.__e = e.__e, t.__k = e.__k), u2.__c(n, t);
    }
    F(n, t, e, r);
  };
  var U = preact.options.unmount;
  function V(n, t, e) {
    return n && (n.__c && n.__c.__H && (n.__c.__H.__.forEach(function(n2) {
      "function" == typeof n2.__c && n2.__c();
    }), n.__c.__H = null), null != (n = g({}, n)).__c && (n.__c.__P === e && (n.__c.__P = t), n.__c.__e = true, n.__c = null), n.__k = n.__k && n.__k.map(function(n2) {
      return V(n2, t, e);
    })), n;
  }
  function W(n, t, e) {
    return n && e && (n.__v = null, n.__k = n.__k && n.__k.map(function(n2) {
      return W(n2, t, e);
    }), n.__c && n.__c.__P === t && (n.__e && e.appendChild(n.__e), n.__c.__e = true, n.__c.__P = e)), n;
  }
  function P() {
    this.__u = 0, this.o = null, this.__b = null;
  }
  function j(n) {
    var t = n.__.__c;
    return t && t.__a && t.__a(n);
  }
  function B() {
    this.i = null, this.l = null;
  }
  preact.options.unmount = function(n) {
    var t = n.__c;
    t && t.__R && t.__R(), t && 32 & n.__u && (n.type = null), U && U(n);
  }, (P.prototype = new preact.Component()).__c = function(n, t) {
    var e = t.__c, r = this;
    null == r.o && (r.o = []), r.o.push(e);
    var u2 = j(r.__v), o = false, i = function() {
      o || (o = true, e.__R = null, u2 ? u2(l) : l());
    };
    e.__R = i;
    var l = function() {
      if (!--r.__u) {
        if (r.state.__a) {
          var n2 = r.state.__a;
          r.__v.__k[0] = W(n2, n2.__c.__P, n2.__c.__O);
        }
        var t2;
        for (r.setState({ __a: r.__b = null }); t2 = r.o.pop(); ) t2.forceUpdate();
      }
    };
    r.__u++ || 32 & t.__u || r.setState({ __a: r.__b = r.__v.__k[0] }), n.then(i, i);
  }, P.prototype.componentWillUnmount = function() {
    this.o = [];
  }, P.prototype.render = function(n, e) {
    if (this.__b) {
      if (this.__v.__k) {
        var r = document.createElement("div"), o = this.__v.__k[0].__c;
        this.__v.__k[0] = V(this.__b, r, o.__O = o.__P);
      }
      this.__b = null;
    }
    var i = e.__a && preact.createElement(preact.Fragment, null, n.fallback);
    return i && (i.__u &= -33), [preact.createElement(preact.Fragment, null, e.__a ? null : n.children), i];
  };
  var H = function(n, t, e) {
    if (++e[1] === e[0] && n.l.delete(t), n.props.revealOrder && ("t" !== n.props.revealOrder[0] || !n.l.size)) for (e = n.i; e; ) {
      for (; e.length > 3; ) e.pop()();
      if (e[1] < e[0]) break;
      n.i = e = e[2];
    }
  };
  function Z(n) {
    return this.getChildContext = function() {
      return n.context;
    }, n.children;
  }
  function Y(n) {
    var e = this, r = n.h;
    if (e.componentWillUnmount = function() {
      preact.render(null, e.v), e.v = null, e.h = null;
    }, e.h && e.h !== r && e.componentWillUnmount(), !e.v) {
      for (var u2 = e.__v; null !== u2 && !u2.__m && null !== u2.__; ) u2 = u2.__;
      e.h = r, e.v = { nodeType: 1, parentNode: r, childNodes: [], __k: { __m: u2.__m }, contains: function() {
        return true;
      }, insertBefore: function(n2, t) {
        this.childNodes.push(n2), e.h.insertBefore(n2, t);
      }, removeChild: function(n2) {
        this.childNodes.splice(this.childNodes.indexOf(n2) >>> 1, 1), e.h.removeChild(n2);
      } };
    }
    preact.render(preact.createElement(Z, { context: e.context }, n.__v), e.v);
  }
  function $(n, e) {
    var r = preact.createElement(Y, { __v: n, h: e });
    return r.containerInfo = e, r;
  }
  (B.prototype = new preact.Component()).__a = function(n) {
    var t = this, e = j(t.__v), r = t.l.get(n);
    return r[0]++, function(u2) {
      var o = function() {
        t.props.revealOrder ? (r.push(u2), H(t, n, r)) : u2();
      };
      e ? e(o) : o();
    };
  }, B.prototype.render = function(n) {
    this.i = null, this.l = new Map();
    var t = preact.toChildArray(n.children);
    n.revealOrder && "b" === n.revealOrder[0] && t.reverse();
    for (var e = t.length; e--; ) this.l.set(t[e], this.i = [1, 0, this.i]);
    return n.children;
  }, B.prototype.componentDidUpdate = B.prototype.componentDidMount = function() {
    var n = this;
    this.l.forEach(function(t, e) {
      H(n, e, t);
    });
  };
  var q = "undefined" != typeof Symbol && Symbol.for && Symbol.for("react.element") || 60103, G = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|dominant|fill|flood|font|glyph(?!R)|horiz|image(!S)|letter|lighting|marker(?!H|W|U)|overline|paint|pointer|shape|stop|strikethrough|stroke|text(?!L)|transform|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/, J = /^on(Ani|Tra|Tou|BeforeInp|Compo)/, K = /[A-Z0-9]/g, Q = "undefined" != typeof document, X = function(n) {
    return ("undefined" != typeof Symbol && "symbol" == typeof Symbol() ? /fil|che|rad/ : /fil|che|ra/).test(n);
  };
  preact.Component.prototype.isReactComponent = {}, ["componentWillMount", "componentWillReceiveProps", "componentWillUpdate"].forEach(function(t) {
    Object.defineProperty(preact.Component.prototype, t, { configurable: true, get: function() {
      return this["UNSAFE_" + t];
    }, set: function(n) {
      Object.defineProperty(this, t, { configurable: true, writable: true, value: n });
    } });
  });
  var en = preact.options.event;
  function rn() {
  }
  function un() {
    return this.cancelBubble;
  }
  function on() {
    return this.defaultPrevented;
  }
  preact.options.event = function(n) {
    return en && (n = en(n)), n.persist = rn, n.isPropagationStopped = un, n.isDefaultPrevented = on, n.nativeEvent = n;
  };
  var cn = { enumerable: false, configurable: true, get: function() {
    return this.class;
  } }, fn = preact.options.vnode;
  preact.options.vnode = function(n) {
    "string" == typeof n.type && (function(n2) {
      var t = n2.props, e = n2.type, u2 = {}, o = -1 === e.indexOf("-");
      for (var i in t) {
        var l = t[i];
        if (!("value" === i && "defaultValue" in t && null == l || Q && "children" === i && "noscript" === e || "class" === i || "className" === i)) {
          var c = i.toLowerCase();
          "defaultValue" === i && "value" in t && null == t.value ? i = "value" : "download" === i && true === l ? l = "" : "translate" === c && "no" === l ? l = false : "o" === c[0] && "n" === c[1] ? "ondoubleclick" === c ? i = "ondblclick" : "onchange" !== c || "input" !== e && "textarea" !== e || X(t.type) ? "onfocus" === c ? i = "onfocusin" : "onblur" === c ? i = "onfocusout" : J.test(i) && (i = c) : c = i = "oninput" : o && G.test(i) ? i = i.replace(K, "-$&").toLowerCase() : null === l && (l = void 0), "oninput" === c && u2[i = c] && (i = "oninputCapture"), u2[i] = l;
        }
      }
      "select" == e && u2.multiple && Array.isArray(u2.value) && (u2.value = preact.toChildArray(t.children).forEach(function(n3) {
        n3.props.selected = -1 != u2.value.indexOf(n3.props.value);
      })), "select" == e && null != u2.defaultValue && (u2.value = preact.toChildArray(t.children).forEach(function(n3) {
        n3.props.selected = u2.multiple ? -1 != u2.defaultValue.indexOf(n3.props.value) : u2.defaultValue == n3.props.value;
      })), t.class && !t.className ? (u2.class = t.class, Object.defineProperty(u2, "className", cn)) : (t.className && !t.class || t.class && t.className) && (u2.class = u2.className = t.className), n2.props = u2;
    })(n), n.$$typeof = q, fn && fn(n);
  };
  var an = preact.options.__r;
  preact.options.__r = function(n) {
    an && an(n), n.__c;
  };
  var sn = preact.options.diffed;
  preact.options.diffed = function(n) {
    sn && sn(n);
    var t = n.props, e = n.__e;
    null != e && "textarea" === n.type && "value" in t && t.value !== e.value && (e.value = null == t.value ? "" : t.value);
  };
  function Title() {
    return u("h2", { class: "text-lg font-bold", children: [
      "Twitter/X Media Batch Downloader ",
u("span", { class: "text-warning", children: "Pro" })
    ] });
  }
  function Modal({ show, onClose, title, children, class: className, actions }) {
    if (!show) {
      return null;
    }
    const modalContent = u("dialog", { class: "modal", open: true, onClose: () => onClose?.(), children: [
u("div", { class: cx("modal-box transition-all duration-300 ease-in-out", className), children: [
u("div", { class: "flex items-center justify-between mb-4", children: [
          title ? u("h2", { class: "text-lg font-bold", children: title }) : u("span", {}),
u("div", { class: "flex items-center gap-2", children: [
            actions,
u("form", { method: "dialog", children: u(
              "button",
              {
                class: "btn btn-sm btn-circle btn-ghost",
                "aria-label": "Close",
                children: u(IconX, { size: 18 })
              }
            ) })
          ] })
        ] }),
u(ErrorBoundary, { children })
      ] }),
u("form", { method: "dialog", class: "modal-backdrop", children: u("button", { "aria-label": "Close", children: "close" }) })
    ] });
    const portalTarget = document.getElementById("tmd-root")?.shadowRoot?.getElementById("tmd-portal-root") || document.getElementById("tmd-root")?.shadowRoot || document.body;
    return $(modalContent, portalTarget);
  }
  const lastPlayTime = {};
  const DEBOUNCE_MS = 150;
  function canPlaySound(soundName) {
    const now = Date.now();
    const lastTime = lastPlayTime[soundName] || 0;
    if (now - lastTime < DEBOUNCE_MS) {
      return false;
    }
    lastPlayTime[soundName] = now;
    return true;
  }
  function playSuccessSound() {
    if (!canPlaySound("success")) return;
    if (!appOptionsManager.get("soundEffects", true)) return;
    try {
      const audioContext = new (window.AudioContext || window.webkitAudioContext)();
      const oscillator = audioContext.createOscillator();
      const gainNode = audioContext.createGain();
      oscillator.connect(gainNode);
      gainNode.connect(audioContext.destination);
      oscillator.frequency.value = 800;
      oscillator.type = "sine";
      gainNode.gain.setValueAtTime(0.3, audioContext.currentTime);
      gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.3);
      oscillator.start(audioContext.currentTime);
      oscillator.stop(audioContext.currentTime + 0.3);
      setTimeout(() => {
        const oscillator2 = audioContext.createOscillator();
        const gainNode2 = audioContext.createGain();
        oscillator2.connect(gainNode2);
        gainNode2.connect(audioContext.destination);
        oscillator2.frequency.value = 1e3;
        oscillator2.type = "sine";
        gainNode2.gain.setValueAtTime(0.3, audioContext.currentTime);
        gainNode2.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.3);
        oscillator2.start(audioContext.currentTime);
        oscillator2.stop(audioContext.currentTime + 0.3);
      }, 100);
    } catch (error) {
    }
  }
  function playErrorSound() {
    if (!canPlaySound("error")) return;
    if (!appOptionsManager.get("soundEffects", true)) return;
    try {
      const audioContext = new (window.AudioContext || window.webkitAudioContext)();
      const oscillator = audioContext.createOscillator();
      const gainNode = audioContext.createGain();
      oscillator.connect(gainNode);
      gainNode.connect(audioContext.destination);
      oscillator.frequency.value = 200;
      oscillator.type = "sawtooth";
      gainNode.gain.setValueAtTime(0.3, audioContext.currentTime);
      gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.4);
      oscillator.start(audioContext.currentTime);
      oscillator.stop(audioContext.currentTime + 0.4);
    } catch (error) {
    }
  }
  function playToggleOnSound() {
    if (!canPlaySound("toggleOn")) return;
    if (!appOptionsManager.get("soundEffects", true)) return;
    try {
      const audioContext = new (window.AudioContext || window.webkitAudioContext)();
      const oscillator = audioContext.createOscillator();
      const gainNode = audioContext.createGain();
      oscillator.connect(gainNode);
      gainNode.connect(audioContext.destination);
      oscillator.frequency.value = 600;
      oscillator.type = "sine";
      gainNode.gain.setValueAtTime(0.2, audioContext.currentTime);
      gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.15);
      oscillator.start(audioContext.currentTime);
      oscillator.stop(audioContext.currentTime + 0.15);
    } catch (error) {
    }
  }
  function playToggleOffSound() {
    if (!canPlaySound("toggleOff")) return;
    if (!appOptionsManager.get("soundEffects", true)) return;
    try {
      const audioContext = new (window.AudioContext || window.webkitAudioContext)();
      const oscillator = audioContext.createOscillator();
      const gainNode = audioContext.createGain();
      oscillator.connect(gainNode);
      gainNode.connect(audioContext.destination);
      oscillator.frequency.value = 400;
      oscillator.type = "sine";
      gainNode.gain.setValueAtTime(0.2, audioContext.currentTime);
      gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.15);
      oscillator.start(audioContext.currentTime);
      oscillator.stop(audioContext.currentTime + 0.15);
    } catch (error) {
    }
  }
  function playTabClickSound() {
    if (!canPlaySound("tabClick")) return;
    if (!appOptionsManager.get("soundEffects", true)) return;
    try {
      const audioContext = new (window.AudioContext || window.webkitAudioContext)();
      const oscillator = audioContext.createOscillator();
      const gainNode = audioContext.createGain();
      oscillator.connect(gainNode);
      gainNode.connect(audioContext.destination);
      oscillator.frequency.value = 700;
      oscillator.type = "sine";
      gainNode.gain.setValueAtTime(0.15, audioContext.currentTime);
      gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.1);
      oscillator.start(audioContext.currentTime);
      oscillator.stop(audioContext.currentTime + 0.1);
    } catch (error) {
    }
  }
  function playRadioClickSound() {
    if (!canPlaySound("radioClick")) return;
    if (!appOptionsManager.get("soundEffects", true)) return;
    try {
      const audioContext = new (window.AudioContext || window.webkitAudioContext)();
      const oscillator = audioContext.createOscillator();
      const gainNode = audioContext.createGain();
      oscillator.connect(gainNode);
      gainNode.connect(audioContext.destination);
      oscillator.frequency.value = 550;
      oscillator.type = "sine";
      gainNode.gain.setValueAtTime(0.12, audioContext.currentTime);
      gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.08);
      oscillator.start(audioContext.currentTime);
      oscillator.stop(audioContext.currentTime + 0.08);
    } catch (error) {
    }
  }
  function playClickSound() {
    if (!canPlaySound("click")) return;
    if (!appOptionsManager.get("soundEffects", true)) return;
    try {
      const audioContext = new (window.AudioContext || window.webkitAudioContext)();
      const oscillator = audioContext.createOscillator();
      const gainNode = audioContext.createGain();
      oscillator.connect(gainNode);
      gainNode.connect(audioContext.destination);
      oscillator.frequency.value = 650;
      oscillator.type = "sine";
      gainNode.gain.setValueAtTime(0.1, audioContext.currentTime);
      gainNode.gain.exponentialRampToValueAtTime(0.01, audioContext.currentTime + 0.06);
      oscillator.start(audioContext.currentTime);
      oscillator.stop(audioContext.currentTime + 0.06);
    } catch (error) {
    }
  }
  function playDeleteSound() {
    return;
  }
  function Dashboard({ loadFromDatabaseAccount } = {}) {
    const { t, i18n } = useTranslation();
    const isArabic = (i18n.language || "").startsWith("ar");
    const {
      accountData,
      showAccountInfo,
      detectedUsername,
      isProfilePage,
      isLoading,
      errorMessage,
      isDownloading,
      downloadProgress,
      downloadError,
      isConverting,
      currentFile,
      downloadCurrent,
      downloadTotal
    } = dashboardState;
    const showOverwriteModal = signals.useSignal(false);
    const pendingFetchUsername = signals.useSignal("");
    const pendingFetchParams = signals.useSignal(null);
    const convertGifsExternal = signals.useSignal(appOptionsManager.get("convertGifsExternal") ?? false);
    const mediaType = signals.useSignal(appOptionsManager.get("mediaType") ?? "all");
    const isLoadingFromDB = signals.useSignal(false);
    const previousMediaCount = signals.useSignal(null);
    const mediaIncrement = signals.useSignal(0);
    const incrementTimeoutRef = signals.useSignal(null);
    const hasDBData = signals.useSignal(false);
    const isLoadedFromDB = signals.useSignal(false);
    const isUpdating = signals.useSignal(false);
    const showUpdateConfirmModal = signals.useSignal(false);
    const showTimeoutModal = signals.useSignal(false);
    const hasResumeCursor = signals.useSignal(false);
    const isRetrying = signals.useSignal(false);
    const fetchAbortController = signals.useSignal(null);
    const currentFetchTotal = signals.useSignal(0);
    const retryAbortController = signals.useSignal(null);
    const retryTokenCurrent = signals.useSignal(0);
    const retryTokenTotal = signals.useSignal(0);
    const dateSince = signals.useSignal("");
    const dateUntil = signals.useSignal("");
    const advancedSettingsOpen = signals.useSignal(false);
    const fetchElapsedSeconds = signals.useSignal(0);
    const fetchStartTime = signals.useSignal(null);
    const lastFetchDuration = signals.useSignal(null);
    hooks.useEffect(() => {
      if (isLoading.value) {
        fetchStartTime.value = Date.now();
        fetchElapsedSeconds.value = 0;
        const interval = setInterval(() => {
          if (fetchStartTime.value) {
            const elapsed = Math.floor((Date.now() - fetchStartTime.value) / 1e3);
            fetchElapsedSeconds.value = elapsed;
          }
        }, 1e3);
        return () => {
          clearInterval(interval);
          if (fetchStartTime.value) {
            const duration = Math.floor((Date.now() - fetchStartTime.value) / 1e3);
            lastFetchDuration.value = duration;
          }
          fetchStartTime.value = null;
          fetchElapsedSeconds.value = 0;
        };
      } else {
        fetchStartTime.value = null;
        fetchElapsedSeconds.value = 0;
      }
    }, [isLoading.value]);
    const formatTime = (seconds) => {
      const mins = Math.floor(seconds / 60);
      const secs = seconds % 60;
      if (mins > 0) {
        return `${mins}m ${secs.toString().padStart(2, "0")}s`;
      }
      return `${secs}s`;
    };
    const getRemainingTime = () => {
      const timeout = appOptionsManager.get("apiTimeout") ?? 60;
      const remaining = timeout - fetchElapsedSeconds.value;
      return Math.max(0, remaining);
    };
    hooks.useEffect(() => {
      if (detectedUsername.value) {
        checkDBData(detectedUsername.value);
      }
    }, [dateSince.value, dateUntil.value]);
    hooks.useEffect(() => {
      const updateUsernameFromUrl = () => {
        const profileInfo = urlParser.getProfileInfo();
        const newDetectedUsername = profileInfo.username;
        dashboardState.resetForNewAccount(newDetectedUsername);
        detectedUsername.value = newDetectedUsername;
        isProfilePage.value = profileInfo.isProfilePage;
        if (newDetectedUsername) {
          checkDBData(newDetectedUsername);
        } else {
          hasDBData.value = false;
        }
      };
      updateUsernameFromUrl();
      (async () => {
        try {
          const settings = await mediaDownloaderDB.getAuthSettings();
          authState.patreonVerified.value = Boolean(settings?.patreon_verified);
          authState.patreonAuth.value = settings?.patreon_auth || "";
        } catch {
        }
      })();
      const cleanup = urlParser.onUrlChange(() => {
        updateUsernameFromUrl();
      });
      return cleanup;
    }, []);
    hooks.useEffect(() => {
      appOptionsManager.signal.subscribe(() => {
        convertGifsExternal.value = appOptionsManager.get("convertGifsExternal") ?? false;
        mediaType.value = appOptionsManager.get("mediaType") ?? "all";
      });
    }, []);
    const checkDBData = async (username) => {
      try {
        const cleanUsername = mediaDownloaderAPI.formatUsername(username);
        const hasDateRange = !!(dateSince.value || dateUntil.value);
        const currentMediaType = mediaType.value;
        let count = 0;
        if (hasDateRange) {
          const dateRangeAccounts = await mediaDB.accounts.where("username").equals(cleanUsername).filter(
            (acc) => acc.batch_mode === "date_range" && acc.date_since === dateSince.value && acc.date_until === dateUntil.value && acc.media_type === currentMediaType
          ).count();
          count = dateRangeAccounts;
        } else {
          const regularAccounts = await mediaDB.accounts.where("username").equals(cleanUsername).filter(
            (acc) => (!acc.batch_mode || acc.batch_mode !== "date_range") && acc.media_type === currentMediaType
          ).count();
          count = regularAccounts;
        }
        hasDBData.value = count > 0;
      } catch {
        hasDBData.value = false;
      }
    };
    hooks.useEffect(() => {
      const unsubscribe = appOptionsManager.signal.subscribe(() => {
        if (detectedUsername.value) {
          checkDBData(detectedUsername.value);
        }
      });
      return unsubscribe;
    }, []);
    hooks.useEffect(() => {
      if (detectedUsername.value) {
        checkDBData(detectedUsername.value);
      }
    }, [dbState.dbChangeSignal.value]);
    hooks.useEffect(() => {
      if (!loadFromDatabaseAccount?.value) return;
      const accountInfo = loadFromDatabaseAccount.value;
      if (accountInfo.username) {
        detectedUsername.value = accountInfo.username;
        if (accountInfo.date_since || accountInfo.date_until) {
          dateSince.value = accountInfo.date_since || "";
          dateUntil.value = accountInfo.date_until || "";
        } else {
          dateSince.value = "";
          dateUntil.value = "";
        }
        if (accountInfo.media_type) {
          mediaType.value = accountInfo.media_type;
          appOptionsManager.set("mediaType", accountInfo.media_type);
        }
        handleLoadFromDatabase();
        loadFromDatabaseAccount.value = null;
      }
    }, [loadFromDatabaseAccount?.value]);
    const stopRetry = () => {
      isRetrying.value = false;
      if (fetchAbortController.value) {
        fetchAbortController.value.abort();
        fetchAbortController.value = null;
      }
      isLoading.value = false;
      if (retryAbortController.value) {
        retryAbortController.value.abort();
        retryAbortController.value = null;
      }
      errorMessage.value = "";
    };
    const retryWithTokenGeneration = async (cleanUsername, authSettings) => {
      const controller = new AbortController();
      retryAbortController.value = controller;
      isRetrying.value = true;
      while (isRetrying.value && !controller.signal.aborted) {
        if (!isRetrying.value || controller.signal.aborted) {
          break;
        }
        try {
          const nextToken = await mediaDownloaderDB.getNextToken();
          let tokenToUse;
          if (nextToken) {
            tokenToUse = nextToken;
            const settings = await mediaDownloaderDB.getAuthSettings();
            retryTokenCurrent.value = (settings?.current_token_index ?? 1) - 1;
            retryTokenTotal.value = settings?.token_list?.length ?? 0;
          } else {
            const tokenResult = await mediaDownloaderAPI.generateAuthToken(authSettings.patreon_auth);
            tokenToUse = tokenResult.auth_token;
            retryTokenCurrent.value = tokenResult.current_index || 0;
            retryTokenTotal.value = tokenResult.total_tokens || 0;
          }
          if (!isRetrying.value || controller.signal.aborted) {
            break;
          }
          authSettings.auth_token = tokenToUse;
          authState.authToken.value = tokenToUse;
          await mediaDownloaderDB.saveAuthSettings(
            tokenToUse,
            authSettings.patreon_auth
          );
          if (!isRetrying.value || controller.signal.aborted) {
            break;
          }
          await mediaDownloaderDB.setPatreonVerified(true);
          if (!isRetrying.value || controller.signal.aborted) {
            break;
          }
          isRetrying.value = false;
          await handleFetchMedia(true);
          retryAbortController.value = null;
          return;
        } catch (error) {
          if (!isRetrying.value || controller.signal.aborted) {
            break;
          }
          const waitCompleted = await new Promise((resolve) => {
            const timeoutId = setTimeout(() => {
              cleanup();
              resolve(true);
            }, 2e3);
            const checkInterval = setInterval(() => {
              if (!isRetrying.value || controller.signal.aborted) {
                cleanup();
                resolve(false);
              }
            }, 100);
            const cleanup = () => {
              clearTimeout(timeoutId);
              clearInterval(checkInterval);
            };
          });
          if (!waitCompleted) {
            break;
          }
        }
      }
      isRetrying.value = false;
      retryAbortController.value = null;
    };
    const handleFetchMedia = async (skipOverwriteCheck = false) => {
      playClickSound();
      const rawUsername = detectedUsername.value || "";
      if (!rawUsername) {
        errorMessage.value = t("Please visit a profile page for auto-detection");
        playErrorSound();
        setTimeout(() => errorMessage.value = "", 2e3);
        return;
      }
      const authSettings = await mediaDownloaderDB.getAuthSettings();
      if (!authSettings) {
        errorMessage.value = t("Please configure authentication in the Auth tab first");
        playErrorSound();
        setTimeout(() => errorMessage.value = "", 2e3);
        return;
      }
      const latestToken = authState.authToken.value || authSettings.auth_token;
      if (latestToken && latestToken !== authSettings.auth_token) {
        authSettings.auth_token = latestToken;
      }
      const cleanUsername = mediaDownloaderAPI.formatUsername(rawUsername);
      if ((authSettings.patreon_auth || "").trim() === "xbatchdemo" && cleanUsername !== "xbatchdemo") {
        errorMessage.value = t("Demo mode is only available for @xbatchdemo");
        playErrorSound();
        setTimeout(() => errorMessage.value = "", 2e3);
        return;
      }
      if (!mediaDownloaderAPI.validateUsername(cleanUsername)) {
        errorMessage.value = t("Invalid username format");
        playErrorSound();
        setTimeout(() => errorMessage.value = "", 2e3);
        return;
      }
      if (!mediaDownloaderAPI.validateAuthToken(authSettings.auth_token)) {
        errorMessage.value = t("Invalid auth token. Please check your settings.");
        playErrorSound();
        setTimeout(() => errorMessage.value = "", 2e3);
        return;
      }
      if (!mediaDownloaderAPI.validatePatreonAuth(authSettings.patreon_auth)) {
        errorMessage.value = t("Invalid Patreon auth. Please check your settings.");
        playErrorSound();
        setTimeout(() => errorMessage.value = "", 2e3);
        return;
      }
      const mediaType2 = appOptionsManager.get("mediaType") ?? "all";
      if (!skipOverwriteCheck) {
        const batchMode = dateSince.value || dateUntil.value ? "date_range" : void 0;
        const existingAccounts = await mediaDownloaderDB.getAccountsByUsernameAndMode(
          cleanUsername,
          batchMode,
          dateSince.value || void 0,
          dateUntil.value || void 0,
          mediaType2
        );
        if (existingAccounts.length > 0) {
          pendingFetchUsername.value = cleanUsername;
          pendingFetchParams.value = { authSettings };
          showOverwriteModal.value = true;
          return;
        }
      }
      const resetBatchState = () => {
        dashboardState.currentPage.value = 0;
        dashboardState.hasMore.value = false;
        dashboardState.isAutoBatching.value = false;
        dashboardState.isPaused.value = false;
        dashboardState.aggregatedTimeline.value = [];
        dashboardState.currentBatchTimeline.value = [];
        dashboardState.aggregatedCount.value = 0;
        dashboardState.fetchedPages.value = [];
        dashboardState.pageMediaCounts.value = {};
      };
      resetBatchState();
      isLoadedFromDB.value = false;
      let resumeCursor = null;
      try {
        const existingAccounts = await mediaDownloaderDB.getAccountsByUsername(cleanUsername);
        if (existingAccounts.length > 0) {
          const matchingAccount = existingAccounts.filter(
            (acc) => acc.media_type === mediaType2 && acc.date_since === (dateSince.value || void 0) && acc.date_until === (dateUntil.value || void 0)
          ).sort((a, b) => b.cached_at - a.cached_at)[0];
          if (matchingAccount?.metadata?.cursor && matchingAccount.metadata.has_more) {
            resumeCursor = matchingAccount.metadata.cursor;
          }
        }
      } catch (error) {
      }
      const abortController = new AbortController();
      fetchAbortController.value = abortController;
      currentFetchTotal.value = 0;
      abortController.signal.__timeoutCallback = () => {
        if (isLoading.value && !abortController.signal.aborted) {
          fetchStartTime.value = null;
          fetchElapsedSeconds.value = 0;
          showTimeoutModal.value = true;
        }
      };
      if (resumeCursor) {
        try {
          const existingAccounts = await mediaDownloaderDB.getAccountsByUsername(cleanUsername);
          const matchingAccount = existingAccounts.filter(
            (acc) => acc.media_type === mediaType2 && acc.date_since === (dateSince.value || void 0) && acc.date_until === (dateUntil.value || void 0)
          ).sort((a, b) => b.cached_at - a.cached_at)[0];
          if (matchingAccount && matchingAccount.timeline.length > 0) {
            dashboardState.aggregatedTimeline.value = matchingAccount.timeline;
            dashboardState.aggregatedCount.value = matchingAccount.timeline.length;
            previousMediaCount.value = matchingAccount.timeline.length;
          } else {
            dashboardState.aggregatedTimeline.value = [];
            dashboardState.aggregatedCount.value = 0;
            previousMediaCount.value = 0;
          }
        } catch (error) {
          dashboardState.aggregatedTimeline.value = [];
          dashboardState.aggregatedCount.value = 0;
          previousMediaCount.value = 0;
        }
      } else {
        dashboardState.aggregatedTimeline.value = [];
        dashboardState.aggregatedCount.value = 0;
        previousMediaCount.value = 0;
      }
      dashboardState.fetchedPages.value = [];
      dashboardState.pageMediaCounts.value = {};
      if (incrementTimeoutRef.value !== null) {
        clearTimeout(incrementTimeoutRef.value);
        incrementTimeoutRef.value = null;
      }
      mediaIncrement.value = 0;
      isLoading.value = true;
      errorMessage.value = "";
      try {
        const data = await mediaDownloaderAPI.fetchMediaData(
          cleanUsername,
          authSettings.auth_token,
          authSettings.patreon_auth,
          {
            mediaType: mediaType2,
            dateSince: dateSince.value || void 0,
            dateUntil: dateUntil.value || void 0,
            includeRetweets: appOptionsManager.get("includeRetweets") ?? false,
            initialCursor: resumeCursor || void 0,
            onProgress: (total, newItems, cursor, newTimeline, accountInfo) => {
              currentFetchTotal.value = total;
              if (newTimeline && newTimeline.length > 0) {
                const seen = new Set(dashboardState.aggregatedTimeline.value.map((i) => `${i.tweet_id}|${i.url || ""}`));
                const merged = [...dashboardState.aggregatedTimeline.value];
                let addedCount = 0;
                for (const item of newTimeline) {
                  const key = `${item.tweet_id}|${item.url || ""}`;
                  if (!seen.has(key)) {
                    seen.add(key);
                    merged.push(item);
                    addedCount++;
                  }
                }
                dashboardState.aggregatedTimeline.value = merged;
                const newCount = merged.length;
                dashboardState.aggregatedCount.value = newCount;
                let increment = 0;
                if (previousMediaCount.value !== null) {
                  increment = newCount - previousMediaCount.value;
                } else {
                  increment = newCount;
                }
                if (increment > 0) {
                  mediaIncrement.value = increment;
                  if (incrementTimeoutRef.value !== null) {
                    clearTimeout(incrementTimeoutRef.value);
                  }
                  incrementTimeoutRef.value = window.setTimeout(() => {
                    mediaIncrement.value = 0;
                    incrementTimeoutRef.value = null;
                  }, 1e3);
                }
                previousMediaCount.value = newCount;
                const accountInfoToUse = accountInfo || accountData.value?.account_info || {
                  name: cleanUsername,
                  nick: cleanUsername,
                  date: "",
                  followers_count: 0,
                  friends_count: 0,
                  profile_image: "",
                  statuses_count: 0
                };
                accountData.value = {
                  account_info: accountInfoToUse,
                  timeline: merged,
                  metadata: {
                    batch_size: 200,
                    cursor: cursor || null,
                    has_more: cursor !== null,
                    new_entries: merged.length,
page: 0
                  }
                };
                if (!abortController.signal.aborted && accountData.value && merged.length > 0) {
                  const batchMode = dateSince.value || dateUntil.value ? "date_range" : void 0;
                  mediaDownloaderDB.saveAccount({
                    username: cleanUsername,
                    account_info: accountData.value.account_info,
                    metadata: {
                      ...accountData.value.metadata,
                      new_entries: merged.length
                    },
                    timeline: merged,
                    batch_mode: batchMode,
                    batch_identifier: void 0,
media_type: mediaType2,
                    date_since: dateSince.value || void 0,
                    date_until: dateUntil.value || void 0
                  }).then(() => {
                    if (!abortController.signal.aborted) {
                      checkDBData(cleanUsername).catch(() => {
                      });
                    }
                  }).catch(() => {
                  });
                }
                if (!showAccountInfo.value) {
                  showAccountInfo.value = true;
                }
              }
            },
            abortSignal: abortController.signal
          }
        );
        if (abortController.signal.aborted) {
          if (dashboardState.aggregatedTimeline.value.length > 0 && accountData.value) {
            try {
              const batchMode = dateSince.value || dateUntil.value ? "date_range" : void 0;
              await mediaDownloaderDB.saveAccount({
                username: cleanUsername,
                account_info: accountData.value.account_info,
                metadata: {
                  ...accountData.value.metadata,
                  new_entries: dashboardState.aggregatedTimeline.value.length
                },
                timeline: dashboardState.aggregatedTimeline.value,
                batch_mode: batchMode,
                batch_identifier: void 0,
media_type: mediaType2,
                date_since: dateSince.value || void 0,
                date_until: dateUntil.value || void 0
              });
              await checkDBData(cleanUsername);
            } catch (error) {
            }
          }
          isLoading.value = false;
          currentFetchTotal.value = 0;
          mediaIncrement.value = 0;
          if (incrementTimeoutRef.value !== null) {
            clearTimeout(incrementTimeoutRef.value);
            incrementTimeoutRef.value = null;
          }
          return;
        }
        accountData.value = {
          ...data,
          timeline: dashboardState.aggregatedTimeline.value,
metadata: {
            ...data.metadata,
            new_entries: dashboardState.aggregatedTimeline.value.length
}
        };
        dashboardState.currentBatchTimeline.value = dashboardState.aggregatedTimeline.value;
        dashboardState.hasMore.value = Boolean(data?.metadata?.has_more);
        dashboardState.currentPage.value = data?.metadata?.page ?? 0;
        if (!showAccountInfo.value) {
          showAccountInfo.value = true;
        }
        if (accountData.value) {
          try {
            const batchMode = dateSince.value || dateUntil.value ? "date_range" : void 0;
            await mediaDownloaderDB.saveAccount({
              username: cleanUsername,
              account_info: accountData.value.account_info,
              metadata: accountData.value.metadata,
              timeline: accountData.value.timeline,
              batch_mode: batchMode,
              batch_identifier: void 0,
media_type: mediaType2,
              date_since: dateSince.value || void 0,
              date_until: dateUntil.value || void 0
            });
            await checkDBData(cleanUsername);
          } catch (error) {
          }
        }
        isLoading.value = false;
        currentFetchTotal.value = 0;
        if (incrementTimeoutRef.value !== null) {
          clearTimeout(incrementTimeoutRef.value);
          incrementTimeoutRef.value = null;
        }
        mediaIncrement.value = 0;
        previousMediaCount.value = dashboardState.aggregatedCount.value || 0;
      } catch (error) {
        const apiError = error?.apiError;
        const errorData = error?.errorData;
        const raw = error instanceof Error ? error.message : "";
        const isDemoMode = (authSettings.patreon_auth || "").trim() === "xbatchdemo";
        const isTimeoutError = raw.includes("timeout") || raw.includes("Timeout");
        const isGalleryDLAuthError = raw.includes("Could not authenticate you") || raw.includes("Failed to fetch data") && raw.includes("401");
        const shouldRetry = apiError?.isRetryable === true || isGalleryDLAuthError || isTimeoutError;
        if (shouldRetry && !isRetrying.value && !isDemoMode) {
          errorMessage.value = "";
          retryWithTokenGeneration(cleanUsername, authSettings);
          return;
        } else {
          let msg = "";
          if (apiError) {
            if (errorData) {
              const translated = i18n.t(raw, errorData);
              msg = translated !== raw ? translated : raw;
            } else {
              msg = raw ? t(raw) || raw : t("Failed to fetch data");
            }
          } else {
            const httpMatch = raw.match(/^HTTP error! status: (\d+)/);
            msg = httpMatch ? t("HTTP error! status: {{status}}", { status: httpMatch[1] }) : (raw ? t(raw) : "") || t("Failed to fetch data");
          }
          errorMessage.value = msg;
          playErrorSound();
          setTimeout(() => errorMessage.value = "", 2e3);
        }
        isLoading.value = false;
        currentFetchTotal.value = 0;
      }
    };
    const confirmOverwrite = async () => {
      showOverwriteModal.value = false;
      pendingFetchUsername.value = "";
      pendingFetchParams.value = null;
      await handleFetchMedia(true);
    };
    const cancelOverwrite = () => {
      showOverwriteModal.value = false;
      pendingFetchUsername.value = "";
      pendingFetchParams.value = null;
    };
    const handleLoadFromDatabase = async () => {
      const rawUsername = detectedUsername.value || "";
      if (!rawUsername) {
        errorMessage.value = t("Please visit a profile page for auto-detection");
        playErrorSound();
        setTimeout(() => errorMessage.value = "", 2e3);
        return;
      }
      const cleanUsername = mediaDownloaderAPI.formatUsername(rawUsername);
      isLoadingFromDB.value = true;
      try {
        let accounts;
        const currentMediaType = mediaType.value;
        if (dateSince.value || dateUntil.value) {
          const dateRangeAccounts = await mediaDB.accounts.where("username").equals(cleanUsername).filter(
            (acc) => acc.batch_mode === "date_range" && acc.date_since === dateSince.value && acc.date_until === dateUntil.value && acc.media_type === currentMediaType
          ).reverse().sortBy("cached_at");
          accounts = dateRangeAccounts;
        } else {
          const regularAccounts = await mediaDB.accounts.where("username").equals(cleanUsername).filter(
            (acc) => (!acc.batch_mode || acc.batch_mode !== "date_range") && acc.media_type === currentMediaType
          ).reverse().sortBy("cached_at");
          accounts = regularAccounts;
        }
        if (accounts.length === 0) {
          return;
        }
        const latestAccount = accounts[0];
        if (latestAccount.date_since || latestAccount.date_until) {
          dateSince.value = latestAccount.date_since || "";
          dateUntil.value = latestAccount.date_until || "";
        }
        accountData.value = {
          account_info: latestAccount.account_info,
          metadata: latestAccount.metadata,
          timeline: latestAccount.timeline
        };
        dashboardState.currentBatchTimeline.value = latestAccount.timeline;
        dashboardState.aggregatedTimeline.value = latestAccount.timeline;
        dashboardState.aggregatedCount.value = latestAccount.timeline.length;
        showAccountInfo.value = true;
        isLoadedFromDB.value = true;
        if (detectedUsername.value) {
          await checkDBData(detectedUsername.value);
        }
      } catch (error) {
        errorMessage.value = t("Failed to load data");
        playErrorSound();
        setTimeout(() => errorMessage.value = "", 2e3);
      } finally {
        isLoadingFromDB.value = false;
      }
    };
    const saveAggregatedData = async () => {
      if (!accountData.value) return;
    };
    const handleBack = async () => {
      if (accountData.value && !isLoadedFromDB.value) {
        await saveAggregatedData();
      }
      showAccountInfo.value = false;
      accountData.value = null;
      isLoadedFromDB.value = false;
      dashboardState.resetInteractionStates();
    };
    const handleUpdateDataClick = () => {
      showUpdateConfirmModal.value = true;
    };
    const cancelUpdate = () => {
      showUpdateConfirmModal.value = false;
    };
    const confirmUpdate = async () => {
      showUpdateConfirmModal.value = false;
      await handleUpdateData();
    };
    const checkResumeCursor = async () => {
      try {
        const rawUsername = detectedUsername.value || "";
        if (!rawUsername) {
          hasResumeCursor.value = false;
          return;
        }
        const cleanUsername = mediaDownloaderAPI.formatUsername(rawUsername);
        const mediaType2 = appOptionsManager.get("mediaType") ?? "all";
        const existingAccounts = await mediaDownloaderDB.getAccountsByUsername(cleanUsername);
        const matchingAccount = existingAccounts.filter(
          (acc) => acc.media_type === mediaType2 && acc.date_since === (dateSince.value || void 0) && acc.date_until === (dateUntil.value || void 0)
        ).sort((a, b) => b.cached_at - a.cached_at)[0];
        hasResumeCursor.value = !!(matchingAccount?.metadata?.cursor && matchingAccount.metadata.has_more);
      } catch (error) {
        hasResumeCursor.value = false;
      }
    };
    const handleResume = async () => {
      await handleFetchMedia(true);
    };
    const handleTimeoutGenerateToken = async () => {
      showTimeoutModal.value = false;
      fetchStartTime.value = null;
      fetchElapsedSeconds.value = 0;
      if (dashboardState.aggregatedTimeline.value.length > 0 && accountData.value) {
        try {
          const rawUsername = detectedUsername.value || "";
          if (rawUsername) {
            const cleanUsername = mediaDownloaderAPI.formatUsername(rawUsername);
            const mediaType2 = appOptionsManager.get("mediaType") ?? "all";
            const batchMode = dateSince.value || dateUntil.value ? "date_range" : void 0;
            await mediaDownloaderDB.saveAccount({
              username: cleanUsername,
              account_info: accountData.value.account_info,
              metadata: {
                ...accountData.value.metadata,
                new_entries: dashboardState.aggregatedTimeline.value.length
              },
              timeline: dashboardState.aggregatedTimeline.value,
              batch_mode: batchMode,
              batch_identifier: void 0,
              media_type: mediaType2,
              date_since: dateSince.value || void 0,
              date_until: dateUntil.value || void 0
            });
            await checkDBData(cleanUsername);
          }
        } catch (error) {
        }
      }
      try {
        const authSettings = await mediaDownloaderDB.getAuthSettings();
        if (authSettings?.patreon_auth) {
          let newToken = null;
          const settings = await mediaDownloaderDB.getAuthSettings();
          if (settings?.token_list && settings.token_list.length > 0) {
            const currentIndex = settings.current_token_index ?? 0;
            if (currentIndex < settings.token_list.length) {
              const nextToken = await mediaDownloaderDB.getNextToken();
              if (nextToken) {
                newToken = nextToken;
              }
            }
          }
          if (!newToken) {
            try {
              await mediaDownloaderAPI.refreshAuthTokens(authSettings.patreon_auth);
              const updatedSettings = await mediaDownloaderDB.getAuthSettings();
              if (updatedSettings?.token_list && updatedSettings.token_list.length > 0) {
                const nextToken = await mediaDownloaderDB.getNextToken();
                if (nextToken) {
                  newToken = nextToken;
                }
              }
            } catch (refreshError) {
            }
          }
          if (!newToken) {
            const tokenResult = await mediaDownloaderAPI.generateAuthToken(authSettings.patreon_auth);
            if (tokenResult.auth_token) {
              newToken = tokenResult.auth_token;
            }
          }
          if (newToken) {
            await mediaDownloaderDB.saveAuthSettings(newToken, authSettings.patreon_auth);
            authState.authToken.value = newToken;
            fetchStartTime.value = null;
            fetchElapsedSeconds.value = 0;
            await new Promise((resolve) => setTimeout(resolve, 100));
            await handleFetchMedia(true);
          } else {
            errorMessage.value = t("Failed to generate token");
            playErrorSound();
          }
        }
      } catch (error) {
        errorMessage.value = t("Failed to generate token");
        playErrorSound();
      }
    };
    const handleTimeoutStop = async () => {
      showTimeoutModal.value = false;
      fetchStartTime.value = null;
      fetchElapsedSeconds.value = 0;
      if (dashboardState.aggregatedTimeline.value.length > 0 && accountData.value) {
        try {
          const rawUsername = detectedUsername.value || "";
          if (rawUsername) {
            const cleanUsername = mediaDownloaderAPI.formatUsername(rawUsername);
            const mediaType2 = appOptionsManager.get("mediaType") ?? "all";
            const batchMode = dateSince.value || dateUntil.value ? "date_range" : void 0;
            await mediaDownloaderDB.saveAccount({
              username: cleanUsername,
              account_info: accountData.value.account_info,
              metadata: {
                ...accountData.value.metadata,
                new_entries: dashboardState.aggregatedTimeline.value.length
              },
              timeline: dashboardState.aggregatedTimeline.value,
              batch_mode: batchMode,
              batch_identifier: void 0,
              media_type: mediaType2,
              date_since: dateSince.value || void 0,
              date_until: dateUntil.value || void 0
            });
            await checkDBData(cleanUsername);
          }
        } catch (error) {
        }
      }
      if (fetchAbortController.value) {
        fetchAbortController.value.abort();
        fetchAbortController.value = null;
      }
      isLoading.value = false;
      currentFetchTotal.value = 0;
      mediaIncrement.value = 0;
      if (incrementTimeoutRef.value !== null) {
        clearTimeout(incrementTimeoutRef.value);
        incrementTimeoutRef.value = null;
      }
    };
    hooks.useEffect(() => {
      checkResumeCursor();
      const unsubscribe = detectedUsername.subscribe(() => {
        checkResumeCursor();
      });
      return unsubscribe;
    }, []);
    const handleUpdateData = async () => {
      isUpdating.value = true;
      const rawUsername = detectedUsername.value || "";
      if (!rawUsername) {
        errorMessage.value = t("Please visit a profile page for auto-detection");
        playErrorSound();
        setTimeout(() => errorMessage.value = "", 2e3);
        return;
      }
      const authSettings = await mediaDownloaderDB.getAuthSettings();
      if (!authSettings) {
        errorMessage.value = t("Please configure authentication in the Auth tab first");
        playErrorSound();
        setTimeout(() => errorMessage.value = "", 2e3);
        return;
      }
      const cleanUsername = mediaDownloaderAPI.formatUsername(rawUsername);
      const mediaType2 = appOptionsManager.get("mediaType") ?? "all";
      const resetBatchState = () => {
        dashboardState.currentPage.value = 0;
        dashboardState.hasMore.value = false;
        dashboardState.isAutoBatching.value = false;
        dashboardState.isPaused.value = false;
        dashboardState.aggregatedTimeline.value = [];
        dashboardState.currentBatchTimeline.value = [];
        dashboardState.aggregatedCount.value = 0;
        dashboardState.fetchedPages.value = [];
        dashboardState.pageMediaCounts.value = {};
      };
      const fetchPage = async (page, reveal = false) => {
        isLoading.value = true;
        errorMessage.value = "";
        try {
          const data = await mediaDownloaderAPI.fetchMediaData(
            cleanUsername,
            authSettings.auth_token,
            authSettings.patreon_auth,
            {
              mediaType: mediaType2,
              dateSince: dateSince.value || void 0,
              dateUntil: dateUntil.value || void 0,
              includeRetweets: appOptionsManager.get("includeRetweets") ?? false
            }
          );
          accountData.value = data;
          dashboardState.currentBatchTimeline.value = data.timeline;
          dashboardState.hasMore.value = Boolean(data?.metadata?.has_more);
          dashboardState.currentPage.value = data?.metadata?.page ?? page;
          const seen = new Set(dashboardState.aggregatedTimeline.value.map((i) => `${i.tweet_id}|${i.url}`));
          const merged = [...dashboardState.aggregatedTimeline.value];
          if (!dashboardState.fetchedPages.value.includes(page)) {
            dashboardState.fetchedPages.value = [...dashboardState.fetchedPages.value, page];
            let newMediaCount = 0;
            for (const item of data.timeline) {
              const key = `${item.tweet_id}|${item.url}`;
              if (!seen.has(key)) {
                seen.add(key);
                merged.push(item);
                newMediaCount++;
              }
            }
            dashboardState.pageMediaCounts.value = {
              ...dashboardState.pageMediaCounts.value,
              [page]: newMediaCount
            };
            dashboardState.aggregatedTimeline.value = merged;
            dashboardState.aggregatedCount.value = merged.length;
          }
          if (reveal) {
            showAccountInfo.value = true;
          }
          try {
            const batchMode = dateSince.value || dateUntil.value ? "date_range" : void 0;
            await mediaDownloaderDB.saveAccount({
              username: cleanUsername,
              account_info: data.account_info,
              metadata: data.metadata,
              timeline: data.timeline,
              batch_mode: batchMode,
              batch_identifier: void 0,
media_type: mediaType2,
              date_since: dateSince.value || void 0,
              date_until: dateUntil.value || void 0
            });
            await checkDBData(cleanUsername);
          } catch {
          }
        } catch (error) {
          const raw = error instanceof Error ? error.message : "";
          const httpMatch = raw.match(/^HTTP error! status: (\d+)/);
          const msg = httpMatch ? t("HTTP error! status: {{status}}", { status: httpMatch[1] }) : (raw ? t(raw) : "") || t("Failed to fetch data");
          errorMessage.value = msg;
          playErrorSound();
          setTimeout(() => errorMessage.value = "", 2e3);
          throw error;
        } finally {
          isLoading.value = false;
        }
      };
      try {
        resetBatchState();
        isLoadedFromDB.value = false;
        await fetchPage(0, true);
      } catch {
      } finally {
        isUpdating.value = false;
      }
    };
    const handleDownloadMedia = async () => {
      if (!accountData.value) return;
      playClickSound();
      try {
        dashboardState.downloadingType.value = "all";
        isDownloading.value = true;
        downloadError.value = "";
        downloadProgress.value = 0;
        const aggregatedTimeline = dashboardState.aggregatedTimeline.value.length > 0 ? dashboardState.aggregatedTimeline.value : accountData.value.timeline;
        const account = {
          username: accountData.value.account_info.name,
          account_info: accountData.value.account_info,
          metadata: accountData.value.metadata,
          timeline: aggregatedTimeline,
          cached_at: Date.now(),
          date_since: dateSince.value || void 0,
          date_until: dateUntil.value || void 0
        };
        const batchMode = dateSince.value || dateUntil.value ? "date_range" : void 0;
        const batchInfo = { mode: batchMode, page: dashboardState.currentPage.value };
        await mediaDownloader.downloadAccountMedia(account, (progress) => {
          downloadProgress.value = progress.percentage;
          isConverting.value = progress.converting || false;
          currentFile.value = progress.currentFile || "";
          dashboardState.downloadCurrent.value = progress.current;
          dashboardState.downloadTotal.value = progress.total;
        }, batchInfo);
        playSuccessSound();
      } catch (error) {
        const raw = error instanceof Error ? error.message : "";
        const httpMatch = raw.match(/^HTTP error! status: (\d+)/);
        const msg = httpMatch ? t("HTTP error! status: {{status}}", { status: httpMatch[1] }) : (raw ? t(raw) : "") || t("Failed to download media");
        downloadError.value = msg;
        playErrorSound();
        setTimeout(() => downloadError.value = "", 2e3);
      } finally {
        dashboardState.downloadingType.value = null;
        isDownloading.value = false;
        downloadProgress.value = 0;
        isConverting.value = false;
        currentFile.value = "";
        dashboardState.downloadCurrent.value = 0;
        dashboardState.downloadTotal.value = 0;
      }
    };
    if (showAccountInfo.value && accountData.value) {
      const account = accountData.value.account_info;
      const metadata = accountData.value.metadata;
      return u(preact.Fragment, { children: [
u("div", { class: "space-y-6", children: [
u("div", { class: "flex items-center gap-4 mb-6", children: [
u("div", { class: "flex items-center gap-2", children: [
u("button", { class: "btn btn-sm", onClick: handleBack, children: [
u(IconChevronLeft, { size: 16 }),
                t("Back")
              ] }),
              (isLoadedFromDB.value || isUpdating.value) && u("div", { class: "join", children: [
                hasResumeCursor.value && u("button", { class: "btn btn-info btn-sm join-item", onClick: handleResume, disabled: isLoading.value, children: [
u(IconRefresh, { size: 16 }),
                  t("Resume")
                ] }),
u("button", { class: "btn btn-accent btn-sm join-item", onClick: handleUpdateDataClick, disabled: isLoading.value, children: isLoading.value && isUpdating.value ? u(preact.Fragment, { children: [
u("span", { class: "loading loading-spinner loading-xs" }),
                  t("Updating...")
                ] }) : u(preact.Fragment, { children: [
u(IconCloudUp, { size: 16 }),
                  t("Update")
                ] }) })
              ] })
            ] }),
u("div", { class: "ml-auto flex items-center gap-2", children: (() => {
              if (isLoadedFromDB.value) {
                return null;
              }
              dashboardState.currentPage.value;
              isLoading.value && dashboardState.loadingDirection.value === "prev";
              isLoading.value && dashboardState.loadingDirection.value === "next";
              return null;
            })() })
          ] }),
u("div", { class: "card bg-base-200 card-border", children: u("div", { class: "card-body p-4", children: u("div", { class: "flex items-center gap-4", children: [
u("div", { class: "avatar", children: u("div", { class: "w-16 rounded-box", children: u(
              "img",
              {
                src: account.profile_image,
                alt: account.nick,
                onError: (e) => {
                  const target = e.target;
                  target.src = 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="gray"%3E%3Ccircle cx="12" cy="12" r="10"/%3E%3C/svg%3E';
                }
              }
            ) }) }),
u("div", { class: "grow", children: [
u("div", { class: "flex items-center gap-2 flex-wrap", children: [
u("h3", { class: "font-semibold text-base", children: account.nick }),
                (() => {
                  if (isLoadedFromDB.value) {
                    return null;
                  }
                  const hasDateRange = metadata?.date_range || dateSince.value || dateUntil.value;
                  if (!hasDateRange) {
                    dashboardState.currentPage.value;
                  }
                  return null;
                })(),
                metadata?.date_range && u("div", { class: "badge badge-soft badge-info badge-sm", children: [
                  metadata.date_range.since.replace(/-/g, ""),
                  " - ",
                  metadata.date_range.until.replace(/-/g, "")
                ] }),
                (dateSince.value || dateUntil.value) && !metadata?.date_range && u("div", { class: "badge badge-soft badge-info badge-sm", children: [
                  (dateSince.value || "none").replace(/-/g, ""),
                  " - ",
                  (dateUntil.value || "none").replace(/-/g, "")
                ] })
              ] }),
u("p", { class: "text-sm opacity-70", children: [
                "@",
                account.name
              ] }),
u("p", { class: "text-sm opacity-50 mt-1", children: [
                t("Posts: {{posts}}", { posts: account.statuses_count.toLocaleString() }),
                " • ",
                (() => {
                  if (isLoadedFromDB.value) {
                    return u(preact.Fragment, { children: [
                      t("Media: {{media}}", { media: metadata.new_entries.toLocaleString() }),
                      mediaIncrement.value > 0 && u("span", { class: "text-success font-semibold ml-1", children: [
                        "+",
                        mediaIncrement.value.toLocaleString()
                      ] })
                    ] });
                  }
                  const mediaCount = dashboardState.aggregatedCount.value || metadata.new_entries;
                  return u(preact.Fragment, { children: [
                    t("Media: {{media}}", { media: mediaCount.toLocaleString() }),
                    mediaIncrement.value > 0 && u("span", { class: "text-success font-semibold ml-1", children: [
                      "+",
                      mediaIncrement.value.toLocaleString()
                    ] })
                  ] });
                })(),
                lastFetchDuration.value !== null && !isLoading.value && u(preact.Fragment, { children: [
                  " • ",
u("span", { class: "opacity-60", children: t("Fetched in {{time}}", { time: formatTime(lastFetchDuration.value) }) })
                ] })
              ] })
            ] })
          ] }) }) }),
u("div", { class: "space-y-4", children: [
            isDownloading.value && u("div", { class: "space-y-2", children: [
u("div", { class: "flex justify-between text-sm", children: [
u("span", { children: [
                  isConverting.value ? t("Converting GIFs...") : t("Downloading..."),
                  downloadTotal.value > 0 && ` (${downloadCurrent.value.toLocaleString()}/${downloadTotal.value.toLocaleString()})`
                ] }),
u("span", { children: [
                  downloadProgress.value,
                  "%"
                ] })
              ] }),
u("progress", { class: "progress progress-primary w-full", value: downloadProgress.value, max: "100" }),
              currentFile.value && u("div", { class: "text-xs opacity-70 truncate", children: currentFile.value })
            ] }),
u("div", { class: "flex justify-center gap-2", children: isDownloading.value ? u(
              "button",
              {
                class: "btn btn-error btn-sm",
                onClick: () => mediaDownloader.abortDownload(),
                children: [
u(IconPlayerStop, { size: 16 }),
                  t("Stop")
                ]
              }
            ) : isLoading.value ? (

u("div", { class: "flex flex-col items-center gap-1", children: [
u("div", { class: "join", children: [
u(
                    "button",
                    {
                      class: "btn btn-neutral btn-sm join-item",
                      disabled: true,
                      children: [
u("span", { class: "loading loading-spinner loading-xs" }),
u("span", { children: t("Fetching...") })
                      ]
                    }
                  ),
u(
                    "button",
                    {
                      class: "btn btn-error btn-sm join-item",
                      onClick: async () => {
                        if (fetchAbortController.value) {
                          fetchAbortController.value.abort();
                          fetchAbortController.value = null;
                        }
                        if (dashboardState.aggregatedTimeline.value.length > 0 && accountData.value) {
                          try {
                            const cleanUsername = mediaDownloaderAPI.formatUsername(detectedUsername.value || "");
                            const batchMode = dateSince.value || dateUntil.value ? "date_range" : void 0;
                            await mediaDownloaderDB.saveAccount({
                              username: cleanUsername,
                              account_info: accountData.value.account_info,
                              metadata: {
                                ...accountData.value.metadata,
                                new_entries: dashboardState.aggregatedTimeline.value.length
                              },
                              timeline: dashboardState.aggregatedTimeline.value,
                              batch_mode: batchMode,
                              batch_identifier: void 0,
media_type: mediaType.value,
                              date_since: dateSince.value || void 0,
                              date_until: dateUntil.value || void 0
                            });
                            await checkDBData(cleanUsername);
                          } catch (error) {
                          }
                        }
                        isLoading.value = false;
                        currentFetchTotal.value = 0;
                        mediaIncrement.value = 0;
                        if (incrementTimeoutRef.value !== null) {
                          clearTimeout(incrementTimeoutRef.value);
                          incrementTimeoutRef.value = null;
                        }
                      },
                      children: [
u(IconPlayerStop, { size: 16 }),
                        t("Stop")
                      ]
                    }
                  )
                ] }),
u("div", { class: "flex items-center gap-1 text-xs opacity-60", children: [
u("span", { class: "font-mono", children: formatTime(fetchElapsedSeconds.value) }),
u("span", { children: "/" }),
u("span", { class: "font-mono", children: formatTime(getRemainingTime()) })
                ] })
              ] })
            ) : u(preact.Fragment, { children: [
              (() => {
                if (isLoadedFromDB.value) {
                  return null;
                }
                return null;
              })(),
              (() => {
                const labelKey = "Download";
                return u(
                  "button",
                  {
                    class: "btn btn-neutral btn-sm",
                    onClick: handleDownloadMedia,
                    disabled: (dashboardState.aggregatedCount.value || metadata.new_entries) === 0,
                    children: [
u(IconDownload, { size: 16 }),
                      t(labelKey)
                    ]
                  }
                );
              })()
            ] }) }),
            downloadError.value && u("div", { role: "alert", class: "alert alert-error alert-soft", children: [
u(IconCircleX, { size: 20 }),
u("span", { dir: isArabic ? "rtl" : void 0, children: downloadError.value })
            ] })
          ] })
        ] }),
u(Modal, { show: showTimeoutModal.value, onClose: handleTimeoutStop, title: t("Request timeout"), class: "max-w-sm", children: u("div", { class: "space-y-4", children: [
u("p", { class: `text-sm${isArabic ? " text-right" : ""}`, dir: isArabic ? "rtl" : void 0, children: t("Request timeout - please try again") }),
u("div", { class: "modal-action", children: [
u(
              "button",
              {
                class: "btn btn-sm btn-ghost",
                onClick: handleTimeoutStop,
                children: t("Stop Fetch")
              }
            ),
u(
              "button",
              {
                class: "btn btn-sm btn-primary",
                onClick: handleTimeoutGenerateToken,
                children: [
u(IconKey, { size: 16 }),
                  t("Generate Auth Token")
                ]
              }
            )
          ] })
        ] }) }),
u(Modal, { show: showUpdateConfirmModal.value, onClose: cancelUpdate, title: t("Update"), class: "max-w-sm", children: u("div", { class: "space-y-2", children: [
u("p", { class: `text-sm${isArabic ? " text-right" : ""}`, dir: isArabic ? "rtl" : void 0, children: t("Update will fetch the latest data and overwrite the database. Continue?") }),
u("div", { class: "modal-action", children: [
u(
              "button",
              {
                class: "btn btn-sm btn-ghost",
                onClick: cancelUpdate,
                children: t("Cancel")
              }
            ),
u(
              "button",
              {
                class: "btn btn-sm btn-warning",
                onClick: confirmUpdate,
                children: [
u(IconCloudUp, { size: 16 }),
                  t("Update")
                ]
              }
            )
          ] })
        ] }) })
      ] });
    }
    const handleExternalConvert = async () => {
      const rawUsername = detectedUsername.value || "";
      if (!rawUsername) {
        errorMessage.value = t("Please visit a profile page for auto-detection");
        setTimeout(() => errorMessage.value = "", 2e3);
        return;
      }
      const authSettings = await mediaDownloaderDB.getAuthSettings();
      if (!authSettings) {
        errorMessage.value = t("Please configure authentication in the Auth tab first");
        setTimeout(() => errorMessage.value = "", 2e3);
        return;
      }
      const cleanUsername = mediaDownloaderAPI.formatUsername(rawUsername);
      if (!mediaDownloaderAPI.validateUsername(cleanUsername)) {
        errorMessage.value = t("Invalid username format");
        setTimeout(() => errorMessage.value = "", 2e3);
        return;
      }
      const patreonAuth = authSettings.patreon_auth || "";
      const authToken = authSettings.auth_token || "";
      if (!patreonAuth || !authToken) {
        errorMessage.value = t("Please configure authentication in the Auth tab first");
        setTimeout(() => errorMessage.value = "", 2e3);
        return;
      }
      let url;
      if (patreonAuth.trim() === "xbatchdemo") {
        url = `https://convert.exyezed.cc/demo/xbatchdemo/${encodeURIComponent(authToken)}/xbatchdemo`;
      } else {
        url = `https://convert.exyezed.cc/${encodeURIComponent(patreonAuth)}/${encodeURIComponent(authToken)}/${encodeURIComponent(cleanUsername)}`;
      }
      window.open(url, "_blank", "noopener,noreferrer");
    };
    return u("div", { class: "space-y-4", children: [
u("div", { class: "space-y-4", children: [
        isRetrying.value && u("div", { role: "alert", class: "alert alert-info alert-soft", children: [
u("span", { class: "loading loading-spinner loading-sm" }),
u("span", { dir: isArabic ? "rtl" : void 0, children: [
            t("Generating token..."),
            " ",
            retryTokenTotal.value > 0 && `(${retryTokenCurrent.value}/${retryTokenTotal.value})`
          ] })
        ] }),
u("div", { role: "alert", class: `alert alert-soft ${!authState.patreonVerified.value ? "alert-warning" : "alert-info"}`, children: [
          !authState.patreonVerified.value ? u(IconAlertTriangle, { size: 20 }) : u(IconUserFilled, { size: 20 }),
u("div", { class: "flex-1", dir: isArabic ? "rtl" : void 0, children: !authState.patreonVerified.value ? u("div", { children: t("Please verify Patreon auth first") }) : detectedUsername.value ? u("div", { children: u("span", { dir: "ltr", children: [
            "@",
            detectedUsername.value
          ] }) }) : u("div", { class: "font-semibold", children: t("Please visit a profile page for auto-detection") }) }),
          detectedUsername.value && hasDBData.value && authState.patreonVerified.value && u("div", { class: "tooltip tooltip-left", "data-tip": t("Load from database"), children: u(
            "button",
            {
              class: "btn btn-sm btn-square btn-soft btn-info",
              onClick: handleLoadFromDatabase,
              disabled: isLoadingFromDB.value || !detectedUsername.value,
              "aria-label": t("Load from database"),
              children: isLoadingFromDB.value ? u("span", { class: "loading loading-spinner loading-xs" }) : u(IconDatabaseImport, { size: 16 })
            }
          ) })
        ] }),
u("div", { class: "collapse collapse-arrow bg-base-200 border border-base-300 rounded-box", children: [
u(
            "input",
            {
              type: "checkbox",
              checked: advancedSettingsOpen.value,
              onChange: (e) => {
                advancedSettingsOpen.value = e.target.checked;
              }
            }
          ),
u("div", { class: "collapse-title text-sm font-medium", children: t("Advanced Settings") }),
u("div", { class: "collapse-content", children: u("div", { class: "space-y-4 pt-2", children: [
u("div", { class: "flex items-center justify-between", children: [
u("span", { class: "text-sm", children: t("Media") }),
u(
                "select",
                {
                  class: "select select-bordered select-sm w-32",
                  value: mediaType.value,
                  onChange: (e) => {
                    playClickSound();
                    const value = e.target.value;
                    mediaType.value = value;
                    appOptionsManager.set("mediaType", value);
                  },
                  children: [
u("option", { value: "all", children: t("All") }),
u("option", { value: "image", children: t("Image") }),
u("option", { value: "video", children: t("Video") }),
u("option", { value: "gif", children: t("GIF") }),
u("option", { value: "text", children: t("Text") })
                  ]
                }
              )
            ] }),
u("div", { class: "flex justify-between items-center", children: [
u("span", { class: "text-sm", children: t("Include Retweets") }),
u(
                "input",
                {
                  type: "checkbox",
                  class: "toggle toggle-primary",
                  checked: appOptionsManager.get("includeRetweets") ?? false,
                  onChange: (e) => {
                    const checked = e.target.checked;
                    checked ? playToggleOnSound() : playToggleOffSound();
                    appOptionsManager.set("includeRetweets", checked);
                  }
                }
              )
            ] }),
u("div", { class: "relative", children: [
              (dateSince.value || dateUntil.value) && u(
                "button",
                {
                  class: "btn btn-circle btn-xs btn-error absolute -top-2 -right-2 z-10",
                  onClick: () => {
                    dateSince.value = "";
                    dateUntil.value = "";
                  },
                  "aria-label": t("Clear dates"),
                  children: u(IconX, { size: 12 })
                }
              ),
u("div", { class: "card bg-base-100 card-border", children: u("div", { class: "card-body p-4", children: [
u("div", { class: "grid grid-cols-2 gap-3", children: [
u("div", { class: "form-control", children: [
u("label", { class: "label py-1", children: u("span", { class: "label-text text-xs", children: t("Date Since") }) }),
u(
                      "input",
                      {
                        type: "date",
                        class: "input input-sm input-bordered w-full",
                        value: dateSince.value,
                        onInput: (e) => {
                          dateSince.value = e.target.value;
                        },
                        placeholder: "YYYY-MM-DD"
                      }
                    )
                  ] }),
u("div", { class: "form-control", children: [
u("label", { class: "label py-1", children: u("span", { class: "label-text text-xs", children: t("Date Until") }) }),
u(
                      "input",
                      {
                        type: "date",
                        class: "input input-sm input-bordered w-full",
                        value: dateUntil.value,
                        onInput: (e) => {
                          dateUntil.value = e.target.value;
                        },
                        placeholder: "YYYY-MM-DD"
                      }
                    )
                  ] })
                ] }),
                (dateSince.value || dateUntil.value) && u("div", { class: "flex items-center gap-1 text-xs opacity-60 mt-1", children: [
u(IconInfoCircle, { size: 14 }),
u("span", { children: t("Empty dates will fetch all available media") })
                ] })
              ] }) })
            ] })
          ] }) })
        ] }),
u("div", { class: "flex flex-col items-center gap-2", children: [
u("div", { class: "join", children: isLoading.value && !isRetrying.value ? u(preact.Fragment, { children: [
u(
              "button",
              {
                class: "btn btn-sm join-item btn-neutral",
                disabled: true,
                children: [
u("span", { class: "loading loading-spinner loading-xs" }),
u("span", { children: t("Fetching...") })
                ]
              }
            ),
u(
              "button",
              {
                class: "btn btn-sm join-item btn-error",
                onClick: async () => {
                  if (fetchAbortController.value) {
                    fetchAbortController.value.abort();
                    fetchAbortController.value = null;
                  }
                  if (dashboardState.aggregatedTimeline.value.length > 0 && accountData.value) {
                    try {
                      const cleanUsername = mediaDownloaderAPI.formatUsername(detectedUsername.value || "");
                      const batchMode = dateSince.value || dateUntil.value ? "date_range" : void 0;
                      await mediaDownloaderDB.saveAccount({
                        username: cleanUsername,
                        account_info: accountData.value.account_info,
                        metadata: {
                          ...accountData.value.metadata,
                          new_entries: dashboardState.aggregatedTimeline.value.length
                        },
                        timeline: dashboardState.aggregatedTimeline.value,
                        batch_mode: batchMode,
                        batch_identifier: void 0,
media_type: mediaType.value,
                        date_since: dateSince.value || void 0,
                        date_until: dateUntil.value || void 0
                      });
                      await checkDBData(cleanUsername);
                    } catch (error) {
                    }
                  }
                  isLoading.value = false;
                  currentFetchTotal.value = 0;
                  mediaIncrement.value = 0;
                  if (incrementTimeoutRef.value !== null) {
                    clearTimeout(incrementTimeoutRef.value);
                    incrementTimeoutRef.value = null;
                  }
                },
                children: [
u(IconPlayerStop, { size: 16 }),
                  t("Stop")
                ]
              }
            )
          ] }) : u(preact.Fragment, { children: [
u("div", { class: "join", children: [
              hasResumeCursor.value && u(
                "button",
                {
                  class: "btn btn-info btn-sm join-item",
                  onClick: handleResume,
                  disabled: !detectedUsername.value || !authState.patreonVerified.value || isLoading.value,
                  children: [
u(IconRefresh, { size: 16 }),
                    t("Resume")
                  ]
                }
              ),
u(
                "button",
                {
                  class: `btn btn-sm join-item ${isRetrying.value ? "btn-error" : "btn-neutral"}`,
                  onClick: () => isRetrying.value ? stopRetry() : handleFetchMedia(),
                  disabled: !detectedUsername.value || !authState.patreonVerified.value,
                  children: (() => {
                    if (isRetrying.value) {
                      return u(preact.Fragment, { children: [
u(IconPlayerStop, { size: 16 }),
                        t("Abort")
                      ] });
                    }
                    const fetchKey = mediaType.value === "all" ? "Fetch All" : mediaType.value === "video" ? "Fetch Video" : mediaType.value === "image" ? "Fetch Image" : mediaType.value === "gif" ? "Fetch GIF" : mediaType.value === "text" ? "Fetch Text" : "Fetch";
                    return u(preact.Fragment, { children: [
u(IconCloudDown, { size: 16 }),
                      t(fetchKey)
                    ] });
                  })()
                }
              )
            ] }),
            convertGifsExternal.value ? u(
              "button",
              {
                class: "btn btn-accent btn-sm join-item",
                onClick: handleExternalConvert,
                disabled: !detectedUsername.value || !authState.patreonVerified.value,
                children: [
u(IconPhotoEdit, { size: 16 }),
                  t("Convert Animated GIFs")
                ]
              }
            ) : null
          ] }) }),
          isLoading.value && u("div", { class: "flex items-center gap-1 text-xs opacity-60", children: [
u("span", { class: "font-mono", children: formatTime(fetchElapsedSeconds.value) }),
u("span", { children: "/" }),
u("span", { class: "font-mono", children: formatTime(getRemainingTime()) }),
            currentFetchTotal.value > 0 && u(preact.Fragment, { children: [
u("span", { class: "opacity-50", children: "•" }),
u("span", { children: [
                currentFetchTotal.value,
                " items"
              ] })
            ] })
          ] })
        ] }),
        errorMessage.value && u("div", { role: "alert", class: "alert alert-error alert-soft", children: [
u(IconCircleX, { size: 20 }),
u("span", { dir: isArabic ? "rtl" : void 0, children: errorMessage.value })
        ] })
      ] }),
u(Modal, { show: showOverwriteModal.value, onClose: cancelOverwrite, title: t("Overwrite Existing Data?"), class: "max-w-sm", children: u("div", { class: "space-y-2", children: [
u("p", { class: `text-sm${isArabic ? " text-right" : ""}`, dir: isArabic ? "rtl" : void 0, children: t("Account data for @{{username}} already exists in the database. Do you want to overwrite it?", { username: pendingFetchUsername.value }) }),
u("div", { class: "modal-action", children: [
u(
            "button",
            {
              class: "btn btn-sm btn-ghost",
              onClick: cancelOverwrite,
              children: t("Cancel")
            }
          ),
u(
            "button",
            {
              class: "btn btn-sm btn-warning",
              onClick: confirmOverwrite,
              children: [
u(IconWriting, { size: 16 }),
                t("Overwrite")
              ]
            }
          )
        ] })
      ] }) })
    ] });
  }
  function ViewDatabaseModal({ isOpen, onClose, account, onDeleteEntry, onLoadDatabase }) {
    const { t } = useTranslation();
    const typeFilter = signals.useSignal("all");
    const currentPage = signals.useSignal(1);
    const deletingEntry = signals.useSignal("");
    const previewUrl = signals.useSignal("");
    const previewType = signals.useSignal("");
    const previewIndex = signals.useSignal(-1);
    const touchStartX = hooks.useRef(0);
    const touchEndX = hooks.useRef(0);
    const previousAccountId = hooks.useRef(void 0);
    const downloadingFiles = signals.useSignal( new Set());
    const convertingFiles = signals.useSignal( new Set());
    const isCopied = signals.useSignal(false);
    const failedThumbnails = signals.useSignal( new Set());
    hooks.useEffect(() => {
      if (account?.id !== previousAccountId.current) {
        typeFilter.value = "all";
        currentPage.value = 1;
        previousAccountId.current = account?.id;
      }
    }, [account?.id]);
    if (!account) return null;
    const ITEMS_PER_PAGE = 5;
    const filteredTimeline = typeFilter.value === "all" ? account.timeline : account.timeline.filter((item) => item.type === typeFilter.value);
    const totalPages = Math.ceil(filteredTimeline.length / ITEMS_PER_PAGE);
    const photoCount = account.timeline.filter((i) => i.type === "photo").length;
    const videoCount = account.timeline.filter((i) => i.type === "video").length;
    const gifCount = account.timeline.filter((i) => i.type === "animated_gif").length;
    const handleTypeFilter = (type) => {
      typeFilter.value = type;
      currentPage.value = 1;
    };
    const handleOpenFile = (url) => {
      window.open(url, "_blank", "noopener,noreferrer");
    };
    const handleOpenPreview = (item, itemIndex) => {
      previewIndex.value = itemIndex;
      previewType.value = item.type;
      previewUrl.value = item.type === "text" ? "text" : item.url;
    };
    const handleCopyText = async (text) => {
      try {
        await navigator.clipboard.writeText(text);
        playSuccessSound();
        isCopied.value = true;
        setTimeout(() => {
          isCopied.value = false;
        }, 500);
      } catch (err) {
        const textArea = document.createElement("textarea");
        textArea.value = text;
        textArea.style.position = "fixed";
        textArea.style.opacity = "0";
        document.body.appendChild(textArea);
        textArea.select();
        try {
          document.execCommand("copy");
          playSuccessSound();
          isCopied.value = true;
          setTimeout(() => {
            isCopied.value = false;
          }, 500);
        } catch (e) {
          playErrorSound();
        }
        document.body.removeChild(textArea);
      }
    };
    const handleDownloadFile = async (url, date, type, tweetId, content) => {
      const fileKey = `${tweetId}_${url || "text"}`;
      if (downloadingFiles.value.has(fileKey)) {
        return;
      }
      try {
        downloadingFiles.value = new Set([...downloadingFiles.value, fileKey]);
        let finalBlob;
        let ext = "jpg";
        if (type === "text") {
          const textContent = content || "";
          finalBlob = new Blob([textContent], { type: "text/plain;charset=utf-8" });
          ext = "txt";
        } else {
          const shouldConvertGif = type === "animated_gif" && (appOptionsManager.get("convertAnimatedGifs") ?? true);
          if (shouldConvertGif) {
            convertingFiles.value = new Set([...convertingFiles.value, fileKey]);
            try {
              const gifBlob = await convertVideoToGif(url);
              if (gifBlob) {
                finalBlob = gifBlob;
                ext = "gif";
              } else {
                const response = await fetch(url);
                finalBlob = await response.blob();
                ext = "mp4";
              }
            } catch (error) {
              const response = await fetch(url);
              finalBlob = await response.blob();
              ext = "mp4";
            } finally {
              convertingFiles.value = new Set([...convertingFiles.value].filter((k) => k !== fileKey));
            }
          } else {
            const response = await fetch(url);
            finalBlob = await response.blob();
            if (type === "photo") {
              const photoMatch = url.match(/format=(\w+)/);
              ext = photoMatch?.[1] || "jpg";
            } else if (type === "video") {
              ext = "mp4";
            } else if (type === "animated_gif") {
              ext = "mp4";
            }
          }
        }
        const formatDateForFilename = (dateStr2) => {
          const m = dateStr2.match(/(\d{4})-(\d{2})-(\d{2}).*?(\d{2}):(\d{2}):(\d{2})/);
          if (m) {
            const [, y, mo, d, h2, mi, s] = m;
            return `${y}${mo}${d}_${h2}${mi}${s}`;
          }
          const d2 = new Date(dateStr2);
          if (!isNaN(d2.getTime())) {
            const pad = (n) => String(n).padStart(2, "0");
            return `${d2.getFullYear()}${pad(d2.getMonth() + 1)}${pad(d2.getDate())}_${pad(d2.getHours())}${pad(d2.getMinutes())}${pad(d2.getSeconds())}`;
          }
          return dateStr2.replace(/\D/g, "");
        };
        const dateStr = formatDateForFilename(date);
        const filename = `${account.username}_${dateStr}_${tweetId}.${ext}`;
        const link = document.createElement("a");
        link.href = URL.createObjectURL(finalBlob);
        link.download = filename;
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
        URL.revokeObjectURL(link.href);
      } catch (error) {
      } finally {
        downloadingFiles.value = new Set([...downloadingFiles.value].filter((k) => k !== fileKey));
      }
    };
    const convertVideoToGif = (videoUrl) => {
      return new Promise((resolve) => {
        if (!gifshot.isExistingVideoGIFSupported()) {
          resolve(null);
          return;
        }
        const gifOptions = getGifShotOptions();
        {
          getVideoDimensions(videoUrl).then(({ width, height }) => {
            gifshot.createGIF({
              video: videoUrl,
              gifWidth: width,
              gifHeight: height,
              ...gifOptions
            }, (obj) => {
              handleGifConversionResult(obj, resolve);
            });
          }).catch((error) => {
            gifshot.createGIF({
              video: videoUrl,
              ...gifOptions
            }, (obj) => {
              handleGifConversionResult(obj, resolve);
            });
          });
        }
      });
    };
    const handleGifConversionResult = (obj, resolve) => {
      if (obj.error) {
        resolve(null);
      } else if (obj.image) {
        try {
          const dataUrl = obj.image;
          const base64Data = dataUrl.split(",")[1];
          if (!base64Data) {
            resolve(null);
            return;
          }
          const byteCharacters = atob(base64Data);
          const byteNumbers = new Array(byteCharacters.length);
          for (let i = 0; i < byteCharacters.length; i++) {
            byteNumbers[i] = byteCharacters.charCodeAt(i);
          }
          const byteArray = new Uint8Array(byteNumbers);
          const blob = new Blob([byteArray], { type: "image/gif" });
          resolve(blob);
        } catch (error) {
          resolve(null);
        }
      } else {
        resolve(null);
      }
    };
    const getVideoDimensions = (videoUrl) => {
      return new Promise((resolve, reject) => {
        const video = document.createElement("video");
        video.crossOrigin = "anonymous";
        video.onloadedmetadata = () => {
          const width = video.videoWidth;
          const height = video.videoHeight;
          video.remove();
          if (width && height) {
            resolve({ width, height });
          } else {
            reject(new Error("Could not determine video dimensions"));
          }
        };
        video.onerror = () => {
          video.remove();
          reject(new Error("Failed to load video for dimension detection"));
        };
        video.src = videoUrl;
      });
    };
    const handleDeleteEntry = async (tweetId, url) => {
      const key = `${tweetId}|${url}`;
      deletingEntry.value = key;
      try {
        await onDeleteEntry(tweetId, url);
      } finally {
        deletingEntry.value = "";
      }
    };
    const getTypeIcon = (type) => {
      switch (type) {
        case "photo":
          return u(IconPhoto, { size: 24 });
        case "video":
          return u(IconVideo, { size: 24 });
        case "animated_gif":
          return u(IconGif, { size: 24 });
        case "text":
          return u(IconFileText, { size: 24 });
        default:
          return null;
      }
    };
    const formatDate = (timestamp) => {
      const fmt = appOptionsManager.get("dateTimeFormat") || "YYYY-MM-DD HH:mm:ss";
      return dayjs(timestamp).format(fmt);
    };
    const formatTimeAgo = (timestamp) => {
      const now = dayjs();
      const then = dayjs(timestamp);
      const diff = now.diff(then, "second");
      const years = Math.floor(diff / (365 * 24 * 60 * 60));
      const days = Math.floor(diff % (365 * 24 * 60 * 60) / (24 * 60 * 60));
      const hours = Math.floor(diff % (24 * 60 * 60) / (60 * 60));
      const minutes = Math.floor(diff % (60 * 60) / 60);
      const seconds = diff % 60;
      const parts = [];
      if (years > 0) parts.push(`${years}y`);
      if (days > 0) parts.push(`${days}d`);
      if (hours > 0) parts.push(`${hours}h`);
      if (minutes > 0) parts.push(`${minutes}m`);
      if (seconds > 0 && parts.length === 0) parts.push(`${seconds}s`);
      return parts.slice(0, 2).join(" ") + " ago";
    };
    const formatNumber = (num) => {
      if (num === void 0 || num === null) return "0";
      if (num >= 1e6) {
        return (num / 1e6).toFixed(1) + "M";
      }
      if (num >= 1e3) {
        return (num / 1e3).toFixed(1) + "K";
      }
      return num.toString();
    };
    const getThumbnailUrl = (url, type, tweetId) => {
      if (!url) return url;
      if (type === "animated_gif" && url.includes("tweet_video/")) {
        const match = url.match(/tweet_video\/([^\/\.]+)/);
        if (match && match[1]) {
          return `https://pbs.twimg.com/tweet_video_thumb/${match[1]}?format=jpg&name=360x360`;
        }
      }
      if (url.includes("name=orig")) {
        return url.replace("name=orig", "name=360x360");
      }
      if (url.includes("name=large")) {
        return url.replace("name=large", "name=360x360");
      }
      if (url.includes("name=medium")) {
        return url.replace("name=medium", "name=360x360");
      }
      if (url.includes("name=thumb")) {
        return url.replace("name=thumb", "name=360x360");
      }
      if (url.includes("pbs.twimg.com/media/")) {
        const separator = url.includes("?") ? "&" : "?";
        return `${url}${separator}name=360x360`;
      }
      return url;
    };
    const handleSwipeLeft = () => {
      if (previewIndex.value < filteredTimeline.length - 1) {
        const nextItem = filteredTimeline[previewIndex.value + 1];
        if (nextItem) {
          previewIndex.value = previewIndex.value + 1;
          previewType.value = nextItem.type;
          previewUrl.value = nextItem.type === "text" ? "text" : nextItem.url;
        }
      }
    };
    const handleSwipeRight = () => {
      if (previewIndex.value > 0) {
        const prevItem = filteredTimeline[previewIndex.value - 1];
        if (prevItem) {
          previewIndex.value = previewIndex.value - 1;
          previewType.value = prevItem.type;
          previewUrl.value = prevItem.type === "text" ? "text" : prevItem.url;
        }
      }
    };
    const handleTouchStart = (e) => {
      if (e.touches[0]) {
        touchStartX.current = e.touches[0].clientX;
        touchEndX.current = e.touches[0].clientX;
      }
    };
    const handleTouchMove = (e) => {
      if (e.touches[0]) {
        touchEndX.current = e.touches[0].clientX;
      }
    };
    const handleTouchEnd = () => {
      if (touchStartX.current === 0 || touchEndX.current === 0) {
        touchStartX.current = 0;
        touchEndX.current = 0;
        return;
      }
      const swipeThreshold = 50;
      const diff = touchStartX.current - touchEndX.current;
      if (Math.abs(diff) > swipeThreshold) {
        if (diff > 0) {
          handleSwipeLeft();
        } else {
          handleSwipeRight();
        }
      }
      touchStartX.current = 0;
      touchEndX.current = 0;
    };
    hooks.useEffect(() => {
      if (!previewUrl.value && previewType.value !== "text") return;
      const handleKeyDown = (e) => {
        if (e.key === "ArrowLeft" && previewIndex.value > 0) {
          const prevItem = filteredTimeline[previewIndex.value - 1];
          if (prevItem) {
            previewIndex.value = previewIndex.value - 1;
            previewType.value = prevItem.type;
            previewUrl.value = prevItem.type === "text" ? "text" : prevItem.url;
          }
        } else if (e.key === "ArrowRight" && previewIndex.value < filteredTimeline.length - 1) {
          const nextItem = filteredTimeline[previewIndex.value + 1];
          if (nextItem) {
            previewIndex.value = previewIndex.value + 1;
            previewType.value = nextItem.type;
            previewUrl.value = nextItem.type === "text" ? "text" : nextItem.url;
          }
        } else if (e.key === "Escape") {
          previewUrl.value = "";
          previewType.value = "";
          previewIndex.value = -1;
        }
      };
      window.addEventListener("keydown", handleKeyDown);
      return () => window.removeEventListener("keydown", handleKeyDown);
    }, [previewUrl.value, previewType.value, previewIndex.value, filteredTimeline]);
    return u(preact.Fragment, { children: [
u(Modal, { show: isOpen, onClose, title: t("Database"), children: u("div", { class: "space-y-4", children: [
u("div", { class: "card bg-base-200 border border-base-300", children: u("div", { class: "card-body p-4", children: u("div", { class: "flex items-center gap-4", children: [
u("div", { class: "avatar", children: u("div", { class: "w-16 rounded-box", children: u(
            "img",
            {
              src: account.account_info.profile_image,
              alt: account.account_info.nick,
              onError: (e) => {
                const target = e.target;
                target.src = 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="gray"%3E%3Ccircle cx="12" cy="12" r="10"/%3E%3C/svg%3E';
              }
            }
          ) }) }),
u("div", { class: "grow", children: [
u("h3", { class: "font-semibold text-base", children: [
              account.account_info.nick,
              " ",
u("span", { class: "font-normal opacity-70", children: [
                "(@",
                account.username,
                ")"
              ] })
            ] }),
u("p", { class: "text-xs opacity-60 mb-1", children: [
u("span", { class: "font-bold", children: t("Joined") }),
              " ",
              formatDateTime(account.account_info.date, appOptionsManager.get("dateTimeFormat") || "YYYY-MM-DD HH:mm:ss")
            ] }),
u("div", { class: "flex gap-3 text-xs opacity-60", children: [
u("span", { children: [
u("span", { class: "font-bold", children: account.account_info.statuses_count.toLocaleString() }),
                " ",
                t("Posts")
              ] }),
u("span", { children: [
u("span", { class: "font-bold", children: account.account_info.followers_count.toLocaleString() }),
                " ",
                t("Followers")
              ] }),
u("span", { children: [
u("span", { class: "font-bold", children: account.account_info.friends_count.toLocaleString() }),
                " ",
                t("Following")
              ] })
            ] })
          ] }),
          onLoadDatabase && u("div", { class: "tooltip tooltip-left", "data-tip": t("Load Database"), children: u(
            "button",
            {
              class: "btn btn-sm btn-square btn-soft btn-info",
              onClick: onLoadDatabase,
              "aria-label": t("Load Database"),
              children: u(IconDatabaseImport, { size: 16 })
            }
          ) })
        ] }) }) }),
        account.media_type === "all" && u("div", { class: "flex items-center gap-2 justify-between", children: [
u("div", { class: "flex items-center gap-2", children: [
u("div", { class: "tooltip", "data-tip": `${t("All")} (${account.timeline.length.toLocaleString()})`, children: u(
              "button",
              {
                class: `btn btn-sm btn-square ${typeFilter.value === "all" ? "btn-neutral" : "btn-ghost"}`,
                onClick: () => handleTypeFilter("all"),
                "aria-label": t("All"),
                children: u(IconLibraryPhoto, { size: 18 })
              }
            ) }),
            photoCount > 0 && u("div", { class: "tooltip", "data-tip": `${t("Image")} (${photoCount.toLocaleString()})`, children: u(
              "button",
              {
                class: `btn btn-sm btn-square ${typeFilter.value === "photo" ? "btn-primary" : "btn-ghost"}`,
                onClick: () => handleTypeFilter("photo"),
                "aria-label": t("Image"),
                children: u(IconPhoto, { size: 18 })
              }
            ) }),
            videoCount > 0 && u("div", { class: "tooltip", "data-tip": `${t("Video")} (${videoCount.toLocaleString()})`, children: u(
              "button",
              {
                class: `btn btn-sm btn-square ${typeFilter.value === "video" ? "btn-secondary" : "btn-ghost"}`,
                onClick: () => handleTypeFilter("video"),
                "aria-label": t("Video"),
                children: u(IconVideo, { size: 18 })
              }
            ) }),
            gifCount > 0 && u("div", { class: "tooltip", "data-tip": `${t("GIF")} (${gifCount.toLocaleString()})`, children: u(
              "button",
              {
                class: `btn btn-sm btn-square ${typeFilter.value === "animated_gif" ? "btn-accent" : "btn-ghost"}`,
                onClick: () => handleTypeFilter("animated_gif"),
                "aria-label": t("GIF"),
                children: u(IconGif, { size: 18 })
              }
            ) })
          ] }),
          totalPages > 1 && u("div", { class: "join", children: [
u("div", { class: "tooltip tooltip-left", "data-tip": t("First Page"), children: u(
              "button",
              {
                class: "join-item btn btn-sm",
                onClick: () => currentPage.value = 1,
                disabled: currentPage.value === 1,
                "aria-label": t("First Page"),
                children: "«"
              }
            ) }),
u("div", { class: "tooltip tooltip-left", "data-tip": t("Last Page"), children: u(
              "button",
              {
                class: "join-item btn btn-sm",
                onClick: () => currentPage.value = totalPages,
                disabled: currentPage.value === totalPages,
                "aria-label": t("Last Page"),
                children: "»"
              }
            ) })
          ] })
        ] }),
        account.media_type !== "all" && totalPages > 1 && u("div", { class: "flex justify-start", children: u("div", { class: "join", children: [
u("div", { class: "tooltip tooltip-right", "data-tip": t("First Page"), children: u(
            "button",
            {
              class: "join-item btn btn-sm",
              onClick: () => currentPage.value = 1,
              disabled: currentPage.value === 1,
              "aria-label": t("First Page"),
              children: "«"
            }
          ) }),
u("div", { class: "tooltip tooltip-right", "data-tip": t("Last Page"), children: u(
            "button",
            {
              class: "join-item btn btn-sm",
              onClick: () => currentPage.value = totalPages,
              disabled: currentPage.value === totalPages,
              "aria-label": t("Last Page"),
              children: "»"
            }
          ) })
        ] }) }),
u("div", { class: "space-y-4", children: (() => {
          const page = currentPage.value;
          const startIndex = (page - 1) * ITEMS_PER_PAGE;
          const endIndex = startIndex + ITEMS_PER_PAGE;
          const items = filteredTimeline.slice(startIndex, endIndex);
          return items.map((item) => {
            const key = `${item.tweet_id}|${item.url}`;
            const fileKey = `${item.tweet_id}_${item.url}`;
            const isDeleting = deletingEntry.value === key;
            const isDownloading = downloadingFiles.value.has(fileKey);
            const isConverting = convertingFiles.value.has(fileKey);
            return u("div", { class: "relative w-full", children: [
u(
                "button",
                {
                  class: "btn btn-circle btn-xs btn-error absolute -top-2 -right-2 z-10",
                  onClick: () => handleDeleteEntry(item.tweet_id, item.url),
                  disabled: isDeleting || isDownloading,
                  children: isDeleting ? u("span", { class: "loading loading-spinner loading-xs" }) : u(IconTrash, { size: 12 })
                }
              ),
u("div", { class: "card bg-base-200 border border-base-300", children: u("div", { class: "card-body p-3", children: u("div", { class: "flex items-center gap-3", children: [
u("div", { class: "shrink-0", children: (item.type === "photo" || item.type === "animated_gif") && !failedThumbnails.value.has(item.url) ? u(
                  "div",
                  {
                    class: "w-12 h-12 rounded overflow-hidden bg-base-300 flex items-center justify-center relative cursor-pointer hover:opacity-80 transition-opacity",
                    onClick: () => {
                      const itemIndex = filteredTimeline.findIndex((i) => `${i.tweet_id}|${i.url}` === key);
                      if (item.type === "text") {
                        handleOpenPreview(item, itemIndex);
                      } else if (item.url) {
                        handleOpenFile(item.url);
                      }
                    },
                    role: "button",
                    tabIndex: 0,
                    onKeyDown: (e) => {
                      if (e.key === "Enter" || e.key === " ") {
                        e.preventDefault();
                        const itemIndex = filteredTimeline.findIndex((i) => `${i.tweet_id}|${i.url}` === key);
                        if (item.type === "text") {
                          handleOpenPreview(item, itemIndex);
                        } else if (item.url) {
                          handleOpenFile(item.url);
                        }
                      }
                    },
                    children: [
u(
                        "img",
                        {
                          src: getThumbnailUrl(item.url, item.type, item.tweet_id),
                          alt: "Thumbnail",
                          class: "w-full h-full object-cover",
                          loading: "lazy",
                          onError: () => {
                            failedThumbnails.value = new Set([...failedThumbnails.value, item.url]);
                          }
                        }
                      ),
                      item.type === "animated_gif" && u("div", { class: "absolute inset-0 flex items-center justify-center bg-black/30", children: u(IconGif, { size: 16, class: "text-white" }) })
                    ]
                  }
                ) : u(
                  "div",
                  {
                    class: `w-12 h-12 rounded flex items-center justify-center cursor-pointer hover:opacity-80 transition-opacity ${item.type === "photo" ? "bg-primary/20" : item.type === "video" ? "bg-secondary/20" : item.type === "text" ? "bg-warning/20" : "bg-accent/20"}`,
                    onClick: () => {
                      const itemIndex = filteredTimeline.findIndex((i) => `${i.tweet_id}|${i.url}` === key);
                      if (item.type === "text") {
                        handleOpenPreview(item, itemIndex);
                      } else if (item.url) {
                        handleOpenFile(item.url);
                      }
                    },
                    role: "button",
                    tabIndex: 0,
                    onKeyDown: (e) => {
                      if (e.key === "Enter" || e.key === " ") {
                        e.preventDefault();
                        const itemIndex = filteredTimeline.findIndex((i) => `${i.tweet_id}|${i.url}` === key);
                        if (item.type === "text") {
                          handleOpenPreview(item, itemIndex);
                        } else if (item.url) {
                          handleOpenFile(item.url);
                        }
                      }
                    },
                    children: u("div", { class: `${item.type === "photo" ? "text-primary" : item.type === "video" ? "text-secondary" : item.type === "text" ? "text-warning" : "text-accent"}`, children: getTypeIcon(item.type) })
                  }
                ) }),
u("div", { class: "grow min-w-0", children: [
u(
                    "a",
                    {
                      class: "link link-hover text-sm font-mono",
                      href: `https://x.com/${account.username}/status/${item.tweet_id}`,
                      target: "_blank",
                      rel: "noopener noreferrer",
                      children: item.tweet_id
                    }
                  ),
u("p", { class: "text-xs opacity-60", children: [
                    formatDate(item.date),
                    " (",
                    formatTimeAgo(item.date),
                    ")"
                  ] })
                ] }),
u("div", { class: "shrink-0 flex items-center gap-1", children: [
u("div", { class: "tooltip tooltip-left", "data-tip": t("Preview"), children: u(
                    "button",
                    {
                      class: "btn btn-xs btn-square",
                      onClick: () => {
                        const itemIndex = filteredTimeline.findIndex((i) => `${i.tweet_id}|${i.url}` === key);
                        previewIndex.value = itemIndex;
                        previewType.value = item.type;
                        previewUrl.value = item.type === "text" ? "text" : item.url;
                      },
                      "aria-label": t("Preview"),
                      disabled: isDeleting,
                      children: u(IconEye, { size: 14 })
                    }
                  ) }),
u("div", { class: "tooltip tooltip-left", "data-tip": isConverting ? t("Converting...") : item.type === "animated_gif" && (appOptionsManager.get("convertAnimatedGifs") ?? true) ? t("Convert & Download") : t("Download"), children: u(
                    "button",
                    {
                      class: `btn btn-xs btn-square ${isConverting ? "btn-warning" : "btn-success"}`,
                      onClick: () => handleDownloadFile(item.url, item.date, item.type, item.tweet_id, "content" in item ? item.content : void 0),
                      "aria-label": isConverting ? t("Converting...") : item.type === "animated_gif" && (appOptionsManager.get("convertAnimatedGifs") ?? true) ? t("Convert & Download") : t("Download"),
                      disabled: isDeleting || isDownloading,
                      children: isDownloading ? u("span", { class: "loading loading-spinner loading-xs" }) : u(IconFileDownload, { size: 14 })
                    }
                  ) })
                ] })
              ] }) }) })
            ] }, key);
          });
        })() }),
        totalPages > 1 && u("div", { class: "flex justify-center", children: u("div", { class: "join", children: [
u(
            "button",
            {
              class: "join-item btn btn-sm",
              onClick: () => currentPage.value = Math.max(1, currentPage.value - 1),
              disabled: currentPage.value === 1,
              children: "«"
            }
          ),
u("button", { class: "join-item btn btn-sm", children: [
            currentPage.value,
            "/",
            totalPages
          ] }),
u(
            "button",
            {
              class: "join-item btn btn-sm",
              onClick: () => currentPage.value = Math.min(totalPages, currentPage.value + 1),
              disabled: currentPage.value === totalPages,
              children: "»"
            }
          )
        ] }) }),
        filteredTimeline.length === 0 && u("div", { class: "text-center py-8 opacity-50", children: u("p", { children: t("No media files found") }) })
      ] }) }),
      (previewUrl.value || previewType.value) && $(
u(
          "div",
          {
            class: "fixed inset-0 bg-black/90 backdrop-blur-sm flex items-center justify-center z-1000 px-4",
            onTouchStart: handleTouchStart,
            onTouchMove: handleTouchMove,
            onTouchEnd: handleTouchEnd,
            children: [
u(
                "button",
                {
                  class: "btn btn-square btn-error absolute top-4 right-4 z-10",
                  onClick: () => {
                    previewUrl.value = "";
                    previewType.value = "";
                    previewIndex.value = -1;
                  },
                  "aria-label": t("Close"),
                  children: u(IconX, { size: 24 })
                }
              ),
              (() => {
                const currentItem = filteredTimeline[previewIndex.value];
                if (currentItem) {
                  return u("div", { class: "absolute top-4 left-1/2 transform -translate-x-1/2 flex flex-wrap items-center justify-center gap-3 px-4 py-2 bg-black/70 backdrop-blur-sm rounded-lg text-xs text-white", children: [
                    currentItem.view_count !== void 0 && u("div", { class: "flex items-center gap-1", children: [
u(IconEye, { size: 14 }),
u("span", { children: formatNumber(currentItem.view_count) })
                    ] }),
                    currentItem.favorite_count !== void 0 && u("div", { class: "flex items-center gap-1", children: [
u("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", children: u("path", { d: "M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z" }) }),
u("span", { children: formatNumber(currentItem.favorite_count) })
                    ] }),
                    currentItem.retweet_count !== void 0 && u("div", { class: "flex items-center gap-1", children: [
u(IconRepeat, { size: 14 }),
u("span", { children: formatNumber(currentItem.retweet_count) })
                    ] }),
                    currentItem.bookmark_count !== void 0 && u("div", { class: "flex items-center gap-1", children: [
u("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", children: u("path", { d: "M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z" }) }),
u("span", { children: formatNumber(currentItem.bookmark_count) })
                    ] }),
                    currentItem.source && u("div", { class: "flex items-center gap-1", children: u("span", { children: currentItem.source }) }),
                    currentItem.tweet_id && u("div", { class: "flex items-center gap-1 opacity-60", children: u("span", { children: currentItem.tweet_id }) })
                  ] });
                }
                return null;
              })(),
u("div", { class: "absolute bottom-4 left-1/2 transform -translate-x-1/2 flex flex-col items-center gap-2", children: [
u("div", { class: "px-4 py-2 bg-black/70 backdrop-blur-sm rounded-lg text-xs text-white", children: u("span", { class: "text-sm", children: [
                  (previewIndex.value + 1).toLocaleString(),
                  " / ",
                  filteredTimeline.length.toLocaleString()
                ] }) }),
                (() => {
                  const currentItem = filteredTimeline[previewIndex.value];
                  if (currentItem) {
                    return u("div", { class: "px-4 py-2 bg-black/70 backdrop-blur-sm rounded-lg text-xs text-white whitespace-nowrap", children: u("span", { class: "text-xs", children: [
                      formatDate(currentItem.date),
                      " (",
                      formatTimeAgo(currentItem.date),
                      ")"
                    ] }) });
                  }
                  return null;
                })()
              ] }),
              previewIndex.value > 0 && u(
                "button",
                {
                  class: "btn btn-circle btn-lg btn-neutral absolute left-4 hidden md:flex",
                  onClick: () => {
                    const prevItem = filteredTimeline[previewIndex.value - 1];
                    if (prevItem) {
                      previewIndex.value = previewIndex.value - 1;
                      previewType.value = prevItem.type;
                      previewUrl.value = prevItem.type === "text" ? "text" : prevItem.url;
                    }
                  },
                  "aria-label": t("Prev"),
                  children: u(IconChevronLeft, { size: 32 })
                }
              ),
              previewIndex.value < filteredTimeline.length - 1 && u(
                "button",
                {
                  class: "btn btn-circle btn-lg btn-neutral absolute right-4 hidden md:flex",
                  onClick: () => {
                    const nextItem = filteredTimeline[previewIndex.value + 1];
                    if (nextItem) {
                      previewIndex.value = previewIndex.value + 1;
                      previewType.value = nextItem.type;
                      previewUrl.value = nextItem.type === "text" ? "text" : nextItem.url;
                    }
                  },
                  "aria-label": t("Next"),
                  children: u(IconChevronRight, { size: 32 })
                }
              ),
              previewType.value === "photo" ? u(
                "img",
                {
                  src: previewUrl.value,
                  alt: "Preview",
                  class: "max-w-full max-h-full object-contain"
                }
              ) : previewType.value === "text" ? u("div", { class: "relative", children: [
                (() => {
                  const currentItem = filteredTimeline[previewIndex.value];
                  if (currentItem && "content" in currentItem && currentItem.content) {
                    return u(
                      "button",
                      {
                        class: `btn btn-sm btn-square absolute -top-2 -right-2 z-10 ${isCopied.value ? "btn-success" : "btn-primary"}`,
                        onClick: () => handleCopyText(currentItem.content),
                        "aria-label": t("Copy"),
                        children: isCopied.value ? u(IconCircleCheck, { size: 16 }) : u(IconCopy, { size: 16 })
                      }
                    );
                  }
                  return null;
                })(),
u("div", { class: "max-w-2xl w-full max-h-[80vh] overflow-auto bg-base-100 rounded-lg p-4 md:p-6", children: (() => {
                  const currentItem = filteredTimeline[previewIndex.value];
                  if (currentItem && "content" in currentItem && currentItem.content) {
                    const linkifyText = (text) => {
                      const urlRegex = /(https?:\/\/[^\s]+|www\.[^\s]+|[a-zA-Z0-9-]+\.[a-zA-Z]{2,}[^\s]*)/g;
                      const parts = text.split(urlRegex);
                      return parts.map((part, index) => {
                        if (urlRegex.test(part)) {
                          let url = part;
                          if (!url.startsWith("http://") && !url.startsWith("https://")) {
                            url = "https://" + url;
                          }
                          return u(
                            "a",
                            {
                              href: url,
                              target: "_blank",
                              rel: "noopener noreferrer",
                              class: "link link-primary break-all",
                              onClick: (e) => {
                                e.stopPropagation();
                                window.open(url, "_blank", "noopener,noreferrer");
                              },
                              children: part
                            },
                            index
                          );
                        }
                        return u("span", { children: part }, index);
                      });
                    };
                    return u("div", { class: "prose prose-sm max-w-none", children: u("p", { class: "whitespace-pre-wrap wrap-break-word", children: linkifyText(currentItem.content) }) });
                  }
                  return u("div", { class: "text-center opacity-50", children: u("p", { children: t("No content available") }) });
                })() })
              ] }) : u(
                "video",
                {
                  src: previewUrl.value,
                  controls: true,
                  autoplay: true,
                  class: "max-w-full max-h-full"
                }
              )
            ]
          }
        ),
        document.getElementById("tmd-root")?.shadowRoot?.getElementById("tmd-portal-root") || document.getElementById("tmd-root")?.shadowRoot || document.body
      )
    ] });
  }
  function Database({ isVisible, onCountChange, onLoadToDashboard } = {}) {
    const { t, i18n } = useTranslation();
    const isArabic = (i18n.language || "").startsWith("ar");
    const allFilteredAccounts = signals.useSignal([]);
    const isLoading = signals.useSignal(true);
    const currentPage = signals.useSignal(1);
    const ITEMS_PER_PAGE = 3;
    const totalCount = signals.useSignal(0);
    const dateRangeCount = signals.useSignal(0);
    const filterByDateRange = signals.useSignal(false);
    const filterByGroup = signals.useSignal(null);
    const showGroupModal = signals.useSignal(false);
    const accountToGroup = signals.useSignal(null);
    const availableGroups = signals.useSignal([]);
    const allAccounts = signals.useSignal([]);
    const newGroupName = signals.useSignal("");
    const totalPages = signals.computed(() => Math.max(1, Math.ceil(allFilteredAccounts.value.length / ITEMS_PER_PAGE)));
    const accounts = signals.computed(() => {
      const startIndex = (currentPage.value - 1) * ITEMS_PER_PAGE;
      const endIndex = startIndex + ITEMS_PER_PAGE;
      return allFilteredAccounts.value.slice(startIndex, endIndex);
    });
    const showDeleteModal = signals.useSignal(false);
    const showClearModal = signals.useSignal(false);
    const accountToDelete = signals.useSignal(null);
    const deletingId = signals.useSignal(null);
    const exportingId = signals.useSignal(null);
    const {
      downloadingId,
      downloadProgress,
      downloadCurrent,
      downloadTotal,
      downloadCurrentFile,
      downloadConverting
    } = databaseDownloadState;
    const viewingAccount = signals.useSignal(null);
    const showViewModal = signals.useSignal(false);
    const isImporting = signals.useSignal(false);
    const isExportingAll = signals.useSignal(false);
    const isClearingAll = signals.useSignal(false);
    const fileInputRef = hooks.useRef(null);
    const selectedAccounts = signals.useSignal( new Set());
    const isBulkDownloading = signals.useSignal(false);
    const dateFormat = signals.useSignal(appOptionsManager.get("dateTimeFormat"));
    hooks.useEffect(() => {
      appOptionsManager.signal.subscribe(() => {
        dateFormat.value = appOptionsManager.get("dateTimeFormat");
      });
    }, []);
    hooks.useEffect(() => {
      if (isVisible !== false) {
        loadAccounts();
      }
    }, [isVisible]);
    hooks.useEffect(() => {
      const unsubscribe = dbState.dbChangeSignal.subscribe(() => {
        loadAccounts();
      });
      return unsubscribe;
    }, []);
    const loadAccounts = async () => {
      try {
        isLoading.value = true;
        const accounts2 = await mediaDownloaderDB.getAllAccounts();
        allAccounts.value = accounts2;
        try {
          const groups = await mediaDownloaderDB.getAllGroups();
          availableGroups.value = groups;
        } catch (error) {
          console.error("Error loading groups:", error);
          availableGroups.value = [];
        }
        let filtered = accounts2;
        if (filterByDateRange.value) {
          filtered = filtered.filter(
            (acc) => acc.date_since && acc.date_until && (acc.batch_mode === "date_range" || acc.batch_mode === "batch_date_range")
          );
        }
        if (filterByGroup.value !== null) {
          if (filterByGroup.value === "") {
            filtered = filtered.filter((acc) => !acc.group);
          } else {
            filtered = filtered.filter((acc) => acc.group === filterByGroup.value);
          }
        }
        totalCount.value = accounts2.length;
        dateRangeCount.value = accounts2.filter(
          (acc) => acc.date_since && acc.date_until && (acc.batch_mode === "date_range" || acc.batch_mode === "batch_date_range")
        ).length;
        filtered.sort((a, b) => b.cached_at - a.cached_at);
        allFilteredAccounts.value = filtered;
        if (currentPage.value > totalPages.value) {
          currentPage.value = 1;
        }
        if (onCountChange) {
          onCountChange(filtered.length);
        }
      } catch (error) {
        console.error("Failed to load accounts:", error);
      } finally {
        isLoading.value = false;
      }
    };
    const processJsonFile = async (text, fileName) => {
      try {
        const data = JSON.parse(text);
        let normalizedBatchMode = void 0;
        if (data.batch_mode === "date_range" || data.batch_mode === "batch_date_range") {
          normalizedBatchMode = "date_range";
        } else if (data.batch_mode === "single" || data.batch_mode === "batch" || data.batch_mode === "auto") {
          normalizedBatchMode = void 0;
        }
        let normalizedMediaType = data.media_type || "all";
        if (normalizedMediaType && !["all", "image", "video", "gif", "text"].includes(normalizedMediaType)) {
          normalizedMediaType = "all";
        }
        const normalizedTimeline = (data.timeline || []).map((item) => ({
          date: item.date,
          tweet_id: item.tweet_id,
          type: item.type,
          url: item.url || "",
          content: item.content,
width: item.width,
          height: item.height,
          view_count: item.view_count,
          bookmark_count: item.bookmark_count,
          favorite_count: item.favorite_count,
          retweet_count: item.retweet_count,
          reply_count: item.reply_count,
          source: item.source
        }));
        const account = {
          username: data.username,
          account_info: data.account_info,
          timeline: normalizedTimeline,
          cached_at: data.cached_at || Date.now(),
          metadata: data.metadata || { new_entries: 0 },
          batch_mode: normalizedBatchMode,
          batch_identifier: data.batch_identifier,
          timeline_type: data.timeline_type,
media_type: normalizedMediaType,
          date_since: data.date_since,
          date_until: data.date_until,
          group: data.group
};
        await mediaDownloaderDB.saveAccount(account);
        playSuccessSound();
      } catch (error) {
        console.error("Failed to process JSON file:", error);
        playErrorSound();
        throw error;
      }
    };
    const importAccounts = async (files) => {
      isImporting.value = true;
      try {
        for (const file of Array.from(files)) {
          if (file.name.toLowerCase().endsWith(".zip")) {
            const arrayBuffer = await file.arrayBuffer();
            const unzipped = await new Promise((resolve, reject) => {
              fflate.unzip(new Uint8Array(arrayBuffer), (err, data) => {
                if (err) reject(err);
                else resolve(data);
              });
            });
            for (const [filename, content] of Object.entries(unzipped)) {
              if (filename.toLowerCase().endsWith(".json")) {
                const text = new TextDecoder().decode(content);
                await processJsonFile(text, filename);
              }
            }
            await loadAccounts();
            playClickSound();
          } else if (file.name.toLowerCase().endsWith(".json")) {
            const text = await file.text();
            await processJsonFile(text, file.name);
            await loadAccounts();
            playClickSound();
          }
        }
      } catch (error) {
        console.error("Failed to import accounts:", error);
        playErrorSound();
      } finally {
        isImporting.value = false;
      }
    };
    const onFilesSelected = async (e) => {
      const input = e.currentTarget;
      const files = input.files;
      if (files && files.length) {
        await importAccounts(files);
      }
    };
    const handleImportClick = () => {
      fileInputRef.current?.click();
    };
    const handleDownloadAccount = async (account) => {
      if (!account.id) return;
      downloadingId.value = account.id;
      databaseDownloadState.resetDownloadState(account.id);
      try {
        const batchMode = account.batch_mode === "date_range" ? "date_range" : void 0;
        const batchInfo = batchMode ? { mode: batchMode, page: 1 } : void 0;
        await mediaDownloader.downloadAccountMedia(account, (progress) => {
          downloadProgress.value = { ...downloadProgress.value, [account.id]: progress.percentage };
          downloadCurrent.value = { ...downloadCurrent.value, [account.id]: progress.current };
          downloadTotal.value = { ...downloadTotal.value, [account.id]: progress.total };
          downloadCurrentFile.value = { ...downloadCurrentFile.value, [account.id]: progress.currentFile || "" };
          downloadConverting.value = { ...downloadConverting.value, [account.id]: progress.converting || false };
        }, batchInfo);
        playSuccessSound();
      } catch (error) {
        if (error?.message !== "Download aborted") {
          playErrorSound();
        }
      } finally {
        databaseDownloadState.clearDownloadState(account.id);
      }
    };
    const handleBulkDownload = async () => {
      if (selectedAccounts.value.size === 0) return;
      isBulkDownloading.value = true;
      const accountsToDownload = allFilteredAccounts.value.filter((acc) => acc.id && selectedAccounts.value.has(acc.id));
      try {
        for (const account of accountsToDownload) {
          if (!account.id) continue;
          downloadingId.value = account.id;
          databaseDownloadState.resetDownloadState(account.id);
          try {
            const batchMode = account.batch_mode === "date_range" ? "date_range" : void 0;
            const batchInfo = batchMode ? { mode: batchMode, page: 1 } : void 0;
            await mediaDownloader.downloadAccountMedia(account, (progress) => {
              downloadProgress.value = { ...downloadProgress.value, [account.id]: progress.percentage };
              downloadCurrent.value = { ...downloadCurrent.value, [account.id]: progress.current };
              downloadTotal.value = { ...downloadTotal.value, [account.id]: progress.total };
              downloadCurrentFile.value = { ...downloadCurrentFile.value, [account.id]: progress.currentFile || "" };
              downloadConverting.value = { ...downloadConverting.value, [account.id]: progress.converting || false };
            }, batchInfo);
          } catch (error) {
            if (error?.message !== "Download aborted") {
              console.error(`Failed to download ${account.username}:`, error);
            }
          } finally {
            databaseDownloadState.clearDownloadState(account.id);
          }
        }
        playSuccessSound();
        selectedAccounts.value = new Set();
      } catch (error) {
        playErrorSound();
      } finally {
        isBulkDownloading.value = false;
      }
    };
    const toggleSelectAccount = (accountId) => {
      if (!accountId) return;
      const newSelected = new Set(selectedAccounts.value);
      if (newSelected.has(accountId)) {
        newSelected.delete(accountId);
      } else {
        newSelected.add(accountId);
      }
      selectedAccounts.value = newSelected;
    };
    const toggleSelectAll = () => {
      const allFilteredIds = new Set(allFilteredAccounts.value.filter((acc) => acc.id).map((acc) => acc.id));
      const allSelected = allFilteredIds.size > 0 && Array.from(allFilteredIds).every((id2) => selectedAccounts.value.has(id2));
      if (allSelected) {
        selectedAccounts.value = new Set();
      } else {
        selectedAccounts.value = new Set(allFilteredIds);
      }
    };
    const selectedCount = signals.computed(() => selectedAccounts.value.size);
    const exportAccount = async (account) => {
      if (!account.id) return;
      try {
        exportingId.value = account.id;
        const exportData = {
          username: account.username,
          account_info: account.account_info,
          metadata: account.metadata,
          timeline: account.timeline,
          cached_at: account.cached_at,
          batch_mode: account.batch_mode,
          batch_identifier: account.batch_identifier,
          timeline_type: account.timeline_type,
          media_type: account.media_type,
          date_since: account.date_since,
          date_until: account.date_until,
          cached_at_formatted: formatDate(account.cached_at),
          exported_at: Date.now(),
          exported_at_formatted: formatDate(Date.now()),
          date_time_format: dateFormat.value || appOptionsManager.get("dateTimeFormat") || "YYYY-MM-DD HH:mm:ss"
        };
        const fmt = dateFormat.value || appOptionsManager.get("dateTimeFormat") || "YYYY-MM-DD HH:mm:ss";
        const now = dayjs();
        const exportTs = now.format("YYYYMMDD_HHmmss");
        const mediaTypeSuffix = account.media_type && account.media_type !== "all" ? `_${account.media_type}` : "";
        const fileName = `${sanitizeFilename(account.username)}_${exportTs}${mediaTypeSuffix}.json`;
        const blob = new Blob([JSON.stringify(exportData, null, 2)], {
          type: "application/json"
        });
        fileSaverEs.saveAs(blob, fileName);
        playSuccessSound();
      } catch (error) {
        console.error("Failed to export account:", error);
        playErrorSound();
      } finally {
        exportingId.value = null;
      }
    };
    const openDeleteDialog = (account) => {
      accountToDelete.value = account;
      showDeleteModal.value = true;
    };
    const confirmDelete = async () => {
      const account = accountToDelete.value;
      if (!account?.id) return;
      try {
        deletingId.value = account.id;
        await mediaDownloaderDB.deleteAccount(account.id);
        playDeleteSound();
        await loadAccounts();
        if (onCountChange) {
          const allAccounts2 = await mediaDownloaderDB.getAllAccounts();
          onCountChange(allAccounts2.length);
        }
      } catch (error) {
        console.error("Failed to delete account:", error);
        playErrorSound();
      } finally {
        deletingId.value = null;
        showDeleteModal.value = false;
        accountToDelete.value = null;
      }
    };
    const closeDeleteDialog = () => {
      showDeleteModal.value = false;
      accountToDelete.value = null;
    };
    const openClearDialog = () => {
      showClearModal.value = true;
    };
    const closeClearDialog = () => {
      showClearModal.value = false;
    };
    const handleDeleteEntry = async (tweetId, url) => {
      if (!viewingAccount.value?.id) return;
      try {
        const account = viewingAccount.value;
        const updatedTimeline = account.timeline.filter(
          (item) => !(item.tweet_id === tweetId && item.url === url)
        );
        await mediaDownloaderDB.saveAccount({
          ...account,
          timeline: updatedTimeline,
          metadata: {
            ...account.metadata,
            new_entries: updatedTimeline.length
          }
        });
        viewingAccount.value = {
          ...account,
          timeline: updatedTimeline,
          metadata: {
            ...account.metadata,
            new_entries: updatedTimeline.length
          }
        };
        await loadAccounts();
      } catch (error) {
        console.error("Failed to delete entry:", error);
        playErrorSound();
      }
    };
    const handleLoadDatabase = () => {
      if (!viewingAccount.value?.username || !onLoadToDashboard) return;
      const account = viewingAccount.value;
      onLoadToDashboard({
        username: account.username,
        batch_mode: account.batch_mode === "date_range" ? "date_range" : void 0,
        date_since: account.date_since,
        date_until: account.date_until,
        media_type: account.media_type
      });
      viewingAccount.value = null;
    };
    const confirmClearAll = async () => {
      try {
        isClearingAll.value = true;
        await mediaDownloaderDB.clearAll();
        await loadAccounts();
        if (onCountChange) {
          onCountChange(0);
        }
        showClearModal.value = false;
      } catch (error) {
        console.error("Failed to clear all accounts:", error);
        playErrorSound();
      } finally {
        isClearingAll.value = false;
      }
    };
    const formatDate = (timestamp) => {
      const fmt = dateFormat.value || appOptionsManager.get("dateTimeFormat") || "YYYY-MM-DD HH:mm:ss";
      return dayjs(timestamp).format(fmt);
    };
    const formatTimeAgo = (timestamp) => {
      const now = dayjs();
      const then = dayjs(timestamp);
      const diff = now.diff(then, "second");
      if (diff < 60) return t("Just now");
      if (diff < 3600) return t("{{minutes}}m ago", { minutes: Math.floor(diff / 60) });
      if (diff < 86400) return t("{{hours}}h ago", { hours: Math.floor(diff / 3600) });
      if (diff < 604800) return t("{{days}}d ago", { days: Math.floor(diff / 86400) });
      return formatDate(timestamp);
    };
    const goToPage = (page) => {
      if (page >= 1 && page <= totalPages.value) {
        currentPage.value = page;
      }
    };
    const exportAllAccounts = async () => {
      try {
        isExportingAll.value = true;
        const allAccounts2 = await mediaDownloaderDB.getAllAccounts();
        if (!allAccounts2.length) return;
        const fmt = dateFormat.value || appOptionsManager.get("dateTimeFormat") || "YYYY-MM-DD HH:mm:ss";
        const now = dayjs();
        const exportTs = now.format("YYYYMMDD_HHmmss");
        const files = allAccounts2.map((account, index2) => {
          const exportData = {
            username: account.username,
            account_info: account.account_info,
            metadata: account.metadata,
            timeline: account.timeline,
            cached_at: account.cached_at,
            batch_mode: account.batch_mode,
            batch_identifier: account.batch_identifier,
            timeline_type: account.timeline_type,
            media_type: account.media_type,
            date_since: account.date_since,
            date_until: account.date_until,
            cached_at_formatted: dayjs(account.cached_at).format(fmt),
            exported_at: now.valueOf(),
            exported_at_formatted: now.format(fmt),
            date_time_format: fmt
          };
          const mediaTypeSuffix = account.media_type && account.media_type !== "all" ? `_${account.media_type}` : "";
          const uniqueSuffix = allAccounts2.filter((a) => a.username === account.username).length > 1 ? `_${index2 + 1}` : "";
          const fileName = `${sanitizeFilename(account.username)}_${exportTs}${mediaTypeSuffix}${uniqueSuffix}.json`;
          const content = JSON.stringify(exportData, null, 2);
          const blob = new Blob([content], { type: "application/json" });
          return { name: fileName, blob };
        });
        let index = 0;
        const readableZipStream = createWriter({
          pull(ctrl) {
            if (index >= files.length) {
              ctrl.close();
              return;
            }
            const file = files[index];
            if (!file) {
              ctrl.close();
              return;
            }
            index += 1;
            ctrl.enqueue({
              name: file.name,
              stream: () => file.blob.stream()
            });
          }
        });
        const chunks = [];
        const writableOutputStream = new WritableStream({
          write(chunk) {
            chunks.push(chunk);
          }
        });
        await readableZipStream.pipeTo(writableOutputStream);
        const arrayBuffer = await new Blob(chunks).arrayBuffer();
        const zipBlob = new Blob([arrayBuffer]);
        const zipFilename = `twitter-x-media-batch-downloader-pro_${exportTs}.zip`;
        fileSaverEs.saveAs(zipBlob, zipFilename);
        playSuccessSound();
      } catch (error) {
        playErrorSound();
      } finally {
        isExportingAll.value = false;
      }
    };
    if (isLoading.value) {
      return u("div", { class: "space-y-6", children: [
u("div", { class: "flex items-center justify-between", children: [
u("div", { class: "flex items-center gap-2", children: [
u("div", { class: "skeleton h-8 w-24" }),
u("div", { class: "skeleton h-8 w-24" })
          ] }),
u("div", { class: "flex items-center gap-2", children: [
u("div", { class: "skeleton h-8 w-8" }),
u("div", { class: "skeleton h-8 w-8" })
          ] })
        ] }),
        [1, 2, 3].map((i) => u("div", { class: "card bg-base-200 border border-base-300 w-full", children: u("div", { class: "card-body p-4", children: u("div", { class: "flex items-center gap-4", children: [
u("div", { class: "skeleton w-16 h-16 rounded-xl shrink-0" }),
u("div", { class: "grow space-y-2", children: [
u("div", { class: "skeleton h-4 w-32" }),
u("div", { class: "skeleton h-3 w-24" }),
u("div", { class: "flex gap-2", children: [
u("div", { class: "skeleton h-5 w-16" }),
u("div", { class: "skeleton h-5 w-16" }),
u("div", { class: "skeleton h-5 w-12" })
            ] }),
u("div", { class: "skeleton h-3 w-40" })
          ] }),
u("div", { class: "skeleton w-8 h-8 rounded-lg shrink-0" })
        ] }) }) }, i))
      ] });
    }
    return u(preact.Fragment, { children: [
u("div", { class: "space-y-6", children: [
u("div", { class: "flex items-center justify-between", children: [
u("div", { class: "flex items-center gap-2", children: [
u(
              "input",
              {
                type: "file",
                class: "hidden",
                ref: fileInputRef,
                accept: ".json,.zip,application/json,application/zip",
                multiple: true,
                onChange: onFilesSelected
              }
            ),
u("div", { class: "tooltip tooltip-right", "data-tip": t("Filter by Date Range"), children: u(
              "button",
              {
                class: `btn btn-sm btn-square ${filterByDateRange.value ? "btn-active btn-primary" : ""}`,
                "aria-label": t("Filter by Date Range"),
                onClick: () => {
                  filterByDateRange.value = !filterByDateRange.value;
                  currentPage.value = 1;
                  loadAccounts();
                },
                disabled: isImporting.value || isExportingAll.value || isClearingAll.value || dateRangeCount.value === 0,
                children: u(IconCalendarWeek, { size: 16 })
              }
            ) }),
u("div", { class: "dropdown dropdown-bottom", children: [
u("div", { tabIndex: 0, role: "button", class: "btn btn-sm", children: [
                filterByGroup.value === null ? t("All Groups") : filterByGroup.value === "" ? t("Ungroup") : u(preact.Fragment, { children: [
                  filterByGroup.value,
                  " (",
                  allFilteredAccounts.value.length,
                  ")"
                ] }),
u("svg", { width: "12px", height: "12px", class: "mt-px hidden size-2 fill-current opacity-60 sm:inline-block ml-auto", xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 2048 2048", children: u("path", { d: "M1799 349l242 241-1017 1017L7 590l242-241 775 775 775-775z" }) })
              ] }),
u("ul", { tabIndex: 0, class: "dropdown-content menu bg-base-200 rounded-box z-20 w-52 p-2 shadow-lg border border-base-300", children: [
u("li", { children: u(
                  "button",
                  {
                    class: filterByGroup.value === null ? "active" : "",
                    onClick: () => {
                      filterByGroup.value = null;
                      currentPage.value = 1;
                      loadAccounts();
                    },
                    children: t("All Groups")
                  }
                ) }),
u("li", { children: u(
                  "button",
                  {
                    class: filterByGroup.value === "" ? "active" : "",
                    onClick: () => {
                      filterByGroup.value = "";
                      currentPage.value = 1;
                      loadAccounts();
                    },
                    children: t("Ungroup")
                  }
                ) }),
                availableGroups.value.map((group) => {
                  const count = allAccounts.value.filter((acc) => acc.group === group).length;
                  return u("li", { children: u(
                    "button",
                    {
                      class: filterByGroup.value === group ? "active" : "",
                      onClick: () => {
                        filterByGroup.value = group;
                        currentPage.value = 1;
                        loadAccounts();
                      },
                      children: [
                        group,
                        " (",
                        count,
                        ")"
                      ]
                    }
                  ) }, group);
                })
              ] })
            ] })
          ] }),
u("div", { class: "flex items-center gap-2", children: [
u("div", { class: "dropdown dropdown-end", children: [
u("div", { tabIndex: 0, role: "button", class: "btn btn-sm btn-square btn-ghost", "aria-label": t("More options"), children: u(IconDots, { size: 16 }) }),
u("ul", { tabIndex: 0, class: "dropdown-content menu bg-base-200 rounded-box z-20 w-52 p-2 shadow-lg border border-base-300", children: [
u("li", { children: u(
                  "button",
                  {
                    onClick: (e) => {
                      e.stopPropagation();
                      handleImportClick();
                    },
                    disabled: isImporting.value,
                    children: isImporting.value ? u(preact.Fragment, { children: [
u("span", { class: "loading loading-spinner loading-xs" }),
                      t("Importing...")
                    ] }) : u(preact.Fragment, { children: [
u(IconDatabaseImport, { size: 16 }),
u("span", { children: [
                        t("Import"),
                        " (.json/.zip)"
                      ] })
                    ] })
                  }
                ) }),
u("li", { children: u(
                  "button",
                  {
                    onClick: async (e) => {
                      e.stopPropagation();
                      await exportAllAccounts();
                    },
                    disabled: isExportingAll.value || isImporting.value || totalCount.value === 0,
                    children: isExportingAll.value ? u(preact.Fragment, { children: [
u("span", { class: "loading loading-spinner loading-xs" }),
                      t("Exporting...")
                    ] }) : u(preact.Fragment, { children: [
u(IconDatabaseExport, { size: 16 }),
u("span", { children: [
                        t("Export"),
                        " (.zip)"
                      ] })
                    ] })
                  }
                ) }),
u("li", { children: u(
                  "button",
                  {
                    onClick: (e) => {
                      e.stopPropagation();
                      openClearDialog();
                    },
                    disabled: isImporting.value || isExportingAll.value || isClearingAll.value || totalCount.value === 0,
                    class: "text-error",
                    children: [
u(IconDatabaseX, { size: 16 }),
                      t("Clear")
                    ]
                  }
                ) })
              ] })
            ] }),
u("div", { class: "tooltip tooltip-left", "data-tip": t("Download"), children: u(
              "button",
              {
                class: "btn btn-success btn-sm",
                onClick: handleBulkDownload,
                disabled: selectedCount.value === 0 || isBulkDownloading.value || downloadingId.value !== null,
                children: isBulkDownloading.value ? u(preact.Fragment, { children: [
u("span", { class: "loading loading-spinner loading-xs" }),
                  t("Downloading...")
                ] }) : u(preact.Fragment, { children: [
u(IconFileZip, { size: 16 }),
                  selectedCount.value > 0 ? `${t("Download")} (${selectedCount.value})` : t("Download")
                ] })
              }
            ) })
          ] })
        ] }),
        allFilteredAccounts.value.length > 0 && u("div", { class: "flex items-center gap-2 pb-2", children: [
u(
            "input",
            {
              type: "checkbox",
              class: "checkbox checkbox-sm",
              checked: (() => {
                const allFilteredIds = new Set(allFilteredAccounts.value.filter((acc) => acc.id).map((acc) => acc.id));
                return allFilteredIds.size > 0 && Array.from(allFilteredIds).every((id2) => selectedAccounts.value.has(id2));
              })(),
              indeterminate: (() => {
                const allFilteredIds = new Set(allFilteredAccounts.value.filter((acc) => acc.id).map((acc) => acc.id));
                return selectedAccounts.value.size > 0 && selectedAccounts.value.size < allFilteredIds.size;
              })(),
              onChange: toggleSelectAll
            }
          ),
u("span", { class: "text-sm opacity-70", children: selectedCount.value > 0 ? `${selectedCount.value} ${t("selected")}` : t("Select All") })
        ] }),
        accounts.value.map((account) => u("div", { class: "relative w-full", children: [
          account.group && u("div", { class: "badge badge-soft badge-info badge-sm absolute -top-2 -left-2 z-10", children: account.group }),
u(
            "button",
            {
              class: "btn btn-circle btn-xs btn-error absolute -top-2 -right-2 z-10",
              onClick: () => openDeleteDialog(account),
              children: deletingId.value === account.id ? u("span", { class: "loading loading-spinner loading-xs" }) : u(IconTrash, { size: 12 })
            }
          ),
u("div", { class: "card bg-base-200 border border-base-300 w-full", children: [
u("div", { class: "card-body p-4", children: u("div", { class: "flex items-center gap-4", children: [
u("div", { class: "flex items-center gap-2", children: u(
                "input",
                {
                  type: "checkbox",
                  class: "checkbox checkbox-sm",
                  checked: account.id ? selectedAccounts.value.has(account.id) : false,
                  onChange: () => toggleSelectAccount(account.id),
                  disabled: !account.id
                }
              ) }),
u("div", { class: "flex flex-col items-center gap-1", children: u("div", { class: "avatar", children: u(
                "div",
                {
                  class: "w-16 rounded-xl cursor-pointer hover:opacity-80 transition-opacity",
                  onClick: () => {
                    viewingAccount.value = account;
                    showViewModal.value = true;
                  },
                  role: "button",
                  tabIndex: 0,
                  onKeyDown: (e) => {
                    if (e.key === "Enter" || e.key === " ") {
                      e.preventDefault();
                      viewingAccount.value = account;
                      showViewModal.value = true;
                    }
                  },
                  "aria-label": t("Explore Database"),
                  children: u(
                    "img",
                    {
                      src: account.account_info.profile_image,
                      alt: account.account_info.nick,
                      onError: (e) => {
                        const target = e.target;
                        target.src = 'data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="gray"%3E%3Ccircle cx="12" cy="12" r="10"/%3E%3C/svg%3E';
                      }
                    }
                  )
                }
              ) }) }),
u("div", { class: "grow", children: [
u("div", { class: "flex items-center gap-2 flex-wrap", children: [
u("h3", { class: "font-semibold text-base", children: account.account_info.nick }),
                  account.batch_mode === "date_range" && account.date_since && account.date_until && u("div", { class: "badge badge-soft badge-info badge-sm", children: [
                    account.date_since,
                    " → ",
                    account.date_until
                  ] })
                ] }),
u("p", { class: "text-sm opacity-70", children: u(
                  "a",
                  {
                    class: "link link-hover",
                    href: `https://x.com/${account.username}`,
                    target: "_blank",
                    rel: "noopener noreferrer",
                    children: [
                      "@",
                      account.username
                    ]
                  }
                ) }),
u("div", { class: "flex gap-2 mt-1", children: [
                  account.media_type && u("div", { class: "badge badge-soft badge-primary badge-sm", children: account.media_type === "all" ? t("All") : account.media_type === "image" ? t("Image") : account.media_type === "video" ? t("Video") : account.media_type === "gif" ? t("GIF") : account.media_type === "text" ? t("Text") : t("All") }),
u("div", { class: "badge badge-soft badge-secondary badge-sm", children: account.metadata.new_entries.toLocaleString() })
                ] }),
u("p", { class: "text-xs opacity-50 mt-1", children: [
                  formatDate(account.cached_at),
                  " (",
                  formatTimeAgo(account.cached_at),
                  ")"
                ] })
              ] }),
u("div", { class: "flex items-center gap-1", children: [
u("div", { class: "dropdown dropdown-end", children: [
u("div", { tabIndex: 0, role: "button", class: "btn btn-sm btn-square btn-ghost", "aria-label": t("More options"), children: u(IconDots, { size: 16 }) }),
u("ul", { tabIndex: 0, class: "dropdown-content menu bg-base-200 rounded-box z-1 w-48 p-2 shadow-lg border border-base-300", children: [
u("li", { children: u(
                      "button",
                      {
                        onClick: async () => {
                          accountToGroup.value = account;
                          newGroupName.value = account.group || "";
                          try {
                            const groups = await mediaDownloaderDB.getAllGroups();
                            availableGroups.value = groups;
                          } catch (error) {
                            console.error("Error loading groups:", error);
                            availableGroups.value = [];
                          }
                          showGroupModal.value = true;
                        },
                        disabled: deletingId.value === account.id,
                        children: [
u(IconTags, { size: 16 }),
                          t("Group")
                        ]
                      }
                    ) }),
u("li", { children: u(
                      "button",
                      {
                        onClick: () => {
                          if (!account.username || !onLoadToDashboard) return;
                          onLoadToDashboard({
                            username: account.username,
                            batch_mode: account.batch_mode === "date_range" ? "date_range" : void 0,
                            date_since: account.date_since,
                            date_until: account.date_until,
                            media_type: account.media_type
                          });
                        },
                        disabled: deletingId.value === account.id || !onLoadToDashboard,
                        children: [
u(IconDatabaseImport, { size: 16 }),
                          t("Load Database")
                        ]
                      }
                    ) }),
u("li", { children: u(
                      "button",
                      {
                        onClick: () => {
                          viewingAccount.value = account;
                          showViewModal.value = true;
                        },
                        disabled: deletingId.value === account.id,
                        children: [
u(IconDatabaseSearch, { size: 16 }),
                          t("Explore Database")
                        ]
                      }
                    ) }),
u("li", { children: u(
                      "button",
                      {
                        onClick: () => exportAccount(account),
                        disabled: exportingId.value === account.id || deletingId.value === account.id || downloadingId.value === account.id,
                        children: [
                          exportingId.value === account.id ? u("span", { class: "loading loading-spinner loading-xs" }) : u(IconDatabaseExport, { size: 16 }),
u("span", { children: [
                            t("Export"),
                            " (.json)"
                          ] })
                        ]
                      }
                    ) })
                  ] })
                ] }),
u("div", { class: "tooltip tooltip-left", "data-tip": t("Download"), children: u(
                  "button",
                  {
                    class: "btn btn-success btn-sm btn-square",
                    "aria-label": t("Download"),
                    onClick: () => handleDownloadAccount(account),
                    disabled: downloadingId.value === account.id || deletingId.value === account.id || exportingId.value === account.id,
                    children: downloadingId.value === account.id ? u("span", { class: "loading loading-spinner loading-xs" }) : u(IconFileZip, { size: 16 })
                  }
                ) })
              ] })
            ] }) }),
            downloadingId.value === account.id && account.id && downloadProgress.value[account.id] !== void 0 && u("div", { class: "px-4 pb-4 space-y-2", children: [
u("div", { class: "flex justify-between text-sm", children: [
u("span", { children: [
                  downloadConverting.value[account.id] ? t("Converting GIFs...") : t("Downloading..."),
                  (downloadTotal.value[account.id] ?? 0) > 0 && ` (${(downloadCurrent.value[account.id] ?? 0).toLocaleString()}/${(downloadTotal.value[account.id] ?? 0).toLocaleString()})`
                ] }),
u("span", { children: [
                  downloadProgress.value[account.id],
                  "%"
                ] })
              ] }),
u(
                "progress",
                {
                  class: "progress progress-primary w-full",
                  value: downloadProgress.value[account.id],
                  max: "100"
                }
              ),
              downloadCurrentFile.value[account.id] && u("div", { class: "text-xs opacity-70 truncate", children: downloadCurrentFile.value[account.id] }),
u("div", { class: "flex justify-center", children: u(
                "button",
                {
                  class: "btn btn-error btn-sm",
                  onClick: () => mediaDownloader.abortDownload(),
                  children: [
u(IconPlayerStop, { size: 16 }),
                    t("Stop")
                  ]
                }
              ) })
            ] })
          ] })
        ] }, account.id)),
        accounts.value.length === 0 && u("div", { class: "text-center", children: [
u("div", { class: "opacity-50 mb-2", children: u(IconDatabase, { size: 36, class: "mx-auto" }) }),
u("p", { class: "text-sm font-medium mb-1", children: t("No accounts yet") }),
u("p", { class: "text-xs opacity-70", children: t("Use Dashboard to fetch data.") })
        ] }),
        totalPages.value > 1 && u("div", { class: "flex justify-center", children: u("div", { class: "join", children: [
u(
            "button",
            {
              class: "join-item btn btn-sm",
              onClick: () => goToPage(currentPage.value - 1),
              disabled: currentPage.value === 1,
              children: "«"
            }
          ),
u("button", { class: "join-item btn btn-sm", children: [
            currentPage.value,
            "/",
            totalPages.value
          ] }),
u(
            "button",
            {
              class: "join-item btn btn-sm",
              onClick: () => goToPage(currentPage.value + 1),
              disabled: currentPage.value === totalPages.value,
              children: "»"
            }
          )
        ] }) })
      ] }),
u(Modal, { show: showDeleteModal.value, onClose: closeDeleteDialog, title: t("Delete Account Data"), class: "max-w-sm", children: u("div", { class: "space-y-2", children: [
u("p", { class: `text-sm${isArabic ? " text-right" : ""}`, dir: isArabic ? "rtl" : void 0, children: t("Are you sure you want to delete account data? This action cannot be undone", { username: accountToDelete.value?.username || "" }) }),
u("div", { class: "modal-action", children: [
u(
            "button",
            {
              class: "btn btn-sm btn-ghost",
              onClick: closeDeleteDialog,
              children: t("Cancel")
            }
          ),
u(
            "button",
            {
              class: "btn btn-sm btn-error",
              onClick: confirmDelete,
              disabled: deletingId.value === accountToDelete.value?.id,
              children: deletingId.value === accountToDelete.value?.id ? u(preact.Fragment, { children: [
u("span", { class: "loading loading-spinner loading-xs" }),
                t("Deleting...")
              ] }) : u(preact.Fragment, { children: [
u(IconTrash, { size: 16 }),
                t("Delete")
              ] })
            }
          )
        ] })
      ] }) }),
u(Modal, { show: showClearModal.value, onClose: closeClearDialog, title: t("Clear"), class: "max-w-sm", children: u("div", { class: "space-y-2", children: [
u("p", { class: `text-sm${isArabic ? " text-right" : ""}`, dir: isArabic ? "rtl" : void 0, children: t("Are you sure to clear all data in the database?") }),
u("div", { class: "modal-action", children: [
u(
            "button",
            {
              class: "btn btn-sm btn-ghost",
              onClick: closeClearDialog,
              children: t("Cancel")
            }
          ),
u(
            "button",
            {
              class: "btn btn-sm btn-error",
              onClick: confirmClearAll,
              disabled: isClearingAll.value,
              children: isClearingAll.value ? u(preact.Fragment, { children: [
u("span", { class: "loading loading-spinner loading-xs" }),
                t("Deleting...")
              ] }) : u(preact.Fragment, { children: [
u(IconDatabaseX, { size: 16 }),
                t("Clear")
              ] })
            }
          )
        ] })
      ] }) }),
u(
        Modal,
        {
          show: showGroupModal.value,
          onClose: () => {
            showGroupModal.value = false;
            accountToGroup.value = null;
            newGroupName.value = "";
          },
          title: t("Group Account"),
          class: "max-w-sm",
          children: u("div", { class: "space-y-2", children: [
            availableGroups.value.length > 0 && u("div", { class: "flex items-center gap-2", children: [
u(
                "select",
                {
                  class: "select select-bordered select-sm flex-1",
                  value: newGroupName.value || "",
                  onChange: (e) => {
                    const groupName = e.target.value;
                    newGroupName.value = groupName;
                  },
                  children: [
u("option", { value: "", children: t("Select a group") }),
                    availableGroups.value.map((group) => u("option", { value: group, children: group }, group))
                  ]
                }
              ),
              availableGroups.value.length > 0 && u("div", { class: "tooltip tooltip-left", "data-tip": t("Delete selected group"), children: u(
                "button",
                {
                  class: "btn btn-sm btn-square btn-error",
                  disabled: !newGroupName.value || !availableGroups.value.includes(newGroupName.value),
                  onClick: () => {
                    if (newGroupName.value && availableGroups.value.includes(newGroupName.value)) {
                      const groupToDelete = newGroupName.value;
                      const accountsInGroup = allAccounts.value.filter((acc) => acc.group === groupToDelete);
                      Promise.all(accountsInGroup.map(
                        (acc) => acc.id ? mediaDownloaderDB.updateAccount(acc.id, { group: void 0 }) : Promise.resolve()
                      )).then(() => {
                        return mediaDownloaderDB.removeGroup(groupToDelete);
                      }).then(() => {
                        playSuccessSound();
                        loadAccounts();
                        showGroupModal.value = false;
                        accountToGroup.value = null;
                        newGroupName.value = "";
                      }).catch(() => {
                        playErrorSound();
                      });
                    }
                  },
                  children: u(IconTrash, { size: 16 })
                }
              ) })
            ] }),
u("div", { children: u(
              "input",
              {
                type: "text",
                class: "input input-bordered input-sm w-full",
                placeholder: t("Enter group name"),
                value: newGroupName.value,
                onInput: (e) => {
                  newGroupName.value = e.target.value;
                },
                onFocus: (e) => {
                  const select = e.target.closest(".space-y-2")?.querySelector("select");
                  if (select && newGroupName.value) {
                    const optionValues = Array.from(select.options).map((opt) => opt.value);
                    if (optionValues.includes(newGroupName.value)) {
                      select.value = "";
                    }
                  }
                },
                onKeyDown: (e) => {
                  if (e.key === "Enter") {
                    const groupName = newGroupName.value.trim();
                    if (groupName && accountToGroup.value?.id) {
                      playClickSound();
                      mediaDownloaderDB.updateAccount(accountToGroup.value.id, { group: groupName }).then(() => {
                        playSuccessSound();
                        newGroupName.value = "";
                        loadAccounts();
                        showGroupModal.value = false;
                        accountToGroup.value = null;
                      }).catch(() => {
                        playErrorSound();
                      });
                    }
                  }
                }
              }
            ) }),
u("div", { class: "modal-action", children: [
              accountToGroup.value?.group && u(
                "button",
                {
                  class: "btn btn-sm btn-ghost",
                  onClick: () => {
                    if (accountToGroup.value?.id) {
                      playClickSound();
                      mediaDownloaderDB.updateAccount(accountToGroup.value.id, { group: void 0 }).then(() => {
                        playSuccessSound();
                        loadAccounts();
                        showGroupModal.value = false;
                        accountToGroup.value = null;
                        newGroupName.value = "";
                      }).catch(() => {
                        playErrorSound();
                      });
                    }
                  },
                  children: t("Remove Group")
                }
              ),
u(
                "button",
                {
                  class: "btn btn-sm btn-primary",
                  onClick: () => {
                    const groupName = newGroupName.value.trim();
                    if (groupName && accountToGroup.value?.id) {
                      playClickSound();
                      mediaDownloaderDB.addGroup(groupName).then(() => {
                        return mediaDownloaderDB.updateAccount(accountToGroup.value.id, { group: groupName });
                      }).then(async () => {
                        try {
                          const groups = await mediaDownloaderDB.getAllGroups();
                          availableGroups.value = groups;
                        } catch (error) {
                          console.error("Error loading groups:", error);
                        }
                        playSuccessSound();
                        newGroupName.value = "";
                        loadAccounts();
                        showGroupModal.value = false;
                        accountToGroup.value = null;
                      }).catch(() => {
                        playErrorSound();
                      });
                    }
                  },
                  disabled: !newGroupName.value.trim() || !accountToGroup.value?.id,
                  children: t("Add")
                }
              )
            ] })
          ] })
        }
      ),
u(
        ViewDatabaseModal,
        {
          isOpen: showViewModal.value,
          onClose: () => {
            showViewModal.value = false;
            viewingAccount.value = null;
          },
          account: viewingAccount.value,
          onDeleteEntry: handleDeleteEntry,
          onLoadDatabase: handleLoadDatabase
        }
      )
    ] });
  }
  function Auth() {
    const { t, i18n } = useTranslation();
    const isArabic = (i18n.language || "").startsWith("ar");
    const authToken = signals.useSignal("");
    const patreonAuth = signals.useSignal("");
    const showAuthToken = signals.useSignal(false);
    const showPatreonAuth = signals.useSignal(false);
    const isPatreonValid = signals.useSignal(false);
    const isVerifying = signals.useSignal(false);
    const isGenerating = signals.useSignal(false);
    const isRefreshing = signals.useSignal(false);
    const verificationMessage = signals.useSignal("");
    const verificationSuccess = signals.useSignal(false);
    const generationMessage = signals.useSignal("");
    const generationSuccess = signals.useSignal(false);
    const refreshMessage = signals.useSignal("");
    const refreshSuccess = signals.useSignal(false);
    const isCopied = signals.useSignal(false);
    const lastVerifiedPatreonAuth = signals.useSignal("");
    const hasInvalidVerify = signals.useSignal(false);
    const hasTokenList = signals.useSignal(false);
    hooks.useEffect(() => {
      const initAuth = async () => {
        await loadAuthSettings();
        await checkAndAutoRefreshToken();
      };
      initAuth();
      const interval = setInterval(() => {
        checkAndAutoRefreshToken();
      }, 60 * 60 * 1e3);
      return () => clearInterval(interval);
    }, []);
    hooks.useEffect(() => {
      const updateLocalToken = () => {
        if (authState.authToken.value && authState.authToken.value !== authToken.value) {
          authToken.value = authState.authToken.value;
        }
      };
      updateLocalToken();
      const unsubscribe = authState.authToken.subscribe(updateLocalToken);
      return unsubscribe;
    }, []);
    const loadAuthSettings = async () => {
      try {
        const settings = await mediaDownloaderDB.getAuthSettings();
        if (settings) {
          authToken.value = settings.auth_token;
          patreonAuth.value = settings.patreon_auth;
          isPatreonValid.value = Boolean(settings.patreon_verified) && settings.patreon_verified_auth === settings.patreon_auth;
          authState.authToken.value = settings.auth_token;
          authState.patreonAuth.value = settings.patreon_auth;
          authState.patreonVerified.value = isPatreonValid.value;
          if (settings.show_auth_token !== void 0) {
            showAuthToken.value = settings.show_auth_token;
          }
          if (settings.show_patreon_auth !== void 0) {
            showPatreonAuth.value = settings.show_patreon_auth;
          }
          hasTokenList.value = Boolean(settings.token_list && settings.token_list.length > 0);
          if (isPatreonValid.value) {
            lastVerifiedPatreonAuth.value = settings.patreon_auth;
          } else if (settings.patreon_auth && settings.patreon_verified === false && settings.patreon_verified_auth === settings.patreon_auth) {
            lastVerifiedPatreonAuth.value = settings.patreon_auth;
            hasInvalidVerify.value = true;
          }
        }
      } catch (error) {
      }
    };
    const autoSaveAuthToken = async (value) => {
      try {
        await mediaDownloaderDB.saveAuthSettings(value, patreonAuth.value, showAuthToken.value, showPatreonAuth.value);
        authState.authToken.value = value;
      } catch (error) {
      }
    };
    const autoSavePatreonAuth = async (value) => {
      try {
        await mediaDownloaderDB.saveAuthSettings(authToken.value, value, showAuthToken.value, showPatreonAuth.value);
        await mediaDownloaderDB.setPatreonVerified(false);
        authState.patreonAuth.value = value;
        authState.patreonVerified.value = false;
      } catch (error) {
      }
      if (value !== lastVerifiedPatreonAuth.value) {
        hasInvalidVerify.value = false;
        isPatreonValid.value = false;
        verificationMessage.value = "";
      }
    };
    const verifyPatreonAuth = async () => {
      if (!patreonAuth.value.trim()) {
        verificationMessage.value = t("Please enter Patreon auth first");
        setTimeout(() => verificationMessage.value = "", 2e3);
        return;
      }
      try {
        isVerifying.value = true;
        verificationMessage.value = "";
        const data = await mediaDownloaderAPI.verifyPatreonAuth(patreonAuth.value);
        isPatreonValid.value = data.valid;
        await mediaDownloaderDB.setPatreonVerified(data.valid);
        authState.patreonVerified.value = data.valid;
        verificationSuccess.value = data.valid;
        verificationMessage.value = data.valid ? t("Patreon auth verified successfully") : t("Invalid Patreon auth");
        lastVerifiedPatreonAuth.value = patreonAuth.value;
        hasInvalidVerify.value = !data.valid;
        if (data.valid) {
          playSuccessSound();
        } else {
          playErrorSound();
        }
        setTimeout(() => verificationMessage.value = "", 2e3);
      } catch (error) {
        const raw = error instanceof Error ? error.message : "";
        const httpMatch = raw.match(/^HTTP error! status: (\d+)/);
        const msg = httpMatch ? t("HTTP error! status: {{status}}", { status: httpMatch[1] }) : (raw ? t(raw) : "") || t("Verification failed. Please try again");
        verificationSuccess.value = false;
        verificationMessage.value = msg;
        lastVerifiedPatreonAuth.value = patreonAuth.value;
        hasInvalidVerify.value = true;
        playErrorSound();
        setTimeout(() => verificationMessage.value = "", 2e3);
      } finally {
        isVerifying.value = false;
      }
    };
    const refreshAuthTokens = async (silent = false, skipLoadingState = false) => {
      if (!isPatreonValid.value) {
        if (!silent) {
          refreshMessage.value = t("Please verify Patreon auth first");
          setTimeout(() => refreshMessage.value = "", 2e3);
        }
        return;
      }
      try {
        if (!skipLoadingState) {
          isRefreshing.value = true;
        }
        if (!silent) {
          refreshMessage.value = "";
        }
        const data = await mediaDownloaderAPI.refreshAuthTokens(patreonAuth.value);
        if (data.success && data.tokens && data.tokens.length > 0) {
          await mediaDownloaderDB.saveTokenList(data.tokens, 0);
          const firstToken = data.tokens[0];
          if (firstToken) {
            authToken.value = firstToken;
            await autoSaveAuthToken(firstToken);
            authState.authToken.value = firstToken;
          }
          hasTokenList.value = true;
          refreshSuccess.value = true;
          if (!silent) {
            refreshMessage.value = `Tokens refreshed successfully. ${data.count} tokens available.`;
            playSuccessSound();
          }
        } else {
          refreshSuccess.value = false;
          hasTokenList.value = false;
          if (!silent) {
            refreshMessage.value = t("Failed to refresh tokens");
            playErrorSound();
          }
        }
        if (!silent) {
          setTimeout(() => refreshMessage.value = "", 3e3);
        }
      } catch (error) {
        const raw = error instanceof Error ? error.message : "";
        const httpMatch = raw.match(/^HTTP error! status: (\d+)/);
        const msg = httpMatch ? t("HTTP error! status: {{status}}", { status: httpMatch[1] }) : (raw ? t(raw) : "") || "Token refresh failed. Please try again";
        refreshSuccess.value = false;
        if (!silent) {
          refreshMessage.value = msg;
          playErrorSound();
          setTimeout(() => refreshMessage.value = "", 3e3);
        }
      } finally {
        if (!skipLoadingState) {
          isRefreshing.value = false;
        }
      }
    };
    const checkAndAutoRefreshToken = async () => {
      try {
        const settings = await mediaDownloaderDB.getAuthSettings();
        if (!settings || !settings.patreon_verified || !settings.patreon_auth) {
          return;
        }
        if (settings.patreon_verified_auth !== settings.patreon_auth) {
          return;
        }
        const lastRefresh = settings.last_token_refresh;
        if (!lastRefresh) {
          return;
        }
        const now = Date.now();
        const timeSinceLastRefresh = now - lastRefresh;
        const twentyFourHours = 24 * 60 * 60 * 1e3;
        if (timeSinceLastRefresh >= twentyFourHours) {
          patreonAuth.value = settings.patreon_auth;
          isPatreonValid.value = true;
          await refreshAuthTokens(true);
        }
      } catch (error) {
      }
    };
    const generateAuthToken = async () => {
      if (!isPatreonValid.value) {
        generationMessage.value = t("Please verify Patreon auth first");
        setTimeout(() => generationMessage.value = "", 2e3);
        return;
      }
      try {
        isGenerating.value = true;
        generationMessage.value = "";
        const settings = await mediaDownloaderDB.getAuthSettings();
        if (!settings?.token_list || settings.token_list.length === 0) {
          await refreshAuthTokens(true, true);
          const updatedSettings = await mediaDownloaderDB.getAuthSettings();
          if (updatedSettings?.token_list && updatedSettings.token_list.length > 0) {
            const nextToken = await mediaDownloaderDB.getNextToken();
            if (nextToken) {
              authToken.value = nextToken;
              await autoSaveAuthToken(nextToken);
              authState.authToken.value = nextToken;
              generationSuccess.value = true;
              const currentIndex = updatedSettings.current_token_index ?? 0;
              generationMessage.value = `Token generated successfully. Token ${currentIndex} of ${updatedSettings.token_list.length}`;
              playSuccessSound();
              setTimeout(() => generationMessage.value = "", 2e3);
              return;
            }
          }
        }
        if (settings?.token_list && settings.token_list.length > 0) {
          const nextToken = await mediaDownloaderDB.getNextToken();
          if (nextToken) {
            authToken.value = nextToken;
            await autoSaveAuthToken(nextToken);
            authState.authToken.value = nextToken;
            generationSuccess.value = true;
            const currentIndex = settings.current_token_index ?? 0;
            generationMessage.value = `Token generated successfully. Token ${currentIndex} of ${settings.token_list.length}`;
            playSuccessSound();
            setTimeout(() => generationMessage.value = "", 2e3);
            return;
          }
        }
        const data = await mediaDownloaderAPI.generateAuthToken(patreonAuth.value);
        if (data.auth_token) {
          authToken.value = data.auth_token;
          await autoSaveAuthToken(data.auth_token);
          authState.authToken.value = data.auth_token;
          generationSuccess.value = true;
          generationMessage.value = t("Token generated successfully", { current: data.current_index, total: data.total_tokens });
          playSuccessSound();
        } else {
          generationSuccess.value = false;
          generationMessage.value = t("Failed to generate token");
          playErrorSound();
        }
        setTimeout(() => generationMessage.value = "", 2e3);
      } catch (error) {
        const raw = error instanceof Error ? error.message : "";
        const httpMatch = raw.match(/^HTTP error! status: (\d+)/);
        const msg = httpMatch ? t("HTTP error! status: {{status}}", { status: httpMatch[1] }) : (raw ? t(raw) : "") || t("Token generation failed. Please try again");
        generationSuccess.value = false;
        generationMessage.value = msg;
        playErrorSound();
        setTimeout(() => generationMessage.value = "", 2e3);
      } finally {
        isGenerating.value = false;
      }
    };
    return u("div", { class: "space-y-6", children: u("div", { class: "space-y-4", children: [
u("div", { children: [
u("label", { class: "label mb-1", children: u("span", { class: "text-sm flex items-center gap-1", children: [
          t("Patreon Auth"),
u("div", { class: "tooltip tooltip-right max-w-[200px] sm:max-w-none", "data-tip": t("Subscribe for $5 on Patreon and your auth code will be automatically emailed to you within a few minutes."), children: u(IconInfoCircle, { size: 14, class: "opacity-70" }) })
        ] }) }),
u("div", { class: "join w-full", children: [
u("div", { class: "flex-1", children: u("label", { class: "input input-bordered input-sm join-item flex items-center gap-2 w-full", children: [
u("svg", { class: `h-4 w-4 ${!patreonAuth.value.trim() ? "opacity-50" : isPatreonValid.value ? "text-success" : hasInvalidVerify.value && patreonAuth.value === lastVerifiedPatreonAuth.value ? "text-error" : "opacity-50"}`, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: u(
              "g",
              {
                strokeLinejoin: "round",
                strokeLinecap: "round",
                strokeWidth: "2.5",
                fill: "none",
                stroke: "currentColor",
                children: [
u("path", { d: "M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10" }),
u("path", { d: "m9 12 2 2 4-4" })
                ]
              }
            ) }),
u(
              "input",
              {
                type: showPatreonAuth.value ? "text" : "password",
                class: "grow font-mono",
                placeholder: t("Enter your Patreon auth"),
                value: patreonAuth.value,
                onInput: (e) => {
                  const value = e.target.value;
                  patreonAuth.value = value;
                  autoSavePatreonAuth(value);
                }
              }
            ),
u(
              "span",
              {
                class: "cursor-pointer opacity-70 hover:opacity-100",
                onClick: async () => {
                  showPatreonAuth.value = !showPatreonAuth.value;
                  try {
                    await mediaDownloaderDB.saveAuthSettings(authToken.value, patreonAuth.value, showAuthToken.value, showPatreonAuth.value);
                  } catch (error) {
                  }
                },
                "aria-label": t("Toggle visibility"),
                children: showPatreonAuth.value ? u(IconEyeOff, { size: 14 }) : u(IconEye, { size: 14 })
              }
            )
          ] }) }),
u(
            "button",
            {
              class: `btn btn-sm join-item w-28 ${isPatreonValid.value ? "btn-success" : "btn-neutral"}`,
              onClick: verifyPatreonAuth,
              disabled: isVerifying.value || !patreonAuth.value.trim(),
              children: isVerifying.value ? u(preact.Fragment, { children: [
u("span", { class: "loading loading-spinner loading-xs" }),
                t("Verifying"),
                "..."
              ] }) : isPatreonValid.value ? u(preact.Fragment, { children: [
u(IconCircleCheck, { size: 16 }),
                t("Verified")
              ] }) : t("Verify")
            }
          )
        ] }),
        verificationMessage.value && u("div", { role: "alert", class: `alert alert-soft mt-2 ${verificationSuccess.value ? "alert-success" : "alert-error"}`, children: [
          verificationSuccess.value ? u(IconCircleCheck, { size: 20 }) : u(IconCircleX, { size: 20 }),
u("span", { dir: isArabic ? "rtl" : void 0, children: verificationMessage.value })
        ] })
      ] }),
u("div", { children: [
u("label", { class: "label mb-1", children: u("span", { class: "text-sm flex items-center gap-1", children: [
          t("Auth Token"),
u("div", { class: "tooltip tooltip-right max-w-[200px] sm:max-w-none", "data-tip": t("Paid members can automatically generate auth tokens after verifying Patreon auth—no manual searching required."), children: u(IconInfoCircle, { size: 14, class: "opacity-70" }) })
        ] }) }),
u("div", { class: "join w-full", children: [
u("div", { class: "flex-1", children: u("label", { class: "input input-bordered input-sm join-item flex items-center gap-2 w-full", children: [
u("svg", { class: `h-4 w-4 ${authToken.value.trim() ? "text-success" : "opacity-50"}`, xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24", children: u(
              "g",
              {
                strokeLinejoin: "round",
                strokeLinecap: "round",
                strokeWidth: "2.5",
                fill: "none",
                stroke: "currentColor",
                children: [
u("rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2" }),
u("circle", { cx: "12", cy: "12", r: "2" }),
u("path", { d: "M7 11V7a5 5 0 0 1 10 0v4" })
                ]
              }
            ) }),
u(
              "input",
              {
                type: showAuthToken.value ? "text" : "password",
                class: "grow font-mono",
                placeholder: t("Enter your auth token"),
                value: authToken.value,
                onInput: (e) => {
                  const value = e.target.value;
                  authToken.value = value;
                  autoSaveAuthToken(value);
                }
              }
            ),
u(
              "span",
              {
                class: "cursor-pointer opacity-70 hover:opacity-100",
                onClick: async () => {
                  showAuthToken.value = !showAuthToken.value;
                  try {
                    await mediaDownloaderDB.saveAuthSettings(authToken.value, patreonAuth.value, showAuthToken.value, showPatreonAuth.value);
                  } catch (error) {
                  }
                },
                "aria-label": t("Toggle visibility"),
                children: showAuthToken.value ? u(IconEyeOff, { size: 14 }) : u(IconEye, { size: 14 })
              }
            )
          ] }) }),
u(
            "button",
            {
              class: `btn btn-sm join-item w-28 ${isCopied.value ? "btn-success" : "btn-neutral"}`,
              onClick: async () => {
                if (authToken.value) {
                  try {
                    await navigator.clipboard.writeText(authToken.value);
                    playSuccessSound();
                    isCopied.value = true;
                    setTimeout(() => {
                      isCopied.value = false;
                    }, 500);
                  } catch (err) {
                    const textArea = document.createElement("textarea");
                    textArea.value = authToken.value;
                    textArea.style.position = "fixed";
                    textArea.style.opacity = "0";
                    document.body.appendChild(textArea);
                    textArea.select();
                    try {
                      document.execCommand("copy");
                      playSuccessSound();
                      isCopied.value = true;
                      setTimeout(() => {
                        isCopied.value = false;
                      }, 500);
                    } catch (e) {
                      playErrorSound();
                    }
                    document.body.removeChild(textArea);
                  }
                }
              },
              disabled: !authToken.value,
              children: isCopied.value ? u(preact.Fragment, { children: [
u(IconCircleCheck, { size: 16 }),
                t("Copied")
              ] }) : u(preact.Fragment, { children: [
u(IconCopy, { size: 16 }),
                t("Copy")
              ] })
            }
          )
        ] }),
u("div", { class: "join w-full mt-2", children: [
u(
            "button",
            {
              class: "btn btn-primary btn-sm join-item",
              onClick: generateAuthToken,
              disabled: isGenerating.value || !isPatreonValid.value || patreonAuth.value.trim() === "xbatchdemo",
              children: isGenerating.value ? u("span", { class: "loading loading-spinner loading-xs" }) : u(preact.Fragment, { children: [
u(IconKey, { size: 16 }),
                t("Generate")
              ] })
            }
          ),
u(
            "button",
            {
              class: "btn btn-secondary btn-sm join-item",
              onClick: () => refreshAuthTokens(false),
              disabled: isRefreshing.value || !isPatreonValid.value || patreonAuth.value.trim() === "xbatchdemo",
              children: isRefreshing.value ? u(preact.Fragment, { children: [
u("span", { class: "loading loading-spinner loading-xs" }),
                t("Refreshing"),
                "..."
              ] }) : u(preact.Fragment, { children: [
u(IconRefresh, { size: 16 }),
                t("Refresh")
              ] })
            }
          )
        ] }),
        generationMessage.value && u("div", { role: "alert", class: `alert alert-soft mt-2 ${generationSuccess.value ? "alert-success" : "alert-error"}`, children: [
          generationSuccess.value ? u(IconCircleCheck, { size: 20 }) : u(IconCircleX, { size: 20 }),
u("span", { dir: isArabic ? "rtl" : void 0, children: generationMessage.value })
        ] }),
        refreshMessage.value && u("div", { role: "alert", class: `alert alert-soft mt-2 ${refreshSuccess.value ? "alert-success" : "alert-error"}`, children: [
          refreshSuccess.value ? u(IconCircleCheck, { size: 20 }) : u(IconCircleX, { size: 20 }),
u("span", { dir: isArabic ? "rtl" : void 0, children: refreshMessage.value })
        ] })
      ] }),
u("div", { class: `mt-3 rounded-box bg-base-200 p-2 text-xs space-y-1 ${isArabic ? "text-right" : ""}`, dir: isArabic ? "rtl" : void 0, children: [
u("div", { children: [
          "• ",
          t("Use code"),
          " ",
u(
            "button",
            {
              type: "button",
              class: "text-primary opacity-80 hover:opacity-100 cursor-pointer",
              onClick: () => {
                patreonAuth.value = "xbatchdemo";
                autoSavePatreonAuth("xbatchdemo");
              },
              children: "xbatchdemo"
            }
          ),
          " ",
          t("for Patreon Auth, click Verify to unlock demo. Test at"),
          " ",
u("a", { class: "text-primary opacity-80 hover:opacity-100", href: "https://x.com/xbatchdemo", target: "_blank", rel: "noopener noreferrer", dir: "ltr", children: " @xbatchdemo" })
        ] }),
u("div", { children: [
          "• ",
          t("Need help with Auth Token? See"),
          " ",
u("a", { class: "text-primary opacity-80 hover:opacity-100", href: "https://www.patreon.com/posts/how-to-obtain-127206894", target: "_blank", rel: "noopener noreferrer", children: t("the guide") })
        ] }),
u("div", { children: [
          "• ",
u("a", { class: "text-primary opacity-80 hover:opacity-100", href: "https://www.patreon.com/exyezed/membership", target: "_blank", rel: "noopener noreferrer", children: t("Subscribe") }),
          " ",
          t("to get your Patreon Auth code and start downloading with ease!")
        ] }),
u("div", { children: [
          "• ",
          t("Report bugs or request features:"),
          " ",
u("a", { class: "text-primary opacity-80 hover:opacity-100", href: "mailto:[email protected]", children: "[email protected]" })
        ] })
      ] })
    ] }) });
  }
  const flagSE = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-se'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23005293'%20d='M0%200h640v480H0z'/%3e%3cpath%20fill='%23fecb00'%20d='M176%200v192H0v96h176v192h96V288h368v-96H272V0z'/%3e%3c/svg%3e";
  const flagIN = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20id='flag-icons-in'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23f93'%20d='M0%200h640v160H0z'/%3e%3cpath%20fill='%23fff'%20d='M0%20160h640v160H0z'/%3e%3cpath%20fill='%23128807'%20d='M0%20320h640v160H0z'/%3e%3cg%20transform='matrix(3.2%200%200%203.2%20320%20240)'%3e%3ccircle%20r='20'%20fill='%23008'/%3e%3ccircle%20r='17.5'%20fill='%23fff'/%3e%3ccircle%20r='3.5'%20fill='%23008'/%3e%3cg%20id='in-d'%3e%3cg%20id='in-c'%3e%3cg%20id='in-b'%3e%3cg%20id='in-a'%20fill='%23008'%3e%3ccircle%20r='.9'%20transform='rotate(7.5%20-8.8%20133.5)'/%3e%3cpath%20d='M0%2017.5.6%207%200%202l-.6%205z'/%3e%3c/g%3e%3cuse%20xlink:href='%23in-a'%20width='100%25'%20height='100%25'%20transform='rotate(15)'/%3e%3c/g%3e%3cuse%20xlink:href='%23in-b'%20width='100%25'%20height='100%25'%20transform='rotate(30)'/%3e%3c/g%3e%3cuse%20xlink:href='%23in-c'%20width='100%25'%20height='100%25'%20transform='rotate(60)'/%3e%3c/g%3e%3cuse%20xlink:href='%23in-d'%20width='100%25'%20height='100%25'%20transform='rotate(120)'/%3e%3cuse%20xlink:href='%23in-d'%20width='100%25'%20height='100%25'%20transform='rotate(-120)'/%3e%3c/g%3e%3c/svg%3e";
  const flagFR = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-fr'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23fff'%20d='M0%200h640v480H0z'/%3e%3cpath%20fill='%23000091'%20d='M0%200h213.3v480H0z'/%3e%3cpath%20fill='%23e1000f'%20d='M426.7%200H640v480H426.7z'/%3e%3c/svg%3e";
  const flagUS = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-us'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23bd3d44'%20d='M0%200h640v480H0'/%3e%3cpath%20stroke='%23fff'%20stroke-width='37'%20d='M0%2055.3h640M0%20129h640M0%20203h640M0%20277h640M0%20351h640M0%20425h640'/%3e%3cpath%20fill='%23192f5d'%20d='M0%200h364.8v258.5H0'/%3e%3cmarker%20id='us-a'%20markerHeight='30'%20markerWidth='30'%3e%3cpath%20fill='%23fff'%20d='m14%200%209%2027L0%2010h28L5%2027z'/%3e%3c/marker%3e%3cpath%20fill='none'%20marker-mid='url(%23us-a)'%20d='m0%200%2016%2011h61%2061%2061%2061%2060L47%2037h61%2061%2060%2061L16%2063h61%2061%2061%2061%2060L47%2089h61%2061%2060%2061L16%20115h61%2061%2061%2061%2060L47%20141h61%2061%2060%2061L16%20166h61%2061%2061%2061%2060L47%20192h61%2061%2060%2061L16%20218h61%2061%2061%2061%2060z'/%3e%3c/svg%3e";
  const flagZA = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-za'%20viewBox='0%200%20640%20480'%3e%3cdefs%3e%3cclipPath%20id='za-a'%3e%3cpath%20fill-opacity='.7'%20d='M-71.9%200h682.7v512H-71.9z'/%3e%3c/clipPath%3e%3c/defs%3e%3cg%20clip-path='url(%23za-a)'%20transform='translate(67.4)scale(.93748)'%3e%3cg%20fill-rule='evenodd'%20stroke-width='1pt'%3e%3cpath%20fill='%23000001'%20d='M-71.9%20407.8V104.4L154%20256.1z'/%3e%3cpath%20fill='%23000c8a'%20d='m82.2%20512.1%20253.6-170.6H696V512H82.2z'/%3e%3cpath%20fill='%23e1392d'%20d='M66%200h630v170.8H335.7S69.3-1.7%2066%200'/%3e%3cpath%20fill='%23ffb915'%20d='M-71.9%2064v40.4L154%20256-72%20407.8v40.3l284.5-192z'/%3e%3cpath%20fill='%23007847'%20d='M-71.9%2064V0h95l301.2%20204h371.8v104.2H324.3L23%20512h-94.9v-63.9l284.4-192L-71.8%2064z'/%3e%3cpath%20fill='%23fff'%20d='M23%200h59.2l253.6%20170.7H696V204H324.3zm0%20512.1h59.2l253.6-170.6H696v-33.2H324.3L23%20512z'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
  const flagIE = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-ie'%20viewBox='0%200%20640%20480'%3e%3cg%20fill-rule='evenodd'%20stroke-width='1pt'%3e%3cpath%20fill='%23fff'%20d='M0%200h640v480H0z'/%3e%3cpath%20fill='%23009A49'%20d='M0%200h213.3v480H0z'/%3e%3cpath%20fill='%23FF7900'%20d='M426.7%200H640v480H426.7z'/%3e%3c/g%3e%3c/svg%3e";
  const flagAE = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-ae'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%2300732f'%20d='M0%200h640v160H0z'/%3e%3cpath%20fill='%23fff'%20d='M0%20160h640v160H0z'/%3e%3cpath%20fill='%23000001'%20d='M0%20320h640v160H0z'/%3e%3cpath%20fill='red'%20d='M0%200h220v480H0z'/%3e%3c/svg%3e";
  const flagDE = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-de'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23fc0'%20d='M0%20320h640v160H0z'/%3e%3cpath%20fill='%23000001'%20d='M0%200h640v160H0z'/%3e%3cpath%20fill='red'%20d='M0%20160h640v160H0z'/%3e%3c/svg%3e";
  const flagBR = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-br'%20viewBox='0%200%20640%20480'%3e%3cg%20stroke-width='1pt'%3e%3cpath%20fill='%23229e45'%20fill-rule='evenodd'%20d='M0%200h640v480H0z'/%3e%3cpath%20fill='%23f8e509'%20fill-rule='evenodd'%20d='m321.4%20436%20301.5-195.7L319.6%2044%2017.1%20240.7z'/%3e%3cpath%20fill='%232b49a3'%20fill-rule='evenodd'%20d='M452.8%20240c0%2070.3-57.1%20127.3-127.6%20127.3A127.4%20127.4%200%201%201%20452.8%20240'/%3e%3cpath%20fill='%23ffffef'%20fill-rule='evenodd'%20d='m283.3%20316.3-4-2.3-4%202%20.9-4.5-3.2-3.4%204.5-.5%202.2-4%201.9%204.2%204.4.8-3.3%203m86%2026.3-3.9-2.3-4%202%20.8-4.5-3.1-3.3%204.5-.5%202.1-4.1%202%204.2%204.4.8-3.4%203.1m-36.2-30-3.4-2-3.5%201.8.8-3.9-2.8-2.9%204-.4%201.8-3.6%201.6%203.7%203.9.7-3%202.7m87-8.5-3.4-2-3.5%201.8.8-3.9-2.7-2.8%203.9-.4%201.8-3.5%201.6%203.6%203.8.7-2.9%202.6m-87.3-22-4-2.2-4%202%20.8-4.6-3.1-3.3%204.5-.5%202.1-4.1%202%204.2%204.4.8-3.4%203.2m-104.6-35-4-2.2-4%202%201-4.6-3.3-3.3%204.6-.5%202-4.1%202%204.2%204.4.8-3.3%203.1m13.3%2057.2-4-2.3-4%202%20.9-4.5-3.2-3.3%204.5-.6%202.1-4%202%204.2%204.4.8-3.3%203.1m132-67.3-3.6-2-3.6%201.8.8-4-2.8-3%204-.5%201.9-3.6%201.7%203.8%204%20.7-3%202.7m-6.7%2038.3-2.7-1.6-2.9%201.4.6-3.2-2.2-2.3%203.2-.4%201.5-2.8%201.3%203%203%20.5-2.2%202.2m-142.2%2050.4-2.7-1.5-2.7%201.3.6-3-2.1-2.2%203-.4%201.4-2.7%201.3%202.8%203%20.6-2.3%202M419%20299.8l-2.2-1.1-2.2%201%20.5-2.3-1.7-1.6%202.4-.3%201.2-2%201%202%202.5.5-1.9%201.5'/%3e%3cpath%20fill='%23ffffef'%20fill-rule='evenodd'%20d='m219.3%20287.6-2.7-1.5-2.7%201.3.6-3-2.1-2.2%203-.4%201.4-2.7%201.3%202.8%203%20.6-2.3%202'/%3e%3cpath%20fill='%23ffffef'%20fill-rule='evenodd'%20d='m219.3%20287.6-2.7-1.5-2.7%201.3.6-3-2.1-2.2%203-.4%201.4-2.7%201.3%202.8%203%20.6-2.3%202m42.3%203-2.6-1.4-2.7%201.3.6-3-2.1-2.2%203-.4%201.4-2.7%201.3%202.8%203%20.5-2.3%202.1m-4.8%2017-2.6-1.5-2.7%201.4.6-3-2.1-2.3%203-.4%201.4-2.7%201.3%202.8%203%20.6-2.3%202m87.4-22.2-2.6-1.6-2.8%201.4.6-3-2-2.3%203-.3%201.4-2.7%201.2%202.8%203%20.5-2.2%202.1m-25.1%203-2.7-1.5-2.7%201.4.6-3-2-2.3%203-.3%201.4-2.8%201.2%202.9%203%20.5-2.2%202.1m-68.8-5.8-1.7-1-1.7.8.4-1.9-1.3-1.4%201.9-.2.8-1.7.8%201.8%201.9.3-1.4%201.3m167.8%2045.4-2.6-1.5-2.7%201.4.6-3-2.1-2.3%203-.4%201.4-2.7%201.3%202.8%203%20.6-2.3%202m-20.8%206-2.2-1.4-2.3%201.2.5-2.6-1.7-1.8%202.5-.3%201.2-2.3%201%202.4%202.5.4-1.9%201.8m10.4%202.3-2-1.2-2.1%201%20.4-2.3-1.6-1.7%202.3-.3%201.1-2%201%202%202.3.5-1.7%201.6m29.1-22.8-2-1-2%201%20.5-2.3-1.6-1.7%202.3-.3%201-2%201%202.1%202.1.4-1.6%201.6m-38.8%2041.8-2.5-1.4-2.7%201.2.6-2.8-2-2%203-.3%201.3-2.5%201.2%202.6%203%20.5-2.3%201.9m.6%2014.2-2.4-1.4-2.4%201.3.6-2.8-1.9-2%202.7-.4%201.2-2.5%201.1%202.6%202.7.5-2%202m-19-23.1-1.9-1.2-2%201%20.4-2.2-1.5-1.7%202.2-.2%201-2%201%202%202.2.4-1.6%201.6m-17.8%202.3-2-1.2-2%201%20.5-2.2-1.6-1.7%202.3-.2%201-2%201%202%202.1.4-1.6%201.6m-30.4-24.6-2-1.1-2%201%20.5-2.3-1.6-1.6%202.2-.3%201-2%201%202%202.2.5-1.6%201.5m3.7%2057-1.6-.9-1.8.9.4-2-1.3-1.4%201.9-.2.9-1.7.8%201.8%201.9.3-1.4%201.3m-46.2-86.6-4-2.3-4%202%20.9-4.5-3.2-3.3%204.5-.6%202.2-4%201.9%204.2%204.4.8-3.3%203.1'/%3e%3cpath%20fill='%23fff'%20fill-rule='evenodd'%20d='M444.4%20285.8a125%20125%200%200%200%205.8-19.8c-67.8-59.5-143.3-90-238.7-83.7a125%20125%200%200%200-8.5%2020.9c113-10.8%20196%2039.2%20241.4%2082.6'/%3e%3cpath%20fill='%23309e3a'%20d='m414%20252.4%202.3%201.3a3%203%200%200%200-.3%202.2%203%203%200%200%200%201.4%201.7q1%20.8%202%20.7.9%200%201.3-.7l.2-.9-.5-1-1.5-1.8a8%208%200%200%201-1.8-3%204%204%200%200%201%202-4.4%204%204%200%200%201%202.3-.2%207%207%200%200%201%202.6%201.2q2.1%201.5%202.6%203.2a4%204%200%200%201-.6%203.3l-2.4-1.5q.5-1%20.2-1.7-.2-.8-1.2-1.4a3%203%200%200%200-1.8-.7%201%201%200%200%200-.9.5q-.3.4-.1%201%20.2.8%201.6%202.2t2%202.5a4%204%200%200%201-.3%204.2%204%204%200%200%201-1.9%201.5%204%204%200%200%201-2.4.3q-1.3-.3-2.8-1.3-2.2-1.5-2.7-3.3a5%205%200%200%201%20.6-4zm-11.6-7.6%202.5%201.3a3%203%200%200%200-.2%202.2%203%203%200%200%200%201.4%201.6q1.1.8%202%20.6.9%200%201.3-.8l.2-.8q0-.5-.5-1l-1.6-1.8q-1.7-1.6-2-2.8a4%204%200%200%201%20.4-3.1%204%204%200%200%201%201.6-1.4%204%204%200%200%201%202.2-.3%207%207%200%200%201%202.6%201q2.3%201.5%202.7%203.1a4%204%200%200%201-.4%203.4l-2.5-1.4q.5-1%20.2-1.7-.4-1-1.3-1.4a3%203%200%200%200-1.9-.6%201%201%200%200%200-.8.5q-.3.4-.1%201%20.3.8%201.7%202.2%201.5%201.5%202%202.4a4%204%200%200%201%200%204.2%204%204%200%200%201-1.8%201.6%204%204%200%200%201-2.4.3%208%208%200%200%201-2.9-1.1%206%206%200%200%201-2.8-3.2%205%205%200%200%201%20.4-4m-14.2-3.8%207.3-12%208.8%205.5-1.2%202-6.4-4-1.6%202.7%206%203.7-1.3%202-6-3.7-2%203.3%206.7%204-1.2%202zm-20.7-17%201.1-2%205.4%202.7-2.5%205q-1.2.3-3%20.2a9%209%200%200%201-3.3-1%208%208%200%200%201-3-2.6%206%206%200%200%201-1-3.5%209%209%200%200%201%201-3.7%208%208%200%200%201%202.6-3%206%206%200%200%201%203.6-1.1q1.4%200%203.2%201%202.4%201.1%203.1%202.8a5%205%200%200%201%20.3%203.5l-2.7-.8a3%203%200%200%200-.2-2q-.4-.9-1.6-1.4a4%204%200%200%200-3.1-.3q-1.5.5-2.6%202.6t-.7%203.8a4%204%200%200%200%202%202.4q.8.5%201.7.5h1.8l.8-1.6zm-90.2-22.3%202-14%204.2.7%201.1%209.8%203.9-9%204.2.6-2%2013.8-2.7-.4%201.7-10.9-4.4%2010.5-2.7-.4-1.1-11.3-1.6%2011zm-14.1-1.7%201.3-14%2010.3%201-.2%202.4-7.5-.7-.3%203%207%20.7-.3%202.4-7-.7-.3%203.8%207.8.7-.2%202.4z'/%3e%3cg%20stroke-opacity='.5'%3e%3cpath%20fill='%23309e3a'%20d='M216.5%20191.3q0-2.2.7-3.6a7%207%200%200%201%201.4-1.9%205%205%200%200%201%201.8-1.2q1.5-.5%203-.5%203.1.1%205%202a7%207%200%200%201%201.6%205.5q0%203.3-2%205.3a7%207%200%200%201-5%201.7%207%207%200%200%201-4.8-2%207%207%200%200%201-1.7-5.3'/%3e%3cpath%20fill='%23f7ffff'%20d='M219.4%20191.3q0%202.3%201%203.6t2.8%201.3a4%204%200%200%200%202.8-1.1q1-1.2%201.1-3.7.1-2.4-1-3.6a4%204%200%200%200-2.7-1.3%204%204%200%200%200-2.8%201.2q-1.1%201.2-1.2%203.6'/%3e%3c/g%3e%3cg%20stroke-opacity='.5'%3e%3cpath%20fill='%23309e3a'%20d='m233%20198.5.2-14h6q2.2%200%203.2.5%201%20.3%201.6%201.3c.6%201%20.6%201.4.6%202.3a4%204%200%200%201-1%202.6%205%205%200%200%201-2.7%201.2l1.5%201.2q.6.6%201.5%202.3l1.7%202.8h-3.4l-2-3.2-1.4-2-.9-.6-1.4-.2h-.6v5.8z'/%3e%3cpath%20fill='%23fff'%20d='M236%20190.5h2q2.1%200%202.6-.2.5-.1.8-.5.4-.6.3-1%200-.9-.4-1.2-.3-.4-1-.6h-2l-2.3-.1z'/%3e%3c/g%3e%3cg%20stroke-opacity='.5'%3e%3cpath%20fill='%23309e3a'%20d='m249%20185.2%205.2.3q1.7%200%202.6.3a5%205%200%200%201%202%201.4%206%206%200%200%201%201.2%202.4q.4%201.4.3%203.3a9%209%200%200%201-.5%203q-.6%201.5-1.7%202.4a5%205%200%200%201-2%201q-1%20.3-2.5.2l-5.3-.3z'/%3e%3cpath%20fill='%23fff'%20d='m251.7%20187.7-.5%209.3h3.8q.8%200%201.2-.5.5-.4.8-1.3t.4-2.6l-.1-2.5a3%203%200%200%200-.8-1.4l-1.2-.7-2.3-.3z'/%3e%3c/g%3e%3cg%20stroke-opacity='.5'%3e%3cpath%20fill='%23309e3a'%20d='m317.6%20210.2%203.3-13.6%204.4%201%203.2%201q1.1.6%201.6%201.9t.2%202.8q-.3%201.2-1%202a4%204%200%200%201-3%201.4q-1%200-3-.5l-1.7-.5-1.2%205.2z'/%3e%3cpath%20fill='%23fff'%20d='m323%20199.6-.8%203.8%201.5.4q1.6.4%202.2.3a2%202%200%200%200%201.6-1.5q0-.7-.2-1.3a2%202%200%200%200-1-.9l-1.9-.5-1.3-.3z'/%3e%3c/g%3e%3cg%20stroke-opacity='.5'%3e%3cpath%20fill='%23309e3a'%20d='m330.6%20214.1%204.7-13.2%205.5%202q2.2.8%203%201.4.8.7%201%201.8c.2%201.1.2%201.5%200%202.3q-.6%201.5-1.8%202.2-1.2.6-3%20.3.6.7%201%201.6l.8%202.7.6%203.1-3.1-1.1-1-3.6-.7-2.4-.6-.8q-.3-.4-1.3-.7l-.5-.2-2%205.6z'/%3e%3cpath%20fill='%23fff'%20d='m336%20207.4%201.9.7q2%20.7%202.5.7t.9-.3q.5-.3.6-.9.3-.6%200-1.2l-.8-.9-2-.7-2-.7-1.2%203.3z'/%3e%3c/g%3e%3cg%20stroke-opacity='.5'%3e%3cpath%20fill='%23309e3a'%20d='M347%20213.6a9%209%200%200%201%201.7-3.2l1.8-1.5%202-.7q1.5-.1%203.1.4a7%207%200%200%201%204.2%203.3q1.2%202.4.2%205.7a7%207%200%200%201-3.4%204.5q-2.3%201.3-5.2.4a7%207%200%200%201-4.2-3.3%207%207%200%200%201-.2-5.6'/%3e%3cpath%20fill='%23fff'%20d='M349.8%20214.4q-.7%202.3%200%203.8c.7%201.5%201.2%201.6%202.3%202q1.5.5%203-.4%201.4-.8%202.1-3.2.8-2.2%200-3.7a4%204%200%200%200-2.2-2%204%204%200%200%200-3%20.3q-1.5.8-2.2%203.2'/%3e%3c/g%3e%3cg%20stroke-opacity='.5'%3e%3cpath%20fill='%23309e3a'%20d='m374.3%20233.1%206.4-12.4%205.3%202.7a10%2010%200%200%201%202.7%201.9q.8.7.8%201.9c0%201.2%200%201.5-.4%202.2a4%204%200%200%201-2%202q-1.5.4-3.1-.2.6%201%20.8%201.7.3.9.4%202.8l.2%203.2-3-1.5-.4-3.7-.3-2.5-.5-1-1.2-.7-.5-.3-2.7%205.2z'/%3e%3cpath%20fill='%23fff'%20d='m380.5%20227.2%201.9%201q1.8%201%202.3%201t1-.2q.4-.2.7-.8t.2-1.2l-.7-1-1.8-1-2-1z'/%3e%3c/g%3e%3cg%20stroke-opacity='.5'%3e%3cpath%20fill='%23309e3a'%20d='M426.1%20258.7a9%209%200%200%201%202.5-2.6%207%207%200%200%201%202.2-.9%206%206%200%200%201%202.2%200q1.5.3%202.8%201.2a7%207%200%200%201%203%204.4q.4%202.6-1.4%205.5a7%207%200%200%201-4.5%203.3%207%207%200%200%201-5.2-1.1%207%207%200%200%201-3-4.4q-.4-2.7%201.4-5.4'/%3e%3cpath%20fill='%23fff'%20d='M428.6%20260.3q-1.4%202-1.1%203.6a4%204%200%200%200%201.6%202.5q1.5%201%203%20.6t2.9-2.4q1.4-2.1%201.1-3.6t-1.6-2.6c-1.4-1.1-2-.8-3-.5q-1.5.3-3%202.4z'/%3e%3c/g%3e%3cpath%20fill='%23309e3a'%20d='m301.8%20204.5%202.3-9.8%207.2%201.7-.3%201.6-5.3-1.2-.5%202.2%204.9%201.1-.4%201.7-4.9-1.2-.6%202.7%205.5%201.3-.4%201.6z'/%3e%3c/g%3e%3c/svg%3e";
  const flagHK = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20id='flag-icons-hk'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23EC1B2E'%20d='M0%200h640v480H0'/%3e%3cpath%20id='hk-a'%20fill='%23fff'%20d='M346.3%20103.1C267%2098%20230.6%20201.9%20305.6%20240.3c-26-22.4-20.6-55.3-10.1-72.4l1.9%201.1c-13.8%2023.5-11.2%2052.7%2011.1%2071-12.7-12.3-9.5-39%2012.1-48.9s23.6-39.3%2016.4-49.1q-14.7-25.6%209.3-38.9M307.9%20164l-4.7%207.4-1.8-8.6-8.6-2.3%207.8-4.3-.6-8.9%206.5%206.1%208.3-3.3-3.7%208.1%205.6%206.8z'/%3e%3cuse%20xlink:href='%23hk-a'%20transform='rotate(72%20312.5%20243.5)'/%3e%3cuse%20xlink:href='%23hk-a'%20transform='rotate(144%20312.5%20243.5)'/%3e%3cuse%20xlink:href='%23hk-a'%20transform='rotate(216%20312.5%20243.5)'/%3e%3cuse%20xlink:href='%23hk-a'%20transform='rotate(288%20312.5%20243.5)'/%3e%3c/svg%3e";
  const flagJP = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-jp'%20viewBox='0%200%20640%20480'%3e%3cdefs%3e%3cclipPath%20id='jp-a'%3e%3cpath%20fill-opacity='.7'%20d='M-88%2032h640v480H-88z'/%3e%3c/clipPath%3e%3c/defs%3e%3cg%20fill-rule='evenodd'%20stroke-width='1pt'%20clip-path='url(%23jp-a)'%20transform='translate(88%20-32)'%3e%3cpath%20fill='%23fff'%20d='M-128%2032h720v480h-720z'/%3e%3ccircle%20cx='523.1'%20cy='344.1'%20r='194.9'%20fill='%23bc002d'%20transform='translate(-168.4%208.6)scale(.76554)'/%3e%3c/g%3e%3c/svg%3e";
  const flagKR = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20id='flag-icons-kr'%20viewBox='0%200%20640%20480'%3e%3cdefs%3e%3cclipPath%20id='kr-a'%3e%3cpath%20fill-opacity='.7'%20d='M-95.8-.4h682.7v512H-95.8z'/%3e%3c/clipPath%3e%3c/defs%3e%3cg%20fill-rule='evenodd'%20clip-path='url(%23kr-a)'%20transform='translate(89.8%20.4)scale(.9375)'%3e%3cpath%20fill='%23fff'%20d='M-95.8-.4H587v512H-95.8Z'/%3e%3cg%20transform='rotate(-56.3%20361.6%20-101.3)scale(10.66667)'%3e%3cg%20id='kr-c'%3e%3cpath%20id='kr-b'%20fill='%23000001'%20d='M-6-26H6v2H-6Zm0%203H6v2H-6Zm0%203H6v2H-6Z'/%3e%3cuse%20xlink:href='%23kr-b'%20width='100%25'%20height='100%25'%20y='44'/%3e%3c/g%3e%3cpath%20stroke='%23fff'%20d='M0%2017v10'/%3e%3cpath%20fill='%23cd2e3a'%20d='M0-12a12%2012%200%200%201%200%2024Z'/%3e%3cpath%20fill='%230047a0'%20d='M0-12a12%2012%200%200%200%200%2024A6%206%200%200%200%200%200Z'/%3e%3ccircle%20cy='-6'%20r='6'%20fill='%23cd2e3a'/%3e%3c/g%3e%3cg%20transform='rotate(-123.7%20191.2%2062.2)scale(10.66667)'%3e%3cuse%20xlink:href='%23kr-c'%20width='100%25'%20height='100%25'/%3e%3cpath%20stroke='%23fff'%20d='M0-23.5v3M0%2017v3.5m0%203v3'/%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
  const flagGB = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-gb'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23012169'%20d='M0%200h640v480H0z'/%3e%3cpath%20fill='%23FFF'%20d='m75%200%20244%20181L562%200h78v62L400%20241l240%20178v61h-80L320%20301%2081%20480H0v-60l239-178L0%2064V0z'/%3e%3cpath%20fill='%23C8102E'%20d='m424%20281%20216%20159v40L369%20281zm-184%2020%206%2035L54%20480H0zM640%200v3L391%20191l2-44L590%200zM0%200l239%20176h-60L0%2042z'/%3e%3cpath%20fill='%23FFF'%20d='M241%200v480h160V0zM0%20160v160h640V160z'/%3e%3cpath%20fill='%23C8102E'%20d='M0%20193v96h640v-96zM273%200v480h96V0z'/%3e%3c/svg%3e";
  const flagSG = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-sg'%20viewBox='0%200%20640%20480'%3e%3cdefs%3e%3cclipPath%20id='sg-a'%3e%3cpath%20fill-opacity='.7'%20d='M0%200h640v480H0z'/%3e%3c/clipPath%3e%3c/defs%3e%3cg%20fill-rule='evenodd'%20clip-path='url(%23sg-a)'%3e%3cpath%20fill='%23fff'%20d='M-20%200h720v480H-20z'/%3e%3cpath%20fill='%23df0000'%20d='M-20%200h720v240H-20z'/%3e%3cpath%20fill='%23fff'%20d='M146%2040.2a84.4%2084.4%200%200%200%20.8%20165.2%2086%2086%200%200%201-106.6-59%2086%2086%200%200%201%2059-106c16-4.6%2030.8-4.7%2046.9-.2z'/%3e%3cpath%20fill='%23fff'%20d='m133%20110%204.9%2015-13-9.2-12.8%209.4%204.7-15.2-12.8-9.3%2015.9-.2%205-15%205%2015h15.8zm17.5%2052%205%2015.1-13-9.2-12.9%209.3%204.8-15.1-12.8-9.4%2015.9-.1%204.9-15.1%205%2015h16zm58.5-.4%204.9%2015.2-13-9.3-12.8%209.3%204.7-15.1-12.8-9.3%2015.9-.2%205-15%205%2015h15.8zm17.4-51.6%204.9%2015.1-13-9.2-12.8%209.3%204.8-15.1-12.9-9.4%2016-.1%204.8-15.1%205%2015h16zm-46.3-34.3%205%2015.2-13-9.3-12.9%209.4%204.8-15.2-12.8-9.4%2015.8-.1%205-15.1%205%2015h16z'/%3e%3c/g%3e%3c/svg%3e";
  const flagAU = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-au'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%2300008B'%20d='M0%200h640v480H0z'/%3e%3cpath%20fill='%23fff'%20d='m37.5%200%20122%2090.5L281%200h39v31l-120%2089.5%20120%2089V240h-40l-120-89.5L40.5%20240H0v-30l119.5-89L0%2032V0z'/%3e%3cpath%20fill='red'%20d='M212%20140.5%20320%20220v20l-135.5-99.5zm-92%2010%203%2017.5-96%2072H0zM320%200v1.5l-124.5%2094%201-22L295%200zM0%200l119.5%2088h-30L0%2021z'/%3e%3cpath%20fill='%23fff'%20d='M120.5%200v240h80V0zM0%2080v80h320V80z'/%3e%3cpath%20fill='red'%20d='M0%2096.5v48h320v-48zM136.5%200v240h48V0z'/%3e%3cpath%20fill='%23fff'%20d='m527%20396.7-20.5%202.6%202.2%2020.5-14.8-14.4-14.7%2014.5%202-20.5-20.5-2.4%2017.3-11.2-10.9-17.5%2019.6%206.5%206.9-19.5%207.1%2019.4%2019.5-6.7-10.7%2017.6zm-3.7-117.2%202.7-13-9.8-9%2013.2-1.5%205.5-12.1%205.5%2012.1%2013.2%201.5-9.8%209%202.7%2013-11.6-6.6zm-104.1-60-20.3%202.2%201.8%2020.3-14.4-14.5-14.8%2014.1%202.4-20.3-20.2-2.7%2017.3-10.8-10.5-17.5%2019.3%206.8L387%20178l6.7%2019.3%2019.4-6.3-10.9%2017.3%2017.1%2011.2ZM623%20186.7l-20.9%202.7%202.3%2020.9-15.1-14.7-15%2014.8%202.1-21-20.9-2.4%2017.7-11.5-11.1-17.9%2020%206.7%207-19.8%207.2%2019.8%2019.9-6.9-11%2018zm-96.1-83.5-20.7%202.3%201.9%2020.8-14.7-14.8-15.1%2014.4%202.4-20.7-20.7-2.8%2017.7-11L467%2073.5l19.7%206.9%207.3-19.5%206.8%2019.7%2019.8-6.5-11.1%2017.6zM234%20385.7l-45.8%205.4%204.6%2045.9-32.8-32.4-33%2032.2%204.9-45.9-45.8-5.8%2038.9-24.8-24-39.4%2043.6%2015%2015.8-43.4%2015.5%2043.5%2043.7-14.7-24.3%2039.2%2038.8%2025.1Z'/%3e%3c/svg%3e";
  const SERVER_CONFIG = {
    stockholm: { name: "Stockholm", region: "Sweden", flag: flagSE },
    mumbai: { name: "Mumbai", region: "India", flag: flagIN },
    paris: { name: "Paris", region: "France", flag: flagFR },
    cleveland: { name: "Cleveland", region: "USA", flag: flagUS },
    capetown: { name: "Cape Town", region: "South Africa", flag: flagZA },
    dublin: { name: "Dublin", region: "Ireland", flag: flagIE },
    dubai: { name: "Dubai", region: "United Arab Emirates", flag: flagAE },
    frankfurt: { name: "Frankfurt", region: "Germany", flag: flagDE },
    saopaulo: { name: "São Paulo", region: "Brazil", flag: flagBR },
    hongkong: { name: "Hong Kong", region: "Hong Kong", flag: flagHK },
    tokyo: { name: "Tokyo", region: "Japan", flag: flagJP },
    washington: { name: "Washington, D.C.", region: "USA", flag: flagUS },
    seoul: { name: "Seoul", region: "South Korea", flag: flagKR },
    osaka: { name: "Osaka", region: "Japan", flag: flagJP },
    london: { name: "London", region: "United Kingdom", flag: flagGB },
    portland: { name: "Portland", region: "USA", flag: flagUS },
    sanfrancisco: { name: "San Francisco", region: "USA", flag: flagUS },
    singapore: { name: "Singapore", region: "Singapore", flag: flagSG },
    sydney: { name: "Sydney", region: "Australia", flag: flagAU }
  };
  function Settings() {
    const { t } = useTranslation();
    const [, force] = hooks.useState(0);
    const getApiServer = () => {
      const server = appOptionsManager.get("apiServer");
      if (server && server in SERVER_CONFIG) {
        return server;
      }
      const legacyServer = server;
      if (legacyServer === "oregon") {
        appOptionsManager.set("apiServer", "washington");
        return "washington";
      }
      if (legacyServer === "frankfurt") {
        appOptionsManager.set("apiServer", "frankfurt");
        return "frankfurt";
      }
      if (legacyServer === "singapore") {
        appOptionsManager.set("apiServer", "singapore");
        return "singapore";
      }
      appOptionsManager.set("apiServer", "washington");
      return "washington";
    };
    const currentServer = getApiServer();
    const currentConfig = SERVER_CONFIG[currentServer] || SERVER_CONFIG.washington;
    return u("div", { class: "space-y-4", children: [
u("div", { class: "flex items-center justify-between", children: [
u("span", { class: "text-sm flex items-center gap-1", children: [
          t("Server"),
u("div", { class: "tooltip tooltip-right", "data-tip": t("Choose the server closest to your location for best performance"), children: u(IconInfoCircle, { size: 14, class: "opacity-70" }) })
        ] }),
u("div", { class: "dropdown dropdown-end", children: [
u(
            "div",
            {
              tabIndex: 0,
              role: "button",
              class: "btn btn-sm gap-1.5 px-1.5 justify-start",
              "aria-label": t("Server"),
              children: [
u("div", { class: "w-5 flex items-center justify-center", children: u(
                  "img",
                  {
                    src: currentConfig.flag,
                    alt: "",
                    class: "h-3 w-4 rounded-sm object-cover border border-base-content/10 bg-base-100"
                  }
                ) }),
u("div", { class: "w-24 truncate text-xs text-left", children: currentConfig.name }),
u(
                  "svg",
                  {
                    width: "12px",
                    height: "12px",
                    class: "mt-px hidden size-2 fill-current opacity-60 sm:inline-block ml-auto",
                    xmlns: "http://www.w3.org/2000/svg",
                    viewBox: "0 0 2048 2048",
                    children: u("path", { d: "M1799 349l242 241-1017 1017L7 590l242-241 775 775 775-775z" })
                  }
                )
              ]
            }
          ),
u(
            "div",
            {
              tabIndex: 0,
              class: "dropdown-content bg-base-200 text-base-content rounded-box mt-2 max-h-52 overflow-y-auto border-(length:--border) border-white/5 shadow-2xl outline-(length:--border) outline-black/5",
              children: u("ul", { class: "menu w-48", children: [
u("li", { class: "menu-title text-xs", children: t("Server") }),
                Object.entries(SERVER_CONFIG).map(([key, config]) => u("li", { children: u(
                  "button",
                  {
                    class: cx("gap-3 px-2", currentServer === key && "[&_svg]:visible"),
                    onClick: () => {
                      playRadioClickSound();
                      appOptionsManager.set("apiServer", key);
                      force((x) => x + 1);
                    },
                    children: [
u(
                        "img",
                        {
                          src: config.flag,
                          alt: "",
                          class: "h-3 w-4 rounded-sm object-cover border border-base-content/10 bg-base-100"
                        }
                      ),
u("div", { class: "flex-1 min-w-0", children: [
u("div", { class: "truncate", children: config.name }),
u("div", { class: "text-[10px] opacity-60 truncate", children: config.region })
                      ] }),
u(
                        "svg",
                        {
                          xmlns: "http://www.w3.org/2000/svg",
                          width: "16",
                          height: "16",
                          viewBox: "0 0 24 24",
                          fill: "currentColor",
                          class: "invisible h-3 w-3 shrink-0",
                          children: u("path", { d: "M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z" })
                        }
                      )
                    ]
                  }
                ) }, key))
              ] })
            }
          )
        ] })
      ] }),
u("div", { class: "flex items-center justify-between", children: [
u("span", { class: "text-sm flex items-center gap-1", children: [
          t("Server Timeout"),
u("div", { class: "tooltip tooltip-right", "data-tip": t("Timeout for server responses in seconds. Auto-generate token if timeout occurs."), children: u(IconInfoCircle, { size: 14, class: "opacity-70" }) })
        ] }),
u(
          "input",
          {
            type: "number",
            min: "1",
            max: "300",
            class: "input input-bordered input-sm w-16 text-right",
            value: appOptionsManager.get("apiTimeout") ?? 60,
            onChange: (e) => {
              const v = parseInt(e.target.value, 10);
              let safe = Number.isFinite(v) && v >= 1 ? v : 60;
              if (safe > 300) {
                safe = 300;
              }
              appOptionsManager.set("apiTimeout", safe);
              force((x) => x + 1);
            },
            onBlur: (e) => {
              const v = parseInt(e.target.value, 10);
              let safe = Number.isFinite(v) && v >= 1 ? v : 60;
              if (safe > 300) {
                safe = 300;
                e.target.value = "300";
              }
              appOptionsManager.set("apiTimeout", safe);
              force((x) => x + 1);
            },
            "aria-label": t("Server Timeout")
          }
        )
      ] }),
u("div", { class: "divider my-2" }),
u("div", { class: "flex justify-between items-center", children: [
u("span", { class: "text-sm flex items-center gap-1", children: [
          t("Convert Animated GIFs"),
u("div", { class: "tooltip tooltip-right", "data-tip": t("Larger size, same quality"), children: u(IconInfoCircle, { size: 14, class: "opacity-70" }) })
        ] }),
u(
          "input",
          {
            type: "checkbox",
            class: "toggle toggle-primary",
            checked: appOptionsManager.get("convertAnimatedGifs") ?? true,
            onChange: (e) => {
              const checked = e.target.checked;
              checked ? playToggleOnSound() : playToggleOffSound();
              appOptionsManager.set("convertAnimatedGifs", checked);
              if (checked) {
                appOptionsManager.set("convertGifsExternal", false);
              }
              force((x) => x + 1);
            }
          }
        )
      ] }),
u("div", { class: "flex justify-between items-center", children: [
u("span", { class: "text-sm flex items-center gap-1", children: [
          t("Convert GIFs (External)"),
u("div", { class: "tooltip tooltip-right", "data-tip": t("Smaller size, same quality"), children: u(IconInfoCircle, { size: 14, class: "opacity-70" }) })
        ] }),
u(
          "input",
          {
            type: "checkbox",
            class: "toggle toggle-primary",
            checked: appOptionsManager.get("convertGifsExternal") ?? false,
            onChange: (e) => {
              const checked = e.target.checked;
              checked ? playToggleOnSound() : playToggleOffSound();
              appOptionsManager.set("convertGifsExternal", checked);
              if (checked) {
                appOptionsManager.set("convertAnimatedGifs", false);
              }
              force((x) => x + 1);
            }
          }
        )
      ] }),
u("div", { class: "flex items-center justify-between", children: [
u("span", { class: "text-sm flex items-center gap-1", children: [
          t("Concurrent Downloads"),
u("div", { class: "tooltip tooltip-right", "data-tip": t("If downloads fail, use concurrent 1"), children: u(IconInfoCircle, { size: 14, class: "opacity-70" }) })
        ] }),
u(
          "input",
          {
            type: "number",
            min: "1",
            max: "50",
            class: "input input-bordered input-sm w-16 text-right",
            value: appOptionsManager.get("downloadConcurrency") ?? 10,
            onChange: (e) => {
              const v = parseInt(e.target.value, 10);
              const safe = Number.isFinite(v) && v >= 1 && v <= 50 ? v : 10;
              appOptionsManager.set("downloadConcurrency", safe);
              force((x) => x + 1);
            },
            "aria-label": t("Concurrent Downloads")
          }
        )
      ] })
    ] });
  }
  function ThemeSelector({
    dropdownClasses = "",
    btnClasses = "btn-ghost",
    contentClasses = "mt-16"
  }) {
    const { t } = useTranslation();
    const currentTheme = signals.useSignal(appOptionsManager.get("theme"));
    hooks.useEffect(() => {
      const unsub = appOptionsManager.signal.subscribe(() => {
        currentTheme.value = appOptionsManager.get("theme");
      });
      return () => {
        try {
          unsub?.();
        } catch {
        }
      };
    }, []);
    hooks.useEffect(() => {
      document.documentElement.setAttribute("data-theme", currentTheme.value || "light");
    }, [currentTheme.value]);
    const handleThemeChange = (theme) => {
      playClickSound();
      currentTheme.value = theme;
      appOptionsManager.set("theme", theme);
      document.documentElement.setAttribute("data-theme", theme);
    };
    return u("div", { class: cx("dropdown dropdown-end block", dropdownClasses), children: [
u(
        "div",
        {
          tabIndex: 0,
          role: "button",
          class: cx("btn group btn-sm gap-1.5 px-1.5 justify-start", btnClasses),
          "aria-label": t("Change Theme"),
          children: [
u("div", { class: "bg-base-100 group-hover:border-base-content/20 border-base-content/10 grid shrink-0 grid-cols-2 gap-0.5 rounded-md border p-1 transition-colors", children: [
u("div", { class: "bg-base-content size-1 rounded-full" }),
u("div", { class: "bg-primary size-1 rounded-full" }),
u("div", { class: "bg-secondary size-1 rounded-full" }),
u("div", { class: "bg-accent size-1 rounded-full" })
            ] }),
u("div", { class: "w-24 truncate text-xs capitalize text-left", children: currentTheme.value || "light" }),
u(
              "svg",
              {
                width: "12px",
                height: "12px",
                class: "mt-px hidden size-2 fill-current opacity-60 sm:inline-block ml-auto",
                xmlns: "http://www.w3.org/2000/svg",
                viewBox: "0 0 2048 2048",
                children: u("path", { d: "M1799 349l242 241-1017 1017L7 590l242-241 775 775 775-775z" })
              }
            )
          ]
        }
      ),
u(
        "div",
        {
          tabIndex: 0,
          class: cx(
            "dropdown-content bg-base-200 text-base-content rounded-box mt-2 max-h-60 overflow-y-auto border-(length:--border) border-white/5 shadow-2xl outline-(length:--border) outline-black/5",
            contentClasses
          ),
          children: u("ul", { class: "menu w-56", children: [
u("li", { class: "menu-title text-xs", children: t("Change Theme") }),
            THEMES.map((theme) => u("li", { children: u(
              "button",
              {
                class: cx(
                  "gap-3 px-2",
                  currentTheme.value === theme && "[&_svg]:visible"
                ),
                onClick: () => handleThemeChange(theme),
                children: [
u(
                    "div",
                    {
                      "data-theme": theme,
                      class: "bg-base-100 grid shrink-0 grid-cols-2 gap-0.5 rounded-md p-1 shadow-sm",
                      children: [
u("div", { class: "bg-base-content size-1 rounded-full" }),
u("div", { class: "bg-primary size-1 rounded-full" }),
u("div", { class: "bg-secondary size-1 rounded-full" }),
u("div", { class: "bg-accent size-1 rounded-full" })
                      ]
                    }
                  ),
u("div", { class: "w-32 truncate capitalize", children: theme }),
u(
                    "svg",
                    {
                      xmlns: "http://www.w3.org/2000/svg",
                      width: "16",
                      height: "16",
                      viewBox: "0 0 24 24",
                      fill: "currentColor",
                      class: "invisible h-3 w-3 shrink-0",
                      children: u("path", { d: "M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z" })
                    }
                  )
                ]
              }
            ) }, theme))
          ] })
        }
      )
    ] });
  }
  const flagCN = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20id='flag-icons-cn'%20viewBox='0%200%20640%20480'%3e%3cdefs%3e%3cpath%20id='cn-a'%20fill='%23ff0'%20d='M-.6.8%200-1%20.6.8-1-.3h2z'/%3e%3c/defs%3e%3cpath%20fill='%23ee1c25'%20d='M0%200h640v480H0z'/%3e%3cuse%20xlink:href='%23cn-a'%20width='30'%20height='20'%20transform='matrix(71.9991%200%200%2072%20120%20120)'/%3e%3cuse%20xlink:href='%23cn-a'%20width='30'%20height='20'%20transform='matrix(-12.33562%20-20.5871%2020.58684%20-12.33577%20240.3%2048)'/%3e%3cuse%20xlink:href='%23cn-a'%20width='30'%20height='20'%20transform='matrix(-3.38573%20-23.75998%2023.75968%20-3.38578%20288%2095.8)'/%3e%3cuse%20xlink:href='%23cn-a'%20width='30'%20height='20'%20transform='matrix(6.5991%20-23.0749%2023.0746%206.59919%20288%20168)'/%3e%3cuse%20xlink:href='%23cn-a'%20width='30'%20height='20'%20transform='matrix(14.9991%20-18.73557%2018.73533%2014.99929%20240%20216)'/%3e%3c/svg%3e";
  const flagSA = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-sa'%20viewBox='0%200%20640%20480'%3e%3cdefs%3e%3cclipPath%20id='sa-a'%3e%3cpath%20fill-opacity='.7'%20d='M-85.3%200h682.6v512H-85.3z'/%3e%3c/clipPath%3e%3c/defs%3e%3cg%20fill-rule='evenodd'%20clip-path='url(%23sa-a)'%20transform='translate(80)scale(.9375)'%3e%3cpath%20fill='%23165d31'%20d='M-128%200h768v512h-768z'/%3e%3cpath%20fill='%23fff'%20d='M65.5%20145.1c-.8%2012-2%2033%208.3%2035.2%2012.3%201.2%205.5-20.8%2010-24.8.8-2%202.3-2%202.4.5v18.7c0%206%204%207.8%207%209%203.2-.2%205.4%200%206.6%203l1.6%2032.3s7.4%202.2%207.8-18.1c.3-12-2.4-21.9-.8-24.2%200-2.3%203-2.4%205-1.3%203.2%202.2%204.6%205%209.6%204%207.6-2.2%2012.2-5.9%2012.3-11.7a47%2047%200%200%200-3.5-16.6c.4-1-1.4-3.7-1-4.7%201.3%202.2%203.4%202%203.8%200-1.3-4.2-3.3-8.3-6.5-10-2.7-2.4-6.7-2-8%203-.8%205.7%202%2012.4%206.1%2018%20.9%202.1%202.1%205.7%201.6%208.9q-3.4%201.8-6.3-1.2s-6-4.5-6-5.6c1.6-10.2.3-11.4-.6-14.3-.6-3.9-2.5-5.2-4-7.8-1.5-1.6-3.5-1.6-4.5%200-2.7%204.6-1.4%2014.5.5%2019%201.4%204.1%203.5%206.7%202.5%206.7-.8%202.3-2.5%201.7-3.8-1a67%2067%200%200%201-2.1-17.4c-.5-4.6-1.1-14.4-4.2-17-1.8-2.4-4.5-1.2-5.5%201a82%2082%200%200%200%20.3%2013.4c2%207.4%202.7%2014%203.7%2021.5.3%2010.1-5.8%204.4-5.5-.7a45%2045%200%200%200-.3-19.4c-1-2.6-2.1-3.2-4.6-2.8-1.9%200-6.8%205.3-8.2%2014.3%200%200-1.2%204.6-1.7%208.7-.7%204.6-3.7%208-5.9-.6-1.8-6.3-3-21.6-6-18z'/%3e%3cpath%20fill='%23fff'%20d='m99%20194.2-32%2015.4c.3-7.3%2015.1-20.4%2025.3-20.5%206.5.1%204.9%202.5%206.6%205.1z'/%3e%3cpath%20fill='%23fff'%20d='M93.3%20204.2c-16.8%2043.5%2039.5%2049.6%2045.8%201.8.6-2%203-3.9%203.4-.7-1.3%2043.3-43.6%2046.2-50.8%2032.6a42%2042%200%200%201-2.5-14.6c-1-8.5-5.5-5.2-6.2%203.2-.7%204.7-.5%206-.5%2010.5%202.2%2034.2%2056.7%2019.5%2065.6-8.7%204.7-15.6-.8-27.1%201.7-27.1%205.4%205.8%2013%20.8%2014.7-1.2.7-1%202.5-1.7%203.7-.4%204.2%203%2011.6%201.6%2013.2-3.7q1.4-8%201.8-16.2c-3.5%201-6%201.7-6.3%203.2l-.7%204.6c-.3%201.5-3.2%201.5-3.4-.4-1.3-6-6.7-6.7-10%202.5-2.1%201.8-6.1%202.2-6.5-.5.5-6.2-2-7-7-4.1l-4.8-36.2c2%200%204%201.5%205.9-.9-2-6.5-6.5-19.7-9-20.7-1.1-1.4-2.1-.5-3.7-.1-2.6.8-5%203-4.2%207.4%203%2018.8%205%2033.1%208.1%2052%20.5%202.1-1.3%205-3.7%204.7-4-2.7-5-8.2-12-8-5%200-10.6%205.5-11.3%2010.7-.9%204.2-1.2%208.7%200%2012.3%203.5%204.2%207.7%203.8%2011.4%202.9%203-1.3%205.5-4.3%206.6-3.6.7.9.1%2010.9-14.3%2018.5-8.7%204-15.7%204.8-19.4-2.3-2.3-4.5.2-21.4-5.6-17.5'/%3e%3cpath%20fill='%23fff'%20d='M165%20160c3.3-1.2%2019.3-19.6%2019.3-19.6l-2.4-2q-1.3-1.1%200-2.2c4-2.4%202.7-7.4.7-9.8a10%2010%200%200%200-8.7.1c-2.8%202.7-3.4%207-1.2%209.6%202.1%201%204.2%203.2%202.8%204.4-6.6%207-24.5%2019.1-22.4%2019.5.4.6%2011.5.6%2011.8%200zm-97%2065c-6%209.6-6.5%2023.9-3.2%2028.2%201.8%202%204.7%202.9%206.8%202.2%203.8-1.6%205.5-9.3%204.6-12q-1.8-3-3.6-.7c-2.6%205.4-3.7%201.7-4-1.3a70%2070%200%200%201%20.8-15.2c.7-4.2%200-3-1.4-1.2m257.1-15.3c-5.8-12.6-13.9-25-16.4-29.7a558%20558%200%200%200-24.8-36c-6.2-7.4%2010.2%203.1-2-11.7l-8.9-7.5c-2-1.4-6.8-4-7.6.2-.4%203.8-.2%205.8.4%208.9.5%202%203.5%205.5%205%207.5a565%20565%200%200%201%2053.8%2086.5c2.6-1.3%202-16.1.5-18.2'/%3e%3cpath%20fill='%23fff'%20d='M299.6%20251.5c-1.2%201.3%202.8%206.8%208%206.8%208.6-1%2016.2-5.8%2023.2-18.6a33%2033%200%200%200%205.3-14.2%20317%20317%200%200%200-5.8-72.4c-.3-2%200-4.4.2-5%20.6-.7%202.5%200%203.5-1.7%201.5-1.5-4-14-7-18.7-1-2.2-1.5-3.6-3.3.2a27%2027%200%200%200-3%2013.6c4.1%2028.5%205.4%2053.4%208%2081.9.3%202.8-.1%206.8-2%208.4a80%2080%200%200%201-27.1%2019.7m116.5-.1c-6.2%203.6-6.2%207.7-1.2%207.8%208.6-1%2018.8-1.7%2025.8-12.3a41%2041%200%200%200%204.2-16%20303%20303%200%200%200-4.7-71.4c-.2-2-1.1-6.7-.8-7.3.6-1.4%203.4.1%204.4-1.5%201.4-1.5-7.3-12.7-10.4-17.5-1-2.2-1.4-3.6-3.3.2a22%2022%200%200%200-1.8%2013.6c4.6%2031%208%2054.2%208.7%2081.6-.4%202.6-.5%204-1.7%207.3-2.7%203.4-5.7%207.8-8.5%209.9-2.8%202-8.8%204-10.7%205.6'/%3e%3cpath%20fill='%23fff'%20d='M420.7%20223.7q.1-10.9-.1-19a34%2034%200%200%200-3-13.5c-1.8-4.1-.7-7.4-1.6-11.8-.8-4.4-.6-11-1.8-16.1-.4-2-1.4-8.5-1.1-9.2.5-1.4%202.4%200%203.4-1.6%201.4-1.5-5-18-8.2-22.7-1.1-2.1-3.3-1.4-5.8%202-2.5%202.3-1.6%207.4-.6%2012.3%206.1%2032.3%2010.8%2061.6%209.8%2092.3-.4%202.6%209-7.8%209-12.7m-45.7-40c-3.9-.2-12-7.7-14.4-12a8%208%200%200%201%20.4-6.5c1.5-1%203.7-2%205.4-1%200%200%201.7%202.4%201.4%202.7%202%201%203%20.5%203.2-.4.1-1.5-.6-2.4-.6-4%20.9-4.6%206-5.3%208-2.4%201.4%201.8%202%205.5%202.1%208%200%201.3-2-.2-3.3%200-1.1.4-1.4%201.8-1.5%203-.2%203.3-.6%208.6-.7%2012.5zm-71.8%2048c1-9.8-.4-27.3-.5-33.1A477%20477%200%200%200%20299%20154c-1.2-8.4%203.4.9%202.8-4-1.5-8.3-6.1-14-11.6-21.5-1.7-2.5-1.7-3-4.4.6-3%206.7-.4%2011.4.4%2016.7%203.9%2017.2%206.2%2033%207.3%2048.7a393%20393%200%200%201%20.4%2049c3%20.1%207.6-4.7%209.3-11.8'/%3e%3cpath%20fill='%23fff'%20d='M434%20216c-6.9-11.6-17.2-24-20-28.7a658%20658%200%200%200-29.2-37.8c-8.5-9%204-1.5-1.6-8.5-4.7-5.1-6-6.8-10.1-9.9-2-1.3-3.2-3.8-4%20.5a83%2083%200%200%200-.2%2011.2c0%201.7%201.8%205%203.4%207%2020.7%2025.5%2043.4%2051.5%2061.6%2084.2%202.6-1.3%201.7-16%200-18z'/%3e%3cpath%20fill='%23165d31'%20d='M122.6%20194.7c-.5.9-1.6%202-1.2%203.1q1%201.4%202.6%201.3c1.1%200%202.7.3%203-.3q1-1.2.6-3.3c-1.2-3-4.4-1.8-5-.8'/%3e%3cpath%20fill='%23fff'%20d='M354.2%20362.5c9.2.4%2015.2.5%2023.3%201.4l9.6-1c10.6-1%2011%2015.1%2011%2015.1%200%209.5-3.7%2010-8.4%2011-2.7.4-4-1.6-5.5-3.6a14%2014%200%200%201-7%20.4l-11.5-.5c-4-.3-6.2.5-10.3.1-.8%201.3-2%203.1-4.4%202.6-2-.3-4.5-6-3.8-10.5%201.5-3.2%201-2.1%201-3.5-37.6-1-75.5-2.7-112.3-2.2-28.8.1-57.2%201.3-85.7%202.5-15.2-.2-26.8-2.6-34.8-14.3.8%200%2038.8%202.1%2049.9%201.4%2020.5-.2%2039.3-1.9%2060.2-2.5%2041.2.7%2082.1.7%20123.3%203.6-4-2.7-4-9%202-10.6.5-.4.8%203.1%201.7%203%204.9-.3%202.7%206.3%201.7%207.6M188.6%20135.3c-6.2%2017.8%203.6%2037.4%2010.4%2035.5%205%202%208-7.4%2010-17.6%201.5-2.9%202.5-3.2%203.2-1.7-.2%2013.6%201%2016.7%204.5%2020.8%207.8%206%2014.3.8%2014.8.3l6-6.1q2.2-2.2%205.1-.3c1.9%201.7%201.6%204.6%205.6%206.6%203.4%201.4%2010.5.4%2012.2-2.5%202.2-3.9%202.8-5.2%203.8-6.6%201.6-2.1%204.3-1.2%204.3-.5-.3%201.2-1.9%202.3-.8%204.5%202%201.4%202.4.5%203.5.2%204-2%207-10.6%207-10.6.1-3.2-1.7-3-2.9-2.2l-3.1%202.1c-2%20.3-5.7%201.6-7.6-1.3-1.9-3.4-1.9-8.3-3.3-11.8%200-.2-2.6-5.5-.2-5.8%201.2.2%203.7.9%204.1-1.2%201.2-2.1-2.6-8-5.3-11-2.3-2.5-5.5-2.8-8.6-.2-2.2%202-1.9%204.2-2.3%206.3a10%2010%200%200%200%202%208.7c2.2%204.2%206.1%209.7%204.8%2017.5%200%200-2.3%203.6-6.3%203.1-1.7-.3-4.4-1-5.8-11.8-1.1-8%20.2-19.4-3.2-24.7-1.3-3.3-2.2-6.4-5.2-.9-.8%202.2-4.3%205.5-1.8%2012.2a36%2036%200%200%201%202%2019c-1.5%202.2-1.8%202.9-3.7%205-2.6%203-5.5%202.2-7.7%201.1-2-1.3-3.6-2-4.6-6.5.2-7%20.6-18.5-.7-20.9-1.9-3.8-5-2.4-6.3-1.2a48%2048%200%200%200-11.5%2023.5c-1.8%205.8-3.7%204.1-5%201.8-3.2-3-3.5-26.7-7.4-22.8'/%3e%3cpath%20fill='%23fff'%20d='M207.4%20174.1c2.9-2%201.6-3.4%205.8.8a72%2072%200%200%201%209.2%2031.3c-.2%202.6%201.6%204.2%202.5%203.6.4-6%2015.1-14.4%2028.6-15.6%202-.5%201-4.4%201.3-6.4-.8-7.5%204.2-14.3%2011.2-14.8%209.6%201.4%2012.8%206.5%2013%2014.2-1.1%2015-16.7%2017.5-25.4%2018.7-1.3.5-1.9%201.1%200%201.8l36.6.2%201.9%201c.2%201-.6.2-2%202.6a30%2030%200%200%200-3.7%2011.5c-10.9%203.6-22.2%205-33.6%206.5-4%202-6%204.7-5.2%207.7%201.4%203.3%2010.2%206.7%2010.2%206.8%201.7%201%203.6%203.5-.5%208.6-17.8-.8-31.7-8.4-36.5-19.1-1.4-1.1-3%200-4%201.4-7%209-13.8%2017-25.7%2021.4-7%201.8-14.3-1.1-17.7-5.7-2.3-2.7-2.2-5.6-3-6.2-3.9%201.7-36.9%2015.7-32.7%209.1%208-8.5%2022-14.9%2034.2-23.3.9-2.9%202.5-12.5%207.3-15.6.3%200-.7%205.6-.6%208%200%202-.2%202.7.2%202.2.9-.5%2015.7-12.2%2017-15.8%201.4-2%20.3-7.2.3-7.4-2.8-7.2-6.7-7.8-8.1-11.4-1.3-4.7-.7-10.1%202-11.7q3.7-3.1%207.9.5c3%202.7%205.6%208%206.4%2011.9-.5%201.5-4-1-5-.3a16%2016%200%200%201%203.7%207.8c2%208.2%201.4%2011.4-.6%2016.7-6.6%2013.9-15%2018-22.4%2023.2-.2%200-.3%203.5%202.4%205.4%201%201%204.9%201.5%209.4%200a55%2055%200%200%200%2022.3-23.3%2051%2051%200%200%200-2.4-22.2c-2.9-6.7-6.3-16.2-6.3-16.4-.1-4.2.2-5.6%202-7.7m-95.8-38.6c4.2%202%2012.2%201.1%2011.8-5.7l-.2-3.1c-.8-2-3.2-1.5-3.7.5-.2.7.3%201.8-.3%202.1-.4.4-1.7.2-1.7-1.7q-.1-1-.7-1.6-.2-.2-.9-.2c-.6%200-.6.1-.9.6l-.3%201.6q-.1.9-.8%201c-.6%200-.5%200-1-.2q-.4-.3-.5-1l-.3-1.6q-.3-.4-1-.6c-2.3%200-2.5%202.7-2.3%203.7-.2.2-.3%204.9%202.8%206.2'/%3e%3cpath%20fill='%23fff'%20d='M235.1%20187.7c4.2%202%2014.3.9%2011.8-5.6l-.2-3.2c-.9-2-3.2-1.5-3.7.6-.2.6.3%201.7-.4%202-.3.4-1.7.2-1.6-1.6q-.1-1-.7-1.7-.3-.2-1-.2c-.5%200-.5.2-.8.7q-.3.7-.3%201.6-.2.8-.9%201c-.5%200-.4%200-.8-.3q-.5-.3-.6-.9l-.3-1.6q-.3-.5-1-.6c-2.3%200-2.5%202.6-2.4%203.6-.1.2-.2%205%203%206.2zm72-21.6c4.2%202%2012.1%201.1%2011.8-5.6l-.2-3.2c-.9-2-3.2-1.5-3.7.5-.2.7.3%201.8-.4%202.2-.3.3-1.7.1-1.6-1.8q-.1-1-.7-1.6-.3-.2-1-.2t-.8.7l-.3%201.5q-.1%201-.9%201c-.8%200-.4%200-.8-.2q-.5-.3-.6-.9%200-1-.3-1.7-.4-.4-1-.5c-2.3%200-2.5%202.6-2.4%203.6-.1.2-.2%204.9%203%206.2zm37.3%2054.3c-7.3%208.3-4.1%2022-2.4%2025%202.4%204.8%204.3%207.9%209%2010.3%204.3%203.1%207.7%201.2%209.5-1%204.3-4.5%204.4-16%206.4-18.2%201.4-4.2%205-3.5%206.7-1.6a17%2017%200%200%200%206.2%205.3c4%203.5%208.8%204.2%2013.6%201%203.2-1.9%205.3-4.2%207.2-8.9%202-5.6%201-31.6.5-47l-4.2-21.5c0-.2-.5-10.2-1-12.5%200-1-.3-1.3.7-1.2%201.1%201%201.2%201%202%201.3%201%20.2%202-1.7%201.3-3.3l-10-18.6c-.8-.8-1.9-1.6-3.2.2a7%207%200%200%200-2.4%205.5l1.3%2013.3%204%2022.6c1.3%2016%201.6%2029.2%202.9%2045.3-.2%206.8-2.3%2012.7-4.3%2013.6%200%200-3%201.7-5-.2-1.5-.6-7.4-9.9-7.4-9.9-3-2.7-5-2-7.1%200-6%205.8-8.6%2016.4-12.7%2023.8-1%201.7-4%203-7.2-.1-8.2-11.3-3.4-27.3-4.4-23.2M309%20126.7c3.8%201.5%206.4%209.2%205.6%2013-.8%204.5-2.8%209.5-4.2%208.9-1.6-.6%201-4.6-.5-8.8-.8-2.8-6-7.8-5.4-9.2-1-3.1%202.2-4.5%204.5-4z'/%3e%3cpath%20fill='%23fff'%20d='M356.6%20225c.7-9.2-.6-14.8-.8-20.2s-6.1-46.6-7.3-50.6c-1.5-7.8%205.7-1%204.9-5.6-2.5-5.6-8.6-13.9-10.5-18.8-1.2-2-.7-4-3.3-.5a42%2042%200%200%200-2.3%2019.2c6.2%2032.3%2012.5%2059.1%2011.5%2089.8%203%200%206.3-6.7%207.8-13.3m64.4-85.3c3.5%201.7%205.5%2011.3%205.1%2014-.7%205-2.5%2010.4-3.8%209.7-1.5-.6.3-7.4-.4-9.5-.8-3-5.5-8.4-5-10-1-3.4%202-4.8%204.1-4.2m-255.7%2067.9c3.3%201.3%205.3%208.3%205%2010.3-.8%203.7-2.5%207.7-3.8%207.1-1.3-.4.3-5.4-.3-7-.3-3.7-4.9-5.7-4.8-7.3-.8-3%202-3.5%204-3.1z'/%3e%3cpath%20fill='%23165d31'%20d='M244.9%20218.2c4.2.2%206.3%203.6%202.4%205-4%201.3-7.7%202.4-7.8%208%201.5%208-2%205.2-4%204.2-2.4-1.8-9.2-6-10.2-15-.1-2.1%201.6-4%204.3-4%204%201.1%2010%201.2%2015.3%201.8'/%3e%3cpath%20fill='%23fff'%20d='M77.4%20124.4c4.8%201.4%205.1%208.6%204.8%2010.7-.7%203.8-2.4%207.9-3.6%207.4-1.4-.5%200-5.7-.7-7.3-.7-2.2-4.8-6.4-4.4-7.6-.9-2.5%202-3.7%203.9-3.2m95.9%2033.6c-3.8%202-5.2%208-2.9%2011.6%202.2%203%205.6%201.9%206%201.9%203.7.4%205.9-6.9%205.9-6.9s.1-2-4.2%201.9c-1.9.3-2-.4-2.5-1.4a9%209%200%200%201%20.5-5.7c.7-1.8-.7-2.6-2.8-1.4m28-36.4c-2%201.3-5.7%205.2-5.8%209.6-.1%202.5-.6%202.5%201%204%201.3%201.8%202.4%201.7%204.8.4a5%205%200%200%200%202.3-3.4c.6-2.8-3%201.4-3.4-1.8-.8-3%201.5-4.2%203.7-7%200-2%200-3.3-2.7-1.8zm22.4%204a60%2060%200%200%200-1.6%2011.1c-.6%202.8%203%204%204.5.4%202.4-6.5%202.4-9.3%202.6-12-.7-4.3-3.6-4.2-5.5.5m142%2072.3c.4-.5%2020-14.4%2020-14.4%202-.7%201.5%207.2.6%207.1a78%2078%200%200%201-20.7%2014.3c-1%20.7-1.9-5.3%200-7zm17.7-.2c3.5%201.7%204.9%2011.8%204.5%2014.5%200%205.4-3.3%209.6-4.7%209-1.4-.7.2-6.7-.5-8.8-.8-3-3.7-8.5-3.2-10.1-1-3.4%201.8-5.2%204-4.6zm-116%2043.4a26%2026%200%200%201%205.6-4.9c2-1%203.8.8%203.7.7.3%202-1.2%203.7-.7%206.3.4%201%20.7%202.2%202.6%201.8%203.1-2.5%206-2.7%209-2.8%202.5.1%202.6%204.2%201%204.2-5.7%201.2-8.2%202.8-12.3%204.3-2%201.2-3.6-.3-3.6-.4s-1.1-1.1-.4-3.7q.3-3.2-2.4-3c-1.2.8-2.4%201.2-3-.3q-.6-1.4.5-2.2m136.6%205.4c.8%201%201.4%202-.1%203.8l-3.7%203.2c-.6%201-1%202.8%201%203.3%203.6%201%2012-4.5%2012-4.6%201.4-1%201-3%20.8-3-.8-.9-2.6-.3-3.8-.5-.6%200-2.5-.2-1.6-2a11%2011%200%200%200%201.6-2.9q.9-1.7-2-2.7c-2.1-.4-3-.2-5.3%200q-1.6.2-1.9%202.3c.1%202.3%201.5%202.2%203%203z'/%3e%3cpath%20fill='%23165d31'%20d='M268.1%20189.7c-.5%201-2.3%201-4%200s-2.7-2.6-2.1-3.5%202.3-.9%204%200%202.6%202.6%202.1%203.5m-89-53.6c-1%20.3-2.4-.6-3-2s-.3-2.6.7-2.9%202.3.7%203%202%20.3%202.7-.8%203zM355.2%20375c9.4.4%2018.2%200%2027.5.5%201.7%201.5.5%205-.6%204.8l-7.8-.3c-.1-3-7.7-2.5-7.5.1-4.1.5-7.8-.1-12-.3-1.2-1.5-1-4.2.4-4.8'/%3e%3c/g%3e%3c/svg%3e";
  const flagPT = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20id='flag-icons-pt'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='red'%20d='M256%200h384v480H256z'/%3e%3cpath%20fill='%23060'%20d='M0%200h256v480H0z'/%3e%3cg%20fill='%23ff0'%20fill-rule='evenodd'%20stroke='%23000'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-width='.6'%3e%3cpath%20d='M339.5%20306.2c-32.3-1-180-93.2-181-108l8.1-13.5c14.7%2021.3%20165.7%20111%20180.6%20107.8z'/%3e%3cpath%20d='M164.9%20182.8c-2.9%207.8%2038.6%2033.4%2088.4%2063.8s92.9%2049%2096%2046.4l1.5-2.8q-.9%201.6-4.3.6c-13.5-3.9-48.6-20-92.1-46.4-43.6-26.4-81.4-50.7-87.3-61a6%206%200%200%201-.6-3.1h-.2l-1.2%202.2zm175.3%20123.8q-.7%201.3-3.5.8c-12-1.3-48.6-19.1-91.9-45-50.4-30.2-92-57.6-87.4-64.8l1.2-2.2.2.1c-4%2012.2%2082.1%2061.4%2087.2%2064.6%2049.8%2030.8%2091.8%2048.9%2095.5%2044.2z'/%3e%3cpath%20d='M256.2%20207.2c32.2-.3%2072-4.4%2095-13.6l-5-8c-13.5%207.5-53.5%2012.5-90.3%2013.2-43.4-.4-74.1-4.5-89.5-14.8l-4.6%208.6c28.2%2012%2057.2%2014.5%2094.4%2014.6'/%3e%3cpath%20d='M352.5%20193.8c-.8%201.3-15.8%206.4-37.8%2010.2a381%20381%200%200%201-58.6%204.3%20416%20416%200%200%201-56.2-3.6c-23.1-3.6-35-8.6-39.5-10.4l1.1-2.2c12.7%205%2024.7%208%2038.7%2010.2A412%20412%200%200%200%20256%20206a392%20392%200%200%200%2058.3-4.3c22.5-3.7%2034.8-8.4%2036.6-10.5zm-4.4-8.1c-2.4%202-14.6%206.3-36%209.7a388%20388%200%200%201-55.8%204c-22%200-40.1-1.6-53.8-3.6-21.8-2.8-33.4-8-37.6-9.4l1.3-2.2c3.3%201.7%2014.4%206.2%2036.5%209.3a385%20385%200%200%200%2053.6%203.4%20384%20384%200%200%200%2055.4-4c21.5-3%2033.1-8.4%2034.9-9.8zM150.3%20246c19.8%2010.7%2063.9%2016%20105.6%2016.4%2038%20.1%2087.4-5.8%20105.9-15.6l-.5-10.7c-5.8%209-58.8%2017.7-105.8%2017.4s-90.7-7.6-105.3-17v9.5'/%3e%3cpath%20d='M362.8%20244.5v2.5c-2.8%203.4-20.2%208.4-42%2012a434%20434%200%200%201-65.4%204.4%20400%20400%200%200%201-62-4.3%20155%20155%200%200%201-44.4-12v-2.9c9.7%206.4%2035.9%2011.2%2044.7%2012.6%2015.8%202.4%2036.1%204.2%2061.7%204.2%2026.9%200%2048.4-1.9%2065-4.4%2015.7-2.3%2038-8.2%2042.4-12.1m0-9v2.5c-2.8%203.3-20.2%208.3-42%2011.9a434%20434%200%200%201-65.4%204.5%20414%20414%200%200%201-62-4.3%20155%20155%200%200%201-44.4-12v-3c9.7%206.5%2036%2011.2%2044.7%2012.6a408%20408%200%200%200%2061.7%204.3c26.9%200%2048.5-2%2065-4.5%2015.7-2.2%2038-8.1%2042.4-12m-107%2068.8c-45.6-.2-84.7-12.4-93-14.4l6%209.4a250%20250%200%200%200%2087.4%2014.3c34.7-1%2065-3.7%2086.3-14.1l6.2-9.8c-14.5%206.9-64%2014.6-93%2014.6'/%3e%3cpath%20d='m344.9%20297.3-2.8%204c-10%203.6-26%207.4-32.6%208.4a296%20296%200%200%201-53.7%205c-40.4-.6-73.5-8.5-89-15.3l-1.3-2.1.2-.4%202.1.9a287%20287%200%200%200%2088.2%2014.5c18.8%200%2037.5-2.1%2052.6-4.8%2023.2-4.7%2032.6-8.2%2035.5-9.8l.7-.4zm5.3-8.8-2%203.5c-5.4%202-20%206.2-41.3%209.2-14%201.9-22.7%203.8-50.6%204.3a347%20347%200%200%201-94.2-14L161%20289a390%20390%200%200%200%2095.4%2014c25.5-.5%2036.4-2.4%2050.3-4.3%2024.8-3.8%2037.3-8%2041-9.1v-.2l2.6-1z'/%3e%3cpath%20d='M350.8%20237.6c.1%2030-15.3%2057-27.6%2068.8a99%2099%200%200%201-67.8%2028.2c-30.3.5-58.8-19.2-66.5-27.9a101%20101%200%200%201-27.5-67.4c1.8-32.8%2014.7-55.6%2033.3-71.3a100%20100%200%200%201%2064.2-22.7%2098%2098%200%200%201%2071%2035.6c12.5%2015.2%2018%2031.7%2020.9%2056.7M255.6%20135a106%20106%200%200%201%20106%20105.2%20105.6%20105.6%200%201%201-211.4%200c-.1-58%2047.3-105.2%20105.4-105.2'/%3e%3cpath%20d='M255.9%20134.5c58.2%200%20105.6%2047.4%20105.6%20105.6S314.1%20345.7%20256%20345.7s-105.6-47.4-105.6-105.6S197.8%20134.5%20256%20134.5zM152.6%20240c0%2056.8%2046.7%20103.3%20103.3%20103.3S359.2%20296.8%20359.2%20240s-46.7-103.3-103.3-103.3S152.6%20183.2%20152.6%20240'/%3e%3cpath%20d='M256%20143.3a97%2097%200%200%201%2096.7%2096.7%2097%2097%200%200%201-96.7%2096.8c-53%200-96.7-43.6-96.7-96.8a97%2097%200%200%201%2096.7-96.7M161.6%20240c0%2052%2042.6%2094.4%2094.4%2094.4s94.4-42.5%2094.4-94.4-42.6-94.4-94.4-94.4a95%2095%200%200%200-94.4%2094.4'/%3e%3cpath%20d='M260.3%20134h-9.1v212.3h9z'/%3e%3cpath%20d='M259.3%20132.8h2.3v214.7h-2.2V132.8zm-9%200h2.4v214.7h-2.3z'/%3e%3cpath%20d='M361.6%20244.2v-7.8l-6.4-6-36.3-9.6-52.2-5.3-63%203.2-44.8%2010.6-9%206.7v7.9l22.9-10.3%2054.4-8.5h52.3l38.4%204.2%2026.6%206.4z'/%3e%3cpath%20d='M256%20223.8c24.9%200%2049%202.3%2068.3%206%2019.8%204%2033.7%209%2038.5%2014.5v2.8c-5.8-7-24.5-12-39-15-19-3.6-43-6-67.9-6-26.1%200-50.5%202.6-69.3%206.2-15%203-35.1%209-37.6%2014.8v-2.9c1.3-4%2016.3-10%2037.3-14.3%2018.9-3.7%2043.3-6.1%2069.6-6.1zm0-9.1a383%20383%200%200%201%2068.3%206c19.8%204%2033.7%209%2038.5%2014.6v2.7c-5.8-6.9-24.5-12-39-14.9-19-3.7-43-6-67.9-6a376%20376%200%200%200-69.2%206.2c-14.5%202.7-35.4%208.9-37.7%2014.7v-2.8c1.4-4%2016.6-10.3%2037.3-14.3%2019-3.7%2043.3-6.2%2069.7-6.2m-.6-46.2c39.3-.2%2073.6%205.5%2089.3%2013.5l5.7%2010c-13.6-7.4-50.6-15-94.9-14-36.1.3-74.7%204-94%2014.4l6.8-11.4c15.9-8.3%2053.3-12.5%2087.1-12.5'/%3e%3cpath%20d='M256%20176.7a354%20354%200%200%201%2061.3%204.3c16%203%2031.3%207.4%2033.5%209.8l1.7%203c-5.3-3.4-18.6-7.3-35.6-10.5s-38.7-4.3-61-4.2c-25.3-.1-45%201.2-61.8%204.2a109%20109%200%200%200-33.3%2010.3l1.7-3.1c6-3%2015.3-6.7%2031.1-9.6%2017.5-3.2%2037.4-4.1%2062.4-4.2m0-9c21.4-.2%2042.6%201%2059.1%204a96%2096%200%200%201%2030.6%2010l2.5%204c-4.2-4.7-20-9.2-34.1-11.6-16.4-2.9-36.7-4-58.1-4.2a361%20361%200%200%200-59.5%204.4%2097%2097%200%200%200-29.6%209.1l2.2-3.3c5.8-3%2015.2-5.8%2027-8.1a357%20357%200%200%201%2059.9-4.4zM308.4%20284a276%20276%200%200%200-52.5-4c-65.5.8-86.6%2013.5-89.2%2017.3l-5-8c16.8-12%2052.4-18.8%2094.6-18.2q32.9.5%2056.6%205l-4.5%208'/%3e%3cpath%20d='M255.6%20278.9c18.2.3%2036%201%2053.3%204.2l-1.2%202.2c-16-3-33.2-4-52-4-24.3-.2-48.7%202.1-70%208.2-6.7%201.9-17.8%206.2-19%209.8l-1.2-2c.4-2.2%207-6.6%2019.6-10%2024.4-7%2047.2-8.3%2070.5-8.4m.8-9.2a327%20327%200%200%201%2057.3%205l-1.3%202.3a299%20299%200%200%200-56-4.9c-24.2%200-49.9%201.8-73.3%208.6-7.5%202.2-20.6%207-21%2010.7l-1.2-2.2c.2-3.4%2011.5-7.9%2021.7-10.8%2023.5-6.9%2049.3-8.6%2073.8-8.7'/%3e%3cpath%20d='m349.4%20290.5-7.8%2012.3-22.7-20.1-58.6-39.5-66.2-36.3-34.3-11.7%207.3-13.6%202.5-1.3%2021.3%205.3%2070.4%2036.3%2040.6%2025.6L336%20272l13.9%2016z'/%3e%3cpath%20d='M158.6%20195.5c6-4%2050.2%2015.6%2096.6%2043.6%2046.1%2028%2090.3%2059.6%2086.3%2065.5l-1.3%202.1-.6.5c.1-.1.8-1%200-3.1-2-6.5-33.4-31.5-85.3-62.9-50.7-30.1-92.9-48.3-97-43.1zM351%20290.4c3.8-7.6-37.2-38.5-88.1-68.6-52-29.5-89.6-46.9-96.5-41.7L165%20183l.4-.5c1.2-1%203.3-1%204.2-1%2011.8.2%2045.5%2015.7%2092.8%2042.8%2020.8%2012%2087.6%2055%2087.3%2067%200%201%20.1%201.2-.3%201.8l1.7-2.6z'/%3e%3c/g%3e%3cg%20transform='translate(0%2026.7)scale(1.06667)'%3e%3cpath%20fill='%23fff'%20stroke='%23000'%20stroke-width='.7'%20d='M180.6%20211a59%2059%200%200%200%2017.5%2041.7%2059%2059%200%200%200%2041.8%2017.6%2059%2059%200%200%200%2042-17.4%2059%2059%200%200%200%2017.4-41.8v-79.2l-118.7-.2z'/%3e%3cpath%20fill='red'%20stroke='%23000'%20stroke-width='.5'%20d='M183%20211.1a56%2056%200%200%200%2016.8%2040%2057%2057%200%200%200%2040.2%2016.8%2057%2057%200%200%200%2040.2-16.6%2056%2056%200%200%200%2016.7-40v-77H183v76.8m91-53.7v48.9l-.1%205.1a33%2033%200%200%201-10%2024%2034%2034%200%200%201-24%2010c-9.4%200-17.7-4-23.9-10.2a34%2034%200%200%201-10-24v-54z'/%3e%3cg%20id='pt-e'%3e%3cg%20id='pt-d'%20fill='%23ff0'%20stroke='%23000'%20stroke-width='.5'%3e%3cpath%20stroke='none'%20d='M190.2%20154.4c.1-5.5%204-6.8%204-6.8.1%200%204.3%201.4%204.3%206.9z'/%3e%3cpath%20d='m186.8%20147.7-.7%206.3h4.2c0-5.2%204-6%204-6%20.1%200%204%201.1%204.1%206h4.2l-.8-6.4zm-1%206.4h17q.5%200%20.6.7%200%20.8-.6.8h-17q-.5%200-.6-.8%200-.7.7-.7z'/%3e%3cpath%20d='M192%20154c0-3.3%202.3-4.2%202.3-4.2s2.3%201%202.3%204.2H192m-5.8-9h16.3q.5.1.6.8%200%20.5-.6.6h-16.3q-.5%200-.6-.7%200-.5.6-.6zm.4%201.5H202q.5%200%20.6.7t-.6.7h-15.5q-.6%200-.6-.7t.6-.7zm5-10.6h1.2v.8h.9v-.8h1.3v.9h.9v-1h1.2v2q0%20.6-.5.6h-4.4q-.5%200-.6-.5zm4.6%202.7.3%206.4h-4.3l.3-6.5h3.7'/%3e%3cpath%20id='pt-a'%20d='M191%20141.6v3.4h-4v-3.4z'/%3e%3cuse%20xlink:href='%23pt-a'%20width='100%25'%20height='100%25'%20x='10.6'/%3e%3cpath%20id='pt-b'%20d='M186.3%20139h1.2v1h.9v-1h1.2v1h.9v-1h1.2v2q0%20.6-.5.6h-4.3l-.6-.6z'/%3e%3cuse%20xlink:href='%23pt-b'%20width='100%25'%20height='100%25'%20x='10.6'/%3e%3cpath%20fill='%23000001'%20stroke='none'%20d='M193.9%20140.6c0-.6.9-.6.9%200v1.6h-.9z'/%3e%3cpath%20id='pt-c'%20fill='%23000001'%20stroke='none'%20d='M188.6%20142.8c0-.6.8-.6.8%200v1.2h-.8z'/%3e%3cuse%20xlink:href='%23pt-c'%20width='100%25'%20height='100%25'%20x='10.6'/%3e%3c/g%3e%3cuse%20xlink:href='%23pt-d'%20width='100%25'%20height='100%25'%20y='46.3'/%3e%3cuse%20xlink:href='%23pt-d'%20width='100%25'%20height='100%25'%20transform='rotate(-45.2%20312.8%20180)'/%3e%3c/g%3e%3cuse%20xlink:href='%23pt-d'%20width='100%25'%20height='100%25'%20x='45.7'/%3e%3cuse%20xlink:href='%23pt-e'%20width='100%25'%20height='100%25'%20transform='matrix(-1%200%200%201%20479.8%200)'/%3e%3cg%20id='pt-f'%20fill='%23fff'%3e%3cpath%20fill='%23039'%20d='M232.6%20202.4a8%208%200%200%200%202.2%205.7%207%207%200%200%200%205.3%202.4q3.2-.2%205.3-2.4a8%208%200%200%200%202.2-5.7v-10.8h-15z'/%3e%3ccircle%20cx='236.1'%20cy='195.7'%20r='1.5'/%3e%3ccircle%20cx='244.4'%20cy='195.7'%20r='1.5'/%3e%3ccircle%20cx='240.2'%20cy='199.7'%20r='1.5'/%3e%3ccircle%20cx='236.1'%20cy='203.9'%20r='1.5'/%3e%3ccircle%20cx='244.4'%20cy='203.9'%20r='1.5'/%3e%3c/g%3e%3cuse%20xlink:href='%23pt-f'%20width='100%25'%20height='100%25'%20y='-26'/%3e%3cuse%20xlink:href='%23pt-f'%20width='100%25'%20height='100%25'%20x='-20.8'/%3e%3cuse%20xlink:href='%23pt-f'%20width='100%25'%20height='100%25'%20x='20.8'/%3e%3cuse%20xlink:href='%23pt-f'%20width='100%25'%20height='100%25'%20y='25.8'/%3e%3c/g%3e%3c/svg%3e";
  const flagRU = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-ru'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23fff'%20d='M0%200h640v160H0z'/%3e%3cpath%20fill='%230039a6'%20d='M0%20160h640v160H0z'/%3e%3cpath%20fill='%23d52b1e'%20d='M0%20320h640v160H0z'/%3e%3c/svg%3e";
  const flagES = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-es'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23AA151B'%20d='M0%200h640v480H0z'/%3e%3cpath%20fill='%23F1BF00'%20d='M0%20120h640v240H0z'/%3e%3cpath%20fill='%23ad1519'%20d='m127.3%20213.3-.8-.1-1-1-.7-.4-.6-.8s-.7-1.1-.4-2q.5-1.2%201.4-1.5l1.5-.5%201-.4%201.3-.3.5-.3%201-.2%201-.2%201.6.1h4.8c.4%200%201.2.3%201.4.4l2%20.7c.5.1%201.6.3%202.2.6q.8.5%201.1%201l.5%201v1.1l-.5.8-.6%201-.8.6s-.5.5-1%20.4-4.8-.8-7.6-.8-7.3.9-7.3.9'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linejoin='round'%20stroke-width='.3'%20d='m127.3%20213.3-.8-.1-1-1-.7-.4-.6-.8s-.7-1.1-.4-2q.5-1.2%201.4-1.5l1.5-.5%201-.4%201.3-.3.5-.3%201-.2%201-.2%201.6.1h4.8c.4%200%201.2.3%201.4.4l2%20.7c.5.1%201.6.3%202.2.6q.8.5%201.1%201l.5%201v1.1l-.5.8-.6%201-.8.6s-.5.5-1%20.4-4.8-.8-7.6-.8-7.3.9-7.3.9z'/%3e%3cpath%20fill='%23c8b100'%20d='M133.3%20207q.1-2.1%201.3-2.3%201.3.1%201.4%202.4c0%201.3-.6%202.4-1.4%202.4s-1.3-1.1-1.3-2.5'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M133.3%20207q.1-2.1%201.3-2.3%201.3.1%201.4%202.4c0%201.3-.6%202.4-1.4%202.4s-1.3-1.1-1.3-2.5z'/%3e%3cpath%20fill='%23c8b100'%20d='M134%20207q0-2%20.7-2.1c.3%200%20.6%201%20.6%202.1q0%202-.6%202.2c-.4%200-.6-1-.6-2.2'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M134%20207q0-2%20.7-2.1c.3%200%20.6%201%20.6%202.1q0%202-.6%202.2c-.4%200-.6-1-.6-2.2z'/%3e%3cpath%20fill='%23c8b100'%20d='M133.8%20204.5q.1-.7.8-.8%201%200%201%20.8-.1.8-1%20.9c-.9.1-.8-.4-.8-.9'/%3e%3cpath%20fill='%23c8b100'%20d='M135.3%20204.2v.6h-1.4v-.6h.5V203h-.7v-.6h.7v-.5h.5v.5h.6v.6h-.6v1.2z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M135.3%20204.2v.6h-1.4v-.6h.5V203h-.7v-.6h.7v-.5h.5v.5h.6v.6h-.6v1.2h.4'/%3e%3cpath%20fill='%23c8b100'%20d='M135.9%20204.2v.6h-2.5v-.6h1V203h-.7v-.6h.7v-.5h.5v.5h.6v.6h-.6v1.2z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M135.9%20204.2v.6h-2.5v-.6h1V203h-.7v-.6h.7v-.5h.5v.5h.6v.6h-.6v1.2h1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M134.9%20203.7q.6.2.6.8-.1.8-.8.9-1%200-1-.9%200-.6.7-.8'/%3e%3cpath%20fill='%23c8b100'%20d='M134.7%20213.2H130v-1.1l-.3-1.2-.2-1.5c-1.3-1.7-2.5-2.8-2.9-2.5q.1-.5.5-.7c1.1-.7%203.5%201%205.2%203.6l.5.7h3.8l.4-.7c1.8-2.7%204.1-4.3%205.2-3.6q.4.2.5.7c-.4-.3-1.6.8-2.9%202.5l-.2%201.5-.2%201.2-.1%201.1z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M134.7%20213.2H130v-1.1l-.3-1.2-.2-1.5c-1.3-1.7-2.5-2.8-2.9-2.5q.1-.5.5-.7c1.1-.7%203.5%201%205.2%203.6l.5.7h3.8l.4-.7c1.8-2.7%204.1-4.3%205.2-3.6q.4.2.5.7c-.4-.3-1.6.8-2.9%202.5l-.2%201.5-.2%201.2-.1%201.1z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M126.8%20206.8c1-.5%203%201.1%204.6%203.6m11-3.6c-.8-.5-2.8%201.1-4.5%203.6'/%3e%3cpath%20fill='%23c8b100'%20d='m127.8%20215.3-.5-1a27%2027%200%200%201%2014.7%200l-.5.8-.3.8a23%2023%200%200%200-6.6-.8c-2.6%200-5.2.3-6.5.8z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m127.8%20215.3-.5-1a27%2027%200%200%201%2014.7%200l-.5.8-.3.8a23%2023%200%200%200-6.6-.8c-2.6%200-5.2.3-6.5.8l-.3-.6'/%3e%3cpath%20fill='%23c8b100'%20d='M134.6%20217.7c2.4%200%205-.4%205.9-.6q1-.3%201-.8%200-.3-.4-.4c-1.4-.5-4-.8-6.5-.8s-5%20.3-6.4.8q-.3%200-.4.3%200%20.6%201%20.9c1%20.2%203.5.6%205.8.6'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M134.6%20217.7c2.4%200%205-.4%205.9-.6q1-.3%201-.8%200-.3-.4-.4c-1.4-.5-4-.8-6.5-.8s-5%20.3-6.4.8q-.3%200-.4.3%200%20.6%201%20.9c1%20.2%203.5.6%205.8.6z'/%3e%3cpath%20fill='%23c8b100'%20d='m142.1%20213.2-.5-.5s-.6.3-1.3.2c-.6%200-.9-1-.9-1s-.7.7-1.3.7-1-.6-1-.6-.7.5-1.3.4-1.2-.8-1.2-.8-.6.8-1.2.8c-.6.1-1-.5-1-.5s-.4.6-1.1.7-1.4-.6-1.4-.6-.5.7-1%201c-.5%200-1.2-.4-1.2-.4l-.2.5-.3.1.2.5a27%2027%200%200%201%207.2-.9q4.5%200%207.4%201z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m142.1%20213.2-.5-.5s-.6.3-1.3.2c-.6%200-.9-1-.9-1s-.7.7-1.3.7-1-.6-1-.6-.7.5-1.3.4-1.2-.8-1.2-.8-.6.8-1.2.8c-.6.1-1-.5-1-.5s-.4.6-1.1.7-1.4-.6-1.4-.6-.5.7-1%201c-.5%200-1.2-.4-1.2-.4l-.2.5-.3.1.2.5a27%2027%200%200%201%207.2-.9q4.5%200%207.4%201z'/%3e%3cpath%20fill='%23c8b100'%20d='M134.7%20210.7h.2v.4q0%201%201%201a1%201%200%200%200%201-.7l.2-.3v.4q.3.8%201.1.8%201%200%201-1v-.1l.4-.4.2.5-.1.4a1%201%200%200%200%201%201q.6%200%20.9-.5l.2-.2v.3q0%20.5.4.7l1-.4.7-.7v.4s-.5.8-1%201q-.3.4-.8.3-.5%200-.7-.6-.3.3-.7.2-1%200-1.4-.8-.5.5-1.1.5a2%202%200%200%201-1.2-.6l-1%20.4a2%202%200%200%201-1.3-.6%201.6%201.6%200%200%201-2.4.2%202%202%200%200%201-1.2.6l-1.1-.5q-.4.8-1.4.8l-.7-.2q-.2.5-.7.6t-.9-.2l-1-1%20.1-.5.8.7q.8.5.9.4.4-.1.4-.7v-.3l.2.2q.3.5.9.5a1%201%200%200%200%201-1v-.9l.4.4v.1q.1%201%201%201t1.1-.9v-.3l.2.3q.3.6%201%20.7%201%200%201.1-1v-.3h.3'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M134.7%20210.7h.2v.4q0%201%201%201a1%201%200%200%200%201-.7l.2-.3v.4q.3.8%201.1.8%201%200%201-1v-.1l.4-.4.2.5-.1.4a1%201%200%200%200%201%201q.6%200%20.9-.5l.2-.2v.3q0%20.5.4.7l1-.4.7-.7v.4s-.5.8-1%201q-.3.4-.8.3-.5%200-.7-.6-.3.3-.7.2-1%200-1.4-.8-.5.5-1.1.5a2%202%200%200%201-1.2-.6l-1%20.4a2%202%200%200%201-1.3-.6%201.6%201.6%200%200%201-2.4.2%202%202%200%200%201-1.2.6l-1.1-.5q-.4.8-1.4.8l-.7-.2q-.2.5-.7.6t-.9-.2l-1-1%20.1-.5.8.7q.8.5.9.4.4-.1.4-.7v-.3l.2.2q.3.5.9.5a1%201%200%200%200%201-1v-.9l.4.4v.1q.1%201%201%201t1.1-.9v-.3l.2.3q.3.6%201%20.7%201%200%201.1-1v-.3h.3z'/%3e%3cpath%20fill='%23c8b100'%20d='M134.6%20213.3q-4.5%200-7.3%201l-.3-.2.1-.3a27%2027%200%200%201%207.5-1q4.6%200%207.6%201l.1.3-.3.2a27%2027%200%200%200-7.4-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linejoin='round'%20stroke-width='.3'%20d='M134.6%20213.3q-4.5%200-7.3%201l-.3-.2.1-.3a27%2027%200%200%201%207.5-1q4.6%200%207.6%201l.1.3-.3.2a27%2027%200%200%200-7.4-1z'/%3e%3cpath%20fill='%23fff'%20d='M131.8%20214.4q0-.4.5-.4a.4.4%200%200%201%20.4.4q0%20.3-.4.4a.4.4%200%200%201-.5-.4'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M131.8%20214.4q0-.4.5-.4a.4.4%200%200%201%20.4.4q0%20.3-.4.4a.4.4%200%200%201-.5-.4z'/%3e%3cpath%20fill='%23ad1519'%20d='M134.7%20214.5h-1q-.2%200-.3-.3l.3-.3h2l.2.3-.3.3h-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M134.7%20214.5h-1q-.2%200-.3-.3l.3-.3h2l.2.3-.3.3h-1'/%3e%3cpath%20fill='%23058e6e'%20d='M130%20214.9h-.7q-.2%200-.3-.2l.2-.3.7-.1.7-.1q.3%200%20.4.2a.3.3%200%200%201-.3.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M130%20214.9h-.7q-.2%200-.3-.2l.2-.3.7-.1.7-.1q.3%200%20.4.2a.3.3%200%200%201-.3.4h-.7'/%3e%3cpath%20fill='%23ad1519'%20d='m127.3%20215.3.3-.4h.7l-.4.6z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m127.3%20215.3.3-.4h.7l-.4.6-.6-.2'/%3e%3cpath%20fill='%23fff'%20d='M136.6%20214.4q0-.4.4-.4a.4.4%200%200%201%20.5.4.4.4%200%200%201-.5.4.4.4%200%200%201-.4-.4'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M136.6%20214.4q0-.4.4-.4a.4.4%200%200%201%20.5.4.4.4%200%200%201-.5.4.4.4%200%200%201-.4-.4z'/%3e%3cpath%20fill='%23058e6e'%20d='M139.3%20214.9h.6a.3.3%200%200%200%20.4-.2l-.3-.3-.6-.1-.7-.1q-.3%200-.4.2%200%20.3.3.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M139.3%20214.9h.6a.3.3%200%200%200%20.4-.2l-.3-.3-.6-.1-.7-.1q-.3%200-.4.2%200%20.3.3.4h.7'/%3e%3cpath%20fill='%23ad1519'%20d='m142%20215.4-.3-.5h-.7l.3.6z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m142%20215.4-.3-.5h-.7l.3.6.6-.1'/%3e%3cpath%20fill='%23ad1519'%20d='M134.6%20217.1a25%2025%200%200%201-6-.6%2026%2026%200%200%201%2012.1%200q-2.5.6-6%20.6'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linejoin='round'%20stroke-width='.3'%20d='M134.6%20217.1a25%2025%200%200%201-6-.6%2026%2026%200%200%201%2012.1%200q-2.5.6-6%20.6z'/%3e%3cpath%20fill='%23c8b100'%20d='m142%20212-.1-.3q-.3%200-.4.2%200%20.4.2.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m142%20212-.1-.3q-.3%200-.4.2%200%20.4.2.4z'/%3e%3cpath%20fill='%23c8b100'%20d='M137.3%20211.2q0-.3-.2-.4l-.2.3q0%20.3.2.4l.3-.3'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M137.3%20211.2q0-.3-.2-.4l-.2.3q0%20.3.2.4l.3-.3z'/%3e%3cpath%20fill='%23c8b100'%20d='m132%20211.2.1-.4q.3%200%20.3.3t-.2.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m132%20211.2.1-.4q.3%200%20.3.3t-.2.4z'/%3e%3cpath%20fill='%23c8b100'%20d='m127.3%20212%20.1-.3q.3%200%20.4.2%200%20.4-.2.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m127.3%20212%20.1-.3q.3%200%20.4.2%200%20.4-.2.4z'/%3e%3cpath%20fill='%23c8b100'%20d='m134.6%20208.5-.8.5.6%201.3.2.1.2-.1.7-1.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m134.6%20208.5-.8.5.6%201.3.2.1.2-.1.7-1.3-.9-.5'/%3e%3cpath%20fill='%23c8b100'%20d='m132.8%20210.5.4.5%201.3-.4.1-.2-.1-.2-1.3-.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m132.8%20210.5.4.5%201.3-.4.1-.2-.1-.2-1.3-.3-.4.6'/%3e%3cpath%20fill='%23c8b100'%20d='m136.4%20210.5-.3.5-1.3-.4-.2-.2.2-.2%201.3-.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m136.4%20210.5-.3.5-1.3-.4-.2-.2.2-.2%201.3-.3.3.6'/%3e%3cpath%20fill='%23c8b100'%20d='m129.3%20209-.7.7.9%201%20.2.1.1-.1.3-1.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m129.3%20209-.7.7.9%201%20.2.1.1-.1.3-1.3-.8-.3'/%3e%3cpath%20fill='%23c8b100'%20d='m128%20211.2.4.5%201.2-.6v-.2l-.1-.2-1.3-.1-.3.6'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m128%20211.2.4.5%201.2-.6v-.2l-.1-.2-1.3-.1-.3.6'/%3e%3cpath%20fill='%23c8b100'%20d='m131.5%20210.5-.3.6H130l-.2-.2.1-.3%201.2-.6z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m131.5%20210.5-.3.6H130l-.2-.2.1-.3%201.2-.6.5.5'/%3e%3cpath%20fill='%23c8b100'%20d='M126.6%20211.4v.6l-1.4.2-.2-.1v-.2l1-.9z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M126.6%20211.4v.6l-1.4.2-.2-.1v-.2l1-.9.6.4'/%3e%3cpath%20fill='%23c8b100'%20d='M129.2%20210.9q0-.5.5-.5t.5.5l-.5.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M129.2%20210.9q0-.5.5-.5t.5.5l-.5.4z'/%3e%3cpath%20fill='%23c8b100'%20d='m140%20209%20.7.7-.9%201-.2.1-.1-.1-.3-1.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m140%20209%20.7.7-.9%201-.2.1-.1-.1-.3-1.3.8-.3'/%3e%3cpath%20fill='%23c8b100'%20d='m141.4%20211.2-.5.5-1.2-.6v-.2l.1-.2%201.3-.1z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m141.4%20211.2-.5.5-1.2-.6v-.2l.1-.2%201.3-.1.3.6'/%3e%3cpath%20fill='%23c8b100'%20d='m137.8%20210.5.3.6h1.3l.2-.2-.1-.3-1.2-.6z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m137.8%20210.5.3.6h1.3l.2-.2-.1-.3-1.2-.6-.5.5'/%3e%3cpath%20fill='%23c8b100'%20d='m142.5%20211.4.1.6%201.3.2.2-.1v-.2l-1-.9z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m142.5%20211.4.1.6%201.3.2.2-.1v-.2l-1-.9-.6.4'/%3e%3cpath%20fill='%23c8b100'%20d='m134.2%20210.4.4-.4q.5%200%20.5.4l-.5.5z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m134.2%20210.4.4-.4q.5%200%20.5.4l-.5.5z'/%3e%3cpath%20fill='%23c8b100'%20d='M139.1%20210.9q.1-.5.5-.5l.5.5-.5.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M139.1%20210.9q.1-.5.5-.5l.5.5-.5.4z'/%3e%3cpath%20fill='%23c8b100'%20d='m124.8%20212.2-.6-.7c-.2-.2-.7-.3-.7-.3q0-.2.6-.3l.4.2v-.2s.3%200%20.4.3v1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m124.8%20212.2-.6-.7c-.2-.2-.7-.3-.7-.3q0-.2.6-.3l.4.2v-.2s.3%200%20.4.3v1z'/%3e%3cpath%20fill='%23c8b100'%20d='M124.8%20212q.3-.3.5%200t.2.5l-.5-.1q-.3-.2-.2-.5'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M124.8%20212q.3-.3.5%200t.2.5l-.5-.1q-.3-.2-.2-.5z'/%3e%3cpath%20fill='%23c8b100'%20d='m144.3%20212.2.6-.7.7-.3q0-.2-.6-.3l-.4.2v-.2s-.3%200-.4.3v.7z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m144.3%20212.2.6-.7.7-.3q0-.2-.6-.3l-.4.2v-.2s-.3%200-.4.3v.7z'/%3e%3cpath%20fill='%23c8b100'%20d='M144.3%20212q-.1-.3-.5%200-.3.2-.1.5l.5-.1q.3-.2.1-.5'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M144.3%20212q-.1-.3-.5%200-.3.2-.1.5l.5-.1q.3-.2.1-.5z'/%3e%3cpath%20fill='%23c8b100'%20d='M124%20223h21.4v-5.5H124z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M124%20223h21.4v-5.5H124z'/%3e%3cpath%20fill='%23c8b100'%20d='M126.2%20226.8h16.9a1.4%201.4%200%200%201-1-1.2q.1-1%201-1.3h-16.9q1%20.3%201%201.3a1.3%201.3%200%200%201-1%201.2'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linejoin='round'%20stroke-width='.4'%20d='M126.2%20226.8h16.9a1.4%201.4%200%200%201-1-1.2q.1-1%201-1.3h-16.9q1%20.3%201%201.3a1.3%201.3%200%200%201-1%201.2z'/%3e%3cpath%20fill='%23c8b100'%20d='M126.6%20226.8h16q1%200%201%20.7t-1%20.8h-16q-.9-.1-1-.8%200-1%201-.8'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M126.6%20226.8h16q1%200%201%20.7t-1%20.8h-16q-.9-.1-1-.8%200-1%201-.8z'/%3e%3cpath%20fill='%23c8b100'%20d='M126.6%20223h16q1%20.1%201%20.7t-1%20.6h-16q-.9%200-1-.6.1-.5%201-.6'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M126.6%20223h16q1%20.1%201%20.7t-1%20.6h-16q-.9%200-1-.6.1-.5%201-.6z'/%3e%3cpath%20fill='%23005bbf'%20d='M149.6%20317.4q-2.2%200-3.7-.8a8%208%200%200%200-3.8-.8q-2.1%200-3.7.8a8%208%200%200%201-3.8.8q-2.3%200-3.7-.8a8%208%200%200%200-3.7-.8%208%208%200%200%200-3.7.8%208%208%200%200%201-3.8.8v2.4q2.3%200%203.8-.9a8%208%200%200%201%203.7-.8q2.2%200%203.7.8c1.5.8%202.2.9%203.7.9a8%208%200%200%200%203.8-.9q1.6-.8%203.7-.8%202.3%200%203.8.8c1.5.8%202.2.9%203.7.9z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M149.6%20317.4q-2.2%200-3.7-.8a8%208%200%200%200-3.8-.8q-2.1%200-3.7.8a8%208%200%200%201-3.8.8q-2.3%200-3.7-.8a8%208%200%200%200-3.7-.8%208%208%200%200%200-3.7.8%208%208%200%200%201-3.8.8v2.4q2.3%200%203.8-.9a8%208%200%200%201%203.7-.8q2.2%200%203.7.8c1.5.8%202.2.9%203.7.9a8%208%200%200%200%203.8-.9q1.6-.8%203.7-.8%202.3%200%203.8.8c1.5.8%202.2.9%203.7.9z'/%3e%3cpath%20fill='%23ccc'%20d='M149.6%20319.8a8%208%200%200%201-3.7-.9%208%208%200%200%200-3.8-.8q-2.1%200-3.7.8c-1.6.8-2.3.9-3.8.9s-2.8-.4-3.7-.9a8%208%200%200%200-3.7-.8%208%208%200%200%200-3.7.8q-1.5.8-3.8.9v2.3q2.3%200%203.8-.9a8%208%200%200%201%203.7-.7q2.2%200%203.7.7a8%208%200%200%200%207.5%200%209%209%200%200%201%207.5.1%208%208%200%200%200%203.7.8z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M149.6%20319.8a8%208%200%200%201-3.7-.9%208%208%200%200%200-3.8-.8q-2.1%200-3.7.8c-1.6.8-2.3.9-3.8.9s-2.8-.4-3.7-.9a8%208%200%200%200-3.7-.8%208%208%200%200%200-3.7.8q-1.5.8-3.8.9v2.3q2.3%200%203.8-.9a8%208%200%200%201%203.7-.7q2.2%200%203.7.7a8%208%200%200%200%207.5%200%209%209%200%200%201%207.5.1%208%208%200%200%200%203.7.8v-2.3'/%3e%3cpath%20fill='%23005bbf'%20d='M149.6%20322a7%207%200%200%201-3.7-.8%208%208%200%200%200-3.8-.7q-2.1%200-3.7.7-1.5.9-3.8.9c-2.3%200-2.8-.4-3.7-.9a8%208%200%200%200-3.7-.8%208%208%200%200%200-3.7.8q-1.5.8-3.8.9v2.3q2.3%200%203.8-.9a10%2010%200%200%201%207.4%200%207%207%200%200%200%203.7.9%208%208%200%200%200%203.8-.8q1.6-.8%203.7-.8%202.3%200%203.8.8c1.5.8%202.2.8%203.7.8z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M149.6%20322a7%207%200%200%201-3.7-.8%208%208%200%200%200-3.8-.7q-2.1%200-3.7.7-1.5.9-3.8.9c-2.3%200-2.8-.4-3.7-.9a8%208%200%200%200-3.7-.8%208%208%200%200%200-3.7.8q-1.5.8-3.8.9v2.3q2.3%200%203.8-.9a10%2010%200%200%201%207.4%200%207%207%200%200%200%203.7.9%208%208%200%200%200%203.8-.8q1.6-.8%203.7-.8%202.3%200%203.8.8c1.5.8%202.2.8%203.7.8V322'/%3e%3cpath%20fill='%23ccc'%20d='M149.6%20326.7a8%208%200%200%201-3.7-.8q-1.6-.8-3.7-.8a8%208%200%200%200-3.8.8q-1.5.8-3.8.8a7%207%200%200%201-3.7-.9%208%208%200%200%200-3.7-.7q-2.2%200-3.7.8c-1.5.8-2.3.8-3.8.8v-2.3a8%208%200%200%200%203.8-.9%2010%2010%200%200%201%207.4%200%208%208%200%200%200%203.7.9%208%208%200%200%200%203.8-.8q1.5-.8%203.8-.8t3.7.8c1.5.8%202.3.8%203.7.8z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M149.6%20326.7a8%208%200%200%201-3.7-.8q-1.6-.8-3.7-.8a8%208%200%200%200-3.8.8q-1.5.8-3.8.8a7%207%200%200%201-3.7-.9%208%208%200%200%200-3.7-.7q-2.2%200-3.7.8c-1.5.8-2.3.8-3.8.8v-2.3a8%208%200%200%200%203.8-.9%2010%2010%200%200%201%207.4%200%208%208%200%200%200%203.7.9%208%208%200%200%200%203.8-.8q1.5-.8%203.8-.8t3.7.8c1.5.8%202.3.8%203.7.8v2.3'/%3e%3cpath%20fill='%23005bbf'%20d='M149.6%20329a8%208%200%200%201-3.7-.8q-1.6-.8-3.7-.8a8%208%200%200%200-3.8.8q-1.5.8-3.8.8a7%207%200%200%201-3.7-.9%208%208%200%200%200-3.7-.7q-2.2%200-3.7.8c-1.5.8-2.3.8-3.8.8v-2.3a8%208%200%200%200%203.8-.8q1.5-.8%203.7-.8t3.7.7a8%208%200%200%200%207.5%200q1.5-.6%203.8-.7t3.7.8c1.5.8%202.2.8%203.7.8z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M149.6%20329a8%208%200%200%201-3.7-.8q-1.6-.8-3.7-.8a8%208%200%200%200-3.8.8q-1.5.8-3.8.8a7%207%200%200%201-3.7-.9%208%208%200%200%200-3.7-.7q-2.2%200-3.7.8c-1.5.8-2.3.8-3.8.8v-2.3a8%208%200%200%200%203.8-.8q1.5-.8%203.7-.8t3.7.7a8%208%200%200%200%207.5%200q1.5-.6%203.8-.7t3.7.8c1.5.8%202.2.8%203.7.8z'/%3e%3cpath%20fill='%23c8b100'%20d='m126.2%20308%20.2.5c0%201.5-1.3%202.6-2.7%202.6h22a3%203%200%200%201-2.7-2.6v-.5z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linejoin='round'%20stroke-width='.4'%20d='m126.2%20308%20.2.5c0%201.5-1.3%202.6-2.7%202.6h22a3%203%200%200%201-2.7-2.6v-.5z'/%3e%3cpath%20fill='%23c8b100'%20d='M126.6%20306.5h16q1%200%201%20.8%200%20.6-1%20.7h-16q-.9%200-1-.8.1-.6%201-.7'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M126.6%20306.5h16q1%200%201%20.8%200%20.6-1%20.7h-16q-.9%200-1-.8.1-.6%201-.7z'/%3e%3cpath%20fill='%23c8b100'%20d='M123.7%20316.7h22V311h-22z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M123.7%20316.7h22V311h-22z'/%3e%3cpath%20fill='%23ad1519'%20d='M122%20286.7c-2.2%201.2-3.7%202.5-3.4%203.2q.2.8%201.8%201.6c1.5%201.1%202.5%203%201.7%204a5.5%205.5%200%200%200-.1-8.8'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M122%20286.7c-2.2%201.2-3.7%202.5-3.4%203.2q.2.8%201.8%201.6c1.5%201.1%202.5%203%201.7%204a5.5%205.5%200%200%200-.1-8.8z'/%3e%3cpath%20fill='%23ccc'%20d='M126.8%20305.6h15.6V229h-15.6v76.5z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M138%20229.2v76.3m1.7-76.3v76.3m-12.9%200h15.6v-76.4h-15.6v76.5z'/%3e%3cpath%20fill='%23ad1519'%20d='M158.4%20257.7a50%2050%200%200%200-23.3-2c-9.4%201.6-16.5%205.3-15.9%208.4v.2l-3.5-8.2c-.6-3.3%207.2-7.5%2017.6-9.2a43%2043%200%200%201%209.2-.7c6.6%200%2012.4.8%2015.8%202.1v9.4'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linejoin='round'%20stroke-width='.4'%20d='M158.4%20257.7a50%2050%200%200%200-23.3-2c-9.4%201.6-16.5%205.3-15.9%208.4v.2l-3.5-8.2c-.6-3.3%207.2-7.5%2017.6-9.2a43%2043%200%200%201%209.2-.7c6.6%200%2012.4.8%2015.8%202.1v9.4'/%3e%3cpath%20fill='%23ad1519'%20d='M126.8%20267.3c-4.3-.3-7.3-1.4-7.6-3.2q-.3-2.2%203.8-4.5l3.8.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M126.8%20267.3c-4.3-.3-7.3-1.4-7.6-3.2q-.3-2.2%203.8-4.5l3.8.3v7.4'/%3e%3cpath%20fill='%23ad1519'%20d='M142.5%20261.5q4.1.6%205.7%201.9l.1.2c.5%201-1.9%203-5.9%205.4v-7.5'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M142.5%20261.5q4.1.6%205.7%201.9l.1.2c.5%201-1.9%203-5.9%205.4v-7.5'/%3e%3cpath%20fill='%23ad1519'%20d='M117.1%20282c-.4-1.2%203.8-3.6%209.8-5.8l7.8-3.2c8.3-3.7%2014.4-7.9%2013.6-9.4v-.2c.4.4%201%208%201%208%20.8%201.3-4.8%205.5-12.4%209.1-2.5%201.2-7.6%203-10%204-4.4%201.4-8.7%204.3-8.3%205.3l-1.5-7.7'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linejoin='round'%20stroke-width='.4'%20d='M117.1%20282c-.4-1.2%203.8-3.6%209.8-5.8l7.8-3.2c8.3-3.7%2014.4-7.9%2013.6-9.4v-.2c.4.4%201%208%201%208%20.8%201.3-4.8%205.5-12.4%209.1-2.5%201.2-7.6%203-10%204-4.4%201.4-8.7%204.3-8.3%205.3l-1.5-7.7z'/%3e%3cpath%20fill='%23c8b100'%20d='M125.8%20254c1.9-.6%203.1-1.5%202.5-3q-.6-1.3-2.8-.6l-2.6%201%202.3%205.8.8-.3.8-.3zm-1.2-2.7.7-.3q1-.3%201.4.8.4.8-.5%201.5l-.6.3zm7.3-2.5-.9.3h-.8l1.3%206.1%204.3-.8-.2-.4v-.4l-2.5.6zm8.4%205.2q1.2-3.3%202.7-6.4h-1l-1.8%204.6-2.4-4.3-1%20.1h-1l3.5%206zm8.8-4.7.4-.9a3%203%200%200%200-1.7-.6q-2.6%200-2.8%201.7c-.2%202.1%203.2%202%203%203.4q-.2%201-1.4.8-1.3%200-1.4-1.2h-.3l-.4%201.1a4%204%200%200%200%201.8.6q2.7.2%203.2-1.7c.2-2-3.3-2.1-3.1-3.4q0-.8%201.3-.7%201%200%201.2.9z'/%3e%3cpath%20fill='%23ad1519'%20d='M277.9%20211.6s-.7.8-1.3.9c-.5%200-1.1-.5-1.1-.5s-.5.5-1%20.6-1.4-.6-1.4-.6l-1%201-1.1-.3c-.1-.1-.3.4-.7.6h-.4l-.6-.4-.7-.7-.5-.3-.4-1v-.5q0-1%202.2-1.7a4%204%200%200%201%202%200q.9-.8%203-.8c2.1%200%202.4.3%203%20.7a6%206%200%200%201%202.9-.7q2.1%200%203%20.8.8-.3%202%200%202.2.6%202.2%201.7v.5l-.4%201-.6.3-.6.7-.6.3s-.3.2-.4%200q-.6-.3-.7-.5c-.1-.2-.6.4-1%20.2s-1-1-1-1-.9.8-1.4.7c-.6-.1-1-.6-1-.6s-.7.6-1.2.5-1.2-.9-1.2-.9'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M277.9%20211.6s-.7.8-1.3.9c-.5%200-1.1-.5-1.1-.5s-.5.5-1%20.6-1.4-.6-1.4-.6l-1%201-1.1-.3c-.1-.1-.3.4-.7.6h-.4l-.6-.4-.7-.7-.5-.3-.4-1v-.5q0-1%202.2-1.7a4%204%200%200%201%202%200q.9-.8%203-.8c2.1%200%202.4.3%203%20.7a6%206%200%200%201%202.9-.7q2.1%200%203%20.8.8-.3%202%200%202.2.6%202.2%201.7v.5l-.4%201-.6.3-.6.7-.6.3s-.3.2-.4%200q-.6-.3-.7-.5c-.1-.2-.6.4-1%20.2s-1-1-1-1-.9.8-1.4.7c-.6-.1-1-.6-1-.6s-.7.6-1.2.5-1.2-.9-1.2-.9z'/%3e%3cpath%20fill='%23c8b100'%20d='M276.5%20207.6c0-1%20.6-2%201.3-2s1.3%201%201.3%202-.5%201.8-1.3%201.8q-1.2-.1-1.3-1.9'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M276.5%20207.6c0-1%20.6-2%201.3-2s1.3%201%201.3%202-.5%201.8-1.3%201.8q-1.2-.1-1.3-1.9z'/%3e%3cpath%20fill='%23c8b100'%20d='M277.3%20207.6q0-1.7.5-1.8.6.2.7%201.8c.1%201.6-.3%201.7-.6%201.7q-.6-.2-.6-1.8'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M277.3%20207.6q0-1.7.5-1.8.6.2.7%201.8c.1%201.6-.3%201.7-.6%201.7q-.6-.2-.6-1.8z'/%3e%3cpath%20fill='%23c8b100'%20d='m271%20215.3-.5-1a27%2027%200%200%201%2014.8%200l-.6.8-.3.8a23%2023%200%200%200-6.6-.8c-2.6%200-5.2.3-6.6.8z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m271%20215.3-.5-1a27%2027%200%200%201%2014.8%200l-.6.8-.3.8a23%2023%200%200%200-6.6-.8c-2.6%200-5.2.3-6.6.8l-.2-.6'/%3e%3cpath%20fill='%23c8b100'%20d='M277.8%20217.7c2.4%200%205-.4%205.9-.6q1-.3%201-.8%200-.3-.4-.4a24%2024%200%200%200-6.5-.8c-2.5%200-5%20.3-6.4.8q-.3%200-.4.3%200%20.6%201%20.9c1%20.2%203.5.6%205.8.6'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M277.8%20217.7c2.4%200%205-.4%205.9-.6q1-.3%201-.8%200-.3-.4-.4a24%2024%200%200%200-6.5-.8c-2.5%200-5%20.3-6.4.8q-.3%200-.4.3%200%20.6%201%20.9c1%20.2%203.5.6%205.8.6z'/%3e%3cpath%20fill='%23fff'%20d='M283.5%20208.4q0-.3.4-.4.5%200%20.5.4t-.5.4a.4.4%200%200%201-.4-.4'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.2'%20d='M283.5%20208.4q0-.3.4-.4.5%200%20.5.4t-.5.4a.4.4%200%200%201-.4-.4zm-.2-1.4a.4.4%200%200%201%20.4-.4q.4%200%20.4.4t-.4.4a.4.4%200%200%201-.4-.4zm-1.1-1q0-.3.4-.3t.4.4-.4.4a.4.4%200%200%201-.4-.5zm-1.4-.4q0-.3.4-.4.5%200%20.5.4t-.4.4q-.5-.1-.5-.4zm-1.4%200q0-.3.5-.3t.4.4q0%20.3-.4.4a.4.4%200%200%201-.5-.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linecap='round'%20stroke-width='.3'%20d='m287.8%20211.2.2-1a2.7%202.7%200%200%200-2.7-2.8q-.8%200-1.3.3'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m283%20209.2.2-.8q-.2-1.8-2.5-2-1%200-1.6.4'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.2'%20d='M288.2%20210q0-.5.4-.5t.4.4-.4.4q-.5%200-.4-.4zm-.2-1.6q0-.3.4-.4a.4.4%200%200%201%20.5.4q0%20.3-.4.4-.5%200-.5-.4zm-1-1.1a.4.4%200%200%201%20.5-.4q.3%200%20.4.4a.4.4%200%200%201-.4.4.4.4%200%200%201-.5-.4zm-1.3-.7q0-.4.5-.4t.4.4q0%20.5-.4.5a.4.4%200%200%201-.5-.5zm-1.4.1q0-.3.5-.4.6%200%20.4.4t-.4.4q-.4-.1-.5-.4z'/%3e%3cpath%20fill='%23c8b100'%20d='m285.3%20213.2-.5-.5s-.6.3-1.3.2c-.6%200-.9-1-.9-1s-.7.7-1.3.7-1-.6-1-.6-.7.5-1.3.4-1.2-.8-1.2-.8-.6.8-1.2.8c-.6.1-1-.5-1-.5s-.3.6-1.1.7-1.4-.6-1.4-.6-.4.7-1%201c-.5%200-1.2-.4-1.2-.4l-.1.5-.3.1.1.5a27%2027%200%200%201%207.3-.9q4.3%200%207.3%201l.2-.6'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m285.3%20213.2-.5-.5s-.6.3-1.3.2c-.6%200-.9-1-.9-1s-.7.7-1.3.7-1-.6-1-.6-.7.5-1.3.4-1.2-.8-1.2-.8-.6.8-1.2.8c-.6.1-1-.5-1-.5s-.3.6-1.1.7-1.4-.6-1.4-.6-.4.7-1%201c-.5%200-1.2-.4-1.2-.4l-.1.5-.3.1.1.5a27%2027%200%200%201%207.3-.9q4.3%200%207.3%201l.2-.6z'/%3e%3cpath%20fill='%23fff'%20d='M271.3%20208.4q0-.3.4-.4.5%200%20.4.4a.4.4%200%200%201-.4.4.4.4%200%200%201-.4-.4'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.2'%20d='M271.3%20208.4q0-.3.4-.4.5%200%20.4.4a.4.4%200%200%201-.4.4.4.4%200%200%201-.4-.4zm.2-1.4q0-.4.4-.4t.5.4q0%20.5-.5.4a.4.4%200%200%201-.4-.4zm1-1q.1-.3.5-.3t.5.4q0%20.3-.5.4a.4.4%200%200%201-.4-.5zm1.4-.4q0-.3.5-.4.6%200%20.4.4t-.4.4q-.4-.1-.5-.4zm1.4%200q0-.3.5-.3.3%200%20.4.4%200%20.3-.4.4a.4.4%200%200%201-.5-.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linecap='round'%20stroke-width='.3'%20d='m267.8%20211.2-.2-1a2.7%202.7%200%200%201%202.7-2.8q.8%200%201.4.3'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m272.7%20209.2-.3-.8c0-1%201.2-2%202.6-2a3%203%200%200%201%201.5.4'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.2'%20d='M266.6%20210q0-.5.4-.5t.4.4a.4.4%200%200%201-.4.4q-.3%200-.4-.4zm.1-1.6q.1-.3.5-.4.5%200%20.4.4t-.4.4q-.4-.1-.4-.4zm1-1.1q0-.4.5-.4a.4.4%200%200%201%20.4.4.4.4%200%200%201-.4.4.4.4%200%200%201-.5-.4zm1.3-.7q0-.4.5-.4.3%200%20.4.4%200%20.5-.4.5a.4.4%200%200%201-.5-.5zm1.4.1q0-.3.5-.4a.4.4%200%200%201%20.4.4.4.4%200%200%201-.4.4q-.5%200-.5-.4z'/%3e%3cpath%20fill='%23c8b100'%20d='M277.9%20210.7h.2v.4q.1%201%201%201a1%201%200%200%200%201-.7l.2-.3v.4q.3.8%201.1.8%201%200%201-1v-.1l.4-.4.2.5-.1.4a1%201%200%200%200%201%201q.6%200%20.9-.5l.2-.2v.3q0%20.5.4.7l1-.4c1-.5.7-.7.7-.7v.4s-.5.8-1%201q-.3.4-.8.3-.5%200-.7-.6l-.7.2q-1%200-1.4-.8l-1.1.5q-.8%200-1.2-.6l-1%20.4q-.9%200-1.4-.6-.4.6-1.2.6-.6%200-1-.4a2%202%200%200%201-1.3.6q-.6%200-1.1-.5-.4.8-1.4.8-.4%200-.7-.2-.2.5-.7.6t-.9-.2l-1-1%20.1-.5.8.7q.8.5.9.4.4-.1.4-.7v-.3l.2.2q.3.5.9.5a1%201%200%200%200%201-1v-.9l.4.4v.1q.1%201%201%201t1.1-.9v-.3l.2.3q.4.6%201%20.7%201%200%201.1-1v-.3h.2'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M277.9%20210.7h.2v.4q.1%201%201%201a1%201%200%200%200%201-.7l.2-.3v.4q.3.8%201.1.8%201%200%201-1v-.1l.4-.4.2.5-.1.4a1%201%200%200%200%201%201q.6%200%20.9-.5l.2-.2v.3q0%20.5.4.7l1-.4c1-.5.7-.7.7-.7v.4s-.5.8-1%201q-.3.4-.8.3-.5%200-.7-.6l-.7.2q-1%200-1.4-.8l-1.1.5q-.8%200-1.2-.6l-1%20.4q-.9%200-1.4-.6-.4.6-1.2.6-.6%200-1-.4a2%202%200%200%201-1.3.6q-.6%200-1.1-.5-.4.8-1.4.8-.4%200-.7-.2-.2.5-.7.6t-.9-.2l-1-1%20.1-.5.8.7q.8.5.9.4.4-.1.4-.7v-.3l.2.2q.3.5.9.5a1%201%200%200%200%201-1v-.9l.4.4v.1q.1%201%201%201t1.1-.9v-.3l.2.3q.4.6%201%20.7%201%200%201.1-1v-.3h.2z'/%3e%3cpath%20fill='%23c8b100'%20d='M277.8%20213.3q-4.5%200-7.3%201l-.3-.2.1-.3q3-1%207.5-1t7.6%201l.1.3-.3.2a27%2027%200%200%200-7.4-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M277.8%20213.3q-4.5%200-7.3%201l-.3-.2.1-.3q3-1%207.5-1t7.6%201l.1.3-.3.2a27%2027%200%200%200-7.4-1z'/%3e%3cpath%20fill='%23fff'%20d='M275%20214.4q0-.4.5-.4a.4.4%200%200%201%20.4.4.4.4%200%200%201-.4.4q-.5%200-.5-.4'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M275%20214.4q0-.4.5-.4a.4.4%200%200%201%20.4.4.4.4%200%200%201-.4.4q-.5%200-.5-.4z'/%3e%3cpath%20fill='%23ad1519'%20d='M277.9%20214.5h-1q-.2%200-.3-.3l.3-.3h2l.2.3-.3.3h-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M277.9%20214.5h-1q-.2%200-.3-.3l.3-.3h2l.2.3-.3.3h-1'/%3e%3cpath%20fill='%23058e6e'%20d='M273.2%20214.9h-.6a.3.3%200%200%201-.4-.2l.3-.3.6-.1.7-.1q.3%200%20.4.2a.3.3%200%200%201-.3.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M273.2%20214.9h-.6a.3.3%200%200%201-.4-.2l.3-.3.6-.1.7-.1q.3%200%20.4.2a.3.3%200%200%201-.3.4h-.7'/%3e%3cpath%20fill='%23ad1519'%20d='m270.5%20215.3.3-.4h.7l-.4.6z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m270.5%20215.3.3-.4h.7l-.4.6-.6-.2'/%3e%3cpath%20fill='%23fff'%20d='M279.8%20214.4q0-.4.4-.4t.5.4q0%20.3-.5.4a.4.4%200%200%201-.4-.4'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M279.8%20214.4q0-.4.4-.4t.5.4q0%20.3-.5.4a.4.4%200%200%201-.4-.4z'/%3e%3cpath%20fill='%23058e6e'%20d='M282.5%20214.9h.7l.3-.2-.2-.3-.7-.1-.7-.1q-.3%200-.4.2%200%20.3.3.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M282.5%20214.9h.7l.3-.2-.2-.3-.7-.1-.7-.1q-.3%200-.4.2%200%20.3.3.4h.7'/%3e%3cpath%20fill='%23ad1519'%20d='m285.1%20215.4-.2-.5h-.7l.3.6z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m285.1%20215.4-.2-.5h-.7l.3.6.6-.1'/%3e%3cpath%20fill='%23ad1519'%20d='M277.8%20217.1a25%2025%200%200%201-6-.6%2025%2025%200%200%201%206-.7q3.6%200%206.1.7-2.5.6-6%20.6'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linejoin='round'%20stroke-width='.3'%20d='M277.8%20217.1a25%2025%200%200%201-6-.6%2025%2025%200%200%201%206-.7q3.6%200%206.1.7-2.5.6-6%20.6z'/%3e%3cpath%20fill='%23c8b100'%20d='m285.2%20212-.1-.3q-.3%200-.4.2l.1.4q.3%200%20.4-.3'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m285.2%20212-.1-.3q-.3%200-.4.2l.1.4q.3%200%20.4-.3z'/%3e%3cpath%20fill='%23c8b100'%20d='M280.6%20211.2q0-.3-.3-.4l-.2.3q0%20.3.2.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M280.6%20211.2q0-.3-.3-.4l-.2.3q0%20.3.2.4z'/%3e%3cpath%20fill='%23c8b100'%20d='M275.2%20211.2q0-.3.2-.4l.3.3-.2.4q-.3%200-.3-.3'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M275.2%20211.2q0-.3.2-.4l.3.3-.2.4q-.3%200-.3-.3z'/%3e%3cpath%20fill='%23c8b100'%20d='m270.5%20212%20.1-.3q.3%200%20.4.2l-.1.4q-.3%200-.4-.3'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m270.5%20212%20.1-.3q.3%200%20.4.2l-.1.4q-.3%200-.4-.3z'/%3e%3cpath%20fill='%23c8b100'%20d='m277.8%20208.5-.8.5.6%201.3.2.1.3-.1.6-1.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m277.8%20208.5-.8.5.6%201.3.2.1.3-.1.6-1.3-.9-.5'/%3e%3cpath%20fill='%23c8b100'%20d='m276%20210.5.4.5%201.3-.4.1-.2-.1-.2-1.3-.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m276%20210.5.4.5%201.3-.4.1-.2-.1-.2-1.3-.3-.4.6'/%3e%3cpath%20fill='%23c8b100'%20d='m279.6%20210.5-.3.5-1.3-.4-.1-.2v-.2l1.4-.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m279.6%20210.5-.3.5-1.3-.4-.1-.2v-.2l1.4-.3.4.6'/%3e%3cpath%20fill='%23c8b100'%20d='m272.5%20209-.7.7.9%201%20.2.1.2-.1.2-1.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m272.5%20209-.7.7.9%201%20.2.1.2-.1.2-1.3-.8-.3'/%3e%3cpath%20fill='%23c8b100'%20d='m271.1%20211.2.5.5%201.2-.6v-.2l-.1-.2-1.3-.1z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m271.1%20211.2.5.5%201.2-.6v-.2l-.1-.2-1.3-.1-.3.6'/%3e%3cpath%20fill='%23c8b100'%20d='m274.7%20210.5-.3.6h-1.3l-.2-.2.1-.3%201.2-.6z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m274.7%20210.5-.3.6h-1.3l-.2-.2.1-.3%201.2-.6.5.5'/%3e%3cpath%20fill='%23c8b100'%20d='M269.8%20211.4v.6l-1.4.2-.2-.1v-.2l1-.9z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M269.8%20211.4v.6l-1.4.2-.2-.1v-.2l1-.9.6.4'/%3e%3cpath%20fill='%23c8b100'%20d='M272.4%20210.9q0-.5.5-.5l.5.5-.5.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M272.4%20210.9q0-.5.5-.5l.5.5-.5.4z'/%3e%3cpath%20fill='%23c8b100'%20d='m283.2%20209%20.7.7-.9%201-.2.1-.1-.1-.3-1.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m283.2%20209%20.7.7-.9%201-.2.1-.1-.1-.3-1.3.8-.3'/%3e%3cpath%20fill='%23c8b100'%20d='m284.6%20211.2-.5.5-1.2-.6v-.2l.1-.2%201.3-.1z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m284.6%20211.2-.5.5-1.2-.6v-.2l.1-.2%201.3-.1.3.6'/%3e%3cpath%20fill='%23c8b100'%20d='m281%20210.5.3.6h1.3l.2-.2-.1-.3-1.2-.6z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m281%20210.5.3.6h1.3l.2-.2-.1-.3-1.2-.6-.5.5'/%3e%3cpath%20fill='%23c8b100'%20d='M285.7%20211.4v.6l1.4.2.2-.1v-.2l-1-.9z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M285.7%20211.4v.6l1.4.2.2-.1v-.2l-1-.9-.6.4'/%3e%3cpath%20fill='%23c8b100'%20d='M277.4%20210.4q0-.3.5-.4.4%200%20.4.4t-.4.5z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M277.4%20210.4q0-.3.5-.4.4%200%20.4.4t-.4.5z'/%3e%3cpath%20fill='%23c8b100'%20d='M282.3%20210.9q.1-.5.5-.5t.5.5q0%20.6-.5.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M282.3%20210.9q.1-.5.5-.5t.5.5q0%20.6-.5.4z'/%3e%3cpath%20fill='%23c8b100'%20d='M277%20205.4q.1-.8.8-.8%201%200%201%20.8c0%20.8-.5.8-1%20.8a1%201%200%200%201-.8-.8'/%3e%3cpath%20fill='%23c8b100'%20d='M278.5%20205.1v.6H277v-.6h.4v-1.3h-.5v-.5h.5v-.6h.6v.6h.6v.6h-.6v1.2h.4'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M278.5%20205.1v.6H277v-.6h.4v-1.3h-.5v-.5h.5v-.6h.6v.6h.6v.6h-.6v1.2h.4z'/%3e%3cpath%20fill='%23c8b100'%20d='M279%20205.1v.6h-2.4v-.6h1v-1.3h-.7v-.5h.6v-.6h.6v.6h.6v.6h-.6v1.2h1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M278.1%20204.6q.6.1.6.8t-.9.8a1%201%200%200%201-.8-.8q0-.6.6-.8'/%3e%3cpath%20fill='%23c8b100'%20d='m268%20212.2-.6-.7-.7-.3q0-.2.6-.3.3%200%20.4.2v-.2s.3%200%20.4.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m268%20212.2-.6-.7-.7-.3q0-.2.6-.3.3%200%20.4.2v-.2s.3%200%20.4.3z'/%3e%3cpath%20fill='%23c8b100'%20d='M268%20212q.3-.3.5%200%20.4.2.1.5l-.5-.1q-.2-.2%200-.5'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M268%20212q.3-.3.5%200%20.4.2.1.5l-.5-.1q-.2-.2%200-.5z'/%3e%3cpath%20fill='%23c8b100'%20d='m287.5%20212.2.6-.7c.2-.2.7-.3.7-.3q0-.2-.6-.3l-.4.2v-.2s-.3%200-.4.3v.7z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m287.5%20212.2.6-.7c.2-.2.7-.3.7-.3q0-.2-.6-.3l-.4.2v-.2s-.3%200-.4.3v.7z'/%3e%3cpath%20fill='%23c8b100'%20d='M287.5%20212q-.2-.3-.5%200t-.1.5l.5-.1q.3-.2.1-.5'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M287.5%20212q-.2-.3-.5%200t-.1.5l.5-.1q.3-.2.1-.5z'/%3e%3cpath%20fill='%23c8b100'%20d='M267.2%20223h21.4v-5.5h-21.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M267.2%20223h21.4v-5.5h-21.4z'/%3e%3cpath%20fill='%23c8b100'%20d='M286.3%20226.8h-16.9q1-.4%201-1.2%200-1-1-1.3h17-.1q-1%20.3-1%201.3%200%20.8%201%201.2'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linejoin='round'%20stroke-width='.4'%20d='M286.3%20226.8h-16.9q1-.4%201-1.2%200-1-1-1.3h17-.1q-1%20.3-1%201.3%200%20.8%201%201.2z'/%3e%3cpath%20fill='%23c8b100'%20d='M269.9%20226.8h16q1%200%201%20.7t-1%20.8h-16q-1-.1-1-.8.1-1%201-.8'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M269.9%20226.8h16q1%200%201%20.7t-1%20.8h-16q-1-.1-1-.8.1-1%201-.8z'/%3e%3cpath%20fill='%23c8b100'%20d='M269.9%20223h16q1%20.1%201%20.7t-1%20.6h-16q-1%200-1-.6t1-.6'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M269.9%20223h16q1%20.1%201%20.7t-1%20.6h-16q-1%200-1-.6t1-.6z'/%3e%3cpath%20fill='%23005bbf'%20d='M263%20317.4q2.1%200%203.7-.8a8%208%200%200%201%203.7-.8q2.2%200%203.8.8c1.6.8%202.3.8%203.7.8q2.3%200%203.8-.8a8%208%200%200%201%203.6-.8%208%208%200%200%201%203.7.8q1.6.8%203.8.8v2.4a8%208%200%200%201-3.8-.9%208%208%200%200%200-3.7-.8q-2.2%200-3.6.8-1.5.8-3.8.9a8%208%200%200%201-3.7-.9%208%208%200%200%200-3.8-.8%208%208%200%200%200-3.7.8q-1.5.8-3.8.9v-2.4'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M263%20317.4q2.1%200%203.7-.8a8%208%200%200%201%203.7-.8q2.2%200%203.8.8c1.6.8%202.3.8%203.7.8q2.3%200%203.8-.8a8%208%200%200%201%203.6-.8%208%208%200%200%201%203.7.8q1.6.8%203.8.8v2.4a8%208%200%200%201-3.8-.9%208%208%200%200%200-3.7-.8q-2.2%200-3.6.8-1.5.8-3.8.9a8%208%200%200%201-3.7-.9%208%208%200%200%200-3.8-.8%208%208%200%200%200-3.7.8q-1.5.8-3.8.9v-2.4z'/%3e%3cpath%20fill='%23ccc'%20d='M263%20319.8q2.1%200%203.7-.9c1.6-.9%202.3-.8%203.7-.8q2.2%200%203.8.8c1.6.8%202.3.9%203.7.9a8%208%200%200%200%203.8-.9%208%208%200%200%201%203.6-.8q2.3%200%203.7.8%201.6.8%203.8.9v2.3a8%208%200%200%201-3.8-.9%208%208%200%200%200-3.7-.7q-2.2%200-3.6.7-1.5.8-3.8.9a7%207%200%200%201-3.7-.9q-1.5-.6-3.8-.7a8%208%200%200%200-3.7.7%208%208%200%200%201-3.8.9v-2.3'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M263%20319.8q2.1%200%203.7-.9c1.6-.9%202.3-.8%203.7-.8q2.2%200%203.8.8c1.6.8%202.3.9%203.7.9a8%208%200%200%200%203.8-.9%208%208%200%200%201%203.6-.8q2.3%200%203.7.8%201.6.8%203.8.9v2.3a8%208%200%200%201-3.8-.9%208%208%200%200%200-3.7-.7q-2.2%200-3.6.7-1.5.8-3.8.9a7%207%200%200%201-3.7-.9q-1.5-.6-3.8-.7a8%208%200%200%200-3.7.7%208%208%200%200%201-3.8.9v-2.3'/%3e%3cpath%20fill='%23005bbf'%20d='M263%20322q2.1%200%203.7-.8%201.6-.6%203.7-.7%202.2%200%203.8.7c1.6.7%202.3.9%203.7.9a8%208%200%200%200%203.8-.9%208%208%200%200%201%203.6-.8%208%208%200%200%201%203.7.8q1.6.8%203.8.9v2.3a8%208%200%200%201-3.8-.9%208%208%200%200%200-3.7-.7q-2.2%200-3.6.7-1.5.9-3.8.9t-3.7-.8a8%208%200%200%200-3.8-.8%208%208%200%200%200-3.7.8q-1.5.8-3.8.8V322'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M263%20322q2.1%200%203.7-.8%201.6-.6%203.7-.7%202.2%200%203.8.7c1.6.7%202.3.9%203.7.9a8%208%200%200%200%203.8-.9%208%208%200%200%201%203.6-.8%208%208%200%200%201%203.7.8q1.6.8%203.8.9v2.3a8%208%200%200%201-3.8-.9%208%208%200%200%200-3.7-.7q-2.2%200-3.6.7-1.5.9-3.8.9t-3.7-.8a8%208%200%200%200-3.8-.8%208%208%200%200%200-3.7.8q-1.5.8-3.8.8V322'/%3e%3cpath%20fill='%23ccc'%20d='M263%20326.7a8%208%200%200%200%203.7-.8q1.6-.8%203.7-.8%202.2%200%203.8.8c1.6.8%202.3.8%203.7.8q2.3%200%203.8-.9a8%208%200%200%201%203.6-.7q2.3%200%203.7.8a8%208%200%200%200%203.8.8v-2.3a8%208%200%200%201-3.8-.9%208%208%200%200%200-3.7-.7q-2.2%200-3.6.7-1.5.8-3.8.9t-3.7-.8a8%208%200%200%200-3.8-.8%208%208%200%200%200-3.7.8q-1.5.8-3.8.8v2.3'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M263%20326.7a8%208%200%200%200%203.7-.8q1.6-.8%203.7-.8%202.2%200%203.8.8c1.6.8%202.3.8%203.7.8q2.3%200%203.8-.9a8%208%200%200%201%203.6-.7q2.3%200%203.7.8a8%208%200%200%200%203.8.8v-2.3a8%208%200%200%201-3.8-.9%208%208%200%200%200-3.7-.7q-2.2%200-3.6.7-1.5.8-3.8.9t-3.7-.8a8%208%200%200%200-3.8-.8%208%208%200%200%200-3.7.8q-1.5.8-3.8.8v2.3'/%3e%3cpath%20fill='%23005bbf'%20d='M263%20329a8%208%200%200%200%203.7-.8q1.6-.8%203.7-.8%202.2%200%203.8.8c1.6.8%202.3.8%203.7.8a8%208%200%200%200%203.8-.9%208%208%200%200%201%203.6-.7q2.3%200%203.7.8%201.6.8%203.8.8v-2.3a8%208%200%200%201-3.8-.8%208%208%200%200%200-3.7-.8%208%208%200%200%200-3.6.7%208%208%200%200%201-3.8.9q-2.2%200-3.7-.8t-3.8-.8q-2.1%200-3.7.8c-1.6.8-2.3.8-3.8.8v2.3'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M263%20329a8%208%200%200%200%203.7-.8q1.6-.8%203.7-.8%202.2%200%203.8.8c1.6.8%202.3.8%203.7.8a8%208%200%200%200%203.8-.9%208%208%200%200%201%203.6-.7q2.3%200%203.7.8%201.6.8%203.8.8v-2.3a8%208%200%200%201-3.8-.8%208%208%200%200%200-3.7-.8%208%208%200%200%200-3.6.7%208%208%200%200%201-3.8.9q-2.2%200-3.7-.8t-3.8-.8q-2.1%200-3.7.8c-1.6.8-2.3.8-3.8.8v2.3z'/%3e%3cpath%20fill='%23c8b100'%20d='m286.3%20308-.1.5c0%201.5%201.2%202.6%202.7%202.6h-22c1.5%200%202.7-1.2%202.7-2.6l-.1-.5z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linejoin='round'%20stroke-width='.4'%20d='m286.3%20308-.1.5c0%201.5%201.2%202.6%202.7%202.6h-22c1.5%200%202.7-1.2%202.7-2.6l-.1-.5z'/%3e%3cpath%20fill='%23c8b100'%20d='M269.9%20306.5h16q1%200%201%20.8%200%20.6-1%20.7h-16q-1%200-1-.8.1-.6%201-.7'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M269.9%20306.5h16q1%200%201%20.8%200%20.6-1%20.7h-16q-1%200-1-.8.1-.6%201-.7z'/%3e%3cpath%20fill='%23c8b100'%20d='M266.9%20316.7h22V311h-22z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M266.9%20316.7h22V311h-22z'/%3e%3cpath%20fill='%23ad1519'%20d='M290.6%20286.7c2.1%201.2%203.6%202.5%203.4%203.2q-.2.8-1.8%201.6c-1.6%201.1-2.5%203-1.8%204a5.5%205.5%200%200%201%20.2-8.8'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M290.6%20286.7c2.1%201.2%203.6%202.5%203.4%203.2q-.2.8-1.8%201.6c-1.6%201.1-2.5%203-1.8%204a5.5%205.5%200%200%201%20.2-8.8z'/%3e%3cpath%20fill='%23ccc'%20d='M270.1%20305.6h15.6V229h-15.6v76.5z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M281.4%20229.1v76.3m1.8-76.3v76.3m-13%20.2h15.5V229h-15.6v76.5z'/%3e%3cpath%20fill='%23ad1519'%20d='M254.2%20257.7a50%2050%200%200%201%2023.3-2c9.3%201.6%2016.4%205.3%2015.9%208.4v.2l3.5-8.2c.6-3.3-7.3-7.5-17.6-9.2a54%2054%200%200%200-9.2-.7c-6.7%200-12.4.8-15.9%202.1z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linejoin='round'%20stroke-width='.4'%20d='M254.2%20257.7a50%2050%200%200%201%2023.3-2c9.3%201.6%2016.4%205.3%2015.9%208.4v.2l3.5-8.2c.6-3.3-7.3-7.5-17.6-9.2a54%2054%200%200%200-9.2-.7c-6.7%200-12.4.8-15.9%202.1v9.4'/%3e%3cpath%20fill='%23ad1519'%20d='M285.7%20267.3c4.4-.3%207.3-1.4%207.7-3.2q.2-2.2-3.8-4.5l-3.9.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M285.7%20267.3c4.4-.3%207.3-1.4%207.7-3.2q.2-2.2-3.8-4.5l-3.9.3v7.4'/%3e%3cpath%20fill='%23ad1519'%20d='M270%20261.5a13%2013%200%200%200-5.7%201.9v.2c-.5%201%201.8%203%205.8%205.4v-7.5'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M270%20261.5a13%2013%200%200%200-5.7%201.9v.2c-.5%201%201.8%203%205.8%205.4v-7.5'/%3e%3cpath%20fill='%23ad1519'%20d='M295.4%20282c.4-1.2-3.8-3.6-9.7-5.8-2.8-1-5-2-7.8-3.2-8.3-3.7-14.4-7.9-13.6-9.4v-.2c-.4.4-1%208-1%208-.8%201.3%204.8%205.5%2012.4%209.1%202.4%201.2%207.6%203%2010%204%204.3%201.4%208.7%204.3%208.3%205.3l1.4-7.7'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linejoin='round'%20stroke-width='.4'%20d='M295.4%20282c.4-1.2-3.8-3.6-9.7-5.8-2.8-1-5-2-7.8-3.2-8.3-3.7-14.4-7.9-13.6-9.4v-.2c-.4.4-1%208-1%208-.8%201.3%204.8%205.5%2012.4%209.1%202.4%201.2%207.6%203%2010%204%204.3%201.4%208.7%204.3%208.3%205.3l1.4-7.7z'/%3e%3cpath%20fill='%23c8b100'%20d='m263.9%20254.4%202.1-6.6h-.5l-.5.1-1.4%204.8q-1.6-2-2.7-4.1l-1%20.2h-1l4%205.7h.5zm6-6.6h-1.8v6.2h4.2v-.7h-2.6zm6.8%201%202%20.3v-.7l-5.8-.5v.8h2l-.4%205.6h1.6l.5-5.4m2.4%206%20.8.2.8.2.7-2.9.6%201.2.8%202.1%201%20.2q.6%200%201%20.3l-.3-.7-1.3-2.9q1.6%200%202.1-1.2.3-.8-.7-1.5-.8-.4-1.7-.5l-2.4-.5zm3-5.2c.7.2%201.5.3%201.5%201v.5q-.5%201.3-2%20.9zm8%207-.2%202%20.8.5.9.5.5-7-.7-.3-6.1%203.8.5.3.4.2%201.7-1.2%202.3%201.3zm-1.7-1.5%202-1.4-.2%202.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.1'%20d='M182.2%20192.4c0-1%201-2%202-2s2.2%201%202.2%202c0%201.1-1%202-2.1%202a2%202%200%200%201-2.1-2z'/%3e%3cpath%20fill='%23ad1519'%20stroke='%23000'%20stroke-width='.3'%20d='M205.7%20175.4c6.3%200%2012%201%2015.7%202.4a32%2032%200%200%200%2014.6%202.3c2.7%200%206.5.8%2010.3%202.4a27%2027%200%200%201%207.4%204.7l-1.5%201.4-.4%203.8-4.1%204.7-2%201.8-5%203.9-2.5.2-.7%202.1-31.6-3.7-31.7%203.7-.8-2.1-2.5-.2-4.9-4-2-1.7-4.1-4.7-.5-3.8-1.5-1.4a28%2028%200%200%201%207.5-4.7%2026%2026%200%200%201%2010.2-2.4q3%20.3%206.6-.2a30%2030%200%200%200%208-2q5.6-2.4%2015.5-2.5z'/%3e%3cpath%20fill='%23c8b100'%20stroke='%23000'%20stroke-width='.4'%20d='M206.2%20217.1c-11.8%200-22.4-1.4-29.9-3.6a1%201%200%200%201-.8-1.2q0-.8.8-1.2a109%20109%200%200%201%2029.9-3.6c11.7%200%2022.3%201.4%2029.8%203.6a1.3%201.3%200%200%201%200%202.4c-7.5%202.2-18%203.6-29.8%203.6'/%3e%3cpath%20fill='%23ad1519'%20d='M206.1%20215.6c-10.6%200-20.2-1.2-27.5-3.1%207.3-2%2016.9-3%2027.5-3.1a115%20115%200%200%201%2027.6%203c-7.3%202-17%203.2-27.6%203.2'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.1'%20d='M206.9%20215.7v-6.3m-1.7%206.3v-6.3'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.2'%20d='M203.6%20215.7v-6.3m-1.6%206.3v-6.3'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M200.6%20215.7v-6.3m-2.8%205.9v-5.7m1.3%205.8v-6m-3.8%205.6v-5.2m1.3%205.4v-5.6'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M192%20214.8V210m1%204.7V210m1.2%205v-5m-3.4%204.7v-4.5'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.5'%20d='M189.7%20214.5v-4.2m-1.2%204.1v-4'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.6'%20d='M186%20214v-3m1.3%203.2v-3.5m-2.5%203.1V211'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.7'%20d='M183.7%20213.6v-2.3m-1.3%202v-1.8m-1.2%201.6v-1.3'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.9'%20d='M179.8%20212.8v-.7'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.1'%20d='M213.7%20215.3v-5.8m-2.9%206v-6.1m-2.1%206.2v-6.3'/%3e%3cpath%20fill='%23c8b100'%20stroke='%23000'%20stroke-width='.4'%20d='M206%20207.4a108%20108%200%200%200-30%203.9c.6-.3.5-1-.3-3-1-2.5-2.4-2.4-2.4-2.4%208.3-2.5%2020-4%2032.8-4a123%20123%200%200%201%2033%204s-1.5-.1-2.5%202.3q-1.2%202.8-.2%203c-7.5-2.2-18.4-3.7-30.3-3.7'/%3e%3cpath%20fill='%23c8b100'%20stroke='%23000'%20stroke-width='.4'%20d='M206.1%20201.9c-12.9%200-24.5%201.5-32.8%204a1%201%200%200%201-1.3-.6%201%201%200%200%201%20.7-1.3%20121%20121%200%200%201%2033.4-4.2c13.2%200%2025.2%201.7%2033.5%204.2q1%20.4.7%201.3t-1.3.6c-8.4-2.5-20-4-32.9-4'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linejoin='round'%20stroke-width='.4'%20d='M206.1%20215.6c-10.6%200-20.2-1.2-27.5-3.1%207.3-2%2016.9-3%2027.5-3.1a115%20115%200%200%201%2027.6%203c-7.3%202-17%203.2-27.6%203.2z'/%3e%3cpath%20fill='%23fff'%20stroke='%23000'%20stroke-width='.4'%20d='M197%20204.8q0-.9%201-1%20.9.1%201%201%200%201.2-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='%23ad1519'%20stroke='%23000'%20stroke-width='.4'%20d='M206.1%20205.6H203a1%201%200%200%201%200-2h6.4q.9.1%201%201%200%201.2-1%201h-3.2'/%3e%3cpath%20fill='%23058e6e'%20stroke='%23000'%20stroke-width='.4'%20d='m190.3%20206.5-2.3.2q-.9%200-1.2-.8a1%201%200%200%201%201-1.1l2.2-.3%202.4-.3q.9%200%201.1.9%200%20.9-.9%201l-2.3.4'/%3e%3cpath%20fill='%23fff'%20stroke='%23000'%20stroke-width='.4'%20d='M181%20206.7q.1-1%201.1-1t1%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='%23ad1519'%20stroke='%23000'%20stroke-width='.4'%20d='m174%20208.5%201.2-1.6%203.3.4-2.6%202-1.8-.8'/%3e%3cpath%20fill='%23058e6e'%20stroke='%23000'%20stroke-width='.4'%20d='m222%20206.5%202.3.2q.9%200%201.1-.8a1%201%200%200%200-.9-1.1l-2.2-.3-2.4-.3a1%201%200%200%200-1.1.9q0%20.9.9%201l2.3.4'/%3e%3cpath%20fill='%23fff'%20stroke='%23000'%20stroke-width='.4'%20d='M213.3%20204.8q0-.9%201-1c1-.1%201%20.5%201%201s-.4%201-1%201a1%201%200%200%201-1-1m15.8%201.9q.1-1%201-1t1.1%201q0%20.9-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='%23ad1519'%20stroke='%23000'%20stroke-width='.4'%20d='m238.2%20208.5-1.1-1.6-3.3.4%202.6%202%201.8-.8'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M177.3%20212.8c7.4-2.1%2017.6-3.4%2028.8-3.4%2011.3%200%2021.4%201.3%2028.9%203.4'/%3e%3cpath%20fill='%23c8b100'%20d='m182.3%20183.8%201.4%201%202-3.2a7%207%200%200%201-3.6-7.2c.2-4.1%205.2-7.6%2011.7-7.6q5%20.1%208.5%202.4l.2-1.8a17%2017%200%200%200-8.7-2.1c-7.4%200-13.2%204.1-13.5%209.1a9%209%200%200%200%203%207.6z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='m182.3%20183.8%201.4%201%202-3.2a7%207%200%200%201-3.6-7.2c.2-4.1%205.2-7.6%2011.7-7.6q5%20.1%208.5%202.4l.2-1.8a17%2017%200%200%200-8.7-2.1c-7.4%200-13.2%204.1-13.5%209.1a9%209%200%200%200%203%207.6l-1%201.8'/%3e%3cpath%20fill='%23c8b100'%20d='M182.4%20183.8a9%209%200%200%201-4-7.3q.2-5%205.3-8a9%209%200%200%200-3.4%206.8%209%209%200%200%200%203%206.7z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M182.4%20183.8a9%209%200%200%201-4-7.3q.2-5%205.3-8a9%209%200%200%200-3.4%206.8%209%209%200%200%200%203%206.7l-.9%201.8'/%3e%3cpath%20fill='%23c8b100'%20d='M160.1%20187.1a9%209%200%200%201-2.3-5.9q0-2%201-3.8c2-4.2%208.4-7.2%2016-7.2q3%200%205.9.6l-1%201.4a26%2026%200%200%200-4.9-.4c-7%200-12.8%202.7-14.5%206.3a7%207%200%200%200-.7%203.1%207%207%200%200%200%202.7%205.6l-2.6%204.1-1.3-1z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M160.1%20187.1a9%209%200%200%201-2.3-5.9q0-2%201-3.8c2-4.2%208.4-7.2%2016-7.2q3%200%205.9.6l-1%201.4a26%2026%200%200%200-4.9-.4c-7%200-12.8%202.7-14.5%206.3a7%207%200%200%200-.7%203.1%207%207%200%200%200%202.7%205.6l-2.6%204.1-1.3-1z'/%3e%3cpath%20fill='%23c8b100'%20d='M162.7%20173.3a11%2011%200%200%200-4%204.1%209%209%200%200%200-.9%203.8q.1%203.5%202.3%205.9l-1.5%202.5a10%2010%200%200%201-2.3-6.5c0-4%202.5-7.5%206.4-9.8'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M162.7%20173.3a11%2011%200%200%200-4%204.1%209%209%200%200%200-.9%203.8q.1%203.5%202.3%205.9l-1.5%202.5a10%2010%200%200%201-2.3-6.5c0-4%202.5-7.5%206.4-9.8z'/%3e%3cpath%20fill='%23c8b100'%20d='M206%20164.4c1.7%200%203.2%201.1%203.5%202.6q.4%202.1.4%204.5v1.1c.1%203.3.6%206.3%201.3%208.1l-5.2%205-5.2-5c.7-1.8%201.2-4.8%201.3-8.1v-1.1q0-2.4.4-4.5c.3-1.5%201.8-2.6%203.5-2.6'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M206%20164.4c1.7%200%203.2%201.1%203.5%202.6q.4%202.1.4%204.5v1.1c.1%203.3.6%206.3%201.3%208.1l-5.2%205-5.2-5c.7-1.8%201.2-4.8%201.3-8.1v-1.1q0-2.4.4-4.5c.3-1.5%201.8-2.6%203.5-2.6z'/%3e%3cpath%20fill='%23c8b100'%20d='M206%20166q1.6.1%201.8%201.4.3%201.8.4%204.2v1q.2%205%201.2%207.7l-3.4%203.2-3.4-3.2q1-2.7%201.2-7.7v-1l.4-4.2a2%202%200%200%201%201.8-1.4'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M206%20166q1.6.1%201.8%201.4.3%201.8.4%204.2v1q.2%205%201.2%207.7l-3.4%203.2-3.4-3.2q1-2.7%201.2-7.7v-1l.4-4.2a2%202%200%200%201%201.8-1.4z'/%3e%3cpath%20fill='%23c8b100'%20d='m229.7%20183.8-1.3%201-2-3.2a7%207%200%200%200%203.6-6.3v-.9c-.2-4.1-5.3-7.6-11.7-7.6a15%2015%200%200%200-8.5%202.4l-.2-1.8a17%2017%200%200%201%208.7-2.1c7.4%200%2013.2%204.1%2013.4%209.1a9%209%200%200%201-3%207.6z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='m229.7%20183.8-1.3%201-2-3.2a7%207%200%200%200%203.6-6.3v-.9c-.2-4.1-5.3-7.6-11.7-7.6a15%2015%200%200%200-8.5%202.4l-.2-1.8a17%2017%200%200%201%208.7-2.1c7.4%200%2013.2%204.1%2013.4%209.1a9%209%200%200%201-3%207.6l1%201.8'/%3e%3cpath%20fill='%23c8b100'%20d='M229.6%20183.8a9%209%200%200%200%204.1-7.3c0-3.2-2.1-6.1-5.3-8a9%209%200%200%201%203.4%206.8%209%209%200%200%201-3.2%206.7z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M229.6%20183.8a9%209%200%200%200%204.1-7.3c0-3.2-2.1-6.1-5.3-8a9%209%200%200%201%203.4%206.8%209%209%200%200%201-3.2%206.7l1%201.8'/%3e%3cpath%20fill='%23c8b100'%20d='M252%20187.1a9%209%200%200%200%202.2-5.9%209%209%200%200%200-.9-3.8c-2-4.2-8.4-7.2-16-7.2a29%2029%200%200%200-6%20.6l1%201.4a25%2025%200%200%201%205-.4c7%200%2012.8%202.7%2014.4%206.3q.7%201.5.7%203.1a7%207%200%200%201-2.6%205.6l2.5%204.1%201.3-1z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M252%20187.1a9%209%200%200%200%202.2-5.9%209%209%200%200%200-.9-3.8c-2-4.2-8.4-7.2-16-7.2a29%2029%200%200%200-6%20.6l1%201.4a25%2025%200%200%201%205-.4c7%200%2012.8%202.7%2014.4%206.3q.7%201.5.7%203.1a7%207%200%200%201-2.6%205.6l2.5%204.1%201.3-1z'/%3e%3cpath%20fill='%23c8b100'%20d='M249.3%20173.3a11%2011%200%200%201%204%204.1%209%209%200%200%201%20.9%203.8%209%209%200%200%201-2.3%205.9l1.6%202.5a10%2010%200%200%200%202.3-6.5c0-4-2.6-7.5-6.5-9.8'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M249.3%20173.3a11%2011%200%200%201%204%204.1%209%209%200%200%201%20.9%203.8%209%209%200%200%201-2.3%205.9l1.6%202.5a10%2010%200%200%200%202.3-6.5c0-4-2.6-7.5-6.5-9.8z'/%3e%3cpath%20fill='%23fff'%20d='M204.2%20181.4q.1-1.7%201.8-1.8c1.7-.1%201.9.8%201.9%201.8s-.9%201.7-1.9%201.7a2%202%200%200%201-1.8-1.7'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M204.2%20181.4q.1-1.7%201.8-1.8c1.7-.1%201.9.8%201.9%201.8s-.9%201.7-1.9%201.7a2%202%200%200%201-1.8-1.7z'/%3e%3cpath%20fill='%23fff'%20stroke='%23000'%20stroke-width='.4'%20d='M204.2%20178q.1-1.7%201.8-1.8c1.7-.1%201.9.8%201.9%201.8s-.9%201.7-1.9%201.7a2%202%200%200%201-1.8-1.7m.4-3.7q.1-1.2%201.4-1.3%201.4.1%201.5%201.3-.1%201.3-1.5%201.4c-1.4.1-1.4-.6-1.4-1.4m.4-3.3q0-.9%201-1c1-.1%201%20.5%201%201s-.4%201-1%201a1%201%200%200%201-1-1m.2-2.8q.1-.8.8-.8t.9.8q0%20.7-.9.8a1%201%200%200%201-.8-.8'/%3e%3cpath%20fill='%23c8b100'%20stroke='%23000'%20stroke-width='.4'%20d='m206.2%20191.8%201.2.2a4.6%204.6%200%200%200%204.5%206%205%205%200%200%200%204.4-3c.1%200%20.5-1.7.7-1.7s.1%201.8.2%201.7c.3%202.3%202.4%203.8%204.7%203.8a4.6%204.6%200%200%200%204.7-5l1.5-1.5.7%202a4%204%200%200%200-.4%201.9%204.4%204.4%200%200%200%204.5%204.2q2.5%200%203.8-1.9l.9-1.2v1.5c0%201.5.6%202.8%202%203%200%200%201.7.1%204-1.6%202.1-1.7%203.3-3.1%203.3-3.1l.2%201.7s-1.8%202.8-3.8%204c-1%20.6-2.7%201.3-4%201q-2.1-.5-3-2.6a7%207%200%200%201-3.3%201%207%207%200%200%201-6.1-3.7%207%207%200%200%201-10.4-.3%207%207%200%200%201-4.6%201.8%207%207%200%200%201-5.7-3%207%207%200%200%201-5.7%203%207%207%200%200%201-4.7-1.8%207%207%200%200%201-10.4.3%207%207%200%200%201-6%203.7%207%207%200%200%201-3.4-1q-.8%202.1-3%202.7c-1.2.2-2.9-.5-4-1.1-2-1.2-3.8-4-3.8-4l.2-1.7s1.2%201.4%203.4%203.1%203.9%201.6%203.9%201.6c1.4-.2%202-1.5%202-3v-1.5l1%201.2a5%205%200%200%200%203.7%202c2.5%200%204.5-2%204.5-4.3a4%204%200%200%200-.4-2l.8-1.9%201.5%201.5v.6c0%202.4%202%204.4%204.6%204.4%202.4%200%204.4-1.5%204.7-3.8%200%200%200-1.6.2-1.7s.6%201.7.7%201.6a5%205%200%200%200%204.5%203.1%204.6%204.6%200%200%200%204.5-6l1.2-.2'/%3e%3cpath%20fill='%23fff'%20stroke='%23000'%20stroke-width='.4'%20d='M238.6%20197.7q.4-1.4-.6-1.8-.9-.2-1.5%201.1-.4%201.4.6%201.8.9.2%201.5-1.1m-20.5-4c0-.8-.3-1.6-1-1.6q-.8%200-1.2%201.4%200%201.3.9%201.6%201-.1%201.3-1.4m-23.9%200c0-.8.4-1.6%201-1.6q1%200%201.2%201.4%200%201.3-.9%201.6-1-.1-1.2-1.4m-20.6%204q-.3-1.4.6-1.8%201-.2%201.5%201.1t-.5%201.8q-1%20.2-1.6-1.1'/%3e%3cpath%20fill='%23c8b100'%20stroke='%23000'%20stroke-width='.4'%20d='M182.7%20184a5%205%200%200%201%202.2%202.9s0-.3.6-.6%201-.3%201-.3l-.1%201.3-.3%202.2-.7%201.6a2%202%200%200%200-1.5-.4%202%202%200%200%200-1.2.9s-.7-.6-1.2-1.3l-1.1-2-.7-1.1s.5-.2%201.1%200q.9.1.8.2a5%205%200%200%201%201-3.4m.4%209.8-.6-1q0-.7.3-1.2s-.9-.5-1.8-.7c-.7-.2-2-.2-2.3-.2h-1l.2.5.5.7a5%205%200%200%200-3%202%205%205%200%200%200%203.5%201l-.2.8v.6l1-.4c.3-.1%201.5-.5%202-1%20.8-.4%201.5-1.1%201.5-1.1m2.7-.5.2-1.1-.6-1%201.4-1.3%202-.9%201.1-.4v.6l-.2.8a5%205%200%200%201%203.4%201%205%205%200%200%201-2.9%202l.7%201.2h-1c-.4%200-1.6%200-2.3-.2l-1.8-.7'/%3e%3cpath%20fill='%23ad1519'%20stroke='%23000'%20stroke-width='.4'%20d='M182.2%20192.4c0-1%201-2%202-2s2.2%201%202.2%202c0%201.1-1%202-2.1%202a2%202%200%200%201-2.1-2'/%3e%3cpath%20fill='%23c8b100'%20stroke='%23000'%20stroke-width='.4'%20d='M206.1%20180.8a6%206%200%200%201%201.9%203.7s.2-.3.9-.5q1.1-.3%201.2-.2l-.5%201.4-.8%202.4-1%201.7a2%202%200%200%200-1.7-.7q-1%200-1.6.7-.2-.1-1-1.7l-.8-2.4-.5-1.4%201.2.2q1%20.4.9.5.2-2.2%201.8-3.7'/%3e%3cpath%20fill='%23c8b100'%20stroke='%23000'%20stroke-width='.4'%20d='M204.6%20191.8a2%202%200%200%201-.5-1.2q0-.8.4-1.3s-.8-.7-1.8-1c-.7-.4-2-.7-2.5-.7l-1.2-.2.2.6.4.9a6%206%200%200%200-3.7%201.7q1.6%201.5%203.7%201.6l-.4%201-.2.6%201.2-.2c.4-.1%201.8-.4%202.5-.7%201-.4%201.9-1%201.9-1m3%200a2%202%200%200%200%20.1-2.6s.9-.7%201.8-1a8%208%200%200%201%202.5-.7l1.2-.3-.1.7-.4.9q2.2.2%203.6%201.7a6%206%200%200%201-3.6%201.6l.5%201.6-1.2-.2-2.5-.7c-1-.4-1.8-1-1.8-1m22-8a5%205%200%200%200-2.2%203l-.7-.6-1-.3.2%201.3c0%20.3%200%201.3.3%202.2q.4%201.6.6%201.6a2%202%200%200%201%201.5-.4q.9.2%201.3.9l1.1-1.3q1-1.4%201.1-2l.7-1.1s-.4-.2-1%200l-1%20.2a5%205%200%200%200-1-3.4m-.3%209.8q.5-.4.6-1l-.2-1.2s.8-.5%201.7-.7c.7-.2%202-.2%202.3-.2h1.1l-.3.5-.4.7a5%205%200%200%201%202.9%202%205%205%200%200%201-3.5%201l.2.8v.6l-1-.4c-.3-.1-1.4-.5-2-1-.8-.4-1.4-1.1-1.4-1.1m-2.8-.5-.2-1.1q0-.7.6-1s-.6-.8-1.4-1.3c-.6-.4-1.7-.8-2-.9l-1-.4v.6l.2.8a5%205%200%200%200-3.5%201q1%201.4%203%202l-.5.7-.3.5h1c.4%200%201.7%200%202.3-.2l1.8-.7'/%3e%3cpath%20fill='%23ad1519'%20stroke='%23000'%20stroke-width='.4'%20d='M226%20192.4c0-1%201-2%202-2s2.1%201%202.1%202a2%202%200%200%201-2%202%202%202%200%200%201-2.1-2m23.2%204.4c-.4-.5-1.4-.4-2.2.2q-1.2%201.2-.5%202.2%201%20.8%202.3-.3c.7-.6%201-1.6.5-2'/%3e%3cpath%20fill='%23c8b100'%20stroke='%23000'%20stroke-width='.4'%20d='m246.3%20198%20.7-1c.7-.6%201.8-.7%202.3-.2l.1.2s1-2%202.3-2.6%203.4-.5%203.4-.5a3%203%200%200%200-2.9-2.8%203%203%200%200%200-2.4%201l-.2-1s-1.3.3-1.9%201.8%200%203.6%200%203.6-.3-.9-.7-1.5a8%208%200%200%200-2.4-1.6l-1.3-.7-.1.5v.8a8%208%200%200%200-3.7.5%205%205%200%200%200%202.5%202.2l-.8.7-.4.5%201.3.2%202.5.2%201.7-.2m-80.3%200q0-.6-.7-1c-.7-.7-1.7-.8-2.2-.3l-.2.3s-1-2-2.3-2.7-3.3-.5-3.3-.5a3%203%200%200%201%202.8-2.8q1.6%200%202.4%201l.2-1s1.3.3%202%201.8c.5%201.5-.1%203.6-.1%203.6s.3-.9.8-1.5a8%208%200%200%201%202.4-1.6l1.3-.7v1.3a8%208%200%200%201%203.7.5%205%205%200%200%201-2.5%202.2l.8.7.4.5-1.2.2-2.6.2-1.7-.2'/%3e%3cpath%20fill='%23ad1519'%20stroke='%23000'%20stroke-width='.4'%20d='M163%20196.8q1-.7%202.4.3%201.2%201%20.4%202c-.5.6-1.5.5-2.2-.2s-1-1.6-.5-2m41-6.3q.2-1.8%202-2c1.8-.2%202.1.9%202.1%202%200%201-1%202-2%202a2%202%200%200%201-2.1-2'/%3e%3cpath%20fill='%23005bbf'%20stroke='%23000'%20stroke-width='.3'%20d='M201.8%20160.6c0-2.2%201.9-4%204.3-4s4.2%201.8%204.2%204-1.9%204-4.3%204a4%204%200%200%201-4.2-4'/%3e%3cpath%20fill='%23c8b100'%20stroke='%23000'%20stroke-width='.3'%20d='M205%20149.3v2.2h-2.4v2.2h2.3v6.3H202l-.2.6q0%20.9.3%201.6h7.9q.3-.7.3-1.6l-.2-.6h-2.8v-6.3h2.3v-2.2h-2.3v-2.2z'/%3e%3cpath%20fill='%23ccc'%20d='M206.5%20330.6a82%2082%200%200%201-35.5-8.2%2023%2023%200%200%201-12.8-20.4v-32h96.4v32a23%2023%200%200%201-12.8%2020.4%2081%2081%200%200%201-35.3%208.2'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.5'%20d='M206.5%20330.6a82%2082%200%200%201-35.5-8.2%2023%2023%200%200%201-12.8-20.4v-32h96.4v32a23%2023%200%200%201-12.8%2020.4%2081%2081%200%200%201-35.3%208.2z'/%3e%3cpath%20fill='%23ccc'%20d='M206.3%20270h48.3v-53.5h-48.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.5'%20d='M206.3%20270h48.3v-53.5h-48.3z'/%3e%3cpath%20fill='%23ad1519'%20d='M206.3%20302c0%2012.6-10.7%2022.9-24%2022.9s-24.2-10.3-24.2-23v-32h48.2v32'/%3e%3cpath%20fill='%23c8b100'%20stroke='%23000'%20stroke-width='.5'%20d='M168.6%20320.9c1.5.8%203.6%202%205.8%202.6l-.1-54.7h-5.7z'/%3e%3cpath%20fill='%23c8b100'%20stroke='%23000'%20stroke-linejoin='round'%20stroke-width='.5'%20d='M158%20301.6a24%2024%200%200%200%205.5%2015v-47.5h-5.4z'/%3e%3cpath%20fill='%23c7b500'%20stroke='%23000'%20stroke-width='.5'%20d='M179.4%20324.7a27%2027%200%200%200%205.6%200v-55.9h-5.6v56z'/%3e%3cpath%20fill='%23c8b100'%20stroke='%23000'%20stroke-width='.5'%20d='M190%20323.5a19%2019%200%200%200%205.8-2.5v-52.2H190z'/%3e%3cpath%20fill='%23ad1519'%20d='M158.1%20270h48.2v-53.5H158z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.5'%20d='M158.1%20270h48.2v-53.5H158z'/%3e%3cpath%20fill='%23c8b100'%20stroke='%23000'%20stroke-width='.5'%20d='M201%20316c2.4-2%204.6-6.8%205.4-12.2l.1-35H201l.1%2047.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.5'%20d='M206.3%20302c0%2012.6-10.7%2022.9-24%2022.9s-24.2-10.3-24.2-23v-32h48.2v32'/%3e%3cpath%20fill='%23ad1519'%20d='M254.6%20270v32c0%2012.6-10.8%2022.9-24.1%2022.9s-24.2-10.3-24.2-23v-32h48.3'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.5'%20d='M254.6%20270v32c0%2012.6-10.8%2022.9-24.1%2022.9s-24.2-10.3-24.2-23v-32h48.3'/%3e%3cpath%20fill='%23c8b100'%20d='m215.1%20294.1.1.5q-.1%201-1.1%201a1%201%200%200%201-1.1-1v-.5h-1.5a2.5%202.5%200%200%200%201.8%202.9v3.9h1.6V297a3%203%200%200%200%201.7-1.6h4.4v-1.2zm21.8%200v1.2h-4l-.3.6%204.6%205.2-1.2%201-4.6-5.3-.2.1v8.7h-1.6V297h-.2l-4.8%205.2-1.2-1%204.7-5.3-.2-.4h-4V294h13zm2.6%200v1.2h4.4q.5%201.2%201.7%201.6v3.9h1.6V297a3%203%200%200%200%201.8-2.4v-.5h-1.6l.1.5q-.1%201-1%201-1.1%200-1.2-1l.1-.5zm-6.7%2022.1a16%2016%200%200%200%203.7-1l.8%201.4a18%2018%200%200%201-4.3%201.2%203%203%200%200%201-2.6%202%203%203%200%200%201-2.5-2%2018%2018%200%200%201-4.6-1.2l.8-1.4q2%20.8%204%201a3%203%200%200%201%201.5-1.3v-6.7h1.6v6.7q1.1.3%201.6%201.4zm-11-2.2-.8%201.4a17%2017%200%200%201-3.6-3.1q-1.4.3-2.5-.5a2.4%202.4%200%200%201-.3-3.5l.1-.1a15%2015%200%200%201-1.3-4.8h1.7a13%2013%200%200%200%201%204q.8%200%201.4.2l4.1-4.5%201.3%201-4.1%204.5q.8%201.5-.1%202.8a15%2015%200%200%200%203.1%202.6m-6-4.8q.6-.7%201.5%200c.9.7.5%201%20.1%201.4a1%201%200%200%201-1.6.1%201%201%200%200%201%200-1.5m-2.2-4.5-1.6-.3-.3-4.3%201.7-.6v2.5q0%201.4.2%202.7m1.4-5.3%201.7.4v2.2c0-.8.3%202.1.3%202.1l-1.7.6-.3-2.7zm5.6%2013.7a16%2016%200%200%200%204.8%202.6l.4-1.6a14%2014%200%200%201-4-2zm-.8%201.4a17%2017%200%200%200%204.8%202.6l-1.2%201.1a19%2019%200%200%201-4-2zm2.2-9.4%201.6.7%203-3.3-1-1.4zm-1.3-1-1-1.4%203-3.3%201.6.7zm18.1%209.9.8%201.4a17%2017%200%200%200%203.6-3.1q1.4.3%202.5-.5a2.4%202.4%200%200%200%20.3-3.5l-.1-.1a15%2015%200%200%200%201.3-4.8h-1.7a13%2013%200%200%201-1%204l-1.4.2-4.1-4.5-1.3%201%204.1%204.5a2.4%202.4%200%200%200%20.1%202.8%2015%2015%200%200%201-3.1%202.6m6-4.8a1%201%200%200%200-1.5%200%201%201%200%200%200-.1%201.4%201%201%200%200%200%201.6.1%201%201%200%200%200%200-1.5m2.2-4.5%201.6-.3.3-4.3-1.7-.6v2.5q0%201.5-.2%202.8zm-1.4-5.3-1.7.4v2.2c0-.8-.3%202.1-.3%202.1l1.7.6.3-2.7zm-5.6%2013.7a16%2016%200%200%201-4.8%202.6l-.4-1.6a14%2014%200%200%200%204-2zm.8%201.4a17%2017%200%200%201-4.8%202.6l1.2%201.1a19%2019%200%200%200%204-2zm-2.2-9.4-1.6.7-2.9-3.3%201-1.4zm1.3-1%201-1.4-3-3.3-1.6.7zm-20.1-8.7.5%201.6h4.5l.5-1.6zm21.1%200-.5%201.6h-4.5l-.5-1.6zm-11.6%2021.9q.1-1%201.1-1a1%201%200%200%201%201.1%201q-.1%201-1%201a1%201%200%200%201-1.2-1m1.9-7.8%201.7-.4v-4.3l-1.7-.5zm-1.6%200-1.7-.4v-4.3l1.7-.5z'/%3e%3cpath%20fill='%23c8b100'%20d='M211.5%20294.2q.4-1.5%201.8-2V287h1.6v5.3q1.3.5%201.7%201.6h4.4v.3h-6a1%201%200%200%200-1-.6q-.6%200-1%20.6zm12.2%200v-.3h4.1l.2-.3-5-5.7%201.2-1%205%205.6.2-.1V285h1.6v7.3h.3l4.9-5.5%201.2%201-4.9%205.5.3.6h4v.3zm21.6%200a1%201%200%200%201%201-.6q.7%200%201%20.6h1.6q-.4-1.5-1.8-2V287h-1.6v5.3q-1.2.4-1.7%201.6h-4.4v.3zm-30.2-15%206%206.8%201.3-1-6.1-6.7.3-.6h4.4V276h-4.4a3%203%200%200%200-2.5-1.7%202.6%202.6%200%200%200-2.7%202.5%203%203%200%200%200%201.8%202.4v5.2h1.6v-5.2zm32%200v5.3h-1.7v-5.2l-.4-.2-6%206.8-1.3-1%206.2-6.9-.1-.3h-4.5V276h4.5a3%203%200%200%201%202.4-1.7%202.6%202.6%200%200%201%202.7%202.5%202.5%202.5%200%200%201-1.9%202.4zm-16.1%200v3.3h-1.7v-3.2a3%203%200%200%201-1.7-1.6h-4V276h4a3%203%200%200%201%202.5-1.7q2%20.1%202.5%201.7h4v1.6h-4a3%203%200%200%201-1.6%201.6m-17.8%204-1.7.4v4.3l1.7.5zm1.6%200%201.7.4v4.3l-1.7.5zm30.6%200-1.7.4v4.3l1.7.5zm1.6%200%201.7.4v4.3l-1.7.5zm-25.5.8%201.6-.7%202.9%203.3-1%201.4zm-1.3%201-1%201.4%203%203.3%201.6-.7zm18.5-1.1-1.6-.7-3%203.3%201%201.4zm1.2%201%201%201.4-3%203.3-1.5-.7zm-20.3%209%20.5-1.6h4.5l.5%201.6zm-6.7-17q0-1%201.2-1a1%201%200%200%201%201%201q0%201-1%201a1%201%200%200%201-1.2-1m12.1.8-.5%201.6H220l-.5-1.6zm0-1.6-.5-1.6H220l-.5%201.6zm15.7%2017.8-.5-1.6h-4.5l-.5%201.6zm4.4-17q.1-1%201.1-1a1%201%200%200%201%201.1%201q-.1%201-1%201a1%201%200%200%201-1.2-1m-16.1%200q.1-1%201.1-1a1%201%200%200%201%201.1%201q-.1%201-1.1%201a1%201%200%200%201-1.1-1m6.2.8.5%201.6h4.6l.5-1.6zm0-1.6.5-1.6h4.6l.5%201.6zm-5.9%205-1.7.5v4.3l1.7.5V281m1.7%200%201.6.5v4.3l-1.6.5z'/%3e%3cpath%20fill='none'%20stroke='%23c8b100'%20stroke-width='.3'%20d='M232.7%20316.3a16%2016%200%200%200%203.7-1.1l.8%201.4a18%2018%200%200%201-4.3%201.2%203%203%200%200%201-2.6%202%203%203%200%200%201-2.5-2%2018%2018%200%200%201-4.6-1.2l.8-1.4q2%20.8%204%201a3%203%200%200%201%201.5-1.3v-6.7h1.6v6.7q1.1.3%201.6%201.4zm-4.7-20.4-.2-.5h-4V294h4l.2-.4-5-5.6%201.2-1%205%205.5h.2V285h1.7v7.3h.2l4.9-5.5%201.2%201-4.9%205.5.3.6h4v1.5h-4q0%20.3-.3.5l4.7%205.3-1.3%201-4.6-5.3-.2.1v8.7h-1.6V297l-.2-.1-4.8%205.3-1.2-1%204.7-5.3m-12.8-16.7%206%206.8%201.3-1-6.1-6.7.3-.6h4.4V276h-4.4a3%203%200%200%200-2.5-1.7%202.6%202.6%200%200%200-2.6%202.5%203%203%200%200%200%201.7%202.4v5.2h1.6v-5.2zm6.5%2034.8-.8%201.4a17%2017%200%200%201-3.6-3.1q-1.4.3-2.5-.5a2.4%202.4%200%200%201-.3-3.5l.1-.1a15%2015%200%200%201-1.2-4.8h1.6a13%2013%200%200%200%201%204q.8%200%201.4.2l4.1-4.5%201.3%201-4.1%204.5q.8%201.5-.1%202.8a15%2015%200%200%200%203.1%202.6zm-8.4-13.1V297a3%203%200%200%201-1.8-2.4q.2-1.6%201.8-2.4V287h1.6v5.3q1.3.4%201.7%201.6h4.4v1.5h-4.4a3%203%200%200%201-1.6%201.6v3.9h-1.7m2.3%208.3q.7-.7%201.6%200c.9.7.5%201%20.1%201.4a1%201%200%200%201-1.6.1%201%201%200%200%201%200-1.5zm-2-4.5-1.7-.3-.3-4.3%201.7-.6v2.5q0%201.4.3%202.7zm1.4-5.3%201.6.4v2.2c0-.8.3%202.1.3%202.1l-1.7.6-.3-2.7v-2.6zm5.5%2013.7a16%2016%200%200%200%204.8%202.6l.4-1.6a14%2014%200%200%201-4-2l-1.2%201m-.8%201.4a17%2017%200%200%200%204.8%202.6l-1.2%201.1a19%2019%200%200%201-4-2l.4-1.7'/%3e%3cpath%20fill='none'%20stroke='%23c8b100'%20stroke-width='.3'%20d='m221.9%20305.1%201.6.7%203-3.3-1-1.4-3.6%204m-1.3-1-1-1.4%203-3.3%201.6.7-3.6%204m-7.6-9.5q.1-1%201-1%201.1.1%201.2%201-.1%201-1.1%201.1a1%201%200%200%201-1.1-1zm25.7%2019.4.8%201.4a17%2017%200%200%200%203.6-3.1q1.4.3%202.6-.5a2.4%202.4%200%200%200%20.2-3.5l-.1-.1a15%2015%200%200%200%201.3-4.8h-1.7a13%2013%200%200%201-1%204l-1.4.2-4.1-4.5-1.3%201%204.1%204.5a2.4%202.4%200%200%200%20.1%202.8%2015%2015%200%200%201-3%202.6zm8.4-13.1V297a3%203%200%200%200%201.8-2.4q0-1.6-1.8-2.4V287h-1.6v5.3q-1.2.4-1.7%201.6h-4.4v1.5h4.4q.5%201.2%201.7%201.6v3.9zm-2.3%208.3a1%201%200%200%200-1.6%200%201%201%200%200%200-.1%201.4%201%201%200%200%200%201.6.1%201%201%200%200%200%200-1.5zm2-4.5%201.7-.3.3-4.3-1.7-.6v2.5q0%201.4-.2%202.7zm-1.3-5.3-1.7.4v2.2c0-.8-.3%202.1-.3%202.1l1.7.6.3-2.7v-2.6m1.6-20.1v5.2h-1.6v-5.2l-.4-.2-6%206.8-1.2-1%206-7v-.2h-4.5V276h4.4a3%203%200%200%201%202.5-1.7%202.6%202.6%200%200%201%202.6%202.5%203%203%200%200%201-1.8%202.4zm-16%200v3.2h-1.7v-3.2a3%203%200%200%201-1.7-1.6h-4V276h4q.7-1.6%202.5-1.7c1.8-.1%202.2.7%202.5%201.7h4v1.6h-4a3%203%200%200%201-1.6%201.6zm8.8%2033.8a16%2016%200%200%201-4.8%202.6l-.4-1.6a14%2014%200%200%200%204-2l1.2%201m.8%201.4a17%2017%200%200%201-4.8%202.6l1.2%201.1a19%2019%200%200%200%204-2l-.4-1.7m-27.4-31.4-1.7.5v4.3l1.7.5v-5.2m1.7%200%201.6.4v4.3l-1.6.5V283m30.5%200-1.7.5v4.3l1.7.5V283'/%3e%3cpath%20fill='none'%20stroke='%23c8b100'%20stroke-width='.3'%20d='m247.1%20283.1%201.7.5v4.3l-1.7.5V283m-8.6%2022-1.6.7-2.9-3.3%201-1.4%203.5%204m1.3-1%201-1.4-3-3.3-1.6.7%203.6%204m-18.2-20%201.6-.7%203%203.3-1%201.4-3.6-4m-1.3%201-1%201.4%203%203.3%201.6-.7-3.6-4m18.5-1.1-1.6-.7-3%203.3%201%201.4%203.6-4m1.2%201%201%201.4-3%203.2-1.5-.6%203.5-4m-20.3%209%20.5-1.6h4.5l.5%201.6h-5.5m0%201.5.5%201.6h4.5l.5-1.6h-5.5M213%20277q0-1%201.2-1%201%200%201%201c0%201-.4%201-1%201a1%201%200%200%201-1.2-1zm12.1.8-.5%201.6h-4.5l-.5-1.6h5.5m0-1.6-.5-1.6h-4.5l-.5%201.6h5.5m20.1%2018.5q.1-.9%201.1-1%201%20.1%201.1%201-.1%201-1%201.1a1%201%200%200%201-1.2-1zm-4.4-.7-.5-1.6h-4.5l-.5%201.6h5.5m0%201.5-.5%201.6h-4.5l-.5-1.6h5.5m-11.6%2021.9q.1-1%201.1-1t1.1%201c.1%201-.5%201-1%201a1%201%200%200%201-1.2-1zm1.9-7.8%201.7-.4v-4.3l-1.7-.5v5.2m-1.6%200-1.7-.4v-4.3l1.7-.5v5.2m15.7-32.6q.1-1%201.1-1a1%201%200%200%201%201.1%201q-.1%201-1%201a1%201%200%200%201-1.2-1zm-16.1%200q.1-1%201.1-1a1%201%200%200%201%201.1%201q-.1%201-1%201a1%201%200%200%201-1.2-1zm6.2.8.5%201.6h4.6l.5-1.6h-5.5m0-1.6.4-1.6h4.6l.5%201.6h-5.5m-6%205-1.6.5v4.3l1.6.5V281m1.7%200%201.6.5v4.3l-1.6.5V281'/%3e%3cpath%20fill='%23058e6e'%20d='M227.7%20294.7a2.6%202.6%200%200%201%202.6-2.5%202.6%202.6%200%200%201%202.6%202.5%202.6%202.6%200%200%201-2.6%202.4c-1.4%200-2.6-1-2.6-2.4'/%3e%3cpath%20fill='%23db4446'%20d='M230.9%20229.7v-.6l.1-.3-2.3-.1a6%206%200%200%201-2.3-1.2q-1-1-1.6-1.2c-1.3-.2-2.3.4-2.3.4s1%20.4%201.7%201.3%201.5%201.3%201.8%201.4c.6.2%202.6%200%203.1.1z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M230.9%20229.7v-.6l.1-.3-2.3-.1a6%206%200%200%201-2.3-1.2q-1-1-1.6-1.2c-1.3-.2-2.3.4-2.3.4s1%20.4%201.7%201.3%201.5%201.3%201.8%201.4c.6.2%202.6%200%203.1.1z'/%3e%3cpath%20fill='%23ed72aa'%20stroke='%23000'%20stroke-width='.4'%20d='M238.1%20227.5v1.4c.2.6-.1%201.2%200%201.5q0%20.5.3.9l.2.9-.7-.5-.6-.4v1l.6%201.1%201%201.3c.2.5.1%201.4.1%201.4s-.4-.7-.8-.8l-1.2-.7s.7.8.7%201.5l-.3%201.6c-.1.2-.3-.7-.8-1.1l-1-.9s.4%201.2.4%202v2.3l-.9-1-1-.7c0-.2.5.6.6%201.1s.3%202.3%201.8%204.5c1%201.3%202.3%203.6%205.3%202.9s1.9-4.8%201.3-6.7a17%2017%200%200%201-1-4.6c0-.8.6-2.9.5-3.3a8%208%200%200%201%20.2-3.1l.9-2.3.4-1.3.1-1.3.7%201.3.1%201.5s.1-1%201-1.6%201.8-1.1%202-1.4l.3-.5c-.1%200%200%201.8-.6%202.6l-1.7%202s.7-.3%201.2-.3h.9s-.6.4-1.4%201.6c-.8%201-.5%201.2-1%202.1s-1%201-1.7%201.5c-1%20.8-.5%204.2-.4%204.7.2.5%202%204.5%202%205.5s.2%203.2-1.5%204.6c-1.1%201-3%201-3.4%201.2-.4.3-1.2%201.1-1.2%202.8s.6%202%201%202.4c.6.5%201.2.2%201.3.6l.5.7q.3.3.2.8c0%20.3-.8%201.1-1.1%201.7l-.8%202.4c0%20.2-.1%201%20.1%201.3%200%200%20.9%201%20.3%201.2-.4.2-.8-.2-1-.2l-.9.5q-.3-.1-.4-.8l-.1-.7q-.3%200-.4.5c0%20.2%200%20.8-.3.8l-.8-.5c-.2%200-.8-.2-.8-.4q.1-.6.7-1%20.8-.1.5-.5t-.7%200c-.3.4-.8%200-.7-.2v-.8c0-.2-.4-.5.1-.8s.8.2%201.4.1q.8%200%201-.6.3-.6-.2-1.4l-.9-.8-.3-.9v2.2l-.7-.8c-.3-.3-.6-1.3-.6-1.3v1.3l.2.8c-.1.1-.8-.7-1-.8l-1-1-.4-1.4v-1.5l.4-1h-1.4c-.7%200-1.2-.3-1.5.2q-.4.8.2%202.8.5%201.8.4%202.1l-.7.8h-.9l-1.2-.3h-1.3l-1.1-.3c-.3.1-.8.3-.6.7q.1.8-.5.7l-.9-.2q-.8%200-.8-.4t.4-.7q.3-.5%200-.5h-.6q-.3.4-.8.4-.3-.1-.4-1c-.1-.9-.7-1.2%200-1.1.5%200%201.3.4%201.4%200q.2-.4-.2-.7c-.4-.3-.8-.4-.3-.7l.7-.5c.1-.2.4-.8.7-.6.6.2%200%20.7.6%201.3s1%201%202%20.8q1.4%200%201.3-.5l-.1-1v-1s-.4.3-.5.6l-.4.8v-2l-.2-.8-.3.9-.1%201s-.7-.5-.5-1.5l.1-2c.2-.3.7-1.5%202-1.6h2.6l2-.3s-2.8-1.4-3.5-1.9a10%2010%200%200%201-2-2l-.6-1.6s-.5%200-1%20.3l-1.2%201-.7%201%20.1-1.2v-.8s-.4%201.2-1%201.7l-1.4%201v-.8l.2-1s-.4.8-1.1%201c-.7%200-1.8%200-1.9.4q.2.8%200%201.4c0%20.3-.4.5-.4.5l-.8-.4-.7.2c-.1.1-.3-.4-.2-.7s.7-.6.5-.8l-.8.2c-.3.1-.8.3-.8-.2q.2-.6%200-1%200-.4.2-.6l1.2-.1q0-.4-.8-.6-1-.2-.5-.8.3-.2.5-.6c.1-.2.2-.7.7-.5.5.3.4.8%201%201a4%204%200%200%200%202-.2l1.5-1%201.5-1-1-.8q-.5-.7-1-1l-1.8-.6-1.7-.5.8-.3q.4-.5.8-.6h.3-1.4c-.3-.1-1-.6-1.3-.6l-.8.1s.8-.4%201.4-.5l1-.1s-.9-.3-1.1-.6l-.6-1q-.2-.3-.6-.5l-1%20.3q-.6%200-.6-.6l-.1-.5c-.2-.3-.6-.8-.2-1h1.4q-.2-.4-.8-.8c-.4-.2-1-.5-.7-.8l.8-.5c.2-.3.3-1%20.7-.7.4.2.8%201.2%201.1%201.1s.3-.8.3-1c0-.4%200-1%20.2-.9l1%20.5q.8-.1%201%20.2%200%20.5-.6%201-.4.6-.3%201.4.4%201%201.2%201.4t1.7.9c.5.3%201.7%201.2%202.1%201.3l.8.4s.5-.2%201.1-.2%202.1%200%202.6-.2%201.3-.6%201-1c-.1-.6-1.3-1-1.2-1.4q0-.5%201.2-.4c.8%200%201.8.1%202-1q.5-1.4-.8-1.8c-1-.2-1.8-.2-2-1q-.4-1-.2-1.1.3-.3%201.4-.4%201.3%200%201.9-.2l.6-.9c.3-.2%201.4-.4%201.4-.4s1.4.7%202.7%201.7l2.2%202.1'/%3e%3cpath%20d='m228.1%20226.8-.2-.6v-.3s.8%200%20.7.3q0%20.2-.3.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m228.1%20226.8-.2-.6v-.3s.8%200%20.7.3q0%20.2-.3.3z'/%3e%3cpath%20d='M232%20225.4v-.4s.7%200%201%20.3c.5.4.9%201%20.9%201l-.8-.4h-.5l-.3-.1v-.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.1'%20d='M232%20225.4v-.4s.7%200%201%20.3c.5.4.9%201%20.9%201l-.8-.4h-.5l-.3-.1v-.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m237.3%20231.3-.4-.7-.3-.4'/%3e%3cpath%20fill='%23db4446'%20d='M217.4%20226.6s.5.4.8.4h.8s.2-.5.1-.8c-.2-1.2-1.2-1.4-1.2-1.4s.3.7.1%201z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M217.4%20226.6s.5.4.8.4h.8s.2-.5.1-.8c-.2-1.2-1.2-1.4-1.2-1.4s.3.7.1%201z'/%3e%3cpath%20fill='%23db4446'%20d='M215.2%20227.6s-.4-.7-1.3-.6-1.4.8-1.4.8h1.2c.3.3.4%201%20.4%201l.7-.6z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M215.2%20227.6s-.4-.7-1.3-.6-1.4.8-1.4.8h1.2c.3.3.4%201%20.4%201l.7-.6z'/%3e%3cpath%20fill='%23db4446'%20d='M214.2%20230.6s-.8.1-1.2.6-.3%201.3-.3%201.3.4-.5.9-.5l1%20.2-.1-.8z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M214.2%20230.6s-.8.1-1.2.6-.3%201.3-.3%201.3.4-.5.9-.5l1%20.2-.1-.8z'/%3e%3cpath%20d='m228.2%20230.5.3-.5.3.5z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m228.2%20230.5.3-.5.3.5h-.7'/%3e%3cpath%20d='m229%20230.5.3-.5.4.5z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m229%20230.5.3-.5.4.5h-.8'/%3e%3cpath%20d='m228.6%20227.3.8.3-.7.4-.1-.6'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m228.6%20227.3.8.3-.7.4-.1-.6'/%3e%3cpath%20d='m229.5%20227.6.7.2-.5.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m229.5%20227.6.7.2-.5.4-.2-.6'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M224.2%20233.7s-.7.2-1%20.6q-.4.9-.3%201c.1.1.6-.5%201.5-.3l1.2.3%201.3-.3s-.7.8-.7%201.3l.2%201.1c0%20.7-.6%201.6-.6%201.6l1-.3%201.7-.8.9-1s-.2%201%200%201.4l.2%201.6.8-.6q.5-.2.9-.7l.3-1s0%20.8.4%201.3l.6%201.6s.3-.8.6-1.1l.7-1-.1-.9.4.8m-11%20.6s.5-.8%201-1l1.1-.8.9-.4m1%205%201.3-.8%201-1'/%3e%3cpath%20fill='%23db4446'%20d='M216.6%20240.4s-.4-.5-1.1-.3c-.7%200-1.2.9-1.2.9s.6-.2%201-.1.6.4.6.4l.4-.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M216.6%20240.4s-.4-.5-1.1-.3c-.7%200-1.2.9-1.2.9s.6-.2%201-.1.6.4.6.4l.4-.4z'/%3e%3cpath%20fill='%23db4446'%20d='M215.8%20243.2s-.6%200-1.1.3c-.5.4-.5%201.2-.5%201.2s.4-.4.8-.3l.9.2v-.6c.2-.4-.1-.8-.1-.8'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M215.8%20243.2s-.6%200-1.1.3c-.5.4-.5%201.2-.5%201.2s.4-.4.8-.3l.9.2v-.6c.2-.4-.1-.8-.1-.8z'/%3e%3cpath%20fill='%23db4446'%20d='M217.2%20245.8s0%20.8.3%201.3c.4.5%201.1.5%201.1.5l-.3-.7.3-.8q.1-.1-.7-.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M217.2%20245.8s0%20.8.3%201.3c.4.5%201.1.5%201.1.5l-.3-.7.3-.8q.1-.1-.7-.3zm16%201.3s2%201.2%201.9%202.2c0%201-1%202.3-1%202.3'/%3e%3cpath%20fill='%23db4446'%20d='M224.2%20252.6s-.4-.6-1.1-.6-1.4.7-1.4.7.8-.1%201%20.2l.5.6.5-.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M224.2%20252.6s-.4-.6-1.1-.6-1.4.7-1.4.7.8-.1%201%20.2l.5.6.5-.3z'/%3e%3cpath%20fill='%23db4446'%20d='M222.2%20255.3s-1-.1-1.4.3-.4%201.3-.4%201.3.6-.6%201-.5q.9.1%201%20.3v-.7l-.3-.7'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M222.2%20255.3s-1-.1-1.4.3-.4%201.3-.4%201.3.6-.6%201-.5q.9.1%201%20.3v-.7l-.3-.7z'/%3e%3cpath%20fill='%23db4446'%20d='M224%20258.1s-.3.7%200%201.1%201%20.8%201%20.8-.3-.4-.2-.8c.1-.3.7-.8.7-.8l-1.4-.2'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M224%20258.1s-.3.7%200%201.1%201%20.8%201%20.8-.3-.4-.2-.8c.1-.3.7-.8.7-.8l-1.4-.2z'/%3e%3cpath%20fill='%23db4446'%20d='M236%20259.3s-.8-.2-1.2%200c-.5.3-.8%201.4-.8%201.4s.7-.6%201.2-.5q.9.1%201%20.3v-.8z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M236%20259.3s-.8-.2-1.2%200c-.5.3-.8%201.4-.8%201.4s.7-.6%201.2-.5q.9.1%201%20.3v-.8z'/%3e%3cpath%20fill='%23db4446'%20d='M236.4%20262.2s-.6.6-.4%201.1l.6%201s0-.7.2-1l1-.3-.7-.5z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M236.4%20262.2s-.6.6-.4%201.1l.6%201s0-.7.2-1l1-.3-.7-.5z'/%3e%3cpath%20fill='%23db4446'%20d='M239.4%20263s-.3.8.2%201.3l1%20.5q-.2-.3-.2-1.1.3-.7.5-.7l-.8-.2-.7.3'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M239.4%20263s-.3.8.2%201.3l1%20.5q-.2-.3-.2-1.1.3-.7.5-.7l-.8-.2-.7.3z'/%3e%3cpath%20fill='%23ffd691'%20stroke='%23000'%20stroke-width='.5'%20d='M208.8%20316.4q3%201%203%203.8c0%202.3-2.2%204-5%204-3%200-5.3-1.7-5.3-4%200-1.7%201-3.6%203-3.8l-.2-.4-.7-.7h1.2l.8.5.5-.7.6-.5.6.6.3.5.7-.4.8-.3s0%20.4-.2.7l-.1.7'/%3e%3cpath%20fill='%23058e6e'%20stroke='%23000'%20stroke-width='.5'%20d='M206.3%20326.7s-3.8-2.6-5.5-3c-2-.4-4.5%200-5.5%200%200%200%201.2.8%201.8%201.4.5.5%202.3%201.5%203.3%201.8%203%20.8%206-.2%206-.2m1%20.2s2.4-2.5%205-2.9c3-.4%205%20.3%206.2.6l-1.5.8c-.5.3-2%201.5-4%201.6-2%200-4.4-.3-4.8-.2l-.9.1'/%3e%3cpath%20fill='%23ad1519'%20stroke='%23000'%20stroke-width='.5'%20d='M206.7%20323.8a5%205%200%200%201%200-7.1%205%205%200%200%201%201.5%203.5%205%205%200%200%201-1.5%203.6'/%3e%3cpath%20fill='%23058e6e'%20stroke='%23000'%20stroke-width='.5'%20d='M205.7%20329s.6-1.5.6-2.7l-.1-2.1h.8s.3%201.1.3%202l-.1%202.4-.7.1-.8.3'/%3e%3cpath%20fill='%23fff'%20d='M254%20190.7q.1-.9%201-1%201%20.1%201.1%201-.1%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M254%20190.7q.1-.9%201-1%201%20.1%201.1%201-.1%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M255.4%20188.2q.1-1%201.1-1t1%201c0%201-.4%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M255.4%20188.2q.1-1%201.1-1t1%201c0%201-.4%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M256.4%20185.2q.1-.9%201-1%201%20.1%201.1%201c.1.9-.5%201-1%201a1%201%200%200%201-1.1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M256.4%20185.2q.1-.9%201-1%201%20.1%201.1%201c.1.9-.5%201-1%201a1%201%200%200%201-1.1-1z'/%3e%3cpath%20fill='%23fff'%20d='M256.5%20182q.1-.9%201-1%201%20.1%201.1%201-.1%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M256.5%20182q.1-.9%201-1%201%20.1%201.1%201-.1%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M255.7%20179q.1-1%201-1%201.1%200%201.2%201c.1%201-.5%201-1.1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M255.7%20179q.1-1%201-1%201.1%200%201.2%201c.1%201-.5%201-1.1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M254.1%20176.1q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M254.1%20176.1q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M252%20173.8q0-1%201-1c1%200%201%20.4%201%201s-.4%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M252%20173.8q0-1%201-1c1%200%201%20.4%201%201s-.4%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M249.4%20171.8q.1-.9%201.1-1a1%201%200%200%201%200%202q-1%200-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M249.4%20171.8q.1-.9%201.1-1a1%201%200%200%201%200%202q-1%200-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M246.5%20170.3q0-1%201-1c1%200%201%20.4%201%201s-.4%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M246.5%20170.3q0-1%201-1c1%200%201%20.4%201%201s-.4%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M243.3%20169.1q.1-.9%201.1-1a1%201%200%200%201%200%202%201%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M243.3%20169.1q.1-.9%201.1-1a1%201%200%200%201%200%202%201%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M239.9%20168.5q0-.9%201-1c1-.1%201%20.5%201%201s-.4%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M239.9%20168.5q0-.9%201-1c1-.1%201%20.5%201%201s-.4%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M236.6%20168.3q0-.9%201-1c1-.1%201%20.5%201%201s-.4%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M236.6%20168.3q0-.9%201-1c1-.1%201%20.5%201%201s-.4%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M233.3%20168.5q.1-1%201-1t1.1%201c.1%201-.4%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M233.3%20168.5q.1-1%201-1t1.1%201c.1%201-.4%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M230.1%20168.5q.1-1%201-1t1.1%201c.1%201-.5%201-1%201a1%201%200%200%201-1.1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M230.1%20168.5q.1-1%201-1t1.1%201c.1%201-.5%201-1%201a1%201%200%200%201-1.1-1z'/%3e%3cpath%20fill='%23fff'%20stroke='%23000'%20stroke-width='.4'%20d='M231.7%20171.2q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1-1m.6%203.1q0-1%201-1c1%200%201%20.4%201%201q0%20.9-1%201a1%201%200%200%201-1-1m0%203q.2-.9%201.1-1a1%201%200%200%201%200%202%201%201%200%200%201-1-1m-1%202.8q.1-.9%201-1%201%20.1%201.1%201%200%201-1%201a1%201%200%200%201-1-1m-1.9%202.6q.1-.9%201-1%201.1.1%201.2%201%200%201.2-1.1%201-1%200-1-1'/%3e%3cpath%20fill='%23fff'%20d='M227.6%20166.5q.1-.9%201.1-1a1%201%200%200%201%200%202%201%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M227.6%20166.5q.1-.9%201.1-1a1%201%200%200%201%200%202%201%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M224.8%20165q0-1%201-1c1%200%201%20.4%201%201s-.4%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M224.8%20165q0-1%201-1c1%200%201%20.4%201%201s-.4%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M221.6%20164q.1-1%201-1t1.1%201q-.1.9-1%201-1-.1-1.1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M221.6%20164q.1-1%201-1t1.1%201q-.1.9-1%201-1-.1-1.1-1z'/%3e%3cpath%20fill='%23fff'%20d='M218.3%20163.4q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1.1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M218.3%20163.4q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1.1-1z'/%3e%3cpath%20fill='%23fff'%20d='M215%20163.5q.1-1%201.1-1t1%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M215%20163.5q.1-1%201.1-1t1%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M211.7%20164q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M211.7%20164q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M208.6%20165.1q.1-.9%201-1%201%20.1%201.1%201c.1.9-.5%201-1%201a1%201%200%200%201-1.1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M208.6%20165.1q.1-.9%201-1%201%20.1%201.1%201c.1.9-.5%201-1%201a1%201%200%200%201-1.1-1z'/%3e%3cpath%20fill='%23fff'%20d='M156%20190.7q0-.9%201-1c1-.1%201%20.5%201%201q0%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M156%20190.7q0-.9%201-1c1-.1%201%20.5%201%201q0%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M154.5%20188.2q.1-1%201-1t1%201c0%201-.4%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M154.5%20188.2q.1-1%201-1t1%201c0%201-.4%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M153.5%20185.2q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M153.5%20185.2q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M153.4%20182q.1-.9%201-1%201%20.1%201.1%201-.1%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M153.4%20182q.1-.9%201-1%201%20.1%201.1%201-.1%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M154.2%20179q.1-1%201-1t1%201c0%201-.4%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M154.2%20179q.1-1%201-1t1%201c0%201-.4%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M155.8%20176.1q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M155.8%20176.1q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M158%20173.8q0-1%201-1c1%200%201%20.4%201%201s-.4%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M158%20173.8q0-1%201-1c1%200%201%20.4%201%201s-.4%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M160.5%20171.8q0-.9%201-1c1-.1%201%20.5%201%201s-.4%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M160.5%20171.8q0-.9%201-1c1-.1%201%20.5%201%201s-.4%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M163.5%20170.3q0-1%201-1c1%200%201%20.4%201%201s-.4%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M163.5%20170.3q0-1%201-1c1%200%201%20.4%201%201s-.4%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M166.6%20169.1q.1-.9%201-1a1%201%200%200%201%200%202%201%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M166.6%20169.1q.1-.9%201-1a1%201%200%200%201%200%202%201%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M170%20168.5q.1-.9%201.1-1a1%201%200%200%201%200%202q-1%200-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M170%20168.5q.1-.9%201.1-1a1%201%200%200%201%200%202q-1%200-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M173.4%20168.3q0-.9%201-1c1-.1%201%20.5%201%201s-.4%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M173.4%20168.3q0-.9%201-1c1-.1%201%20.5%201%201s-.4%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M176.6%20168.5q.1-1%201-1t1.1%201c.1%201-.5%201-1%201a1%201%200%200%201-1.1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M176.6%20168.5q.1-1%201-1t1.1%201c.1%201-.5%201-1%201a1%201%200%200%201-1.1-1z'/%3e%3cpath%20fill='%23fff'%20d='M179.8%20168.5q.1-1%201-1%201.1%200%201.2%201c.1%201-.5%201-1.1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M179.8%20168.5q.1-1%201-1%201.1%200%201.2%201c.1%201-.5%201-1.1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20stroke='%23000'%20stroke-width='.4'%20d='M178.2%20171.2q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1-1m-.7%203.1q0-1%201-1c1%200%201%20.4%201%201q0%20.9-1%201a1%201%200%200%201-1-1m-.2%203q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1-1m.9%202.8q.1-.9%201-1%201%20.1%201.1%201-.1%201-1%201a1%201%200%200%201-1.1-1m1.8%202.6q.1-.9%201-1a1%201%200%200%201%200%202%201%201%200%200%201-1-1'/%3e%3cpath%20fill='%23fff'%20d='M182.3%20166.5q.1-.9%201-1a1%201%200%200%201%200%202%201%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M182.3%20166.5q.1-.9%201-1a1%201%200%200%201%200%202%201%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M185.2%20165q0-1%201-1c1%200%201%20.4%201%201s-.4%201-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M185.2%20165q0-1%201-1c1%200%201%20.4%201%201s-.4%201-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M188.3%20164q.1-1%201-1t1.1%201q0%20.9-1%201c-1%20.1-1-.5-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M188.3%20164q.1-1%201-1t1.1%201q0%20.9-1%201c-1%20.1-1-.5-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M191.6%20163.4q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M191.6%20163.4q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M194.9%20163.5q0-1%201-1c1%200%201%20.4%201%201q0%20.9-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M194.9%20163.5q0-1%201-1c1%200%201%20.4%201%201q0%20.9-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M198.2%20164q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M198.2%20164q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23fff'%20d='M201.3%20165.1q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1-1'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.4'%20d='M201.3%20165.1q.1-.9%201-1%201%20.1%201.1%201%200%201.2-1%201a1%201%200%200%201-1-1z'/%3e%3cpath%20fill='%23c8b100'%20stroke='%23000'%20stroke-width='.4'%20d='M174.7%20228.9h-1v-1h-1.5v3.6h1.6v2.5h-3.4v7h1.8v14.3h-3.5v7.3h27.2v-7.3h-3.5V241h1.8v-7h-3.4v-2.5h1.6V228h-1.6v.9h-.8v-1h-1.6v1h-1.1v-1h-1.6v3.6h1.6v2.5H184v-7.8h1.7v-3.5H184v.9h-1v-1h-1.5v1h-.9v-1H179v3.6h1.7v7.8h-3.3v-2.5h1.6V228h-1.6v.9h-.9v-1h-1.8zm-6%2033.7H196m-27.3-1.8H196m-27.3-1.8H196m-27.3-1.7H196m-27.3-2H196m-23.8-1.6h20.2m-20.2-1.8h20.2m-20.2-2h20.2m-20.2-1.7h20.2m-20.2-1.8h20.2m-20.2-1.8h20.2m-20.2-1.7h20.2m-22-1.8h23.8m-23.8-1.8h23.8m-23.8-1.8h23.8m-23.8-1.8h23.8m-20.4-1.7h17m-10.2-1.8h3.4m-3.4-1.8h3.4m-3.4-1.8h3.4m-3.4-1.7h3.4m-5.1-2.2h6.8m-12%207.5h3.6m-5-2.2h6.6m-6.7%2032.6v-1.8m0-1.8v-1.7m-1.8%201.7v1.8m3.4%200V259m1.7%203.6v-1.8m0-1.8v-1.7m0-2v-1.6m0-1.8v-2m-1.7%207.4v-2m-3.4%202v-2m7%200v2m1.5-2v-1.6m-5.1-1.8v1.8m3.5-1.8v1.8m3.3-1.8v1.8M179%20252v-2m1.7-1.7v1.7m0-5.3v1.8m-1.7-3.6v1.8m1.7-3.5v1.7m-3.3-1.7v1.7m-3.5-1.7v1.7m-1.6-3.5v1.8m3.3-1.8v1.8m3.4-1.8v1.8m1.7-3.6v1.8m-3.3-1.8v1.8m-3.5-1.8v1.8m-1.6-3.6v1.8m6.7-1.8v1.8m-3.4-5.3v1.8m15.3-1.8h-3.5m5-2.2h-6.6m6.7%2032.6v-1.8m0-1.8v-1.7m1.8%201.7v1.8m-3.4%200V259m-1.7%203.6v-1.8m0-1.8v-1.7m0-2v-1.6m0-1.8v-2m1.7%207.4v-2m3.4%202v-2m-7%200v2m-1.5-2v-1.6m5.1-1.8v1.8m-3.5-1.8v1.8m-3.3-1.8v1.8m1.7-1.8v-2m-1.7-1.7v1.7m0-5.3v1.8m1.7-3.6v1.8m-1.7-3.5v1.7m3.3-1.7v1.7m3.5-1.7v1.7m1.6-3.5v1.8m-3.3-1.8v1.8m-3.4-1.8v1.8m-1.7-3.6v1.8m3.3-1.8v1.8m3.5-1.8v1.8m1.6-3.6v1.8m-6.7-1.8v1.8m3.4-5.3v1.8m-7%2018v-2m0-5.4v-1.8m0%205.4v-1.8m0-5.3v-1.8m0-1.8v-1.7m0-3.6v-1.8m0-1.7v-1.8m-8.3%204.6h3.5m3.3-5.3h3.4m3.3%205.3h3.5'/%3e%3cpath%20fill='%23c8b100'%20stroke='%23000'%20stroke-width='.4'%20d='M186.8%20262.6v-4.7c0-.8-.4-3.5-4.6-3.5-4%200-4.4%202.7-4.4%203.5v4.7z'/%3e%3cpath%20fill='%23c8b100'%20stroke='%23000'%20stroke-width='.4'%20d='m179.3%20258.2-2.2-.3c0-.9.2-2.2.9-2.6l2%201.5c-.3.2-.7%201-.7%201.4zm6%200%202.2-.3c0-.9-.2-2.2-.9-2.6l-2%201.5c.3.2.7%201%20.7%201.4zm-2.2-2.3%201-2-2-.4-1.7.4%201.1%202zm-4.2-5.5v-4.9c0-1.3-1-2.4-2.5-2.4s-2.4%201-2.4%202.4v4.9zm6.8%200v-4.9c0-1.3%201-2.4%202.5-2.4s2.4%201%202.4%202.4v4.9zm-1.7-12%20.4-4.4h-4.2l.2%204.4zm3.3%200-.4-4.4h4.4l-.5%204.4zm-10%200%20.2-4.4h-4.2l.5%204.4z'/%3e%3cpath%20fill='%230039f0'%20d='M185.3%20262.6v-4c0-.7-.5-2.7-3.1-2.7-2.4%200-2.9%202-2.9%202.7v4zm-6.9-12.7v-4.2c0-1-.6-2.2-2-2.2s-2%201.1-2%202.2v4.3h4zm7.8%200v-4.2c0-1%20.7-2.2%202-2.2s2%201.1%202%202.2v4.3h-4z'/%3e%3cpath%20fill='%23ad1519'%20d='M190.8%20269.8c0-9.7%207-17.6%2015.6-17.6s15.6%207.9%2015.6%2017.6-7%2017.5-15.6%2017.5-15.6-7.8-15.6-17.5'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.6'%20d='M190.8%20269.8c0-9.7%207-17.6%2015.6-17.6s15.6%207.9%2015.6%2017.6-7%2017.5-15.6%2017.5-15.6-7.8-15.6-17.5z'/%3e%3cpath%20fill='%23005bbf'%20d='M195.4%20269.7c0-7%205-12.8%2011-12.8s11%205.7%2011%2012.8-5%2013-11%2013-11-5.8-11-13'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.6'%20d='M195.4%20269.7c0-7%205-12.8%2011-12.8s11%205.7%2011%2012.8-5%2013-11%2013-11-5.8-11-13z'/%3e%3cpath%20fill='%23c8b100'%20d='M201.2%20260.9s-1.3%201.4-1.3%202.7a6%206%200%200%200%20.6%202.4q-.4-.8-1.4-.8-1.3.1-1.4%201.3l.2.8.5.9q.2-.5%201-.5%201.1%200%201%201v.2h-1.2v1h1l-.8%201.5%201-.4.8.9.8-.9%201%20.4-.7-1.5h1v-1h-1.1v-.3a1%201%200%200%201%201-1q.6%200%201%20.6l.4-1%20.2-.7a1.4%201.4%200%200%200-1.4-1.3q-1%200-1.4.9s.6-1.2.6-2.5-1.4-2.7-1.4-2.7'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linejoin='round'%20stroke-width='.3'%20d='M201.2%20260.9s-1.3%201.4-1.3%202.7a6%206%200%200%200%20.6%202.4q-.4-.8-1.4-.8-1.3.1-1.4%201.3l.2.8.5.9q.2-.5%201-.5%201.1%200%201%201v.2h-1.2v1h1l-.8%201.5%201-.4.8.9.8-.9%201%20.4-.7-1.5h1v-1h-1.1v-.3a1%201%200%200%201%201-1q.6%200%201%20.6l.4-1%20.2-.7a1.4%201.4%200%200%200-1.4-1.3q-1%200-1.4.9s.6-1.2.6-2.5-1.4-2.7-1.4-2.7z'/%3e%3cpath%20fill='%23c8b100'%20d='M199.2%20269.9h4.1v-1h-4.1z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M199.2%20269.9h4.1v-1h-4.1z'/%3e%3cpath%20fill='%23c8b100'%20d='M211.4%20260.9s-1.3%201.4-1.3%202.7.6%202.4.6%202.4q-.3-.8-1.4-.8-1.3.1-1.4%201.3l.2.8.5.9q.3-.5%201-.5a1%201%200%200%201%201%201v.2h-1.2v1h1l-.8%201.5%201-.4.8.9.8-.9%201%20.4-.7-1.5h1v-1h-1.1v-.3a1%201%200%200%201%201-1q.7%200%201%20.6l.4-1%20.2-.7a1.4%201.4%200%200%200-1.4-1.3q-1%200-1.4.9s.6-1.2.6-2.5-1.4-2.7-1.4-2.7'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linejoin='round'%20stroke-width='.3'%20d='M211.4%20260.9s-1.3%201.4-1.3%202.7.6%202.4.6%202.4q-.3-.8-1.4-.8-1.3.1-1.4%201.3l.2.8.5.9q.3-.5%201-.5a1%201%200%200%201%201%201v.2h-1.2v1h1l-.8%201.5%201-.4.8.9.8-.9%201%20.4-.7-1.5h1v-1h-1.1v-.3a1%201%200%200%201%201-1q.7%200%201%20.6l.4-1%20.2-.7a1.4%201.4%200%200%200-1.4-1.3q-1%200-1.4.9s.6-1.2.6-2.5-1.4-2.7-1.4-2.7z'/%3e%3cpath%20fill='%23c8b100'%20d='M209.4%20269.9h4.1v-1h-4.1z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M209.4%20269.9h4.1v-1h-4.1z'/%3e%3cpath%20fill='%23c8b100'%20d='M206.3%20269.6s-1.3%201.5-1.3%202.8.6%202.4.6%202.4q-.3-.8-1.4-.9-1.3.1-1.4%201.4l.2.7.5%201q.2-.6%201-.6a1%201%200%200%201%201%201v.3h-1.2v1h1l-.8%201.5%201-.4.8.9.8-1%201%20.5-.7-1.5h1v-1h-1.1v-.3a1%201%200%200%201%201-1q.6%200%20.9.6l.5-1%20.2-.7a1.4%201.4%200%200%200-1.4-1.4q-1%200-1.4%201s.6-1.2.6-2.5-1.4-2.7-1.4-2.7'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-linejoin='round'%20stroke-width='.3'%20d='M206.3%20269.6s-1.3%201.5-1.3%202.8.6%202.4.6%202.4q-.3-.8-1.4-.9-1.3.1-1.4%201.4l.2.7.5%201q.2-.6%201-.6a1%201%200%200%201%201%201v.3h-1.2v1h1l-.8%201.5%201-.4.8.9.8-1%201%20.5-.7-1.5h1v-1h-1.1v-.3a1%201%200%200%201%201-1q.6%200%20.9.6l.5-1%20.2-.7a1.4%201.4%200%200%200-1.4-1.4q-1%200-1.4%201s.6-1.2.6-2.5-1.4-2.7-1.4-2.7z'/%3e%3cpath%20fill='%23c8b100'%20d='M204.3%20278.6h4.1v-1h-4.1z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M204.3%20278.6h4.1v-1h-4.1z'/%3e%3cpath%20fill='%23c8b100'%20d='M237.6%20223.4h-.3l-.3.4q-.4.3-.8%200l-.1-.4h-.5q-.4-.3-.1-.7v-.5h-.3l-.1.2q-.3.4-.7.2v-.2h-.3c-.5.2-.7-1-.7-1.2l-.2.2s.2.7.1%201.2l-.3%201.2a9%209%200%200%201%202.9%201.6%209%209%200%200%201%202.2%202.3l1.2-.5c.6-.2%201.3-.2%201.3-.2l.2-.2c-.3%200-1.5.1-1.5-.4v-.2h-.2q-.3-.3%200-.7l.2-.1v-.3h-.3l-.2.1q-.4.5-.8%200l-.1-.4h-.5q-.4-.3%200-.8l.2-.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M237.6%20223.4h-.3l-.3.4q-.4.3-.8%200l-.1-.4h-.5q-.4-.3-.1-.7v-.5h-.3l-.1.2q-.3.4-.7.2v-.2h-.3c-.5.2-.7-1-.7-1.2l-.2.2s.2.7.1%201.2l-.3%201.2a9%209%200%200%201%202.9%201.6%209%209%200%200%201%202.2%202.3l1.2-.5c.6-.2%201.3-.2%201.3-.2l.2-.2c-.3%200-1.5.1-1.5-.4v-.2h-.2q-.3-.3%200-.7l.2-.1v-.3h-.3l-.2.1q-.4.5-.8%200l-.1-.4h-.5q-.4-.3%200-.8l.2-.3z'/%3e%3cpath%20d='M235.4%20224h.2v.3h-.1q-.1-.1%200-.2'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.1'%20d='M235.4%20224h.2v.3h-.1q-.1-.1%200-.2z'/%3e%3cpath%20d='m236.3%20224.8-.3-.2v-.2h.1l.4.3.3.2v.2h-.2z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.1'%20d='m236.3%20224.8-.3-.2v-.2h.1l.4.3.3.2v.2h-.2l-.3-.3'/%3e%3cpath%20d='m234.6%20223.7-.2-.2s-.1%200%200-.1l.3.1.3.1v.2h-.1z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.1'%20d='m234.6%20223.7-.2-.2s-.1%200%200-.1l.3.1.3.1v.2h-.1l-.3-.1'/%3e%3cpath%20d='M233.7%20223h.2v.2h-.2s-.1-.1%200-.2'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.1'%20d='M233.7%20223h.2v.2h-.2s-.1-.1%200-.2z'/%3e%3cpath%20d='M237.3%20225.5v-.2h-.3l.1.2z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.1'%20d='M237.3%20225.5v-.2h-.3l.1.2z'/%3e%3cpath%20d='m237.9%20226.2.2.2h.1v-.2l-.2-.2-.2-.2h-.1v.2z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.1'%20d='m237.9%20226.2.2.2h.1v-.2l-.2-.2-.2-.2h-.1v.2l.2.2'/%3e%3cpath%20d='M238.8%20227v-.3h-.3v.2h.3'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.1'%20d='M238.8%20227v-.3h-.3v.2h.3z'/%3e%3cpath%20fill='%23c8b100'%20d='M236.2%20221.1h-.6l-.1.9v.1h.2l.7-.5-.3-.5'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M236.2%20221.1h-.6l-.1.9v.1h.2l.7-.5-.3-.5'/%3e%3cpath%20fill='%23c8b100'%20d='M234.6%20221.6v.5l.9.1h.1v-.2l-.5-.7z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M234.6%20221.6v.5l.9.1h.1v-.2l-.5-.7-.5.3'/%3e%3cpath%20fill='%23c8b100'%20d='m236.4%20222.6-.4.3-.6-.7v-.1h1.1z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m236.4%20222.6-.4.3-.6-.7v-.1h1.1v.5'/%3e%3cpath%20fill='%23c8b100'%20d='M235.3%20222h.4v.3h-.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M235.3%20222h.4v.3h-.3z'/%3e%3cpath%20fill='%23c8b100'%20d='m233.2%20221.1-.2-.7-.4-.4s.4-.2.8.1%200%20.9%200%20.9z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m233.2%20221.1-.2-.7-.4-.4s.4-.2.8.1%200%20.9%200%20.9z'/%3e%3cpath%20fill='%23c8b100'%20d='m234.2%20221.4-.4.4-.6-.6v-.2h1z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m234.2%20221.4-.4.4-.6-.6v-.2h1v.4'/%3e%3cpath%20fill='%23c8b100'%20d='m233.1%20221%20.3-.1v.3q0%20.3-.2.2z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m233.1%20221%20.3-.1v.3q0%20.3-.2.2z'/%3e%3cpath%20fill='%23c8b100'%20d='M238.3%20222.5h-.5l-.3.7v.2h.2l.8-.4z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M238.3%20222.5h-.5l-.3.7v.2h.2l.8-.4-.2-.5'/%3e%3cpath%20fill='%23c8b100'%20d='M236.7%20222.8v.5l.8.2h.1v-.2l-.4-.7z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M236.7%20222.8v.5l.8.2h.1v-.2l-.4-.7-.5.2'/%3e%3cpath%20fill='%23c8b100'%20d='m238.4%20224-.5.2-.4-.7v-.2h.1l.9.2z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m238.4%20224-.5.2-.4-.7v-.2h.1l.9.2-.1.5'/%3e%3cpath%20fill='%23c8b100'%20d='M237.3%20223.2h.4v.4h-.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M237.3%20223.2h.4v.4h-.3z'/%3e%3cpath%20fill='%23c8b100'%20d='m240.2%20224.3.1.5-.8.3h-.2v-.2l.4-.8z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m240.2%20224.3.1.5-.8.3h-.2v-.2l.4-.8.5.2'/%3e%3cpath%20fill='%23c8b100'%20d='m240%20225.8-.5.1-.3-.8v-.1h.2l.8.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m240%20225.8-.5.1-.3-.8v-.1h.2l.8.3-.1.5'/%3e%3cpath%20fill='%23c8b100'%20d='m238.6%20224.3-.2.5.9.3h.1v-.1l-.3-.8z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m238.6%20224.3-.2.5.9.3h.1v-.1l-.3-.8-.5.1'/%3e%3cpath%20fill='%23c8b100'%20d='M239.5%20225.2v-.3h-.4v.3z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M239.5%20225.2v-.3h-.4v.3z'/%3e%3cpath%20fill='%23c8b100'%20d='M240.8%20227h.8l.5.3s.1-.4-.3-.7c-.3-.3-.8.2-.8.2z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M240.8%20227h.8l.5.3s.1-.4-.3-.7c-.3-.3-.8.2-.8.2z'/%3e%3cpath%20fill='%23c8b100'%20d='m240.3%20226.1-.3.5.8.5v-.1h.2l-.1-1z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='m240.3%20226.1-.3.5.8.5v-.1h.2l-.1-1-.6.1'/%3e%3cpath%20fill='%23c8b100'%20d='M241%20227s.1-.1%200-.2h-.3q-.3%200-.1.2z'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.3'%20d='M241%20227s.1-.1%200-.2h-.3q-.3%200-.1.2zm38-21.9v.6h-2.4v-.6h1v-1.3h-.7v-.5h.6v-.6h.6v.6h.6v.6h-.6v1.2h1'/%3e%3cpath%20fill='none'%20d='M134.4%20217.1v-1.2m-.4%201.2v-1.2m-.2%201.2v-1.2m-.3%201.2v-1.2'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.1'%20d='M133.2%20217.1v-1.2m-.5%201.1v-1m.2%201v-1m-.7%201v-1m.2%201v-1m-.9%201v-1m.2%201v-1m.3%201v-1m-.7%201v-1m-.3.9v-.8m-.1.8v-.8m-.5.7v-.6m.2.6v-.6m-.4.5v-.5m-.2.5v-.4m-.3.3v-.3m-.3.3v-.2'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.2'%20d='M129.2%20216.6v-.2'/%3e%3cpath%20fill='none'%20d='M135.7%20217v-1m-.5%201v-1m-.4%201.2V216m143%201.1V216m-.4%201.1V216m-.3%201.1V216m-.3%201.2V216'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.1'%20d='M276.6%20217.1V216m-.6%201v-1m.3%201v-1m-.8%201v-1m.3%201v-1m-.9%201v-1m.2%201v-1m.2%201v-1m-.6%201v-1m-.3.9v-.8m-.2.8v-.8m-.4.7v-.6m.2.6v-.6m-.5.6v-.6m-.2.5v-.4m-.3.4v-.4m-.2.3v-.2'/%3e%3cpath%20fill='none'%20stroke='%23000'%20stroke-width='.2'%20d='M272.6%20216.6v-.2'/%3e%3cpath%20fill='none'%20d='M279.1%20217v-1m-.6%201v-1m-.4%201.1V216'/%3e%3c/svg%3e";
  const flagPH = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-ph'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%230038a8'%20d='M0%200h640v240H0z'/%3e%3cpath%20fill='%23ce1126'%20d='M0%20240h640v240H0z'/%3e%3cpath%20fill='%23fff'%20d='M415.7%20240%200%20480V0'/%3e%3cpath%20fill='%23fcd116'%20d='M26.7%2042.4%2041%2055l16.6-9.2-7.4%2017.5%2014%2013-19-1.6-8.1%2017.2-4.3-18.5L14%2071l16.3-10zm323.8%20172.3.4%2019%2018%206.3-18%206.2-.4%2019-11.5-15.1-18.2%205.5%2010.8-15.6-10.8-15.6%2018.2%205.5zM37.2%20388.1l8%2017.2%2019-1.6-13.9%2013%207.4%2017.5-16.6-9.1-14.4%2012.4%203.6-18.7L14%20409l18.9-2.4zm114.2-249-6.2%206.2%203.1%2047-3%20.3-5.7-42.9-5.1%205%207.6%2038.4a48%2048%200%200%200-17.2%207.1l-21.7-32.4H96l26.4%2034.3-2.4%202-31.1-35.5h-8.8v8.8l35.4%2031-2%202.5-34.3-26.3v7.1l32.5%2021.7q-5.2%207.8-7.1%2017.2L66.3%20223l-5.1%205%2042.9%205.7q-.3%201.6-.3%203.1l-47-3-6.2%206.2%206.2%206.2%2047-3.1.3%203.1-42.9%205.7%205%205%2038.4-7.6a48%2048%200%200%200%207.1%2017.2l-32.5%2021.7v7.2l34.3-26.3%202%202.4-35.4%2031v8.8H89l31-35.4%202.5%202L96%20312.2h7.2l21.7-32.5q7.8%205.2%2017.2%207.1l-7.6%2038.4%205%205%205.7-42.9q1.5.3%203.1.3l-3%2047%206.1%206.2%206.3-6.2-3.1-47%203-.3%205.7%2043%205.1-5.1-7.6-38.4a48%2048%200%200%200%2017.2-7.1l21.7%2032.5h7.2l-26.4-34.3%202.4-2%2031.1%2035.4h8.8v-8.8l-35.4-31%202-2.4%2034.3%2026.3v-7.2l-32.5-21.7q5.2-7.8%207.1-17.2l38.3%207.6%205.1-5-42.9-5.7q.3-1.5.3-3.1l47%203%206.2-6.1-6.2-6.2-47%203-.3-3%2042.9-5.7-5-5-38.4%207.5a48%2048%200%200%200-7.1-17.2l32.5-21.7v-7.1l-34.3%2026.3-2-2.4%2035.4-31v-8.9H214l-31%2035.5-2.5-2%2026.4-34.3h-7.2L178%20200.2q-7.8-5.2-17.2-7.1l7.6-38.3-5-5-5.7%2042.8-3.1-.3%203-47z'/%3e%3c/svg%3e";
  const flagID = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-id'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23e70011'%20d='M0%200h640v240H0Z'/%3e%3cpath%20fill='%23fff'%20d='M0%20240h640v240H0Z'/%3e%3c/svg%3e";
  const flagIT = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-it'%20viewBox='0%200%20640%20480'%3e%3cg%20fill-rule='evenodd'%20stroke-width='1pt'%3e%3cpath%20fill='%23fff'%20d='M0%200h640v480H0z'/%3e%3cpath%20fill='%23009246'%20d='M0%200h213.3v480H0z'/%3e%3cpath%20fill='%23ce2b37'%20d='M426.7%200H640v480H426.7z'/%3e%3c/g%3e%3c/svg%3e";
  const flagNL = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-nl'%20viewBox='0%200%20640%20480'%3e%3cpath%20fill='%23ae1c28'%20d='M0%200h640v160H0z'/%3e%3cpath%20fill='%23fff'%20d='M0%20160h640v160H0z'/%3e%3cpath%20fill='%2321468b'%20d='M0%20320h640v160H0z'/%3e%3c/svg%3e";
  const flagTH = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-th'%20viewBox='0%200%20640%20480'%3e%3cg%20fill-rule='evenodd'%3e%3cpath%20fill='%23f4f5f8'%20d='M0%200h640v480H0z'/%3e%3cpath%20fill='%232d2a4a'%20d='M0%20162.5h640v160H0z'/%3e%3cpath%20fill='%23a51931'%20d='M0%200h640v82.5H0zm0%20400h640v80H0z'/%3e%3c/g%3e%3c/svg%3e";
  const flagTR = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-tr'%20viewBox='0%200%20640%20480'%3e%3cg%20fill-rule='evenodd'%3e%3cpath%20fill='%23e30a17'%20d='M0%200h640v480H0z'/%3e%3cpath%20fill='%23fff'%20d='M407%20247.5c0%2066.2-54.6%20119.9-122%20119.9s-122-53.7-122-120%2054.6-119.8%20122-119.8%20122%2053.7%20122%20119.9'/%3e%3cpath%20fill='%23e30a17'%20d='M413%20247.5c0%2053-43.6%2095.9-97.5%2095.9s-97.6-43-97.6-96%2043.7-95.8%2097.6-95.8%2097.6%2042.9%2097.6%2095.9z'/%3e%3cpath%20fill='%23fff'%20d='m430.7%20191.5-1%2044.3-41.3%2011.2%2040.8%2014.5-1%2040.7%2026.5-31.8%2040.2%2014-23.2-34.1%2028.3-33.9-43.5%2012-25.8-37z'/%3e%3c/g%3e%3c/svg%3e";
  const flagVN = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-vn'%20viewBox='0%200%20640%20480'%3e%3cdefs%3e%3cclipPath%20id='vn-a'%3e%3cpath%20fill-opacity='.7'%20d='M-85.3%200h682.6v512H-85.3z'/%3e%3c/clipPath%3e%3c/defs%3e%3cg%20fill-rule='evenodd'%20clip-path='url(%23vn-a)'%20transform='translate(80)scale(.9375)'%3e%3cpath%20fill='%23da251d'%20d='M-128%200h768v512h-768z'/%3e%3cpath%20fill='%23ff0'%20d='M349.6%20381%20260%20314.3l-89%2067.3L204%20272l-89-67.7%20110.1-1%2034.2-109.4L294%20203l110.1.1-88.5%2068.4%2033.9%20109.6z'/%3e%3c/g%3e%3c/svg%3e";
  const FLAG_MAP = {
    en: flagUS,
    "zh-Hans": flagCN,
    ar: flagSA,
    ja: flagJP,
    ko: flagKR,
    fr: flagFR,
    de: flagDE,
    hi: flagIN,
    pt: flagPT,
    ru: flagRU,
    es: flagES,
    fil: flagPH,
    id: flagID,
    it: flagIT,
    nl: flagNL,
    th: flagTH,
    tr: flagTR,
    vi: flagVN
  };
  function LanguageSelector({
    dropdownClasses = "",
    btnClasses = "btn-ghost",
    contentClasses = "mt-16"
  }) {
    const { t, i18n } = useTranslation();
    const currentLang = signals.useSignal(appOptionsManager.get("language") || i18n.language || "en");
    hooks.useEffect(() => {
      const onLng = (lng) => {
        currentLang.value = lng || appOptionsManager.get("language") || "en";
      };
      i18n.on("languageChanged", onLng);
      const unsub = appOptionsManager.signal.subscribe(() => {
        const optLng = appOptionsManager.get("language");
        if (optLng && optLng !== currentLang.value) currentLang.value = optLng;
      });
      return () => {
        try {
          i18n.off("languageChanged", onLng);
        } catch {
        }
        try {
          unsub?.();
        } catch {
        }
      };
    }, []);
    const setLanguage = (code) => {
      playClickSound();
      currentLang.value = code;
      appOptionsManager.set("language", code);
      i18n.changeLanguage(code);
    };
    const currentLabel = LANGUAGES_CONFIG[currentLang.value]?.nameEn || currentLang.value;
    const currentFlag = FLAG_MAP[currentLang.value] || flagUS;
    return u("div", { class: cx("dropdown dropdown-end block", dropdownClasses), children: [
u(
        "div",
        {
          tabIndex: 0,
          role: "button",
          class: cx("btn group btn-sm gap-1.5 px-1.5 justify-start", btnClasses),
          "aria-label": t("Change Language"),
          children: [
u("div", { class: "w-5 flex items-center justify-center", children: u("img", { src: currentFlag, alt: "", class: "h-3 w-4 rounded-sm object-cover border border-base-content/10 bg-base-100" }) }),
u("div", { class: "w-24 truncate text-xs text-left", children: currentLabel }),
u(
              "svg",
              {
                width: "12px",
                height: "12px",
                class: "mt-px hidden size-2 fill-current opacity-60 sm:inline-block ml-auto",
                xmlns: "http://www.w3.org/2000/svg",
                viewBox: "0 0 2048 2048",
                children: u("path", { d: "M1799 349l242 241-1017 1017L7 590l242-241 775 775 775-775z" })
              }
            )
          ]
        }
      ),
u(
        "div",
        {
          tabIndex: 0,
          class: cx(
            "dropdown-content bg-base-200 text-base-content rounded-box mt-2 max-h-60 overflow-y-auto border-(length:--border) border-white/5 shadow-2xl outline-(length:--border) outline-black/5",
            contentClasses
          ),
          children: u("ul", { class: "menu w-64", children: [
u("li", { class: "menu-title text-xs", children: t("Change Language") }),
            Object.entries(LANGUAGES_CONFIG).map(([langTag, langConf]) => u("li", { children: u(
              "button",
              {
                class: cx("gap-3 px-2", currentLang.value === langTag && "[&_svg]:visible"),
                onClick: () => setLanguage(langTag),
                children: [
u("img", { src: FLAG_MAP[langTag] || flagUS, alt: "", class: "h-3 w-4 rounded-sm object-cover border border-base-content/10 bg-base-100" }),
u("div", { class: "flex-1 min-w-0 truncate", children: langConf.nameEn }),
u(
                    "svg",
                    {
                      xmlns: "http://www.w3.org/2000/svg",
                      width: "16",
                      height: "16",
                      viewBox: "0 0 24 24",
                      fill: "currentColor",
                      class: "invisible h-3 w-3 shrink-0",
                      children: u("path", { d: "M20.285 2l-11.285 11.567-5.286-5.011-3.714 3.716 9 8.728 15-15.285z" })
                    }
                  )
                ]
              }
            ) }, langTag))
          ] })
        }
      )
    ] });
  }
  function getDefaultExportFromCjs(x) {
    return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
  }
  var localizedFormat$2 = { exports: {} };
  var localizedFormat$1 = localizedFormat$2.exports;
  var hasRequiredLocalizedFormat;
  function requireLocalizedFormat() {
    if (hasRequiredLocalizedFormat) return localizedFormat$2.exports;
    hasRequiredLocalizedFormat = 1;
    (function(module, exports$1) {
      !(function(e, t) {
        module.exports = t();
      })(localizedFormat$1, (function() {
        var e = { LTS: "h:mm:ss A", LT: "h:mm A", L: "MM/DD/YYYY", LL: "MMMM D, YYYY", LLL: "MMMM D, YYYY h:mm A", LLLL: "dddd, MMMM D, YYYY h:mm A" };
        return function(t, o, n) {
          var r = o.prototype, i = r.format;
          n.en.formats = e, r.format = function(t2) {
            void 0 === t2 && (t2 = "YYYY-MM-DDTHH:mm:ssZ");
            var o2 = this.$locale().formats, n2 = (function(t3, o3) {
              return t3.replace(/(\[[^\]]+])|(LTS?|l{1,4}|L{1,4})/g, (function(t4, n3, r2) {
                var i2 = r2 && r2.toUpperCase();
                return n3 || o3[r2] || e[r2] || o3[i2].replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, (function(e2, t5, o4) {
                  return t5 || o4.slice(1);
                }));
              }));
            })(t2, void 0 === o2 ? {} : o2);
            return i.call(this, n2);
          };
        };
      }));
    })(localizedFormat$2);
    return localizedFormat$2.exports;
  }
  var localizedFormatExports = requireLocalizedFormat();
  const localizedFormat = getDefaultExportFromCjs(localizedFormatExports);
  dayjs.extend(localizedFormat);
  function GlobalSettingsModal({ isOpen, onClose }) {
    const { t, i18n } = useTranslation();
    const isArabic = (i18n.language || "").startsWith("ar");
    const showResetConfirm = signals.useSignal(false);
    const now = dayjs();
    const dateExamples = [
      { token: "YYYY-MM-DD", value: now.format("YYYY-MM-DD"), localized: false },
      { token: "DD/MM/YYYY", value: now.format("DD/MM/YYYY"), localized: false },
      { token: "MMM DD, YYYY", value: now.format("MMM DD, YYYY"), localized: false },
      { token: "L", value: now.format("L"), localized: true },
      { token: "LL", value: now.format("LL"), localized: true }
    ];
    const timeExamples = [
      { token: "HH:mm:ss", value: now.format("HH:mm:ss"), localized: false },
      { token: "hh:mm A", value: now.format("hh:mm A"), localized: false },
      { token: "LT", value: now.format("LT"), localized: true },
      { token: "LTS", value: now.format("LTS"), localized: true }
    ];
    const combinedExamples = [
      { token: "YYYY-MM-DD HH:mm:ss Z", value: now.format("YYYY-MM-DD HH:mm:ss Z"), localized: false },
      { token: "MMM DD, YYYY [at] hh:mm A", value: now.format("MMM DD, YYYY [at] hh:mm A"), localized: false },
      { token: "LLL", value: now.format("LLL"), localized: true }
    ];
    return u(
      Modal,
      {
        show: isOpen,
        onClose,
        title: t("Global Settings"),
        actions: u(
          "button",
          {
            class: "btn btn-sm btn-circle btn-ghost",
            onClick: () => showResetConfirm.value = true,
            children: u(IconRestore, { size: 16 })
          }
        ),
        children: [
u("div", { class: "space-y-4", children: [
u("div", { class: "flex justify-between items-center", children: [
u("span", { class: "text-sm", children: t("Theme") }),
u(
                ThemeSelector,
                {
                  dropdownClasses: "",
                  btnClasses: "btn-sm",
                  contentClasses: "mt-2"
                }
              )
            ] }),
u("div", { class: "flex justify-between items-center", children: [
u("span", { class: "text-sm", children: t("Language") }),
u(
                LanguageSelector,
                {
                  dropdownClasses: "",
                  btnClasses: "btn-sm",
                  contentClasses: "mt-2"
                }
              )
            ] }),
u("div", { class: "flex justify-between items-center", children: [
u("span", { class: "text-sm", children: t("Font Family") }),
u(
                "select",
                {
                  class: "select select-bordered select-sm w-40",
                  value: String(appOptionsManager.get("fontFamily") ?? "system"),
                  onChange: (e) => {
                    playClickSound();
                    const font = e.target.value;
                    appOptionsManager.set("fontFamily", font);
                    const shadowRoot = document.getElementById("tmd-root")?.shadowRoot;
                    if (shadowRoot?.host) {
                      if (font === "system") {
                        shadowRoot.host.removeAttribute("data-font");
                      } else {
                        shadowRoot.host.setAttribute("data-font", font);
                      }
                    }
                  },
                  children: [
u("option", { value: "system", children: t("System Default") }),
u("option", { value: "Lato", children: "Lato" }),
u("option", { value: "Montserrat", children: "Montserrat" }),
u("option", { value: "Noto Sans", children: "Noto Sans" }),
u("option", { value: "Open Sans", children: "Open Sans" }),
u("option", { value: "Raleway", children: "Raleway" })
                  ]
                }
              )
            ] }),
u("div", { class: "flex justify-between items-center", children: [
u("div", { class: "flex items-center", children: u("span", { class: "text-sm", children: t("Date Time Format") }) }),
u(
                "input",
                {
                  type: "text",
                  class: "input input-bordered input-sm w-52",
                  value: appOptionsManager.get("dateTimeFormat"),
                  onChange: (e) => {
                    appOptionsManager.set("dateTimeFormat", e.target?.value);
                  }
                }
              )
            ] }),
u("div", { class: "flex justify-between items-center", children: [
u("span", { class: "text-sm", children: t("Sound Effects") }),
u(
                "input",
                {
                  type: "checkbox",
                  class: "toggle toggle-primary",
                  checked: appOptionsManager.get("soundEffects", true),
                  onChange: (e) => {
                    const checked = e.target?.checked;
                    appOptionsManager.set("soundEffects", checked);
                    if (checked) {
                      playToggleOnSound();
                    }
                  }
                }
              )
            ] }),
u("div", { class: `mt-1 rounded-box bg-base-200 p-2 text-xs relative ${isArabic ? "text-right" : ""}`, dir: isArabic ? "rtl" : void 0, children: [
u("div", { class: "font-semibold mb-2", children: t("Common Formats:") }),
u(
                "a",
                {
                  href: "https://day.js.org/docs/en/display/format",
                  target: "_blank",
                  rel: "noopener noreferrer",
                  class: `absolute ${isArabic ? "left-2" : "right-2"} top-2 cursor-pointer opacity-70 hover:opacity-100`,
                  children: u(IconBook, { size: 14 })
                }
              ),
u("div", { class: "grid gap-3 sm:grid-cols-2", children: [
u("div", { children: [
u("div", { class: "font-medium mb-1", children: t("Date Formats:") }),
u("ul", { class: "space-y-1.5", children: dateExamples.map((ex) => u("li", { class: "flex items-center gap-2.5", children: [
u("span", { class: "font-mono px-2 py-0.5 rounded border border-base-300 bg-base-200/70 text-base-content/90", dir: "ltr", children: ex.token }),
u("span", { class: "opacity-60", children: isArabic ? "←" : "→" }),
u("span", { dir: "ltr", children: ex.value }),
                    ex.localized ? u("span", { class: "opacity-60", children: [
                      " (",
                      t("Localized"),
                      ")"
                    ] }) : null
                  ] }, ex.token)) })
                ] }),
u("div", { children: [
u("div", { class: "font-medium mb-1", children: t("Time Formats:") }),
u("ul", { class: "space-y-1.5", children: timeExamples.map((ex) => u("li", { class: "flex items-center gap-2.5", children: [
u("span", { class: "font-mono px-2 py-0.5 rounded border border-base-300 bg-base-200/70 text-base-content/90", dir: "ltr", children: ex.token }),
u("span", { class: "opacity-60", children: isArabic ? "←" : "→" }),
u("span", { dir: "ltr", children: ex.value }),
                    ex.localized ? u("span", { class: "opacity-60", children: [
                      " (",
                      t("Localized"),
                      ")"
                    ] }) : null
                  ] }, ex.token)) })
                ] })
              ] }),
u("div", { class: "divider my-2" }),
u("div", { children: [
u("div", { class: "font-medium mb-1", children: t("Combined Examples:") }),
u("ul", { class: "space-y-1.5", children: combinedExamples.map((ex) => u("li", { class: "flex items-center gap-2.5", children: [
u("span", { class: "font-mono px-2 py-0.5 rounded border border-base-300 bg-base-200/70 text-base-content/90", dir: "ltr", children: ex.token }),
u("span", { class: "opacity-60", children: isArabic ? "←" : "→" }),
u("span", { class: "break-all", dir: "ltr", children: ex.value }),
                  ex.localized ? u("span", { class: "opacity-60", children: [
                    " (",
                    t("Localized"),
                    ")"
                  ] }) : null
                ] }, ex.token)) })
              ] })
            ] })
          ] }),
u("div", { class: `rounded-box bg-base-200 p-2 text-xs mt-3 flex items-center justify-between ${isArabic ? "flex-row-reverse" : ""}`, children: [
u("div", { children: [
u("span", { class: "font-semibold", children: [
                t("Version"),
                ":"
              ] }),
              " ",
u("span", { class: "opacity-80", children: pkg.version })
            ] }),
u("div", { class: `flex items-center gap-4 ${isArabic ? "flex-row-reverse" : ""}`, children: [
              typeof GM_info !== "undefined" && GM_info?.scriptHandler ? u(
                "a",
                {
                  class: "flex items-center gap-1 opacity-80 hover:opacity-100",
                  href: "https://chromewebstore.google.com/detail/aboccmnimgpjehlplnanplbhlccohhhn",
                  target: "_blank",
                  rel: "noopener noreferrer",
                  children: [
u(IconBrandChrome, { size: 14 }),
                    " ",
                    t("Chrome")
                  ]
                }
              ) : u(
                "a",
                {
                  class: "flex items-center gap-1 opacity-80 hover:opacity-100",
                  href: "http://greasyfork.icu/en/scripts/551198",
                  target: "_blank",
                  rel: "noopener noreferrer",
                  children: [
u(IconFileTypeJs, { size: 14 }),
                    " ",
                    t("Userscript")
                  ]
                }
              ),
u(
                "a",
                {
                  class: "flex items-center gap-1 opacity-80 hover:opacity-100",
                  href: "https://exyezed.cc",
                  target: "_blank",
                  rel: "noopener noreferrer",
                  children: [
u(IconHome, { size: 14 }),
                    " ",
                    t("Home")
                  ]
                }
              ),
u(
                "a",
                {
                  class: "flex items-center gap-1 opacity-80 hover:opacity-100",
                  href: "https://patreon.com/exyezed",
                  target: "_blank",
                  rel: "noopener noreferrer",
                  children: [
u(IconBrandPatreon, { size: 14 }),
                    " ",
                    t("Patreon")
                  ]
                }
              )
            ] })
          ] }),
u(Modal, { show: showResetConfirm.value, onClose: () => showResetConfirm.value = false, title: t("Reset Settings"), class: "max-w-sm", children: u("div", { class: "space-y-2", children: [
u("p", { class: `text-sm${isArabic ? " text-right" : ""}`, dir: isArabic ? "rtl" : void 0, children: t("Are you sure you want to reset settings to defaults?") }),
u("div", { class: "modal-action", children: [
u("button", { class: "btn btn-sm btn-ghost", onClick: () => showResetConfirm.value = false, children: t("Cancel") }),
u(
                "button",
                {
                  class: "btn btn-sm btn-warning",
                  onClick: () => {
                    appOptionsManager.set("theme", "light");
                    appOptionsManager.set("language", "en");
                    appOptionsManager.set("soundEffects", true);
                    appOptionsManager.set("dateTimeFormat", "YYYY-MM-DD HH:mm:ss Z");
                    appOptionsManager.set("fontFamily", "system");
                    appOptionsManager.set("apiServer", "washington");
                    appOptionsManager.set("apiTimeout", 60);
                    appOptionsManager.set("mediaType", "all");
                    appOptionsManager.set("includeRetweets", false);
                    appOptionsManager.set("convertAnimatedGifs", false);
                    appOptionsManager.set("convertGifsExternal", false);
                    appOptionsManager.set("downloadConcurrency", 1);
                    const shadowRoot = document.getElementById("tmd-root")?.shadowRoot;
                    if (shadowRoot?.host) {
                      shadowRoot.host.removeAttribute("data-font");
                    }
                    i18n.changeLanguage("en");
                    showResetConfirm.value = false;
                  },
                  children: u("span", { class: "flex items-center gap-2", children: [
u(IconRestore, { size: 16 }),
                    t("Reset")
                  ] })
                }
              )
            ] })
          ] }) })
        ]
      }
    );
  }
  function MediaDownloaderModal({ isOpen, onClose }) {
    const { t } = useTranslation();
    const activeTab = signals.useSignal("dashboard");
    const showGlobalSettings = signals.useSignal(false);
    const loadFromDatabaseAccount = signals.useSignal(null);
    hooks.useEffect(() => {
      (async () => {
        try {
          const n = await mediaDownloaderDB.getAccountsCount();
          dbState.totalAccounts.value = n;
        } catch {
        }
      })();
    }, []);
    if (!isOpen) return null;
    const tabs = [
      { id: "dashboard", label: t("Dashboard") },
      { id: "auth", label: t("Auth") },
      { id: "settings", label: t("Settings") },
      { id: "database", label: t("Database") }
    ];
    return u("div", { class: "modal modal-open", children: [
u("div", { class: "modal-box transition-all duration-300 ease-in-out", children: [
u("div", { class: "flex items-center justify-between mb-4", children: [
u(Title, {}),
u("div", { class: "flex items-center gap-2", children: [
u(
              "button",
              {
                class: "btn btn-sm btn-circle btn-ghost",
                onClick: () => showGlobalSettings.value = true,
                children: u(IconSettings, { size: 18 })
              }
            ),
u(
              "button",
              {
                class: "btn btn-sm btn-circle btn-ghost",
                onClick: onClose,
                children: u(IconX, { size: 18 })
              }
            )
          ] })
        ] }),
u("div", { role: "tablist", class: "tabs tabs-lift mb-4", children: tabs.map((tab) => {
          const isActive = activeTab.value === tab.id;
          const isDatabase = tab.id === "database";
          const cls = `tab ${isActive ? "tab-active" : ""} ${isDatabase ? "relative" : ""}`;
          return u(
            "a",
            {
              role: "tab",
              class: cls,
              onClick: () => {
                if (activeTab.value !== tab.id) {
                  playTabClickSound();
                  activeTab.value = tab.id;
                }
              },
              children: [
                tab.label,
                isDatabase && dbState.totalAccounts.value > 0 && u("span", { class: "badge badge-accent badge-sm absolute -top-2 -right-2", children: dbState.totalAccounts.value })
              ]
            },
            tab.id
          );
        }) }),
u("div", { class: "flex-1 transition-[height,max-height] duration-300 ease-in-out", children: [
u("div", { class: activeTab.value === "dashboard" ? "block" : "hidden", children: u(
            Dashboard,
            {
              loadFromDatabaseAccount
            }
          ) }),
u("div", { class: activeTab.value === "database" ? "block" : "hidden", children: u(
            Database,
            {
              isVisible: activeTab.value === "database",
              onLoadToDashboard: (accountInfo) => {
                loadFromDatabaseAccount.value = accountInfo;
                playTabClickSound();
                activeTab.value = "dashboard";
              }
            }
          ) }),
u("div", { class: activeTab.value === "auth" ? "block" : "hidden", children: u(Auth, {}) }),
u("div", { class: activeTab.value === "settings" ? "block" : "hidden", children: u(Settings, {}) })
        ] })
      ] }),
u("div", { class: "modal-backdrop", onClick: onClose }),
u(
        GlobalSettingsModal,
        {
          isOpen: showGlobalSettings.value,
          onClose: () => showGlobalSettings.value = false
        }
      )
    ] });
  }
  function MediaDownloaderApp() {
    useTranslation();
    const currentTheme = signals.useSignal(appOptionsManager.get("theme"));
    const showMediaDownloader = signals.useSignal(false);
    const toggleMediaDownloader = () => {
      showMediaDownloader.value = !showMediaDownloader.value;
    };
    hooks.useEffect(() => {
      const font = String(appOptionsManager.get("fontFamily") ?? "system");
      const shadowRoot = document.getElementById("tmd-root")?.shadowRoot;
      if (shadowRoot?.host) {
        if (font !== "system") {
          shadowRoot.host.setAttribute("data-font", font);
        } else {
          shadowRoot.host.removeAttribute("data-font");
        }
      }
    }, []);
    appOptionsManager.signal.subscribe(() => {
      currentTheme.value = appOptionsManager.get("theme");
    });
    const databaseDownloadProgress = signals.computed(() => {
      const accountId = databaseDownloadState.downloadingId.value;
      if (accountId === null) return 0;
      return databaseDownloadState.downloadProgress.value[accountId] ?? 0;
    });
    const showDatabaseProgress = signals.computed(() => {
      return databaseDownloadState.downloadingId.value !== null && databaseDownloadProgress.value > 0;
    });
    return u(preact.Fragment, { children: [
u("style", { children: `
          @keyframes sparkle {
            0%, 100% { filter: drop-shadow(0 0 8px rgba(29, 155, 240, 0.8)) drop-shadow(0 0 16px rgba(29, 155, 240, 0.6)); }
            50% { filter: drop-shadow(0 0 12px rgba(29, 155, 240, 1)) drop-shadow(0 0 20px rgba(29, 155, 240, 0.8)) drop-shadow(0 0 28px rgba(29, 155, 240, 0.6)); }
          }
          .sparkle-icon {
            animation: sparkle 2s ease-in-out infinite;
          }
        ` }),
u(
        "div",
        {
          onClick: toggleMediaDownloader,
          class: `sparkle-icon fixed top-[50%] left-[-15px] cursor-pointer transition-all duration-300 z-50 ${showMediaDownloader.value ? "translate-x-[15px] rotate-15" : ""} hover:translate-x-[15px] hover:rotate-15`,
          children: [
u(IconBrandTwitter, { size: 48, "stroke-width": 1.25, class: "text-white" }),
            dashboardState.isDownloading.value && !showMediaDownloader.value && u("div", { class: "absolute -bottom-1 -right-1 flex items-center justify-center", children: u(
              "div",
              {
                class: "radial-progress text-info bg-base-100",
                style: `--value:${dashboardState.downloadProgress.value}; --size:2rem; --thickness:4px;`,
                role: "progressbar",
                "aria-valuenow": Math.round(dashboardState.downloadProgress.value),
                children: u("span", { class: "text-[10px] font-bold", children: Math.round(dashboardState.downloadProgress.value) })
              }
            ) }),
            showDatabaseProgress.value && !showMediaDownloader.value && u("div", { class: "absolute -bottom-1 -right-1 flex items-center justify-center", children: u(
              "div",
              {
                class: "radial-progress text-info bg-base-100",
                style: `--value:${databaseDownloadProgress.value}; --size:2rem; --thickness:4px;`,
                role: "progressbar",
                "aria-valuenow": Math.round(databaseDownloadProgress.value),
                children: u("span", { class: "text-[10px] font-bold", children: Math.round(databaseDownloadProgress.value) })
              }
            ) })
          ]
        }
      ),
u("div", { "data-theme": currentTheme.value, children: [
u(ErrorBoundary, { children: u(
          MediaDownloaderModal,
          {
            isOpen: showMediaDownloader.value,
            onClose: () => showMediaDownloader.value = false
          }
        ) }),
u("div", { id: "tmd-portal-root" })
      ] })
    ] });
  }
  const styles = `@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-normal:1.5;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--blur-sm:8px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:where(:root),:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(95% 0 0);--color-base-content:oklch(21% .006 285.885);--color-primary:oklch(45% .24 277.023);--color-primary-content:oklch(93% .034 272.788);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}@media(prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--color-base-100:oklch(25.33% .016 252.42);--color-base-200:oklch(23.26% .014 253.1);--color-base-300:oklch(21.15% .012 254.09);--color-base-content:oklch(97.807% .029 256.847);--color-primary:oklch(58% .233 277.117);--color-primary-content:oklch(96% .018 272.314);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}}:root:has(input.theme-controller[value=light]:checked),[data-theme=light]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98% 0 0);--color-base-300:oklch(95% 0 0);--color-base-content:oklch(21% .006 285.885);--color-primary:oklch(45% .24 277.023);--color-primary-content:oklch(93% .034 272.788);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}:root:has(input.theme-controller[value=dark]:checked),[data-theme=dark]{color-scheme:dark;--color-base-100:oklch(25.33% .016 252.42);--color-base-200:oklch(23.26% .014 253.1);--color-base-300:oklch(21.15% .012 254.09);--color-base-content:oklch(97.807% .029 256.847);--color-primary:oklch(58% .233 277.117);--color-primary-content:oklch(96% .018 272.314);--color-secondary:oklch(65% .241 354.308);--color-secondary-content:oklch(94% .028 342.258);--color-accent:oklch(77% .152 181.912);--color-accent-content:oklch(38% .063 188.416);--color-neutral:oklch(14% .005 285.823);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(71% .194 13.428);--color-error-content:oklch(27% .105 12.094);--radius-selector:.5rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}:root:has(input.theme-controller[value=cupcake]:checked),[data-theme=cupcake]{color-scheme:light;--color-base-100:oklch(97.788% .004 56.375);--color-base-200:oklch(93.982% .007 61.449);--color-base-300:oklch(91.586% .006 53.44);--color-base-content:oklch(23.574% .066 313.189);--color-primary:oklch(85% .138 181.071);--color-primary-content:oklch(43% .078 188.216);--color-secondary:oklch(89% .061 343.231);--color-secondary-content:oklch(45% .187 3.815);--color-accent:oklch(90% .076 70.697);--color-accent-content:oklch(47% .157 37.304);--color-neutral:oklch(27% .006 286.033);--color-neutral-content:oklch(92% .004 286.32);--color-info:oklch(68% .169 237.323);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(69% .17 162.48);--color-success-content:oklch(26% .051 172.552);--color-warning:oklch(79% .184 86.047);--color-warning-content:oklch(28% .066 53.813);--color-error:oklch(64% .246 16.439);--color-error-content:oklch(27% .105 12.094);--radius-selector:1rem;--radius-field:2rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:2px;--depth:1;--noise:0}:root:has(input.theme-controller[value=bumblebee]:checked),[data-theme=bumblebee]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(97% 0 0);--color-base-300:oklch(92% 0 0);--color-base-content:oklch(20% 0 0);--color-primary:oklch(85% .199 91.936);--color-primary-content:oklch(42% .095 57.708);--color-secondary:oklch(75% .183 55.934);--color-secondary-content:oklch(40% .123 38.172);--color-accent:oklch(0% 0 0);--color-accent-content:oklch(100% 0 0);--color-neutral:oklch(37% .01 67.558);--color-neutral-content:oklch(92% .003 48.717);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(39% .09 240.876);--color-success:oklch(76% .177 163.223);--color-success-content:oklch(37% .077 168.94);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(70% .191 22.216);--color-error-content:oklch(39% .141 25.723);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}:root:has(input.theme-controller[value=emerald]:checked),[data-theme=emerald]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(93% 0 0);--color-base-300:oklch(86% 0 0);--color-base-content:oklch(35.519% .032 262.988);--color-primary:oklch(76.662% .135 153.45);--color-primary-content:oklch(33.387% .04 162.24);--color-secondary:oklch(61.302% .202 261.294);--color-secondary-content:oklch(100% 0 0);--color-accent:oklch(72.772% .149 33.2);--color-accent-content:oklch(0% 0 0);--color-neutral:oklch(35.519% .032 262.988);--color-neutral-content:oklch(98.462% .001 247.838);--color-info:oklch(72.06% .191 231.6);--color-info-content:oklch(0% 0 0);--color-success:oklch(64.8% .15 160);--color-success-content:oklch(0% 0 0);--color-warning:oklch(84.71% .199 83.87);--color-warning-content:oklch(0% 0 0);--color-error:oklch(71.76% .221 22.18);--color-error-content:oklch(0% 0 0);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=corporate]:checked),[data-theme=corporate]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(93% 0 0);--color-base-300:oklch(86% 0 0);--color-base-content:oklch(22.389% .031 278.072);--color-primary:oklch(58% .158 241.966);--color-primary-content:oklch(100% 0 0);--color-secondary:oklch(55% .046 257.417);--color-secondary-content:oklch(100% 0 0);--color-accent:oklch(60% .118 184.704);--color-accent-content:oklch(100% 0 0);--color-neutral:oklch(0% 0 0);--color-neutral-content:oklch(100% 0 0);--color-info:oklch(60% .126 221.723);--color-info-content:oklch(100% 0 0);--color-success:oklch(62% .194 149.214);--color-success-content:oklch(100% 0 0);--color-warning:oklch(85% .199 91.936);--color-warning-content:oklch(0% 0 0);--color-error:oklch(70% .191 22.216);--color-error-content:oklch(0% 0 0);--radius-selector:.25rem;--radius-field:.25rem;--radius-box:.25rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=synthwave]:checked),[data-theme=synthwave]{color-scheme:dark;--color-base-100:oklch(15% .09 281.288);--color-base-200:oklch(20% .09 281.288);--color-base-300:oklch(25% .09 281.288);--color-base-content:oklch(78% .115 274.713);--color-primary:oklch(71% .202 349.761);--color-primary-content:oklch(28% .109 3.907);--color-secondary:oklch(82% .111 230.318);--color-secondary-content:oklch(29% .066 243.157);--color-accent:oklch(75% .183 55.934);--color-accent-content:oklch(26% .079 36.259);--color-neutral:oklch(45% .24 277.023);--color-neutral-content:oklch(87% .065 274.039);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(77% .152 181.912);--color-success-content:oklch(27% .046 192.524);--color-warning:oklch(90% .182 98.111);--color-warning-content:oklch(42% .095 57.708);--color-error:oklch(73.7% .121 32.639);--color-error-content:oklch(23.501% .096 290.329);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=retro]:checked),[data-theme=retro]{color-scheme:light;--color-base-100:oklch(91.637% .034 90.515);--color-base-200:oklch(88.272% .049 91.774);--color-base-300:oklch(84.133% .065 90.856);--color-base-content:oklch(41% .112 45.904);--color-primary:oklch(80% .114 19.571);--color-primary-content:oklch(39% .141 25.723);--color-secondary:oklch(92% .084 155.995);--color-secondary-content:oklch(44% .119 151.328);--color-accent:oklch(68% .162 75.834);--color-accent-content:oklch(41% .112 45.904);--color-neutral:oklch(44% .011 73.639);--color-neutral-content:oklch(86% .005 56.366);--color-info:oklch(58% .158 241.966);--color-info-content:oklch(96% .059 95.617);--color-success:oklch(51% .096 186.391);--color-success-content:oklch(96% .059 95.617);--color-warning:oklch(64% .222 41.116);--color-warning-content:oklch(96% .059 95.617);--color-error:oklch(70% .191 22.216);--color-error-content:oklch(40% .123 38.172);--radius-selector:.25rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=cyberpunk]:checked),[data-theme=cyberpunk]{color-scheme:light;--color-base-100:oklch(94.51% .179 104.32);--color-base-200:oklch(91.51% .179 104.32);--color-base-300:oklch(85.51% .179 104.32);--color-base-content:oklch(0% 0 0);--color-primary:oklch(74.22% .209 6.35);--color-primary-content:oklch(14.844% .041 6.35);--color-secondary:oklch(83.33% .184 204.72);--color-secondary-content:oklch(16.666% .036 204.72);--color-accent:oklch(71.86% .217 310.43);--color-accent-content:oklch(14.372% .043 310.43);--color-neutral:oklch(23.04% .065 269.31);--color-neutral-content:oklch(94.51% .179 104.32);--color-info:oklch(72.06% .191 231.6);--color-info-content:oklch(0% 0 0);--color-success:oklch(64.8% .15 160);--color-success-content:oklch(0% 0 0);--color-warning:oklch(84.71% .199 83.87);--color-warning-content:oklch(0% 0 0);--color-error:oklch(71.76% .221 22.18);--color-error-content:oklch(0% 0 0);--radius-selector:0rem;--radius-field:0rem;--radius-box:0rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=valentine]:checked),[data-theme=valentine]{color-scheme:light;--color-base-100:oklch(97% .014 343.198);--color-base-200:oklch(94% .028 342.258);--color-base-300:oklch(89% .061 343.231);--color-base-content:oklch(52% .223 3.958);--color-primary:oklch(65% .241 354.308);--color-primary-content:oklch(100% 0 0);--color-secondary:oklch(62% .265 303.9);--color-secondary-content:oklch(97% .014 308.299);--color-accent:oklch(82% .111 230.318);--color-accent-content:oklch(39% .09 240.876);--color-neutral:oklch(40% .153 2.432);--color-neutral-content:oklch(89% .061 343.231);--color-info:oklch(86% .127 207.078);--color-info-content:oklch(44% .11 240.79);--color-success:oklch(84% .143 164.978);--color-success-content:oklch(43% .095 166.913);--color-warning:oklch(75% .183 55.934);--color-warning-content:oklch(26% .079 36.259);--color-error:oklch(63% .237 25.331);--color-error-content:oklch(97% .013 17.38);--radius-selector:1rem;--radius-field:2rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=halloween]:checked),[data-theme=halloween]{color-scheme:dark;--color-base-100:oklch(21% .006 56.043);--color-base-200:oklch(14% .004 49.25);--color-base-300:oklch(0% 0 0);--color-base-content:oklch(84.955% 0 0);--color-primary:oklch(77.48% .204 60.62);--color-primary-content:oklch(19.693% .004 196.779);--color-secondary:oklch(45.98% .248 305.03);--color-secondary-content:oklch(89.196% .049 305.03);--color-accent:oklch(64.8% .223 136.073);--color-accent-content:oklch(0% 0 0);--color-neutral:oklch(24.371% .046 65.681);--color-neutral-content:oklch(84.874% .009 65.681);--color-info:oklch(54.615% .215 262.88);--color-info-content:oklch(90.923% .043 262.88);--color-success:oklch(62.705% .169 149.213);--color-success-content:oklch(12.541% .033 149.213);--color-warning:oklch(66.584% .157 58.318);--color-warning-content:oklch(13.316% .031 58.318);--color-error:oklch(65.72% .199 27.33);--color-error-content:oklch(13.144% .039 27.33);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}:root:has(input.theme-controller[value=garden]:checked),[data-theme=garden]{color-scheme:light;--color-base-100:oklch(92.951% .002 17.197);--color-base-200:oklch(86.445% .002 17.197);--color-base-300:oklch(79.938% .001 17.197);--color-base-content:oklch(16.961% .001 17.32);--color-primary:oklch(62.45% .278 3.836);--color-primary-content:oklch(100% 0 0);--color-secondary:oklch(48.495% .11 355.095);--color-secondary-content:oklch(89.699% .022 355.095);--color-accent:oklch(56.273% .054 154.39);--color-accent-content:oklch(100% 0 0);--color-neutral:oklch(24.155% .049 89.07);--color-neutral-content:oklch(92.951% .002 17.197);--color-info:oklch(72.06% .191 231.6);--color-info-content:oklch(0% 0 0);--color-success:oklch(64.8% .15 160);--color-success-content:oklch(0% 0 0);--color-warning:oklch(84.71% .199 83.87);--color-warning-content:oklch(0% 0 0);--color-error:oklch(71.76% .221 22.18);--color-error-content:oklch(0% 0 0);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=forest]:checked),[data-theme=forest]{color-scheme:dark;--color-base-100:oklch(20.84% .008 17.911);--color-base-200:oklch(18.522% .007 17.911);--color-base-300:oklch(16.203% .007 17.911);--color-base-content:oklch(83.768% .001 17.911);--color-primary:oklch(68.628% .185 148.958);--color-primary-content:oklch(0% 0 0);--color-secondary:oklch(69.776% .135 168.327);--color-secondary-content:oklch(13.955% .027 168.327);--color-accent:oklch(70.628% .119 185.713);--color-accent-content:oklch(14.125% .023 185.713);--color-neutral:oklch(30.698% .039 171.364);--color-neutral-content:oklch(86.139% .007 171.364);--color-info:oklch(72.06% .191 231.6);--color-info-content:oklch(0% 0 0);--color-success:oklch(64.8% .15 160);--color-success-content:oklch(0% 0 0);--color-warning:oklch(84.71% .199 83.87);--color-warning-content:oklch(0% 0 0);--color-error:oklch(71.76% .221 22.18);--color-error-content:oklch(0% 0 0);--radius-selector:1rem;--radius-field:2rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=aqua]:checked),[data-theme=aqua]{color-scheme:dark;--color-base-100:oklch(37% .146 265.522);--color-base-200:oklch(28% .091 267.935);--color-base-300:oklch(22% .091 267.935);--color-base-content:oklch(90% .058 230.902);--color-primary:oklch(85.661% .144 198.645);--color-primary-content:oklch(40.124% .068 197.603);--color-secondary:oklch(60.682% .108 309.782);--color-secondary-content:oklch(96% .016 293.756);--color-accent:oklch(93.426% .102 94.555);--color-accent-content:oklch(18.685% .02 94.555);--color-neutral:oklch(27% .146 265.522);--color-neutral-content:oklch(80% .146 265.522);--color-info:oklch(54.615% .215 262.88);--color-info-content:oklch(90.923% .043 262.88);--color-success:oklch(62.705% .169 149.213);--color-success-content:oklch(12.541% .033 149.213);--color-warning:oklch(66.584% .157 58.318);--color-warning-content:oklch(27% .077 45.635);--color-error:oklch(73.95% .19 27.33);--color-error-content:oklch(14.79% .038 27.33);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}:root:has(input.theme-controller[value=lofi]:checked),[data-theme=lofi]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(97% 0 0);--color-base-300:oklch(94% 0 0);--color-base-content:oklch(0% 0 0);--color-primary:oklch(15.906% 0 0);--color-primary-content:oklch(100% 0 0);--color-secondary:oklch(21.455% .001 17.278);--color-secondary-content:oklch(100% 0 0);--color-accent:oklch(26.861% 0 0);--color-accent-content:oklch(100% 0 0);--color-neutral:oklch(0% 0 0);--color-neutral-content:oklch(100% 0 0);--color-info:oklch(79.54% .103 205.9);--color-info-content:oklch(15.908% .02 205.9);--color-success:oklch(90.13% .153 164.14);--color-success-content:oklch(18.026% .03 164.14);--color-warning:oklch(88.37% .135 79.94);--color-warning-content:oklch(17.674% .027 79.94);--color-error:oklch(78.66% .15 28.47);--color-error-content:oklch(15.732% .03 28.47);--radius-selector:2rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=pastel]:checked),[data-theme=pastel]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(98.462% .001 247.838);--color-base-300:oklch(92.462% .001 247.838);--color-base-content:oklch(20% 0 0);--color-primary:oklch(90% .063 306.703);--color-primary-content:oklch(49% .265 301.924);--color-secondary:oklch(89% .058 10.001);--color-secondary-content:oklch(51% .222 16.935);--color-accent:oklch(90% .093 164.15);--color-accent-content:oklch(50% .118 165.612);--color-neutral:oklch(55% .046 257.417);--color-neutral-content:oklch(92% .013 255.508);--color-info:oklch(86% .127 207.078);--color-info-content:oklch(52% .105 223.128);--color-success:oklch(87% .15 154.449);--color-success-content:oklch(52% .154 150.069);--color-warning:oklch(83% .128 66.29);--color-warning-content:oklch(55% .195 38.402);--color-error:oklch(80% .114 19.571);--color-error-content:oklch(50% .213 27.518);--radius-selector:1rem;--radius-field:2rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:2px;--depth:0;--noise:0}:root:has(input.theme-controller[value=fantasy]:checked),[data-theme=fantasy]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(93% 0 0);--color-base-300:oklch(86% 0 0);--color-base-content:oklch(27.807% .029 256.847);--color-primary:oklch(37.45% .189 325.02);--color-primary-content:oklch(87.49% .037 325.02);--color-secondary:oklch(53.92% .162 241.36);--color-secondary-content:oklch(90.784% .032 241.36);--color-accent:oklch(75.98% .204 56.72);--color-accent-content:oklch(15.196% .04 56.72);--color-neutral:oklch(27.807% .029 256.847);--color-neutral-content:oklch(85.561% .005 256.847);--color-info:oklch(72.06% .191 231.6);--color-info-content:oklch(0% 0 0);--color-success:oklch(64.8% .15 160);--color-success-content:oklch(0% 0 0);--color-warning:oklch(84.71% .199 83.87);--color-warning-content:oklch(0% 0 0);--color-error:oklch(71.76% .221 22.18);--color-error-content:oklch(0% 0 0);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}:root:has(input.theme-controller[value=wireframe]:checked),[data-theme=wireframe]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(97% 0 0);--color-base-300:oklch(94% 0 0);--color-base-content:oklch(20% 0 0);--color-primary:oklch(87% 0 0);--color-primary-content:oklch(26% 0 0);--color-secondary:oklch(87% 0 0);--color-secondary-content:oklch(26% 0 0);--color-accent:oklch(87% 0 0);--color-accent-content:oklch(26% 0 0);--color-neutral:oklch(87% 0 0);--color-neutral-content:oklch(26% 0 0);--color-info:oklch(44% .11 240.79);--color-info-content:oklch(90% .058 230.902);--color-success:oklch(43% .095 166.913);--color-success-content:oklch(90% .093 164.15);--color-warning:oklch(47% .137 46.201);--color-warning-content:oklch(92% .12 95.746);--color-error:oklch(44% .177 26.899);--color-error-content:oklch(88% .062 18.334);--radius-selector:0rem;--radius-field:.25rem;--radius-box:.25rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=black]:checked),[data-theme=black]{color-scheme:dark;--color-base-100:oklch(0% 0 0);--color-base-200:oklch(19% 0 0);--color-base-300:oklch(22% 0 0);--color-base-content:oklch(87.609% 0 0);--color-primary:oklch(35% 0 0);--color-primary-content:oklch(100% 0 0);--color-secondary:oklch(35% 0 0);--color-secondary-content:oklch(100% 0 0);--color-accent:oklch(35% 0 0);--color-accent-content:oklch(100% 0 0);--color-neutral:oklch(35% 0 0);--color-neutral-content:oklch(100% 0 0);--color-info:oklch(45.201% .313 264.052);--color-info-content:oklch(89.04% .062 264.052);--color-success:oklch(51.975% .176 142.495);--color-success-content:oklch(90.395% .035 142.495);--color-warning:oklch(96.798% .211 109.769);--color-warning-content:oklch(19.359% .042 109.769);--color-error:oklch(62.795% .257 29.233);--color-error-content:oklch(12.559% .051 29.233);--radius-selector:0rem;--radius-field:0rem;--radius-box:0rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=luxury]:checked),[data-theme=luxury]{color-scheme:dark;--color-base-100:oklch(14.076% .004 285.822);--color-base-200:oklch(20.219% .004 308.229);--color-base-300:oklch(23.219% .004 308.229);--color-base-content:oklch(75.687% .123 76.89);--color-primary:oklch(100% 0 0);--color-primary-content:oklch(20% 0 0);--color-secondary:oklch(27.581% .064 261.069);--color-secondary-content:oklch(85.516% .012 261.069);--color-accent:oklch(36.674% .051 338.825);--color-accent-content:oklch(87.334% .01 338.825);--color-neutral:oklch(24.27% .057 59.825);--color-neutral-content:oklch(93.203% .089 90.861);--color-info:oklch(79.061% .121 237.133);--color-info-content:oklch(15.812% .024 237.133);--color-success:oklch(78.119% .192 132.154);--color-success-content:oklch(15.623% .038 132.154);--color-warning:oklch(86.127% .136 102.891);--color-warning-content:oklch(17.225% .027 102.891);--color-error:oklch(71.753% .176 22.568);--color-error-content:oklch(14.35% .035 22.568);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}:root:has(input.theme-controller[value=dracula]:checked),[data-theme=dracula]{color-scheme:dark;--color-base-100:oklch(28.822% .022 277.508);--color-base-200:oklch(26.805% .02 277.508);--color-base-300:oklch(24.787% .019 277.508);--color-base-content:oklch(97.747% .007 106.545);--color-primary:oklch(75.461% .183 346.812);--color-primary-content:oklch(15.092% .036 346.812);--color-secondary:oklch(74.202% .148 301.883);--color-secondary-content:oklch(14.84% .029 301.883);--color-accent:oklch(83.392% .124 66.558);--color-accent-content:oklch(16.678% .024 66.558);--color-neutral:oklch(39.445% .032 275.524);--color-neutral-content:oklch(87.889% .006 275.524);--color-info:oklch(88.263% .093 212.846);--color-info-content:oklch(17.652% .018 212.846);--color-success:oklch(87.099% .219 148.024);--color-success-content:oklch(17.419% .043 148.024);--color-warning:oklch(95.533% .134 112.757);--color-warning-content:oklch(19.106% .026 112.757);--color-error:oklch(68.22% .206 24.43);--color-error-content:oklch(13.644% .041 24.43);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=cmyk]:checked),[data-theme=cmyk]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(95% 0 0);--color-base-300:oklch(90% 0 0);--color-base-content:oklch(20% 0 0);--color-primary:oklch(71.772% .133 239.443);--color-primary-content:oklch(14.354% .026 239.443);--color-secondary:oklch(64.476% .202 359.339);--color-secondary-content:oklch(12.895% .04 359.339);--color-accent:oklch(94.228% .189 105.306);--color-accent-content:oklch(18.845% .037 105.306);--color-neutral:oklch(21.778% 0 0);--color-neutral-content:oklch(84.355% 0 0);--color-info:oklch(68.475% .094 217.284);--color-info-content:oklch(13.695% .018 217.284);--color-success:oklch(46.949% .162 321.406);--color-success-content:oklch(89.389% .032 321.406);--color-warning:oklch(71.236% .159 52.023);--color-warning-content:oklch(14.247% .031 52.023);--color-error:oklch(62.013% .208 28.717);--color-error-content:oklch(12.402% .041 28.717);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=autumn]:checked),[data-theme=autumn]{color-scheme:light;--color-base-100:oklch(95.814% 0 0);--color-base-200:oklch(89.107% 0 0);--color-base-300:oklch(82.4% 0 0);--color-base-content:oklch(19.162% 0 0);--color-primary:oklch(40.723% .161 17.53);--color-primary-content:oklch(88.144% .032 17.53);--color-secondary:oklch(61.676% .169 23.865);--color-secondary-content:oklch(12.335% .033 23.865);--color-accent:oklch(73.425% .094 60.729);--color-accent-content:oklch(14.685% .018 60.729);--color-neutral:oklch(54.367% .037 51.902);--color-neutral-content:oklch(90.873% .007 51.902);--color-info:oklch(69.224% .097 207.284);--color-info-content:oklch(13.844% .019 207.284);--color-success:oklch(60.995% .08 174.616);--color-success-content:oklch(12.199% .016 174.616);--color-warning:oklch(70.081% .164 56.844);--color-warning-content:oklch(14.016% .032 56.844);--color-error:oklch(53.07% .241 24.16);--color-error-content:oklch(90.614% .048 24.16);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}:root:has(input.theme-controller[value=business]:checked),[data-theme=business]{color-scheme:dark;--color-base-100:oklch(24.353% 0 0);--color-base-200:oklch(22.648% 0 0);--color-base-300:oklch(20.944% 0 0);--color-base-content:oklch(84.87% 0 0);--color-primary:oklch(41.703% .099 251.473);--color-primary-content:oklch(88.34% .019 251.473);--color-secondary:oklch(64.092% .027 229.389);--color-secondary-content:oklch(12.818% .005 229.389);--color-accent:oklch(67.271% .167 35.791);--color-accent-content:oklch(13.454% .033 35.791);--color-neutral:oklch(27.441% .013 253.041);--color-neutral-content:oklch(85.488% .002 253.041);--color-info:oklch(62.616% .143 240.033);--color-info-content:oklch(12.523% .028 240.033);--color-success:oklch(70.226% .094 156.596);--color-success-content:oklch(14.045% .018 156.596);--color-warning:oklch(77.482% .115 81.519);--color-warning-content:oklch(15.496% .023 81.519);--color-error:oklch(51.61% .146 29.674);--color-error-content:oklch(90.322% .029 29.674);--radius-selector:0rem;--radius-field:.25rem;--radius-box:.25rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=acid]:checked),[data-theme=acid]{color-scheme:light;--color-base-100:oklch(98% 0 0);--color-base-200:oklch(95% 0 0);--color-base-300:oklch(91% 0 0);--color-base-content:oklch(0% 0 0);--color-primary:oklch(71.9% .357 330.759);--color-primary-content:oklch(14.38% .071 330.759);--color-secondary:oklch(73.37% .224 48.25);--color-secondary-content:oklch(14.674% .044 48.25);--color-accent:oklch(92.78% .264 122.962);--color-accent-content:oklch(18.556% .052 122.962);--color-neutral:oklch(21.31% .128 278.68);--color-neutral-content:oklch(84.262% .025 278.68);--color-info:oklch(60.72% .227 252.05);--color-info-content:oklch(12.144% .045 252.05);--color-success:oklch(85.72% .266 158.53);--color-success-content:oklch(17.144% .053 158.53);--color-warning:oklch(91.01% .212 100.5);--color-warning-content:oklch(18.202% .042 100.5);--color-error:oklch(64.84% .293 29.349);--color-error-content:oklch(12.968% .058 29.349);--radius-selector:1rem;--radius-field:1rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}:root:has(input.theme-controller[value=lemonade]:checked),[data-theme=lemonade]{color-scheme:light;--color-base-100:oklch(98.71% .02 123.72);--color-base-200:oklch(91.8% .018 123.72);--color-base-300:oklch(84.89% .017 123.72);--color-base-content:oklch(19.742% .004 123.72);--color-primary:oklch(58.92% .199 134.6);--color-primary-content:oklch(11.784% .039 134.6);--color-secondary:oklch(77.75% .196 111.09);--color-secondary-content:oklch(15.55% .039 111.09);--color-accent:oklch(85.39% .201 100.73);--color-accent-content:oklch(17.078% .04 100.73);--color-neutral:oklch(30.98% .075 108.6);--color-neutral-content:oklch(86.196% .015 108.6);--color-info:oklch(86.19% .047 224.14);--color-info-content:oklch(17.238% .009 224.14);--color-success:oklch(86.19% .047 157.85);--color-success-content:oklch(17.238% .009 157.85);--color-warning:oklch(86.19% .047 102.15);--color-warning-content:oklch(17.238% .009 102.15);--color-error:oklch(86.19% .047 25.85);--color-error-content:oklch(17.238% .009 25.85);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=night]:checked),[data-theme=night]{color-scheme:dark;--color-base-100:oklch(20.768% .039 265.754);--color-base-200:oklch(19.314% .037 265.754);--color-base-300:oklch(17.86% .034 265.754);--color-base-content:oklch(84.153% .007 265.754);--color-primary:oklch(75.351% .138 232.661);--color-primary-content:oklch(15.07% .027 232.661);--color-secondary:oklch(68.011% .158 276.934);--color-secondary-content:oklch(13.602% .031 276.934);--color-accent:oklch(72.36% .176 350.048);--color-accent-content:oklch(14.472% .035 350.048);--color-neutral:oklch(27.949% .036 260.03);--color-neutral-content:oklch(85.589% .007 260.03);--color-info:oklch(68.455% .148 237.251);--color-info-content:oklch(0% 0 0);--color-success:oklch(78.452% .132 181.911);--color-success-content:oklch(15.69% .026 181.911);--color-warning:oklch(83.242% .139 82.95);--color-warning-content:oklch(16.648% .027 82.95);--color-error:oklch(71.785% .17 13.118);--color-error-content:oklch(14.357% .034 13.118);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=coffee]:checked),[data-theme=coffee]{color-scheme:dark;--color-base-100:oklch(24% .023 329.708);--color-base-200:oklch(21% .021 329.708);--color-base-300:oklch(16% .019 329.708);--color-base-content:oklch(72.354% .092 79.129);--color-primary:oklch(71.996% .123 62.756);--color-primary-content:oklch(14.399% .024 62.756);--color-secondary:oklch(34.465% .029 199.194);--color-secondary-content:oklch(86.893% .005 199.194);--color-accent:oklch(42.621% .074 224.389);--color-accent-content:oklch(88.524% .014 224.389);--color-neutral:oklch(16.51% .015 326.261);--color-neutral-content:oklch(83.302% .003 326.261);--color-info:oklch(79.49% .063 184.558);--color-info-content:oklch(15.898% .012 184.558);--color-success:oklch(74.722% .072 131.116);--color-success-content:oklch(14.944% .014 131.116);--color-warning:oklch(88.15% .14 87.722);--color-warning-content:oklch(17.63% .028 87.722);--color-error:oklch(77.318% .128 31.871);--color-error-content:oklch(15.463% .025 31.871);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=winter]:checked),[data-theme=winter]{color-scheme:light;--color-base-100:oklch(100% 0 0);--color-base-200:oklch(97.466% .011 259.822);--color-base-300:oklch(93.268% .016 262.751);--color-base-content:oklch(41.886% .053 255.824);--color-primary:oklch(56.86% .255 257.57);--color-primary-content:oklch(91.372% .051 257.57);--color-secondary:oklch(42.551% .161 282.339);--color-secondary-content:oklch(88.51% .032 282.339);--color-accent:oklch(59.939% .191 335.171);--color-accent-content:oklch(11.988% .038 335.171);--color-neutral:oklch(19.616% .063 257.651);--color-neutral-content:oklch(83.923% .012 257.651);--color-info:oklch(88.127% .085 214.515);--color-info-content:oklch(17.625% .017 214.515);--color-success:oklch(80.494% .077 197.823);--color-success-content:oklch(16.098% .015 197.823);--color-warning:oklch(89.172% .045 71.47);--color-warning-content:oklch(17.834% .009 71.47);--color-error:oklch(73.092% .11 20.076);--color-error-content:oklch(14.618% .022 20.076);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=dim]:checked),[data-theme=dim]{color-scheme:dark;--color-base-100:oklch(30.857% .023 264.149);--color-base-200:oklch(28.036% .019 264.182);--color-base-300:oklch(26.346% .018 262.177);--color-base-content:oklch(82.901% .031 222.959);--color-primary:oklch(86.133% .141 139.549);--color-primary-content:oklch(17.226% .028 139.549);--color-secondary:oklch(73.375% .165 35.353);--color-secondary-content:oklch(14.675% .033 35.353);--color-accent:oklch(74.229% .133 311.379);--color-accent-content:oklch(14.845% .026 311.379);--color-neutral:oklch(24.731% .02 264.094);--color-neutral-content:oklch(82.901% .031 222.959);--color-info:oklch(86.078% .142 206.182);--color-info-content:oklch(17.215% .028 206.182);--color-success:oklch(86.171% .142 166.534);--color-success-content:oklch(17.234% .028 166.534);--color-warning:oklch(86.163% .142 94.818);--color-warning-content:oklch(17.232% .028 94.818);--color-error:oklch(82.418% .099 33.756);--color-error-content:oklch(16.483% .019 33.756);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=nord]:checked),[data-theme=nord]{color-scheme:light;--color-base-100:oklch(95.127% .007 260.731);--color-base-200:oklch(93.299% .01 261.788);--color-base-300:oklch(89.925% .016 262.749);--color-base-content:oklch(32.437% .022 264.182);--color-primary:oklch(59.435% .077 254.027);--color-primary-content:oklch(11.887% .015 254.027);--color-secondary:oklch(69.651% .059 248.687);--color-secondary-content:oklch(13.93% .011 248.687);--color-accent:oklch(77.464% .062 217.469);--color-accent-content:oklch(15.492% .012 217.469);--color-neutral:oklch(45.229% .035 264.131);--color-neutral-content:oklch(89.925% .016 262.749);--color-info:oklch(69.207% .062 332.664);--color-info-content:oklch(13.841% .012 332.664);--color-success:oklch(76.827% .074 131.063);--color-success-content:oklch(15.365% .014 131.063);--color-warning:oklch(85.486% .089 84.093);--color-warning-content:oklch(17.097% .017 84.093);--color-error:oklch(60.61% .12 15.341);--color-error-content:oklch(12.122% .024 15.341);--radius-selector:1rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=sunset]:checked),[data-theme=sunset]{color-scheme:dark;--color-base-100:oklch(22% .019 237.69);--color-base-200:oklch(20% .019 237.69);--color-base-300:oklch(18% .019 237.69);--color-base-content:oklch(77.383% .043 245.096);--color-primary:oklch(74.703% .158 39.947);--color-primary-content:oklch(14.94% .031 39.947);--color-secondary:oklch(72.537% .177 2.72);--color-secondary-content:oklch(14.507% .035 2.72);--color-accent:oklch(71.294% .166 299.844);--color-accent-content:oklch(14.258% .033 299.844);--color-neutral:oklch(26% .019 237.69);--color-neutral-content:oklch(70% .019 237.69);--color-info:oklch(85.559% .085 206.015);--color-info-content:oklch(17.111% .017 206.015);--color-success:oklch(85.56% .085 144.778);--color-success-content:oklch(17.112% .017 144.778);--color-warning:oklch(85.569% .084 74.427);--color-warning-content:oklch(17.113% .016 74.427);--color-error:oklch(85.511% .078 16.886);--color-error-content:oklch(17.102% .015 16.886);--radius-selector:1rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:0;--noise:0}:root:has(input.theme-controller[value=caramellatte]:checked),[data-theme=caramellatte]{color-scheme:light;--color-base-100:oklch(98% .016 73.684);--color-base-200:oklch(95% .038 75.164);--color-base-300:oklch(90% .076 70.697);--color-base-content:oklch(40% .123 38.172);--color-primary:oklch(0% 0 0);--color-primary-content:oklch(100% 0 0);--color-secondary:oklch(22.45% .075 37.85);--color-secondary-content:oklch(90% .076 70.697);--color-accent:oklch(46.44% .111 37.85);--color-accent-content:oklch(90% .076 70.697);--color-neutral:oklch(55% .195 38.402);--color-neutral-content:oklch(98% .016 73.684);--color-info:oklch(42% .199 265.638);--color-info-content:oklch(90% .076 70.697);--color-success:oklch(43% .095 166.913);--color-success-content:oklch(90% .076 70.697);--color-warning:oklch(82% .189 84.429);--color-warning-content:oklch(41% .112 45.904);--color-error:oklch(70% .191 22.216);--color-error-content:oklch(39% .141 25.723);--radius-selector:2rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:2px;--depth:1;--noise:1}:root:has(input.theme-controller[value=abyss]:checked),[data-theme=abyss]{color-scheme:dark;--color-base-100:oklch(20% .08 209);--color-base-200:oklch(15% .08 209);--color-base-300:oklch(10% .08 209);--color-base-content:oklch(90% .076 70.697);--color-primary:oklch(92% .2653 125);--color-primary-content:oklch(50% .2653 125);--color-secondary:oklch(83.27% .0764 298.3);--color-secondary-content:oklch(43.27% .0764 298.3);--color-accent:oklch(43% 0 0);--color-accent-content:oklch(98% 0 0);--color-neutral:oklch(30% .08 209);--color-neutral-content:oklch(90% .076 70.697);--color-info:oklch(74% .16 232.661);--color-info-content:oklch(29% .066 243.157);--color-success:oklch(79% .209 151.711);--color-success-content:oklch(26% .065 152.934);--color-warning:oklch(84.8% .1962 84.62);--color-warning-content:oklch(44.8% .1962 84.62);--color-error:oklch(65% .1985 24.22);--color-error-content:oklch(27% .1985 24.22);--radius-selector:2rem;--radius-field:.25rem;--radius-box:.5rem;--size-selector:.25rem;--size-field:.25rem;--border:1px;--depth:1;--noise:0}:root:has(input.theme-controller[value=silk]:checked),[data-theme=silk]{color-scheme:light;--color-base-100:oklch(97% .0035 67.78);--color-base-200:oklch(95% .0081 61.42);--color-base-300:oklch(90% .0081 61.42);--color-base-content:oklch(40% .0081 61.42);--color-primary:oklch(23.27% .0249 284.3);--color-primary-content:oklch(94.22% .2505 117.44);--color-secondary:oklch(23.27% .0249 284.3);--color-secondary-content:oklch(73.92% .2135 50.94);--color-accent:oklch(23.27% .0249 284.3);--color-accent-content:oklch(88.92% .2061 189.9);--color-neutral:oklch(20% 0 0);--color-neutral-content:oklch(80% .0081 61.42);--color-info:oklch(80.39% .1148 241.68);--color-info-content:oklch(30.39% .1148 241.68);--color-success:oklch(83.92% .0901 136.87);--color-success-content:oklch(23.92% .0901 136.87);--color-warning:oklch(83.92% .1085 80);--color-warning-content:oklch(43.92% .1085 80);--color-error:oklch(75.1% .1814 22.37);--color-error-content:oklch(35.1% .1814 22.37);--radius-selector:2rem;--radius-field:.5rem;--radius-box:1rem;--size-selector:.25rem;--size-field:.25rem;--border:2px;--depth:1;--noise:0}:root{--fx-noise:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cfilter id='a'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='1.34' numOctaves='4' stitchTiles='stitch'%3E%3C/feTurbulence%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23a)' opacity='0.2'%3E%3C/rect%3E%3C/svg%3E");scrollbar-color:currentColor #0000}@supports (color:color-mix(in lab,red,red)){:root{scrollbar-color:color-mix(in oklch,currentColor 35%,#0000)#0000}}@property --radialprogress{syntax: "<percentage>"; inherits: true; initial-value: 0%;}:root:not(span){overflow:var(--page-overflow)}:root{--page-scroll-bg-on:linear-gradient(var(--root-bg),var(--root-bg))var(--root-bg)}@supports (color:color-mix(in lab,red,red)){:root{--page-scroll-bg-on:linear-gradient(var(--root-bg),var(--root-bg))color-mix(in srgb,var(--root-bg),oklch(0% 0 0) calc(var(--page-has-backdrop,0)*40%))}}:root{--page-scroll-transition-on:background-color .3s ease-out;transition:var(--page-scroll-transition);scrollbar-gutter:var(--page-scroll-gutter,unset);scrollbar-gutter:if(style(--page-has-scroll: 1): var(--page-scroll-gutter,unset); else: unset)}:root:root{background:var(--page-scroll-bg,var(--root-bg,var(--color-base-100)))}@keyframes set-page-has-scroll{0%,to{--page-has-scroll:1}}:root,[data-theme]{background-color:var(--root-bg,var(--color-base-100));color:var(--color-base-content)}:where(:root,[data-theme]){--root-bg:var(--color-base-100)}}@layer components;@layer utilities{@layer daisyui.l1.l2.l3{.diff{webkit-user-select:none;-webkit-user-select:none;user-select:none;direction:ltr;grid-template-rows:1fr 1.8rem 1fr;grid-template-columns:auto 1fr;width:100%;display:grid;position:relative;overflow:hidden;container-type:inline-size}.diff:focus-visible,.diff:has(.diff-item-1:focus-visible){outline-style:var(--tw-outline-style);outline-offset:1px;outline-width:2px;outline-color:var(--color-base-content)}.diff:focus-visible .diff-resizer{min-width:95cqi;max-width:95cqi}.diff:has(.diff-item-1:focus-visible){outline-style:var(--tw-outline-style);outline-offset:1px;outline-width:2px}.diff:has(.diff-item-1:focus-visible) .diff-resizer{min-width:5cqi;max-width:5cqi}@supports (-webkit-overflow-scrolling:touch) and (overflow:-webkit-paged-x){.diff:focus .diff-resizer{min-width:5cqi;max-width:5cqi}.diff:has(.diff-item-1:focus) .diff-resizer{min-width:95cqi;max-width:95cqi}}.modal{pointer-events:none;visibility:hidden;width:100%;max-width:none;height:100%;max-height:none;color:inherit;transition:visibility .3s allow-discrete,background-color .3s ease-out,opacity .1s ease-out;overscroll-behavior:contain;z-index:999;scrollbar-gutter:auto;background-color:#0000;place-items:center;margin:0;padding:0;display:grid;position:fixed;inset:0;overflow:clip}.modal::backdrop{display:none}.tooltip{--tt-bg:var(--color-neutral);--tt-off: calc(100% + .5rem) ;--tt-tail: calc(100% + 1px + .25rem) ;display:inline-block;position:relative}.tooltip>.tooltip-content,.tooltip[data-tip]:before{border-radius:var(--radius-field);text-align:center;white-space:normal;max-width:20rem;color:var(--color-neutral-content);opacity:0;background-color:var(--tt-bg);pointer-events:none;z-index:2;--tw-content:attr(data-tip);content:var(--tw-content);width:max-content;padding-block:.25rem;padding-inline:.5rem;font-size:.875rem;line-height:1.25;position:absolute}.tooltip:after{opacity:0;background-color:var(--tt-bg);content:"";pointer-events:none;--mask-tooltip:url("data:image/svg+xml,%3Csvg width='10' height='4' viewBox='0 0 8 4' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0.500009 1C3.5 1 3.00001 4 5.00001 4C7 4 6.5 1 9.5 1C10 1 10 0.499897 10 0H0C-1.99338e-08 0.5 0 1 0.500009 1Z' fill='black'/%3E%3C/svg%3E%0A");width:.625rem;height:.25rem;-webkit-mask-position:-1px 0;mask-position:-1px 0;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-image:var(--mask-tooltip);mask-image:var(--mask-tooltip);display:block;position:absolute}@media(prefers-reduced-motion:no-preference){.tooltip>.tooltip-content,.tooltip[data-tip]:before,.tooltip:after{transition:opacity .2s cubic-bezier(.4,0,.2,1) 75ms,transform .2s cubic-bezier(.4,0,.2,1) 75ms}}:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))>.tooltip-content,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))[data-tip]:before,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible)):after{opacity:1;--tt-pos:0rem}@media(prefers-reduced-motion:no-preference){:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))>.tooltip-content,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible))[data-tip]:before,:is(.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))).tooltip-open,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):hover,.tooltip:is([data-tip]:not([data-tip=""]),:has(.tooltip-content:not(:empty))):has(:focus-visible)):after{transition:opacity .2s cubic-bezier(.4,0,.2,1),transform .2s cubic-bezier(.4,0,.2,1)}}.tab{cursor:pointer;appearance:none;text-align:center;webkit-user-select:none;-webkit-user-select:none;user-select:none;flex-wrap:wrap;justify-content:center;align-items:center;display:inline-flex;position:relative}@media(hover:hover){.tab:hover{color:var(--color-base-content)}}.tab{--tab-p:.75rem;--tab-bg:var(--color-base-100);--tab-border-color:var(--color-base-300);--tab-radius-ss:0;--tab-radius-se:0;--tab-radius-es:0;--tab-radius-ee:0;--tab-order:0;--tab-radius-min:calc(.75rem - var(--border));--tab-radius-limit:min(var(--radius-field),var(--tab-radius-min));--tab-radius-grad:#0000 calc(69% - var(--border)),var(--tab-border-color)calc(69% - var(--border) + .25px),var(--tab-border-color)69%,var(--tab-bg) calc(69% + .25px) ;order:var(--tab-order);height:var(--tab-height);padding-inline:var(--tab-p);border-color:#0000;font-size:.875rem}.tab:is(input[type=radio]){min-width:fit-content}.tab:is(input[type=radio]):after{--tw-content:attr(aria-label);content:var(--tw-content)}.tab:is(label){position:relative}.tab:is(label) input{cursor:pointer;appearance:none;opacity:0;position:absolute;inset:0}:is(.tab:checked,.tab:is(label:has(:checked)),.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content{display:block}.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.tab:not(:checked,label:has(:checked),:hover,.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){color:color-mix(in oklab,var(--color-base-content)50%,transparent)}}.tab:not(input):empty{cursor:default;flex-grow:1}.tab:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.tab:focus{outline-offset:2px;outline:2px solid #0000}}.tab:focus-visible,.tab:is(label:has(:checked:focus-visible)){outline-offset:-5px;outline:2px solid}.tab[disabled]{pointer-events:none;opacity:.4}.menu{--menu-active-fg:var(--color-neutral-content);--menu-active-bg:var(--color-neutral);flex-flow:column wrap;width:fit-content;padding:.5rem;font-size:.875rem;display:flex}.menu :where(li ul){white-space:nowrap;margin-inline-start:1rem;padding-inline-start:.5rem;position:relative}.menu :where(li ul):before{background-color:var(--color-base-content);opacity:.1;width:var(--border);content:"";inset-inline-start:0;position:absolute;top:.75rem;bottom:.75rem}.menu :where(li>.menu-dropdown:not(.menu-dropdown-show)){display:none}.menu :where(li:not(.menu-title)>:not(ul,details,.menu-title,.btn)),.menu :where(li:not(.menu-title)>details>summary:not(.menu-title)){border-radius:var(--radius-field);text-align:start;text-wrap:balance;-webkit-user-select:none;user-select:none;grid-auto-columns:minmax(auto,max-content) auto max-content;grid-auto-flow:column;align-content:flex-start;align-items:center;gap:.5rem;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:grid}.menu :where(li>details>summary){--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.menu :where(li>details>summary){outline-offset:2px;outline:2px solid #0000}}.menu :where(li>details>summary)::-webkit-details-marker{display:none}:is(.menu :where(li>details>summary),.menu :where(li>.menu-dropdown-toggle)):after{content:"";transform-origin:50%;pointer-events:none;justify-self:flex-end;width:.375rem;height:.375rem;transition-property:rotate,translate;transition-duration:.2s;display:block;translate:0 -1px;rotate:-135deg;box-shadow:inset 2px 2px}.menu details{interpolate-size:allow-keywords;overflow:hidden}.menu details::details-content{block-size:0}@media(prefers-reduced-motion:no-preference){.menu details::details-content{transition-behavior:allow-discrete;transition-property:block-size,content-visibility;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}}.menu details[open]::details-content{block-size:auto}.menu :where(li>details[open]>summary):after,.menu :where(li>.menu-dropdown-toggle.menu-dropdown-show):after{translate:0 1px;rotate:45deg}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{background-color:color-mix(in oklab,var(--color-base-content)10%,transparent)}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{color:var(--color-base-content);--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn).menu-focus,.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title),li:not(.menu-title,.disabled)>details>summary:not(.menu-title)):not(.menu-active,:active,.btn):focus-visible{outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){background-color:color-mix(in oklab,var(--color-base-content)10%,transparent)}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){outline-offset:2px;outline:2px solid #0000}}.menu :where(li:not(.menu-title,.disabled)>:not(ul,details,.menu-title):not(.menu-active,:active,.btn):hover,li:not(.menu-title,.disabled)>details>summary:not(.menu-title):not(.menu-active,:active,.btn):hover){box-shadow:inset 0 1px #00000003,inset 0 -1px #ffffff03}.menu :where(li:empty){background-color:var(--color-base-content);opacity:.1;height:1px;margin:.5rem 1rem}.menu :where(li){flex-flow:column wrap;flex-shrink:0;align-items:stretch;display:flex;position:relative}.menu :where(li) .badge{justify-self:flex-end}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{outline-offset:2px;outline:2px solid #0000}}.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active{color:var(--menu-active-fg);background-color:var(--menu-active-bg);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise)}:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):not(:is(.menu :where(li)>:not(ul,.menu-title,details,.btn):active,.menu :where(li)>:not(ul,.menu-title,details,.btn).menu-active,.menu :where(li)>details>summary:active):active){box-shadow:0 2px calc(var(--depth)*3px) -2px var(--menu-active-bg)}.menu :where(li).menu-disabled{pointer-events:none;color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.menu :where(li).menu-disabled{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}}.menu .dropdown:focus-within .menu-dropdown-toggle:after{translate:0 1px;rotate:45deg}.menu .dropdown-content{margin-top:.5rem;padding:.5rem}.menu .dropdown-content:before{display:none}.dropdown{position-area:var(--anchor-v,bottom)var(--anchor-h,span-right);display:inline-block;position:relative}.dropdown>:not(:has(~[class*=dropdown-content])):focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.dropdown>:not(:has(~[class*=dropdown-content])):focus{outline-offset:2px;outline:2px solid #0000}}.dropdown .dropdown-content{position:absolute}.dropdown.dropdown-close .dropdown-content,.dropdown:not(details,.dropdown-open,.dropdown-hover:hover,:focus-within) .dropdown-content,.dropdown.dropdown-hover:not(:hover) [tabindex]:first-child:focus:not(:focus-visible)~.dropdown-content{transform-origin:top;opacity:0;display:none;scale:95%}.dropdown[popover],.dropdown .dropdown-content{z-index:999}@media(prefers-reduced-motion:no-preference){.dropdown[popover],.dropdown .dropdown-content{transition-behavior:allow-discrete;transition-property:opacity,scale,display;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1);animation:.2s dropdown}}@starting-style{.dropdown[popover],.dropdown .dropdown-content{opacity:0;scale:95%}}:is(.dropdown:not(.dropdown-close).dropdown-open,.dropdown:not(.dropdown-close):not(.dropdown-hover):focus,.dropdown:not(.dropdown-close):focus-within)>[tabindex]:first-child{pointer-events:none}:is(.dropdown:not(.dropdown-close).dropdown-open,.dropdown:not(.dropdown-close):not(.dropdown-hover):focus,.dropdown:not(.dropdown-close):focus-within) .dropdown-content,.dropdown:not(.dropdown-close).dropdown-hover:hover .dropdown-content{opacity:1;scale:100%}.dropdown:is(details) summary::-webkit-details-marker{display:none}.dropdown:where([popover]){background:0 0}.dropdown[popover]{color:inherit;position:fixed}@supports not (position-area:bottom){.dropdown[popover]{margin:auto}.dropdown[popover].dropdown-close{transform-origin:top;opacity:0;display:none;scale:95%}.dropdown[popover].dropdown-open:not(:popover-open){transform-origin:top;opacity:0;display:none;scale:95%}.dropdown[popover]::backdrop{background-color:oklab(0% none none/.3)}}:is(.dropdown[popover].dropdown-close,.dropdown[popover]:not(.dropdown-open,:popover-open)){transform-origin:top;opacity:0;display:none;scale:95%}:where(.btn){width:unset}.btn{cursor:pointer;text-align:center;vertical-align:middle;outline-offset:2px;webkit-user-select:none;-webkit-user-select:none;user-select:none;padding-inline:var(--btn-p);color:var(--btn-fg);--tw-prose-links:var(--btn-fg);height:var(--size);font-size:var(--fontsize,.875rem);outline-color:var(--btn-color,var(--color-base-content));background-color:var(--btn-bg);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--btn-noise);border-width:var(--border);border-style:solid;border-color:var(--btn-border);text-shadow:0 .5px oklch(100% 0 0/calc(var(--depth)*.15));touch-action:manipulation;box-shadow:0 .5px 0 .5px oklch(100% 0 0/calc(var(--depth)*6%)) inset,var(--btn-shadow);--size:calc(var(--size-field,.25rem)*10);--btn-bg:var(--btn-color,var(--color-base-200));--btn-fg:var(--color-base-content);--btn-p:1rem;--btn-border:var(--btn-bg);border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-wrap:nowrap;flex-shrink:0;justify-content:center;align-items:center;gap:.375rem;font-weight:600;transition-property:color,background-color,border-color,box-shadow;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1);display:inline-flex}@supports (color:color-mix(in lab,red,red)){.btn{--btn-border:color-mix(in oklab,var(--btn-bg),#000 calc(var(--depth)*5%))}}.btn{--btn-shadow:0 3px 2px -2px var(--btn-bg),0 4px 3px -2px var(--btn-bg)}@supports (color:color-mix(in lab,red,red)){.btn{--btn-shadow:0 3px 2px -2px color-mix(in oklab,var(--btn-bg)calc(var(--depth)*30%),#0000),0 4px 3px -2px color-mix(in oklab,var(--btn-bg)calc(var(--depth)*30%),#0000)}}.btn{--btn-noise:var(--fx-noise)}@media(hover:hover){.btn:hover{--btn-bg:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab,red,red)){.btn:hover{--btn-bg:color-mix(in oklab,var(--btn-color,var(--color-base-200)),#000 7%)}}}.btn:focus-visible,.btn:has(:focus-visible){isolation:isolate;outline-width:2px;outline-style:solid}.btn:active:not(.btn-active){--btn-bg:var(--btn-color,var(--color-base-200));translate:0 .5px}@supports (color:color-mix(in lab,red,red)){.btn:active:not(.btn-active){--btn-bg:color-mix(in oklab,var(--btn-color,var(--color-base-200)),#000 5%)}}.btn:active:not(.btn-active){--btn-border:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab,red,red)){.btn:active:not(.btn-active){--btn-border:color-mix(in oklab,var(--btn-color,var(--color-base-200)),#000 7%)}}.btn:active:not(.btn-active){--btn-shadow:0 0 0 0 oklch(0% 0 0/0),0 0 0 0 oklch(0% 0 0/0)}.btn:is(input[type=checkbox],input[type=radio]){appearance:none}.btn:is(input[type=checkbox],input[type=radio])[aria-label]:after{--tw-content:attr(aria-label);content:var(--tw-content)}.btn:where(input:checked:not(.filter .btn)){--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content);isolation:isolate}.loading{pointer-events:none;aspect-ratio:1;vertical-align:middle;width:calc(var(--size-selector,.25rem)*6);background-color:currentColor;display:inline-block;-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");-webkit-mask-position:50%;mask-position:50%;-webkit-mask-size:100%;mask-size:100%;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.collapse{border-radius:var(--radius-box,1rem);isolation:isolate;grid-template-rows:max-content 0fr;grid-template-columns:minmax(0,1fr);width:100%;display:grid;position:relative;overflow:hidden}@media(prefers-reduced-motion:no-preference){.collapse{transition:grid-template-rows .2s}}.collapse>input:is([type=checkbox],[type=radio]){appearance:none;opacity:0;z-index:1;grid-row-start:1;grid-column-start:1;width:100%;min-height:1lh;padding:1rem;padding-inline-end:3rem;transition:background-color .2s ease-out}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close)),.collapse:not(.collapse-close):has(>input:is([type=checkbox],[type=radio]):checked){grid-template-rows:max-content 1fr}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>.collapse-content,.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){content-visibility:visible;min-height:fit-content}@supports not (content-visibility:visible){.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>.collapse-content,.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){visibility:visible}}.collapse:focus-visible,.collapse:has(>input:is([type=checkbox],[type=radio]):focus-visible),.collapse:has(summary:focus-visible){outline-color:var(--color-base-content);outline-offset:2px;outline-width:2px;outline-style:solid}.collapse:not(.collapse-close)>input[type=checkbox],.collapse:not(.collapse-close)>input[type=radio]:not(:checked),.collapse:not(.collapse-close)>.collapse-title{cursor:pointer}:is(.collapse[tabindex]:focus:not(.collapse-close,.collapse[open]),.collapse[tabindex]:focus-within:not(.collapse-close,.collapse[open]))>.collapse-title{cursor:unset}.collapse:is([open],[tabindex]:focus:not(.collapse-close),[tabindex]:focus-within:not(.collapse-close))>:where(.collapse-content),.collapse:not(.collapse-close)>:where(input:is([type=checkbox],[type=radio]):checked~.collapse-content){padding-bottom:1rem}.collapse:is(details){width:100%}@media(prefers-reduced-motion:no-preference){.collapse:is(details)::details-content{transition:content-visibility .2s allow-discrete,visibility .2s allow-discrete,padding .2s ease-out,background-color .2s ease-out,height .2s;interpolate-size:allow-keywords;height:0}.collapse:is(details):where([open])::details-content{height:auto}}.collapse:is(details) summary{display:block;position:relative}.collapse:is(details) summary::-webkit-details-marker{display:none}.collapse:is(details)>.collapse-content{content-visibility:visible}.collapse:is(details) summary{outline:none}.collapse-content{content-visibility:hidden;min-height:0;cursor:unset;grid-row-start:2;grid-column-start:1;padding-left:1rem;padding-right:1rem}@supports not (content-visibility:hidden){.collapse-content{visibility:hidden}}@media(prefers-reduced-motion:no-preference){.collapse-content{transition:content-visibility .2s allow-discrete,visibility .2s allow-discrete,padding .2s ease-out,background-color .2s ease-out}}.radial-progress{height:var(--size);width:var(--size);vertical-align:middle;box-sizing:content-box;--value:0;--size:5rem;--thickness:calc(var(--size)/10);--radialprogress:calc(var(--value)*1%);background-color:#0000;border-radius:3.40282e38px;place-content:center;transition:--radialprogress .3s linear;display:inline-grid;position:relative}.radial-progress:before{content:"";background:radial-gradient(farthest-side,currentColor 98%,#0000)top/var(--thickness)var(--thickness)no-repeat,conic-gradient(currentColor var(--radialprogress),#0000 0);webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - var(--thickness)),#000 calc(100% + .5px - var(--thickness)));-webkit-mask:radial-gradient(farthest-side,#0000 calc(100% - var(--thickness)),#000 calc(100% + .5px - var(--thickness)));mask:radial-gradient(farthest-side,#0000 calc(100% - var(--thickness)),#000 calc(100% + .5px - var(--thickness)));border-radius:3.40282e38px;position:absolute;inset:0}.radial-progress:after{content:"";inset:calc(50% - var(--thickness)/2);transform:rotate(calc(var(--value)*3.6deg - 90deg))translate(calc(var(--size)/2 - 50%));background-color:currentColor;border-radius:3.40282e38px;transition:transform .3s linear;position:absolute}.list{flex-direction:column;font-size:.875rem;display:flex}.list .list-row{--list-grid-cols:minmax(0,auto)1fr;border-radius:var(--radius-box);word-break:break-word;grid-auto-flow:column;grid-template-columns:var(--list-grid-cols);gap:1rem;padding:1rem;display:grid;position:relative}:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{content:"";border-bottom:var(--border)solid;inset-inline:var(--radius-box);border-color:var(--color-base-content);position:absolute;bottom:0}@supports (color:color-mix(in lab,red,red)){:is(.list>:not(:last-child).list-row,.list>:not(:last-child) .list-row):after{border-color:color-mix(in oklab,var(--color-base-content)5%,transparent)}}.toggle{border:var(--border)solid currentColor;color:var(--input-color);cursor:pointer;appearance:none;vertical-align:middle;webkit-user-select:none;-webkit-user-select:none;user-select:none;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--toggle-p),var(--radius-selector-max)) + min(var(--border),var(--radius-selector-max)));padding:var(--toggle-p);flex-shrink:0;grid-template-columns:0fr 1fr 1fr;place-content:center;display:inline-grid;position:relative;box-shadow:inset 0 1px}@supports (color:color-mix(in lab,red,red)){.toggle{box-shadow:0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000) inset}}.toggle{--input-color:var(--color-base-content);transition:color .3s,grid-template-columns .2s}@supports (color:color-mix(in lab,red,red)){.toggle{--input-color:color-mix(in oklab,var(--color-base-content)50%,#0000)}}.toggle{--toggle-p:calc(var(--size)*.125);--size:calc(var(--size-selector,.25rem)*6);width:calc((var(--size)*2) - (var(--border) + var(--toggle-p))*2);height:var(--size)}.toggle>*{z-index:1;cursor:pointer;appearance:none;background-color:#0000;border:none;grid-column:2/span 1;grid-row-start:1;height:100%;padding:.125rem;transition:opacity .2s,rotate .4s}.toggle>:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.toggle>:focus{outline-offset:2px;outline:2px solid #0000}}.toggle>:nth-child(2){color:var(--color-base-100);rotate:none}.toggle>:nth-child(3){color:var(--color-base-100);opacity:0;rotate:-15deg}.toggle:has(:checked)>:nth-child(2){opacity:0;rotate:15deg}.toggle:has(:checked)>:nth-child(3){opacity:1;rotate:none}.toggle:before{aspect-ratio:1;border-radius:var(--radius-selector);--tw-content:"";content:var(--tw-content);height:100%;box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1)) inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1)) inset,0 1px currentColor;background-color:currentColor;grid-row-start:1;grid-column-start:2;transition:background-color .1s,translate .2s,inset-inline-start .2s;position:relative;inset-inline-start:0;translate:0}@supports (color:color-mix(in lab,red,red)){.toggle:before{box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1)) inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1)) inset,0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000)}}.toggle:before{background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise)}@media(forced-colors:active){.toggle:before{outline-style:var(--tw-outline-style);outline-offset:-1px;outline-width:1px}}@media print{.toggle:before{outline-offset:-1rem;outline:.25rem solid}}.toggle:focus-visible,.toggle:has(:focus-visible){outline-offset:2px;outline:2px solid}.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked){background-color:var(--color-base-100);--input-color:var(--color-base-content);grid-template-columns:1fr 1fr 0fr}:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{background-color:currentColor}@starting-style{:is(.toggle:checked,.toggle[aria-checked=true],.toggle:has(>input:checked)):before{opacity:0}}.toggle:indeterminate{grid-template-columns:.5fr 1fr .5fr}.toggle:disabled{cursor:not-allowed;opacity:.3}.toggle:disabled:before{border:var(--border)solid currentColor;background-color:#0000}.input{cursor:text;border:var(--border)solid #0000;appearance:none;background-color:var(--color-base-100);vertical-align:middle;white-space:nowrap;width:clamp(3rem,20rem,100%);height:var(--size);font-size:max(var(--font-size,.875rem),.875rem);touch-action:manipulation;border-color:var(--input-color);box-shadow:0 1px var(--input-color) inset,0 -1px oklch(100% 0 0/calc(var(--depth)*.1)) inset;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.5rem;padding-inline:.75rem;display:inline-flex;position:relative}@supports (color:color-mix(in lab,red,red)){.input{box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000) inset,0 -1px oklch(100% 0 0/calc(var(--depth)*.1)) inset}}.input{--size:calc(var(--size-field,.25rem)*10);--input-color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.input{--input-color:color-mix(in oklab,var(--color-base-content)20%,#0000)}}.input:where(input){display:inline-flex}.input :where(input){appearance:none;background-color:#0000;border:none;width:100%;height:100%;display:inline-flex}.input :where(input):focus,.input :where(input):focus-within{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.input :where(input):focus,.input :where(input):focus-within{outline-offset:2px;outline:2px solid #0000}}.input :where(input[type=url]),.input :where(input[type=email]){direction:ltr}.input :where(input[type=date]){display:inline-flex}.input:focus,.input:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab,red,red)){.input:focus,.input:focus-within{box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000)}}.input:focus,.input:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate;z-index:1}@media(pointer:coarse){@supports (-webkit-touch-callout:none){.input:focus,.input:focus-within{--font-size:1rem}}}.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{color:color-mix(in oklab,var(--color-base-content)40%,transparent)}}:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input)::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){:is(.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input)::placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}}.input:has(>input[disabled]),.input:is(:disabled,[disabled]),fieldset:disabled .input{box-shadow:none}.input:has(>input[disabled])>input[disabled]{cursor:not-allowed}.input::-webkit-date-and-time-value{text-align:inherit}.input[type=number]::-webkit-inner-spin-button{margin-block:-.75rem;margin-inline-end:-.75rem}.input::-webkit-calendar-picker-indicator{position:absolute;inset-inline-end:.75em}.input:has(>input[type=date]) :where(input[type=date]){webkit-appearance:none;appearance:none;display:inline-flex}.input:has(>input[type=date]) input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;width:1em;height:1em;position:absolute;inset-inline-end:.75em}.table{border-collapse:separate;--tw-border-spacing-x: 0rem ;--tw-border-spacing-y: 0rem ;width:100%;border-spacing:var(--tw-border-spacing-x)var(--tw-border-spacing-y);border-radius:var(--radius-box);text-align:left;font-size:.875rem;position:relative}.table:where(:dir(rtl),[dir=rtl],[dir=rtl] *){text-align:right}@media(hover:hover){:is(.table tr.row-hover,.table tr.row-hover:nth-child(2n)):hover{background-color:var(--color-base-200)}}.table :where(th,td){vertical-align:middle;padding-block:.75rem;padding-inline:1rem}.table :where(thead,tfoot){white-space:nowrap;color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.table :where(thead,tfoot){color:color-mix(in oklab,var(--color-base-content)60%,transparent)}}.table :where(thead,tfoot){font-size:.875rem;font-weight:600}.table :where(tfoot tr:first-child :is(td,th)){border-top:var(--border)solid var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.table :where(tfoot tr:first-child :is(td,th)){border-top:var(--border)solid color-mix(in oklch,var(--color-base-content)5%,#0000)}}.table :where(.table-pin-rows thead tr){z-index:1;background-color:var(--color-base-100);position:sticky;top:0}.table :where(.table-pin-rows tfoot tr){z-index:1;background-color:var(--color-base-100);position:sticky;bottom:0}.table :where(.table-pin-cols tr th){background-color:var(--color-base-100);position:sticky;left:0;right:0}.table :where(thead tr :is(td,th),tbody tr:not(:last-child) :is(td,th)){border-bottom:var(--border)solid var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.table :where(thead tr :is(td,th),tbody tr:not(:last-child) :is(td,th)){border-bottom:var(--border)solid color-mix(in oklch,var(--color-base-content)5%,#0000)}}.range{appearance:none;webkit-appearance:none;--range-thumb:var(--color-base-100);--range-thumb-size:calc(var(--size-selector,.25rem)*6);--range-progress:currentColor;--range-fill:1;--range-p:.25rem;--range-bg:currentColor}@supports (color:color-mix(in lab,red,red)){.range{--range-bg:color-mix(in oklab,currentColor 10%,#0000)}}.range{cursor:pointer;vertical-align:middle;--radius-selector-max:calc(var(--radius-selector) + var(--radius-selector) + var(--radius-selector));border-radius:calc(var(--radius-selector) + min(var(--range-p),var(--radius-selector-max)));width:clamp(3rem,20rem,100%);height:var(--range-thumb-size);background-color:#0000;border:none;overflow:hidden}[dir=rtl] .range{--range-dir:-1}.range:focus{outline:none}.range:focus-visible{outline-offset:2px;outline:2px solid}.range::-webkit-slider-runnable-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size)*.5)}@media(forced-colors:active){.range::-webkit-slider-runnable-track{border:1px solid}.range::-moz-range-track{border:1px solid}}.range::-webkit-slider-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p),var(--radius-selector-max)));background-color:var(--range-thumb);height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p)solid;appearance:none;webkit-appearance:none;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1)) inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1)) inset,0 1px currentColor,0 0 0 2rem var(--range-thumb) inset,calc((var(--range-dir,1)*-100rem) - (var(--range-dir,1)*var(--range-thumb-size)/2)) 0 0 calc(100rem*var(--range-fill));position:relative;top:50%;transform:translateY(-50%)}@supports (color:color-mix(in lab,red,red)){.range::-webkit-slider-thumb{box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1)) inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1)) inset,0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000),0 0 0 2rem var(--range-thumb) inset,calc((var(--range-dir,1)*-100rem) - (var(--range-dir,1)*var(--range-thumb-size)/2)) 0 0 calc(100rem*var(--range-fill))}}.range::-moz-range-track{background-color:var(--range-bg);border-radius:var(--radius-selector);width:100%;height:calc(var(--range-thumb-size)*.5)}.range::-moz-range-thumb{box-sizing:border-box;border-radius:calc(var(--radius-selector) + min(var(--range-p),var(--radius-selector-max)));height:var(--range-thumb-size);width:var(--range-thumb-size);border:var(--range-p)solid;color:var(--range-progress);box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1)) inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1)) inset,0 1px currentColor,0 0 0 2rem var(--range-thumb) inset,calc((var(--range-dir,1)*-100rem) - (var(--range-dir,1)*var(--range-thumb-size)/2)) 0 0 calc(100rem*var(--range-fill));background-color:currentColor;position:relative;top:50%}@supports (color:color-mix(in lab,red,red)){.range::-moz-range-thumb{box-shadow:0 -1px oklch(0% 0 0/calc(var(--depth)*.1)) inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1)) inset,0 1px color-mix(in oklab,currentColor calc(var(--depth)*10%),#0000),0 0 0 2rem var(--range-thumb) inset,calc((var(--range-dir,1)*-100rem) - (var(--range-dir,1)*var(--range-thumb-size)/2)) 0 0 calc(100rem*var(--range-fill))}}.range:disabled{cursor:not-allowed;opacity:.3}.select{border:var(--border)solid #0000;appearance:none;background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);height:var(--size);touch-action:manipulation;white-space:nowrap;text-overflow:ellipsis;box-shadow:0 1px var(--input-color) inset,0 -1px oklch(100% 0 0/calc(var(--depth)*.1)) inset;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 20px) calc(1px + 50%),calc(100% - 16.1px) calc(1px + 50%);background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-start-start-radius:var(--join-ss,var(--radius-field));border-start-end-radius:var(--join-se,var(--radius-field));border-end-end-radius:var(--join-ee,var(--radius-field));border-end-start-radius:var(--join-es,var(--radius-field));flex-shrink:1;align-items:center;gap:.375rem;padding-inline:.75rem 1.75rem;font-size:.875rem;display:inline-flex;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.select{box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000) inset,0 -1px oklch(100% 0 0/calc(var(--depth)*.1)) inset}}.select{border-color:var(--input-color);--input-color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.select{--input-color:color-mix(in oklab,var(--color-base-content)20%,#0000)}}.select{--size:calc(var(--size-field,.25rem)*10)}[dir=rtl] .select{background-position:12px calc(1px + 50%),16px calc(1px + 50%)}[dir=rtl] .select::picker(select){translate:.5rem}[dir=rtl] .select select::picker(select){translate:.5rem}.select[multiple]{background-image:none;height:auto;padding-block:.75rem;padding-inline-end:.75rem;overflow:auto}.select select{appearance:none;width:calc(100% + 2.75rem);height:calc(100% - calc(var(--border)*2));background:inherit;border-radius:inherit;border-style:none;align-items:center;margin-inline:-.75rem -1.75rem;padding-inline:.75rem 1.75rem}.select select:focus,.select select:focus-within{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.select select:focus,.select select:focus-within{outline-offset:2px;outline:2px solid #0000}}.select select:not(:last-child){background-image:none;margin-inline-end:-1.375rem}.select:focus,.select:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab,red,red)){.select:focus,.select:focus-within{box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000)}}.select:focus,.select:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate;z-index:1}.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select{cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select{color:color-mix(in oklab,var(--color-base-content)40%,transparent)}}:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select)::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){:is(.select:has(>select[disabled]),.select:is(:disabled,[disabled]),fieldset:disabled .select)::placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}}.select:has(>select[disabled])>select[disabled]{cursor:not-allowed}@supports (appearance:base-select){.select,.select select{appearance:base-select}:is(.select,.select select)::picker(select){appearance:base-select}}:is(.select,.select select)::picker(select){color:inherit;border:var(--border)solid var(--color-base-200);border-radius:var(--radius-box);background-color:inherit;max-height:min(24rem,70dvh);box-shadow:0 2px calc(var(--depth)*3px) -2px #0003;box-shadow:0 20px 25px -5px rgb(0 0 0/calc(var(--depth)*.1)),0 8px 10px -6px rgb(0 0 0/calc(var(--depth)*.1));margin-block:.5rem;margin-inline:.5rem;padding:.5rem;translate:-.5rem}:is(.select,.select select)::picker-icon{display:none}:is(.select,.select select) optgroup{padding-top:.5em}:is(.select,.select select) optgroup option:first-child{margin-top:.5em}:is(.select,.select select) option{border-radius:var(--radius-field);white-space:normal;padding-block:.375rem;padding-inline:.75rem;transition-property:color,background-color;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{cursor:pointer;background-color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{background-color:color-mix(in oklab,var(--color-base-content)10%,transparent)}}:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){:is(.select,.select select) option:not(:disabled):hover,:is(.select,.select select) option:not(:disabled):focus-visible{outline-offset:2px;outline:2px solid #0000}}:is(.select,.select select) option:not(:disabled):active{background-color:var(--color-neutral);color:var(--color-neutral-content);box-shadow:0 2px calc(var(--depth)*3px) -2px var(--color-neutral)}.timeline{display:flex;position:relative}.timeline>li{grid-template-rows:var(--timeline-row-start,minmax(0,1fr))auto var(--timeline-row-end,minmax(0,1fr));grid-template-columns:var(--timeline-col-start,minmax(0,1fr))auto var(--timeline-col-end,minmax(0,1fr));flex-shrink:0;align-items:center;display:grid;position:relative}.timeline>li>hr{border:none;width:100%}.timeline>li>hr:first-child{grid-row-start:2;grid-column-start:1}.timeline>li>hr:last-child{grid-area:2/3/auto/none}@media print{.timeline>li>hr{border:.1px solid var(--color-base-300)}}.timeline :where(hr){background-color:var(--color-base-300);height:.25rem}.timeline:has(.timeline-middle hr):first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.timeline:has(.timeline-middle hr):last-child,.timeline:not(:has(.timeline-middle)) :first-child hr:last-child{border-start-start-radius:var(--radius-selector);border-start-end-radius:0;border-end-end-radius:0;border-end-start-radius:var(--radius-selector)}.timeline:not(:has(.timeline-middle)) :last-child hr:first-child{border-start-start-radius:0;border-start-end-radius:var(--radius-selector);border-end-end-radius:var(--radius-selector);border-end-start-radius:0}.collapse-title{grid-row-start:1;grid-column-start:1;width:100%;min-height:1lh;padding:1rem;padding-inline-end:3rem;transition:background-color .2s ease-out;position:relative}.avatar{vertical-align:middle;display:inline-flex;position:relative}.avatar>div{aspect-ratio:1;display:block;overflow:hidden}.avatar img{object-fit:cover;width:100%;height:100%}.checkbox{border:var(--border)solid var(--input-color,var(--color-base-content))}@supports (color:color-mix(in lab,red,red)){.checkbox{border:var(--border)solid var(--input-color,color-mix(in oklab,var(--color-base-content)20%,#0000))}}.checkbox{cursor:pointer;appearance:none;border-radius:var(--radius-selector);vertical-align:middle;color:var(--color-base-content);box-shadow:0 1px oklch(0% 0 0/calc(var(--depth)*.1)) inset,0 0 #0000 inset,0 0 #0000;--size:calc(var(--size-selector,.25rem)*6);width:var(--size);height:var(--size);background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);flex-shrink:0;padding:.25rem;transition:background-color .2s,box-shadow .2s;display:inline-block;position:relative}.checkbox:before{--tw-content:"";content:var(--tw-content);opacity:0;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,70% 80%,70% 100%);width:100%;height:100%;box-shadow:0 3px oklch(100% 0 0/calc(var(--depth)*.1)) inset;background-color:currentColor;font-size:1rem;line-height:.75;transition:clip-path .3s .1s,opacity .1s .1s,rotate .3s .1s,translate .3s .1s;display:block;rotate:45deg}.checkbox:focus-visible{outline:2px solid var(--input-color,currentColor);outline-offset:2px}.checkbox:checked,.checkbox[aria-checked=true]{background-color:var(--input-color,#0000);box-shadow:0 0 #0000 inset,0 8px 0 -4px oklch(100% 0 0/calc(var(--depth)*.1)) inset,0 1px oklch(0% 0 0/calc(var(--depth)*.1))}:is(.checkbox:checked,.checkbox[aria-checked=true]):before{clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 0%,70% 0%,70% 100%);opacity:1}@media(forced-colors:active){:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:none}}@media print{:is(.checkbox:checked,.checkbox[aria-checked=true]):before{--tw-content:"✔︎";clip-path:none;background-color:#0000;rotate:none}}.checkbox:indeterminate{background-color:var(--input-color,var(--color-base-content))}@supports (color:color-mix(in lab,red,red)){.checkbox:indeterminate{background-color:var(--input-color,color-mix(in oklab,var(--color-base-content)20%,#0000))}}.checkbox:indeterminate:before{opacity:1;clip-path:polygon(20% 100%,20% 80%,50% 80%,50% 80%,80% 80%,80% 100%);translate:0 -35%;rotate:none}.card{border-radius:var(--radius-box);outline-offset:2px;outline:0 solid #0000;flex-direction:column;transition:outline .2s ease-in-out;display:flex;position:relative}.card:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.card:focus{outline-offset:2px;outline:2px solid #0000}}.card:focus-visible{outline-color:currentColor}.card :where(figure:first-child){border-start-start-radius:inherit;border-start-end-radius:inherit;border-end-end-radius:unset;border-end-start-radius:unset;overflow:hidden}.card :where(figure:last-child){border-start-start-radius:unset;border-start-end-radius:unset;border-end-end-radius:inherit;border-end-start-radius:inherit;overflow:hidden}.card figure{justify-content:center;align-items:center;display:flex}.card:has(>input:is(input[type=checkbox],input[type=radio])){cursor:pointer;-webkit-user-select:none;user-select:none}.card:has(>:checked){outline:2px solid}.progress{appearance:none;border-radius:var(--radius-box);background-color:currentColor;width:100%;height:.5rem;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.progress{background-color:color-mix(in oklab,currentcolor 20%,transparent)}}.progress{color:var(--color-base-content)}.progress:indeterminate{background-image:repeating-linear-gradient(90deg,currentColor -1% 10%,#0000 10% 90%);background-position-x:15%;background-size:200%}@media(prefers-reduced-motion:no-preference){.progress:indeterminate{animation:5s ease-in-out infinite progress}}@supports ((-moz-appearance:none)){.progress:indeterminate::-moz-progress-bar{background-color:#0000}@media(prefers-reduced-motion:no-preference){.progress:indeterminate::-moz-progress-bar{background-image:repeating-linear-gradient(90deg,currentColor -1% 10%,#0000 10% 90%);background-position-x:15%;background-size:200%;animation:5s ease-in-out infinite progress}}.progress::-moz-progress-bar{border-radius:var(--radius-box);background-color:currentColor}}@supports ((-webkit-appearance:none)){.progress::-webkit-progress-bar{border-radius:var(--radius-box);background-color:#0000}.progress::-webkit-progress-value{border-radius:var(--radius-box);background-color:currentColor}}.textarea{border:var(--border)solid #0000;appearance:none;border-radius:var(--radius-field);background-color:var(--color-base-100);vertical-align:middle;width:clamp(3rem,20rem,100%);min-height:5rem;font-size:max(var(--font-size,.875rem),.875rem);touch-action:manipulation;border-color:var(--input-color);box-shadow:0 1px var(--input-color) inset,0 -1px oklch(100% 0 0/calc(var(--depth)*.1)) inset;flex-shrink:1;padding-block:.5rem;padding-inline:.75rem}@supports (color:color-mix(in lab,red,red)){.textarea{box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000) inset,0 -1px oklch(100% 0 0/calc(var(--depth)*.1)) inset}}.textarea{--input-color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.textarea{--input-color:color-mix(in oklab,var(--color-base-content)20%,#0000)}}.textarea textarea{appearance:none;background-color:#0000;border:none}.textarea textarea:focus,.textarea textarea:focus-within{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.textarea textarea:focus,.textarea textarea:focus-within{outline-offset:2px;outline:2px solid #0000}}.textarea:focus,.textarea:focus-within{--input-color:var(--color-base-content);box-shadow:0 1px var(--input-color)}@supports (color:color-mix(in lab,red,red)){.textarea:focus,.textarea:focus-within{box-shadow:0 1px color-mix(in oklab,var(--input-color)calc(var(--depth)*10%),#0000)}}.textarea:focus,.textarea:focus-within{outline:2px solid var(--input-color);outline-offset:2px;isolation:isolate}@media(pointer:coarse){@supports (-webkit-touch-callout:none){.textarea:focus,.textarea:focus-within{--font-size:1rem}}}.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){cursor:not-allowed;border-color:var(--color-base-200);background-color:var(--color-base-200);color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){color:color-mix(in oklab,var(--color-base-content)40%,transparent)}}:is(.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]))::placeholder{color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){:is(.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]))::placeholder{color:color-mix(in oklab,var(--color-base-content)20%,transparent)}}.textarea:has(>textarea[disabled]),.textarea:is(:disabled,[disabled]){box-shadow:none}.textarea:has(>textarea[disabled])>textarea[disabled]{cursor:not-allowed}.modal-backdrop{color:#0000;z-index:-1;grid-row-start:1;grid-column-start:1;place-self:stretch stretch;display:grid}.modal-backdrop button{cursor:pointer}.modal-box{background-color:var(--color-base-100);border-top-left-radius:var(--modal-tl,var(--radius-box));border-top-right-radius:var(--modal-tr,var(--radius-box));border-bottom-left-radius:var(--modal-bl,var(--radius-box));border-bottom-right-radius:var(--modal-br,var(--radius-box));opacity:0;overscroll-behavior:contain;grid-row-start:1;grid-column-start:1;width:91.6667%;max-width:32rem;max-height:100vh;padding:1.5rem;transition:translate .3s ease-out,scale .3s ease-out,opacity .2s ease-out 50ms,box-shadow .3s ease-out;overflow-y:auto;scale:95%;box-shadow:0 25px 50px -12px #00000040}.divider{white-space:nowrap;height:1rem;margin:var(--divider-m,1rem 0);--divider-color:var(--color-base-content);flex-direction:row;align-self:stretch;align-items:center;display:flex}@supports (color:color-mix(in lab,red,red)){.divider{--divider-color:color-mix(in oklab,var(--color-base-content)10%,transparent)}}.divider:before,.divider:after{content:"";background-color:var(--divider-color);flex-grow:1;width:100%;height:.125rem}@media print{.divider:before,.divider:after{border:.5px solid}}.divider:not(:empty){gap:1rem}.filter{flex-wrap:wrap;display:flex}.filter input[type=radio]{width:auto}.filter input{opacity:1;transition:margin .1s,opacity .3s,padding .3s,border-width .1s;overflow:hidden;scale:1}.filter input:not(:last-child){margin-inline-end:.25rem}.filter input.filter-reset{aspect-ratio:1}.filter input.filter-reset:after{--tw-content:"×";content:var(--tw-content)}.filter:not(:has(input:checked:not(.filter-reset))) .filter-reset,.filter:not(:has(input:checked:not(.filter-reset))) input[type=reset],.filter:has(input:checked:not(.filter-reset)) input:not(:checked,.filter-reset,input[type=reset]){opacity:0;border-width:0;width:0;margin-inline:0;padding-inline:0;scale:0}.label{white-space:nowrap;color:currentColor;align-items:center;gap:.375rem;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.label{color:color-mix(in oklab,currentcolor 60%,transparent)}}.label:has(input){cursor:pointer}.label:is(.input>*,.select>*){white-space:nowrap;height:calc(100% - .5rem);font-size:inherit;align-items:center;padding-inline:.75rem;display:flex}.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border)solid currentColor;margin-inline:-.75rem .75rem}@supports (color:color-mix(in lab,red,red)){.label:is(.input>*,.select>*):first-child{border-inline-end:var(--border)solid color-mix(in oklab,currentColor 10%,#0000)}}.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border)solid currentColor;margin-inline:.75rem -.75rem}@supports (color:color-mix(in lab,red,red)){.label:is(.input>*,.select>*):last-child{border-inline-start:var(--border)solid color-mix(in oklab,currentColor 10%,#0000)}}.modal-action{justify-content:flex-end;gap:.5rem;margin-top:1.5rem;display:flex}.status{aspect-ratio:1;border-radius:var(--radius-selector);background-color:var(--color-base-content);width:.5rem;height:.5rem;display:inline-block}@supports (color:color-mix(in lab,red,red)){.status{background-color:color-mix(in oklab,var(--color-base-content)20%,transparent)}}.status{vertical-align:middle;color:#0000004d;background-position:50%;background-repeat:no-repeat}@supports (color:color-mix(in lab,red,red)){.status{color:color-mix(in oklab,var(--color-black)30%,transparent)}}.status{background-image:radial-gradient(circle at 35% 30%,oklch(1 0 0/calc(var(--depth)*.5)),#0000);box-shadow:0 2px 3px -1px}@supports (color:color-mix(in lab,red,red)){.status{box-shadow:0 2px 3px -1px color-mix(in oklab,currentColor calc(var(--depth)*100%),#0000)}}.badge{border-radius:var(--radius-selector);vertical-align:middle;color:var(--badge-fg);border:var(--border)solid var(--badge-color,var(--color-base-200));background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);background-color:var(--badge-bg);--badge-bg:var(--badge-color,var(--color-base-100));--badge-fg:var(--color-base-content);--size:calc(var(--size-selector,.25rem)*6);width:fit-content;height:var(--size);padding-inline:calc(var(--size)/2 - var(--border));justify-content:center;align-items:center;gap:.5rem;font-size:.875rem;display:inline-flex}.tabs{--tabs-height:auto;--tabs-direction:row;--tab-height:calc(var(--size-field,.25rem)*10);height:var(--tabs-height);flex-wrap:wrap;flex-direction:var(--tabs-direction);display:flex}.footer{grid-auto-flow:row;place-items:start;gap:2.5rem 1rem;width:100%;font-size:.875rem;line-height:1.25rem;display:grid}.footer>*{place-items:start;gap:.5rem;display:grid}.footer.footer-center{text-align:center;grid-auto-flow:column dense;place-items:center}.footer.footer-center>*{place-items:center}.card-body{padding:var(--card-p,1.5rem);font-size:var(--card-fs,.875rem);flex-direction:column;flex:auto;gap:.5rem;display:flex}.card-body :where(p){flex-grow:1}.alert{--alert-border-color:var(--color-base-200);border-radius:var(--radius-box);color:var(--color-base-content);background-color:var(--alert-color,var(--color-base-200));text-align:start;background-size:auto,calc(var(--noise)*100%);background-image:none,var(--fx-noise);box-shadow:0 3px 0 -2px oklch(100% 0 0/calc(var(--depth)*.08)) inset,0 1px #000,0 4px 3px -2px oklch(0% 0 0/calc(var(--depth)*.08));border-style:solid;grid-template-columns:auto;grid-auto-flow:column;justify-content:start;place-items:center start;gap:1rem;padding-block:.75rem;padding-inline:1rem;font-size:.875rem;line-height:1.25rem;display:grid}@supports (color:color-mix(in lab,red,red)){.alert{box-shadow:0 3px 0 -2px oklch(100% 0 0/calc(var(--depth)*.08)) inset,0 1px color-mix(in oklab,color-mix(in oklab,#000 20%,var(--alert-color,var(--color-base-200)))calc(var(--depth)*20%),#0000),0 4px 3px -2px oklch(0% 0 0/calc(var(--depth)*.08))}}.alert:has(:nth-child(2)){grid-template-columns:auto minmax(auto,1fr)}.skeleton{border-radius:var(--radius-box);background-color:var(--color-base-300)}@media(prefers-reduced-motion:reduce){.skeleton{transition-duration:15s}}.skeleton{will-change:background-position;background-image:linear-gradient(105deg,#0000 0% 40%,var(--color-base-100)50%,#0000 60% 100%);background-position-x:-50%;background-size:200%}@media(prefers-reduced-motion:no-preference){.skeleton{animation:1.8s ease-in-out infinite skeleton}}.link{cursor:pointer;text-decoration-line:underline}.link:focus{--tw-outline-style:none;outline-style:none}@media(forced-colors:active){.link:focus{outline-offset:2px;outline:2px solid #0000}}.link:focus-visible{outline-offset:2px;outline:2px solid}.menu-title{color:var(--color-base-content);padding-block:.5rem;padding-inline:.75rem}@supports (color:color-mix(in lab,red,red)){.menu-title{color:color-mix(in oklab,var(--color-base-content)40%,transparent)}}.menu-title{font-size:.875rem;font-weight:600}.btn-accent{--btn-color:var(--color-accent);--btn-fg:var(--color-accent-content)}.btn-error{--btn-color:var(--color-error);--btn-fg:var(--color-error-content)}.btn-info{--btn-color:var(--color-info);--btn-fg:var(--color-info-content)}.btn-neutral{--btn-color:var(--color-neutral);--btn-fg:var(--color-neutral-content)}.btn-primary{--btn-color:var(--color-primary);--btn-fg:var(--color-primary-content)}.btn-secondary{--btn-color:var(--color-secondary);--btn-fg:var(--color-secondary-content)}.btn-success{--btn-color:var(--color-success);--btn-fg:var(--color-success-content)}.btn-warning{--btn-color:var(--color-warning);--btn-fg:var(--color-warning-content)}}@layer daisyui.l1.l2{.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal{pointer-events:auto;visibility:visible;opacity:1;transition:visibility 0s allow-discrete,background-color .3s ease-out,opacity .1s ease-out;background-color:#0006}:is(.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal) .modal-box{opacity:1;translate:0;scale:1}:root:has(:is(.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal)){--page-has-backdrop:1;--page-overflow:hidden;--page-scroll-bg:var(--page-scroll-bg-on);--page-scroll-gutter:stable;--page-scroll-transition:var(--page-scroll-transition-on);animation:forwards set-page-has-scroll;animation-timeline:scroll()}@starting-style{.modal.modal-open,.modal[open],.modal:target,.modal-toggle:checked+.modal{opacity:0}}.tooltip>.tooltip-content,.tooltip[data-tip]:before{transform:translate(-50%)translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-off)50%}.tooltip:after{transform:translate(-50%)translateY(var(--tt-pos,.25rem));inset:auto auto var(--tt-tail)50%}.collapse-arrow>.collapse-title:after{width:.5rem;height:.5rem;display:block;position:absolute;transform:translateY(-100%)rotate(45deg)}@media(prefers-reduced-motion:no-preference){.collapse-arrow>.collapse-title:after{transition-property:all;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}}.collapse-arrow>.collapse-title:after{content:"";transform-origin:75% 75%;pointer-events:none;top:50%;inset-inline-end:1.4rem;box-shadow:2px 2px}.btn:disabled:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.btn:disabled:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab,var(--color-base-content)10%,transparent)}}.btn:disabled:not(.btn-link,.btn-ghost){box-shadow:none}.btn:disabled{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.btn:disabled{--btn-fg:color-mix(in oklch,var(--color-base-content)20%,#0000)}}.btn[disabled]:not(.btn-link,.btn-ghost){background-color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.btn[disabled]:not(.btn-link,.btn-ghost){background-color:color-mix(in oklab,var(--color-base-content)10%,transparent)}}.btn[disabled]:not(.btn-link,.btn-ghost){box-shadow:none}.btn[disabled]{pointer-events:none;--btn-border:#0000;--btn-noise:none;--btn-fg:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.btn[disabled]{--btn-fg:color-mix(in oklch,var(--color-base-content)20%,#0000)}}@media(prefers-reduced-motion:no-preference){.collapse[open].collapse-arrow>.collapse-title:after,.collapse.collapse-open.collapse-arrow>.collapse-title:after{transform:translateY(-50%)rotate(225deg)}}.collapse.collapse-open.collapse-plus>.collapse-title:after{--tw-content:"−";content:var(--tw-content)}:is(.collapse[tabindex].collapse-arrow:focus:not(.collapse-close),.collapse.collapse-arrow[tabindex]:focus-within:not(.collapse-close))>.collapse-title:after,.collapse.collapse-arrow:not(.collapse-close)>input:is([type=checkbox],[type=radio]):checked~.collapse-title:after{transform:translateY(-50%)rotate(225deg)}.collapse[open].collapse-plus>.collapse-title:after,.collapse[tabindex].collapse-plus:focus:not(.collapse-close)>.collapse-title:after,.collapse.collapse-plus:not(.collapse-close)>input:is([type=checkbox],[type=radio]):checked~.collapse-title:after{--tw-content:"−";content:var(--tw-content)}.tabs-lift{--tabs-height:auto;--tabs-direction:row}.tabs-lift>.tab{--tab-border:0 0 var(--border)0;--tab-radius-ss:var(--tab-radius-limit);--tab-radius-se:var(--tab-radius-limit);--tab-radius-es:0;--tab-radius-ee:0;--tab-paddings:var(--border)var(--tab-p)0 var(--tab-p);--tab-border-colors:#0000 #0000 var(--tab-border-color)#0000;--tab-corner-width:calc(100% + var(--tab-radius-limit)*2);--tab-corner-height:var(--tab-radius-limit);--tab-corner-position:top left,top right;border-width:var(--tab-border);padding:var(--tab-paddings);border-color:var(--tab-border-colors);border-start-start-radius:var(--tab-radius-ss);border-start-end-radius:var(--tab-radius-se);border-end-end-radius:var(--tab-radius-ee);border-end-start-radius:var(--tab-radius-es)}.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked)){--tab-border:var(--border)var(--border)0 var(--border);--tab-border-colors:var(--tab-border-color)var(--tab-border-color)#0000 var(--tab-border-color);--tab-paddings:0 calc(var(--tab-p) - var(--border))var(--border)calc(var(--tab-p) - var(--border));--tab-inset:auto auto 0 auto;--radius-start:radial-gradient(circle at top left,var(--tab-radius-grad));--radius-end:radial-gradient(circle at top right,var(--tab-radius-grad));background-color:var(--tab-bg)}:is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):before{z-index:1;content:"";width:var(--tab-corner-width);height:var(--tab-corner-height);background-position:var(--tab-corner-position);background-image:var(--radius-start),var(--radius-end);background-size:var(--tab-radius-limit)var(--tab-radius-limit);inset:var(--tab-inset);background-repeat:no-repeat;display:block;position:absolute}:is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):first-child:before{--radius-start:none}[dir=rtl] :is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):first-child:before{transform:rotateY(180deg)}:is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):last-child:before{--radius-end:none}[dir=rtl] :is(.tabs-lift>.tab:is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]):not(.tab-disabled,[disabled]),.tabs-lift>.tab:is(input:checked,label:has(:checked))):last-child:before{transform:rotateY(180deg)}.tabs-lift:has(>.tab-content)>.tab:first-child:not(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]){--tab-border-colors:var(--tab-border-color)var(--tab-border-color)#0000 var(--tab-border-color)}.tabs-lift>.tab-content{--tabcontent-margin:calc(-1*var(--border))0 0 0;--tabcontent-radius-ss:0;--tabcontent-radius-se:var(--radius-box);--tabcontent-radius-es:var(--radius-box);--tabcontent-radius-ee:var(--radius-box)}:is(.tabs-lift :checked,.tabs-lift label:has(:checked),.tabs-lift :is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content:first-child,:is(.tabs-lift :checked,.tabs-lift label:has(:checked),.tabs-lift :is(.tab-active,[aria-selected=true],[aria-current=true],[aria-current=page]))+.tab-content:nth-child(n+3){--tabcontent-radius-ss:var(--radius-box)}.list .list-row:has(.list-col-grow:first-child){--list-grid-cols:1fr}.list .list-row:has(.list-col-grow:nth-child(2)){--list-grid-cols:minmax(0,auto)1fr}.list .list-row:has(.list-col-grow:nth-child(3)){--list-grid-cols:minmax(0,auto)minmax(0,auto)1fr}.list .list-row:has(.list-col-grow:nth-child(4)){--list-grid-cols:minmax(0,auto)minmax(0,auto)minmax(0,auto)1fr}.list .list-row:has(.list-col-grow:nth-child(5)){--list-grid-cols:minmax(0,auto)minmax(0,auto)minmax(0,auto)minmax(0,auto)1fr}.list .list-row:has(.list-col-grow:nth-child(6)){--list-grid-cols:minmax(0,auto)minmax(0,auto)minmax(0,auto)minmax(0,auto)minmax(0,auto)1fr}.list .list-row>:not(.list-col-wrap){grid-row-start:1}.checkbox:disabled{cursor:not-allowed;opacity:.2}.tooltip-left>.tooltip-content,.tooltip-left[data-tip]:before{transform:translate(calc(var(--tt-pos,.25rem) - .25rem))translateY(-50%);inset:50% var(--tt-off)auto auto}.tooltip-left:after{transform:translate(var(--tt-pos,.25rem))translateY(-50%)rotate(-90deg);inset:50% calc(var(--tt-tail) + 1px)auto auto}.tooltip-right>.tooltip-content,.tooltip-right[data-tip]:before{transform:translate(calc(var(--tt-pos,-.25rem) + .25rem))translateY(-50%);inset:50% auto auto var(--tt-off)}.tooltip-right:after{transform:translate(var(--tt-pos,-.25rem))translateY(-50%)rotate(90deg);inset:50% auto auto calc(var(--tt-tail) + 1px)}.dropdown-end{--anchor-h:span-left}.dropdown-end :where(.dropdown-content){inset-inline-end:0;translate:0}[dir=rtl] :is(.dropdown-end :where(.dropdown-content)){translate:0}.dropdown-end.dropdown-left{--anchor-h:left;--anchor-v:span-top}.dropdown-end.dropdown-left .dropdown-content{top:auto;bottom:0}.dropdown-end.dropdown-right{--anchor-h:right;--anchor-v:span-top}.dropdown-end.dropdown-right .dropdown-content{top:auto;bottom:0}.dropdown-bottom{--anchor-v:bottom}.dropdown-bottom .dropdown-content{transform-origin:top;top:100%;bottom:auto}.btn-active{--btn-bg:var(--btn-color,var(--color-base-200))}@supports (color:color-mix(in lab,red,red)){.btn-active{--btn-bg:color-mix(in oklab,var(--btn-color,var(--color-base-200)),#000 7%)}}.btn-active{--btn-shadow:0 0 0 0 oklch(0% 0 0/0),0 0 0 0 oklch(0% 0 0/0);isolation:isolate}.input-sm{--size:calc(var(--size-field,.25rem)*8);font-size:max(var(--font-size,.75rem),.75rem)}.input-sm[type=number]::-webkit-inner-spin-button{margin-block:-.5rem;margin-inline-end:-.75rem}.btn-circle{width:var(--size);height:var(--size);border-radius:3.40282e38px;padding-inline:0}.btn-square{width:var(--size);height:var(--size);padding-inline:0}.loading-sm{width:calc(var(--size-selector,.25rem)*5)}.loading-xs{width:calc(var(--size-selector,.25rem)*4)}.badge-soft{color:var(--badge-color,var(--color-base-content));background-color:var(--badge-color,var(--color-base-content))}@supports (color:color-mix(in lab,red,red)){.badge-soft{background-color:color-mix(in oklab,var(--badge-color,var(--color-base-content))8%,var(--color-base-100))}}.badge-soft{border-color:var(--badge-color,var(--color-base-content))}@supports (color:color-mix(in lab,red,red)){.badge-soft{border-color:color-mix(in oklab,var(--badge-color,var(--color-base-content))10%,var(--color-base-100))}}.badge-soft{background-image:none}.loading-spinner{-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg width='24' height='24' stroke='black' viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cg transform-origin='center'%3E%3Ccircle cx='12' cy='12' r='9.5' fill='none' stroke-width='3' stroke-linecap='round'%3E%3CanimateTransform attributeName='transform' type='rotate' from='0 12 12' to='360 12 12' dur='2s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dasharray' values='0,150;42,150;42,150' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3Canimate attributeName='stroke-dashoffset' values='0;-16;-59' keyTimes='0;0.475;1' dur='1.5s' repeatCount='indefinite'/%3E%3C/circle%3E%3C/g%3E%3C/svg%3E")}.checkbox-sm{--size:calc(var(--size-selector,.25rem)*5);padding:.1875rem}.select-sm{--size:calc(var(--size-field,.25rem)*8);font-size:.75rem}.select-sm option{padding-block:.25rem;padding-inline:.625rem}.badge-sm{--size:calc(var(--size-selector,.25rem)*5);font-size:.75rem}.alert-error{color:var(--color-error-content);--alert-border-color:var(--color-error);--alert-color:var(--color-error)}.alert-info{color:var(--color-info-content);--alert-border-color:var(--color-info);--alert-color:var(--color-info)}.alert-success{color:var(--color-success-content);--alert-border-color:var(--color-success);--alert-color:var(--color-success)}.alert-warning{color:var(--color-warning-content);--alert-border-color:var(--color-warning);--alert-color:var(--color-warning)}.link-primary{color:var(--color-primary)}@media(hover:hover){.link-primary:hover{color:var(--color-primary)}@supports (color:color-mix(in lab,red,red)){.link-primary:hover{color:color-mix(in oklab,var(--color-primary)80%,#000)}}}.progress-primary{color:var(--color-primary)}.link-hover{text-decoration-line:none}@media(hover:hover){.link-hover:hover{text-decoration-line:underline}}.btn-lg{--fontsize:1.125rem;--btn-p:1.25rem;--size:calc(var(--size-field,.25rem)*12)}.btn-sm{--fontsize:.75rem;--btn-p:.75rem;--size:calc(var(--size-field,.25rem)*8)}.btn-xs{--fontsize:.6875rem;--btn-p:.5rem;--size:calc(var(--size-field,.25rem)*6)}.badge-accent{--badge-color:var(--color-accent);--badge-fg:var(--color-accent-content)}.badge-info{--badge-color:var(--color-info);--badge-fg:var(--color-info-content)}.badge-primary{--badge-color:var(--color-primary);--badge-fg:var(--color-primary-content)}.badge-secondary{--badge-color:var(--color-secondary);--badge-fg:var(--color-secondary-content)}.card-border{border:var(--border)solid var(--color-base-200)}.toggle-primary:checked,.toggle-primary[aria-checked=true]{--input-color:var(--color-primary)}}.collapse:not(td,tr,colgroup){visibility:revert-layer}.collapse{visibility:collapse}.invisible{visibility:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:calc(var(--spacing)*0)}.-top-2{top:calc(var(--spacing)*-2)}.top-2{top:calc(var(--spacing)*2)}.top-4{top:calc(var(--spacing)*4)}.top-\\[50\\%\\]{top:50%}.-right-1{right:calc(var(--spacing)*-1)}.-right-2{right:calc(var(--spacing)*-2)}.right-2{right:calc(var(--spacing)*2)}.right-4{right:calc(var(--spacing)*4)}.-bottom-1{bottom:calc(var(--spacing)*-1)}.bottom-4{bottom:calc(var(--spacing)*4)}.-left-2{left:calc(var(--spacing)*-2)}.left-1\\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.left-4{left:calc(var(--spacing)*4)}.left-\\[-15px\\]{left:-15px}.z-1{z-index:1}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.z-1000{z-index:1000}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing)*2)}.join-item:where(:not(:first-child,:disabled,[disabled],.btn-disabled)){margin-block-start:0;margin-inline-start:calc(var(--border,1px)*-1)}.join-item:where(:is(:disabled,[disabled],.btn-disabled)){border-width:var(--border,1px)0 var(--border,1px)var(--border,1px)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-16{margin-top:calc(var(--spacing)*16)}.mt-px{margin-top:1px}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-6{margin-bottom:calc(var(--spacing)*6)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-auto{margin-left:auto}.alert{border-width:var(--border);border-color:var(--alert-border-color,var(--color-base-200))}.join{--join-ss:0;--join-se:0;--join-es:0;--join-ee:0;align-items:stretch;display:inline-flex}.join :where(.join-item){border-start-start-radius:var(--join-ss,0);border-start-end-radius:var(--join-se,0);border-end-end-radius:var(--join-ee,0);border-end-start-radius:var(--join-es,0)}.join :where(.join-item) *{--join-ss:var(--radius-field);--join-se:var(--radius-field);--join-es:var(--radius-field);--join-ee:var(--radius-field)}.join>.join-item:where(:first-child),.join :first-child:not(:last-child) :where(.join-item){--join-ss:var(--radius-field);--join-se:0;--join-es:var(--radius-field);--join-ee:0}.join>.join-item:where(:last-child),.join :last-child:not(:first-child) :where(.join-item){--join-ss:0;--join-se:var(--radius-field);--join-es:0;--join-ee:var(--radius-field)}.join>.join-item:where(:only-child),.join :only-child :where(.join-item){--join-ss:var(--radius-field);--join-se:var(--radius-field);--join-es:var(--radius-field);--join-ee:var(--radius-field)}:root .prose{--tw-prose-body:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){:root .prose{--tw-prose-body:color-mix(in oklab,var(--color-base-content)80%,#0000)}}:root .prose{--tw-prose-headings:var(--color-base-content);--tw-prose-lead:var(--color-base-content);--tw-prose-links:var(--color-base-content);--tw-prose-bold:var(--color-base-content);--tw-prose-counters:var(--color-base-content);--tw-prose-bullets:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){:root .prose{--tw-prose-bullets:color-mix(in oklab,var(--color-base-content)50%,#0000)}}:root .prose{--tw-prose-hr:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){:root .prose{--tw-prose-hr:color-mix(in oklab,var(--color-base-content)20%,#0000)}}:root .prose{--tw-prose-quotes:var(--color-base-content);--tw-prose-quote-borders:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){:root .prose{--tw-prose-quote-borders:color-mix(in oklab,var(--color-base-content)20%,#0000)}}:root .prose{--tw-prose-captions:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){:root .prose{--tw-prose-captions:color-mix(in oklab,var(--color-base-content)50%,#0000)}}:root .prose{--tw-prose-code:var(--color-base-content);--tw-prose-pre-code:var(--color-neutral-content);--tw-prose-pre-bg:var(--color-neutral);--tw-prose-th-borders:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){:root .prose{--tw-prose-th-borders:color-mix(in oklab,var(--color-base-content)50%,#0000)}}:root .prose{--tw-prose-td-borders:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){:root .prose{--tw-prose-td-borders:color-mix(in oklab,var(--color-base-content)20%,#0000)}}:root .prose{--tw-prose-kbd:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){:root .prose{--tw-prose-kbd:color-mix(in oklab,var(--color-base-content)80%,#0000)}}:root .prose :where(code):not(pre>code){background-color:var(--color-base-200);border-radius:var(--radius-selector);border:var(--border)solid var(--color-base-300);font-weight:inherit;padding-block:.2em;padding-inline:.5em}:root .prose :where(code):not(pre>code):before,:root .prose :where(code):not(pre>code):after{display:none}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.table{display:table}.size-1{width:calc(var(--spacing)*1);height:calc(var(--spacing)*1)}.size-2{width:calc(var(--spacing)*2);height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-8{height:calc(var(--spacing)*8)}.h-12{height:calc(var(--spacing)*12)}.h-16{height:calc(var(--spacing)*16)}.h-full{height:100%}.max-h-52{max-height:calc(var(--spacing)*52)}.max-h-60{max-height:calc(var(--spacing)*60)}.max-h-\\[80vh\\]{max-height:80vh}.max-h-full{max-height:100%}.w-3{width:calc(var(--spacing)*3)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-8{width:calc(var(--spacing)*8)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-24{width:calc(var(--spacing)*24)}.w-28{width:calc(var(--spacing)*28)}.w-32{width:calc(var(--spacing)*32)}.w-40{width:calc(var(--spacing)*40)}.w-48{width:calc(var(--spacing)*48)}.w-52{width:calc(var(--spacing)*52)}.w-56{width:calc(var(--spacing)*56)}.w-64{width:calc(var(--spacing)*64)}.w-full{width:100%}.max-w-2xl{max-width:var(--container-2xl)}.max-w-\\[200px\\]{max-width:200px}.max-w-full{max-width:100%}.max-w-none{max-width:none}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing)*0)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-1\\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-\\[15px\\]{--tw-translate-x:15px;translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-15{rotate:15deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row-reverse{flex-direction:row-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-start{justify-content:flex-start}.gap-0\\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-box{border-radius:var(--radius-box)}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-\\(length\\:--border\\){border-style:var(--tw-border-style);border-width:var(--border)}.border-base-300{border-color:var(--color-base-300)}.border-base-content\\/10{border-color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.border-base-content\\/10{border-color:color-mix(in oklab,var(--color-base-content)10%,transparent)}}.border-white\\/5{border-color:#ffffff0d}@supports (color:color-mix(in lab,red,red)){.border-white\\/5{border-color:color-mix(in oklab,var(--color-white)5%,transparent)}}.bg-accent,.bg-accent\\/20{background-color:var(--color-accent)}@supports (color:color-mix(in lab,red,red)){.bg-accent\\/20{background-color:color-mix(in oklab,var(--color-accent)20%,transparent)}}.bg-base-100{background-color:var(--color-base-100)}.bg-base-200,.bg-base-200\\/70{background-color:var(--color-base-200)}@supports (color:color-mix(in lab,red,red)){.bg-base-200\\/70{background-color:color-mix(in oklab,var(--color-base-200)70%,transparent)}}.bg-base-300{background-color:var(--color-base-300)}.bg-base-content{background-color:var(--color-base-content)}.bg-black\\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\\/30{background-color:color-mix(in oklab,var(--color-black)30%,transparent)}}.bg-black\\/70{background-color:#000000b3}@supports (color:color-mix(in lab,red,red)){.bg-black\\/70{background-color:color-mix(in oklab,var(--color-black)70%,transparent)}}.bg-black\\/90{background-color:#000000e6}@supports (color:color-mix(in lab,red,red)){.bg-black\\/90{background-color:color-mix(in oklab,var(--color-black)90%,transparent)}}.bg-primary,.bg-primary\\/20{background-color:var(--color-primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\\/20{background-color:color-mix(in oklab,var(--color-primary)20%,transparent)}}.bg-secondary,.bg-secondary\\/20{background-color:var(--color-secondary)}@supports (color:color-mix(in lab,red,red)){.bg-secondary\\/20{background-color:color-mix(in oklab,var(--color-secondary)20%,transparent)}}.bg-warning\\/20{background-color:var(--color-warning)}@supports (color:color-mix(in lab,red,red)){.bg-warning\\/20{background-color:color-mix(in oklab,var(--color-warning)20%,transparent)}}@layer daisyui.l1{.alert-soft{color:var(--alert-color,var(--color-base-content));background:var(--alert-color,var(--color-base-content))}@supports (color:color-mix(in lab,red,red)){.alert-soft{background:color-mix(in oklab,var(--alert-color,var(--color-base-content))8%,var(--color-base-100))}}.alert-soft{--alert-border-color:var(--alert-color,var(--color-base-content))}@supports (color:color-mix(in lab,red,red)){.alert-soft{--alert-border-color:color-mix(in oklab,var(--alert-color,var(--color-base-content))10%,var(--color-base-100))}}.alert-soft{box-shadow:none;background-image:none}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn)){--btn-shadow:"";--btn-bg:#0000;--btn-border:#0000;--btn-noise:none}.btn-ghost:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn)):not(:disabled,[disabled],.btn-disabled){--btn-fg:var(--btn-color,currentColor);outline-color:currentColor}@media(hover:none){.btn-ghost:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-bg:#0000;--btn-fg:var(--btn-color,currentColor);--btn-border:#0000;--btn-noise:none;outline-color:currentColor}}.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-shadow:"";--btn-fg:var(--btn-color,var(--color-base-content));--btn-bg:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab,red,red)){.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-bg:color-mix(in oklab,var(--btn-color,var(--color-base-content))8%,var(--color-base-100))}}.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-border:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab,red,red)){.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-border:color-mix(in oklab,var(--btn-color,var(--color-base-content))10%,var(--color-base-100))}}.btn-soft:not(.btn-active,:hover,:active:focus,:focus-visible,input:checked:not(.filter .btn),:disabled,[disabled],.btn-disabled){--btn-noise:none}@media(hover:none){.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-shadow:"";--btn-fg:var(--btn-color,var(--color-base-content));--btn-bg:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab,red,red)){.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-bg:color-mix(in oklab,var(--btn-color,var(--color-base-content))8%,var(--color-base-100))}}.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-border:var(--btn-color,var(--color-base-content))}@supports (color:color-mix(in lab,red,red)){.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-border:color-mix(in oklab,var(--btn-color,var(--color-base-content))10%,var(--color-base-100))}}.btn-soft:not(.btn-active,:active,:focus-visible,input:checked:not(.filter .btn)):hover{--btn-noise:none}}}.fill-current{fill:currentColor}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.px-1\\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-0\\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-8{padding-block:calc(var(--spacing)*8)}.pt-2{padding-top:calc(var(--spacing)*2)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\\[10px\\]{font-size:10px}.leading-normal{--tw-leading:var(--leading-normal);line-height:var(--leading-normal)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.wrap-break-word{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--color-accent)}.text-base-content,.text-base-content\\/90{color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.text-base-content\\/90{color:color-mix(in oklab,var(--color-base-content)90%,transparent)}}.text-error{color:var(--color-error)}.text-info{color:var(--color-info)}.text-primary{color:var(--color-primary)}.text-secondary{color:var(--color-secondary)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.prose :where(.btn-link):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration-line:none}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline-\\(length\\:--border\\){outline-style:var(--tw-outline-style);outline-width:var(--border)}.outline-black\\/5{outline-color:#0000000d}@supports (color:color-mix(in lab,red,red)){.outline-black\\/5{outline-color:color-mix(in oklab,var(--color-black)5%,transparent)}}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-\\[height\\,max-height\\]{transition-property:height,max-height;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}@media(hover:hover){.group-hover\\:border-base-content\\/20:is(:where(.group):hover *){border-color:var(--color-base-content)}@supports (color:color-mix(in lab,red,red)){.group-hover\\:border-base-content\\/20:is(:where(.group):hover *){border-color:color-mix(in oklab,var(--color-base-content)20%,transparent)}}.hover\\:translate-x-\\[15px\\]:hover{--tw-translate-x:15px;translate:var(--tw-translate-x)var(--tw-translate-y)}.hover\\:rotate-15:hover{rotate:15deg}.hover\\:opacity-80:hover{opacity:.8}.hover\\:opacity-100:hover{opacity:1}}@media(min-width:40rem){.sm\\:inline-block{display:inline-block}.sm\\:max-w-none{max-width:none}.sm\\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:48rem){.md\\:flex{display:flex}.md\\:p-6{padding:calc(var(--spacing)*6)}}.\\[\\&_svg\\]\\:visible svg{visibility:visible}}:host{font-family:var(--font-family,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif)}:host([data-font=Lato]){--font-family:"Lato",system-ui,-apple-system,sans-serif}:host([data-font=Montserrat]){--font-family:"Montserrat",system-ui,-apple-system,sans-serif}:host([data-font=Noto\\ Sans]){--font-family:"Noto Sans",system-ui,-apple-system,sans-serif}:host([data-font=Open\\ Sans]){--font-family:"Open Sans",system-ui,-apple-system,sans-serif}:host([data-font=Raleway]){--font-family:"Raleway",system-ui,-apple-system,sans-serif}@media(max-width:640px){[data-tip]:before,[data-tip]:after{white-space:normal!important;word-wrap:break-word!important;overflow-wrap:break-word!important;max-width:200px!important}}@keyframes rating{0%,40%{filter:brightness(1.05)contrast(1.05);scale:1.1}}@keyframes dropdown{0%{opacity:0}}@keyframes radio{0%{padding:5px}50%{padding:3px}}@keyframes toast{0%{opacity:0;scale:.9}to{opacity:1;scale:1}}@keyframes rotator{89.9999%,to{--first-item-position:0 0%}90%,99.9999%{--first-item-position:0 calc(var(--items)*100%)}to{translate:0 -100%}}@keyframes skeleton{0%{background-position:150%}to{background-position:-50%}}@keyframes menu{0%{opacity:0}}@keyframes progress{50%{background-position-x:-115%}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}`;
  dayjs.extend(localizedFormat);
  function loadGoogleFonts(shadowRoot) {
    if (shadowRoot.getElementById("tmd-google-fonts")) {
      return;
    }
    const fontCSS = `@import url('https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&family=Montserrat:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Noto+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Raleway:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap');`;
    if (typeof window.GM_addStyle !== "undefined") {
      window.GM_addStyle(fontCSS);
    } else {
      const chromeRuntime = window.chrome?.runtime;
      if (chromeRuntime && chromeRuntime.sendMessage) {
        chromeRuntime.sendMessage(
          { action: "fetchFontCSS" },
          (response) => {
            if (response && response.success && response.css) {
              const style = document.createElement("style");
              style.id = "tmd-google-fonts";
              style.textContent = response.css;
              shadowRoot.appendChild(style);
            } else {
              try {
                const link = document.createElement("link");
                link.id = "tmd-google-fonts";
                link.rel = "stylesheet";
                link.crossOrigin = "anonymous";
                link.href = "https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&family=Montserrat:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Noto+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Raleway:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap";
                shadowRoot.appendChild(link);
              } catch (e) {
              }
            }
          }
        );
      } else {
        try {
          const link = document.createElement("link");
          link.id = "tmd-google-fonts";
          link.rel = "stylesheet";
          link.crossOrigin = "anonymous";
          link.href = "https://fonts.googleapis.com/css2?family=Lato:ital,wght@0,300;0,400;0,700;1,300;1,400;1,700&family=Montserrat:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Noto+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&family=Raleway:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600;1,700&display=swap";
          shadowRoot.appendChild(link);
        } catch (e) {
        }
      }
    }
  }
  function mountApp() {
    const root = document.createElement("div");
    root.id = "tmd-root";
    document.body.append(root);
    const shadowRoot = root.attachShadow({ mode: "open" });
    loadGoogleFonts(shadowRoot);
    shadowRoot.adoptedStyleSheets = [prepareStyles()];
    preact.render( u(MediaDownloaderApp, {}), shadowRoot);
  }
  function prepareStyles() {
    const shadowSheet = new CSSStyleSheet();
    shadowSheet.replaceSync(styles.replace(/:root/gu, ":host"));
    const globalSheet = new CSSStyleSheet();
    for (const rule of shadowSheet.cssRules) {
      if (rule instanceof CSSPropertyRule) {
        globalSheet.insertRule(rule.cssText);
      }
    }
    document.adoptedStyleSheets.push(globalSheet);
    return shadowSheet;
  }
  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", mountApp);
  } else {
    mountApp();
  }

})(preact, preactSignals, preactHooks, i18next, dayjs, Dexie, FileSaver, gifshot, fflate);