Spaces:
Running
Running
Vramwise: decision models (MATILDA-jev, JEV, Decider), linear-attention + packed FP4 support
afcfd33 verified Download fitcheck/pro.js from CyberMax-tools/cybermax: direct link, hf CLI and curl.
- Browser
- Download file 7.03 kB
-
https://huggingface.co/spaces/CyberMax-tools/cybermax/resolve/main/fitcheck/pro.js
- Command line
-
hf download hf://spaces/CyberMax-tools/cybermax/fitcheck/pro.js
-
curl -L -o pro.js https://huggingface.co/spaces/CyberMax-tools/cybermax/resolve/main/fitcheck/pro.js
7.03 kB
| /* CyberMax Pro unlock for static web apps (copied into each product's web/ folder; each product stays self-contained). | |
| * Config before this script: window.CMX_PRO = { id, name, price, perks: [..], offer }. | |
| * Buy: counted link https://data.cybermaxtools.com/buy/<offer>?s=app-<id> -> Stripe Payment Link (one-time). | |
| * After checkout Stripe sends the buyer to data.cybermaxtools.com/unlock/<id>?session_id=..., which checks the | |
| * Checkout Session with Stripe and returns here with #cmx-pro=<session id>. The app re-checks that code once | |
| * (/unlock/<id>?session_id=..&json=1) and remembers Pro in this browser. The same code (shown on the receipt page and | |
| * in the Pro box) unlocks Pro on another device. No account, no tracking. */ | |
| (function () { | |
| "use strict"; | |
| var C = window.CMX_PRO || {}; | |
| if (!C.id) return; | |
| var DATA = "https://data.cybermaxtools.com"; | |
| var KEY = "cmx-pro:" + C.id; | |
| var SID = /^(cs_(live|test)_[A-Za-z0-9]{10,200}|[A-Z0-9]{8}-[A-Z0-9]{8}-[A-Z0-9]{8}-[A-Z0-9]{8})$/i; // Stripe order code or Gumroad licence key | |
| var listeners = []; | |
| function get() { try { return JSON.parse(localStorage.getItem(KEY) || "null"); } catch (e) { return null; } } | |
| function set(v) { try { localStorage.setItem(KEY, JSON.stringify(v)); } catch (e) { /* private mode: Pro for this visit */ } mem = v; } | |
| var mem = get(); | |
| function isPro() { return !!(mem && mem.code); } | |
| function check(code) { | |
| return fetch(DATA + "/unlock/" + encodeURIComponent(C.id) + "?json=1&session_id=" + encodeURIComponent(code)) | |
| .then(function (r) { return r.json(); }).then(function (j) { return !!(j && j.pro); }).catch(function () { return null; }); | |
| } | |
| function unlock(code, from) { | |
| return check(code).then(function (ok) { | |
| if (ok) { set({ code: code, at: new Date().toISOString() }); apply(); toast("Pro unlocked. Thank you for supporting " + C.name + "!"); } | |
| else if (ok === false) toast("That code is not a paid " + C.name + " Pro order."); | |
| else toast("Could not reach the unlock check. Try again in a minute."); | |
| return ok; | |
| }); | |
| } | |
| function toast(msg) { | |
| var t = document.getElementById("toast"); | |
| if (t) { t.textContent = msg; t.hidden = false; t.classList.add("show"); setTimeout(function () { t.classList.remove("show"); }, 3500); } | |
| var s = document.getElementById("cmx-pro-msg"); | |
| if (s) s.textContent = msg; | |
| } | |
| function esc(s) { return String(s).replace(/[&<>"]/g, function (c) { return { "&": "&", "<": "<", ">": ">", '"': """ }[c]; }); } | |
| function box() { | |
| var el = document.getElementById("cmx-pro"); | |
| if (!el) { | |
| el = document.createElement("section"); | |
| el.id = "cmx-pro"; | |
| var anchor = document.querySelector("footer.more") || document.querySelector("main footer") || document.querySelector("footer"); | |
| if (anchor && anchor.parentNode) anchor.parentNode.insertBefore(el, anchor); else (document.querySelector("main") || document.body).appendChild(el); | |
| } | |
| el.className = "cmx-pro"; | |
| return el; | |
| } | |
| function render() { | |
| var el = box(); | |
| var buy = DATA + "/buy/" + (C.offer || C.id + "-pro") + "?s=app-" + C.id; // counted redirect to the Stripe Payment Link | |
| if (isPro()) { | |
| el.innerHTML = '<h2>' + esc(C.name) + ' Pro <span class="cmx-pro-badge">unlocked</span></h2><p>Thank you for supporting ' + esc(C.name) + | |
| '. Pro is on in this browser: ' + C.perks.map(esc).join(" · ") + '.</p><p class="cmx-pro-small">Your unlock code (use it on another device): <code style="user-select:all;word-break:break-all">' + esc(mem.code) + '</code></p>'; | |
| } else { | |
| el.innerHTML = '<h2>' + esc(C.name) + ' Pro, ' + esc(C.price) + ' once</h2><ul>' + C.perks.map(function (p) { return "<li>" + esc(p) + "</li>"; }).join("") + | |
| '</ul><p><a class="btn" id="cmx-pro-buy" href="' + buy + '" rel="nofollow">Get Pro for ' + esc(C.price) + '</a> <span class="cmx-pro-small">One payment, no subscription, secure Stripe checkout. Everything free stays free.</span></p>' + | |
| '<details><summary>Already bought Pro?</summary><form id="cmx-pro-form"><label>Unlock code <input id="cmx-pro-code" autocomplete="off" placeholder="cs_live_… or Gumroad licence key"></label> <button class="btn ghost" type="submit">Unlock</button></form></details><p id="cmx-pro-msg" class="cmx-pro-small" aria-live="polite"></p>'; | |
| var f = document.getElementById("cmx-pro-form"); | |
| if (f) f.onsubmit = function (e) { e.preventDefault(); var c = (document.getElementById("cmx-pro-code").value || "").trim(); if (SID.test(c)) unlock(c); else toast("Paste the code from your receipt page (it starts with cs_live_) or your Gumroad licence key."); }; | |
| } | |
| } | |
| function apply() { | |
| document.documentElement.classList.toggle("cmx-pro", isPro()); | |
| render(); | |
| listeners.forEach(function (fn) { try { fn(isPro()); } catch (e) { /* app hook */ } }); | |
| } | |
| function download(name, text, type) { | |
| var a = document.createElement("a"); | |
| a.href = URL.createObjectURL(new Blob([text], { type: type || "text/csv;charset=utf-8" })); | |
| a.download = name; | |
| document.body.appendChild(a); a.click(); a.remove(); | |
| setTimeout(function () { URL.revokeObjectURL(a.href); }, 2000); | |
| } | |
| function cell(s) { s = String(s == null ? "" : s).replace(/\s+/g, " ").trim(); return /[",\n]/.test(s) ? '"' + s.replace(/"/g, '""') + '"' : s; } | |
| function rows(table) { | |
| if (table && !table.querySelector("tr")) return table.textContent.trim() ? [[table.textContent.trim()]] : []; // a text result | |
| return Array.prototype.map.call(table ? table.querySelectorAll("tr") : [], function (tr) { | |
| return Array.prototype.map.call(tr.querySelectorAll("th,td"), function (c) { return c.textContent; }); | |
| }).filter(function (r) { return r.length; }); | |
| } | |
| function csv(tables) { return tables.map(function (t) { return (t.title ? cell(t.title) + "\n" : "") + rows(t.el).map(function (r) { return r.map(cell).join(","); }).join("\n"); }).join("\n\n") + "\n"; } | |
| function markdown(table) { | |
| var r = rows(table); if (!r.length) return ""; | |
| var md = function (x) { return "| " + x.map(function (c) { return String(c).replace(/\|/g, "\\|").replace(/\s+/g, " ").trim(); }).join(" | ") + " |"; }; | |
| return [md(r[0]), md(r[0].map(function () { return "---"; }))].concat(r.slice(1).map(md)).join("\n") + "\n"; | |
| } | |
| window.CMXPro = { isPro: isPro, onChange: function (fn) { listeners.push(fn); fn(isPro()); }, download: download, csv: csv, markdown: markdown, rows: rows, toast: toast }; | |
| var m = /[#&]cmx-pro=([^&]+)/.exec(location.hash || ""); | |
| if (m && SID.test(decodeURIComponent(m[1]))) { | |
| var code = decodeURIComponent(m[1]); | |
| history.replaceState(null, "", location.pathname + location.search); | |
| if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", function () { apply(); unlock(code); }); else { apply(); unlock(code); } | |
| } else if (document.readyState === "loading") document.addEventListener("DOMContentLoaded", apply); else apply(); | |
| })(); | |