Greasy Fork

Greasy Fork is available in English.

优惠券小助手——自动显示京东(jd.com)、淘宝(taobao.com)、天猫(tmall.com)、天猫国际(tmall.hk)、唯品会(vip.com)、京东国际(jd.hk)优惠券,简洁易用!

最新简洁易用的京东(jd.com)、淘宝(taobao.com)、天猫(tmall.com)、唯品会(vip.com)优惠券小助手,自动显示隐藏优惠券,支持各大电商平台,包括京东(jd.com)、淘宝(taobao.com)、天猫(tmall.com)、聚划算、天猫超市、天猫国际(tmall.hk)、京东国际(jd.hk)、京东图书、京东电子书、京东工业品、京东大药房(yiyaojd.com)、唯品会(vip.com),让您购物省心更省钱!

当前为 2024-10-26 提交的版本,查看 最新版本

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

作者可从这份脚本获得佣金,例如通过修改链接地址或提供优惠券代码以包含推荐或附属代码。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         优惠券小助手——自动显示京东(jd.com)、淘宝(taobao.com)、天猫(tmall.com)、天猫国际(tmall.hk)、唯品会(vip.com)、京东国际(jd.hk)优惠券,简洁易用!
// @name:zh     优惠券小助手——自动显示京东(jd.com)、淘宝(taobao.com)、天猫(tmall.com)、天猫国际(tmall.hk)、唯品会(vip.com)、京东国际(jd.hk)优惠券,简洁易用!
// @name:zh-TW  優惠券小助手——自動顯示京東(jd.com)、淘寶(taobao.com)、天貓(tmall.com)、天貓國際(tmall.hk)、唯品會(vip.com)、京東國際(jd.hk)優惠券,簡潔易用!
// @namespace    yiyezhiqiu
// @version      1.3.7
// @description  最新简洁易用的京东(jd.com)、淘宝(taobao.com)、天猫(tmall.com)、唯品会(vip.com)优惠券小助手,自动显示隐藏优惠券,支持各大电商平台,包括京东(jd.com)、淘宝(taobao.com)、天猫(tmall.com)、聚划算、天猫超市、天猫国际(tmall.hk)、京东国际(jd.hk)、京东图书、京东电子书、京东工业品、京东大药房(yiyaojd.com)、唯品会(vip.com),让您购物省心更省钱!
// @description:zh  最新简洁易用的京东(jd.com)、淘宝(taobao.com)、天猫(tmall.com)、唯品会(vip.com)优惠券小助手,自动显示隐藏优惠券,支持各大电商平台,包括京东(jd.com)、淘宝(taobao.com)、天猫(tmall.com)、聚划算、天猫超市、天猫国际(tmall.hk)、京东国际(jd.hk)、京东图书、京东电子书、京东工业品、京东大药房(yiyaojd.com)、唯品会(vip.com),让您购物省心更省钱!
// @description:zh-TW  最新簡潔易用的京東(jd.com)、淘寶(taobao.com)、天貓(tmall.com)、唯品會(vip.com)優惠券小助手,自動顯示隱藏優惠券,支持各大電商平台,包括京東(jd.com)、淘寶(taobao.com)、天貓(tmall.com)、聚划算、天貓超市、天貓國際(tmall.hk)、京東國際(jd.hk)、京東圖書、京東電子書、京東工業品、京東大藥房(yiyaojd.com)、唯品會(vip.com),讓您購物省心更省錢!
// @author       一叶知秋
// @homepage     https://coupon.jasonzk.com
// @license      None
// @require      https://cdn.jsdelivr.net/npm/[email protected]/crypto-js.min.js
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/easy.qrcode.min.js
// @match        *://*.taobao.com/*
// @match        *://*.tmall.com/*
// @match        *://*.tmall.hk/*
// @match        *://*.detail.tmall.com/*
// @match        *://*.liangxinyao.com/*
// @match        *://*.jd.com/*
// @match        *://*.jd.hk/*
// @match        *://*.yiyaojd.com/*
// @match        *://*.vip.com/*
// @match        *://*.vipglobal.hk/*
// @exclude      *://login.taobao.com/*
// @exclude      *://uland.taobao.com/*
// @exclude      *://login.tmall.com/*
// @exclude      *://pages.tmall.com/*
// @exclude      *://wq.jd.com/*
// @exclude      *://search.jd.com/*
// @exclude      *://payc.m.jd.com/*
// @exclude      *://union.jd.com/*
// @icon         data:image/png;base64,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
// @antifeature  referral-link
// @noframes
// @grant        unsafeWindow
// @grant        window.close
// @grant        GM_openInTab
// @grant        GM_info
// @grant        GM_getValue
// @grant        GM_setValue
// ==/UserScript==

(function() {
    'use strict';

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);
(function(EasyQRCode, CryptoJS2) {
  "use strict";
  var __vite_style__ = document.createElement("style");
  __vite_style__.textContent = `*,
::before,
::after{
  box-sizing:border-box;
  border-width:0;
  border-style:solid;
  border-color:#e5e7eb;
}

::before,
::after{
  --tw-content:'';
}

html{
  line-height:1.5;
  -webkit-text-size-adjust:100%;
  -moz-tab-size:4;
  -o-tab-size:4;
     tab-size:4;
  font-family:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  font-feature-settings:normal;
  font-variation-settings:normal;
  -webkit-tap-highlight-color:transparent;
}

body{
  margin:0;
  line-height:inherit;
}


h2,
h3{
  font-size:inherit;
  font-weight:inherit;
}

button,
input{
  font-family:inherit;
  font-feature-settings:inherit;
  font-variation-settings:inherit;
  font-size:100%;
  font-weight:inherit;
  line-height:inherit;
  letter-spacing:inherit;
  color:inherit;
  margin:0;
  padding:0;
}

button{
  text-transform:none;
}

button,
input:where([type='button']),
input:where([type='submit']){
  -webkit-appearance:button;
  background-color:transparent;
  background-image:none;
}

::-webkit-inner-spin-button,
::-webkit-outer-spin-button{
  height:auto;
}

::-webkit-search-decoration{
  -webkit-appearance:none;
}

::-webkit-file-upload-button{
  -webkit-appearance:button;
  font:inherit;
}


h2,
h3,
p{
  margin:0;
}

input::-moz-placeholder{
  opacity:1;
  color:#9ca3af;
}

input::placeholder{
  opacity:1;
  color:#9ca3af;
}

button{
  cursor:pointer;
}

*, ::before, ::after{
  --tw-border-spacing-x:0;
  --tw-border-spacing-y:0;
  --tw-translate-x:0;
  --tw-translate-y:0;
  --tw-rotate:0;
  --tw-skew-x:0;
  --tw-skew-y:0;
  --tw-scale-x:1;
  --tw-scale-y:1;
  --tw-pan-x:;
  --tw-pan-y:;
  --tw-pinch-zoom:;
  --tw-scroll-snap-strictness:proximity;
  --tw-gradient-from-position:;
  --tw-gradient-via-position:;
  --tw-gradient-to-position:;
  --tw-ordinal:;
  --tw-slashed-zero:;
  --tw-numeric-figure:;
  --tw-numeric-spacing:;
  --tw-numeric-fraction:;
  --tw-ring-inset:;
  --tw-ring-offset-width:0px;
  --tw-ring-offset-color:#fff;
  --tw-ring-color:rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow:0 0 #0000;
  --tw-ring-shadow:0 0 #0000;
  --tw-shadow:0 0 #0000;
  --tw-shadow-colored:0 0 #0000;
  --tw-blur:;
  --tw-brightness:;
  --tw-contrast:;
  --tw-grayscale:;
  --tw-hue-rotate:;
  --tw-invert:;
  --tw-saturate:;
  --tw-sepia:;
  --tw-drop-shadow:;
  --tw-backdrop-blur:;
  --tw-backdrop-brightness:;
  --tw-backdrop-contrast:;
  --tw-backdrop-grayscale:;
  --tw-backdrop-hue-rotate:;
  --tw-backdrop-invert:;
  --tw-backdrop-opacity:;
  --tw-backdrop-saturate:;
  --tw-backdrop-sepia:;
  --tw-contain-size:;
  --tw-contain-layout:;
  --tw-contain-paint:;
  --tw-contain-style:;
}

::backdrop{
  --tw-border-spacing-x:0;
  --tw-border-spacing-y:0;
  --tw-translate-x:0;
  --tw-translate-y:0;
  --tw-rotate:0;
  --tw-skew-x:0;
  --tw-skew-y:0;
  --tw-scale-x:1;
  --tw-scale-y:1;
  --tw-pan-x:;
  --tw-pan-y:;
  --tw-pinch-zoom:;
  --tw-scroll-snap-strictness:proximity;
  --tw-gradient-from-position:;
  --tw-gradient-via-position:;
  --tw-gradient-to-position:;
  --tw-ordinal:;
  --tw-slashed-zero:;
  --tw-numeric-figure:;
  --tw-numeric-spacing:;
  --tw-numeric-fraction:;
  --tw-ring-inset:;
  --tw-ring-offset-width:0px;
  --tw-ring-offset-color:#fff;
  --tw-ring-color:rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow:0 0 #0000;
  --tw-ring-shadow:0 0 #0000;
  --tw-shadow:0 0 #0000;
  --tw-shadow-colored:0 0 #0000;
  --tw-blur:;
  --tw-brightness:;
  --tw-contrast:;
  --tw-grayscale:;
  --tw-hue-rotate:;
  --tw-invert:;
  --tw-saturate:;
  --tw-sepia:;
  --tw-drop-shadow:;
  --tw-backdrop-blur:;
  --tw-backdrop-brightness:;
  --tw-backdrop-contrast:;
  --tw-backdrop-grayscale:;
  --tw-backdrop-hue-rotate:;
  --tw-backdrop-invert:;
  --tw-backdrop-opacity:;
  --tw-backdrop-saturate:;
  --tw-backdrop-sepia:;
  --tw-contain-size:;
  --tw-contain-layout:;
  --tw-contain-paint:;
  --tw-contain-style:;
}\r
.cp-fixed{
  position:fixed;
}\r
.cp-absolute{
  position:absolute;
}\r
.cp-relative{
  position:relative;
}\r
.cp-inset-0{
  inset:0px;
}\r
.cp-right-\\[8px\\]{
  right:8px;
}\r
.cp-top-\\[8px\\]{
  top:8px;
}\r
.cp-z-20{
  z-index:20;
}\r
.cp-mb-\\[12px\\]{
  margin-bottom:12px;
}\r
.cp-mb-\\[20px\\]{
  margin-bottom:20px;
}\r
.cp-mb-\\[8px\\]{
  margin-bottom:8px;
}\r
.cp-mt-\\[28px\\]{
  margin-top:28px;
}\r
.cp-flex{
  display:flex;
}\r
.cp-h-\\[25px\\]{
  height:25px;
}\r
.cp-w-\\[120px\\]{
  width:120px;
}\r
.cp-w-\\[25px\\]{
  width:25px;
}\r
.cp-w-full{
  width:100%;
}\r
.cp-flex-none{
  flex:none;
}\r
.cp-flex-grow{
  flex-grow:1;
}\r
.cp-cursor-pointer{
  cursor:pointer;
}\r
.cp-flex-col{
  flex-direction:column;
}\r
.cp-flex-wrap{
  flex-wrap:wrap;
}\r
.cp-items-center{
  align-items:center;
}\r
.cp-justify-center{
  justify-content:center;
}\r
.cp-gap-\\[20px\\]{
  gap:20px;
}\r
.cp-gap-\\[4px\\]{
  gap:4px;
}\r
.cp-rounded{
  border-radius:0.25rem;
}\r
.cp-rounded-full{
  border-radius:9999px;
}\r
.cp-rounded-lg{
  border-radius:0.5rem;
}\r
.cp-rounded-md{
  border-radius:0.375rem;
}\r
.cp-rounded-e-lg{
  border-start-end-radius:0.5rem;
  border-end-end-radius:0.5rem;
}\r
.cp-border{
  border-width:1px;
}\r
.cp-border-l-4{
  border-left-width:4px;
}\r
.cp-border-r-2{
  border-right-width:2px;
}\r
.cp-border-dotted{
  border-style:dotted;
}\r
.cp-border-gray-300{
  --tw-border-opacity:1;
  border-color:rgb(209 213 219 / var(--tw-border-opacity));
}\r
.cp-border-l-red-600{
  --tw-border-opacity:1;
  border-left-color:rgb(220 38 38 / var(--tw-border-opacity));
}\r
.cp-bg-black{
  --tw-bg-opacity:1;
  background-color:rgb(0 0 0 / var(--tw-bg-opacity));
}\r
.cp-bg-blue-400{
  --tw-bg-opacity:1;
  background-color:rgb(96 165 250 / var(--tw-bg-opacity));
}\r
.cp-bg-gray-50{
  --tw-bg-opacity:1;
  background-color:rgb(249 250 251 / var(--tw-bg-opacity));
}\r
.cp-bg-slate-100{
  --tw-bg-opacity:1;
  background-color:rgb(241 245 249 / var(--tw-bg-opacity));
}\r
.cp-bg-white{
  --tw-bg-opacity:1;
  background-color:rgb(255 255 255 / var(--tw-bg-opacity));
}\r
.cp-bg-opacity-70{
  --tw-bg-opacity:0.7;
}\r
.cp-p-4{
  padding:1rem;
}\r
.cp-p-\\[12px\\]{
  padding:12px;
}\r
.cp-p-\\[16px\\]{
  padding:16px;
}\r
.cp-py-\\[10px\\]{
  padding-top:10px;
  padding-bottom:10px;
}\r
.cp-pl-4{
  padding-left:1rem;
}\r
.cp-pl-\\[10px\\]{
  padding-left:10px;
}\r
.cp-pr-4{
  padding-right:1rem;
}\r
.cp-pr-\\[40px\\]{
  padding-right:40px;
}\r
.cp-text-center{
  text-align:center;
}\r
.cp-text-2xl{
  font-size:1.5rem;
  line-height:2rem;
}\r
.cp-text-3xl{
  font-size:1.875rem;
  line-height:2.25rem;
}\r
.cp-text-\\[12px\\]{
  font-size:12px;
}\r
.cp-text-lg{
  font-size:1.125rem;
  line-height:1.75rem;
}\r
.cp-text-sm{
  font-size:0.875rem;
  line-height:1.25rem;
}\r
.cp-font-bold{
  font-weight:700;
}\r
.cp-font-semibold{
  font-weight:600;
}\r
.cp-text-\\[\\#888\\]{
  --tw-text-opacity:1;
  color:rgb(136 136 136 / var(--tw-text-opacity));
}\r
.cp-text-blue-500{
  --tw-text-opacity:1;
  color:rgb(59 130 246 / var(--tw-text-opacity));
}\r
.cp-text-gray-500{
  --tw-text-opacity:1;
  color:rgb(107 114 128 / var(--tw-text-opacity));
}\r
.cp-text-gray-600{
  --tw-text-opacity:1;
  color:rgb(75 85 99 / var(--tw-text-opacity));
}\r
.cp-text-gray-900{
  --tw-text-opacity:1;
  color:rgb(17 24 39 / var(--tw-text-opacity));
}\r
.cp-text-red-500{
  --tw-text-opacity:1;
  color:rgb(239 68 68 / var(--tw-text-opacity));
}\r
.cp-underline{
  text-decoration-line:underline;
}\r
*,\r
::before,\r
::after{\r
  box-sizing:initial;\r
}\r
@keyframes seesaw{\r
  0%,\r
  100%{\r
    transform:rotate(0deg);\r
  }\r
  25%{\r
    transform:rotate(-10deg);\r
  }\r
  75%{\r
    transform:rotate(10deg);\r
  }\r
}\r
.ck-shake-74nhahe{\r
  display:inline-block;\r
  transform-origin:center;\r
  animation:seesaw 0.6s ease-in-out;\r
}\r
.hover\\:cp-underline:hover{
  text-decoration-line:underline;
}\r
`;
  document.head.appendChild(__vite_style__);
  function noop() {
  }
  function assign(tar, src) {
    for (const k in src) tar[k] = src[k];
    return (
      /** @type {T & S} */
      tar
    );
  }
  function run(fn) {
    return fn();
  }
  function blank_object() {
    return /* @__PURE__ */ Object.create(null);
  }
  function run_all(fns) {
    fns.forEach(run);
  }
  function is_function(thing) {
    return typeof thing === "function";
  }
  function safe_not_equal(a, b) {
    return a != a ? b == b : a !== b || a && typeof a === "object" || typeof a === "function";
  }
  let src_url_equal_anchor;
  function src_url_equal(element_src, url) {
    if (element_src === url) return true;
    if (!src_url_equal_anchor) {
      src_url_equal_anchor = document.createElement("a");
    }
    src_url_equal_anchor.href = url;
    return element_src === src_url_equal_anchor.href;
  }
  function is_empty(obj) {
    return Object.keys(obj).length === 0;
  }
  function subscribe(store, ...callbacks) {
    if (store == null) {
      for (const callback of callbacks) {
        callback(void 0);
      }
      return noop;
    }
    const unsub = store.subscribe(...callbacks);
    return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
  }
  function component_subscribe(component, store, callback) {
    component.$$.on_destroy.push(subscribe(store, callback));
  }
  function create_slot(definition, ctx, $$scope, fn) {
    if (definition) {
      const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);
      return definition[0](slot_ctx);
    }
  }
  function get_slot_context(definition, ctx, $$scope, fn) {
    return definition[1] && fn ? assign($$scope.ctx.slice(), definition[1](fn(ctx))) : $$scope.ctx;
  }
  function get_slot_changes(definition, $$scope, dirty, fn) {
    if (definition[2] && fn) {
      const lets = definition[2](fn(dirty));
      if ($$scope.dirty === void 0) {
        return lets;
      }
      if (typeof lets === "object") {
        const merged = [];
        const len = Math.max($$scope.dirty.length, lets.length);
        for (let i = 0; i < len; i += 1) {
          merged[i] = $$scope.dirty[i] | lets[i];
        }
        return merged;
      }
      return $$scope.dirty | lets;
    }
    return $$scope.dirty;
  }
  function update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {
    if (slot_changes) {
      const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);
      slot.p(slot_context, slot_changes);
    }
  }
  function get_all_dirty_from_scope($$scope) {
    if ($$scope.ctx.length > 32) {
      const dirty = [];
      const length = $$scope.ctx.length / 32;
      for (let i = 0; i < length; i++) {
        dirty[i] = -1;
      }
      return dirty;
    }
    return -1;
  }
  function append(target, node) {
    target.appendChild(node);
  }
  function insert(target, node, anchor) {
    target.insertBefore(node, anchor || null);
  }
  function detach(node) {
    if (node.parentNode) {
      node.parentNode.removeChild(node);
    }
  }
  function destroy_each(iterations, detaching) {
    for (let i = 0; i < iterations.length; i += 1) {
      if (iterations[i]) iterations[i].d(detaching);
    }
  }
  function element(name) {
    return document.createElement(name);
  }
  function svg_element(name) {
    return document.createElementNS("http://www.w3.org/2000/svg", name);
  }
  function text(data) {
    return document.createTextNode(data);
  }
  function space() {
    return text(" ");
  }
  function empty() {
    return text("");
  }
  function listen(node, event, handler, options) {
    node.addEventListener(event, handler, options);
    return () => node.removeEventListener(event, handler, options);
  }
  function stop_propagation(fn) {
    return function(event) {
      event.stopPropagation();
      return fn.call(this, event);
    };
  }
  function attr(node, attribute, value) {
    if (value == null) node.removeAttribute(attribute);
    else if (node.getAttribute(attribute) !== value) node.setAttribute(attribute, value);
  }
  function children(element2) {
    return Array.from(element2.childNodes);
  }
  function set_data(text2, data) {
    data = "" + data;
    if (text2.data === data) return;
    text2.data = /** @type {string} */
    data;
  }
  function set_style(node, key, value, important) {
    if (value == null) {
      node.style.removeProperty(key);
    } else {
      node.style.setProperty(key, value, "");
    }
  }
  function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {
    return new CustomEvent(type, { detail, bubbles, cancelable });
  }
  class HtmlTag {
    constructor(is_svg = false) {
      /**
       * @private
       * @default false
       */
      __publicField(this, "is_svg", false);
      /** parent for creating node */
      __publicField(this, "e");
      /** html tag nodes */
      __publicField(this, "n");
      /** target */
      __publicField(this, "t");
      /** anchor */
      __publicField(this, "a");
      this.is_svg = is_svg;
      this.e = this.n = null;
    }
    /**
     * @param {string} html
     * @returns {void}
     */
    c(html) {
      this.h(html);
    }
    /**
     * @param {string} html
     * @param {HTMLElement | SVGElement} target
     * @param {HTMLElement | SVGElement} anchor
     * @returns {void}
     */
    m(html, target, anchor = null) {
      if (!this.e) {
        if (this.is_svg)
          this.e = svg_element(
            /** @type {keyof SVGElementTagNameMap} */
            target.nodeName
          );
        else
          this.e = element(
            /** @type {keyof HTMLElementTagNameMap} */
            target.nodeType === 11 ? "TEMPLATE" : target.nodeName
          );
        this.t = target.tagName !== "TEMPLATE" ? target : (
          /** @type {HTMLTemplateElement} */
          target.content
        );
        this.c(html);
      }
      this.i(anchor);
    }
    /**
     * @param {string} html
     * @returns {void}
     */
    h(html) {
      this.e.innerHTML = html;
      this.n = Array.from(
        this.e.nodeName === "TEMPLATE" ? this.e.content.childNodes : this.e.childNodes
      );
    }
    /**
     * @returns {void} */
    i(anchor) {
      for (let i = 0; i < this.n.length; i += 1) {
        insert(this.t, this.n[i], anchor);
      }
    }
    /**
     * @param {string} html
     * @returns {void}
     */
    p(html) {
      this.d();
      this.h(html);
      this.i(this.a);
    }
    /**
     * @returns {void} */
    d() {
      this.n.forEach(detach);
    }
  }
  let current_component;
  function set_current_component(component) {
    current_component = component;
  }
  function get_current_component() {
    if (!current_component) throw new Error("Function called outside component initialization");
    return current_component;
  }
  function onMount(fn) {
    get_current_component().$$.on_mount.push(fn);
  }
  function createEventDispatcher() {
    const component = get_current_component();
    return (type, detail, { cancelable = false } = {}) => {
      const callbacks = component.$$.callbacks[type];
      if (callbacks) {
        const event = custom_event(
          /** @type {string} */
          type,
          detail,
          { cancelable }
        );
        callbacks.slice().forEach((fn) => {
          fn.call(component, event);
        });
        return !event.defaultPrevented;
      }
      return true;
    };
  }
  function bubble(component, event) {
    const callbacks = component.$$.callbacks[event.type];
    if (callbacks) {
      callbacks.slice().forEach((fn) => fn.call(this, event));
    }
  }
  const dirty_components = [];
  const binding_callbacks = [];
  let render_callbacks = [];
  const flush_callbacks = [];
  const resolved_promise = /* @__PURE__ */ Promise.resolve();
  let update_scheduled = false;
  function schedule_update() {
    if (!update_scheduled) {
      update_scheduled = true;
      resolved_promise.then(flush);
    }
  }
  function add_render_callback(fn) {
    render_callbacks.push(fn);
  }
  const seen_callbacks = /* @__PURE__ */ new Set();
  let flushidx = 0;
  function flush() {
    if (flushidx !== 0) {
      return;
    }
    const saved_component = current_component;
    do {
      try {
        while (flushidx < dirty_components.length) {
          const component = dirty_components[flushidx];
          flushidx++;
          set_current_component(component);
          update(component.$$);
        }
      } catch (e) {
        dirty_components.length = 0;
        flushidx = 0;
        throw e;
      }
      set_current_component(null);
      dirty_components.length = 0;
      flushidx = 0;
      while (binding_callbacks.length) binding_callbacks.pop()();
      for (let i = 0; i < render_callbacks.length; i += 1) {
        const callback = render_callbacks[i];
        if (!seen_callbacks.has(callback)) {
          seen_callbacks.add(callback);
          callback();
        }
      }
      render_callbacks.length = 0;
    } while (dirty_components.length);
    while (flush_callbacks.length) {
      flush_callbacks.pop()();
    }
    update_scheduled = false;
    seen_callbacks.clear();
    set_current_component(saved_component);
  }
  function update($$) {
    if ($$.fragment !== null) {
      $$.update();
      run_all($$.before_update);
      const dirty = $$.dirty;
      $$.dirty = [-1];
      $$.fragment && $$.fragment.p($$.ctx, dirty);
      $$.after_update.forEach(add_render_callback);
    }
  }
  function flush_render_callbacks(fns) {
    const filtered = [];
    const targets = [];
    render_callbacks.forEach((c) => fns.indexOf(c) === -1 ? filtered.push(c) : targets.push(c));
    targets.forEach((c) => c());
    render_callbacks = filtered;
  }
  const outroing = /* @__PURE__ */ new Set();
  let outros;
  function group_outros() {
    outros = {
      r: 0,
      c: [],
      p: outros
      // parent group
    };
  }
  function check_outros() {
    if (!outros.r) {
      run_all(outros.c);
    }
    outros = outros.p;
  }
  function transition_in(block, local) {
    if (block && block.i) {
      outroing.delete(block);
      block.i(local);
    }
  }
  function transition_out(block, local, detach2, callback) {
    if (block && block.o) {
      if (outroing.has(block)) return;
      outroing.add(block);
      outros.c.push(() => {
        outroing.delete(block);
        if (callback) {
          if (detach2) block.d(1);
          callback();
        }
      });
      block.o(local);
    } else if (callback) {
      callback();
    }
  }
  function ensure_array_like(array_like_or_iterator) {
    return (array_like_or_iterator == null ? void 0 : array_like_or_iterator.length) !== void 0 ? array_like_or_iterator : Array.from(array_like_or_iterator);
  }
  function create_component(block) {
    block && block.c();
  }
  function mount_component(component, target, anchor) {
    const { fragment, after_update } = component.$$;
    fragment && fragment.m(target, anchor);
    add_render_callback(() => {
      const new_on_destroy = component.$$.on_mount.map(run).filter(is_function);
      if (component.$$.on_destroy) {
        component.$$.on_destroy.push(...new_on_destroy);
      } else {
        run_all(new_on_destroy);
      }
      component.$$.on_mount = [];
    });
    after_update.forEach(add_render_callback);
  }
  function destroy_component(component, detaching) {
    const $$ = component.$$;
    if ($$.fragment !== null) {
      flush_render_callbacks($$.after_update);
      run_all($$.on_destroy);
      $$.fragment && $$.fragment.d(detaching);
      $$.on_destroy = $$.fragment = null;
      $$.ctx = [];
    }
  }
  function make_dirty(component, i) {
    if (component.$$.dirty[0] === -1) {
      dirty_components.push(component);
      schedule_update();
      component.$$.dirty.fill(0);
    }
    component.$$.dirty[i / 31 | 0] |= 1 << i % 31;
  }
  function init(component, options, instance2, create_fragment2, not_equal, props, append_styles = null, dirty = [-1]) {
    const parent_component = current_component;
    set_current_component(component);
    const $$ = component.$$ = {
      fragment: null,
      ctx: [],
      // state
      props,
      update: noop,
      not_equal,
      bound: blank_object(),
      // lifecycle
      on_mount: [],
      on_destroy: [],
      on_disconnect: [],
      before_update: [],
      after_update: [],
      context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),
      // everything else
      callbacks: blank_object(),
      dirty,
      skip_bound: false,
      root: options.target || parent_component.$$.root
    };
    append_styles && append_styles($$.root);
    let ready = false;
    $$.ctx = instance2 ? instance2(component, options.props || {}, (i, ret, ...rest) => {
      const value = rest.length ? rest[0] : ret;
      if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {
        if (!$$.skip_bound && $$.bound[i]) $$.bound[i](value);
        if (ready) make_dirty(component, i);
      }
      return ret;
    }) : [];
    $$.update();
    ready = true;
    run_all($$.before_update);
    $$.fragment = create_fragment2 ? create_fragment2($$.ctx) : false;
    if (options.target) {
      if (options.hydrate) {
        const nodes = children(options.target);
        $$.fragment && $$.fragment.l(nodes);
        nodes.forEach(detach);
      } else {
        $$.fragment && $$.fragment.c();
      }
      if (options.intro) transition_in(component.$$.fragment);
      mount_component(component, options.target, options.anchor);
      flush();
    }
    set_current_component(parent_component);
  }
  class SvelteComponent {
    constructor() {
      /**
       * ### PRIVATE API
       *
       * Do not use, may change at any time
       *
       * @type {any}
       */
      __publicField(this, "$$");
      /**
       * ### PRIVATE API
       *
       * Do not use, may change at any time
       *
       * @type {any}
       */
      __publicField(this, "$$set");
    }
    /** @returns {void} */
    $destroy() {
      destroy_component(this, 1);
      this.$destroy = noop;
    }
    /**
     * @template {Extract<keyof Events, string>} K
     * @param {K} type
     * @param {((e: Events[K]) => void) | null | undefined} callback
     * @returns {() => void}
     */
    $on(type, callback) {
      if (!is_function(callback)) {
        return noop;
      }
      const callbacks = this.$$.callbacks[type] || (this.$$.callbacks[type] = []);
      callbacks.push(callback);
      return () => {
        const index = callbacks.indexOf(callback);
        if (index !== -1) callbacks.splice(index, 1);
      };
    }
    /**
     * @param {Partial<Props>} props
     * @returns {void}
     */
    $set(props) {
      if (this.$$set && !is_empty(props)) {
        this.$$.skip_bound = true;
        this.$$set(props);
        this.$$.skip_bound = false;
      }
    }
  }
  const PUBLIC_VERSION = "4";
  if (typeof window !== "undefined")
    (window.__svelte || (window.__svelte = { v: /* @__PURE__ */ new Set() })).v.add(PUBLIC_VERSION);
  var UrlType = /* @__PURE__ */ ((UrlType2) => {
    UrlType2["Tmall"] = "tmall";
    UrlType2["YYTmall"] = "liangxinyao";
    UrlType2["Taobao"] = "taobao";
    UrlType2["JD"] = "jd";
    UrlType2["Vip"] = "vip";
    return UrlType2;
  })(UrlType || {});
  var Platform = /* @__PURE__ */ ((Platform2) => {
    Platform2[Platform2["Taobao"] = 1] = "Taobao";
    Platform2[Platform2["JD"] = 2] = "JD";
    Platform2[Platform2["Pdd"] = 3] = "Pdd";
    Platform2[Platform2["Vip"] = 4] = "Vip";
    Platform2[Platform2["None"] = 5] = "None";
    return Platform2;
  })(Platform || {});
  const PluginName = "3";
  const subscriber_queue = [];
  function writable(value, start = noop) {
    let stop;
    const subscribers = /* @__PURE__ */ new Set();
    function set(new_value) {
      if (safe_not_equal(value, new_value)) {
        value = new_value;
        if (stop) {
          const run_queue = !subscriber_queue.length;
          for (const subscriber of subscribers) {
            subscriber[1]();
            subscriber_queue.push(subscriber, value);
          }
          if (run_queue) {
            for (let i = 0; i < subscriber_queue.length; i += 2) {
              subscriber_queue[i][0](subscriber_queue[i + 1]);
            }
            subscriber_queue.length = 0;
          }
        }
      }
    }
    function update2(fn) {
      set(fn(value));
    }
    function subscribe2(run2, invalidate = noop) {
      const subscriber = [run2, invalidate];
      subscribers.add(subscriber);
      if (subscribers.size === 1) {
        stop = start(set, update2) || noop;
      }
      run2(value);
      return () => {
        subscribers.delete(subscriber);
        if (subscribers.size === 0 && stop) {
          stop();
          stop = null;
        }
      };
    }
    return { set, update: update2, subscribe: subscribe2 };
  }
  function createPlatform() {
    const { subscribe: subscribe2, set, update: update2 } = writable(null);
    return {
      subscribe: subscribe2,
      updatePlatform: (data) => update2(() => data)
    };
  }
  const platform = createPlatform();
  function create_fragment$a(ctx) {
    let div1;
    let div0;
    return {
      c() {
        div1 = element("div");
        div0 = element("div");
      },
      m(target, anchor) {
        insert(target, div1, anchor);
        append(div1, div0);
        ctx[6](div0);
      },
      p: noop,
      i: noop,
      o: noop,
      d(detaching) {
        if (detaching) {
          detach(div1);
        }
        ctx[6](null);
      }
    };
  }
  function instance$9($$self, $$props, $$invalidate) {
    let { url = "" } = $$props;
    let { width = 70 } = $$props;
    let { height = 70 } = $$props;
    let { logo = "" } = $$props;
    let { logoWidth = 20 } = $$props;
    let qrCodeContainer;
    onMount(() => {
      generateQRCode();
    });
    function generateQRCode() {
      if (!qrCodeContainer) return;
      $$invalidate(0, qrCodeContainer.innerHTML = "", qrCodeContainer);
      new EasyQRCode(
        qrCodeContainer,
        {
          text: url,
          width,
          height,
          logo,
          logoWidth,
          logoBackgroundTransparent: true
        }
      );
    }
    function div0_binding($$value) {
      binding_callbacks[$$value ? "unshift" : "push"](() => {
        qrCodeContainer = $$value;
        $$invalidate(0, qrCodeContainer);
      });
    }
    $$self.$$set = ($$props2) => {
      if ("url" in $$props2) $$invalidate(1, url = $$props2.url);
      if ("width" in $$props2) $$invalidate(2, width = $$props2.width);
      if ("height" in $$props2) $$invalidate(3, height = $$props2.height);
      if ("logo" in $$props2) $$invalidate(4, logo = $$props2.logo);
      if ("logoWidth" in $$props2) $$invalidate(5, logoWidth = $$props2.logoWidth);
    };
    $$self.$$.update = () => {
      if ($$self.$$.dirty & /*url, width, height, logo, logoWidth*/
      62) {
        if (url || width || height || logo || logoWidth) {
          generateQRCode();
        }
      }
    };
    return [qrCodeContainer, url, width, height, logo, logoWidth, div0_binding];
  }
  class QrCode extends SvelteComponent {
    constructor(options) {
      super();
      init(this, options, instance$9, create_fragment$a, safe_not_equal, {
        url: 1,
        width: 2,
        height: 3,
        logo: 4,
        logoWidth: 5
      });
    }
  }
  var ActivityType = /* @__PURE__ */ ((ActivityType2) => {
    ActivityType2["TEXT"] = "text";
    ActivityType2["IMG"] = "img";
    ActivityType2["COUPON"] = "coupon";
    return ActivityType2;
  })(ActivityType || {});
  function getPlatformLogo(platform2) {
    switch (platform2) {
      case Platform.Taobao:
        return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAABE0lEQVRIS2P8r6XF9uLGjcp/DAwxjAwMCv8ZGFgYqAgYGRj+/GdgeMDEwLBEQkOjnfEpC0sDw79/9VS0A6dRTAwMDYxPmZhuMzAwqNDDQgYGhjuMz5iYflM7GHE5HhS8IB/+p5PvwNYMDgsFly5lYLWwwOpxJhERBkZ2drDc/58/Gf69eYNV3e8TJxjeR0djyGH1ofDevQzsDg4UhfTPAwcY3jo7D1ILecrKGFjU1bH6kN3dnYFZUhIs9/f5c4afO3diVffn5k2GL11dxPkQX1giBzeuYMOnn+RUOmohoaQ9GqQYITSaaEYTzWi2wEgDyDUJrhoBb+E9EI0o+jYTnzMx1f9jYGgglH+oIQ9uCNO7qQ8Aj+XKFcR3kJwAAAAASUVORK5CYII=";
      case Platform.JD:
        return "data:image/png;base64,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";
      case Platform.Pdd:
        return "https://cmsstaticv2.ffquan.cn/pc/img/pdd.3757fb8c.png";
      case Platform.Vip:
        return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAFZElEQVR42mWWW4id1RXHf2t/35xJnLSStqaiYhOmaWIvtqTTVii9aUGaFEpLrZS2UlBffNQXES8oQXwVFV/0QfRFJSJe0eiDRsS7eE0cjXclmURjJpmcmZxvr78nszbfRt2w+PbZa+/13+u/LvsYgM69ZQPYtbjOBqaQwAAnhgQYSP3UBAgkAWWOMEE9KwxbkPQIyS4D3jKde+uPcH9IYtqES0pGGDIKCIAquGQYFYhv6ONsuYwjErA7edrcMspbEdOITlJbMEAgHFQWqEaNYlQCVSxU96gaSYLOxHQmb23J2hxK2qDLsGQIgQwzgALqQu4wckgJT8TeLnQAJMPCUE+xQRsXtM2tsqZQodAMLSyipUyNCwHWNrCiBQw779fw4xOxvfP4TU9hG07A/v1L9O5+uO155FDprbkgfKpV58UPoexwziZs08kw7MALdRMN7JlHtz47BvsV9t8ZGGX8ul3w/gH47TpsLKw+Dr/56WDAQI1B02D0CaaWLBOE+1nY6SdhZ6wDV6XHDH1yEJqE/f10APTpPLb2O3Dl2di68RdgzSrSxX+Miw8aeOFj2D6L2gQCJGtxKBwsb7TFLuazc2jbK/CLk0lbfoJ9dwr728+WQZGwH6xG/5vBAKOM703B5tNIWWjVJBp2+MO7+jKSi1bZa5rlmor66Av8+h3YeTMwBlyO34Ej6GjGvv8t/L7X8asfBUG67CzSP3+OXvmUfNE2rBOycMRSgq7Wa1In5EI5YihBaBKsHGBtAwCHlshjAL30MUDEabFDSx1kBwAXjDLqMnQOo7B5TCgYCRd0RbJA9Ic1ctSFMX22gL+2JyiFANt/BI7JMMJg2eHzYch4XfNLkCnORI60uMABQoGLfizfTtXjiQbMwvjMKTTXbYksPuNUABgnUbr0zLj4oEFv7MUf3NmfkUSrkcAACesqGBLqhLn634S3Abj+BGzDGqAOGydNc8Fv+gz3R2fJ972JGRUQV1/h7iL1AMDXPFb2HtSffJd8y3OYQfr/DOms9fjsPvI1j0H2oH7fEcwBU580LVm1y9cYIini59SRASn0H36B3/8mYPCHaRLAgSH+xHsBaAYJbKJFoseIsqDY6Qog1UPlr3tMDBWdCVT30MW6oeg0SYiqb79ya6+A9g1KyxwL/SnH0/xlIxLYqasB4PgV2O/WYoVS5hbQO/uLPUMoPKweeAWXygUMIL5ZUH6mP/1wOW5QRzptDYO7/tMnTX5gJ6Pzty3PJYWH5tSunsuXmJNHaGGpUujVY981F/ESpN+vJf30RDR3mO6Ol7HOUZPQq3sgg2qm03rnGLUOe8TjBrDxJJo/ry86R0dzf9h3fMBo3MYEDG74RwCOG3p3xXY4ts8MaxOsnAiTAuuztCZFFDfQnDlNs/MSyAXg9T3ow4O9nkHCJleElcmmNodx02aUMTNwQRYmENQ6lISVGGrvYTS/CIePBvefD/HH3yHf+AyIyoBZPDt1FJ0VAUGAigIqbLhmqyMMK1y3ifIEhWShQ0exZDCRGNz+L5q/box1A0ToylwHh8HKqgHdna8xuvDeKA/AJLVyN2Qg1abs9V+XGdhkC5RGkOKwv70PvTEXFJdXxiAuLMFku5w0cg9bgIS1ZBaQTyGjnjL6IdAox5pDd9Oz5O27yTvex1/8BBs0yMEQKlYRIUawlQuabMEWvn31XUjnAB2irbGgHkT9XbQ4AhxSi7UJ1T0giz21lmPNVGzb3W0Sl3vWJonp8EEpvA1g9QEuBgYT9b3M1ZuCEEel2pGQS7QGu8EuTysPXTWLNVuSuIfMsH/5PQQnYpePSTzKjKX0zABWEWodG+WLDQ27x2i2GDb7JcYo/09XdwlHAAAAAElFTkSuQmCC";
      default:
        return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAABE0lEQVRIS2P8r6XF9uLGjcp/DAwxjAwMCv8ZGFgYqAgYGRj+/GdgeMDEwLBEQkOjnfEpC0sDw79/9VS0A6dRTAwMDYxPmZhuMzAwqNDDQgYGhjuMz5iYflM7GHE5HhS8IB/+p5PvwNYMDgsFly5lYLWwwOpxJhERBkZ2drDc/58/Gf69eYNV3e8TJxjeR0djyGH1ofDevQzsDg4UhfTPAwcY3jo7D1ILecrKGFjU1bH6kN3dnYFZUhIs9/f5c4afO3diVffn5k2GL11dxPkQX1giBzeuYMOnn+RUOmohoaQ9GqQYITSaaEYTzWi2wEgDyDUJrhoBb+E9EI0o+jYTnzMx1f9jYGgglH+oIQ9uCNO7qQ8Aj+XKFcR3kJwAAAAASUVORK5CYII=";
    }
  }
  function getLogoWidth(platform2, rate = 1) {
    switch (platform2) {
      case Platform.Taobao:
        return 15 * rate;
      case Platform.JD:
        return 20 * rate;
      case Platform.Vip:
        return 15 * rate;
      case Platform.Pdd:
        return 30 * rate;
      default:
        return 20 * rate;
    }
  }
  async function getTitle(p) {
    const pat = p ?? ensurePlatform();
    let title = "";
    switch (pat) {
      case Platform.Taobao:
        title = await getTbTitle();
        break;
      case Platform.JD:
        title = await getJdTitle();
        break;
      case Platform.Vip:
        title = await getVipTitle();
        break;
    }
    return {
      platform: pat,
      title
    };
  }
  function getTbTitle() {
    return new Promise((resolve) => {
      var _a;
      const title = (_a = document.querySelector("h1")) == null ? void 0 : _a.textContent;
      if (title) {
        resolve(title);
      } else {
        const observer = new MutationObserver(() => {
          var _a2;
          const title2 = (_a2 = document.querySelector("h1")) == null ? void 0 : _a2.textContent;
          if (title2) {
            observer.disconnect();
            resolve(title2);
          }
        });
        observer.observe(document.body, {
          childList: true,
          subtree: true
        });
      }
    });
  }
  function getJdTitle() {
    return new Promise((resolve) => {
      var _a;
      const title = (_a = document.querySelector(".sku-name")) == null ? void 0 : _a.textContent;
      if (title) {
        const rt = title.replace(/\s+/g, "");
        resolve(rt);
      } else {
        const observer = new MutationObserver(() => {
          var _a2;
          const title2 = (_a2 = document.querySelector(".sku-name")) == null ? void 0 : _a2.textContent;
          if (title2) {
            observer.disconnect();
            const rt = title2.replace(/\s+/g, "");
            resolve(rt);
          }
        });
        observer.observe(document.body, {
          childList: true,
          subtree: true
        });
      }
    });
  }
  function getVipTitle() {
    const isH5 = isMobile();
    const className = isH5 ? ".name_title_ll" : ".pib-title-detail";
    return new Promise((resolve) => {
      var _a;
      const title = (_a = document.querySelector(className)) == null ? void 0 : _a.textContent;
      if (title && title != "商家店铺") {
        resolve(title.replace("商家店铺", ""));
      } else {
        const observer = new MutationObserver(() => {
          var _a2;
          const title2 = (_a2 = document.querySelector(className)) == null ? void 0 : _a2.textContent;
          if (title2 && title2 != "商家店铺") {
            observer.disconnect();
            resolve(title2.replace("商家店铺", ""));
          }
        });
        observer.observe(document.body, {
          childList: true,
          subtree: true
        });
      }
    });
  }
  function ensurePlatform() {
    const url = window.location.host;
    let p = Platform.None;
    if (url.indexOf(UrlType.Taobao) != -1 || url.indexOf(UrlType.Tmall) != -1 || url.indexOf(UrlType.YYTmall) != -1) {
      platform.updatePlatform(Platform.Taobao);
      p = Platform.Taobao;
    } else if (url.indexOf(UrlType.JD) != -1) {
      platform.updatePlatform(Platform.JD);
      p = Platform.JD;
    } else if (url.indexOf(UrlType.Vip) != -1) {
      platform.updatePlatform(Platform.Vip);
      p = Platform.Vip;
    } else {
      platform.updatePlatform(Platform.None);
    }
    return p;
  }
  function checkCanRedirect(platform2, title) {
    const href = window.location.href;
    switch (platform2) {
      case Platform.Taobao:
        return href.indexOf("mm_117425171_2324550020_111391250310") == -1 && href.indexOf("mm_117425171_21428696_71990812") == -1 && href.indexOf("mm_117425171_33696257_277458675") == -1 && title != "天猫" && title != "淘宝网";
      case Platform.JD:
        return href.indexOf("2015895618") == -1 || href.indexOf("jasonzk.com") > -1;
      case Platform.Vip:
        return href.indexOf("a1bea5af456e316c7745ed3ca2a379e6") == -1 && href.indexOf("f938d6787b301f8cd8d258aa477437a3") == -1 && href.indexOf("41c6df95c56c4de075bf27fffb06af9f") == -1 && (window.location.pathname.indexOf("detail-") > -1 || window.location.hostname.indexOf("m.vip.com") > -1);
      default:
        return false;
    }
  }
  function isMobile() {
    return /Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent);
  }
  function getPlatformName(platform2) {
    switch (platform2) {
      case Platform.Taobao:
        return "淘宝";
      case Platform.JD:
        return "京东";
      case Platform.Vip:
        return "唯品会";
      case Platform.Pdd:
        return "拼多多";
      default:
        return "";
    }
  }
  function checkKeyToOpen(activity, platform2) {
    const { key, list } = activity;
    const keyValue = localStorage.getItem(key);
    if (!keyValue) {
      const item = list.find(
        (item2) => item2.type === ActivityType.IMG && item2.platform === platform2
      );
      if (item) {
        openWindow(item.url);
        localStorage.setItem(key, key);
      }
    }
  }
  const JD_COUPON_KEY = "73haz73_jd_coupon_url";
  function getJDVisitedCoupon() {
    const values = GM_getValue(JD_COUPON_KEY, "[]");
    return JSON.parse(values);
  }
  function setJDVisitedCoupon(url) {
    const values = getJDVisitedCoupon();
    if (values.includes(url)) return;
    if (values.length > 20) {
      values.shift();
    }
    values.push(url);
    GM_setValue(JD_COUPON_KEY, JSON.stringify(values));
  }
  function checkJDUrlInVisitedCoupon(url) {
    const values = getJDVisitedCoupon();
    return values.includes(url);
  }
  function openWindow(shortUrl, url) {
    if (window.GM_openInTab) {
      GM_openInTab(shortUrl, {
        active: true
      });
    }
  }
  function create_fragment$9(ctx) {
    let div;
    let current;
    const default_slot_template = (
      /*#slots*/
      ctx[2].default
    );
    const default_slot = create_slot(
      default_slot_template,
      ctx,
      /*$$scope*/
      ctx[1],
      null
    );
    return {
      c() {
        div = element("div");
        if (default_slot) default_slot.c();
      },
      m(target, anchor) {
        insert(target, div, anchor);
        if (default_slot) {
          default_slot.m(div, null);
        }
        ctx[3](div);
        current = true;
      },
      p(ctx2, [dirty]) {
        if (default_slot) {
          if (default_slot.p && (!current || dirty & /*$$scope*/
          2)) {
            update_slot_base(
              default_slot,
              default_slot_template,
              ctx2,
              /*$$scope*/
              ctx2[1],
              !current ? get_all_dirty_from_scope(
                /*$$scope*/
                ctx2[1]
              ) : get_slot_changes(
                default_slot_template,
                /*$$scope*/
                ctx2[1],
                dirty,
                null
              ),
              null
            );
          }
        }
      },
      i(local) {
        if (current) return;
        transition_in(default_slot, local);
        current = true;
      },
      o(local) {
        transition_out(default_slot, local);
        current = false;
      },
      d(detaching) {
        if (detaching) {
          detach(div);
        }
        if (default_slot) default_slot.d(detaching);
        ctx[3](null);
      }
    };
  }
  function instance$8($$self, $$props, $$invalidate) {
    let { $$slots: slots = {}, $$scope } = $$props;
    let ref;
    function div_binding($$value) {
      binding_callbacks[$$value ? "unshift" : "push"](() => {
        ref = $$value;
        $$invalidate(0, ref);
      });
    }
    $$self.$$set = ($$props2) => {
      if ("$$scope" in $$props2) $$invalidate(1, $$scope = $$props2.$$scope);
    };
    $$self.$$.update = () => {
      if ($$self.$$.dirty & /*ref*/
      1) {
        ref && document.body.appendChild(ref);
      }
    };
    return [ref, $$scope, slots, div_binding];
  }
  class Portal extends SvelteComponent {
    constructor(options) {
      super();
      init(this, options, instance$8, create_fragment$9, safe_not_equal, {});
    }
  }
  function create_if_block$7(ctx) {
    let portal;
    let current;
    portal = new Portal({
      props: {
        $$slots: { default: [create_default_slot$2] },
        $$scope: { ctx }
      }
    });
    return {
      c() {
        create_component(portal.$$.fragment);
      },
      m(target, anchor) {
        mount_component(portal, target, anchor);
        current = true;
      },
      p(ctx2, dirty) {
        const portal_changes = {};
        if (dirty & /*$$scope, title*/
        34) {
          portal_changes.$$scope = { dirty, ctx: ctx2 };
        }
        portal.$set(portal_changes);
      },
      i(local) {
        if (current) return;
        transition_in(portal.$$.fragment, local);
        current = true;
      },
      o(local) {
        transition_out(portal.$$.fragment, local);
        current = false;
      },
      d(detaching) {
        destroy_component(portal, detaching);
      }
    };
  }
  function create_default_slot$2(ctx) {
    let div3;
    let div2;
    let div0;
    let p;
    let t0;
    let t1;
    let button;
    let t3;
    let div1;
    let current;
    let mounted2;
    let dispose;
    const default_slot_template = (
      /*#slots*/
      ctx[3].default
    );
    const default_slot = create_slot(
      default_slot_template,
      ctx,
      /*$$scope*/
      ctx[5],
      null
    );
    return {
      c() {
        div3 = element("div");
        div2 = element("div");
        div0 = element("div");
        p = element("p");
        t0 = text(
          /*title*/
          ctx[1]
        );
        t1 = space();
        button = element("button");
        button.textContent = "×";
        t3 = space();
        div1 = element("div");
        if (default_slot) default_slot.c();
        set_style(p, "margin-top", "-3px");
        attr(button, "class", "cp-hover:text-gray-900 cp-focus:outline-none cp-absolute cp-right-[8px] cp-top-[8px] cp-text-2xl cp-text-gray-600");
        attr(div1, "class", "cp-mt-[28px]");
        attr(div2, "class", "cp-relative cp-flex cp-flex-col cp-items-center cp-justify-center cp-rounded-lg cp-bg-white cp-p-[16px]");
        attr(div3, "class", "cp-fixed cp-inset-0 cp-flex cp-items-center cp-justify-center cp-bg-black cp-bg-opacity-70");
        set_style(div3, "z-index", "99999999");
      },
      m(target, anchor) {
        insert(target, div3, anchor);
        append(div3, div2);
        append(div2, div0);
        append(div0, p);
        append(p, t0);
        append(div0, t1);
        append(div0, button);
        append(div2, t3);
        append(div2, div1);
        if (default_slot) {
          default_slot.m(div1, null);
        }
        current = true;
        if (!mounted2) {
          dispose = [
            listen(
              button,
              "click",
              /*closeModal*/
              ctx[2]
            ),
            listen(div2, "click", stop_propagation(
              /*click_handler*/
              ctx[4]
            )),
            listen(
              div3,
              "click",
              /*closeModal*/
              ctx[2]
            )
          ];
          mounted2 = true;
        }
      },
      p(ctx2, dirty) {
        if (!current || dirty & /*title*/
        2) set_data(
          t0,
          /*title*/
          ctx2[1]
        );
        if (default_slot) {
          if (default_slot.p && (!current || dirty & /*$$scope*/
          32)) {
            update_slot_base(
              default_slot,
              default_slot_template,
              ctx2,
              /*$$scope*/
              ctx2[5],
              !current ? get_all_dirty_from_scope(
                /*$$scope*/
                ctx2[5]
              ) : get_slot_changes(
                default_slot_template,
                /*$$scope*/
                ctx2[5],
                dirty,
                null
              ),
              null
            );
          }
        }
      },
      i(local) {
        if (current) return;
        transition_in(default_slot, local);
        current = true;
      },
      o(local) {
        transition_out(default_slot, local);
        current = false;
      },
      d(detaching) {
        if (detaching) {
          detach(div3);
        }
        if (default_slot) default_slot.d(detaching);
        mounted2 = false;
        run_all(dispose);
      }
    };
  }
  function create_fragment$8(ctx) {
    let if_block_anchor;
    let current;
    let if_block = (
      /*show*/
      ctx[0] && create_if_block$7(ctx)
    );
    return {
      c() {
        if (if_block) if_block.c();
        if_block_anchor = empty();
      },
      m(target, anchor) {
        if (if_block) if_block.m(target, anchor);
        insert(target, if_block_anchor, anchor);
        current = true;
      },
      p(ctx2, [dirty]) {
        if (
          /*show*/
          ctx2[0]
        ) {
          if (if_block) {
            if_block.p(ctx2, dirty);
            if (dirty & /*show*/
            1) {
              transition_in(if_block, 1);
            }
          } else {
            if_block = create_if_block$7(ctx2);
            if_block.c();
            transition_in(if_block, 1);
            if_block.m(if_block_anchor.parentNode, if_block_anchor);
          }
        } else if (if_block) {
          group_outros();
          transition_out(if_block, 1, 1, () => {
            if_block = null;
          });
          check_outros();
        }
      },
      i(local) {
        if (current) return;
        transition_in(if_block);
        current = true;
      },
      o(local) {
        transition_out(if_block);
        current = false;
      },
      d(detaching) {
        if (detaching) {
          detach(if_block_anchor);
        }
        if (if_block) if_block.d(detaching);
      }
    };
  }
  function instance$7($$self, $$props, $$invalidate) {
    let { $$slots: slots = {}, $$scope } = $$props;
    let { show = false } = $$props;
    let { title = "微信扫码购买" } = $$props;
    const dispatch = createEventDispatcher();
    function closeModal() {
      dispatch("close");
    }
    function click_handler(event) {
      bubble.call(this, $$self, event);
    }
    $$self.$$set = ($$props2) => {
      if ("show" in $$props2) $$invalidate(0, show = $$props2.show);
      if ("title" in $$props2) $$invalidate(1, title = $$props2.title);
      if ("$$scope" in $$props2) $$invalidate(5, $$scope = $$props2.$$scope);
    };
    return [show, title, closeModal, slots, click_handler, $$scope];
  }
  class Modal extends SvelteComponent {
    constructor(options) {
      super();
      init(this, options, instance$7, create_fragment$8, safe_not_equal, { show: 0, title: 1 });
    }
  }
  function create_if_block_1$2(ctx) {
    let div;
    let t0;
    let t1;
    return {
      c() {
        div = element("div");
        t0 = text("剩余:");
        t1 = text(
          /*left*/
          ctx[4]
        );
        attr(div, "class", "cp-text-md");
      },
      m(target, anchor) {
        insert(target, div, anchor);
        append(div, t0);
        append(div, t1);
      },
      p(ctx2, dirty) {
        if (dirty & /*left*/
        16) set_data(
          t1,
          /*left*/
          ctx2[4]
        );
      },
      d(detaching) {
        if (detaching) {
          detach(div);
        }
      }
    };
  }
  function create_if_block$6(ctx) {
    let div;
    let t0;
    let t1;
    return {
      c() {
        div = element("div");
        t0 = text("有效期至:");
        t1 = text(
          /*date*/
          ctx[2]
        );
        attr(div, "class", "cp-text-md");
      },
      m(target, anchor) {
        insert(target, div, anchor);
        append(div, t0);
        append(div, t1);
      },
      p(ctx2, dirty) {
        if (dirty & /*date*/
        4) set_data(
          t1,
          /*date*/
          ctx2[2]
        );
      },
      d(detaching) {
        if (detaching) {
          detach(div);
        }
      }
    };
  }
  function create_default_slot$1(ctx) {
    let qrcode;
    let current;
    qrcode = new QrCode({
      props: {
        url: (
          /*url*/
          ctx[3]
        ),
        width: 250,
        height: 250,
        logo: getPlatformLogo(
          /*$platform*/
          ctx[7]
        ),
        logoWidth: getLogoWidth(
          /*$platform*/
          ctx[7],
          2
        )
      }
    });
    return {
      c() {
        create_component(qrcode.$$.fragment);
      },
      m(target, anchor) {
        mount_component(qrcode, target, anchor);
        current = true;
      },
      p(ctx2, dirty) {
        const qrcode_changes = {};
        if (dirty & /*url*/
        8) qrcode_changes.url = /*url*/
        ctx2[3];
        if (dirty & /*$platform*/
        128) qrcode_changes.logo = getPlatformLogo(
          /*$platform*/
          ctx2[7]
        );
        if (dirty & /*$platform*/
        128) qrcode_changes.logoWidth = getLogoWidth(
          /*$platform*/
          ctx2[7],
          2
        );
        qrcode.$set(qrcode_changes);
      },
      i(local) {
        if (current) return;
        transition_in(qrcode.$$.fragment, local);
        current = true;
      },
      o(local) {
        transition_out(qrcode.$$.fragment, local);
        current = false;
      },
      d(detaching) {
        destroy_component(qrcode, detaching);
      }
    };
  }
  function create_fragment$7(ctx) {
    let div8;
    let div4;
    let div0;
    let t0;
    let div1;
    let t1;
    let div2;
    let t2;
    let t3;
    let t4;
    let div3;
    let t5;
    let t6;
    let div6;
    let div5;
    let t7;
    let t8;
    let t9;
    let t10;
    let t11;
    let div7;
    let qrcode;
    let t12;
    let modal;
    let current;
    let mounted2;
    let dispose;
    let if_block0 = (
      /*left*/
      ctx[4] != null && /*left*/
      ctx[4] > 0 && create_if_block_1$2(ctx)
    );
    let if_block1 = (
      /*date*/
      ctx[2] && /*date*/
      ctx[2] != "" && create_if_block$6(ctx)
    );
    qrcode = new QrCode({
      props: {
        url: (
          /*url*/
          ctx[3]
        ),
        logo: getPlatformLogo(
          /*$platform*/
          ctx[7]
        ),
        logoWidth: getLogoWidth(
          /*$platform*/
          ctx[7],
          0.8
        )
      }
    });
    modal = new Modal({
      props: {
        show: (
          /*showModal*/
          ctx[6]
        ),
        title: (
          /*modalTitle*/
          ctx[5]
        ),
        $$slots: { default: [create_default_slot$1] },
        $$scope: { ctx }
      }
    });
    modal.$on(
      "close",
      /*close_handler*/
      ctx[10]
    );
    return {
      c() {
        div8 = element("div");
        div4 = element("div");
        div0 = element("div");
        t0 = space();
        div1 = element("div");
        t1 = space();
        div2 = element("div");
        t2 = text("¥");
        t3 = text(
          /*amount*/
          ctx[0]
        );
        t4 = space();
        div3 = element("div");
        t5 = text(
          /*condition*/
          ctx[1]
        );
        t6 = space();
        div6 = element("div");
        div5 = element("div");
        t7 = text(
          /*amount*/
          ctx[0]
        );
        t8 = text("元优惠券");
        t9 = space();
        if (if_block0) if_block0.c();
        t10 = space();
        if (if_block1) if_block1.c();
        t11 = space();
        div7 = element("div");
        create_component(qrcode.$$.fragment);
        t12 = space();
        create_component(modal.$$.fragment);
        attr(div0, "class", "cp-absolute cp-h-[25px] cp-w-[25px] cp-rounded-full cp-border cp-bg-slate-100");
        set_style(div0, "border-bottom", "transparent");
        set_style(div0, "border-right", "transparent");
        set_style(div0, "transform", "rotate(-135deg)");
        set_style(div0, "right", "-12.5px");
        set_style(div0, "top", "-25px");
        attr(div1, "class", "cp-absolute cp-h-[25px] cp-w-[25px] cp-rounded-full cp-border cp-bg-slate-100");
        set_style(div1, "border-bottom", "transparent");
        set_style(div1, "border-right", "transparent");
        set_style(div1, "transform", "rotate(45deg)");
        set_style(div1, "right", "-12.5px");
        set_style(div1, "bottom", "-25px");
        attr(div2, "class", "cp-text-3xl cp-font-bold cp-text-red-500");
        attr(div3, "class", "cp-text-gray-500");
        attr(div4, "class", "cp-relative cp-w-[120px] cp-flex-none cp-border-r-2 cp-border-dotted cp-pr-4 cp-text-center");
        attr(div5, "class", "cp-text-lg cp-font-semibold");
        attr(div6, "class", "cp-flex cp-flex-grow cp-flex-col cp-gap-[4px] cp-pl-4");
        attr(div7, "class", "zk-flex zk-cursor-pointer zk-flex-col zk-items-center zk-gap-[8px]");
        attr(div7, "title", "官方商品二维码,安全无毒,点击可放大");
        attr(div8, "class", "cp-flex cp-cursor-pointer cp-rounded-lg cp-border cp-border-l-4 cp-border-l-red-600 cp-bg-white cp-p-4");
      },
      m(target, anchor) {
        insert(target, div8, anchor);
        append(div8, div4);
        append(div4, div0);
        append(div4, t0);
        append(div4, div1);
        append(div4, t1);
        append(div4, div2);
        append(div2, t2);
        append(div2, t3);
        append(div4, t4);
        append(div4, div3);
        append(div3, t5);
        append(div8, t6);
        append(div8, div6);
        append(div6, div5);
        append(div5, t7);
        append(div5, t8);
        append(div6, t9);
        if (if_block0) if_block0.m(div6, null);
        append(div6, t10);
        if (if_block1) if_block1.m(div6, null);
        append(div8, t11);
        append(div8, div7);
        mount_component(qrcode, div7, null);
        append(div8, t12);
        mount_component(modal, div8, null);
        current = true;
        if (!mounted2) {
          dispose = [
            listen(
              div7,
              "click",
              /*handleShowQrCode*/
              ctx[9]
            ),
            listen(
              div8,
              "click",
              /*handleClick*/
              ctx[8]
            )
          ];
          mounted2 = true;
        }
      },
      p(ctx2, [dirty]) {
        if (!current || dirty & /*amount*/
        1) set_data(
          t3,
          /*amount*/
          ctx2[0]
        );
        if (!current || dirty & /*condition*/
        2) set_data(
          t5,
          /*condition*/
          ctx2[1]
        );
        if (!current || dirty & /*amount*/
        1) set_data(
          t7,
          /*amount*/
          ctx2[0]
        );
        if (
          /*left*/
          ctx2[4] != null && /*left*/
          ctx2[4] > 0
        ) {
          if (if_block0) {
            if_block0.p(ctx2, dirty);
          } else {
            if_block0 = create_if_block_1$2(ctx2);
            if_block0.c();
            if_block0.m(div6, t10);
          }
        } else if (if_block0) {
          if_block0.d(1);
          if_block0 = null;
        }
        if (
          /*date*/
          ctx2[2] && /*date*/
          ctx2[2] != ""
        ) {
          if (if_block1) {
            if_block1.p(ctx2, dirty);
          } else {
            if_block1 = create_if_block$6(ctx2);
            if_block1.c();
            if_block1.m(div6, null);
          }
        } else if (if_block1) {
          if_block1.d(1);
          if_block1 = null;
        }
        const qrcode_changes = {};
        if (dirty & /*url*/
        8) qrcode_changes.url = /*url*/
        ctx2[3];
        if (dirty & /*$platform*/
        128) qrcode_changes.logo = getPlatformLogo(
          /*$platform*/
          ctx2[7]
        );
        if (dirty & /*$platform*/
        128) qrcode_changes.logoWidth = getLogoWidth(
          /*$platform*/
          ctx2[7],
          0.8
        );
        qrcode.$set(qrcode_changes);
        const modal_changes = {};
        if (dirty & /*showModal*/
        64) modal_changes.show = /*showModal*/
        ctx2[6];
        if (dirty & /*modalTitle*/
        32) modal_changes.title = /*modalTitle*/
        ctx2[5];
        if (dirty & /*$$scope, url, $platform*/
        2184) {
          modal_changes.$$scope = { dirty, ctx: ctx2 };
        }
        modal.$set(modal_changes);
      },
      i(local) {
        if (current) return;
        transition_in(qrcode.$$.fragment, local);
        transition_in(modal.$$.fragment, local);
        current = true;
      },
      o(local) {
        transition_out(qrcode.$$.fragment, local);
        transition_out(modal.$$.fragment, local);
        current = false;
      },
      d(detaching) {
        if (detaching) {
          detach(div8);
        }
        if (if_block0) if_block0.d();
        if (if_block1) if_block1.d();
        destroy_component(qrcode);
        destroy_component(modal);
        mounted2 = false;
        run_all(dispose);
      }
    };
  }
  function instance$6($$self, $$props, $$invalidate) {
    let $platform;
    component_subscribe($$self, platform, ($$value) => $$invalidate(7, $platform = $$value));
    let { amount = 5 } = $$props;
    let { condition = "满100可用" } = $$props;
    let { date = "" } = $$props;
    let { url = "" } = $$props;
    let { left = 0 } = $$props;
    let modalTitle = "";
    let showModal = false;
    const handleClick = () => {
      var _a;
      if (Platform.Vip == $platform) {
        (_a = document.querySelector(".J-getCouponBtn")) == null ? void 0 : _a.click();
        return;
      }
      if (url) {
        openWindow(url);
        window.close();
      }
    };
    function handleShowQrCode(e) {
      e.stopPropagation();
      if ($platform == Platform.Taobao) {
        $$invalidate(5, modalTitle = "天猫/淘宝APP扫码购买");
      } else {
        $$invalidate(5, modalTitle = `微信扫码,${getPlatformName($platform)}购买`);
      }
      $$invalidate(6, showModal = true);
    }
    const close_handler = () => $$invalidate(6, showModal = false);
    $$self.$$set = ($$props2) => {
      if ("amount" in $$props2) $$invalidate(0, amount = $$props2.amount);
      if ("condition" in $$props2) $$invalidate(1, condition = $$props2.condition);
      if ("date" in $$props2) $$invalidate(2, date = $$props2.date);
      if ("url" in $$props2) $$invalidate(3, url = $$props2.url);
      if ("left" in $$props2) $$invalidate(4, left = $$props2.left);
    };
    return [
      amount,
      condition,
      date,
      url,
      left,
      modalTitle,
      showModal,
      $platform,
      handleClick,
      handleShowQrCode,
      close_handler
    ];
  }
  class Coupon extends SvelteComponent {
    constructor(options) {
      super();
      init(this, options, instance$6, create_fragment$7, safe_not_equal, {
        amount: 0,
        condition: 1,
        date: 2,
        url: 3,
        left: 4
      });
    }
  }
  function createCoupon() {
    const { subscribe: subscribe2, set, update: update2 } = writable(null);
    return {
      subscribe: subscribe2,
      updateCoupon: (data) => update2(() => data)
    };
  }
  const coupon = createCoupon();
  const words = [
    "a",
    "b",
    "c",
    "d",
    "e",
    "f",
    "g",
    "h",
    "i",
    "j",
    "k",
    "l",
    "m",
    "n",
    "o",
    "p",
    "q",
    "r",
    "s",
    "t",
    "u",
    "v",
    "w",
    "x",
    "y",
    "z",
    "A",
    "B",
    "C",
    "D",
    "E",
    "F",
    "G",
    "H",
    "I",
    "J",
    "K",
    "L",
    "M",
    "N",
    "O",
    "P",
    "Q",
    "R",
    "S",
    "T",
    "U",
    "V",
    "W",
    "X",
    "Y",
    "Z",
    "-",
    ","
  ];
  function shuffleWords() {
    return words.sort(() => Math.random() - 0.5);
  }
  function getToken() {
    const words2 = shuffleWords();
    const index0 = getIndex(words2, "all", true);
    const index1 = getIndex(words2, "iance", true);
    const random = Math.floor(Math.random() * 2);
    const splits = [getIndex(words2, ","), getIndex(words2, "-")];
    const now = Date.now();
    const split = random == 0 ? "," : "-";
    const data = [
      split,
      index0,
      splits[random] + split,
      index1,
      splits[random] + split,
      now
    ];
    const key = "jason";
    const token = CryptoJS2.AES.encrypt(data.join(""), key).toString();
    const keyMap = getKeyMap(words2, now, split, key);
    return {
      token,
      keyMap
    };
  }
  function getKeyMap(words2, now, split, key) {
    const data = [split, words2, now];
    const keyMap = CryptoJS2.AES.encrypt(JSON.stringify(data), key).toString();
    return keyMap;
  }
  function getIndex(words2, keyword, needSplit = false) {
    const index = [];
    for (let i = 0; i < keyword.length; i++) {
      index.push(words2.indexOf(keyword[i]).toString());
      if (needSplit) {
        index.push("@");
      }
    }
    return index.join("");
  }
  async function get(url, data) {
    const params = new URLSearchParams(data ?? {});
    url = url + "?" + params.toString();
    const { token, keyMap } = getToken();
    const headers = {
      authorization: token,
      authhash: keyMap,
      plgn: PluginName
    };
    if (window.GM_info) {
      headers["plgv"] = GM_info.script.version;
    }
    const res = await fetch(url, {
      headers
    });
    const json = await res.json();
    if (json.code == 1003 && json.updateVersion && json.updateVersion.force) {
      openWindow(json.updateVersion.addr);
    }
    return json;
  }
  const baseUrl = "https://api2.jasonzk.com";
  const getPromoUrl = `${baseUrl}/compare/urlv4`;
  const getCouponUrl = `${baseUrl}/coupon/couponV2`;
  const getElevenActivity = `${baseUrl}/activity/eleven`;
  function get_each_context$3(ctx, list, i) {
    const child_ctx = ctx.slice();
    child_ctx[2] = list[i];
    return child_ctx;
  }
  function create_if_block$5(ctx) {
    let div2;
    let img;
    let img_src_value;
    let img_alt_value;
    let t0;
    let div1;
    let div0;
    let h2;
    let t1_value = (
      /*activity*/
      ctx[0].title + ""
    );
    let t1;
    let span;
    let t3;
    let t4;
    let qrcode;
    let current;
    let mounted2;
    let dispose;
    let each_value = ensure_array_like(
      /*activity*/
      ctx[0].desc
    );
    let each_blocks = [];
    for (let i = 0; i < each_value.length; i += 1) {
      each_blocks[i] = create_each_block$3(get_each_context$3(ctx, each_value, i));
    }
    qrcode = new QrCode({
      props: {
        url: (
          /*activity*/
          ctx[0].short_url
        ),
        width: 100,
        height: 100,
        logo: getPlatformLogo(
          /*activity*/
          ctx[0].platform
        ),
        logoWidth: getLogoWidth(
          /*activity*/
          ctx[0].platform
        )
      }
    });
    return {
      c() {
        div2 = element("div");
        img = element("img");
        t0 = space();
        div1 = element("div");
        div0 = element("div");
        h2 = element("h2");
        t1 = text(t1_value);
        span = element("span");
        span.textContent = "点击前往~";
        t3 = space();
        for (let i = 0; i < each_blocks.length; i += 1) {
          each_blocks[i].c();
        }
        t4 = space();
        create_component(qrcode.$$.fragment);
        if (!src_url_equal(img.src, img_src_value = /*activity*/
        ctx[0].img)) attr(img, "src", img_src_value);
        attr(img, "alt", img_alt_value = /*activity*/
        ctx[0].title);
        set_style(img, "width", "480px");
        set_style(span, "font-size", "14px");
        set_style(span, "color", "blue");
        set_style(span, "margin-left", "6px");
        attr(h2, "class", "cp-cursor-pointer hover:cp-underline");
        set_style(h2, "font-size", "24px");
        set_style(h2, "line-height", "32px");
        set_style(div1, "margin-top", "8px");
        set_style(div1, "display", "flex");
        set_style(div1, "align-activitys", "center");
        set_style(div1, "justify-content", "space-between");
        set_style(div1, "gap", "8px");
        set_style(div2, "border", "1px solid #eee");
        set_style(div2, "margin-bottom", "30px");
        set_style(div2, "cursor", "pointer");
        set_style(div2, "border-radius", "6px");
        set_style(div2, "padding", "20px");
        set_style(div2, "margin-top", "30px");
        attr(div2, "title", "点击前往~");
      },
      m(target, anchor) {
        insert(target, div2, anchor);
        append(div2, img);
        append(div2, t0);
        append(div2, div1);
        append(div1, div0);
        append(div0, h2);
        append(h2, t1);
        append(h2, span);
        append(div0, t3);
        for (let i = 0; i < each_blocks.length; i += 1) {
          if (each_blocks[i]) {
            each_blocks[i].m(div0, null);
          }
        }
        append(div1, t4);
        mount_component(qrcode, div1, null);
        current = true;
        if (!mounted2) {
          dispose = listen(
            div2,
            "click",
            /*handleactivityClick*/
            ctx[1]
          );
          mounted2 = true;
        }
      },
      p(ctx2, dirty) {
        if (!current || dirty & /*activity*/
        1 && !src_url_equal(img.src, img_src_value = /*activity*/
        ctx2[0].img)) {
          attr(img, "src", img_src_value);
        }
        if (!current || dirty & /*activity*/
        1 && img_alt_value !== (img_alt_value = /*activity*/
        ctx2[0].title)) {
          attr(img, "alt", img_alt_value);
        }
        if ((!current || dirty & /*activity*/
        1) && t1_value !== (t1_value = /*activity*/
        ctx2[0].title + "")) set_data(t1, t1_value);
        if (dirty & /*activity*/
        1) {
          each_value = ensure_array_like(
            /*activity*/
            ctx2[0].desc
          );
          let i;
          for (i = 0; i < each_value.length; i += 1) {
            const child_ctx = get_each_context$3(ctx2, each_value, i);
            if (each_blocks[i]) {
              each_blocks[i].p(child_ctx, dirty);
            } else {
              each_blocks[i] = create_each_block$3(child_ctx);
              each_blocks[i].c();
              each_blocks[i].m(div0, null);
            }
          }
          for (; i < each_blocks.length; i += 1) {
            each_blocks[i].d(1);
          }
          each_blocks.length = each_value.length;
        }
        const qrcode_changes = {};
        if (dirty & /*activity*/
        1) qrcode_changes.url = /*activity*/
        ctx2[0].short_url;
        if (dirty & /*activity*/
        1) qrcode_changes.logo = getPlatformLogo(
          /*activity*/
          ctx2[0].platform
        );
        if (dirty & /*activity*/
        1) qrcode_changes.logoWidth = getLogoWidth(
          /*activity*/
          ctx2[0].platform
        );
        qrcode.$set(qrcode_changes);
      },
      i(local) {
        if (current) return;
        transition_in(qrcode.$$.fragment, local);
        current = true;
      },
      o(local) {
        transition_out(qrcode.$$.fragment, local);
        current = false;
      },
      d(detaching) {
        if (detaching) {
          detach(div2);
        }
        destroy_each(each_blocks, detaching);
        destroy_component(qrcode);
        mounted2 = false;
        dispose();
      }
    };
  }
  function create_each_block$3(ctx) {
    let p;
    let html_tag;
    let raw_value = (
      /*desc*/
      ctx[2] + ""
    );
    let t;
    return {
      c() {
        p = element("p");
        html_tag = new HtmlTag(false);
        t = space();
        html_tag.a = t;
        set_style(p, "max-width", "360px");
        set_style(p, "margin-top", "12px");
        set_style(p, "font-size", "12px");
        set_style(p, "line-height", "18px");
      },
      m(target, anchor) {
        insert(target, p, anchor);
        html_tag.m(raw_value, p);
        append(p, t);
      },
      p(ctx2, dirty) {
        if (dirty & /*activity*/
        1 && raw_value !== (raw_value = /*desc*/
        ctx2[2] + "")) html_tag.p(raw_value);
      },
      d(detaching) {
        if (detaching) {
          detach(p);
        }
      }
    };
  }
  function create_fragment$6(ctx) {
    let if_block_anchor;
    let current;
    let if_block = (
      /*activity*/
      ctx[0] != null && create_if_block$5(ctx)
    );
    return {
      c() {
        if (if_block) if_block.c();
        if_block_anchor = empty();
      },
      m(target, anchor) {
        if (if_block) if_block.m(target, anchor);
        insert(target, if_block_anchor, anchor);
        current = true;
      },
      p(ctx2, [dirty]) {
        if (
          /*activity*/
          ctx2[0] != null
        ) {
          if (if_block) {
            if_block.p(ctx2, dirty);
            if (dirty & /*activity*/
            1) {
              transition_in(if_block, 1);
            }
          } else {
            if_block = create_if_block$5(ctx2);
            if_block.c();
            transition_in(if_block, 1);
            if_block.m(if_block_anchor.parentNode, if_block_anchor);
          }
        } else if (if_block) {
          group_outros();
          transition_out(if_block, 1, 1, () => {
            if_block = null;
          });
          check_outros();
        }
      },
      i(local) {
        if (current) return;
        transition_in(if_block);
        current = true;
      },
      o(local) {
        transition_out(if_block);
        current = false;
      },
      d(detaching) {
        if (detaching) {
          detach(if_block_anchor);
        }
        if (if_block) if_block.d(detaching);
      }
    };
  }
  function instance$5($$self, $$props, $$invalidate) {
    let { activity = null } = $$props;
    function handleactivityClick() {
      if (activity == null) {
        return;
      }
      openWindow(activity.url);
    }
    $$self.$$set = ($$props2) => {
      if ("activity" in $$props2) $$invalidate(0, activity = $$props2.activity);
    };
    return [activity, handleactivityClick];
  }
  class ImgActivity extends SvelteComponent {
    constructor(options) {
      super();
      init(this, options, instance$5, create_fragment$6, safe_not_equal, { activity: 0 });
    }
  }
  function get_each_context$2(ctx, list, i) {
    const child_ctx = ctx.slice();
    child_ctx[1] = list[i];
    return child_ctx;
  }
  function get_each_context_1(ctx, list, i) {
    const child_ctx = ctx.slice();
    child_ctx[4] = list[i];
    return child_ctx;
  }
  function create_if_block$4(ctx) {
    var _a;
    let div1;
    let h3;
    let t0_value = (
      /*activity*/
      ((_a = ctx[0]) == null ? void 0 : _a.title) + ""
    );
    let t0;
    let t1;
    let p;
    let t3;
    let div0;
    let each_value = ensure_array_like(
      /*activity*/
      ctx[0].list
    );
    let each_blocks = [];
    for (let i = 0; i < each_value.length; i += 1) {
      each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i));
    }
    return {
      c() {
        div1 = element("div");
        h3 = element("h3");
        t0 = text(t0_value);
        t1 = space();
        p = element("p");
        p.textContent = "使用说明:点击复制,复制口令后打开对应平台app搜索即可领取,例如:购物红包384";
        t3 = space();
        div0 = element("div");
        for (let i = 0; i < each_blocks.length; i += 1) {
          each_blocks[i].c();
        }
        attr(h3, "class", "cp-mb-[12px] cp-text-center");
        attr(p, "class", "cp-mb-[20px] cp-text-center cp-text-[12px] cp-text-[#888]");
        attr(div0, "class", "cp-flex cp-flex-wrap cp-justify-center cp-gap-[20px]");
        set_style(div0, "max-width", "520px");
        attr(div1, "class", "cp-mb-[20px]");
      },
      m(target, anchor) {
        insert(target, div1, anchor);
        append(div1, h3);
        append(h3, t0);
        append(div1, t1);
        append(div1, p);
        append(div1, t3);
        append(div1, div0);
        for (let i = 0; i < each_blocks.length; i += 1) {
          if (each_blocks[i]) {
            each_blocks[i].m(div0, null);
          }
        }
      },
      p(ctx2, dirty) {
        var _a2;
        if (dirty & /*activity*/
        1 && t0_value !== (t0_value = /*activity*/
        ((_a2 = ctx2[0]) == null ? void 0 : _a2.title) + "")) set_data(t0, t0_value);
        if (dirty & /*activity, handleCopy*/
        1) {
          each_value = ensure_array_like(
            /*activity*/
            ctx2[0].list
          );
          let i;
          for (i = 0; i < each_value.length; i += 1) {
            const child_ctx = get_each_context$2(ctx2, each_value, i);
            if (each_blocks[i]) {
              each_blocks[i].p(child_ctx, dirty);
            } else {
              each_blocks[i] = create_each_block$2(child_ctx);
              each_blocks[i].c();
              each_blocks[i].m(div0, null);
            }
          }
          for (; i < each_blocks.length; i += 1) {
            each_blocks[i].d(1);
          }
          each_blocks.length = each_value.length;
        }
      },
      d(detaching) {
        if (detaching) {
          detach(div1);
        }
        destroy_each(each_blocks, detaching);
      }
    };
  }
  function create_each_block_1(ctx) {
    var _a;
    let div;
    let span0;
    let t0_value = (
      /*password*/
      ctx[4] + ""
    );
    let t0;
    let t1;
    let span1;
    let t2;
    let t3_value = getPlatformName(
      /*list*/
      (_a = ctx[1]) == null ? void 0 : _a.platform
    ) + "";
    let t3;
    let t4;
    let t5;
    let span2;
    let t7;
    let mounted2;
    let dispose;
    return {
      c() {
        div = element("div");
        span0 = element("span");
        t0 = text(t0_value);
        t1 = space();
        span1 = element("span");
        t2 = text("(");
        t3 = text(t3_value);
        t4 = text(")");
        t5 = space();
        span2 = element("span");
        span2.textContent = "复制";
        t7 = space();
        attr(span2, "class", "cp-ml-[-3px] cp-cursor-pointer cp-text-blue-500 hover:cp-underline");
        attr(div, "class", "cp-cursor-pointer hover:cp-underline");
      },
      m(target, anchor) {
        insert(target, div, anchor);
        append(div, span0);
        append(span0, t0);
        append(div, t1);
        append(div, span1);
        append(span1, t2);
        append(span1, t3);
        append(span1, t4);
        append(div, t5);
        append(div, span2);
        append(div, t7);
        if (!mounted2) {
          dispose = listen(span2, "click", function() {
            if (is_function(handleCopy$1(
              /*password*/
              ctx[4]
            ))) handleCopy$1(
              /*password*/
              ctx[4]
            ).apply(this, arguments);
          });
          mounted2 = true;
        }
      },
      p(new_ctx, dirty) {
        var _a2;
        ctx = new_ctx;
        if (dirty & /*activity*/
        1 && t0_value !== (t0_value = /*password*/
        ctx[4] + "")) set_data(t0, t0_value);
        if (dirty & /*activity*/
        1 && t3_value !== (t3_value = getPlatformName(
          /*list*/
          (_a2 = ctx[1]) == null ? void 0 : _a2.platform
        ) + "")) set_data(t3, t3_value);
      },
      d(detaching) {
        if (detaching) {
          detach(div);
        }
        mounted2 = false;
        dispose();
      }
    };
  }
  function create_each_block$2(ctx) {
    let each_1_anchor;
    let each_value_1 = ensure_array_like(
      /*list*/
      ctx[1].passwords
    );
    let each_blocks = [];
    for (let i = 0; i < each_value_1.length; i += 1) {
      each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i));
    }
    return {
      c() {
        for (let i = 0; i < each_blocks.length; i += 1) {
          each_blocks[i].c();
        }
        each_1_anchor = empty();
      },
      m(target, anchor) {
        for (let i = 0; i < each_blocks.length; i += 1) {
          if (each_blocks[i]) {
            each_blocks[i].m(target, anchor);
          }
        }
        insert(target, each_1_anchor, anchor);
      },
      p(ctx2, dirty) {
        if (dirty & /*handleCopy, activity*/
        1) {
          each_value_1 = ensure_array_like(
            /*list*/
            ctx2[1].passwords
          );
          let i;
          for (i = 0; i < each_value_1.length; i += 1) {
            const child_ctx = get_each_context_1(ctx2, each_value_1, i);
            if (each_blocks[i]) {
              each_blocks[i].p(child_ctx, dirty);
            } else {
              each_blocks[i] = create_each_block_1(child_ctx);
              each_blocks[i].c();
              each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
            }
          }
          for (; i < each_blocks.length; i += 1) {
            each_blocks[i].d(1);
          }
          each_blocks.length = each_value_1.length;
        }
      },
      d(detaching) {
        if (detaching) {
          detach(each_1_anchor);
        }
        destroy_each(each_blocks, detaching);
      }
    };
  }
  function create_fragment$5(ctx) {
    let if_block_anchor;
    let if_block = (
      /*activity*/
      ctx[0] != null && create_if_block$4(ctx)
    );
    return {
      c() {
        if (if_block) if_block.c();
        if_block_anchor = empty();
      },
      m(target, anchor) {
        if (if_block) if_block.m(target, anchor);
        insert(target, if_block_anchor, anchor);
      },
      p(ctx2, [dirty]) {
        if (
          /*activity*/
          ctx2[0] != null
        ) {
          if (if_block) {
            if_block.p(ctx2, dirty);
          } else {
            if_block = create_if_block$4(ctx2);
            if_block.c();
            if_block.m(if_block_anchor.parentNode, if_block_anchor);
          }
        } else if (if_block) {
          if_block.d(1);
          if_block = null;
        }
      },
      i: noop,
      o: noop,
      d(detaching) {
        if (detaching) {
          detach(if_block_anchor);
        }
        if (if_block) if_block.d(detaching);
      }
    };
  }
  function handleCopy$1(text2) {
    return () => {
      if (window.GM_setClipboard) {
        GM_setClipboard(text2, "text", () => {
          window.alert("复制成功,温馨提示:粘贴到微信,手机打开领取更方便哦~");
        });
      } else {
        navigator.clipboard.writeText(text2).then(() => {
          window.alert("复制成功,温馨提示:粘贴到微信,手机打开领取更方便哦~");
        }).catch((error) => {
          console.error("Failed to copy text:", error);
        });
      }
    };
  }
  function instance$4($$self, $$props, $$invalidate) {
    let { activity = null } = $$props;
    $$self.$$set = ($$props2) => {
      if ("activity" in $$props2) $$invalidate(0, activity = $$props2.activity);
    };
    return [activity];
  }
  class TextActivity extends SvelteComponent {
    constructor(options) {
      super();
      init(this, options, instance$4, create_fragment$5, safe_not_equal, { activity: 0 });
    }
  }
  function get_each_context$1(ctx, list, i) {
    const child_ctx = ctx.slice();
    child_ctx[2] = list[i];
    return child_ctx;
  }
  function create_if_block$3(ctx) {
    var _a, _b;
    let div1;
    let h3;
    let t0_value = (
      /*activity*/
      ((_a = ctx[0]) == null ? void 0 : _a.title) + ""
    );
    let t0;
    let t1;
    let div0;
    let each_value = ensure_array_like(
      /*activity*/
      (_b = ctx[0]) == null ? void 0 : _b.coupons
    );
    let each_blocks = [];
    for (let i = 0; i < each_value.length; i += 1) {
      each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i));
    }
    return {
      c() {
        div1 = element("div");
        h3 = element("h3");
        t0 = text(t0_value);
        t1 = space();
        div0 = element("div");
        for (let i = 0; i < each_blocks.length; i += 1) {
          each_blocks[i].c();
        }
        attr(h3, "class", "cp-mb-[12px] cp-text-center");
        attr(div1, "style", "cp-mb-[20px]");
      },
      m(target, anchor) {
        insert(target, div1, anchor);
        append(div1, h3);
        append(h3, t0);
        append(div1, t1);
        append(div1, div0);
        for (let i = 0; i < each_blocks.length; i += 1) {
          if (each_blocks[i]) {
            each_blocks[i].m(div0, null);
          }
        }
      },
      p(ctx2, dirty) {
        var _a2, _b2;
        if (dirty & /*activity*/
        1 && t0_value !== (t0_value = /*activity*/
        ((_a2 = ctx2[0]) == null ? void 0 : _a2.title) + "")) set_data(t0, t0_value);
        if (dirty & /*handleCopy, activity, handleGo*/
        3) {
          each_value = ensure_array_like(
            /*activity*/
            (_b2 = ctx2[0]) == null ? void 0 : _b2.coupons
          );
          let i;
          for (i = 0; i < each_value.length; i += 1) {
            const child_ctx = get_each_context$1(ctx2, each_value, i);
            if (each_blocks[i]) {
              each_blocks[i].p(child_ctx, dirty);
            } else {
              each_blocks[i] = create_each_block$1(child_ctx);
              each_blocks[i].c();
              each_blocks[i].m(div0, null);
            }
          }
          for (; i < each_blocks.length; i += 1) {
            each_blocks[i].d(1);
          }
          each_blocks.length = each_value.length;
        }
      },
      d(detaching) {
        if (detaching) {
          detach(div1);
        }
        destroy_each(each_blocks, detaching);
      }
    };
  }
  function create_each_block$1(ctx) {
    let p;
    let span0;
    let t0_value = (
      /*item*/
      ctx[2].title + ""
    );
    let t0;
    let t1;
    let t2;
    let span1;
    let t3_value = (
      /*item*/
      ctx[2].url + ""
    );
    let t3;
    let t4;
    let span2;
    let t6;
    let mounted2;
    let dispose;
    return {
      c() {
        p = element("p");
        span0 = element("span");
        t0 = text(t0_value);
        t1 = text(":");
        t2 = space();
        span1 = element("span");
        t3 = text(t3_value);
        t4 = space();
        span2 = element("span");
        span2.textContent = "(复制)";
        t6 = space();
        attr(span1, "class", "cp-cursor-pointer cp-text-blue-500 hover:cp-underline");
        attr(span2, "class", "cp-ml-[-3px] cp-cursor-pointer hover:cp-underline");
        attr(p, "class", "cp-mb-[8px] cp-text-center");
      },
      m(target, anchor) {
        insert(target, p, anchor);
        append(p, span0);
        append(span0, t0);
        append(span0, t1);
        append(p, t2);
        append(p, span1);
        append(span1, t3);
        append(p, t4);
        append(p, span2);
        append(p, t6);
        if (!mounted2) {
          dispose = [
            listen(span1, "click", function() {
              if (is_function(
                /*handleGo*/
                ctx[1](
                  /*item*/
                  ctx[2].url
                )
              )) ctx[1](
                /*item*/
                ctx[2].url
              ).apply(this, arguments);
            }),
            listen(span2, "click", function() {
              if (is_function(handleCopy(
                /*item*/
                ctx[2].url
              ))) handleCopy(
                /*item*/
                ctx[2].url
              ).apply(this, arguments);
            })
          ];
          mounted2 = true;
        }
      },
      p(new_ctx, dirty) {
        ctx = new_ctx;
        if (dirty & /*activity*/
        1 && t0_value !== (t0_value = /*item*/
        ctx[2].title + "")) set_data(t0, t0_value);
        if (dirty & /*activity*/
        1 && t3_value !== (t3_value = /*item*/
        ctx[2].url + "")) set_data(t3, t3_value);
      },
      d(detaching) {
        if (detaching) {
          detach(p);
        }
        mounted2 = false;
        run_all(dispose);
      }
    };
  }
  function create_fragment$4(ctx) {
    let if_block_anchor;
    let if_block = (
      /*activity*/
      ctx[0] != null && create_if_block$3(ctx)
    );
    return {
      c() {
        if (if_block) if_block.c();
        if_block_anchor = empty();
      },
      m(target, anchor) {
        if (if_block) if_block.m(target, anchor);
        insert(target, if_block_anchor, anchor);
      },
      p(ctx2, [dirty]) {
        if (
          /*activity*/
          ctx2[0] != null
        ) {
          if (if_block) {
            if_block.p(ctx2, dirty);
          } else {
            if_block = create_if_block$3(ctx2);
            if_block.c();
            if_block.m(if_block_anchor.parentNode, if_block_anchor);
          }
        } else if (if_block) {
          if_block.d(1);
          if_block = null;
        }
      },
      i: noop,
      o: noop,
      d(detaching) {
        if (detaching) {
          detach(if_block_anchor);
        }
        if (if_block) if_block.d(detaching);
      }
    };
  }
  function handleCopy(text2) {
    return () => {
      if (window.GM_setClipboard) {
        GM_setClipboard(text2, "text", () => {
          window.alert("复制成功,温馨提示:粘贴到微信,手机打开领取更方便哦~");
        });
      } else {
        navigator.clipboard.writeText(text2).then(() => {
          window.alert("复制成功,温馨提示:粘贴到微信,手机打开领取更方便哦~");
        }).catch((error) => {
          console.error("Failed to copy text:", error);
        });
      }
    };
  }
  function instance$3($$self, $$props, $$invalidate) {
    let { activity = null } = $$props;
    function handleGo(url) {
      return () => {
        openWindow(url);
      };
    }
    $$self.$$set = ($$props2) => {
      if ("activity" in $$props2) $$invalidate(0, activity = $$props2.activity);
    };
    return [activity, handleGo];
  }
  class CouponActivity extends SvelteComponent {
    constructor(options) {
      super();
      init(this, options, instance$3, create_fragment$4, safe_not_equal, { activity: 0 });
    }
  }
  function get_each_context(ctx, list, i) {
    const child_ctx = ctx.slice();
    child_ctx[10] = list[i];
    return child_ctx;
  }
  function create_if_block$2(ctx) {
    var _a;
    let div;
    let span;
    let t0_value = (
      /*activity*/
      ((_a = ctx[1]) == null ? void 0 : _a.title) + ""
    );
    let t0;
    let t1_value = (
      /*activity*/
      ctx[1].hot ? "🔥" : ""
    );
    let t1;
    let span_class_value;
    let t2;
    let modal;
    let current;
    let mounted2;
    let dispose;
    modal = new Modal({
      props: {
        show: (
          /*showModal*/
          ctx[0]
        ),
        title: (
          /*title*/
          ctx[3]
        ),
        $$slots: { default: [create_default_slot] },
        $$scope: { ctx }
      }
    });
    modal.$on(
      "close",
      /*close_handler*/
      ctx[6]
    );
    return {
      c() {
        div = element("div");
        span = element("span");
        t0 = text(t0_value);
        t1 = text(t1_value);
        t2 = space();
        create_component(modal.$$.fragment);
        attr(span, "class", span_class_value = "cp-cursor-pointer cp-text-red-500 cp-underline " + /*isShaking*/
        (ctx[4] ? "ck-shake-74nhahe" : ""));
      },
      m(target, anchor) {
        insert(target, div, anchor);
        append(div, span);
        append(span, t0);
        append(span, t1);
        append(div, t2);
        mount_component(modal, div, null);
        current = true;
        if (!mounted2) {
          dispose = listen(
            span,
            "click",
            /*handleOpenModal*/
            ctx[5]
          );
          mounted2 = true;
        }
      },
      p(ctx2, dirty) {
        var _a2;
        if ((!current || dirty & /*activity*/
        2) && t0_value !== (t0_value = /*activity*/
        ((_a2 = ctx2[1]) == null ? void 0 : _a2.title) + "")) set_data(t0, t0_value);
        if ((!current || dirty & /*activity*/
        2) && t1_value !== (t1_value = /*activity*/
        ctx2[1].hot ? "🔥" : "")) set_data(t1, t1_value);
        if (!current || dirty & /*isShaking*/
        16 && span_class_value !== (span_class_value = "cp-cursor-pointer cp-text-red-500 cp-underline " + /*isShaking*/
        (ctx2[4] ? "ck-shake-74nhahe" : ""))) {
          attr(span, "class", span_class_value);
        }
        const modal_changes = {};
        if (dirty & /*showModal*/
        1) modal_changes.show = /*showModal*/
        ctx2[0];
        if (dirty & /*title*/
        8) modal_changes.title = /*title*/
        ctx2[3];
        if (dirty & /*$$scope, list*/
        8196) {
          modal_changes.$$scope = { dirty, ctx: ctx2 };
        }
        modal.$set(modal_changes);
      },
      i(local) {
        if (current) return;
        transition_in(modal.$$.fragment, local);
        current = true;
      },
      o(local) {
        transition_out(modal.$$.fragment, local);
        current = false;
      },
      d(detaching) {
        if (detaching) {
          detach(div);
        }
        destroy_component(modal);
        mounted2 = false;
        dispose();
      }
    };
  }
  function create_if_block_3(ctx) {
    let couponactivity;
    let current;
    couponactivity = new CouponActivity({ props: { activity: (
      /*item*/
      ctx[10]
    ) } });
    return {
      c() {
        create_component(couponactivity.$$.fragment);
      },
      m(target, anchor) {
        mount_component(couponactivity, target, anchor);
        current = true;
      },
      p(ctx2, dirty) {
        const couponactivity_changes = {};
        if (dirty & /*list*/
        4) couponactivity_changes.activity = /*item*/
        ctx2[10];
        couponactivity.$set(couponactivity_changes);
      },
      i(local) {
        if (current) return;
        transition_in(couponactivity.$$.fragment, local);
        current = true;
      },
      o(local) {
        transition_out(couponactivity.$$.fragment, local);
        current = false;
      },
      d(detaching) {
        destroy_component(couponactivity, detaching);
      }
    };
  }
  function create_if_block_2(ctx) {
    let textactivity;
    let current;
    textactivity = new TextActivity({ props: { activity: (
      /*item*/
      ctx[10]
    ) } });
    return {
      c() {
        create_component(textactivity.$$.fragment);
      },
      m(target, anchor) {
        mount_component(textactivity, target, anchor);
        current = true;
      },
      p(ctx2, dirty) {
        const textactivity_changes = {};
        if (dirty & /*list*/
        4) textactivity_changes.activity = /*item*/
        ctx2[10];
        textactivity.$set(textactivity_changes);
      },
      i(local) {
        if (current) return;
        transition_in(textactivity.$$.fragment, local);
        current = true;
      },
      o(local) {
        transition_out(textactivity.$$.fragment, local);
        current = false;
      },
      d(detaching) {
        destroy_component(textactivity, detaching);
      }
    };
  }
  function create_if_block_1$1(ctx) {
    let imgactivity;
    let current;
    imgactivity = new ImgActivity({ props: { activity: (
      /*item*/
      ctx[10]
    ) } });
    return {
      c() {
        create_component(imgactivity.$$.fragment);
      },
      m(target, anchor) {
        mount_component(imgactivity, target, anchor);
        current = true;
      },
      p(ctx2, dirty) {
        const imgactivity_changes = {};
        if (dirty & /*list*/
        4) imgactivity_changes.activity = /*item*/
        ctx2[10];
        imgactivity.$set(imgactivity_changes);
      },
      i(local) {
        if (current) return;
        transition_in(imgactivity.$$.fragment, local);
        current = true;
      },
      o(local) {
        transition_out(imgactivity.$$.fragment, local);
        current = false;
      },
      d(detaching) {
        destroy_component(imgactivity, detaching);
      }
    };
  }
  function create_each_block(ctx) {
    let current_block_type_index;
    let if_block;
    let if_block_anchor;
    let current;
    const if_block_creators = [create_if_block_1$1, create_if_block_2, create_if_block_3];
    const if_blocks = [];
    function select_block_type(ctx2, dirty) {
      if (
        /*item*/
        ctx2[10].type == ActivityType.IMG
      ) return 0;
      if (
        /*item*/
        ctx2[10].type == ActivityType.TEXT
      ) return 1;
      if (
        /*item*/
        ctx2[10].type == ActivityType.COUPON
      ) return 2;
      return -1;
    }
    if (~(current_block_type_index = select_block_type(ctx))) {
      if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
    }
    return {
      c() {
        if (if_block) if_block.c();
        if_block_anchor = empty();
      },
      m(target, anchor) {
        if (~current_block_type_index) {
          if_blocks[current_block_type_index].m(target, anchor);
        }
        insert(target, if_block_anchor, anchor);
        current = true;
      },
      p(ctx2, dirty) {
        let previous_block_index = current_block_type_index;
        current_block_type_index = select_block_type(ctx2);
        if (current_block_type_index === previous_block_index) {
          if (~current_block_type_index) {
            if_blocks[current_block_type_index].p(ctx2, dirty);
          }
        } else {
          if (if_block) {
            group_outros();
            transition_out(if_blocks[previous_block_index], 1, 1, () => {
              if_blocks[previous_block_index] = null;
            });
            check_outros();
          }
          if (~current_block_type_index) {
            if_block = if_blocks[current_block_type_index];
            if (!if_block) {
              if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx2);
              if_block.c();
            } else {
              if_block.p(ctx2, dirty);
            }
            transition_in(if_block, 1);
            if_block.m(if_block_anchor.parentNode, if_block_anchor);
          } else {
            if_block = null;
          }
        }
      },
      i(local) {
        if (current) return;
        transition_in(if_block);
        current = true;
      },
      o(local) {
        transition_out(if_block);
        current = false;
      },
      d(detaching) {
        if (detaching) {
          detach(if_block_anchor);
        }
        if (~current_block_type_index) {
          if_blocks[current_block_type_index].d(detaching);
        }
      }
    };
  }
  function create_default_slot(ctx) {
    let div;
    let current;
    let each_value = ensure_array_like(
      /*list*/
      ctx[2]
    );
    let each_blocks = [];
    for (let i = 0; i < each_value.length; i += 1) {
      each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
    }
    const out = (i) => transition_out(each_blocks[i], 1, 1, () => {
      each_blocks[i] = null;
    });
    return {
      c() {
        div = element("div");
        for (let i = 0; i < each_blocks.length; i += 1) {
          each_blocks[i].c();
        }
        set_style(div, "max-height", "500px");
        set_style(div, "padding-right", "20px");
        set_style(div, "overflow", "auto");
      },
      m(target, anchor) {
        insert(target, div, anchor);
        for (let i = 0; i < each_blocks.length; i += 1) {
          if (each_blocks[i]) {
            each_blocks[i].m(div, null);
          }
        }
        current = true;
      },
      p(ctx2, dirty) {
        if (dirty & /*list*/
        4) {
          each_value = ensure_array_like(
            /*list*/
            ctx2[2]
          );
          let i;
          for (i = 0; i < each_value.length; i += 1) {
            const child_ctx = get_each_context(ctx2, each_value, i);
            if (each_blocks[i]) {
              each_blocks[i].p(child_ctx, dirty);
              transition_in(each_blocks[i], 1);
            } else {
              each_blocks[i] = create_each_block(child_ctx);
              each_blocks[i].c();
              transition_in(each_blocks[i], 1);
              each_blocks[i].m(div, null);
            }
          }
          group_outros();
          for (i = each_value.length; i < each_blocks.length; i += 1) {
            out(i);
          }
          check_outros();
        }
      },
      i(local) {
        if (current) return;
        for (let i = 0; i < each_value.length; i += 1) {
          transition_in(each_blocks[i]);
        }
        current = true;
      },
      o(local) {
        each_blocks = each_blocks.filter(Boolean);
        for (let i = 0; i < each_blocks.length; i += 1) {
          transition_out(each_blocks[i]);
        }
        current = false;
      },
      d(detaching) {
        if (detaching) {
          detach(div);
        }
        destroy_each(each_blocks, detaching);
      }
    };
  }
  function create_fragment$3(ctx) {
    let if_block_anchor;
    let current;
    let if_block = (
      /*activity*/
      ctx[1] != null && /*activity*/
      ctx[1].show && create_if_block$2(ctx)
    );
    return {
      c() {
        if (if_block) if_block.c();
        if_block_anchor = empty();
      },
      m(target, anchor) {
        if (if_block) if_block.m(target, anchor);
        insert(target, if_block_anchor, anchor);
        current = true;
      },
      p(ctx2, [dirty]) {
        if (
          /*activity*/
          ctx2[1] != null && /*activity*/
          ctx2[1].show
        ) {
          if (if_block) {
            if_block.p(ctx2, dirty);
            if (dirty & /*activity*/
            2) {
              transition_in(if_block, 1);
            }
          } else {
            if_block = create_if_block$2(ctx2);
            if_block.c();
            transition_in(if_block, 1);
            if_block.m(if_block_anchor.parentNode, if_block_anchor);
          }
        } else if (if_block) {
          group_outros();
          transition_out(if_block, 1, 1, () => {
            if_block = null;
          });
          check_outros();
        }
      },
      i(local) {
        if (current) return;
        transition_in(if_block);
        current = true;
      },
      o(local) {
        transition_out(if_block);
        current = false;
      },
      d(detaching) {
        if (detaching) {
          detach(if_block_anchor);
        }
        if (if_block) if_block.d(detaching);
      }
    };
  }
  function instance$2($$self, $$props, $$invalidate) {
    let $platform;
    component_subscribe($$self, platform, ($$value) => $$invalidate(7, $platform = $$value));
    let showModal = false;
    let activity = null;
    let list = [];
    let title = "双十一红包";
    let isShaking = false;
    async function fetchActivity() {
      const json = await get(getElevenActivity, {});
      const { data } = json;
      if (data) {
        $$invalidate(1, activity = data);
        $$invalidate(2, list = activity.list);
        $$invalidate(3, title = activity.title);
        checkKeyToOpen(activity, $platform);
      }
    }
    function handleOpenModal() {
      $$invalidate(0, showModal = true);
    }
    function startShake() {
      $$invalidate(4, isShaking = true);
      setTimeout(
        () => {
          $$invalidate(4, isShaking = false);
          setTimeout(startShake, 5e3);
        },
        600
      );
    }
    onMount(() => {
      fetchActivity();
      startShake();
    });
    const close_handler = () => $$invalidate(0, showModal = false);
    return [showModal, activity, list, title, isShaking, handleOpenModal, close_handler];
  }
  class ElevenActivity extends SvelteComponent {
    constructor(options) {
      super();
      init(this, options, instance$2, create_fragment$3, safe_not_equal, {});
    }
  }
  function create_else_block(ctx) {
    let span;
    return {
      c() {
        span = element("span");
        span.textContent = "暂无优惠券!";
        attr(span, "class", "cp-text-red-500");
      },
      m(target, anchor) {
        insert(target, span, anchor);
      },
      p: noop,
      d(detaching) {
        if (detaching) {
          detach(span);
        }
      }
    };
  }
  function create_if_block$1(ctx) {
    let if_block_anchor;
    let if_block = (
      /*$platform*/
      ctx[1] == Platform.Taobao && create_if_block_1()
    );
    return {
      c() {
        if (if_block) if_block.c();
        if_block_anchor = empty();
      },
      m(target, anchor) {
        if (if_block) if_block.m(target, anchor);
        insert(target, if_block_anchor, anchor);
      },
      p(ctx2, dirty) {
        if (
          /*$platform*/
          ctx2[1] == Platform.Taobao
        ) {
          if (if_block) ;
          else {
            if_block = create_if_block_1();
            if_block.c();
            if_block.m(if_block_anchor.parentNode, if_block_anchor);
          }
        } else if (if_block) {
          if_block.d(1);
          if_block = null;
        }
      },
      d(detaching) {
        if (detaching) {
          detach(if_block_anchor);
        }
        if (if_block) if_block.d(detaching);
      }
    };
  }
  function create_if_block_1(ctx) {
    let span;
    return {
      c() {
        span = element("span");
        span.textContent = "已领取优惠券!";
        attr(span, "class", "cp-text-red-500");
      },
      m(target, anchor) {
        insert(target, span, anchor);
      },
      d(detaching) {
        if (detaching) {
          detach(span);
        }
      }
    };
  }
  function create_fragment$2(ctx) {
    let div;
    let t;
    let elevenactivity;
    let current;
    function select_block_type(ctx2, dirty) {
      if (
        /*show*/
        ctx2[0]
      ) return create_if_block$1;
      return create_else_block;
    }
    let current_block_type = select_block_type(ctx);
    let if_block = current_block_type(ctx);
    elevenactivity = new ElevenActivity({});
    return {
      c() {
        div = element("div");
        if_block.c();
        t = space();
        create_component(elevenactivity.$$.fragment);
        attr(div, "class", "cp-flex cp-justify-center cp-gap-[20px] cp-text-center");
      },
      m(target, anchor) {
        insert(target, div, anchor);
        if_block.m(div, null);
        append(div, t);
        mount_component(elevenactivity, div, null);
        current = true;
      },
      p(ctx2, [dirty]) {
        if (current_block_type === (current_block_type = select_block_type(ctx2)) && if_block) {
          if_block.p(ctx2, dirty);
        } else {
          if_block.d(1);
          if_block = current_block_type(ctx2);
          if (if_block) {
            if_block.c();
            if_block.m(div, t);
          }
        }
      },
      i(local) {
        if (current) return;
        transition_in(elevenactivity.$$.fragment, local);
        current = true;
      },
      o(local) {
        transition_out(elevenactivity.$$.fragment, local);
        current = false;
      },
      d(detaching) {
        if (detaching) {
          detach(div);
        }
        if_block.d();
        destroy_component(elevenactivity);
      }
    };
  }
  function instance$1($$self, $$props, $$invalidate) {
    let $platform;
    component_subscribe($$self, platform, ($$value) => $$invalidate(1, $platform = $$value));
    let { show = false } = $$props;
    $$self.$$set = ($$props2) => {
      if ("show" in $$props2) $$invalidate(0, show = $$props2.show);
    };
    return [show, $platform];
  }
  class Desc extends SvelteComponent {
    constructor(options) {
      super();
      init(this, options, instance$1, create_fragment$2, safe_not_equal, { show: 0 });
    }
  }
  function create_if_block(ctx) {
    var _a, _b, _c, _d, _e;
    let div;
    let t;
    let coupon_1;
    let current;
    coupon_1 = new Coupon({
      props: {
        amount: (
          /*$coupon*/
          (_a = ctx[0]) == null ? void 0 : _a.amount
        ),
        condition: (
          /*$coupon*/
          (_b = ctx[0]) == null ? void 0 : _b.condition
        ),
        date: (
          /*$coupon*/
          (_c = ctx[0]) == null ? void 0 : _c.date
        ),
        url: (
          /*$coupon*/
          (_d = ctx[0]) == null ? void 0 : _d.short_url
        ),
        left: (
          /*$coupon*/
          (_e = ctx[0]) == null ? void 0 : _e.left
        )
      }
    });
    return {
      c() {
        div = element("div");
        t = space();
        create_component(coupon_1.$$.fragment);
        attr(div, "class", "cp-mb-[12px]");
      },
      m(target, anchor) {
        insert(target, div, anchor);
        insert(target, t, anchor);
        mount_component(coupon_1, target, anchor);
        current = true;
      },
      p(ctx2, dirty) {
        var _a2, _b2, _c2, _d2, _e2;
        const coupon_1_changes = {};
        if (dirty & /*$coupon*/
        1) coupon_1_changes.amount = /*$coupon*/
        (_a2 = ctx2[0]) == null ? void 0 : _a2.amount;
        if (dirty & /*$coupon*/
        1) coupon_1_changes.condition = /*$coupon*/
        (_b2 = ctx2[0]) == null ? void 0 : _b2.condition;
        if (dirty & /*$coupon*/
        1) coupon_1_changes.date = /*$coupon*/
        (_c2 = ctx2[0]) == null ? void 0 : _c2.date;
        if (dirty & /*$coupon*/
        1) coupon_1_changes.url = /*$coupon*/
        (_d2 = ctx2[0]) == null ? void 0 : _d2.short_url;
        if (dirty & /*$coupon*/
        1) coupon_1_changes.left = /*$coupon*/
        (_e2 = ctx2[0]) == null ? void 0 : _e2.left;
        coupon_1.$set(coupon_1_changes);
      },
      i(local) {
        if (current) return;
        transition_in(coupon_1.$$.fragment, local);
        current = true;
      },
      o(local) {
        transition_out(coupon_1.$$.fragment, local);
        current = false;
      },
      d(detaching) {
        if (detaching) {
          detach(div);
          detach(t);
        }
        destroy_component(coupon_1, detaching);
      }
    };
  }
  function create_fragment$1(ctx) {
    var _a, _b, _c, _d;
    let div;
    let desc;
    let t;
    let current;
    desc = new Desc({
      props: {
        show: (
          /*$coupon*/
          ((_a = ctx[0]) == null ? void 0 : _a.amount) != null && /*$coupon*/
          ((_b = ctx[0]) == null ? void 0 : _b.amount) > 0
        )
      }
    });
    let if_block = (
      /*$coupon*/
      ((_c = ctx[0]) == null ? void 0 : _c.amount) != null && /*$coupon*/
      ((_d = ctx[0]) == null ? void 0 : _d.amount) > 0 && create_if_block(ctx)
    );
    return {
      c() {
        div = element("div");
        create_component(desc.$$.fragment);
        t = space();
        if (if_block) if_block.c();
        attr(div, "class", "cp-mb-[12px] cp-rounded-md cp-bg-slate-100 cp-p-[12px]");
      },
      m(target, anchor) {
        insert(target, div, anchor);
        mount_component(desc, div, null);
        append(div, t);
        if (if_block) if_block.m(div, null);
        current = true;
      },
      p(ctx2, [dirty]) {
        var _a2, _b2, _c2, _d2;
        const desc_changes = {};
        if (dirty & /*$coupon*/
        1) desc_changes.show = /*$coupon*/
        ((_a2 = ctx2[0]) == null ? void 0 : _a2.amount) != null && /*$coupon*/
        ((_b2 = ctx2[0]) == null ? void 0 : _b2.amount) > 0;
        desc.$set(desc_changes);
        if (
          /*$coupon*/
          ((_c2 = ctx2[0]) == null ? void 0 : _c2.amount) != null && /*$coupon*/
          ((_d2 = ctx2[0]) == null ? void 0 : _d2.amount) > 0
        ) {
          if (if_block) {
            if_block.p(ctx2, dirty);
            if (dirty & /*$coupon*/
            1) {
              transition_in(if_block, 1);
            }
          } else {
            if_block = create_if_block(ctx2);
            if_block.c();
            transition_in(if_block, 1);
            if_block.m(div, null);
          }
        } else if (if_block) {
          group_outros();
          transition_out(if_block, 1, 1, () => {
            if_block = null;
          });
          check_outros();
        }
      },
      i(local) {
        if (current) return;
        transition_in(desc.$$.fragment, local);
        transition_in(if_block);
        current = true;
      },
      o(local) {
        transition_out(desc.$$.fragment, local);
        transition_out(if_block);
        current = false;
      },
      d(detaching) {
        if (detaching) {
          detach(div);
        }
        destroy_component(desc);
        if (if_block) if_block.d();
      }
    };
  }
  function instance($$self, $$props, $$invalidate) {
    let $coupon;
    component_subscribe($$self, coupon, ($$value) => $$invalidate(0, $coupon = $$value));
    return [$coupon];
  }
  class Container extends SvelteComponent {
    constructor(options) {
      super();
      init(this, options, instance, create_fragment$1, safe_not_equal, {});
    }
  }
  function create_fragment(ctx) {
    let main;
    let container;
    let t;
    let current;
    container = new Container({});
    let if_block = false;
    return {
      c() {
        main = element("main");
        create_component(container.$$.fragment);
        t = space();
      },
      m(target, anchor) {
        insert(target, main, anchor);
        mount_component(container, main, null);
        append(main, t);
        current = true;
      },
      p: noop,
      i(local) {
        if (current) return;
        transition_in(container.$$.fragment, local);
        transition_in(if_block);
        current = true;
      },
      o(local) {
        transition_out(container.$$.fragment, local);
        transition_out(if_block);
        current = false;
      },
      d(detaching) {
        if (detaching) {
          detach(main);
        }
        destroy_component(container);
      }
    };
  }
  class App extends SvelteComponent {
    constructor(options) {
      super();
      init(this, options, null, create_fragment, safe_not_equal, {});
    }
  }
  async function createTarget(target) {
    const div = document.createElement("div");
    return new Promise((resolve) => {
      let timer = 0;
      function addSibling() {
        let t = null;
        for (const item of target) {
          t = document.querySelector(item);
          if (t) {
            break;
          }
        }
        if (t) {
          t.after(div);
          clearTimeout(timer);
          resolve(div);
        } else {
          timer = setTimeout(addSibling, 100);
        }
      }
      timer = setTimeout(addSibling, 100);
    });
  }
  async function mounted() {
    const platform2 = ensurePlatform();
    const { title } = await getTitle(platform2);
    const flag = checkCanRedirect(platform2, title);
    if (flag) {
      const json2 = await get(getPromoUrl, {
        title,
        platform: platform2,
        pt: PluginName,
        url: window.location.href
      });
      if (json2 && json2.data && json2.data.url) {
        if (!window.GM_openInTab || isMobile() && platform2 == Platform.Vip) {
          window.location.replace(json2.data);
        } else {
          if (platform2 == Platform.JD && json2.data.hasCoupon) {
            const currentUrl = location.href;
            const hasOpened = checkJDUrlInVisitedCoupon(currentUrl);
            if (!hasOpened) {
              setJDVisitedCoupon(currentUrl);
              openWindow(json2.data.url);
              window.close();
            }
          } else {
            openWindow(json2.data.url);
            window.close();
          }
        }
      }
    }
    if (isMobile() && platform2 == Platform.Vip) {
      return;
    }
    const json = await get(getCouponUrl, {
      title,
      platform: platform2,
      pt: PluginName,
      url: window.location.href
    });
    if (json && json.data) {
      coupon.updateCoupon(json.data);
      const target = await createTarget(json.data.selector);
      new App({
        target
      });
    }
  }
  mounted();
})(QRCode, CryptoJS);



})();