const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/SendMail-gI-QSIA2.js","assets/index.esm-YCBPJhFu.js","assets/index-209f628e.js","assets/index-CeVFrBXC.css","assets/index-BHtaHxM4.css","assets/SendMail-aMwcx0sS.css"])))=>i.map(i=>d[i]);
var __defProp = Object.defineProperty;
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
import { d as ie, h as U, c as Ot, i as Nt, b as qt, a as Vt, e as Ft, f as Oe, _ as pe, r as Ne, u as St, g as Xe, j as jt, k as Wt, l as f, m as Ht, n as Te, w as Ze, o as Ut, p as xe, q as dt, N as ct, X as pt, A as Kt, s as ze, t as Gt, v as mt, x as Jt, y as Qt, z as Qe, B as Xt, C as Zt, D as E, E as Q, F as M, G as ee, H as ue, I as ae, J as te, K as O, L as Ye, M as P, O as le, P as e, Q as t, R as o, S as a, T as Lt, U as Ke, V as m, W as Ee, Y as Ge, Z as Ce, $ as st, a0 as qe, a1 as Yt, a2 as ea, a3 as It, a4 as _t, a5 as de, a6 as ot, a7 as ta, a8 as He, a9 as Mt, aa as Tt, ab as X, ac as rt, ad as Ve, ae as Z, af as aa, ag as Pt, ah as Et, ai as ge, aj as Fe, ak as la, al as re, am as Dt, an as ft, ao as Ue, ap as De, aq as Le, ar as it, as as et, at as vt, au as na, av as ut, aw as Rt, ax as sa, ay as $t, az as Bt, aA as zt, aB as oa, aC as ra, aD as ia, aE as ua, aF as da, aG as ca, aH as pa, aI as ma, __tla as __tla_0 } from "./index-209f628e.js";
let Ql;
let __tla = Promise.all([
  (() => {
    try {
      return __tla_0;
    } catch {
    }
  })()
]).then(async () => {
  const _a = ie({
    name: "Remove",
    render() {
      return U("svg", {
        xmlns: "http://www.w3.org/2000/svg",
        viewBox: "0 0 512 512"
      }, U("line", {
        x1: "400",
        y1: "256",
        x2: "112",
        y2: "256",
        style: `
        fill: none;
        stroke: currentColor;
        stroke-linecap: round;
        stroke-linejoin: round;
        stroke-width: 32px;
      `
      }));
    }
  });
  function fa(_) {
    const { textColorDisabled: d } = _;
    return {
      iconColorDisabled: d
    };
  }
  const va = Ot({
    name: "InputNumber",
    common: Vt,
    peers: {
      Button: qt,
      Input: Nt
    },
    self: fa
  }), ba = Ft([
    Oe("input-number-suffix", `
 display: inline-block;
 margin-right: 10px;
 `),
    Oe("input-number-prefix", `
 display: inline-block;
 margin-left: 10px;
 `)
  ]);
  function ga(_) {
    return _ == null || typeof _ == "string" && _.trim() === "" ? null : Number(_);
  }
  function ha(_) {
    return _.includes(".") && (/^(-)?\d+.*(\.|0)$/.test(_) || /^-?\d*$/.test(_)) || _ === "-" || _ === "-0";
  }
  function lt(_) {
    return _ == null ? true : !Number.isNaN(_);
  }
  function bt(_, d) {
    return typeof _ != "number" ? "" : d === void 0 ? String(_) : _.toFixed(d);
  }
  function nt(_) {
    if (_ === null) return null;
    if (typeof _ == "number") return _;
    {
      const d = Number(_);
      return Number.isNaN(d) ? null : d;
    }
  }
  let gt, ht, ya, Je, wa, ka, xa, Ca, Aa, Sa, Pe, Ua, La, Ia, Ma, Ta, Pa, Ea, yt, Da, Ra, $a, Ba, za, Oa, Na, qa, Va, Fa, ja, Wa, Ha, Ka, Ga, Ja, Qa, Xa, Za, Ya, wt, el, tl, al, ll, nl, sl, ol, rl, il, ul, kt, dl, xt, cl, pl, ml, _l, fl, vl, bl, gl, hl, yl, wl, kl, xl, Cl, Al, Sl, Ul, Ct, Ll, Il, Ml, Tl, Pl, El, Dl, Rl, $l, Bl, At, zl, Ol, Nl, ql, Vl, Fl, jl, Wl, Hl, Kl, Gl;
  gt = 800;
  ht = 100;
  ya = Object.assign(Object.assign({}, Xe.props), {
    autofocus: Boolean,
    loading: {
      type: Boolean,
      default: void 0
    },
    placeholder: String,
    defaultValue: {
      type: Number,
      default: null
    },
    value: Number,
    step: {
      type: [
        Number,
        String
      ],
      default: 1
    },
    min: [
      Number,
      String
    ],
    max: [
      Number,
      String
    ],
    size: String,
    disabled: {
      type: Boolean,
      default: void 0
    },
    validator: Function,
    bordered: {
      type: Boolean,
      default: void 0
    },
    showButton: {
      type: Boolean,
      default: true
    },
    buttonPlacement: {
      type: String,
      default: "right"
    },
    inputProps: Object,
    readonly: Boolean,
    clearable: Boolean,
    keyboard: {
      type: Object,
      default: {}
    },
    updateValueOnInput: {
      type: Boolean,
      default: true
    },
    round: {
      type: Boolean,
      default: void 0
    },
    parse: Function,
    format: Function,
    precision: Number,
    status: String,
    "onUpdate:value": [
      Function,
      Array
    ],
    onUpdateValue: [
      Function,
      Array
    ],
    onFocus: [
      Function,
      Array
    ],
    onBlur: [
      Function,
      Array
    ],
    onClear: [
      Function,
      Array
    ],
    onChange: [
      Function,
      Array
    ]
  });
  Je = ie({
    name: "InputNumber",
    props: ya,
    slots: Object,
    setup(_) {
      const { mergedBorderedRef: d, mergedClsPrefixRef: r, mergedRtlRef: l } = St(_), n = Xe("InputNumber", "-input-number", ba, va, _, r), { localeRef: v } = jt("InputNumber"), p = Wt(_), { mergedSizeRef: s, mergedDisabledRef: y, mergedStatusRef: g } = p, i = f(null), c = f(null), x = f(null), C = f(_.defaultValue), L = Qt(_, "value"), u = Ht(L, C), b = f(""), w = (h) => {
        const V = String(h).split(".")[1];
        return V ? V.length : 0;
      }, N = (h) => {
        const V = [
          _.min,
          _.max,
          _.step,
          h
        ].map((G) => G === void 0 ? 0 : w(G));
        return Math.max(...V);
      }, K = Te(() => {
        const { placeholder: h } = _;
        return h !== void 0 ? h : v.value.placeholder;
      }), D = Te(() => {
        const h = nt(_.step);
        return h !== null ? h === 0 ? 1 : Math.abs(h) : 1;
      }), A = Te(() => {
        const h = nt(_.min);
        return h !== null ? h : null;
      }), I = Te(() => {
        const h = nt(_.max);
        return h !== null ? h : null;
      }), q = () => {
        const { value: h } = u;
        if (lt(h)) {
          const { format: V, precision: G } = _;
          V ? b.value = V(h) : h === null || G === void 0 || w(h) > G ? b.value = bt(h, void 0) : b.value = bt(h, G);
        } else b.value = String(h);
      };
      q();
      const W = (h) => {
        const { value: V } = u;
        if (h === V) {
          q();
          return;
        }
        const { "onUpdate:value": G, onUpdateValue: F, onChange: be } = _, { nTriggerFormInput: ke, nTriggerFormChange: Be } = p;
        be && ze(be, h), F && ze(F, h), G && ze(G, h), C.value = h, ke(), Be();
      }, k = ({ offset: h, doUpdateIfValid: V, fixPrecision: G, isInputing: F }) => {
        const { value: be } = b;
        if (F && ha(be)) return false;
        const ke = (_.parse || ga)(be);
        if (ke === null) return V && W(null), null;
        if (lt(ke)) {
          const Be = w(ke), { precision: We } = _;
          if (We !== void 0 && We < Be && !G) return false;
          let Se = Number.parseFloat((ke + h).toFixed(We ?? N(ke)));
          if (lt(Se)) {
            const { value: tt } = I, { value: at } = A;
            if (tt !== null && Se > tt) {
              if (!V || F) return false;
              Se = tt;
            }
            if (at !== null && Se < at) {
              if (!V || F) return false;
              Se = at;
            }
            return _.validator && !_.validator(Se) ? false : (V && W(Se), Se);
          }
        }
        return false;
      }, $ = Te(() => k({
        offset: 0,
        doUpdateIfValid: false,
        isInputing: false,
        fixPrecision: false
      }) === false), B = Te(() => {
        const { value: h } = u;
        if (_.validator && h === null) return false;
        const { value: V } = D;
        return k({
          offset: -V,
          doUpdateIfValid: false,
          isInputing: false,
          fixPrecision: false
        }) !== false;
      }), Y = Te(() => {
        const { value: h } = u;
        if (_.validator && h === null) return false;
        const { value: V } = D;
        return k({
          offset: +V,
          doUpdateIfValid: false,
          isInputing: false,
          fixPrecision: false
        }) !== false;
      });
      function se(h) {
        const { onFocus: V } = _, { nTriggerFormFocus: G } = p;
        V && ze(V, h), G();
      }
      function _e(h) {
        var V, G;
        if (h.target === ((V = i.value) === null || V === void 0 ? void 0 : V.wrapperElRef)) return;
        const F = k({
          offset: 0,
          doUpdateIfValid: true,
          isInputing: false,
          fixPrecision: true
        });
        if (F !== false) {
          const Be = (G = i.value) === null || G === void 0 ? void 0 : G.inputElRef;
          Be && (Be.value = String(F || "")), u.value === F && q();
        } else q();
        const { onBlur: be } = _, { nTriggerFormBlur: ke } = p;
        be && ze(be, h), ke(), Gt(() => {
          q();
        });
      }
      function S(h) {
        const { onClear: V } = _;
        V && ze(V, h);
      }
      function R() {
        const { value: h } = Y;
        if (!h) {
          j();
          return;
        }
        const { value: V } = u;
        if (V === null) _.validator || W(ce());
        else {
          const { value: G } = D;
          k({
            offset: G,
            doUpdateIfValid: true,
            isInputing: false,
            fixPrecision: true
          });
        }
      }
      function ne() {
        const { value: h } = B;
        if (!h) {
          J();
          return;
        }
        const { value: V } = u;
        if (V === null) _.validator || W(ce());
        else {
          const { value: G } = D;
          k({
            offset: -G,
            doUpdateIfValid: true,
            isInputing: false,
            fixPrecision: true
          });
        }
      }
      const he = se, z = _e;
      function ce() {
        if (_.validator) return null;
        const { value: h } = A, { value: V } = I;
        return h !== null ? Math.max(0, h) : V !== null ? Math.min(0, V) : 0;
      }
      function H(h) {
        S(h), W(null);
      }
      function je(h) {
        var V, G, F;
        !((V = x.value) === null || V === void 0) && V.$el.contains(h.target) && h.preventDefault(), !((G = c.value) === null || G === void 0) && G.$el.contains(h.target) && h.preventDefault(), (F = i.value) === null || F === void 0 || F.activate();
      }
      let ye = null, we = null, oe = null;
      function J() {
        oe && (window.clearTimeout(oe), oe = null), ye && (window.clearInterval(ye), ye = null);
      }
      let T = null;
      function j() {
        T && (window.clearTimeout(T), T = null), we && (window.clearInterval(we), we = null);
      }
      function Ie() {
        J(), oe = window.setTimeout(() => {
          ye = window.setInterval(() => {
            ne();
          }, ht);
        }, gt), mt("mouseup", document, J, {
          once: true
        });
      }
      function me() {
        j(), T = window.setTimeout(() => {
          we = window.setInterval(() => {
            R();
          }, ht);
        }, gt), mt("mouseup", document, j, {
          once: true
        });
      }
      const fe = () => {
        we || R();
      }, Re = () => {
        ye || ne();
      };
      function Me(h) {
        var V, G;
        if (h.key === "Enter") {
          if (h.target === ((V = i.value) === null || V === void 0 ? void 0 : V.wrapperElRef)) return;
          k({
            offset: 0,
            doUpdateIfValid: true,
            isInputing: false,
            fixPrecision: true
          }) !== false && ((G = i.value) === null || G === void 0 || G.deactivate());
        } else if (h.key === "ArrowUp") {
          if (!Y.value || _.keyboard.ArrowUp === false) return;
          h.preventDefault(), k({
            offset: 0,
            doUpdateIfValid: true,
            isInputing: false,
            fixPrecision: true
          }) !== false && R();
        } else if (h.key === "ArrowDown") {
          if (!B.value || _.keyboard.ArrowDown === false) return;
          h.preventDefault(), k({
            offset: 0,
            doUpdateIfValid: true,
            isInputing: false,
            fixPrecision: true
          }) !== false && ne();
        }
      }
      function ve(h) {
        b.value = h, _.updateValueOnInput && !_.format && !_.parse && _.precision === void 0 && k({
          offset: 0,
          doUpdateIfValid: true,
          isInputing: true,
          fixPrecision: false
        });
      }
      Ze(u, () => {
        q();
      });
      const Ae = {
        focus: () => {
          var h;
          return (h = i.value) === null || h === void 0 ? void 0 : h.focus();
        },
        blur: () => {
          var h;
          return (h = i.value) === null || h === void 0 ? void 0 : h.blur();
        },
        select: () => {
          var h;
          return (h = i.value) === null || h === void 0 ? void 0 : h.select();
        }
      }, $e = Ut("InputNumber", l, r);
      return Object.assign(Object.assign({}, Ae), {
        rtlEnabled: $e,
        inputInstRef: i,
        minusButtonInstRef: c,
        addButtonInstRef: x,
        mergedClsPrefix: r,
        mergedBordered: d,
        uncontrolledValue: C,
        mergedValue: u,
        mergedPlaceholder: K,
        displayedValueInvalid: $,
        mergedSize: s,
        mergedDisabled: y,
        displayedValue: b,
        addable: Y,
        minusable: B,
        mergedStatus: g,
        handleFocus: he,
        handleBlur: z,
        handleClear: H,
        handleMouseDown: je,
        handleAddClick: fe,
        handleMinusClick: Re,
        handleAddMousedown: me,
        handleMinusMousedown: Ie,
        handleKeyDown: Me,
        handleUpdateDisplayedValue: ve,
        mergedTheme: n,
        inputThemeOverrides: {
          paddingSmall: "0 8px 0 10px",
          paddingMedium: "0 8px 0 12px",
          paddingLarge: "0 8px 0 14px"
        },
        buttonThemeOverrides: xe(() => {
          const { self: { iconColorDisabled: h } } = n.value, [V, G, F, be] = Jt(h);
          return {
            textColorTextDisabled: `rgb(${V}, ${G}, ${F})`,
            opacityDisabled: `${be}`
          };
        })
      });
    },
    render() {
      const { mergedClsPrefix: _, $slots: d } = this, r = () => U(pt, {
        text: true,
        disabled: !this.minusable || this.mergedDisabled || this.readonly,
        focusable: false,
        theme: this.mergedTheme.peers.Button,
        themeOverrides: this.mergedTheme.peerOverrides.Button,
        builtinThemeOverrides: this.buttonThemeOverrides,
        onClick: this.handleMinusClick,
        onMousedown: this.handleMinusMousedown,
        ref: "minusButtonInstRef"
      }, {
        icon: () => dt(d["minus-icon"], () => [
          U(ct, {
            clsPrefix: _
          }, {
            default: () => U(_a, null)
          })
        ])
      }), l = () => U(pt, {
        text: true,
        disabled: !this.addable || this.mergedDisabled || this.readonly,
        focusable: false,
        theme: this.mergedTheme.peers.Button,
        themeOverrides: this.mergedTheme.peerOverrides.Button,
        builtinThemeOverrides: this.buttonThemeOverrides,
        onClick: this.handleAddClick,
        onMousedown: this.handleAddMousedown,
        ref: "addButtonInstRef"
      }, {
        icon: () => dt(d["add-icon"], () => [
          U(ct, {
            clsPrefix: _
          }, {
            default: () => U(Kt, null)
          })
        ])
      });
      return U("div", {
        class: [
          `${_}-input-number`,
          this.rtlEnabled && `${_}-input-number--rtl`
        ]
      }, U(pe, {
        ref: "inputInstRef",
        autofocus: this.autofocus,
        status: this.mergedStatus,
        bordered: this.mergedBordered,
        loading: this.loading,
        value: this.displayedValue,
        onUpdateValue: this.handleUpdateDisplayedValue,
        theme: this.mergedTheme.peers.Input,
        themeOverrides: this.mergedTheme.peerOverrides.Input,
        builtinThemeOverrides: this.inputThemeOverrides,
        size: this.mergedSize,
        placeholder: this.mergedPlaceholder,
        disabled: this.mergedDisabled,
        readonly: this.readonly,
        round: this.round,
        textDecoration: this.displayedValueInvalid ? "line-through" : void 0,
        onFocus: this.handleFocus,
        onBlur: this.handleBlur,
        onKeydown: this.handleKeyDown,
        onMousedown: this.handleMouseDown,
        onClear: this.handleClear,
        clearable: this.clearable,
        inputProps: this.inputProps,
        internalLoadingBeforeSuffix: true
      }, {
        prefix: () => {
          var n;
          return this.showButton && this.buttonPlacement === "both" ? [
            r(),
            Ne(d.prefix, (v) => v ? U("span", {
              class: `${_}-input-number-prefix`
            }, v) : null)
          ] : (n = d.prefix) === null || n === void 0 ? void 0 : n.call(d);
        },
        suffix: () => {
          var n;
          return this.showButton ? [
            Ne(d.suffix, (v) => v ? U("span", {
              class: `${_}-input-number-suffix`
            }, v) : null),
            this.buttonPlacement === "right" ? r() : null,
            l()
          ] : (n = d.suffix) === null || n === void 0 ? void 0 : n.call(d);
        }
      }));
    }
  });
  wa = Oe("statistic", [
    Qe("label", `
 font-weight: var(--n-label-font-weight);
 transition: .3s color var(--n-bezier);
 font-size: var(--n-label-font-size);
 color: var(--n-label-text-color);
 `),
    Oe("statistic-value", `
 margin-top: 4px;
 font-weight: var(--n-value-font-weight);
 `, [
      Qe("prefix", `
 margin: 0 4px 0 0;
 font-size: var(--n-value-font-size);
 transition: .3s color var(--n-bezier);
 color: var(--n-value-prefix-text-color);
 `, [
        Oe("icon", {
          verticalAlign: "-0.125em"
        })
      ]),
      Qe("content", `
 font-size: var(--n-value-font-size);
 transition: .3s color var(--n-bezier);
 color: var(--n-value-text-color);
 `),
      Qe("suffix", `
 margin: 0 0 0 4px;
 font-size: var(--n-value-font-size);
 transition: .3s color var(--n-bezier);
 color: var(--n-value-suffix-text-color);
 `, [
        Oe("icon", {
          verticalAlign: "-0.125em"
        })
      ])
    ])
  ]);
  ka = Object.assign(Object.assign({}, Xe.props), {
    tabularNums: Boolean,
    label: String,
    value: [
      String,
      Number
    ]
  });
  xa = ie({
    name: "Statistic",
    props: ka,
    slots: Object,
    setup(_) {
      const { mergedClsPrefixRef: d, inlineThemeDisabled: r, mergedRtlRef: l } = St(_), n = Xe("Statistic", "-statistic", wa, Xt, _, d), v = Ut("Statistic", l, d), p = xe(() => {
        const { self: { labelFontWeight: y, valueFontSize: g, valueFontWeight: i, valuePrefixTextColor: c, labelTextColor: x, valueSuffixTextColor: C, valueTextColor: L, labelFontSize: u }, common: { cubicBezierEaseInOut: b } } = n.value;
        return {
          "--n-bezier": b,
          "--n-label-font-size": u,
          "--n-label-font-weight": y,
          "--n-label-text-color": x,
          "--n-value-font-weight": i,
          "--n-value-font-size": g,
          "--n-value-prefix-text-color": c,
          "--n-value-suffix-text-color": C,
          "--n-value-text-color": L
        };
      }), s = r ? Zt("statistic", void 0, p, _) : void 0;
      return {
        rtlEnabled: v,
        mergedClsPrefix: d,
        cssVars: r ? void 0 : p,
        themeClass: s == null ? void 0 : s.themeClass,
        onRender: s == null ? void 0 : s.onRender
      };
    },
    render() {
      var _;
      const { mergedClsPrefix: d, $slots: { default: r, label: l, prefix: n, suffix: v } } = this;
      return (_ = this.onRender) === null || _ === void 0 || _.call(this), U("div", {
        class: [
          `${d}-statistic`,
          this.themeClass,
          this.rtlEnabled && `${d}-statistic--rtl`
        ],
        style: this.cssVars
      }, Ne(l, (p) => U("div", {
        class: `${d}-statistic__label`
      }, this.label || p)), U("div", {
        class: `${d}-statistic-value`,
        style: {
          fontVariantNumeric: this.tabularNums ? "tabular-nums" : ""
        }
      }, Ne(n, (p) => p && U("span", {
        class: `${d}-statistic-value__prefix`
      }, p)), this.value !== void 0 ? U("span", {
        class: `${d}-statistic-value__content`
      }, this.value) : Ne(r, (p) => p && U("span", {
        class: `${d}-statistic-value__content`
      }, p)), Ne(v, (p) => p && U("span", {
        class: `${d}-statistic-value__suffix`
      }, p))));
    }
  });
  Ca = {
    xmlns: "http://www.w3.org/2000/svg",
    "xmlns:xlink": "http://www.w3.org/1999/xlink",
    viewBox: "0 0 24 24"
  };
  Aa = ie({
    name: "AddFilled",
    render: function(d, r) {
      return E(), Q("svg", Ca, r[0] || (r[0] = [
        M("path", {
          d: "M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z",
          fill: "currentColor"
        }, null, -1)
      ]));
    }
  });
  Sa = {
    xmlns: "http://www.w3.org/2000/svg",
    "xmlns:xlink": "http://www.w3.org/1999/xlink",
    viewBox: "0 0 24 24"
  };
  Pe = ie({
    name: "CleaningServicesFilled",
    render: function(d, r) {
      return E(), Q("svg", Sa, r[0] || (r[0] = [
        M("path", {
          d: "M16 11h-1V3c0-1.1-.9-2-2-2h-2c-1.1 0-2 .9-2 2v8H8c-2.76 0-5 2.24-5 5v7h18v-7c0-2.76-2.24-5-5-5zm3 10h-2v-3c0-.55-.45-1-1-1s-1 .45-1 1v3h-2v-3c0-.55-.45-1-1-1s-1 .45-1 1v3H9v-3c0-.55-.45-1-1-1s-1 .45-1 1v3H5v-5c0-1.65 1.35-3 3-3h8c1.65 0 3 1.35 3 3v5z",
          fill: "currentColor"
        }, null, -1)
      ]));
    }
  });
  Ua = {
    xmlns: "http://www.w3.org/2000/svg",
    "xmlns:xlink": "http://www.w3.org/1999/xlink",
    viewBox: "0 0 24 24"
  };
  La = ie({
    name: "DeleteFilled",
    render: function(d, r) {
      return E(), Q("svg", Ua, r[0] || (r[0] = [
        M("path", {
          d: "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z",
          fill: "currentColor"
        }, null, -1)
      ]));
    }
  });
  Ia = {
    xmlns: "http://www.w3.org/2000/svg",
    "xmlns:xlink": "http://www.w3.org/1999/xlink",
    viewBox: "0 0 24 24"
  };
  Ma = ie({
    name: "SendOutlined",
    render: function(d, r) {
      return E(), Q("svg", Ia, r[0] || (r[0] = [
        M("path", {
          d: "M4.01 6.03l7.51 3.22l-7.52-1l.01-2.22m7.5 8.72L4 17.97v-2.22l7.51-1M2.01 3L2 10l15 2l-15 2l.01 7L23 12L2.01 3z",
          fill: "currentColor"
        }, null, -1)
      ]));
    }
  });
  Ta = {
    xmlns: "http://www.w3.org/2000/svg",
    "xmlns:xlink": "http://www.w3.org/1999/xlink",
    viewBox: "0 0 576 512"
  };
  Pa = ie({
    name: "MailBulk",
    render: function(d, r) {
      return E(), Q("svg", Ta, r[0] || (r[0] = [
        M("path", {
          d: "M160 448c-25.6 0-51.2-22.4-64-32c-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4c-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4c9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z",
          fill: "currentColor"
        }, null, -1)
      ]));
    }
  });
  Ea = {
    xmlns: "http://www.w3.org/2000/svg",
    "xmlns:xlink": "http://www.w3.org/1999/xlink",
    viewBox: "0 0 640 512"
  };
  yt = ie({
    name: "UserCheck",
    render: function(d, r) {
      return E(), Q("svg", Ea, r[0] || (r[0] = [
        M("path", {
          d: "M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0S96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104l-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z",
          fill: "currentColor"
        }, null, -1)
      ]));
    }
  });
  Da = {
    style: {
      overflow: "auto"
    }
  };
  Ra = {
    style: {
      display: "inline-block"
    }
  };
  $a = {
    __name: "SenderAccess",
    setup(_) {
      const { loading: d } = ue(), r = ae(), { t: l } = te({
        messages: {
          en: {
            address: "Address",
            success: "Success",
            is_enabled: "Is Enabled",
            enable: "Enable",
            disable: "Disable",
            modify: "Modify",
            delete: "Delete",
            deleteTip: "Are you sure to delete this?",
            created_at: "Created At",
            action: "Action",
            itemCount: "itemCount",
            modalTip: "Please input the sender balance",
            balance: "Balance",
            query: "Query",
            ok: "OK"
          },
          zh: {
            address: "\u5730\u5740",
            success: "\u6210\u529F",
            is_enabled: "\u662F\u5426\u542F\u7528",
            enable: "\u542F\u7528",
            disable: "\u7981\u7528",
            modify: "\u4FEE\u6539",
            delete: "\u5220\u9664",
            deleteTip: "\u786E\u5B9A\u5220\u9664\u5417\uFF1F",
            created_at: "\u521B\u5EFA\u65F6\u95F4",
            action: "\u64CD\u4F5C",
            itemCount: "\u603B\u6570",
            modalTip: "\u8BF7\u8F93\u5165\u53D1\u4EF6\u989D\u5EA6",
            balance: "\u4F59\u989D",
            query: "\u67E5\u8BE2",
            ok: "\u786E\u5B9A"
          }
        }
      }), n = f([]), v = f(0), p = f(1), s = f(20), y = f({}), g = f(false), i = f(0), c = f(false), x = f(""), C = async () => {
        try {
          await P.fetch("/admin/address_sender", {
            method: "POST",
            body: JSON.stringify({
              address: y.value.address,
              address_id: y.value.id,
              balance: i.value,
              enabled: c.value ? 1 : 0
            })
          }), g.value = false, r.success(l("success")), await L();
        } catch (b) {
          r.error(b.message || "error");
        }
      }, L = async () => {
        try {
          x.value = x.value.trim();
          const { results: b, count: w } = await P.fetch(`/admin/address_sender?limit=${s.value}&offset=${(p.value - 1) * s.value}` + (x.value ? `&address=${x.value}` : ""));
          n.value = b, w > 0 && (v.value = w);
        } catch (b) {
          console.log(b), r.error(b.message || "error");
        }
      }, u = [
        {
          title: "ID",
          key: "id"
        },
        {
          title: l("address"),
          key: "address"
        },
        {
          title: l("created_at"),
          key: "created_at"
        },
        {
          title: l("balance"),
          key: "balance"
        },
        {
          title: l("is_enabled"),
          key: "enabled",
          render(b) {
            return U("div", [
              U("span", b.enabled ? l("enable") : l("disable"))
            ]);
          }
        },
        {
          title: l("action"),
          key: "actions",
          render(b) {
            return U("div", [
              U(O, {
                type: "success",
                tertiary: true,
                onClick: () => {
                  g.value = true, y.value = b, c.value = !!b.enabled, i.value = b.balance;
                }
              }, {
                default: () => l("modify")
              }),
              U(Ye, {
                onPositiveClick: async () => {
                  await P.fetch(`/admin/address_sender/${b.id}`, {
                    method: "DELETE"
                  }), await L();
                }
              }, {
                trigger: () => U(O, {
                  tertiary: true,
                  type: "error"
                }, {
                  default: () => l("delete")
                }),
                default: () => l("deleteTip")
              })
            ]);
          }
        }
      ];
      return Ze([
        p,
        s
      ], async () => {
        await L();
      }), le(async () => {
        await L();
      }), (b, w) => {
        const N = Ke, K = Lt, D = Je, A = O, I = Ee, q = pe, W = Ce, k = st, $ = qe;
        return E(), Q("div", null, [
          e(I, {
            show: g.value,
            "onUpdate:show": w[3] || (w[3] = (B) => g.value = B),
            preset: "dialog"
          }, {
            action: t(() => [
              e(A, {
                loading: a(d),
                onClick: w[2] || (w[2] = (B) => C()),
                size: "small",
                tertiary: "",
                type: "primary"
              }, {
                default: t(() => [
                  m(o(a(l)("ok")), 1)
                ]),
                _: 1
              }, 8, [
                "loading"
              ])
            ]),
            default: t(() => [
              M("p", null, o(y.value.address), 1),
              M("p", null, o(a(l)("modalTip")), 1),
              e(K, {
                "show-label": false
              }, {
                default: t(() => [
                  e(N, {
                    checked: c.value,
                    "onUpdate:checked": w[0] || (w[0] = (B) => c.value = B)
                  }, {
                    default: t(() => [
                      m(o(a(l)("enable")), 1)
                    ]),
                    _: 1
                  }, 8, [
                    "checked"
                  ])
                ]),
                _: 1
              }),
              e(K, {
                "show-label": false
              }, {
                default: t(() => [
                  e(D, {
                    value: i.value,
                    "onUpdate:value": w[1] || (w[1] = (B) => i.value = B),
                    min: 0,
                    max: 1e3
                  }, null, 8, [
                    "value"
                  ])
                ]),
                _: 1
              })
            ]),
            _: 1
          }, 8, [
            "show"
          ]),
          e(W, null, {
            default: t(() => [
              e(q, {
                value: x.value,
                "onUpdate:value": w[4] || (w[4] = (B) => x.value = B),
                onKeydown: Ge(L, [
                  "enter"
                ])
              }, null, 8, [
                "value"
              ]),
              e(A, {
                onClick: L,
                type: "primary",
                tertiary: ""
              }, {
                default: t(() => [
                  m(o(a(l)("query")), 1)
                ]),
                _: 1
              })
            ]),
            _: 1
          }),
          M("div", Da, [
            M("div", Ra, [
              e(k, {
                page: p.value,
                "onUpdate:page": w[5] || (w[5] = (B) => p.value = B),
                "page-size": s.value,
                "onUpdate:pageSize": w[6] || (w[6] = (B) => s.value = B),
                "item-count": v.value,
                "page-sizes": [
                  20,
                  50,
                  100
                ],
                "show-size-picker": ""
              }, {
                prefix: t(({ itemCount: B }) => [
                  m(o(a(l)("itemCount")) + ": " + o(B), 1)
                ]),
                _: 1
              }, 8, [
                "page",
                "page-size",
                "item-count"
              ])
            ]),
            e($, {
              columns: u,
              data: n.value,
              bordered: false,
              embedded: ""
            }, null, 8, [
              "data"
            ])
          ])
        ]);
      };
    }
  };
  Ba = ee($a, [
    [
      "__scopeId",
      "data-v-bd8929db"
    ]
  ]);
  za = {
    __name: "Statistics",
    setup(_) {
      const d = ae(), { t: r } = te({
        messages: {
          en: {
            userCount: "User Count",
            addressCount: "Address Count",
            activeAddressCount7days: "7 days Active Address Count",
            activeAddressCount30days: "30 days Active Address Count",
            mailCount: "Mail Count",
            sendMailCount: "Send Mail Count"
          },
          zh: {
            userCount: "\u7528\u6237\u603B\u6570",
            addressCount: "\u90AE\u7BB1\u5730\u5740\u603B\u6570",
            activeAddressCount7days: "7\u5929\u6D3B\u8DC3\u90AE\u7BB1\u5730\u5740\u603B\u6570",
            activeAddressCount30days: "30\u5929\u6D3B\u8DC3\u90AE\u7BB1\u5730\u5740\u603B\u6570",
            mailCount: "\u90AE\u4EF6\u603B\u6570",
            sendMailCount: "\u53D1\u9001\u90AE\u4EF6\u603B\u6570"
          }
        }
      }), l = f({
        addressCount: 0,
        userCount: 0,
        mailCount: 0,
        activeAddressCount7days: 0,
        activeAddressCount30days: 0,
        sendMailCount: 0
      }), n = async () => {
        try {
          const { userCount: v, mailCount: p, sendMailCount: s, addressCount: y, activeAddressCount7days: g, activeAddressCount30days: i } = await P.fetch("/admin/statistics");
          l.value.mailCount = p || 0, l.value.sendMailCount = s || 0, l.value.userCount = v || 0, l.value.addressCount = y || 0, l.value.activeAddressCount7days = g || 0, l.value.activeAddressCount30days = i || 0;
        } catch (v) {
          console.log(v), d.error(v.message || "error");
        }
      };
      return le(async () => {
        await n();
      }), (v, p) => {
        const s = It, y = xa, g = ea, i = Yt, c = de;
        return E(), Q("div", null, [
          e(c, {
            bordered: false,
            embedded: ""
          }, {
            default: t(() => [
              e(i, null, {
                default: t(() => [
                  e(g, {
                    span: 8
                  }, {
                    default: t(() => [
                      e(y, {
                        label: a(r)("addressCount"),
                        value: l.value.addressCount
                      }, {
                        prefix: t(() => [
                          e(s, {
                            component: a(_t)
                          }, null, 8, [
                            "component"
                          ])
                        ]),
                        _: 1
                      }, 8, [
                        "label",
                        "value"
                      ])
                    ]),
                    _: 1
                  }),
                  e(g, {
                    span: 8
                  }, {
                    default: t(() => [
                      e(y, {
                        label: a(r)("activeAddressCount7days"),
                        value: l.value.activeAddressCount7days
                      }, {
                        prefix: t(() => [
                          e(s, {
                            component: a(yt)
                          }, null, 8, [
                            "component"
                          ])
                        ]),
                        _: 1
                      }, 8, [
                        "label",
                        "value"
                      ])
                    ]),
                    _: 1
                  }),
                  e(g, {
                    span: 8
                  }, {
                    default: t(() => [
                      e(y, {
                        label: a(r)("activeAddressCount30days"),
                        value: l.value.activeAddressCount30days
                      }, {
                        prefix: t(() => [
                          e(s, {
                            component: a(yt)
                          }, null, 8, [
                            "component"
                          ])
                        ]),
                        _: 1
                      }, 8, [
                        "label",
                        "value"
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              })
            ]),
            _: 1
          }),
          e(c, {
            bordered: false,
            embedded: ""
          }, {
            default: t(() => [
              e(i, null, {
                default: t(() => [
                  e(g, {
                    span: 8
                  }, {
                    default: t(() => [
                      e(y, {
                        label: a(r)("userCount"),
                        value: l.value.userCount
                      }, {
                        prefix: t(() => [
                          e(s, {
                            component: a(_t)
                          }, null, 8, [
                            "component"
                          ])
                        ]),
                        _: 1
                      }, 8, [
                        "label",
                        "value"
                      ])
                    ]),
                    _: 1
                  }),
                  e(g, {
                    span: 8
                  }, {
                    default: t(() => [
                      e(y, {
                        label: a(r)("mailCount"),
                        value: l.value.mailCount
                      }, {
                        prefix: t(() => [
                          e(s, {
                            component: a(Pa)
                          }, null, 8, [
                            "component"
                          ])
                        ]),
                        _: 1
                      }, 8, [
                        "label",
                        "value"
                      ])
                    ]),
                    _: 1
                  }),
                  e(g, {
                    span: 8
                  }, {
                    default: t(() => [
                      e(y, {
                        label: a(r)("sendMailCount"),
                        value: l.value.sendMailCount
                      }, {
                        prefix: t(() => [
                          e(s, {
                            component: a(Ma)
                          }, null, 8, [
                            "component"
                          ])
                        ]),
                        _: 1
                      }, 8, [
                        "label",
                        "value"
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              })
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  Oa = ee(za, [
    [
      "__scopeId",
      "data-v-b73833c7"
    ]
  ]);
  Na = {
    __name: "SendBox",
    setup(_) {
      const { adminSendBoxTabAddress: d } = ue(), { t: r } = te({
        messages: {
          en: {
            query: "Query",
            queryTip: "Please input address to query, leave blank to query all"
          },
          zh: {
            query: "\u67E5\u8BE2",
            queryTip: "\u8BF7\u8F93\u5165\u5730\u5740\u67E5\u8BE2, \u7559\u7A7A\u5219\u67E5\u8BE2\u6240\u6709"
          }
        }
      }), l = async (v, p) => (d.value = d.value.trim(), await P.fetch(`/admin/sendbox?limit=${v}&offset=${p}` + (d.value ? `&address=${d.value}` : ""))), n = async (v) => {
        await P.fetch(`/admin/sendbox/${v}`, {
          method: "DELETE"
        });
      };
      return (v, p) => {
        const s = pe, y = O, g = Ce;
        return E(), Q("div", null, [
          e(g, null, {
            default: t(() => [
              e(s, {
                value: a(d),
                "onUpdate:value": p[0] || (p[0] = (i) => ot(d) ? d.value = i : null),
                placeholder: a(r)("queryTip"),
                onKeydown: Ge(l, [
                  "enter"
                ])
              }, null, 8, [
                "value",
                "placeholder"
              ]),
              e(y, {
                onClick: l,
                type: "primary",
                tertiary: ""
              }, {
                default: t(() => [
                  m(o(a(r)("query")), 1)
                ]),
                _: 1
              })
            ]),
            _: 1
          }),
          e(ta, {
            style: {
              "margin-top": "10px"
            },
            enableUserDeleteEmail: true,
            deleteMail: n,
            fetchMailData: l,
            showEMailFrom: true
          })
        ]);
      };
    }
  };
  qa = ee(Na, [
    [
      "__scopeId",
      "data-v-fbae4450"
    ]
  ]);
  Va = {
    style: {
      "margin-top": "10px"
    }
  };
  Fa = {
    style: {
      overflow: "auto"
    }
  };
  ja = {
    style: {
      display: "inline-block"
    }
  };
  Wa = {
    style: {
      "text-align": "center"
    }
  };
  Ha = {
    __name: "Account",
    setup(_) {
      const { loading: d, adminTab: r, openSettings: l, adminMailTabAddress: n, adminSendBoxTabAddress: v } = ue(), p = ae(), { t: s } = te({
        messages: {
          en: {
            name: "Name",
            created_at: "Created At",
            updated_at: "Update At",
            mail_count: "Mail Count",
            send_count: "Send Count",
            source_meta: "Source",
            showCredential: "Show Mail Address Credential",
            addressCredential: "Mail Address Credential",
            addressCredentialTip: "Please copy the Mail Address Credential and you can use it to login to your email account.",
            delete: "Delete",
            deleteTip: "Are you sure to delete this email?",
            deleteAccount: "Delete Account",
            viewMails: "View Mails",
            viewSendBox: "View SendBox",
            itemCount: "itemCount",
            query: "Query",
            addressQueryTip: "Leave blank to query all addresses",
            clearInbox: "Clear Inbox",
            clearSentItems: "Clear Sent Items",
            clearInboxTip: "Are you sure to clear inbox for this email?",
            clearSentItemsTip: "Are you sure to clear sent items for this email?",
            actions: "Actions",
            success: "Success",
            resetPassword: "Reset Password",
            newPassword: "New Password",
            passwordResetSuccess: "Password reset successfully",
            selectAll: "Select All of This Page",
            unselectAll: "Unselect All",
            pleaseSelectAddress: "Please select address",
            selectedItems: "Selected",
            multiDelete: "Multi Delete",
            multiDeleteTip: "Are you sure to delete selected addresses?",
            multiClearInbox: "Multi Clear Inbox",
            multiClearInboxTip: "Are you sure to clear inbox for selected addresses?",
            multiClearSentItems: "Multi Clear Sent Items",
            multiClearSentItemsTip: "Are you sure to clear sent items for selected addresses?"
          },
          zh: {
            name: "\u540D\u79F0",
            created_at: "\u521B\u5EFA\u65F6\u95F4",
            updated_at: "\u66F4\u65B0\u65F6\u95F4",
            mail_count: "\u90AE\u4EF6\u6570\u91CF",
            send_count: "\u53D1\u9001\u6570\u91CF",
            source_meta: "\u6765\u6E90",
            showCredential: "\u67E5\u770B\u90AE\u7BB1\u5730\u5740\u51ED\u8BC1",
            addressCredential: "\u90AE\u7BB1\u5730\u5740\u51ED\u8BC1",
            addressCredentialTip: "\u8BF7\u590D\u5236\u90AE\u7BB1\u5730\u5740\u51ED\u8BC1\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528\u5B83\u767B\u5F55\u4F60\u7684\u90AE\u7BB1\u3002",
            delete: "\u5220\u9664",
            deleteTip: "\u786E\u5B9A\u8981\u5220\u9664\u8FD9\u4E2A\u90AE\u7BB1\u5417\uFF1F",
            deleteAccount: "\u5220\u9664\u90AE\u7BB1",
            viewMails: "\u67E5\u770B\u90AE\u4EF6",
            viewSendBox: "\u67E5\u770B\u53D1\u4EF6\u7BB1",
            itemCount: "\u603B\u6570",
            query: "\u67E5\u8BE2",
            addressQueryTip: "\u7559\u7A7A\u67E5\u8BE2\u6240\u6709\u5730\u5740",
            clearInbox: "\u6E05\u7A7A\u6536\u4EF6\u7BB1",
            clearSentItems: "\u6E05\u7A7A\u53D1\u4EF6\u7BB1",
            clearInboxTip: "\u786E\u5B9A\u8981\u6E05\u7A7A\u8FD9\u4E2A\u90AE\u7BB1\u7684\u6536\u4EF6\u7BB1\u5417\uFF1F",
            clearSentItemsTip: "\u786E\u5B9A\u8981\u6E05\u7A7A\u8FD9\u4E2A\u90AE\u7BB1\u7684\u53D1\u4EF6\u7BB1\u5417\uFF1F",
            actions: "\u64CD\u4F5C",
            success: "\u6210\u529F",
            resetPassword: "\u91CD\u7F6E\u5BC6\u7801",
            newPassword: "\u65B0\u5BC6\u7801",
            passwordResetSuccess: "\u5BC6\u7801\u91CD\u7F6E\u6210\u529F",
            selectAll: "\u5168\u9009\u672C\u9875",
            unselectAll: "\u53D6\u6D88\u5168\u9009",
            pleaseSelectAddress: "\u8BF7\u9009\u62E9\u5730\u5740",
            selectedItems: "\u5DF2\u9009\u62E9",
            multiDelete: "\u6279\u91CF\u5220\u9664",
            multiDeleteTip: "\u786E\u5B9A\u8981\u5220\u9664\u9009\u4E2D\u7684\u90AE\u7BB1\u5417\uFF1F",
            multiClearInbox: "\u6279\u91CF\u6E05\u7A7A\u6536\u4EF6\u7BB1",
            multiClearInboxTip: "\u786E\u5B9A\u8981\u6E05\u7A7A\u9009\u4E2D\u90AE\u7BB1\u7684\u6536\u4EF6\u7BB1\u5417\uFF1F",
            multiClearSentItems: "\u6279\u91CF\u6E05\u7A7A\u53D1\u4EF6\u7BB1",
            multiClearSentItemsTip: "\u786E\u5B9A\u8981\u6E05\u7A7A\u9009\u4E2D\u90AE\u7BB1\u7684\u53D1\u4EF6\u7BB1\u5417\uFF1F"
          }
        }
      }), y = f(false), g = f(""), i = f(0), c = f(0), x = f(0), C = f(false), L = f(0), u = f(""), b = f([]), w = f(false), N = f({
        percentage: 0,
        tip: "0/0"
      }), K = f(""), D = xe(() => b.value.length), A = xe(() => b.value.length > 0), I = f(""), q = f([]), W = f(0), k = f(1), $ = f(20), B = f(false), Y = f(false), se = f(false), _e = async (T) => {
        try {
          g.value = await P.adminShowAddressCredential(T), y.value = true;
        } catch (j) {
          p.error(j.message || "error"), y.value = false, g.value = "";
        }
      }, S = async () => {
        try {
          await P.adminDeleteAddress(i.value), p.success(s("success")), await oe();
        } catch (T) {
          p.error(T.message || "error");
        } finally {
          B.value = false;
        }
      }, R = async () => {
        try {
          await P.fetch(`/admin/clear_inbox/${c.value}`, {
            method: "DELETE"
          }), p.success(s("success")), await oe();
        } catch (T) {
          p.error(T.message || "error");
        } finally {
          Y.value = false;
        }
      }, ne = async () => {
        try {
          await P.fetch(`/admin/clear_sent_items/${x.value}`, {
            method: "DELETE"
          }), p.success(s("success")), await oe();
        } catch (T) {
          p.error(T.message || "error");
        } finally {
          se.value = false;
        }
      }, he = async () => {
        try {
          await P.fetch(`/admin/address/${L.value}/reset_password`, {
            method: "POST",
            body: JSON.stringify({
              password: u.value
            })
          }), p.success(s("passwordResetSuccess")), u.value = "", C.value = false;
        } catch (T) {
          p.error(T.message || "error");
        }
      }, z = () => {
        b.value = q.value.map((T) => T.id);
      }, ce = () => {
        b.value = [];
      }, H = async ({ shouldSkip: T = () => false, apiCall: j, title: Ie, operationName: me = "operation" }) => {
        try {
          d.value = true;
          const fe = q.value.filter((ve) => b.value.includes(ve.id));
          if (fe.length === 0) {
            p.error(s("pleaseSelectAddress"));
            return;
          }
          const Re = [], Me = fe.length;
          N.value = {
            percentage: 0,
            tip: `0/${Me}`
          }, K.value = Ie, w.value = true;
          for (const [ve, Ae] of fe.entries()) {
            try {
              T(Ae) || await j(Ae.id);
            } catch ($e) {
              console.error(`${me} failed for address ${Ae.id}:`, $e), Re.push(Ae.id);
            }
            N.value = {
              percentage: Math.floor((ve + 1) / Me * 100),
              tip: `${ve + 1}/${Me}`
            };
          }
          await oe(), b.value = Re, p.success(s("success"));
        } catch (fe) {
          p.error(fe.message || "error");
        } finally {
          d.value = false;
        }
      }, je = async () => {
        await H({
          apiCall: (T) => P.adminDeleteAddress(T),
          title: s("multiDelete") + " " + s("success"),
          operationName: "Delete"
        });
      }, ye = async () => {
        await H({
          shouldSkip: (T) => T.mail_count <= 0,
          apiCall: (T) => P.fetch(`/admin/clear_inbox/${T}`, {
            method: "DELETE"
          }),
          title: s("multiClearInbox") + " " + s("success"),
          operationName: "ClearInbox"
        });
      }, we = async () => {
        await H({
          shouldSkip: (T) => T.send_count <= 0,
          apiCall: (T) => P.fetch(`/admin/clear_sent_items/${T}`, {
            method: "DELETE"
          }),
          title: s("multiClearSentItems") + " " + s("success"),
          operationName: "ClearSentItems"
        });
      }, oe = async () => {
        try {
          I.value = I.value.trim();
          const { results: T, count: j } = await P.fetch(`/admin/address?limit=${$.value}&offset=${(k.value - 1) * $.value}` + (I.value ? `&query=${I.value}` : ""));
          q.value = T, j > 0 && (W.value = j);
        } catch (T) {
          console.error(T), p.error(T.message || "error");
        }
      }, J = [
        {
          type: "selection"
        },
        {
          title: "ID",
          key: "id"
        },
        {
          title: s("name"),
          key: "name"
        },
        {
          title: s("created_at"),
          key: "created_at"
        },
        {
          title: s("updated_at"),
          key: "updated_at"
        },
        {
          title: s("source_meta"),
          key: "source_meta",
          render(T) {
            const j = T.source_meta;
            if (!j) return "";
            const Ie = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/, me = /^[0-9a-fA-F:]+$/;
            return Ie.test(j) || j.includes(":") && me.test(j) && !j.startsWith("tg:") ? U("a", {
              href: `https://ip.im/${j}`,
              target: "_blank",
              rel: "noopener noreferrer"
            }, j) : j;
          }
        },
        {
          title: s("mail_count"),
          key: "mail_count",
          render(T) {
            return U(O, {
              text: true,
              onClick: () => {
                T.mail_count > 0 && (n.value = T.name, r.value = "mails");
              }
            }, {
              icon: () => U(He, {
                value: T.mail_count,
                "show-zero": true,
                max: 99,
                type: "success"
              }),
              default: () => T.mail_count > 0 ? s("viewMails") : ""
            });
          }
        },
        {
          title: s("send_count"),
          key: "send_count",
          render(T) {
            return U(O, {
              text: true,
              onClick: () => {
                T.send_count > 0 && (v.value = T.name, r.value = "sendBox");
              }
            }, {
              icon: () => U(He, {
                value: T.send_count,
                "show-zero": true,
                max: 99,
                type: "success"
              }),
              default: () => T.send_count > 0 ? s("viewSendBox") : ""
            });
          }
        },
        {
          title: s("actions"),
          key: "actions",
          render(T) {
            var _a2;
            return U("div", [
              U(Mt, {
                mode: "horizontal",
                options: [
                  {
                    label: s("actions"),
                    icon: () => U(Tt),
                    key: "action",
                    children: [
                      {
                        label: () => U(O, {
                          text: true,
                          onClick: () => _e(T.id)
                        }, {
                          default: () => s("showCredential")
                        })
                      },
                      {
                        label: () => U(O, {
                          text: true,
                          onClick: () => {
                            n.value = T.name, r.value = "mails";
                          }
                        }, {
                          default: () => s("viewMails")
                        }),
                        show: T.mail_count > 0
                      },
                      {
                        label: () => U(O, {
                          text: true,
                          onClick: () => {
                            v.value = T.name, r.value = "sendBox";
                          }
                        }, {
                          default: () => s("viewSendBox")
                        }),
                        show: T.send_count > 0
                      },
                      {
                        label: () => U(O, {
                          text: true,
                          onClick: () => {
                            c.value = T.id, Y.value = true;
                          }
                        }, {
                          default: () => s("clearInbox")
                        }),
                        show: T.mail_count > 0
                      },
                      {
                        label: () => U(O, {
                          text: true,
                          onClick: () => {
                            x.value = T.id, se.value = true;
                          }
                        }, {
                          default: () => s("clearSentItems")
                        }),
                        show: T.send_count > 0
                      },
                      {
                        label: () => U(O, {
                          text: true,
                          onClick: () => {
                            L.value = T.id, C.value = true;
                          }
                        }, {
                          default: () => s("resetPassword")
                        }),
                        show: (_a2 = l.value) == null ? void 0 : _a2.enableAddressPassword
                      },
                      {
                        label: () => U(O, {
                          text: true,
                          onClick: () => {
                            i.value = T.id, B.value = true;
                          }
                        }, {
                          default: () => s("delete")
                        })
                      }
                    ]
                  }
                ]
              })
            ]);
          }
        }
      ];
      return Ze([
        k,
        $
      ], async () => {
        await oe();
      }), le(async () => {
        await oe();
      }), (T, j) => {
        const Ie = de, me = Ee, fe = pe, Re = Lt, Me = Ce, ve = Ye, Ae = rt, $e = Ve, h = st, V = qe, G = aa;
        return E(), Q("div", Va, [
          e(me, {
            show: y.value,
            "onUpdate:show": j[0] || (j[0] = (F) => y.value = F),
            preset: "dialog",
            title: "Dialog"
          }, {
            header: t(() => [
              M("div", null, o(a(s)("addressCredential")), 1)
            ]),
            action: t(() => [
              ...j[11] || (j[11] = [])
            ]),
            default: t(() => [
              M("span", null, [
                M("p", null, o(a(s)("addressCredentialTip")), 1)
              ]),
              e(Ie, {
                bordered: false,
                embedded: ""
              }, {
                default: t(() => [
                  M("b", null, o(g.value), 1)
                ]),
                _: 1
              })
            ]),
            _: 1
          }, 8, [
            "show"
          ]),
          e(me, {
            show: B.value,
            "onUpdate:show": j[1] || (j[1] = (F) => B.value = F),
            preset: "dialog",
            title: a(s)("deleteAccount")
          }, {
            action: t(() => [
              e(a(O), {
                loading: a(d),
                onClick: S,
                size: "small",
                tertiary: "",
                type: "error"
              }, {
                default: t(() => [
                  m(o(a(s)("deleteAccount")), 1)
                ]),
                _: 1
              }, 8, [
                "loading"
              ])
            ]),
            default: t(() => [
              M("p", null, o(a(s)("deleteTip")), 1)
            ]),
            _: 1
          }, 8, [
            "show",
            "title"
          ]),
          e(me, {
            show: Y.value,
            "onUpdate:show": j[2] || (j[2] = (F) => Y.value = F),
            preset: "dialog",
            title: a(s)("clearInbox")
          }, {
            action: t(() => [
              e(a(O), {
                loading: a(d),
                onClick: R,
                size: "small",
                tertiary: "",
                type: "error"
              }, {
                default: t(() => [
                  m(o(a(s)("clearInbox")), 1)
                ]),
                _: 1
              }, 8, [
                "loading"
              ])
            ]),
            default: t(() => [
              M("p", null, o(a(s)("clearInboxTip")), 1)
            ]),
            _: 1
          }, 8, [
            "show",
            "title"
          ]),
          e(me, {
            show: se.value,
            "onUpdate:show": j[3] || (j[3] = (F) => se.value = F),
            preset: "dialog",
            title: a(s)("clearSentItems")
          }, {
            action: t(() => [
              e(a(O), {
                loading: a(d),
                onClick: ne,
                size: "small",
                tertiary: "",
                type: "error"
              }, {
                default: t(() => [
                  m(o(a(s)("clearSentItems")), 1)
                ]),
                _: 1
              }, 8, [
                "loading"
              ])
            ]),
            default: t(() => [
              M("p", null, o(a(s)("clearSentItemsTip")), 1)
            ]),
            _: 1
          }, 8, [
            "show",
            "title"
          ]),
          e(me, {
            show: C.value,
            "onUpdate:show": j[5] || (j[5] = (F) => C.value = F),
            preset: "dialog",
            title: a(s)("resetPassword")
          }, {
            action: t(() => [
              e(a(O), {
                loading: a(d),
                onClick: he,
                size: "small",
                tertiary: "",
                type: "info"
              }, {
                default: t(() => [
                  m(o(a(s)("resetPassword")), 1)
                ]),
                _: 1
              }, 8, [
                "loading"
              ])
            ]),
            default: t(() => [
              e(Re, {
                label: a(s)("newPassword")
              }, {
                default: t(() => [
                  e(fe, {
                    value: u.value,
                    "onUpdate:value": j[4] || (j[4] = (F) => u.value = F),
                    type: "password",
                    placeholder: "",
                    "show-password-on": "click"
                  }, null, 8, [
                    "value"
                  ])
                ]),
                _: 1
              }, 8, [
                "label"
              ])
            ]),
            _: 1
          }, 8, [
            "show",
            "title"
          ]),
          e(Me, {
            style: {
              "margin-bottom": "10px"
            }
          }, {
            default: t(() => [
              e(fe, {
                value: I.value,
                "onUpdate:value": j[6] || (j[6] = (F) => I.value = F),
                clearable: "",
                placeholder: a(s)("addressQueryTip"),
                onKeydown: Ge(oe, [
                  "enter"
                ])
              }, null, 8, [
                "value",
                "placeholder"
              ]),
              e(a(O), {
                onClick: oe,
                type: "primary",
                tertiary: ""
              }, {
                default: t(() => [
                  m(o(a(s)("query")), 1)
                ]),
                _: 1
              })
            ]),
            _: 1
          }),
          A.value ? (E(), X($e, {
            key: 0,
            style: {
              "margin-bottom": "10px"
            }
          }, {
            default: t(() => [
              e(a(O), {
                onClick: z,
                tertiary: ""
              }, {
                default: t(() => [
                  m(o(a(s)("selectAll")), 1)
                ]),
                _: 1
              }),
              e(a(O), {
                onClick: ce,
                tertiary: ""
              }, {
                default: t(() => [
                  m(o(a(s)("unselectAll")), 1)
                ]),
                _: 1
              }),
              e(ve, {
                onPositiveClick: je
              }, {
                trigger: t(() => [
                  e(a(O), {
                    tertiary: "",
                    type: "error"
                  }, {
                    default: t(() => [
                      m(o(a(s)("multiDelete")), 1)
                    ]),
                    _: 1
                  })
                ]),
                default: t(() => [
                  m(" " + o(a(s)("multiDeleteTip")), 1)
                ]),
                _: 1
              }),
              e(ve, {
                onPositiveClick: ye
              }, {
                trigger: t(() => [
                  e(a(O), {
                    tertiary: "",
                    type: "warning"
                  }, {
                    default: t(() => [
                      m(o(a(s)("multiClearInbox")), 1)
                    ]),
                    _: 1
                  })
                ]),
                default: t(() => [
                  m(" " + o(a(s)("multiClearInboxTip")), 1)
                ]),
                _: 1
              }),
              e(ve, {
                onPositiveClick: we
              }, {
                trigger: t(() => [
                  e(a(O), {
                    tertiary: "",
                    type: "warning"
                  }, {
                    default: t(() => [
                      m(o(a(s)("multiClearSentItems")), 1)
                    ]),
                    _: 1
                  })
                ]),
                default: t(() => [
                  m(" " + o(a(s)("multiClearSentItemsTip")), 1)
                ]),
                _: 1
              }),
              e(Ae, {
                type: "info"
              }, {
                default: t(() => [
                  m(o(a(s)("selectedItems")) + ": " + o(D.value), 1)
                ]),
                _: 1
              })
            ]),
            _: 1
          })) : Z("", true),
          M("div", Fa, [
            M("div", ja, [
              e(h, {
                page: k.value,
                "onUpdate:page": j[7] || (j[7] = (F) => k.value = F),
                "page-size": $.value,
                "onUpdate:pageSize": j[8] || (j[8] = (F) => $.value = F),
                "item-count": W.value,
                "page-sizes": [
                  20,
                  50,
                  100
                ],
                "show-size-picker": ""
              }, {
                prefix: t(({ itemCount: F }) => [
                  m(o(a(s)("itemCount")) + ": " + o(F), 1)
                ]),
                _: 1
              }, 8, [
                "page",
                "page-size",
                "item-count"
              ])
            ]),
            e(V, {
              "checked-row-keys": b.value,
              "onUpdate:checkedRowKeys": j[9] || (j[9] = (F) => b.value = F),
              columns: J,
              data: q.value,
              bordered: false,
              "row-key": (F) => F.id,
              embedded: ""
            }, null, 8, [
              "checked-row-keys",
              "data",
              "row-key"
            ])
          ]),
          e(me, {
            show: w.value,
            "onUpdate:show": j[10] || (j[10] = (F) => w.value = F),
            preset: "dialog",
            title: K.value,
            "negative-text": "OK"
          }, {
            default: t(() => [
              e($e, {
                justify: "center"
              }, {
                default: t(() => [
                  e(G, {
                    type: "circle",
                    status: "info",
                    percentage: N.value.percentage
                  }, {
                    default: t(() => [
                      M("span", Wa, o(N.value.tip), 1)
                    ]),
                    _: 1
                  }, 8, [
                    "percentage"
                  ])
                ]),
                _: 1
              })
            ]),
            _: 1
          }, 8, [
            "show",
            "title"
          ])
        ]);
      };
    }
  };
  Ka = ee(Ha, [
    [
      "__scopeId",
      "data-v-05ab3412"
    ]
  ]);
  Ga = {
    class: "center"
  };
  Ja = {
    __name: "CreateAccount",
    setup(_) {
      const { loading: d, openSettings: r } = ue(), l = ae(), { t: n } = te({
        messages: {
          en: {
            address: "Address",
            enablePrefix: "If enable Prefix",
            creatNewEmail: "Create New Email",
            fillInAllFields: "Please fill in all fields",
            successTip: "Success Created",
            addressCredential: "Mail Address Credential",
            addressCredentialTip: "Please copy the Mail Address Credential and you can use it to login to your email account.",
            addressPassword: "Address Password",
            linkWithAddressCredential: "Open to auto login email link"
          },
          zh: {
            address: "\u5730\u5740",
            enablePrefix: "\u662F\u5426\u542F\u7528\u524D\u7F00",
            creatNewEmail: "\u521B\u5EFA\u65B0\u90AE\u7BB1",
            fillInAllFields: "\u8BF7\u586B\u5199\u5B8C\u6574\u4FE1\u606F",
            successTip: "\u521B\u5EFA\u6210\u529F",
            addressCredential: "\u90AE\u7BB1\u5730\u5740\u51ED\u8BC1",
            addressCredentialTip: "\u8BF7\u590D\u5236\u90AE\u7BB1\u5730\u5740\u51ED\u8BC1\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528\u5B83\u767B\u5F55\u4F60\u7684\u90AE\u7BB1\u3002",
            addressPassword: "\u5730\u5740\u5BC6\u7801",
            linkWithAddressCredential: "\u6253\u5F00\u5373\u53EF\u81EA\u52A8\u767B\u5F55\u90AE\u7BB1\u7684\u94FE\u63A5"
          }
        }
      }), v = f(true), p = f(""), s = f(""), y = f(false), g = f(""), i = f(""), c = f(""), x = async () => {
        if (!p.value || !s.value) {
          l.error(n("fillInAllFields"));
          return;
        }
        try {
          const L = await P.fetch("/admin/new_address", {
            method: "POST",
            body: JSON.stringify({
              enablePrefix: v.value,
              name: p.value,
              domain: s.value
            })
          });
          g.value = L.jwt, i.value = L.password || "", c.value = L.address || "", l.success(n("successTip")), y.value = true;
        } catch (L) {
          l.error(L.message || "error");
        }
      }, C = () => `${window.location.origin}/?jwt=${g.value}`;
      return le(async () => {
        var _a2, _b;
        r.prefix && (v.value = true), s.value = ((_b = (_a2 = r.value.domains) == null ? void 0 : _a2[0]) == null ? void 0 : _b.value) || "";
      }), (L, u) => {
        const b = de, w = Et, N = Pt, K = Ee, D = Fe, A = ge, I = la, q = pe, W = re, k = Ce, $ = O;
        return E(), Q("div", Ga, [
          e(K, {
            show: y.value,
            "onUpdate:show": u[0] || (u[0] = (B) => y.value = B),
            preset: "dialog",
            title: a(n)("addressCredential")
          }, {
            default: t(() => [
              M("span", null, [
                M("p", null, o(a(n)("addressCredentialTip")), 1)
              ]),
              e(b, {
                embedded: ""
              }, {
                default: t(() => [
                  M("b", null, o(g.value), 1)
                ]),
                _: 1
              }),
              i.value ? (E(), X(b, {
                key: 0,
                embedded: ""
              }, {
                default: t(() => [
                  M("p", null, [
                    M("b", null, o(c.value), 1)
                  ]),
                  M("p", null, [
                    m(o(a(n)("addressPassword")) + ": ", 1),
                    M("b", null, o(i.value), 1)
                  ])
                ]),
                _: 1
              })) : Z("", true),
              e(b, {
                embedded: ""
              }, {
                default: t(() => [
                  e(N, null, {
                    default: t(() => [
                      e(w, {
                        title: a(n)("linkWithAddressCredential")
                      }, {
                        default: t(() => [
                          e(b, {
                            embedded: ""
                          }, {
                            default: t(() => [
                              M("b", null, o(C()), 1)
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      }, 8, [
                        "title"
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              })
            ]),
            _: 1
          }, 8, [
            "show",
            "title"
          ]),
          e(b, {
            bordered: false,
            embedded: "",
            style: {
              "max-width": "600px"
            }
          }, {
            default: t(() => [
              a(r).prefix ? (E(), X(A, {
                key: 0,
                label: a(n)("enablePrefix")
              }, {
                default: t(() => [
                  e(D, {
                    value: v.value,
                    "onUpdate:value": u[1] || (u[1] = (B) => v.value = B),
                    round: false
                  }, null, 8, [
                    "value"
                  ])
                ]),
                _: 1
              }, 8, [
                "label"
              ])) : Z("", true),
              e(A, {
                label: a(n)("address")
              }, {
                default: t(() => [
                  e(k, null, {
                    default: t(() => [
                      v.value && a(r).prefix ? (E(), X(I, {
                        key: 0
                      }, {
                        default: t(() => [
                          m(o(a(r).prefix), 1)
                        ]),
                        _: 1
                      })) : Z("", true),
                      e(q, {
                        value: p.value,
                        "onUpdate:value": u[2] || (u[2] = (B) => p.value = B)
                      }, null, 8, [
                        "value"
                      ]),
                      e(I, null, {
                        default: t(() => [
                          ...u[4] || (u[4] = [
                            m("@", -1)
                          ])
                        ]),
                        _: 1
                      }),
                      e(W, {
                        value: s.value,
                        "onUpdate:value": u[3] || (u[3] = (B) => s.value = B),
                        "consistent-menu-width": false,
                        options: a(r).domains
                      }, null, 8, [
                        "value",
                        "options"
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }, 8, [
                "label"
              ]),
              e($, {
                onClick: x,
                type: "primary",
                block: "",
                loading: a(d)
              }, {
                default: t(() => [
                  m(o(a(n)("creatNewEmail")), 1)
                ]),
                _: 1
              }, 8, [
                "loading"
              ])
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  Qa = ee(Ja, [
    [
      "__scopeId",
      "data-v-22702c12"
    ]
  ]);
  Xa = {
    class: "center"
  };
  Za = 200;
  Ya = {
    __name: "AccountSettings",
    setup(_) {
      const { loading: d, openSettings: r } = ue(), l = ae(), { t: n } = te({
        messages: {
          en: {
            tip: "You can manually input the following multiple select input and enter",
            manualInputPrompt: "Type and press Enter to add",
            save: "Save",
            successTip: "Save Success",
            address_block_list: "Address Block Keywords for Users(Admin can skip)",
            address_block_list_placeholder: "Please enter the keywords you want to block",
            send_address_block_list: "Address Block Keywords for send email",
            noLimitSendAddressList: "No Balance Limit Send Address List",
            verified_address_list: "Verified Address List(Can send email by cf internal api)",
            fromBlockList: "Block Keywords for receive email",
            block_receive_unknow_address_email: "Block receive unknow address email",
            email_forwarding_config: "Email Forwarding Configuration",
            domain_list: "Domain List (Optional)",
            forward_address: "Forward Address",
            actions: "Actions",
            select_domain: "Select Domain",
            forward_placeholder: "forward@example.com",
            delete_rule: "Delete",
            delete_rule_confirm: "Are you sure you want to delete this rule?",
            delete_success: "Delete Success",
            forwarding_rule_warning: "Each rule will run independently. Forward address needs to be a verified address.",
            add: "Add",
            cancel: "Cancel",
            config: "Config",
            source_patterns: "Source Address Regex (Optional)",
            source_patterns_placeholder: "e.g. gmail.com",
            source_match_mode: "Match Mode",
            match_any: "Any",
            match_all: "All",
            source_patterns_tip: "Domain list filters by recipient address, source regex filters by sender address. Both conditions must match for forwarding (AND logic). Leave either empty to skip that filter.",
            regex_too_long: "Regex pattern too long (max 200 characters)",
            regex_invalid: "Invalid regex pattern",
            forward_address_required: "Forward address is required",
            rule_index: "Rule"
          },
          zh: {
            tip: "\u60A8\u53EF\u4EE5\u624B\u52A8\u8F93\u5165\u4EE5\u4E0B\u591A\u9009\u8F93\u5165\u6846, \u56DE\u8F66\u589E\u52A0",
            manualInputPrompt: "\u8F93\u5165\u540E\u6309\u56DE\u8F66\u952E\u6DFB\u52A0",
            save: "\u4FDD\u5B58",
            successTip: "\u4FDD\u5B58\u6210\u529F",
            address_block_list: "\u90AE\u4EF6\u5730\u5740\u5C4F\u853D\u5173\u952E\u8BCD(\u7BA1\u7406\u5458\u53EF\u8DF3\u8FC7\u68C0\u67E5)",
            address_block_list_placeholder: "\u8BF7\u8F93\u5165\u60A8\u60F3\u8981\u5C4F\u853D\u7684\u5173\u952E\u8BCD",
            send_address_block_list: "\u53D1\u9001\u90AE\u4EF6\u5730\u5740\u5C4F\u853D\u5173\u952E\u8BCD",
            noLimitSendAddressList: "\u65E0\u4F59\u989D\u9650\u5236\u53D1\u9001\u5730\u5740\u5217\u8868",
            verified_address_list: "\u5DF2\u9A8C\u8BC1\u5730\u5740\u5217\u8868(\u53EF\u901A\u8FC7 cf \u5185\u90E8 api \u53D1\u9001\u90AE\u4EF6)",
            fromBlockList: "\u63A5\u6536\u90AE\u4EF6\u5730\u5740\u5C4F\u853D\u5173\u952E\u8BCD",
            block_receive_unknow_address_email: "\u7981\u6B62\u63A5\u6536\u672A\u77E5\u5730\u5740\u90AE\u4EF6",
            email_forwarding_config: "\u90AE\u4EF6\u8F6C\u53D1\u914D\u7F6E",
            domain_list: "\u57DF\u540D\u5217\u8868\uFF08\u53EF\u9009\uFF09",
            forward_address: "\u8F6C\u53D1\u5730\u5740",
            actions: "\u64CD\u4F5C",
            select_domain: "\u9009\u62E9\u57DF\u540D",
            forward_placeholder: "forward@example.com",
            delete_rule: "\u5220\u9664",
            delete_rule_confirm: "\u786E\u5B9A\u8981\u5220\u9664\u8FD9\u6761\u89C4\u5219\u5417\uFF1F",
            delete_success: "\u5220\u9664\u6210\u529F",
            forwarding_rule_warning: "\u6BCF\u6761\u89C4\u5219\u72EC\u7ACB\u8FD0\u884C\uFF0C\u8F6C\u53D1\u5730\u5740\u9700\u8981\u4E3A\u5DF2\u9A8C\u8BC1\u7684\u5730\u5740\u3002",
            add: "\u6DFB\u52A0",
            cancel: "\u53D6\u6D88",
            config: "\u914D\u7F6E",
            source_patterns: "\u6765\u6E90\u5730\u5740\u6B63\u5219\uFF08\u53EF\u9009\uFF09",
            source_patterns_placeholder: "\u4F8B\u5982: gmail.com",
            source_match_mode: "\u5339\u914D\u6A21\u5F0F",
            match_any: "\u4EFB\u4E00",
            match_all: "\u5168\u90E8",
            source_patterns_tip: "\u57DF\u540D\u5217\u8868\u6309\u6536\u4EF6\u5730\u5740\u8FC7\u6EE4\uFF0C\u6765\u6E90\u6B63\u5219\u6309\u53D1\u4EF6\u5730\u5740\u8FC7\u6EE4\uFF0C\u4E24\u8005\u5747\u4E3A\u53EF\u9009\u3002\u540C\u65F6\u914D\u7F6E\u65F6\u9700\u540C\u65F6\u6EE1\u8DB3\uFF08AND \u903B\u8F91\uFF09\uFF0C\u7559\u7A7A\u5219\u8DF3\u8FC7\u8BE5\u6761\u4EF6\u3002",
            regex_too_long: "\u6B63\u5219\u8868\u8FBE\u5F0F\u8FC7\u957F\uFF08\u6700\u5927200\u5B57\u7B26\uFF09",
            regex_invalid: "\u65E0\u6548\u7684\u6B63\u5219\u8868\u8FBE\u5F0F",
            forward_address_required: "\u8F6C\u53D1\u5730\u5740\u4E0D\u80FD\u4E3A\u7A7A",
            rule_index: "\u89C4\u5219"
          }
        }
      }), v = f([]), p = f([]), s = f([]), y = f([]), g = f([]), i = f({
        blockReceiveUnknowAddressEmail: false,
        emailForwardingList: []
      }), c = f(false), x = f([]), C = [
        {
          title: n("domain_list"),
          key: "domains",
          render: (D, A) => {
            var _a2;
            return U(re, {
              value: Array.isArray(D.domains) ? D.domains : [],
              onUpdateValue: (I) => {
                x.value[A].domains = I;
              },
              options: ((_a2 = r.value) == null ? void 0 : _a2.domains) || [],
              multiple: true,
              filterable: true,
              tag: true,
              placeholder: n("select_domain")
            });
          }
        },
        {
          title: n("source_patterns"),
          key: "sourcePatterns",
          render: (D, A) => U("div", {
            style: "display: flex; flex-direction: column; gap: 4px;"
          }, [
            U(re, {
              value: Array.isArray(D.sourcePatterns) ? D.sourcePatterns : [],
              onUpdateValue: (I) => {
                x.value[A].sourcePatterns = I;
              },
              multiple: true,
              filterable: true,
              tag: true,
              placeholder: n("source_patterns_placeholder")
            }, {
              empty: () => U("span", {
                style: "color: #999; font-size: 12px;"
              }, n("manualInputPrompt"))
            }),
            U(Dt, {
              value: D.sourceMatchMode || "any",
              onUpdateValue: (I) => {
                x.value[A].sourceMatchMode = I;
              },
              size: "small",
              style: "margin-top: 4px;"
            }, {
              default: () => [
                U(ft, {
                  value: "any"
                }, {
                  default: () => n("match_any")
                }),
                U(ft, {
                  value: "all"
                }, {
                  default: () => n("match_all")
                })
              ]
            })
          ])
        },
        {
          title: n("forward_address"),
          key: "forward",
          render: (D, A) => U(pe, {
            value: D.forward,
            onUpdateValue: (I) => {
              x.value[A].forward = I;
            },
            placeholder: "forward@example.com"
          })
        },
        {
          title: n("actions"),
          key: "actions",
          render: (D, A) => U("div", {
            style: "display: flex; gap: 8px;"
          }, [
            U(Ye, {
              onPositiveClick: () => {
                x.value = x.value.filter((I, q) => q !== A), l.success(n("delete_success"));
              }
            }, {
              default: () => n("delete_rule_confirm"),
              trigger: () => U(O, {
                size: "small",
                type: "error"
              }, {
                default: () => n("delete_rule")
              })
            })
          ])
        }
      ], L = () => {
        x.value = i.value.emailForwardingList ? [
          ...i.value.emailForwardingList
        ] : [], c.value = true;
      }, u = () => {
        x.value = [
          ...x.value,
          {
            domains: [],
            forward: "",
            sourcePatterns: [],
            sourceMatchMode: "any"
          }
        ];
      }, b = () => {
        for (let D = 0; D < x.value.length; D++) {
          const A = x.value[D];
          if (!A.forward || A.forward.trim() === "") return l.error(`${n("forward_address_required")} (${n("rule_index")} ${D + 1})`), false;
          if (A.sourcePatterns && A.sourcePatterns.length > 0) for (const I of A.sourcePatterns) {
            if (I.length > Za) return l.error(`${n("regex_too_long")}: ${I.substring(0, 30)}...`), false;
            try {
              new RegExp(I, "i");
            } catch {
              return l.error(`${n("regex_invalid")}: ${I}`), false;
            }
          }
        }
        return true;
      }, w = () => {
        b() && (i.value.emailForwardingList = [
          ...x.value
        ], c.value = false);
      }, N = async () => {
        var _a2, _b;
        try {
          const D = await P.fetch("/admin/account_settings");
          v.value = D.blockList || [], p.value = D.sendBlockList || [], y.value = D.verifiedAddressList || [], g.value = D.fromBlockList || [], s.value = D.noLimitSendAddressList || [], i.value = {
            blockReceiveUnknowAddressEmail: ((_a2 = D.emailRuleSettings) == null ? void 0 : _a2.blockReceiveUnknowAddressEmail) || false,
            emailForwardingList: ((_b = D.emailRuleSettings) == null ? void 0 : _b.emailForwardingList) || []
          };
        } catch (D) {
          l.error(D.message || "error");
        }
      }, K = async () => {
        try {
          await P.fetch("/admin/account_settings", {
            method: "POST",
            body: JSON.stringify({
              blockList: v.value || [],
              sendBlockList: p.value || [],
              verifiedAddressList: y.value || [],
              fromBlockList: g.value || [],
              noLimitSendAddressList: s.value || [],
              emailRuleSettings: i.value
            })
          }), l.success(n("successTip"));
        } catch (D) {
          l.error(D.message || "error");
        }
      };
      return le(async () => {
        await N();
      }), (D, A) => {
        const I = Ue, q = De, W = Le, k = ge, $ = Fe, B = de, Y = Ve, se = qe, _e = Ee;
        return E(), Q(it, null, [
          M("div", Xa, [
            e(B, {
              bordered: false,
              embedded: "",
              style: {
                "max-width": "600px"
              }
            }, {
              default: t(() => [
                e(I, {
                  "show-icon": false,
                  bordered: false,
                  type: "warning",
                  style: {
                    "margin-bottom": "10px"
                  }
                }, {
                  default: t(() => [
                    M("span", null, o(a(n)("tip")), 1)
                  ]),
                  _: 1
                }),
                e(q, {
                  justify: "end"
                }, {
                  default: t(() => [
                    e(a(O), {
                      onClick: K,
                      type: "primary",
                      loading: a(d)
                    }, {
                      default: t(() => [
                        m(o(a(n)("save")), 1)
                      ]),
                      _: 1
                    }, 8, [
                      "loading"
                    ])
                  ]),
                  _: 1
                }),
                e(k, {
                  label: a(n)("address_block_list")
                }, {
                  default: t(() => [
                    e(a(re), {
                      value: v.value,
                      "onUpdate:value": A[0] || (A[0] = (S) => v.value = S),
                      filterable: "",
                      multiple: "",
                      tag: "",
                      placeholder: a(n)("address_block_list_placeholder")
                    }, {
                      empty: t(() => [
                        e(W, {
                          depth: "3"
                        }, {
                          default: t(() => [
                            m(o(a(n)("manualInputPrompt")), 1)
                          ]),
                          _: 1
                        })
                      ]),
                      _: 1
                    }, 8, [
                      "value",
                      "placeholder"
                    ])
                  ]),
                  _: 1
                }, 8, [
                  "label"
                ]),
                e(k, {
                  label: a(n)("send_address_block_list")
                }, {
                  default: t(() => [
                    e(a(re), {
                      value: p.value,
                      "onUpdate:value": A[1] || (A[1] = (S) => p.value = S),
                      filterable: "",
                      multiple: "",
                      tag: "",
                      placeholder: a(n)("address_block_list_placeholder")
                    }, {
                      empty: t(() => [
                        e(W, {
                          depth: "3"
                        }, {
                          default: t(() => [
                            m(o(a(n)("manualInputPrompt")), 1)
                          ]),
                          _: 1
                        })
                      ]),
                      _: 1
                    }, 8, [
                      "value",
                      "placeholder"
                    ])
                  ]),
                  _: 1
                }, 8, [
                  "label"
                ]),
                e(k, {
                  label: a(n)("noLimitSendAddressList")
                }, {
                  default: t(() => [
                    e(a(re), {
                      value: s.value,
                      "onUpdate:value": A[2] || (A[2] = (S) => s.value = S),
                      filterable: "",
                      multiple: "",
                      tag: "",
                      placeholder: a(n)("noLimitSendAddressList")
                    }, {
                      empty: t(() => [
                        e(W, {
                          depth: "3"
                        }, {
                          default: t(() => [
                            m(o(a(n)("manualInputPrompt")), 1)
                          ]),
                          _: 1
                        })
                      ]),
                      _: 1
                    }, 8, [
                      "value",
                      "placeholder"
                    ])
                  ]),
                  _: 1
                }, 8, [
                  "label"
                ]),
                e(k, {
                  label: a(n)("verified_address_list")
                }, {
                  default: t(() => [
                    e(a(re), {
                      value: y.value,
                      "onUpdate:value": A[3] || (A[3] = (S) => y.value = S),
                      filterable: "",
                      multiple: "",
                      tag: "",
                      placeholder: a(n)("verified_address_list")
                    }, {
                      empty: t(() => [
                        e(W, {
                          depth: "3"
                        }, {
                          default: t(() => [
                            m(o(a(n)("manualInputPrompt")), 1)
                          ]),
                          _: 1
                        })
                      ]),
                      _: 1
                    }, 8, [
                      "value",
                      "placeholder"
                    ])
                  ]),
                  _: 1
                }, 8, [
                  "label"
                ]),
                e(k, {
                  label: a(n)("fromBlockList")
                }, {
                  default: t(() => [
                    e(a(re), {
                      value: g.value,
                      "onUpdate:value": A[4] || (A[4] = (S) => g.value = S),
                      filterable: "",
                      multiple: "",
                      tag: "",
                      placeholder: a(n)("fromBlockList")
                    }, {
                      empty: t(() => [
                        e(W, {
                          depth: "3"
                        }, {
                          default: t(() => [
                            m(o(a(n)("manualInputPrompt")), 1)
                          ]),
                          _: 1
                        })
                      ]),
                      _: 1
                    }, 8, [
                      "value",
                      "placeholder"
                    ])
                  ]),
                  _: 1
                }, 8, [
                  "label"
                ]),
                e(k, {
                  label: a(n)("block_receive_unknow_address_email")
                }, {
                  default: t(() => [
                    e($, {
                      value: i.value.blockReceiveUnknowAddressEmail,
                      "onUpdate:value": A[5] || (A[5] = (S) => i.value.blockReceiveUnknowAddressEmail = S),
                      round: false
                    }, null, 8, [
                      "value"
                    ])
                  ]),
                  _: 1
                }, 8, [
                  "label"
                ]),
                e(k, {
                  label: a(n)("email_forwarding_config")
                }, {
                  default: t(() => [
                    e(a(O), {
                      onClick: L
                    }, {
                      default: t(() => [
                        m(o(a(n)("config")), 1)
                      ]),
                      _: 1
                    })
                  ]),
                  _: 1
                }, 8, [
                  "label"
                ])
              ]),
              _: 1
            })
          ]),
          e(_e, {
            show: c.value,
            "onUpdate:show": A[6] || (A[6] = (S) => c.value = S),
            preset: "card",
            title: a(n)("email_forwarding_config"),
            style: {
              "max-width": "1000px"
            }
          }, {
            default: t(() => [
              e(Y, {
                vertical: ""
              }, {
                default: t(() => [
                  e(I, {
                    "show-icon": false,
                    bordered: false,
                    type: "warning"
                  }, {
                    default: t(() => [
                      M("span", null, o(a(n)("forwarding_rule_warning")), 1),
                      A[7] || (A[7] = M("br", null, null, -1)),
                      M("span", null, o(a(n)("source_patterns_tip")), 1)
                    ]),
                    _: 1
                  }),
                  e(Y, {
                    justify: "end"
                  }, {
                    default: t(() => [
                      e(a(O), {
                        onClick: u
                      }, {
                        default: t(() => [
                          m(o(a(n)("add")), 1)
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }),
                  e(se, {
                    columns: C,
                    data: x.value,
                    bordered: false,
                    striped: ""
                  }, null, 8, [
                    "data"
                  ]),
                  e(Y, {
                    justify: "end"
                  }, {
                    default: t(() => [
                      e(a(O), {
                        onClick: w,
                        type: "primary"
                      }, {
                        default: t(() => [
                          m(o(a(n)("save")), 1)
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              })
            ]),
            _: 1
          }, 8, [
            "show",
            "title"
          ])
        ], 64);
      };
    }
  };
  wt = ee(Ya, [
    [
      "__scopeId",
      "data-v-e681a103"
    ]
  ]);
  el = {
    style: {
      overflow: "auto"
    }
  };
  tl = {
    __name: "UserAddressManagement",
    props: {
      user_id: {
        type: Number,
        required: true
      }
    },
    setup(_) {
      const d = _, r = ae(), { locale: l, t: n } = te({
        messages: {
          en: {
            success: "success",
            name: "Name",
            mail_count: "Mail Count",
            send_count: "Send Count"
          },
          zh: {
            success: "\u6210\u529F",
            name: "\u540D\u79F0",
            mail_count: "\u90AE\u4EF6\u6570\u91CF",
            send_count: "\u53D1\u9001\u6570\u91CF"
          }
        }
      }), v = f([]), p = async () => {
        try {
          const { results: y } = await P.fetch(`/admin/users/bind_address/${d.user_id}`);
          v.value = y;
        } catch (y) {
          console.log(y), r.error(y.message || "error");
        }
      }, s = [
        {
          title: n("name"),
          key: "name"
        },
        {
          title: n("mail_count"),
          key: "mail_count",
          render(y) {
            return U(He, {
              value: y.mail_count,
              "show-zero": true,
              max: 99,
              type: "success"
            });
          }
        },
        {
          title: n("send_count"),
          key: "send_count",
          render(y) {
            return U(He, {
              value: y.send_count,
              "show-zero": true,
              max: 99,
              type: "success"
            });
          }
        }
      ];
      return le(async () => {
        await p();
      }), (y, g) => {
        const i = qe;
        return E(), Q("div", el, [
          e(i, {
            columns: s,
            data: v.value,
            bordered: false,
            embedded: ""
          }, null, 8, [
            "data"
          ])
        ]);
      };
    }
  };
  al = ee(tl, [
    [
      "__scopeId",
      "data-v-b33d0779"
    ]
  ]);
  ll = {
    style: {
      "margin-top": "10px"
    }
  };
  nl = {
    style: {
      overflow: "auto"
    }
  };
  sl = {
    style: {
      display: "inline-block"
    }
  };
  ol = {
    __name: "UserManagement",
    setup(_) {
      const { loading: d, openSettings: r } = ue(), l = ae(), { t: n } = te({
        messages: {
          en: {
            success: "Success",
            user_email: "User Email",
            role: "Role",
            address_count: "Address Count",
            created_at: "Created At",
            actions: "Actions",
            query: "Query",
            itemCount: "itemCount",
            deleteUser: "Delete User",
            delete: "Delete",
            deleteUserTip: "Are you sure you want to delete this user?",
            resetPassword: "Reset Password",
            pleaseInput: "Please input complete information",
            createUser: "Create User",
            email: "Email",
            password: "Password",
            changeRole: "Change Role",
            prefix: "Prefix",
            domains: "Domains",
            roleDonotExist: "Current Role does not exist",
            userAddressManagement: "Address Management"
          },
          zh: {
            success: "\u6210\u529F",
            user_email: "\u7528\u6237\u90AE\u7BB1",
            role: "\u89D2\u8272",
            address_count: "\u5730\u5740\u6570\u91CF",
            created_at: "\u521B\u5EFA\u65F6\u95F4",
            actions: "\u64CD\u4F5C",
            query: "\u67E5\u8BE2",
            itemCount: "\u603B\u6570",
            deleteUser: "\u5220\u9664\u7528\u6237",
            delete: "\u5220\u9664",
            deleteUserTip: "\u786E\u5B9A\u8981\u5220\u9664\u6B64\u7528\u6237\u5417\uFF1F",
            resetPassword: "\u91CD\u7F6E\u5BC6\u7801",
            pleaseInput: "\u8BF7\u8F93\u5165\u5B8C\u6574\u4FE1\u606F",
            createUser: "\u521B\u5EFA\u7528\u6237",
            email: "\u90AE\u7BB1",
            password: "\u5BC6\u7801",
            changeRole: "\u66F4\u6539\u89D2\u8272",
            prefix: "\u524D\u7F00",
            domains: "\u57DF\u540D",
            roleDonotExist: "\u5F53\u524D\u89D2\u8272\u4E0D\u5B58\u5728",
            userAddressManagement: "\u5730\u5740\u7BA1\u7406"
          }
        }
      }), v = f([]), p = f(0), s = f(1), y = f(20), g = f(""), i = f(false), c = f(""), x = f(false), C = f(0), L = f(false), u = f({
        email: "",
        password: ""
      }), b = f(false), w = f(false), N = f([]), K = f(""), D = xe(() => N.value.map((S) => ({
        label: S.role,
        value: S.role
      }))), A = async () => {
        try {
          const S = await P.fetch("/admin/user_roles");
          N.value = S;
        } catch (S) {
          console.log(S), l.error(S.message || "error");
        }
      }, I = async () => {
        try {
          g.value = g.value.trim();
          const { results: S, count: R } = await P.fetch(`/admin/users?limit=${y.value}&offset=${(s.value - 1) * y.value}` + (g.value ? `&query=${g.value}` : ""));
          v.value = S, R > 0 && (p.value = R);
        } catch (S) {
          console.log(S), l.error(S.message || "error");
        }
      }, q = async () => {
        if (!c.value) {
          l.error(n("pleaseInput"));
          return;
        }
        try {
          await P.fetch(`/admin/users/${C.value}/reset_password`, {
            method: "POST",
            body: JSON.stringify({
              password: await vt(c.value)
            })
          }), l.success(n("success")), i.value = false;
        } catch (S) {
          console.log(S), l.error(S.message || "error");
        }
      }, W = async () => {
        if (!u.value.email || !u.value.password) {
          l.error(n("pleaseInput"));
          return;
        }
        try {
          await P.fetch("/admin/users", {
            method: "POST",
            body: JSON.stringify({
              email: u.value.email,
              password: await vt(u.value.password)
            })
          }), l.success(n("success")), await I(), L.value = false;
        } catch (S) {
          console.log(S), l.error(S.message || "error");
        }
      }, k = async () => {
        try {
          await P.fetch(`/admin/users/${C.value}`, {
            method: "DELETE"
          }), l.success(n("success")), x.value = false;
        } catch (S) {
          console.log(S), l.error(S.message || "error");
        }
      }, $ = async () => {
        try {
          await P.fetch("/admin/user_roles", {
            method: "POST",
            body: JSON.stringify({
              user_id: C.value,
              role_text: K.value
            })
          }), l.success(n("success")), b.value = false, await I();
        } catch (S) {
          console.log(S), l.error(S.message || "error");
        }
      }, B = [
        {
          title: "ID",
          key: "id"
        },
        {
          title: n("user_email"),
          key: "user_email"
        },
        {
          title: n("role"),
          key: "role_text",
          render(S) {
            return S.role_text ? U(rt, {
              bordered: false,
              type: "info"
            }, {
              default: () => S.role_text
            }) : null;
          }
        },
        {
          title: n("address_count"),
          key: "address_count",
          render(S) {
            return U(O, {
              text: true,
              onClick: () => {
                S.address_count <= 0 || (C.value = S.id, w.value = true);
              }
            }, {
              icon: () => U(He, {
                value: S.address_count,
                "show-zero": true,
                max: 99,
                type: "success"
              }),
              default: () => S.address_count > 0 ? n("userAddressManagement") : ""
            });
          }
        },
        {
          title: n("created_at"),
          key: "created_at"
        },
        {
          title: n("actions"),
          key: "actions",
          render(S) {
            return U("div", [
              U(Mt, {
                mode: "horizontal",
                options: [
                  {
                    label: n("actions"),
                    icon: () => U(Tt),
                    key: "action",
                    children: [
                      {
                        label: () => U(O, {
                          text: true,
                          onClick: () => {
                            C.value = S.id, w.value = true;
                          }
                        }, {
                          default: () => n("userAddressManagement")
                        }),
                        show: S.address_count > 0
                      },
                      {
                        label: () => U(O, {
                          text: true,
                          onClick: () => {
                            C.value = S.id, K.value = S.role_text, b.value = true;
                          }
                        }, {
                          default: () => n("changeRole")
                        })
                      },
                      {
                        label: () => U(O, {
                          text: true,
                          onClick: () => {
                            C.value = S.id, c.value = "", i.value = true;
                          }
                        }, {
                          default: () => n("resetPassword")
                        })
                      },
                      {
                        label: () => U(O, {
                          text: true,
                          onClick: () => {
                            C.value = S.id, u.value.email = "", u.value.password = "", x.value = true;
                          }
                        }, {
                          default: () => n("delete")
                        })
                      }
                    ]
                  }
                ]
              })
            ]);
          }
        }
      ], Y = (S) => {
        var _a2;
        const R = (_a2 = N.value.find((ne) => ne.role === S)) == null ? void 0 : _a2.prefix;
        return R ?? r.value.prefix;
      }, se = (S) => {
        var _a2;
        const R = (_a2 = N.value.find((ne) => ne.role === S)) == null ? void 0 : _a2.domains;
        return R == null || R.length == 0 ? r.value.defaultDomains : R;
      }, _e = xe(() => K.value && !N.value.some((S) => S.role === K.value));
      return Ze([
        s,
        y
      ], async () => {
        await I();
      }), le(async () => {
        await A(), await I();
      }), (S, R) => {
        const ne = pe, he = ge, z = et, ce = Ee, H = Ue, je = re, ye = Ce, we = st, oe = qe;
        return E(), Q("div", ll, [
          e(ce, {
            show: L.value,
            "onUpdate:show": R[2] || (R[2] = (J) => L.value = J),
            preset: "dialog",
            title: a(n)("createUser")
          }, {
            action: t(() => [
              e(a(O), {
                loading: a(d),
                onClick: W,
                size: "small",
                tertiary: "",
                type: "primary"
              }, {
                default: t(() => [
                  m(o(a(n)("createUser")), 1)
                ]),
                _: 1
              }, 8, [
                "loading"
              ])
            ]),
            default: t(() => [
              e(z, null, {
                default: t(() => [
                  e(he, {
                    label: a(n)("email"),
                    required: ""
                  }, {
                    default: t(() => [
                      e(ne, {
                        value: u.value.email,
                        "onUpdate:value": R[0] || (R[0] = (J) => u.value.email = J)
                      }, null, 8, [
                        "value"
                      ])
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ]),
                  e(he, {
                    label: a(n)("password"),
                    required: ""
                  }, {
                    default: t(() => [
                      e(ne, {
                        value: u.value.password,
                        "onUpdate:value": R[1] || (R[1] = (J) => u.value.password = J),
                        type: "password",
                        "show-password-on": "click"
                      }, null, 8, [
                        "value"
                      ])
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ])
                ]),
                _: 1
              })
            ]),
            _: 1
          }, 8, [
            "show",
            "title"
          ]),
          e(ce, {
            show: i.value,
            "onUpdate:show": R[4] || (R[4] = (J) => i.value = J),
            preset: "dialog",
            title: a(n)("resetPassword")
          }, {
            action: t(() => [
              e(a(O), {
                loading: a(d),
                onClick: q,
                size: "small",
                tertiary: "",
                type: "primary"
              }, {
                default: t(() => [
                  m(o(a(n)("resetPassword")), 1)
                ]),
                _: 1
              }, 8, [
                "loading"
              ])
            ]),
            default: t(() => [
              e(he, {
                label: a(n)("password"),
                required: ""
              }, {
                default: t(() => [
                  e(ne, {
                    value: c.value,
                    "onUpdate:value": R[3] || (R[3] = (J) => c.value = J),
                    type: "password",
                    "show-password-on": "click"
                  }, null, 8, [
                    "value"
                  ])
                ]),
                _: 1
              }, 8, [
                "label"
              ])
            ]),
            _: 1
          }, 8, [
            "show",
            "title"
          ]),
          e(ce, {
            show: x.value,
            "onUpdate:show": R[5] || (R[5] = (J) => x.value = J),
            preset: "dialog",
            title: a(n)("deleteUser")
          }, {
            action: t(() => [
              e(a(O), {
                loading: a(d),
                onClick: k,
                size: "small",
                tertiary: "",
                type: "error"
              }, {
                default: t(() => [
                  m(o(a(n)("deleteUser")), 1)
                ]),
                _: 1
              }, 8, [
                "loading"
              ])
            ]),
            default: t(() => [
              M("p", null, o(a(n)("deleteUserTip")), 1)
            ]),
            _: 1
          }, 8, [
            "show",
            "title"
          ]),
          e(ce, {
            show: b.value,
            "onUpdate:show": R[7] || (R[7] = (J) => b.value = J),
            preset: "dialog",
            title: a(n)("changeRole")
          }, {
            action: t(() => [
              e(a(O), {
                loading: a(d),
                onClick: $,
                size: "small",
                tertiary: "",
                type: "primary"
              }, {
                default: t(() => [
                  m(o(a(n)("changeRole")), 1)
                ]),
                _: 1
              }, 8, [
                "loading"
              ])
            ]),
            default: t(() => [
              _e.value ? (E(), X(H, {
                key: 0,
                type: "error",
                bordered: false
              }, {
                default: t(() => [
                  M("span", null, o(a(n)("roleDonotExist")), 1)
                ]),
                _: 1
              })) : Z("", true),
              M("p", null, o(a(n)("prefix") + ": " + Y(K.value)), 1),
              M("p", null, o(a(n)("domains") + ": " + JSON.stringify(se(K.value))), 1),
              e(je, {
                clearable: "",
                value: K.value,
                "onUpdate:value": R[6] || (R[6] = (J) => K.value = J),
                options: D.value
              }, null, 8, [
                "value",
                "options"
              ])
            ]),
            _: 1
          }, 8, [
            "show",
            "title"
          ]),
          e(ce, {
            show: w.value,
            "onUpdate:show": R[8] || (R[8] = (J) => w.value = J),
            preset: "card",
            title: a(n)("userAddressManagement")
          }, {
            default: t(() => [
              e(al, {
                user_id: C.value
              }, null, 8, [
                "user_id"
              ])
            ]),
            _: 1
          }, 8, [
            "show",
            "title"
          ]),
          e(ye, null, {
            default: t(() => [
              e(ne, {
                value: g.value,
                "onUpdate:value": R[9] || (R[9] = (J) => g.value = J),
                onKeydown: Ge(I, [
                  "enter"
                ])
              }, null, 8, [
                "value"
              ]),
              e(a(O), {
                onClick: I,
                type: "primary",
                tertiary: ""
              }, {
                default: t(() => [
                  m(o(a(n)("query")), 1)
                ]),
                _: 1
              })
            ]),
            _: 1
          }),
          M("div", nl, [
            M("div", sl, [
              e(we, {
                page: s.value,
                "onUpdate:page": R[11] || (R[11] = (J) => s.value = J),
                "page-size": y.value,
                "onUpdate:pageSize": R[12] || (R[12] = (J) => y.value = J),
                "item-count": p.value,
                "page-sizes": [
                  20,
                  50,
                  100
                ],
                "show-size-picker": ""
              }, {
                prefix: t(({ itemCount: J }) => [
                  m(o(a(n)("itemCount")) + ": " + o(J), 1)
                ]),
                suffix: t(() => [
                  e(a(O), {
                    onClick: R[10] || (R[10] = (J) => L.value = true),
                    size: "small",
                    tertiary: "",
                    type: "primary",
                    style: {
                      "margin-left": "10px"
                    }
                  }, {
                    default: t(() => [
                      m(o(a(n)("createUser")), 1)
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }, 8, [
                "page",
                "page-size",
                "item-count"
              ])
            ]),
            e(oe, {
              columns: B,
              data: v.value,
              bordered: false,
              embedded: ""
            }, null, 8, [
              "data"
            ])
          ])
        ]);
      };
    }
  };
  rl = ee(ol, [
    [
      "__scopeId",
      "data-v-9bf893ed"
    ]
  ]);
  il = {
    class: "center"
  };
  ul = {
    __name: "UserSettings",
    setup(_) {
      const { loading: d } = ue(), r = ae(), { t: l } = te({
        messages: {
          en: {
            save: "Save",
            successTip: "Save Success",
            enable: "Enable",
            enableUserRegister: "Allow User Register",
            enableMailVerify: "Enable Mail Verify (Send address must be an address in the system with a balance and can send mail normally)",
            verifyMailSender: "Verify Mail Sender",
            enableMailAllowList: "Enable Mail Address Allow List(Manually enterable)",
            manualInputPrompt: "Type and press Enter to add",
            mailAllowList: "Mail Address Allow List",
            maxAddressCount: "Maximum number of email addresses that can be binded",
            emailCheckRegex: "Email Check Regex (e.g. ^[^.]+@.+$ to disallow dots before @)",
            enableEmailCheckRegex: "Enable Email Check Regex"
          },
          zh: {
            save: "\u4FDD\u5B58",
            successTip: "\u4FDD\u5B58\u6210\u529F",
            enable: "\u542F\u7528",
            enableUserRegister: "\u5141\u8BB8\u7528\u6237\u6CE8\u518C",
            enableMailVerify: "\u542F\u7528\u90AE\u4EF6\u9A8C\u8BC1(\u53D1\u9001\u5730\u5740\u5FC5\u987B\u662F\u7CFB\u7EDF\u4E2D\u80FD\u6709\u4F59\u989D\u4E14\u80FD\u6B63\u5E38\u53D1\u9001\u90AE\u4EF6\u7684\u5730\u5740)",
            verifyMailSender: "\u9A8C\u8BC1\u90AE\u4EF6\u53D1\u9001\u5730\u5740",
            enableMailAllowList: "\u542F\u7528\u90AE\u4EF6\u5730\u5740\u767D\u540D\u5355(\u53EF\u624B\u52A8\u8F93\u5165, \u56DE\u8F66\u589E\u52A0)",
            manualInputPrompt: "\u8F93\u5165\u540E\u6309\u56DE\u8F66\u952E\u6DFB\u52A0",
            mailAllowList: "\u90AE\u4EF6\u5730\u5740\u767D\u540D\u5355",
            maxAddressCount: "\u53EF\u7ED1\u5B9A\u6700\u5927\u90AE\u7BB1\u5730\u5740\u6570\u91CF",
            emailCheckRegex: "\u90AE\u7BB1\u6B63\u5219\u6821\u9A8C (\u4F8B\u5982 ^[^.]+@.+$ \u7981\u6B62@\u524D\u9762\u6709.)",
            enableEmailCheckRegex: "\u542F\u7528\u90AE\u7BB1\u6B63\u5219\u6821\u9A8C"
          }
        }
      }), n = [
        "gmail.com",
        "163.com",
        "126.com",
        "qq.com",
        "outlook.com",
        "hotmail.com",
        "icloud.com",
        "yahoo.com",
        "foxmail.com"
      ], v = n.map((g) => ({
        label: g,
        value: g
      })), p = f({
        enable: false,
        enableMailVerify: false,
        verifyMailSender: "",
        enableMailAllowList: false,
        mailAllowList: n,
        maxAddressCount: 5,
        enableEmailCheckRegex: false,
        emailCheckRegex: ""
      }), s = async () => {
        try {
          const g = await P.fetch("/admin/user_settings");
          Object.assign(p.value, g);
        } catch (g) {
          r.error(g.message || "error");
        }
      }, y = async () => {
        try {
          await P.fetch("/admin/user_settings", {
            method: "POST",
            body: JSON.stringify(p.value)
          }), r.success(l("successTip"));
        } catch (g) {
          r.error(g.message || "error");
        }
      };
      return le(async () => {
        await s();
      }), (g, i) => {
        const c = O, x = De, C = Fe, L = ge, u = Ke, b = pe, w = Ce, N = Le, K = re, D = Je, A = et, I = de;
        return E(), Q("div", il, [
          e(I, {
            bordered: false,
            embedded: "",
            style: {
              "max-width": "600px"
            }
          }, {
            default: t(() => [
              e(x, {
                justify: "end"
              }, {
                default: t(() => [
                  e(c, {
                    onClick: y,
                    type: "primary",
                    loading: a(d)
                  }, {
                    default: t(() => [
                      m(o(a(l)("save")), 1)
                    ]),
                    _: 1
                  }, 8, [
                    "loading"
                  ])
                ]),
                _: 1
              }),
              e(A, {
                model: p.value
              }, {
                default: t(() => [
                  e(L, {
                    label: a(l)("enableUserRegister")
                  }, {
                    default: t(() => [
                      e(C, {
                        value: p.value.enable,
                        "onUpdate:value": i[0] || (i[0] = (q) => p.value.enable = q),
                        round: false
                      }, null, 8, [
                        "value"
                      ])
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ]),
                  e(L, {
                    label: a(l)("enableMailVerify")
                  }, {
                    default: t(() => [
                      e(w, null, {
                        default: t(() => [
                          e(u, {
                            checked: p.value.enableMailVerify,
                            "onUpdate:checked": i[1] || (i[1] = (q) => p.value.enableMailVerify = q),
                            style: {
                              width: "20%"
                            }
                          }, {
                            default: t(() => [
                              m(o(a(l)("enable")), 1)
                            ]),
                            _: 1
                          }, 8, [
                            "checked"
                          ]),
                          p.value.enableMailVerify ? (E(), X(b, {
                            key: 0,
                            value: p.value.verifyMailSender,
                            "onUpdate:value": i[2] || (i[2] = (q) => p.value.verifyMailSender = q),
                            style: {
                              width: "80%"
                            },
                            placeholder: a(l)("verifyMailSender")
                          }, null, 8, [
                            "value",
                            "placeholder"
                          ])) : Z("", true)
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ]),
                  e(L, {
                    label: a(l)("enableMailAllowList")
                  }, {
                    default: t(() => [
                      e(w, null, {
                        default: t(() => [
                          e(u, {
                            checked: p.value.enableMailAllowList,
                            "onUpdate:checked": i[3] || (i[3] = (q) => p.value.enableMailAllowList = q),
                            style: {
                              width: "20%"
                            }
                          }, {
                            default: t(() => [
                              m(o(a(l)("enable")), 1)
                            ]),
                            _: 1
                          }, 8, [
                            "checked"
                          ]),
                          p.value.enableMailAllowList ? (E(), X(K, {
                            key: 0,
                            value: p.value.mailAllowList,
                            "onUpdate:value": i[4] || (i[4] = (q) => p.value.mailAllowList = q),
                            filterable: "",
                            multiple: "",
                            tag: "",
                            style: {
                              width: "80%"
                            },
                            options: a(v),
                            placeholder: a(l)("mailAllowList")
                          }, {
                            empty: t(() => [
                              e(N, {
                                depth: "3"
                              }, {
                                default: t(() => [
                                  m(o(a(l)("manualInputPrompt")), 1)
                                ]),
                                _: 1
                              })
                            ]),
                            _: 1
                          }, 8, [
                            "value",
                            "options",
                            "placeholder"
                          ])) : Z("", true)
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ]),
                  e(L, {
                    label: a(l)("maxAddressCount")
                  }, {
                    default: t(() => [
                      e(w, null, {
                        default: t(() => [
                          e(D, {
                            value: p.value.maxAddressCount,
                            "onUpdate:value": i[5] || (i[5] = (q) => p.value.maxAddressCount = q),
                            placeholder: a(l)("maxAddressCount")
                          }, null, 8, [
                            "value",
                            "placeholder"
                          ])
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ]),
                  e(L, {
                    label: a(l)("enableEmailCheckRegex")
                  }, {
                    default: t(() => [
                      e(w, null, {
                        default: t(() => [
                          e(u, {
                            checked: p.value.enableEmailCheckRegex,
                            "onUpdate:checked": i[6] || (i[6] = (q) => p.value.enableEmailCheckRegex = q),
                            style: {
                              width: "20%"
                            }
                          }, {
                            default: t(() => [
                              m(o(a(l)("enable")), 1)
                            ]),
                            _: 1
                          }, 8, [
                            "checked"
                          ]),
                          p.value.enableEmailCheckRegex ? (E(), X(b, {
                            key: 0,
                            value: p.value.emailCheckRegex,
                            "onUpdate:value": i[7] || (i[7] = (q) => p.value.emailCheckRegex = q),
                            style: {
                              width: "80%"
                            },
                            placeholder: a(l)("emailCheckRegex")
                          }, null, 8, [
                            "value",
                            "placeholder"
                          ])) : Z("", true)
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ])
                ]),
                _: 1
              }, 8, [
                "model"
              ])
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  kt = ee(ul, [
    [
      "__scopeId",
      "data-v-609cb7d1"
    ]
  ]);
  dl = [
    "gmail.com",
    "163.com",
    "126.com",
    "qq.com",
    "outlook.com",
    "hotmail.com",
    "icloud.com",
    "yahoo.com",
    "foxmail.com"
  ];
  xt = {
    COMMOM_MAIL: dl
  };
  cl = {
    class: "center"
  };
  pl = [
    "innerHTML"
  ];
  ml = ie({
    __name: "UserOauth2Settings",
    setup(_) {
      const { loading: d } = ue(), r = ae(), { t: l } = te({
        messages: {
          en: {
            save: "Save",
            delete: "Delete",
            successTip: "Save Success",
            enable: "Enable",
            enableMailAllowList: "Enable Mail Address Allow List(Manually enterable)",
            manualInputPrompt: "Type and press Enter to add",
            mailAllowList: "Mail Address Allow List",
            addOauth2: "Add Oauth2",
            name: "Name",
            icon: "Icon (SVG, please ensure trusted source)",
            iconPreview: "Preview",
            oauth2Type: "Oauth2 Type",
            enableEmailFormat: "Enable Email Format",
            userEmailFormat: "Email Regex Pattern",
            userEmailReplace: "Replace Template",
            userEmailFormatTip: "Use regex to transform email. Example: ^(.+)@old\\.com$ with $1@new.com",
            tip: "Third-party login will automatically use the user's email to register an account (the same email will be regarded as the same account), this account is the same as the registered account, and you can also set the password through the forget password"
          },
          zh: {
            save: "\u4FDD\u5B58",
            delete: "\u5220\u9664",
            successTip: "\u4FDD\u5B58\u6210\u529F",
            enable: "\u542F\u7528",
            enableMailAllowList: "\u542F\u7528\u90AE\u4EF6\u5730\u5740\u767D\u540D\u5355(\u53EF\u624B\u52A8\u8F93\u5165, \u56DE\u8F66\u589E\u52A0)",
            manualInputPrompt: "\u8F93\u5165\u540E\u6309\u56DE\u8F66\u952E\u6DFB\u52A0",
            mailAllowList: "\u90AE\u4EF6\u5730\u5740\u767D\u540D\u5355",
            addOauth2: "\u6DFB\u52A0 Oauth2",
            name: "\u540D\u79F0",
            icon: "\u56FE\u6807 (SVG, \u8BF7\u786E\u4FDD\u6765\u6E90\u53EF\u4FE1)",
            iconPreview: "\u9884\u89C8",
            oauth2Type: "Oauth2 \u7C7B\u578B",
            enableEmailFormat: "\u542F\u7528\u90AE\u7BB1\u683C\u5F0F\u8F6C\u6362",
            userEmailFormat: "\u90AE\u7BB1\u6B63\u5219\u8868\u8FBE\u5F0F",
            userEmailReplace: "\u66FF\u6362\u6A21\u677F",
            userEmailFormatTip: "\u4F7F\u7528\u6B63\u5219\u8F6C\u6362\u90AE\u7BB1\u3002\u793A\u4F8B: ^(.+)@old\\.com$ \u914D\u5408 $1@new.com",
            tip: "\u7B2C\u4E09\u65B9\u767B\u5F55\u4F1A\u81EA\u52A8\u4F7F\u7528\u7528\u6237\u90AE\u7BB1\u6CE8\u518C\u8D26\u53F7(\u90AE\u7BB1\u76F8\u540C\u5C06\u89C6\u4E3A\u540C\u4E00\u8D26\u53F7), \u6B64\u8D26\u53F7\u548C\u6CE8\u518C\u7684\u8D26\u53F7\u76F8\u540C, \u4E5F\u53EF\u4EE5\u901A\u8FC7\u5FD8\u8BB0\u5BC6\u7801\u8BBE\u7F6E\u5BC6\u7801"
          }
        }
      }), n = {
        github: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0 0 24 12c0-6.63-5.37-12-12-12z"/></svg>',
        linuxdo: '<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em"><g><path d="m7.44,0s.09,0,.13,0c.09,0,.19,0,.28,0,.14,0,.29,0,.43,0,.09,0,.18,0,.27,0q.12,0,.25,0t.26.08c.15.03.29.06.44.08,1.97.38,3.78,1.47,4.95,3.11.04.06.09.12.13.18.67.96,1.15,2.11,1.3,3.28q0,.19.09.26c0,.15,0,.29,0,.44,0,.04,0,.09,0,.13,0,.09,0,.19,0,.28,0,.14,0,.29,0,.43,0,.09,0,.18,0,.27,0,.08,0,.17,0,.25q0,.19-.08.26c-.03.15-.06.29-.08.44-.38,1.97-1.47,3.78-3.11,4.95-.06.04-.12.09-.18.13-.96.67-2.11,1.15-3.28,1.3q-.19,0-.26.09c-.15,0-.29,0-.44,0-.04,0-.09,0-.13,0-.09,0-.19,0-.28,0-.14,0-.29,0-.43,0-.09,0-.18,0-.27,0-.08,0-.17,0-.25,0q-.19,0-.26-.08c-.15-.03-.29-.06-.44-.08-1.97-.38-3.78-1.47-4.95-3.11q-.07-.09-.13-.18c-.67-.96-1.15-2.11-1.3-3.28q0-.19-.09-.26c0-.15,0-.29,0-.44,0-.04,0-.09,0-.13,0-.09,0-.19,0-.28,0-.14,0-.29,0-.43,0-.09,0-.18,0-.27,0-.08,0-.17,0-.25q0-.19.08-.26c.03-.15.06-.29.08-.44.38-1.97,1.47-3.78,3.11-4.95.06-.04.12-.09.18-.13C4.42.73,5.57.26,6.74.1,7,.07,7.15,0,7.44,0Z" fill="#EFEFEF"/><path d="m1.27,11.33h13.45c-.94,1.89-2.51,3.21-4.51,3.88-1.99.59-3.96.37-5.8-.57-1.25-.7-2.67-1.9-3.14-3.3Z" fill="#FEB005"/><path d="m12.54,1.99c.87.7,1.82,1.59,2.18,2.68H1.27c.87-1.74,2.33-3.13,4.2-3.78,2.44-.79,5-.47,7.07,1.1Z" fill="#1D1D1F"/></g></svg>',
        authentik: '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M12 1L3 5v6c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V5l-9-4zm0 2.18l7 3.12v4.7c0 4.83-3.23 9.36-7 10.57-3.77-1.21-7-5.74-7-10.57V6.3l7-3.12zM11 7v6h2V7h-2zm0 8v2h2v-2h-2z"/></svg>'
      }, v = xt.COMMOM_MAIL.map((L) => ({
        label: L,
        value: L
      })), p = f([]), s = f(false), y = f(""), g = f("custom"), i = async () => {
        try {
          const L = await P.fetch("/admin/user_oauth2_settings");
          Object.assign(p.value, L);
        } catch (L) {
          r.error(L.message || "error");
        }
      }, c = async () => {
        try {
          await P.fetch("/admin/user_oauth2_settings", {
            method: "POST",
            body: JSON.stringify(p.value)
          }), r.success(l("successTip"));
        } catch (L) {
          r.error(L.message || "error");
        }
      }, x = () => {
        const u = {
          github: {
            authorizationURL: "https://github.com/login/oauth/authorize",
            accessTokenURL: "https://github.com/login/oauth/access_token",
            accessTokenFormat: "json",
            userInfoURL: "https://api.github.com/user",
            userEmailKey: "email",
            scope: "user:email",
            icon: n.github
          },
          linuxdo: {
            authorizationURL: "https://connect.linux.do/oauth2/authorize",
            accessTokenURL: "https://connect.linux.do/oauth2/token",
            accessTokenFormat: "urlencoded",
            userInfoURL: "https://connect.linux.do/api/user",
            userEmailKey: "id",
            scope: "user",
            enableEmailFormat: true,
            userEmailFormat: "^(.+)$",
            userEmailReplace: "linux_do_$1@oauth.linux.do",
            icon: n.linuxdo
          },
          authentik: {
            authorizationURL: "https://youdomain/application/o/authorize/",
            accessTokenURL: "https://youdomain/application/o/token/",
            accessTokenFormat: "urlencoded",
            userInfoURL: "https://youdomain/application/o/userinfo/",
            userEmailKey: "email",
            scope: "email openid",
            icon: n.authentik
          },
          custom: {}
        }[g.value] || {};
        p.value.push({
          name: y.value,
          icon: "",
          clientID: "",
          clientSecret: "",
          authorizationURL: "",
          accessTokenURL: "",
          accessTokenFormat: "",
          userInfoURL: "",
          userEmailKey: "",
          redirectURL: `${window.location.origin}/user/oauth2/callback`,
          logoutURL: "",
          scope: "",
          enableEmailFormat: false,
          userEmailFormat: "",
          userEmailReplace: "",
          enableMailAllowList: false,
          mailAllowList: xt.COMMOM_MAIL,
          ...u
        }), y.value = "", s.value = false;
      }, C = [
        {
          label: "json",
          value: "json"
        },
        {
          label: "urlencoded",
          value: "urlencoded"
        }
      ];
      return le(async () => {
        await i();
      }), (L, u) => {
        const b = pe, w = ge, N = na, K = Dt, D = et, A = O, I = Ee, q = Ue, W = De, k = ut, $ = Ye, B = re, Y = Ke, se = sa, _e = Le, S = Ce, R = Et, ne = Pt, he = de;
        return E(), Q("div", cl, [
          e(I, {
            show: s.value,
            "onUpdate:show": u[2] || (u[2] = (z) => s.value = z),
            preset: "dialog",
            title: a(l)("addOauth2")
          }, {
            action: t(() => [
              e(A, {
                loading: a(d),
                onClick: x,
                size: "small",
                tertiary: "",
                type: "primary"
              }, {
                default: t(() => [
                  m(o(a(l)("addOauth2")), 1)
                ]),
                _: 1
              }, 8, [
                "loading"
              ])
            ]),
            default: t(() => [
              e(D, null, {
                default: t(() => [
                  e(w, {
                    label: a(l)("name"),
                    required: ""
                  }, {
                    default: t(() => [
                      e(b, {
                        value: y.value,
                        "onUpdate:value": u[0] || (u[0] = (z) => y.value = z)
                      }, null, 8, [
                        "value"
                      ])
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ]),
                  e(w, {
                    label: a(l)("oauth2Type"),
                    required: ""
                  }, {
                    default: t(() => [
                      e(K, {
                        value: g.value,
                        "onUpdate:value": u[1] || (u[1] = (z) => g.value = z)
                      }, {
                        default: t(() => [
                          e(N, {
                            value: "github",
                            label: "Github"
                          }),
                          e(N, {
                            value: "linuxdo",
                            label: "Linux Do"
                          }),
                          e(N, {
                            value: "authentik",
                            label: "Authentik"
                          }),
                          e(N, {
                            value: "custom",
                            label: "Custom"
                          })
                        ]),
                        _: 1
                      }, 8, [
                        "value"
                      ])
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ])
                ]),
                _: 1
              })
            ]),
            _: 1
          }, 8, [
            "show",
            "title"
          ]),
          e(he, {
            bordered: false,
            embedded: "",
            style: {
              "max-width": "600px"
            }
          }, {
            default: t(() => [
              e(q, {
                "show-icon": false,
                bordered: false,
                type: "warning",
                closable: "",
                style: {
                  "margin-bottom": "10px"
                }
              }, {
                default: t(() => [
                  m(o(a(l)("tip")), 1)
                ]),
                _: 1
              }),
              e(W, {
                justify: "end"
              }, {
                default: t(() => [
                  e(A, {
                    onClick: u[3] || (u[3] = (z) => s.value = true),
                    secondary: "",
                    loading: a(d)
                  }, {
                    default: t(() => [
                      m(o(a(l)("addOauth2")), 1)
                    ]),
                    _: 1
                  }, 8, [
                    "loading"
                  ]),
                  e(A, {
                    onClick: c,
                    type: "primary",
                    loading: a(d)
                  }, {
                    default: t(() => [
                      m(o(a(l)("save")), 1)
                    ]),
                    _: 1
                  }, 8, [
                    "loading"
                  ])
                ]),
                _: 1
              }),
              e(k),
              e(ne, {
                "default-expanded-names": "1",
                accordion: "",
                "trigger-areas": [
                  "main",
                  "arrow"
                ]
              }, {
                default: t(() => [
                  (E(true), Q(it, null, Rt(p.value, (z, ce) => (E(), X(R, {
                    key: ce,
                    title: z.name
                  }, {
                    "header-extra": t(() => [
                      e($, {
                        onPositiveClick: (H) => p.value.splice(ce, 1)
                      }, {
                        trigger: t(() => [
                          e(A, {
                            tertiary: "",
                            type: "error"
                          }, {
                            default: t(() => [
                              m(o(a(l)("delete")), 1)
                            ]),
                            _: 1
                          })
                        ]),
                        default: t(() => [
                          m(" " + o(a(l)("delete")), 1)
                        ]),
                        _: 1
                      }, 8, [
                        "onPositiveClick"
                      ])
                    ]),
                    default: t(() => [
                      e(D, {
                        model: z
                      }, {
                        default: t(() => [
                          e(w, {
                            label: a(l)("name"),
                            required: ""
                          }, {
                            default: t(() => [
                              e(b, {
                                value: z.name,
                                "onUpdate:value": (H) => z.name = H
                              }, null, 8, [
                                "value",
                                "onUpdate:value"
                              ])
                            ]),
                            _: 2
                          }, 1032, [
                            "label"
                          ]),
                          e(w, {
                            label: a(l)("icon")
                          }, {
                            default: t(() => [
                              e(b, {
                                value: z.icon,
                                "onUpdate:value": (H) => z.icon = H,
                                type: "textarea",
                                autosize: {
                                  minRows: 2,
                                  maxRows: 5
                                },
                                style: {
                                  width: "100%"
                                }
                              }, null, 8, [
                                "value",
                                "onUpdate:value"
                              ])
                            ]),
                            _: 2
                          }, 1032, [
                            "label"
                          ]),
                          z.icon ? (E(), X(w, {
                            key: 0,
                            label: a(l)("iconPreview")
                          }, {
                            default: t(() => [
                              M("span", {
                                class: "oauth2-icon-preview",
                                innerHTML: z.icon
                              }, null, 8, pl)
                            ]),
                            _: 2
                          }, 1032, [
                            "label"
                          ])) : Z("", true),
                          e(w, {
                            label: "Client ID",
                            required: ""
                          }, {
                            default: t(() => [
                              e(b, {
                                value: z.clientID,
                                "onUpdate:value": (H) => z.clientID = H
                              }, null, 8, [
                                "value",
                                "onUpdate:value"
                              ])
                            ]),
                            _: 2
                          }, 1024),
                          e(w, {
                            label: "Client Secret",
                            required: ""
                          }, {
                            default: t(() => [
                              e(b, {
                                value: z.clientSecret,
                                "onUpdate:value": (H) => z.clientSecret = H
                              }, null, 8, [
                                "value",
                                "onUpdate:value"
                              ])
                            ]),
                            _: 2
                          }, 1024),
                          e(w, {
                            label: "Authorization URL",
                            required: ""
                          }, {
                            default: t(() => [
                              e(b, {
                                value: z.authorizationURL,
                                "onUpdate:value": (H) => z.authorizationURL = H
                              }, null, 8, [
                                "value",
                                "onUpdate:value"
                              ])
                            ]),
                            _: 2
                          }, 1024),
                          e(w, {
                            label: "Access Token URL",
                            required: ""
                          }, {
                            default: t(() => [
                              e(b, {
                                value: z.accessTokenURL,
                                "onUpdate:value": (H) => z.accessTokenURL = H
                              }, null, 8, [
                                "value",
                                "onUpdate:value"
                              ])
                            ]),
                            _: 2
                          }, 1024),
                          e(w, {
                            label: "Access Token Params Format",
                            required: ""
                          }, {
                            default: t(() => [
                              e(B, {
                                value: z.accessTokenFormat,
                                "onUpdate:value": (H) => z.accessTokenFormat = H,
                                options: C
                              }, null, 8, [
                                "value",
                                "onUpdate:value"
                              ])
                            ]),
                            _: 2
                          }, 1024),
                          e(w, {
                            label: "User Info URL",
                            required: ""
                          }, {
                            default: t(() => [
                              e(b, {
                                value: z.userInfoURL,
                                "onUpdate:value": (H) => z.userInfoURL = H
                              }, null, 8, [
                                "value",
                                "onUpdate:value"
                              ])
                            ]),
                            _: 2
                          }, 1024),
                          e(w, {
                            label: "User Email Key (Support JSONPATH like $[0].email)",
                            required: ""
                          }, {
                            default: t(() => [
                              e(b, {
                                value: z.userEmailKey,
                                "onUpdate:value": (H) => z.userEmailKey = H
                              }, null, 8, [
                                "value",
                                "onUpdate:value"
                              ])
                            ]),
                            _: 2
                          }, 1024),
                          e(w, {
                            label: a(l)("enableEmailFormat")
                          }, {
                            default: t(() => [
                              e(Y, {
                                checked: z.enableEmailFormat,
                                "onUpdate:checked": (H) => z.enableEmailFormat = H
                              }, {
                                default: t(() => [
                                  m(o(a(l)("enable")), 1)
                                ]),
                                _: 1
                              }, 8, [
                                "checked",
                                "onUpdate:checked"
                              ])
                            ]),
                            _: 2
                          }, 1032, [
                            "label"
                          ]),
                          z.enableEmailFormat ? (E(), X(w, {
                            key: 1,
                            label: a(l)("userEmailFormat")
                          }, {
                            default: t(() => [
                              e(se, {
                                trigger: "hover"
                              }, {
                                trigger: t(() => [
                                  e(b, {
                                    value: z.userEmailFormat,
                                    "onUpdate:value": (H) => z.userEmailFormat = H,
                                    placeholder: "^(.+)@old\\.com$"
                                  }, null, 8, [
                                    "value",
                                    "onUpdate:value"
                                  ])
                                ]),
                                default: t(() => [
                                  m(" " + o(a(l)("userEmailFormatTip")), 1)
                                ]),
                                _: 2
                              }, 1024)
                            ]),
                            _: 2
                          }, 1032, [
                            "label"
                          ])) : Z("", true),
                          z.enableEmailFormat ? (E(), X(w, {
                            key: 2,
                            label: a(l)("userEmailReplace")
                          }, {
                            default: t(() => [
                              e(se, {
                                trigger: "hover"
                              }, {
                                trigger: t(() => [
                                  e(b, {
                                    value: z.userEmailReplace,
                                    "onUpdate:value": (H) => z.userEmailReplace = H,
                                    placeholder: "$1@new.com"
                                  }, null, 8, [
                                    "value",
                                    "onUpdate:value"
                                  ])
                                ]),
                                default: t(() => [
                                  m(" " + o(a(l)("userEmailFormatTip")), 1)
                                ]),
                                _: 2
                              }, 1024)
                            ]),
                            _: 2
                          }, 1032, [
                            "label"
                          ])) : Z("", true),
                          e(w, {
                            label: "Redirect URL",
                            required: ""
                          }, {
                            default: t(() => [
                              e(b, {
                                value: z.redirectURL,
                                "onUpdate:value": (H) => z.redirectURL = H
                              }, null, 8, [
                                "value",
                                "onUpdate:value"
                              ])
                            ]),
                            _: 2
                          }, 1024),
                          e(w, {
                            label: "Scope",
                            required: ""
                          }, {
                            default: t(() => [
                              e(b, {
                                value: z.scope,
                                "onUpdate:value": (H) => z.scope = H
                              }, null, 8, [
                                "value",
                                "onUpdate:value"
                              ])
                            ]),
                            _: 2
                          }, 1024),
                          e(w, {
                            label: a(l)("enableMailAllowList")
                          }, {
                            default: t(() => [
                              e(S, null, {
                                default: t(() => [
                                  e(Y, {
                                    checked: z.enableMailAllowList,
                                    "onUpdate:checked": (H) => z.enableMailAllowList = H,
                                    style: {
                                      width: "20%"
                                    }
                                  }, {
                                    default: t(() => [
                                      m(o(a(l)("enable")), 1)
                                    ]),
                                    _: 1
                                  }, 8, [
                                    "checked",
                                    "onUpdate:checked"
                                  ]),
                                  z.enableMailAllowList ? (E(), X(B, {
                                    key: 0,
                                    value: z.mailAllowList,
                                    "onUpdate:value": (H) => z.mailAllowList = H,
                                    filterable: "",
                                    multiple: "",
                                    tag: "",
                                    style: {
                                      width: "80%"
                                    },
                                    options: a(v),
                                    placeholder: a(l)("mailAllowList")
                                  }, {
                                    empty: t(() => [
                                      e(_e, {
                                        depth: "3"
                                      }, {
                                        default: t(() => [
                                          m(o(a(l)("manualInputPrompt")), 1)
                                        ]),
                                        _: 1
                                      })
                                    ]),
                                    _: 1
                                  }, 8, [
                                    "value",
                                    "onUpdate:value",
                                    "options",
                                    "placeholder"
                                  ])) : Z("", true)
                                ]),
                                _: 2
                              }, 1024)
                            ]),
                            _: 2
                          }, 1032, [
                            "label"
                          ])
                        ]),
                        _: 2
                      }, 1032, [
                        "model"
                      ])
                    ]),
                    _: 2
                  }, 1032, [
                    "title"
                  ]))), 128))
                ]),
                _: 1
              })
            ]),
            _: 1
          })
        ]);
      };
    }
  });
  _l = ee(ml, [
    [
      "__scopeId",
      "data-v-a62aa937"
    ]
  ]);
  fl = {
    style: {
      "margin-top": "10px"
    }
  };
  vl = {
    key: 1
  };
  bl = {
    __name: "RoleAddressConfig",
    setup(_) {
      const { loading: d } = ue(), r = ae(), { t: l } = te({
        messages: {
          en: {
            role: "Role",
            maxAddressCount: "Max Address Count",
            save: "Save",
            successTip: "Success",
            noRolesAvailable: "No roles available in system config",
            roleConfigDesc: "Configure maximum address count for each user role. Role-based limits take priority over global settings.",
            notConfigured: "Not Configured (Use Global Settings)"
          },
          zh: {
            role: "\u89D2\u8272",
            maxAddressCount: "\u6700\u5927\u5730\u5740\u6570\u91CF",
            save: "\u4FDD\u5B58",
            successTip: "\u6210\u529F",
            noRolesAvailable: "\u7CFB\u7EDF\u914D\u7F6E\u4E2D\u6CA1\u6709\u53EF\u7528\u7684\u89D2\u8272",
            roleConfigDesc: "\u4E3A\u6BCF\u4E2A\u7528\u6237\u89D2\u8272\u914D\u7F6E\u6700\u5927\u5730\u5740\u6570\u91CF\u3002\u89D2\u8272\u914D\u7F6E\u4F18\u5148\u4E8E\u5168\u5C40\u8BBE\u7F6E\u3002",
            notConfigured: "\u672A\u914D\u7F6E\uFF08\u4F7F\u7528\u5168\u5C40\u8BBE\u7F6E\uFF09"
          }
        }
      }), n = f([]), v = f([]), p = async () => {
        try {
          const i = await P.fetch("/admin/user_roles");
          n.value = i;
        } catch (i) {
          console.log(i), r.error(i.message || "error");
        }
      }, s = async () => {
        try {
          const { configs: i } = await P.fetch("/admin/role_address_config");
          v.value = n.value.map((c) => {
            var _a2;
            return {
              role: c.role,
              max_address_count: ((_a2 = i[c.role]) == null ? void 0 : _a2.maxAddressCount) ?? null
            };
          });
        } catch (i) {
          console.log(i), r.error(i.message || "error");
        }
      }, y = async () => {
        try {
          const i = {};
          v.value.forEach((c) => {
            c.max_address_count !== null && c.max_address_count !== void 0 && (i[c.role] = {
              maxAddressCount: c.max_address_count
            });
          }), await P.fetch("/admin/role_address_config", {
            method: "POST",
            body: JSON.stringify({
              configs: i
            })
          }), r.success(l("successTip")), await s();
        } catch (i) {
          console.log(i), r.error(i.message || "error");
        }
      }, g = [
        {
          title: l("role"),
          key: "role",
          width: 200,
          render(i) {
            return U(rt, {
              type: "info",
              bordered: false
            }, {
              default: () => i.role
            });
          }
        },
        {
          title: l("maxAddressCount"),
          key: "max_address_count",
          render(i) {
            return U(Je, {
              value: i.max_address_count,
              min: 0,
              max: 999,
              clearable: true,
              placeholder: l("notConfigured"),
              style: "width: 200px;",
              onUpdateValue: (c) => {
                i.max_address_count = c;
              }
            });
          }
        }
      ];
      return le(async () => {
        await p(), await s();
      }), (i, c) => {
        const x = Ue, C = qe;
        return E(), Q("div", fl, [
          e(x, {
            type: "info",
            bordered: false,
            style: {
              "margin-bottom": "20px"
            }
          }, {
            default: t(() => [
              m(o(a(l)("roleConfigDesc")), 1)
            ]),
            _: 1
          }),
          n.value.length === 0 ? (E(), X(x, {
            key: 0,
            type: "warning",
            bordered: false
          }, {
            default: t(() => [
              m(o(a(l)("noRolesAvailable")), 1)
            ]),
            _: 1
          })) : (E(), Q("div", vl, [
            e(a(Ve), {
              justify: "end",
              style: {
                "margin-bottom": "12px"
              }
            }, {
              default: t(() => [
                e(a(O), {
                  loading: a(d),
                  onClick: y,
                  type: "primary"
                }, {
                  default: t(() => [
                    m(o(a(l)("save")), 1)
                  ]),
                  _: 1
                }, 8, [
                  "loading"
                ])
              ]),
              _: 1
            }),
            e(C, {
              columns: g,
              data: v.value,
              bordered: false,
              embedded: ""
            }, null, 8, [
              "data"
            ])
          ]))
        ]);
      };
    }
  };
  gl = ee(bl, [
    [
      "__scopeId",
      "data-v-68eee4b7"
    ]
  ]);
  hl = {
    style: {
      "margin-top": "10px"
    }
  };
  yl = {
    __name: "Mails",
    setup(_) {
      const { adminMailTabAddress: d } = ue(), { t: r } = te({
        messages: {
          en: {
            addressQueryTip: "Leave blank to query all addresses",
            query: "Query"
          },
          zh: {
            addressQueryTip: "\u7559\u7A7A\u67E5\u8BE2\u6240\u6709\u5730\u5740",
            query: "\u67E5\u8BE2"
          }
        }
      }), l = f(""), n = () => {
        d.value = d.value.trim(), l.value = Date.now();
      }, v = async (s, y) => await P.fetch(`/admin/mails?limit=${s}&offset=${y}` + (d.value ? `&address=${d.value}` : "")), p = async (s) => {
        await P.fetch(`/admin/mails/${s}`, {
          method: "DELETE"
        });
      };
      return (s, y) => {
        const g = pe, i = O, c = Ce;
        return E(), Q("div", hl, [
          e(c, null, {
            default: t(() => [
              e(g, {
                value: a(d),
                "onUpdate:value": y[0] || (y[0] = (x) => ot(d) ? d.value = x : null),
                placeholder: a(r)("addressQueryTip"),
                onKeydown: Ge(n, [
                  "enter"
                ]),
                clearable: ""
              }, null, 8, [
                "value",
                "placeholder"
              ]),
              e(i, {
                onClick: n,
                type: "primary",
                tertiary: ""
              }, {
                default: t(() => [
                  m(o(a(r)("query")), 1)
                ]),
                _: 1
              })
            ]),
            _: 1
          }),
          y[1] || (y[1] = M("div", {
            style: {
              "margin-top": "10px"
            }
          }, null, -1)),
          (E(), X($t, {
            key: l.value,
            enableUserDeleteEmail: true,
            fetchMailData: v,
            deleteMail: p,
            showFilterInput: true
          }))
        ]);
      };
    }
  };
  wl = {
    style: {
      "margin-top": "10px"
    }
  };
  kl = {
    __name: "MailsUnknow",
    setup(_) {
      const d = async (l, n) => await P.fetch(`/admin/mails_unknow?limit=${l}&offset=${n}`), r = async (l) => {
        await P.fetch(`/admin/mails/${l}`, {
          method: "DELETE"
        });
      };
      return (l, n) => (E(), Q("div", wl, [
        e($t, {
          enableUserDeleteEmail: true,
          fetchMailData: d,
          deleteMail: r
        })
      ]));
    }
  };
  xl = {
    class: "center"
  };
  Cl = {
    __name: "Maintenance",
    setup(_) {
      const { loading: d } = ue(), r = ae(), l = f({
        enableMailsAutoCleanup: false,
        cleanMailsDays: 30,
        enableUnknowMailsAutoCleanup: false,
        cleanUnknowMailsDays: 30,
        enableSendBoxAutoCleanup: false,
        cleanSendBoxDays: 30,
        enableAddressAutoCleanup: false,
        cleanAddressDays: 30,
        enableInactiveAddressAutoCleanup: false,
        cleanInactiveAddressDays: 30,
        enableUnboundAddressAutoCleanup: false,
        cleanUnboundAddressDays: 30,
        enableEmptyAddressAutoCleanup: false,
        cleanEmptyAddressDays: 30,
        customSqlCleanupList: []
      }), { t: n } = te({
        messages: {
          en: {
            tip: "Please input the days",
            mailBoxLabel: "Cleanup the inbox before n days",
            mailUnknowLabel: "Cleanup the unknow mail before n days",
            sendBoxLabel: "Cleanup the sendbox before n days",
            addressCreateLabel: "Cleanup the address created before n days",
            inactiveAddressLabel: "Cleanup the inactive address before n days",
            unboundAddressLabel: "Cleanup the unbound address before n days",
            emptyAddressLabel: "Cleanup the empty address before n days",
            cleanupNow: "Cleanup now",
            autoCleanup: "Auto cleanup",
            cleanupSuccess: "Cleanup success",
            saveSuccess: "Save success",
            save: "Save",
            cronTip: "Enable cron cleanup, need to configure [crons] in worker, please refer to the document, setting 0 days means clear all",
            basicCleanup: "Basic Cleanup",
            customSqlCleanup: "Custom SQL Cleanup",
            customSqlTip: "Add custom DELETE SQL statements for scheduled cleanup. Only single DELETE statement is allowed per entry.",
            addCustomSql: "Add Custom SQL",
            sqlName: "Name",
            sqlStatement: "SQL Statement (DELETE only)",
            sqlNamePlaceholder: "e.g. Clean old logs",
            sqlPlaceholder: "e.g. DELETE FROM raw_mails WHERE source GLOB '*{'@'}example.com' AND created_at < datetime('now', '-3 day')",
            deleteCustomSql: "Delete"
          },
          zh: {
            tip: "\u8BF7\u8F93\u5165\u5929\u6570",
            mailBoxLabel: "\u6E05\u7406 n \u5929\u524D\u7684\u6536\u4EF6\u7BB1",
            mailUnknowLabel: "\u6E05\u7406 n \u5929\u524D\u7684\u65E0\u6536\u4EF6\u4EBA\u90AE\u4EF6",
            sendBoxLabel: "\u6E05\u7406 n \u5929\u524D\u7684\u53D1\u4EF6\u7BB1",
            addressCreateLabel: "\u6E05\u7406 n \u5929\u524D\u521B\u5EFA\u7684\u5730\u5740",
            inactiveAddressLabel: "\u6E05\u7406 n \u5929\u524D\u7684\u672A\u6D3B\u8DC3\u5730\u5740",
            unboundAddressLabel: "\u6E05\u7406 n \u5929\u524D\u7684\u672A\u7ED1\u5B9A\u7528\u6237\u5730\u5740",
            emptyAddressLabel: "\u6E05\u7406 n \u5929\u524D\u7A7A\u90AE\u4EF6\u7684\u90AE\u7BB1\u5730\u5740",
            autoCleanup: "\u81EA\u52A8\u6E05\u7406",
            cleanupSuccess: "\u6E05\u7406\u6210\u529F",
            saveSuccess: "\u4FDD\u5B58\u6210\u529F",
            cleanupNow: "\u7ACB\u5373\u6E05\u7406",
            save: "\u4FDD\u5B58",
            cronTip: "\u542F\u7528\u5B9A\u65F6\u6E05\u7406, \u9700\u5728 worker \u914D\u7F6E [crons] \u53C2\u6570, \u8BF7\u53C2\u8003\u6587\u6863, \u914D\u7F6E\u4E3A 0 \u5929\u8868\u793A\u5168\u90E8\u6E05\u7A7A",
            basicCleanup: "\u57FA\u7840\u6E05\u7406",
            customSqlCleanup: "\u81EA\u5B9A\u4E49 SQL \u6E05\u7406",
            customSqlTip: "\u6DFB\u52A0\u81EA\u5B9A\u4E49 DELETE SQL \u8BED\u53E5\u8FDB\u884C\u5B9A\u65F6\u6E05\u7406\u3002\u6BCF\u6761\u8BB0\u5F55\u4EC5\u5141\u8BB8\u5355\u6761 DELETE \u8BED\u53E5\u3002",
            addCustomSql: "\u6DFB\u52A0\u81EA\u5B9A\u4E49 SQL",
            sqlName: "\u540D\u79F0",
            sqlStatement: "SQL \u8BED\u53E5 (\u4EC5\u9650 DELETE)",
            sqlNamePlaceholder: "\u4F8B\u5982: \u6E05\u7406\u65E7\u65E5\u5FD7",
            sqlPlaceholder: "\u4F8B\u5982: DELETE FROM raw_mails WHERE source GLOB '*{'@'}example.com' AND created_at < datetime('now', '-3 day')",
            deleteCustomSql: "\u5220\u9664"
          }
        }
      }), v = async (i, c) => {
        try {
          await P.fetch("/admin/cleanup", {
            method: "POST",
            body: JSON.stringify({
              cleanType: i,
              cleanDays: c
            })
          }), r.success(n("cleanupSuccess"));
        } catch (x) {
          r.error(x.message || "error");
        }
      }, p = () => {
        l.value.customSqlCleanupList || (l.value.customSqlCleanupList = []), l.value.customSqlCleanupList.push({
          id: Date.now().toString(),
          name: "",
          sql: "",
          enabled: false
        });
      }, s = (i) => {
        l.value.customSqlCleanupList.splice(i, 1);
      }, y = async () => {
        try {
          const i = await P.fetch("/admin/auto_cleanup");
          i && Object.assign(l.value, i), l.value.customSqlCleanupList || (l.value.customSqlCleanupList = []);
        } catch (i) {
          r.error(i.message || "error");
        }
      }, g = async () => {
        try {
          await P.fetch("/admin/auto_cleanup", {
            method: "POST",
            body: JSON.stringify(l.value)
          }), r.success(n("saveSuccess"));
        } catch (i) {
          r.error(i.message || "error");
        }
      };
      return le(async () => {
        await y();
      }), (i, c) => {
        const x = Ue, C = O, L = De, u = Ke, b = Je, w = It, N = ge, K = et, D = zt, A = pe, I = Ve, q = de, W = Bt;
        return E(), Q("div", xl, [
          e(q, {
            bordered: false,
            embedded: ""
          }, {
            default: t(() => [
              e(x, {
                "show-icon": false,
                bordered: false,
                type: "warning"
              }, {
                default: t(() => [
                  M("span", null, o(a(n)("cronTip")), 1)
                ]),
                _: 1
              }),
              e(L, {
                justify: "end"
              }, {
                default: t(() => [
                  e(C, {
                    onClick: g,
                    type: "primary",
                    loading: a(d)
                  }, {
                    default: t(() => [
                      m(o(a(n)("save")), 1)
                    ]),
                    _: 1
                  }, 8, [
                    "loading"
                  ])
                ]),
                _: 1
              }),
              e(W, {
                type: "segment",
                style: {
                  "margin-top": "16px"
                }
              }, {
                default: t(() => [
                  e(D, {
                    name: "basic",
                    tab: a(n)("basicCleanup")
                  }, {
                    default: t(() => [
                      e(K, {
                        model: l.value
                      }, {
                        default: t(() => [
                          e(N, {
                            label: a(n)("mailBoxLabel")
                          }, {
                            default: t(() => [
                              e(u, {
                                checked: l.value.enableMailsAutoCleanup,
                                "onUpdate:checked": c[0] || (c[0] = (k) => l.value.enableMailsAutoCleanup = k)
                              }, {
                                default: t(() => [
                                  m(o(a(n)("autoCleanup")), 1)
                                ]),
                                _: 1
                              }, 8, [
                                "checked"
                              ]),
                              e(b, {
                                value: l.value.cleanMailsDays,
                                "onUpdate:value": c[1] || (c[1] = (k) => l.value.cleanMailsDays = k),
                                placeholder: a(n)("tip")
                              }, null, 8, [
                                "value",
                                "placeholder"
                              ]),
                              e(C, {
                                onClick: c[2] || (c[2] = (k) => v("mails", l.value.cleanMailsDays))
                              }, {
                                icon: t(() => [
                                  e(w, {
                                    component: a(Pe)
                                  }, null, 8, [
                                    "component"
                                  ])
                                ]),
                                default: t(() => [
                                  m(" " + o(a(n)("cleanupNow")), 1)
                                ]),
                                _: 1
                              })
                            ]),
                            _: 1
                          }, 8, [
                            "label"
                          ]),
                          e(N, {
                            label: a(n)("mailUnknowLabel")
                          }, {
                            default: t(() => [
                              e(u, {
                                checked: l.value.enableUnknowMailsAutoCleanup,
                                "onUpdate:checked": c[3] || (c[3] = (k) => l.value.enableUnknowMailsAutoCleanup = k)
                              }, {
                                default: t(() => [
                                  m(o(a(n)("autoCleanup")), 1)
                                ]),
                                _: 1
                              }, 8, [
                                "checked"
                              ]),
                              e(b, {
                                value: l.value.cleanUnknowMailsDays,
                                "onUpdate:value": c[4] || (c[4] = (k) => l.value.cleanUnknowMailsDays = k),
                                placeholder: a(n)("tip")
                              }, null, 8, [
                                "value",
                                "placeholder"
                              ]),
                              e(C, {
                                onClick: c[5] || (c[5] = (k) => v("mails_unknow", l.value.cleanUnknowMailsDays))
                              }, {
                                icon: t(() => [
                                  e(w, {
                                    component: a(Pe)
                                  }, null, 8, [
                                    "component"
                                  ])
                                ]),
                                default: t(() => [
                                  m(" " + o(a(n)("cleanupNow")), 1)
                                ]),
                                _: 1
                              })
                            ]),
                            _: 1
                          }, 8, [
                            "label"
                          ]),
                          e(N, {
                            label: a(n)("sendBoxLabel")
                          }, {
                            default: t(() => [
                              e(u, {
                                checked: l.value.enableSendBoxAutoCleanup,
                                "onUpdate:checked": c[6] || (c[6] = (k) => l.value.enableSendBoxAutoCleanup = k)
                              }, {
                                default: t(() => [
                                  m(o(a(n)("autoCleanup")), 1)
                                ]),
                                _: 1
                              }, 8, [
                                "checked"
                              ]),
                              e(b, {
                                value: l.value.cleanSendBoxDays,
                                "onUpdate:value": c[7] || (c[7] = (k) => l.value.cleanSendBoxDays = k),
                                placeholder: a(n)("tip")
                              }, null, 8, [
                                "value",
                                "placeholder"
                              ]),
                              e(C, {
                                onClick: c[8] || (c[8] = (k) => v("sendbox", l.value.cleanSendBoxDays))
                              }, {
                                icon: t(() => [
                                  e(w, {
                                    component: a(Pe)
                                  }, null, 8, [
                                    "component"
                                  ])
                                ]),
                                default: t(() => [
                                  m(" " + o(a(n)("cleanupNow")), 1)
                                ]),
                                _: 1
                              })
                            ]),
                            _: 1
                          }, 8, [
                            "label"
                          ]),
                          e(N, {
                            label: a(n)("addressCreateLabel")
                          }, {
                            default: t(() => [
                              e(u, {
                                checked: l.value.enableAddressAutoCleanup,
                                "onUpdate:checked": c[9] || (c[9] = (k) => l.value.enableAddressAutoCleanup = k)
                              }, {
                                default: t(() => [
                                  m(o(a(n)("autoCleanup")), 1)
                                ]),
                                _: 1
                              }, 8, [
                                "checked"
                              ]),
                              e(b, {
                                value: l.value.cleanAddressDays,
                                "onUpdate:value": c[10] || (c[10] = (k) => l.value.cleanAddressDays = k),
                                placeholder: a(n)("tip")
                              }, null, 8, [
                                "value",
                                "placeholder"
                              ]),
                              e(C, {
                                onClick: c[11] || (c[11] = (k) => v("addressCreated", l.value.cleanAddressDays))
                              }, {
                                icon: t(() => [
                                  e(w, {
                                    component: a(Pe)
                                  }, null, 8, [
                                    "component"
                                  ])
                                ]),
                                default: t(() => [
                                  m(" " + o(a(n)("cleanupNow")), 1)
                                ]),
                                _: 1
                              })
                            ]),
                            _: 1
                          }, 8, [
                            "label"
                          ]),
                          e(N, {
                            label: a(n)("inactiveAddressLabel")
                          }, {
                            default: t(() => [
                              e(u, {
                                checked: l.value.enableInactiveAddressAutoCleanup,
                                "onUpdate:checked": c[12] || (c[12] = (k) => l.value.enableInactiveAddressAutoCleanup = k)
                              }, {
                                default: t(() => [
                                  m(o(a(n)("autoCleanup")), 1)
                                ]),
                                _: 1
                              }, 8, [
                                "checked"
                              ]),
                              e(b, {
                                value: l.value.cleanInactiveAddressDays,
                                "onUpdate:value": c[13] || (c[13] = (k) => l.value.cleanInactiveAddressDays = k),
                                placeholder: a(n)("tip")
                              }, null, 8, [
                                "value",
                                "placeholder"
                              ]),
                              e(C, {
                                onClick: c[14] || (c[14] = (k) => v("inactiveAddress", l.value.cleanInactiveAddressDays))
                              }, {
                                icon: t(() => [
                                  e(w, {
                                    component: a(Pe)
                                  }, null, 8, [
                                    "component"
                                  ])
                                ]),
                                default: t(() => [
                                  m(" " + o(a(n)("cleanupNow")), 1)
                                ]),
                                _: 1
                              })
                            ]),
                            _: 1
                          }, 8, [
                            "label"
                          ]),
                          e(N, {
                            label: a(n)("unboundAddressLabel")
                          }, {
                            default: t(() => [
                              e(u, {
                                checked: l.value.enableUnboundAddressAutoCleanup,
                                "onUpdate:checked": c[15] || (c[15] = (k) => l.value.enableUnboundAddressAutoCleanup = k)
                              }, {
                                default: t(() => [
                                  m(o(a(n)("autoCleanup")), 1)
                                ]),
                                _: 1
                              }, 8, [
                                "checked"
                              ]),
                              e(b, {
                                value: l.value.cleanUnboundAddressDays,
                                "onUpdate:value": c[16] || (c[16] = (k) => l.value.cleanUnboundAddressDays = k),
                                placeholder: a(n)("tip")
                              }, null, 8, [
                                "value",
                                "placeholder"
                              ]),
                              e(C, {
                                onClick: c[17] || (c[17] = (k) => v("unboundAddress", l.value.cleanUnboundAddressDays))
                              }, {
                                icon: t(() => [
                                  e(w, {
                                    component: a(Pe)
                                  }, null, 8, [
                                    "component"
                                  ])
                                ]),
                                default: t(() => [
                                  m(" " + o(a(n)("cleanupNow")), 1)
                                ]),
                                _: 1
                              })
                            ]),
                            _: 1
                          }, 8, [
                            "label"
                          ]),
                          e(N, {
                            label: a(n)("emptyAddressLabel")
                          }, {
                            default: t(() => [
                              e(u, {
                                checked: l.value.enableEmptyAddressAutoCleanup,
                                "onUpdate:checked": c[18] || (c[18] = (k) => l.value.enableEmptyAddressAutoCleanup = k)
                              }, {
                                default: t(() => [
                                  m(o(a(n)("autoCleanup")), 1)
                                ]),
                                _: 1
                              }, 8, [
                                "checked"
                              ]),
                              e(b, {
                                value: l.value.cleanEmptyAddressDays,
                                "onUpdate:value": c[19] || (c[19] = (k) => l.value.cleanEmptyAddressDays = k),
                                placeholder: a(n)("tip")
                              }, null, 8, [
                                "value",
                                "placeholder"
                              ]),
                              e(C, {
                                onClick: c[20] || (c[20] = (k) => v("emptyAddress", l.value.cleanEmptyAddressDays))
                              }, {
                                icon: t(() => [
                                  e(w, {
                                    component: a(Pe)
                                  }, null, 8, [
                                    "component"
                                  ])
                                ]),
                                default: t(() => [
                                  m(" " + o(a(n)("cleanupNow")), 1)
                                ]),
                                _: 1
                              })
                            ]),
                            _: 1
                          }, 8, [
                            "label"
                          ])
                        ]),
                        _: 1
                      }, 8, [
                        "model"
                      ])
                    ]),
                    _: 1
                  }, 8, [
                    "tab"
                  ]),
                  e(D, {
                    name: "custom_sql",
                    tab: a(n)("customSqlCleanup")
                  }, {
                    default: t(() => [
                      e(x, {
                        "show-icon": false,
                        bordered: false,
                        type: "info",
                        style: {
                          "margin-bottom": "16px"
                        }
                      }, {
                        default: t(() => [
                          M("span", null, o(a(n)("customSqlTip")), 1)
                        ]),
                        _: 1
                      }),
                      e(I, {
                        vertical: ""
                      }, {
                        default: t(() => [
                          (E(true), Q(it, null, Rt(l.value.customSqlCleanupList, (k, $) => (E(), X(q, {
                            key: k.id,
                            size: "small"
                          }, {
                            default: t(() => [
                              e(I, {
                                vertical: ""
                              }, {
                                default: t(() => [
                                  e(I, {
                                    align: "center"
                                  }, {
                                    default: t(() => [
                                      e(u, {
                                        checked: k.enabled,
                                        "onUpdate:checked": (B) => k.enabled = B
                                      }, {
                                        default: t(() => [
                                          m(o(a(n)("autoCleanup")), 1)
                                        ]),
                                        _: 1
                                      }, 8, [
                                        "checked",
                                        "onUpdate:checked"
                                      ]),
                                      e(A, {
                                        value: k.name,
                                        "onUpdate:value": (B) => k.name = B,
                                        placeholder: a(n)("sqlNamePlaceholder"),
                                        style: {
                                          width: "200px"
                                        }
                                      }, null, 8, [
                                        "value",
                                        "onUpdate:value",
                                        "placeholder"
                                      ]),
                                      e(C, {
                                        onClick: (B) => s($),
                                        type: "error",
                                        quaternary: ""
                                      }, {
                                        icon: t(() => [
                                          e(w, {
                                            component: a(La)
                                          }, null, 8, [
                                            "component"
                                          ])
                                        ]),
                                        default: t(() => [
                                          m(" " + o(a(n)("deleteCustomSql")), 1)
                                        ]),
                                        _: 1
                                      }, 8, [
                                        "onClick"
                                      ])
                                    ]),
                                    _: 2
                                  }, 1024),
                                  e(A, {
                                    value: k.sql,
                                    "onUpdate:value": (B) => k.sql = B,
                                    type: "textarea",
                                    placeholder: a(n)("sqlPlaceholder"),
                                    autosize: {
                                      minRows: 2
                                    },
                                    class: "sql-input"
                                  }, null, 8, [
                                    "value",
                                    "onUpdate:value",
                                    "placeholder"
                                  ])
                                ]),
                                _: 2
                              }, 1024)
                            ]),
                            _: 2
                          }, 1024))), 128)),
                          e(C, {
                            onClick: p
                          }, {
                            icon: t(() => [
                              e(w, {
                                component: a(Aa)
                              }, null, 8, [
                                "component"
                              ])
                            ]),
                            default: t(() => [
                              m(" " + o(a(n)("addCustomSql")), 1)
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }, 8, [
                    "tab"
                  ])
                ]),
                _: 1
              })
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  Al = ee(Cl, [
    [
      "__scopeId",
      "data-v-2f016879"
    ]
  ]);
  Sl = {
    class: "center"
  };
  Ul = {
    __name: "DatabaseManager",
    setup(_) {
      const d = ae(), r = f({
        need_initialization: false,
        need_migration: false,
        current_db_version: "",
        code_db_version: ""
      }), { t: l } = te({
        messages: {
          en: {
            need_initialization_tip: "Database initialization is required. Please initialize the database.",
            need_migration_tip: "Database migration is required. Please migrate the database.",
            current_db_version: "Current DB Version",
            code_db_version: "Code Needed DB Version",
            init: "Initialize Database",
            migration: "Migrate Database",
            initializationSuccess: "Database initialized successfully",
            migrationSuccess: "Database migrated successfully"
          },
          zh: {
            need_initialization_tip: "\u9700\u8981\u521D\u59CB\u5316\u6570\u636E\u5E93\uFF0C\u8BF7\u521D\u59CB\u5316\u6570\u636E\u5E93",
            need_migration_tip: "\u9700\u8981\u8FC1\u79FB\u6570\u636E\u5E93\uFF0C\u8BF7\u8FC1\u79FB\u6570\u636E\u5E93",
            current_db_version: "\u5F53\u524D\u6570\u636E\u5E93\u7248\u672C",
            code_db_version: "\u9700\u8981\u7684\u6570\u636E\u5E93\u7248\u672C",
            init: "\u521D\u59CB\u5316\u6570\u636E\u5E93",
            migration: "\u5347\u7EA7\u6570\u636E\u5E93 Schema",
            initializationSuccess: "\u6570\u636E\u5E93\u521D\u59CB\u5316\u6210\u529F",
            migrationSuccess: "\u6570\u636E\u5E93\u5347\u7EA7\u6210\u529F"
          }
        }
      }), n = async () => {
        try {
          const s = await P.fetch("/admin/db_version");
          s && Object.assign(r.value, s);
        } catch (s) {
          d.error(s.message || "error");
        }
      }, v = async () => {
        try {
          await P.fetch("/admin/db_initialize", {
            method: "POST"
          }), await n(), d.success(l("initializationSuccess"));
        } catch (s) {
          d.error(s.message || "error");
        }
      }, p = async () => {
        try {
          await P.fetch("/admin/db_migration", {
            method: "POST"
          }), await n(), d.success(l("migrationSuccess"));
        } catch (s) {
          d.error(s.message || "error");
        }
      };
      return le(async () => {
        await n();
      }), (s, y) => {
        const g = O, i = Ue, c = de;
        return E(), Q("div", Sl, [
          e(c, {
            bordered: false,
            embedded: ""
          }, {
            default: t(() => [
              r.value.need_initialization ? (E(), X(i, {
                key: 0,
                type: "warning",
                "show-icon": false,
                bordered: false
              }, {
                default: t(() => [
                  M("span", null, o(a(l)("need_initialization_tip")), 1),
                  e(g, {
                    onClick: v,
                    type: "primary",
                    secondary: "",
                    block: "",
                    loading: s.loading
                  }, {
                    default: t(() => [
                      m(o(a(l)("init")), 1)
                    ]),
                    _: 1
                  }, 8, [
                    "loading"
                  ])
                ]),
                _: 1
              })) : Z("", true),
              r.value.need_migration ? (E(), X(i, {
                key: 1,
                type: "warning",
                "show-icon": false,
                bordered: false
              }, {
                default: t(() => [
                  M("span", null, o(a(l)("need_migration_tip")), 1),
                  e(g, {
                    onClick: p,
                    type: "primary",
                    secondary: "",
                    block: "",
                    loading: s.loading
                  }, {
                    default: t(() => [
                      m(o(a(l)("migration")), 1)
                    ]),
                    _: 1
                  }, 8, [
                    "loading"
                  ])
                ]),
                _: 1
              })) : Z("", true),
              e(i, {
                type: "info",
                "show-icon": false,
                bordered: false
              }, {
                default: t(() => [
                  M("span", null, o(a(l)("current_db_version")) + ": " + o(r.value.current_db_version || "unknown") + ", " + o(a(l)("code_db_version")) + ": " + o(r.value.code_db_version), 1)
                ]),
                _: 1
              })
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  Ct = ee(Ul, [
    [
      "__scopeId",
      "data-v-6eef5c21"
    ]
  ]);
  Ll = {
    class: "center"
  };
  Il = {
    key: 0
  };
  Ml = ie({
    __name: "Telegram",
    setup(_) {
      const d = ae(), { t: r } = te({
        messages: {
          en: {
            init: "Init",
            successTip: "Success",
            status: "Check Status",
            enableTelegramAllowList: "Enable Telegram Allow List(Manually input Chat ID)",
            enable: "Enable",
            telegramAllowList: "Telegram Allow List(Manually input telegram Chat ID)",
            manualInputPrompt: "Type and press Enter to add",
            save: "Save",
            miniAppUrl: "Telegram Mini App URL",
            enableGlobalMailPush: "Enable Global Mail Push(Manually input telegram Chat ID)",
            globalMailPushList: "Global Mail Push Chat ID List",
            globalMailPushListTip: "Support chat_id of private chat/group/channel. You can send a message to your bot, then visit this link to see chat_id, https://api.telegram.org/bot<Replace with your BOT TOKEN>/getUpdates"
          },
          zh: {
            init: "\u521D\u59CB\u5316",
            successTip: "\u6210\u529F",
            status: "\u67E5\u770B\u72B6\u6001",
            enableTelegramAllowList: "\u542F\u7528 Telegram \u767D\u540D\u5355(\u624B\u52A8\u8F93\u5165 Chat ID, \u56DE\u8F66\u589E\u52A0)",
            enable: "\u542F\u7528",
            telegramAllowList: "Telegram \u767D\u540D\u5355(\u624B\u52A8\u8F93\u5165 Chat ID, \u56DE\u8F66\u589E\u52A0)",
            manualInputPrompt: "\u8F93\u5165\u540E\u6309\u56DE\u8F66\u952E\u6DFB\u52A0",
            save: "\u4FDD\u5B58",
            miniAppUrl: "\u7535\u62A5\u5C0F\u7A0B\u5E8F URL(\u8BF7\u8F93\u5165\u4F60\u90E8\u7F72\u7684\u7535\u62A5\u5C0F\u7A0B\u5E8F\u7F51\u9875\u5730\u5740)",
            enableGlobalMailPush: "\u542F\u7528\u5168\u5C40\u90AE\u4EF6\u63A8\u9001(\u624B\u52A8\u8F93\u5165\u90AE\u7BB1\u7BA1\u7406\u5458\u7684 telegram Chat ID, \u56DE\u8F66\u589E\u52A0)",
            globalMailPushList: "\u5168\u5C40\u90AE\u4EF6\u63A8\u9001 Chat ID \u5217\u8868",
            globalMailPushListTip: "\u652F\u6301\u5BF9\u8BDD/\u7FA4\u7EC4/\u9891\u9053\u7684 Chat ID, \u60A8\u53EF\u4EE5\u53D1\u9001\u4E00\u6761\u6D88\u606F\u7ED9\u60A8\u7684\u673A\u5668\u4EBA\uFF0C\u7136\u540E\u8BBF\u95EE\u6B64\u94FE\u63A5\u6765\u67E5\u770B chat_id, https://api.telegram.org/bot<\u8FD9\u91CC\u66FF\u6362\u6210\u60A8\u7684 BOT TOKEN>/getUpdates"
          }
        }
      }), l = f({
        fetched: false
      }), n = async () => {
        try {
          const i = await P.fetch("/admin/telegram/status");
          Object.assign(l.value, i), l.value.fetched = true;
        } catch (i) {
          d.error(i.message || "error");
        }
      }, v = async () => {
        try {
          await P.fetch("/admin/telegram/init", {
            method: "POST"
          }), d.success(r("successTip"));
        } catch (i) {
          d.error(i.message || "error");
        }
      };
      class p {
        constructor(c, x, C, L, u) {
          __publicField(this, "enableAllowList");
          __publicField(this, "allowList");
          __publicField(this, "miniAppUrl");
          __publicField(this, "enableGlobalMailPush");
          __publicField(this, "globalMailPushList");
          this.enableAllowList = c, this.allowList = x, this.miniAppUrl = C, this.enableGlobalMailPush = L, this.globalMailPushList = u;
        }
      }
      const s = f(new p(false, [], "", false, [])), y = async () => {
        try {
          const i = await P.fetch("/admin/telegram/settings");
          Object.assign(s.value, i);
        } catch (i) {
          d.error(i.message || "error");
        }
      }, g = async () => {
        try {
          await P.fetch("/admin/telegram/settings", {
            method: "POST",
            body: JSON.stringify(s.value)
          }), d.success(r("successTip"));
        } catch (i) {
          d.error(i.message || "error");
        }
      };
      return le(async () => {
        await y();
      }), (i, c) => {
        const x = O, C = De, L = Ke, u = Le, b = re, w = Ce, N = ge, K = pe, D = de;
        return E(), Q("div", Ll, [
          e(D, {
            bordered: false,
            embedded: "",
            style: {
              "max-width": "800px",
              overflow: "auto"
            }
          }, {
            default: t(() => [
              e(C, {
                justify: "end"
              }, {
                default: t(() => [
                  e(x, {
                    onClick: n,
                    secondary: ""
                  }, {
                    default: t(() => [
                      m(o(a(r)("status")), 1)
                    ]),
                    _: 1
                  }),
                  e(x, {
                    onClick: v,
                    type: "primary"
                  }, {
                    default: t(() => [
                      m(o(a(r)("init")), 1)
                    ]),
                    _: 1
                  }),
                  e(x, {
                    onClick: g,
                    type: "primary"
                  }, {
                    default: t(() => [
                      m(o(a(r)("save")), 1)
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }),
              e(D, {
                bordered: false,
                embedded: ""
              }, {
                default: t(() => [
                  e(N, {
                    label: a(r)("enableTelegramAllowList")
                  }, {
                    default: t(() => [
                      e(w, null, {
                        default: t(() => [
                          e(L, {
                            checked: s.value.enableAllowList,
                            "onUpdate:checked": c[0] || (c[0] = (A) => s.value.enableAllowList = A),
                            style: {
                              width: "20%"
                            }
                          }, {
                            default: t(() => [
                              m(o(a(r)("enable")), 1)
                            ]),
                            _: 1
                          }, 8, [
                            "checked"
                          ]),
                          e(b, {
                            value: s.value.allowList,
                            "onUpdate:value": c[1] || (c[1] = (A) => s.value.allowList = A),
                            filterable: "",
                            multiple: "",
                            tag: "",
                            style: {
                              width: "80%"
                            },
                            placeholder: a(r)("telegramAllowList")
                          }, {
                            empty: t(() => [
                              e(u, {
                                depth: "3"
                              }, {
                                default: t(() => [
                                  m(o(a(r)("manualInputPrompt")), 1)
                                ]),
                                _: 1
                              })
                            ]),
                            _: 1
                          }, 8, [
                            "value",
                            "placeholder"
                          ])
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ]),
                  c[5] || (c[5] = M("br", null, null, -1)),
                  e(N, {
                    label: a(r)("enableGlobalMailPush")
                  }, {
                    feedback: t(() => [
                      e(u, {
                        depth: "3"
                      }, {
                        default: t(() => [
                          m(o(a(r)("globalMailPushListTip")), 1)
                        ]),
                        _: 1
                      })
                    ]),
                    default: t(() => [
                      e(w, null, {
                        default: t(() => [
                          e(L, {
                            checked: s.value.enableGlobalMailPush,
                            "onUpdate:checked": c[2] || (c[2] = (A) => s.value.enableGlobalMailPush = A),
                            style: {
                              width: "20%"
                            }
                          }, {
                            default: t(() => [
                              m(o(a(r)("enable")), 1)
                            ]),
                            _: 1
                          }, 8, [
                            "checked"
                          ]),
                          e(b, {
                            value: s.value.globalMailPushList,
                            "onUpdate:value": c[3] || (c[3] = (A) => s.value.globalMailPushList = A),
                            filterable: "",
                            multiple: "",
                            tag: "",
                            style: {
                              width: "80%"
                            },
                            placeholder: a(r)("globalMailPushList")
                          }, {
                            empty: t(() => [
                              e(u, {
                                depth: "3"
                              }, {
                                default: t(() => [
                                  m(o(a(r)("manualInputPrompt")), 1)
                                ]),
                                _: 1
                              })
                            ]),
                            _: 1
                          }, 8, [
                            "value",
                            "placeholder"
                          ])
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ]),
                  c[6] || (c[6] = M("br", null, null, -1)),
                  e(N, {
                    label: a(r)("miniAppUrl")
                  }, {
                    default: t(() => [
                      e(K, {
                        value: s.value.miniAppUrl,
                        "onUpdate:value": c[4] || (c[4] = (A) => s.value.miniAppUrl = A)
                      }, null, 8, [
                        "value"
                      ])
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ])
                ]),
                _: 1
              }),
              l.value.fetched ? (E(), Q("pre", Il, o(JSON.stringify(l.value, null, 2)), 1)) : Z("", true)
            ]),
            _: 1
          })
        ]);
      };
    }
  });
  Tl = ee(Ml, [
    [
      "__scopeId",
      "data-v-008f01c5"
    ]
  ]);
  Pl = {
    class: "center"
  };
  El = ie({
    __name: "Webhook",
    setup(_) {
      const d = ae(), { t: r } = te({
        messages: {
          en: {
            successTip: "Success",
            enableAllowList: "Enable Allow List (Restrict webhook access to specific users)",
            webhookAllowList: "Webhook Allow List(Enter the mail address that is allowed to use webhook and enter)",
            manualInputPrompt: "Type and press Enter to add",
            save: "Save",
            notEnabled: "Webhook is not enabled"
          },
          zh: {
            successTip: "\u6210\u529F",
            enableAllowList: "\u542F\u7528\u767D\u540D\u5355 (\u9650\u5236 webhook \u8BBF\u95EE\u6743\u9650\uFF0C\u53EA\u6709\u767D\u540D\u5355\u4E2D\u7684\u7528\u6237\u53EF\u4EE5\u4F7F\u7528)",
            webhookAllowList: "Webhook \u767D\u540D\u5355(\u8BF7\u8F93\u5165\u5141\u8BB8\u4F7F\u7528webhook \u7684\u90AE\u7BB1\u5730\u5740, \u56DE\u8F66\u589E\u52A0)",
            manualInputPrompt: "\u8F93\u5165\u540E\u6309\u56DE\u8F66\u952E\u6DFB\u52A0",
            save: "\u4FDD\u5B58",
            notEnabled: "Webhook \u672A\u5F00\u542F"
          }
        }
      });
      class l {
        constructor(i, c) {
          __publicField(this, "enableAllowList");
          __publicField(this, "allowList");
          this.enableAllowList = i, this.allowList = c;
        }
      }
      const n = f(new l(false, [])), v = f(false), p = f(""), s = async () => {
        try {
          const g = await P.fetch("/admin/webhook/settings");
          Object.assign(n.value, g), v.value = true;
        } catch (g) {
          p.value = g.message || "error";
        }
      }, y = async () => {
        try {
          await P.fetch("/admin/webhook/settings", {
            method: "POST",
            body: JSON.stringify(n.value)
          }), d.success(r("successTip"));
        } catch (g) {
          d.error(g.message || "error");
        }
      };
      return le(async () => {
        await s();
      }), (g, i) => {
        const c = O, x = De, C = Fe, L = ge, u = Le, b = re, w = de, N = oa;
        return E(), Q("div", Pl, [
          v.value ? (E(), X(w, {
            key: 0,
            bordered: false,
            embedded: "",
            style: {
              "max-width": "800px",
              overflow: "auto"
            }
          }, {
            default: t(() => [
              e(x, {
                justify: "end"
              }, {
                default: t(() => [
                  e(c, {
                    onClick: y,
                    type: "primary"
                  }, {
                    default: t(() => [
                      m(o(a(r)("save")), 1)
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }),
              e(L, {
                label: a(r)("enableAllowList")
              }, {
                default: t(() => [
                  e(C, {
                    value: n.value.enableAllowList,
                    "onUpdate:value": i[0] || (i[0] = (K) => n.value.enableAllowList = K),
                    round: false
                  }, null, 8, [
                    "value"
                  ])
                ]),
                _: 1
              }, 8, [
                "label"
              ]),
              e(L, {
                label: a(r)("webhookAllowList")
              }, {
                default: t(() => [
                  e(b, {
                    value: n.value.allowList,
                    "onUpdate:value": i[1] || (i[1] = (K) => n.value.allowList = K),
                    filterable: "",
                    multiple: "",
                    tag: "",
                    placeholder: a(r)("webhookAllowList")
                  }, {
                    empty: t(() => [
                      e(u, {
                        depth: "3"
                      }, {
                        default: t(() => [
                          m(o(a(r)("manualInputPrompt")), 1)
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }, 8, [
                    "value",
                    "placeholder"
                  ])
                ]),
                _: 1
              }, 8, [
                "label"
              ])
            ]),
            _: 1
          })) : (E(), X(N, {
            key: 1,
            status: "404",
            title: a(r)("notEnabled"),
            description: p.value
          }, null, 8, [
            "title",
            "description"
          ]))
        ]);
      };
    }
  });
  Dl = ee(El, [
    [
      "__scopeId",
      "data-v-6baca40b"
    ]
  ]);
  Rl = ie({
    __name: "MailWebhook",
    setup(_) {
      const d = async () => await P.fetch("/admin/mail_webhook/settings"), r = async (n) => {
        await P.fetch("/admin/mail_webhook/settings", {
          method: "POST",
          body: JSON.stringify(n)
        });
      }, l = async (n) => {
        await P.fetch("/admin/mail_webhook/test", {
          method: "POST",
          body: JSON.stringify(n)
        });
      };
      return (n, v) => (E(), X(ra, {
        fetchData: d,
        saveSettings: r,
        testSettings: l
      }));
    }
  });
  $l = {
    class: "center"
  };
  Bl = {
    __name: "WorkerConfig",
    setup(_) {
      const { loading: d } = ue(), r = ae(), l = f({}), n = async () => {
        try {
          const v = await P.fetch("/admin/worker/configs");
          Object.assign(l.value, v);
        } catch (v) {
          r.error(v.message || "error");
        }
      };
      return le(async () => {
        await n();
      }), (v, p) => {
        const s = de;
        return E(), Q("div", $l, [
          e(s, {
            bordered: false,
            embedded: "",
            style: {
              "max-width": "800px",
              overflow: "auto"
            }
          }, {
            default: t(() => [
              M("pre", null, o(JSON.stringify(l.value, null, 2)), 1)
            ]),
            _: 1
          })
        ]);
      };
    }
  };
  At = ee(Bl, [
    [
      "__scopeId",
      "data-v-92d764b2"
    ]
  ]);
  zl = {
    class: "center"
  };
  Ol = {
    style: {
      "line-height": "1.8"
    }
  };
  Nl = {
    __name: "IpBlacklistSettings",
    setup(_) {
      const { loading: d } = ue(), r = ae(), { t: l } = te({
        messages: {
          en: {
            title: "IP Blacklist Settings",
            manualInputPrompt: "Type pattern and press Enter to add",
            save: "Save",
            successTip: "Save Success",
            enable_ip_blacklist: "Enable IP Blacklist",
            enable_tip: "Block IPs matching blacklist patterns from accessing rate-limited APIs",
            ip_blacklist: "IP Blacklist Patterns",
            ip_blacklist_placeholder: "Enter pattern (e.g., 192.168.1 or ^10\\.0\\.0\\.5$)",
            asn_blacklist: "ASN Organization Blacklist",
            asn_blacklist_placeholder: "Enter ASN organization (e.g., Google, Amazon)",
            fingerprint_blacklist: "Browser Fingerprint Blacklist",
            fingerprint_blacklist_placeholder: "Enter fingerprint ID (e.g., a1b2c3d4e5f6g7h8)",
            tip_ip: 'IP Blacklist: Supports text matching (e.g., "192.168.1") or regex (e.g., "^10\\.0\\.0\\.5$").',
            tip_asn: "ASN Organization: Block by ISP/provider. Case-insensitive text matching or regex.",
            tip_fingerprint: "Browser Fingerprint: Block by browser fingerprint. Supports exact matching or regex patterns.",
            tip_daily_limit: "Daily Limit: Restrict the maximum number of requests per IP address per day (1-1000000).",
            tip_scope: "Applies to: Create Address, Send Mail, External Send Mail API, User Registration, Verify Code",
            enable_daily_limit: "Enable Daily Request Limit",
            enable_daily_limit_tip: "Limit the number of API requests per IP address per day",
            daily_request_limit: "Daily Request Limit",
            daily_request_limit_placeholder: "Enter limit (e.g., 1000)"
          },
          zh: {
            title: "IP \u9ED1\u540D\u5355\u8BBE\u7F6E",
            manualInputPrompt: "\u8F93\u5165\u5339\u914D\u6A21\u5F0F\u540E\u6309\u56DE\u8F66\u952E\u6DFB\u52A0",
            save: "\u4FDD\u5B58",
            successTip: "\u4FDD\u5B58\u6210\u529F",
            enable_ip_blacklist: "\u542F\u7528 IP \u9ED1\u540D\u5355",
            enable_tip: "\u963B\u6B62\u5339\u914D\u9ED1\u540D\u5355\u7684 IP \u8BBF\u95EE\u9650\u6D41 API",
            ip_blacklist: "IP \u9ED1\u540D\u5355\u5339\u914D\u6A21\u5F0F",
            ip_blacklist_placeholder: "\u8F93\u5165\u5339\u914D\u6A21\u5F0F\uFF08\u4F8B\u5982\uFF1A192.168.1 \u6216 ^10\\.0\\.0\\.5$\uFF09",
            asn_blacklist: "ASN \u7EC4\u7EC7\uFF08\u8FD0\u8425\u5546\uFF09\u9ED1\u540D\u5355",
            asn_blacklist_placeholder: "\u8F93\u5165 ASN \u7EC4\u7EC7\u540D\u79F0\uFF08\u4F8B\u5982\uFF1AGoogle, Amazon\uFF09",
            fingerprint_blacklist: "\u6D4F\u89C8\u5668\u6307\u7EB9\u9ED1\u540D\u5355",
            fingerprint_blacklist_placeholder: "\u8F93\u5165\u6307\u7EB9 ID\uFF08\u4F8B\u5982\uFF1Aa1b2c3d4e5f6g7h8\uFF09",
            tip_ip: 'IP \u9ED1\u540D\u5355\uFF1A\u652F\u6301\u6587\u672C\u5339\u914D\uFF08\u5982 "192.168.1"\uFF09\u6216\u6B63\u5219\u8868\u8FBE\u5F0F\uFF08\u5982 "^10\\.0\\.0\\.5$"\uFF09\u3002',
            tip_asn: "ASN \u7EC4\u7EC7\uFF1A\u6839\u636E\u8FD0\u8425\u5546/ISP \u62C9\u9ED1\u3002\u652F\u6301\u4E0D\u533A\u5206\u5927\u5C0F\u5199\u7684\u6587\u672C\u5339\u914D\u6216\u6B63\u5219\u8868\u8FBE\u5F0F\u3002",
            tip_fingerprint: "\u6D4F\u89C8\u5668\u6307\u7EB9\uFF1A\u6839\u636E\u6D4F\u89C8\u5668\u6307\u7EB9\u62C9\u9ED1\u3002\u652F\u6301\u5B8C\u5168\u5339\u914D\u6216\u6B63\u5219\u8868\u8FBE\u5F0F\u3002",
            tip_daily_limit: "\u6BCF\u65E5\u9650\u6D41\uFF1A\u9650\u5236\u5355\u4E2A IP \u5730\u5740\u6BCF\u5929\u6700\u591A\u8BF7\u6C42\u6B21\u6570\uFF081-1000000\uFF09\u3002",
            tip_scope: "\u4F5C\u7528\u8303\u56F4\uFF1A\u521B\u5EFA\u90AE\u7BB1\u5730\u5740\u3001\u53D1\u9001\u90AE\u4EF6\u3001\u5916\u90E8\u53D1\u9001\u90AE\u4EF6 API\u3001\u7528\u6237\u6CE8\u518C\u3001\u9A8C\u8BC1\u7801\u9A8C\u8BC1",
            enable_daily_limit: "\u542F\u7528\u6BCF\u65E5\u8BF7\u6C42\u9650\u6D41",
            enable_daily_limit_tip: "\u9650\u5236\u6BCF\u4E2A IP \u5730\u5740\u6BCF\u5929\u7684 API \u8BF7\u6C42\u6B21\u6570",
            daily_request_limit: "\u6BCF\u65E5\u8BF7\u6C42\u6B21\u6570\u4E0A\u9650",
            daily_request_limit_placeholder: "\u8F93\u5165\u9650\u5236\u6B21\u6570\uFF08\u4F8B\u5982\uFF1A1000\uFF09"
          }
        }
      }), n = f(false), v = f([]), p = f([]), s = f([]), y = f(false), g = f(1e3), i = async () => {
        try {
          d.value = true;
          const x = await P.fetch("/admin/ip_blacklist/settings");
          n.value = x.enabled || false, v.value = x.blacklist || [], p.value = x.asnBlacklist || [], s.value = x.fingerprintBlacklist || [], y.value = x.enableDailyLimit || false, g.value = x.dailyRequestLimit || 1e3;
        } catch (x) {
          r.error(x.message || "error");
        } finally {
          d.value = false;
        }
      }, c = async () => {
        try {
          d.value = true, await P.fetch("/admin/ip_blacklist/settings", {
            method: "POST",
            body: JSON.stringify({
              enabled: n.value,
              blacklist: v.value || [],
              asnBlacklist: p.value || [],
              fingerprintBlacklist: s.value || [],
              enableDailyLimit: y.value,
              dailyRequestLimit: g.value
            })
          }), r.success(l("successTip"));
        } catch (x) {
          r.error(x.message || "error");
        } finally {
          d.value = false;
        }
      };
      return le(async () => {
        await i();
      }), (x, C) => {
        const L = O, u = Ue, b = Fe, w = Le, N = ge, K = re, D = ut, A = Je, I = Ve, q = de;
        return E(), Q("div", zl, [
          e(q, {
            title: a(l)("title"),
            bordered: false,
            embedded: "",
            style: {
              "max-width": "800px"
            }
          }, {
            "header-extra": t(() => [
              e(L, {
                onClick: c,
                type: "primary",
                loading: a(d)
              }, {
                default: t(() => [
                  m(o(a(l)("save")), 1)
                ]),
                _: 1
              }, 8, [
                "loading"
              ])
            ]),
            default: t(() => [
              e(I, {
                vertical: "",
                size: 20
              }, {
                default: t(() => [
                  e(u, {
                    "show-icon": false,
                    bordered: false,
                    type: "info"
                  }, {
                    default: t(() => [
                      M("div", Ol, [
                        M("div", null, [
                          M("strong", null, o(a(l)("tip_scope")), 1)
                        ]),
                        M("div", null, "\u2022 " + o(a(l)("tip_ip")), 1),
                        M("div", null, "\u2022 " + o(a(l)("tip_asn")), 1),
                        M("div", null, "\u2022 " + o(a(l)("tip_fingerprint")), 1),
                        M("div", null, "\u2022 " + o(a(l)("tip_daily_limit")), 1)
                      ])
                    ]),
                    _: 1
                  }),
                  e(N, {
                    label: a(l)("enable_ip_blacklist")
                  }, {
                    default: t(() => [
                      e(b, {
                        value: n.value,
                        "onUpdate:value": C[0] || (C[0] = (W) => n.value = W),
                        round: false
                      }, null, 8, [
                        "value"
                      ]),
                      e(w, {
                        depth: "3",
                        style: {
                          "margin-left": "10px",
                          "font-size": "12px"
                        }
                      }, {
                        default: t(() => [
                          m(o(a(l)("enable_tip")), 1)
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ]),
                  e(N, {
                    label: a(l)("ip_blacklist")
                  }, {
                    default: t(() => [
                      e(K, {
                        value: v.value,
                        "onUpdate:value": C[1] || (C[1] = (W) => v.value = W),
                        filterable: "",
                        multiple: "",
                        tag: "",
                        placeholder: a(l)("ip_blacklist_placeholder"),
                        disabled: !n.value
                      }, {
                        empty: t(() => [
                          e(w, {
                            depth: "3"
                          }, {
                            default: t(() => [
                              m(o(a(l)("manualInputPrompt")), 1)
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      }, 8, [
                        "value",
                        "placeholder",
                        "disabled"
                      ])
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ]),
                  e(N, {
                    label: a(l)("asn_blacklist")
                  }, {
                    default: t(() => [
                      e(K, {
                        value: p.value,
                        "onUpdate:value": C[2] || (C[2] = (W) => p.value = W),
                        filterable: "",
                        multiple: "",
                        tag: "",
                        placeholder: a(l)("asn_blacklist_placeholder"),
                        disabled: !n.value
                      }, {
                        empty: t(() => [
                          e(w, {
                            depth: "3"
                          }, {
                            default: t(() => [
                              m(o(a(l)("manualInputPrompt")), 1)
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      }, 8, [
                        "value",
                        "placeholder",
                        "disabled"
                      ])
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ]),
                  e(N, {
                    label: a(l)("fingerprint_blacklist")
                  }, {
                    default: t(() => [
                      e(K, {
                        value: s.value,
                        "onUpdate:value": C[3] || (C[3] = (W) => s.value = W),
                        filterable: "",
                        multiple: "",
                        tag: "",
                        placeholder: a(l)("fingerprint_blacklist_placeholder"),
                        disabled: !n.value
                      }, {
                        empty: t(() => [
                          e(w, {
                            depth: "3"
                          }, {
                            default: t(() => [
                              m(o(a(l)("manualInputPrompt")), 1)
                            ]),
                            _: 1
                          })
                        ]),
                        _: 1
                      }, 8, [
                        "value",
                        "placeholder",
                        "disabled"
                      ])
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ]),
                  e(D),
                  e(N, {
                    label: a(l)("enable_daily_limit")
                  }, {
                    default: t(() => [
                      e(b, {
                        value: y.value,
                        "onUpdate:value": C[4] || (C[4] = (W) => y.value = W),
                        round: false
                      }, null, 8, [
                        "value"
                      ]),
                      e(w, {
                        depth: "3",
                        style: {
                          "margin-left": "10px",
                          "font-size": "12px"
                        }
                      }, {
                        default: t(() => [
                          m(o(a(l)("enable_daily_limit_tip")), 1)
                        ]),
                        _: 1
                      })
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ]),
                  e(N, {
                    label: a(l)("daily_request_limit")
                  }, {
                    default: t(() => [
                      e(A, {
                        value: g.value,
                        "onUpdate:value": C[5] || (C[5] = (W) => g.value = W),
                        min: 1,
                        max: 1e6,
                        placeholder: a(l)("daily_request_limit_placeholder"),
                        disabled: !y.value,
                        style: {
                          width: "100%"
                        }
                      }, null, 8, [
                        "value",
                        "placeholder",
                        "disabled"
                      ])
                    ]),
                    _: 1
                  }, 8, [
                    "label"
                  ])
                ]),
                _: 1
              })
            ]),
            _: 1
          }, 8, [
            "title"
          ])
        ]);
      };
    }
  };
  ql = ee(Nl, [
    [
      "__scopeId",
      "data-v-6cc70158"
    ]
  ]);
  Vl = {
    class: "center"
  };
  Fl = {
    key: 1
  };
  jl = ie({
    __name: "AiExtractSettings",
    setup(_) {
      const d = ae(), { t: r } = te({
        messages: {
          en: {
            title: "AI Email Extraction Settings",
            successTip: "Success",
            save: "Save",
            enableAllowList: "Enable Address Allowlist",
            enableAllowListTip: "When enabled, AI extraction will only process emails sent to addresses in the allowlist",
            allowList: "Address Allowlist (Enter address and press Enter, wildcards supported)",
            allowListTip: "Wildcard * matches any characters, e.g. *{'@'}example.com matches all addresses under example.com domain",
            manualInputPrompt: "Type and press Enter to add",
            disabledTip: "When disabled, AI extraction will process all email addresses"
          },
          zh: {
            title: "AI \u90AE\u4EF6\u63D0\u53D6\u8BBE\u7F6E",
            successTip: "\u6210\u529F",
            save: "\u4FDD\u5B58",
            enableAllowList: "\u542F\u7528\u5730\u5740\u767D\u540D\u5355",
            enableAllowListTip: "\u542F\u7528\u540E\uFF0CAI \u63D0\u53D6\u529F\u80FD\u4EC5\u5BF9\u767D\u540D\u5355\u4E2D\u7684\u90AE\u7BB1\u5730\u5740\u751F\u6548",
            allowList: "\u5730\u5740\u767D\u540D\u5355 (\u8BF7\u8F93\u5165\u5730\u5740\u5E76\u56DE\u8F66\uFF0C\u652F\u6301\u901A\u914D\u7B26)",
            allowListTip: "\u901A\u914D\u7B26 * \u53EF\u5339\u914D\u4EFB\u610F\u5B57\u7B26\uFF0C\u5982 *{'@'}example.com \u53EF\u5339\u914D example.com \u57DF\u540D\u4E0B\u7684\u6240\u6709\u5730\u5740",
            manualInputPrompt: "\u8F93\u5165\u540E\u6309\u56DE\u8F66\u952E\u6DFB\u52A0",
            disabledTip: "\u672A\u542F\u7528\u65F6\uFF0C\u6240\u6709\u90AE\u7BB1\u5730\u5740\u90FD\u53EF\u4F7F\u7528 AI \u63D0\u53D6\u529F\u80FD"
          }
        }
      }), l = f({
        enableAllowList: false,
        allowList: []
      }), n = async () => {
        try {
          const p = await P.fetch("/admin/ai_extract/settings");
          Object.assign(l.value, p);
        } catch (p) {
          d.error(p.message || "error");
        }
      }, v = async () => {
        try {
          await P.fetch("/admin/ai_extract/settings", {
            method: "POST",
            body: JSON.stringify(l.value)
          }), d.success(r("successTip"));
        } catch (p) {
          d.error(p.message || "error");
        }
      };
      return le(async () => {
        await n();
      }), (p, s) => {
        const y = O, g = De, i = Fe, c = ge, x = Ue, C = Le, L = re, u = de;
        return E(), Q("div", Vl, [
          e(u, {
            title: a(r)("title"),
            bordered: false,
            embedded: "",
            style: {
              "max-width": "800px",
              overflow: "auto"
            }
          }, {
            default: t(() => [
              e(g, {
                justify: "end"
              }, {
                default: t(() => [
                  e(y, {
                    onClick: v,
                    type: "primary"
                  }, {
                    default: t(() => [
                      m(o(a(r)("save")), 1)
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }),
              e(c, {
                label: a(r)("enableAllowList")
              }, {
                default: t(() => [
                  e(i, {
                    value: l.value.enableAllowList,
                    "onUpdate:value": s[0] || (s[0] = (b) => l.value.enableAllowList = b),
                    round: false
                  }, null, 8, [
                    "value"
                  ])
                ]),
                _: 1
              }, 8, [
                "label"
              ]),
              l.value.enableAllowList ? Z("", true) : (E(), X(x, {
                key: 0,
                type: "info",
                style: {
                  "margin-bottom": "16px"
                }
              }, {
                default: t(() => [
                  m(o(a(r)("disabledTip")), 1)
                ]),
                _: 1
              })),
              l.value.enableAllowList ? (E(), Q("div", Fl, [
                e(x, {
                  type: "warning",
                  style: {
                    "margin-bottom": "16px"
                  }
                }, {
                  default: t(() => [
                    m(o(a(r)("enableAllowListTip")), 1)
                  ]),
                  _: 1
                }),
                e(c, {
                  label: a(r)("allowList")
                }, {
                  default: t(() => [
                    e(L, {
                      value: l.value.allowList,
                      "onUpdate:value": s[1] || (s[1] = (b) => l.value.allowList = b),
                      filterable: "",
                      multiple: "",
                      tag: "",
                      placeholder: a(r)("allowListTip")
                    }, {
                      empty: t(() => [
                        e(C, {
                          depth: "3"
                        }, {
                          default: t(() => [
                            m(o(a(r)("manualInputPrompt")), 1)
                          ]),
                          _: 1
                        })
                      ]),
                      _: 1
                    }, 8, [
                      "value",
                      "placeholder"
                    ])
                  ]),
                  _: 1
                }, 8, [
                  "label"
                ]),
                e(C, {
                  depth: "3",
                  style: {
                    "font-size": "12px"
                  }
                }, {
                  default: t(() => [
                    m(o(a(r)("allowListTip")), 1)
                  ]),
                  _: 1
                })
              ])) : Z("", true)
            ]),
            _: 1
          }, 8, [
            "title"
          ])
        ]);
      };
    }
  });
  Wl = ee(jl, [
    [
      "__scopeId",
      "data-v-230de380"
    ]
  ]);
  Hl = {
    key: 0
  };
  Kl = {
    style: {
      display: "flex",
      "justify-content": "center",
      padding: "20px"
    }
  };
  Gl = {
    __name: "Admin",
    setup(_) {
      const { adminAuth: d, showAdminAuth: r, adminTab: l, loading: n, globalTabplacement: v, showAdminPage: p, userSettings: s, openSettings: y } = ue(), g = ae(), i = ia(), c = ca(() => (n.value = true, ma(() => import("./SendMail-gI-QSIA2.js"), __vite__mapDeps([0,1,2,3,4,5])).finally(() => n.value = false))), x = async () => {
        try {
          d.value = N.value, location.reload();
        } catch (A) {
          g.error(A.message || "error");
        }
      }, C = f(false), L = async () => {
        d.value = "", r.value = false, l.value = "account", g.success(u("logoutSuccess")), await i.push(pa("/", b.value));
      }, { t: u, locale: b } = te({
        messages: {
          en: {
            accessHeader: "Admin Password",
            accessTip: "Please enter the admin password",
            mails: "Emails",
            sendMail: "Send Mail",
            qucickSetup: "Quick Setup",
            account: "Account",
            account_create: "Create Account",
            account_settings: "Account Settings",
            user: "User",
            user_management: "User Management",
            user_settings: "User Settings",
            userOauth2Settings: "Oauth2 Settings",
            roleAddressConfig: "Role Address Config",
            unknow: "Mails with unknow receiver",
            senderAccess: "Sender Access Control",
            sendBox: "Send Box",
            telegram: "Telegram Bot",
            webhookSettings: "Webhook Settings",
            statistics: "Statistics",
            maintenance: "Maintenance",
            database: "Database",
            workerconfig: "Worker Config",
            ipBlacklistSettings: "IP Blacklist",
            aiExtractSettings: "AI Extract Settings",
            appearance: "Appearance",
            about: "About",
            ok: "OK",
            mailWebhook: "Mail Webhook",
            adminAccount: "Admin",
            loginMethod: "Login Method",
            loginViaPassword: "Admin Password Login",
            loginViaUserAdmin: "User Admin Permission",
            loginViaDisabledCheck: "Disabled Password Check",
            logout: "Logout",
            logoutConfirmTitle: "Confirm Logout",
            logoutConfirmContent: "Are you sure you want to logout from admin panel?",
            confirm: "Confirm",
            logoutSuccess: "Logout successful"
          },
          zh: {
            accessHeader: "Admin \u5BC6\u7801",
            accessTip: "\u8BF7\u8F93\u5165 Admin \u5BC6\u7801",
            mails: "\u90AE\u4EF6",
            sendMail: "\u53D1\u9001\u90AE\u4EF6",
            qucickSetup: "\u5FEB\u901F\u8BBE\u7F6E",
            account: "\u8D26\u53F7",
            account_create: "\u521B\u5EFA\u8D26\u53F7",
            account_settings: "\u8D26\u53F7\u8BBE\u7F6E",
            user: "\u7528\u6237",
            user_management: "\u7528\u6237\u7BA1\u7406",
            user_settings: "\u7528\u6237\u8BBE\u7F6E",
            userOauth2Settings: "Oauth2 \u8BBE\u7F6E",
            roleAddressConfig: "\u89D2\u8272\u5730\u5740\u914D\u7F6E",
            unknow: "\u65E0\u6536\u4EF6\u4EBA\u90AE\u4EF6",
            senderAccess: "\u53D1\u4EF6\u6743\u9650\u63A7\u5236",
            sendBox: "\u53D1\u4EF6\u7BB1",
            telegram: "\u7535\u62A5\u673A\u5668\u4EBA",
            webhookSettings: "Webhook \u8BBE\u7F6E",
            statistics: "\u7EDF\u8BA1",
            maintenance: "\u7EF4\u62A4",
            database: "\u6570\u636E\u5E93",
            workerconfig: "Worker \u914D\u7F6E",
            ipBlacklistSettings: "IP \u9ED1\u540D\u5355",
            aiExtractSettings: "AI \u63D0\u53D6\u8BBE\u7F6E",
            appearance: "\u5916\u89C2",
            about: "\u5173\u4E8E",
            ok: "\u786E\u5B9A",
            mailWebhook: "\u90AE\u4EF6 Webhook",
            adminAccount: "\u7BA1\u7406\u5458",
            loginMethod: "\u767B\u5F55\u65B9\u5F0F",
            loginViaPassword: "Admin \u5BC6\u7801\u767B\u5F55",
            loginViaUserAdmin: "\u7528\u6237\u7BA1\u7406\u5458\u6743\u9650",
            loginViaDisabledCheck: "\u5DF2\u7981\u7528\u5BC6\u7801\u68C0\u67E5",
            logout: "\u9000\u51FA\u767B\u5F55",
            logoutConfirmTitle: "\u786E\u8BA4\u9000\u51FA",
            logoutConfirmContent: "\u786E\u5B9A\u8981\u9000\u51FA\u7BA1\u7406\u5458\u9762\u677F\u5417\uFF1F",
            confirm: "\u786E\u8BA4",
            logoutSuccess: "\u9000\u51FA\u6210\u529F"
          }
        }
      }), w = xe(() => !p.value || r.value), N = f(""), K = xe(() => !!d.value), D = xe(() => d.value ? u("loginViaPassword") : s.value.is_admin ? u("loginViaUserAdmin") : y.value.disableAdminPasswordCheck ? u("loginViaDisabledCheck") : "");
      return le(async () => {
        s.value.user_id || await P.getUserSettings(g);
      }), (A, I) => {
        const q = pe, W = O, k = Ee, $ = zt, B = Bt, Y = Le, se = ut, _e = Ve, S = de;
        return a(s).fetched ? (E(), Q("div", Hl, [
          e(k, {
            show: w.value,
            "onUpdate:show": I[1] || (I[1] = (R) => w.value = R),
            closable: false,
            closeOnEsc: false,
            maskClosable: false,
            preset: "dialog",
            title: a(u)("accessHeader")
          }, {
            action: t(() => [
              e(W, {
                onClick: x,
                type: "primary",
                loading: a(n)
              }, {
                default: t(() => [
                  m(o(a(u)("ok")), 1)
                ]),
                _: 1
              }, 8, [
                "loading"
              ])
            ]),
            default: t(() => [
              M("p", null, o(a(u)("accessTip")), 1),
              e(q, {
                value: N.value,
                "onUpdate:value": I[0] || (I[0] = (R) => N.value = R),
                type: "password",
                "show-password-on": "click"
              }, null, 8, [
                "value"
              ])
            ]),
            _: 1
          }, 8, [
            "show",
            "title"
          ]),
          a(p) ? (E(), X(B, {
            key: 0,
            type: "card",
            value: a(l),
            "onUpdate:value": I[3] || (I[3] = (R) => ot(l) ? l.value = R : null),
            placement: a(v)
          }, {
            default: t(() => [
              e($, {
                name: "qucickSetup",
                tab: a(u)("qucickSetup")
              }, {
                default: t(() => [
                  e(B, {
                    type: "bar",
                    "justify-content": "center",
                    animated: ""
                  }, {
                    default: t(() => [
                      e($, {
                        name: "database",
                        tab: a(u)("database")
                      }, {
                        default: t(() => [
                          e(Ct)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "account_settings",
                        tab: a(u)("account_settings")
                      }, {
                        default: t(() => [
                          e(wt)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "user_settings",
                        tab: a(u)("user_settings")
                      }, {
                        default: t(() => [
                          e(kt)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "workerconfig",
                        tab: a(u)("workerconfig")
                      }, {
                        default: t(() => [
                          e(At)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }, 8, [
                "tab"
              ]),
              e($, {
                name: "account",
                tab: a(u)("account")
              }, {
                default: t(() => [
                  e(B, {
                    type: "bar",
                    "justify-content": "center",
                    animated: ""
                  }, {
                    default: t(() => [
                      e($, {
                        name: "account",
                        tab: a(u)("account")
                      }, {
                        default: t(() => [
                          e(Ka)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "account_create",
                        tab: a(u)("account_create")
                      }, {
                        default: t(() => [
                          e(Qa)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "account_settings",
                        tab: a(u)("account_settings")
                      }, {
                        default: t(() => [
                          e(wt)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "senderAccess",
                        tab: a(u)("senderAccess")
                      }, {
                        default: t(() => [
                          e(Ba)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "ipBlacklistSettings",
                        tab: a(u)("ipBlacklistSettings")
                      }, {
                        default: t(() => [
                          e(ql)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "aiExtractSettings",
                        tab: a(u)("aiExtractSettings")
                      }, {
                        default: t(() => [
                          e(Wl)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "webhook",
                        tab: a(u)("webhookSettings")
                      }, {
                        default: t(() => [
                          e(Dl)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }, 8, [
                "tab"
              ]),
              e($, {
                name: "user",
                tab: a(u)("user")
              }, {
                default: t(() => [
                  e(B, {
                    type: "bar",
                    "justify-content": "center",
                    animated: ""
                  }, {
                    default: t(() => [
                      e($, {
                        name: "user_management",
                        tab: a(u)("user_management")
                      }, {
                        default: t(() => [
                          e(rl)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "user_settings",
                        tab: a(u)("user_settings")
                      }, {
                        default: t(() => [
                          e(kt)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "userOauth2Settings",
                        tab: a(u)("userOauth2Settings")
                      }, {
                        default: t(() => [
                          e(_l)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "roleAddressConfig",
                        tab: a(u)("roleAddressConfig")
                      }, {
                        default: t(() => [
                          e(gl)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }, 8, [
                "tab"
              ]),
              e($, {
                name: "mails",
                tab: a(u)("mails")
              }, {
                default: t(() => [
                  e(B, {
                    type: "bar",
                    "justify-content": "center",
                    animated: ""
                  }, {
                    default: t(() => [
                      e($, {
                        name: "mails",
                        tab: a(u)("mails")
                      }, {
                        default: t(() => [
                          e(yl)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "unknow",
                        tab: a(u)("unknow")
                      }, {
                        default: t(() => [
                          e(kl)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "sendBox",
                        tab: a(u)("sendBox")
                      }, {
                        default: t(() => [
                          e(qa)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "sendMail",
                        tab: a(u)("sendMail")
                      }, {
                        default: t(() => [
                          e(a(c))
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "mailWebhook",
                        tab: a(u)("mailWebhook")
                      }, {
                        default: t(() => [
                          e(Rl)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }, 8, [
                "tab"
              ]),
              e($, {
                name: "telegram",
                tab: a(u)("telegram")
              }, {
                default: t(() => [
                  e(Tl)
                ]),
                _: 1
              }, 8, [
                "tab"
              ]),
              e($, {
                name: "statistics",
                tab: a(u)("statistics")
              }, {
                default: t(() => [
                  e(Oa)
                ]),
                _: 1
              }, 8, [
                "tab"
              ]),
              e($, {
                name: "maintenance",
                tab: a(u)("maintenance")
              }, {
                default: t(() => [
                  e(B, {
                    type: "bar",
                    "justify-content": "center",
                    animated: ""
                  }, {
                    default: t(() => [
                      e($, {
                        name: "database",
                        tab: a(u)("database")
                      }, {
                        default: t(() => [
                          e(Ct)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "workerconfig",
                        tab: a(u)("workerconfig")
                      }, {
                        default: t(() => [
                          e(At)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ]),
                      e($, {
                        name: "maintenance",
                        tab: a(u)("maintenance")
                      }, {
                        default: t(() => [
                          e(Al)
                        ]),
                        _: 1
                      }, 8, [
                        "tab"
                      ])
                    ]),
                    _: 1
                  })
                ]),
                _: 1
              }, 8, [
                "tab"
              ]),
              e($, {
                name: "appearance",
                tab: a(u)("appearance")
              }, {
                default: t(() => [
                  e(ua)
                ]),
                _: 1
              }, 8, [
                "tab"
              ]),
              e($, {
                name: "adminAccount",
                tab: a(u)("adminAccount")
              }, {
                default: t(() => [
                  M("div", Kl, [
                    e(S, {
                      style: {
                        width: "600px"
                      }
                    }, {
                      default: t(() => [
                        e(_e, {
                          vertical: ""
                        }, {
                          default: t(() => [
                            e(Y, {
                              strong: ""
                            }, {
                              default: t(() => [
                                m(o(a(u)("loginMethod")), 1)
                              ]),
                              _: 1
                            }),
                            e(Y, null, {
                              default: t(() => [
                                m(o(D.value), 1)
                              ]),
                              _: 1
                            }),
                            K.value ? (E(), X(se, {
                              key: 0
                            })) : Z("", true),
                            K.value ? (E(), X(W, {
                              key: 1,
                              type: "warning",
                              onClick: I[2] || (I[2] = (R) => C.value = true),
                              block: ""
                            }, {
                              default: t(() => [
                                m(o(a(u)("logout")), 1)
                              ]),
                              _: 1
                            })) : Z("", true)
                          ]),
                          _: 1
                        })
                      ]),
                      _: 1
                    })
                  ])
                ]),
                _: 1
              }, 8, [
                "tab"
              ]),
              e($, {
                name: "about",
                tab: a(u)("about")
              }, {
                default: t(() => [
                  e(da)
                ]),
                _: 1
              }, 8, [
                "tab"
              ])
            ]),
            _: 1
          }, 8, [
            "value",
            "placement"
          ])) : Z("", true),
          e(k, {
            show: C.value,
            "onUpdate:show": I[4] || (I[4] = (R) => C.value = R),
            preset: "dialog",
            title: a(u)("logoutConfirmTitle")
          }, {
            action: t(() => [
              e(W, {
                loading: a(n),
                onClick: L,
                size: "small",
                tertiary: "",
                type: "warning"
              }, {
                default: t(() => [
                  m(o(a(u)("confirm")), 1)
                ]),
                _: 1
              }, 8, [
                "loading"
              ])
            ]),
            default: t(() => [
              M("p", null, o(a(u)("logoutConfirmContent")), 1)
            ]),
            _: 1
          }, 8, [
            "show",
            "title"
          ])
        ])) : Z("", true);
      };
    }
  };
  Ql = ee(Gl, [
    [
      "__scopeId",
      "data-v-ef349626"
    ]
  ]);
});
export {
  __tla,
  Ql as default
};
