PageSourceSearch

https://geniecheats.com/pricing-block.js?v=5

js geniecheats.com collected 2026-10-02 00:49:43 UTC 21,212 bytes, 137 lines download raw bytes

1/* ─────────────────────────────────────────────────────────────────────────
2   The plan cards, rendered from one place.
3
4   Eight pages used to carry their own copy of these four cards — about 500
5   lines each, identical apart from the Free tagline, the dropdown order and
6   which dropdown starts open. Adding Gimkit meant editing all eight. Now a
7   page writes only the mount point:
8
9       <div class="pricing-cards" data-pricing data-first="gimkit"
10            data-tagline="Highlighting free on Gimkit"></div>
11       <script src="/pricing-block.js?v=1"></script>
12
13   data-first   the page's own product: listed first and opened. Omit on the
14                homepage and /pricing/, where nothing is opened.
15   data-tagline the line under "Free".
16
17   Loaded WITHOUT defer, straight after the mount, on purpose: the cards have to
18   exist before the inline reveal script at the foot of the page tags them and
19   before pricing-cards.js (deferred) wires the buttons. It is one small cached
20   file and it does no network or layout work.
21
22   To add a platform: one entry in ORDER, one in NAMES, one in DROPS.
23   ───────────────────────────────────────────────────────────────────────── */
24(function () {
25  var me = document.currentScript;
26  var mount = me && me.previousElementSibling;
27  if (!mount || !mount.hasAttribute('data-pricing')) mount = document.querySelector('[data-pricing]');
28  if (!mount) return;
29
30  var ORDER = ["delta", "edpuzzle", "membean", "quizlet", "blooket", "gimkit", "wayground"];
31  var NAMES = {"membean": "Membean", "delta": "DeltaMath", "edpuzzle": "Edpuzzle", "blooket": "Blooket", "quizlet": "Quizlet", "gimkit": "Gimkit", "wayground": "Wayground"};
32  // one card shell per tier: Free, Weekly, Monthly, Yearly
33  var CHROME = [
34  "<article class=\"plan-card starter-card\" data-reveal><div class=\"plan-top\"><h3>Free</h3><p class=\"pc-tagline\">{{tagline}}</p></div><div class=\"pc-buy\"><p class=\"price\"><strong>$0</strong><span>/forever</span></p><div class=\"pc-action\"><a class=\"plan-cta starter\" href=\"https://app.geniecheats.com/auth/signin\">Make an account</a><p class=\"plan-note\">No credit card required</p></div></div><div class=\"pc-drops\">{{drops}}</div></article>",
35  "<article class=\"plan-card\" data-reveal><div class=\"plan-top\"><h3>\n                Weekly\n              </h3><p class=\"pc-tagline\">Short commitment, full access</p></div><div class=\"pc-buy\"><p class=\"price\"><strong>$1.99</strong><span>/week</span></p><div class=\"pc-action\"><a class=\"plan-cta weekly\" href=\"https://app.geniecheats.com/auth/signin?plan=weekly\">Get Weekly</a><p class=\"plan-note\">Cancel anytime</p></div></div><div class=\"pc-drops\">{{drops}}</div></article>",
36  "<article class=\"plan-card ultra-card\" data-reveal><div class=\"plan-top\"><h3>\n                Monthly\n                <span class=\"trial-chip\" data-ultra-trial>3-day trial</span></h3><p class=\"pc-tagline\">The usual choice &mdash; try it free for 3 days</p></div><div class=\"pc-buy\"><!-- Two headline prices, swapped by pricing-cards.js to match the\n                   note below. A trial-eligible visitor gets the 3 free days and\n                   then the full $4.99 — the $1.50 first-month coupon is NOT\n                   applied on a trial checkout, because a `once` coupon would be\n                   consumed by the $0 invoice Stripe raises at trial start. An\n                   account that has already used its trial buys at $3.49 for the\n                   first month instead. Showing $3.49 to someone who will be\n                   charged $4.99 is the mismatch this replaced. --><p class=\"price\" data-ultra-price-trial hidden><strong>$4.99</strong><span>/month</span></p><p class=\"price\" data-ultra-price-default><s>$4.99</s><strong>$3.49</strong><span>/first month</span></p><div class=\"pc-action\"><a class=\"plan-cta ultra\" href=\"https://app.geniecheats.com/auth/signin?plan=ultra\">3-Day Free Trial</a><!-- pricing-cards.js swaps these: an account that has already used\n                     its trial must not be shown a trial footnote. --><p class=\"plan-note\" data-ultra-note-trial>Free for 3 days, then $4.99/month. Cancel anytime.</p><p class=\"plan-note\" data-ultra-note-default hidden>$3.49 your first month, then $4.99/month. Cancel anytime.</p></div></div><div class=\"pc-drops\">{{drops}}</div></article>",
37  "<article class=\"plan-card\" data-reveal><div class=\"plan-top\"><h3>
37\n                Yearly\n                <span class=\"value-chip\">Save 33%</span></h3><p class=\"pc-tagline\">Best value, paid once</p></div><div class=\"pc-buy\"><p class=\"price\"><strong>$39.99</strong><span>/year</span></p><p class=\"pc-permo\">Works out to $3.33/month</p><div class=\"pc-action\"><a class=\"plan-cta yearly\" href=\"https://app.geniecheats.com/auth/signin?plan=yearly\">Get Yearly</a><p class=\"plan-note\">Billed once a year. Cancel anytime.</p></div></div><div class=\"pc-drops\">{{drops}}</div></article>"
38];
39  // per platform: [free body, paid body] — or four bodies where the tiers differ
40  var DROPS = {
41  "delta": [
42    "<summary><img class=\"pc-drop-logo\" src=\"/assets/logo-deltamath.png\" alt=\"\" width=\"96\" height=\"96\" loading=\"lazy\" decoding=\"async\"><span class=\"pc-drop-head\"><span class=\"pc-drop-title\">DeltaMath</span><span class=\"pc-drop-sub\">Delta Genie</span></span><span class=\"pc-drop-caret\" aria-hidden=\"true\"></span></summary><div class=\"pc-drop-body\"><p class=\"pc-drop-note\">DeltaMath has no free tier. You get a <strong>10-minute demo</strong> with everything unlocked &mdash; it counts only while Delta Genie is actually working and pauses when you stop, so you keep what you don&rsquo;t use. After that it needs a paid plan.</p><ul class=\"feature-list\"><li class=\"is-included\">Full DeltaMath auto-solve<span class=\"fl-sub\">whole assignments, start to finish</span></li><li class=\"is-included\">Snip &amp; Solve<span class=\"fl-sub\">any problem from a screenshot &mdash; 10 a day, then credit packs</span></li><li class=\"is-included\">Unlimited auto-solve problems</li><li class=\"is-included\">Custom accuracy</li><li class=\"is-included\">Custom timing</li><li class=\"is-included\">Fully undetectable</li></ul></div>",
43    "<summary><img class=\"pc-drop-logo\" src=\"/assets/logo-deltamath.png\" alt=\"\" width=\"96\" height=\"96\" loading=\"lazy\" decoding=\"async\"><span class=\"pc-drop-head\"><span class=\"pc-drop-title\">DeltaMath</span><span class=\"pc-drop-sub\">Delta Genie</span></span><span class=\"pc-drop-caret\" aria-hidden=\"true\"></span></summary><div class=\"pc-drop-body\"><ul class=\"feature-list\"><li class=\"is-included\">Full DeltaMath auto-solve<span class=\"fl-sub\">whole assignments, start to finish</span></li><li class=\"is-included\">Snip &amp; Solve<span class=\"fl-sub\">any problem from a screenshot &mdash; 10 a day, then credit packs</span></li><li class=\"is-included\">Unlimited auto-solve problems</li><li class=\"is-included\">Custom accuracy</li><li class=\"is-included\">Custom timing</li><li class=\"is-included\">Fully undetectable</li></ul></div>"
44  ],
45  "edpuzzle": [
46    "<summary><img class=\"pc-drop-logo\" src=\"/assets/logo-edpuzzle.png\" alt=\"\" width=\"96\" height=\"96\" loading=\"lazy\" decoding=\"async\"><span class=\"pc-drop-head\"><span class=\"pc-drop-title\">Edpuzzle</span><span class=\"pc-drop-sub\">EdGenie</span></span><span class=\"pc-drop-caret\" aria-hidden=\"true\"></span></summary><div class=\"pc-drop-body\"><ul class=\"feature-list\"><li class=\"is-included\">Multiple choice<span class=\"fl-sub\">free, no plan needed</span></li><li class=\"is-included\">Video speed &amp; background play</li><li class=\"is-locked\">Written answers<span class=\"fl-sub\">open-ended and reflection questions</span></li><li class=\"is-locked\">Transcription for videos with no captions</li></ul></div>",
47    "<summary><img class=\"pc-drop-logo\" src=\"/assets/logo-edpuzzle.png\" alt=\"\" width=\"96\" height=\"96\" loading=\"lazy\" decoding=\"async\"><span class=\"pc-drop-head\"><span class=\"pc-drop-title\">Edpuzzle</span><span class=\"pc-drop-sub\">EdGenie</span></span><span class=\"pc-drop-caret\" aria-hidden=\"true\"></span></summary><div class=\"pc-drop-body\"><ul class=\"feature-list\"><li class=\"is-included\">Written answers<span class=\"fl-sub\">open-ended and reflection questions</span></li><li class=\"is-included\">Multiple choice</li><li class=\"is-included\">Transcription for videos with no captions</li><li class=\"is-included\">Video speed &amp; background play</li></ul></div>"
48  ],
49  "membean": [
50    "<summary><img class=\"pc-drop-logo\" src=\"/assets/logo-membean.png\" alt=\"\" width=\"96\" height=\"96\" loading=\"lazy\" decoding=\"async\"><span class=\"pc-drop-head\"><span class=\"pc-drop-title\">Membean</span><span class=\"pc-drop-sub\">MemGenie</span></span><span class=\"pc-drop-caret\" aria-hidden=\"true\"></span></summary><div class=\"pc-drop-body\"><p class=\"pc-drop-note\"><strong>MemGenie</strong> is our separate Chrome extension for Membean. These benefits apply on Membean, not on {{here}}.</p><ul class=\"feature-list\"><li class=\"is-included\">Highlight the correct answer<span class=\"fl-sub\">typing, multiple choice, learn words</span></li><li class=\"is-included\">Fully undetectable</li><li class=\"is-included\">150 questions per day</li><li class=\"is-locked\">Full Membean automation</li><li class=\"is-locked\">Membean quiz auto-solve</li><li class=\"is-locked\">Unlimited questions</li><li class=\"is-locked\">
50Custom accuracy</li><li class=\"is-locked\">Custom timing</li></ul></div>",
51    "<summary><img class=\"pc-drop-logo\" src=\"/assets/logo-membean.png\" alt=\"\" width=\"96\" height=\"96\" loading=\"lazy\" decoding=\"async\"><span class=\"pc-drop-head\"><span class=\"pc-drop-title\">Membean</span><span class=\"pc-drop-sub\">MemGenie</span></span><span class=\"pc-drop-caret\" aria-hidden=\"true\"></span></summary><div class=\"pc-drop-body\"><p class=\"pc-drop-note\"><strong>MemGenie</strong> is our separate Chrome extension for Membean. These benefits apply on Membean, not on {{here}}.</p><ul class=\"feature-list\"><li class=\"is-included\">Full Membean automation</li><li class=\"is-included\">Membean quiz auto-solve</li><li class=\"is-included\">Unlimited questions</li><li class=\"is-included\">Custom accuracy</li><li class=\"is-included\">Custom timing</li><li class=\"is-included\">Fully undetectable</li></ul></div>"
52  ],
53  "quizlet": [
54    "<summary><img class=\"pc-drop-logo\" src=\"/assets/logo-quizlet.webp\" alt=\"\" width=\"96\" height=\"96\" loading=\"lazy\" decoding=\"async\"><span class=\"pc-drop-head\"><span class=\"pc-drop-title\">
54Quizlet</span><span class=\"pc-drop-sub\">Quizlet Genie</span></span><span class=\"pc-drop-caret\" aria-hidden=\"true\"></span></summary><div class=\"pc-drop-body\"><p class=\"pc-drop-note\">Quizlet Genie runs on <strong>Quizlet Live</strong> games. Highlighting the right answer is free on any signed-in account &mdash; having it click for you is the paid part.</p><ul class=\"feature-list\"><li class=\"is-included\">Highlights the correct answer<span class=\"fl-sub\">free, no plan needed</span></li><li class=\"is-included\">Fully undetectable</li><li class=\"is-locked\">Full automation<span class=\"fl-sub\">answers the round for you</span></li><li class=\"is-locked\">Custom accuracy</li><li class=\"is-locked\">Custom timing</li></ul></div>",
55    "<summary><img class=\"pc-drop-logo\" src=\"/assets/logo-quizlet.webp\" alt=\"\" width=\"96\" height=\"96\" loading=\"lazy\" decoding=\"async\"><span class=\"pc-drop-head\"><span class=\"pc-drop-title\">Quizlet</span><span class=\"pc-drop-sub\">Quizlet Genie</span></span><span class=\"pc-drop-caret\" aria-hidden=\"true\"></span></summary><div class=\"pc-drop-body\"><ul class=\"feature-list\"><li class=\"is-included\">Full automation<span class=\"fl-sub\">answers the round for you on Quizlet Live</span></li><li class=\"is-included\">Highlights the correct answer</li><li class=\"is-included\">Custom accuracy</li><li class=\"is-included\">Custom timing</li><li class=\"is-included\">Fully undetectable</li></ul></div>"
56  ],
57  "blooket": [
58    "<summary><img class=\"pc-drop-logo\" src=\"/assets/logo-blooket.png\" alt=\"\" width=\"96\" height=\"96\" loading=\"lazy\" decoding=\"async\"><span class=\"pc-drop-head\"><span class=\"pc-drop-title\">Blooket</span><span class=\"pc-drop-sub\">BlookGenie</span></span><span class=\"pc-drop-caret\" aria-hidden=\"true\"></span></summary><div class=\"pc-drop-body\"><p class=\"pc-drop-note\">Answering is <strong>free and unlimited</strong> on any signed-in account &mdash; the right tile is highlighted green and you click it. Playing the game for you is the paid half.</p><ul class=\"feature-list\"><li class=\"is-included\">Finds every answer<span class=\"fl-sub\">free and unlimited, no quota</span></li><li class=\"is-included\">Highlights the correct tile<span class=\"fl-sub\">you click it</span></li><li class=\"is-included\">Works on all game modes</li><li class=\"is-locked\">Full auto<span class=\"fl-sub\">plays the whole game, start to finish</span></li><li class=\"is-locked\">Clicks the answer for you</li><li class=\"is-locked\">Answer speed control</li></ul></div>",
59    "<summary><img class=\"pc-drop-logo\" src=\"/assets/logo-blooket.png\" alt=\"\" width=\"96\" height=\"96\" loading=\"lazy\" decoding=\"async\"><span class=\"pc-drop-head\"><span class=\"pc-drop-title\">Blooket</span><span class=\"pc-drop-sub\">BlookGenie</span></span><span class=\"pc-drop-caret\" aria-hidden=\"true\"></span></summary><div class=\"pc-drop-body\"><ul class=\"feature-list\"><li class=\"is-included\">Full auto<span class=\"fl-sub\">plays the whole game, start to finish</span></li><li class=\"is-included\">Picks the best prize in a split second</li><li class=\"is-included\">Clicks the answer for you</li><li class=\"is-included\">Answer speed control<span class=\"fl-sub\">a range, not a fixed delay</span></li><li class=\"is-included\">Finds every answer<span class=\"fl-sub\">free and unlimited, no quota</span></li><li class=\"is-included\">Works on all game modes</li></ul></div>"
60  ],
61  "gimkit": [
62    "<summary><img class=\"pc-drop-logo\" src=\"/assets/logo-gimkit.png\" alt=\"\" width=\"96\" height=\"96\" loading=\"lazy\" decoding=\"async\"><span class=\"pc-drop-head\"><span class=\"pc-drop-title\">Gimkit</span><span class=\"pc-drop-sub\">Gimkit Genie</span></span><span class=\"pc-drop-caret\" aria-hidden=\"true\"></span></summary><div class=\"pc-drop-body\"><p class=\"pc-drop-note\">Gimkit Genie runs on <strong>Gimkit</strong> games. Highlighting the right answer is free on any signed-in account &mdash; having it click for you is the paid part.</p><ul class=\"feature-list\"><li class=\"is-included\">Highlights the correct answer<span class=\"fl-sub\">free, no plan needed</span></li><li class=\"is-included\">Fully undetectable</li><li class=\"is-locked\">Full automation<span class=\"fl-sub\">answers the round for you</span></li><li class=\"is-locked\">
62Custom accuracy</li><li class=\"is-locked\">Custom timing</li></ul></div>",
63    "<summary><img class=\"pc-drop-logo\" src=\"/assets/logo-gimkit.png\" alt=\"\" width=\"96\" height=\"96\" loading=\"lazy\" decoding=\"async\"><span class=\"pc-drop-head\"><span class=\"pc-drop-title\">Gimkit</span><span class=\"pc-drop-sub\">Gimkit Genie</span></span><span class=\"pc-drop-caret\" aria-hidden=\"true\"></span></summary><div class=\"pc-drop-body\"><ul class=\"feature-list\"><li class=\"is-included\">Full automation<span class=\"fl-sub\">answers and presses Continue for you</span></li><li class=\"is-included\">Highlights the correct answer</li><li class=\"is-included\">Custom accuracy</li><li class=\"is-included\">Custom timing</li><li class=\"is-included\">Fully undetectable</li></ul></div>"
64  ],
65  "wayground": [
66    "<summary><img class=\"pc-drop-logo\" src=\"/assets/logo-wayground.png\" alt=\"\" width=\"96\" height=\"96\" loading=\"lazy\" decoding=\"async\"><span class=\"pc-drop-head\"><span class=\"pc-drop-title\">Wayground</span><span class=\"pc-drop-sub\">Wayground Genie</span></span><span class=\"pc-drop-caret\" aria-hidden=\"true\"></span></summary><div class=\"pc-drop-body\"><p class=\"pc-drop-note\">Wayground Genie runs on <strong>Wayground Live</strong> games. Highlighting the right answer is free on any signed-in account &mdash; having it click for you is the paid part.</p><ul class=\"feature-list\"><li class=\"is-included\">Highlights the correct answer<span class=\"fl-sub\">free, no plan needed</span></li><li class=\"is-included\">Fully undetectable</li><li class=\"is-locked\">Full automation<span class=\"fl-sub\">answers the round for you</span></li><li class=\"is-locked\">Custom accuracy</li><li class=\"is-locked\">Custom timing</li></ul></div>",
67    "<summary><img class=\"pc-drop-logo\" src=\"/assets/logo-wayground.png\" alt=\"\" width=\"96\" height=\"96\" loading=\"lazy\" decoding=\"async\"><span class=\"pc-drop-head\"><span class=\"pc-drop-title\">Wayground</span><span class=\"pc-drop-sub\">Wayground Genie</span></span><span class=\"pc-drop-caret\" aria-hidden=\"true\"></span></summary><div class=\"pc-drop-body\"><ul class=\"feature-list\"><li class=\"is-included\">Full automation<span class=\"fl-sub\">answers the round for you on Wayground Live</span></li><li class=\"is-included\">Highlights the correct answer</li><li class=\"is-included\">Custom accuracy</li><li class=\"is-included\">Custom timing</li><li class=\"is-included\">Fully undetectable</li></ul></div>"
68  ]
69};
70
71  var first = mount.getAttribute('data-first');
72  var tagline = mount.getAttribute('data-tagline') || 'Free on Blooket, Membean and Edpuzzle';
73  var order = ORDER.slice();
74  if (first && order.indexOf(first) > -1) { order.splice(order.indexOf(first), 1); order.unshift(first); }
75
76  function body(prod, tier) {
77    var d = DROPS[prod];
78    var html = d.length === 2 ? d[tier === 0 ? 0 : 1] : d[tier];
79    // "These benefits apply on Membean, not on <this page's platform>." only
80    // makes sense on another product's page; elsewhere the whole note goes.
81    if (html.indexOf('{{here}}') > -1) {
82      html = first && first !== prod
83        ? html.replace('{{here}}', NAMES[first])
84        : html.replace(/<p class="pc-drop-note">(?:(?!<\/p>).)*\{\{here\}\}(?:(?!<\/p>).)*<\/p>/, '');
85    }
86    return html;
87  }
88
89  mount.innerHTML = CHROME.map(function (shell, tier) {
90    var drops = order.map(function (prod) {
91      return '<details class="pc-drop pc-drop--' + prod + '"' + (prod === first ? ' open' : '') + '>' + body(prod, tier) + '</details>';
92    }).join('');
93    return shell.replace('{{tagline}}', tagline).replace('{{drops}}', drops);
94  }).join('');
95
96  // ── the crossed-out price ────────────────────────────────────────────────
97  // The same three-stage flow as the MemGenie all-extensions upsell
98  // (UltraOfferPanel.tsx): $4.99 plain, the neon line drawn across it at 650ms,
99  // then $3.49 rising into place at 1450ms. There the clock starts on mount;
100  // here it starts the moment the card enters the viewport, with threshold 0.01
101  // so it begins as the card's top edge appears rather than a fifth of the way in.
102  //
103  // The class goes on the CARD, not the <s>, so nothing downstream can drop it.
104  // And it has to survive failing: the stylesheet only hides the line and the
105  // $3.49 once .pc-strike-armed is set, so no JS means both are simply there,
106  // and the failsafe below finishes the job if the observer never reports.
107  // $4.99 must never be left looking like the price you pay.
108  (function () {
109    var cards = mount.querySelectorAll('.plan-card');
110    if (!cards.length) return;
111    var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;
112    if (reduce || !('IntersectionObserver' in window)) return;
113
114    document.documentElement.classList.add('pc-strike-armed');
115
116    function run(card) {
117      setTimeout(function () { card.classList.add('is-struck'); }, 650);
118      setTimeout(function () { card.classList.add('is-priced'); }, 1450);
119    }
120
121    var io = new IntersectionObserver(function (entries, obs) {
122      entries.forEach(function (e) {
123        if (!e.isIntersecting) return;
124        obs.unobserve(e.target);
125        run(e.target);
126      });
127    }, { threshold: 0.01 });
128    [].forEach.call(cards, function (c) { io.observe(c); });
129
130    // Nothing has started by now, so the observer is not reporting. Show the
131    // finished state outright rather than leave the figures wrong.
132    setTimeout(function () {
133      if (mount.querySelector('.plan-card.is-struck')) return;
134      [].forEach.call(cards, function (c) { c.classList.add('is-struck', 'is-priced'); });
135    }, 3000);
136  })();
137})();

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.