hyperframes 0.6.99 → 0.6.100
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +907 -514
- package/dist/commands/layout-audit.browser.js +81 -0
- package/dist/commands/motion-sample.browser.js +121 -0
- package/dist/hyperframe-runtime.js +17 -17
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +17 -17
- package/dist/skills/hyperframes/SKILL.md +168 -0
- package/dist/skills/hyperframes-cli/SKILL.md +2 -2
- package/dist/skills/hyperframes-cli/references/init-and-scaffold.md +1 -1
- package/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +28 -0
- package/dist/studio/assets/index-BkT9VKwz.js +296 -0
- package/dist/studio/assets/{index-DOh7E1uj.js → index-CKWBqyRd.js} +1 -1
- package/dist/studio/assets/{index-C52IT_lp.js → index-gpSohHUn.js} +1 -1
- package/dist/studio/index.html +1 -1
- package/dist/templates/_shared/AGENTS.md +2 -2
- package/dist/templates/_shared/CLAUDE.md +2 -2
- package/package.json +1 -1
- package/dist/studio/assets/index-DrwSRbsl.js +0 -252
package/dist/cli.js
CHANGED
|
@@ -50,7 +50,7 @@ var VERSION;
|
|
|
50
50
|
var init_version = __esm({
|
|
51
51
|
"src/version.ts"() {
|
|
52
52
|
"use strict";
|
|
53
|
-
VERSION = true ? "0.6.
|
|
53
|
+
VERSION = true ? "0.6.100" : "0.0.0-dev";
|
|
54
54
|
}
|
|
55
55
|
});
|
|
56
56
|
|
|
@@ -10069,12 +10069,12 @@ var init_parent_node = __esm({
|
|
|
10069
10069
|
parentNode = parentNode.parentNode;
|
|
10070
10070
|
return parentNode === this;
|
|
10071
10071
|
}
|
|
10072
|
-
insertBefore(node,
|
|
10073
|
-
if (node ===
|
|
10072
|
+
insertBefore(node, before3 = null) {
|
|
10073
|
+
if (node === before3)
|
|
10074
10074
|
return node;
|
|
10075
10075
|
if (node === this)
|
|
10076
10076
|
throw new Error("unable to append a node to itself");
|
|
10077
|
-
const next =
|
|
10077
|
+
const next = before3 || this[END];
|
|
10078
10078
|
switch (node.nodeType) {
|
|
10079
10079
|
case ELEMENT_NODE:
|
|
10080
10080
|
node.remove();
|
|
@@ -12892,7 +12892,7 @@ var require_CSSValueExpression = __commonJS({
|
|
|
12892
12892
|
}
|
|
12893
12893
|
};
|
|
12894
12894
|
CSSOM.CSSValueExpression.prototype._parseJSRexExp = function(token, idx) {
|
|
12895
|
-
var
|
|
12895
|
+
var before3 = token.substring(0, idx).replace(/\s+$/, ""), legalRegx = [
|
|
12896
12896
|
/^$/,
|
|
12897
12897
|
/\($/,
|
|
12898
12898
|
/\[$/,
|
|
@@ -12919,7 +12919,7 @@ var require_CSSValueExpression = __commonJS({
|
|
|
12919
12919
|
/void$/
|
|
12920
12920
|
];
|
|
12921
12921
|
var isLegal = legalRegx.some(function(reg) {
|
|
12922
|
-
return reg.test(
|
|
12922
|
+
return reg.test(before3);
|
|
12923
12923
|
});
|
|
12924
12924
|
if (!isLegal) {
|
|
12925
12925
|
return false;
|
|
@@ -17420,7 +17420,7 @@ var require_types = __commonJS({
|
|
|
17420
17420
|
}
|
|
17421
17421
|
return new ArrayType(Type2.from(value[0]));
|
|
17422
17422
|
}
|
|
17423
|
-
if (
|
|
17423
|
+
if (isObject2.check(value)) {
|
|
17424
17424
|
return new ObjectType(Object.keys(value).map(function(name2) {
|
|
17425
17425
|
return new Field(name2, Type2.from(value[name2], name2));
|
|
17426
17426
|
}));
|
|
@@ -17466,7 +17466,7 @@ var require_types = __commonJS({
|
|
|
17466
17466
|
var isFunction = defBuiltInType("function", function() {
|
|
17467
17467
|
});
|
|
17468
17468
|
var isArray4 = defBuiltInType("array", []);
|
|
17469
|
-
var
|
|
17469
|
+
var isObject2 = defBuiltInType("object", {});
|
|
17470
17470
|
var isRegExp = defBuiltInType("RegExp", /./);
|
|
17471
17471
|
var isDate = defBuiltInType("Date", /* @__PURE__ */ new Date());
|
|
17472
17472
|
var isNumber3 = defBuiltInType("number", 3);
|
|
@@ -17480,7 +17480,7 @@ var require_types = __commonJS({
|
|
|
17480
17480
|
string: isString,
|
|
17481
17481
|
function: isFunction,
|
|
17482
17482
|
array: isArray4,
|
|
17483
|
-
object:
|
|
17483
|
+
object: isObject2,
|
|
17484
17484
|
RegExp: isRegExp,
|
|
17485
17485
|
Date: isDate,
|
|
17486
17486
|
number: isNumber3,
|
|
@@ -18814,7 +18814,7 @@ var require_path_visitor = __commonJS({
|
|
|
18814
18814
|
var types5 = fork.use(types_1.default);
|
|
18815
18815
|
var NodePath = fork.use(node_path_1.default);
|
|
18816
18816
|
var isArray4 = types5.builtInTypes.array;
|
|
18817
|
-
var
|
|
18817
|
+
var isObject2 = types5.builtInTypes.object;
|
|
18818
18818
|
var isFunction = types5.builtInTypes.function;
|
|
18819
18819
|
var undefined2;
|
|
18820
18820
|
var PathVisitor = function PathVisitor2() {
|
|
@@ -18852,7 +18852,7 @@ var require_path_visitor = __commonJS({
|
|
|
18852
18852
|
if (methods instanceof PathVisitor) {
|
|
18853
18853
|
return methods;
|
|
18854
18854
|
}
|
|
18855
|
-
if (!
|
|
18855
|
+
if (!isObject2.check(methods)) {
|
|
18856
18856
|
return new PathVisitor();
|
|
18857
18857
|
}
|
|
18858
18858
|
var Visitor = function Visitor2() {
|
|
@@ -18952,7 +18952,7 @@ var require_path_visitor = __commonJS({
|
|
|
18952
18952
|
var value = path2.value;
|
|
18953
18953
|
if (isArray4.check(value)) {
|
|
18954
18954
|
path2.each(visitor.visitWithoutReset, visitor);
|
|
18955
|
-
} else if (!
|
|
18955
|
+
} else if (!isObject2.check(value)) {
|
|
18956
18956
|
} else {
|
|
18957
18957
|
var childNames = types5.getFieldNames(value);
|
|
18958
18958
|
if (visitor._shouldVisitComments && value.comments && childNames.indexOf("comments") < 0) {
|
|
@@ -19110,7 +19110,7 @@ var require_equiv = __commonJS({
|
|
|
19110
19110
|
var getFieldNames = types5.getFieldNames;
|
|
19111
19111
|
var getFieldValue = types5.getFieldValue;
|
|
19112
19112
|
var isArray4 = types5.builtInTypes.array;
|
|
19113
|
-
var
|
|
19113
|
+
var isObject2 = types5.builtInTypes.object;
|
|
19114
19114
|
var isDate = types5.builtInTypes.Date;
|
|
19115
19115
|
var isRegExp = types5.builtInTypes.RegExp;
|
|
19116
19116
|
var hasOwn3 = Object.prototype.hasOwnProperty;
|
|
@@ -19147,7 +19147,7 @@ var require_equiv = __commonJS({
|
|
|
19147
19147
|
if (isArray4.check(a)) {
|
|
19148
19148
|
return arraysAreEquivalent(a, b2, problemPath);
|
|
19149
19149
|
}
|
|
19150
|
-
if (
|
|
19150
|
+
if (isObject2.check(a)) {
|
|
19151
19151
|
return objectsAreEquivalent(a, b2, problemPath);
|
|
19152
19152
|
}
|
|
19153
19153
|
if (isDate.check(a)) {
|
|
@@ -19187,8 +19187,8 @@ var require_equiv = __commonJS({
|
|
|
19187
19187
|
return true;
|
|
19188
19188
|
}
|
|
19189
19189
|
function objectsAreEquivalent(a, b2, problemPath) {
|
|
19190
|
-
|
|
19191
|
-
if (!
|
|
19190
|
+
isObject2.assert(a);
|
|
19191
|
+
if (!isObject2.check(b2)) {
|
|
19192
19192
|
return false;
|
|
19193
19193
|
}
|
|
19194
19194
|
if (a.type !== b2.type) {
|
|
@@ -20739,7 +20739,7 @@ var require_util = __commonJS({
|
|
|
20739
20739
|
return path2;
|
|
20740
20740
|
}
|
|
20741
20741
|
exports.normalize = normalize;
|
|
20742
|
-
function
|
|
20742
|
+
function join104(aRoot, aPath) {
|
|
20743
20743
|
if (aRoot === "") {
|
|
20744
20744
|
aRoot = ".";
|
|
20745
20745
|
}
|
|
@@ -20771,7 +20771,7 @@ var require_util = __commonJS({
|
|
|
20771
20771
|
}
|
|
20772
20772
|
return joined;
|
|
20773
20773
|
}
|
|
20774
|
-
exports.join =
|
|
20774
|
+
exports.join = join104;
|
|
20775
20775
|
exports.isAbsolute = function(aPath) {
|
|
20776
20776
|
return aPath.charAt(0) === "/" || urlRegexp.test(aPath);
|
|
20777
20777
|
};
|
|
@@ -20944,7 +20944,7 @@ var require_util = __commonJS({
|
|
|
20944
20944
|
parsed.path = parsed.path.substring(0, index + 1);
|
|
20945
20945
|
}
|
|
20946
20946
|
}
|
|
20947
|
-
sourceURL =
|
|
20947
|
+
sourceURL = join104(urlGenerate(parsed), sourceURL);
|
|
20948
20948
|
}
|
|
20949
20949
|
return normalize(sourceURL);
|
|
20950
20950
|
}
|
|
@@ -29740,7 +29740,7 @@ var require_comments = __commonJS({
|
|
|
29740
29740
|
var types5 = tslib_1.__importStar(require_main());
|
|
29741
29741
|
var n = types5.namedTypes;
|
|
29742
29742
|
var isArray4 = types5.builtInTypes.array;
|
|
29743
|
-
var
|
|
29743
|
+
var isObject2 = types5.builtInTypes.object;
|
|
29744
29744
|
var lines_1 = require_lines();
|
|
29745
29745
|
var util_1 = require_util2();
|
|
29746
29746
|
var childNodesCache = /* @__PURE__ */ new WeakMap();
|
|
@@ -29770,7 +29770,7 @@ var require_comments = __commonJS({
|
|
|
29770
29770
|
var names;
|
|
29771
29771
|
if (isArray4.check(node)) {
|
|
29772
29772
|
names = Object.keys(node);
|
|
29773
|
-
} else if (
|
|
29773
|
+
} else if (isObject2.check(node)) {
|
|
29774
29774
|
names = types5.getFieldNames(node);
|
|
29775
29775
|
} else {
|
|
29776
29776
|
return resultArray;
|
|
@@ -29990,7 +29990,7 @@ var require_parser = __commonJS({
|
|
|
29990
29990
|
var tiny_invariant_1 = tslib_1.__importDefault(require_tiny_invariant_cjs());
|
|
29991
29991
|
var types5 = tslib_1.__importStar(require_main());
|
|
29992
29992
|
var b2 = types5.builders;
|
|
29993
|
-
var
|
|
29993
|
+
var isObject2 = types5.builtInTypes.object;
|
|
29994
29994
|
var isArray4 = types5.builtInTypes.array;
|
|
29995
29995
|
var options_1 = require_options();
|
|
29996
29996
|
var lines_1 = require_lines();
|
|
@@ -30091,7 +30091,7 @@ var require_parser = __commonJS({
|
|
|
30091
30091
|
}, this);
|
|
30092
30092
|
return copy_1;
|
|
30093
30093
|
}
|
|
30094
|
-
if (!
|
|
30094
|
+
if (!isObject2.check(node)) {
|
|
30095
30095
|
return node;
|
|
30096
30096
|
}
|
|
30097
30097
|
util.fixFaultyLocations(node, this.lines);
|
|
@@ -30623,7 +30623,7 @@ var require_patcher = __commonJS({
|
|
|
30623
30623
|
var SourceLocation3 = types5.namedTypes.SourceLocation;
|
|
30624
30624
|
var util_1 = require_util2();
|
|
30625
30625
|
var fast_path_1 = tslib_1.__importDefault(require_fast_path());
|
|
30626
|
-
var
|
|
30626
|
+
var isObject2 = types5.builtInTypes.object;
|
|
30627
30627
|
var isArray4 = types5.builtInTypes.array;
|
|
30628
30628
|
var isString = types5.builtInTypes.string;
|
|
30629
30629
|
var riskyAdjoiningCharExp = /[0-9a-z_$]/i;
|
|
@@ -30805,7 +30805,7 @@ var require_patcher = __commonJS({
|
|
|
30805
30805
|
return true;
|
|
30806
30806
|
if (isArray4.check(newNode))
|
|
30807
30807
|
return findArrayReprints(newPath, oldPath, reprints);
|
|
30808
|
-
if (
|
|
30808
|
+
if (isObject2.check(newNode))
|
|
30809
30809
|
return findObjectReprints(newPath, oldPath, reprints);
|
|
30810
30810
|
return false;
|
|
30811
30811
|
}
|
|
@@ -30833,12 +30833,12 @@ var require_patcher = __commonJS({
|
|
|
30833
30833
|
}
|
|
30834
30834
|
function findObjectReprints(newPath, oldPath, reprints) {
|
|
30835
30835
|
var newNode = newPath.getValue();
|
|
30836
|
-
|
|
30836
|
+
isObject2.assert(newNode);
|
|
30837
30837
|
if (newNode.original === null) {
|
|
30838
30838
|
return false;
|
|
30839
30839
|
}
|
|
30840
30840
|
var oldNode = oldPath.getValue();
|
|
30841
|
-
if (!
|
|
30841
|
+
if (!isObject2.check(oldNode))
|
|
30842
30842
|
return false;
|
|
30843
30843
|
if (newNode === oldNode || newPath.valueIsDuplicate() || oldPath.valueIsDuplicate()) {
|
|
30844
30844
|
return true;
|
|
@@ -30886,8 +30886,8 @@ var require_patcher = __commonJS({
|
|
|
30886
30886
|
function findChildReprints(newPath, oldPath, reprints) {
|
|
30887
30887
|
var newNode = newPath.getValue();
|
|
30888
30888
|
var oldNode = oldPath.getValue();
|
|
30889
|
-
|
|
30890
|
-
|
|
30889
|
+
isObject2.assert(newNode);
|
|
30890
|
+
isObject2.assert(oldNode);
|
|
30891
30891
|
if (newNode.original === null) {
|
|
30892
30892
|
return false;
|
|
30893
30893
|
}
|
|
@@ -30938,13 +30938,13 @@ var require_printer = __commonJS({
|
|
|
30938
30938
|
var util = tslib_1.__importStar(require_util2());
|
|
30939
30939
|
var namedTypes = types5.namedTypes;
|
|
30940
30940
|
var isString = types5.builtInTypes.string;
|
|
30941
|
-
var
|
|
30941
|
+
var isObject2 = types5.builtInTypes.object;
|
|
30942
30942
|
var PrintResult = function PrintResult2(code, sourceMap) {
|
|
30943
30943
|
(0, tiny_invariant_1.default)(this instanceof PrintResult2);
|
|
30944
30944
|
isString.assert(code);
|
|
30945
30945
|
this.code = code;
|
|
30946
30946
|
if (sourceMap) {
|
|
30947
|
-
|
|
30947
|
+
isObject2.assert(sourceMap);
|
|
30948
30948
|
this.map = sourceMap;
|
|
30949
30949
|
}
|
|
30950
30950
|
};
|
|
@@ -41038,10 +41038,10 @@ var require_lib2 = __commonJS({
|
|
|
41038
41038
|
stopOnStartOfClassStaticBlock,
|
|
41039
41039
|
errorTemplate = TSErrors.InvalidModifierOnTypeMember
|
|
41040
41040
|
}, modified) {
|
|
41041
|
-
const enforceOrder = (loc, modifier,
|
|
41042
|
-
if (modifier ===
|
|
41041
|
+
const enforceOrder = (loc, modifier, before3, after2) => {
|
|
41042
|
+
if (modifier === before3 && modified[after2]) {
|
|
41043
41043
|
this.raise(TSErrors.InvalidModifiersOrder, loc, {
|
|
41044
|
-
orderedModifiers: [
|
|
41044
|
+
orderedModifiers: [before3, after2]
|
|
41045
41045
|
});
|
|
41046
41046
|
}
|
|
41047
41047
|
};
|
|
@@ -53537,7 +53537,7 @@ var RUNTIME_IIFE;
|
|
|
53537
53537
|
var init_runtime_inline = __esm({
|
|
53538
53538
|
"../core/src/generated/runtime-inline.ts"() {
|
|
53539
53539
|
"use strict";
|
|
53540
|
-
RUNTIME_IIFE = '"use strict";(()=>{var ms=Object.create;var bn=Object.defineProperty;var ps=Object.getOwnPropertyDescriptor;var hs=Object.getOwnPropertyNames;var xs=Object.getPrototypeOf,gs=Object.prototype.hasOwnProperty;var ys=(t,e,n)=>e in t?bn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var te=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Ss=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of hs(e))!gs.call(t,r)&&r!==n&&bn(t,r,{get:()=>e[r],enumerable:!(i=ps(e,r))||i.enumerable});return t};var bs=(t,e,n)=>(n=t!=null?ms(xs(t)):{},Ss(e||!t||!t.__esModule?bn(n,"default",{value:t,enumerable:!0}):n,t));var ge=(t,e,n)=>ys(t,typeof e!="symbol"?e+"":e,n);var Yi=te((Tc,Tn)=>{var K=String,Qi=function(){return{isColorSupported:!1,reset:K,bold:K,dim:K,italic:K,underline:K,inverse:K,hidden:K,strikethrough:K,black:K,red:K,green:K,yellow:K,blue:K,magenta:K,cyan:K,white:K,gray:K,bgBlack:K,bgRed:K,bgGreen:K,bgYellow:K,bgBlue:K,bgMagenta:K,bgCyan:K,bgWhite:K,blackBright:K,redBright:K,greenBright:K,yellowBright:K,blueBright:K,magentaBright:K,cyanBright:K,whiteBright:K,bgBlackBright:K,bgRedBright:K,bgGreenBright:K,bgYellowBright:K,bgBlueBright:K,bgMagentaBright:K,bgCyanBright:K,bgWhiteBright:K}};Tn.exports=Qi();Tn.exports.createColors=Qi});var kn=te(()=>{});var Ut=te((vc,er)=>{"use strict";var Zi=Yi(),Xi=kn(),bt=class t extends Error{constructor(e,n,i,r,o,s){super(e),this.name="CssSyntaxError",this.reason=e,o&&(this.file=o),r&&(this.source=r),s&&(this.plugin=s),typeof n<"u"&&typeof i<"u"&&(typeof n=="number"?(this.line=n,this.column=i):(this.line=n.line,this.column=n.column,this.endLine=i.line,this.endColumn=i.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,t)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",typeof this.line<"u"&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let n=this.source;e==null&&(e=Zi.isColorSupported);let i=u=>u,r=u=>u,o=u=>u;if(e){let{bold:u,gray:h,red:f}=Zi.createColors(!0);r=x=>u(f(x)),i=x=>h(x),Xi&&(o=x=>Xi(x))}let s=n.split(/\\r?\\n/),l=Math.max(this.line-3,0),a=Math.min(this.line+2,s.length),c=String(a).length;return s.slice(l,a).map((u,h)=>{let f=l+1+h,x=" "+(" "+f).slice(-c)+" | ";if(f===this.line){if(u.length>160){let E=20,S=Math.max(0,this.column-E),D=Math.max(this.column+E,this.endColumn+E),L=u.slice(S,D),R=i(x.replace(/\\d/g," "))+u.slice(0,Math.min(this.column-1,E-1)).replace(/[^\\t]/g," ");return r(">")+i(x)+o(L)+`\n `+R+r("^")}let F=i(x.replace(/\\d/g," "))+u.slice(0,this.column-1).replace(/[^\\t]/g," ");return r(">")+i(x)+o(u)+`\n `+F+r("^")}return" "+i(x)+o(u)}).join(`\n`)}toString(){let e=this.showSourceCode();return e&&(e=`\n\n`+e+`\n`),this.name+": "+this.message+e}};er.exports=bt;bt.default=bt});var _n=te((Rc,nr)=>{"use strict";var Vs=/(<)(\\/?style\\b)/gi,Us=/(<)(!--)/g;function Ve(t){return typeof t!="string"||!t.includes("<")?t:t.replace(Vs,"\\\\3c $2").replace(Us,"\\\\3c $2")}var tr={after:`\n`,beforeClose:`\n`,beforeComment:`\n`,beforeDecl:`\n`,beforeOpen:" ",beforeRule:`\n`,colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};function zs(t){return t[0].toUpperCase()+t.slice(1)}var At=class{constructor(e){this.builder=e}atrule(e,n){let i=e.raws,r="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(typeof i.afterName<"u"?r+=i.afterName:o&&(r+=" "),e.nodes)this.block(e,r+o);else{let s=(i.between||"")+(n?";":"");this.builder(Ve(r+o+s),e)}}beforeAfter(e,n){let i;e.type==="decl"?i=this.raw(e,null,"beforeDecl"):e.type==="comment"?i=this.raw(e,null,"beforeComment"):n==="before"?i=this.raw(e,null,"beforeRule"):i=this.raw(e,null,"beforeClose");let r=e.parent,o=0;for(;r&&r.type!=="root";)o+=1,r=r.parent;if(i.includes(`\n`)){let s=this.raw(e,null,"indent");if(s.length)for(let l=0;l<o;l++)i+=s}return i}block(e,n){let i=this.raw(e,"between","beforeOpen");this.builder(Ve(n+i)+"{",e,"start");let r;e.nodes&&e.nodes.length?(this.body(e),r=this.raw(e,"after")):r=this.raw(e,"after","emptyBody"),r&&this.builder(Ve(r)),this.builder("}",e,"end")}body(e){let n=e.nodes,i=n.length-1;for(;i>0&&n[i].type==="comment";)i-=1;let r=this.raw(e,"semicolon"),o=e.type==="document";for(let s=0;s<n.length;s++){let l=n[s],a=this.raw(l,"before");a&&this.builder(o?a:Ve(a)),this.stringify(l,i!==s||r)}}comment(e){let n=this.raw(e,"left","commentLeft"),i=this.raw(e,"right","commentRight");this.builder(Ve("/*"+n+e.text+i+"*/"),e)}decl(e,n){let i=e.raws,r=this.raw(e,"between","colon"),o=e.prop+r+this.rawValue(e,"value");e.important&&(o+=i.important||" !important"),n&&(o+=";"),this.builder(Ve(o),e)}document(e){this.body(e)}raw(e,n,i){let r;if(i||(i=n),n&&(r=e.raws[n],typeof r<"u"))return r;let o=e.parent;if(i==="before"&&(!o||o.type==="root"&&o.first===e||o&&o.type==="document"))return"";if(!o)return tr[i];let s=e.root(),l=s.rawCache||(s.rawCache={});if(typeof l[i]<"u")return l[i];if(i==="before"||i==="after")return this.beforeAfter(e,i);{let a="raw"+zs(i);this[a]?r=this[a](s,e):s.walk(c=>{if(r=c.raws[n],typeof r<"u")return!1})}return typeof r>"u"&&(r=tr[i]),l[i]=r,r}rawBeforeClose(e){let n;return e.walk(i=>{if(i.nodes&&i.nodes.length>0&&typeof i.raws.after<"u")return n=i.raws.after,n.includes(`\n`)&&(n=n.replace(/[^\\n]+$/,"")),!1}),n&&(n=n.replace(/\\S/g,"")),n}rawBeforeComment(e,n){let i;return e.walkComments(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(`\n`)&&(i=i.replace(/[^\\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(n,null,"beforeDecl"):i&&(i=i.replace(/\\S/g,"")),i}rawBeforeDecl(e,n){let i;return e.walkDecls(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(`\n`)&&(i=i.replace(/[^\\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(n,null,"beforeRule"):i&&(i=i.replace(/\\S/g,"")),i}rawBeforeOpen(e){let n;return e.walk(i=>{if(i.type!=="decl"&&(n=i.raws.between,typeof n<"u"))return!1}),n}rawBeforeRule(e){let n;return e.walk(i=>{if(i.nodes&&(i.parent!==e||e.first!==i)&&typeof i.raws.before<"u")return n=i.raws.before,n.includes(`\n`)&&(n=n.replace(/[^\\n]+$/,"")),!1}),n&&(n=n.replace(/\\S/g,"")),n}rawColon(e){let n;return e.walkDecls(i=>{if(typeof i.raws.between<"u")return n=i.raws.between.replace(/[^\\s:]/g,""),!1}),n}rawEmptyBody(e){let n;return e.walk(i=>{if(i.nodes&&i.nodes.length===0&&(n=i.raws.after,typeof n<"u"))return!1}),n}rawIndent(e){if(e.raws.indent)return e.raws.indent;let n;return e.walk(i=>{let r=i.parent;if(r&&r!==e&&r.parent&&r.parent===e&&typeof i.raws.before<"u"){let o=i.raws.before.split(`\n`);return n=o[o.length-1],n=n.replace(/\\S/g,""),!1}}),n}rawSemicolon(e){let n;return e.walk(i=>{if(i.nodes&&i.nodes.length&&i.last.type==="decl"&&(n=i.raws.semicolon,typeof n<"u"))return!1}),n}rawValue(e,n){let i=e[n],r=e.raws[n];return r&&r.value===i?r.raw:i}root(e){if(this.body(e),e.raws.after){let n=e.raws.after,i=e.parent&&e.parent.type==="document";this.builder(i?n:Ve(n))}}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(Ve(e.raws.ownSemicolon),e,"end")}stringify(e,n){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,n)}};nr.exports=At;At.default=At});var Et=te((Lc,ir)=>{"use strict";var js=_n();function vn(t,e){new js(e).stringify(t)}ir.exports=vn;vn.default=vn});var zt=te((Dc,Rn)=>{"use strict";Rn.exports.isClean=Symbol("isClean");Rn.exports.my=Symbol("my")});var Nt=te((Bc,rr)=>{"use strict";var Gs=Ut(),$s=_n(),Ks=Et(),{isClean:Ft,my:Js}=zt();function Ln(t,e){let n=new t.constructor;for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i)||i==="proxyCache")continue;let r=t[i],o=typeof r;i==="parent"&&o==="object"?e&&(n[i]=e):i==="source"?n[i]=r:Array.isArray(r)?n[i]=r.map(s=>Ln(s,n)):(o==="object"&&r!==null&&(r=Ln(r)),n[i]=r)}return n}function Oe(t,e){if(e&&typeof e.offset<"u")return e.offset;let n=1,i=1,r=0;for(let o=0;o<t.length;o++){if(i===e.line&&n===e.column){r=o;break}t[o]===`\n`?(n=1,i+=1):n+=1}return r}var wt=class{get proxyOf(){return this}constructor(e={}){this.raws={},this[Ft]=!1,this[Js]=!0;for(let n in e)if(n==="nodes"){this.nodes=[];for(let i of e[n])typeof i.clone=="function"?this.append(i.clone()):this.append(i)}else this[n]=e[n]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\\n\\s{4}at /.test(e.stack)){let n=this.source;e.stack=e.stack.replace(/\\n\\s{4}at /,`$&${n.input.from}:${n.start.line}:${n.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let n in e)this[n]=e[n];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let n=Ln(this);for(let i in e)n[i]=e[i];return n}cloneAfter(e={}){let n=this.clone(e);return this.parent.insertAfter(this,n),n}cloneBefore(e={}){let n=this.clone(e);return this.parent.insertBefore(this,n),n}error(e,n={}){if(this.source){let{end:i,start:r}=this.rangeBy(n);return this.source.input.error(e,{column:r.column,line:r.line},{column:i.column,line:i.line},n)}return new Gs(e)}getProxyProcessor(){return{get(e,n){return n==="proxyOf"?e:n==="root"?()=>e.root().toProxy():e[n]},set(e,n,i){return e[n]===i||(e[n]=i,(n==="prop"||n==="value"||n==="name"||n==="params"||n==="important"||n==="text")&&e.markDirty()),!0}}}markClean(){this[Ft]=!0}markDirty(){if(this[Ft]){this[Ft]=!1;let e=this;for(;e=e.parent;)e[Ft]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e={}){let n=this.source.start;if(e.index)n=this.positionInside(e.index);else if(e.word){let i="document"in this.source.input?this.source.input.document:this.source.input.css,o=i.slice(Oe(i,this.source.start),Oe(i,this.source.end)).indexOf(e.word);o!==-1&&(n=this.positionInside(o))}return n}positionInside(e){let n=this.source.start.column,i=this.source.start.line,r="document"in this.source.input?this.source.input.document:this.source.input.css,o=Oe(r,this.source.start),s=o+e;for(let l=o;l<s;l++)r[l]===`\n`?(n=1,i+=1):n+=1;return{column:n,line:i,offset:s}}prev(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e-1]}rangeBy(e={}){let n="document"in this.source.input?this.source.input.document:this.source.input.css,i={column:this.source.start.column,line:this.source.start.line,offset:Oe(n,this.source.start)},r=this.source.end?{column:this.source.end.column+1,line:this.source.end.line,offset:typeof this.source.end.offset=="number"?this.source.end.offset:Oe(n,this.source.end)+1}:{column:i.column+1,line:i.line,offset:i.offset+1};if(e.word){let s=n.slice(Oe(n,this.source.start),Oe(n,this.source.end)).indexOf(e.word);s!==-1&&(i=this.positionInside(s),r=this.positionInside(s+e.word.length))}else e.start?i={column:e.start.column,line:e.start.line,offset:Oe(n,e.start)}:e.index&&(i=this.positionInside(e.index)),e.end?r={column:e.end.column,line:e.end.line,offset:Oe(n,e.end)}:typeof e.endIndex=="number"?r=this.positionInside(e.endIndex):e.index&&(r=this.positionInside(e.index+1));return(r.line<i.line||r.line===i.line&&r.column<=i.column)&&(r={column:i.column+1,line:i.line,offset:i.offset+1}),{end:r,start:i}}raw(e,n){return new $s().raw(this,e,n)}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}replaceWith(...e){if(this.parent){let n=this,i=!1;for(let r of e)r===this?i=!0:i?(this.parent.insertAfter(n,r),n=r):this.parent.insertBefore(n,r);i||this.remove()}return this}root(){let e=this;for(;e.parent&&e.parent.type!=="document";)e=e.parent;return e}toJSON(e,n){let i={},r=n==null;n=n||new Map;let o=0;for(let s in this){if(!Object.prototype.hasOwnProperty.call(this,s)||s==="parent"||s==="proxyCache")continue;let l=this[s];if(Array.isArray(l))i[s]=l.map(a=>typeof a=="object"&&a.toJSON?a.toJSON(null,n):a);else if(typeof l=="object"&&l.toJSON)i[s]=l.toJSON(null,n);else if(s==="source"){if(l==null)continue;let a=n.get(l.input);a==null&&(a=o,n.set(l.input,o),o++),i[s]={end:l.end,inputId:a,start:l.start}}else i[s]=l}return r&&(i.inputs=[...n.keys()].map(s=>s.toJSON())),i}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=Ks){e.stringify&&(e=e.stringify);let n="";return e(this,i=>{n+=i}),n}warn(e,n,i={}){let r={node:this};for(let o in i)r[o]=i[o];return e.warn(n,r)}};rr.exports=wt;wt.default=wt});var Mt=te((Ic,or)=>{"use strict";var Qs=Nt(),Ct=class extends Qs{constructor(e){super(e),this.type="comment"}};or.exports=Ct;Ct.default=Ct});var kt=te((Oc,sr)=>{"use strict";var Ys=Nt(),Tt=class extends Ys{get variable(){return this.prop.startsWith("--")||this.prop[0]==="$"}constructor(e){e&&typeof e.value<"u"&&typeof e.value!="string"&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}};sr.exports=Tt;Tt.default=Tt});var Ue=te((Pc,hr)=>{"use strict";var ar=Mt(),lr=kt(),Zs=Nt(),{isClean:ur,my:cr}=zt(),Dn,dr,fr,Bn;function mr(t){return t.map(e=>(e.nodes&&(e.nodes=mr(e.nodes)),delete e.source,e))}function pr(t){if(t[ur]=!1,t.proxyOf.nodes)for(let e of t.proxyOf.nodes)pr(e)}var Re=class t extends Zs{get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}append(...e){for(let n of e){let i=this.normalize(n,this.last);for(let r of i)this.proxyOf.nodes.push(r)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let n of this.nodes)n.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let n=this.getIterator(),i,r;for(;this.indexes[n]<this.proxyOf.nodes.length&&(i=this.indexes[n],r=e(this.proxyOf.nodes[i],i),r!==!1);)this.indexes[n]+=1;return delete this.indexes[n],r}every(e){return this.nodes.every(e)}getIterator(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let e=this.lastEach;return this.indexes[e]=0,e}getProxyProcessor(){return{get(e,n){return n==="proxyOf"?e:e[n]?n==="each"||typeof n=="string"&&n.startsWith("walk")?(...i)=>e[n](...i.map(r=>typeof r=="function"?(o,s)=>r(o.toProxy(),s):r)):n==="every"||n==="some"?i=>e[n]((r,...o)=>i(r.toProxy(),...o)):n==="root"?()=>e.root().toProxy():n==="nodes"?e.nodes.map(i=>i.toProxy()):n==="first"||n==="last"?e[n].toProxy():e[n]:e[n]},set(e,n,i){return e[n]===i||(e[n]=i,(n==="name"||n==="params"||n==="selector")&&e.markDirty()),!0}}}index(e){return typeof e=="number"?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,n){let i=this.index(e),r=this.normalize(n,this.proxyOf.nodes[i]).reverse();i=this.index(e);for(let s of r)this.proxyOf.nodes.splice(i+1,0,s);let o;for(let s in this.indexes)o=this.indexes[s],i<o&&(this.indexes[s]=o+r.length);return this.markDirty(),this}insertBefore(e,n){let i=this.index(e),r=i===0?"prepend":!1,o=this.normalize(n,this.proxyOf.nodes[i],r).reverse();i=this.index(e);for(let l of o)this.proxyOf.nodes.splice(i,0,l);let s;for(let l in this.indexes)s=this.indexes[l],i<=s&&(this.indexes[l]=s+o.length);return this.markDirty(),this}normalize(e,n){if(typeof e=="string")e=mr(dr(e).nodes);else if(typeof e>"u")e=[];else if(Array.isArray(e)){e=e.slice(0);for(let r of e)r.parent&&r.parent.removeChild(r,"ignore")}else if(e.type==="root"&&this.type!=="document"){e=e.nodes.slice(0);for(let r of e)r.parent&&r.parent.removeChild(r,"ignore")}else if(e.type)e=[e];else if(e.prop){if(typeof e.value>"u")throw new Error("Value field is missed in node creation");typeof e.value!="string"&&(e.value=String(e.value)),e=[new lr(e)]}else if(e.selector||e.selectors)e=[new Bn(e)];else if(e.name)e=[new Dn(e)];else if(e.text)e=[new ar(e)];else throw new Error("Unknown node type in node creation");return e.map(r=>(r[cr]||t.rebuild(r),r=r.proxyOf,r.parent&&r.parent.removeChild(r),r[ur]&&pr(r),r.raws||(r.raws={}),typeof r.raws.before>"u"&&n&&typeof n.raws.before<"u"&&(r.raws.before=n.raws.before.replace(/\\S/g,"")),r.parent=this.proxyOf,r))}prepend(...e){e=e.reverse();for(let n of e){let i=this.normalize(n,this.first,"prepend").reverse();for(let r of i)this.proxyOf.nodes.unshift(r);for(let r in this.indexes)this.indexes[r]=this.indexes[r]+i.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);let n;for(let i in this.indexes)n=this.indexes[i],n>=e&&(this.indexes[i]=n-1);return this.markDirty(),this}replaceValues(e,n,i){return i||(i=n,n={}),this.walkDecls(r=>{n.props&&!n.props.includes(r.prop)||n.fast&&!r.value.includes(n.fast)||(r.value=r.value.replace(e,i))}),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each((n,i)=>{let r;try{r=e(n,i)}catch(o){throw n.addToError(o)}return r!==!1&&n.walk&&(r=n.walk(e)),r})}walkAtRules(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="atrule"&&e.test(i.name))return n(i,r)}):this.walk((i,r)=>{if(i.type==="atrule"&&i.name===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="atrule")return n(i,r)}))}walkComments(e){return this.walk((n,i)=>{if(n.type==="comment")return e(n,i)})}walkDecls(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="decl"&&e.test(i.prop))return n(i,r)}):this.walk((i,r)=>{if(i.type==="decl"&&i.prop===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="decl")return n(i,r)}))}walkRules(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="rule"&&e.test(i.selector))return n(i,r)}):this.walk((i,r)=>{if(i.type==="rule"&&i.selector===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="rule")return n(i,r)}))}};Re.registerParse=t=>{dr=t};Re.registerRule=t=>{Bn=t};Re.registerAtRule=t=>{Dn=t};Re.registerRoot=t=>{fr=t};hr.exports=Re;Re.default=Re;Re.rebuild=t=>{t.type==="atrule"?Object.setPrototypeOf(t,Dn.prototype):t.type==="rule"?Object.setPrototypeOf(t,Bn.prototype):t.type==="decl"?Object.setPrototypeOf(t,lr.prototype):t.type==="comment"?Object.setPrototypeOf(t,ar.prototype):t.type==="root"&&Object.setPrototypeOf(t,fr.prototype),t[cr]=!0,t.nodes&&t.nodes.forEach(e=>{Re.rebuild(e)})}});var jt=te((Hc,gr)=>{"use strict";var xr=Ue(),nt=class extends xr{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};gr.exports=nt;nt.default=nt;xr.registerAtRule(nt)});var Gt=te((Wc,br)=>{"use strict";var Xs=Ue(),yr,Sr,Ye=class extends Xs{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new yr(new Sr,this,e).stringify()}};Ye.registerLazyResult=t=>{yr=t};Ye.registerProcessor=t=>{Sr=t};br.exports=Ye;Ye.default=Ye});var Er=te((qc,Ar)=>{var ea="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",ta=(t,e=21)=>(n=e)=>{let i="",r=n|0;for(;r--;)i+=t[Math.random()*t.length|0];return i},na=(t=21)=>{let e="",n=t|0;for(;n--;)e+=ea[Math.random()*64|0];return e};Ar.exports={nanoid:na,customAlphabet:ta}});var $t=te(()=>{});var Kt=te(()=>{});var In=te(()=>{});var Fr=te(()=>{});var Pn=te((Qc,Cr)=>{"use strict";var{existsSync:ia,readFileSync:ra}=Fr(),{dirname:On,join:oa}=$t(),{SourceMapConsumer:wr,SourceMapGenerator:Nr}=Kt();function sa(t){return Buffer?Buffer.from(t,"base64").toString():window.atob(t)}var _t=class{constructor(e,n){if(n.map===!1)return;n.unsafeMap&&(this.unsafeMap=!0),this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let i=n.map?n.map.prev:void 0,r=this.loadMap(n.from,i);!this.mapFile&&n.from&&(this.mapFile=n.from),this.mapFile&&(this.root=On(this.mapFile)),r&&(this.text=r)}consumer(){return this.consumerCache||(this.consumerCache=new wr(this.json||this.text)),this.consumerCache}decodeInline(e){let n=/^data:application\\/json;charset=utf-?8;base64,/,i=/^data:application\\/json;base64,/,r=/^data:application\\/json;charset=utf-?8,/,o=/^data:application\\/json,/,s=e.match(r)||e.match(o);if(s)return decodeURIComponent(e.substr(s[0].length));let l=e.match(n)||e.match(i);if(l)return sa(e.substr(l[0].length));let a=e.slice(22);throw a=a.slice(0,a.indexOf(",")),new Error("Unsupported source map encoding "+a)}getAnnotationURL(e){return e.replace(/^\\/\\*\\s*# sourceMappingURL=/,"").trim()}isMap(e){return typeof e!="object"?!1:typeof e.mappings=="string"||typeof e._mappings=="string"||Array.isArray(e.sections)}loadAnnotation(e){let n=e.match(/\\/\\*\\s*# sourceMappingURL=/g);if(!n)return;let i=e.lastIndexOf(n.pop()),r=e.indexOf("*/",i);i>-1&&r>-1&&(this.annotation=this.getAnnotationURL(e.substring(i,r)))}loadFile(e,n,i){if(!(!i&&!this.unsafeMap&&!/\\.map$/i.test(e))&&(this.root=On(e),ia(e)))return this.mapFile=e,ra(e,"utf-8").toString().trim()}loadMap(e,n){if(n===!1)return!1;if(n){if(typeof n=="string")return n;if(typeof n=="function"){let i=n(e);if(i){let r=this.loadFile(i,e,!0);if(!r)throw new Error("Unable to load previous source map: "+i.toString());return r}}else{if(n instanceof wr)return Nr.fromSourceMap(n).toString();if(n instanceof Nr)return n.toString();if(this.isMap(n))return JSON.stringify(n);throw new Error("Unsupported previous source map format: "+n.toString())}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let i=this.annotation;e&&(i=oa(On(e),i));let r=this.loadFile(i,e,!1);if(r)try{this.json=JSON.parse(r.replace(/^\\)]}\'[^\\n]*\\n/,""))}catch{return}return r}}}startWith(e,n){return e?e.substr(0,n.length)===n:!1}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};Cr.exports=_t;_t.default=_t});var vt=te((Yc,vr)=>{"use strict";var{nanoid:aa}=Er(),{isAbsolute:qn,resolve:Vn}=$t(),{SourceMapConsumer:la,SourceMapGenerator:ua}=Kt(),{fileURLToPath:Mr,pathToFileURL:Jt}=In(),Tr=Ut(),ca=Pn(),Hn=kn(),Wn=Symbol("lineToIndexCache"),da=!!(la&&ua),kr=!!(Vn&&qn);function _r(t){if(t[Wn])return t[Wn];let e=t.css.split(`\n`),n=new Array(e.length),i=0;for(let r=0,o=e.length;r<o;r++)n[r]=i,i+=e[r].length+1;return t[Wn]=n,n}var it=class{get from(){return this.file||this.id}constructor(e,n={}){if(e===null||typeof e>"u"||typeof e=="object"&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),this.css[0]==="\\uFEFF"||this.css[0]==="\\uFFFE"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,this.document=this.css,n.document&&(this.document=n.document.toString()),n.from&&(!kr||/^\\w+:\\/\\//.test(n.from)||qn(n.from)?this.file=n.from:this.file=Vn(n.from)),kr&&da){let i=new ca(this.css,n);if(i.text){this.map=i;let r=i.consumer().file;!this.file&&r&&(this.file=this.mapResolve(r))}}this.file||(this.id="<input css "+aa(6)+">"),this.map&&(this.map.file=this.from)}error(e,n,i,r={}){let o,s,l,a,c;if(n&&typeof n=="object"){let h=n,f=i;if(typeof h.offset=="number"){a=h.offset;let x=this.fromOffset(a);n=x.line,i=x.col}else n=h.line,i=h.column,a=this.fromLineAndColumn(n,i);if(typeof f.offset=="number"){l=f.offset;let x=this.fromOffset(l);s=x.line,o=x.col}else s=f.line,o=f.column,l=this.fromLineAndColumn(f.line,f.column)}else if(i)a=this.fromLineAndColumn(n,i);else{a=n;let h=this.fromOffset(a);n=h.line,i=h.col}let u=this.origin(n,i,s,o);return u?c=new Tr(e,u.endLine===void 0?u.line:{column:u.column,line:u.line},u.endLine===void 0?u.column:{column:u.endColumn,line:u.endLine},u.source,u.file,r.plugin):c=new Tr(e,s===void 0?n:{column:i,line:n},s===void 0?i:{column:o,line:s},this.css,this.file,r.plugin),c.input={column:i,endColumn:o,endLine:s,endOffset:l,line:n,offset:a,source:this.css},this.file&&(Jt&&(c.input.url=Jt(this.file).toString()),c.input.file=this.file),c}fromLineAndColumn(e,n){return _r(this)[e-1]+n-1}fromOffset(e){let n=_r(this),i=n[n.length-1],r=0;if(e>=i)r=n.length-1;else{let o=n.length-2,s;for(;r<o;)if(s=r+(o-r>>1),e<n[s])o=s-1;else if(e>=n[s+1])r=s+1;else{r=s;break}}return{col:e-n[r]+1,line:r+1}}mapResolve(e){return/^\\w+:\\/\\//.test(e)?e:Vn(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,n,i,r){if(!this.map)return!1;let o=this.map.consumer(),s=o.originalPositionFor({column:n,line:e});if(!s.source)return!1;let l;typeof i=="number"&&(l=o.originalPositionFor({column:r,line:i}));let a;qn(s.source)?a=Jt(s.source):a=new URL(s.source,this.map.consumer().sourceRoot||Jt(this.map.mapFile));let c={column:s.column,endColumn:l&&l.column,endLine:l&&l.line,line:s.line,url:a.toString()};if(a.protocol==="file:")if(Mr)c.file=Mr(a);else throw new Error("file: protocol is not available in this PostCSS build");let u=o.sourceContentFor(s.source);return u&&(c.source=u),c}toJSON(){let e={};for(let n of["hasBOM","css","file","id"])this[n]!=null&&(e[n]=this[n]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}};vr.exports=it;it.default=it;Hn&&Hn.registerInput&&Hn.registerInput(it)});var rt=te((Zc,Br)=>{"use strict";var Rr=Ue(),Lr,Dr,ze=class extends Rr{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,n,i){let r=super.normalize(e);if(n){if(i==="prepend")this.nodes.length>1?n.raws.before=this.nodes[1].raws.before:delete n.raws.before;else if(this.first!==n)for(let o of r)o.raws.before=n.raws.before}return r}removeChild(e,n){let i=this.index(e);return!n&&i===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[i].raws.before),super.removeChild(e)}toResult(e={}){return new Lr(new Dr,this,e).stringify()}};ze.registerLazyResult=t=>{Lr=t};ze.registerProcessor=t=>{Dr=t};Br.exports=ze;ze.default=ze;Rr.registerRoot(ze)});var Un=te((Xc,Ir)=>{"use strict";var Rt={comma(t){return Rt.split(t,[","],!0)},space(t){let e=[" ",`\n`," "];return Rt.split(t,e)},split(t,e,n){let i=[],r="",o=!1,s=0,l=!1,a="",c=!1;for(let u of t)c?c=!1:u==="\\\\"?c=!0:l?u===a&&(l=!1):u===\'"\'||u==="\'"?(l=!0,a=u):u==="("?s+=1:u===")"?s>0&&(s-=1):s===0&&e.includes(u)&&(o=!0),o?(r!==""&&i.push(r.trim()),r="",o=!1):r+=u;return(n||r!=="")&&i.push(r.trim()),i}};Ir.exports=Rt;Rt.default=Rt});var Qt=te((ed,Pr)=>{"use strict";var Or=Ue(),fa=Un(),ot=class extends Or{get selectors(){return fa.comma(this.selector)}set selectors(e){let n=this.selector?this.selector.match(/,\\s*/):null,i=n?n[0]:","+this.raw("between","beforeOpen");this.selector=e.join(i)}constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}};Pr.exports=ot;ot.default=ot;Or.registerRule(ot)});var Wr=te((td,Hr)=>{"use strict";var ma=jt(),pa=Mt(),ha=kt(),xa=vt(),ga=Pn(),ya=rt(),Sa=Qt();function Lt(t,e){if(Array.isArray(t))return t.map(r=>Lt(r));let{inputs:n,...i}=t;if(n){e=[];for(let r of n){let o={...r,__proto__:xa.prototype};o.map&&(o.map={...o.map,__proto__:ga.prototype}),e.push(o)}}if(i.nodes&&(i.nodes=t.nodes.map(r=>Lt(r,e))),i.source){let{inputId:r,...o}=i.source;i.source=o,r!=null&&(i.source.input=e[r])}if(i.type==="root")return new ya(i);if(i.type==="decl")return new ha(i);if(i.type==="rule")return new Sa(i);if(i.type==="comment")return new pa(i);if(i.type==="atrule")return new ma(i);throw new Error("Unknown node type: "+t.type)}Hr.exports=Lt;Lt.default=Lt});var jn=te((nd,Gr)=>{"use strict";var{dirname:Yt,relative:Vr,resolve:Ur,sep:zr}=$t(),{SourceMapConsumer:jr,SourceMapGenerator:Zt}=Kt(),{pathToFileURL:qr}=In(),ba=vt(),Aa=!!(jr&&Zt),Ea=!!(Yt&&Ur&&Vr&&zr),zn=class{constructor(e,n,i,r){this.stringify=e,this.mapOpts=i.map||{},this.root=n,this.opts=i,this.css=r,this.originalCSS=r,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;this.isInline()?e="data:application/json;base64,"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation=="string"?e=this.mapOpts.annotation:typeof this.mapOpts.annotation=="function"?e=this.mapOpts.annotation(this.opts.to,this.root):e=this.outputFile()+".map";let n=`\n`;this.css.includes(`\\r\n`)&&(n=`\\r\n`),this.css+=n+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let n=this.toUrl(this.path(e.file)),i=e.root||Yt(e.file),r;this.mapOpts.sourcesContent===!1?(r=new jr(e.text),r.sourcesContent&&(r.sourcesContent=null)):r=e.consumer(),this.map.applySourceMap(r,n,this.toUrl(this.path(i)))}}clearAnnotation(){if(this.mapOpts.annotation!==!1){if(this.root){let e;for(let n=this.root.nodes.length-1;n>=0;n--)e=this.root.nodes[n],e.type==="comment"&&e.text.startsWith("# sourceMappingURL=")&&this.root.removeChild(n)}else if(this.css){let e;for(;(e=this.css.lastIndexOf("/*#"))!==-1;){let n=this.css.indexOf("*/",e+3);if(n===-1)break;for(;e>0&&this.css[e-1]===`\n`;)e--;this.css=this.css.slice(0,e)+this.css.slice(n+2)}}}}generate(){if(this.clearAnnotation(),Ea&&Aa&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,n=>{e+=n}),[e]}}generateMap(){if(this.root)this.generateString();else if(this.previous().length===1){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Zt.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Zt({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>"});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Zt({file:this.outputFile(),ignoreInvalidMapping:!0});let e=1,n=1,i="<no source>",r={generated:{column:0,line:0},original:{column:0,line:0},source:""},o,s;this.stringify(this.root,(l,a,c)=>{if(this.css+=l,a&&c!=="end"&&(r.generated.line=e,r.generated.column=n-1,a.source&&a.source.start?(r.source=this.sourcePath(a),r.original.line=a.source.start.line,r.original.column=a.source.start.column-1,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,this.map.addMapping(r))),s=l.match(/\\n/g),s?(e+=s.length,o=l.lastIndexOf(`\n`),n=l.length-o):n+=l.length,a&&c!=="start"){let u=a.parent||{raws:{}};(!(a.type==="decl"||a.type==="atrule"&&!a.nodes)||a!==u.last||u.raws.semicolon)&&(a.source&&a.source.end?(r.source=this.sourcePath(a),r.original.line=a.source.end.line,r.original.column=a.source.end.column-1,r.generated.line=e,r.generated.column=n-2,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,r.generated.line=e,r.generated.column=n-1,this.map.addMapping(r)))}})}isAnnotation(){return this.isInline()?!0:typeof this.mapOpts.annotation<"u"?this.mapOpts.annotation:this.previous().length?this.previous().some(e=>e.annotation):!0}isInline(){if(typeof this.mapOpts.inline<"u")return this.mapOpts.inline;let e=this.mapOpts.annotation;return typeof e<"u"&&e!==!0?!1:this.previous().length?this.previous().some(n=>n.inline):!0}isMap(){return typeof this.opts.map<"u"?!!this.opts.map:this.previous().length>0}isSourcesContent(){return typeof this.mapOpts.sourcesContent<"u"?this.mapOpts.sourcesContent:this.previous().length?this.previous().some(e=>e.withContent()):!0}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute||e.charCodeAt(0)===60||/^\\w+:\\/\\//.test(e))return e;let n=this.memoizedPaths.get(e);if(n)return n;let i=this.opts.to?Yt(this.opts.to):".";typeof this.mapOpts.annotation=="string"&&(i=Yt(Ur(i,this.mapOpts.annotation)));let r=Vr(i,e);return this.memoizedPaths.set(e,r),r}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(e=>{if(e.source&&e.source.input.map){let n=e.source.input.map;this.previousMaps.includes(n)||this.previousMaps.push(n)}});else{let e=new ba(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk(n=>{if(n.source){let i=n.source.input.from;if(i&&!e[i]){e[i]=!0;let r=this.usesFileUrls?this.toFileUrl(i):this.toUrl(this.path(i));this.map.setSourceContent(r,n.source.input.css)}}});else if(this.css){let n=this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>";this.map.setSourceContent(n,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let n=this.memoizedFileURLs.get(e);if(n)return n;if(qr){let i=qr(e).toString();return this.memoizedFileURLs.set(e,i),i}else throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let n=this.memoizedURLs.get(e);if(n)return n;zr==="\\\\"&&(e=e.replace(/\\\\/g,"/"));let i=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,i),i}};Gr.exports=zn});var Jr=te((id,Kr)=>{"use strict";var Xt=/[\\t\\n\\f\\r "#\'()/;[\\\\\\]{}]/g,en=/[\\t\\n\\f\\r !"#\'():;@[\\\\\\]{}]|\\/(?=\\*)/g,Fa=/.[\\r\\n"\'(/\\\\]/,$r=/[\\da-f]/i;Kr.exports=function(e,n={}){let i=e.css.valueOf(),r=n.ignoreErrors,o,s,l,a,c,u,h,f,x,F,E=i.length,S=0,D=[],L=[],R=-1;function ne(){return S}function q(N){throw e.error("Unclosed "+N,S)}function C(){return L.length===0&&S>=E}function g(N){if(L.length)return L.pop();if(S>=E)return;let w=N?N.ignoreUnclosed:!1;switch(o=i.charCodeAt(S),o){case 10:case 32:case 9:case 13:case 12:{a=S;do a+=1,o=i.charCodeAt(a);while(o===32||o===10||o===9||o===13||o===12);u=["space",i.slice(S,a)],S=a-1;break}case 91:case 93:case 123:case 125:case 58:case 59:case 41:{let _=String.fromCharCode(o);u=[_,_,S];break}case 40:{if(F=D.length?D.pop()[1]:"",x=i.charCodeAt(S+1),F==="url"&&x!==39&&x!==34&&x!==32&&x!==10&&x!==9&&x!==12&&x!==13){a=S;do{if(h=!1,a=i.indexOf(")",a+1),a===-1)if(r||w){a=S;break}else q("bracket");for(f=a;i.charCodeAt(f-1)===92;)f-=1,h=!h}while(h);u=["brackets",i.slice(S,a+1),S,a],S=a}else S<=R?u=["(","(",S]:(a=i.indexOf(")",S+1),s=i.slice(S,a+1),a===-1||Fa.test(s)?(R=a===-1?E:a,u=["(","(",S]):(u=["brackets",s,S,a],S=a));break}case 39:case 34:{c=o===39?"\'":\'"\',a=S;do{if(h=!1,a=i.indexOf(c,a+1),a===-1)if(r||w){a=S+1;break}else q("string");for(f=a;i.charCodeAt(f-1)===92;)f-=1,h=!h}while(h);u=["string",i.slice(S,a+1),S,a],S=a;break}case 64:{Xt.lastIndex=S+1,Xt.test(i),Xt.lastIndex===0?a=i.length-1:a=Xt.lastIndex-2,u=["at-word",i.slice(S,a+1),S,a],S=a;break}case 92:{for(a=S,l=!0;i.charCodeAt(a+1)===92;)a+=1,l=!l;if(o=i.charCodeAt(a+1),l&&o!==47&&o!==32&&o!==10&&o!==9&&o!==13&&o!==12&&(a+=1,$r.test(i.charAt(a)))){for(;$r.test(i.charAt(a+1));)a+=1;i.charCodeAt(a+1)===32&&(a+=1)}u=["word",i.slice(S,a+1),S,a],S=a;break}default:{o===47&&i.charCodeAt(S+1)===42?(a=i.indexOf("*/",S+2)+1,a===0&&(r||w?a=i.length:q("comment")),u=["comment",i.slice(S,a+1),S,a],S=a):(en.lastIndex=S+1,en.test(i),en.lastIndex===0?a=i.length-1:a=en.lastIndex-2,u=["word",i.slice(S,a+1),S,a],D.push(u),S=a);break}}return S++,u}function b(N){L.push(N)}return{back:b,endOfFile:C,nextToken:g,position:ne}}});var Xr=te((rd,Zr)=>{"use strict";var wa=jt(),Na=Mt(),Ca=kt(),Ma=rt(),Qr=Qt(),Ta=Jr(),Yr={empty:!0,space:!0};function ka(t){for(let e=t.length-1;e>=0;e--){let n=t[e],i=n[3]||n[2];if(i)return i}}var Gn=class{constructor(e){this.input=e,this.root=new Ma,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let n=new wa;n.name=e[1].slice(1),n.name===""&&this.unnamedAtrule(n,e),this.init(n,e[2]);let i,r,o,s=!1,l=!1,a=[],c=[];for(;!this.tokenizer.endOfFile();){if(e=this.tokenizer.nextToken(),i=e[0],i==="("||i==="["?c.push(i==="("?")":"]"):i==="{"&&c.length>0?c.push("}"):i===c[c.length-1]&&c.pop(),c.length===0)if(i===";"){n.source.end=this.getPosition(e[2]),n.source.end.offset++,this.semicolon=!0;break}else if(i==="{"){l=!0;break}else if(i==="}"){if(a.length>0){for(o=a.length-1,r=a[o];r&&r[0]==="space";)r=a[--o];r&&(n.source.end=this.getPosition(r[3]||r[2]),n.source.end.offset++)}this.end(e);break}else a.push(e);else a.push(e);if(this.tokenizer.endOfFile()){s=!0;break}}n.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(n.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(n,"params",a),s&&(e=a[a.length-1],n.source.end=this.getPosition(e[3]||e[2]),n.source.end.offset++,this.spaces=n.raws.between,n.raws.between="")):(n.raws.afterName="",n.params=""),l&&(n.nodes=[],this.current=n)}checkMissedSemicolon(e){let n=this.colon(e);if(n===!1)return;let i=0,r;for(let o=n-1;o>=0&&(r=e[o],!(r[0]!=="space"&&(i+=1,i===2)));o--);throw this.input.error("Missed semicolon",r[0]==="word"?r[3]+1:r[2])}colon(e){let n=0,i,r,o;for(let[s,l]of e.entries()){if(r=l,o=r[0],o==="("&&(n+=1),o===")"&&(n-=1),n===0&&o===":")if(!i)this.doubleColon(r);else{if(i[0]==="word"&&i[1]==="progid")continue;return s}i=r}return!1}comment(e){let n=new Na;this.init(n,e[2]),n.source.end=this.getPosition(e[3]||e[2]),n.source.end.offset++;let i=e[1].slice(2,-2);if(!i.trim())n.text="",n.raws.left=i,n.raws.right="";else{let r=i.match(/^(\\s*)([^]*\\S)(\\s*)$/);n.text=r[2],n.raws.left=r[1],n.raws.right=r[3]}}createTokenizer(){this.tokenizer=Ta(this.input)}decl(e,n){let i=new Ca;this.init(i,e[0][2]);let r=e[e.length-1];for(r[0]===";"&&(this.semicolon=!0,e.pop()),i.source.end=this.getPosition(r[3]||r[2]||ka(e)),i.source.end.offset++;e[0][0]!=="word";)e.length===1&&this.unknownWord(e),i.raws.before+=e.shift()[1];for(i.source.start=this.getPosition(e[0][2]),i.prop="";e.length;){let c=e[0][0];if(c===":"||c==="space"||c==="comment")break;i.prop+=e.shift()[1]}i.raws.between="";let o;for(;e.length;)if(o=e.shift(),o[0]===":"){i.raws.between+=o[1];break}else o[0]==="word"&&/\\w/.test(o[1])&&this.unknownWord([o]),i.raws.between+=o[1];(i.prop[0]==="_"||i.prop[0]==="*")&&(i.raws.before+=i.prop[0],i.prop=i.prop.slice(1));let s=[],l;for(;e.length&&(l=e[0][0],!(l!=="space"&&l!=="comment"));)s.push(e.shift());this.precheckMissedSemicolon(e);for(let c=e.length-1;c>=0;c--){if(o=e[c],o[1].toLowerCase()==="!important"){i.important=!0;let u=this.stringFrom(e,c);u=this.spacesFromEnd(e)+u,u!==" !important"&&(i.raws.important=u);break}else if(o[1].toLowerCase()==="important"){let u=e.slice(0),h="";for(let f=c;f>0;f--){let x=u[f][0];if(h.trim().startsWith("!")&&x!=="space")break;h=u.pop()[1]+h}h.trim().startsWith("!")&&(i.important=!0,i.raws.important=h,e=u)}if(o[0]!=="space"&&o[0]!=="comment")break}e.some(c=>c[0]!=="space"&&c[0]!=="comment")&&(i.raws.between+=s.map(c=>c[1]).join(""),s=[]),this.raw(i,"value",s.concat(e),n),i.value.includes(":")&&!n&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let n=new Qr;this.init(n,e[2]),n.selector="",n.raws.between="",this.current=n}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let n=this.current.nodes[this.current.nodes.length-1];n&&n.type==="rule"&&!n.raws.ownSemicolon&&(n.raws.ownSemicolon=this.spaces,this.spaces="",n.source.end=this.getPosition(e[2]),n.source.end.offset+=n.raws.ownSemicolon.length)}}getPosition(e){let n=this.input.fromOffset(e);return{column:n.col,line:n.line,offset:e}}init(e,n){this.current.push(e),e.source={input:this.input,start:this.getPosition(n)},e.raws.before=this.spaces,this.spaces="",e.type!=="comment"&&(this.semicolon=!1)}other(e){let n=!1,i=null,r=!1,o=null,s=[],l=e[1].startsWith("--"),a=[],c=e;for(;c;){if(i=c[0],a.push(c),i==="("||i==="[")o||(o=c),s.push(i==="("?")":"]");else if(l&&r&&i==="{")o||(o=c),s.push("}");else if(s.length===0)if(i===";")if(r){this.decl(a,l);return}else break;else if(i==="{"){this.rule(a);return}else if(i==="}"){this.tokenizer.back(a.pop()),n=!0;break}else i===":"&&(r=!0);else i===s[s.length-1]&&(s.pop(),s.length===0&&(o=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(n=!0),s.length>0&&this.unclosedBracket(o),n&&r){if(!l)for(;a.length&&(c=a[a.length-1][0],!(c!=="space"&&c!=="comment"));)this.tokenizer.back(a.pop());this.decl(a,l)}else this.unknownWord(a)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e);break}this.endFile()}precheckMissedSemicolon(){}raw(e,n,i,r){let o,s,l=i.length,a="",c=!0,u,h;for(let f=0;f<l;f+=1)o=i[f],s=o[0],s==="space"&&f===l-1&&!r?c=!1:s==="comment"?(h=i[f-1]?i[f-1][0]:"empty",u=i[f+1]?i[f+1][0]:"empty",!Yr[h]&&!Yr[u]?a.slice(-1)===","?c=!1:a+=o[1]:c=!1):a+=o[1];if(!c){let f=i.reduce((x,F)=>x+F[1],"");e.raws[n]={raw:f,value:a}}e[n]=a}rule(e){e.pop();let n=new Qr;this.init(n,e[0][2]),n.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(n,"selector",e),this.current=n}spacesAndCommentsFromEnd(e){let n,i="";for(;e.length&&(n=e[e.length-1][0],!(n!=="space"&&n!=="comment"));)i=e.pop()[1]+i;return i}spacesAndCommentsFromStart(e){let n,i="";for(;e.length&&(n=e[0][0],!(n!=="space"&&n!=="comment"));)i+=e.shift()[1];return i}spacesFromEnd(e){let n,i="";for(;e.length&&(n=e[e.length-1][0],n==="space");)i=e.pop()[1]+i;return i}stringFrom(e,n){let i="";for(let r=n;r<e.length;r++)i+=e[r][1];return e.splice(n,e.length-n),i}unclosedBlock(){let e=this.current.source.start;throw this.input.error("Unclosed block",e.line,e.column)}unclosedBracket(e){throw this.input.error("Unclosed bracket",{offset:e[2]},{offset:e[2]+1})}unexpectedClose(e){throw this.input.error("Unexpected }",{offset:e[2]},{offset:e[2]+1})}unknownWord(e){throw this.input.error("Unknown word "+e[0][1],{offset:e[0][2]},{offset:e[0][2]+e[0][1].length})}unnamedAtrule(e,n){throw this.input.error("At-rule without name",{offset:n[2]},{offset:n[2]+n[1].length})}};Zr.exports=Gn});var nn=te((od,eo)=>{"use strict";var _a=Ue(),va=vt(),Ra=Xr();function tn(t,e){let n=new va(t,e),i=new Ra(n);try{i.parse()}catch(r){throw r}return i.root}eo.exports=tn;tn.default=tn;_a.registerParse(tn)});var $n=te((sd,to)=>{"use strict";var Dt=class{constructor(e,n={}){if(this.type="warning",this.text=e,n.node&&n.node.source){let i=n.node.rangeBy(n);this.line=i.start.line,this.column=i.start.column,this.endLine=i.end.line,this.endColumn=i.end.column}for(let i in n)this[i]=n[i]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};to.exports=Dt;Dt.default=Dt});var rn=te((ad,no)=>{"use strict";var La=$n(),Bt=class{get content(){return this.css}constructor(e,n,i){this.processor=e,this.messages=[],this.root=n,this.opts=i,this.css="",this.map=void 0}toString(){return this.css}warn(e,n={}){n.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(n.plugin=this.lastPlugin.postcssPlugin);let i=new La(e,n);return this.messages.push(i),i}warnings(){return this.messages.filter(e=>e.type==="warning")}};no.exports=Bt;Bt.default=Bt});var Kn=te((ld,ro)=>{"use strict";var io={};ro.exports=function(e){io[e]||(io[e]=!0,typeof console<"u"&&console.warn&&console.warn(e))}});var Yn=te((cd,lo)=>{"use strict";var Da=Ue(),Ba=Gt(),Ia=jn(),Oa=nn(),oo=rn(),Pa=rt(),Ha=Et(),{isClean:De,my:Wa}=zt(),ud=Kn(),qa={atrule:"AtRule",comment:"Comment",decl:"Declaration",document:"Document",root:"Root",rule:"Rule"},Va={AtRule:!0,AtRuleExit:!0,Comment:!0,CommentExit:!0,Declaration:!0,DeclarationExit:!0,Document:!0,DocumentExit:!0,Once:!0,OnceExit:!0,postcssPlugin:!0,prepare:!0,Root:!0,RootExit:!0,Rule:!0,RuleExit:!0},Ua={Once:!0,postcssPlugin:!0,prepare:!0},st=0;function It(t){return typeof t=="object"&&typeof t.then=="function"}function ao(t){let e=!1,n=qa[t.type];return t.type==="decl"?e=t.prop.toLowerCase():t.type==="atrule"&&(e=t.name.toLowerCase()),e&&t.append?[n,n+"-"+e,st,n+"Exit",n+"Exit-"+e]:e?[n,n+"-"+e,n+"Exit",n+"Exit-"+e]:t.append?[n,st,n+"Exit"]:[n,n+"Exit"]}function so(t){let e;return t.type==="document"?e=["Document",st,"DocumentExit"]:t.type==="root"?e=["Root",st,"RootExit"]:e=ao(t),{eventIndex:0,events:e,iterator:0,node:t,visitorIndex:0,visitors:[]}}function Jn(t){return t[De]=!1,t.nodes&&t.nodes.forEach(e=>Jn(e)),t}var Qn={},je=class t{get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}constructor(e,n,i){this.stringified=!1,this.processed=!1;let r;if(typeof n=="object"&&n!==null&&(n.type==="root"||n.type==="document"))r=Jn(n);else if(n instanceof t||n instanceof oo)r=Jn(n.root),n.map&&(typeof i.map>"u"&&(i.map={}),i.map.inline||(i.map.inline=!1),i.map.prev=n.map);else{let o=Oa;i.syntax&&(o=i.syntax.parse),i.parser&&(o=i.parser),o.parse&&(o=o.parse);try{r=o(n,i)}catch(s){this.processed=!0,this.error=s}r&&!r[Wa]&&Da.rebuild(r)}this.result=new oo(e,r,i),this.helpers={...Qn,postcss:Qn,result:this.result},this.plugins=this.processor.plugins.map(o=>typeof o=="object"&&o.prepare?{...o,...o.prepare(this.result)}:o)}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,n){let i=this.result.lastPlugin;try{n&&n.addToError(e),this.error=e,e.name==="CssSyntaxError"&&!e.plugin?(e.plugin=i.postcssPlugin,e.setMessage()):i.postcssVersion}catch(r){console&&console.error&&console.error(r)}return e}prepareVisitors(){this.listeners={};let e=(n,i,r)=>{this.listeners[i]||(this.listeners[i]=[]),this.listeners[i].push([n,r])};for(let n of this.plugins)if(typeof n=="object")for(let i in n){if(!Va[i]&&/^[A-Z]/.test(i))throw new Error(`Unknown event ${i} in ${n.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!Ua[i])if(typeof n[i]=="object")for(let r in n[i])r==="*"?e(n,i,n[i][r]):e(n,i+"-"+r.toLowerCase(),n[i][r]);else typeof n[i]=="function"&&e(n,i,n[i])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let e=0;e<this.plugins.length;e++){let n=this.plugins[e],i=this.runOnRoot(n);if(It(i))try{await i}catch(r){throw this.handleError(r)}}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[De];){e[De]=!0;let n=[so(e)];for(;n.length>0;){let i=this.visitTick(n);if(It(i))try{await i}catch(r){let o=n[n.length-1].node;throw this.handleError(r,o)}}}if(this.listeners.OnceExit)for(let[n,i]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if(e.type==="document"){let r=e.nodes.map(o=>i(o,this.helpers));await Promise.all(r)}else await i(e,this.helpers)}catch(r){throw this.handleError(r)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if(typeof e=="object"&&e.Once){if(this.result.root.type==="document"){let n=this.result.root.nodes.map(i=>e.Once(i,this.helpers));return It(n[0])?Promise.all(n):n}return e.Once(this.result.root,this.helpers)}else if(typeof e=="function")return e(this.result.root,this.result)}catch(n){throw this.handleError(n)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,n=Ha;e.syntax&&(n=e.syntax.stringify),e.stringifier&&(n=e.stringifier),n.stringify&&(n=n.stringify);let i=this.result.root.source;if(e.map===void 0&&!(i&&i.input&&i.input.map)){let s="";return n(this.result.root,l=>{s+=l}),this.result.css=s,this.result}let o=new Ia(n,this.result.root,this.result.opts).generate();return this.result.css=o[0],this.result.map=o[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){let n=this.runOnRoot(e);if(It(n))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[De];)e[De]=!0,this.walkSync(e);if(this.listeners.OnceExit)if(e.type==="document")for(let n of e.nodes)this.visitSync(this.listeners.OnceExit,n);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,n){return this.async().then(e,n)}toString(){return this.css}visitSync(e,n){for(let[i,r]of e){this.result.lastPlugin=i;let o;try{o=r(n,this.helpers)}catch(s){throw this.handleError(s,n.proxyOf)}if(n.type!=="root"&&n.type!=="document"&&!n.parent)return!0;if(It(o))throw this.getAsyncError()}}visitTick(e){let n=e[e.length-1],{node:i,visitors:r}=n;if(i.type!=="root"&&i.type!=="document"&&!i.parent){e.pop();return}if(r.length>0&&n.visitorIndex<r.length){let[s,l]=r[n.visitorIndex];n.visitorIndex+=1,n.visitorIndex===r.length&&(n.visitors=[],n.visitorIndex=0),this.result.lastPlugin=s;try{return l(i.toProxy(),this.helpers)}catch(a){throw this.handleError(a,i)}}if(n.iterator!==0){let s=n.iterator,l;for(;l=i.nodes[i.indexes[s]];)if(i.indexes[s]+=1,!l[De]){l[De]=!0,e.push(so(l));return}n.iterator=0,delete i.indexes[s]}let o=n.events;for(;n.eventIndex<o.length;){let s=o[n.eventIndex];if(n.eventIndex+=1,s===st){i.nodes&&i.nodes.length&&(i[De]=!0,n.iterator=i.getIterator());return}else if(this.listeners[s]){n.visitors=this.listeners[s];return}}e.pop()}walkSync(e){e[De]=!0;let n=ao(e);for(let i of n)if(i===st)e.nodes&&e.each(r=>{r[De]||this.walkSync(r)});else{let r=this.listeners[i];if(r&&this.visitSync(r,e.toProxy()))return}}warnings(){return this.sync().warnings()}};je.registerPostcss=t=>{Qn=t};lo.exports=je;je.default=je;Pa.registerLazyResult(je);Ba.registerLazyResult(je)});var co=te((fd,uo)=>{"use strict";var za=jn(),ja=nn(),Ga=rn(),$a=Et(),dd=Kn(),Ot=class{get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,n=ja;try{e=n(this._css,this._opts)}catch(i){this.error=i}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}constructor(e,n,i){n=n.toString(),this.stringified=!1,this._processor=e,this._css=n,this._opts=i,this._map=void 0;let r=$a;this.result=new Ga(this._processor,void 0,this._opts),this.result.css=n;let o=this;Object.defineProperty(this.result,"root",{get(){return o.root}});let s=new za(r,void 0,this._opts,n);if(s.isMap()){let[l,a]=s.generate();l&&(this.result.css=l),a&&(this.result.map=a)}else s.clearAnnotation(),this.result.css=s.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,n){return this.async().then(e,n)}toString(){return this._css}warnings(){return[]}};uo.exports=Ot;Ot.default=Ot});var mo=te((md,fo)=>{"use strict";var Ka=Gt(),Ja=Yn(),Qa=co(),Ya=rt(),Ze=class{constructor(e=[]){this.version="8.5.14",this.plugins=this.normalize(e)}normalize(e){let n=[];for(let i of e)if(i.postcss===!0?i=i():i.postcss&&(i=i.postcss),typeof i=="object"&&Array.isArray(i.plugins))n=n.concat(i.plugins);else if(typeof i=="object"&&i.postcssPlugin)n.push(i);else if(typeof i=="function")n.push(i);else if(!(typeof i=="object"&&(i.parse||i.stringify)))throw new Error(i+" is not a PostCSS plugin");return n}process(e,n={}){return!this.plugins.length&&!n.parser&&!n.stringifier&&!n.syntax?new Qa(this,e,n):new Ja(this,e,n)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};fo.exports=Ze;Ze.default=Ze;Ya.registerProcessor(Ze);Ka.registerProcessor(Ze)});var Ao=te((pd,bo)=>{"use strict";var po=jt(),ho=Mt(),Za=Ue(),Xa=Ut(),xo=kt(),go=Gt(),el=Wr(),tl=vt(),nl=Yn(),il=Un(),rl=Nt(),ol=nn(),Zn=mo(),sl=rn(),yo=rt(),So=Qt(),al=Et(),ll=$n();function re(...t){return t.length===1&&Array.isArray(t[0])&&(t=t[0]),new Zn(t)}re.plugin=function(e,n){let i=!1;function r(...s){console&&console.warn&&!i&&(i=!0,console.warn(e+`: postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+`: \\u91CC\\u9762 postcss.plugin \\u88AB\\u5F03\\u7528. \\u8FC1\\u79FB\\u6307\\u5357:\nhttps://www.w3ctech.com/topic/2226`));let l=n(...s);return l.postcssPlugin=e,l.postcssVersion=new Zn().version,l}let o;return Object.defineProperty(r,"postcss",{get(){return o||(o=r()),o}}),r.process=function(s,l,a){return re([r(a)]).process(s,l)},r};re.stringify=al;re.parse=ol;re.fromJSON=el;re.list=il;re.comment=t=>new ho(t);re.atRule=t=>new po(t);re.decl=t=>new xo(t);re.rule=t=>new So(t);re.root=t=>new yo(t);re.document=t=>new go(t);re.CssSyntaxError=Xa;re.Declaration=xo;re.Container=Za;re.Processor=Zn;re.Document=go;re.Comment=ho;re.Warning=ll;re.AtRule=po;re.Result=sl;re.Input=tl;re.Rule=So;re.Root=yo;re.Node=rl;nl.registerPostcss(re);bo.exports=re;re.default=re});function Ei(){return globalThis}function v(t,e){if(typeof window>"u")return;let n=Ei(),i=n.__hf?.onSwallowed;if(i)try{i({label:t,error:e})}catch(r){}(n.__hfDebug||n.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${t} swallowed:`,e)}function Ee(t){try{window.parent.postMessage(t,"*")}catch(e){v("bridge.postMessage",e)}}function Fi(t){let e=n=>{let i=n.data;if(!i||i.source!=="hf-parent"||i.type!=="control")return;let r=i.action;if(r==="play"){t.onPlay();return}if(r==="pause"){t.onPause();return}if(r==="seek"){t.onSeek(Number(i.frame??0),i.seekMode??"commit");return}if(r==="tick"){t.onTick();return}if(r==="set-muted"){t.onSetMuted(!!i.muted);return}if(r==="set-volume"){t.onSetVolume(Math.max(0,Math.min(1,Number(i.volume??1))));return}if(r==="set-media-output-muted"){t.onSetMediaOutputMuted(!!i.muted);return}if(r==="set-playback-rate"){t.onSetPlaybackRate(Number(i.playbackRate??1));return}if(r==="enable-pick-mode"){t.onEnablePickMode();return}if(r==="disable-pick-mode"){t.onDisablePickMode();return}if(r==="flash-elements"){let o=i.selectors,s=i.duration||800;o&&As(o,s)}};return window.addEventListener("message",e),Ee({source:"hf-preview",type:"ready"}),e}function As(t,e){if(!document.getElementById("__hf-flash-styles")){let n=document.createElement("style");n.id="__hf-flash-styles",n.textContent=`\n .__hf-flash {\n outline: 2px solid rgba(59, 130, 246, 0.6) !important;\n outline-offset: 2px !important;\n animation: __hf-flash-pulse ${e}ms ease-out forwards !important;\n }\n @keyframes __hf-flash-pulse {\n 0% { outline-color: rgba(59, 130, 246, 0.8); }\n 100% { outline-color: transparent; }\n }\n `,document.head.appendChild(n)}for(let n of t)try{document.querySelectorAll(n).forEach(r=>{r.classList.add("__hf-flash"),setTimeout(()=>r.classList.remove("__hf-flash"),e)})}catch(i){v("bridge.flashElements.querySelector",i)}}var An=null;function wi(t){An=t}function ft(t,e){if(An)try{An({source:"hf-preview",type:"analytics",event:t,properties:e??{}})}catch(n){v("runtime.analytics.site1",n)}}function Ni(t){let e=[],n=l=>{if(typeof l.getAnimations!="function")return[];try{return l.getAnimations()}catch{return[]}},i=(l,a)=>{for(let c of l){try{c.currentTime=a}catch(u){v("runtime.adapters.css.site1",u)}try{c.pause()}catch(u){v("runtime.adapters.css.site2",u)}}},r=l=>{for(let a of l)try{a.play()}catch(c){v("runtime.adapters.css.site3",c)}},o=l=>{for(let a of l)try{a.pause()}catch(c){v("runtime.adapters.css.site4",c)}},s=l=>{l.baseDelay?l.el.style.animationDelay=l.baseDelay:l.el.style.removeProperty("animation-delay"),l.basePlayState?l.el.style.animationPlayState=l.basePlayState:l.el.style.removeProperty("animation-play-state")};return{name:"css",discover:()=>{e=[];let l=document.querySelectorAll("*");for(let a of l){if(!(a instanceof HTMLElement))continue;let c=window.getComputedStyle(a);!c.animationName||c.animationName==="none"||e.push({el:a,baseDelay:a.style.animationDelay||"",basePlayState:a.style.animationPlayState||""})}},seek:l=>{let a=Number(l.time)||0;for(let c of e){if(!c.el.isConnected)continue;let u=t?.resolveStartSeconds?t.resolveStartSeconds(c.el):Number.parseFloat(c.el.getAttribute("data-start")??"0")||0,h=Math.max(0,a-u)*1e3,f=n(c.el);if(f.length>0){i(f,h);continue}c.el.style.animationPlayState="paused",c.el.style.animationDelay=`-${(h/1e3).toFixed(3)}s`}},pause:()=>{for(let l of e){if(!l.el.isConnected)continue;let a=n(l.el);a.length>0&&o(a),s(l)}},play:()=>{for(let l of e)l.el.isConnected&&(s(l),r(n(l.el)))},revert:()=>{e=[]}}}function Ci(t){return{name:"gsap",discover:()=>{},seek:e=>{let n=t.getTimeline();if(!n)return;n.pause();let i=Math.max(0,Number(e.time)||0);typeof n.totalTime=="function"?(n.totalTime(i+.001,!0),n.totalTime(i,!1)):n.seek(i,!1)},pause:()=>{let e=t.getTimeline();e&&e.pause()}}}function Mi(){return{name:"animejs",discover:()=>{try{let t=window.anime;if(!t||typeof t.running>"u")return;let e=t.running;if(!Array.isArray(e)||e.length===0)return;let n=window.__hfAnime??[],i=new Set(n);for(let r of e)i.has(r)||n.push(r);window.__hfAnime=n}catch(t){v("runtime.adapters.animejs.site1",t)}},seek:t=>{let e=Math.max(0,(Number(t.time)||0)*1e3),n=window.__hfAnime;if(!(!n||n.length===0))for(let i of n)try{typeof i.seek=="function"&&i.seek(e)}catch(r){v("runtime.adapters.animejs.site2",r)}},pause:()=>{let t=window.__hfAnime;if(!(!t||t.length===0))for(let e of t)try{typeof e.pause=="function"&&e.pause()}catch(n){v("runtime.adapters.animejs.site3",n)}},play:()=>{let t=window.__hfAnime;if(!(!t||t.length===0))for(let e of t)try{typeof e.play=="function"&&e.play()}catch(n){v("runtime.adapters.animejs.site4",n)}},revert:()=>{}}}function _i(){return{name:"lottie",discover:()=>{try{let t=window.lottie;if(t&&typeof t.getRegisteredAnimations=="function"){let e=t.getRegisteredAnimations();if(Array.isArray(e)&&e.length>0){let n=window.__hfLottie??[],i=new Set(n);for(let r of e)i.has(r)||n.push(r);window.__hfLottie=n}}}catch(t){v("runtime.adapters.lottie.site1",t)}},seek:t=>{let e=Math.max(0,Number(t.time)||0),n=window.__hfLottie;if(!(!n||n.length===0))for(let i of n)try{if(Ti(i))i.goToAndStop(e*1e3,!1);else if(ki(i)){if(typeof i.setCurrentRawFrameValue=="function"){let r=i.totalFrames??0,o=i.frameRate??30,s=e*o;r>0&&i.setCurrentRawFrameValue(Math.min(s,r-1))}else if(typeof i.seek=="function"){let r=i.duration??1,o=Math.min(100,e/r*100);i.seek(o)}}}catch(r){v("runtime.adapters.lottie.site2",r)}},pause:()=>{let t=window.__hfLottie;if(!(!t||t.length===0))for(let e of t)try{(Ti(e)||ki(e))&&e.pause()}catch(n){v("runtime.adapters.lottie.site3",n)}},revert:()=>{}}}function Ti(t){return typeof t=="object"&&t!==null&&typeof t.goToAndStop=="function"}function ki(t){return typeof t=="object"&&t!==null&&typeof t.pause=="function"&&("totalFrames"in t||"duration"in t)}var En=-1;function Vt(t){if(t!==En){En=t;try{window.dispatchEvent(new CustomEvent("hf-seek",{detail:{time:t}}))}catch(e){v("runtime.adapters.seek-dispatch.site1",e)}}}function vi(t){En=t;try{window.dispatchEvent(new CustomEvent("hf-seek",{detail:{time:t}}))}catch(e){v("runtime.adapters.seek-dispatch.force",e)}}function Ri(){let t=null,e=0;return{name:"three",discover:()=>{},seek:n=>{t=Math.max(0,Number(n.time)||0),e=t,window.__hfThreeTime=t,Vt(t)},pause:()=>{t==null&&(t=Math.max(0,e))},play:()=>{t=null},revert:()=>{t=null,e=0}}}function Li(){let t=null,e=0;return{name:"typegpu",discover:()=>{},seek:n=>{t=Math.max(0,Number(n.time)||0),e=t,window.__hfTypegpuTime=t,Vt(t)},pause:()=>{t==null&&(t=Math.max(0,e))},play:()=>{t=null},revert:()=>{t=null,e=0}}}function Di(t){let e=t.nextElementSibling;if(e instanceof HTMLImageElement&&e.classList.contains("__render_frame__")&&e.complete&&e.naturalWidth>0)return e;if(t.id){let n=document.getElementById(`__render_frame_${t.id}__`);if(n instanceof HTMLImageElement&&n.complete&&n.naturalWidth>0)return n}return null}function Bi(){let t=globalThis.GPUQueue;if(!t?.prototype?.copyExternalImageToTexture)return;let e=t.prototype.copyExternalImageToTexture;t.prototype.copyExternalImageToTexture=function(n,i,r){if(n?.source instanceof HTMLVideoElement){let o=Di(n.source);if(o)return e.call(this,{...n,source:o},i,r)}return e.call(this,n,i,r)}}function Ii(){let t=[globalThis.WebGL2RenderingContext,globalThis.WebGLRenderingContext],e=["texImage2D","texSubImage2D"];for(let n of t){let i=n?.prototype;if(i)for(let r of e){let o=i[r];if(typeof o!="function"||o.__hfVideoPatched)continue;let s=function(...l){let a=l.length-1,c=l[a];if(c instanceof HTMLVideoElement){let u=Di(c);u&&(l[a]=u)}return o.apply(this,l)};s.__hfVideoPatched=!0,i[r]=s}}}function Oi(){let t=!1,e=0,n=new WeakMap,i=()=>{if(!document.getAnimations)return[];try{return document.getAnimations()}catch{return[]}},r=l=>{let a=Number(l.currentTime);return Number.isFinite(a)&&a>0?a:0},o=(l,a)=>a<=0?l:l>=a?Math.max(0,l-a):l,s=(l,a)=>{let c=n.get(l);if(c)return c;let u={compositionTimeMs:a,animationTimeMs:t?o(r(l),a):r(l)};return n.set(l,u),u};return{name:"waapi",discover:()=>{t=!0;for(let l of i())s(l,e)},seek:l=>{let a=Math.max(0,(Number(l.time)||0)*1e3);e=a;for(let c of i()){let u=t?s(c,a):s(c,0),h=u.animationTimeMs+Math.max(0,a-u.compositionTimeMs);try{c.currentTime=h}catch(f){v("runtime.adapters.waapi.site1",f)}try{c.pause()}catch(f){v("runtime.adapters.waapi.site2",f)}}},pause:()=>{if(document.getAnimations)for(let l of document.getAnimations())try{l.pause()}catch(a){v("runtime.adapters.waapi.site3",a)}}}}function Pi(t,e){if(t.length===0)return 1;let n=0;for(;n<t.length-2&&e>=t[n+1].time;)n+=1;let i=t[n],r=t[n+1]??i,o=r.time-i.time,s=o<=0?0:Math.min(1,Math.max(0,(e-i.time)/o));return i.volume+(r.volume-i.volume)*s}function Es(t,e,n,i){let r=Number.parseFloat(t.dataset.start??"0")||0,o=Number.parseFloat(t.dataset.end??""),s=Number.parseFloat(t.dataset.duration??""),l=Number.isFinite(o)&&o>r?o:Number.isFinite(s)&&s>0?r+s:n,a=Number.parseFloat(t.dataset.volume??""),c=Number.isFinite(a)?Math.max(0,Math.min(1,a)):1;t.volume=c;let u=1/Math.min(60,Math.max(1,i)),h=Math.max(0,r),f=Math.min(n,l),x=[];for(let E=h;E<=f+1e-6;E+=u){let S=Math.min(f,E);e(S);let D=Number(t.volume);if(!Number.isFinite(D))continue;let L=Math.max(0,Math.min(1,D)),R=x.at(-1);if((!R||Math.abs(R.volume-L)>1e-4||S===f)&&x.push({time:Number(S.toFixed(6)),volume:Number(L.toFixed(6))}),S===f)break}return x.some(E=>Math.abs(E.volume-c)>1e-4)?x:null}function Hi(t,e,n,i){if(!e||!(t instanceof HTMLAudioElement)&&!(t instanceof HTMLVideoElement)||n<=0)return;let o=Es(t,s=>{try{typeof e.totalTime=="function"?e.totalTime(s,!0):typeof e.seek=="function"&&e.seek(s,!0)}catch{}},n,60);o&&i.set(t,o)}function ht(t){let e=t.defaultPlaybackRate;return Number.isFinite(e)&&e>0?Math.max(.1,Math.min(5,e)):1}function Wi(t){let e=Array.from(document.querySelectorAll("video, audio")),n=t?.shouldIncludeElement?e.filter(s=>t.shouldIncludeElement?.(s)):e.filter(s=>s.hasAttribute("data-start")),i=[],r=[],o=0;for(let s of n){let l=t?.resolveStartSeconds?t.resolveStartSeconds(s):Number.parseFloat(s.dataset.start??"0");if(!Number.isFinite(l))continue;let a=Number.parseFloat(s.dataset.playbackStart??s.dataset.mediaStart??"0")||0,c=ht(s),u=s.loop,h=Number.isFinite(s.duration)&&s.duration>0?s.duration:null,f=t?.resolveDurationSeconds?.(s)??Number.parseFloat(s.dataset.duration??"");(!Number.isFinite(f)||f<=0)&&h!=null&&(f=Math.max(0,(h-a)/c));let x=Number.isFinite(f)&&f>0?l+f:Number.POSITIVE_INFINITY,F=Number.parseFloat(s.dataset.volume??""),E={el:s,start:l,mediaStart:a,duration:Number.isFinite(f)&&f>0?f:Number.POSITIVE_INFINITY,end:x,volume:Number.isFinite(F)?F:null,playbackRate:c,loop:u,sourceDuration:h};i.push(E),s.tagName==="VIDEO"&&r.push(E),Number.isFinite(x)&&(o=Math.max(o,x))}return{timedMediaEls:n,mediaClips:i,videoClips:r,maxMediaEnd:o}}var Fn=new WeakMap,mt=new WeakMap,wn=new WeakSet,et=new WeakSet;function Fs(t){if(et.has(t))return;et.add(t);let e=()=>et.delete(t);t.addEventListener("playing",e,{once:!0}),t.addEventListener("pause",e,{once:!0}),t.addEventListener("error",e,{once:!0})}var Nn=new WeakMap;function pt(t){return Number.isFinite(t)?Math.max(0,Math.min(1,t)):1}function qi(t){let e=!!(t.outputMuted||t.userMuted);for(let n of t.clips){let{el:i}=n;if(!i.isConnected)continue;let r=(t.timeSeconds-n.start)*n.playbackRate+n.mediaStart;if(t.timeSeconds>=n.start&&t.timeSeconds<=n.end&&r>=0&&(!i.ended||n.loop)){if(n.loop&&n.sourceDuration!=null&&n.sourceDuration>0){let w=n.sourceDuration-n.mediaStart;w>0&&r>=n.sourceDuration&&(r=n.mediaStart+(r-n.mediaStart)%w)}let s=pt(t.userVolume??1),l=pt(n.volume??1),a=Nn.get(i),c=pt(i.volume),u;n.volumeKeyframes&&n.volumeKeyframes.length>0?u=pt(Pi(n.volumeKeyframes,r)):a===void 0||Math.abs(c-a)>1e-4?u=c:u=l;let h=pt(u*s);i.volume=h,Nn.set(i,h),t.onElementVolume?.(i,h),e&&(i.muted=!0),i.preload!=="auto"&&(i.preload="auto");try{i.playbackRate=n.playbackRate*t.playbackRate}catch(w){v("runtime.media.site1",w)}let f=.04,x=2,F=i.currentTime||0,E=Math.abs(F-r),S=r-F,D=Fn.get(i);Fn.set(i,S);let L=D===void 0,R=!L&&Math.abs(S-D)>.5,ne=E>3,q=E>.5&&(L||R||ne),C=i.tagName==="VIDEO"&&!i.paused,g=D!==void 0&&Math.abs(S-D)<.004,b=!1;if(!C&&!q&&!L&&g&&E>f){let w=(mt.get(i)??0)+1;mt.set(i,w),w>=x&&(b=!0,mt.set(i,0))}else E<=f&&mt.set(i,0);let N=!C&&t.forceSync&&E>.02;if(q||b||N){try{i.currentTime=r}catch(w){v("runtime.media.site2",w)}if(Math.abs(i.currentTime-r)>.5&&!wn.has(i)){wn.add(i),i.load();try{i.currentTime=r}catch(w){v("runtime.media.site3",w)}}et.delete(i)}t.playing&&i.paused&&!et.has(i)?(Fs(i),i.play().catch(w=>{et.delete(i),(w&&typeof w=="object"&&"name"in w?String(w.name??""):"")==="NotAllowedError"&&t.onAutoplayBlocked?.()})):!t.playing&&!i.paused&&i.pause();continue}Fn.delete(i),mt.delete(i),wn.delete(i),Nn.delete(i),i.paused||i.pause()}}var ws=["[data-hyperframes-ignore]","[data-hyperframes-picker-ignore]","[data-hf-ignore]","[data-no-inspect]","[data-no-pick]","[data-hyper-shader-loading]"].join(","),Ns=["[data-hyperframes-picker-block]","[data-hyper-shader-loading]"].join(",");function Vi(t){let e=!1,n=null,i=null,r=null,o=null;function s(g,b){try{window.dispatchEvent(new CustomEvent(g,{detail:b}))}catch(N){v("runtime.picker.site1",N)}}function l(g){r=g,s("hyperframe:picker:hovered",{elementInfo:r,isPickMode:e,timestamp:Date.now()})}function a(g){o=g,s("hyperframe:picker:selected",{elementInfo:o,isPickMode:e,timestamp:Date.now()})}function c(g){let b=g.ownerDocument.defaultView;if(!b)return!1;let N=g;for(;N&&N!==document.body&&N!==document.documentElement;){let w=b.getComputedStyle(N);if(w.display==="none"||w.visibility==="hidden"||w.pointerEvents==="none")return!0;let _=Number.parseFloat(w.opacity);if(Number.isFinite(_)&&_<=.01)return!0;N=N.parentElement}return!1}function u(g){if(!g||g===document.body||g===document.documentElement)return!1;let b=g.tagName.toLowerCase();return!(b==="script"||b==="style"||b==="link"||b==="meta"||g.classList.contains("__hf-pick-highlight")||g.closest(ws)||c(g))}function h(g){return!!g?.closest(Ns)}function f(g){let b=g;if(b.id)return`#${b.id}`;let N=g.getAttribute("data-composition-id");if(N)return`[data-composition-id="${N}"]`;let w=g.getAttribute("data-composition-src");if(w)return`[data-composition-src="${w}"]`;let _=g.getAttribute("data-track-index");if(_)return`[data-track-index="${_}"]`;let H=g.tagName.toLowerCase(),J=g.parentElement;if(!J)return H;let W=J.querySelectorAll(`:scope > ${H}`);if(W.length===1)return H;for(let T=0;T<W.length;T+=1)if(W[T]===g)return`${H}:nth-of-type(${T+1})`;return H}function x(g){let b=g.tagName.toLowerCase(),N=(g.textContent??"").trim().replace(/\\s+/g," "),w=(_,H)=>_.length>H?`${_.slice(0,H-1)}\\u2026`:_;return b==="h1"||b==="h2"||b==="h3"?"Heading":b==="p"||b==="span"||b==="div"?N.length>0?w(N,56):"Text":b==="img"?"Image":b==="video"?"Video":b==="audio"?"Audio":b==="svg"?"Shape":g.getAttribute("data-composition-src")?"Composition":b==="section"?"Section":`${b.charAt(0).toUpperCase()}${b.slice(1)}`}function F(g,b,N){let w=typeof N=="number"&&N>0?N:8,_=[];if(document.elementsFromPoint)_=document.elementsFromPoint(g,b);else if(document.elementFromPoint){let W=document.elementFromPoint(g,b);_=W?[W]:[]}if(h(_[0]??null))return[];let H={},J=[];for(let W=0;W<_.length;W+=1){let T=_[W];if(!u(T))continue;let de=`${T.tagName}::${T.id||""}::${W}`;if(!H[de]&&(H[de]=!0,J.push(T),J.length>=w))break}return J}function E(g){let b=g.getBoundingClientRect(),N={};for(let _=0;_<g.attributes.length;_+=1){let H=g.attributes[_];H.name.startsWith("data-")&&(N[H.name]=H.value)}return{id:g.id||null,tagName:g.tagName.toLowerCase(),selector:f(g),label:x(g),boundingBox:{x:b.left,y:b.top,width:b.width,height:b.height},textContent:g.textContent?g.textContent.trim().slice(0,200):null,src:g.getAttribute("src")||g.getAttribute("data-composition-src")||null,dataAttributes:N}}function S(g,b,N){return F(g,b,N).map(E)}function D(g){if(!e)return;let N=F(g.clientX,g.clientY,1)[0]??(g.target instanceof Element?g.target:null);if(!u(N)||n===N)return;n&&n.classList.remove("__hf-pick-highlight"),n=N,N.classList.add("__hf-pick-highlight");let w=E(N);l(w),t.postMessage({source:"hf-preview",type:"element-hovered",elementInfo:w})}function L(g){if(!e)return;g.preventDefault(),g.stopPropagation(),g.stopImmediatePropagation();let b=S(g.clientX,g.clientY,8);b.length!==0&&(l(b[0]??null),t.postMessage({source:"hf-preview",type:"element-pick-candidates",candidates:b,selectedIndex:0,point:{x:g.clientX,y:g.clientY}}))}function R(g){g.key==="Escape"&&(q(),t.postMessage({source:"hf-preview",type:"pick-mode-cancelled"}))}function ne(){e||(e=!0,i=document.createElement("style"),i.textContent=[".__hf-pick-highlight { outline: 2px solid #4f8cf7 !important; outline-offset: 2px; cursor: crosshair !important; }",".__hf-pick-active * { cursor: crosshair !important; }"].join(`\n`),document.head.appendChild(i),document.body.classList.add("__hf-pick-active"),document.addEventListener("mousemove",D,!0),document.addEventListener("click",L,!0),document.addEventListener("keydown",R,!0),s("hyperframe:picker:mode",{isPickMode:!0,timestamp:Date.now()}))}function q(){e&&(e=!1,n&&(n.classList.remove("__hf-pick-highlight"),n=null),i&&(i.remove(),i=null),document.body.classList.remove("__hf-pick-active"),document.removeEventListener("mousemove",D,!0),document.removeEventListener("click",L,!0),document.removeEventListener("keydown",R,!0),s("hyperframe:picker:mode",{isPickMode:!1,timestamp:Date.now()}))}function C(){window.__HF_PICKER_API={enable:ne,disable:q,isActive:()=>e,getHovered:()=>r,getSelected:()=>o,getCandidatesAtPoint:(g,b,N)=>Number.isFinite(g)&&Number.isFinite(b)?S(g,b,N):[],pickAtPoint:(g,b,N)=>{if(!Number.isFinite(g)||!Number.isFinite(b))return null;let w=S(g,b,8);if(!w.length)return null;let _=Math.max(0,Math.min(w.length-1,Number(N??0))),H=w[_]??null;return H?(a(H),t.postMessage({source:"hf-preview",type:"element-picked",elementInfo:H}),q(),H):null},pickManyAtPoint:(g,b,N)=>{if(!Number.isFinite(g)||!Number.isFinite(b))return[];let w=S(g,b,8);if(!w.length)return[];let _=[],H=Array.isArray(N)?N:[0];for(let J of H){let W=Math.max(0,Math.min(w.length-1,Math.floor(Number(J)))),T=w[W];if(!T)continue;_.some(be=>be.selector===T.selector&&be.tagName===T.tagName)||_.push(T)}return _.length?(a(_[0]??null),t.postMessage({source:"hf-preview",type:"element-picked-many",elementInfos:_}),q(),_):[]}},s("hyperframe:picker:api-ready",{hasApi:!0,timestamp:Date.now()})}return{enablePickMode:ne,disablePickMode:q,installPickerApi:C}}function tt(t,e){let n=Number.isFinite(e)&&e>0?e:30,i=Number.isFinite(t)&&t>0?t:0;return Math.floor(i*n+1e-9)/n}function xt(t,e,n){let i=t?.[e];return typeof i=="function"?Number(i.call(t))||n:typeof i=="number"&&Number.isFinite(i)?i:(i!=null&&v("runtime.player.nonConformantNum",{prop:e,actual:typeof i}),n)}function ve(t,e){let n=t?.[e];if(typeof n=="function"){n.call(t);return}n!==void 0&&v("runtime.player.nonConformantVoid",{method:e,actual:typeof n})}function gt(t,e,n){if(t){for(let i of Object.values(t))if(!(!i||i===e))try{n(i)}catch(r){v("runtime.player.site1",r)}}}function Ui(t,e,n){let i=tt(e,n);return ve(t,"pause"),typeof t.totalTime=="function"?t.totalTime(i,!1):typeof t.seek=="function"&&t.seek(i,!1),i}function Cs(t,e,n,i){let r=[];gt(t,e,o=>{ve(o,"play"),r.push(o)});try{return Ui(e,n,i)}finally{for(let o of r)try{ve(o,"pause")}catch(s){v("runtime.player.site2",s)}}}function Ms(t,e){gt(t,e,n=>{ve(n,"play")})}function zi(t){return{_timeline:null,play:()=>{let e=t.getTimeline();if(!e||t.getIsPlaying())return;let n=Math.max(0,Number(t.getSafeDuration?.()??xt(e,"duration",0))||0);n>0&&Math.max(0,xt(e,"time",0))>=n&&(ve(e,"pause"),typeof e.seek=="function"&&e.seek(0,!1),t.onDeterministicSeek(0),t.setIsPlaying(!1),t.onSyncMedia(0,!1),t.onRenderFrameSeek(0)),typeof e.timeScale=="function"&&e.timeScale(t.getPlaybackRate()),ve(e,"play"),gt(t.getTimelineRegistry?.(),e,i=>{typeof i.timeScale=="function"&&i.timeScale(t.getPlaybackRate()),ve(i,"play")}),t.onDeterministicPlay(),t.setIsPlaying(!0),t.onShowNativeVideos(),t.onStatePost(!0)},pause:()=>{let e=t.getTimeline();if(!e)return;ve(e,"pause"),gt(t.getTimelineRegistry?.(),e,i=>{ve(i,"pause")});let n=Math.max(0,xt(e,"time",0));t.onDeterministicSeek(n),t.onDeterministicPause(),t.setIsPlaying(!1),t.onSyncMedia(n,!1),t.onRenderFrameSeek(n),t.onStatePost(!0)},seek:(e,n)=>{let i=t.getTimeline();if(!i)return;let r=Math.max(0,Number(e)||0),o=t.getIsPlaying(),s=Cs(t.getTimelineRegistry?.(),i,r,t.getCanonicalFps());t.onDeterministicSeek(s),n?.keepPlaying&&o?(typeof i.timeScale=="function"&&i.timeScale(t.getPlaybackRate()),ve(i,"play"),gt(t.getTimelineRegistry?.(),i,l=>{typeof l.timeScale=="function"&&l.timeScale(t.getPlaybackRate()),ve(l,"play")}),t.onDeterministicPlay(),t.onShowNativeVideos(),t.onSyncMedia(s,!0)):(t.setIsPlaying(!1),t.onSyncMedia(s,!1)),t.onRenderFrameSeek(s),t.onStatePost(!0)},renderSeek:e=>{let n=t.getTimeline(),i=t.getCanonicalFps(),r=n?(Ms(t.getTimelineRegistry?.(),n),Ui(n,e,i)):tt(Math.max(0,Number(e)||0),i);t.onDeterministicSeek(r),t.setIsPlaying(!1),t.onSyncMedia(r,!1),t.onRenderFrameSeek(r),t.onStatePost(!0)},getTime:()=>xt(t.getTimeline(),"time",0),getDuration:()=>xt(t.getTimeline(),"duration",0),isPlaying:()=>t.getIsPlaying(),setPlaybackRate:e=>t.setPlaybackRate(e),getPlaybackRate:()=>t.getPlaybackRate()}}function ji(){return{capturedTimeline:null,isPlaying:!1,currentTime:0,deterministicAdapters:[],canonicalFps:30,bridgeMuted:!1,bridgeVolume:1,mediaOutputMuted:!1,mediaAutoplayBlockedPosted:!1,mediaForceSyncNextTick:!1,playbackRate:1,bridgeLastPostedFrame:-1,bridgeLastPostedAt:0,bridgeLastPostedPlaying:!1,bridgeLastPostedMuted:!1,bridgeMaxPostIntervalMs:80,controlBridgeHandler:null,beforeUnloadHandler:null,injectedCompStyles:[],injectedCompScripts:[],cachedTimedMediaEls:[],cachedMediaClips:[],cachedVideoClips:[],cachedMediaTimelineDurationSeconds:0,tornDown:!1,transportClock:null,transportRafId:null}}var Ts="data-hf-authored-duration",ks="data-hf-authored-end";function Je(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}function _s(t){return Je(t.getAttribute("data-duration"))}function vs(t){return Je(t.getAttribute("data-end"))}function Rs(t){return Je(t.getAttribute(Ts))}function Ls(t){return Je(t.getAttribute(ks))}function Ds(t){let e=(t??"").trim();if(!e)return null;let n=Je(e);if(n!=null)return{kind:"absolute",value:n};let i=e.match(/^([A-Za-z0-9_.:-]+)(?:\\s*([+-])\\s*([0-9]*\\.?[0-9]+))?$/);if(!i)return null;let r=(i[1]??"").trim();if(!r)return null;let o=i[2]??"+",s=i[3]??"0",l=Number.parseFloat(s),a=Number.isFinite(l)?Math.max(0,l):0,c=o==="-"?-a:a;return{kind:"reference",refId:r,offset:c}}function Qe(t){let e=t.timelineRegistry??{},n=t.includeAuthoredTimingAttrs??!1,i=new WeakMap,r=new WeakMap,o=new Set,s=u=>{let h=document.getElementById(u);return h||(document.querySelector(`[data-composition-id="${CSS.escape(u)}"]`)??null)},l=u=>{let h=r.get(u);if(h!==void 0)return h;let f=null,x=_s(u)??(n?Rs(u):null);if(x!=null&&x>0&&(f=x),f==null||f<=0){let F=vs(u)??(n?Ls(u):null);if(F!=null){let E=c(u,0),S=F-E;Number.isFinite(S)&&S>0&&(f=S)}}if((f==null||f<=0)&&u instanceof HTMLMediaElement){let F=Je(u.getAttribute("data-playback-start"))??Je(u.getAttribute("data-media-start"))??0;Number.isFinite(u.duration)&&u.duration>F&&(f=(u.duration-F)/ht(u))}if(f==null||f<=0){let F=u.getAttribute("data-composition-id");if(F){let E=e[F]??null;if(E&&typeof E.duration=="function")try{let S=Number(E.duration());Number.isFinite(S)&&S>0&&(f=S)}catch(S){v("runtime.startResolver.site1",S)}}}return f!=null&&Number.isFinite(f)&&f>0?(r.set(u,f),f):(r.set(u,null),null)},a=(u,h)=>{if(u.hasAttribute("data-composition-id")){let x=u.parentElement?.closest("[data-composition-id]");return x?c(x,h):0}let f=u.closest("[data-composition-id]");return f?c(f,h):0},c=(u,h)=>{let f=i.get(u);if(f!==void 0)return f??h;if(o.has(u))return h;o.add(u);try{let x=Ds(u.getAttribute("data-start"));if(!x){if(u.hasAttribute("data-composition-id")){let L=u.parentElement;if(L&&(L.hasAttribute("data-composition-src")||L.hasAttribute("data-composition-id"))){let R=c(L,h);return i.set(u,R),R}}return i.set(u,h),h}if(x.kind==="absolute"){let L=Math.max(0,x.value),R=Math.max(0,a(u,h)+L);return i.set(u,R),R}let F=s(x.refId);if(!F)return i.set(u,h),h;let E=c(F,0),S=l(F);if(S==null||S<=0){let L=Math.max(0,E+x.offset);return i.set(u,L),L}let D=Math.max(0,E+S+x.offset);return i.set(u,D),D}finally{o.delete(u)}};return{resolveStartForElement:(u,h=0)=>c(u,Math.max(0,h)),resolveDurationForElement:u=>l(u)}}var Bs="data-hf-authored-duration",Is="data-hf-authored-end";function Fe(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}function Cn(t){return Fe(t.getAttribute("data-duration"))??Fe(t.getAttribute(Bs))}function Gi(t){return Fe(t.getAttribute("data-end"))??Fe(t.getAttribute(Is))}function Mn(...t){let e=t.filter(n=>Number.isFinite(n??null));return e.length===0?null:Math.max(...e)}var $i={composition:0,video:1,image:2,element:3,audio:4};function Os(t){if(t.length===0)return;let e=new Map;for(let s of t){let l=e.get(s.track)??new Set;l.add(s.kind),e.set(s.track,l)}if(!Array.from(e.values()).some(s=>s.size>1))return;let i=0,r=new Map,o=[...e.keys()].sort((s,l)=>s-l);for(let s of o){let l=e.get(s);if(l.size===1)r.set(`${s}:${[...l][0]}`,i++);else{let a=[...l].sort((c,u)=>($i[c]??99)-($i[u]??99));for(let c of a)r.set(`${s}:${c}`,i++)}}for(let s of t){let l=`${s.track}:${s.kind}`,a=r.get(l);a!=null&&(s.track=a)}}function St(t){let e=String(t??"").trim();if(!e)return null;let n=e.toLowerCase();if(n.startsWith("data:")||n.startsWith("javascript:"))return null;try{return new URL(e,document.baseURI).toString()}catch{return e}}function Ki(t){let e=t.getAttribute("src")??t.getAttribute("data-src");if(e)return St(e);let n=t.getAttribute("data-composition-src");if(n)return St(n);let i=t.querySelector("img[src], video[src], audio[src], source[src]");return i?St(i.getAttribute("src")):null}function Ps(t){let e=t.className;return typeof e!="string"?null:e.split(/\\s+/).map(n=>n.trim()).find(n=>n&&n!=="clip"&&!n.startsWith("__hf-"))??null}function Hs(t){if(!t)return null;try{return new URL(t,document.baseURI).pathname.split("/").filter(Boolean).at(-1)??null}catch{return t.split(/[\\\\/]/).filter(Boolean).at(-1)??null}}function Ws(t){let e=t.textContent?.replace(/\\s+/g," ").trim();return e?e.length>32?`${e.slice(0,31)}...`:e:null}function yt(t){let e=t.replace(/\\.[^.]+$/i,"").replace(/[-_]+/g," ").replace(/\\s+/g," ").trim();return e?e.replace(/\\b\\w/g,n=>n.toUpperCase()):t}function qs(t,e,n){let i=t.getAttribute("data-timeline-label")??t.getAttribute("data-label")??t.getAttribute("aria-label")??null;if(i?.trim())return i.trim();let r=t.getAttribute("data-composition-id");if(r)return yt(r);let o=t.id;if(o)return yt(o);let s=Ps(t);if(s)return yt(s);let l=Hs(Ki(t));if(l)return yt(l);let a=Ws(t);return a||`${yt(e)} ${n+1}`}function Ji(t){let n=window.__timelines??{},i=Qe({timelineRegistry:n,includeAuthoredTimingAttrs:!0}),r=O=>{if(!O)return null;let k=n[O]??null;if(!k||typeof k.duration!="function")return null;try{let P=Number(k.duration());return Number.isFinite(P)&&P>0?P:null}catch{return null}},o=O=>{let k=Fe(O.getAttribute("data-duration"));if(k!=null&&k>0)return k;let P=Fe(O.getAttribute("data-playback-start"))??Fe(O.getAttribute("data-media-start"))??0;return Number.isFinite(O.duration)&&O.duration>P?Math.max(0,(O.duration-P)/ht(O)):null},s=()=>{let O=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(O.length===0)return null;let k=0;for(let P of O){let ie=P.hasAttribute("data-hf-auto-start")?i.resolveStartForElement(P,0):Math.max(0,Number(P.getAttribute("data-start")??0)||0);if(!Number.isFinite(ie))continue;let ae=o(P);ae==null||ae<=0||(k=Math.max(k,Math.max(0,ie)+ae))}return k>0?k:null},l=O=>{let k=O.trim().toLowerCase();return!(!k||k==="main"||k.includes("caption")||k.includes("ambient"))},a=(O,k)=>{let P=[],ie=null,ae=null,z=null,U=O.parentElement;for(;U;){let $=U.getAttribute("data-composition-id");$&&(P.push($),!z&&U!==k&&(z=$),ie==null&&(ie=i.resolveStartForElement(U,0)),ae==null&&(ae=Fe(U.getAttribute("data-duration"))??r($)??null)),U=U.parentElement}return{parentCompositionId:z,compositionAncestors:P.reverse(),inheritedStart:ie,inheritedDuration:ae}},c=document.querySelector("[data-composition-id]"),u=Array.from(document.querySelectorAll("[data-composition-id]")),h=c?.getAttribute("data-composition-id")??null,f=c?i.resolveStartForElement(c,0):0,x=s(),F=x!=null?Math.max(0,x-Math.max(0,f)):null,E=r(h),S=Cn(c??document.body),D=Mn(...u.filter(O=>O!==c).map(O=>{let k=i.resolveStartForElement(O,0),P=i.resolveDurationForElement(O)??r(O.getAttribute("data-composition-id"))??null;return!Number.isFinite(k)||P==null||P<=0?null:Math.max(0,k)+P})),L=D!=null?Math.max(0,D-Math.max(0,f)):null,R=typeof E=="number"&&Number.isFinite(E)&&E>0?E:null,ne=typeof S=="number"&&Number.isFinite(S)&&S>0?S:null,q=typeof F=="number"&&Number.isFinite(F)&&F>0?F:null,C=typeof L=="number"&&Number.isFinite(L)&&L>0?L:null,g=Mn(q,C),b=R!=null&&g!=null&&R>g+1,w=ne??(b?g:Mn(R,q,C))??null,H=(w!=null?f+w:null)??(typeof x=="number"&&Number.isFinite(x)&&x>0?x:null),J=(O,k)=>!Number.isFinite(k)||k<=0?0:H==null||!Number.isFinite(H)?k:!Number.isFinite(O)||O>=H?0:Math.max(0,Math.min(k,H-O)),W=[],T=[],de=Array.from(document.querySelectorAll("[data-start], [data-track-index], [data-composition-id], video, audio, img")),be=0;for(let O=0;O<de.length;O+=1){let k=de[O];if(k===c||["SCRIPT","STYLE","LINK","META","TEMPLATE","NOSCRIPT"].includes(k.tagName))continue;let P=a(k,c),ie=i.resolveStartForElement(k,P.inheritedStart??0),ae=k.getAttribute("data-composition-id"),z=Cn(k);if((z==null||z<=0)&&ae&&ae!==h&&(z=r(ae)),(z==null||z<=0)&&k instanceof HTMLMediaElement){let ye=Fe(k.getAttribute("data-playback-start"))??Fe(k.getAttribute("data-media-start"))??0;Number.isFinite(k.duration)&&k.duration>0&&(z=Math.max(0,k.duration-ye))}if(z==null||z<=0){let ye=P.inheritedDuration;if(ye!=null&&ye>0){let Be=(P.inheritedStart??0)+ye;z=Math.max(0,Be-ie)}}if(z==null||z<=0||(z=J(ie,z),z<=0))continue;let U=ie+z;be=Math.max(be,U);let $=k.tagName.toLowerCase(),Ne=ae&&ae!==h?"composition":$==="video"?"video":$==="audio"?"audio":$==="img"?"image":"element";W.push({id:k.id||ae||null,label:qs(k,Ne,W.length),start:ie,duration:z,track:Number.parseInt(k.getAttribute("data-track-index")??k.getAttribute("data-track")??String(O),10)||0,kind:Ne,tagName:$,compositionId:k.getAttribute("data-composition-id"),compositionAncestors:P.compositionAncestors,parentCompositionId:P.parentCompositionId,nodePath:null,compositionSrc:St(k.getAttribute("data-composition-src")),assetUrl:Ki(k),timelineRole:k.getAttribute("data-timeline-role"),timelineLabel:k.getAttribute("data-timeline-label"),timelineGroup:k.getAttribute("data-timeline-group"),timelinePriority:Fe(k.getAttribute("data-timeline-priority"))})}let G=new Set(W.map(O=>O.id)),Q=c?.getAttribute("data-composition-id")??null,V=Q?n[Q]??null:null;if(V&&c){let O=V;if(typeof O.getChildren=="function")try{let k=O.getChildren(!0,!0,!1)??[],P=new Map;for(let z of c.children){let U=z;if(!U.id)continue;let $=U.tagName.toLowerCase();$==="script"||$==="style"||$==="link"||P.set(U,{id:U.id,start:1/0,end:-1/0})}let ie=z=>{let U=z;for(;U;){if(P.has(U))return U;if(U===c)return null;U=U.parentElement}return null};for(let z of k){if(typeof z.targets!="function"||typeof z.startTime!="function"||typeof z.duration!="function")continue;let U=z.startTime(),$=z.parent;for(;$&&$!==V&&typeof $.startTime=="function";)U+=$.startTime(),$=$.parent;let Ne=U+z.duration();if(!(!Number.isFinite(U)||!Number.isFinite(Ne)))for(let ye of z.targets()){if(!(ye instanceof Element))continue;let He=ie(ye);if(!He)continue;let Be=P.get(He);Be&&(Be.start=Math.min(Be.start,U),Be.end=Math.max(Be.end,Ne))}}let ae=W.length>0?Math.max(...W.map(z=>z.track))+1:0;for(let[z,U]of P){if(U.start===1/0||U.end===-1/0)continue;let $=z;if(G.has($.id))continue;let Ne=Math.max(0,U.end-U.start);if(Ne<=0)continue;let ye=J(U.start,Ne);ye<=0||(be=Math.max(be,U.start+ye),W.push({id:$.id,label:$.getAttribute("data-timeline-label")??$.getAttribute("data-label")??$.getAttribute("aria-label")??$.id,start:U.start,duration:ye,track:Number.parseInt($.getAttribute("data-track-index")??$.getAttribute("data-track")??"",10)||ae,kind:"element",tagName:$.tagName.toLowerCase(),compositionId:$.getAttribute("data-composition-id"),compositionAncestors:Q?[Q]:[],parentCompositionId:Q,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:$.getAttribute("data-timeline-role"),timelineLabel:$.getAttribute("data-timeline-label"),timelineGroup:$.getAttribute("data-timeline-group"),timelinePriority:Fe($.getAttribute("data-timeline-priority"))}),G.add($.id))}}catch(k){v("runtime.timeline.site1",k)}}if(c&&w!=null&&w>0){let O=W.length>0?Math.max(...W.map(k=>k.track))+1:0;for(let k of c.children){let P=k;if(!P.id||G.has(P.id))continue;let ie=P.getAttribute("data-timeline-role");if(ie!=="overlay"&&ie!=="persistent-overlay")continue;let ae=P.tagName.toLowerCase();if(ae==="script"||ae==="style"||ae==="link"||ae==="meta"||window.getComputedStyle(P).display==="none")continue;let U=J(0,w);U<=0||(be=Math.max(be,U),W.push({id:P.id,label:P.getAttribute("data-timeline-label")??P.getAttribute("data-label")??P.getAttribute("aria-label")??P.id,start:0,duration:U,track:Number.parseInt(P.getAttribute("data-track-index")??P.getAttribute("data-track")??"",10)||O,kind:"element",tagName:ae,compositionId:P.getAttribute("data-composition-id"),compositionAncestors:Q?[Q]:[],parentCompositionId:Q,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:ie,timelineLabel:P.getAttribute("data-timeline-label"),timelineGroup:P.getAttribute("data-timeline-group"),timelinePriority:Fe(P.getAttribute("data-timeline-priority"))}),G.add(P.id))}}Os(W);for(let O of u){if(O===c)continue;let k=O.getAttribute("data-composition-id");if(!k||!l(k))continue;let P=i.resolveStartForElement(O,0),ie=Cn(O);if((ie==null||ie<=0)&&Gi(O)!=null){let $=Gi(O);ie=Math.max(0,$-P)}let ae=r(k),z=ie&&ie>0?ie:ae;if(z==null||z<=0)continue;let U=J(P,z);U<=0||T.push({id:k,label:O.getAttribute("data-label")??k,start:P,duration:U,thumbnailUrl:St(O.getAttribute("data-thumbnail-url")),avatarName:null})}let Y=Math.max(1,be||1,w??0);return{source:"hf-preview",type:"timeline",durationInFrames:b&&ne==null?Number.POSITIVE_INFINITY:Math.max(1,Math.ceil(Y*Math.max(1,t.canonicalFps))),clips:W,scenes:T,compositionWidth:Fe(c?.getAttribute("data-width"))??1920,compositionHeight:Fe(c?.getAttribute("data-height"))??1080}}var ue=bs(Ao(),1),Eo=ue.default,hd=ue.default.stringify,xd=ue.default.fromJSON,gd=ue.default.plugin,yd=ue.default.parse,Sd=ue.default.list,bd=ue.default.document,Ad=ue.default.comment,Ed=ue.default.atRule,Fd=ue.default.rule,wd=ue.default.decl,Nd=ue.default.root,Cd=ue.default.CssSyntaxError,Md=ue.default.Declaration,Td=ue.default.Container,kd=ue.default.Processor,_d=ue.default.Document,vd=ue.default.Comment,Rd=ue.default.Warning,Ld=ue.default.AtRule,Dd=ue.default.Result,Bd=ue.default.Input,Id=ue.default.Rule,Od=ue.default.Root,Pd=ue.default.Node;var Xn="data-hf-authored-id";function ei(t){return t.replace(/[.*+?^${}()|[\\]\\\\]/g,"\\\\$&")}function ti(t){return t.replace(/\\\\/g,"\\\\\\\\").replace(/"/g,\'\\\\"\')}function ul(t){return t&&t.replace(/[^a-zA-Z0-9_-]/g,n=>`\\\\${n}`).replace(/^-?\\d/,n=>`\\\\${n}`)}function Fo(t){let e=t.trim();return e?Array.from(new Set([e,ul(e)])).filter(Boolean):[]}function cl(t){return!!t&&/[\\w-]/.test(t)}function dl(t,e,n){let i=Fo(e).sort((l,a)=>a.length-l.length);if(i.length===0)return t;let r="",o=0,s=null;for(let l=0;l<t.length;l+=1){let a=t[l],c=l>0?t[l-1]:"";if(s){r+=a,a===s&&c!=="\\\\"&&(s=null);continue}if(a===\'"\'||a==="\'"){s=a,r+=a;continue}if(a==="["){o+=1,r+=a;continue}if(a==="]"){o=Math.max(0,o-1),r+=a;continue}if(a==="#"&&o===0){let u=i.find(h=>t.startsWith(h,l+1));if(u){let h=t[l+1+u.length];if(!cl(h)){r+=n,l+=u.length;continue}}}r+=a}return r}function fl(t,e){let n=e?.trim();return n?dl(t,n,`[${Xn}="${ti(n)}"]`):t}function ml(t,e,n,i,r){let o=fl(t,i),s=pl(o,e,n),l=s.trim();if(!l||/^(html|body|:root|\\*)$/i.test(l))return t;let a=new RegExp(`\\\\[\\\\s*data-composition-id\\\\s*=\\\\s*(["\'])${ei(n)}\\\\1\\\\s*\\\\]`,"g");if(a.test(l))return s.replace(a,e);let c=s.match(/^\\s*/)?.[0]??"",u=s.match(/\\s*$/)?.[0]??"";if(r){let h=i?`[${Xn}="${ti(i)}"]`:null;if(h&&l.startsWith(h)){let f=l.slice(h.length);return`${c}${e}${h}${f}${u}`}}return`${c}${e} ${l}${u}`}function pl(t,e,n){let i=ei(n),r=String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${i}"|\'${i}\')\\s*\\]`,o=String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`;return t.replace(new RegExp(`${r}(?:${o})+`,"g"),e).replace(new RegExp(`(?:${o})+${r}`,"g"),e)}var hl=new Set(["keyframes","-webkit-keyframes","font-face"]);function xl(t){return t?.type==="atrule"}function gl(t){let e=t.parent;for(;e;){if(xl(e)&&hl.has(e.name.toLowerCase()))return!0;e=e.parent}return!1}function ni(t,e,n,i,r){let o=e.trim();if(!t||!o)return t;let s=n||`[data-composition-id="${ti(o)}"]`,l=Eo.parse(t);return l.walkRules(a=>{gl(a)||(a.selectors=a.selectors.map(c=>ml(c,s,o,i,r?.compoundAuthoredRoot)))}),l.toResult({map:!1}).css}function wo(t,e,n="[HyperFrames] composition script error:",i,r=e,o){let s=JSON.stringify(e),l=JSON.stringify(r),a=JSON.stringify(n),c=ei(e),u=JSON.stringify(o?.trim()||null),h=JSON.stringify(i??null),f=JSON.stringify(String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${c}"|\'${c}\')\\s*\\]`),x=JSON.stringify(String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`),F=JSON.stringify(Fo(o?.trim()||""));return`(function(){\n var __hfCompId = ${s};\n var __hfTimelineCompId = ${l};\n var __hfErrorLabel = ${a};\n var __hfAuthoredRootId = ${u};\n var __hfAuthoredRootAttr = ${JSON.stringify(Xn)};\n var __hfEscapeAttr = function(value) {\n return (value + "").replace(/\\\\\\\\/g, "\\\\\\\\\\\\\\\\").replace(/"/g, "\\\\\\\\\\\\"");\n };\n var __hfRootSelector = ${h} || (__hfCompId\n ? \'[data-composition-id="\' + __hfEscapeAttr(__hfCompId) + \'"]\'\n : "");\n var __hfRoot = null;\n var __hfRootSelectorPattern = ${f};\n var __hfTimingSelectorPattern = ${x};\n var __hfAuthoredRootIdForms = ${F};\n var __hfAuthoredRootSelector = __hfAuthoredRootId\n ? "[" + __hfAuthoredRootAttr + \'="\' + __hfEscapeAttr(__hfAuthoredRootId) + \'"]\'\n : "";\n var __hfIsSelectorNameChar = function(char) {\n return !!char && /[\\\\w-]/.test(char);\n };\n var __hfReplaceAuthoredRootIdSelectors = function(selector) {\n if (!__hfAuthoredRootSelector || !__hfAuthoredRootIdForms.length || typeof selector !== "string") {\n return selector;\n }\n var result = "";\n var bracketDepth = 0;\n var quote = null;\n for (var index = 0; index < selector.length; index += 1) {\n var char = selector[index];\n var previousChar = index > 0 ? selector[index - 1] : "";\n if (quote) {\n result += char;\n if (char === quote && previousChar !== "\\\\\\\\") {\n quote = null;\n }\n continue;\n }\n if (char === \'"\' || char === "\'") {\n quote = char;\n result += char;\n continue;\n }\n if (char === "[") {\n bracketDepth += 1;\n result += char;\n continue;\n }\n if (char === "]") {\n bracketDepth = Math.max(0, bracketDepth - 1);\n result += char;\n continue;\n }\n if (char === "#" && bracketDepth === 0) {\n var matchedForm = null;\n for (var formIndex = 0; formIndex < __hfAuthoredRootIdForms.length; formIndex += 1) {\n var form = __hfAuthoredRootIdForms[formIndex];\n if (selector.slice(index + 1, index + 1 + form.length) === form) {\n matchedForm = form;\n break;\n }\n }\n if (matchedForm) {\n var nextChar = selector[index + 1 + matchedForm.length];\n if (!__hfIsSelectorNameChar(nextChar)) {\n result += __hfAuthoredRootSelector;\n index += matchedForm.length;\n continue;\n }\n }\n }\n result += char;\n }\n return result;\n };\n var __hfNormalizeSelector = function(selector) {\n if (!__hfCompId || typeof selector !== "string") return selector;\n var normalized = selector\n .replace(new RegExp(__hfRootSelectorPattern + \'(?:\' + __hfTimingSelectorPattern + \')+\', \'g\'), __hfRootSelector)\n .replace(new RegExp(\'(?:\' + __hfTimingSelectorPattern + \')+\' + __hfRootSelectorPattern, \'g\'), __hfRootSelector);\n if (__hfAuthoredRootSelector) {\n normalized = __hfReplaceAuthoredRootIdSelectors(normalized);\n }\n return normalized;\n };\n var __hfFindRoot = function() {\n if (!__hfRoot && __hfRootSelector) {\n __hfRoot = window.document.querySelector(__hfRootSelector);\n }\n return __hfRoot;\n };\n var __hfContains = function(node) {\n var root = __hfFindRoot();\n return !root || node === root || root.contains(node);\n };\n var __hfQueryAll = function(selector) {\n var root = __hfFindRoot();\n if (!root || typeof selector !== "string") {\n return window.document.querySelectorAll(selector);\n }\n return Array.prototype.filter.call(window.document.querySelectorAll(__hfNormalizeSelector(selector)), function(node) {\n return __hfContains(node);\n });\n };\n var __hfQueryOne = function(selector) {\n var matches = __hfQueryAll(selector);\n return matches[0] || null;\n };\n var __hfGetElementById = function(id) {\n var found = window.document.getElementById(id);\n if (found && __hfContains(found)) return found;\n var root = __hfFindRoot();\n if (!root) return found || null;\n var idValue = id + "";\n if (__hfAuthoredRootId && __hfAuthoredRootId === idValue && root.getAttribute && root.getAttribute(__hfAuthoredRootAttr) === idValue) {\n return root;\n }\n if (root.id === idValue) return root;\n if (typeof root.querySelector !== "function") return null;\n try {\n var authoredRootMatch = root.querySelector(\'[\' + __hfAuthoredRootAttr + \'="\' + __hfEscapeAttr(idValue) + \'"]\');\n if (authoredRootMatch) return authoredRootMatch;\n } catch {}\n if (typeof CSS !== "undefined" && CSS && typeof CSS.escape === "function") {\n try {\n return root.querySelector("#" + CSS.escape(idValue)) || null;\n } catch {}\n }\n try {\n return root.querySelector(\'[id="\' + __hfEscapeAttr(idValue) + \'"]\') || null;\n } catch {}\n return null;\n };\n var __hfScopedDocument = typeof Proxy === "function"\n ? new Proxy(window.document, {\n get: function(target, prop, receiver) {\n if (prop === "querySelector") return __hfQueryOne;\n if (prop === "querySelectorAll") return __hfQueryAll;\n if (prop === "getElementById") return __hfGetElementById;\n var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\n },\n })\n : window.document;\n var __hfTimelineRegistryProxy = null;\n var __hfGetTimelineRegistry = function() {\n window.__timelines = window.__timelines || {};\n if (!__hfCompId || __hfCompId === __hfTimelineCompId || typeof Proxy !== "function") {\n return window.__timelines;\n }\n if (!__hfTimelineRegistryProxy) {\n __hfTimelineRegistryProxy = new Proxy(window.__timelines, {\n get: function(target, prop, receiver) {\n return Reflect.get(target, prop === __hfCompId ? __hfTimelineCompId : prop, target);\n },\n set: function(target, prop, value, receiver) {\n return Reflect.set(target, prop === __hfCompId ? __hfTimelineCompId : prop, value, target);\n },\n });\n }\n return __hfTimelineRegistryProxy;\n };\n var __hfScopedWindow = typeof Proxy === "function"\n ? new Proxy(window, {\n get: function(target, prop, receiver) {\n if (prop === "__timelines") return __hfGetTimelineRegistry();\n return Reflect.get(target, prop, target);\n },\n set: function(target, prop, value, receiver) {\n if (prop === "__timelines") {\n target.__timelines = value || {};\n __hfTimelineRegistryProxy = null;\n return true;\n }\n return Reflect.set(target, prop, value, target);\n },\n })\n : window;\n var __hfResolveGsapTarget = function(target) {\n if (typeof target !== "string") return target;\n return __hfQueryAll(target);\n };\n var __hfScopeTimeline = function(timeline) {\n if (!timeline || timeline.__hfScopedCompositionRoot === __hfFindRoot()) return timeline;\n ["to", "from", "fromTo", "set"].forEach(function(method) {\n var original = timeline[method];\n if (typeof original !== "function") return;\n timeline[method] = function(target) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(target);\n return original.apply(timeline, args);\n };\n });\n try {\n Object.defineProperty(timeline, "__hfScopedCompositionRoot", {\n value: __hfFindRoot(),\n configurable: true,\n });\n } catch {\n // Best-effort: timelines coming from user code may have a frozen target\n // or a non-extensible defineProperty path. Swallow \\u2014 the scoped root\n // is an enrichment, not a correctness invariant for playback.\n }\n return timeline;\n };\n var __hfBaseGsap = typeof gsap === "undefined" ? window.gsap : gsap;\n var __hfScopedGsap = !__hfBaseGsap || typeof Proxy !== "function"\n ? __hfBaseGsap\n : new Proxy(__hfBaseGsap, {\n get: function(target, prop, receiver) {\n if (prop === "timeline") {\n return function() {\n return __hfScopeTimeline(target.timeline.apply(target, arguments));\n };\n }\n if (prop === "to" || prop === "from" || prop === "fromTo" || prop === "set") {\n return function(firstArg) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(firstArg);\n return target[prop].apply(target, args);\n };\n }\n if (prop === "utils" && target.utils && typeof Proxy === "function") {\n return new Proxy(target.utils, {\n get: function(utilsTarget, utilsProp, utilsReceiver) {\n if (utilsProp === "toArray") {\n return function(firstArg) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(firstArg);\n return utilsTarget.toArray.apply(utilsTarget, args);\n };\n }\n if (utilsProp === "selector") {\n return function(base) {\n var baseEl = typeof base === "string" ? __hfQueryOne(base) : base;\n var root = baseEl || __hfFindRoot();\n return function(selector) {\n if (!root || typeof selector !== "string") return [];\n return Array.prototype.filter.call(\n window.document.querySelectorAll(__hfNormalizeSelector(selector)),\n function(node) {\n return node === root || (typeof root.contains === "function" && root.contains(node));\n },\n );\n };\n };\n }\n var value = Reflect.get(utilsTarget, utilsProp, utilsTarget);\n return typeof value === "function" ? value.bind(utilsTarget) : value;\n },\n });\n }\n var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\n },\n });\n var __hfBaseHyperframes = window.__hyperframes;\n var __hfScopedHyperframes = !__hfBaseHyperframes\n ? __hfBaseHyperframes\n : Object.assign({}, __hfBaseHyperframes, {\n getVariables: function() {\n var byComp = window.__hfVariablesByComp;\n var scoped = byComp && __hfTimelineCompId ? byComp[__hfTimelineCompId] : null;\n return scoped ? Object.assign({}, scoped) : {};\n },\n });\n var __hfRun = function() {\n try {\n (function(document, gsap, window, __hyperframes) {\n${t.replace(/<\\/(script)/gi,"<\\\\/$1")}\n }).call(window, __hfScopedDocument, __hfScopedGsap, __hfScopedWindow, __hfScopedHyperframes);\n } catch (_err) {\n console.error(__hfErrorLabel, __hfCompId, _err);\n }\n };\n __hfFindRoot();\n __hfRun();\n})();`}function No(){if(typeof document>"u")return{};let t=ii(document.documentElement),e=yl();return{...t,...e}}function ii(t){if(!t)return{};let e=t.getAttribute("data-composition-variables");if(!e)return{};let n;try{n=JSON.parse(e)}catch{return{}}if(!Array.isArray(n))return{};let i={};for(let r of n){if(!r||typeof r!="object")continue;let o=r;typeof o.id!="string"||!("default"in o)||(i[o.id]=o.default)}return i}function yl(){if(typeof window>"u")return{};let t=window.__hfVariables;return!t||typeof t!="object"||Array.isArray(t)?{}:t}var Sl=8e3,bl=/^(?![a-zA-Z][a-zA-Z\\d+\\-.]*:)(?!\\/\\/)(?!\\/)(?!\\.\\.?\\/).+/;function Al(t,e){return`${t}__hf${e}`}var El=t=>new Promise(e=>{let n=!1,i=Date.now(),r=null,o=s=>{n||(n=!0,r!=null&&window.clearTimeout(r),e({status:s,elapsedMs:Math.max(0,Date.now()-i)}))};t.addEventListener("load",()=>o("load"),{once:!0}),t.addEventListener("error",()=>o("error"),{once:!0}),r=window.setTimeout(()=>o("timeout"),Sl)});function ri(t){for(;t.firstChild;)t.removeChild(t.firstChild);t.textContent=""}var Fl=["data-composition-id","data-composition-file","data-start","data-duration","data-end","data-track-index","data-track","data-composition-src","data-hf-authored-duration","data-hf-authored-end"];function wl(t){let e=document.importNode(t,!0),n=e.getAttribute("id")?.trim();for(let o of Fl)e.removeAttribute(o);n&&(e.removeAttribute("id"),e.setAttribute("data-hf-authored-id",n)),e.setAttribute("data-hf-inner-root","true");let i=e.getAttribute("data-width"),r=e.getAttribute("data-height");return e.style.width=i?`${i}px`:"100%",e.style.height=r?`${r}px`:"100%",e}function Co(t,e){let n=t.trim();if(!n)return t;try{return bl.test(n)?new URL(n,document.baseURI).toString():e?new URL(n,e).toString():new URL(n,document.baseURI).toString()}catch{return t}}function Nl(t){let e=t.getAttribute("data-variable-values");if(!e)return{};let n;try{n=JSON.parse(e)}catch{return{}}return!n||typeof n!="object"||Array.isArray(n)?{}:n}function on(t){let e=(t.getAttribute("data-composition-id")||"").trim()||null;return{authoredCompositionId:(t.getAttribute("data-hf-original-composition-id")||e||"").trim()||null,runtimeCompositionId:e}}function Cl(t){let e=new Map;for(let n of t){let i=on(n).authoredCompositionId||"";i&&e.set(i,(e.get(i)||0)+1)}return e}function Mo(t){let e=on(t).authoredCompositionId;return e?!!document.querySelector(`template#${CSS.escape(e)}-template`):!1}function Ml(t){return!!t.querySelector(\'[data-hf-inner-root="true"]\')}function Tl(t){return t.hasAttribute("data-composition-src")?!0:Mo(t)?t.children.length===0||t.hasAttribute("data-hf-original-composition-id")?!0:Ml(t):!1}function si(){return Array.from(document.querySelectorAll("[data-composition-src], [data-composition-id]")).filter(e=>e.hasAttribute("data-composition-src")?!0:Mo(e))}function To(){let t=window.__hfVariablesByComp;if(!t)return;let e=new Set(si().map(n=>on(n).runtimeCompositionId).filter(n=>!!n));for(let n of Object.keys(t))e.has(n)||delete t[n]}function ko(t,e=Cl(t)){let n=new Map,i=new Map;for(let r of t){let{authoredCompositionId:o,runtimeCompositionId:s}=on(r),l=Tl(r);if(!o){i.set(r,{authoredCompositionId:null,runtimeCompositionId:s});continue}let a=(e.get(o)||0)>1,c=s||o;if(l){let u=a?(n.get(o)||0)+1:0;a&&n.set(o,u),c=a?Al(o,u):o,a?r.setAttribute("data-hf-original-composition-id",o):r.removeAttribute("data-hf-original-composition-id"),r.setAttribute("data-composition-id",c),s&&s!==c&&window.__hfVariablesByComp&&delete window.__hfVariablesByComp[s]}i.set(r,{authoredCompositionId:o,runtimeCompositionId:c})}return i}async function oi(t){let e=null;t.authoredCompositionId&&(e=Array.from(t.sourceNode.querySelectorAll("[data-composition-id]")).find(x=>x.getAttribute("data-composition-id")===t.authoredCompositionId)??null);let n=e??t.sourceNode,i=e?.getAttribute("data-composition-id")?.trim()||t.authoredCompositionId||null,r=t.runtimeCompositionId||i||null,o=e?.getAttribute("id")?.trim()||null,s=r?`[data-composition-id="${CSS.escape(r)}"]`:void 0;if(t.headLinks)for(let f of t.headLinks){let x=f.getAttribute("href")||"";x&&(document.head.querySelector(`link[href="${CSS.escape(x)}"]`)||document.head.appendChild(f.cloneNode(!0)))}if(t.headStyles)for(let f of t.headStyles){let x=f.cloneNode(!0);x instanceof HTMLStyleElement&&(i&&(x.textContent=ni(x.textContent||"",i,s,o)),document.head.appendChild(x),t.injectedStyles.push(x))}let l=Array.from(n.querySelectorAll("style"));for(let f of l){let x=f.cloneNode(!0);x instanceof HTMLStyleElement&&(i&&(x.textContent=ni(x.textContent||"",i,s,o)),document.head.appendChild(x),t.injectedStyles.push(x))}let a=[];if(t.headScripts)for(let f of t.headScripts){let x=f.getAttribute("type")?.trim()??"",F=f.getAttribute("src")?.trim()??"";if(F){let E=Co(F,t.compositionUrl);a.push({kind:"external",src:E,type:x})}else{let E=f.textContent?.trim()??"";E&&a.push({kind:"inline",content:E,type:x,scopeCompositionId:i})}}let c=Array.from(n.querySelectorAll("script")),u=[...a];for(let f of c){let x=f.getAttribute("type")?.trim()??"",F=f.getAttribute("src")?.trim()??"";if(F){let E=Co(F,t.compositionUrl);u.push({kind:"external",src:E,type:x})}else{let E=f.textContent?.trim()??"";E&&u.push({kind:"inline",content:E,type:x,scopeCompositionId:i})}f.parentNode?.removeChild(f)}let h=Array.from(n.querySelectorAll("style"));for(let f of h)f.parentNode?.removeChild(f);if(e){let f=e.getAttribute("data-width"),x=e.getAttribute("data-height"),F=t.parseDimensionPx(f),E=t.parseDimensionPx(x);f&&t.host.setAttribute("data-width",f),x&&t.host.setAttribute("data-height",x),F&&t.host instanceof HTMLElement&&(t.host.style.width=F),E&&t.host instanceof HTMLElement&&(t.host.style.height=E),e.hasAttribute("data-timeline-locked")&&t.host.setAttribute("data-timeline-locked",""),t.host.appendChild(wl(e))}else t.hasTemplate?t.host.appendChild(document.importNode(n,!0)):t.host.innerHTML=t.fallbackBodyInnerHtml;if(r){let f={...t.declaredVariableDefaults??{},...Nl(t.host)};Object.keys(f).length>0?(window.__hfVariablesByComp||(window.__hfVariablesByComp={}),window.__hfVariablesByComp[r]=f):window.__hfVariablesByComp&&delete window.__hfVariablesByComp[r]}for(let f of u){let x=document.createElement("script");if(f.type&&(x.type=f.type),x.async=!1,f.kind==="external"?x.src=f.src:f.type.toLowerCase()==="module"?x.textContent=f.content:f.scopeCompositionId?x.textContent=wo(f.content,f.scopeCompositionId,"[HyperFrames] composition script error:",s,r||f.scopeCompositionId,o):x.textContent=`(function(){${f.content}})();`,document.body.appendChild(x),t.injectedScripts.push(x),f.kind==="external"){let F=await El(x);F.status!=="load"&&t.onDiagnostic?.({code:"external_composition_script_load_issue",details:{hostCompositionId:t.authoredCompositionId,runtimeCompositionId:t.runtimeCompositionId,hostCompositionSrc:t.hostCompositionSrc,resolvedScriptSrc:f.src,loadStatus:F.status,elapsedMs:F.elapsedMs}})}}}async function _o(t){let e=si();if(To(),e.length===0)return;let n=ko(e),i=e.filter(r=>{if(r.hasAttribute("data-composition-src")||r.children.length>0)return!1;let o=n.get(r)?.authoredCompositionId;return o?!!document.querySelector(`template#${CSS.escape(o)}-template`):!1});if(i.length!==0)for(let r of i){let o=n.get(r),s=o?.authoredCompositionId;if(!s)continue;let l=document.querySelector(`template#${CSS.escape(s)}-template`);ri(r),await oi({host:r,authoredCompositionId:s,runtimeCompositionId:o?.runtimeCompositionId||s,hostCompositionSrc:`template#${s}-template`,sourceNode:l.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:null,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,onDiagnostic:t.onDiagnostic})}}async function vo(t){let e=si();if(To(),e.length===0)return;let n=ko(e),i=e.filter(r=>r.hasAttribute("data-composition-src"));i.length!==0&&await Promise.all(i.map(async r=>{let o=r.getAttribute("data-composition-src");if(!o)return;let s=n.get(r),l=s?.authoredCompositionId||null,a=s?.runtimeCompositionId||l||null,c=null;try{c=new URL(o,document.baseURI)}catch{c=null}ri(r);try{let u=l!=null?document.querySelector(`template#${CSS.escape(l)}-template`):null;if(u){await oi({host:r,authoredCompositionId:l,runtimeCompositionId:a,hostCompositionSrc:o,sourceNode:u.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:c,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,onDiagnostic:t.onDiagnostic});return}let h=await fetch(o);if(!h.ok)throw new Error(`HTTP ${h.status}`);let f=await h.text(),F=new DOMParser().parseFromString(f,"text/html"),E=(l?F.querySelector(`template#${CSS.escape(l)}-template`):null)??F.querySelector("template"),S=E?E.content:F.body,D=E?void 0:Array.from(F.head.querySelectorAll("style")),L=E?void 0:Array.from(F.head.querySelectorAll("script")),R=E?void 0:Array.from(F.head.querySelectorAll(\'link[rel="stylesheet"], link[rel="preconnect"]\'));await oi({host:r,authoredCompositionId:l,runtimeCompositionId:a,hostCompositionSrc:o,sourceNode:S,hasTemplate:!!E,fallbackBodyInnerHtml:F.body.innerHTML,compositionUrl:c,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,headStyles:D,headScripts:L,headLinks:R,declaredVariableDefaults:ii(F.documentElement),onDiagnostic:t.onDiagnostic})}catch(u){t.onDiagnostic?.({code:"external_composition_load_failed",details:{hostCompositionId:l,runtimeCompositionId:a,hostCompositionSrc:o,errorMessage:u instanceof Error?u.message:"unknown_error"}}),ri(r)}}))}function kl(t){return t instanceof HTMLElement?t.dataset.captionWrapper!=="true"?t:t.querySelector(":scope > span")??null:null}function _l(){let t=[],e=document.querySelectorAll(".caption-group");for(let n of e)for(let i of n.children){if(!(i instanceof HTMLElement))continue;let r=i.dataset.captionWrapper==="true"?i.querySelector(":scope > span"):i.tagName==="SPAN"?i:null;r&&t.push(r)}return t}function vl(t){let e=t.parentElement;if(e?.dataset.captionWrapper==="true")return e;let n=document.createElement("span");return n.style.display="inline-block",n.dataset.captionWrapper="true",t.parentNode?.insertBefore(n,t),n.appendChild(t),n}function ai(){let t=window.gsap;t&&document.querySelectorAll(".caption-group").length!==0&&fetch("caption-overrides.json").then(e=>e.ok?e.json():null).then(e=>{if(!e||!Array.isArray(e)||e.length===0)return;let n=_l();for(let i of e){let r=null;if(i.wordId&&(r=kl(document.getElementById(i.wordId))),!r&&i.wordIndex!==void 0&&(r=n[i.wordIndex]??null),!r)continue;let o={},s={};if(i.x!==void 0&&(o.x=i.x),i.y!==void 0&&(o.y=i.y),i.scale!==void 0&&(o.scale=i.scale),i.rotation!==void 0&&(o.rotation=i.rotation),i.opacity!==void 0&&(s.opacity=i.opacity),i.fontSize!==void 0&&(s.fontSize=`${i.fontSize}px`),i.fontWeight!==void 0&&(s.fontWeight=i.fontWeight),i.fontFamily!==void 0&&(s.fontFamily=i.fontFamily),i.activeColor||i.dimColor){let a=t.getTweensOf(r).filter(u=>u.vars.color!==void 0).sort((u,h)=>u.startTime()-h.startTime()),c=a.length>0?String(a[0].vars.color):"";for(let u of a)String(u.vars.color)===c?i.dimColor&&(u.vars.color=i.dimColor):i.activeColor&&(u.vars.color=i.activeColor);i.dimColor&&t.set(r,{color:i.dimColor})}if(Object.keys(s).length>0&&t.set(r,s),Object.keys(o).length>0){let l=vl(r);t.set(l,o)}}}).catch(()=>{})}var sn=class{constructor(e){ge(this,"_baseTime",0);ge(this,"_playStartMs",null);ge(this,"_rate",1);ge(this,"_duration",1/0);ge(this,"_nowMs");ge(this,"_audioSource",null);this._baseTime=e?.initialTime??0,this._rate=e?.rate??1,this._duration=e?.duration??1/0,this._nowMs=e?.nowMs??(()=>performance.now())}now(){if(this._playStartMs===null)return this._baseTime;if(this._audioSource){let i=null;if("currentTimeSeconds"in this._audioSource)i=this._audioSource.currentTimeSeconds;else{let{el:r,compositionStart:o,mediaStart:s}=this._audioSource;!r.paused&&Number.isFinite(r.currentTime)&&(i=(r.currentTime-s)/(r.playbackRate>0?r.playbackRate:1)*this._rate+o)}if(i!==null)return Number.isFinite(this._duration)&&i>=this._duration?this._duration:Math.max(0,i)}let e=(this._nowMs()-this._playStartMs)/1e3,n=this._baseTime+e*this._rate;return Number.isFinite(this._duration)&&n>=this._duration?this._duration:Math.max(0,n)}play(){return this._playStartMs!==null||Number.isFinite(this._duration)&&this._baseTime>=this._duration?!1:(this._playStartMs=this._nowMs(),!0)}pause(){return this._playStartMs===null?!1:(this._baseTime=this.now(),this._playStartMs=null,!0)}seek(e){let n=Number.isFinite(this._duration)?Math.max(0,Math.min(e,this._duration)):Math.max(0,e);this._baseTime=n,this._playStartMs!==null&&(this._playStartMs=this._nowMs())}isPlaying(){return this._playStartMs!==null}setRate(e){let n=Number.isFinite(e)&&e>0?Math.max(.1,Math.min(5,e)):1;this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._rate=n}getRate(){return this._rate}setDuration(e){this._duration=Number.isFinite(e)&&e>0?e:1/0,this._baseTime>this._duration&&(this._baseTime=this._duration)}getDuration(){return this._duration}attachAudioSource(e){this._audioSource=e}detachAudioSource(){this._audioSource&&this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._audioSource=null}hasAudioSource(){return this._audioSource!==null}getSource(){if(this._audioSource&&this._playStartMs!==null){if("currentTimeSeconds"in this._audioSource)return"audio";let{el:e}=this._audioSource;if(!e.paused&&Number.isFinite(e.currentTime))return"audio"}return"monotonic"}snapshot(){return{time:this.now(),playing:this.isPlaying(),rate:this._rate,duration:this._duration,source:this.getSource()}}reachedEnd(){return Number.isFinite(this._duration)&&this.now()>=this._duration}};function Ro(t){return!Number.isFinite(t)||t<=0?1:t}function Rl(t,e){let{elapsed:n,mediaStart:i,scheduledAt:r,safeRate:o,clipDuration:s}=e,l=Number.isFinite(s)&&s>0,a=s*o;if(n>=0){let u=a-n;return l&&u<=0?!1:(l?t.start(0,n+i,u):t.start(0,n+i),!0)}let c=-n/o;return l?t.start(r+c,i,a):t.start(r+c,i),!0}var an=class{constructor(){ge(this,"_ctx",null);ge(this,"_bufferCache",new Map);ge(this,"_failedSrcs",new Set);ge(this,"_activeSources",[]);ge(this,"_masterGain",null);ge(this,"_rateAnchorCtx",0);ge(this,"_rateAnchorComp",0);ge(this,"_rate",1);ge(this,"_paused",!0);ge(this,"_playGeneration",0)}async init(){try{return this._ctx=new AudioContext,this._masterGain=this._ctx.createGain(),this._masterGain.connect(this._ctx.destination),!0}catch{return!1}}get context(){return this._ctx}getTime(){return!this._ctx||this._paused?-1:this._rateAnchorComp+(this._ctx.currentTime-this._rateAnchorCtx)*this._rate}async decodeAudioElement(e){let n=e.currentSrc||e.getAttribute("src");if(!n)return null;if(this._bufferCache.has(n))return this._bufferCache.get(n);if(this._failedSrcs.has(n)||!this._ctx)return null;try{let i=await fetch(n);if(!i.ok)return this._failedSrcs.add(n),v("webAudioTransport.fetch",new Error(`${i.status} ${n}`)),null;let r=await i.arrayBuffer(),o=await this._ctx.decodeAudioData(r);return this._bufferCache.set(n,o),o}catch(i){return this._failedSrcs.add(n),v("webAudioTransport.decode",i),null}}startGeneration(){return this._playGeneration+=1,this._playGeneration}currentGeneration(){return this._playGeneration}async schedulePlayback(e,n,i,r,o,s,l,a=1,c=Number.POSITIVE_INFINITY){if(!this._ctx||!this._masterGain||l!==this._playGeneration)return null;try{if(this._ctx.state==="suspended"&&await this._ctx.resume(),l!==this._playGeneration)return null;let u=Ro(a),h=this._ctx.createBufferSource();h.buffer=n,h.playbackRate.value=u;let f=this._ctx.createGain();f.gain.value=s,h.connect(f),f.connect(this._masterGain);let x=o-i,F=this._ctx.currentTime;if(this._rate=u,this._rateAnchorCtx=F,this._rateAnchorComp=o,!Rl(h,{elapsed:x,mediaStart:r,scheduledAt:F,safeRate:u,clipDuration:c}))return h.disconnect(),f.disconnect(),null;let E=e.muted;e.muted=!0;let S={el:e,sourceNode:h,gainNode:f,compositionStart:i,mediaStart:r,scheduledAt:F,priorMuted:E,bounded:Number.isFinite(c)&&c>0};return this._activeSources.push(S),this._paused=!1,h.addEventListener("ended",()=>{let D=this._activeSources.indexOf(S);D!==-1&&(this._activeSources.splice(D,1),e.muted=E,this._activeSources.length===0&&(this._paused=!0))}),S}catch(u){return v("webAudioTransport.schedule",u),null}}setRate(e){let n=Ro(e);if(n===this._rate)return!1;this._ctx&&!this._paused&&(this._rateAnchorComp=this.getTime(),this._rateAnchorCtx=this._ctx.currentTime),this._rate=n;for(let i of this._activeSources)try{i.sourceNode.playbackRate.value=n}catch(r){v("webAudioTransport.setRate",r)}return!0}hasBoundedActiveSources(){return this._activeSources.some(e=>e.bounded)}stopAll(){for(let e of this._activeSources){try{e.sourceNode.stop(),e.sourceNode.disconnect(),e.gainNode.disconnect()}catch{}e.el.muted=e.priorMuted}this._activeSources=[],this._paused=!0}setVolume(e){this._masterGain&&(this._masterGain.gain.value=Math.max(0,Math.min(1,e)))}setElementVolume(e,n){let i=Math.max(0,Math.min(1,n));for(let r of this._activeSources)if(r.el===e)try{r.gainNode.gain.value=i}catch(o){v("webAudioTransport.setElementVolume",o)}}setMuted(e){this._masterGain&&(this._masterGain.gain.value=e?0:1)}isActive(){return this._activeSources.length>0&&!this._paused}destroy(){if(this.stopAll(),this._bufferCache.clear(),this._ctx)try{this._ctx.close()}catch{}this._ctx=null,this._masterGain=null}};var Lo="data-hf-authored-duration",Do="data-hf-authored-end";function Bo(){let t=ji(),e=null,n=null,i=[],r=new Set,o=null;if(typeof window.__hfRuntimeTeardown=="function")try{window.__hfRuntimeTeardown()}catch(d){v("runtime.init.site1",d)}document.documentElement&&(document.documentElement.style.margin="0",document.documentElement.style.padding="0",document.documentElement.style.overflow="hidden"),document.body&&(document.body.style.margin="0",document.body.style.padding="0",document.body.style.overflow="hidden"),window.__timelines=window.__timelines||{};let s=d=>{i.push(d)},l=(d,p,m)=>{let y=m??`${d}:${JSON.stringify(p)}`;r.has(y)||(r.add(y),Ee({source:"hf-preview",type:"diagnostic",code:d,details:p}))},a=d=>{let p={scale:1,focusX:960,focusY:540},m=[],y=[],A={time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying(),renderMode:!1,timelineDirty:!1};return{play:d.play,pause:d.pause,seek:d.seek,getTime:d.getTime,getDuration:d.getDuration,isPlaying:d.isPlaying,getMainTimeline:()=>null,getElementBounds:()=>{},getElementsAtPoint:()=>{},setElementPosition:()=>{},previewElementPosition:()=>{},setElementKeyframes:()=>{},setElementScale:()=>{},setElementFontSize:()=>{},setElementTextContent:()=>{},setElementTextColor:()=>{},setElementTextShadow:()=>{},setElementTextFontWeight:()=>{},setElementTextFontFamily:()=>{},setElementTextOutline:()=>{},setElementTextHighlight:()=>{},setElementVolume:()=>{},setStageZoom:()=>{},getStageZoom:()=>p,setStageZoomKeyframes:()=>{},getStageZoomKeyframes:()=>m,addElement:()=>!1,removeElement:()=>!1,updateElementTiming:()=>!1,setElementTiming:()=>{},updateElementSrc:()=>!1,updateElementLayer:()=>!1,updateElementBasePosition:()=>!1,markTimelineDirty:()=>{},isTimelineDirty:()=>!1,rebuildTimeline:()=>{},ensureTimeline:()=>{},enableRenderMode:()=>{},disableRenderMode:()=>{},renderSeek:d.renderSeek,getElementVisibility:()=>({visible:!1}),getVisibleElements:()=>y,getRenderState:()=>({...A,time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying()})}},c=1/60,u=.75,h=2,f=.05,x=100,F=240,E=d=>{if(d instanceof Error)return d.message||String(d);if(typeof d=="string")return d;try{return JSON.stringify(d)}catch{return String(d??"")}},S=d=>{let p=d.toLowerCase();return p.includes("cannot read properties of null")||p.includes("cannot set properties of null")?{code:"runtime_null_dom_access",category:"dom-null-access"}:p.includes("failed to execute \'queryselector\'")?{code:"runtime_invalid_selector",category:"selector-invalid"}:p.includes("is not defined")?{code:"runtime_reference_missing",category:"reference-missing"}:{code:"runtime_script_error",category:"script-error"}},D=d=>{if(d==null||d.trim()==="")return null;let p=Number.parseFloat(d);return!Number.isFinite(p)||p<=0?null:`${p}px`},L=()=>{let d=document.querySelector(\'[data-composition-id][data-root="true"]\');if(d instanceof HTMLElement)return d;let p=Array.from(document.querySelectorAll("[data-composition-id]"));return p.length===0?null:p.find(m=>!m.parentElement?.closest("[data-composition-id]"))??p[0]??null},R=()=>{let d=L();if(!d)return;let p=D(d.getAttribute("data-width")),m=D(d.getAttribute("data-height"));p&&(d.style.width=p),m&&(d.style.height=m),p&&d.style.setProperty("--comp-width",p),m&&d.style.setProperty("--comp-height",m)},ne=()=>{let d=L(),p=Array.from(document.querySelectorAll("[data-composition-id]")).filter(m=>m.hasAttribute("data-duration")||m.hasAttribute("data-end"));for(let m of p){if(d&&m===d)continue;let y=m.getAttribute("data-duration"),A=m.getAttribute("data-end");y!=null&&!m.hasAttribute(Lo)&&m.setAttribute(Lo,y),A!=null&&!m.hasAttribute(Do)&&m.setAttribute(Do,A),m.removeAttribute("data-duration"),m.removeAttribute("data-end")}},q=()=>{let d=L();if(!d)return;d.style.position||(d.style.position="relative"),d.style.overflow="hidden";let p=D(d.getAttribute("data-width")),m=D(d.getAttribute("data-height"));p&&(d.style.width=p),m&&(d.style.height=m);let y=Array.from(d.children);for(let A of y){let M=A.tagName.toLowerCase();if(M==="script"||M==="style"||M==="link"||M==="meta"||!A.hasAttribute("data-start"))continue;let B=(A.style.top==="0px"||A.style.top==="0")&&(A.style.left==="0px"||A.style.left==="0")&&A.style.width==="100%"&&A.style.height==="100%",j=/translate\\(\\s*-50%\\s*,\\s*-50%\\s*\\)/.test(A.style.transform);if(B&&j&&!A.hasAttribute("data-width")&&!A.hasAttribute("data-height")){let qe=A.style.top,he=A.style.left,dt=A.style.width,se=A.style.height;A.style.top="",A.style.left="",A.style.width="",A.style.height="";let X=window.getComputedStyle(A);X.top!=="auto"||X.bottom!=="auto"||X.left!=="auto"||X.right!=="auto"||X.width!=="0px"||X.height!=="0px"||(A.style.top=qe,A.style.left=he,A.style.width=dt,A.style.height=se)}let Z=window.getComputedStyle(A),ee=Z.position;if(ee!=="absolute"&&ee!=="fixed"&&(A.style.position="absolute"),!!A.style.top||!!A.style.bottom||Z.top!=="auto"||Z.bottom!=="auto"||(A.style.top="0"),!!A.style.left||!!A.style.right||Z.left!=="auto"||Z.right!=="auto"||(A.style.left="0"),M!=="audio"){let qe=D(A.getAttribute("data-width")),he=D(A.getAttribute("data-height")),dt=Z.width!=="0px"&&Z.width!=="auto",se=Z.height!=="0px"&&Z.height!=="auto";qe?!A.style.width&&!dt&&(A.style.width=qe):!A.style.width&&Z.width==="0px"&&(A.style.width="100%"),he?!A.style.height&&!se&&(A.style.height=he):!A.style.height&&Z.height==="0px"&&(A.style.height="100%")}}},C=(d,p=0,m)=>Qe({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:m?.includeAuthoredTimingAttrs??!0}).resolveStartForElement(d,p),g=(d,p)=>Qe({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:p?.includeAuthoredTimingAttrs??!0}).resolveDurationForElement(d),b=(d,p=0)=>!d.hasAttribute("data-hf-auto-start")&&d.hasAttribute("data-start")?Math.max(0,Number(d.getAttribute("data-start")??0)||0):C(d,p),N=(d,p)=>{let m=d.parentElement;for(;m&&m!==p;){if(m.hasAttribute("data-start"))return m;m=m.parentElement}return null},w=(d,p)=>{let m=d.tagName.toLowerCase();if(m==="script"||m==="style"||m==="link"||m==="meta")return!1;let y=m==="video"||m==="audio"?b(d,0):C(d,0),A=g(d),M=d.getAttribute("data-composition-id");if(M){let j=(window.__timelines??{})[M],Z=null;if(j&&typeof j.duration=="function"){let oe=Number(j.duration());Number.isFinite(oe)&&oe>0&&(Z=oe)}let ee=d.hasAttribute("data-composition-src")||d.hasAttribute("data-composition-file");A!=null&&A>0&&Z!=null&&!ee?A=Math.min(A,Z):(A==null||A<=0)&&Z!=null&&(A=Z)}let B=A!=null&&A>0?y+A:Number.POSITIVE_INFINITY;return p>=y&&(Number.isFinite(B)?p<=B:!0)},_=!!document.querySelector("[data-composition-src]"),H=!1;{let d=document.querySelectorAll("[data-composition-id]:not([data-composition-src])");for(let p of d){let m=p.getAttribute("data-composition-id");if(m&&p.children.length===0&&document.querySelector(`template#${CSS.escape(m)}-template`)){H=!0;break}}}let J=!_&&!H,W=d=>{if(!d||typeof d.duration!="function")return null;try{let p=Number(d.duration());return Number.isFinite(p)?Math.max(0,p):null}catch{return null}},T=d=>typeof d=="number"&&Number.isFinite(d)&&d>c,de=d=>{let p=Number(d.getAttribute("data-duration"));if(Number.isFinite(p)&&p>0)return p;let m=Number(d.getAttribute("data-playback-start")??d.getAttribute("data-media-start")??"0"),y=Number.isFinite(m)?Math.max(0,m):0;return Number.isFinite(d.duration)&&d.duration>y?Math.max(0,d.duration-y):null},be=()=>{let d=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(d.length===0)return null;let p=0;for(let m of d){let y=b(m,0);if(!Number.isFinite(y))continue;let A=de(m);A==null||A<=c||(p=Math.max(p,Math.max(0,y)+A))}return p>c?p:null},G=()=>{let d=L();if(!d)return null;let p=window.__timelines??{},m=Qe({timelineRegistry:p,includeAuthoredTimingAttrs:!0}),y=0,A=Number.parseFloat(d.getAttribute("data-duration")??"");Number.isFinite(A)&&A>0&&(y=A);let M=Array.from(d.querySelectorAll("[data-composition-id][data-start]"));for(let B of M){if(!(B instanceof Element)||B.parentElement?.closest("[data-composition-id]")!==d)continue;let Z=m.resolveStartForElement(B,0),ee=m.resolveDurationForElement(B);!Number.isFinite(Z)||ee==null||ee<=0||(y=Math.max(y,Math.max(0,Z)+ee))}return y>c?y:null},Q=()=>{let d=be();return typeof d!="number"||!Number.isFinite(d)||d<=c?null:d},V=d=>T(d)?Math.max(c,d*u):c,Y=(d,p=0)=>{let m=W(d),y=Q(),A=G(),M=Math.max(y??0,A??0),B=Number.isFinite(p)&&p>c?p:0,j=0;return T(m)?j=Math.max(m,M,B):T(M)?j=Math.max(M,B):j=B,j>0?Math.max(0,j):0},we=()=>{let d=window.__timelines??{},p=Qe({timelineRegistry:d,includeAuthoredTimingAttrs:!0}),m=Q(),y=G(),A=Math.max(m??0,y??0)||null,M=V(A),B=se=>{let X=document.querySelector(`[data-composition-id="${CSS.escape(se)}"]`);return X?p.resolveStartForElement(X,0):0},j=se=>{let X=window.gsap;if(!X||typeof X.timeline!="function")return null;let fe=X.timeline({paused:!0});for(let xe of se)fe.add(xe.timeline,B(xe.compositionId));return fe},Z=(se,X)=>{if(!T(se))return null;let fe=window.gsap;if(!fe||typeof fe.timeline!="function")return null;let xe=fe.timeline({paused:!0});if(X)try{xe.add(X,0)}catch(le){v("runtime.init.site2",le)}let Se=xe;if(typeof Se.to=="function")try{Se.to({},{duration:se})}catch(le){v("runtime.init.site3",le)}return xe},ee=(se,X)=>{let fe=se;if(typeof fe.getChildren!="function")return[];try{let xe=fe.getChildren(!0,!0,!0)??[];if(!Array.isArray(xe))return[];let Se=[];for(let le of X)if(!xe.some(_e=>_e===le.timeline))try{let _e=B(le.compositionId);se.add(le.timeline,_e),Se.push(le.compositionId)}catch(_e){v("runtime.init.site4",_e)}return Se}catch{return[]}},oe=L(),ce=oe?.getAttribute("data-composition-id")??null;if(!ce)return{timeline:null};let Ce=d[ce]??null,he=(()=>{if(!oe)return[];let se=new Set,X=Array.from(oe.querySelectorAll("[data-composition-id]")),fe=[];for(let xe of X){let Se=xe.getAttribute("data-composition-id");if(!Se||Se===ce||se.has(Se))continue;se.add(Se);let le=d[Se]??null;if(!le||typeof le.play!="function"||typeof le.pause!="function")continue;let Me=W(le);fe.push({compositionId:Se,timeline:le,durationSeconds:Me??0})}return fe})(),dt=se=>{for(let X of se){let fe=X.timeline;if(typeof fe.paused=="function")try{fe.paused(!1)}catch(xe){v("runtime.init.site5",xe)}}};if(he.length>0&&dt(he),Ce){let se=he.length>0?ee(Ce,he):[];if((he.length>0||!document.querySelector("[data-composition-id]:not([data-composition-id=\'"+ce+"\'])"))&&(Ae=!0),se.length>0)try{let le=Ce.time();Ce.seek(le,!1)}catch{}let X=W(Ce);if(!T(X)&&he.length>0){let le=he.map(fs=>fs.compositionId),Me=j(he),_e=W(Me);if(Me&&T(_e))return{timeline:Me,selectedTimelineIds:le,selectedDurationSeconds:_e,mediaDurationFloorSeconds:m,diagnostics:{code:"root_timeline_unusable_fallback",details:{rootCompositionId:ce,rootDurationSeconds:X,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:M,selectedDurationSeconds:_e,mediaDurationFloorSeconds:m,authoredCompositionDurationFloorSeconds:y,selectedTimelineIds:le,autoNestedChildren:se}}};let yn=Z(A??0,Ce),Sn=W(yn);if(yn&&T(Sn))return{timeline:yn,selectedTimelineIds:[ce],selectedDurationSeconds:Sn,mediaDurationFloorSeconds:m,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:ce,rootDurationSeconds:X,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:m,authoredCompositionDurationFloorSeconds:y,selectedDurationSeconds:Sn,selectedTimelineIds:[ce],autoNestedChildren:se}}}}if(!T(X)&&he.length===0){let le=Z(A??0,Ce),Me=W(le);if(le&&T(Me))return{timeline:le,selectedTimelineIds:[ce],selectedDurationSeconds:Me,mediaDurationFloorSeconds:m,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:ce,rootDurationSeconds:X,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:m,authoredCompositionDurationFloorSeconds:y,selectedDurationSeconds:Me,selectedTimelineIds:[ce]}}}}let fe=oe?.getAttribute("data-duration"),xe=fe?parseFloat(fe):null,Se=Math.max(T(xe)?xe:0,y??0);if(Se>0&&T(Se)&&T(X)&&Se>=X+.5){let le=Ce;if(typeof le.to=="function")try{le.to({},{duration:0},Se)}catch(_e){v("runtime.init.site6",_e)}let Me=W(Ce);if(T(Me))return{timeline:Ce,selectedTimelineIds:[ce],selectedDurationSeconds:Me,mediaDurationFloorSeconds:m,diagnostics:{code:"root_timeline_padded_to_declared_duration",details:{rootCompositionId:ce,rootDurationSeconds:X,rootDeclaredDur:xe,authoredCompositionDurationFloorSeconds:y,newDur:Me}}}}return{timeline:Ce,selectedTimelineIds:[ce],selectedDurationSeconds:X,mediaDurationFloorSeconds:m,diagnostics:se.length>0?{code:"root_timeline_auto_nested_children",details:{rootCompositionId:ce,selectedDurationSeconds:X,autoNestedChildren:se}}:void 0}}if(he.length>0){let se=he.map(xe=>xe.compositionId),X=j(he),fe=W(X);if(X)return{timeline:X,selectedTimelineIds:se,selectedDurationSeconds:fe,mediaDurationFloorSeconds:m,diagnostics:{code:"root_timeline_missing_fallback",details:{rootCompositionId:ce,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:M,selectedDurationSeconds:fe,mediaDurationFloorSeconds:m,selectedTimelineIds:se}}}}return{timeline:null}},Ae=!1,O=()=>{if(!J)return!1;let d=t.capturedTimeline,p=W(d),m=T(p);if(d&&m&&Ae)return!1;let y=we();if(!y.timeline)return!1;if(d&&d===y.timeline)return typeof d.timeScale=="function"&&d.timeScale(t.playbackRate),!1;t.capturedTimeline=y.timeline,typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);let A=Y(t.capturedTimeline,0);if(A>0){try{I.setDuration(A)}catch{}t.capturedTimeline.pause();let M=Math.max(0,t.currentTime||0);typeof t.capturedTimeline.totalTime=="function"&&t.capturedTimeline.totalTime(M,!1);let B=window.__hfStudioManualEditsApply;typeof B=="function"&&B()}if(y.diagnostics&&Ee({source:"hf-preview",type:"diagnostic",code:y.diagnostics.code,details:y.diagnostics.details}),Ee({source:"hf-preview",type:"diagnostic",code:"timeline_bound",details:{selectedTimelineIds:y.selectedTimelineIds??[],selectedDurationSeconds:y.selectedDurationSeconds??null,mediaDurationFloorSeconds:y.mediaDurationFloorSeconds??null}}),window.parent!==window){let M=L(),B=A>0?A:0,j=String(B>0?B:1),Z=new Set;if(t.capturedTimeline.getChildren)try{for(let ee of t.capturedTimeline.getChildren(!0))if(typeof ee.targets=="function")for(let oe of ee.targets())oe instanceof HTMLElement&&oe!==M&&(oe.hasAttribute("data-start")||N(oe,M)||Z.has(oe)||(Z.add(oe),oe.setAttribute("data-start","0"),oe.setAttribute("data-duration",j)))}catch{}if(M instanceof HTMLElement)for(let ee of M.querySelectorAll("[id]"))ee instanceof HTMLElement&&ee!==M&&(ee.hasAttribute("data-start")||N(ee,M)||Z.has(ee)||ee.tagName==="SCRIPT"||ee.tagName==="STYLE"||ee.tagName==="LINK"||(Z.add(ee),ee.setAttribute("data-start","0"),ee.setAttribute("data-duration",j)))}for(let M of Ne)ye.delete(M),xi(M);return!0};window.__hfForceTimelineRebind=()=>{Ae=!1,O()};let k=()=>{let d=L();if(!(d instanceof HTMLElement))return;let p=d.getBoundingClientRect(),m=Number(d.getAttribute("data-width")),y=Number(d.getAttribute("data-height")),A=window.getComputedStyle(d),M=Number.isFinite(m)&&m>0&&Number.isFinite(y)&&y>0,B=p.width<=0||p.height<=0||d.clientWidth<=0||d.clientHeight<=0;!M||!B||l("root_stage_layout_zero",{compositionId:d.getAttribute("data-composition-id")??null,declaredWidth:m,declaredHeight:y,rectWidth:Math.round(p.width),rectHeight:Math.round(p.height),clientWidth:d.clientWidth,clientHeight:d.clientHeight,display:A.display,visibility:A.visibility,overflow:A.overflow},`root-stage-layout-zero:${d.getAttribute("data-composition-id")??"unknown"}`)},P=()=>{t.tornDown||(o!=null&&window.cancelAnimationFrame(o),o=window.requestAnimationFrame(()=>{o=null,k()}))},ie=()=>{e=d=>{let p=E(d.error??d.message).slice(0,F);if(!p)return;let m=S(p);Ee({source:"hf-preview",type:"diagnostic",code:m.code,details:{category:m.category,message:p,filename:d.filename||null,line:Number.isFinite(d.lineno)?d.lineno:null,column:Number.isFinite(d.colno)?d.colno:null}})},n=d=>{let p=E(d.reason).slice(0,F);if(!p)return;let m=S(p);Ee({source:"hf-preview",type:"diagnostic",code:`${m.code}_unhandled_rejection`,details:{category:`${m.category}-unhandled-rejection`,message:p}})},window.addEventListener("error",e),window.addEventListener("unhandledrejection",n)},ae=()=>{let d=Array.from(document.querySelectorAll("img, video, audio, source, link[rel=\'stylesheet\']"));for(let m of d){let y=()=>{if(!(m instanceof Element))return;let A=m.tagName.toLowerCase(),M=m.getAttribute("src")??m.getAttribute("href")??m.getAttribute("poster")??null,B=A==="link"?"runtime_stylesheet_load_failed":"runtime_asset_load_failed";l(B,{tagName:A,assetUrl:M,currentSrc:(m instanceof HTMLImageElement||m instanceof HTMLMediaElement)&&m.currentSrc||null,readyState:m instanceof HTMLMediaElement?m.readyState:null,networkState:m instanceof HTMLMediaElement?m.networkState:null},`${B}:${A}:${M??"unknown"}`)};m.addEventListener("error",y),s(()=>{m.removeEventListener("error",y)})}let p=document.fonts;p&&p.ready.then(()=>{if(t.tornDown)return;let m=Array.from(p).filter(y=>y.status==="error").map(y=>y.family).filter(y=>!!y).slice(0,10);m.length!==0&&l("runtime_font_load_issue",{failedFamilies:m,totalFaces:Array.from(p).length},`runtime-font-load-issue:${m.join("|")}`)}).catch(()=>{})},z=(d,p)=>{if(!d.timeline)return!1;let m=t.capturedTimeline;if(m&&m===d.timeline)return!1;let y=Math.max(0,t.currentTime||0),A=t.isPlaying;t.capturedTimeline=d.timeline,typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);try{t.capturedTimeline.pause(),t.capturedTimeline.seek(y,!1),A&&t.capturedTimeline.play()}catch(M){v("runtime.init.site7",M)}return Ee({source:"hf-preview",type:"diagnostic",code:"timeline_loop_guard_rebind",details:{reason:p,previousTime:y,selectedTimelineIds:d.selectedTimelineIds??[],selectedDurationSeconds:d.selectedDurationSeconds??null,mediaDurationFloorSeconds:d.mediaDurationFloorSeconds??null}}),!0},U=null,$=!1,Ne=new Set,ye=new WeakMap,He=()=>{t.tornDown||(U!=null&&window.clearTimeout(U),U=window.setTimeout(()=>{if(t.tornDown)return;U=null;let d=we();if(!d.timeline||!T(d.mediaDurationFloorSeconds??null))return;if(!t.capturedTimeline){O()&&(Xe(),Te(!0));return}if($)return;let m=W(t.capturedTimeline),y=d.selectedDurationSeconds??W(d.timeline);T(y)&&(!T(m)||y>=m+f)&&z(d,"manual")&&($=!0,Ee({source:"hf-preview",type:"diagnostic",code:"timeline_rebind_after_media_metadata",details:{previousDurationSeconds:m??null,selectedDurationSeconds:y??null,selectedTimelineIds:d.selectedTimelineIds??[],mediaDurationFloorSeconds:d.mediaDurationFloorSeconds??null}}),Xe(),Te(!0))},x))},Be=()=>{for(let d of Ne)d.removeEventListener("loadedmetadata",He),d.removeEventListener("durationchange",He);Ne.clear()},mn=()=>{if(t.tornDown)return;let d=Array.from(document.querySelectorAll("video, audio"));for(let p of d){if(Ne.has(p))continue;Ne.add(p);let m=Number.parseFloat(p.dataset.volume??"");Number.isFinite(m)&&(p.volume=Math.max(0,Math.min(1,m))),p.addEventListener("loadedmetadata",He),p.addEventListener("durationchange",He),p.preload!=="auto"&&(p.preload="auto"),p.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&p.load(),xi(p)}},xi=d=>{ye.has(d)||Hi(d,t.capturedTimeline,Y(t.capturedTimeline,0),ye)},We=()=>{let d=M=>{let B=M.closest("[data-composition-id]"),j=B?C(B,0):null,Z=B?g(B,{includeAuthoredTimingAttrs:!0}):null;return{compositionRoot:B,inheritedStart:j,inheritedDuration:Z}},p=Wi({shouldIncludeElement:M=>M.hasAttribute("data-start")||!!d(M).compositionRoot,resolveStartSeconds:M=>{let B=d(M);return b(M,B.inheritedStart??0)},resolveDurationSeconds:M=>{let B=d(M),j=b(M,B.inheritedStart??0),Z=Number.parseFloat(M.dataset.playbackStart??M.dataset.mediaStart??"0")||0,ee=B.inheritedStart!=null&&B.inheritedDuration!=null&&B.inheritedDuration>0?Math.max(0,B.inheritedStart+B.inheritedDuration-j):null,oe=Number.isFinite(M.duration)&&M.duration>Z?Math.max(0,M.duration-Z):null,ce=Number.parseFloat(M.dataset.duration??""),Ce=Number.isFinite(ce)&&ce>0?ce:null,qe=[oe,ee,Ce].filter(he=>he!=null);return qe.length>0?Math.min(...qe):null}});for(let M of p.mediaClips){let B=ye.get(M.el);B&&(M.volumeKeyframes=B)}let m=t.mediaForceSyncNextTick;m&&(t.mediaForceSyncNextTick=!1),qi({clips:p.mediaClips,timeSeconds:t.currentTime,playing:t.isPlaying,playbackRate:t.playbackRate,outputMuted:t.mediaOutputMuted||pe.isActive(),userMuted:t.bridgeMuted,userVolume:t.bridgeVolume,forceSync:m,onElementVolume:(M,B)=>pe.setElementVolume(M,B),onAutoplayBlocked:()=>{t.mediaAutoplayBlockedPosted||(t.mediaAutoplayBlockedPosted=!0,Ee({source:"hf-preview",type:"media-autoplay-blocked"}))}});let y=Array.from(document.querySelectorAll("[data-start]")),A=L();for(let M of y){if(!(M instanceof HTMLElement))continue;let B=w(M,t.currentTime);if(B&&window.parent!==window){let j=M.parentElement;for(;j&&j!==A;){if(j instanceof HTMLElement&&j.hasAttribute("data-start")&&!w(j,t.currentTime)){B=!1;break}j=j.parentElement}}M.style.visibility=B?"visible":"hidden"}},Te=d=>{let p=Math.max(0,Math.round((t.currentTime||0)*t.canonicalFps)),m=Date.now();(d||p!==t.bridgeLastPostedFrame||t.isPlaying!==t.bridgeLastPostedPlaying||t.bridgeMuted!==t.bridgeLastPostedMuted||m-t.bridgeLastPostedAt>=t.bridgeMaxPostIntervalMs)&&(t.bridgeLastPostedFrame=p,t.bridgeLastPostedPlaying=t.isPlaying,t.bridgeLastPostedMuted=t.bridgeMuted,t.bridgeLastPostedAt=m,Ee({source:"hf-preview",type:"state",frame:p,isPlaying:t.isPlaying,muted:t.bridgeMuted,playbackRate:t.playbackRate}))},Xe=()=>{ne(),R(),q();let d=L();if(d){let m=D(d.getAttribute("data-width")),y=D(d.getAttribute("data-height")),A=m?parseInt(m,10):0,M=y?parseInt(y,10):0;A>0&&M>0&&Ee({source:"hf-preview",type:"stage-size",width:A,height:M})}O();let p=Ji({canonicalFps:t.canonicalFps});window.__clipManifest=p,Ee(p),P()},Ie=(d,p=0)=>{for(let m of t.deterministicAdapters){try{d==="discover"&&m.discover(),d==="pause"&&m.pause(),d==="play"&&m.play&&m.play()}catch(y){v("runtime.init.site8",y)}if(d==="discover")try{m.seek({time:p})}catch(y){v("runtime.init.site9",y)}}},ct=()=>{window.__renderReady=!1};if(J)ai();else{let d={injectedStyles:t.injectedCompStyles,injectedScripts:t.injectedCompScripts,parseDimensionPx:D,onDiagnostic:({code:p,details:m})=>{Ee({source:"hf-preview",type:"diagnostic",code:p,details:m})}};vo(d).then(()=>_o(d)).finally(()=>{J=!0,mn(),ae(),ai(),ct()})}let Wt=Vi({postMessage:d=>Ee(d)});Wt.installPickerApi();let pn=d=>{let p=Number(d);!Number.isFinite(p)||p<=0?t.playbackRate=1:t.playbackRate=Math.max(.1,Math.min(5,p)),t.mediaForceSyncNextTick=!0,t.capturedTimeline&&typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);let m=document.querySelectorAll("video, audio");for(let y of m)if(y instanceof HTMLMediaElement)try{y.playbackRate=t.playbackRate}catch(A){v("runtime.init.site10",A)}},me=zi({getTimeline:()=>t.capturedTimeline,setTimeline:d=>{t.capturedTimeline=d},getTimelineRegistry:()=>window.__timelines??{},getIsPlaying:()=>t.isPlaying,setIsPlaying:d=>{t.isPlaying!==d&&(t.mediaForceSyncNextTick=!0),t.isPlaying=d},getPlaybackRate:()=>t.playbackRate,setPlaybackRate:pn,getCanonicalFps:()=>t.canonicalFps,onSyncMedia:(d,p)=>{t.currentTime=Math.max(0,Number(d)||0),t.isPlaying!==p&&(t.mediaForceSyncNextTick=!0),t.isPlaying=p,We()},onStatePost:Te,onDeterministicSeek:d=>{for(let p of t.deterministicAdapters)try{p.seek({time:Number(d)||0})}catch(m){v("runtime.init.site11",m)}},onDeterministicPause:()=>Ie("pause"),onDeterministicPlay:()=>Ie("play"),onRenderFrameSeek:()=>{},onShowNativeVideos:()=>{},getSafeDuration:()=>Y(t.capturedTimeline,0)});window.__player=a(me),window.__playerReady=!0,wi(Ee),ft("composition_loaded",{duration:me.getDuration(),compositionId:document.querySelector("[data-composition-id]")?.getAttribute("data-composition-id")??null}),t.controlBridgeHandler=Fi({onPlay:()=>{me.play(),ft("composition_played",{time:me.getTime()})},onPause:()=>{me.pause(),ft("composition_paused",{time:me.getTime()})},onSeek:(d,p)=>{let m=Math.max(0,d)/t.canonicalFps;me.seek(m),ft("composition_seeked",{time:m})},onSetMuted:d=>{t.bridgeMuted=d;let p=d||t.mediaOutputMuted;pe.setMuted(p);let m=document.querySelectorAll("video, audio");for(let y of m)y instanceof HTMLMediaElement&&(y.muted=p||y.defaultMuted)},onSetVolume:d=>{t.bridgeVolume=d,pe.setVolume(d);let p=document.querySelectorAll("video, audio");for(let m of p){if(!(m instanceof HTMLMediaElement))continue;let y=parseFloat(m.dataset.volume??""),A=Number.isFinite(y)?y:1;m.volume=A*d}},onSetMediaOutputMuted:d=>{t.mediaOutputMuted=d;let p=d||t.bridgeMuted;pe.setMuted(p);let m=document.querySelectorAll("video, audio");for(let y of m)y instanceof HTMLMediaElement&&(y.muted=p||y.defaultMuted)},onSetPlaybackRate:d=>{pn(d),t.transportClock&&t.transportClock.setRate(t.playbackRate),bi()},onTick:()=>{if(t.tornDown||!I.isPlaying())return;let d=I.now();if(t.currentTime=d,Ke(d),I.reachedEnd()){pe.stopAll(),I.detachAudioSource(),I.pause(),t.isPlaying=!1;let p=I.getDuration();Number.isFinite(p)&&(I.seek(p),t.currentTime=p,Ke(p)),Ie("pause"),We(),Te(!0)}},onEnablePickMode:()=>Wt.enablePickMode(),onDisablePickMode:()=>Wt.disablePickMode()}),t.deterministicAdapters=[Oi(),Ni({resolveStartSeconds:d=>C(d,0)}),Mi(),_i(),Ri(),Li(),Ci({getTimeline:()=>t.capturedTimeline})],Bi(),Ii(),window.__hfReseekGpu=d=>{let p=Math.max(0,Number(d)||0);window.__hfThreeTime=p,window.__hfTypegpuTime=p,vi(p)},ie(),mn(),Ie("discover");let I=new sn;t.transportClock=I;let pe=new an,hn=!1;pe.init().then(d=>{hn=d});let ls=()=>{let d=t.capturedTimeline,p=O();t.capturedTimeline&&(p||t.capturedTimeline!==d||!me._timeline)&&(me._timeline=t.capturedTimeline);let m=Y(t.capturedTimeline,0);m>0&&I.setDuration(m),Ie("discover",t.currentTime),window.__renderReady=!0,Xe(),Te(!0)};if(ct=()=>{if(!J||window.__hfTimelinesBuilding){window.__renderReady=!1;return}ls()},window.__hfTimelinesBuilding){window.__renderReady=!1;let d=()=>{window.removeEventListener("hf-timelines-built",d),ct()};window.addEventListener("hf-timelines-built",d)}ct(),J&&setTimeout(()=>{ct()},0);let qt=0,xn=!1,us=(d,p,m)=>{try{d.pause(),typeof d.totalTime=="function"?d.totalTime(p,!1):d.seek(p,!1)}catch(y){v(m,y)}},cs=d=>{let p=window.__timelines??{},m=L()?.getAttribute("data-composition-id")??null;for(let[y,A]of Object.entries(p)){if(!A||y===m)continue;let M=document.querySelector(`[data-composition-id="${CSS.escape(y)}"]`);if(!M)continue;let B=C(M,0);if(!Number.isFinite(B))continue;let j=g(M,{includeAuthoredTimingAttrs:!0}),Z=W(A),ee=j!=null&&j>0?j:Z,oe=Math.max(0,ee!=null&&ee>0?Math.min(ee,d-B):d-B);us(A,oe,"runtime.init.transport.childTimeline")}},ds=d=>{let p=window.__timelines??{};for(let m of Object.values(p))if(!(!m||m===d))try{m.play()}catch(y){v("runtime.init.activateSiblings",y)}},Ke=(d,p)=>{let m=t.capturedTimeline;if(m){p?.activateChildren&&ds(m);try{typeof m.totalTime=="function"?m.totalTime(d,!1):m.seek(d,!1)}catch(y){v("runtime.init.transport.seek",y)}}else cs(d);for(let y of t.deterministicAdapters)try{y.seek({time:d})}catch(A){v("runtime.init.transport.adapter",A)}},gi=()=>{if(!(t.tornDown||xn)){xn=!0;try{if(t.transportRafId=window.requestAnimationFrame(gi),qt+=1,qt%60===0&&!(I.isPlaying()&&t.capturedTimeline!=null&&I.now()<h)){let m=t.capturedTimeline;if(O()){t.capturedTimeline&&!me._timeline&&(me._timeline=t.capturedTimeline),t.capturedTimeline&&t.capturedTimeline!==m&&t.capturedTimeline.pause();let y=Y(t.capturedTimeline,0);y>0&&I.setDuration(y),Xe()}}if(qt%20===0&&Xe(),qt%30===0&&mn(),t.capturedTimeline){let p=Y(t.capturedTimeline,0);p>0&&I.setDuration(p)}if(I.isPlaying()&&!t.mediaOutputMuted)if(pe.isActive()&&pe.context){let p=pe.getTime();p>=0&&I.attachAudioSource({currentTimeSeconds:p})}else{let p=document.querySelectorAll("audio[data-start]"),m=!1;for(let y of p){if(!(y instanceof HTMLMediaElement)||!y.isConnected)continue;let A=Number.parseFloat(y.dataset.start??""),M=Number.parseFloat(y.dataset.duration??""),B=Number.isFinite(M)&&M>0?A+M:1/0,j=Number.parseFloat(y.dataset.playbackStart??y.dataset.mediaStart??"0")||0;if(Number.isFinite(A)&&t.currentTime>=A&&t.currentTime<=B){y.paused?!y.error&&y.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&(I.attachAudioSource({currentTimeSeconds:t.currentTime}),m=!0):(I.attachAudioSource({el:y,compositionStart:A,mediaStart:j}),m=!0);break}}!m&&I.hasAudioSource()&&I.detachAudioSource()}else I.hasAudioSource()&&I.detachAudioSource();let d=I.now();if(t.currentTime=d,Ke(d),I.isPlaying()&&I.reachedEnd()){pe.stopAll(),I.detachAudioSource(),I.pause(),t.isPlaying=!1;let p=I.getDuration();Number.isFinite(p)&&(I.seek(p),t.currentTime=p,Ke(p)),Ie("pause"),We(),Te(!0);return}I.isPlaying()&&We(),Te(!1)}finally{xn=!1}}},yi=d=>{let p=document.querySelectorAll("video, audio");for(let m of p){if(!(m instanceof HTMLMediaElement)||!m.isConnected)continue;let y=Number.parseFloat(m.dataset.start??"");if(!Number.isFinite(y))continue;let A=Number.parseFloat(m.dataset.duration??""),M=Number.isFinite(A)&&A>0?y+A:1/0;if(d<y||d>=M)continue;let B=Number.parseFloat(m.dataset.playbackStart??m.dataset.mediaStart??"0")||0,j=d-y+B;if(j>=0)try{m.currentTime=j}catch{}}},Si=()=>{let d=pe.startGeneration(),p=document.querySelectorAll("audio[data-start]");for(let m of p){if(!(m instanceof HTMLMediaElement)||!m.isConnected)continue;let y=Number.parseFloat(m.dataset.start??"");if(!Number.isFinite(y))continue;let A=Number.parseFloat(m.dataset.playbackStart??m.dataset.mediaStart??"0")||0,M=Number.parseFloat(m.dataset.volume??""),B=Number.isFinite(M)?M:1,j=Number.parseFloat(m.dataset.duration??""),Z=Number.isFinite(j)&&j>0?j:Number.POSITIVE_INFINITY,ee=m.closest("[data-composition-id]");if(ee){let oe=C(ee,0),ce=g(ee,{includeAuthoredTimingAttrs:!0});ce!=null&&ce>0&&(Z=Math.min(Z,Math.max(0,oe+ce-y)))}pe.decodeAudioElement(m).then(oe=>{!oe||!I.isPlaying()||pe.schedulePlayback(m,oe,y,A,I.now(),B*t.bridgeVolume,d,t.playbackRate,Z)})}},bi=()=>{pe.setRate(t.playbackRate)&&hn&&I.isPlaying()&&pe.hasBoundedActiveSources()&&(pe.stopAll(),Si())};if(me.play=()=>{let d=t.capturedTimeline;if(I.isPlaying())return;let p=Y(d,0);if(p>0)I.setDuration(p),I.reachedEnd()&&(I.seek(0),t.currentTime=0,Ke(0));else{let m=L(),y=Number(m?.getAttribute("data-duration")??0);y>0&&I.setDuration(y)}d&&d.pause(),I.play()&&(t.isPlaying=!0,t.mediaForceSyncNextTick=!0,yi(I.now()),hn&&Si(),Ie("play"),We(),Te(!0))},me.pause=()=>{if(!I.isPlaying())return;pe.stopAll(),I.detachAudioSource(),I.pause(),t.isPlaying=!1,t.currentTime=I.now(),t.mediaForceSyncNextTick=!0,yi(t.currentTime);let d=t.capturedTimeline;d&&d.pause(),Ie("pause"),We(),Te(!0)},me.seek=d=>{let p=tt(Math.max(0,Number(d)||0),t.canonicalFps);pe.stopAll(),I.detachAudioSource(),I.isPlaying()&&I.pause(),I.seek(p),t.currentTime=I.now(),t.isPlaying=!1,t.mediaForceSyncNextTick=!0;let y=t.capturedTimeline;y&&y.pause(),Ke(t.currentTime),Ie("pause"),We(),Te(!0)},me.renderSeek=d=>{let p=tt(Math.max(0,Number(d)||0),t.canonicalFps);I.isPlaying()&&I.pause(),I.seek(p),t.currentTime=I.now(),t.isPlaying=!1,t.mediaForceSyncNextTick=!0,Ke(t.currentTime,{activateChildren:!0}),We(),Te(!0)},me.getTime=()=>I.now(),me.getDuration=()=>{let d=I.getDuration();return Number.isFinite(d)?d:0},me.isPlaying=()=>I.isPlaying(),me.setPlaybackRate=d=>{pn(d),I.setRate(t.playbackRate),bi()},t.capturedTimeline){let d=Y(t.capturedTimeline,0);d>0&&I.setDuration(d),t.capturedTimeline.pause()}let Ai=window.__player;if(Ai){let d=["play","pause","seek","renderSeek","getTime","getDuration","isPlaying"];for(let p of d)Object.defineProperty(Ai,p,{get:()=>me[p],set:m=>{me[p]=m},configurable:!0})}t.transportRafId=window.requestAnimationFrame(gi),Xe(),Te(!0);let gn=()=>{if(!t.tornDown){t.tornDown=!0,t.transportRafId!=null&&(window.cancelAnimationFrame(t.transportRafId),t.transportRafId=null),t.transportClock=null,pe.destroy(),U!=null&&(window.clearTimeout(U),U=null),o!=null&&(window.cancelAnimationFrame(o),o=null),Be(),t.controlBridgeHandler&&(window.removeEventListener("message",t.controlBridgeHandler),t.controlBridgeHandler=null),e&&(window.removeEventListener("error",e),e=null),n&&(window.removeEventListener("unhandledrejection",n),n=null),t.beforeUnloadHandler&&(window.removeEventListener("beforeunload",t.beforeUnloadHandler),t.beforeUnloadHandler=null),Wt.disablePickMode();for(let d of t.deterministicAdapters)if(!(!d||typeof d.revert!="function"))try{d.revert()}catch(p){v("runtime.init.site12",p)}t.deterministicAdapters=[];for(let d of i.splice(0))try{d()}catch(p){v("runtime.init.site13",p)}for(let d of t.injectedCompStyles)try{d.remove()}catch(p){v("runtime.init.site14",p)}t.injectedCompStyles=[];for(let d of t.injectedCompScripts)try{d.remove()}catch(p){v("runtime.init.site15",p)}t.injectedCompScripts=[],t.capturedTimeline=null,window.__hfRuntimeTeardown===gn&&(window.__hfRuntimeTeardown=null)}};window.__hfRuntimeTeardown=gn,t.beforeUnloadHandler=gn,window.addEventListener("beforeunload",t.beforeUnloadHandler)}var Io=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","BN","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],li=[[697,698,"ON"],[706,719,"ON"],[722,735,"ON"],[741,749,"ON"],[751,767,"ON"],[768,879,"NSM"],[884,885,"ON"],[894,894,"ON"],[900,901,"ON"],[903,903,"ON"],[1014,1014,"ON"],[1155,1161,"NSM"],[1418,1418,"ON"],[1421,1422,"ON"],[1423,1423,"ET"],[1424,1424,"R"],[1425,1469,"NSM"],[1470,1470,"R"],[1471,1471,"NSM"],[1472,1472,"R"],[1473,1474,"NSM"],[1475,1475,"R"],[1476,1477,"NSM"],[1478,1478,"R"],[1479,1479,"NSM"],[1480,1535,"R"],[1536,1541,"AN"],[1542,1543,"ON"],[1544,1544,"AL"],[1545,1546,"ET"],[1547,1547,"AL"],[1548,1548,"CS"],[1549,1549,"AL"],[1550,1551,"ON"],[1552,1562,"NSM"],[1563,1610,"AL"],[1611,1631,"NSM"],[1632,1641,"AN"],[1642,1642,"ET"],[1643,1644,"AN"],[1645,1647,"AL"],[1648,1648,"NSM"],[1649,1749,"AL"],[1750,1756,"NSM"],[1757,1757,"AN"],[1758,1758,"ON"],[1759,1764,"NSM"],[1765,1766,"AL"],[1767,1768,"NSM"],[1769,1769,"ON"],[1770,1773,"NSM"],[1774,1775,"AL"],[1776,1785,"EN"],[1786,1808,"AL"],[1809,1809,"NSM"],[1810,1839,"AL"],[1840,1866,"NSM"],[1867,1957,"AL"],[1958,1968,"NSM"],[1969,1983,"AL"],[1984,2026,"R"],[2027,2035,"NSM"],[2036,2037,"R"],[2038,2041,"ON"],[2042,2044,"R"],[2045,2045,"NSM"],[2046,2069,"R"],[2070,2073,"NSM"],[2074,2074,"R"],[2075,2083,"NSM"],[2084,2084,"R"],[2085,2087,"NSM"],[2088,2088,"R"],[2089,2093,"NSM"],[2094,2136,"R"],[2137,2139,"NSM"],[2140,2143,"R"],[2144,2191,"AL"],[2192,2193,"AN"],[2194,2198,"AL"],[2199,2207,"NSM"],[2208,2249,"AL"],[2250,2273,"NSM"],[2274,2274,"AN"],[2275,2306,"NSM"],[2362,2362,"NSM"],[2364,2364,"NSM"],[2369,2376,"NSM"],[2381,2381,"NSM"],[2385,2391,"NSM"],[2402,2403,"NSM"],[2433,2433,"NSM"],[2492,2492,"NSM"],[2497,2500,"NSM"],[2509,2509,"NSM"],[2530,2531,"NSM"],[2546,2547,"ET"],[2555,2555,"ET"],[2558,2558,"NSM"],[2561,2562,"NSM"],[2620,2620,"NSM"],[2625,2626,"NSM"],[2631,2632,"NSM"],[2635,2637,"NSM"],[2641,2641,"NSM"],[2672,2673,"NSM"],[2677,2677,"NSM"],[2689,2690,"NSM"],[2748,2748,"NSM"],[2753,2757,"NSM"],[2759,2760,"NSM"],[2765,2765,"NSM"],[2786,2787,"NSM"],[2801,2801,"ET"],[2810,2815,"NSM"],[2817,2817,"NSM"],[2876,2876,"NSM"],[2879,2879,"NSM"],[2881,2884,"NSM"],[2893,2893,"NSM"],[2901,2902,"NSM"],[2914,2915,"NSM"],[2946,2946,"NSM"],[3008,3008,"NSM"],[3021,3021,"NSM"],[3059,3064,"ON"],[3065,3065,"ET"],[3066,3066,"ON"],[3072,3072,"NSM"],[3076,3076,"NSM"],[3132,3132,"NSM"],[3134,3136,"NSM"],[3142,3144,"NSM"],[3146,3149,"NSM"],[3157,3158,"NSM"],[3170,3171,"NSM"],[3192,3198,"ON"],[3201,3201,"NSM"],[3260,3260,"NSM"],[3276,3277,"NSM"],[3298,3299,"NSM"],[3328,3329,"NSM"],[3387,3388,"NSM"],[3393,3396,"NSM"],[3405,3405,"NSM"],[3426,3427,"NSM"],[3457,3457,"NSM"],[3530,3530,"NSM"],[3538,3540,"NSM"],[3542,3542,"NSM"],[3633,3633,"NSM"],[3636,3642,"NSM"],[3647,3647,"ET"],[3655,3662,"NSM"],[3761,3761,"NSM"],[3764,3772,"NSM"],[3784,3790,"NSM"],[3864,3865,"NSM"],[3893,3893,"NSM"],[3895,3895,"NSM"],[3897,3897,"NSM"],[3898,3901,"ON"],[3953,3966,"NSM"],[3968,3972,"NSM"],[3974,3975,"NSM"],[3981,3991,"NSM"],[3993,4028,"NSM"],[4038,4038,"NSM"],[4141,4144,"NSM"],[4146,4151,"NSM"],[4153,4154,"NSM"],[4157,4158,"NSM"],[4184,4185,"NSM"],[4190,4192,"NSM"],[4209,4212,"NSM"],[4226,4226,"NSM"],[4229,4230,"NSM"],[4237,4237,"NSM"],[4253,4253,"NSM"],[4957,4959,"NSM"],[5008,5017,"ON"],[5120,5120,"ON"],[5760,5760,"WS"],[5787,5788,"ON"],[5906,5908,"NSM"],[5938,5939,"NSM"],[5970,5971,"NSM"],[6002,6003,"NSM"],[6068,6069,"NSM"],[6071,6077,"NSM"],[6086,6086,"NSM"],[6089,6099,"NSM"],[6107,6107,"ET"],[6109,6109,"NSM"],[6128,6137,"ON"],[6144,6154,"ON"],[6155,6157,"NSM"],[6158,6158,"BN"],[6159,6159,"NSM"],[6277,6278,"NSM"],[6313,6313,"NSM"],[6432,6434,"NSM"],[6439,6440,"NSM"],[6450,6450,"NSM"],[6457,6459,"NSM"],[6464,6464,"ON"],[6468,6469,"ON"],[6622,6655,"ON"],[6679,6680,"NSM"],[6683,6683,"NSM"],[6742,6742,"NSM"],[6744,6750,"NSM"],[6752,6752,"NSM"],[6754,6754,"NSM"],[6757,6764,"NSM"],[6771,6780,"NSM"],[6783,6783,"NSM"],[6832,6877,"NSM"],[6880,6891,"NSM"],[6912,6915,"NSM"],[6964,6964,"NSM"],[6966,6970,"NSM"],[6972,6972,"NSM"],[6978,6978,"NSM"],[7019,7027,"NSM"],[7040,7041,"NSM"],[7074,7077,"NSM"],[7080,7081,"NSM"],[7083,7085,"NSM"],[7142,7142,"NSM"],[7144,7145,"NSM"],[7149,7149,"NSM"],[7151,7153,"NSM"],[7212,7219,"NSM"],[7222,7223,"NSM"],[7376,7378,"NSM"],[7380,7392,"NSM"],[7394,7400,"NSM"],[7405,7405,"NSM"],[7412,7412,"NSM"],[7416,7417,"NSM"],[7616,7679,"NSM"],[8125,8125,"ON"],[8127,8129,"ON"],[8141,8143,"ON"],[8157,8159,"ON"],[8173,8175,"ON"],[8189,8190,"ON"],[8192,8202,"WS"],[8203,8205,"BN"],[8207,8207,"R"],[8208,8231,"ON"],[8232,8232,"WS"],[8233,8233,"B"],[8234,8238,"BN"],[8239,8239,"CS"],[8240,8244,"ET"],[8245,8259,"ON"],[8260,8260,"CS"],[8261,8286,"ON"],[8287,8287,"WS"],[8288,8303,"BN"],[8304,8304,"EN"],[8308,8313,"EN"],[8314,8315,"ES"],[8316,8318,"ON"],[8320,8329,"EN"],[8330,8331,"ES"],[8332,8334,"ON"],[8352,8399,"ET"],[8400,8432,"NSM"],[8448,8449,"ON"],[8451,8454,"ON"],[8456,8457,"ON"],[8468,8468,"ON"],[8470,8472,"ON"],[8478,8483,"ON"],[8485,8485,"ON"],[8487,8487,"ON"],[8489,8489,"ON"],[8494,8494,"ET"],[8506,8507,"ON"],[8512,8516,"ON"],[8522,8525,"ON"],[8528,8543,"ON"],[8585,8587,"ON"],[8592,8721,"ON"],[8722,8722,"ES"],[8723,8723,"ET"],[8724,9013,"ON"],[9083,9108,"ON"],[9110,9257,"ON"],[9280,9290,"ON"],[9312,9351,"ON"],[9352,9371,"EN"],[9450,9899,"ON"],[9901,10239,"ON"],[10496,11123,"ON"],[11126,11263,"ON"],[11493,11498,"ON"],[11503,11505,"NSM"],[11513,11519,"ON"],[11647,11647,"NSM"],[11744,11775,"NSM"],[11776,11869,"ON"],[11904,11929,"ON"],[11931,12019,"ON"],[12032,12245,"ON"],[12272,12287,"ON"],[12288,12288,"WS"],[12289,12292,"ON"],[12296,12320,"ON"],[12330,12333,"NSM"],[12336,12336,"ON"],[12342,12343,"ON"],[12349,12351,"ON"],[12441,12442,"NSM"],[12443,12444,"ON"],[12448,12448,"ON"],[12539,12539,"ON"],[12736,12773,"ON"],[12783,12783,"ON"],[12829,12830,"ON"],[12880,12895,"ON"],[12924,12926,"ON"],[12977,12991,"ON"],[13004,13007,"ON"],[13175,13178,"ON"],[13278,13279,"ON"],[13311,13311,"ON"],[19904,19967,"ON"],[42128,42182,"ON"],[42509,42511,"ON"],[42607,42610,"NSM"],[42611,42611,"ON"],[42612,42621,"NSM"],[42622,42623,"ON"],[42654,42655,"NSM"],[42736,42737,"NSM"],[42752,42785,"ON"],[42888,42888,"ON"],[43010,43010,"NSM"],[43014,43014,"NSM"],[43019,43019,"NSM"],[43045,43046,"NSM"],[43048,43051,"ON"],[43052,43052,"NSM"],[43064,43065,"ET"],[43124,43127,"ON"],[43204,43205,"NSM"],[43232,43249,"NSM"],[43263,43263,"NSM"],[43302,43309,"NSM"],[43335,43345,"NSM"],[43392,43394,"NSM"],[43443,43443,"NSM"],[43446,43449,"NSM"],[43452,43453,"NSM"],[43493,43493,"NSM"],[43561,43566,"NSM"],[43569,43570,"NSM"],[43573,43574,"NSM"],[43587,43587,"NSM"],[43596,43596,"NSM"],[43644,43644,"NSM"],[43696,43696,"NSM"],[43698,43700,"NSM"],[43703,43704,"NSM"],[43710,43711,"NSM"],[43713,43713,"NSM"],[43756,43757,"NSM"],[43766,43766,"NSM"],[43882,43883,"ON"],[44005,44005,"NSM"],[44008,44008,"NSM"],[44013,44013,"NSM"],[64285,64285,"R"],[64286,64286,"NSM"],[64287,64296,"R"],[64297,64297,"ES"],[64298,64335,"R"],[64336,64450,"AL"],[64451,64466,"ON"],[64467,64829,"AL"],[64830,64847,"ON"],[64848,64911,"AL"],[64912,64913,"ON"],[64914,64967,"AL"],[64968,64975,"ON"],[64976,65007,"BN"],[65008,65020,"AL"],[65021,65023,"ON"],[65024,65039,"NSM"],[65040,65049,"ON"],[65056,65071,"NSM"],[65072,65103,"ON"],[65104,65104,"CS"],[65105,65105,"ON"],[65106,65106,"CS"],[65108,65108,"ON"],[65109,65109,"CS"],[65110,65118,"ON"],[65119,65119,"ET"],[65120,65121,"ON"],[65122,65123,"ES"],[65124,65126,"ON"],[65128,65128,"ON"],[65129,65130,"ET"],[65131,65131,"ON"],[65136,65278,"AL"],[65279,65279,"BN"],[65281,65282,"ON"],[65283,65285,"ET"],[65286,65290,"ON"],[65291,65291,"ES"],[65292,65292,"CS"],[65293,65293,"ES"],[65294,65295,"CS"],[65296,65305,"EN"],[65306,65306,"CS"],[65307,65312,"ON"],[65339,65344,"ON"],[65371,65381,"ON"],[65504,65505,"ET"],[65506,65508,"ON"],[65509,65510,"ET"],[65512,65518,"ON"],[65520,65528,"BN"],[65529,65533,"ON"],[65534,65535,"BN"],[65793,65793,"ON"],[65856,65932,"ON"],[65936,65948,"ON"],[65952,65952,"ON"],[66045,66045,"NSM"],[66272,66272,"NSM"],[66273,66299,"EN"],[66422,66426,"NSM"],[67584,67870,"R"],[67871,67871,"ON"],[67872,68096,"R"],[68097,68099,"NSM"],[68100,68100,"R"],[68101,68102,"NSM"],[68103,68107,"R"],[68108,68111,"NSM"],[68112,68151,"R"],[68152,68154,"NSM"],[68155,68158,"R"],[68159,68159,"NSM"],[68160,68324,"R"],[68325,68326,"NSM"],[68327,68408,"R"],[68409,68415,"ON"],[68416,68863,"R"],[68864,68899,"AL"],[68900,68903,"NSM"],[68904,68911,"AL"],[68912,68921,"AN"],[68922,68927,"AL"],[68928,68937,"AN"],[68938,68968,"R"],[68969,68973,"NSM"],[68974,68974,"ON"],[68975,69215,"R"],[69216,69246,"AN"],[69247,69290,"R"],[69291,69292,"NSM"],[69293,69311,"R"],[69312,69327,"AL"],[69328,69336,"ON"],[69337,69369,"AL"],[69370,69375,"NSM"],[69376,69423,"R"],[69424,69445,"AL"],[69446,69456,"NSM"],[69457,69487,"AL"],[69488,69505,"R"],[69506,69509,"NSM"],[69510,69631,"R"],[69633,69633,"NSM"],[69688,69702,"NSM"],[69714,69733,"ON"],[69744,69744,"NSM"],[69747,69748,"NSM"],[69759,69761,"NSM"],[69811,69814,"NSM"],[69817,69818,"NSM"],[69826,69826,"NSM"],[69888,69890,"NSM"],[69927,69931,"NSM"],[69933,69940,"NSM"],[70003,70003,"NSM"],[70016,70017,"NSM"],[70070,70078,"NSM"],[70089,70092,"NSM"],[70095,70095,"NSM"],[70191,70193,"NSM"],[70196,70196,"NSM"],[70198,70199,"NSM"],[70206,70206,"NSM"],[70209,70209,"NSM"],[70367,70367,"NSM"],[70371,70378,"NSM"],[70400,70401,"NSM"],[70459,70460,"NSM"],[70464,70464,"NSM"],[70502,70508,"NSM"],[70512,70516,"NSM"],[70587,70592,"NSM"],[70606,70606,"NSM"],[70608,70608,"NSM"],[70610,70610,"NSM"],[70625,70626,"NSM"],[70712,70719,"NSM"],[70722,70724,"NSM"],[70726,70726,"NSM"],[70750,70750,"NSM"],[70835,70840,"NSM"],[70842,70842,"NSM"],[70847,70848,"NSM"],[70850,70851,"NSM"],[71090,71093,"NSM"],[71100,71101,"NSM"],[71103,71104,"NSM"],[71132,71133,"NSM"],[71219,71226,"NSM"],[71229,71229,"NSM"],[71231,71232,"NSM"],[71264,71276,"ON"],[71339,71339,"NSM"],[71341,71341,"NSM"],[71344,71349,"NSM"],[71351,71351,"NSM"],[71453,71453,"NSM"],[71455,71455,"NSM"],[71458,71461,"NSM"],[71463,71467,"NSM"],[71727,71735,"NSM"],[71737,71738,"NSM"],[71995,71996,"NSM"],[71998,71998,"NSM"],[72003,72003,"NSM"],[72148,72151,"NSM"],[72154,72155,"NSM"],[72160,72160,"NSM"],[72193,72198,"NSM"],[72201,72202,"NSM"],[72243,72248,"NSM"],[72251,72254,"NSM"],[72263,72263,"NSM"],[72273,72278,"NSM"],[72281,72283,"NSM"],[72330,72342,"NSM"],[72344,72345,"NSM"],[72544,72544,"NSM"],[72546,72548,"NSM"],[72550,72550,"NSM"],[72752,72758,"NSM"],[72760,72765,"NSM"],[72850,72871,"NSM"],[72874,72880,"NSM"],[72882,72883,"NSM"],[72885,72886,"NSM"],[73009,73014,"NSM"],[73018,73018,"NSM"],[73020,73021,"NSM"],[73023,73029,"NSM"],[73031,73031,"NSM"],[73104,73105,"NSM"],[73109,73109,"NSM"],[73111,73111,"NSM"],[73459,73460,"NSM"],[73472,73473,"NSM"],[73526,73530,"NSM"],[73536,73536,"NSM"],[73538,73538,"NSM"],[73562,73562,"NSM"],[73685,73692,"ON"],[73693,73696,"ET"],[73697,73713,"ON"],[78912,78912,"NSM"],[78919,78933,"NSM"],[90398,90409,"NSM"],[90413,90415,"NSM"],[92912,92916,"NSM"],[92976,92982,"NSM"],[94031,94031,"NSM"],[94095,94098,"NSM"],[94178,94178,"ON"],[94180,94180,"NSM"],[113821,113822,"NSM"],[113824,113827,"BN"],[117760,117973,"ON"],[118e3,118009,"EN"],[118010,118012,"ON"],[118016,118451,"ON"],[118458,118480,"ON"],[118496,118512,"ON"],[118528,118573,"NSM"],[118576,118598,"NSM"],[119143,119145,"NSM"],[119155,119162,"BN"],[119163,119170,"NSM"],[119173,119179,"NSM"],[119210,119213,"NSM"],[119273,119274,"ON"],[119296,119361,"ON"],[119362,119364,"NSM"],[119365,119365,"ON"],[119552,119638,"ON"],[120513,120513,"ON"],[120539,120539,"ON"],[120571,120571,"ON"],[120597,120597,"ON"],[120629,120629,"ON"],[120655,120655,"ON"],[120687,120687,"ON"],[120713,120713,"ON"],[120745,120745,"ON"],[120771,120771,"ON"],[120782,120831,"EN"],[121344,121398,"NSM"],[121403,121452,"NSM"],[121461,121461,"NSM"],[121476,121476,"NSM"],[121499,121503,"NSM"],[121505,121519,"NSM"],[122880,122886,"NSM"],[122888,122904,"NSM"],[122907,122913,"NSM"],[122915,122916,"NSM"],[122918,122922,"NSM"],[123023,123023,"NSM"],[123184,123190,"NSM"],[123566,123566,"NSM"],[123628,123631,"NSM"],[123647,123647,"ET"],[124140,124143,"NSM"],[124398,124399,"NSM"],[124643,124643,"NSM"],[124646,124646,"NSM"],[124654,124655,"NSM"],[124661,124661,"NSM"],[124928,125135,"R"],[125136,125142,"NSM"],[125143,125251,"R"],[125252,125258,"NSM"],[125259,126063,"R"],[126064,126143,"AL"],[126144,126207,"R"],[126208,126287,"AL"],[126288,126463,"R"],[126464,126703,"AL"],[126704,126705,"ON"],[126706,126719,"AL"],[126720,126975,"R"],[126976,127019,"ON"],[127024,127123,"ON"],[127136,127150,"ON"],[127153,127167,"ON"],[127169,127183,"ON"],[127185,127221,"ON"],[127232,127242,"EN"],[127243,127247,"ON"],[127279,127279,"ON"],[127338,127343,"ON"],[127405,127405,"ON"],[127584,127589,"ON"],[127744,128728,"ON"],[128732,128748,"ON"],[128752,128764,"ON"],[128768,128985,"ON"],[128992,129003,"ON"],[129008,129008,"ON"],[129024,129035,"ON"],[129040,129095,"ON"],[129104,129113,"ON"],[129120,129159,"ON"],[129168,129197,"ON"],[129200,129211,"ON"],[129216,129217,"ON"],[129232,129240,"ON"],[129280,129623,"ON"],[129632,129645,"ON"],[129648,129660,"ON"],[129664,129674,"ON"],[129678,129734,"ON"],[129736,129736,"ON"],[129741,129756,"ON"],[129759,129770,"ON"],[129775,129784,"ON"],[129792,129938,"ON"],[129940,130031,"ON"],[130032,130041,"EN"],[130042,130042,"ON"],[131070,131071,"BN"],[196606,196607,"BN"],[262142,262143,"BN"],[327678,327679,"BN"],[393214,393215,"BN"],[458750,458751,"BN"],[524286,524287,"BN"],[589822,589823,"BN"],[655358,655359,"BN"],[720894,720895,"BN"],[786430,786431,"BN"],[851966,851967,"BN"],[917502,917759,"BN"],[917760,917999,"NSM"],[918e3,921599,"BN"],[983038,983039,"BN"],[1048574,1048575,"BN"],[1114110,1114111,"BN"]];function Ll(t){if(t<=255)return Io[t];let e=0,n=li.length-1;for(;e<=n;){let i=e+n>>1,r=li[i];if(t<r[0]){n=i-1;continue}if(t>r[1]){e=i+1;continue}return r[2]}return"L"}function Dl(t){let e=t.length;if(e===0)return null;let n=new Array(e),i=!1;for(let c=0;c<e;){let u=t.charCodeAt(c),h=u,f=1;if(u>=55296&&u<=56319&&c+1<e){let F=t.charCodeAt(c+1);F>=56320&&F<=57343&&(h=(u-55296<<10)+(F-56320)+65536,f=2)}let x=Ll(h);(x==="R"||x==="AL"||x==="AN")&&(i=!0);for(let F=0;F<f;F++)n[c+F]=x;c+=f}if(!i)return null;let r=0;for(let c=0;c<e;c++){let u=n[c];if(u==="L"){r=0;break}if(u==="R"||u==="AL"){r=1;break}}let o=new Int8Array(e);for(let c=0;c<e;c++)o[c]=r;let s=r&1?"R":"L",l=s,a=l;for(let c=0;c<e;c++)n[c]==="NSM"?n[c]=a:a=n[c];a=l;for(let c=0;c<e;c++){let u=n[c];u==="EN"?n[c]=a==="AL"?"AN":"EN":(u==="R"||u==="L"||u==="AL")&&(a=u)}for(let c=0;c<e;c++)n[c]==="AL"&&(n[c]="R");for(let c=1;c<e-1;c++)n[c]==="ES"&&n[c-1]==="EN"&&n[c+1]==="EN"&&(n[c]="EN"),n[c]==="CS"&&(n[c-1]==="EN"||n[c-1]==="AN")&&n[c+1]===n[c-1]&&(n[c]=n[c-1]);for(let c=0;c<e;c++){if(n[c]!=="EN")continue;let u;for(u=c-1;u>=0&&n[u]==="ET";u--)n[u]="EN";for(u=c+1;u<e&&n[u]==="ET";u++)n[u]="EN"}for(let c=0;c<e;c++){let u=n[c];(u==="WS"||u==="ES"||u==="ET"||u==="CS")&&(n[c]="ON")}a=l;for(let c=0;c<e;c++){let u=n[c];u==="EN"?n[c]=a==="L"?"L":"EN":(u==="R"||u==="L")&&(a=u)}for(let c=0;c<e;c++){if(n[c]!=="ON")continue;let u=c+1;for(;u<e&&n[u]==="ON";)u++;let h=c>0?n[c-1]:l,f=u<e?n[u]:l,x=h!=="L"?"R":"L";if(x===(f!=="L"?"R":"L"))for(let E=c;E<u;E++)n[E]=x;c=u-1}for(let c=0;c<e;c++)n[c]==="ON"&&(n[c]=s);for(let c=0;c<e;c++){let u=n[c];(o[c]&1)===0?u==="R"?o[c]++:(u==="AN"||u==="EN")&&(o[c]+=2):(u==="L"||u==="AN"||u==="EN")&&o[c]++}return o}function Oo(t,e){let n=Dl(t);if(n===null)return null;let i=new Int8Array(e.length);for(let r=0;r<e.length;r++)i[r]=n[e[r]];return i}var Bl=/[ \\t\\n\\r\\f]+/g,Il=/[\\t\\n\\r\\f]| {2,}|^ | $/;function Ol(t){let e=t??"normal";return e==="pre-wrap"?{mode:e,preserveOrdinarySpaces:!0,preserveHardBreaks:!0}:{mode:e,preserveOrdinarySpaces:!1,preserveHardBreaks:!1}}function Pl(t){if(!Il.test(t))return t;let e=t.replace(Bl," ");return e.charCodeAt(0)===32&&(e=e.slice(1)),e.length>0&&e.charCodeAt(e.length-1)===32&&(e=e.slice(0,-1)),e}function Hl(t){return/[\\r\\f]/.test(t)?t.replace(/\\r\\n/g,`\n`).replace(/[\\r\\f]/g,`\n`):t.replace(/\\r\\n/g,`\n`)}var ui=null,Wl;function ql(){return ui===null&&(ui=new Intl.Segmenter(Wl,{granularity:"word"})),ui}var Vl=/\\p{Script=Arabic}/u,ln=/\\p{M}/u,jo=/\\p{Nd}/u;function Po(t){return Vl.test(t)}function Ho(t){return t>=19968&&t<=40959||t>=13312&&t<=19903||t>=131072&&t<=173791||t>=173824&&t<=177983||t>=177984&&t<=178207||t>=178208&&t<=183983||t>=183984&&t<=191471||t>=191472&&t<=192093||t>=194560&&t<=195103||t>=196608&&t<=201551||t>=201552&&t<=205743||t>=205744&&t<=210041||t>=63744&&t<=64255||t>=12288&&t<=12351||t>=12352&&t<=12447||t>=12448&&t<=12543||t>=44032&&t<=55215||t>=65280&&t<=65519}function Le(t){for(let e=0;e<t.length;e++){let n=t.charCodeAt(e);if(!(n<12288)){if(n>=55296&&n<=56319&&e+1<t.length){let i=t.charCodeAt(e+1);if(i>=56320&&i<=57343){let r=(n-55296<<10)+(i-56320)+65536;if(Ho(r))return!0;e++;continue}}if(Ho(n))return!0}}return!1}function Ul(t){let e=dn(t);return e!==null&&(cn.has(e)||Ge.has(e))}var zl=new Set(["\\xA0","\\u202F","\\u2060","\\uFEFF"]);function jl(t){return Le(t)}function Gl(t){let e=dn(t);return e!==null&&zl.has(e)}function un(t){return!Ul(t)&&!Gl(t)}var cn=new Set(["\\uFF0C","\\uFF0E","\\uFF01","\\uFF1A","\\uFF1B","\\uFF1F","\\u3001","\\u3002","\\u30FB","\\uFF09","\\u3015","\\u3009","\\u300B","\\u300D","\\u300F","\\u3011","\\u3017","\\u3019","\\u301B","\\u30FC","\\u3005","\\u303B","\\u309D","\\u309E","\\u30FD","\\u30FE"]),Ht=new Set([\'"\',"(","[","{","\\u201C","\\u2018","\\xAB","\\u2039","\\uFF08","\\u3014","\\u3008","\\u300A","\\u300C","\\u300E","\\u3010","\\u3016","\\u3018","\\u301A"]),di=new Set(["\'","\\u2019"]),Ge=new Set([".",",","!","?",":",";","\\u060C","\\u061B","\\u061F","\\u0964","\\u0965","\\u104A","\\u104B","\\u104C","\\u104D","\\u104F",")","]","}","%",\'"\',"\\u201D","\\u2019","\\xBB","\\u203A","\\u2026"]),$l=new Set([":",".","\\u060C","\\u061B"]),Kl=new Set(["\\u104F"]),Jl=new Set(["\\u201D","\\u2019","\\xBB","\\u203A","\\u300D","\\u300F","\\u3011","\\u300B","\\u3009","\\u3015","\\uFF09"]);function Ql(t){if(fi(t))return!0;let e=!1;for(let n of t){if(Ge.has(n)){e=!0;continue}if(!(e&&ln.test(n)))return!1}return e}function Yl(t){for(let e of t)if(!cn.has(e)&&!Ge.has(e))return!1;return t.length>0}function Zl(t){if(fi(t))return!0;for(let e of t)if(!Ht.has(e)&&!di.has(e)&&!ln.test(e))return!1;return t.length>0}function fi(t){let e=!1;for(let n of t)if(!(n==="\\\\"||ln.test(n))){if(Ht.has(n)||Ge.has(n)||di.has(n)){e=!0;continue}return!1}return e}function Go(t,e){let n=e-1;if(n<=0)return Math.max(n,0);let i=t.charCodeAt(n);if(i<56320||i>57343)return n;let r=n-1;if(r<0)return n;let o=t.charCodeAt(r);return o>=55296&&o<=56319?r:n}function dn(t){if(t.length===0)return null;let e=Go(t,t.length);return t.slice(e)}function Xl(t){let e=Array.from(t),n=e.length;for(;n>0;){let i=e[n-1];if(ln.test(i)){n--;continue}if(Ht.has(i)||di.has(i)){n--;continue}break}return n<=0||n===e.length?null:{head:e.slice(0,n).join(""),tail:e.slice(n).join("")}}function eu(t,e,n){return n==="text"&&!e&&t.length===1&&t!=="-"&&t!=="\\u2014"?t:null}function Wo(t,e,n,i){let r=e[i],o=t[i];if(r==null)return o;let s=n[i];if(o.length===s)return o;let l=r.repeat(s);return t[i]=l,l}function qo(t,e){return t&&e!==null&&$l.has(e)}function tu(t){let e=dn(t);return e!==null&&Kl.has(e)}function nu(t){if(t.length<2||t[0]!==" ")return null;let e=t.slice(1);return/^\\p{M}+$/u.test(e)?{space:" ",marks:e}:null}function fn(t){let e=t.length;for(;e>0;){let n=Go(t,e),i=t.slice(n,e);if(Jl.has(i))return!0;if(!Ge.has(i))return!1;e=n}return!1}function iu(t,e){if(e.preserveOrdinarySpaces||e.preserveHardBreaks){if(t===" ")return"preserved-space";if(t===" ")return"tab";if(e.preserveHardBreaks&&t===`\n`)return"hard-break"}return t===" "?"space":t==="\\xA0"||t==="\\u202F"||t==="\\u2060"||t==="\\uFEFF"?"glue":t==="\\u200B"?"zero-width-break":t==="\\xAD"?"soft-hyphen":"text"}var ru=/[\\x20\\t\\n\\xA0\\xAD\\u200B\\u202F\\u2060\\uFEFF]/;function ke(t){return t.length===1?t[0]:t.join("")}function ou(t,e){let n=[];for(let i=t.length-1;i>=0;i--)n.push(t[i]);return n.push(e),ke(n)}function su(t,e,n,i){if(!ru.test(t))return[{text:t,isWordLike:e,kind:"text",start:n}];let r=[],o=null,s=[],l=n,a=!1,c=0;for(let u of t){let h=iu(u,i),f=h==="text"&&e;if(o!==null&&h===o&&f===a){s.push(u),c+=u.length;continue}o!==null&&r.push({text:ke(s),isWordLike:a,kind:o,start:l}),o=h,s=[u],l=n+c,a=f,c+=u.length}return o!==null&&r.push({text:ke(s),isWordLike:a,kind:o,start:l}),r}function ci(t){return t==="space"||t==="preserved-space"||t==="zero-width-break"||t==="hard-break"}var au=/^[A-Za-z][A-Za-z0-9+.-]*:$/;function lu(t,e){let n=t.texts[e];return n.startsWith("www.")?!0:au.test(n)&&e+1<t.len&&t.kinds[e+1]==="text"&&t.texts[e+1]==="//"}function uu(t){return t.includes("?")&&(t.includes("://")||t.startsWith("www."))}function cu(t){let e=t.texts.slice(),n=t.isWordLike.slice(),i=t.kinds.slice(),r=t.starts.slice();for(let s=0;s<t.len;s++){if(i[s]!=="text"||!lu(t,s))continue;let l=[e[s]],a=s+1;for(;a<t.len&&!ci(i[a]);){l.push(e[a]),n[s]=!0;let c=e[a].includes("?");if(i[a]="text",e[a]="",a++,c)break}e[s]=ke(l)}let o=0;for(let s=0;s<e.length;s++){let l=e[s];l.length!==0&&(o!==s&&(e[o]=l,n[o]=n[s],i[o]=i[s],r[o]=r[s]),o++)}return e.length=o,n.length=o,i.length=o,r.length=o,{len:o,texts:e,isWordLike:n,kinds:i,starts:r}}function du(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o];if(e.push(s),n.push(t.isWordLike[o]),i.push(t.kinds[o]),r.push(t.starts[o]),!uu(s))continue;let l=o+1;if(l>=t.len||ci(t.kinds[l]))continue;let a=[],c=t.starts[l],u=l;for(;u<t.len&&!ci(t.kinds[u]);)a.push(t.texts[u]),u++;a.length>0&&(e.push(ke(a)),n.push(!0),i.push("text"),r.push(c),o=u-1)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}var fu=new Set([":","-","/","\\xD7",",",".","+","\\u2013","\\u2014"]),Vo=/^[A-Za-z0-9_]+[,:;]*$/,Uo=/[,:;]+$/;function $o(t){for(let e of t)if(jo.test(e))return!0;return!1}function Pt(t){if(t.length===0)return!1;for(let e of t)if(!(jo.test(e)||fu.has(e)))return!1;return!0}function mu(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o],l=t.kinds[o];if(l==="text"&&Pt(s)&&$o(s)){let a=[s],c=o+1;for(;c<t.len&&t.kinds[c]==="text"&&Pt(t.texts[c]);)a.push(t.texts[c]),c++;e.push(ke(a)),n.push(!0),i.push("text"),r.push(t.starts[o]),o=c-1;continue}e.push(s),n.push(t.isWordLike[o]),i.push(l),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function pu(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o],l=t.kinds[o],a=t.isWordLike[o];if(l==="text"&&a&&Vo.test(s)){let c=[s],u=Uo.test(s),h=o+1;for(;u&&h<t.len&&t.kinds[h]==="text"&&t.isWordLike[h]&&Vo.test(t.texts[h]);){let f=t.texts[h];c.push(f),u=Uo.test(f),h++}e.push(ke(c)),n.push(!0),i.push("text"),r.push(t.starts[o]),o=h-1;continue}e.push(s),n.push(a),i.push(l),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function hu(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o];if(t.kinds[o]==="text"&&s.includes("-")){let l=s.split("-"),a=l.length>1;for(let c=0;c<l.length;c++){let u=l[c];if(!a)break;(u.length===0||!$o(u)||!Pt(u))&&(a=!1)}if(a){let c=0;for(let u=0;u<l.length;u++){let h=l[u],f=u<l.length-1?`${h}-`:h;e.push(f),n.push(!0),i.push("text"),r.push(t.starts[o]+c),c+=f.length}continue}}e.push(s),n.push(t.isWordLike[o]),i.push(t.kinds[o]),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function xu(t){let e=[],n=[],i=[],r=[],o=0;for(;o<t.len;){let s=[t.texts[o]],l=t.isWordLike[o],a=t.kinds[o],c=t.starts[o];if(a==="glue"){let u=[s[0]],h=c;for(o++;o<t.len&&t.kinds[o]==="glue";)u.push(t.texts[o]),o++;let f=ke(u);if(o<t.len&&t.kinds[o]==="text")s[0]=f,s.push(t.texts[o]),l=t.isWordLike[o],a="text",c=h,o++;else{e.push(f),n.push(!1),i.push("glue"),r.push(h);continue}}else o++;if(a==="text")for(;o<t.len&&t.kinds[o]==="glue";){let u=[];for(;o<t.len&&t.kinds[o]==="glue";)u.push(t.texts[o]),o++;let h=ke(u);if(o<t.len&&t.kinds[o]==="text"){s.push(h,t.texts[o]),l=l||t.isWordLike[o],o++;continue}s.push(h)}e.push(ke(s)),n.push(l),i.push(a),r.push(c)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function gu(t){let e=t.texts.slice(),n=t.isWordLike.slice(),i=t.kinds.slice(),r=t.starts.slice();for(let o=0;o<e.length-1;o++){if(i[o]!=="text"||i[o+1]!=="text"||!Le(e[o])||!Le(e[o+1]))continue;let s=Xl(e[o]);s!==null&&(e[o]=s.head,e[o+1]=s.tail+e[o+1],r[o+1]=r[o]+s.head.length)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function zo(t,e,n){let i=ql(),r=0,o=[],s=[],l=[],a=[],c=[],u=[],h=[],f=[],x=[],F=[],E=[],S=[];for(let C of i.segment(t))for(let g of su(C.segment,C.isWordLike??!1,C.index,n)){let de=function(){u[T]!==null&&(s[T]=[Wo(o,u,h,T)],u[T]=null),s[T].push(g.text),l[T]=l[T]||g.isWordLike,f[T]=f[T]||w,x[T]=x[T]||_,F[T]=J,E[T]=W,S[T]=qo(x[T],H)},b=g.kind==="text",N=eu(g.text,g.isWordLike,g.kind),w=Le(g.text),_=Po(g.text),H=dn(g.text),J=fn(g.text),W=tu(g.text),T=r-1;e.carryCJKAfterClosingQuote&&b&&r>0&&a[T]==="text"&&w&&f[T]&&F[T]||b&&r>0&&a[T]==="text"&&Yl(g.text)&&f[T]||b&&r>0&&a[T]==="text"&&E[T]?de():b&&r>0&&a[T]==="text"&&g.isWordLike&&_&&S[T]?(de(),l[T]=!0):N!==null&&r>0&&a[T]==="text"&&u[T]===N?h[T]=(h[T]??1)+1:b&&!g.isWordLike&&r>0&&a[T]==="text"&&(Ql(g.text)||g.text==="-"&&l[T])?de():(o[r]=g.text,s[r]=[g.text],l[r]=g.isWordLike,a[r]=g.kind,c[r]=g.start,u[r]=N,h[r]=N===null?0:1,f[r]=w,x[r]=_,F[r]=J,E[r]=W,S[r]=qo(_,H),r++)}for(let C=0;C<r;C++){if(u[C]!==null){o[C]=Wo(o,u,h,C);continue}o[C]=ke(s[C])}for(let C=1;C<r;C++)a[C]==="text"&&!l[C]&&fi(o[C])&&a[C-1]==="text"&&(o[C-1]+=o[C],l[C-1]=l[C-1]||l[C],o[C]="");let D=Array.from({length:r},()=>null),L=-1;for(let C=r-1;C>=0;C--){let g=o[C];if(g.length!==0){if(a[C]==="text"&&!l[C]&&Zl(g)&&L>=0&&a[L]==="text"){let b=D[L]??[];b.push(g),D[L]=b,c[L]=c[C],o[C]="";continue}L=C}}for(let C=0;C<r;C++){let g=D[C];g!=null&&(o[C]=ou(g,o[C]))}let R=0;for(let C=0;C<r;C++){let g=o[C];g.length!==0&&(R!==C&&(o[R]=g,l[R]=l[C],a[R]=a[C],c[R]=c[C]),R++)}o.length=R,l.length=R,a.length=R,c.length=R;let ne=xu({len:R,texts:o,isWordLike:l,kinds:a,starts:c}),q=gu(pu(hu(mu(du(cu(ne))))));for(let C=0;C<q.len-1;C++){let g=nu(q.texts[C]);g!==null&&(q.kinds[C]!=="space"&&q.kinds[C]!=="preserved-space"||q.kinds[C+1]!=="text"||!Po(q.texts[C+1])||(q.texts[C]=g.space,q.isWordLike[C]=!1,q.kinds[C]=q.kinds[C]==="preserved-space"?"preserved-space":"space",q.texts[C+1]=g.marks+q.texts[C+1],q.starts[C+1]=q.starts[C]+g.space.length))}return q}function yu(t,e){if(t.len===0)return[];if(!e.preserveHardBreaks)return[{startSegmentIndex:0,endSegmentIndex:t.len,consumedEndSegmentIndex:t.len}];let n=[],i=0;for(let r=0;r<t.len;r++)t.kinds[r]==="hard-break"&&(n.push({startSegmentIndex:i,endSegmentIndex:r,consumedEndSegmentIndex:r+1}),i=r+1);return i<t.len&&n.push({startSegmentIndex:i,endSegmentIndex:t.len,consumedEndSegmentIndex:t.len}),n}function Su(t){if(t.len<=1)return t;let e=[],n=[],i=[],r=[],o=null,s=!1,l=0,a=!1,c=!1;function u(){o!==null&&(e.push(ke(o)),n.push(s),i.push("text"),r.push(l),o=null)}for(let h=0;h<t.len;h++){let f=t.texts[h],x=t.kinds[h],F=t.isWordLike[h],E=t.starts[h];if(x==="text"){let S=jl(f),D=un(f);if(o!==null&&a&&c){o.push(f),s=s||F,a=a||S,c=D;continue}u(),o=[f],s=F,l=E,a=S,c=D;continue}u(),e.push(f),n.push(F),i.push(x),r.push(E)}return u(),{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function Ko(t,e,n="normal",i="normal"){let r=Ol(n),o=r.mode==="pre-wrap"?Hl(t):Pl(t);if(o.length===0)return{normalized:o,chunks:[],len:0,texts:[],isWordLike:[],kinds:[],starts:[]};let s=i==="keep-all"?Su(zo(o,e,r)):zo(o,e,r);return{normalized:o,chunks:yu(s,r),...s}}var at=null,Jo=new Map,lt=null,bu=96,Au=/\\p{Emoji_Presentation}/u,Eu=/[\\p{Emoji_Presentation}\\p{Extended_Pictographic}\\p{Regional_Indicator}\\uFE0F\\u20E3]/u,mi=null,Qo=new Map;function pi(){if(at!==null)return at;if(typeof OffscreenCanvas<"u")return at=new OffscreenCanvas(1,1).getContext("2d"),at;if(typeof document<"u")return at=document.createElement("canvas").getContext("2d"),at;throw new Error("Text measurement requires OffscreenCanvas or a DOM canvas context.")}function Fu(t){let e=Jo.get(t);return e||(e=new Map,Jo.set(t,e)),e}function Pe(t,e){let n=e.get(t);return n===void 0&&(n={width:pi().measureText(t).width,containsCJK:Le(t)},e.set(t,n)),n}function ut(){if(lt!==null)return lt;if(typeof navigator>"u")return lt={lineFitEpsilon:.005,carryCJKAfterClosingQuote:!1,preferPrefixWidthsForBreakableRuns:!1,preferEarlySoftHyphenBreak:!1},lt;let t=navigator.userAgent,n=navigator.vendor==="Apple Computer, Inc."&&t.includes("Safari/")&&!t.includes("Chrome/")&&!t.includes("Chromium/")&&!t.includes("CriOS/")&&!t.includes("FxiOS/")&&!t.includes("EdgiOS/"),i=t.includes("Chrome/")||t.includes("Chromium/")||t.includes("CriOS/")||t.includes("Edg/");return lt={lineFitEpsilon:n?1/64:.005,carryCJKAfterClosingQuote:i,preferPrefixWidthsForBreakableRuns:n,preferEarlySoftHyphenBreak:n},lt}function wu(t){let e=t.match(/(\\d+(?:\\.\\d+)?)\\s*px/);return e?parseFloat(e[1]):16}function Yo(){return mi===null&&(mi=new Intl.Segmenter(void 0,{granularity:"grapheme"})),mi}function Nu(t){return Au.test(t)||t.includes("\\uFE0F")}function Zo(t){return Eu.test(t)}function Cu(t,e){let n=Qo.get(t);if(n!==void 0)return n;let i=pi();i.font=t;let r=i.measureText("\\u{1F600}").width;if(n=0,r>e+.5&&typeof document<"u"&&document.body!==null){let o=document.createElement("span");o.style.font=t,o.style.display="inline-block",o.style.visibility="hidden",o.style.position="absolute",o.textContent="\\u{1F600}",document.body.appendChild(o);let s=o.getBoundingClientRect().width;document.body.removeChild(o),r-s>.5&&(n=r-s)}return Qo.set(t,n),n}function Mu(t){let e=0,n=Yo();for(let i of n.segment(t))Nu(i.segment)&&e++;return e}function Tu(t,e){return e.emojiCount===void 0&&(e.emojiCount=Mu(t)),e.emojiCount}function $e(t,e,n){return n===0?e.width:e.width-Tu(t,e)*n}function Xo(t,e,n,i,r){if(e.breakableFitAdvances!==void 0)return e.breakableFitAdvances;let o=Yo(),s=[];for(let u of o.segment(t))s.push(u.segment);if(s.length<=1)return e.breakableFitAdvances=null,e.breakableFitAdvances;if(r==="sum-graphemes"){let u=[];for(let h of s){let f=Pe(h,n);u.push($e(h,f,i))}return e.breakableFitAdvances=u,e.breakableFitAdvances}if(r==="pair-context"||s.length>bu){let u=[],h=null,f=0;for(let x of s){let F=Pe(x,n),E=$e(x,F,i);if(h===null)u.push(E);else{let S=h+x,D=Pe(S,n);u.push($e(S,D,i)-f)}h=x,f=E}return e.breakableFitAdvances=u,e.breakableFitAdvances}let l=[],a="",c=0;for(let u of s){a+=u;let h=Pe(a,n),f=$e(a,h,i);l.push(f-c),c=f}return e.breakableFitAdvances=l,e.breakableFitAdvances}function es(t,e){let n=pi();n.font=t;let i=Fu(t),r=wu(t),o=e?Cu(t,r):0;return{cache:i,fontSize:r,emojiCorrection:o}}function ku(t,e){for(;e<t.widths.length;){let n=t.kinds[e];if(n!=="space"&&n!=="zero-width-break"&&n!=="soft-hyphen")break;e++}return e}function _u(t,e){if(e<=0)return 0;let n=t%e;return Math.abs(n)<=1e-6?e:e-n}function vu(t,e,n,i,r){let o=0,s=e;for(;o<t.length;){let l=s+t[o];if((o+1<t.length?l+r:l)>n+i)break;s=l,o++}return{fitCount:o,fittedWidth:s}}function ts(t,e){return t.simpleLineWalkFastPath?ns(t,e):is(t,e)}function ns(t,e,n){let{widths:i,kinds:r,breakableFitAdvances:o}=t;if(i.length===0)return 0;let l=ut().lineFitEpsilon,a=e+l,c=0,u=0,h=!1,f=0,x=0,F=0,E=0,S=-1,D=0;function L(){S=-1,D=0}function R(N=F,w=E,_=u){c++,n?.({startSegmentIndex:f,startGraphemeIndex:x,endSegmentIndex:N,endGraphemeIndex:w,width:_}),u=0,h=!1,L()}function ne(N,w){h=!0,f=N,x=0,F=N+1,E=0,u=w}function q(N,w,_){h=!0,f=N,x=w,F=N,E=w+1,u=_}function C(N,w){if(!h){ne(N,w);return}u+=w,F=N+1,E=0}function g(N,w){let _=o[N];for(let H=w;H<_.length;H++){let J=_[H];h?u+J>a?(R(),q(N,H,J)):(u+=J,F=N,E=H+1):q(N,H,J)}h&&F===N&&E===_.length&&(F=N+1,E=0)}let b=0;for(;b<i.length&&!(!h&&(b=ku(t,b),b>=i.length));){let N=i[b],w=r[b],_=w==="space"||w==="preserved-space"||w==="tab"||w==="zero-width-break"||w==="soft-hyphen";if(!h){N>e&&o[b]!==null?g(b,0):ne(b,N),_&&(S=b+1,D=u-N),b++;continue}if(u+N>a){if(_){C(b,N),R(b+1,0,u-N),b++;continue}if(S>=0){if(F>S||F===S&&E>0){R();continue}R(S,0,D);continue}if(N>e&&o[b]!==null){R(),g(b,0),b++;continue}R();continue}C(b,N),_&&(S=b+1,D=u-N),b++}return h&&R(),c}function is(t,e,n){if(t.simpleLineWalkFastPath)return ns(t,e,n);let{widths:i,lineEndFitAdvances:r,lineEndPaintAdvances:o,kinds:s,breakableFitAdvances:l,discretionaryHyphenWidth:a,tabStopAdvance:c,chunks:u}=t;if(i.length===0||u.length===0)return 0;let h=ut(),f=h.lineFitEpsilon,x=e+f,F=0,E=0,S=!1,D=0,L=0,R=0,ne=0,q=-1,C=0,g=0,b=null;function N(){q=-1,C=0,g=0,b=null}function w(G=R,Q=ne,V=E){F++,n?.({startSegmentIndex:D,startGraphemeIndex:L,endSegmentIndex:G,endGraphemeIndex:Q,width:V}),E=0,S=!1,N()}function _(G,Q){S=!0,D=G,L=0,R=G+1,ne=0,E=Q}function H(G,Q,V){S=!0,D=G,L=Q,R=G,ne=Q+1,E=V}function J(G,Q){if(!S){_(G,Q);return}E+=Q,R=G+1,ne=0}function W(G,Q,V,Y){if(!Q)return;let we=G==="tab"?0:r[V],Ae=G==="tab"?Y:o[V];q=V+1,C=E-Y+we,g=E-Y+Ae,b=G}function T(G,Q){let V=l[G];for(let Y=Q;Y<V.length;Y++){let we=V[Y];S?E+we>x?(w(),H(G,Y,we)):(E+=we,R=G,ne=Y+1):H(G,Y,we)}S&&R===G&&ne===V.length&&(R=G+1,ne=0)}function de(G){if(b!=="soft-hyphen")return!1;let Q=l[G];if(Q==null)return!1;let{fitCount:V,fittedWidth:Y}=vu(Q,E,e,f,a);return V===0?!1:(E=Y,R=G,ne=V,N(),V===Q.length?(R=G+1,ne=0,!0):(w(G,V,Y+a),T(G,V),!0))}function be(G){F++,n?.({startSegmentIndex:G.startSegmentIndex,startGraphemeIndex:0,endSegmentIndex:G.consumedEndSegmentIndex,endGraphemeIndex:0,width:0}),N()}for(let G=0;G<u.length;G++){let Q=u[G];if(Q.startSegmentIndex===Q.endSegmentIndex){be(Q);continue}S=!1,E=0,D=Q.startSegmentIndex,L=0,R=Q.startSegmentIndex,ne=0,N();let V=Q.startSegmentIndex;for(;V<Q.endSegmentIndex;){let Y=s[V],we=Y==="space"||Y==="preserved-space"||Y==="tab"||Y==="zero-width-break"||Y==="soft-hyphen",Ae=Y==="tab"?_u(E,c):i[V];if(Y==="soft-hyphen"){S&&(R=V+1,ne=0,q=V+1,C=E+a,g=E+a,b=Y),V++;continue}if(!S){Ae>e&&l[V]!==null?T(V,0):_(V,Ae),W(Y,we,V,Ae),V++;continue}if(E+Ae>x){let k=E+(Y==="tab"?0:r[V]),P=E+(Y==="tab"?Ae:o[V]);if(b==="soft-hyphen"&&h.preferEarlySoftHyphenBreak&&C<=x){w(q,0,g);continue}if(b==="soft-hyphen"&&de(V)){V++;continue}if(we&&k<=x){J(V,Ae),w(V+1,0,P),V++;continue}if(q>=0&&C<=x){if(R>q||R===q&&ne>0){w();continue}let ie=q;w(ie,0,g),V=ie;continue}if(Ae>e&&l[V]!==null){w(),T(V,0),V++;continue}w();continue}J(V,Ae),W(Y,we,V,Ae),V++}if(S){let Y=q===Q.consumedEndSegmentIndex?g:E;w(Q.consumedEndSegmentIndex,0,Y)}}return F}var hi=null;function Ru(){return hi===null&&(hi=new Intl.Segmenter(void 0,{granularity:"grapheme"})),hi}function Lu(t){return t?{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableFitAdvances:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[],segments:[]}:{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableFitAdvances:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[]}}function Du(t,e){let n=[],i=[],r=0,o=!1,s=!1,l=!1;function a(){i.length!==0&&(n.push({text:i.length===1?i[0]:i.join(""),start:r}),i=[],o=!1,s=!1,l=!1)}function c(h,f,x){i=[h],r=f,o=x,s=fn(h),l=Ht.has(h)}function u(h,f){i.push(h),o=o||f;let x=fn(h);h.length===1&&Ge.has(h)?s=s||x:s=x,l=!1}for(let h of Ru().segment(t)){let f=h.segment,x=Le(f);if(i.length===0){c(f,h.index,x);continue}if(l||cn.has(f)||Ge.has(f)||e.carryCJKAfterClosingQuote&&x&&s){u(f,x);continue}if(!o&&!x){u(f,x);continue}a(),c(f,h.index,x)}return a(),n}function Bu(t){if(t.length<=1)return t;let e=[],n=[t[0].text],i=t[0].start,r=Le(t[0].text),o=un(t[0].text);function s(){e.push({text:n.length===1?n[0]:n.join(""),start:i})}for(let l=1;l<t.length;l++){let a=t[l],c=Le(a.text),u=un(a.text);if(r&&o){n.push(a.text),r=r||c,o=u;continue}s(),n=[a.text],i=a.start,r=c,o=u}return s(),e}function Iu(t,e,n,i){let r=ut(),{cache:o,emojiCorrection:s}=es(e,Zo(t.normalized)),l=$e("-",Pe("-",o),s),c=$e(" ",Pe(" ",o),s)*8;if(t.len===0)return Lu(n);let u=[],h=[],f=[],x=[],F=t.chunks.length<=1,E=n?[]:null,S=[],D=n?[]:null,L=Array.from({length:t.len});function R(g,b,N,w,_,H,J){_!=="text"&&_!=="space"&&_!=="zero-width-break"&&(F=!1),u.push(b),h.push(N),f.push(w),x.push(_),E?.push(H),S.push(J),D!==null&&D.push(g)}function ne(g,b,N,w,_){let H=Pe(g,o),J=$e(g,H,s),W=b==="space"||b==="preserved-space"||b==="zero-width-break"?0:J,T=b==="space"||b==="zero-width-break"?0:J;if(_&&w&&g.length>1){let de="sum-graphemes";Pt(g)?de="pair-context":r.preferPrefixWidthsForBreakableRuns&&(de="segment-prefixes");let be=Xo(g,H,o,s,de);R(g,J,W,T,b,N,be);return}R(g,J,W,T,b,N,null)}for(let g=0;g<t.len;g++){L[g]=u.length;let b=t.texts[g],N=t.isWordLike[g],w=t.kinds[g],_=t.starts[g];if(w==="soft-hyphen"){R(b,0,l,l,w,_,null);continue}if(w==="hard-break"){R(b,0,0,0,w,_,null);continue}if(w==="tab"){R(b,0,0,0,w,_,null);continue}let H=Pe(b,o);if(w==="text"&&H.containsCJK){let J=Du(b,r),W=i==="keep-all"?Bu(J):J;for(let T=0;T<W.length;T++){let de=W[T];ne(de.text,"text",_+de.start,N,i==="keep-all"||!Le(de.text))}continue}ne(b,w,_,N,!0)}let q=Ou(t.chunks,L,u.length),C=E===null?null:Oo(t.normalized,E);return D!==null?{widths:u,lineEndFitAdvances:h,lineEndPaintAdvances:f,kinds:x,simpleLineWalkFastPath:F,segLevels:C,breakableFitAdvances:S,discretionaryHyphenWidth:l,tabStopAdvance:c,chunks:q,segments:D}:{widths:u,lineEndFitAdvances:h,lineEndPaintAdvances:f,kinds:x,simpleLineWalkFastPath:F,segLevels:C,breakableFitAdvances:S,discretionaryHyphenWidth:l,tabStopAdvance:c,chunks:q}}function Ou(t,e,n){let i=[];for(let r=0;r<t.length;r++){let o=t[r],s=o.startSegmentIndex<e.length?e[o.startSegmentIndex]:n,l=o.endSegmentIndex<e.length?e[o.endSegmentIndex]:n,a=o.consumedEndSegmentIndex<e.length?e[o.consumedEndSegmentIndex]:n;i.push({startSegmentIndex:s,endSegmentIndex:l,consumedEndSegmentIndex:a})}return i}function Pu(t,e,n,i){let r=i?.wordBreak??"normal",o=Ko(t,ut(),i?.whiteSpace,r);return Iu(o,e,n,r)}function rs(t,e,n){return Pu(t,e,!1,n)}function os(t,e,n){let i=ts(t,e);return{lineCount:i,height:i*n}}var Hu={maxWidth:1600,baseFontSize:78,minFontSize:42,fontWeight:900,fontFamily:"Outfit",step:2};function ss(t,e){let n={...Hu,...e},i=1.2;for(let r=n.baseFontSize;r>=n.minFontSize;r-=n.step){let o=`${n.fontWeight} ${r}px ${n.fontFamily}`,s=rs(t,o),{lineCount:l}=os(s,n.maxWidth,r*i);if(l<=1)return{fontSize:r,fits:!0}}return{fontSize:n.minFontSize,fits:!1}}window.__timelines=window.__timelines||{};window.__hyperframes={fitTextFontSize:ss,getVariables:No};function as(){let t=window;t.__hyperframeRuntimeBootstrapped||(t.__hyperframeRuntimeBootstrapped=!0,Bo())}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",as,{once:!0}):as();})();\n';
|
|
53540
|
+
RUNTIME_IIFE = '"use strict";(()=>{var hs=Object.create;var bn=Object.defineProperty;var xs=Object.getOwnPropertyDescriptor;var gs=Object.getOwnPropertyNames;var ys=Object.getPrototypeOf,Ss=Object.prototype.hasOwnProperty;var bs=(t,e,n)=>e in t?bn(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var te=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var As=(t,e,n,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of gs(e))!Ss.call(t,r)&&r!==n&&bn(t,r,{get:()=>e[r],enumerable:!(i=xs(e,r))||i.enumerable});return t};var Es=(t,e,n)=>(n=t!=null?hs(ys(t)):{},As(e||!t||!t.__esModule?bn(n,"default",{value:t,enumerable:!0}):n,t));var ge=(t,e,n)=>bs(t,typeof e!="symbol"?e+"":e,n);var Yi=te((_c,Tn)=>{var K=String,Qi=function(){return{isColorSupported:!1,reset:K,bold:K,dim:K,italic:K,underline:K,inverse:K,hidden:K,strikethrough:K,black:K,red:K,green:K,yellow:K,blue:K,magenta:K,cyan:K,white:K,gray:K,bgBlack:K,bgRed:K,bgGreen:K,bgYellow:K,bgBlue:K,bgMagenta:K,bgCyan:K,bgWhite:K,blackBright:K,redBright:K,greenBright:K,yellowBright:K,blueBright:K,magentaBright:K,cyanBright:K,whiteBright:K,bgBlackBright:K,bgRedBright:K,bgGreenBright:K,bgYellowBright:K,bgBlueBright:K,bgMagentaBright:K,bgCyanBright:K,bgWhiteBright:K}};Tn.exports=Qi();Tn.exports.createColors=Qi});var kn=te(()=>{});var Vt=te((Lc,er)=>{"use strict";var Zi=Yi(),Xi=kn(),bt=class t extends Error{constructor(e,n,i,r,o,s){super(e),this.name="CssSyntaxError",this.reason=e,o&&(this.file=o),r&&(this.source=r),s&&(this.plugin=s),typeof n<"u"&&typeof i<"u"&&(typeof n=="number"?(this.line=n,this.column=i):(this.line=n.line,this.column=n.column,this.endLine=i.line,this.endColumn=i.column)),this.setMessage(),Error.captureStackTrace&&Error.captureStackTrace(this,t)}setMessage(){this.message=this.plugin?this.plugin+": ":"",this.message+=this.file?this.file:"<css input>",typeof this.line<"u"&&(this.message+=":"+this.line+":"+this.column),this.message+=": "+this.reason}showSourceCode(e){if(!this.source)return"";let n=this.source;e==null&&(e=Zi.isColorSupported);let i=u=>u,r=u=>u,o=u=>u;if(e){let{bold:u,gray:h,red:f}=Zi.createColors(!0);r=x=>u(f(x)),i=x=>h(x),Xi&&(o=x=>Xi(x))}let s=n.split(/\\r?\\n/),l=Math.max(this.line-3,0),a=Math.min(this.line+2,s.length),c=String(a).length;return s.slice(l,a).map((u,h)=>{let f=l+1+h,x=" "+(" "+f).slice(-c)+" | ";if(f===this.line){if(u.length>160){let E=20,S=Math.max(0,this.column-E),D=Math.max(this.column+E,this.endColumn+E),L=u.slice(S,D),R=i(x.replace(/\\d/g," "))+u.slice(0,Math.min(this.column-1,E-1)).replace(/[^\\t]/g," ");return r(">")+i(x)+o(L)+`\n `+R+r("^")}let F=i(x.replace(/\\d/g," "))+u.slice(0,this.column-1).replace(/[^\\t]/g," ");return r(">")+i(x)+o(u)+`\n `+F+r("^")}return" "+i(x)+o(u)}).join(`\n`)}toString(){let e=this.showSourceCode();return e&&(e=`\n\n`+e+`\n`),this.name+": "+this.message+e}};er.exports=bt;bt.default=bt});var _n=te((Dc,nr)=>{"use strict";var zs=/(<)(\\/?style\\b)/gi,js=/(<)(!--)/g;function Ue(t){return typeof t!="string"||!t.includes("<")?t:t.replace(zs,"\\\\3c $2").replace(js,"\\\\3c $2")}var tr={after:`\n`,beforeClose:`\n`,beforeComment:`\n`,beforeDecl:`\n`,beforeOpen:" ",beforeRule:`\n`,colon:": ",commentLeft:" ",commentRight:" ",emptyBody:"",indent:" ",semicolon:!1};function Gs(t){return t[0].toUpperCase()+t.slice(1)}var At=class{constructor(e){this.builder=e}atrule(e,n){let i=e.raws,r="@"+e.name,o=e.params?this.rawValue(e,"params"):"";if(typeof i.afterName<"u"?r+=i.afterName:o&&(r+=" "),e.nodes)this.block(e,r+o);else{let s=(i.between||"")+(n?";":"");this.builder(Ue(r+o+s),e)}}beforeAfter(e,n){let i;e.type==="decl"?i=this.raw(e,null,"beforeDecl"):e.type==="comment"?i=this.raw(e,null,"beforeComment"):n==="before"?i=this.raw(e,null,"beforeRule"):i=this.raw(e,null,"beforeClose");let r=e.parent,o=0;for(;r&&r.type!=="root";)o+=1,r=r.parent;if(i.includes(`\n`)){let s=this.raw(e,null,"indent");if(s.length)for(let l=0;l<o;l++)i+=s}return i}block(e,n){let i=this.raw(e,"between","beforeOpen");this.builder(Ue(n+i)+"{",e,"start");let r;e.nodes&&e.nodes.length?(this.body(e),r=this.raw(e,"after")):r=this.raw(e,"after","emptyBody"),r&&this.builder(Ue(r)),this.builder("}",e,"end")}body(e){let n=e.nodes,i=n.length-1;for(;i>0&&n[i].type==="comment";)i-=1;let r=this.raw(e,"semicolon"),o=e.type==="document";for(let s=0;s<n.length;s++){let l=n[s],a=this.raw(l,"before");a&&this.builder(o?a:Ue(a)),this.stringify(l,i!==s||r)}}comment(e){let n=this.raw(e,"left","commentLeft"),i=this.raw(e,"right","commentRight");this.builder(Ue("/*"+n+e.text+i+"*/"),e)}decl(e,n){let i=e.raws,r=this.raw(e,"between","colon"),o=e.prop+r+this.rawValue(e,"value");e.important&&(o+=i.important||" !important"),n&&(o+=";"),this.builder(Ue(o),e)}document(e){this.body(e)}raw(e,n,i){let r;if(i||(i=n),n&&(r=e.raws[n],typeof r<"u"))return r;let o=e.parent;if(i==="before"&&(!o||o.type==="root"&&o.first===e||o&&o.type==="document"))return"";if(!o)return tr[i];let s=e.root(),l=s.rawCache||(s.rawCache={});if(typeof l[i]<"u")return l[i];if(i==="before"||i==="after")return this.beforeAfter(e,i);{let a="raw"+Gs(i);this[a]?r=this[a](s,e):s.walk(c=>{if(r=c.raws[n],typeof r<"u")return!1})}return typeof r>"u"&&(r=tr[i]),l[i]=r,r}rawBeforeClose(e){let n;return e.walk(i=>{if(i.nodes&&i.nodes.length>0&&typeof i.raws.after<"u")return n=i.raws.after,n.includes(`\n`)&&(n=n.replace(/[^\\n]+$/,"")),!1}),n&&(n=n.replace(/\\S/g,"")),n}rawBeforeComment(e,n){let i;return e.walkComments(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(`\n`)&&(i=i.replace(/[^\\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(n,null,"beforeDecl"):i&&(i=i.replace(/\\S/g,"")),i}rawBeforeDecl(e,n){let i;return e.walkDecls(r=>{if(typeof r.raws.before<"u")return i=r.raws.before,i.includes(`\n`)&&(i=i.replace(/[^\\n]+$/,"")),!1}),typeof i>"u"?i=this.raw(n,null,"beforeRule"):i&&(i=i.replace(/\\S/g,"")),i}rawBeforeOpen(e){let n;return e.walk(i=>{if(i.type!=="decl"&&(n=i.raws.between,typeof n<"u"))return!1}),n}rawBeforeRule(e){let n;return e.walk(i=>{if(i.nodes&&(i.parent!==e||e.first!==i)&&typeof i.raws.before<"u")return n=i.raws.before,n.includes(`\n`)&&(n=n.replace(/[^\\n]+$/,"")),!1}),n&&(n=n.replace(/\\S/g,"")),n}rawColon(e){let n;return e.walkDecls(i=>{if(typeof i.raws.between<"u")return n=i.raws.between.replace(/[^\\s:]/g,""),!1}),n}rawEmptyBody(e){let n;return e.walk(i=>{if(i.nodes&&i.nodes.length===0&&(n=i.raws.after,typeof n<"u"))return!1}),n}rawIndent(e){if(e.raws.indent)return e.raws.indent;let n;return e.walk(i=>{let r=i.parent;if(r&&r!==e&&r.parent&&r.parent===e&&typeof i.raws.before<"u"){let o=i.raws.before.split(`\n`);return n=o[o.length-1],n=n.replace(/\\S/g,""),!1}}),n}rawSemicolon(e){let n;return e.walk(i=>{if(i.nodes&&i.nodes.length&&i.last.type==="decl"&&(n=i.raws.semicolon,typeof n<"u"))return!1}),n}rawValue(e,n){let i=e[n],r=e.raws[n];return r&&r.value===i?r.raw:i}root(e){if(this.body(e),e.raws.after){let n=e.raws.after,i=e.parent&&e.parent.type==="document";this.builder(i?n:Ue(n))}}rule(e){this.block(e,this.rawValue(e,"selector")),e.raws.ownSemicolon&&this.builder(Ue(e.raws.ownSemicolon),e,"end")}stringify(e,n){if(!this[e.type])throw new Error("Unknown AST node type "+e.type+". Maybe you need to change PostCSS stringifier.");this[e.type](e,n)}};nr.exports=At;At.default=At});var Et=te((Bc,ir)=>{"use strict";var $s=_n();function vn(t,e){new $s(e).stringify(t)}ir.exports=vn;vn.default=vn});var zt=te((Ic,Rn)=>{"use strict";Rn.exports.isClean=Symbol("isClean");Rn.exports.my=Symbol("my")});var Nt=te((Oc,rr)=>{"use strict";var Ks=Vt(),Js=_n(),Qs=Et(),{isClean:Ft,my:Ys}=zt();function Ln(t,e){let n=new t.constructor;for(let i in t){if(!Object.prototype.hasOwnProperty.call(t,i)||i==="proxyCache")continue;let r=t[i],o=typeof r;i==="parent"&&o==="object"?e&&(n[i]=e):i==="source"?n[i]=r:Array.isArray(r)?n[i]=r.map(s=>Ln(s,n)):(o==="object"&&r!==null&&(r=Ln(r)),n[i]=r)}return n}function Oe(t,e){if(e&&typeof e.offset<"u")return e.offset;let n=1,i=1,r=0;for(let o=0;o<t.length;o++){if(i===e.line&&n===e.column){r=o;break}t[o]===`\n`?(n=1,i+=1):n+=1}return r}var wt=class{get proxyOf(){return this}constructor(e={}){this.raws={},this[Ft]=!1,this[Ys]=!0;for(let n in e)if(n==="nodes"){this.nodes=[];for(let i of e[n])typeof i.clone=="function"?this.append(i.clone()):this.append(i)}else this[n]=e[n]}addToError(e){if(e.postcssNode=this,e.stack&&this.source&&/\\n\\s{4}at /.test(e.stack)){let n=this.source;e.stack=e.stack.replace(/\\n\\s{4}at /,`$&${n.input.from}:${n.start.line}:${n.start.column}$&`)}return e}after(e){return this.parent.insertAfter(this,e),this}assign(e={}){for(let n in e)this[n]=e[n];return this}before(e){return this.parent.insertBefore(this,e),this}cleanRaws(e){delete this.raws.before,delete this.raws.after,e||delete this.raws.between}clone(e={}){let n=Ln(this);for(let i in e)n[i]=e[i];return n}cloneAfter(e={}){let n=this.clone(e);return this.parent.insertAfter(this,n),n}cloneBefore(e={}){let n=this.clone(e);return this.parent.insertBefore(this,n),n}error(e,n={}){if(this.source){let{end:i,start:r}=this.rangeBy(n);return this.source.input.error(e,{column:r.column,line:r.line},{column:i.column,line:i.line},n)}return new Ks(e)}getProxyProcessor(){return{get(e,n){return n==="proxyOf"?e:n==="root"?()=>e.root().toProxy():e[n]},set(e,n,i){return e[n]===i||(e[n]=i,(n==="prop"||n==="value"||n==="name"||n==="params"||n==="important"||n==="text")&&e.markDirty()),!0}}}markClean(){this[Ft]=!0}markDirty(){if(this[Ft]){this[Ft]=!1;let e=this;for(;e=e.parent;)e[Ft]=!1}}next(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e+1]}positionBy(e={}){let n=this.source.start;if(e.index)n=this.positionInside(e.index);else if(e.word){let i="document"in this.source.input?this.source.input.document:this.source.input.css,o=i.slice(Oe(i,this.source.start),Oe(i,this.source.end)).indexOf(e.word);o!==-1&&(n=this.positionInside(o))}return n}positionInside(e){let n=this.source.start.column,i=this.source.start.line,r="document"in this.source.input?this.source.input.document:this.source.input.css,o=Oe(r,this.source.start),s=o+e;for(let l=o;l<s;l++)r[l]===`\n`?(n=1,i+=1):n+=1;return{column:n,line:i,offset:s}}prev(){if(!this.parent)return;let e=this.parent.index(this);return this.parent.nodes[e-1]}rangeBy(e={}){let n="document"in this.source.input?this.source.input.document:this.source.input.css,i={column:this.source.start.column,line:this.source.start.line,offset:Oe(n,this.source.start)},r=this.source.end?{column:this.source.end.column+1,line:this.source.end.line,offset:typeof this.source.end.offset=="number"?this.source.end.offset:Oe(n,this.source.end)+1}:{column:i.column+1,line:i.line,offset:i.offset+1};if(e.word){let s=n.slice(Oe(n,this.source.start),Oe(n,this.source.end)).indexOf(e.word);s!==-1&&(i=this.positionInside(s),r=this.positionInside(s+e.word.length))}else e.start?i={column:e.start.column,line:e.start.line,offset:Oe(n,e.start)}:e.index&&(i=this.positionInside(e.index)),e.end?r={column:e.end.column,line:e.end.line,offset:Oe(n,e.end)}:typeof e.endIndex=="number"?r=this.positionInside(e.endIndex):e.index&&(r=this.positionInside(e.index+1));return(r.line<i.line||r.line===i.line&&r.column<=i.column)&&(r={column:i.column+1,line:i.line,offset:i.offset+1}),{end:r,start:i}}raw(e,n){return new Js().raw(this,e,n)}remove(){return this.parent&&this.parent.removeChild(this),this.parent=void 0,this}replaceWith(...e){if(this.parent){let n=this,i=!1;for(let r of e)r===this?i=!0:i?(this.parent.insertAfter(n,r),n=r):this.parent.insertBefore(n,r);i||this.remove()}return this}root(){let e=this;for(;e.parent&&e.parent.type!=="document";)e=e.parent;return e}toJSON(e,n){let i={},r=n==null;n=n||new Map;let o=0;for(let s in this){if(!Object.prototype.hasOwnProperty.call(this,s)||s==="parent"||s==="proxyCache")continue;let l=this[s];if(Array.isArray(l))i[s]=l.map(a=>typeof a=="object"&&a.toJSON?a.toJSON(null,n):a);else if(typeof l=="object"&&l.toJSON)i[s]=l.toJSON(null,n);else if(s==="source"){if(l==null)continue;let a=n.get(l.input);a==null&&(a=o,n.set(l.input,o),o++),i[s]={end:l.end,inputId:a,start:l.start}}else i[s]=l}return r&&(i.inputs=[...n.keys()].map(s=>s.toJSON())),i}toProxy(){return this.proxyCache||(this.proxyCache=new Proxy(this,this.getProxyProcessor())),this.proxyCache}toString(e=Qs){e.stringify&&(e=e.stringify);let n="";return e(this,i=>{n+=i}),n}warn(e,n,i={}){let r={node:this};for(let o in i)r[o]=i[o];return e.warn(n,r)}};rr.exports=wt;wt.default=wt});var Mt=te((Pc,or)=>{"use strict";var Zs=Nt(),Ct=class extends Zs{constructor(e){super(e),this.type="comment"}};or.exports=Ct;Ct.default=Ct});var kt=te((Hc,sr)=>{"use strict";var Xs=Nt(),Tt=class extends Xs{get variable(){return this.prop.startsWith("--")||this.prop[0]==="$"}constructor(e){e&&typeof e.value<"u"&&typeof e.value!="string"&&(e={...e,value:String(e.value)}),super(e),this.type="decl"}};sr.exports=Tt;Tt.default=Tt});var Ve=te((Wc,hr)=>{"use strict";var ar=Mt(),lr=kt(),ea=Nt(),{isClean:ur,my:cr}=zt(),Dn,dr,fr,Bn;function mr(t){return t.map(e=>(e.nodes&&(e.nodes=mr(e.nodes)),delete e.source,e))}function pr(t){if(t[ur]=!1,t.proxyOf.nodes)for(let e of t.proxyOf.nodes)pr(e)}var Re=class t extends ea{get first(){if(this.proxyOf.nodes)return this.proxyOf.nodes[0]}get last(){if(this.proxyOf.nodes)return this.proxyOf.nodes[this.proxyOf.nodes.length-1]}append(...e){for(let n of e){let i=this.normalize(n,this.last);for(let r of i)this.proxyOf.nodes.push(r)}return this.markDirty(),this}cleanRaws(e){if(super.cleanRaws(e),this.nodes)for(let n of this.nodes)n.cleanRaws(e)}each(e){if(!this.proxyOf.nodes)return;let n=this.getIterator(),i,r;for(;this.indexes[n]<this.proxyOf.nodes.length&&(i=this.indexes[n],r=e(this.proxyOf.nodes[i],i),r!==!1);)this.indexes[n]+=1;return delete this.indexes[n],r}every(e){return this.nodes.every(e)}getIterator(){this.lastEach||(this.lastEach=0),this.indexes||(this.indexes={}),this.lastEach+=1;let e=this.lastEach;return this.indexes[e]=0,e}getProxyProcessor(){return{get(e,n){return n==="proxyOf"?e:e[n]?n==="each"||typeof n=="string"&&n.startsWith("walk")?(...i)=>e[n](...i.map(r=>typeof r=="function"?(o,s)=>r(o.toProxy(),s):r)):n==="every"||n==="some"?i=>e[n]((r,...o)=>i(r.toProxy(),...o)):n==="root"?()=>e.root().toProxy():n==="nodes"?e.nodes.map(i=>i.toProxy()):n==="first"||n==="last"?e[n].toProxy():e[n]:e[n]},set(e,n,i){return e[n]===i||(e[n]=i,(n==="name"||n==="params"||n==="selector")&&e.markDirty()),!0}}}index(e){return typeof e=="number"?e:(e.proxyOf&&(e=e.proxyOf),this.proxyOf.nodes.indexOf(e))}insertAfter(e,n){let i=this.index(e),r=this.normalize(n,this.proxyOf.nodes[i]).reverse();i=this.index(e);for(let s of r)this.proxyOf.nodes.splice(i+1,0,s);let o;for(let s in this.indexes)o=this.indexes[s],i<o&&(this.indexes[s]=o+r.length);return this.markDirty(),this}insertBefore(e,n){let i=this.index(e),r=i===0?"prepend":!1,o=this.normalize(n,this.proxyOf.nodes[i],r).reverse();i=this.index(e);for(let l of o)this.proxyOf.nodes.splice(i,0,l);let s;for(let l in this.indexes)s=this.indexes[l],i<=s&&(this.indexes[l]=s+o.length);return this.markDirty(),this}normalize(e,n){if(typeof e=="string")e=mr(dr(e).nodes);else if(typeof e>"u")e=[];else if(Array.isArray(e)){e=e.slice(0);for(let r of e)r.parent&&r.parent.removeChild(r,"ignore")}else if(e.type==="root"&&this.type!=="document"){e=e.nodes.slice(0);for(let r of e)r.parent&&r.parent.removeChild(r,"ignore")}else if(e.type)e=[e];else if(e.prop){if(typeof e.value>"u")throw new Error("Value field is missed in node creation");typeof e.value!="string"&&(e.value=String(e.value)),e=[new lr(e)]}else if(e.selector||e.selectors)e=[new Bn(e)];else if(e.name)e=[new Dn(e)];else if(e.text)e=[new ar(e)];else throw new Error("Unknown node type in node creation");return e.map(r=>(r[cr]||t.rebuild(r),r=r.proxyOf,r.parent&&r.parent.removeChild(r),r[ur]&&pr(r),r.raws||(r.raws={}),typeof r.raws.before>"u"&&n&&typeof n.raws.before<"u"&&(r.raws.before=n.raws.before.replace(/\\S/g,"")),r.parent=this.proxyOf,r))}prepend(...e){e=e.reverse();for(let n of e){let i=this.normalize(n,this.first,"prepend").reverse();for(let r of i)this.proxyOf.nodes.unshift(r);for(let r in this.indexes)this.indexes[r]=this.indexes[r]+i.length}return this.markDirty(),this}push(e){return e.parent=this,this.proxyOf.nodes.push(e),this}removeAll(){for(let e of this.proxyOf.nodes)e.parent=void 0;return this.proxyOf.nodes=[],this.markDirty(),this}removeChild(e){e=this.index(e),this.proxyOf.nodes[e].parent=void 0,this.proxyOf.nodes.splice(e,1);let n;for(let i in this.indexes)n=this.indexes[i],n>=e&&(this.indexes[i]=n-1);return this.markDirty(),this}replaceValues(e,n,i){return i||(i=n,n={}),this.walkDecls(r=>{n.props&&!n.props.includes(r.prop)||n.fast&&!r.value.includes(n.fast)||(r.value=r.value.replace(e,i))}),this.markDirty(),this}some(e){return this.nodes.some(e)}walk(e){return this.each((n,i)=>{let r;try{r=e(n,i)}catch(o){throw n.addToError(o)}return r!==!1&&n.walk&&(r=n.walk(e)),r})}walkAtRules(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="atrule"&&e.test(i.name))return n(i,r)}):this.walk((i,r)=>{if(i.type==="atrule"&&i.name===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="atrule")return n(i,r)}))}walkComments(e){return this.walk((n,i)=>{if(n.type==="comment")return e(n,i)})}walkDecls(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="decl"&&e.test(i.prop))return n(i,r)}):this.walk((i,r)=>{if(i.type==="decl"&&i.prop===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="decl")return n(i,r)}))}walkRules(e,n){return n?e instanceof RegExp?this.walk((i,r)=>{if(i.type==="rule"&&e.test(i.selector))return n(i,r)}):this.walk((i,r)=>{if(i.type==="rule"&&i.selector===e)return n(i,r)}):(n=e,this.walk((i,r)=>{if(i.type==="rule")return n(i,r)}))}};Re.registerParse=t=>{dr=t};Re.registerRule=t=>{Bn=t};Re.registerAtRule=t=>{Dn=t};Re.registerRoot=t=>{fr=t};hr.exports=Re;Re.default=Re;Re.rebuild=t=>{t.type==="atrule"?Object.setPrototypeOf(t,Dn.prototype):t.type==="rule"?Object.setPrototypeOf(t,Bn.prototype):t.type==="decl"?Object.setPrototypeOf(t,lr.prototype):t.type==="comment"?Object.setPrototypeOf(t,ar.prototype):t.type==="root"&&Object.setPrototypeOf(t,fr.prototype),t[cr]=!0,t.nodes&&t.nodes.forEach(e=>{Re.rebuild(e)})}});var jt=te((qc,gr)=>{"use strict";var xr=Ve(),nt=class extends xr{constructor(e){super(e),this.type="atrule"}append(...e){return this.proxyOf.nodes||(this.nodes=[]),super.append(...e)}prepend(...e){return this.proxyOf.nodes||(this.nodes=[]),super.prepend(...e)}};gr.exports=nt;nt.default=nt;xr.registerAtRule(nt)});var Gt=te((Uc,br)=>{"use strict";var ta=Ve(),yr,Sr,Ye=class extends ta{constructor(e){super({type:"document",...e}),this.nodes||(this.nodes=[])}toResult(e={}){return new yr(new Sr,this,e).stringify()}};Ye.registerLazyResult=t=>{yr=t};Ye.registerProcessor=t=>{Sr=t};br.exports=Ye;Ye.default=Ye});var Er=te((Vc,Ar)=>{var na="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict",ia=(t,e=21)=>(n=e)=>{let i="",r=n|0;for(;r--;)i+=t[Math.random()*t.length|0];return i},ra=(t=21)=>{let e="",n=t|0;for(;n--;)e+=na[Math.random()*64|0];return e};Ar.exports={nanoid:ra,customAlphabet:ia}});var $t=te(()=>{});var Kt=te(()=>{});var In=te(()=>{});var Fr=te(()=>{});var Pn=te((Zc,Cr)=>{"use strict";var{existsSync:oa,readFileSync:sa}=Fr(),{dirname:On,join:aa}=$t(),{SourceMapConsumer:wr,SourceMapGenerator:Nr}=Kt();function la(t){return Buffer?Buffer.from(t,"base64").toString():window.atob(t)}var _t=class{constructor(e,n){if(n.map===!1)return;n.unsafeMap&&(this.unsafeMap=!0),this.loadAnnotation(e),this.inline=this.startWith(this.annotation,"data:");let i=n.map?n.map.prev:void 0,r=this.loadMap(n.from,i);!this.mapFile&&n.from&&(this.mapFile=n.from),this.mapFile&&(this.root=On(this.mapFile)),r&&(this.text=r)}consumer(){return this.consumerCache||(this.consumerCache=new wr(this.json||this.text)),this.consumerCache}decodeInline(e){let n=/^data:application\\/json;charset=utf-?8;base64,/,i=/^data:application\\/json;base64,/,r=/^data:application\\/json;charset=utf-?8,/,o=/^data:application\\/json,/,s=e.match(r)||e.match(o);if(s)return decodeURIComponent(e.substr(s[0].length));let l=e.match(n)||e.match(i);if(l)return la(e.substr(l[0].length));let a=e.slice(22);throw a=a.slice(0,a.indexOf(",")),new Error("Unsupported source map encoding "+a)}getAnnotationURL(e){return e.replace(/^\\/\\*\\s*# sourceMappingURL=/,"").trim()}isMap(e){return typeof e!="object"?!1:typeof e.mappings=="string"||typeof e._mappings=="string"||Array.isArray(e.sections)}loadAnnotation(e){let n=e.match(/\\/\\*\\s*# sourceMappingURL=/g);if(!n)return;let i=e.lastIndexOf(n.pop()),r=e.indexOf("*/",i);i>-1&&r>-1&&(this.annotation=this.getAnnotationURL(e.substring(i,r)))}loadFile(e,n,i){if(!(!i&&!this.unsafeMap&&!/\\.map$/i.test(e))&&(this.root=On(e),oa(e)))return this.mapFile=e,sa(e,"utf-8").toString().trim()}loadMap(e,n){if(n===!1)return!1;if(n){if(typeof n=="string")return n;if(typeof n=="function"){let i=n(e);if(i){let r=this.loadFile(i,e,!0);if(!r)throw new Error("Unable to load previous source map: "+i.toString());return r}}else{if(n instanceof wr)return Nr.fromSourceMap(n).toString();if(n instanceof Nr)return n.toString();if(this.isMap(n))return JSON.stringify(n);throw new Error("Unsupported previous source map format: "+n.toString())}}else{if(this.inline)return this.decodeInline(this.annotation);if(this.annotation){let i=this.annotation;e&&(i=aa(On(e),i));let r=this.loadFile(i,e,!1);if(r)try{this.json=JSON.parse(r.replace(/^\\)]}\'[^\\n]*\\n/,""))}catch{return}return r}}}startWith(e,n){return e?e.substr(0,n.length)===n:!1}withContent(){return!!(this.consumer().sourcesContent&&this.consumer().sourcesContent.length>0)}};Cr.exports=_t;_t.default=_t});var vt=te((Xc,vr)=>{"use strict";var{nanoid:ua}=Er(),{isAbsolute:qn,resolve:Un}=$t(),{SourceMapConsumer:ca,SourceMapGenerator:da}=Kt(),{fileURLToPath:Mr,pathToFileURL:Jt}=In(),Tr=Vt(),fa=Pn(),Hn=kn(),Wn=Symbol("lineToIndexCache"),ma=!!(ca&&da),kr=!!(Un&&qn);function _r(t){if(t[Wn])return t[Wn];let e=t.css.split(`\n`),n=new Array(e.length),i=0;for(let r=0,o=e.length;r<o;r++)n[r]=i,i+=e[r].length+1;return t[Wn]=n,n}var it=class{get from(){return this.file||this.id}constructor(e,n={}){if(e===null||typeof e>"u"||typeof e=="object"&&!e.toString)throw new Error(`PostCSS received ${e} instead of CSS string`);if(this.css=e.toString(),this.css[0]==="\\uFEFF"||this.css[0]==="\\uFFFE"?(this.hasBOM=!0,this.css=this.css.slice(1)):this.hasBOM=!1,this.document=this.css,n.document&&(this.document=n.document.toString()),n.from&&(!kr||/^\\w+:\\/\\//.test(n.from)||qn(n.from)?this.file=n.from:this.file=Un(n.from)),kr&&ma){let i=new fa(this.css,n);if(i.text){this.map=i;let r=i.consumer().file;!this.file&&r&&(this.file=this.mapResolve(r))}}this.file||(this.id="<input css "+ua(6)+">"),this.map&&(this.map.file=this.from)}error(e,n,i,r={}){let o,s,l,a,c;if(n&&typeof n=="object"){let h=n,f=i;if(typeof h.offset=="number"){a=h.offset;let x=this.fromOffset(a);n=x.line,i=x.col}else n=h.line,i=h.column,a=this.fromLineAndColumn(n,i);if(typeof f.offset=="number"){l=f.offset;let x=this.fromOffset(l);s=x.line,o=x.col}else s=f.line,o=f.column,l=this.fromLineAndColumn(f.line,f.column)}else if(i)a=this.fromLineAndColumn(n,i);else{a=n;let h=this.fromOffset(a);n=h.line,i=h.col}let u=this.origin(n,i,s,o);return u?c=new Tr(e,u.endLine===void 0?u.line:{column:u.column,line:u.line},u.endLine===void 0?u.column:{column:u.endColumn,line:u.endLine},u.source,u.file,r.plugin):c=new Tr(e,s===void 0?n:{column:i,line:n},s===void 0?i:{column:o,line:s},this.css,this.file,r.plugin),c.input={column:i,endColumn:o,endLine:s,endOffset:l,line:n,offset:a,source:this.css},this.file&&(Jt&&(c.input.url=Jt(this.file).toString()),c.input.file=this.file),c}fromLineAndColumn(e,n){return _r(this)[e-1]+n-1}fromOffset(e){let n=_r(this),i=n[n.length-1],r=0;if(e>=i)r=n.length-1;else{let o=n.length-2,s;for(;r<o;)if(s=r+(o-r>>1),e<n[s])o=s-1;else if(e>=n[s+1])r=s+1;else{r=s;break}}return{col:e-n[r]+1,line:r+1}}mapResolve(e){return/^\\w+:\\/\\//.test(e)?e:Un(this.map.consumer().sourceRoot||this.map.root||".",e)}origin(e,n,i,r){if(!this.map)return!1;let o=this.map.consumer(),s=o.originalPositionFor({column:n,line:e});if(!s.source)return!1;let l;typeof i=="number"&&(l=o.originalPositionFor({column:r,line:i}));let a;qn(s.source)?a=Jt(s.source):a=new URL(s.source,this.map.consumer().sourceRoot||Jt(this.map.mapFile));let c={column:s.column,endColumn:l&&l.column,endLine:l&&l.line,line:s.line,url:a.toString()};if(a.protocol==="file:")if(Mr)c.file=Mr(a);else throw new Error("file: protocol is not available in this PostCSS build");let u=o.sourceContentFor(s.source);return u&&(c.source=u),c}toJSON(){let e={};for(let n of["hasBOM","css","file","id"])this[n]!=null&&(e[n]=this[n]);return this.map&&(e.map={...this.map},e.map.consumerCache&&(e.map.consumerCache=void 0)),e}};vr.exports=it;it.default=it;Hn&&Hn.registerInput&&Hn.registerInput(it)});var rt=te((ed,Br)=>{"use strict";var Rr=Ve(),Lr,Dr,ze=class extends Rr{constructor(e){super(e),this.type="root",this.nodes||(this.nodes=[])}normalize(e,n,i){let r=super.normalize(e);if(n){if(i==="prepend")this.nodes.length>1?n.raws.before=this.nodes[1].raws.before:delete n.raws.before;else if(this.first!==n)for(let o of r)o.raws.before=n.raws.before}return r}removeChild(e,n){let i=this.index(e);return!n&&i===0&&this.nodes.length>1&&(this.nodes[1].raws.before=this.nodes[i].raws.before),super.removeChild(e)}toResult(e={}){return new Lr(new Dr,this,e).stringify()}};ze.registerLazyResult=t=>{Lr=t};ze.registerProcessor=t=>{Dr=t};Br.exports=ze;ze.default=ze;Rr.registerRoot(ze)});var Vn=te((td,Ir)=>{"use strict";var Rt={comma(t){return Rt.split(t,[","],!0)},space(t){let e=[" ",`\n`," "];return Rt.split(t,e)},split(t,e,n){let i=[],r="",o=!1,s=0,l=!1,a="",c=!1;for(let u of t)c?c=!1:u==="\\\\"?c=!0:l?u===a&&(l=!1):u===\'"\'||u==="\'"?(l=!0,a=u):u==="("?s+=1:u===")"?s>0&&(s-=1):s===0&&e.includes(u)&&(o=!0),o?(r!==""&&i.push(r.trim()),r="",o=!1):r+=u;return(n||r!=="")&&i.push(r.trim()),i}};Ir.exports=Rt;Rt.default=Rt});var Qt=te((nd,Pr)=>{"use strict";var Or=Ve(),pa=Vn(),ot=class extends Or{get selectors(){return pa.comma(this.selector)}set selectors(e){let n=this.selector?this.selector.match(/,\\s*/):null,i=n?n[0]:","+this.raw("between","beforeOpen");this.selector=e.join(i)}constructor(e){super(e),this.type="rule",this.nodes||(this.nodes=[])}};Pr.exports=ot;ot.default=ot;Or.registerRule(ot)});var Wr=te((id,Hr)=>{"use strict";var ha=jt(),xa=Mt(),ga=kt(),ya=vt(),Sa=Pn(),ba=rt(),Aa=Qt();function Lt(t,e){if(Array.isArray(t))return t.map(r=>Lt(r));let{inputs:n,...i}=t;if(n){e=[];for(let r of n){let o={...r,__proto__:ya.prototype};o.map&&(o.map={...o.map,__proto__:Sa.prototype}),e.push(o)}}if(i.nodes&&(i.nodes=t.nodes.map(r=>Lt(r,e))),i.source){let{inputId:r,...o}=i.source;i.source=o,r!=null&&(i.source.input=e[r])}if(i.type==="root")return new ba(i);if(i.type==="decl")return new ga(i);if(i.type==="rule")return new Aa(i);if(i.type==="comment")return new xa(i);if(i.type==="atrule")return new ha(i);throw new Error("Unknown node type: "+t.type)}Hr.exports=Lt;Lt.default=Lt});var jn=te((rd,Gr)=>{"use strict";var{dirname:Yt,relative:Ur,resolve:Vr,sep:zr}=$t(),{SourceMapConsumer:jr,SourceMapGenerator:Zt}=Kt(),{pathToFileURL:qr}=In(),Ea=vt(),Fa=!!(jr&&Zt),wa=!!(Yt&&Vr&&Ur&&zr),zn=class{constructor(e,n,i,r){this.stringify=e,this.mapOpts=i.map||{},this.root=n,this.opts=i,this.css=r,this.originalCSS=r,this.usesFileUrls=!this.mapOpts.from&&this.mapOpts.absolute,this.memoizedFileURLs=new Map,this.memoizedPaths=new Map,this.memoizedURLs=new Map}addAnnotation(){let e;this.isInline()?e="data:application/json;base64,"+this.toBase64(this.map.toString()):typeof this.mapOpts.annotation=="string"?e=this.mapOpts.annotation:typeof this.mapOpts.annotation=="function"?e=this.mapOpts.annotation(this.opts.to,this.root):e=this.outputFile()+".map";let n=`\n`;this.css.includes(`\\r\n`)&&(n=`\\r\n`),this.css+=n+"/*# sourceMappingURL="+e+" */"}applyPrevMaps(){for(let e of this.previous()){let n=this.toUrl(this.path(e.file)),i=e.root||Yt(e.file),r;this.mapOpts.sourcesContent===!1?(r=new jr(e.text),r.sourcesContent&&(r.sourcesContent=null)):r=e.consumer(),this.map.applySourceMap(r,n,this.toUrl(this.path(i)))}}clearAnnotation(){if(this.mapOpts.annotation!==!1){if(this.root){let e;for(let n=this.root.nodes.length-1;n>=0;n--)e=this.root.nodes[n],e.type==="comment"&&e.text.startsWith("# sourceMappingURL=")&&this.root.removeChild(n)}else if(this.css){let e;for(;(e=this.css.lastIndexOf("/*#"))!==-1;){let n=this.css.indexOf("*/",e+3);if(n===-1)break;for(;e>0&&this.css[e-1]===`\n`;)e--;this.css=this.css.slice(0,e)+this.css.slice(n+2)}}}}generate(){if(this.clearAnnotation(),wa&&Fa&&this.isMap())return this.generateMap();{let e="";return this.stringify(this.root,n=>{e+=n}),[e]}}generateMap(){if(this.root)this.generateString();else if(this.previous().length===1){let e=this.previous()[0].consumer();e.file=this.outputFile(),this.map=Zt.fromSourceMap(e,{ignoreInvalidMapping:!0})}else this.map=new Zt({file:this.outputFile(),ignoreInvalidMapping:!0}),this.map.addMapping({generated:{column:0,line:1},original:{column:0,line:1},source:this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>"});return this.isSourcesContent()&&this.setSourcesContent(),this.root&&this.previous().length>0&&this.applyPrevMaps(),this.isAnnotation()&&this.addAnnotation(),this.isInline()?[this.css]:[this.css,this.map]}generateString(){this.css="",this.map=new Zt({file:this.outputFile(),ignoreInvalidMapping:!0});let e=1,n=1,i="<no source>",r={generated:{column:0,line:0},original:{column:0,line:0},source:""},o,s;this.stringify(this.root,(l,a,c)=>{if(this.css+=l,a&&c!=="end"&&(r.generated.line=e,r.generated.column=n-1,a.source&&a.source.start?(r.source=this.sourcePath(a),r.original.line=a.source.start.line,r.original.column=a.source.start.column-1,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,this.map.addMapping(r))),s=l.match(/\\n/g),s?(e+=s.length,o=l.lastIndexOf(`\n`),n=l.length-o):n+=l.length,a&&c!=="start"){let u=a.parent||{raws:{}};(!(a.type==="decl"||a.type==="atrule"&&!a.nodes)||a!==u.last||u.raws.semicolon)&&(a.source&&a.source.end?(r.source=this.sourcePath(a),r.original.line=a.source.end.line,r.original.column=a.source.end.column-1,r.generated.line=e,r.generated.column=n-2,this.map.addMapping(r)):(r.source=i,r.original.line=1,r.original.column=0,r.generated.line=e,r.generated.column=n-1,this.map.addMapping(r)))}})}isAnnotation(){return this.isInline()?!0:typeof this.mapOpts.annotation<"u"?this.mapOpts.annotation:this.previous().length?this.previous().some(e=>e.annotation):!0}isInline(){if(typeof this.mapOpts.inline<"u")return this.mapOpts.inline;let e=this.mapOpts.annotation;return typeof e<"u"&&e!==!0?!1:this.previous().length?this.previous().some(n=>n.inline):!0}isMap(){return typeof this.opts.map<"u"?!!this.opts.map:this.previous().length>0}isSourcesContent(){return typeof this.mapOpts.sourcesContent<"u"?this.mapOpts.sourcesContent:this.previous().length?this.previous().some(e=>e.withContent()):!0}outputFile(){return this.opts.to?this.path(this.opts.to):this.opts.from?this.path(this.opts.from):"to.css"}path(e){if(this.mapOpts.absolute||e.charCodeAt(0)===60||/^\\w+:\\/\\//.test(e))return e;let n=this.memoizedPaths.get(e);if(n)return n;let i=this.opts.to?Yt(this.opts.to):".";typeof this.mapOpts.annotation=="string"&&(i=Yt(Vr(i,this.mapOpts.annotation)));let r=Ur(i,e);return this.memoizedPaths.set(e,r),r}previous(){if(!this.previousMaps)if(this.previousMaps=[],this.root)this.root.walk(e=>{if(e.source&&e.source.input.map){let n=e.source.input.map;this.previousMaps.includes(n)||this.previousMaps.push(n)}});else{let e=new Ea(this.originalCSS,this.opts);e.map&&this.previousMaps.push(e.map)}return this.previousMaps}setSourcesContent(){let e={};if(this.root)this.root.walk(n=>{if(n.source){let i=n.source.input.from;if(i&&!e[i]){e[i]=!0;let r=this.usesFileUrls?this.toFileUrl(i):this.toUrl(this.path(i));this.map.setSourceContent(r,n.source.input.css)}}});else if(this.css){let n=this.opts.from?this.toUrl(this.path(this.opts.from)):"<no source>";this.map.setSourceContent(n,this.css)}}sourcePath(e){return this.mapOpts.from?this.toUrl(this.mapOpts.from):this.usesFileUrls?this.toFileUrl(e.source.input.from):this.toUrl(this.path(e.source.input.from))}toBase64(e){return Buffer?Buffer.from(e).toString("base64"):window.btoa(unescape(encodeURIComponent(e)))}toFileUrl(e){let n=this.memoizedFileURLs.get(e);if(n)return n;if(qr){let i=qr(e).toString();return this.memoizedFileURLs.set(e,i),i}else throw new Error("`map.absolute` option is not available in this PostCSS build")}toUrl(e){let n=this.memoizedURLs.get(e);if(n)return n;zr==="\\\\"&&(e=e.replace(/\\\\/g,"/"));let i=encodeURI(e).replace(/[#?]/g,encodeURIComponent);return this.memoizedURLs.set(e,i),i}};Gr.exports=zn});var Jr=te((od,Kr)=>{"use strict";var Xt=/[\\t\\n\\f\\r "#\'()/;[\\\\\\]{}]/g,en=/[\\t\\n\\f\\r !"#\'():;@[\\\\\\]{}]|\\/(?=\\*)/g,Na=/.[\\r\\n"\'(/\\\\]/,$r=/[\\da-f]/i;Kr.exports=function(e,n={}){let i=e.css.valueOf(),r=n.ignoreErrors,o,s,l,a,c,u,h,f,x,F,E=i.length,S=0,D=[],L=[],R=-1;function ne(){return S}function q(N){throw e.error("Unclosed "+N,S)}function C(){return L.length===0&&S>=E}function g(N){if(L.length)return L.pop();if(S>=E)return;let w=N?N.ignoreUnclosed:!1;switch(o=i.charCodeAt(S),o){case 10:case 32:case 9:case 13:case 12:{a=S;do a+=1,o=i.charCodeAt(a);while(o===32||o===10||o===9||o===13||o===12);u=["space",i.slice(S,a)],S=a-1;break}case 91:case 93:case 123:case 125:case 58:case 59:case 41:{let _=String.fromCharCode(o);u=[_,_,S];break}case 40:{if(F=D.length?D.pop()[1]:"",x=i.charCodeAt(S+1),F==="url"&&x!==39&&x!==34&&x!==32&&x!==10&&x!==9&&x!==12&&x!==13){a=S;do{if(h=!1,a=i.indexOf(")",a+1),a===-1)if(r||w){a=S;break}else q("bracket");for(f=a;i.charCodeAt(f-1)===92;)f-=1,h=!h}while(h);u=["brackets",i.slice(S,a+1),S,a],S=a}else S<=R?u=["(","(",S]:(a=i.indexOf(")",S+1),s=i.slice(S,a+1),a===-1||Na.test(s)?(R=a===-1?E:a,u=["(","(",S]):(u=["brackets",s,S,a],S=a));break}case 39:case 34:{c=o===39?"\'":\'"\',a=S;do{if(h=!1,a=i.indexOf(c,a+1),a===-1)if(r||w){a=S+1;break}else q("string");for(f=a;i.charCodeAt(f-1)===92;)f-=1,h=!h}while(h);u=["string",i.slice(S,a+1),S,a],S=a;break}case 64:{Xt.lastIndex=S+1,Xt.test(i),Xt.lastIndex===0?a=i.length-1:a=Xt.lastIndex-2,u=["at-word",i.slice(S,a+1),S,a],S=a;break}case 92:{for(a=S,l=!0;i.charCodeAt(a+1)===92;)a+=1,l=!l;if(o=i.charCodeAt(a+1),l&&o!==47&&o!==32&&o!==10&&o!==9&&o!==13&&o!==12&&(a+=1,$r.test(i.charAt(a)))){for(;$r.test(i.charAt(a+1));)a+=1;i.charCodeAt(a+1)===32&&(a+=1)}u=["word",i.slice(S,a+1),S,a],S=a;break}default:{o===47&&i.charCodeAt(S+1)===42?(a=i.indexOf("*/",S+2)+1,a===0&&(r||w?a=i.length:q("comment")),u=["comment",i.slice(S,a+1),S,a],S=a):(en.lastIndex=S+1,en.test(i),en.lastIndex===0?a=i.length-1:a=en.lastIndex-2,u=["word",i.slice(S,a+1),S,a],D.push(u),S=a);break}}return S++,u}function b(N){L.push(N)}return{back:b,endOfFile:C,nextToken:g,position:ne}}});var Xr=te((sd,Zr)=>{"use strict";var Ca=jt(),Ma=Mt(),Ta=kt(),ka=rt(),Qr=Qt(),_a=Jr(),Yr={empty:!0,space:!0};function va(t){for(let e=t.length-1;e>=0;e--){let n=t[e],i=n[3]||n[2];if(i)return i}}var Gn=class{constructor(e){this.input=e,this.root=new ka,this.current=this.root,this.spaces="",this.semicolon=!1,this.createTokenizer(),this.root.source={input:e,start:{column:1,line:1,offset:0}}}atrule(e){let n=new Ca;n.name=e[1].slice(1),n.name===""&&this.unnamedAtrule(n,e),this.init(n,e[2]);let i,r,o,s=!1,l=!1,a=[],c=[];for(;!this.tokenizer.endOfFile();){if(e=this.tokenizer.nextToken(),i=e[0],i==="("||i==="["?c.push(i==="("?")":"]"):i==="{"&&c.length>0?c.push("}"):i===c[c.length-1]&&c.pop(),c.length===0)if(i===";"){n.source.end=this.getPosition(e[2]),n.source.end.offset++,this.semicolon=!0;break}else if(i==="{"){l=!0;break}else if(i==="}"){if(a.length>0){for(o=a.length-1,r=a[o];r&&r[0]==="space";)r=a[--o];r&&(n.source.end=this.getPosition(r[3]||r[2]),n.source.end.offset++)}this.end(e);break}else a.push(e);else a.push(e);if(this.tokenizer.endOfFile()){s=!0;break}}n.raws.between=this.spacesAndCommentsFromEnd(a),a.length?(n.raws.afterName=this.spacesAndCommentsFromStart(a),this.raw(n,"params",a),s&&(e=a[a.length-1],n.source.end=this.getPosition(e[3]||e[2]),n.source.end.offset++,this.spaces=n.raws.between,n.raws.between="")):(n.raws.afterName="",n.params=""),l&&(n.nodes=[],this.current=n)}checkMissedSemicolon(e){let n=this.colon(e);if(n===!1)return;let i=0,r;for(let o=n-1;o>=0&&(r=e[o],!(r[0]!=="space"&&(i+=1,i===2)));o--);throw this.input.error("Missed semicolon",r[0]==="word"?r[3]+1:r[2])}colon(e){let n=0,i,r,o;for(let[s,l]of e.entries()){if(r=l,o=r[0],o==="("&&(n+=1),o===")"&&(n-=1),n===0&&o===":")if(!i)this.doubleColon(r);else{if(i[0]==="word"&&i[1]==="progid")continue;return s}i=r}return!1}comment(e){let n=new Ma;this.init(n,e[2]),n.source.end=this.getPosition(e[3]||e[2]),n.source.end.offset++;let i=e[1].slice(2,-2);if(!i.trim())n.text="",n.raws.left=i,n.raws.right="";else{let r=i.match(/^(\\s*)([^]*\\S)(\\s*)$/);n.text=r[2],n.raws.left=r[1],n.raws.right=r[3]}}createTokenizer(){this.tokenizer=_a(this.input)}decl(e,n){let i=new Ta;this.init(i,e[0][2]);let r=e[e.length-1];for(r[0]===";"&&(this.semicolon=!0,e.pop()),i.source.end=this.getPosition(r[3]||r[2]||va(e)),i.source.end.offset++;e[0][0]!=="word";)e.length===1&&this.unknownWord(e),i.raws.before+=e.shift()[1];for(i.source.start=this.getPosition(e[0][2]),i.prop="";e.length;){let c=e[0][0];if(c===":"||c==="space"||c==="comment")break;i.prop+=e.shift()[1]}i.raws.between="";let o;for(;e.length;)if(o=e.shift(),o[0]===":"){i.raws.between+=o[1];break}else o[0]==="word"&&/\\w/.test(o[1])&&this.unknownWord([o]),i.raws.between+=o[1];(i.prop[0]==="_"||i.prop[0]==="*")&&(i.raws.before+=i.prop[0],i.prop=i.prop.slice(1));let s=[],l;for(;e.length&&(l=e[0][0],!(l!=="space"&&l!=="comment"));)s.push(e.shift());this.precheckMissedSemicolon(e);for(let c=e.length-1;c>=0;c--){if(o=e[c],o[1].toLowerCase()==="!important"){i.important=!0;let u=this.stringFrom(e,c);u=this.spacesFromEnd(e)+u,u!==" !important"&&(i.raws.important=u);break}else if(o[1].toLowerCase()==="important"){let u=e.slice(0),h="";for(let f=c;f>0;f--){let x=u[f][0];if(h.trim().startsWith("!")&&x!=="space")break;h=u.pop()[1]+h}h.trim().startsWith("!")&&(i.important=!0,i.raws.important=h,e=u)}if(o[0]!=="space"&&o[0]!=="comment")break}e.some(c=>c[0]!=="space"&&c[0]!=="comment")&&(i.raws.between+=s.map(c=>c[1]).join(""),s=[]),this.raw(i,"value",s.concat(e),n),i.value.includes(":")&&!n&&this.checkMissedSemicolon(e)}doubleColon(e){throw this.input.error("Double colon",{offset:e[2]},{offset:e[2]+e[1].length})}emptyRule(e){let n=new Qr;this.init(n,e[2]),n.selector="",n.raws.between="",this.current=n}end(e){this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.semicolon=!1,this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.spaces="",this.current.parent?(this.current.source.end=this.getPosition(e[2]),this.current.source.end.offset++,this.current=this.current.parent):this.unexpectedClose(e)}endFile(){this.current.parent&&this.unclosedBlock(),this.current.nodes&&this.current.nodes.length&&(this.current.raws.semicolon=this.semicolon),this.current.raws.after=(this.current.raws.after||"")+this.spaces,this.root.source.end=this.getPosition(this.tokenizer.position())}freeSemicolon(e){if(this.spaces+=e[1],this.current.nodes){let n=this.current.nodes[this.current.nodes.length-1];n&&n.type==="rule"&&!n.raws.ownSemicolon&&(n.raws.ownSemicolon=this.spaces,this.spaces="",n.source.end=this.getPosition(e[2]),n.source.end.offset+=n.raws.ownSemicolon.length)}}getPosition(e){let n=this.input.fromOffset(e);return{column:n.col,line:n.line,offset:e}}init(e,n){this.current.push(e),e.source={input:this.input,start:this.getPosition(n)},e.raws.before=this.spaces,this.spaces="",e.type!=="comment"&&(this.semicolon=!1)}other(e){let n=!1,i=null,r=!1,o=null,s=[],l=e[1].startsWith("--"),a=[],c=e;for(;c;){if(i=c[0],a.push(c),i==="("||i==="[")o||(o=c),s.push(i==="("?")":"]");else if(l&&r&&i==="{")o||(o=c),s.push("}");else if(s.length===0)if(i===";")if(r){this.decl(a,l);return}else break;else if(i==="{"){this.rule(a);return}else if(i==="}"){this.tokenizer.back(a.pop()),n=!0;break}else i===":"&&(r=!0);else i===s[s.length-1]&&(s.pop(),s.length===0&&(o=null));c=this.tokenizer.nextToken()}if(this.tokenizer.endOfFile()&&(n=!0),s.length>0&&this.unclosedBracket(o),n&&r){if(!l)for(;a.length&&(c=a[a.length-1][0],!(c!=="space"&&c!=="comment"));)this.tokenizer.back(a.pop());this.decl(a,l)}else this.unknownWord(a)}parse(){let e;for(;!this.tokenizer.endOfFile();)switch(e=this.tokenizer.nextToken(),e[0]){case"space":this.spaces+=e[1];break;case";":this.freeSemicolon(e);break;case"}":this.end(e);break;case"comment":this.comment(e);break;case"at-word":this.atrule(e);break;case"{":this.emptyRule(e);break;default:this.other(e);break}this.endFile()}precheckMissedSemicolon(){}raw(e,n,i,r){let o,s,l=i.length,a="",c=!0,u,h;for(let f=0;f<l;f+=1)o=i[f],s=o[0],s==="space"&&f===l-1&&!r?c=!1:s==="comment"?(h=i[f-1]?i[f-1][0]:"empty",u=i[f+1]?i[f+1][0]:"empty",!Yr[h]&&!Yr[u]?a.slice(-1)===","?c=!1:a+=o[1]:c=!1):a+=o[1];if(!c){let f=i.reduce((x,F)=>x+F[1],"");e.raws[n]={raw:f,value:a}}e[n]=a}rule(e){e.pop();let n=new Qr;this.init(n,e[0][2]),n.raws.between=this.spacesAndCommentsFromEnd(e),this.raw(n,"selector",e),this.current=n}spacesAndCommentsFromEnd(e){let n,i="";for(;e.length&&(n=e[e.length-1][0],!(n!=="space"&&n!=="comment"));)i=e.pop()[1]+i;return i}spacesAndCommentsFromStart(e){let n,i="";for(;e.length&&(n=e[0][0],!(n!=="space"&&n!=="comment"));)i+=e.shift()[1];return i}spacesFromEnd(e){let n,i="";for(;e.length&&(n=e[e.length-1][0],n==="space");)i=e.pop()[1]+i;return i}stringFrom(e,n){let i="";for(let r=n;r<e.length;r++)i+=e[r][1];return e.splice(n,e.length-n),i}unclosedBlock(){let e=this.current.source.start;throw this.input.error("Unclosed block",e.line,e.column)}unclosedBracket(e){throw this.input.error("Unclosed bracket",{offset:e[2]},{offset:e[2]+1})}unexpectedClose(e){throw this.input.error("Unexpected }",{offset:e[2]},{offset:e[2]+1})}unknownWord(e){throw this.input.error("Unknown word "+e[0][1],{offset:e[0][2]},{offset:e[0][2]+e[0][1].length})}unnamedAtrule(e,n){throw this.input.error("At-rule without name",{offset:n[2]},{offset:n[2]+n[1].length})}};Zr.exports=Gn});var nn=te((ad,eo)=>{"use strict";var Ra=Ve(),La=vt(),Da=Xr();function tn(t,e){let n=new La(t,e),i=new Da(n);try{i.parse()}catch(r){throw r}return i.root}eo.exports=tn;tn.default=tn;Ra.registerParse(tn)});var $n=te((ld,to)=>{"use strict";var Dt=class{constructor(e,n={}){if(this.type="warning",this.text=e,n.node&&n.node.source){let i=n.node.rangeBy(n);this.line=i.start.line,this.column=i.start.column,this.endLine=i.end.line,this.endColumn=i.end.column}for(let i in n)this[i]=n[i]}toString(){return this.node?this.node.error(this.text,{index:this.index,plugin:this.plugin,word:this.word}).message:this.plugin?this.plugin+": "+this.text:this.text}};to.exports=Dt;Dt.default=Dt});var rn=te((ud,no)=>{"use strict";var Ba=$n(),Bt=class{get content(){return this.css}constructor(e,n,i){this.processor=e,this.messages=[],this.root=n,this.opts=i,this.css="",this.map=void 0}toString(){return this.css}warn(e,n={}){n.plugin||this.lastPlugin&&this.lastPlugin.postcssPlugin&&(n.plugin=this.lastPlugin.postcssPlugin);let i=new Ba(e,n);return this.messages.push(i),i}warnings(){return this.messages.filter(e=>e.type==="warning")}};no.exports=Bt;Bt.default=Bt});var Kn=te((cd,ro)=>{"use strict";var io={};ro.exports=function(e){io[e]||(io[e]=!0,typeof console<"u"&&console.warn&&console.warn(e))}});var Yn=te((fd,lo)=>{"use strict";var Ia=Ve(),Oa=Gt(),Pa=jn(),Ha=nn(),oo=rn(),Wa=rt(),qa=Et(),{isClean:De,my:Ua}=zt(),dd=Kn(),Va={atrule:"AtRule",comment:"Comment",decl:"Declaration",document:"Document",root:"Root",rule:"Rule"},za={AtRule:!0,AtRuleExit:!0,Comment:!0,CommentExit:!0,Declaration:!0,DeclarationExit:!0,Document:!0,DocumentExit:!0,Once:!0,OnceExit:!0,postcssPlugin:!0,prepare:!0,Root:!0,RootExit:!0,Rule:!0,RuleExit:!0},ja={Once:!0,postcssPlugin:!0,prepare:!0},st=0;function It(t){return typeof t=="object"&&typeof t.then=="function"}function ao(t){let e=!1,n=Va[t.type];return t.type==="decl"?e=t.prop.toLowerCase():t.type==="atrule"&&(e=t.name.toLowerCase()),e&&t.append?[n,n+"-"+e,st,n+"Exit",n+"Exit-"+e]:e?[n,n+"-"+e,n+"Exit",n+"Exit-"+e]:t.append?[n,st,n+"Exit"]:[n,n+"Exit"]}function so(t){let e;return t.type==="document"?e=["Document",st,"DocumentExit"]:t.type==="root"?e=["Root",st,"RootExit"]:e=ao(t),{eventIndex:0,events:e,iterator:0,node:t,visitorIndex:0,visitors:[]}}function Jn(t){return t[De]=!1,t.nodes&&t.nodes.forEach(e=>Jn(e)),t}var Qn={},je=class t{get content(){return this.stringify().content}get css(){return this.stringify().css}get map(){return this.stringify().map}get messages(){return this.sync().messages}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){return this.sync().root}get[Symbol.toStringTag](){return"LazyResult"}constructor(e,n,i){this.stringified=!1,this.processed=!1;let r;if(typeof n=="object"&&n!==null&&(n.type==="root"||n.type==="document"))r=Jn(n);else if(n instanceof t||n instanceof oo)r=Jn(n.root),n.map&&(typeof i.map>"u"&&(i.map={}),i.map.inline||(i.map.inline=!1),i.map.prev=n.map);else{let o=Ha;i.syntax&&(o=i.syntax.parse),i.parser&&(o=i.parser),o.parse&&(o=o.parse);try{r=o(n,i)}catch(s){this.processed=!0,this.error=s}r&&!r[Ua]&&Ia.rebuild(r)}this.result=new oo(e,r,i),this.helpers={...Qn,postcss:Qn,result:this.result},this.plugins=this.processor.plugins.map(o=>typeof o=="object"&&o.prepare?{...o,...o.prepare(this.result)}:o)}async(){return this.error?Promise.reject(this.error):this.processed?Promise.resolve(this.result):(this.processing||(this.processing=this.runAsync()),this.processing)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}getAsyncError(){throw new Error("Use process(css).then(cb) to work with async plugins")}handleError(e,n){let i=this.result.lastPlugin;try{n&&n.addToError(e),this.error=e,e.name==="CssSyntaxError"&&!e.plugin?(e.plugin=i.postcssPlugin,e.setMessage()):i.postcssVersion}catch(r){console&&console.error&&console.error(r)}return e}prepareVisitors(){this.listeners={};let e=(n,i,r)=>{this.listeners[i]||(this.listeners[i]=[]),this.listeners[i].push([n,r])};for(let n of this.plugins)if(typeof n=="object")for(let i in n){if(!za[i]&&/^[A-Z]/.test(i))throw new Error(`Unknown event ${i} in ${n.postcssPlugin}. Try to update PostCSS (${this.processor.version} now).`);if(!ja[i])if(typeof n[i]=="object")for(let r in n[i])r==="*"?e(n,i,n[i][r]):e(n,i+"-"+r.toLowerCase(),n[i][r]);else typeof n[i]=="function"&&e(n,i,n[i])}this.hasListener=Object.keys(this.listeners).length>0}async runAsync(){this.plugin=0;for(let e=0;e<this.plugins.length;e++){let n=this.plugins[e],i=this.runOnRoot(n);if(It(i))try{await i}catch(r){throw this.handleError(r)}}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[De];){e[De]=!0;let n=[so(e)];for(;n.length>0;){let i=this.visitTick(n);if(It(i))try{await i}catch(r){let o=n[n.length-1].node;throw this.handleError(r,o)}}}if(this.listeners.OnceExit)for(let[n,i]of this.listeners.OnceExit){this.result.lastPlugin=n;try{if(e.type==="document"){let r=e.nodes.map(o=>i(o,this.helpers));await Promise.all(r)}else await i(e,this.helpers)}catch(r){throw this.handleError(r)}}}return this.processed=!0,this.stringify()}runOnRoot(e){this.result.lastPlugin=e;try{if(typeof e=="object"&&e.Once){if(this.result.root.type==="document"){let n=this.result.root.nodes.map(i=>e.Once(i,this.helpers));return It(n[0])?Promise.all(n):n}return e.Once(this.result.root,this.helpers)}else if(typeof e=="function")return e(this.result.root,this.result)}catch(n){throw this.handleError(n)}}stringify(){if(this.error)throw this.error;if(this.stringified)return this.result;this.stringified=!0,this.sync();let e=this.result.opts,n=qa;e.syntax&&(n=e.syntax.stringify),e.stringifier&&(n=e.stringifier),n.stringify&&(n=n.stringify);let i=this.result.root.source;if(e.map===void 0&&!(i&&i.input&&i.input.map)){let s="";return n(this.result.root,l=>{s+=l}),this.result.css=s,this.result}let o=new Pa(n,this.result.root,this.result.opts).generate();return this.result.css=o[0],this.result.map=o[1],this.result}sync(){if(this.error)throw this.error;if(this.processed)return this.result;if(this.processed=!0,this.processing)throw this.getAsyncError();for(let e of this.plugins){let n=this.runOnRoot(e);if(It(n))throw this.getAsyncError()}if(this.prepareVisitors(),this.hasListener){let e=this.result.root;for(;!e[De];)e[De]=!0,this.walkSync(e);if(this.listeners.OnceExit)if(e.type==="document")for(let n of e.nodes)this.visitSync(this.listeners.OnceExit,n);else this.visitSync(this.listeners.OnceExit,e)}return this.result}then(e,n){return this.async().then(e,n)}toString(){return this.css}visitSync(e,n){for(let[i,r]of e){this.result.lastPlugin=i;let o;try{o=r(n,this.helpers)}catch(s){throw this.handleError(s,n.proxyOf)}if(n.type!=="root"&&n.type!=="document"&&!n.parent)return!0;if(It(o))throw this.getAsyncError()}}visitTick(e){let n=e[e.length-1],{node:i,visitors:r}=n;if(i.type!=="root"&&i.type!=="document"&&!i.parent){e.pop();return}if(r.length>0&&n.visitorIndex<r.length){let[s,l]=r[n.visitorIndex];n.visitorIndex+=1,n.visitorIndex===r.length&&(n.visitors=[],n.visitorIndex=0),this.result.lastPlugin=s;try{return l(i.toProxy(),this.helpers)}catch(a){throw this.handleError(a,i)}}if(n.iterator!==0){let s=n.iterator,l;for(;l=i.nodes[i.indexes[s]];)if(i.indexes[s]+=1,!l[De]){l[De]=!0,e.push(so(l));return}n.iterator=0,delete i.indexes[s]}let o=n.events;for(;n.eventIndex<o.length;){let s=o[n.eventIndex];if(n.eventIndex+=1,s===st){i.nodes&&i.nodes.length&&(i[De]=!0,n.iterator=i.getIterator());return}else if(this.listeners[s]){n.visitors=this.listeners[s];return}}e.pop()}walkSync(e){e[De]=!0;let n=ao(e);for(let i of n)if(i===st)e.nodes&&e.each(r=>{r[De]||this.walkSync(r)});else{let r=this.listeners[i];if(r&&this.visitSync(r,e.toProxy()))return}}warnings(){return this.sync().warnings()}};je.registerPostcss=t=>{Qn=t};lo.exports=je;je.default=je;Wa.registerLazyResult(je);Oa.registerLazyResult(je)});var co=te((pd,uo)=>{"use strict";var Ga=jn(),$a=nn(),Ka=rn(),Ja=Et(),md=Kn(),Ot=class{get content(){return this.result.css}get css(){return this.result.css}get map(){return this.result.map}get messages(){return[]}get opts(){return this.result.opts}get processor(){return this.result.processor}get root(){if(this._root)return this._root;let e,n=$a;try{e=n(this._css,this._opts)}catch(i){this.error=i}if(this.error)throw this.error;return this._root=e,e}get[Symbol.toStringTag](){return"NoWorkResult"}constructor(e,n,i){n=n.toString(),this.stringified=!1,this._processor=e,this._css=n,this._opts=i,this._map=void 0;let r=Ja;this.result=new Ka(this._processor,void 0,this._opts),this.result.css=n;let o=this;Object.defineProperty(this.result,"root",{get(){return o.root}});let s=new Ga(r,void 0,this._opts,n);if(s.isMap()){let[l,a]=s.generate();l&&(this.result.css=l),a&&(this.result.map=a)}else s.clearAnnotation(),this.result.css=s.css}async(){return this.error?Promise.reject(this.error):Promise.resolve(this.result)}catch(e){return this.async().catch(e)}finally(e){return this.async().then(e,e)}sync(){if(this.error)throw this.error;return this.result}then(e,n){return this.async().then(e,n)}toString(){return this._css}warnings(){return[]}};uo.exports=Ot;Ot.default=Ot});var mo=te((hd,fo)=>{"use strict";var Qa=Gt(),Ya=Yn(),Za=co(),Xa=rt(),Ze=class{constructor(e=[]){this.version="8.5.14",this.plugins=this.normalize(e)}normalize(e){let n=[];for(let i of e)if(i.postcss===!0?i=i():i.postcss&&(i=i.postcss),typeof i=="object"&&Array.isArray(i.plugins))n=n.concat(i.plugins);else if(typeof i=="object"&&i.postcssPlugin)n.push(i);else if(typeof i=="function")n.push(i);else if(!(typeof i=="object"&&(i.parse||i.stringify)))throw new Error(i+" is not a PostCSS plugin");return n}process(e,n={}){return!this.plugins.length&&!n.parser&&!n.stringifier&&!n.syntax?new Za(this,e,n):new Ya(this,e,n)}use(e){return this.plugins=this.plugins.concat(this.normalize([e])),this}};fo.exports=Ze;Ze.default=Ze;Xa.registerProcessor(Ze);Qa.registerProcessor(Ze)});var Ao=te((xd,bo)=>{"use strict";var po=jt(),ho=Mt(),el=Ve(),tl=Vt(),xo=kt(),go=Gt(),nl=Wr(),il=vt(),rl=Yn(),ol=Vn(),sl=Nt(),al=nn(),Zn=mo(),ll=rn(),yo=rt(),So=Qt(),ul=Et(),cl=$n();function re(...t){return t.length===1&&Array.isArray(t[0])&&(t=t[0]),new Zn(t)}re.plugin=function(e,n){let i=!1;function r(...s){console&&console.warn&&!i&&(i=!0,console.warn(e+`: postcss.plugin was deprecated. Migration guide:\nhttps://evilmartians.com/chronicles/postcss-8-plugin-migration`),process.env.LANG&&process.env.LANG.startsWith("cn")&&console.warn(e+`: \\u91CC\\u9762 postcss.plugin \\u88AB\\u5F03\\u7528. \\u8FC1\\u79FB\\u6307\\u5357:\nhttps://www.w3ctech.com/topic/2226`));let l=n(...s);return l.postcssPlugin=e,l.postcssVersion=new Zn().version,l}let o;return Object.defineProperty(r,"postcss",{get(){return o||(o=r()),o}}),r.process=function(s,l,a){return re([r(a)]).process(s,l)},r};re.stringify=ul;re.parse=al;re.fromJSON=nl;re.list=ol;re.comment=t=>new ho(t);re.atRule=t=>new po(t);re.decl=t=>new xo(t);re.rule=t=>new So(t);re.root=t=>new yo(t);re.document=t=>new go(t);re.CssSyntaxError=tl;re.Declaration=xo;re.Container=el;re.Processor=Zn;re.Document=go;re.Comment=ho;re.Warning=cl;re.AtRule=po;re.Result=ll;re.Input=il;re.Rule=So;re.Root=yo;re.Node=sl;rl.registerPostcss(re);bo.exports=re;re.default=re});function Ei(){return globalThis}function v(t,e){if(typeof window>"u")return;let n=Ei(),i=n.__hf?.onSwallowed;if(i)try{i({label:t,error:e})}catch(r){}(n.__hfDebug||n.__HYPERFRAMES_DEBUG)&&console.debug(`[hyperframes] ${t} swallowed:`,e)}function Ee(t){try{window.parent.postMessage(t,"*")}catch(e){v("bridge.postMessage",e)}}function Fi(t){let e=n=>{let i=n.data;if(!i||i.source!=="hf-parent"||i.type!=="control")return;let r=i.action;if(r==="play"){t.onPlay();return}if(r==="pause"){t.onPause();return}if(r==="seek"){t.onSeek(Number(i.frame??0),i.seekMode??"commit");return}if(r==="tick"){t.onTick();return}if(r==="set-muted"){t.onSetMuted(!!i.muted);return}if(r==="set-volume"){t.onSetVolume(Math.max(0,Math.min(1,Number(i.volume??1))));return}if(r==="set-media-output-muted"){t.onSetMediaOutputMuted(!!i.muted);return}if(r==="set-playback-rate"){t.onSetPlaybackRate(Number(i.playbackRate??1));return}if(r==="enable-pick-mode"){t.onEnablePickMode();return}if(r==="disable-pick-mode"){t.onDisablePickMode();return}if(r==="flash-elements"){let o=i.selectors,s=i.duration||800;o&&Fs(o,s)}};return window.addEventListener("message",e),Ee({source:"hf-preview",type:"ready"}),e}function Fs(t,e){if(!document.getElementById("__hf-flash-styles")){let n=document.createElement("style");n.id="__hf-flash-styles",n.textContent=`\n .__hf-flash {\n outline: 2px solid rgba(59, 130, 246, 0.6) !important;\n outline-offset: 2px !important;\n animation: __hf-flash-pulse ${e}ms ease-out forwards !important;\n }\n @keyframes __hf-flash-pulse {\n 0% { outline-color: rgba(59, 130, 246, 0.8); }\n 100% { outline-color: transparent; }\n }\n `,document.head.appendChild(n)}for(let n of t)try{document.querySelectorAll(n).forEach(r=>{r.classList.add("__hf-flash"),setTimeout(()=>r.classList.remove("__hf-flash"),e)})}catch(i){v("bridge.flashElements.querySelector",i)}}var An=null;function wi(t){An=t}function ft(t,e){if(An)try{An({source:"hf-preview",type:"analytics",event:t,properties:e??{}})}catch(n){v("runtime.analytics.site1",n)}}function Ni(t){let e=[],n=l=>{if(typeof l.getAnimations!="function")return[];try{return l.getAnimations()}catch{return[]}},i=(l,a)=>{for(let c of l){try{c.currentTime=a}catch(u){v("runtime.adapters.css.site1",u)}try{c.pause()}catch(u){v("runtime.adapters.css.site2",u)}}},r=l=>{for(let a of l)try{a.play()}catch(c){v("runtime.adapters.css.site3",c)}},o=l=>{for(let a of l)try{a.pause()}catch(c){v("runtime.adapters.css.site4",c)}},s=l=>{l.baseDelay?l.el.style.animationDelay=l.baseDelay:l.el.style.removeProperty("animation-delay"),l.basePlayState?l.el.style.animationPlayState=l.basePlayState:l.el.style.removeProperty("animation-play-state")};return{name:"css",discover:()=>{e=[];let l=document.querySelectorAll("*");for(let a of l){if(!(a instanceof HTMLElement))continue;let c=window.getComputedStyle(a);!c.animationName||c.animationName==="none"||e.push({el:a,baseDelay:a.style.animationDelay||"",basePlayState:a.style.animationPlayState||""})}},seek:l=>{let a=Number(l.time)||0;for(let c of e){if(!c.el.isConnected)continue;let u=t?.resolveStartSeconds?t.resolveStartSeconds(c.el):Number.parseFloat(c.el.getAttribute("data-start")??"0")||0,h=Math.max(0,a-u)*1e3,f=n(c.el);if(f.length>0){i(f,h);continue}c.el.style.animationPlayState="paused",c.el.style.animationDelay=`-${(h/1e3).toFixed(3)}s`}},pause:()=>{for(let l of e){if(!l.el.isConnected)continue;let a=n(l.el);a.length>0&&o(a),s(l)}},play:()=>{for(let l of e)l.el.isConnected&&(s(l),r(n(l.el)))},revert:()=>{e=[]}}}function Ci(t){return{name:"gsap",discover:()=>{},seek:e=>{let n=t.getTimeline();if(!n)return;n.pause();let i=Math.max(0,Number(e.time)||0);typeof n.totalTime=="function"?(n.totalTime(i+.001,!0),n.totalTime(i,!1)):n.seek(i,!1)},pause:()=>{let e=t.getTimeline();e&&e.pause()}}}function Mi(){return{name:"animejs",discover:()=>{try{let t=window.anime;if(!t||typeof t.running>"u")return;let e=t.running;if(!Array.isArray(e)||e.length===0)return;let n=window.__hfAnime??[],i=new Set(n);for(let r of e)i.has(r)||n.push(r);window.__hfAnime=n}catch(t){v("runtime.adapters.animejs.site1",t)}},seek:t=>{let e=Math.max(0,(Number(t.time)||0)*1e3),n=window.__hfAnime;if(!(!n||n.length===0))for(let i of n)try{typeof i.seek=="function"&&i.seek(e)}catch(r){v("runtime.adapters.animejs.site2",r)}},pause:()=>{let t=window.__hfAnime;if(!(!t||t.length===0))for(let e of t)try{typeof e.pause=="function"&&e.pause()}catch(n){v("runtime.adapters.animejs.site3",n)}},play:()=>{let t=window.__hfAnime;if(!(!t||t.length===0))for(let e of t)try{typeof e.play=="function"&&e.play()}catch(n){v("runtime.adapters.animejs.site4",n)}},revert:()=>{}}}function _i(){return{name:"lottie",discover:()=>{try{let t=window.lottie;if(t&&typeof t.getRegisteredAnimations=="function"){let e=t.getRegisteredAnimations();if(Array.isArray(e)&&e.length>0){let n=window.__hfLottie??[],i=new Set(n);for(let r of e)i.has(r)||n.push(r);window.__hfLottie=n}}}catch(t){v("runtime.adapters.lottie.site1",t)}},seek:t=>{let e=Math.max(0,Number(t.time)||0),n=window.__hfLottie;if(!(!n||n.length===0))for(let i of n)try{if(Ti(i))i.goToAndStop(e*1e3,!1);else if(ki(i)){if(typeof i.setCurrentRawFrameValue=="function"){let r=i.totalFrames??0,o=i.frameRate??30,s=e*o;r>0&&i.setCurrentRawFrameValue(Math.min(s,r-1))}else if(typeof i.seek=="function"){let r=i.duration??1,o=Math.min(100,e/r*100);i.seek(o)}}}catch(r){v("runtime.adapters.lottie.site2",r)}},pause:()=>{let t=window.__hfLottie;if(!(!t||t.length===0))for(let e of t)try{(Ti(e)||ki(e))&&e.pause()}catch(n){v("runtime.adapters.lottie.site3",n)}},revert:()=>{}}}function Ti(t){return typeof t=="object"&&t!==null&&typeof t.goToAndStop=="function"}function ki(t){return typeof t=="object"&&t!==null&&typeof t.pause=="function"&&("totalFrames"in t||"duration"in t)}var En=-1;function Ut(t){if(t!==En){En=t;try{window.dispatchEvent(new CustomEvent("hf-seek",{detail:{time:t}}))}catch(e){v("runtime.adapters.seek-dispatch.site1",e)}}}function vi(t){En=t;try{window.dispatchEvent(new CustomEvent("hf-seek",{detail:{time:t}}))}catch(e){v("runtime.adapters.seek-dispatch.force",e)}}function Ri(){let t=null,e=0;return{name:"three",discover:()=>{},seek:n=>{t=Math.max(0,Number(n.time)||0),e=t,window.__hfThreeTime=t,Ut(t)},pause:()=>{t==null&&(t=Math.max(0,e))},play:()=>{t=null},revert:()=>{t=null,e=0}}}function Li(){let t=null,e=0;return{name:"typegpu",discover:()=>{},seek:n=>{t=Math.max(0,Number(n.time)||0),e=t,window.__hfTypegpuTime=t,Ut(t)},pause:()=>{t==null&&(t=Math.max(0,e))},play:()=>{t=null},revert:()=>{t=null,e=0}}}function Di(t){let e=t.nextElementSibling;if(e instanceof HTMLImageElement&&e.classList.contains("__render_frame__")&&e.complete&&e.naturalWidth>0)return e;if(t.id){let n=document.getElementById(`__render_frame_${t.id}__`);if(n instanceof HTMLImageElement&&n.complete&&n.naturalWidth>0)return n}return null}function Bi(){let t=globalThis.GPUQueue;if(!t?.prototype?.copyExternalImageToTexture)return;let e=t.prototype.copyExternalImageToTexture;t.prototype.copyExternalImageToTexture=function(n,i,r){if(n?.source instanceof HTMLVideoElement){let o=Di(n.source);if(o)return e.call(this,{...n,source:o},i,r)}return e.call(this,n,i,r)}}function Ii(){let t=[globalThis.WebGL2RenderingContext,globalThis.WebGLRenderingContext],e=["texImage2D","texSubImage2D"];for(let n of t){let i=n?.prototype;if(i)for(let r of e){let o=i[r];if(typeof o!="function"||o.__hfVideoPatched)continue;let s=function(...l){let a=l.length-1,c=l[a];if(c instanceof HTMLVideoElement){let u=Di(c);u&&(l[a]=u)}return o.apply(this,l)};s.__hfVideoPatched=!0,i[r]=s}}}function Oi(){let t=!1,e=0,n=new WeakMap,i=()=>{if(!document.getAnimations)return[];try{return document.getAnimations()}catch{return[]}},r=l=>{let a=Number(l.currentTime);return Number.isFinite(a)&&a>0?a:0},o=(l,a)=>a<=0?l:l>=a?Math.max(0,l-a):l,s=(l,a)=>{let c=n.get(l);if(c)return c;let u={compositionTimeMs:a,animationTimeMs:t?o(r(l),a):r(l)};return n.set(l,u),u};return{name:"waapi",discover:()=>{t=!0;for(let l of i())s(l,e)},seek:l=>{let a=Math.max(0,(Number(l.time)||0)*1e3);e=a;for(let c of i()){let u=t?s(c,a):s(c,0),h=u.animationTimeMs+Math.max(0,a-u.compositionTimeMs);try{c.currentTime=h}catch(f){v("runtime.adapters.waapi.site1",f)}try{c.pause()}catch(f){v("runtime.adapters.waapi.site2",f)}}},pause:()=>{if(document.getAnimations)for(let l of document.getAnimations())try{l.pause()}catch(a){v("runtime.adapters.waapi.site3",a)}}}}function Pi(t,e){if(t.length===0)return 1;let n=0;for(;n<t.length-2&&e>=t[n+1].time;)n+=1;let i=t[n],r=t[n+1]??i,o=r.time-i.time,s=o<=0?0:Math.min(1,Math.max(0,(e-i.time)/o));return i.volume+(r.volume-i.volume)*s}function ws(t,e,n,i){let r=Number.parseFloat(t.dataset.start??"0")||0,o=Number.parseFloat(t.dataset.end??""),s=Number.parseFloat(t.dataset.duration??""),l=Number.isFinite(o)&&o>r?o:Number.isFinite(s)&&s>0?r+s:n,a=Number.parseFloat(t.dataset.volume??""),c=Number.isFinite(a)?Math.max(0,Math.min(1,a)):1;t.volume=c;let u=1/Math.min(60,Math.max(1,i)),h=Math.max(0,r),f=Math.min(n,l),x=[];for(let E=h;E<=f+1e-6;E+=u){let S=Math.min(f,E);e(S);let D=Number(t.volume);if(!Number.isFinite(D))continue;let L=Math.max(0,Math.min(1,D)),R=x.at(-1);if((!R||Math.abs(R.volume-L)>1e-4||S===f)&&x.push({time:Number(S.toFixed(6)),volume:Number(L.toFixed(6))}),S===f)break}return x.some(E=>Math.abs(E.volume-c)>1e-4)?x:null}function Hi(t,e,n,i){if(!e||!(t instanceof HTMLAudioElement)&&!(t instanceof HTMLVideoElement)||n<=0)return;let o=ws(t,s=>{try{typeof e.totalTime=="function"?e.totalTime(s,!0):typeof e.seek=="function"&&e.seek(s,!0)}catch{}},n,60);o&&i.set(t,o)}function ht(t){let e=t.defaultPlaybackRate;return Number.isFinite(e)&&e>0?Math.max(.1,Math.min(5,e)):1}function Wi(t){let e=Array.from(document.querySelectorAll("video, audio")),n=t?.shouldIncludeElement?e.filter(s=>t.shouldIncludeElement?.(s)):e.filter(s=>s.hasAttribute("data-start")),i=[],r=[],o=0;for(let s of n){let l=t?.resolveStartSeconds?t.resolveStartSeconds(s):Number.parseFloat(s.dataset.start??"0");if(!Number.isFinite(l))continue;let a=Number.parseFloat(s.dataset.playbackStart??s.dataset.mediaStart??"0")||0,c=ht(s),u=s.loop,h=Number.isFinite(s.duration)&&s.duration>0?s.duration:null,f=t?.resolveDurationSeconds?.(s)??Number.parseFloat(s.dataset.duration??"");(!Number.isFinite(f)||f<=0)&&h!=null&&(f=Math.max(0,(h-a)/c));let x=Number.isFinite(f)&&f>0?l+f:Number.POSITIVE_INFINITY,F=Number.parseFloat(s.dataset.volume??""),E={el:s,start:l,mediaStart:a,duration:Number.isFinite(f)&&f>0?f:Number.POSITIVE_INFINITY,end:x,volume:Number.isFinite(F)?F:null,playbackRate:c,loop:u,sourceDuration:h};i.push(E),s.tagName==="VIDEO"&&r.push(E),Number.isFinite(x)&&(o=Math.max(o,x))}return{timedMediaEls:n,mediaClips:i,videoClips:r,maxMediaEnd:o}}var Fn=new WeakMap,mt=new WeakMap,wn=new WeakSet,et=new WeakSet;function Ns(t){if(et.has(t))return;et.add(t);let e=()=>et.delete(t);t.addEventListener("playing",e,{once:!0}),t.addEventListener("pause",e,{once:!0}),t.addEventListener("error",e,{once:!0})}var Nn=new WeakMap;function pt(t){return Number.isFinite(t)?Math.max(0,Math.min(1,t)):1}function qi(t){let e=!!(t.outputMuted||t.userMuted);for(let n of t.clips){let{el:i}=n;if(!i.isConnected)continue;let r=(t.timeSeconds-n.start)*n.playbackRate+n.mediaStart;if(t.timeSeconds>=n.start&&t.timeSeconds<=n.end&&r>=0&&(!i.ended||n.loop)){if(n.loop&&n.sourceDuration!=null&&n.sourceDuration>0){let w=n.sourceDuration-n.mediaStart;w>0&&r>=n.sourceDuration&&(r=n.mediaStart+(r-n.mediaStart)%w)}let s=pt(t.userVolume??1),l=pt(n.volume??1),a=Nn.get(i),c=pt(i.volume),u;n.volumeKeyframes&&n.volumeKeyframes.length>0?u=pt(Pi(n.volumeKeyframes,r)):a===void 0||Math.abs(c-a)>1e-4?u=c:u=l;let h=pt(u*s);i.volume=h,Nn.set(i,h),t.onElementVolume?.(i,h),e&&(i.muted=!0),i.preload!=="auto"&&(i.preload="auto");try{i.playbackRate=n.playbackRate*t.playbackRate}catch(w){v("runtime.media.site1",w)}let f=.04,x=2,F=i.currentTime||0,E=Math.abs(F-r),S=r-F,D=Fn.get(i);Fn.set(i,S);let L=D===void 0,R=!L&&Math.abs(S-D)>.5,ne=E>3,q=E>.5&&(L||R||ne),C=i.tagName==="VIDEO"&&!i.paused,g=D!==void 0&&Math.abs(S-D)<.004,b=!1;if(!C&&!q&&!L&&g&&E>f){let w=(mt.get(i)??0)+1;mt.set(i,w),w>=x&&(b=!0,mt.set(i,0))}else E<=f&&mt.set(i,0);let N=!C&&t.forceSync&&E>.02;if(q||b||N){try{i.currentTime=r}catch(w){v("runtime.media.site2",w)}if(Math.abs(i.currentTime-r)>.5&&!wn.has(i)){wn.add(i),i.load();try{i.currentTime=r}catch(w){v("runtime.media.site3",w)}}et.delete(i)}t.playing&&i.paused&&!et.has(i)?(Ns(i),i.play().catch(w=>{et.delete(i),(w&&typeof w=="object"&&"name"in w?String(w.name??""):"")==="NotAllowedError"&&t.onAutoplayBlocked?.()})):!t.playing&&!i.paused&&i.pause();continue}Fn.delete(i),mt.delete(i),wn.delete(i),Nn.delete(i),i.paused||i.pause()}}var Cs=["[data-hyperframes-ignore]","[data-hyperframes-picker-ignore]","[data-hf-ignore]","[data-no-inspect]","[data-no-pick]","[data-hyper-shader-loading]"].join(","),Ms=["[data-hyperframes-picker-block]","[data-hyper-shader-loading]"].join(",");function Ui(t){let e=!1,n=null,i=null,r=null,o=null;function s(g,b){try{window.dispatchEvent(new CustomEvent(g,{detail:b}))}catch(N){v("runtime.picker.site1",N)}}function l(g){r=g,s("hyperframe:picker:hovered",{elementInfo:r,isPickMode:e,timestamp:Date.now()})}function a(g){o=g,s("hyperframe:picker:selected",{elementInfo:o,isPickMode:e,timestamp:Date.now()})}function c(g){let b=g.ownerDocument.defaultView;if(!b)return!1;let N=g;for(;N&&N!==document.body&&N!==document.documentElement;){let w=b.getComputedStyle(N);if(w.display==="none"||w.visibility==="hidden"||w.pointerEvents==="none")return!0;let _=Number.parseFloat(w.opacity);if(Number.isFinite(_)&&_<=.01)return!0;N=N.parentElement}return!1}function u(g){if(!g||g===document.body||g===document.documentElement)return!1;let b=g.tagName.toLowerCase();return!(b==="script"||b==="style"||b==="link"||b==="meta"||g.classList.contains("__hf-pick-highlight")||g.closest(Cs)||c(g))}function h(g){return!!g?.closest(Ms)}function f(g){let b=g;if(b.id)return`#${b.id}`;let N=g.getAttribute("data-composition-id");if(N)return`[data-composition-id="${N}"]`;let w=g.getAttribute("data-composition-src");if(w)return`[data-composition-src="${w}"]`;let _=g.getAttribute("data-track-index");if(_)return`[data-track-index="${_}"]`;let H=g.tagName.toLowerCase(),J=g.parentElement;if(!J)return H;let W=J.querySelectorAll(`:scope > ${H}`);if(W.length===1)return H;for(let T=0;T<W.length;T+=1)if(W[T]===g)return`${H}:nth-of-type(${T+1})`;return H}function x(g){let b=g.tagName.toLowerCase(),N=(g.textContent??"").trim().replace(/\\s+/g," "),w=(_,H)=>_.length>H?`${_.slice(0,H-1)}\\u2026`:_;return b==="h1"||b==="h2"||b==="h3"?"Heading":b==="p"||b==="span"||b==="div"?N.length>0?w(N,56):"Text":b==="img"?"Image":b==="video"?"Video":b==="audio"?"Audio":b==="svg"?"Shape":g.getAttribute("data-composition-src")?"Composition":b==="section"?"Section":`${b.charAt(0).toUpperCase()}${b.slice(1)}`}function F(g,b,N){let w=typeof N=="number"&&N>0?N:8,_=[];if(document.elementsFromPoint)_=document.elementsFromPoint(g,b);else if(document.elementFromPoint){let W=document.elementFromPoint(g,b);_=W?[W]:[]}if(h(_[0]??null))return[];let H={},J=[];for(let W=0;W<_.length;W+=1){let T=_[W];if(!u(T))continue;let de=`${T.tagName}::${T.id||""}::${W}`;if(!H[de]&&(H[de]=!0,J.push(T),J.length>=w))break}return J}function E(g){let b=g.getBoundingClientRect(),N={};for(let _=0;_<g.attributes.length;_+=1){let H=g.attributes[_];H.name.startsWith("data-")&&(N[H.name]=H.value)}return{id:g.id||null,tagName:g.tagName.toLowerCase(),selector:f(g),label:x(g),boundingBox:{x:b.left,y:b.top,width:b.width,height:b.height},textContent:g.textContent?g.textContent.trim().slice(0,200):null,src:g.getAttribute("src")||g.getAttribute("data-composition-src")||null,dataAttributes:N}}function S(g,b,N){return F(g,b,N).map(E)}function D(g){if(!e)return;let N=F(g.clientX,g.clientY,1)[0]??(g.target instanceof Element?g.target:null);if(!u(N)||n===N)return;n&&n.classList.remove("__hf-pick-highlight"),n=N,N.classList.add("__hf-pick-highlight");let w=E(N);l(w),t.postMessage({source:"hf-preview",type:"element-hovered",elementInfo:w})}function L(g){if(!e)return;g.preventDefault(),g.stopPropagation(),g.stopImmediatePropagation();let b=S(g.clientX,g.clientY,8);b.length!==0&&(l(b[0]??null),t.postMessage({source:"hf-preview",type:"element-pick-candidates",candidates:b,selectedIndex:0,point:{x:g.clientX,y:g.clientY}}))}function R(g){g.key==="Escape"&&(q(),t.postMessage({source:"hf-preview",type:"pick-mode-cancelled"}))}function ne(){e||(e=!0,i=document.createElement("style"),i.textContent=[".__hf-pick-highlight { outline: 2px solid #4f8cf7 !important; outline-offset: 2px; cursor: crosshair !important; }",".__hf-pick-active * { cursor: crosshair !important; }"].join(`\n`),document.head.appendChild(i),document.body.classList.add("__hf-pick-active"),document.addEventListener("mousemove",D,!0),document.addEventListener("click",L,!0),document.addEventListener("keydown",R,!0),s("hyperframe:picker:mode",{isPickMode:!0,timestamp:Date.now()}))}function q(){e&&(e=!1,n&&(n.classList.remove("__hf-pick-highlight"),n=null),i&&(i.remove(),i=null),document.body.classList.remove("__hf-pick-active"),document.removeEventListener("mousemove",D,!0),document.removeEventListener("click",L,!0),document.removeEventListener("keydown",R,!0),s("hyperframe:picker:mode",{isPickMode:!1,timestamp:Date.now()}))}function C(){window.__HF_PICKER_API={enable:ne,disable:q,isActive:()=>e,getHovered:()=>r,getSelected:()=>o,getCandidatesAtPoint:(g,b,N)=>Number.isFinite(g)&&Number.isFinite(b)?S(g,b,N):[],pickAtPoint:(g,b,N)=>{if(!Number.isFinite(g)||!Number.isFinite(b))return null;let w=S(g,b,8);if(!w.length)return null;let _=Math.max(0,Math.min(w.length-1,Number(N??0))),H=w[_]??null;return H?(a(H),t.postMessage({source:"hf-preview",type:"element-picked",elementInfo:H}),q(),H):null},pickManyAtPoint:(g,b,N)=>{if(!Number.isFinite(g)||!Number.isFinite(b))return[];let w=S(g,b,8);if(!w.length)return[];let _=[],H=Array.isArray(N)?N:[0];for(let J of H){let W=Math.max(0,Math.min(w.length-1,Math.floor(Number(J)))),T=w[W];if(!T)continue;_.some(be=>be.selector===T.selector&&be.tagName===T.tagName)||_.push(T)}return _.length?(a(_[0]??null),t.postMessage({source:"hf-preview",type:"element-picked-many",elementInfos:_}),q(),_):[]}},s("hyperframe:picker:api-ready",{hasApi:!0,timestamp:Date.now()})}return{enablePickMode:ne,disablePickMode:q,installPickerApi:C}}function tt(t,e){let n=Number.isFinite(e)&&e>0?e:30,i=Number.isFinite(t)&&t>0?t:0;return Math.floor(i*n+1e-9)/n}function xt(t,e,n){let i=t?.[e];return typeof i=="function"?Number(i.call(t))||n:typeof i=="number"&&Number.isFinite(i)?i:(i!=null&&v("runtime.player.nonConformantNum",{prop:e,actual:typeof i}),n)}function ve(t,e){let n=t?.[e];if(typeof n=="function"){n.call(t);return}n!==void 0&&v("runtime.player.nonConformantVoid",{method:e,actual:typeof n})}function gt(t,e,n){if(t){for(let i of Object.values(t))if(!(!i||i===e))try{n(i)}catch(r){v("runtime.player.site1",r)}}}function Vi(t,e,n){let i=tt(e,n);return ve(t,"pause"),typeof t.totalTime=="function"?t.totalTime(i,!1):typeof t.seek=="function"&&t.seek(i,!1),i}function Ts(t,e,n,i){let r=[];gt(t,e,o=>{ve(o,"play"),r.push(o)});try{return Vi(e,n,i)}finally{for(let o of r)try{ve(o,"pause")}catch(s){v("runtime.player.site2",s)}}}function ks(t,e){gt(t,e,n=>{ve(n,"play")})}function zi(t){return{_timeline:null,play:()=>{let e=t.getTimeline();if(!e||t.getIsPlaying())return;let n=Math.max(0,Number(t.getSafeDuration?.()??xt(e,"duration",0))||0);n>0&&Math.max(0,xt(e,"time",0))>=n&&(ve(e,"pause"),typeof e.seek=="function"&&e.seek(0,!1),t.onDeterministicSeek(0),t.setIsPlaying(!1),t.onSyncMedia(0,!1),t.onRenderFrameSeek(0)),typeof e.timeScale=="function"&&e.timeScale(t.getPlaybackRate()),ve(e,"play"),gt(t.getTimelineRegistry?.(),e,i=>{typeof i.timeScale=="function"&&i.timeScale(t.getPlaybackRate()),ve(i,"play")}),t.onDeterministicPlay(),t.setIsPlaying(!0),t.onShowNativeVideos(),t.onStatePost(!0)},pause:()=>{let e=t.getTimeline();if(!e)return;ve(e,"pause"),gt(t.getTimelineRegistry?.(),e,i=>{ve(i,"pause")});let n=Math.max(0,xt(e,"time",0));t.onDeterministicSeek(n),t.onDeterministicPause(),t.setIsPlaying(!1),t.onSyncMedia(n,!1),t.onRenderFrameSeek(n),t.onStatePost(!0)},seek:(e,n)=>{let i=t.getTimeline();if(!i)return;let r=Math.max(0,Number(e)||0),o=t.getIsPlaying(),s=Ts(t.getTimelineRegistry?.(),i,r,t.getCanonicalFps());t.onDeterministicSeek(s),n?.keepPlaying&&o?(typeof i.timeScale=="function"&&i.timeScale(t.getPlaybackRate()),ve(i,"play"),gt(t.getTimelineRegistry?.(),i,l=>{typeof l.timeScale=="function"&&l.timeScale(t.getPlaybackRate()),ve(l,"play")}),t.onDeterministicPlay(),t.onShowNativeVideos(),t.onSyncMedia(s,!0)):(t.setIsPlaying(!1),t.onSyncMedia(s,!1)),t.onRenderFrameSeek(s),t.onStatePost(!0)},renderSeek:e=>{let n=t.getTimeline(),i=t.getCanonicalFps(),r=n?(ks(t.getTimelineRegistry?.(),n),Vi(n,e,i)):tt(Math.max(0,Number(e)||0),i);t.onDeterministicSeek(r),t.setIsPlaying(!1),t.onSyncMedia(r,!1),t.onRenderFrameSeek(r),t.onStatePost(!0)},getTime:()=>xt(t.getTimeline(),"time",0),getDuration:()=>xt(t.getTimeline(),"duration",0),isPlaying:()=>t.getIsPlaying(),setPlaybackRate:e=>t.setPlaybackRate(e),getPlaybackRate:()=>t.getPlaybackRate()}}function ji(){return{capturedTimeline:null,isPlaying:!1,currentTime:0,deterministicAdapters:[],canonicalFps:30,bridgeMuted:!1,bridgeVolume:1,mediaOutputMuted:!1,mediaAutoplayBlockedPosted:!1,mediaForceSyncNextTick:!1,playbackRate:1,bridgeLastPostedFrame:-1,bridgeLastPostedAt:0,bridgeLastPostedPlaying:!1,bridgeLastPostedMuted:!1,bridgeMaxPostIntervalMs:80,controlBridgeHandler:null,beforeUnloadHandler:null,injectedCompStyles:[],injectedCompScripts:[],cachedTimedMediaEls:[],cachedMediaClips:[],cachedVideoClips:[],cachedMediaTimelineDurationSeconds:0,tornDown:!1,transportClock:null,transportRafId:null}}var _s="data-hf-authored-duration",vs="data-hf-authored-end";function Je(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}function Rs(t){return Je(t.getAttribute("data-duration"))}function Ls(t){return Je(t.getAttribute("data-end"))}function Ds(t){return Je(t.getAttribute(_s))}function Bs(t){return Je(t.getAttribute(vs))}function Is(t){let e=(t??"").trim();if(!e)return null;let n=Je(e);if(n!=null)return{kind:"absolute",value:n};let i=e.match(/^([A-Za-z0-9_.:-]+)(?:\\s*([+-])\\s*([0-9]*\\.?[0-9]+))?$/);if(!i)return null;let r=(i[1]??"").trim();if(!r)return null;let o=i[2]??"+",s=i[3]??"0",l=Number.parseFloat(s),a=Number.isFinite(l)?Math.max(0,l):0,c=o==="-"?-a:a;return{kind:"reference",refId:r,offset:c}}function Qe(t){let e=t.timelineRegistry??{},n=t.includeAuthoredTimingAttrs??!1,i=new WeakMap,r=new WeakMap,o=new Set,s=u=>{let h=document.getElementById(u);return h||(document.querySelector(`[data-composition-id="${CSS.escape(u)}"]`)??null)},l=u=>{let h=r.get(u);if(h!==void 0)return h;let f=null,x=Rs(u)??(n?Ds(u):null);if(x!=null&&x>0&&(f=x),f==null||f<=0){let F=Ls(u)??(n?Bs(u):null);if(F!=null){let E=c(u,0),S=F-E;Number.isFinite(S)&&S>0&&(f=S)}}if((f==null||f<=0)&&u instanceof HTMLMediaElement){let F=Je(u.getAttribute("data-playback-start"))??Je(u.getAttribute("data-media-start"))??0;Number.isFinite(u.duration)&&u.duration>F&&(f=(u.duration-F)/ht(u))}if(f==null||f<=0){let F=u.getAttribute("data-composition-id");if(F){let E=e[F]??null;if(E&&typeof E.duration=="function")try{let S=Number(E.duration());Number.isFinite(S)&&S>0&&(f=S)}catch(S){v("runtime.startResolver.site1",S)}}}return f!=null&&Number.isFinite(f)&&f>0?(r.set(u,f),f):(r.set(u,null),null)},a=(u,h)=>{if(u.hasAttribute("data-composition-id")){let x=u.parentElement?.closest("[data-composition-id]");return x?c(x,h):0}let f=u.closest("[data-composition-id]");return f?c(f,h):0},c=(u,h)=>{let f=i.get(u);if(f!==void 0)return f??h;if(o.has(u))return h;o.add(u);try{let x=Is(u.getAttribute("data-start"));if(!x){if(u.hasAttribute("data-composition-id")){let L=u.parentElement;if(L&&(L.hasAttribute("data-composition-src")||L.hasAttribute("data-composition-id"))){let R=c(L,h);return i.set(u,R),R}}return i.set(u,h),h}if(x.kind==="absolute"){let L=Math.max(0,x.value),R=Math.max(0,a(u,h)+L);return i.set(u,R),R}let F=s(x.refId);if(!F)return i.set(u,h),h;let E=c(F,0),S=l(F);if(S==null||S<=0){let L=Math.max(0,E+x.offset);return i.set(u,L),L}let D=Math.max(0,E+S+x.offset);return i.set(u,D),D}finally{o.delete(u)}};return{resolveStartForElement:(u,h=0)=>c(u,Math.max(0,h)),resolveDurationForElement:u=>l(u)}}var Os="data-hf-authored-duration",Ps="data-hf-authored-end";function Fe(t){if(t==null||t==="")return null;let e=Number(t);return Number.isFinite(e)?e:null}function Cn(t){return Fe(t.getAttribute("data-duration"))??Fe(t.getAttribute(Os))}function Gi(t){return Fe(t.getAttribute("data-end"))??Fe(t.getAttribute(Ps))}function Mn(...t){let e=t.filter(n=>Number.isFinite(n??null));return e.length===0?null:Math.max(...e)}var $i={composition:0,video:1,image:2,element:3,audio:4};function Hs(t){if(t.length===0)return;let e=new Map;for(let s of t){let l=e.get(s.track)??new Set;l.add(s.kind),e.set(s.track,l)}if(!Array.from(e.values()).some(s=>s.size>1))return;let i=0,r=new Map,o=[...e.keys()].sort((s,l)=>s-l);for(let s of o){let l=e.get(s);if(l.size===1)r.set(`${s}:${[...l][0]}`,i++);else{let a=[...l].sort((c,u)=>($i[c]??99)-($i[u]??99));for(let c of a)r.set(`${s}:${c}`,i++)}}for(let s of t){let l=`${s.track}:${s.kind}`,a=r.get(l);a!=null&&(s.track=a)}}function St(t){let e=String(t??"").trim();if(!e)return null;let n=e.toLowerCase();if(n.startsWith("data:")||n.startsWith("javascript:"))return null;try{return new URL(e,document.baseURI).toString()}catch{return e}}function Ki(t){let e=t.getAttribute("src")??t.getAttribute("data-src");if(e)return St(e);let n=t.getAttribute("data-composition-src");if(n)return St(n);let i=t.querySelector("img[src], video[src], audio[src], source[src]");return i?St(i.getAttribute("src")):null}function Ws(t){let e=t.className;return typeof e!="string"?null:e.split(/\\s+/).map(n=>n.trim()).find(n=>n&&n!=="clip"&&!n.startsWith("__hf-"))??null}function qs(t){if(!t)return null;try{return new URL(t,document.baseURI).pathname.split("/").filter(Boolean).at(-1)??null}catch{return t.split(/[\\\\/]/).filter(Boolean).at(-1)??null}}function Us(t){let e=t.textContent?.replace(/\\s+/g," ").trim();return e?e.length>32?`${e.slice(0,31)}...`:e:null}function yt(t){let e=t.replace(/\\.[^.]+$/i,"").replace(/[-_]+/g," ").replace(/\\s+/g," ").trim();return e?e.replace(/\\b\\w/g,n=>n.toUpperCase()):t}function Vs(t,e,n){let i=t.getAttribute("data-timeline-label")??t.getAttribute("data-label")??t.getAttribute("aria-label")??null;if(i?.trim())return i.trim();let r=t.getAttribute("data-composition-id");if(r)return yt(r);let o=t.id;if(o)return yt(o);let s=Ws(t);if(s)return yt(s);let l=qs(Ki(t));if(l)return yt(l);let a=Us(t);return a||`${yt(e)} ${n+1}`}function Ji(t){let n=window.__timelines??{},i=Qe({timelineRegistry:n,includeAuthoredTimingAttrs:!0}),r=O=>{if(!O)return null;let k=n[O]??null;if(!k||typeof k.duration!="function")return null;try{let P=Number(k.duration());return Number.isFinite(P)&&P>0?P:null}catch{return null}},o=O=>{let k=Fe(O.getAttribute("data-duration"));if(k!=null&&k>0)return k;let P=Fe(O.getAttribute("data-playback-start"))??Fe(O.getAttribute("data-media-start"))??0;return Number.isFinite(O.duration)&&O.duration>P?Math.max(0,(O.duration-P)/ht(O)):null},s=()=>{let O=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(O.length===0)return null;let k=0;for(let P of O){let ie=P.hasAttribute("data-hf-auto-start")?i.resolveStartForElement(P,0):Math.max(0,Number(P.getAttribute("data-start")??0)||0);if(!Number.isFinite(ie))continue;let ae=o(P);ae==null||ae<=0||(k=Math.max(k,Math.max(0,ie)+ae))}return k>0?k:null},l=O=>{let k=O.trim().toLowerCase();return!(!k||k==="main"||k.includes("caption")||k.includes("ambient"))},a=(O,k)=>{let P=[],ie=null,ae=null,z=null,V=O.parentElement;for(;V;){let $=V.getAttribute("data-composition-id");$&&(P.push($),!z&&V!==k&&(z=$),ie==null&&(ie=i.resolveStartForElement(V,0)),ae==null&&(ae=Fe(V.getAttribute("data-duration"))??r($)??null)),V=V.parentElement}return{parentCompositionId:z,compositionAncestors:P.reverse(),inheritedStart:ie,inheritedDuration:ae}},c=document.querySelector("[data-composition-id]"),u=Array.from(document.querySelectorAll("[data-composition-id]")),h=c?.getAttribute("data-composition-id")??null,f=c?i.resolveStartForElement(c,0):0,x=s(),F=x!=null?Math.max(0,x-Math.max(0,f)):null,E=r(h),S=Cn(c??document.body),D=Mn(...u.filter(O=>O!==c).map(O=>{let k=i.resolveStartForElement(O,0),P=i.resolveDurationForElement(O)??r(O.getAttribute("data-composition-id"))??null;return!Number.isFinite(k)||P==null||P<=0?null:Math.max(0,k)+P})),L=D!=null?Math.max(0,D-Math.max(0,f)):null,R=typeof E=="number"&&Number.isFinite(E)&&E>0?E:null,ne=typeof S=="number"&&Number.isFinite(S)&&S>0?S:null,q=typeof F=="number"&&Number.isFinite(F)&&F>0?F:null,C=typeof L=="number"&&Number.isFinite(L)&&L>0?L:null,g=Mn(q,C),b=R!=null&&g!=null&&R>g+1,w=ne??(b?g:Mn(R,q,C))??null,H=(w!=null?f+w:null)??(typeof x=="number"&&Number.isFinite(x)&&x>0?x:null),J=(O,k)=>!Number.isFinite(k)||k<=0?0:H==null||!Number.isFinite(H)?k:!Number.isFinite(O)||O>=H?0:Math.max(0,Math.min(k,H-O)),W=[],T=[],de=Array.from(document.querySelectorAll("[data-start], [data-track-index], [data-composition-id], video, audio, img")),be=0;for(let O=0;O<de.length;O+=1){let k=de[O];if(k===c||["SCRIPT","STYLE","LINK","META","TEMPLATE","NOSCRIPT"].includes(k.tagName))continue;let P=a(k,c),ie=i.resolveStartForElement(k,P.inheritedStart??0),ae=k.getAttribute("data-composition-id"),z=Cn(k);if((z==null||z<=0)&&ae&&ae!==h&&(z=r(ae)),(z==null||z<=0)&&k instanceof HTMLMediaElement){let ye=Fe(k.getAttribute("data-playback-start"))??Fe(k.getAttribute("data-media-start"))??0;Number.isFinite(k.duration)&&k.duration>0&&(z=Math.max(0,k.duration-ye))}if(z==null||z<=0){let ye=P.inheritedDuration;if(ye!=null&&ye>0){let Be=(P.inheritedStart??0)+ye;z=Math.max(0,Be-ie)}}if(z==null||z<=0||(z=J(ie,z),z<=0))continue;let V=ie+z;be=Math.max(be,V);let $=k.tagName.toLowerCase(),Ne=ae&&ae!==h?"composition":$==="video"?"video":$==="audio"?"audio":$==="img"?"image":"element";W.push({id:k.id||ae||null,label:Vs(k,Ne,W.length),start:ie,duration:z,track:Number.parseInt(k.getAttribute("data-track-index")??k.getAttribute("data-track")??String(O),10)||0,kind:Ne,tagName:$,compositionId:k.getAttribute("data-composition-id"),compositionAncestors:P.compositionAncestors,parentCompositionId:P.parentCompositionId,nodePath:null,compositionSrc:St(k.getAttribute("data-composition-src")),assetUrl:Ki(k),timelineRole:k.getAttribute("data-timeline-role"),timelineLabel:k.getAttribute("data-timeline-label"),timelineGroup:k.getAttribute("data-timeline-group"),timelinePriority:Fe(k.getAttribute("data-timeline-priority"))})}let G=new Set(W.map(O=>O.id)),Q=c?.getAttribute("data-composition-id")??null,U=Q?n[Q]??null:null;if(U&&c){let O=U;if(typeof O.getChildren=="function")try{let k=O.getChildren(!0,!0,!1)??[],P=new Map;for(let z of c.children){let V=z;if(!V.id)continue;let $=V.tagName.toLowerCase();$==="script"||$==="style"||$==="link"||P.set(V,{id:V.id,start:1/0,end:-1/0})}let ie=z=>{let V=z;for(;V;){if(P.has(V))return V;if(V===c)return null;V=V.parentElement}return null};for(let z of k){if(typeof z.targets!="function"||typeof z.startTime!="function"||typeof z.duration!="function")continue;let V=z.startTime(),$=z.parent;for(;$&&$!==U&&typeof $.startTime=="function";)V+=$.startTime(),$=$.parent;let Ne=V+z.duration();if(!(!Number.isFinite(V)||!Number.isFinite(Ne)))for(let ye of z.targets()){if(!(ye instanceof Element))continue;let He=ie(ye);if(!He)continue;let Be=P.get(He);Be&&(Be.start=Math.min(Be.start,V),Be.end=Math.max(Be.end,Ne))}}let ae=W.length>0?Math.max(...W.map(z=>z.track))+1:0;for(let[z,V]of P){if(V.start===1/0||V.end===-1/0)continue;let $=z;if(G.has($.id))continue;let Ne=Math.max(0,V.end-V.start);if(Ne<=0)continue;let ye=J(V.start,Ne);ye<=0||(be=Math.max(be,V.start+ye),W.push({id:$.id,label:$.getAttribute("data-timeline-label")??$.getAttribute("data-label")??$.getAttribute("aria-label")??$.id,start:V.start,duration:ye,track:Number.parseInt($.getAttribute("data-track-index")??$.getAttribute("data-track")??"",10)||ae,kind:"element",tagName:$.tagName.toLowerCase(),compositionId:$.getAttribute("data-composition-id"),compositionAncestors:Q?[Q]:[],parentCompositionId:Q,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:$.getAttribute("data-timeline-role"),timelineLabel:$.getAttribute("data-timeline-label"),timelineGroup:$.getAttribute("data-timeline-group"),timelinePriority:Fe($.getAttribute("data-timeline-priority"))}),G.add($.id))}}catch(k){v("runtime.timeline.site1",k)}}if(c&&w!=null&&w>0){let O=W.length>0?Math.max(...W.map(k=>k.track))+1:0;for(let k of c.children){let P=k;if(!P.id||G.has(P.id))continue;let ie=P.getAttribute("data-timeline-role");if(ie!=="overlay"&&ie!=="persistent-overlay")continue;let ae=P.tagName.toLowerCase();if(ae==="script"||ae==="style"||ae==="link"||ae==="meta"||window.getComputedStyle(P).display==="none")continue;let V=J(0,w);V<=0||(be=Math.max(be,V),W.push({id:P.id,label:P.getAttribute("data-timeline-label")??P.getAttribute("data-label")??P.getAttribute("aria-label")??P.id,start:0,duration:V,track:Number.parseInt(P.getAttribute("data-track-index")??P.getAttribute("data-track")??"",10)||O,kind:"element",tagName:ae,compositionId:P.getAttribute("data-composition-id"),compositionAncestors:Q?[Q]:[],parentCompositionId:Q,nodePath:null,compositionSrc:null,assetUrl:null,timelineRole:ie,timelineLabel:P.getAttribute("data-timeline-label"),timelineGroup:P.getAttribute("data-timeline-group"),timelinePriority:Fe(P.getAttribute("data-timeline-priority"))}),G.add(P.id))}}Hs(W);for(let O of u){if(O===c)continue;let k=O.getAttribute("data-composition-id");if(!k||!l(k))continue;let P=i.resolveStartForElement(O,0),ie=Cn(O);if((ie==null||ie<=0)&&Gi(O)!=null){let $=Gi(O);ie=Math.max(0,$-P)}let ae=r(k),z=ie&&ie>0?ie:ae;if(z==null||z<=0)continue;let V=J(P,z);V<=0||T.push({id:k,label:O.getAttribute("data-label")??k,start:P,duration:V,thumbnailUrl:St(O.getAttribute("data-thumbnail-url")),avatarName:null})}let Y=Math.max(1,be||1,w??0);return{source:"hf-preview",type:"timeline",durationInFrames:b&&ne==null?Number.POSITIVE_INFINITY:Math.max(1,Math.ceil(Y*Math.max(1,t.canonicalFps))),clips:W,scenes:T,compositionWidth:Fe(c?.getAttribute("data-width"))??1920,compositionHeight:Fe(c?.getAttribute("data-height"))??1080}}var ue=Es(Ao(),1),Eo=ue.default,gd=ue.default.stringify,yd=ue.default.fromJSON,Sd=ue.default.plugin,bd=ue.default.parse,Ad=ue.default.list,Ed=ue.default.document,Fd=ue.default.comment,wd=ue.default.atRule,Nd=ue.default.rule,Cd=ue.default.decl,Md=ue.default.root,Td=ue.default.CssSyntaxError,kd=ue.default.Declaration,_d=ue.default.Container,vd=ue.default.Processor,Rd=ue.default.Document,Ld=ue.default.Comment,Dd=ue.default.Warning,Bd=ue.default.AtRule,Id=ue.default.Result,Od=ue.default.Input,Pd=ue.default.Rule,Hd=ue.default.Root,Wd=ue.default.Node;var Xn="data-hf-authored-id";function ei(t){return t.replace(/[.*+?^${}()|[\\]\\\\]/g,"\\\\$&")}function ti(t){return t.replace(/\\\\/g,"\\\\\\\\").replace(/"/g,\'\\\\"\')}function dl(t){return t&&t.replace(/[^a-zA-Z0-9_-]/g,n=>`\\\\${n}`).replace(/^-?\\d/,n=>`\\\\${n}`)}function Fo(t){let e=t.trim();return e?Array.from(new Set([e,dl(e)])).filter(Boolean):[]}function fl(t){return!!t&&/[\\w-]/.test(t)}function ml(t,e,n){let i=Fo(e).sort((l,a)=>a.length-l.length);if(i.length===0)return t;let r="",o=0,s=null;for(let l=0;l<t.length;l+=1){let a=t[l],c=l>0?t[l-1]:"";if(s){r+=a,a===s&&c!=="\\\\"&&(s=null);continue}if(a===\'"\'||a==="\'"){s=a,r+=a;continue}if(a==="["){o+=1,r+=a;continue}if(a==="]"){o=Math.max(0,o-1),r+=a;continue}if(a==="#"&&o===0){let u=i.find(h=>t.startsWith(h,l+1));if(u){let h=t[l+1+u.length];if(!fl(h)){r+=n,l+=u.length;continue}}}r+=a}return r}function pl(t,e){let n=e?.trim();return n?ml(t,n,`[${Xn}="${ti(n)}"]`):t}function hl(t,e,n,i,r){let o=pl(t,i),s=xl(o,e,n),l=s.trim();if(!l||/^(html|body|:root|\\*)$/i.test(l))return t;let a=new RegExp(`\\\\[\\\\s*data-composition-id\\\\s*=\\\\s*(["\'])${ei(n)}\\\\1\\\\s*\\\\]`,"g");if(a.test(l))return s.replace(a,e);let c=s.match(/^\\s*/)?.[0]??"",u=s.match(/\\s*$/)?.[0]??"";if(r){let h=i?`[${Xn}="${ti(i)}"]`:null;if(h&&l.startsWith(h)){let f=l.slice(h.length);return`${c}${e}${h}${f}${u}`}}return`${c}${e} ${l}${u}`}function xl(t,e,n){let i=ei(n),r=String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${i}"|\'${i}\')\\s*\\]`,o=String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`;return t.replace(new RegExp(`${r}(?:${o})+`,"g"),e).replace(new RegExp(`(?:${o})+${r}`,"g"),e)}var gl=new Set(["keyframes","-webkit-keyframes","font-face"]);function yl(t){return t?.type==="atrule"}function Sl(t){let e=t.parent;for(;e;){if(yl(e)&&gl.has(e.name.toLowerCase()))return!0;e=e.parent}return!1}function ni(t,e,n,i,r){let o=e.trim();if(!t||!o)return t;let s=n||`[data-composition-id="${ti(o)}"]`,l=Eo.parse(t);return l.walkRules(a=>{Sl(a)||(a.selectors=a.selectors.map(c=>hl(c,s,o,i,r?.compoundAuthoredRoot)))}),l.toResult({map:!1}).css}function wo(t,e,n="[HyperFrames] composition script error:",i,r=e,o){let s=JSON.stringify(e),l=JSON.stringify(r),a=JSON.stringify(n),c=ei(e),u=JSON.stringify(o?.trim()||null),h=JSON.stringify(i??null),f=JSON.stringify(String.raw`\\[\\s*data-composition-id\\s*=\\s*(?:"${c}"|\'${c}\')\\s*\\]`),x=JSON.stringify(String.raw`\\s*\\[\\s*data-(?:start|duration)\\s*=\\s*(?:"[^"]*"|\'[^\']*\')\\s*\\]`),F=JSON.stringify(Fo(o?.trim()||""));return`(function(){\n var __hfCompId = ${s};\n var __hfTimelineCompId = ${l};\n var __hfErrorLabel = ${a};\n var __hfAuthoredRootId = ${u};\n var __hfAuthoredRootAttr = ${JSON.stringify(Xn)};\n var __hfEscapeAttr = function(value) {\n return (value + "").replace(/\\\\\\\\/g, "\\\\\\\\\\\\\\\\").replace(/"/g, "\\\\\\\\\\\\"");\n };\n var __hfRootSelector = ${h} || (__hfCompId\n ? \'[data-composition-id="\' + __hfEscapeAttr(__hfCompId) + \'"]\'\n : "");\n var __hfRoot = null;\n var __hfRootSelectorPattern = ${f};\n var __hfTimingSelectorPattern = ${x};\n var __hfAuthoredRootIdForms = ${F};\n var __hfAuthoredRootSelector = __hfAuthoredRootId\n ? "[" + __hfAuthoredRootAttr + \'="\' + __hfEscapeAttr(__hfAuthoredRootId) + \'"]\'\n : "";\n var __hfIsSelectorNameChar = function(char) {\n return !!char && /[\\\\w-]/.test(char);\n };\n var __hfReplaceAuthoredRootIdSelectors = function(selector) {\n if (!__hfAuthoredRootSelector || !__hfAuthoredRootIdForms.length || typeof selector !== "string") {\n return selector;\n }\n var result = "";\n var bracketDepth = 0;\n var quote = null;\n for (var index = 0; index < selector.length; index += 1) {\n var char = selector[index];\n var previousChar = index > 0 ? selector[index - 1] : "";\n if (quote) {\n result += char;\n if (char === quote && previousChar !== "\\\\\\\\") {\n quote = null;\n }\n continue;\n }\n if (char === \'"\' || char === "\'") {\n quote = char;\n result += char;\n continue;\n }\n if (char === "[") {\n bracketDepth += 1;\n result += char;\n continue;\n }\n if (char === "]") {\n bracketDepth = Math.max(0, bracketDepth - 1);\n result += char;\n continue;\n }\n if (char === "#" && bracketDepth === 0) {\n var matchedForm = null;\n for (var formIndex = 0; formIndex < __hfAuthoredRootIdForms.length; formIndex += 1) {\n var form = __hfAuthoredRootIdForms[formIndex];\n if (selector.slice(index + 1, index + 1 + form.length) === form) {\n matchedForm = form;\n break;\n }\n }\n if (matchedForm) {\n var nextChar = selector[index + 1 + matchedForm.length];\n if (!__hfIsSelectorNameChar(nextChar)) {\n result += __hfAuthoredRootSelector;\n index += matchedForm.length;\n continue;\n }\n }\n }\n result += char;\n }\n return result;\n };\n var __hfNormalizeSelector = function(selector) {\n if (!__hfCompId || typeof selector !== "string") return selector;\n var normalized = selector\n .replace(new RegExp(__hfRootSelectorPattern + \'(?:\' + __hfTimingSelectorPattern + \')+\', \'g\'), __hfRootSelector)\n .replace(new RegExp(\'(?:\' + __hfTimingSelectorPattern + \')+\' + __hfRootSelectorPattern, \'g\'), __hfRootSelector);\n if (__hfAuthoredRootSelector) {\n normalized = __hfReplaceAuthoredRootIdSelectors(normalized);\n }\n return normalized;\n };\n var __hfFindRoot = function() {\n if (!__hfRoot && __hfRootSelector) {\n __hfRoot = window.document.querySelector(__hfRootSelector);\n }\n return __hfRoot;\n };\n var __hfContains = function(node) {\n var root = __hfFindRoot();\n return !root || node === root || root.contains(node);\n };\n var __hfQueryAll = function(selector) {\n var root = __hfFindRoot();\n if (!root || typeof selector !== "string") {\n return window.document.querySelectorAll(selector);\n }\n return Array.prototype.filter.call(window.document.querySelectorAll(__hfNormalizeSelector(selector)), function(node) {\n return __hfContains(node);\n });\n };\n var __hfQueryOne = function(selector) {\n var matches = __hfQueryAll(selector);\n return matches[0] || null;\n };\n var __hfGetElementById = function(id) {\n var found = window.document.getElementById(id);\n if (found && __hfContains(found)) return found;\n var root = __hfFindRoot();\n if (!root) return found || null;\n var idValue = id + "";\n if (__hfAuthoredRootId && __hfAuthoredRootId === idValue && root.getAttribute && root.getAttribute(__hfAuthoredRootAttr) === idValue) {\n return root;\n }\n if (root.id === idValue) return root;\n if (typeof root.querySelector !== "function") return null;\n try {\n var authoredRootMatch = root.querySelector(\'[\' + __hfAuthoredRootAttr + \'="\' + __hfEscapeAttr(idValue) + \'"]\');\n if (authoredRootMatch) return authoredRootMatch;\n } catch {}\n if (typeof CSS !== "undefined" && CSS && typeof CSS.escape === "function") {\n try {\n return root.querySelector("#" + CSS.escape(idValue)) || null;\n } catch {}\n }\n try {\n return root.querySelector(\'[id="\' + __hfEscapeAttr(idValue) + \'"]\') || null;\n } catch {}\n return null;\n };\n var __hfScopedDocument = typeof Proxy === "function"\n ? new Proxy(window.document, {\n get: function(target, prop, receiver) {\n if (prop === "querySelector") return __hfQueryOne;\n if (prop === "querySelectorAll") return __hfQueryAll;\n if (prop === "getElementById") return __hfGetElementById;\n var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\n },\n })\n : window.document;\n var __hfTimelineRegistryProxy = null;\n var __hfGetTimelineRegistry = function() {\n window.__timelines = window.__timelines || {};\n if (!__hfCompId || __hfCompId === __hfTimelineCompId || typeof Proxy !== "function") {\n return window.__timelines;\n }\n if (!__hfTimelineRegistryProxy) {\n __hfTimelineRegistryProxy = new Proxy(window.__timelines, {\n get: function(target, prop, receiver) {\n return Reflect.get(target, prop === __hfCompId ? __hfTimelineCompId : prop, target);\n },\n set: function(target, prop, value, receiver) {\n return Reflect.set(target, prop === __hfCompId ? __hfTimelineCompId : prop, value, target);\n },\n });\n }\n return __hfTimelineRegistryProxy;\n };\n var __hfScopedWindow = typeof Proxy === "function"\n ? new Proxy(window, {\n get: function(target, prop, receiver) {\n if (prop === "__timelines") return __hfGetTimelineRegistry();\n return Reflect.get(target, prop, target);\n },\n set: function(target, prop, value, receiver) {\n if (prop === "__timelines") {\n target.__timelines = value || {};\n __hfTimelineRegistryProxy = null;\n return true;\n }\n return Reflect.set(target, prop, value, target);\n },\n })\n : window;\n var __hfResolveGsapTarget = function(target) {\n if (typeof target !== "string") return target;\n return __hfQueryAll(target);\n };\n var __hfScopeTimeline = function(timeline) {\n if (!timeline || timeline.__hfScopedCompositionRoot === __hfFindRoot()) return timeline;\n ["to", "from", "fromTo", "set"].forEach(function(method) {\n var original = timeline[method];\n if (typeof original !== "function") return;\n timeline[method] = function(target) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(target);\n return original.apply(timeline, args);\n };\n });\n try {\n Object.defineProperty(timeline, "__hfScopedCompositionRoot", {\n value: __hfFindRoot(),\n configurable: true,\n });\n } catch {\n // Best-effort: timelines coming from user code may have a frozen target\n // or a non-extensible defineProperty path. Swallow \\u2014 the scoped root\n // is an enrichment, not a correctness invariant for playback.\n }\n return timeline;\n };\n var __hfBaseGsap = typeof gsap === "undefined" ? window.gsap : gsap;\n var __hfScopedGsap = !__hfBaseGsap || typeof Proxy !== "function"\n ? __hfBaseGsap\n : new Proxy(__hfBaseGsap, {\n get: function(target, prop, receiver) {\n if (prop === "timeline") {\n return function() {\n return __hfScopeTimeline(target.timeline.apply(target, arguments));\n };\n }\n if (prop === "to" || prop === "from" || prop === "fromTo" || prop === "set") {\n return function(firstArg) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(firstArg);\n return target[prop].apply(target, args);\n };\n }\n if (prop === "utils" && target.utils && typeof Proxy === "function") {\n return new Proxy(target.utils, {\n get: function(utilsTarget, utilsProp, utilsReceiver) {\n if (utilsProp === "toArray") {\n return function(firstArg) {\n var args = Array.prototype.slice.call(arguments);\n args[0] = __hfResolveGsapTarget(firstArg);\n return utilsTarget.toArray.apply(utilsTarget, args);\n };\n }\n if (utilsProp === "selector") {\n return function(base) {\n var baseEl = typeof base === "string" ? __hfQueryOne(base) : base;\n var root = baseEl || __hfFindRoot();\n return function(selector) {\n if (!root || typeof selector !== "string") return [];\n return Array.prototype.filter.call(\n window.document.querySelectorAll(__hfNormalizeSelector(selector)),\n function(node) {\n return node === root || (typeof root.contains === "function" && root.contains(node));\n },\n );\n };\n };\n }\n var value = Reflect.get(utilsTarget, utilsProp, utilsTarget);\n return typeof value === "function" ? value.bind(utilsTarget) : value;\n },\n });\n }\n var value = Reflect.get(target, prop, target);\n return typeof value === "function" ? value.bind(target) : value;\n },\n });\n var __hfBaseHyperframes = window.__hyperframes;\n var __hfScopedHyperframes = !__hfBaseHyperframes\n ? __hfBaseHyperframes\n : Object.assign({}, __hfBaseHyperframes, {\n getVariables: function() {\n var byComp = window.__hfVariablesByComp;\n var scoped = byComp && __hfTimelineCompId ? byComp[__hfTimelineCompId] : null;\n return scoped ? Object.assign({}, scoped) : {};\n },\n });\n var __hfRun = function() {\n try {\n (function(document, gsap, window, __hyperframes) {\n${t.replace(/<\\/(script)/gi,"<\\\\/$1")}\n }).call(window, __hfScopedDocument, __hfScopedGsap, __hfScopedWindow, __hfScopedHyperframes);\n } catch (_err) {\n console.error(__hfErrorLabel, __hfCompId, _err);\n }\n };\n __hfFindRoot();\n __hfRun();\n})();`}function No(){if(typeof document>"u")return{};let t=ii(document.documentElement),e=bl();return{...t,...e}}function ii(t){if(!t)return{};let e=t.getAttribute("data-composition-variables");if(!e)return{};let n;try{n=JSON.parse(e)}catch{return{}}if(!Array.isArray(n))return{};let i={};for(let r of n){if(!r||typeof r!="object")continue;let o=r;typeof o.id!="string"||!("default"in o)||(i[o.id]=o.default)}return i}function bl(){if(typeof window>"u")return{};let t=window.__hfVariables;return!t||typeof t!="object"||Array.isArray(t)?{}:t}var Al=8e3,El=/^(?![a-zA-Z][a-zA-Z\\d+\\-.]*:)(?!\\/\\/)(?!\\/)(?!\\.\\.?\\/).+/;function Fl(t,e){return`${t}__hf${e}`}var wl=t=>new Promise(e=>{let n=!1,i=Date.now(),r=null,o=s=>{n||(n=!0,r!=null&&window.clearTimeout(r),e({status:s,elapsedMs:Math.max(0,Date.now()-i)}))};t.addEventListener("load",()=>o("load"),{once:!0}),t.addEventListener("error",()=>o("error"),{once:!0}),r=window.setTimeout(()=>o("timeout"),Al)});function ri(t){for(;t.firstChild;)t.removeChild(t.firstChild);t.textContent=""}var Nl=["data-composition-id","data-composition-file","data-start","data-duration","data-end","data-track-index","data-track","data-composition-src","data-hf-authored-duration","data-hf-authored-end"];function Cl(t){let e=document.importNode(t,!0),n=e.getAttribute("id")?.trim();for(let o of Nl)e.removeAttribute(o);n&&(e.removeAttribute("id"),e.setAttribute("data-hf-authored-id",n)),e.setAttribute("data-hf-inner-root","true");let i=e.getAttribute("data-width"),r=e.getAttribute("data-height");return e.style.width=i?`${i}px`:"100%",e.style.height=r?`${r}px`:"100%",e}function Co(t,e){let n=t.trim();if(!n)return t;try{return El.test(n)?new URL(n,document.baseURI).toString():e?new URL(n,e).toString():new URL(n,document.baseURI).toString()}catch{return t}}function Ml(t){let e=t.getAttribute("data-variable-values");if(!e)return{};let n;try{n=JSON.parse(e)}catch{return{}}return!n||typeof n!="object"||Array.isArray(n)?{}:n}function on(t){let e=(t.getAttribute("data-composition-id")||"").trim()||null;return{authoredCompositionId:(t.getAttribute("data-hf-original-composition-id")||e||"").trim()||null,runtimeCompositionId:e}}function Tl(t){let e=new Map;for(let n of t){let i=on(n).authoredCompositionId||"";i&&e.set(i,(e.get(i)||0)+1)}return e}function Mo(t){let e=on(t).authoredCompositionId;return e?!!document.querySelector(`template#${CSS.escape(e)}-template`):!1}function kl(t){return!!t.querySelector(\'[data-hf-inner-root="true"]\')}function _l(t){return t.hasAttribute("data-composition-src")?!0:Mo(t)?t.children.length===0||t.hasAttribute("data-hf-original-composition-id")?!0:kl(t):!1}function si(){return Array.from(document.querySelectorAll("[data-composition-src], [data-composition-id]")).filter(e=>e.hasAttribute("data-composition-src")?!0:Mo(e))}function To(){let t=window.__hfVariablesByComp;if(!t)return;let e=new Set(si().map(n=>on(n).runtimeCompositionId).filter(n=>!!n));for(let n of Object.keys(t))e.has(n)||delete t[n]}function ko(t,e=Tl(t)){let n=new Map,i=new Map;for(let r of t){let{authoredCompositionId:o,runtimeCompositionId:s}=on(r),l=_l(r);if(!o){i.set(r,{authoredCompositionId:null,runtimeCompositionId:s});continue}let a=(e.get(o)||0)>1,c=s||o;if(l){let u=a?(n.get(o)||0)+1:0;a&&n.set(o,u),c=a?Fl(o,u):o,a?r.setAttribute("data-hf-original-composition-id",o):r.removeAttribute("data-hf-original-composition-id"),r.setAttribute("data-composition-id",c),s&&s!==c&&window.__hfVariablesByComp&&delete window.__hfVariablesByComp[s]}i.set(r,{authoredCompositionId:o,runtimeCompositionId:c})}return i}async function oi(t){let e=null;t.authoredCompositionId&&(e=Array.from(t.sourceNode.querySelectorAll("[data-composition-id]")).find(x=>x.getAttribute("data-composition-id")===t.authoredCompositionId)??null);let n=e??t.sourceNode,i=e?.getAttribute("data-composition-id")?.trim()||t.authoredCompositionId||null,r=t.runtimeCompositionId||i||null,o=e?.getAttribute("id")?.trim()||null,s=r?`[data-composition-id="${CSS.escape(r)}"]`:void 0;if(t.headLinks)for(let f of t.headLinks){let x=f.getAttribute("href")||"";x&&(document.head.querySelector(`link[href="${CSS.escape(x)}"]`)||document.head.appendChild(f.cloneNode(!0)))}if(t.headStyles)for(let f of t.headStyles){let x=f.cloneNode(!0);x instanceof HTMLStyleElement&&(i&&(x.textContent=ni(x.textContent||"",i,s,o)),document.head.appendChild(x),t.injectedStyles.push(x))}let l=Array.from(n.querySelectorAll("style"));for(let f of l){let x=f.cloneNode(!0);x instanceof HTMLStyleElement&&(i&&(x.textContent=ni(x.textContent||"",i,s,o)),document.head.appendChild(x),t.injectedStyles.push(x))}let a=[];if(t.headScripts)for(let f of t.headScripts){let x=f.getAttribute("type")?.trim()??"",F=f.getAttribute("src")?.trim()??"";if(F){let E=Co(F,t.compositionUrl);a.push({kind:"external",src:E,type:x})}else{let E=f.textContent?.trim()??"";E&&a.push({kind:"inline",content:E,type:x,scopeCompositionId:i})}}let c=Array.from(n.querySelectorAll("script")),u=[...a];for(let f of c){let x=f.getAttribute("type")?.trim()??"",F=f.getAttribute("src")?.trim()??"";if(F){let E=Co(F,t.compositionUrl);u.push({kind:"external",src:E,type:x})}else{let E=f.textContent?.trim()??"";E&&u.push({kind:"inline",content:E,type:x,scopeCompositionId:i})}f.parentNode?.removeChild(f)}let h=Array.from(n.querySelectorAll("style"));for(let f of h)f.parentNode?.removeChild(f);if(e){let f=e.getAttribute("data-width"),x=e.getAttribute("data-height"),F=t.parseDimensionPx(f),E=t.parseDimensionPx(x);f&&t.host.setAttribute("data-width",f),x&&t.host.setAttribute("data-height",x),F&&t.host instanceof HTMLElement&&(t.host.style.width=F),E&&t.host instanceof HTMLElement&&(t.host.style.height=E),e.hasAttribute("data-timeline-locked")&&t.host.setAttribute("data-timeline-locked",""),t.host.appendChild(Cl(e))}else t.hasTemplate?t.host.appendChild(document.importNode(n,!0)):t.host.innerHTML=t.fallbackBodyInnerHtml;if(r){let f={...t.declaredVariableDefaults??{},...Ml(t.host)};Object.keys(f).length>0?(window.__hfVariablesByComp||(window.__hfVariablesByComp={}),window.__hfVariablesByComp[r]=f):window.__hfVariablesByComp&&delete window.__hfVariablesByComp[r]}for(let f of u){let x=document.createElement("script");if(f.type&&(x.type=f.type),x.async=!1,f.kind==="external"?x.src=f.src:f.type.toLowerCase()==="module"?x.textContent=f.content:f.scopeCompositionId?x.textContent=wo(f.content,f.scopeCompositionId,"[HyperFrames] composition script error:",s,r||f.scopeCompositionId,o):x.textContent=`(function(){${f.content}})();`,document.body.appendChild(x),t.injectedScripts.push(x),f.kind==="external"){let F=await wl(x);F.status!=="load"&&t.onDiagnostic?.({code:"external_composition_script_load_issue",details:{hostCompositionId:t.authoredCompositionId,runtimeCompositionId:t.runtimeCompositionId,hostCompositionSrc:t.hostCompositionSrc,resolvedScriptSrc:f.src,loadStatus:F.status,elapsedMs:F.elapsedMs}})}}}async function _o(t){let e=si();if(To(),e.length===0)return;let n=ko(e),i=e.filter(r=>{if(r.hasAttribute("data-composition-src")||r.children.length>0)return!1;let o=n.get(r)?.authoredCompositionId;return o?!!document.querySelector(`template#${CSS.escape(o)}-template`):!1});if(i.length!==0)for(let r of i){let o=n.get(r),s=o?.authoredCompositionId;if(!s)continue;let l=document.querySelector(`template#${CSS.escape(s)}-template`);ri(r),await oi({host:r,authoredCompositionId:s,runtimeCompositionId:o?.runtimeCompositionId||s,hostCompositionSrc:`template#${s}-template`,sourceNode:l.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:null,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,onDiagnostic:t.onDiagnostic})}}async function vo(t){let e=si();if(To(),e.length===0)return;let n=ko(e),i=e.filter(r=>r.hasAttribute("data-composition-src"));i.length!==0&&await Promise.all(i.map(async r=>{let o=r.getAttribute("data-composition-src");if(!o)return;let s=n.get(r),l=s?.authoredCompositionId||null,a=s?.runtimeCompositionId||l||null,c=null;try{c=new URL(o,document.baseURI)}catch{c=null}ri(r);try{let u=l!=null?document.querySelector(`template#${CSS.escape(l)}-template`):null;if(u){await oi({host:r,authoredCompositionId:l,runtimeCompositionId:a,hostCompositionSrc:o,sourceNode:u.content,hasTemplate:!0,fallbackBodyInnerHtml:"",compositionUrl:c,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,onDiagnostic:t.onDiagnostic});return}let h=await fetch(o);if(!h.ok)throw new Error(`HTTP ${h.status}`);let f=await h.text(),F=new DOMParser().parseFromString(f,"text/html"),E=(l?F.querySelector(`template#${CSS.escape(l)}-template`):null)??F.querySelector("template"),S=E?E.content:F.body,D=E?void 0:Array.from(F.head.querySelectorAll("style")),L=E?void 0:Array.from(F.head.querySelectorAll("script")),R=E?void 0:Array.from(F.head.querySelectorAll(\'link[rel="stylesheet"], link[rel="preconnect"]\'));await oi({host:r,authoredCompositionId:l,runtimeCompositionId:a,hostCompositionSrc:o,sourceNode:S,hasTemplate:!!E,fallbackBodyInnerHtml:F.body.innerHTML,compositionUrl:c,injectedStyles:t.injectedStyles,injectedScripts:t.injectedScripts,parseDimensionPx:t.parseDimensionPx,headStyles:D,headScripts:L,headLinks:R,declaredVariableDefaults:ii(F.documentElement),onDiagnostic:t.onDiagnostic})}catch(u){t.onDiagnostic?.({code:"external_composition_load_failed",details:{hostCompositionId:l,runtimeCompositionId:a,hostCompositionSrc:o,errorMessage:u instanceof Error?u.message:"unknown_error"}}),ri(r)}}))}function vl(t){return t instanceof HTMLElement?t.dataset.captionWrapper!=="true"?t:t.querySelector(":scope > span")??null:null}function Rl(){let t=[],e=document.querySelectorAll(".caption-group");for(let n of e)for(let i of n.children){if(!(i instanceof HTMLElement))continue;let r=i.dataset.captionWrapper==="true"?i.querySelector(":scope > span"):i.tagName==="SPAN"?i:null;r&&t.push(r)}return t}function Ll(t){let e=t.parentElement;if(e?.dataset.captionWrapper==="true")return e;let n=document.createElement("span");return n.style.display="inline-block",n.dataset.captionWrapper="true",t.parentNode?.insertBefore(n,t),n.appendChild(t),n}function ai(){let t=window.gsap;t&&document.querySelectorAll(".caption-group").length!==0&&fetch("caption-overrides.json").then(e=>e.ok?e.json():null).then(e=>{if(!e||!Array.isArray(e)||e.length===0)return;let n=Rl();for(let i of e){let r=null;if(i.wordId&&(r=vl(document.getElementById(i.wordId))),!r&&i.wordIndex!==void 0&&(r=n[i.wordIndex]??null),!r)continue;let o={},s={};if(i.x!==void 0&&(o.x=i.x),i.y!==void 0&&(o.y=i.y),i.scale!==void 0&&(o.scale=i.scale),i.rotation!==void 0&&(o.rotation=i.rotation),i.opacity!==void 0&&(s.opacity=i.opacity),i.fontSize!==void 0&&(s.fontSize=`${i.fontSize}px`),i.fontWeight!==void 0&&(s.fontWeight=i.fontWeight),i.fontFamily!==void 0&&(s.fontFamily=i.fontFamily),i.activeColor||i.dimColor){let a=t.getTweensOf(r).filter(u=>u.vars.color!==void 0).sort((u,h)=>u.startTime()-h.startTime()),c=a.length>0?String(a[0].vars.color):"";for(let u of a)String(u.vars.color)===c?i.dimColor&&(u.vars.color=i.dimColor):i.activeColor&&(u.vars.color=i.activeColor);i.dimColor&&t.set(r,{color:i.dimColor})}if(Object.keys(s).length>0&&t.set(r,s),Object.keys(o).length>0){let l=Ll(r);t.set(l,o)}}}).catch(()=>{})}var sn=class{constructor(e){ge(this,"_baseTime",0);ge(this,"_playStartMs",null);ge(this,"_rate",1);ge(this,"_duration",1/0);ge(this,"_nowMs");ge(this,"_audioSource",null);this._baseTime=e?.initialTime??0,this._rate=e?.rate??1,this._duration=e?.duration??1/0,this._nowMs=e?.nowMs??(()=>performance.now())}now(){if(this._playStartMs===null)return this._baseTime;if(this._audioSource){let i=null;if("currentTimeSeconds"in this._audioSource)i=this._audioSource.currentTimeSeconds;else{let{el:r,compositionStart:o,mediaStart:s}=this._audioSource;!r.paused&&Number.isFinite(r.currentTime)&&(i=(r.currentTime-s)/(r.playbackRate>0?r.playbackRate:1)*this._rate+o)}if(i!==null)return Number.isFinite(this._duration)&&i>=this._duration?this._duration:Math.max(0,i)}let e=(this._nowMs()-this._playStartMs)/1e3,n=this._baseTime+e*this._rate;return Number.isFinite(this._duration)&&n>=this._duration?this._duration:Math.max(0,n)}play(){return this._playStartMs!==null||Number.isFinite(this._duration)&&this._baseTime>=this._duration?!1:(this._playStartMs=this._nowMs(),!0)}pause(){return this._playStartMs===null?!1:(this._baseTime=this.now(),this._playStartMs=null,!0)}seek(e){let n=Number.isFinite(this._duration)?Math.max(0,Math.min(e,this._duration)):Math.max(0,e);this._baseTime=n,this._playStartMs!==null&&(this._playStartMs=this._nowMs())}isPlaying(){return this._playStartMs!==null}setRate(e){let n=Number.isFinite(e)&&e>0?Math.max(.1,Math.min(5,e)):1;this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._rate=n}getRate(){return this._rate}setDuration(e){this._duration=Number.isFinite(e)&&e>0?e:1/0,this._baseTime>this._duration&&(this._baseTime=this._duration)}getDuration(){return this._duration}attachAudioSource(e){this._audioSource=e}detachAudioSource(){this._audioSource&&this._playStartMs!==null&&(this._baseTime=this.now(),this._playStartMs=this._nowMs()),this._audioSource=null}hasAudioSource(){return this._audioSource!==null}getSource(){if(this._audioSource&&this._playStartMs!==null){if("currentTimeSeconds"in this._audioSource)return"audio";let{el:e}=this._audioSource;if(!e.paused&&Number.isFinite(e.currentTime))return"audio"}return"monotonic"}snapshot(){return{time:this.now(),playing:this.isPlaying(),rate:this._rate,duration:this._duration,source:this.getSource()}}reachedEnd(){return Number.isFinite(this._duration)&&this.now()>=this._duration}};function Ro(t){return!Number.isFinite(t)||t<=0?1:t}function Dl(t,e){let{elapsed:n,mediaStart:i,scheduledAt:r,safeRate:o,clipDuration:s}=e,l=Number.isFinite(s)&&s>0,a=s*o;if(n>=0){let u=a-n;return l&&u<=0?!1:(l?t.start(0,n+i,u):t.start(0,n+i),!0)}let c=-n/o;return l?t.start(r+c,i,a):t.start(r+c,i),!0}var an=class{constructor(){ge(this,"_ctx",null);ge(this,"_bufferCache",new Map);ge(this,"_failedSrcs",new Set);ge(this,"_activeSources",[]);ge(this,"_masterGain",null);ge(this,"_rateAnchorCtx",0);ge(this,"_rateAnchorComp",0);ge(this,"_rate",1);ge(this,"_paused",!0);ge(this,"_playGeneration",0)}async init(){try{return this._ctx=new AudioContext,this._masterGain=this._ctx.createGain(),this._masterGain.connect(this._ctx.destination),!0}catch{return!1}}get context(){return this._ctx}getTime(){return!this._ctx||this._paused?-1:this._rateAnchorComp+(this._ctx.currentTime-this._rateAnchorCtx)*this._rate}async decodeAudioElement(e){let n=e.currentSrc||e.getAttribute("src");if(!n)return null;if(this._bufferCache.has(n))return this._bufferCache.get(n);if(this._failedSrcs.has(n)||!this._ctx)return null;try{let i=await fetch(n);if(!i.ok)return this._failedSrcs.add(n),v("webAudioTransport.fetch",new Error(`${i.status} ${n}`)),null;let r=await i.arrayBuffer(),o=await this._ctx.decodeAudioData(r);return this._bufferCache.set(n,o),o}catch(i){return this._failedSrcs.add(n),v("webAudioTransport.decode",i),null}}startGeneration(){return this._playGeneration+=1,this._playGeneration}currentGeneration(){return this._playGeneration}async schedulePlayback(e,n,i,r,o,s,l,a=1,c=Number.POSITIVE_INFINITY){if(!this._ctx||!this._masterGain||l!==this._playGeneration)return null;try{if(this._ctx.state==="suspended"&&await this._ctx.resume(),l!==this._playGeneration)return null;let u=Ro(a),h=this._ctx.createBufferSource();h.buffer=n,h.playbackRate.value=u;let f=this._ctx.createGain();f.gain.value=s,h.connect(f),f.connect(this._masterGain);let x=o-i,F=this._ctx.currentTime;if(this._rate=u,this._rateAnchorCtx=F,this._rateAnchorComp=o,!Dl(h,{elapsed:x,mediaStart:r,scheduledAt:F,safeRate:u,clipDuration:c}))return h.disconnect(),f.disconnect(),null;let E=e.muted;e.muted=!0;let S={el:e,sourceNode:h,gainNode:f,compositionStart:i,mediaStart:r,scheduledAt:F,priorMuted:E,bounded:Number.isFinite(c)&&c>0};return this._activeSources.push(S),this._paused=!1,h.addEventListener("ended",()=>{let D=this._activeSources.indexOf(S);D!==-1&&(this._activeSources.splice(D,1),e.muted=E,this._activeSources.length===0&&(this._paused=!0))}),S}catch(u){return v("webAudioTransport.schedule",u),null}}setRate(e){let n=Ro(e);if(n===this._rate)return!1;this._ctx&&!this._paused&&(this._rateAnchorComp=this.getTime(),this._rateAnchorCtx=this._ctx.currentTime),this._rate=n;for(let i of this._activeSources)try{i.sourceNode.playbackRate.value=n}catch(r){v("webAudioTransport.setRate",r)}return!0}hasBoundedActiveSources(){return this._activeSources.some(e=>e.bounded)}stopAll(){for(let e of this._activeSources){try{e.sourceNode.stop(),e.sourceNode.disconnect(),e.gainNode.disconnect()}catch{}e.el.muted=e.priorMuted}this._activeSources=[],this._paused=!0}setVolume(e){this._masterGain&&(this._masterGain.gain.value=Math.max(0,Math.min(1,e)))}setElementVolume(e,n){let i=Math.max(0,Math.min(1,n));for(let r of this._activeSources)if(r.el===e)try{r.gainNode.gain.value=i}catch(o){v("webAudioTransport.setElementVolume",o)}}setMuted(e){this._masterGain&&(this._masterGain.gain.value=e?0:1)}isActive(){return this._activeSources.length>0&&!this._paused}destroy(){if(this.stopAll(),this._bufferCache.clear(),this._ctx)try{this._ctx.close()}catch{}this._ctx=null,this._masterGain=null}};var Lo="data-hf-studio-manual-edit-gesture";var Do="data-hf-authored-duration",Bo="data-hf-authored-end";function Io(){let t=ji(),e=null,n=null,i=[],r=new Set,o=null;if(typeof window.__hfRuntimeTeardown=="function")try{window.__hfRuntimeTeardown()}catch(d){v("runtime.init.site1",d)}document.documentElement&&(document.documentElement.style.margin="0",document.documentElement.style.padding="0",document.documentElement.style.overflow="hidden"),document.body&&(document.body.style.margin="0",document.body.style.padding="0",document.body.style.overflow="hidden"),window.__timelines=window.__timelines||{};let s=d=>{i.push(d)},l=(d,p,m)=>{let y=m??`${d}:${JSON.stringify(p)}`;r.has(y)||(r.add(y),Ee({source:"hf-preview",type:"diagnostic",code:d,details:p}))},a=d=>{let p={scale:1,focusX:960,focusY:540},m=[],y=[],A={time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying(),renderMode:!1,timelineDirty:!1};return{play:d.play,pause:d.pause,seek:d.seek,getTime:d.getTime,getDuration:d.getDuration,isPlaying:d.isPlaying,getMainTimeline:()=>null,getElementBounds:()=>{},getElementsAtPoint:()=>{},setElementPosition:()=>{},previewElementPosition:()=>{},setElementKeyframes:()=>{},setElementScale:()=>{},setElementFontSize:()=>{},setElementTextContent:()=>{},setElementTextColor:()=>{},setElementTextShadow:()=>{},setElementTextFontWeight:()=>{},setElementTextFontFamily:()=>{},setElementTextOutline:()=>{},setElementTextHighlight:()=>{},setElementVolume:()=>{},setStageZoom:()=>{},getStageZoom:()=>p,setStageZoomKeyframes:()=>{},getStageZoomKeyframes:()=>m,addElement:()=>!1,removeElement:()=>!1,updateElementTiming:()=>!1,setElementTiming:()=>{},updateElementSrc:()=>!1,updateElementLayer:()=>!1,updateElementBasePosition:()=>!1,markTimelineDirty:()=>{},isTimelineDirty:()=>!1,rebuildTimeline:()=>{},ensureTimeline:()=>{},enableRenderMode:()=>{},disableRenderMode:()=>{},renderSeek:d.renderSeek,getElementVisibility:()=>({visible:!1}),getVisibleElements:()=>y,getRenderState:()=>({...A,time:d.getTime(),duration:d.getDuration(),isPlaying:d.isPlaying()})}},c=1/60,u=.75,h=2,f=.05,x=100,F=240,E=d=>{if(d instanceof Error)return d.message||String(d);if(typeof d=="string")return d;try{return JSON.stringify(d)}catch{return String(d??"")}},S=d=>{let p=d.toLowerCase();return p.includes("cannot read properties of null")||p.includes("cannot set properties of null")?{code:"runtime_null_dom_access",category:"dom-null-access"}:p.includes("failed to execute \'queryselector\'")?{code:"runtime_invalid_selector",category:"selector-invalid"}:p.includes("is not defined")?{code:"runtime_reference_missing",category:"reference-missing"}:{code:"runtime_script_error",category:"script-error"}},D=d=>{if(d==null||d.trim()==="")return null;let p=Number.parseFloat(d);return!Number.isFinite(p)||p<=0?null:`${p}px`},L=()=>{let d=document.querySelector(\'[data-composition-id][data-root="true"]\');if(d instanceof HTMLElement)return d;let p=Array.from(document.querySelectorAll("[data-composition-id]"));return p.length===0?null:p.find(m=>!m.parentElement?.closest("[data-composition-id]"))??p[0]??null},R=()=>{let d=L();if(!d)return;let p=D(d.getAttribute("data-width")),m=D(d.getAttribute("data-height"));p&&(d.style.width=p),m&&(d.style.height=m),p&&d.style.setProperty("--comp-width",p),m&&d.style.setProperty("--comp-height",m)},ne=()=>{let d=L(),p=Array.from(document.querySelectorAll("[data-composition-id]")).filter(m=>m.hasAttribute("data-duration")||m.hasAttribute("data-end"));for(let m of p){if(d&&m===d)continue;let y=m.getAttribute("data-duration"),A=m.getAttribute("data-end");y!=null&&!m.hasAttribute(Do)&&m.setAttribute(Do,y),A!=null&&!m.hasAttribute(Bo)&&m.setAttribute(Bo,A),m.removeAttribute("data-duration"),m.removeAttribute("data-end")}},q=()=>{let d=L();if(!d)return;d.style.position||(d.style.position="relative"),d.style.overflow="hidden";let p=D(d.getAttribute("data-width")),m=D(d.getAttribute("data-height"));p&&(d.style.width=p),m&&(d.style.height=m);let y=Array.from(d.children);for(let A of y){let M=A.tagName.toLowerCase();if(M==="script"||M==="style"||M==="link"||M==="meta"||!A.hasAttribute("data-start"))continue;let B=(A.style.top==="0px"||A.style.top==="0")&&(A.style.left==="0px"||A.style.left==="0")&&A.style.width==="100%"&&A.style.height==="100%",j=/translate\\(\\s*-50%\\s*,\\s*-50%\\s*\\)/.test(A.style.transform);if(B&&j&&!A.hasAttribute("data-width")&&!A.hasAttribute("data-height")){let qe=A.style.top,he=A.style.left,dt=A.style.width,se=A.style.height;A.style.top="",A.style.left="",A.style.width="",A.style.height="";let X=window.getComputedStyle(A);X.top!=="auto"||X.bottom!=="auto"||X.left!=="auto"||X.right!=="auto"||X.width!=="0px"||X.height!=="0px"||(A.style.top=qe,A.style.left=he,A.style.width=dt,A.style.height=se)}let Z=window.getComputedStyle(A),ee=Z.position;if(ee!=="absolute"&&ee!=="fixed"&&(A.style.position="absolute"),!!A.style.top||!!A.style.bottom||Z.top!=="auto"||Z.bottom!=="auto"||(A.style.top="0"),!!A.style.left||!!A.style.right||Z.left!=="auto"||Z.right!=="auto"||(A.style.left="0"),M!=="audio"){let qe=D(A.getAttribute("data-width")),he=D(A.getAttribute("data-height")),dt=Z.width!=="0px"&&Z.width!=="auto",se=Z.height!=="0px"&&Z.height!=="auto";qe?!A.style.width&&!dt&&(A.style.width=qe):!A.style.width&&Z.width==="0px"&&(A.style.width="100%"),he?!A.style.height&&!se&&(A.style.height=he):!A.style.height&&Z.height==="0px"&&(A.style.height="100%")}}},C=(d,p=0,m)=>Qe({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:m?.includeAuthoredTimingAttrs??!0}).resolveStartForElement(d,p),g=(d,p)=>Qe({timelineRegistry:window.__timelines??{},includeAuthoredTimingAttrs:p?.includeAuthoredTimingAttrs??!0}).resolveDurationForElement(d),b=(d,p=0)=>!d.hasAttribute("data-hf-auto-start")&&d.hasAttribute("data-start")?Math.max(0,Number(d.getAttribute("data-start")??0)||0):C(d,p),N=(d,p)=>{let m=d.parentElement;for(;m&&m!==p;){if(m.hasAttribute("data-start"))return m;m=m.parentElement}return null},w=(d,p)=>{let m=d.tagName.toLowerCase();if(m==="script"||m==="style"||m==="link"||m==="meta")return!1;let y=m==="video"||m==="audio"?b(d,0):C(d,0),A=g(d),M=d.getAttribute("data-composition-id");if(M){let j=(window.__timelines??{})[M],Z=null;if(j&&typeof j.duration=="function"){let oe=Number(j.duration());Number.isFinite(oe)&&oe>0&&(Z=oe)}let ee=d.hasAttribute("data-composition-src")||d.hasAttribute("data-composition-file");A!=null&&A>0&&Z!=null&&!ee?A=Math.min(A,Z):(A==null||A<=0)&&Z!=null&&(A=Z)}let B=A!=null&&A>0?y+A:Number.POSITIVE_INFINITY;return p>=y&&(Number.isFinite(B)?p<=B:!0)},_=!!document.querySelector("[data-composition-src]"),H=!1;{let d=document.querySelectorAll("[data-composition-id]:not([data-composition-src])");for(let p of d){let m=p.getAttribute("data-composition-id");if(m&&p.children.length===0&&document.querySelector(`template#${CSS.escape(m)}-template`)){H=!0;break}}}let J=!_&&!H,W=d=>{if(!d||typeof d.duration!="function")return null;try{let p=Number(d.duration());return Number.isFinite(p)?Math.max(0,p):null}catch{return null}},T=d=>typeof d=="number"&&Number.isFinite(d)&&d>c,de=d=>{let p=Number(d.getAttribute("data-duration"));if(Number.isFinite(p)&&p>0)return p;let m=Number(d.getAttribute("data-playback-start")??d.getAttribute("data-media-start")??"0"),y=Number.isFinite(m)?Math.max(0,m):0;return Number.isFinite(d.duration)&&d.duration>y?Math.max(0,d.duration-y):null},be=()=>{let d=Array.from(document.querySelectorAll("video[data-start], audio[data-start]"));if(d.length===0)return null;let p=0;for(let m of d){let y=b(m,0);if(!Number.isFinite(y))continue;let A=de(m);A==null||A<=c||(p=Math.max(p,Math.max(0,y)+A))}return p>c?p:null},G=()=>{let d=L();if(!d)return null;let p=window.__timelines??{},m=Qe({timelineRegistry:p,includeAuthoredTimingAttrs:!0}),y=0,A=Number.parseFloat(d.getAttribute("data-duration")??"");Number.isFinite(A)&&A>0&&(y=A);let M=Array.from(d.querySelectorAll("[data-composition-id][data-start]"));for(let B of M){if(!(B instanceof Element)||B.parentElement?.closest("[data-composition-id]")!==d)continue;let Z=m.resolveStartForElement(B,0),ee=m.resolveDurationForElement(B);!Number.isFinite(Z)||ee==null||ee<=0||(y=Math.max(y,Math.max(0,Z)+ee))}return y>c?y:null},Q=()=>{let d=be();return typeof d!="number"||!Number.isFinite(d)||d<=c?null:d},U=d=>T(d)?Math.max(c,d*u):c,Y=(d,p=0)=>{let m=W(d),y=Q(),A=G(),M=Math.max(y??0,A??0),B=Number.isFinite(p)&&p>c?p:0,j=0;return T(m)?j=Math.max(m,M,B):T(M)?j=Math.max(M,B):j=B,j>0?Math.max(0,j):0},we=()=>{let d=window.__timelines??{},p=Qe({timelineRegistry:d,includeAuthoredTimingAttrs:!0}),m=Q(),y=G(),A=Math.max(m??0,y??0)||null,M=U(A),B=se=>{let X=document.querySelector(`[data-composition-id="${CSS.escape(se)}"]`);return X?p.resolveStartForElement(X,0):0},j=se=>{let X=window.gsap;if(!X||typeof X.timeline!="function")return null;let fe=X.timeline({paused:!0});for(let xe of se)fe.add(xe.timeline,B(xe.compositionId));return fe},Z=(se,X)=>{if(!T(se))return null;let fe=window.gsap;if(!fe||typeof fe.timeline!="function")return null;let xe=fe.timeline({paused:!0});if(X)try{xe.add(X,0)}catch(le){v("runtime.init.site2",le)}let Se=xe;if(typeof Se.to=="function")try{Se.to({},{duration:se})}catch(le){v("runtime.init.site3",le)}return xe},ee=(se,X)=>{let fe=se;if(typeof fe.getChildren!="function")return[];try{let xe=fe.getChildren(!0,!0,!0)??[];if(!Array.isArray(xe))return[];let Se=[];for(let le of X)if(!xe.some(_e=>_e===le.timeline))try{let _e=B(le.compositionId);se.add(le.timeline,_e),Se.push(le.compositionId)}catch(_e){v("runtime.init.site4",_e)}return Se}catch{return[]}},oe=L(),ce=oe?.getAttribute("data-composition-id")??null;if(!ce)return{timeline:null};let Ce=d[ce]??null,he=(()=>{if(!oe)return[];let se=new Set,X=Array.from(oe.querySelectorAll("[data-composition-id]")),fe=[];for(let xe of X){let Se=xe.getAttribute("data-composition-id");if(!Se||Se===ce||se.has(Se))continue;se.add(Se);let le=d[Se]??null;if(!le||typeof le.play!="function"||typeof le.pause!="function")continue;let Me=W(le);fe.push({compositionId:Se,timeline:le,durationSeconds:Me??0})}return fe})(),dt=se=>{for(let X of se){let fe=X.timeline;if(typeof fe.paused=="function")try{fe.paused(!1)}catch(xe){v("runtime.init.site5",xe)}}};if(he.length>0&&dt(he),Ce){let se=he.length>0?ee(Ce,he):[];if((he.length>0||!document.querySelector("[data-composition-id]:not([data-composition-id=\'"+ce+"\'])"))&&(Ae=!0),se.length>0)try{let le=Ce.time();Ce.seek(le,!1)}catch{}let X=W(Ce);if(!T(X)&&he.length>0){let le=he.map(ps=>ps.compositionId),Me=j(he),_e=W(Me);if(Me&&T(_e))return{timeline:Me,selectedTimelineIds:le,selectedDurationSeconds:_e,mediaDurationFloorSeconds:m,diagnostics:{code:"root_timeline_unusable_fallback",details:{rootCompositionId:ce,rootDurationSeconds:X,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:M,selectedDurationSeconds:_e,mediaDurationFloorSeconds:m,authoredCompositionDurationFloorSeconds:y,selectedTimelineIds:le,autoNestedChildren:se}}};let yn=Z(A??0,Ce),Sn=W(yn);if(yn&&T(Sn))return{timeline:yn,selectedTimelineIds:[ce],selectedDurationSeconds:Sn,mediaDurationFloorSeconds:m,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:ce,rootDurationSeconds:X,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:m,authoredCompositionDurationFloorSeconds:y,selectedDurationSeconds:Sn,selectedTimelineIds:[ce],autoNestedChildren:se}}}}if(!T(X)&&he.length===0){let le=Z(A??0,Ce),Me=W(le);if(le&&T(Me))return{timeline:le,selectedTimelineIds:[ce],selectedDurationSeconds:Me,mediaDurationFloorSeconds:m,diagnostics:{code:"root_timeline_unusable_media_floor_fallback",details:{rootCompositionId:ce,rootDurationSeconds:X,fallbackKind:"media_duration_floor",mediaDurationFloorSeconds:m,authoredCompositionDurationFloorSeconds:y,selectedDurationSeconds:Me,selectedTimelineIds:[ce]}}}}let fe=oe?.getAttribute("data-duration"),xe=fe?parseFloat(fe):null,Se=Math.max(T(xe)?xe:0,y??0);if(Se>0&&T(Se)&&T(X)&&Se>=X+.5){let le=Ce;if(typeof le.to=="function")try{le.to({},{duration:0},Se)}catch(_e){v("runtime.init.site6",_e)}let Me=W(Ce);if(T(Me))return{timeline:Ce,selectedTimelineIds:[ce],selectedDurationSeconds:Me,mediaDurationFloorSeconds:m,diagnostics:{code:"root_timeline_padded_to_declared_duration",details:{rootCompositionId:ce,rootDurationSeconds:X,rootDeclaredDur:xe,authoredCompositionDurationFloorSeconds:y,newDur:Me}}}}return{timeline:Ce,selectedTimelineIds:[ce],selectedDurationSeconds:X,mediaDurationFloorSeconds:m,diagnostics:se.length>0?{code:"root_timeline_auto_nested_children",details:{rootCompositionId:ce,selectedDurationSeconds:X,autoNestedChildren:se}}:void 0}}if(he.length>0){let se=he.map(xe=>xe.compositionId),X=j(he),fe=W(X);if(X)return{timeline:X,selectedTimelineIds:se,selectedDurationSeconds:fe,mediaDurationFloorSeconds:m,diagnostics:{code:"root_timeline_missing_fallback",details:{rootCompositionId:ce,fallbackKind:"composite_by_root_children",minCandidateDurationSeconds:M,selectedDurationSeconds:fe,mediaDurationFloorSeconds:m,selectedTimelineIds:se}}}}return{timeline:null}},Ae=!1,O=()=>{if(!J)return!1;let d=t.capturedTimeline,p=W(d),m=T(p);if(d&&m&&Ae)return!1;let y=we();if(!y.timeline)return!1;if(d&&d===y.timeline)return typeof d.timeScale=="function"&&d.timeScale(t.playbackRate),!1;t.capturedTimeline=y.timeline,typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);let A=Y(t.capturedTimeline,0);if(A>0){try{I.setDuration(A)}catch{}t.capturedTimeline.pause();let M=Math.max(0,t.currentTime||0);typeof t.capturedTimeline.totalTime=="function"&&t.capturedTimeline.totalTime(M,!1);let B=window.__hfStudioManualEditsApply;typeof B=="function"&&B()}if(y.diagnostics&&Ee({source:"hf-preview",type:"diagnostic",code:y.diagnostics.code,details:y.diagnostics.details}),Ee({source:"hf-preview",type:"diagnostic",code:"timeline_bound",details:{selectedTimelineIds:y.selectedTimelineIds??[],selectedDurationSeconds:y.selectedDurationSeconds??null,mediaDurationFloorSeconds:y.mediaDurationFloorSeconds??null}}),window.parent!==window){let M=L(),B=A>0?A:0,j=String(B>0?B:1),Z=new Set;if(t.capturedTimeline.getChildren)try{for(let ee of t.capturedTimeline.getChildren(!0))if(typeof ee.targets=="function")for(let oe of ee.targets())oe instanceof HTMLElement&&oe!==M&&(oe.hasAttribute("data-start")||N(oe,M)||Z.has(oe)||(Z.add(oe),oe.setAttribute("data-start","0"),oe.setAttribute("data-duration",j)))}catch{}if(M instanceof HTMLElement)for(let ee of M.querySelectorAll("[id]"))ee instanceof HTMLElement&&ee!==M&&(ee.hasAttribute("data-start")||N(ee,M)||Z.has(ee)||ee.tagName==="SCRIPT"||ee.tagName==="STYLE"||ee.tagName==="LINK"||(Z.add(ee),ee.setAttribute("data-start","0"),ee.setAttribute("data-duration",j)))}for(let M of Ne)ye.delete(M),xi(M);return!0};window.__hfForceTimelineRebind=()=>{Ae=!1,O()};let k=()=>{let d=L();if(!(d instanceof HTMLElement))return;let p=d.getBoundingClientRect(),m=Number(d.getAttribute("data-width")),y=Number(d.getAttribute("data-height")),A=window.getComputedStyle(d),M=Number.isFinite(m)&&m>0&&Number.isFinite(y)&&y>0,B=p.width<=0||p.height<=0||d.clientWidth<=0||d.clientHeight<=0;!M||!B||l("root_stage_layout_zero",{compositionId:d.getAttribute("data-composition-id")??null,declaredWidth:m,declaredHeight:y,rectWidth:Math.round(p.width),rectHeight:Math.round(p.height),clientWidth:d.clientWidth,clientHeight:d.clientHeight,display:A.display,visibility:A.visibility,overflow:A.overflow},`root-stage-layout-zero:${d.getAttribute("data-composition-id")??"unknown"}`)},P=()=>{t.tornDown||(o!=null&&window.cancelAnimationFrame(o),o=window.requestAnimationFrame(()=>{o=null,k()}))},ie=()=>{e=d=>{let p=E(d.error??d.message).slice(0,F);if(!p)return;let m=S(p);Ee({source:"hf-preview",type:"diagnostic",code:m.code,details:{category:m.category,message:p,filename:d.filename||null,line:Number.isFinite(d.lineno)?d.lineno:null,column:Number.isFinite(d.colno)?d.colno:null}})},n=d=>{let p=E(d.reason).slice(0,F);if(!p)return;let m=S(p);Ee({source:"hf-preview",type:"diagnostic",code:`${m.code}_unhandled_rejection`,details:{category:`${m.category}-unhandled-rejection`,message:p}})},window.addEventListener("error",e),window.addEventListener("unhandledrejection",n)},ae=()=>{let d=Array.from(document.querySelectorAll("img, video, audio, source, link[rel=\'stylesheet\']"));for(let m of d){let y=()=>{if(!(m instanceof Element))return;let A=m.tagName.toLowerCase(),M=m.getAttribute("src")??m.getAttribute("href")??m.getAttribute("poster")??null,B=A==="link"?"runtime_stylesheet_load_failed":"runtime_asset_load_failed";l(B,{tagName:A,assetUrl:M,currentSrc:(m instanceof HTMLImageElement||m instanceof HTMLMediaElement)&&m.currentSrc||null,readyState:m instanceof HTMLMediaElement?m.readyState:null,networkState:m instanceof HTMLMediaElement?m.networkState:null},`${B}:${A}:${M??"unknown"}`)};m.addEventListener("error",y),s(()=>{m.removeEventListener("error",y)})}let p=document.fonts;p&&p.ready.then(()=>{if(t.tornDown)return;let m=Array.from(p).filter(y=>y.status==="error").map(y=>y.family).filter(y=>!!y).slice(0,10);m.length!==0&&l("runtime_font_load_issue",{failedFamilies:m,totalFaces:Array.from(p).length},`runtime-font-load-issue:${m.join("|")}`)}).catch(()=>{})},z=(d,p)=>{if(!d.timeline)return!1;let m=t.capturedTimeline;if(m&&m===d.timeline)return!1;let y=Math.max(0,t.currentTime||0),A=t.isPlaying;t.capturedTimeline=d.timeline,typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);try{t.capturedTimeline.pause(),t.capturedTimeline.seek(y,!1),A&&t.capturedTimeline.play()}catch(M){v("runtime.init.site7",M)}return Ee({source:"hf-preview",type:"diagnostic",code:"timeline_loop_guard_rebind",details:{reason:p,previousTime:y,selectedTimelineIds:d.selectedTimelineIds??[],selectedDurationSeconds:d.selectedDurationSeconds??null,mediaDurationFloorSeconds:d.mediaDurationFloorSeconds??null}}),!0},V=null,$=!1,Ne=new Set,ye=new WeakMap,He=()=>{t.tornDown||(V!=null&&window.clearTimeout(V),V=window.setTimeout(()=>{if(t.tornDown)return;V=null;let d=we();if(!d.timeline||!T(d.mediaDurationFloorSeconds??null))return;if(!t.capturedTimeline){O()&&(Xe(),Te(!0));return}if($)return;let m=W(t.capturedTimeline),y=d.selectedDurationSeconds??W(d.timeline);T(y)&&(!T(m)||y>=m+f)&&z(d,"manual")&&($=!0,Ee({source:"hf-preview",type:"diagnostic",code:"timeline_rebind_after_media_metadata",details:{previousDurationSeconds:m??null,selectedDurationSeconds:y??null,selectedTimelineIds:d.selectedTimelineIds??[],mediaDurationFloorSeconds:d.mediaDurationFloorSeconds??null}}),Xe(),Te(!0))},x))},Be=()=>{for(let d of Ne)d.removeEventListener("loadedmetadata",He),d.removeEventListener("durationchange",He);Ne.clear()},mn=()=>{if(t.tornDown)return;let d=Array.from(document.querySelectorAll("video, audio"));for(let p of d){if(Ne.has(p))continue;Ne.add(p);let m=Number.parseFloat(p.dataset.volume??"");Number.isFinite(m)&&(p.volume=Math.max(0,Math.min(1,m))),p.addEventListener("loadedmetadata",He),p.addEventListener("durationchange",He),p.preload!=="auto"&&(p.preload="auto"),p.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&p.load(),xi(p)}},xi=d=>{ye.has(d)||Hi(d,t.capturedTimeline,Y(t.capturedTimeline,0),ye)},We=()=>{let d=M=>{let B=M.closest("[data-composition-id]"),j=B?C(B,0):null,Z=B?g(B,{includeAuthoredTimingAttrs:!0}):null;return{compositionRoot:B,inheritedStart:j,inheritedDuration:Z}},p=Wi({shouldIncludeElement:M=>M.hasAttribute("data-start")||!!d(M).compositionRoot,resolveStartSeconds:M=>{let B=d(M);return b(M,B.inheritedStart??0)},resolveDurationSeconds:M=>{let B=d(M),j=b(M,B.inheritedStart??0),Z=Number.parseFloat(M.dataset.playbackStart??M.dataset.mediaStart??"0")||0,ee=B.inheritedStart!=null&&B.inheritedDuration!=null&&B.inheritedDuration>0?Math.max(0,B.inheritedStart+B.inheritedDuration-j):null,oe=Number.isFinite(M.duration)&&M.duration>Z?Math.max(0,M.duration-Z):null,ce=Number.parseFloat(M.dataset.duration??""),Ce=Number.isFinite(ce)&&ce>0?ce:null,qe=[oe,ee,Ce].filter(he=>he!=null);return qe.length>0?Math.min(...qe):null}});for(let M of p.mediaClips){let B=ye.get(M.el);B&&(M.volumeKeyframes=B)}let m=t.mediaForceSyncNextTick;m&&(t.mediaForceSyncNextTick=!1),qi({clips:p.mediaClips,timeSeconds:t.currentTime,playing:t.isPlaying,playbackRate:t.playbackRate,outputMuted:t.mediaOutputMuted||pe.isActive(),userMuted:t.bridgeMuted,userVolume:t.bridgeVolume,forceSync:m,onElementVolume:(M,B)=>pe.setElementVolume(M,B),onAutoplayBlocked:()=>{t.mediaAutoplayBlockedPosted||(t.mediaAutoplayBlockedPosted=!0,Ee({source:"hf-preview",type:"media-autoplay-blocked"}))}});let y=Array.from(document.querySelectorAll("[data-start]")),A=L();for(let M of y){if(!(M instanceof HTMLElement))continue;let B=w(M,t.currentTime);if(B&&window.parent!==window){let j=M.parentElement;for(;j&&j!==A;){if(j instanceof HTMLElement&&j.hasAttribute("data-start")&&!w(j,t.currentTime)){B=!1;break}j=j.parentElement}}M.style.visibility=B?"visible":"hidden"}},Te=d=>{let p=Math.max(0,Math.round((t.currentTime||0)*t.canonicalFps)),m=Date.now();(d||p!==t.bridgeLastPostedFrame||t.isPlaying!==t.bridgeLastPostedPlaying||t.bridgeMuted!==t.bridgeLastPostedMuted||m-t.bridgeLastPostedAt>=t.bridgeMaxPostIntervalMs)&&(t.bridgeLastPostedFrame=p,t.bridgeLastPostedPlaying=t.isPlaying,t.bridgeLastPostedMuted=t.bridgeMuted,t.bridgeLastPostedAt=m,Ee({source:"hf-preview",type:"state",frame:p,isPlaying:t.isPlaying,muted:t.bridgeMuted,playbackRate:t.playbackRate}))},Xe=()=>{ne(),R(),q();let d=L();if(d){let m=D(d.getAttribute("data-width")),y=D(d.getAttribute("data-height")),A=m?parseInt(m,10):0,M=y?parseInt(y,10):0;A>0&&M>0&&Ee({source:"hf-preview",type:"stage-size",width:A,height:M})}O();let p=Ji({canonicalFps:t.canonicalFps});window.__clipManifest=p,Ee(p),P()},Ie=(d,p=0)=>{for(let m of t.deterministicAdapters){try{d==="discover"&&m.discover(),d==="pause"&&m.pause(),d==="play"&&m.play&&m.play()}catch(y){v("runtime.init.site8",y)}if(d==="discover")try{m.seek({time:p})}catch(y){v("runtime.init.site9",y)}}},ct=()=>{window.__renderReady=!1};if(J)ai();else{let d={injectedStyles:t.injectedCompStyles,injectedScripts:t.injectedCompScripts,parseDimensionPx:D,onDiagnostic:({code:p,details:m})=>{Ee({source:"hf-preview",type:"diagnostic",code:p,details:m})}};vo(d).then(()=>_o(d)).finally(()=>{J=!0,mn(),ae(),ai(),ct()})}let Wt=Ui({postMessage:d=>Ee(d)});Wt.installPickerApi();let pn=d=>{let p=Number(d);!Number.isFinite(p)||p<=0?t.playbackRate=1:t.playbackRate=Math.max(.1,Math.min(5,p)),t.mediaForceSyncNextTick=!0,t.capturedTimeline&&typeof t.capturedTimeline.timeScale=="function"&&t.capturedTimeline.timeScale(t.playbackRate);let m=document.querySelectorAll("video, audio");for(let y of m)if(y instanceof HTMLMediaElement)try{y.playbackRate=t.playbackRate}catch(A){v("runtime.init.site10",A)}},me=zi({getTimeline:()=>t.capturedTimeline,setTimeline:d=>{t.capturedTimeline=d},getTimelineRegistry:()=>window.__timelines??{},getIsPlaying:()=>t.isPlaying,setIsPlaying:d=>{t.isPlaying!==d&&(t.mediaForceSyncNextTick=!0),t.isPlaying=d},getPlaybackRate:()=>t.playbackRate,setPlaybackRate:pn,getCanonicalFps:()=>t.canonicalFps,onSyncMedia:(d,p)=>{t.currentTime=Math.max(0,Number(d)||0),t.isPlaying!==p&&(t.mediaForceSyncNextTick=!0),t.isPlaying=p,We()},onStatePost:Te,onDeterministicSeek:d=>{for(let p of t.deterministicAdapters)try{p.seek({time:Number(d)||0})}catch(m){v("runtime.init.site11",m)}},onDeterministicPause:()=>Ie("pause"),onDeterministicPlay:()=>Ie("play"),onRenderFrameSeek:()=>{},onShowNativeVideos:()=>{},getSafeDuration:()=>Y(t.capturedTimeline,0)});window.__player=a(me),window.__playerReady=!0,wi(Ee),ft("composition_loaded",{duration:me.getDuration(),compositionId:document.querySelector("[data-composition-id]")?.getAttribute("data-composition-id")??null}),t.controlBridgeHandler=Fi({onPlay:()=>{me.play(),ft("composition_played",{time:me.getTime()})},onPause:()=>{me.pause(),ft("composition_paused",{time:me.getTime()})},onSeek:(d,p)=>{let m=Math.max(0,d)/t.canonicalFps;me.seek(m),ft("composition_seeked",{time:m})},onSetMuted:d=>{t.bridgeMuted=d;let p=d||t.mediaOutputMuted;pe.setMuted(p);let m=document.querySelectorAll("video, audio");for(let y of m)y instanceof HTMLMediaElement&&(y.muted=p||y.defaultMuted)},onSetVolume:d=>{t.bridgeVolume=d,pe.setVolume(d);let p=document.querySelectorAll("video, audio");for(let m of p){if(!(m instanceof HTMLMediaElement))continue;let y=parseFloat(m.dataset.volume??""),A=Number.isFinite(y)?y:1;m.volume=A*d}},onSetMediaOutputMuted:d=>{t.mediaOutputMuted=d;let p=d||t.bridgeMuted;pe.setMuted(p);let m=document.querySelectorAll("video, audio");for(let y of m)y instanceof HTMLMediaElement&&(y.muted=p||y.defaultMuted)},onSetPlaybackRate:d=>{pn(d),t.transportClock&&t.transportClock.setRate(t.playbackRate),bi()},onTick:()=>{if(t.tornDown||!I.isPlaying())return;let d=I.now();if(t.currentTime=d,Ke(d),I.reachedEnd()){pe.stopAll(),I.detachAudioSource(),I.pause(),t.isPlaying=!1;let p=I.getDuration();Number.isFinite(p)&&(I.seek(p),t.currentTime=p,Ke(p)),Ie("pause"),We(),Te(!0)}},onEnablePickMode:()=>Wt.enablePickMode(),onDisablePickMode:()=>Wt.disablePickMode()}),t.deterministicAdapters=[Oi(),Ni({resolveStartSeconds:d=>C(d,0)}),Mi(),_i(),Ri(),Li(),Ci({getTimeline:()=>t.capturedTimeline})],Bi(),Ii(),window.__hfReseekGpu=d=>{let p=Math.max(0,Number(d)||0);window.__hfThreeTime=p,window.__hfTypegpuTime=p,vi(p)},ie(),mn(),Ie("discover");let I=new sn;t.transportClock=I;let pe=new an,hn=!1;pe.init().then(d=>{hn=d});let us=()=>{let d=t.capturedTimeline,p=O();t.capturedTimeline&&(p||t.capturedTimeline!==d||!me._timeline)&&(me._timeline=t.capturedTimeline);let m=Y(t.capturedTimeline,0);m>0&&I.setDuration(m),Ie("discover",t.currentTime),window.__renderReady=!0,Xe(),Te(!0)};if(ct=()=>{if(!J||window.__hfTimelinesBuilding){window.__renderReady=!1;return}us()},window.__hfTimelinesBuilding){window.__renderReady=!1;let d=()=>{window.removeEventListener("hf-timelines-built",d),ct()};window.addEventListener("hf-timelines-built",d)}ct(),J&&setTimeout(()=>{ct()},0);let qt=0,xn=!1,cs=(d,p,m)=>{try{d.pause(),typeof d.totalTime=="function"?d.totalTime(p,!1):d.seek(p,!1)}catch(y){v(m,y)}},ds=d=>{let p=window.__timelines??{},m=L()?.getAttribute("data-composition-id")??null;for(let[y,A]of Object.entries(p)){if(!A||y===m)continue;let M=document.querySelector(`[data-composition-id="${CSS.escape(y)}"]`);if(!M)continue;let B=C(M,0);if(!Number.isFinite(B))continue;let j=g(M,{includeAuthoredTimingAttrs:!0}),Z=W(A),ee=j!=null&&j>0?j:Z,oe=Math.max(0,ee!=null&&ee>0?Math.min(ee,d-B):d-B);cs(A,oe,"runtime.init.transport.childTimeline")}},fs=d=>{let p=window.__timelines??{};for(let m of Object.values(p))if(!(!m||m===d))try{m.play()}catch(y){v("runtime.init.activateSiblings",y)}},Ke=(d,p)=>{let m=t.capturedTimeline;if(m){p?.activateChildren&&fs(m);try{typeof m.totalTime=="function"?m.totalTime(d,!1):m.seek(d,!1)}catch(y){v("runtime.init.transport.seek",y)}}else ds(d);for(let y of t.deterministicAdapters)try{y.seek({time:d})}catch(A){v("runtime.init.transport.adapter",A)}},ms=()=>{try{return document.querySelector(`[${Lo}]`)!=null}catch{return!1}},gi=()=>{if(!(t.tornDown||xn)){xn=!0;try{if(t.transportRafId=window.requestAnimationFrame(gi),qt+=1,qt%60===0&&!(I.isPlaying()&&t.capturedTimeline!=null&&I.now()<h)){let m=t.capturedTimeline;if(O()){t.capturedTimeline&&!me._timeline&&(me._timeline=t.capturedTimeline),t.capturedTimeline&&t.capturedTimeline!==m&&t.capturedTimeline.pause();let y=Y(t.capturedTimeline,0);y>0&&I.setDuration(y),Xe()}}if(qt%20===0&&Xe(),qt%30===0&&mn(),t.capturedTimeline){let p=Y(t.capturedTimeline,0);p>0&&I.setDuration(p)}if(I.isPlaying()&&!t.mediaOutputMuted)if(pe.isActive()&&pe.context){let p=pe.getTime();p>=0&&I.attachAudioSource({currentTimeSeconds:p})}else{let p=document.querySelectorAll("audio[data-start]"),m=!1;for(let y of p){if(!(y instanceof HTMLMediaElement)||!y.isConnected)continue;let A=Number.parseFloat(y.dataset.start??""),M=Number.parseFloat(y.dataset.duration??""),B=Number.isFinite(M)&&M>0?A+M:1/0,j=Number.parseFloat(y.dataset.playbackStart??y.dataset.mediaStart??"0")||0;if(Number.isFinite(A)&&t.currentTime>=A&&t.currentTime<=B){y.paused?!y.error&&y.readyState<HTMLMediaElement.HAVE_FUTURE_DATA&&(I.attachAudioSource({currentTimeSeconds:t.currentTime}),m=!0):(I.attachAudioSource({el:y,compositionStart:A,mediaStart:j}),m=!0);break}}!m&&I.hasAudioSource()&&I.detachAudioSource()}else I.hasAudioSource()&&I.detachAudioSource();let d=I.now();if(t.currentTime=d,(I.isPlaying()||!ms())&&Ke(d),I.isPlaying()&&I.reachedEnd()){pe.stopAll(),I.detachAudioSource(),I.pause(),t.isPlaying=!1;let p=I.getDuration();Number.isFinite(p)&&(I.seek(p),t.currentTime=p,Ke(p)),Ie("pause"),We(),Te(!0);return}I.isPlaying()&&We(),Te(!1)}finally{xn=!1}}},yi=d=>{let p=document.querySelectorAll("video, audio");for(let m of p){if(!(m instanceof HTMLMediaElement)||!m.isConnected)continue;let y=Number.parseFloat(m.dataset.start??"");if(!Number.isFinite(y))continue;let A=Number.parseFloat(m.dataset.duration??""),M=Number.isFinite(A)&&A>0?y+A:1/0;if(d<y||d>=M)continue;let B=Number.parseFloat(m.dataset.playbackStart??m.dataset.mediaStart??"0")||0,j=d-y+B;if(j>=0)try{m.currentTime=j}catch{}}},Si=()=>{let d=pe.startGeneration(),p=document.querySelectorAll("audio[data-start]");for(let m of p){if(!(m instanceof HTMLMediaElement)||!m.isConnected)continue;let y=Number.parseFloat(m.dataset.start??"");if(!Number.isFinite(y))continue;let A=Number.parseFloat(m.dataset.playbackStart??m.dataset.mediaStart??"0")||0,M=Number.parseFloat(m.dataset.volume??""),B=Number.isFinite(M)?M:1,j=Number.parseFloat(m.dataset.duration??""),Z=Number.isFinite(j)&&j>0?j:Number.POSITIVE_INFINITY,ee=m.closest("[data-composition-id]");if(ee){let oe=C(ee,0),ce=g(ee,{includeAuthoredTimingAttrs:!0});ce!=null&&ce>0&&(Z=Math.min(Z,Math.max(0,oe+ce-y)))}pe.decodeAudioElement(m).then(oe=>{!oe||!I.isPlaying()||pe.schedulePlayback(m,oe,y,A,I.now(),B*t.bridgeVolume,d,t.playbackRate,Z)})}},bi=()=>{pe.setRate(t.playbackRate)&&hn&&I.isPlaying()&&pe.hasBoundedActiveSources()&&(pe.stopAll(),Si())};if(me.play=()=>{let d=t.capturedTimeline;if(I.isPlaying())return;let p=Y(d,0);if(p>0)I.setDuration(p),I.reachedEnd()&&(I.seek(0),t.currentTime=0,Ke(0));else{let m=L(),y=Number(m?.getAttribute("data-duration")??0);y>0&&I.setDuration(y)}d&&d.pause(),I.play()&&(t.isPlaying=!0,t.mediaForceSyncNextTick=!0,yi(I.now()),hn&&Si(),Ie("play"),We(),Te(!0))},me.pause=()=>{if(!I.isPlaying())return;pe.stopAll(),I.detachAudioSource(),I.pause(),t.isPlaying=!1,t.currentTime=I.now(),t.mediaForceSyncNextTick=!0,yi(t.currentTime);let d=t.capturedTimeline;d&&d.pause(),Ie("pause"),We(),Te(!0)},me.seek=d=>{let p=tt(Math.max(0,Number(d)||0),t.canonicalFps);pe.stopAll(),I.detachAudioSource(),I.isPlaying()&&I.pause(),I.seek(p),t.currentTime=I.now(),t.isPlaying=!1,t.mediaForceSyncNextTick=!0;let y=t.capturedTimeline;y&&y.pause(),Ke(t.currentTime),Ie("pause"),We(),Te(!0)},me.renderSeek=d=>{let p=tt(Math.max(0,Number(d)||0),t.canonicalFps);I.isPlaying()&&I.pause(),I.seek(p),t.currentTime=I.now(),t.isPlaying=!1,t.mediaForceSyncNextTick=!0,Ke(t.currentTime,{activateChildren:!0}),We(),Te(!0)},me.getTime=()=>I.now(),me.getDuration=()=>{let d=I.getDuration();return Number.isFinite(d)?d:0},me.isPlaying=()=>I.isPlaying(),me.setPlaybackRate=d=>{pn(d),I.setRate(t.playbackRate),bi()},t.capturedTimeline){let d=Y(t.capturedTimeline,0);d>0&&I.setDuration(d),t.capturedTimeline.pause()}let Ai=window.__player;if(Ai){let d=["play","pause","seek","renderSeek","getTime","getDuration","isPlaying"];for(let p of d)Object.defineProperty(Ai,p,{get:()=>me[p],set:m=>{me[p]=m},configurable:!0})}t.transportRafId=window.requestAnimationFrame(gi),Xe(),Te(!0);let gn=()=>{if(!t.tornDown){t.tornDown=!0,t.transportRafId!=null&&(window.cancelAnimationFrame(t.transportRafId),t.transportRafId=null),t.transportClock=null,pe.destroy(),V!=null&&(window.clearTimeout(V),V=null),o!=null&&(window.cancelAnimationFrame(o),o=null),Be(),t.controlBridgeHandler&&(window.removeEventListener("message",t.controlBridgeHandler),t.controlBridgeHandler=null),e&&(window.removeEventListener("error",e),e=null),n&&(window.removeEventListener("unhandledrejection",n),n=null),t.beforeUnloadHandler&&(window.removeEventListener("beforeunload",t.beforeUnloadHandler),t.beforeUnloadHandler=null),Wt.disablePickMode();for(let d of t.deterministicAdapters)if(!(!d||typeof d.revert!="function"))try{d.revert()}catch(p){v("runtime.init.site12",p)}t.deterministicAdapters=[];for(let d of i.splice(0))try{d()}catch(p){v("runtime.init.site13",p)}for(let d of t.injectedCompStyles)try{d.remove()}catch(p){v("runtime.init.site14",p)}t.injectedCompStyles=[];for(let d of t.injectedCompScripts)try{d.remove()}catch(p){v("runtime.init.site15",p)}t.injectedCompScripts=[],t.capturedTimeline=null,window.__hfRuntimeTeardown===gn&&(window.__hfRuntimeTeardown=null)}};window.__hfRuntimeTeardown=gn,t.beforeUnloadHandler=gn,window.addEventListener("beforeunload",t.beforeUnloadHandler)}var Oo=["BN","BN","BN","BN","BN","BN","BN","BN","BN","S","B","S","WS","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","B","B","B","S","WS","ON","ON","ET","ET","ET","ON","ON","ON","ON","ON","ES","CS","ES","CS","CS","EN","EN","EN","EN","EN","EN","EN","EN","EN","EN","CS","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","ON","ON","ON","BN","BN","BN","BN","BN","BN","B","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","BN","CS","ON","ET","ET","ET","ET","ON","ON","ON","ON","L","ON","ON","BN","ON","ON","ET","ET","EN","EN","ON","L","ON","ON","ON","EN","L","ON","ON","ON","ON","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","L","ON","L","L","L","L","L","L","L","L"],li=[[697,698,"ON"],[706,719,"ON"],[722,735,"ON"],[741,749,"ON"],[751,767,"ON"],[768,879,"NSM"],[884,885,"ON"],[894,894,"ON"],[900,901,"ON"],[903,903,"ON"],[1014,1014,"ON"],[1155,1161,"NSM"],[1418,1418,"ON"],[1421,1422,"ON"],[1423,1423,"ET"],[1424,1424,"R"],[1425,1469,"NSM"],[1470,1470,"R"],[1471,1471,"NSM"],[1472,1472,"R"],[1473,1474,"NSM"],[1475,1475,"R"],[1476,1477,"NSM"],[1478,1478,"R"],[1479,1479,"NSM"],[1480,1535,"R"],[1536,1541,"AN"],[1542,1543,"ON"],[1544,1544,"AL"],[1545,1546,"ET"],[1547,1547,"AL"],[1548,1548,"CS"],[1549,1549,"AL"],[1550,1551,"ON"],[1552,1562,"NSM"],[1563,1610,"AL"],[1611,1631,"NSM"],[1632,1641,"AN"],[1642,1642,"ET"],[1643,1644,"AN"],[1645,1647,"AL"],[1648,1648,"NSM"],[1649,1749,"AL"],[1750,1756,"NSM"],[1757,1757,"AN"],[1758,1758,"ON"],[1759,1764,"NSM"],[1765,1766,"AL"],[1767,1768,"NSM"],[1769,1769,"ON"],[1770,1773,"NSM"],[1774,1775,"AL"],[1776,1785,"EN"],[1786,1808,"AL"],[1809,1809,"NSM"],[1810,1839,"AL"],[1840,1866,"NSM"],[1867,1957,"AL"],[1958,1968,"NSM"],[1969,1983,"AL"],[1984,2026,"R"],[2027,2035,"NSM"],[2036,2037,"R"],[2038,2041,"ON"],[2042,2044,"R"],[2045,2045,"NSM"],[2046,2069,"R"],[2070,2073,"NSM"],[2074,2074,"R"],[2075,2083,"NSM"],[2084,2084,"R"],[2085,2087,"NSM"],[2088,2088,"R"],[2089,2093,"NSM"],[2094,2136,"R"],[2137,2139,"NSM"],[2140,2143,"R"],[2144,2191,"AL"],[2192,2193,"AN"],[2194,2198,"AL"],[2199,2207,"NSM"],[2208,2249,"AL"],[2250,2273,"NSM"],[2274,2274,"AN"],[2275,2306,"NSM"],[2362,2362,"NSM"],[2364,2364,"NSM"],[2369,2376,"NSM"],[2381,2381,"NSM"],[2385,2391,"NSM"],[2402,2403,"NSM"],[2433,2433,"NSM"],[2492,2492,"NSM"],[2497,2500,"NSM"],[2509,2509,"NSM"],[2530,2531,"NSM"],[2546,2547,"ET"],[2555,2555,"ET"],[2558,2558,"NSM"],[2561,2562,"NSM"],[2620,2620,"NSM"],[2625,2626,"NSM"],[2631,2632,"NSM"],[2635,2637,"NSM"],[2641,2641,"NSM"],[2672,2673,"NSM"],[2677,2677,"NSM"],[2689,2690,"NSM"],[2748,2748,"NSM"],[2753,2757,"NSM"],[2759,2760,"NSM"],[2765,2765,"NSM"],[2786,2787,"NSM"],[2801,2801,"ET"],[2810,2815,"NSM"],[2817,2817,"NSM"],[2876,2876,"NSM"],[2879,2879,"NSM"],[2881,2884,"NSM"],[2893,2893,"NSM"],[2901,2902,"NSM"],[2914,2915,"NSM"],[2946,2946,"NSM"],[3008,3008,"NSM"],[3021,3021,"NSM"],[3059,3064,"ON"],[3065,3065,"ET"],[3066,3066,"ON"],[3072,3072,"NSM"],[3076,3076,"NSM"],[3132,3132,"NSM"],[3134,3136,"NSM"],[3142,3144,"NSM"],[3146,3149,"NSM"],[3157,3158,"NSM"],[3170,3171,"NSM"],[3192,3198,"ON"],[3201,3201,"NSM"],[3260,3260,"NSM"],[3276,3277,"NSM"],[3298,3299,"NSM"],[3328,3329,"NSM"],[3387,3388,"NSM"],[3393,3396,"NSM"],[3405,3405,"NSM"],[3426,3427,"NSM"],[3457,3457,"NSM"],[3530,3530,"NSM"],[3538,3540,"NSM"],[3542,3542,"NSM"],[3633,3633,"NSM"],[3636,3642,"NSM"],[3647,3647,"ET"],[3655,3662,"NSM"],[3761,3761,"NSM"],[3764,3772,"NSM"],[3784,3790,"NSM"],[3864,3865,"NSM"],[3893,3893,"NSM"],[3895,3895,"NSM"],[3897,3897,"NSM"],[3898,3901,"ON"],[3953,3966,"NSM"],[3968,3972,"NSM"],[3974,3975,"NSM"],[3981,3991,"NSM"],[3993,4028,"NSM"],[4038,4038,"NSM"],[4141,4144,"NSM"],[4146,4151,"NSM"],[4153,4154,"NSM"],[4157,4158,"NSM"],[4184,4185,"NSM"],[4190,4192,"NSM"],[4209,4212,"NSM"],[4226,4226,"NSM"],[4229,4230,"NSM"],[4237,4237,"NSM"],[4253,4253,"NSM"],[4957,4959,"NSM"],[5008,5017,"ON"],[5120,5120,"ON"],[5760,5760,"WS"],[5787,5788,"ON"],[5906,5908,"NSM"],[5938,5939,"NSM"],[5970,5971,"NSM"],[6002,6003,"NSM"],[6068,6069,"NSM"],[6071,6077,"NSM"],[6086,6086,"NSM"],[6089,6099,"NSM"],[6107,6107,"ET"],[6109,6109,"NSM"],[6128,6137,"ON"],[6144,6154,"ON"],[6155,6157,"NSM"],[6158,6158,"BN"],[6159,6159,"NSM"],[6277,6278,"NSM"],[6313,6313,"NSM"],[6432,6434,"NSM"],[6439,6440,"NSM"],[6450,6450,"NSM"],[6457,6459,"NSM"],[6464,6464,"ON"],[6468,6469,"ON"],[6622,6655,"ON"],[6679,6680,"NSM"],[6683,6683,"NSM"],[6742,6742,"NSM"],[6744,6750,"NSM"],[6752,6752,"NSM"],[6754,6754,"NSM"],[6757,6764,"NSM"],[6771,6780,"NSM"],[6783,6783,"NSM"],[6832,6877,"NSM"],[6880,6891,"NSM"],[6912,6915,"NSM"],[6964,6964,"NSM"],[6966,6970,"NSM"],[6972,6972,"NSM"],[6978,6978,"NSM"],[7019,7027,"NSM"],[7040,7041,"NSM"],[7074,7077,"NSM"],[7080,7081,"NSM"],[7083,7085,"NSM"],[7142,7142,"NSM"],[7144,7145,"NSM"],[7149,7149,"NSM"],[7151,7153,"NSM"],[7212,7219,"NSM"],[7222,7223,"NSM"],[7376,7378,"NSM"],[7380,7392,"NSM"],[7394,7400,"NSM"],[7405,7405,"NSM"],[7412,7412,"NSM"],[7416,7417,"NSM"],[7616,7679,"NSM"],[8125,8125,"ON"],[8127,8129,"ON"],[8141,8143,"ON"],[8157,8159,"ON"],[8173,8175,"ON"],[8189,8190,"ON"],[8192,8202,"WS"],[8203,8205,"BN"],[8207,8207,"R"],[8208,8231,"ON"],[8232,8232,"WS"],[8233,8233,"B"],[8234,8238,"BN"],[8239,8239,"CS"],[8240,8244,"ET"],[8245,8259,"ON"],[8260,8260,"CS"],[8261,8286,"ON"],[8287,8287,"WS"],[8288,8303,"BN"],[8304,8304,"EN"],[8308,8313,"EN"],[8314,8315,"ES"],[8316,8318,"ON"],[8320,8329,"EN"],[8330,8331,"ES"],[8332,8334,"ON"],[8352,8399,"ET"],[8400,8432,"NSM"],[8448,8449,"ON"],[8451,8454,"ON"],[8456,8457,"ON"],[8468,8468,"ON"],[8470,8472,"ON"],[8478,8483,"ON"],[8485,8485,"ON"],[8487,8487,"ON"],[8489,8489,"ON"],[8494,8494,"ET"],[8506,8507,"ON"],[8512,8516,"ON"],[8522,8525,"ON"],[8528,8543,"ON"],[8585,8587,"ON"],[8592,8721,"ON"],[8722,8722,"ES"],[8723,8723,"ET"],[8724,9013,"ON"],[9083,9108,"ON"],[9110,9257,"ON"],[9280,9290,"ON"],[9312,9351,"ON"],[9352,9371,"EN"],[9450,9899,"ON"],[9901,10239,"ON"],[10496,11123,"ON"],[11126,11263,"ON"],[11493,11498,"ON"],[11503,11505,"NSM"],[11513,11519,"ON"],[11647,11647,"NSM"],[11744,11775,"NSM"],[11776,11869,"ON"],[11904,11929,"ON"],[11931,12019,"ON"],[12032,12245,"ON"],[12272,12287,"ON"],[12288,12288,"WS"],[12289,12292,"ON"],[12296,12320,"ON"],[12330,12333,"NSM"],[12336,12336,"ON"],[12342,12343,"ON"],[12349,12351,"ON"],[12441,12442,"NSM"],[12443,12444,"ON"],[12448,12448,"ON"],[12539,12539,"ON"],[12736,12773,"ON"],[12783,12783,"ON"],[12829,12830,"ON"],[12880,12895,"ON"],[12924,12926,"ON"],[12977,12991,"ON"],[13004,13007,"ON"],[13175,13178,"ON"],[13278,13279,"ON"],[13311,13311,"ON"],[19904,19967,"ON"],[42128,42182,"ON"],[42509,42511,"ON"],[42607,42610,"NSM"],[42611,42611,"ON"],[42612,42621,"NSM"],[42622,42623,"ON"],[42654,42655,"NSM"],[42736,42737,"NSM"],[42752,42785,"ON"],[42888,42888,"ON"],[43010,43010,"NSM"],[43014,43014,"NSM"],[43019,43019,"NSM"],[43045,43046,"NSM"],[43048,43051,"ON"],[43052,43052,"NSM"],[43064,43065,"ET"],[43124,43127,"ON"],[43204,43205,"NSM"],[43232,43249,"NSM"],[43263,43263,"NSM"],[43302,43309,"NSM"],[43335,43345,"NSM"],[43392,43394,"NSM"],[43443,43443,"NSM"],[43446,43449,"NSM"],[43452,43453,"NSM"],[43493,43493,"NSM"],[43561,43566,"NSM"],[43569,43570,"NSM"],[43573,43574,"NSM"],[43587,43587,"NSM"],[43596,43596,"NSM"],[43644,43644,"NSM"],[43696,43696,"NSM"],[43698,43700,"NSM"],[43703,43704,"NSM"],[43710,43711,"NSM"],[43713,43713,"NSM"],[43756,43757,"NSM"],[43766,43766,"NSM"],[43882,43883,"ON"],[44005,44005,"NSM"],[44008,44008,"NSM"],[44013,44013,"NSM"],[64285,64285,"R"],[64286,64286,"NSM"],[64287,64296,"R"],[64297,64297,"ES"],[64298,64335,"R"],[64336,64450,"AL"],[64451,64466,"ON"],[64467,64829,"AL"],[64830,64847,"ON"],[64848,64911,"AL"],[64912,64913,"ON"],[64914,64967,"AL"],[64968,64975,"ON"],[64976,65007,"BN"],[65008,65020,"AL"],[65021,65023,"ON"],[65024,65039,"NSM"],[65040,65049,"ON"],[65056,65071,"NSM"],[65072,65103,"ON"],[65104,65104,"CS"],[65105,65105,"ON"],[65106,65106,"CS"],[65108,65108,"ON"],[65109,65109,"CS"],[65110,65118,"ON"],[65119,65119,"ET"],[65120,65121,"ON"],[65122,65123,"ES"],[65124,65126,"ON"],[65128,65128,"ON"],[65129,65130,"ET"],[65131,65131,"ON"],[65136,65278,"AL"],[65279,65279,"BN"],[65281,65282,"ON"],[65283,65285,"ET"],[65286,65290,"ON"],[65291,65291,"ES"],[65292,65292,"CS"],[65293,65293,"ES"],[65294,65295,"CS"],[65296,65305,"EN"],[65306,65306,"CS"],[65307,65312,"ON"],[65339,65344,"ON"],[65371,65381,"ON"],[65504,65505,"ET"],[65506,65508,"ON"],[65509,65510,"ET"],[65512,65518,"ON"],[65520,65528,"BN"],[65529,65533,"ON"],[65534,65535,"BN"],[65793,65793,"ON"],[65856,65932,"ON"],[65936,65948,"ON"],[65952,65952,"ON"],[66045,66045,"NSM"],[66272,66272,"NSM"],[66273,66299,"EN"],[66422,66426,"NSM"],[67584,67870,"R"],[67871,67871,"ON"],[67872,68096,"R"],[68097,68099,"NSM"],[68100,68100,"R"],[68101,68102,"NSM"],[68103,68107,"R"],[68108,68111,"NSM"],[68112,68151,"R"],[68152,68154,"NSM"],[68155,68158,"R"],[68159,68159,"NSM"],[68160,68324,"R"],[68325,68326,"NSM"],[68327,68408,"R"],[68409,68415,"ON"],[68416,68863,"R"],[68864,68899,"AL"],[68900,68903,"NSM"],[68904,68911,"AL"],[68912,68921,"AN"],[68922,68927,"AL"],[68928,68937,"AN"],[68938,68968,"R"],[68969,68973,"NSM"],[68974,68974,"ON"],[68975,69215,"R"],[69216,69246,"AN"],[69247,69290,"R"],[69291,69292,"NSM"],[69293,69311,"R"],[69312,69327,"AL"],[69328,69336,"ON"],[69337,69369,"AL"],[69370,69375,"NSM"],[69376,69423,"R"],[69424,69445,"AL"],[69446,69456,"NSM"],[69457,69487,"AL"],[69488,69505,"R"],[69506,69509,"NSM"],[69510,69631,"R"],[69633,69633,"NSM"],[69688,69702,"NSM"],[69714,69733,"ON"],[69744,69744,"NSM"],[69747,69748,"NSM"],[69759,69761,"NSM"],[69811,69814,"NSM"],[69817,69818,"NSM"],[69826,69826,"NSM"],[69888,69890,"NSM"],[69927,69931,"NSM"],[69933,69940,"NSM"],[70003,70003,"NSM"],[70016,70017,"NSM"],[70070,70078,"NSM"],[70089,70092,"NSM"],[70095,70095,"NSM"],[70191,70193,"NSM"],[70196,70196,"NSM"],[70198,70199,"NSM"],[70206,70206,"NSM"],[70209,70209,"NSM"],[70367,70367,"NSM"],[70371,70378,"NSM"],[70400,70401,"NSM"],[70459,70460,"NSM"],[70464,70464,"NSM"],[70502,70508,"NSM"],[70512,70516,"NSM"],[70587,70592,"NSM"],[70606,70606,"NSM"],[70608,70608,"NSM"],[70610,70610,"NSM"],[70625,70626,"NSM"],[70712,70719,"NSM"],[70722,70724,"NSM"],[70726,70726,"NSM"],[70750,70750,"NSM"],[70835,70840,"NSM"],[70842,70842,"NSM"],[70847,70848,"NSM"],[70850,70851,"NSM"],[71090,71093,"NSM"],[71100,71101,"NSM"],[71103,71104,"NSM"],[71132,71133,"NSM"],[71219,71226,"NSM"],[71229,71229,"NSM"],[71231,71232,"NSM"],[71264,71276,"ON"],[71339,71339,"NSM"],[71341,71341,"NSM"],[71344,71349,"NSM"],[71351,71351,"NSM"],[71453,71453,"NSM"],[71455,71455,"NSM"],[71458,71461,"NSM"],[71463,71467,"NSM"],[71727,71735,"NSM"],[71737,71738,"NSM"],[71995,71996,"NSM"],[71998,71998,"NSM"],[72003,72003,"NSM"],[72148,72151,"NSM"],[72154,72155,"NSM"],[72160,72160,"NSM"],[72193,72198,"NSM"],[72201,72202,"NSM"],[72243,72248,"NSM"],[72251,72254,"NSM"],[72263,72263,"NSM"],[72273,72278,"NSM"],[72281,72283,"NSM"],[72330,72342,"NSM"],[72344,72345,"NSM"],[72544,72544,"NSM"],[72546,72548,"NSM"],[72550,72550,"NSM"],[72752,72758,"NSM"],[72760,72765,"NSM"],[72850,72871,"NSM"],[72874,72880,"NSM"],[72882,72883,"NSM"],[72885,72886,"NSM"],[73009,73014,"NSM"],[73018,73018,"NSM"],[73020,73021,"NSM"],[73023,73029,"NSM"],[73031,73031,"NSM"],[73104,73105,"NSM"],[73109,73109,"NSM"],[73111,73111,"NSM"],[73459,73460,"NSM"],[73472,73473,"NSM"],[73526,73530,"NSM"],[73536,73536,"NSM"],[73538,73538,"NSM"],[73562,73562,"NSM"],[73685,73692,"ON"],[73693,73696,"ET"],[73697,73713,"ON"],[78912,78912,"NSM"],[78919,78933,"NSM"],[90398,90409,"NSM"],[90413,90415,"NSM"],[92912,92916,"NSM"],[92976,92982,"NSM"],[94031,94031,"NSM"],[94095,94098,"NSM"],[94178,94178,"ON"],[94180,94180,"NSM"],[113821,113822,"NSM"],[113824,113827,"BN"],[117760,117973,"ON"],[118e3,118009,"EN"],[118010,118012,"ON"],[118016,118451,"ON"],[118458,118480,"ON"],[118496,118512,"ON"],[118528,118573,"NSM"],[118576,118598,"NSM"],[119143,119145,"NSM"],[119155,119162,"BN"],[119163,119170,"NSM"],[119173,119179,"NSM"],[119210,119213,"NSM"],[119273,119274,"ON"],[119296,119361,"ON"],[119362,119364,"NSM"],[119365,119365,"ON"],[119552,119638,"ON"],[120513,120513,"ON"],[120539,120539,"ON"],[120571,120571,"ON"],[120597,120597,"ON"],[120629,120629,"ON"],[120655,120655,"ON"],[120687,120687,"ON"],[120713,120713,"ON"],[120745,120745,"ON"],[120771,120771,"ON"],[120782,120831,"EN"],[121344,121398,"NSM"],[121403,121452,"NSM"],[121461,121461,"NSM"],[121476,121476,"NSM"],[121499,121503,"NSM"],[121505,121519,"NSM"],[122880,122886,"NSM"],[122888,122904,"NSM"],[122907,122913,"NSM"],[122915,122916,"NSM"],[122918,122922,"NSM"],[123023,123023,"NSM"],[123184,123190,"NSM"],[123566,123566,"NSM"],[123628,123631,"NSM"],[123647,123647,"ET"],[124140,124143,"NSM"],[124398,124399,"NSM"],[124643,124643,"NSM"],[124646,124646,"NSM"],[124654,124655,"NSM"],[124661,124661,"NSM"],[124928,125135,"R"],[125136,125142,"NSM"],[125143,125251,"R"],[125252,125258,"NSM"],[125259,126063,"R"],[126064,126143,"AL"],[126144,126207,"R"],[126208,126287,"AL"],[126288,126463,"R"],[126464,126703,"AL"],[126704,126705,"ON"],[126706,126719,"AL"],[126720,126975,"R"],[126976,127019,"ON"],[127024,127123,"ON"],[127136,127150,"ON"],[127153,127167,"ON"],[127169,127183,"ON"],[127185,127221,"ON"],[127232,127242,"EN"],[127243,127247,"ON"],[127279,127279,"ON"],[127338,127343,"ON"],[127405,127405,"ON"],[127584,127589,"ON"],[127744,128728,"ON"],[128732,128748,"ON"],[128752,128764,"ON"],[128768,128985,"ON"],[128992,129003,"ON"],[129008,129008,"ON"],[129024,129035,"ON"],[129040,129095,"ON"],[129104,129113,"ON"],[129120,129159,"ON"],[129168,129197,"ON"],[129200,129211,"ON"],[129216,129217,"ON"],[129232,129240,"ON"],[129280,129623,"ON"],[129632,129645,"ON"],[129648,129660,"ON"],[129664,129674,"ON"],[129678,129734,"ON"],[129736,129736,"ON"],[129741,129756,"ON"],[129759,129770,"ON"],[129775,129784,"ON"],[129792,129938,"ON"],[129940,130031,"ON"],[130032,130041,"EN"],[130042,130042,"ON"],[131070,131071,"BN"],[196606,196607,"BN"],[262142,262143,"BN"],[327678,327679,"BN"],[393214,393215,"BN"],[458750,458751,"BN"],[524286,524287,"BN"],[589822,589823,"BN"],[655358,655359,"BN"],[720894,720895,"BN"],[786430,786431,"BN"],[851966,851967,"BN"],[917502,917759,"BN"],[917760,917999,"NSM"],[918e3,921599,"BN"],[983038,983039,"BN"],[1048574,1048575,"BN"],[1114110,1114111,"BN"]];function Bl(t){if(t<=255)return Oo[t];let e=0,n=li.length-1;for(;e<=n;){let i=e+n>>1,r=li[i];if(t<r[0]){n=i-1;continue}if(t>r[1]){e=i+1;continue}return r[2]}return"L"}function Il(t){let e=t.length;if(e===0)return null;let n=new Array(e),i=!1;for(let c=0;c<e;){let u=t.charCodeAt(c),h=u,f=1;if(u>=55296&&u<=56319&&c+1<e){let F=t.charCodeAt(c+1);F>=56320&&F<=57343&&(h=(u-55296<<10)+(F-56320)+65536,f=2)}let x=Bl(h);(x==="R"||x==="AL"||x==="AN")&&(i=!0);for(let F=0;F<f;F++)n[c+F]=x;c+=f}if(!i)return null;let r=0;for(let c=0;c<e;c++){let u=n[c];if(u==="L"){r=0;break}if(u==="R"||u==="AL"){r=1;break}}let o=new Int8Array(e);for(let c=0;c<e;c++)o[c]=r;let s=r&1?"R":"L",l=s,a=l;for(let c=0;c<e;c++)n[c]==="NSM"?n[c]=a:a=n[c];a=l;for(let c=0;c<e;c++){let u=n[c];u==="EN"?n[c]=a==="AL"?"AN":"EN":(u==="R"||u==="L"||u==="AL")&&(a=u)}for(let c=0;c<e;c++)n[c]==="AL"&&(n[c]="R");for(let c=1;c<e-1;c++)n[c]==="ES"&&n[c-1]==="EN"&&n[c+1]==="EN"&&(n[c]="EN"),n[c]==="CS"&&(n[c-1]==="EN"||n[c-1]==="AN")&&n[c+1]===n[c-1]&&(n[c]=n[c-1]);for(let c=0;c<e;c++){if(n[c]!=="EN")continue;let u;for(u=c-1;u>=0&&n[u]==="ET";u--)n[u]="EN";for(u=c+1;u<e&&n[u]==="ET";u++)n[u]="EN"}for(let c=0;c<e;c++){let u=n[c];(u==="WS"||u==="ES"||u==="ET"||u==="CS")&&(n[c]="ON")}a=l;for(let c=0;c<e;c++){let u=n[c];u==="EN"?n[c]=a==="L"?"L":"EN":(u==="R"||u==="L")&&(a=u)}for(let c=0;c<e;c++){if(n[c]!=="ON")continue;let u=c+1;for(;u<e&&n[u]==="ON";)u++;let h=c>0?n[c-1]:l,f=u<e?n[u]:l,x=h!=="L"?"R":"L";if(x===(f!=="L"?"R":"L"))for(let E=c;E<u;E++)n[E]=x;c=u-1}for(let c=0;c<e;c++)n[c]==="ON"&&(n[c]=s);for(let c=0;c<e;c++){let u=n[c];(o[c]&1)===0?u==="R"?o[c]++:(u==="AN"||u==="EN")&&(o[c]+=2):(u==="L"||u==="AN"||u==="EN")&&o[c]++}return o}function Po(t,e){let n=Il(t);if(n===null)return null;let i=new Int8Array(e.length);for(let r=0;r<e.length;r++)i[r]=n[e[r]];return i}var Ol=/[ \\t\\n\\r\\f]+/g,Pl=/[\\t\\n\\r\\f]| {2,}|^ | $/;function Hl(t){let e=t??"normal";return e==="pre-wrap"?{mode:e,preserveOrdinarySpaces:!0,preserveHardBreaks:!0}:{mode:e,preserveOrdinarySpaces:!1,preserveHardBreaks:!1}}function Wl(t){if(!Pl.test(t))return t;let e=t.replace(Ol," ");return e.charCodeAt(0)===32&&(e=e.slice(1)),e.length>0&&e.charCodeAt(e.length-1)===32&&(e=e.slice(0,-1)),e}function ql(t){return/[\\r\\f]/.test(t)?t.replace(/\\r\\n/g,`\n`).replace(/[\\r\\f]/g,`\n`):t.replace(/\\r\\n/g,`\n`)}var ui=null,Ul;function Vl(){return ui===null&&(ui=new Intl.Segmenter(Ul,{granularity:"word"})),ui}var zl=/\\p{Script=Arabic}/u,ln=/\\p{M}/u,Go=/\\p{Nd}/u;function Ho(t){return zl.test(t)}function Wo(t){return t>=19968&&t<=40959||t>=13312&&t<=19903||t>=131072&&t<=173791||t>=173824&&t<=177983||t>=177984&&t<=178207||t>=178208&&t<=183983||t>=183984&&t<=191471||t>=191472&&t<=192093||t>=194560&&t<=195103||t>=196608&&t<=201551||t>=201552&&t<=205743||t>=205744&&t<=210041||t>=63744&&t<=64255||t>=12288&&t<=12351||t>=12352&&t<=12447||t>=12448&&t<=12543||t>=44032&&t<=55215||t>=65280&&t<=65519}function Le(t){for(let e=0;e<t.length;e++){let n=t.charCodeAt(e);if(!(n<12288)){if(n>=55296&&n<=56319&&e+1<t.length){let i=t.charCodeAt(e+1);if(i>=56320&&i<=57343){let r=(n-55296<<10)+(i-56320)+65536;if(Wo(r))return!0;e++;continue}}if(Wo(n))return!0}}return!1}function jl(t){let e=dn(t);return e!==null&&(cn.has(e)||Ge.has(e))}var Gl=new Set(["\\xA0","\\u202F","\\u2060","\\uFEFF"]);function $l(t){return Le(t)}function Kl(t){let e=dn(t);return e!==null&&Gl.has(e)}function un(t){return!jl(t)&&!Kl(t)}var cn=new Set(["\\uFF0C","\\uFF0E","\\uFF01","\\uFF1A","\\uFF1B","\\uFF1F","\\u3001","\\u3002","\\u30FB","\\uFF09","\\u3015","\\u3009","\\u300B","\\u300D","\\u300F","\\u3011","\\u3017","\\u3019","\\u301B","\\u30FC","\\u3005","\\u303B","\\u309D","\\u309E","\\u30FD","\\u30FE"]),Ht=new Set([\'"\',"(","[","{","\\u201C","\\u2018","\\xAB","\\u2039","\\uFF08","\\u3014","\\u3008","\\u300A","\\u300C","\\u300E","\\u3010","\\u3016","\\u3018","\\u301A"]),di=new Set(["\'","\\u2019"]),Ge=new Set([".",",","!","?",":",";","\\u060C","\\u061B","\\u061F","\\u0964","\\u0965","\\u104A","\\u104B","\\u104C","\\u104D","\\u104F",")","]","}","%",\'"\',"\\u201D","\\u2019","\\xBB","\\u203A","\\u2026"]),Jl=new Set([":",".","\\u060C","\\u061B"]),Ql=new Set(["\\u104F"]),Yl=new Set(["\\u201D","\\u2019","\\xBB","\\u203A","\\u300D","\\u300F","\\u3011","\\u300B","\\u3009","\\u3015","\\uFF09"]);function Zl(t){if(fi(t))return!0;let e=!1;for(let n of t){if(Ge.has(n)){e=!0;continue}if(!(e&&ln.test(n)))return!1}return e}function Xl(t){for(let e of t)if(!cn.has(e)&&!Ge.has(e))return!1;return t.length>0}function eu(t){if(fi(t))return!0;for(let e of t)if(!Ht.has(e)&&!di.has(e)&&!ln.test(e))return!1;return t.length>0}function fi(t){let e=!1;for(let n of t)if(!(n==="\\\\"||ln.test(n))){if(Ht.has(n)||Ge.has(n)||di.has(n)){e=!0;continue}return!1}return e}function $o(t,e){let n=e-1;if(n<=0)return Math.max(n,0);let i=t.charCodeAt(n);if(i<56320||i>57343)return n;let r=n-1;if(r<0)return n;let o=t.charCodeAt(r);return o>=55296&&o<=56319?r:n}function dn(t){if(t.length===0)return null;let e=$o(t,t.length);return t.slice(e)}function tu(t){let e=Array.from(t),n=e.length;for(;n>0;){let i=e[n-1];if(ln.test(i)){n--;continue}if(Ht.has(i)||di.has(i)){n--;continue}break}return n<=0||n===e.length?null:{head:e.slice(0,n).join(""),tail:e.slice(n).join("")}}function nu(t,e,n){return n==="text"&&!e&&t.length===1&&t!=="-"&&t!=="\\u2014"?t:null}function qo(t,e,n,i){let r=e[i],o=t[i];if(r==null)return o;let s=n[i];if(o.length===s)return o;let l=r.repeat(s);return t[i]=l,l}function Uo(t,e){return t&&e!==null&&Jl.has(e)}function iu(t){let e=dn(t);return e!==null&&Ql.has(e)}function ru(t){if(t.length<2||t[0]!==" ")return null;let e=t.slice(1);return/^\\p{M}+$/u.test(e)?{space:" ",marks:e}:null}function fn(t){let e=t.length;for(;e>0;){let n=$o(t,e),i=t.slice(n,e);if(Yl.has(i))return!0;if(!Ge.has(i))return!1;e=n}return!1}function ou(t,e){if(e.preserveOrdinarySpaces||e.preserveHardBreaks){if(t===" ")return"preserved-space";if(t===" ")return"tab";if(e.preserveHardBreaks&&t===`\n`)return"hard-break"}return t===" "?"space":t==="\\xA0"||t==="\\u202F"||t==="\\u2060"||t==="\\uFEFF"?"glue":t==="\\u200B"?"zero-width-break":t==="\\xAD"?"soft-hyphen":"text"}var su=/[\\x20\\t\\n\\xA0\\xAD\\u200B\\u202F\\u2060\\uFEFF]/;function ke(t){return t.length===1?t[0]:t.join("")}function au(t,e){let n=[];for(let i=t.length-1;i>=0;i--)n.push(t[i]);return n.push(e),ke(n)}function lu(t,e,n,i){if(!su.test(t))return[{text:t,isWordLike:e,kind:"text",start:n}];let r=[],o=null,s=[],l=n,a=!1,c=0;for(let u of t){let h=ou(u,i),f=h==="text"&&e;if(o!==null&&h===o&&f===a){s.push(u),c+=u.length;continue}o!==null&&r.push({text:ke(s),isWordLike:a,kind:o,start:l}),o=h,s=[u],l=n+c,a=f,c+=u.length}return o!==null&&r.push({text:ke(s),isWordLike:a,kind:o,start:l}),r}function ci(t){return t==="space"||t==="preserved-space"||t==="zero-width-break"||t==="hard-break"}var uu=/^[A-Za-z][A-Za-z0-9+.-]*:$/;function cu(t,e){let n=t.texts[e];return n.startsWith("www.")?!0:uu.test(n)&&e+1<t.len&&t.kinds[e+1]==="text"&&t.texts[e+1]==="//"}function du(t){return t.includes("?")&&(t.includes("://")||t.startsWith("www."))}function fu(t){let e=t.texts.slice(),n=t.isWordLike.slice(),i=t.kinds.slice(),r=t.starts.slice();for(let s=0;s<t.len;s++){if(i[s]!=="text"||!cu(t,s))continue;let l=[e[s]],a=s+1;for(;a<t.len&&!ci(i[a]);){l.push(e[a]),n[s]=!0;let c=e[a].includes("?");if(i[a]="text",e[a]="",a++,c)break}e[s]=ke(l)}let o=0;for(let s=0;s<e.length;s++){let l=e[s];l.length!==0&&(o!==s&&(e[o]=l,n[o]=n[s],i[o]=i[s],r[o]=r[s]),o++)}return e.length=o,n.length=o,i.length=o,r.length=o,{len:o,texts:e,isWordLike:n,kinds:i,starts:r}}function mu(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o];if(e.push(s),n.push(t.isWordLike[o]),i.push(t.kinds[o]),r.push(t.starts[o]),!du(s))continue;let l=o+1;if(l>=t.len||ci(t.kinds[l]))continue;let a=[],c=t.starts[l],u=l;for(;u<t.len&&!ci(t.kinds[u]);)a.push(t.texts[u]),u++;a.length>0&&(e.push(ke(a)),n.push(!0),i.push("text"),r.push(c),o=u-1)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}var pu=new Set([":","-","/","\\xD7",",",".","+","\\u2013","\\u2014"]),Vo=/^[A-Za-z0-9_]+[,:;]*$/,zo=/[,:;]+$/;function Ko(t){for(let e of t)if(Go.test(e))return!0;return!1}function Pt(t){if(t.length===0)return!1;for(let e of t)if(!(Go.test(e)||pu.has(e)))return!1;return!0}function hu(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o],l=t.kinds[o];if(l==="text"&&Pt(s)&&Ko(s)){let a=[s],c=o+1;for(;c<t.len&&t.kinds[c]==="text"&&Pt(t.texts[c]);)a.push(t.texts[c]),c++;e.push(ke(a)),n.push(!0),i.push("text"),r.push(t.starts[o]),o=c-1;continue}e.push(s),n.push(t.isWordLike[o]),i.push(l),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function xu(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o],l=t.kinds[o],a=t.isWordLike[o];if(l==="text"&&a&&Vo.test(s)){let c=[s],u=zo.test(s),h=o+1;for(;u&&h<t.len&&t.kinds[h]==="text"&&t.isWordLike[h]&&Vo.test(t.texts[h]);){let f=t.texts[h];c.push(f),u=zo.test(f),h++}e.push(ke(c)),n.push(!0),i.push("text"),r.push(t.starts[o]),o=h-1;continue}e.push(s),n.push(a),i.push(l),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function gu(t){let e=[],n=[],i=[],r=[];for(let o=0;o<t.len;o++){let s=t.texts[o];if(t.kinds[o]==="text"&&s.includes("-")){let l=s.split("-"),a=l.length>1;for(let c=0;c<l.length;c++){let u=l[c];if(!a)break;(u.length===0||!Ko(u)||!Pt(u))&&(a=!1)}if(a){let c=0;for(let u=0;u<l.length;u++){let h=l[u],f=u<l.length-1?`${h}-`:h;e.push(f),n.push(!0),i.push("text"),r.push(t.starts[o]+c),c+=f.length}continue}}e.push(s),n.push(t.isWordLike[o]),i.push(t.kinds[o]),r.push(t.starts[o])}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function yu(t){let e=[],n=[],i=[],r=[],o=0;for(;o<t.len;){let s=[t.texts[o]],l=t.isWordLike[o],a=t.kinds[o],c=t.starts[o];if(a==="glue"){let u=[s[0]],h=c;for(o++;o<t.len&&t.kinds[o]==="glue";)u.push(t.texts[o]),o++;let f=ke(u);if(o<t.len&&t.kinds[o]==="text")s[0]=f,s.push(t.texts[o]),l=t.isWordLike[o],a="text",c=h,o++;else{e.push(f),n.push(!1),i.push("glue"),r.push(h);continue}}else o++;if(a==="text")for(;o<t.len&&t.kinds[o]==="glue";){let u=[];for(;o<t.len&&t.kinds[o]==="glue";)u.push(t.texts[o]),o++;let h=ke(u);if(o<t.len&&t.kinds[o]==="text"){s.push(h,t.texts[o]),l=l||t.isWordLike[o],o++;continue}s.push(h)}e.push(ke(s)),n.push(l),i.push(a),r.push(c)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function Su(t){let e=t.texts.slice(),n=t.isWordLike.slice(),i=t.kinds.slice(),r=t.starts.slice();for(let o=0;o<e.length-1;o++){if(i[o]!=="text"||i[o+1]!=="text"||!Le(e[o])||!Le(e[o+1]))continue;let s=tu(e[o]);s!==null&&(e[o]=s.head,e[o+1]=s.tail+e[o+1],r[o+1]=r[o]+s.head.length)}return{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function jo(t,e,n){let i=Vl(),r=0,o=[],s=[],l=[],a=[],c=[],u=[],h=[],f=[],x=[],F=[],E=[],S=[];for(let C of i.segment(t))for(let g of lu(C.segment,C.isWordLike??!1,C.index,n)){let de=function(){u[T]!==null&&(s[T]=[qo(o,u,h,T)],u[T]=null),s[T].push(g.text),l[T]=l[T]||g.isWordLike,f[T]=f[T]||w,x[T]=x[T]||_,F[T]=J,E[T]=W,S[T]=Uo(x[T],H)},b=g.kind==="text",N=nu(g.text,g.isWordLike,g.kind),w=Le(g.text),_=Ho(g.text),H=dn(g.text),J=fn(g.text),W=iu(g.text),T=r-1;e.carryCJKAfterClosingQuote&&b&&r>0&&a[T]==="text"&&w&&f[T]&&F[T]||b&&r>0&&a[T]==="text"&&Xl(g.text)&&f[T]||b&&r>0&&a[T]==="text"&&E[T]?de():b&&r>0&&a[T]==="text"&&g.isWordLike&&_&&S[T]?(de(),l[T]=!0):N!==null&&r>0&&a[T]==="text"&&u[T]===N?h[T]=(h[T]??1)+1:b&&!g.isWordLike&&r>0&&a[T]==="text"&&(Zl(g.text)||g.text==="-"&&l[T])?de():(o[r]=g.text,s[r]=[g.text],l[r]=g.isWordLike,a[r]=g.kind,c[r]=g.start,u[r]=N,h[r]=N===null?0:1,f[r]=w,x[r]=_,F[r]=J,E[r]=W,S[r]=Uo(_,H),r++)}for(let C=0;C<r;C++){if(u[C]!==null){o[C]=qo(o,u,h,C);continue}o[C]=ke(s[C])}for(let C=1;C<r;C++)a[C]==="text"&&!l[C]&&fi(o[C])&&a[C-1]==="text"&&(o[C-1]+=o[C],l[C-1]=l[C-1]||l[C],o[C]="");let D=Array.from({length:r},()=>null),L=-1;for(let C=r-1;C>=0;C--){let g=o[C];if(g.length!==0){if(a[C]==="text"&&!l[C]&&eu(g)&&L>=0&&a[L]==="text"){let b=D[L]??[];b.push(g),D[L]=b,c[L]=c[C],o[C]="";continue}L=C}}for(let C=0;C<r;C++){let g=D[C];g!=null&&(o[C]=au(g,o[C]))}let R=0;for(let C=0;C<r;C++){let g=o[C];g.length!==0&&(R!==C&&(o[R]=g,l[R]=l[C],a[R]=a[C],c[R]=c[C]),R++)}o.length=R,l.length=R,a.length=R,c.length=R;let ne=yu({len:R,texts:o,isWordLike:l,kinds:a,starts:c}),q=Su(xu(gu(hu(mu(fu(ne))))));for(let C=0;C<q.len-1;C++){let g=ru(q.texts[C]);g!==null&&(q.kinds[C]!=="space"&&q.kinds[C]!=="preserved-space"||q.kinds[C+1]!=="text"||!Ho(q.texts[C+1])||(q.texts[C]=g.space,q.isWordLike[C]=!1,q.kinds[C]=q.kinds[C]==="preserved-space"?"preserved-space":"space",q.texts[C+1]=g.marks+q.texts[C+1],q.starts[C+1]=q.starts[C]+g.space.length))}return q}function bu(t,e){if(t.len===0)return[];if(!e.preserveHardBreaks)return[{startSegmentIndex:0,endSegmentIndex:t.len,consumedEndSegmentIndex:t.len}];let n=[],i=0;for(let r=0;r<t.len;r++)t.kinds[r]==="hard-break"&&(n.push({startSegmentIndex:i,endSegmentIndex:r,consumedEndSegmentIndex:r+1}),i=r+1);return i<t.len&&n.push({startSegmentIndex:i,endSegmentIndex:t.len,consumedEndSegmentIndex:t.len}),n}function Au(t){if(t.len<=1)return t;let e=[],n=[],i=[],r=[],o=null,s=!1,l=0,a=!1,c=!1;function u(){o!==null&&(e.push(ke(o)),n.push(s),i.push("text"),r.push(l),o=null)}for(let h=0;h<t.len;h++){let f=t.texts[h],x=t.kinds[h],F=t.isWordLike[h],E=t.starts[h];if(x==="text"){let S=$l(f),D=un(f);if(o!==null&&a&&c){o.push(f),s=s||F,a=a||S,c=D;continue}u(),o=[f],s=F,l=E,a=S,c=D;continue}u(),e.push(f),n.push(F),i.push(x),r.push(E)}return u(),{len:e.length,texts:e,isWordLike:n,kinds:i,starts:r}}function Jo(t,e,n="normal",i="normal"){let r=Hl(n),o=r.mode==="pre-wrap"?ql(t):Wl(t);if(o.length===0)return{normalized:o,chunks:[],len:0,texts:[],isWordLike:[],kinds:[],starts:[]};let s=i==="keep-all"?Au(jo(o,e,r)):jo(o,e,r);return{normalized:o,chunks:bu(s,r),...s}}var at=null,Qo=new Map,lt=null,Eu=96,Fu=/\\p{Emoji_Presentation}/u,wu=/[\\p{Emoji_Presentation}\\p{Extended_Pictographic}\\p{Regional_Indicator}\\uFE0F\\u20E3]/u,mi=null,Yo=new Map;function pi(){if(at!==null)return at;if(typeof OffscreenCanvas<"u")return at=new OffscreenCanvas(1,1).getContext("2d"),at;if(typeof document<"u")return at=document.createElement("canvas").getContext("2d"),at;throw new Error("Text measurement requires OffscreenCanvas or a DOM canvas context.")}function Nu(t){let e=Qo.get(t);return e||(e=new Map,Qo.set(t,e)),e}function Pe(t,e){let n=e.get(t);return n===void 0&&(n={width:pi().measureText(t).width,containsCJK:Le(t)},e.set(t,n)),n}function ut(){if(lt!==null)return lt;if(typeof navigator>"u")return lt={lineFitEpsilon:.005,carryCJKAfterClosingQuote:!1,preferPrefixWidthsForBreakableRuns:!1,preferEarlySoftHyphenBreak:!1},lt;let t=navigator.userAgent,n=navigator.vendor==="Apple Computer, Inc."&&t.includes("Safari/")&&!t.includes("Chrome/")&&!t.includes("Chromium/")&&!t.includes("CriOS/")&&!t.includes("FxiOS/")&&!t.includes("EdgiOS/"),i=t.includes("Chrome/")||t.includes("Chromium/")||t.includes("CriOS/")||t.includes("Edg/");return lt={lineFitEpsilon:n?1/64:.005,carryCJKAfterClosingQuote:i,preferPrefixWidthsForBreakableRuns:n,preferEarlySoftHyphenBreak:n},lt}function Cu(t){let e=t.match(/(\\d+(?:\\.\\d+)?)\\s*px/);return e?parseFloat(e[1]):16}function Zo(){return mi===null&&(mi=new Intl.Segmenter(void 0,{granularity:"grapheme"})),mi}function Mu(t){return Fu.test(t)||t.includes("\\uFE0F")}function Xo(t){return wu.test(t)}function Tu(t,e){let n=Yo.get(t);if(n!==void 0)return n;let i=pi();i.font=t;let r=i.measureText("\\u{1F600}").width;if(n=0,r>e+.5&&typeof document<"u"&&document.body!==null){let o=document.createElement("span");o.style.font=t,o.style.display="inline-block",o.style.visibility="hidden",o.style.position="absolute",o.textContent="\\u{1F600}",document.body.appendChild(o);let s=o.getBoundingClientRect().width;document.body.removeChild(o),r-s>.5&&(n=r-s)}return Yo.set(t,n),n}function ku(t){let e=0,n=Zo();for(let i of n.segment(t))Mu(i.segment)&&e++;return e}function _u(t,e){return e.emojiCount===void 0&&(e.emojiCount=ku(t)),e.emojiCount}function $e(t,e,n){return n===0?e.width:e.width-_u(t,e)*n}function es(t,e,n,i,r){if(e.breakableFitAdvances!==void 0)return e.breakableFitAdvances;let o=Zo(),s=[];for(let u of o.segment(t))s.push(u.segment);if(s.length<=1)return e.breakableFitAdvances=null,e.breakableFitAdvances;if(r==="sum-graphemes"){let u=[];for(let h of s){let f=Pe(h,n);u.push($e(h,f,i))}return e.breakableFitAdvances=u,e.breakableFitAdvances}if(r==="pair-context"||s.length>Eu){let u=[],h=null,f=0;for(let x of s){let F=Pe(x,n),E=$e(x,F,i);if(h===null)u.push(E);else{let S=h+x,D=Pe(S,n);u.push($e(S,D,i)-f)}h=x,f=E}return e.breakableFitAdvances=u,e.breakableFitAdvances}let l=[],a="",c=0;for(let u of s){a+=u;let h=Pe(a,n),f=$e(a,h,i);l.push(f-c),c=f}return e.breakableFitAdvances=l,e.breakableFitAdvances}function ts(t,e){let n=pi();n.font=t;let i=Nu(t),r=Cu(t),o=e?Tu(t,r):0;return{cache:i,fontSize:r,emojiCorrection:o}}function vu(t,e){for(;e<t.widths.length;){let n=t.kinds[e];if(n!=="space"&&n!=="zero-width-break"&&n!=="soft-hyphen")break;e++}return e}function Ru(t,e){if(e<=0)return 0;let n=t%e;return Math.abs(n)<=1e-6?e:e-n}function Lu(t,e,n,i,r){let o=0,s=e;for(;o<t.length;){let l=s+t[o];if((o+1<t.length?l+r:l)>n+i)break;s=l,o++}return{fitCount:o,fittedWidth:s}}function ns(t,e){return t.simpleLineWalkFastPath?is(t,e):rs(t,e)}function is(t,e,n){let{widths:i,kinds:r,breakableFitAdvances:o}=t;if(i.length===0)return 0;let l=ut().lineFitEpsilon,a=e+l,c=0,u=0,h=!1,f=0,x=0,F=0,E=0,S=-1,D=0;function L(){S=-1,D=0}function R(N=F,w=E,_=u){c++,n?.({startSegmentIndex:f,startGraphemeIndex:x,endSegmentIndex:N,endGraphemeIndex:w,width:_}),u=0,h=!1,L()}function ne(N,w){h=!0,f=N,x=0,F=N+1,E=0,u=w}function q(N,w,_){h=!0,f=N,x=w,F=N,E=w+1,u=_}function C(N,w){if(!h){ne(N,w);return}u+=w,F=N+1,E=0}function g(N,w){let _=o[N];for(let H=w;H<_.length;H++){let J=_[H];h?u+J>a?(R(),q(N,H,J)):(u+=J,F=N,E=H+1):q(N,H,J)}h&&F===N&&E===_.length&&(F=N+1,E=0)}let b=0;for(;b<i.length&&!(!h&&(b=vu(t,b),b>=i.length));){let N=i[b],w=r[b],_=w==="space"||w==="preserved-space"||w==="tab"||w==="zero-width-break"||w==="soft-hyphen";if(!h){N>e&&o[b]!==null?g(b,0):ne(b,N),_&&(S=b+1,D=u-N),b++;continue}if(u+N>a){if(_){C(b,N),R(b+1,0,u-N),b++;continue}if(S>=0){if(F>S||F===S&&E>0){R();continue}R(S,0,D);continue}if(N>e&&o[b]!==null){R(),g(b,0),b++;continue}R();continue}C(b,N),_&&(S=b+1,D=u-N),b++}return h&&R(),c}function rs(t,e,n){if(t.simpleLineWalkFastPath)return is(t,e,n);let{widths:i,lineEndFitAdvances:r,lineEndPaintAdvances:o,kinds:s,breakableFitAdvances:l,discretionaryHyphenWidth:a,tabStopAdvance:c,chunks:u}=t;if(i.length===0||u.length===0)return 0;let h=ut(),f=h.lineFitEpsilon,x=e+f,F=0,E=0,S=!1,D=0,L=0,R=0,ne=0,q=-1,C=0,g=0,b=null;function N(){q=-1,C=0,g=0,b=null}function w(G=R,Q=ne,U=E){F++,n?.({startSegmentIndex:D,startGraphemeIndex:L,endSegmentIndex:G,endGraphemeIndex:Q,width:U}),E=0,S=!1,N()}function _(G,Q){S=!0,D=G,L=0,R=G+1,ne=0,E=Q}function H(G,Q,U){S=!0,D=G,L=Q,R=G,ne=Q+1,E=U}function J(G,Q){if(!S){_(G,Q);return}E+=Q,R=G+1,ne=0}function W(G,Q,U,Y){if(!Q)return;let we=G==="tab"?0:r[U],Ae=G==="tab"?Y:o[U];q=U+1,C=E-Y+we,g=E-Y+Ae,b=G}function T(G,Q){let U=l[G];for(let Y=Q;Y<U.length;Y++){let we=U[Y];S?E+we>x?(w(),H(G,Y,we)):(E+=we,R=G,ne=Y+1):H(G,Y,we)}S&&R===G&&ne===U.length&&(R=G+1,ne=0)}function de(G){if(b!=="soft-hyphen")return!1;let Q=l[G];if(Q==null)return!1;let{fitCount:U,fittedWidth:Y}=Lu(Q,E,e,f,a);return U===0?!1:(E=Y,R=G,ne=U,N(),U===Q.length?(R=G+1,ne=0,!0):(w(G,U,Y+a),T(G,U),!0))}function be(G){F++,n?.({startSegmentIndex:G.startSegmentIndex,startGraphemeIndex:0,endSegmentIndex:G.consumedEndSegmentIndex,endGraphemeIndex:0,width:0}),N()}for(let G=0;G<u.length;G++){let Q=u[G];if(Q.startSegmentIndex===Q.endSegmentIndex){be(Q);continue}S=!1,E=0,D=Q.startSegmentIndex,L=0,R=Q.startSegmentIndex,ne=0,N();let U=Q.startSegmentIndex;for(;U<Q.endSegmentIndex;){let Y=s[U],we=Y==="space"||Y==="preserved-space"||Y==="tab"||Y==="zero-width-break"||Y==="soft-hyphen",Ae=Y==="tab"?Ru(E,c):i[U];if(Y==="soft-hyphen"){S&&(R=U+1,ne=0,q=U+1,C=E+a,g=E+a,b=Y),U++;continue}if(!S){Ae>e&&l[U]!==null?T(U,0):_(U,Ae),W(Y,we,U,Ae),U++;continue}if(E+Ae>x){let k=E+(Y==="tab"?0:r[U]),P=E+(Y==="tab"?Ae:o[U]);if(b==="soft-hyphen"&&h.preferEarlySoftHyphenBreak&&C<=x){w(q,0,g);continue}if(b==="soft-hyphen"&&de(U)){U++;continue}if(we&&k<=x){J(U,Ae),w(U+1,0,P),U++;continue}if(q>=0&&C<=x){if(R>q||R===q&&ne>0){w();continue}let ie=q;w(ie,0,g),U=ie;continue}if(Ae>e&&l[U]!==null){w(),T(U,0),U++;continue}w();continue}J(U,Ae),W(Y,we,U,Ae),U++}if(S){let Y=q===Q.consumedEndSegmentIndex?g:E;w(Q.consumedEndSegmentIndex,0,Y)}}return F}var hi=null;function Du(){return hi===null&&(hi=new Intl.Segmenter(void 0,{granularity:"grapheme"})),hi}function Bu(t){return t?{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableFitAdvances:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[],segments:[]}:{widths:[],lineEndFitAdvances:[],lineEndPaintAdvances:[],kinds:[],simpleLineWalkFastPath:!0,segLevels:null,breakableFitAdvances:[],discretionaryHyphenWidth:0,tabStopAdvance:0,chunks:[]}}function Iu(t,e){let n=[],i=[],r=0,o=!1,s=!1,l=!1;function a(){i.length!==0&&(n.push({text:i.length===1?i[0]:i.join(""),start:r}),i=[],o=!1,s=!1,l=!1)}function c(h,f,x){i=[h],r=f,o=x,s=fn(h),l=Ht.has(h)}function u(h,f){i.push(h),o=o||f;let x=fn(h);h.length===1&&Ge.has(h)?s=s||x:s=x,l=!1}for(let h of Du().segment(t)){let f=h.segment,x=Le(f);if(i.length===0){c(f,h.index,x);continue}if(l||cn.has(f)||Ge.has(f)||e.carryCJKAfterClosingQuote&&x&&s){u(f,x);continue}if(!o&&!x){u(f,x);continue}a(),c(f,h.index,x)}return a(),n}function Ou(t){if(t.length<=1)return t;let e=[],n=[t[0].text],i=t[0].start,r=Le(t[0].text),o=un(t[0].text);function s(){e.push({text:n.length===1?n[0]:n.join(""),start:i})}for(let l=1;l<t.length;l++){let a=t[l],c=Le(a.text),u=un(a.text);if(r&&o){n.push(a.text),r=r||c,o=u;continue}s(),n=[a.text],i=a.start,r=c,o=u}return s(),e}function Pu(t,e,n,i){let r=ut(),{cache:o,emojiCorrection:s}=ts(e,Xo(t.normalized)),l=$e("-",Pe("-",o),s),c=$e(" ",Pe(" ",o),s)*8;if(t.len===0)return Bu(n);let u=[],h=[],f=[],x=[],F=t.chunks.length<=1,E=n?[]:null,S=[],D=n?[]:null,L=Array.from({length:t.len});function R(g,b,N,w,_,H,J){_!=="text"&&_!=="space"&&_!=="zero-width-break"&&(F=!1),u.push(b),h.push(N),f.push(w),x.push(_),E?.push(H),S.push(J),D!==null&&D.push(g)}function ne(g,b,N,w,_){let H=Pe(g,o),J=$e(g,H,s),W=b==="space"||b==="preserved-space"||b==="zero-width-break"?0:J,T=b==="space"||b==="zero-width-break"?0:J;if(_&&w&&g.length>1){let de="sum-graphemes";Pt(g)?de="pair-context":r.preferPrefixWidthsForBreakableRuns&&(de="segment-prefixes");let be=es(g,H,o,s,de);R(g,J,W,T,b,N,be);return}R(g,J,W,T,b,N,null)}for(let g=0;g<t.len;g++){L[g]=u.length;let b=t.texts[g],N=t.isWordLike[g],w=t.kinds[g],_=t.starts[g];if(w==="soft-hyphen"){R(b,0,l,l,w,_,null);continue}if(w==="hard-break"){R(b,0,0,0,w,_,null);continue}if(w==="tab"){R(b,0,0,0,w,_,null);continue}let H=Pe(b,o);if(w==="text"&&H.containsCJK){let J=Iu(b,r),W=i==="keep-all"?Ou(J):J;for(let T=0;T<W.length;T++){let de=W[T];ne(de.text,"text",_+de.start,N,i==="keep-all"||!Le(de.text))}continue}ne(b,w,_,N,!0)}let q=Hu(t.chunks,L,u.length),C=E===null?null:Po(t.normalized,E);return D!==null?{widths:u,lineEndFitAdvances:h,lineEndPaintAdvances:f,kinds:x,simpleLineWalkFastPath:F,segLevels:C,breakableFitAdvances:S,discretionaryHyphenWidth:l,tabStopAdvance:c,chunks:q,segments:D}:{widths:u,lineEndFitAdvances:h,lineEndPaintAdvances:f,kinds:x,simpleLineWalkFastPath:F,segLevels:C,breakableFitAdvances:S,discretionaryHyphenWidth:l,tabStopAdvance:c,chunks:q}}function Hu(t,e,n){let i=[];for(let r=0;r<t.length;r++){let o=t[r],s=o.startSegmentIndex<e.length?e[o.startSegmentIndex]:n,l=o.endSegmentIndex<e.length?e[o.endSegmentIndex]:n,a=o.consumedEndSegmentIndex<e.length?e[o.consumedEndSegmentIndex]:n;i.push({startSegmentIndex:s,endSegmentIndex:l,consumedEndSegmentIndex:a})}return i}function Wu(t,e,n,i){let r=i?.wordBreak??"normal",o=Jo(t,ut(),i?.whiteSpace,r);return Pu(o,e,n,r)}function os(t,e,n){return Wu(t,e,!1,n)}function ss(t,e,n){let i=ns(t,e);return{lineCount:i,height:i*n}}var qu={maxWidth:1600,baseFontSize:78,minFontSize:42,fontWeight:900,fontFamily:"Outfit",step:2};function as(t,e){let n={...qu,...e},i=1.2;for(let r=n.baseFontSize;r>=n.minFontSize;r-=n.step){let o=`${n.fontWeight} ${r}px ${n.fontFamily}`,s=os(t,o),{lineCount:l}=ss(s,n.maxWidth,r*i);if(l<=1)return{fontSize:r,fits:!0}}return{fontSize:n.minFontSize,fits:!1}}window.__timelines=window.__timelines||{};window.__hyperframes={fitTextFontSize:as,getVariables:No};function ls(){let t=window;t.__hyperframeRuntimeBootstrapped||(t.__hyperframeRuntimeBootstrapped=!0,Io())}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",ls,{once:!0}):ls();})();\n';
|
|
53541
53541
|
}
|
|
53542
53542
|
});
|
|
53543
53543
|
|
|
@@ -54787,9 +54787,9 @@ function computeBidiLevels(str) {
|
|
|
54787
54787
|
let end = i2 + 1;
|
|
54788
54788
|
while (end < len && types5[end] === "ON")
|
|
54789
54789
|
end++;
|
|
54790
|
-
const
|
|
54790
|
+
const before3 = i2 > 0 ? types5[i2 - 1] : sor;
|
|
54791
54791
|
const after2 = end < len ? types5[end] : sor;
|
|
54792
|
-
const bDir =
|
|
54792
|
+
const bDir = before3 !== "L" ? "R" : "L";
|
|
54793
54793
|
const aDir = after2 !== "L" ? "R" : "L";
|
|
54794
54794
|
if (bDir === aDir) {
|
|
54795
54795
|
for (let j3 = i2; j3 < end; j3++)
|
|
@@ -79408,13 +79408,13 @@ var require_parser2 = __commonJS({
|
|
|
79408
79408
|
return this.error("Unexpected '|'.", this.currToken[tokenize_1.FIELDS.START_POS]);
|
|
79409
79409
|
};
|
|
79410
79410
|
Parser6.prototype.namespace = function() {
|
|
79411
|
-
var
|
|
79411
|
+
var before3 = this.prevToken && this.content(this.prevToken) || true;
|
|
79412
79412
|
if (this.nextToken[tokenize_1.FIELDS.TYPE] === tokens.word) {
|
|
79413
79413
|
this.position++;
|
|
79414
|
-
return this.word(
|
|
79414
|
+
return this.word(before3);
|
|
79415
79415
|
} else if (this.nextToken[tokenize_1.FIELDS.TYPE] === tokens.asterisk) {
|
|
79416
79416
|
this.position++;
|
|
79417
|
-
return this.universal(
|
|
79417
|
+
return this.universal(before3);
|
|
79418
79418
|
}
|
|
79419
79419
|
this.unexpectedPipe();
|
|
79420
79420
|
};
|
|
@@ -91802,7 +91802,7 @@ async function compositeHdrFrame(ctx, canvas, time, fullStacking, elementFilter,
|
|
|
91802
91802
|
for (const [layerIdx, layer] of layers.entries()) {
|
|
91803
91803
|
if (layer.type === "hdr") {
|
|
91804
91804
|
if (layer.element.opacity <= 0) continue;
|
|
91805
|
-
const
|
|
91805
|
+
const before3 = shouldLog ? countNonZeroRgb48(canvas) : 0;
|
|
91806
91806
|
const isHdrImage = nativeHdrImageIds.has(layer.element.id);
|
|
91807
91807
|
const hdrTargetTransfer = compositeTransfer === "srgb" ? void 0 : compositeTransfer;
|
|
91808
91808
|
if (isHdrImage) {
|
|
@@ -91843,7 +91843,7 @@ async function compositeHdrFrame(ctx, canvas, time, fullStacking, elementFilter,
|
|
|
91843
91843
|
layerIdx,
|
|
91844
91844
|
id: layer.element.id,
|
|
91845
91845
|
kind: "image",
|
|
91846
|
-
pixelsAdded: after2 -
|
|
91846
|
+
pixelsAdded: after2 - before3,
|
|
91847
91847
|
totalNonZero: after2,
|
|
91848
91848
|
bufferDecoded: !!buf,
|
|
91849
91849
|
bufferDims: buf ? `${buf.width}x${buf.height}` : null
|
|
@@ -91858,7 +91858,7 @@ async function compositeHdrFrame(ctx, canvas, time, fullStacking, elementFilter,
|
|
|
91858
91858
|
layerIdx,
|
|
91859
91859
|
id: layer.element.id,
|
|
91860
91860
|
kind: "video",
|
|
91861
|
-
pixelsAdded: after2 -
|
|
91861
|
+
pixelsAdded: after2 - before3,
|
|
91862
91862
|
totalNonZero: after2,
|
|
91863
91863
|
startTime,
|
|
91864
91864
|
localTime: localTime.toFixed(3),
|
|
@@ -91903,7 +91903,7 @@ async function compositeHdrFrame(ctx, canvas, time, fullStacking, elementFilter,
|
|
|
91903
91903
|
);
|
|
91904
91904
|
try {
|
|
91905
91905
|
const { data: domRgba } = timeHdrPhase(hdrPerf, "domPngDecodeMs", () => decodePng(domPng));
|
|
91906
|
-
const
|
|
91906
|
+
const before3 = shouldLog ? countNonZeroRgb48(canvas) : 0;
|
|
91907
91907
|
const alphaPixels = shouldLog ? countNonZeroAlpha(domRgba) : 0;
|
|
91908
91908
|
timeHdrPhase(
|
|
91909
91909
|
hdrPerf,
|
|
@@ -91922,7 +91922,7 @@ async function compositeHdrFrame(ctx, canvas, time, fullStacking, elementFilter,
|
|
|
91922
91922
|
hideCount: hideIds.length,
|
|
91923
91923
|
pngBytes: domPng.length,
|
|
91924
91924
|
alphaPixels,
|
|
91925
|
-
pixelsAdded: after2 -
|
|
91925
|
+
pixelsAdded: after2 - before3,
|
|
91926
91926
|
totalNonZero: after2,
|
|
91927
91927
|
dumpPath
|
|
91928
91928
|
});
|
|
@@ -103229,6 +103229,303 @@ var init_layoutAudit = __esm({
|
|
|
103229
103229
|
}
|
|
103230
103230
|
});
|
|
103231
103231
|
|
|
103232
|
+
// src/utils/motionAudit.ts
|
|
103233
|
+
function ambiguousIssue(selector) {
|
|
103234
|
+
return {
|
|
103235
|
+
code: "motion_selector_ambiguous",
|
|
103236
|
+
severity: "error",
|
|
103237
|
+
time: 0,
|
|
103238
|
+
selector,
|
|
103239
|
+
message: `${selector} matches multiple elements \u2014 use a more specific selector so the assertion targets exactly one`,
|
|
103240
|
+
rect: ZERO_RECT,
|
|
103241
|
+
fixHint: "Use #id or :nth-child() instead of a class selector when multiple elements share the same class."
|
|
103242
|
+
};
|
|
103243
|
+
}
|
|
103244
|
+
function round(value) {
|
|
103245
|
+
return Math.round(value * 100) / 100;
|
|
103246
|
+
}
|
|
103247
|
+
function everMatched(frames, selector) {
|
|
103248
|
+
return frames.some((frame) => frame.data[selector] != null);
|
|
103249
|
+
}
|
|
103250
|
+
function firstAppear(frames, selector) {
|
|
103251
|
+
for (const frame of frames) {
|
|
103252
|
+
const sample = frame.data[selector];
|
|
103253
|
+
if (sample && sample.visible && sample.opacity >= APPEAR_OPACITY) {
|
|
103254
|
+
return { time: frame.time, rect: sample.rect };
|
|
103255
|
+
}
|
|
103256
|
+
}
|
|
103257
|
+
return null;
|
|
103258
|
+
}
|
|
103259
|
+
function missingIssue(selector, time) {
|
|
103260
|
+
return {
|
|
103261
|
+
code: "motion_selector_missing",
|
|
103262
|
+
severity: "error",
|
|
103263
|
+
time,
|
|
103264
|
+
selector,
|
|
103265
|
+
message: `${selector} matched no element in any sampled frame \u2014 check the selector`,
|
|
103266
|
+
rect: ZERO_RECT,
|
|
103267
|
+
fixHint: "Verify the selector exists in the composition and is spelled correctly."
|
|
103268
|
+
};
|
|
103269
|
+
}
|
|
103270
|
+
function appearsBy(frames, selector, bySec) {
|
|
103271
|
+
if (!everMatched(frames, selector)) return [missingIssue(selector, 0)];
|
|
103272
|
+
const appear = firstAppear(frames, selector);
|
|
103273
|
+
if (appear && appear.time <= bySec) return [];
|
|
103274
|
+
return [
|
|
103275
|
+
{
|
|
103276
|
+
code: "motion_appears_late",
|
|
103277
|
+
severity: "error",
|
|
103278
|
+
time: appear ? appear.time : bySec,
|
|
103279
|
+
selector,
|
|
103280
|
+
message: appear ? `appears at ${round(appear.time)}s but should be visible by ${round(bySec)}s (check its entrance reveal fires under seek)` : `never reaches visible opacity but should be visible by ${round(bySec)}s (check its entrance reveal fires under seek)`,
|
|
103281
|
+
rect: appear ? appear.rect : ZERO_RECT,
|
|
103282
|
+
fixHint: "The renderer seeks a paused timeline; a forward-only reveal can be skipped. Ensure the entrance is applied at this time, not only played through."
|
|
103283
|
+
}
|
|
103284
|
+
];
|
|
103285
|
+
}
|
|
103286
|
+
function before2(frames, a, b2) {
|
|
103287
|
+
const issues = [];
|
|
103288
|
+
if (!everMatched(frames, a)) issues.push(missingIssue(a, 0));
|
|
103289
|
+
if (!everMatched(frames, b2)) issues.push(missingIssue(b2, 0));
|
|
103290
|
+
if (issues.length > 0) return issues;
|
|
103291
|
+
const appearA = firstAppear(frames, a);
|
|
103292
|
+
const appearB = firstAppear(frames, b2);
|
|
103293
|
+
const timeA = appearA ? appearA.time : Number.POSITIVE_INFINITY;
|
|
103294
|
+
const timeB = appearB ? appearB.time : Number.POSITIVE_INFINITY;
|
|
103295
|
+
if (timeA < timeB) return [];
|
|
103296
|
+
const label2 = (t2) => Number.isFinite(t2) ? `${round(t2)}s` : "never";
|
|
103297
|
+
return [
|
|
103298
|
+
{
|
|
103299
|
+
code: "motion_out_of_order",
|
|
103300
|
+
severity: "error",
|
|
103301
|
+
time: Number.isFinite(timeA) ? timeA : 0,
|
|
103302
|
+
selector: a,
|
|
103303
|
+
message: `${a} should appear before ${b2}, but ${a} appears at ${label2(timeA)} and ${b2} at ${label2(timeB)} \u2014 reorder the entrances`,
|
|
103304
|
+
rect: appearA ? appearA.rect : ZERO_RECT,
|
|
103305
|
+
fixHint: `Make ${a}'s entrance land before ${b2}'s on the timeline.`
|
|
103306
|
+
}
|
|
103307
|
+
];
|
|
103308
|
+
}
|
|
103309
|
+
function isOffFrame(r2, canvas) {
|
|
103310
|
+
return r2.left < -FRAME_TOLERANCE || r2.top < -FRAME_TOLERANCE || r2.right > canvas.width + FRAME_TOLERANCE || r2.bottom > canvas.height + FRAME_TOLERANCE;
|
|
103311
|
+
}
|
|
103312
|
+
function staysInFrame(frames, selector, canvas) {
|
|
103313
|
+
if (!everMatched(frames, selector)) return [missingIssue(selector, 0)];
|
|
103314
|
+
const appear = firstAppear(frames, selector);
|
|
103315
|
+
if (!appear) return [];
|
|
103316
|
+
for (const frame of frames) {
|
|
103317
|
+
const sample = frame.data[selector];
|
|
103318
|
+
if (frame.time < appear.time || !sample || !sample.visible) continue;
|
|
103319
|
+
if (!isOffFrame(sample.rect, canvas)) continue;
|
|
103320
|
+
const r2 = sample.rect;
|
|
103321
|
+
return [
|
|
103322
|
+
{
|
|
103323
|
+
code: "motion_off_frame",
|
|
103324
|
+
severity: "error",
|
|
103325
|
+
time: frame.time,
|
|
103326
|
+
selector,
|
|
103327
|
+
message: `${selector} drifts off the ${canvas.width}\xD7${canvas.height} canvas at ${round(frame.time)}s (box ${r2.left},${r2.top}\u2192${r2.right},${r2.bottom})`,
|
|
103328
|
+
rect: r2,
|
|
103329
|
+
fixHint: "Clamp the element's motion so its box stays within the canvas for the whole shot."
|
|
103330
|
+
}
|
|
103331
|
+
];
|
|
103332
|
+
}
|
|
103333
|
+
return [];
|
|
103334
|
+
}
|
|
103335
|
+
function keepsMoving(frames, within, maxStaticSec) {
|
|
103336
|
+
const scope = within ?? "*";
|
|
103337
|
+
if (within && frames.every((frame) => !frame.liveness[scope])) {
|
|
103338
|
+
return [missingIssue(within, 0)];
|
|
103339
|
+
}
|
|
103340
|
+
const issues = [];
|
|
103341
|
+
const first = frames[0];
|
|
103342
|
+
if (!first) return issues;
|
|
103343
|
+
let runStart = first.time;
|
|
103344
|
+
let runSig = first.liveness[scope] ?? "";
|
|
103345
|
+
const flush2 = (endTime) => {
|
|
103346
|
+
const span = endTime - runStart;
|
|
103347
|
+
if (span > maxStaticSec) {
|
|
103348
|
+
issues.push({
|
|
103349
|
+
code: "motion_frozen",
|
|
103350
|
+
severity: "error",
|
|
103351
|
+
time: runStart,
|
|
103352
|
+
selector: within ?? "composition",
|
|
103353
|
+
message: `nothing moves${within ? ` within ${within}` : ""} between ${round(runStart)}s and ${round(endTime)}s (${round(span)}s static) \u2014 should keep moving`,
|
|
103354
|
+
rect: ZERO_RECT,
|
|
103355
|
+
fixHint: "Add or extend motion so no shot freezes for this long, or shorten the static hold."
|
|
103356
|
+
});
|
|
103357
|
+
}
|
|
103358
|
+
};
|
|
103359
|
+
let lastTime = runStart;
|
|
103360
|
+
for (const frame of frames.slice(1)) {
|
|
103361
|
+
lastTime = frame.time;
|
|
103362
|
+
const sig = frame.liveness[scope] ?? "";
|
|
103363
|
+
if (sig !== runSig) {
|
|
103364
|
+
flush2(frame.time);
|
|
103365
|
+
runStart = frame.time;
|
|
103366
|
+
runSig = sig;
|
|
103367
|
+
}
|
|
103368
|
+
}
|
|
103369
|
+
flush2(lastTime);
|
|
103370
|
+
return issues;
|
|
103371
|
+
}
|
|
103372
|
+
function evaluateMotion(frames, assertions, canvas) {
|
|
103373
|
+
if (frames.length === 0) return [];
|
|
103374
|
+
return assertions.flatMap((assertion) => {
|
|
103375
|
+
switch (assertion.kind) {
|
|
103376
|
+
case "appearsBy":
|
|
103377
|
+
return appearsBy(frames, assertion.selector, assertion.bySec);
|
|
103378
|
+
case "before":
|
|
103379
|
+
return before2(frames, assertion.a, assertion.b);
|
|
103380
|
+
case "staysInFrame":
|
|
103381
|
+
return staysInFrame(frames, assertion.selector, canvas);
|
|
103382
|
+
case "keepsMoving":
|
|
103383
|
+
return keepsMoving(
|
|
103384
|
+
frames,
|
|
103385
|
+
assertion.withinSelector,
|
|
103386
|
+
assertion.maxStaticSec ?? DEFAULT_MAX_STATIC_SEC
|
|
103387
|
+
);
|
|
103388
|
+
}
|
|
103389
|
+
});
|
|
103390
|
+
}
|
|
103391
|
+
function collectSamplingTargets(assertions) {
|
|
103392
|
+
const selectors = /* @__PURE__ */ new Set();
|
|
103393
|
+
const scopes = /* @__PURE__ */ new Set();
|
|
103394
|
+
for (const assertion of assertions) {
|
|
103395
|
+
switch (assertion.kind) {
|
|
103396
|
+
case "appearsBy":
|
|
103397
|
+
case "staysInFrame":
|
|
103398
|
+
selectors.add(assertion.selector);
|
|
103399
|
+
break;
|
|
103400
|
+
case "before":
|
|
103401
|
+
selectors.add(assertion.a);
|
|
103402
|
+
selectors.add(assertion.b);
|
|
103403
|
+
break;
|
|
103404
|
+
case "keepsMoving":
|
|
103405
|
+
scopes.add(assertion.withinSelector ?? "*");
|
|
103406
|
+
break;
|
|
103407
|
+
}
|
|
103408
|
+
}
|
|
103409
|
+
return { selectors: [...selectors], livenessScopes: [...scopes] };
|
|
103410
|
+
}
|
|
103411
|
+
var APPEAR_OPACITY, FRAME_TOLERANCE, DEFAULT_MAX_STATIC_SEC, ZERO_RECT;
|
|
103412
|
+
var init_motionAudit = __esm({
|
|
103413
|
+
"src/utils/motionAudit.ts"() {
|
|
103414
|
+
"use strict";
|
|
103415
|
+
APPEAR_OPACITY = 0.5;
|
|
103416
|
+
FRAME_TOLERANCE = 1;
|
|
103417
|
+
DEFAULT_MAX_STATIC_SEC = 2;
|
|
103418
|
+
ZERO_RECT = { left: 0, top: 0, right: 0, bottom: 0, width: 0, height: 0 };
|
|
103419
|
+
}
|
|
103420
|
+
});
|
|
103421
|
+
|
|
103422
|
+
// src/utils/motionSpec.ts
|
|
103423
|
+
import { existsSync as existsSync63, readFileSync as readFileSync50, readdirSync as readdirSync26 } from "fs";
|
|
103424
|
+
import { basename as basename14, join as join73 } from "path";
|
|
103425
|
+
function isObject(value) {
|
|
103426
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
103427
|
+
}
|
|
103428
|
+
function isSelector(value) {
|
|
103429
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
103430
|
+
}
|
|
103431
|
+
function isPositive(value) {
|
|
103432
|
+
return typeof value === "number" && Number.isFinite(value) && value > 0;
|
|
103433
|
+
}
|
|
103434
|
+
function validateAssertion(raw, index) {
|
|
103435
|
+
const at4 = `assertions[${index}]`;
|
|
103436
|
+
if (!isObject(raw)) return `${at4}: must be an object`;
|
|
103437
|
+
const validator = typeof raw.kind === "string" ? VALIDATORS[raw.kind] : void 0;
|
|
103438
|
+
if (!validator) return `${at4}: unknown assertion kind ${JSON.stringify(raw.kind)}`;
|
|
103439
|
+
return validator(raw, at4);
|
|
103440
|
+
}
|
|
103441
|
+
function parseMotionSpec(raw) {
|
|
103442
|
+
if (!isObject(raw)) return { ok: false, errors: ["spec must be a JSON object"] };
|
|
103443
|
+
if (raw.version !== void 0 && raw.version !== 1)
|
|
103444
|
+
return {
|
|
103445
|
+
ok: false,
|
|
103446
|
+
errors: [`spec version ${raw.version} is not supported \u2014 upgrade the hyperframes CLI`]
|
|
103447
|
+
};
|
|
103448
|
+
if (!Array.isArray(raw.assertions))
|
|
103449
|
+
return { ok: false, errors: ['spec must have an "assertions" array'] };
|
|
103450
|
+
if (raw.duration !== void 0 && (typeof raw.duration !== "number" || !Number.isFinite(raw.duration) || raw.duration <= 0))
|
|
103451
|
+
return { ok: false, errors: ['"duration" must be a positive number when present'] };
|
|
103452
|
+
const assertions = [];
|
|
103453
|
+
const errors = [];
|
|
103454
|
+
raw.assertions.forEach((entry, index) => {
|
|
103455
|
+
const result = validateAssertion(entry, index);
|
|
103456
|
+
if (typeof result === "string") errors.push(result);
|
|
103457
|
+
else assertions.push(result);
|
|
103458
|
+
});
|
|
103459
|
+
if (errors.length > 0) return { ok: false, errors };
|
|
103460
|
+
if (assertions.length === 0) return { ok: false, errors: ["spec has no assertions"] };
|
|
103461
|
+
const spec = { assertions };
|
|
103462
|
+
if (typeof raw.duration === "number") spec.duration = raw.duration;
|
|
103463
|
+
return { ok: true, spec };
|
|
103464
|
+
}
|
|
103465
|
+
function findMotionSpec(projectDir) {
|
|
103466
|
+
if (!existsSync63(projectDir)) return null;
|
|
103467
|
+
const entries2 = readdirSync26(projectDir);
|
|
103468
|
+
const sidecars = entries2.filter((name) => name.endsWith(".motion.json")).sort();
|
|
103469
|
+
if (!sidecars[0]) return null;
|
|
103470
|
+
if (sidecars.length === 1) return join73(projectDir, sidecars[0]);
|
|
103471
|
+
const htmlBases = new Set(
|
|
103472
|
+
entries2.filter((name) => name.endsWith(".html")).map((name) => basename14(name, ".html"))
|
|
103473
|
+
);
|
|
103474
|
+
const matched = sidecars.filter((name) => htmlBases.has(basename14(name, ".motion.json")));
|
|
103475
|
+
if (matched.length > 1) {
|
|
103476
|
+
throw new Error(
|
|
103477
|
+
`ambiguous motion sidecars in ${projectDir}: ${matched.join(", ")} each match a composition \u2014 remove the sidecars you do not need, or use one composition per project`
|
|
103478
|
+
);
|
|
103479
|
+
}
|
|
103480
|
+
return join73(projectDir, matched[0] ?? sidecars[0]);
|
|
103481
|
+
}
|
|
103482
|
+
function readMotionSpec(path2) {
|
|
103483
|
+
let raw;
|
|
103484
|
+
try {
|
|
103485
|
+
raw = JSON.parse(readFileSync50(path2, "utf-8"));
|
|
103486
|
+
} catch (err) {
|
|
103487
|
+
return { ok: false, errors: [`could not read ${basename14(path2)}: ${err.message}`] };
|
|
103488
|
+
}
|
|
103489
|
+
return parseMotionSpec(raw);
|
|
103490
|
+
}
|
|
103491
|
+
var VALIDATORS;
|
|
103492
|
+
var init_motionSpec = __esm({
|
|
103493
|
+
"src/utils/motionSpec.ts"() {
|
|
103494
|
+
"use strict";
|
|
103495
|
+
VALIDATORS = {
|
|
103496
|
+
appearsBy: (raw, at4) => {
|
|
103497
|
+
if (!isSelector(raw.selector))
|
|
103498
|
+
return `${at4} (appearsBy): "selector" must be a non-empty string`;
|
|
103499
|
+
if (typeof raw.bySec !== "number" || !Number.isFinite(raw.bySec) || raw.bySec < 0)
|
|
103500
|
+
return `${at4} (appearsBy): "bySec" must be a number >= 0`;
|
|
103501
|
+
return { kind: "appearsBy", selector: raw.selector, bySec: raw.bySec };
|
|
103502
|
+
},
|
|
103503
|
+
before: (raw, at4) => {
|
|
103504
|
+
if (!isSelector(raw.a)) return `${at4} (before): "a" must be a non-empty string`;
|
|
103505
|
+
if (!isSelector(raw.b)) return `${at4} (before): "b" must be a non-empty string`;
|
|
103506
|
+
return { kind: "before", a: raw.a, b: raw.b };
|
|
103507
|
+
},
|
|
103508
|
+
staysInFrame: (raw, at4) => {
|
|
103509
|
+
if (!isSelector(raw.selector))
|
|
103510
|
+
return `${at4} (staysInFrame): "selector" must be a non-empty string`;
|
|
103511
|
+
return { kind: "staysInFrame", selector: raw.selector };
|
|
103512
|
+
},
|
|
103513
|
+
keepsMoving: (raw, at4) => {
|
|
103514
|
+
if (raw.withinSelector !== void 0 && !isSelector(raw.withinSelector))
|
|
103515
|
+
return `${at4} (keepsMoving): "withinSelector" must be a non-empty string when present`;
|
|
103516
|
+
if (raw.withinSelector === "*")
|
|
103517
|
+
return `${at4} (keepsMoving): "withinSelector" cannot be "*" \u2014 omit it for whole-composition liveness`;
|
|
103518
|
+
if (raw.maxStaticSec !== void 0 && !isPositive(raw.maxStaticSec))
|
|
103519
|
+
return `${at4} (keepsMoving): "maxStaticSec" must be a number > 0 when present`;
|
|
103520
|
+
const assertion = { kind: "keepsMoving" };
|
|
103521
|
+
if (isSelector(raw.withinSelector)) assertion.withinSelector = raw.withinSelector;
|
|
103522
|
+
if (isPositive(raw.maxStaticSec)) assertion.maxStaticSec = raw.maxStaticSec;
|
|
103523
|
+
return assertion;
|
|
103524
|
+
}
|
|
103525
|
+
};
|
|
103526
|
+
}
|
|
103527
|
+
});
|
|
103528
|
+
|
|
103232
103529
|
// src/commands/layout.ts
|
|
103233
103530
|
var layout_exports = {};
|
|
103234
103531
|
__export(layout_exports, {
|
|
@@ -103236,9 +103533,15 @@ __export(layout_exports, {
|
|
|
103236
103533
|
default: () => layout_default,
|
|
103237
103534
|
examples: () => examples10
|
|
103238
103535
|
});
|
|
103239
|
-
import { existsSync as
|
|
103240
|
-
import { dirname as dirname30, join as
|
|
103536
|
+
import { existsSync as existsSync64, readFileSync as readFileSync51 } from "fs";
|
|
103537
|
+
import { dirname as dirname30, join as join74 } from "path";
|
|
103241
103538
|
import { fileURLToPath as fileURLToPath9 } from "url";
|
|
103539
|
+
function buildMotionSampleTimes(duration) {
|
|
103540
|
+
if (!Number.isFinite(duration) || duration <= 0) return [];
|
|
103541
|
+
const count = Math.min(MOTION_MAX_SAMPLES, Math.max(2, Math.ceil(duration * MOTION_FPS) + 1));
|
|
103542
|
+
const step = duration / (count - 1);
|
|
103543
|
+
return Array.from({ length: count }, (_, index) => Math.round(index * step * 1e3) / 1e3);
|
|
103544
|
+
}
|
|
103242
103545
|
async function getCompositionDuration2(page) {
|
|
103243
103546
|
return page.evaluate(() => {
|
|
103244
103547
|
const win = window;
|
|
@@ -103394,28 +103697,20 @@ async function runLayoutAudit(projectDir, opts) {
|
|
|
103394
103697
|
transitionSamplesDropped = transitions.dropped;
|
|
103395
103698
|
}
|
|
103396
103699
|
const samples = mergeSampleTimes(baseSamples, transitionSamples);
|
|
103397
|
-
|
|
103398
|
-
|
|
103399
|
-
|
|
103400
|
-
|
|
103401
|
-
|
|
103402
|
-
|
|
103403
|
-
await seekTo(page, time);
|
|
103404
|
-
const sampleIssues = await page.evaluate(
|
|
103405
|
-
(auditOptions) => {
|
|
103406
|
-
const win = window;
|
|
103407
|
-
return win.__hyperframesLayoutAudit?.(auditOptions) ?? [];
|
|
103408
|
-
},
|
|
103409
|
-
{ time, tolerance: opts.tolerance }
|
|
103410
|
-
);
|
|
103411
|
-
issues.push(...sampleIssues);
|
|
103700
|
+
const issues = await collectLayoutIssues(page, samples, opts.tolerance);
|
|
103701
|
+
let motionSamples = 0;
|
|
103702
|
+
if (opts.motion) {
|
|
103703
|
+
const motion = await runMotionPass(page, opts.motion, duration);
|
|
103704
|
+
issues.push(...motion.issues);
|
|
103705
|
+
motionSamples = motion.sampleCount;
|
|
103412
103706
|
}
|
|
103413
103707
|
return {
|
|
103414
103708
|
duration,
|
|
103415
103709
|
samples,
|
|
103416
103710
|
transitionSamples,
|
|
103417
103711
|
transitionSamplesDropped,
|
|
103418
|
-
rawIssues: dedupeLayoutIssues(issues)
|
|
103712
|
+
rawIssues: dedupeLayoutIssues(issues),
|
|
103713
|
+
motionSamples
|
|
103419
103714
|
};
|
|
103420
103715
|
} finally {
|
|
103421
103716
|
await chromeBrowser?.close().catch(() => {
|
|
@@ -103423,15 +103718,101 @@ async function runLayoutAudit(projectDir, opts) {
|
|
|
103423
103718
|
await server.close();
|
|
103424
103719
|
}
|
|
103425
103720
|
}
|
|
103426
|
-
function
|
|
103427
|
-
const candidates = [
|
|
103428
|
-
join73(__dirname2, "layout-audit.browser.js"),
|
|
103429
|
-
join73(__dirname2, "commands", "layout-audit.browser.js")
|
|
103430
|
-
];
|
|
103721
|
+
function loadBrowserScript(name) {
|
|
103722
|
+
const candidates = [join74(__dirname2, name), join74(__dirname2, "commands", name)];
|
|
103431
103723
|
for (const candidate of candidates) {
|
|
103432
|
-
if (
|
|
103724
|
+
if (existsSync64(candidate)) return readFileSync51(candidate, "utf-8");
|
|
103725
|
+
}
|
|
103726
|
+
throw new Error(`Missing browser script ${name}`);
|
|
103727
|
+
}
|
|
103728
|
+
function loadLayoutAuditScript() {
|
|
103729
|
+
return loadBrowserScript("layout-audit.browser.js");
|
|
103730
|
+
}
|
|
103731
|
+
async function collectLayoutIssues(page, samples, tolerance) {
|
|
103732
|
+
if (samples.length === 0) return [];
|
|
103733
|
+
await page.addScriptTag({ content: loadLayoutAuditScript() });
|
|
103734
|
+
const issues = [];
|
|
103735
|
+
for (const time of samples) {
|
|
103736
|
+
await seekTo(page, time);
|
|
103737
|
+
const sampleIssues = await page.evaluate(
|
|
103738
|
+
(auditOptions) => {
|
|
103739
|
+
const win = window;
|
|
103740
|
+
return win.__hyperframesLayoutAudit?.(auditOptions) ?? [];
|
|
103741
|
+
},
|
|
103742
|
+
{ time, tolerance }
|
|
103743
|
+
);
|
|
103744
|
+
issues.push(...sampleIssues);
|
|
103745
|
+
}
|
|
103746
|
+
return issues;
|
|
103747
|
+
}
|
|
103748
|
+
async function findAmbiguousSelectors(page, selectors) {
|
|
103749
|
+
if (selectors.length === 0) return [];
|
|
103750
|
+
const multiMatch = await page.evaluate(
|
|
103751
|
+
(sels) => sels.filter((sel) => {
|
|
103752
|
+
try {
|
|
103753
|
+
return document.querySelectorAll(sel).length > 1;
|
|
103754
|
+
} catch {
|
|
103755
|
+
return false;
|
|
103756
|
+
}
|
|
103757
|
+
}),
|
|
103758
|
+
selectors
|
|
103759
|
+
);
|
|
103760
|
+
return multiMatch.map(ambiguousIssue);
|
|
103761
|
+
}
|
|
103762
|
+
async function collectMotionFrames(page, times, selectors, livenessScopes) {
|
|
103763
|
+
const frames = [];
|
|
103764
|
+
for (const time of times) {
|
|
103765
|
+
await seekTo(page, time);
|
|
103766
|
+
const sample = await page.evaluate(
|
|
103767
|
+
(options) => {
|
|
103768
|
+
const win = window;
|
|
103769
|
+
return win.__hyperframesMotionSample?.(options) ?? { data: {}, liveness: {} };
|
|
103770
|
+
},
|
|
103771
|
+
{ selectors, livenessScopes }
|
|
103772
|
+
);
|
|
103773
|
+
frames.push({ time, data: sample.data, liveness: sample.liveness });
|
|
103433
103774
|
}
|
|
103434
|
-
|
|
103775
|
+
return frames;
|
|
103776
|
+
}
|
|
103777
|
+
async function runMotionPass(page, spec, duration) {
|
|
103778
|
+
const times = buildMotionSampleTimes(spec.duration ?? duration);
|
|
103779
|
+
if (times.length === 0) return { issues: [], sampleCount: 0 };
|
|
103780
|
+
const { selectors, livenessScopes } = collectSamplingTargets(spec.assertions);
|
|
103781
|
+
const ambiguous = await findAmbiguousSelectors(page, selectors);
|
|
103782
|
+
if (ambiguous.length > 0) return { issues: ambiguous, sampleCount: 0 };
|
|
103783
|
+
const canvas = await page.evaluate(() => ({
|
|
103784
|
+
width: window.innerWidth,
|
|
103785
|
+
height: window.innerHeight
|
|
103786
|
+
}));
|
|
103787
|
+
await page.addScriptTag({ content: loadBrowserScript("motion-sample.browser.js") });
|
|
103788
|
+
const frames = await collectMotionFrames(page, times, selectors, livenessScopes);
|
|
103789
|
+
return { issues: evaluateMotion(frames, spec.assertions, canvas), sampleCount: frames.length };
|
|
103790
|
+
}
|
|
103791
|
+
function resolveMotionSpec(specPath, json) {
|
|
103792
|
+
const parsed = readMotionSpec(specPath);
|
|
103793
|
+
if (parsed.ok) return parsed.spec;
|
|
103794
|
+
const message = `Invalid motion spec ${specPath}: ${parsed.errors.join("; ")}`;
|
|
103795
|
+
if (json) {
|
|
103796
|
+
console.log(
|
|
103797
|
+
JSON.stringify(
|
|
103798
|
+
withMeta({
|
|
103799
|
+
schemaVersion: INSPECT_SCHEMA_VERSION,
|
|
103800
|
+
ok: false,
|
|
103801
|
+
error: message,
|
|
103802
|
+
issues: [],
|
|
103803
|
+
errorCount: 0,
|
|
103804
|
+
warningCount: 0,
|
|
103805
|
+
infoCount: 0,
|
|
103806
|
+
issueCount: 0
|
|
103807
|
+
}),
|
|
103808
|
+
null,
|
|
103809
|
+
2
|
|
103810
|
+
)
|
|
103811
|
+
);
|
|
103812
|
+
} else {
|
|
103813
|
+
console.error(`${c2.error("\u2717")} ${message}`);
|
|
103814
|
+
}
|
|
103815
|
+
process.exit(1);
|
|
103435
103816
|
}
|
|
103436
103817
|
function parseAt(value) {
|
|
103437
103818
|
if (!value) return void 0;
|
|
@@ -103442,7 +103823,7 @@ function createInspectCommand(commandName) {
|
|
|
103442
103823
|
return defineCommand({
|
|
103443
103824
|
meta: {
|
|
103444
103825
|
name: commandName,
|
|
103445
|
-
description: "Inspect rendered composition layout for text
|
|
103826
|
+
description: "Inspect rendered composition layout for text/container overflow, plus optional motion verification via a *.motion.json sidecar"
|
|
103446
103827
|
},
|
|
103447
103828
|
args: {
|
|
103448
103829
|
dir: { type: "positional", description: "Project directory", required: false },
|
|
@@ -103503,11 +103884,14 @@ function createInspectCommand(commandName) {
|
|
|
103503
103884
|
const maxTransitionSamples = Number.isFinite(maxTransitionSamplesRaw) && maxTransitionSamplesRaw > 0 ? maxTransitionSamplesRaw : void 0;
|
|
103504
103885
|
const strict = !!args.strict;
|
|
103505
103886
|
const collapseStatic = args["collapse-static"] !== false;
|
|
103887
|
+
const motionSpecPath = findMotionSpec(project.dir);
|
|
103888
|
+
const motionSpec = motionSpecPath ? resolveMotionSpec(motionSpecPath, !!args.json) : void 0;
|
|
103506
103889
|
if (!args.json) {
|
|
103507
103890
|
const baseLabel = at4 ? `${at4.length} explicit timestamp(s)` : `${samples} timeline samples`;
|
|
103508
103891
|
const sampleLabel = atTransitions ? `${baseLabel} + transition boundaries` : baseLabel;
|
|
103892
|
+
const motionLabel = motionSpec ? ` + motion spec (${motionSpec.assertions.length} assertion(s))` : "";
|
|
103509
103893
|
console.log(
|
|
103510
|
-
`${c2.accent("\u25C6")} Inspecting layout for ${c2.accent(project.name)} (${sampleLabel})`
|
|
103894
|
+
`${c2.accent("\u25C6")} Inspecting layout for ${c2.accent(project.name)} (${sampleLabel}${motionLabel})`
|
|
103511
103895
|
);
|
|
103512
103896
|
}
|
|
103513
103897
|
try {
|
|
@@ -103517,7 +103901,8 @@ function createInspectCommand(commandName) {
|
|
|
103517
103901
|
atTransitions,
|
|
103518
103902
|
maxTransitionSamples,
|
|
103519
103903
|
timeout,
|
|
103520
|
-
tolerance
|
|
103904
|
+
tolerance,
|
|
103905
|
+
motion: motionSpec
|
|
103521
103906
|
});
|
|
103522
103907
|
if (!args.json && result.transitionSamplesDropped > 0) {
|
|
103523
103908
|
console.log(
|
|
@@ -103540,6 +103925,8 @@ function createInspectCommand(commandName) {
|
|
|
103540
103925
|
tolerance,
|
|
103541
103926
|
strict,
|
|
103542
103927
|
collapseStatic,
|
|
103928
|
+
motionSpec: motionSpec ? motionSpecPath : void 0,
|
|
103929
|
+
motionSamples: motionSpec ? result.motionSamples : void 0,
|
|
103543
103930
|
...summary,
|
|
103544
103931
|
totalIssueCount: limited.totalIssueCount,
|
|
103545
103932
|
truncated: limited.truncated,
|
|
@@ -103607,7 +103994,7 @@ function createInspectCommand(commandName) {
|
|
|
103607
103994
|
}
|
|
103608
103995
|
});
|
|
103609
103996
|
}
|
|
103610
|
-
var __filename, __dirname2, SEEK_SETTLE_MS, INSPECT_SCHEMA_VERSION, examples10, layout_default;
|
|
103997
|
+
var __filename, __dirname2, SEEK_SETTLE_MS, INSPECT_SCHEMA_VERSION, MOTION_FPS, MOTION_MAX_SAMPLES, examples10, layout_default;
|
|
103611
103998
|
var init_layout2 = __esm({
|
|
103612
103999
|
"src/commands/layout.ts"() {
|
|
103613
104000
|
"use strict";
|
|
@@ -103617,10 +104004,14 @@ var init_layout2 = __esm({
|
|
|
103617
104004
|
init_staticProjectServer();
|
|
103618
104005
|
init_updateCheck();
|
|
103619
104006
|
init_layoutAudit();
|
|
104007
|
+
init_motionAudit();
|
|
104008
|
+
init_motionSpec();
|
|
103620
104009
|
__filename = fileURLToPath9(import.meta.url);
|
|
103621
104010
|
__dirname2 = dirname30(__filename);
|
|
103622
104011
|
SEEK_SETTLE_MS = 120;
|
|
103623
104012
|
INSPECT_SCHEMA_VERSION = 1;
|
|
104013
|
+
MOTION_FPS = 20;
|
|
104014
|
+
MOTION_MAX_SAMPLES = 300;
|
|
103624
104015
|
examples10 = [
|
|
103625
104016
|
["Inspect visual layout across the current composition", "hyperframes layout"],
|
|
103626
104017
|
["Inspect a specific project", "hyperframes layout ./my-video"],
|
|
@@ -103629,6 +104020,10 @@ var init_layout2 = __esm({
|
|
|
103629
104020
|
[
|
|
103630
104021
|
"Also sample at tween boundaries to catch transient overlaps",
|
|
103631
104022
|
"hyperframes layout --at-transitions"
|
|
104023
|
+
],
|
|
104024
|
+
[
|
|
104025
|
+
"Verify motion intent (add a *.motion.json sidecar next to the composition)",
|
|
104026
|
+
"hyperframes layout --json"
|
|
103632
104027
|
]
|
|
103633
104028
|
];
|
|
103634
104029
|
layout_default = createInspectCommand("layout");
|
|
@@ -103655,6 +104050,10 @@ var init_inspect = __esm({
|
|
|
103655
104050
|
"Also sample at tween boundaries to catch transient overlaps",
|
|
103656
104051
|
"hyperframes inspect --at-transitions"
|
|
103657
104052
|
],
|
|
104053
|
+
[
|
|
104054
|
+
"Verify motion intent (add a *.motion.json sidecar next to the composition)",
|
|
104055
|
+
"hyperframes inspect --json"
|
|
104056
|
+
],
|
|
103658
104057
|
["Run the compatibility alias", "hyperframes layout --json"]
|
|
103659
104058
|
];
|
|
103660
104059
|
inspect_default = createInspectCommand("inspect");
|
|
@@ -103667,12 +104066,12 @@ __export(info_exports, {
|
|
|
103667
104066
|
default: () => info_default,
|
|
103668
104067
|
examples: () => examples12
|
|
103669
104068
|
});
|
|
103670
|
-
import { readFileSync as
|
|
103671
|
-
import { join as
|
|
104069
|
+
import { readFileSync as readFileSync52, readdirSync as readdirSync27, statSync as statSync22 } from "fs";
|
|
104070
|
+
import { join as join75 } from "path";
|
|
103672
104071
|
function totalSize(dir) {
|
|
103673
104072
|
let total = 0;
|
|
103674
|
-
for (const entry of
|
|
103675
|
-
const path2 =
|
|
104073
|
+
for (const entry of readdirSync27(dir, { withFileTypes: true })) {
|
|
104074
|
+
const path2 = join75(dir, entry.name);
|
|
103676
104075
|
if (entry.isDirectory()) {
|
|
103677
104076
|
total += totalSize(path2);
|
|
103678
104077
|
} else {
|
|
@@ -103704,7 +104103,7 @@ var init_info = __esm({
|
|
|
103704
104103
|
},
|
|
103705
104104
|
async run({ args }) {
|
|
103706
104105
|
const project = resolveProject(args.dir);
|
|
103707
|
-
const html =
|
|
104106
|
+
const html = readFileSync52(project.indexPath, "utf-8");
|
|
103708
104107
|
ensureDOMParser();
|
|
103709
104108
|
const parsed = parseHtml(html);
|
|
103710
104109
|
const tracks = new Set(parsed.elements.map((el) => el.zIndex));
|
|
@@ -103762,7 +104161,7 @@ __export(compositions_exports, {
|
|
|
103762
104161
|
examples: () => examples13,
|
|
103763
104162
|
parseSubComposition: () => parseSubComposition
|
|
103764
104163
|
});
|
|
103765
|
-
import { existsSync as
|
|
104164
|
+
import { existsSync as existsSync65, readFileSync as readFileSync53 } from "fs";
|
|
103766
104165
|
import { resolve as resolve43, dirname as dirname31 } from "path";
|
|
103767
104166
|
function countRenderableDescendants(root) {
|
|
103768
104167
|
return Array.from(root.querySelectorAll("*")).filter(
|
|
@@ -103796,8 +104195,8 @@ function parseCompositions(html, baseDir) {
|
|
|
103796
104195
|
const compositionSrc = div.getAttribute("data-composition-src");
|
|
103797
104196
|
if (compositionSrc) {
|
|
103798
104197
|
const subPath = resolve43(baseDir, compositionSrc);
|
|
103799
|
-
if (
|
|
103800
|
-
const subHtml =
|
|
104198
|
+
if (existsSync65(subPath)) {
|
|
104199
|
+
const subHtml = readFileSync53(subPath, "utf-8");
|
|
103801
104200
|
const subInfo = parseSubComposition(subHtml, id, width, height);
|
|
103802
104201
|
compositions.push({ ...subInfo, source: compositionSrc });
|
|
103803
104202
|
return;
|
|
@@ -103900,7 +104299,7 @@ var init_compositions = __esm({
|
|
|
103900
104299
|
},
|
|
103901
104300
|
async run({ args }) {
|
|
103902
104301
|
const project = resolveProject(args.dir);
|
|
103903
|
-
const html =
|
|
104302
|
+
const html = readFileSync53(project.indexPath, "utf-8");
|
|
103904
104303
|
ensureDOMParser();
|
|
103905
104304
|
const compositions = parseCompositions(html, dirname31(project.indexPath));
|
|
103906
104305
|
if (compositions.length === 0) {
|
|
@@ -103938,8 +104337,8 @@ __export(benchmark_exports, {
|
|
|
103938
104337
|
default: () => benchmark_default,
|
|
103939
104338
|
examples: () => examples14
|
|
103940
104339
|
});
|
|
103941
|
-
import { existsSync as
|
|
103942
|
-
import { resolve as resolve44, join as
|
|
104340
|
+
import { existsSync as existsSync66, statSync as statSync23 } from "fs";
|
|
104341
|
+
import { resolve as resolve44, join as join76 } from "path";
|
|
103943
104342
|
var examples14, FPS_30, FPS_60, DEFAULT_CONFIGS, benchmark_default;
|
|
103944
104343
|
var init_benchmark = __esm({
|
|
103945
104344
|
"src/commands/benchmark.ts"() {
|
|
@@ -104017,7 +104416,7 @@ var init_benchmark = __esm({
|
|
|
104017
104416
|
s2?.start(`Benchmarking ${config.label}...`);
|
|
104018
104417
|
for (let i2 = 0; i2 < runsPerConfig; i2++) {
|
|
104019
104418
|
s2?.message(`${config.label} \u2014 run ${i2 + 1}/${runsPerConfig}`);
|
|
104020
|
-
const outputPath =
|
|
104419
|
+
const outputPath = join76(
|
|
104021
104420
|
benchDir,
|
|
104022
104421
|
`${config.label.replace(/[^a-zA-Z0-9]/g, "_")}_run${i2}.mp4`
|
|
104023
104422
|
);
|
|
@@ -104031,7 +104430,7 @@ var init_benchmark = __esm({
|
|
|
104031
104430
|
await producer.executeRenderJob(job, project.dir, outputPath);
|
|
104032
104431
|
const elapsedMs = Date.now() - startTime;
|
|
104033
104432
|
let fileSize = null;
|
|
104034
|
-
if (
|
|
104433
|
+
if (existsSync66(outputPath)) {
|
|
104035
104434
|
const stat3 = statSync23(outputPath);
|
|
104036
104435
|
fileSize = stat3.size;
|
|
104037
104436
|
}
|
|
@@ -104285,9 +104684,9 @@ __export(manager_exports3, {
|
|
|
104285
104684
|
modelPath: () => modelPath,
|
|
104286
104685
|
selectProviders: () => selectProviders
|
|
104287
104686
|
});
|
|
104288
|
-
import { existsSync as
|
|
104687
|
+
import { existsSync as existsSync67, mkdirSync as mkdirSync37 } from "fs";
|
|
104289
104688
|
import { homedir as homedir9, platform as platform8, arch } from "os";
|
|
104290
|
-
import { join as
|
|
104689
|
+
import { join as join77 } from "path";
|
|
104291
104690
|
function isDevice(value) {
|
|
104292
104691
|
return typeof value === "string" && DEVICES.includes(value);
|
|
104293
104692
|
}
|
|
@@ -104327,15 +104726,15 @@ function listAvailableProviders() {
|
|
|
104327
104726
|
return out;
|
|
104328
104727
|
}
|
|
104329
104728
|
function modelPath(model = DEFAULT_MODEL2) {
|
|
104330
|
-
return
|
|
104729
|
+
return join77(MODELS_DIR2, `${model}.onnx`);
|
|
104331
104730
|
}
|
|
104332
104731
|
async function ensureModel2(model = DEFAULT_MODEL2, options) {
|
|
104333
104732
|
const dest = modelPath(model);
|
|
104334
|
-
if (
|
|
104733
|
+
if (existsSync67(dest)) return dest;
|
|
104335
104734
|
mkdirSync37(MODELS_DIR2, { recursive: true });
|
|
104336
104735
|
options?.onProgress?.(`Downloading ${model} weights (~168 MB)...`);
|
|
104337
104736
|
await downloadFile(MODEL_URLS[model], dest);
|
|
104338
|
-
if (!
|
|
104737
|
+
if (!existsSync67(dest)) {
|
|
104339
104738
|
throw new Error(`Model download failed: ${model}`);
|
|
104340
104739
|
}
|
|
104341
104740
|
return dest;
|
|
@@ -104345,7 +104744,7 @@ var init_manager3 = __esm({
|
|
|
104345
104744
|
"src/background-removal/manager.ts"() {
|
|
104346
104745
|
"use strict";
|
|
104347
104746
|
init_download();
|
|
104348
|
-
MODELS_DIR2 =
|
|
104747
|
+
MODELS_DIR2 = join77(homedir9(), ".cache", "hyperframes", "background-removal", "models");
|
|
104349
104748
|
DEFAULT_MODEL2 = "u2net_human_seg";
|
|
104350
104749
|
MODEL_URLS = {
|
|
104351
104750
|
u2net_human_seg: "https://github.com/danielgatis/rembg/releases/download/v0.0.0/u2net_human_seg.onnx"
|
|
@@ -104827,12 +105226,12 @@ __export(remove_background_exports, {
|
|
|
104827
105226
|
examples: () => examples16
|
|
104828
105227
|
});
|
|
104829
105228
|
import { resolve as resolve45 } from "path";
|
|
104830
|
-
import { existsSync as
|
|
105229
|
+
import { existsSync as existsSync68 } from "fs";
|
|
104831
105230
|
async function showInfo(json) {
|
|
104832
105231
|
const { selectProviders: selectProviders2, listAvailableProviders: listAvailableProviders2, DEFAULT_MODEL: DEFAULT_MODEL4, MODEL_MEMORY_MB: MODEL_MEMORY_MB2, modelPath: modelPath2 } = await Promise.resolve().then(() => (init_manager3(), manager_exports3));
|
|
104833
105232
|
const providers = listAvailableProviders2();
|
|
104834
105233
|
const auto = selectProviders2("auto");
|
|
104835
|
-
const cached2 =
|
|
105234
|
+
const cached2 = existsSync68(modelPath2());
|
|
104836
105235
|
if (json) {
|
|
104837
105236
|
console.log(
|
|
104838
105237
|
JSON.stringify({
|
|
@@ -105039,8 +105438,8 @@ __export(transcribe_exports2, {
|
|
|
105039
105438
|
default: () => transcribe_default,
|
|
105040
105439
|
examples: () => examples17
|
|
105041
105440
|
});
|
|
105042
|
-
import { existsSync as
|
|
105043
|
-
import { resolve as resolve46, join as
|
|
105441
|
+
import { existsSync as existsSync69, writeFileSync as writeFileSync30 } from "fs";
|
|
105442
|
+
import { resolve as resolve46, join as join78, extname as extname11, dirname as dirname32 } from "path";
|
|
105044
105443
|
async function importTranscript(inputPath, dir, json) {
|
|
105045
105444
|
const { loadTranscript: loadTranscript2, patchCaptionHtml: patchCaptionHtml2 } = await Promise.resolve().then(() => (init_normalize(), normalize_exports));
|
|
105046
105445
|
const { words, format } = loadTranscript2(inputPath);
|
|
@@ -105048,7 +105447,7 @@ async function importTranscript(inputPath, dir, json) {
|
|
|
105048
105447
|
console.error(c2.error("No words found in transcript."));
|
|
105049
105448
|
process.exit(1);
|
|
105050
105449
|
}
|
|
105051
|
-
const outPath =
|
|
105450
|
+
const outPath = join78(dir, "transcript.json");
|
|
105052
105451
|
writeFileSync30(outPath, JSON.stringify(words, null, 2));
|
|
105053
105452
|
patchCaptionHtml2(dir, words);
|
|
105054
105453
|
if (json) {
|
|
@@ -105075,9 +105474,9 @@ async function transcribeAudio(inputPath, dir, opts) {
|
|
|
105075
105474
|
});
|
|
105076
105475
|
let { words } = loadTranscript2(result.transcriptPath);
|
|
105077
105476
|
if (result.speechOnsetSeconds != null) {
|
|
105078
|
-
const
|
|
105477
|
+
const before3 = words.length;
|
|
105079
105478
|
words = stripBeforeOnset2(words, result.speechOnsetSeconds);
|
|
105080
|
-
const stripped =
|
|
105479
|
+
const stripped = before3 - words.length;
|
|
105081
105480
|
if (stripped > 0 && !opts.json) {
|
|
105082
105481
|
spin?.message(
|
|
105083
105482
|
`Stripped ${stripped} words before speech onset at ${result.speechOnsetSeconds.toFixed(1)}s`
|
|
@@ -105165,7 +105564,7 @@ var init_transcribe2 = __esm({
|
|
|
105165
105564
|
},
|
|
105166
105565
|
async run({ args }) {
|
|
105167
105566
|
const inputPath = resolve46(args.input);
|
|
105168
|
-
if (!
|
|
105567
|
+
if (!existsSync69(inputPath)) {
|
|
105169
105568
|
console.error(c2.error(`File not found: ${args.input}`));
|
|
105170
105569
|
process.exit(1);
|
|
105171
105570
|
}
|
|
@@ -105186,9 +105585,9 @@ var init_transcribe2 = __esm({
|
|
|
105186
105585
|
});
|
|
105187
105586
|
|
|
105188
105587
|
// src/tts/manager.ts
|
|
105189
|
-
import { existsSync as
|
|
105588
|
+
import { existsSync as existsSync70, mkdirSync as mkdirSync38 } from "fs";
|
|
105190
105589
|
import { homedir as homedir10 } from "os";
|
|
105191
|
-
import { join as
|
|
105590
|
+
import { join as join79 } from "path";
|
|
105192
105591
|
function inferLangFromVoiceId(voiceId) {
|
|
105193
105592
|
const first = voiceId.charAt(0).toLowerCase();
|
|
105194
105593
|
return VOICE_PREFIX_LANG[first] ?? "en-us";
|
|
@@ -105197,8 +105596,8 @@ function isSupportedLang(value) {
|
|
|
105197
105596
|
return SUPPORTED_LANGS.includes(value);
|
|
105198
105597
|
}
|
|
105199
105598
|
async function ensureModel3(model = DEFAULT_MODEL3, options) {
|
|
105200
|
-
const modelPath2 =
|
|
105201
|
-
if (
|
|
105599
|
+
const modelPath2 = join79(MODELS_DIR3, `${model}.onnx`);
|
|
105600
|
+
if (existsSync70(modelPath2)) return modelPath2;
|
|
105202
105601
|
const url = MODEL_URLS2[model];
|
|
105203
105602
|
if (!url) {
|
|
105204
105603
|
throw new Error(
|
|
@@ -105208,18 +105607,18 @@ async function ensureModel3(model = DEFAULT_MODEL3, options) {
|
|
|
105208
105607
|
mkdirSync38(MODELS_DIR3, { recursive: true });
|
|
105209
105608
|
options?.onProgress?.(`Downloading TTS model ${model} (~311 MB)...`);
|
|
105210
105609
|
await downloadFile(url, modelPath2);
|
|
105211
|
-
if (!
|
|
105610
|
+
if (!existsSync70(modelPath2)) {
|
|
105212
105611
|
throw new Error(`Model download failed: ${model}`);
|
|
105213
105612
|
}
|
|
105214
105613
|
return modelPath2;
|
|
105215
105614
|
}
|
|
105216
105615
|
async function ensureVoices(options) {
|
|
105217
|
-
const voicesPath =
|
|
105218
|
-
if (
|
|
105616
|
+
const voicesPath = join79(VOICES_DIR, "voices-v1.0.bin");
|
|
105617
|
+
if (existsSync70(voicesPath)) return voicesPath;
|
|
105219
105618
|
mkdirSync38(VOICES_DIR, { recursive: true });
|
|
105220
105619
|
options?.onProgress?.("Downloading voice data (~27 MB)...");
|
|
105221
105620
|
await downloadFile(VOICES_URL, voicesPath);
|
|
105222
|
-
if (!
|
|
105621
|
+
if (!existsSync70(voicesPath)) {
|
|
105223
105622
|
throw new Error("Voice data download failed");
|
|
105224
105623
|
}
|
|
105225
105624
|
return voicesPath;
|
|
@@ -105229,9 +105628,9 @@ var init_manager4 = __esm({
|
|
|
105229
105628
|
"src/tts/manager.ts"() {
|
|
105230
105629
|
"use strict";
|
|
105231
105630
|
init_download();
|
|
105232
|
-
CACHE_DIR3 =
|
|
105233
|
-
MODELS_DIR3 =
|
|
105234
|
-
VOICES_DIR =
|
|
105631
|
+
CACHE_DIR3 = join79(homedir10(), ".cache", "hyperframes", "tts");
|
|
105632
|
+
MODELS_DIR3 = join79(CACHE_DIR3, "models");
|
|
105633
|
+
VOICES_DIR = join79(CACHE_DIR3, "voices");
|
|
105235
105634
|
DEFAULT_MODEL3 = "kokoro-v1.0";
|
|
105236
105635
|
MODEL_URLS2 = {
|
|
105237
105636
|
"kokoro-v1.0": "https://github.com/thewh1teagle/kokoro-onnx/releases/download/model-files-v1.0/kokoro-v1.0.onnx"
|
|
@@ -105292,8 +105691,8 @@ __export(synthesize_exports, {
|
|
|
105292
105691
|
synthesize: () => synthesize
|
|
105293
105692
|
});
|
|
105294
105693
|
import { execFileSync as execFileSync9 } from "child_process";
|
|
105295
|
-
import { existsSync as
|
|
105296
|
-
import { join as
|
|
105694
|
+
import { existsSync as existsSync71, writeFileSync as writeFileSync31, mkdirSync as mkdirSync39, readdirSync as readdirSync28, unlinkSync as unlinkSync7 } from "fs";
|
|
105695
|
+
import { join as join80, dirname as dirname33, basename as basename15 } from "path";
|
|
105297
105696
|
import { homedir as homedir11 } from "os";
|
|
105298
105697
|
function findPython() {
|
|
105299
105698
|
for (const name of ["python3", "python"]) {
|
|
@@ -105329,15 +105728,15 @@ function hasPythonPackage(python, pkg) {
|
|
|
105329
105728
|
}
|
|
105330
105729
|
}
|
|
105331
105730
|
function ensureSynthScript() {
|
|
105332
|
-
if (!
|
|
105731
|
+
if (!existsSync71(SCRIPT_PATH)) {
|
|
105333
105732
|
mkdirSync39(SCRIPT_DIR, { recursive: true });
|
|
105334
105733
|
writeFileSync31(SCRIPT_PATH, SYNTH_SCRIPT);
|
|
105335
|
-
const currentName =
|
|
105734
|
+
const currentName = basename15(SCRIPT_PATH);
|
|
105336
105735
|
try {
|
|
105337
|
-
for (const entry of
|
|
105736
|
+
for (const entry of readdirSync28(SCRIPT_DIR)) {
|
|
105338
105737
|
if (entry !== currentName && /^synth(-v\d+)?\.py$/.test(entry)) {
|
|
105339
105738
|
try {
|
|
105340
|
-
unlinkSync7(
|
|
105739
|
+
unlinkSync7(join80(SCRIPT_DIR, entry));
|
|
105341
105740
|
} catch {
|
|
105342
105741
|
}
|
|
105343
105742
|
}
|
|
@@ -105383,7 +105782,7 @@ async function synthesize(text, outputPath, options) {
|
|
|
105383
105782
|
stdio: ["pipe", "pipe", "pipe"]
|
|
105384
105783
|
}
|
|
105385
105784
|
);
|
|
105386
|
-
if (!
|
|
105785
|
+
if (!existsSync71(outputPath)) {
|
|
105387
105786
|
throw new Error("Synthesis completed but no output file was created");
|
|
105388
105787
|
}
|
|
105389
105788
|
const lines = stdout2.trim().split("\n");
|
|
@@ -105396,7 +105795,7 @@ async function synthesize(text, outputPath, options) {
|
|
|
105396
105795
|
langApplied: result.langApplied
|
|
105397
105796
|
};
|
|
105398
105797
|
} catch (err) {
|
|
105399
|
-
if (err instanceof SyntaxError &&
|
|
105798
|
+
if (err instanceof SyntaxError && existsSync71(outputPath)) {
|
|
105400
105799
|
throw new Error(
|
|
105401
105800
|
"Speech was generated but metadata could not be read. Check the output file manually."
|
|
105402
105801
|
);
|
|
@@ -105447,8 +105846,8 @@ print(json.dumps({
|
|
|
105447
105846
|
"langApplied": bool(lang and supports_lang),
|
|
105448
105847
|
}))
|
|
105449
105848
|
`;
|
|
105450
|
-
SCRIPT_DIR =
|
|
105451
|
-
SCRIPT_PATH =
|
|
105849
|
+
SCRIPT_DIR = join80(homedir11(), ".cache", "hyperframes", "tts");
|
|
105850
|
+
SCRIPT_PATH = join80(SCRIPT_DIR, "synth-v2.py");
|
|
105452
105851
|
}
|
|
105453
105852
|
});
|
|
105454
105853
|
|
|
@@ -105458,7 +105857,7 @@ __export(tts_exports, {
|
|
|
105458
105857
|
default: () => tts_default,
|
|
105459
105858
|
examples: () => examples18
|
|
105460
105859
|
});
|
|
105461
|
-
import { existsSync as
|
|
105860
|
+
import { existsSync as existsSync72, readFileSync as readFileSync54 } from "fs";
|
|
105462
105861
|
import { resolve as resolve47, extname as extname12 } from "path";
|
|
105463
105862
|
function listVoices(json) {
|
|
105464
105863
|
const rows = BUNDLED_VOICES.map((v2) => ({ ...v2, defaultLang: inferLangFromVoiceId(v2.id) }));
|
|
@@ -105568,8 +105967,8 @@ var init_tts = __esm({
|
|
|
105568
105967
|
}
|
|
105569
105968
|
let text;
|
|
105570
105969
|
const maybeFile = resolve47(args.input);
|
|
105571
|
-
if (
|
|
105572
|
-
text =
|
|
105970
|
+
if (existsSync72(maybeFile) && extname12(maybeFile).toLowerCase() === ".txt") {
|
|
105971
|
+
text = readFileSync54(maybeFile, "utf-8").trim();
|
|
105573
105972
|
if (!text) {
|
|
105574
105973
|
console.error(c2.error("File is empty."));
|
|
105575
105974
|
process.exit(1);
|
|
@@ -105661,15 +106060,15 @@ __export(docs_exports, {
|
|
|
105661
106060
|
default: () => docs_default,
|
|
105662
106061
|
examples: () => examples19
|
|
105663
106062
|
});
|
|
105664
|
-
import { readFileSync as
|
|
105665
|
-
import { resolve as resolve48, dirname as dirname34, join as
|
|
106063
|
+
import { readFileSync as readFileSync55, existsSync as existsSync73 } from "fs";
|
|
106064
|
+
import { resolve as resolve48, dirname as dirname34, join as join81 } from "path";
|
|
105666
106065
|
import { fileURLToPath as fileURLToPath10 } from "url";
|
|
105667
106066
|
function docsDir() {
|
|
105668
106067
|
const thisFile = fileURLToPath10(import.meta.url);
|
|
105669
106068
|
const dir = dirname34(thisFile);
|
|
105670
106069
|
const devPath = resolve48(dir, "..", "docs");
|
|
105671
106070
|
const builtPath = resolve48(dir, "docs");
|
|
105672
|
-
return
|
|
106071
|
+
return existsSync73(devPath) ? devPath : builtPath;
|
|
105673
106072
|
}
|
|
105674
106073
|
function formatInlineCode(line) {
|
|
105675
106074
|
return line.replace(/`([^`]+)`/g, (_match, code) => c2.accent(code));
|
|
@@ -105766,12 +106165,12 @@ var init_docs = __esm({
|
|
|
105766
106165
|
}
|
|
105767
106166
|
process.exit(1);
|
|
105768
106167
|
}
|
|
105769
|
-
const filePath =
|
|
105770
|
-
if (!
|
|
106168
|
+
const filePath = join81(docsDir(), entry.file);
|
|
106169
|
+
if (!existsSync73(filePath)) {
|
|
105771
106170
|
console.error(c2.error(`Doc file not found: ${filePath}`));
|
|
105772
106171
|
process.exit(1);
|
|
105773
106172
|
}
|
|
105774
|
-
const content =
|
|
106173
|
+
const content = readFileSync55(filePath, "utf-8");
|
|
105775
106174
|
console.log();
|
|
105776
106175
|
renderMarkdown(content);
|
|
105777
106176
|
}
|
|
@@ -106299,8 +106698,8 @@ __export(validate_exports, {
|
|
|
106299
106698
|
default: () => validate_default,
|
|
106300
106699
|
shouldIgnoreRequestFailure: () => shouldIgnoreRequestFailure
|
|
106301
106700
|
});
|
|
106302
|
-
import { existsSync as
|
|
106303
|
-
import { join as
|
|
106701
|
+
import { existsSync as existsSync74, readFileSync as readFileSync56 } from "fs";
|
|
106702
|
+
import { join as join82, dirname as dirname35 } from "path";
|
|
106304
106703
|
import { fileURLToPath as fileURLToPath11 } from "url";
|
|
106305
106704
|
function shouldIgnoreRequestFailure(url, errorText) {
|
|
106306
106705
|
if (errorText !== "net::ERR_ABORTED") return false;
|
|
@@ -106352,11 +106751,11 @@ async function runContrastAudit(page) {
|
|
|
106352
106751
|
}
|
|
106353
106752
|
function loadContrastAuditScript() {
|
|
106354
106753
|
const candidates = [
|
|
106355
|
-
|
|
106356
|
-
|
|
106754
|
+
join82(__dirname3, "contrast-audit.browser.js"),
|
|
106755
|
+
join82(__dirname3, "commands", "contrast-audit.browser.js")
|
|
106357
106756
|
];
|
|
106358
106757
|
for (const candidate of candidates) {
|
|
106359
|
-
if (
|
|
106758
|
+
if (existsSync74(candidate)) return readFileSync56(candidate, "utf-8");
|
|
106360
106759
|
}
|
|
106361
106760
|
throw new Error("Missing contrast audit browser script");
|
|
106362
106761
|
}
|
|
@@ -106556,8 +106955,8 @@ __export(contactSheet_exports, {
|
|
|
106556
106955
|
createSvgContactSheet: () => createSvgContactSheet
|
|
106557
106956
|
});
|
|
106558
106957
|
import sharp from "sharp";
|
|
106559
|
-
import { readdirSync as
|
|
106560
|
-
import { join as
|
|
106958
|
+
import { readdirSync as readdirSync29, readFileSync as readFileSync57, writeFileSync as writeFileSync32, unlinkSync as unlinkSync8, existsSync as existsSync75 } from "fs";
|
|
106959
|
+
import { join as join83, extname as extname13, basename as basename16, dirname as dirname36 } from "path";
|
|
106561
106960
|
async function createContactSheet(imagePaths, outputPath, opts = {}) {
|
|
106562
106961
|
const {
|
|
106563
106962
|
cols = 3,
|
|
@@ -106590,7 +106989,7 @@ async function createContactSheet(imagePaths, outputPath, opts = {}) {
|
|
|
106590
106989
|
overlays.push({ input: resized, left: x3, top: y + labelH });
|
|
106591
106990
|
let labelText = `${i2 + 1}`;
|
|
106592
106991
|
if (labelMode === "filename") {
|
|
106593
|
-
labelText = `${i2 + 1}. ${
|
|
106992
|
+
labelText = `${i2 + 1}. ${basename16(files[i2]).replace(extname13(files[i2]), "")}`;
|
|
106594
106993
|
} else if (labelMode === "custom" && labels?.[i2]) {
|
|
106595
106994
|
labelText = `${i2 + 1}. ${labels[i2]}`;
|
|
106596
106995
|
}
|
|
@@ -106636,10 +107035,10 @@ async function createContactSheetPages(imagePaths, outputBasePath, opts = {}, la
|
|
|
106636
107035
|
return results;
|
|
106637
107036
|
}
|
|
106638
107037
|
async function createScrollContactSheet(screenshotsDir, outputPath) {
|
|
106639
|
-
if (!
|
|
106640
|
-
const scrollFiles =
|
|
107038
|
+
if (!existsSync75(screenshotsDir)) return [];
|
|
107039
|
+
const scrollFiles = readdirSync29(screenshotsDir).filter((f3) => f3.startsWith("scroll-") && f3.endsWith(".png")).sort();
|
|
106641
107040
|
if (scrollFiles.length === 0) return [];
|
|
106642
|
-
const paths = scrollFiles.map((f3) =>
|
|
107041
|
+
const paths = scrollFiles.map((f3) => join83(screenshotsDir, f3));
|
|
106643
107042
|
const labels = scrollFiles.map((f3) => {
|
|
106644
107043
|
const m2 = f3.match(/scroll-(\d+)\.png/);
|
|
106645
107044
|
return m2 ? `${m2[1]}% scroll` : f3;
|
|
@@ -106653,10 +107052,10 @@ async function createScrollContactSheet(screenshotsDir, outputPath) {
|
|
|
106653
107052
|
);
|
|
106654
107053
|
}
|
|
106655
107054
|
async function createSnapshotContactSheet(snapshotsDir, outputPath) {
|
|
106656
|
-
if (!
|
|
106657
|
-
const snapshotFiles =
|
|
107055
|
+
if (!existsSync75(snapshotsDir)) return [];
|
|
107056
|
+
const snapshotFiles = readdirSync29(snapshotsDir).filter((f3) => f3.startsWith("frame-") && f3.endsWith(".png")).sort();
|
|
106658
107057
|
if (snapshotFiles.length === 0) return [];
|
|
106659
|
-
const paths = snapshotFiles.map((f3) =>
|
|
107058
|
+
const paths = snapshotFiles.map((f3) => join83(snapshotsDir, f3));
|
|
106660
107059
|
const labels = snapshotFiles.map((f3) => {
|
|
106661
107060
|
const m2 = f3.match(/at-([\d.]+)s/);
|
|
106662
107061
|
return m2 ? `${m2[1]}s` : f3;
|
|
@@ -106670,11 +107069,11 @@ async function createSnapshotContactSheet(snapshotsDir, outputPath) {
|
|
|
106670
107069
|
);
|
|
106671
107070
|
}
|
|
106672
107071
|
async function createAssetContactSheet(assetsDir, outputPath) {
|
|
106673
|
-
if (!
|
|
107072
|
+
if (!existsSync75(assetsDir)) return [];
|
|
106674
107073
|
const imageExts = /* @__PURE__ */ new Set([".png", ".jpg", ".jpeg", ".webp"]);
|
|
106675
|
-
const assetFiles =
|
|
107074
|
+
const assetFiles = readdirSync29(assetsDir).filter((f3) => imageExts.has(extname13(f3).toLowerCase()) && !f3.includes("contact-sheet")).sort();
|
|
106676
107075
|
if (assetFiles.length === 0) return [];
|
|
106677
|
-
const paths = assetFiles.map((f3) =>
|
|
107076
|
+
const paths = assetFiles.map((f3) => join83(assetsDir, f3));
|
|
106678
107077
|
return createContactSheetPages(paths, outputPath, {
|
|
106679
107078
|
cols: 4,
|
|
106680
107079
|
cellWidth: 480,
|
|
@@ -106684,16 +107083,16 @@ async function createAssetContactSheet(assetsDir, outputPath) {
|
|
|
106684
107083
|
}
|
|
106685
107084
|
async function createSvgContactSheet(svgsDir, outputPath, assetsRootDir) {
|
|
106686
107085
|
const dirsToScan = [svgsDir, assetsRootDir].filter(
|
|
106687
|
-
(d2) => d2 !== void 0 &&
|
|
107086
|
+
(d2) => d2 !== void 0 && existsSync75(d2)
|
|
106688
107087
|
);
|
|
106689
107088
|
if (dirsToScan.length === 0) return [];
|
|
106690
107089
|
const seen = /* @__PURE__ */ new Set();
|
|
106691
107090
|
const svgPaths = [];
|
|
106692
107091
|
for (const dir of dirsToScan) {
|
|
106693
|
-
for (const f3 of
|
|
107092
|
+
for (const f3 of readdirSync29(dir).filter((f4) => f4.endsWith(".svg")).sort()) {
|
|
106694
107093
|
if (!seen.has(f3)) {
|
|
106695
107094
|
seen.add(f3);
|
|
106696
|
-
svgPaths.push(
|
|
107095
|
+
svgPaths.push(join83(dir, f3));
|
|
106697
107096
|
}
|
|
106698
107097
|
}
|
|
106699
107098
|
}
|
|
@@ -106705,9 +107104,9 @@ async function createSvgContactSheet(svgsDir, outputPath, assetsRootDir) {
|
|
|
106705
107104
|
const labels = [];
|
|
106706
107105
|
for (let i2 = 0; i2 < svgPaths.length; i2++) {
|
|
106707
107106
|
const svgPath = svgPaths[i2];
|
|
106708
|
-
const tmpPath =
|
|
107107
|
+
const tmpPath = join83(tmpDir, `.thumb-${i2}.png`);
|
|
106709
107108
|
try {
|
|
106710
|
-
const svgBuf =
|
|
107109
|
+
const svgBuf = readFileSync57(svgPath);
|
|
106711
107110
|
const thumb = await sharp(svgBuf).resize(thumbSize, thumbSize, {
|
|
106712
107111
|
fit: "contain",
|
|
106713
107112
|
background: { r: 245, g: 245, b: 245, alpha: 1 }
|
|
@@ -108400,11 +108799,11 @@ var require_ponyfill_es2018 = __commonJS({
|
|
|
108400
108799
|
throw new TypeError(`${context} is not a function.`);
|
|
108401
108800
|
}
|
|
108402
108801
|
}
|
|
108403
|
-
function
|
|
108802
|
+
function isObject2(x3) {
|
|
108404
108803
|
return typeof x3 === "object" && x3 !== null || typeof x3 === "function";
|
|
108405
108804
|
}
|
|
108406
108805
|
function assertObject(x3, context) {
|
|
108407
|
-
if (!
|
|
108806
|
+
if (!isObject2(x3)) {
|
|
108408
108807
|
throw new TypeError(`${context} is not an object.`);
|
|
108409
108808
|
}
|
|
108410
108809
|
}
|
|
@@ -112908,7 +113307,7 @@ var require_node_domexception = __commonJS({
|
|
|
112908
113307
|
|
|
112909
113308
|
// ../../node_modules/.bun/fetch-blob@3.2.0/node_modules/fetch-blob/from.js
|
|
112910
113309
|
import { statSync as statSync24, createReadStream as createReadStream2, promises as fs2 } from "fs";
|
|
112911
|
-
import { basename as
|
|
113310
|
+
import { basename as basename17 } from "path";
|
|
112912
113311
|
var import_node_domexception, stat, blobFromSync, blobFrom, fileFrom, fileFromSync, fromBlob, fromFile, BlobDataItem;
|
|
112913
113312
|
var init_from = __esm({
|
|
112914
113313
|
"../../node_modules/.bun/fetch-blob@3.2.0/node_modules/fetch-blob/from.js"() {
|
|
@@ -112932,7 +113331,7 @@ var init_from = __esm({
|
|
|
112932
113331
|
size: stat3.size,
|
|
112933
113332
|
lastModified: stat3.mtimeMs,
|
|
112934
113333
|
start: 0
|
|
112935
|
-
})],
|
|
113334
|
+
})], basename17(path2), { type, lastModified: stat3.mtimeMs });
|
|
112936
113335
|
BlobDataItem = class _BlobDataItem {
|
|
112937
113336
|
#path;
|
|
112938
113337
|
#start;
|
|
@@ -115187,7 +115586,7 @@ var require_bignumber = __commonJS({
|
|
|
115187
115586
|
intCheck(b2, 2, ALPHABET.length, "Base");
|
|
115188
115587
|
if (b2 == 10 && alphabetHasNormalDecimalDigits) {
|
|
115189
115588
|
x3 = new BigNumber2(v2);
|
|
115190
|
-
return
|
|
115589
|
+
return round2(x3, DECIMAL_PLACES + x3.e + 1, ROUNDING_MODE);
|
|
115191
115590
|
}
|
|
115192
115591
|
str = String(v2);
|
|
115193
115592
|
if (isNum = typeof v2 == "number") {
|
|
@@ -115679,7 +116078,7 @@ var require_bignumber = __commonJS({
|
|
|
115679
116078
|
}
|
|
115680
116079
|
if (base2 == BASE) {
|
|
115681
116080
|
for (i2 = 1, s2 = qc[0]; s2 >= 10; s2 /= 10, i2++) ;
|
|
115682
|
-
|
|
116081
|
+
round2(q2, dp + (q2.e = i2 + e3 * LOG_BASE - 1) + 1, rm, more);
|
|
115683
116082
|
} else {
|
|
115684
116083
|
q2.e = e3;
|
|
115685
116084
|
q2.r = +more;
|
|
@@ -115698,7 +116097,7 @@ var require_bignumber = __commonJS({
|
|
|
115698
116097
|
str = coeffToString(n.c);
|
|
115699
116098
|
str = id == 1 || id == 2 && (ne2 <= TO_EXP_NEG || ne2 >= TO_EXP_POS) ? toExponential(str, ne2) : toFixedPoint(str, ne2, "0");
|
|
115700
116099
|
} else {
|
|
115701
|
-
n =
|
|
116100
|
+
n = round2(new BigNumber2(n), i2, rm);
|
|
115702
116101
|
e3 = n.e;
|
|
115703
116102
|
str = coeffToString(n.c);
|
|
115704
116103
|
len = str.length;
|
|
@@ -115771,7 +116170,7 @@ var require_bignumber = __commonJS({
|
|
|
115771
116170
|
x3.c = x3.e = null;
|
|
115772
116171
|
};
|
|
115773
116172
|
})();
|
|
115774
|
-
function
|
|
116173
|
+
function round2(x3, sd, rm, r2) {
|
|
115775
116174
|
var d2, i2, j3, k2, n, ni, rd, xc = x3.c, pows10 = POWS_TEN;
|
|
115776
116175
|
if (xc) {
|
|
115777
116176
|
out: {
|
|
@@ -115878,7 +116277,7 @@ var require_bignumber = __commonJS({
|
|
|
115878
116277
|
intCheck(dp, 0, MAX);
|
|
115879
116278
|
if (rm == null) rm = ROUNDING_MODE;
|
|
115880
116279
|
else intCheck(rm, 0, 8);
|
|
115881
|
-
return
|
|
116280
|
+
return round2(new BigNumber2(x3), dp + x3.e + 1, rm);
|
|
115882
116281
|
}
|
|
115883
116282
|
if (!(c3 = x3.c)) return null;
|
|
115884
116283
|
n = ((v2 = c3.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;
|
|
@@ -115941,7 +116340,7 @@ var require_bignumber = __commonJS({
|
|
|
115941
116340
|
nIsOdd = i2 % 2;
|
|
115942
116341
|
} else {
|
|
115943
116342
|
n = n.times(half);
|
|
115944
|
-
|
|
116343
|
+
round2(n, n.e + 1, 1);
|
|
115945
116344
|
if (n.e > 14) {
|
|
115946
116345
|
nIsOdd = isOdd(n);
|
|
115947
116346
|
} else {
|
|
@@ -115959,13 +116358,13 @@ var require_bignumber = __commonJS({
|
|
|
115959
116358
|
}
|
|
115960
116359
|
if (isModExp) return y;
|
|
115961
116360
|
if (nIsNeg) y = ONE.div(y);
|
|
115962
|
-
return m2 ? y.mod(m2) : k2 ?
|
|
116361
|
+
return m2 ? y.mod(m2) : k2 ? round2(y, POW_PRECISION, ROUNDING_MODE, more) : y;
|
|
115963
116362
|
};
|
|
115964
116363
|
P2.integerValue = function(rm) {
|
|
115965
116364
|
var n = new BigNumber2(this);
|
|
115966
116365
|
if (rm == null) rm = ROUNDING_MODE;
|
|
115967
116366
|
else intCheck(rm, 0, 8);
|
|
115968
|
-
return
|
|
116367
|
+
return round2(n, n.e + 1, rm);
|
|
115969
116368
|
};
|
|
115970
116369
|
P2.isEqualTo = P2.eq = function(y, b2) {
|
|
115971
116370
|
return compare(this, new BigNumber2(y, b2)) === 0;
|
|
@@ -116198,7 +116597,7 @@ var require_bignumber = __commonJS({
|
|
|
116198
116597
|
intCheck(sd, 1, MAX);
|
|
116199
116598
|
if (rm == null) rm = ROUNDING_MODE;
|
|
116200
116599
|
else intCheck(rm, 0, 8);
|
|
116201
|
-
return
|
|
116600
|
+
return round2(new BigNumber2(x3), sd, rm);
|
|
116202
116601
|
}
|
|
116203
116602
|
if (!(c3 = x3.c)) return null;
|
|
116204
116603
|
v2 = c3.length - 1;
|
|
@@ -116247,7 +116646,7 @@ var require_bignumber = __commonJS({
|
|
|
116247
116646
|
n = n.slice(s2 - 3, s2 + 1);
|
|
116248
116647
|
if (n == "9999" || !rep && n == "4999") {
|
|
116249
116648
|
if (!rep) {
|
|
116250
|
-
|
|
116649
|
+
round2(t2, t2.e + DECIMAL_PLACES + 2, 0);
|
|
116251
116650
|
if (t2.times(t2).eq(x3)) {
|
|
116252
116651
|
r2 = t2;
|
|
116253
116652
|
break;
|
|
@@ -116258,7 +116657,7 @@ var require_bignumber = __commonJS({
|
|
|
116258
116657
|
rep = 1;
|
|
116259
116658
|
} else {
|
|
116260
116659
|
if (!+n || !+n.slice(1) && n.charAt(0) == "5") {
|
|
116261
|
-
|
|
116660
|
+
round2(r2, r2.e + DECIMAL_PLACES + 2, 1);
|
|
116262
116661
|
m2 = !r2.times(r2).eq(x3);
|
|
116263
116662
|
}
|
|
116264
116663
|
break;
|
|
@@ -116266,7 +116665,7 @@ var require_bignumber = __commonJS({
|
|
|
116266
116665
|
}
|
|
116267
116666
|
}
|
|
116268
116667
|
}
|
|
116269
|
-
return
|
|
116668
|
+
return round2(r2, r2.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m2);
|
|
116270
116669
|
};
|
|
116271
116670
|
P2.toExponential = function(dp, rm) {
|
|
116272
116671
|
if (dp != null) {
|
|
@@ -116382,7 +116781,7 @@ var require_bignumber = __commonJS({
|
|
|
116382
116781
|
if (b2 == null) {
|
|
116383
116782
|
str = e3 <= TO_EXP_NEG || e3 >= TO_EXP_POS ? toExponential(coeffToString(n.c), e3) : toFixedPoint(coeffToString(n.c), e3, "0");
|
|
116384
116783
|
} else if (b2 === 10 && alphabetHasNormalDecimalDigits) {
|
|
116385
|
-
n =
|
|
116784
|
+
n = round2(new BigNumber2(n), DECIMAL_PLACES + e3 + 1, ROUNDING_MODE);
|
|
116386
116785
|
str = toFixedPoint(coeffToString(n.c), n.e, "0");
|
|
116387
116786
|
} else {
|
|
116388
116787
|
intCheck(b2, 2, ALPHABET.length, "Base");
|
|
@@ -119936,11 +120335,11 @@ var require_verify_stream = __commonJS({
|
|
|
119936
120335
|
var toString3 = require_tostring();
|
|
119937
120336
|
var util = __require("util");
|
|
119938
120337
|
var JWS_REGEX = /^[a-zA-Z0-9\-_]+?\.[a-zA-Z0-9\-_]+?\.([a-zA-Z0-9\-_]+)?$/;
|
|
119939
|
-
function
|
|
120338
|
+
function isObject2(thing) {
|
|
119940
120339
|
return Object.prototype.toString.call(thing) === "[object Object]";
|
|
119941
120340
|
}
|
|
119942
120341
|
function safeJsonParse(thing) {
|
|
119943
|
-
if (
|
|
120342
|
+
if (isObject2(thing))
|
|
119944
120343
|
return thing;
|
|
119945
120344
|
try {
|
|
119946
120345
|
return JSON.parse(thing);
|
|
@@ -146485,12 +146884,12 @@ __export(snapshot_exports, {
|
|
|
146485
146884
|
examples: () => examples24
|
|
146486
146885
|
});
|
|
146487
146886
|
import { spawn as spawn16 } from "child_process";
|
|
146488
|
-
import { existsSync as
|
|
146887
|
+
import { existsSync as existsSync76, mkdtempSync as mkdtempSync5, readFileSync as readFileSync58, mkdirSync as mkdirSync40, rmSync as rmSync17, writeFileSync as writeFileSync33 } from "fs";
|
|
146489
146888
|
import { tmpdir as tmpdir6 } from "os";
|
|
146490
|
-
import { resolve as resolve49, join as
|
|
146889
|
+
import { resolve as resolve49, join as join84, relative as relative14, isAbsolute as isAbsolute12 } from "path";
|
|
146491
146890
|
async function extractVideoFrameToBuffer(videoPath, timeSeconds, useVp9AlphaDecoder = false) {
|
|
146492
|
-
const tmp = mkdtempSync5(
|
|
146493
|
-
const outPath =
|
|
146891
|
+
const tmp = mkdtempSync5(join84(tmpdir6(), "hf-snapshot-frame-"));
|
|
146892
|
+
const outPath = join84(tmp, "frame.png");
|
|
146494
146893
|
try {
|
|
146495
146894
|
const ffmpegPath = findFFmpeg();
|
|
146496
146895
|
if (!ffmpegPath) return null;
|
|
@@ -146532,8 +146931,8 @@ async function extractVideoFrameToBuffer(videoPath, timeSeconds, useVp9AlphaDeco
|
|
|
146532
146931
|
});
|
|
146533
146932
|
}
|
|
146534
146933
|
);
|
|
146535
|
-
if (result.code !== 0 || result.timedOut || !
|
|
146536
|
-
return
|
|
146934
|
+
if (result.code !== 0 || result.timedOut || !existsSync76(outPath)) return null;
|
|
146935
|
+
return readFileSync58(outPath);
|
|
146537
146936
|
} finally {
|
|
146538
146937
|
try {
|
|
146539
146938
|
rmSync17(tmp, { recursive: true, force: true });
|
|
@@ -146631,13 +147030,13 @@ async function captureSnapshots(projectDir, opts) {
|
|
|
146631
147030
|
return [];
|
|
146632
147031
|
}
|
|
146633
147032
|
const positions = opts.at?.length ? opts.at : numFrames === 1 ? [duration / 2] : Array.from({ length: numFrames }, (_, i2) => i2 / (numFrames - 1) * duration);
|
|
146634
|
-
const snapshotDir =
|
|
147033
|
+
const snapshotDir = join84(projectDir, "snapshots");
|
|
146635
147034
|
mkdirSync40(snapshotDir, { recursive: true });
|
|
146636
147035
|
try {
|
|
146637
|
-
const { readdirSync:
|
|
146638
|
-
for (const file of
|
|
147036
|
+
const { readdirSync: readdirSync35 } = await import("fs");
|
|
147037
|
+
for (const file of readdirSync35(snapshotDir)) {
|
|
146639
147038
|
if (/\.(png|jpg|jpeg)$/i.test(file)) {
|
|
146640
|
-
rmSync17(
|
|
147039
|
+
rmSync17(join84(snapshotDir, file), { force: true });
|
|
146641
147040
|
}
|
|
146642
147041
|
}
|
|
146643
147042
|
} catch {
|
|
@@ -146718,7 +147117,7 @@ async function captureSnapshots(projectDir, opts) {
|
|
|
146718
147117
|
const decodedPath = decodeURIComponent(url.pathname).replace(/^\//, "");
|
|
146719
147118
|
const candidate = resolve49(projectDir, decodedPath);
|
|
146720
147119
|
const rel = relative14(projectDir, candidate);
|
|
146721
|
-
if (!rel.startsWith("..") && !isAbsolute12(rel) &&
|
|
147120
|
+
if (!rel.startsWith("..") && !isAbsolute12(rel) && existsSync76(candidate)) {
|
|
146722
147121
|
filePath = candidate;
|
|
146723
147122
|
}
|
|
146724
147123
|
} catch {
|
|
@@ -146748,7 +147147,7 @@ async function captureSnapshots(projectDir, opts) {
|
|
|
146748
147147
|
}
|
|
146749
147148
|
const timeLabel = `${time.toFixed(1)}s`;
|
|
146750
147149
|
const filename = `frame-${String(i2).padStart(2, "0")}-at-${timeLabel}.png`;
|
|
146751
|
-
const framePath =
|
|
147150
|
+
const framePath = join84(snapshotDir, filename);
|
|
146752
147151
|
await page.screenshot({ path: framePath, type: "png" });
|
|
146753
147152
|
savedPaths.push(`snapshots/${filename}`);
|
|
146754
147153
|
}
|
|
@@ -146829,10 +147228,10 @@ ${c2.success("\u25C7")} ${paths.length} snapshots saved to snapshots/`);
|
|
|
146829
147228
|
}
|
|
146830
147229
|
try {
|
|
146831
147230
|
const { createSnapshotContactSheet: createSnapshotContactSheet2 } = await Promise.resolve().then(() => (init_contactSheet(), contactSheet_exports));
|
|
146832
|
-
const snapshotDir =
|
|
147231
|
+
const snapshotDir = join84(project.dir, "snapshots");
|
|
146833
147232
|
const sheets = await createSnapshotContactSheet2(
|
|
146834
147233
|
snapshotDir,
|
|
146835
|
-
|
|
147234
|
+
join84(snapshotDir, "contact-sheet.jpg")
|
|
146836
147235
|
);
|
|
146837
147236
|
if (sheets.length > 0) {
|
|
146838
147237
|
const label3 = sheets.length === 1 ? "contact-sheet.jpg" : `contact-sheet-1..${sheets.length}.jpg`;
|
|
@@ -146850,7 +147249,7 @@ ${c2.success("\u25C7")} ${paths.length} snapshots saved to snapshots/`);
|
|
|
146850
147249
|
const { GoogleGenAI: GoogleGenAI2 } = await Promise.resolve().then(() => (init_node4(), node_exports));
|
|
146851
147250
|
const ai = new GoogleGenAI2({ apiKey: geminiKey });
|
|
146852
147251
|
const model = process.env.HYPERFRAMES_GEMINI_MODEL || "gemini-3.1-flash-lite-preview";
|
|
146853
|
-
const snapshotDir =
|
|
147252
|
+
const snapshotDir = join84(project.dir, "snapshots");
|
|
146854
147253
|
const customQuestion = describeArg === "true" ? "Describe this video composition frame in 1-2 sentences. Be specific and factual: what elements are visible, what text appears, is the frame blank/black/loading, what is the composition. Flag any obvious problems." : describeArg;
|
|
146855
147254
|
const descriptions = [
|
|
146856
147255
|
`# Snapshot Frame Descriptions`,
|
|
@@ -146869,9 +147268,9 @@ ${c2.success("\u25C7")} ${paths.length} snapshots saved to snapshots/`);
|
|
|
146869
147268
|
const results = await Promise.allSettled(
|
|
146870
147269
|
paths.map(async (p2) => {
|
|
146871
147270
|
const filename = p2.replace("snapshots/", "");
|
|
146872
|
-
const filePath =
|
|
146873
|
-
if (!
|
|
146874
|
-
const raw =
|
|
147271
|
+
const filePath = join84(snapshotDir, filename);
|
|
147272
|
+
if (!existsSync76(filePath)) return { filename, desc: "file not found" };
|
|
147273
|
+
const raw = readFileSync58(filePath);
|
|
146875
147274
|
let imageData;
|
|
146876
147275
|
let mimeType = "image/png";
|
|
146877
147276
|
if (sharpFn) {
|
|
@@ -146907,7 +147306,7 @@ ${c2.success("\u25C7")} ${paths.length} snapshots saved to snapshots/`);
|
|
|
146907
147306
|
descriptions.push(`## (error)`, `Gemini call failed: ${errMsg.slice(0, 120)}`, ``);
|
|
146908
147307
|
}
|
|
146909
147308
|
}
|
|
146910
|
-
const descPath =
|
|
147309
|
+
const descPath = join84(snapshotDir, "descriptions.md");
|
|
146911
147310
|
writeFileSync33(descPath, descriptions.join("\n"));
|
|
146912
147311
|
console.log(` ${c2.dim("descriptions.md")} (Gemini frame analysis)`);
|
|
146913
147312
|
}
|
|
@@ -146929,18 +147328,18 @@ ${c2.error("\u2717")} Snapshot failed: ${msg}`);
|
|
|
146929
147328
|
|
|
146930
147329
|
// src/capture/assetDownloader.ts
|
|
146931
147330
|
import { writeFileSync as writeFileSync34, mkdirSync as mkdirSync41 } from "fs";
|
|
146932
|
-
import { join as
|
|
147331
|
+
import { join as join85, extname as extname14 } from "path";
|
|
146933
147332
|
import { createHash as createHash12 } from "crypto";
|
|
146934
147333
|
function svgContentHashSlug(svgSource, isLogo) {
|
|
146935
147334
|
const hash2 = createHash12("sha1").update(svgSource).digest("hex").slice(0, 8);
|
|
146936
147335
|
return isLogo ? `logo-${hash2}` : `svg-${hash2}`;
|
|
146937
147336
|
}
|
|
146938
147337
|
async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks) {
|
|
146939
|
-
const assetsDir =
|
|
147338
|
+
const assetsDir = join85(outputDir, "assets");
|
|
146940
147339
|
mkdirSync41(assetsDir, { recursive: true });
|
|
146941
147340
|
const assets = [];
|
|
146942
147341
|
const downloadedUrls = /* @__PURE__ */ new Set();
|
|
146943
|
-
mkdirSync41(
|
|
147342
|
+
mkdirSync41(join85(outputDir, "assets", "svgs"), { recursive: true });
|
|
146944
147343
|
const usedSvgNames = /* @__PURE__ */ new Set();
|
|
146945
147344
|
for (let i2 = 0; i2 < tokens.svgs.length && i2 < 30; i2++) {
|
|
146946
147345
|
const svg = tokens.svgs[i2];
|
|
@@ -146956,7 +147355,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
|
|
|
146956
147355
|
const name = `${finalSlug}.svg`;
|
|
146957
147356
|
const localPath = `assets/svgs/${name}`;
|
|
146958
147357
|
try {
|
|
146959
|
-
writeFileSync34(
|
|
147358
|
+
writeFileSync34(join85(outputDir, localPath), svg.outerHTML, "utf-8");
|
|
146960
147359
|
assets.push({ url: "", localPath, type: "svg" });
|
|
146961
147360
|
} catch {
|
|
146962
147361
|
}
|
|
@@ -146969,7 +147368,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
|
|
|
146969
147368
|
const localPath = `assets/${name}`;
|
|
146970
147369
|
const buffer = await fetchBuffer(icon.href);
|
|
146971
147370
|
if (buffer) {
|
|
146972
|
-
writeFileSync34(
|
|
147371
|
+
writeFileSync34(join85(outputDir, localPath), buffer);
|
|
146973
147372
|
assets.push({ url: icon.href, localPath, type: "favicon" });
|
|
146974
147373
|
break;
|
|
146975
147374
|
}
|
|
@@ -147034,7 +147433,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
|
|
|
147034
147433
|
const name = `${slug}${ext}`;
|
|
147035
147434
|
usedNames.add(slug);
|
|
147036
147435
|
const localPath = `assets/${name}`;
|
|
147037
|
-
writeFileSync34(
|
|
147436
|
+
writeFileSync34(join85(outputDir, localPath), buffer);
|
|
147038
147437
|
assets.push({ url, localPath, type: "image" });
|
|
147039
147438
|
imgIdx++;
|
|
147040
147439
|
} catch {
|
|
@@ -147047,7 +147446,7 @@ async function downloadAssets(tokens, outputDir, catalogedAssets, faviconLinks)
|
|
|
147047
147446
|
const localPath = `assets/og-image${ext}`;
|
|
147048
147447
|
const buffer = await fetchBuffer(tokens.ogImage);
|
|
147049
147448
|
if (buffer && buffer.length > 5e3) {
|
|
147050
|
-
writeFileSync34(
|
|
147449
|
+
writeFileSync34(join85(outputDir, localPath), buffer);
|
|
147051
147450
|
assets.push({ url: tokens.ogImage, localPath, type: "image" });
|
|
147052
147451
|
}
|
|
147053
147452
|
} catch {
|
|
@@ -147070,7 +147469,7 @@ function normalizeUrl(u) {
|
|
|
147070
147469
|
}
|
|
147071
147470
|
}
|
|
147072
147471
|
async function downloadAndRewriteFonts(css, outputDir) {
|
|
147073
|
-
const assetsDir =
|
|
147472
|
+
const assetsDir = join85(outputDir, "assets", "fonts");
|
|
147074
147473
|
mkdirSync41(assetsDir, { recursive: true });
|
|
147075
147474
|
const fontUrlRegex = /url\(['"]?(https?:\/\/[^'")\s]+\.(?:woff2?|ttf|otf)[^'")\s]*?)['"]?\)/g;
|
|
147076
147475
|
const fontUrls = /* @__PURE__ */ new Set();
|
|
@@ -147106,7 +147505,7 @@ async function downloadAndRewriteFonts(css, outputDir) {
|
|
|
147106
147505
|
try {
|
|
147107
147506
|
const urlObj = new URL(fontUrl);
|
|
147108
147507
|
const filename = urlObj.pathname.split("/").pop() || `font-${count}.woff2`;
|
|
147109
|
-
const localPath =
|
|
147508
|
+
const localPath = join85(assetsDir, filename);
|
|
147110
147509
|
const relativePath = `assets/fonts/${filename}`;
|
|
147111
147510
|
const buffer = await fetchBuffer(fontUrl);
|
|
147112
147511
|
if (buffer) {
|
|
@@ -147259,14 +147658,13 @@ var video_exports = {};
|
|
|
147259
147658
|
__export(video_exports, {
|
|
147260
147659
|
MAX_VIDEO_BYTES: () => MAX_VIDEO_BYTES,
|
|
147261
147660
|
VIDEO_CONTENT_TYPE_RE: () => VIDEO_CONTENT_TYPE_RE,
|
|
147262
|
-
default: () => video_default,
|
|
147263
|
-
examples: () => examples25,
|
|
147264
147661
|
findFilenameCollision: () => findFilenameCollision,
|
|
147265
147662
|
pickManifestEntry: () => pickManifestEntry,
|
|
147663
|
+
runVideoMode: () => runVideoMode,
|
|
147266
147664
|
safeFilename: () => safeFilename
|
|
147267
147665
|
});
|
|
147268
|
-
import { createWriteStream as createWriteStream4, existsSync as
|
|
147269
|
-
import { resolve as resolve50, join as
|
|
147666
|
+
import { createWriteStream as createWriteStream4, existsSync as existsSync77, mkdirSync as mkdirSync42, readFileSync as readFileSync59, unlinkSync as unlinkSync9 } from "fs";
|
|
147667
|
+
import { resolve as resolve50, join as join86, basename as basename19 } from "path";
|
|
147270
147668
|
async function streamToFile(url, destPath) {
|
|
147271
147669
|
const r2 = await safeFetch(url, {
|
|
147272
147670
|
signal: AbortSignal.timeout(12e4),
|
|
@@ -147344,9 +147742,9 @@ function safeFilename(name) {
|
|
|
147344
147742
|
return decoded.replace(/[^A-Za-z0-9._-]+/g, "_");
|
|
147345
147743
|
}
|
|
147346
147744
|
function findFilenameCollision(manifest, selected) {
|
|
147347
|
-
const selectedName = safeFilename(selected.filename ||
|
|
147745
|
+
const selectedName = safeFilename(selected.filename || basename19(selected.url));
|
|
147348
147746
|
return manifest.filter(
|
|
147349
|
-
(e3) => e3.index !== selected.index && safeFilename(e3.filename ||
|
|
147747
|
+
(e3) => e3.index !== selected.index && safeFilename(e3.filename || basename19(e3.url)) === selectedName
|
|
147350
147748
|
);
|
|
147351
147749
|
}
|
|
147352
147750
|
function pickManifestEntry(manifest, args) {
|
|
@@ -147383,138 +147781,100 @@ function pickManifestEntry(manifest, args) {
|
|
|
147383
147781
|
message: "specify --index <N> or --url <URL> (or --list to see what's in the manifest)"
|
|
147384
147782
|
};
|
|
147385
147783
|
}
|
|
147386
|
-
|
|
147784
|
+
async function runVideoMode(args) {
|
|
147785
|
+
const projectDir = resolve50(args.project);
|
|
147786
|
+
const directPath = join86(projectDir, "extracted", "video-manifest.json");
|
|
147787
|
+
const w2hPath = join86(projectDir, "capture", "extracted", "video-manifest.json");
|
|
147788
|
+
const manifestPath = existsSync77(directPath) ? directPath : w2hPath;
|
|
147789
|
+
const isW2hLayout = manifestPath === w2hPath;
|
|
147790
|
+
if (!existsSync77(manifestPath)) {
|
|
147791
|
+
console.error(
|
|
147792
|
+
`${c2.error("\u2717")} no video-manifest.json at ${directPath} or ${w2hPath}
|
|
147793
|
+
Was this directory produced by \`hyperframes capture\`?`
|
|
147794
|
+
);
|
|
147795
|
+
process.exitCode = 1;
|
|
147796
|
+
return;
|
|
147797
|
+
}
|
|
147798
|
+
let manifest;
|
|
147799
|
+
try {
|
|
147800
|
+
manifest = JSON.parse(readFileSync59(manifestPath, "utf-8"));
|
|
147801
|
+
} catch (e3) {
|
|
147802
|
+
console.error(`${c2.error("\u2717")} video-manifest.json is malformed: ${e3.message}`);
|
|
147803
|
+
process.exitCode = 1;
|
|
147804
|
+
return;
|
|
147805
|
+
}
|
|
147806
|
+
if (args.list) {
|
|
147807
|
+
if (manifest.length === 0) {
|
|
147808
|
+
console.log(c2.dim("(manifest is empty \u2014 no <video> elements on the captured page)"));
|
|
147809
|
+
return;
|
|
147810
|
+
}
|
|
147811
|
+
console.log(
|
|
147812
|
+
`${manifest.length} video entr${manifest.length === 1 ? "y" : "ies"} in ${manifestPath}:`
|
|
147813
|
+
);
|
|
147814
|
+
for (const e3 of manifest) {
|
|
147815
|
+
console.log(
|
|
147816
|
+
` ${c2.bold(`[${e3.index}]`)} ${e3.filename} \u2014 ${e3.width}\xD7${e3.height}` + (e3.heading ? `
|
|
147817
|
+
heading: "${e3.heading}"` : "") + `
|
|
147818
|
+
url: ${e3.url}`
|
|
147819
|
+
);
|
|
147820
|
+
}
|
|
147821
|
+
return;
|
|
147822
|
+
}
|
|
147823
|
+
const pick = pickManifestEntry(manifest, args);
|
|
147824
|
+
if (!pick.ok) {
|
|
147825
|
+
console.error(
|
|
147826
|
+
`${c2.error("\u2717")} ${pick.message}` + (pick.code === "no-match-url" ? `
|
|
147827
|
+
Run with --list to see what's available.` : "")
|
|
147828
|
+
);
|
|
147829
|
+
process.exitCode = 1;
|
|
147830
|
+
return;
|
|
147831
|
+
}
|
|
147832
|
+
const entry = pick.entry;
|
|
147833
|
+
const collisions = findFilenameCollision(manifest, entry);
|
|
147834
|
+
if (collisions.length > 0) {
|
|
147835
|
+
console.error(
|
|
147836
|
+
`${c2.error("\u2717")} filename "${safeFilename(entry.filename || basename19(entry.url))}" collides with manifest entr${collisions.length === 1 ? "y" : "ies"} ${collisions.map((co) => `[${co.index}]`).join(", ")}. Refusing to download \u2014 the on-disk file's bytes would not match the requested entry.`
|
|
147837
|
+
);
|
|
147838
|
+
process.exitCode = 1;
|
|
147839
|
+
return;
|
|
147840
|
+
}
|
|
147841
|
+
const outDir = isW2hLayout ? join86(projectDir, "capture", "assets", "videos") : join86(projectDir, "assets", "videos");
|
|
147842
|
+
mkdirSync42(outDir, { recursive: true });
|
|
147843
|
+
const fname = safeFilename(entry.filename || basename19(entry.url));
|
|
147844
|
+
const outPath = join86(outDir, fname);
|
|
147845
|
+
const relPath = isW2hLayout ? `capture/assets/videos/${fname}` : `assets/videos/${fname}`;
|
|
147846
|
+
console.log(
|
|
147847
|
+
`${c2.accent("\u25B8")} downloading [${entry.index}] ${entry.filename} (${entry.width}\xD7${entry.height})`
|
|
147848
|
+
);
|
|
147849
|
+
console.log(` from: ${entry.url}`);
|
|
147850
|
+
try {
|
|
147851
|
+
const bytes = await streamToFile(entry.url, outPath);
|
|
147852
|
+
const sizeKb = Math.round(bytes / 1024);
|
|
147853
|
+
const sizeStr = sizeKb > 1024 ? `${(sizeKb / 1024).toFixed(1)}MB` : `${sizeKb}KB`;
|
|
147854
|
+
console.log(`${c2.success("\u25C7")} wrote ${relPath} (${sizeStr})`);
|
|
147855
|
+
const snippetId = `video-${entry.index}`;
|
|
147856
|
+
console.log(
|
|
147857
|
+
` Reference it from a beat composition as:
|
|
147858
|
+
<video id="${snippetId}" src="${relPath}" data-start="0" data-duration="${entry.width === entry.height ? 5 : 4}" data-track-index="0" autoplay muted loop></video>`
|
|
147859
|
+
);
|
|
147860
|
+
} catch (e3) {
|
|
147861
|
+
if (e3.code === "EEXIST") {
|
|
147862
|
+
console.log(`${c2.warn("\u26A0")} already downloaded: ${relPath} (skipping)`);
|
|
147863
|
+
console.log(` Delete the file and re-run to refetch.`);
|
|
147864
|
+
return;
|
|
147865
|
+
}
|
|
147866
|
+
console.error(`${c2.error("\u2717")} download failed: ${e3.message}`);
|
|
147867
|
+
process.exitCode = 1;
|
|
147868
|
+
}
|
|
147869
|
+
}
|
|
147870
|
+
var MAX_VIDEO_BYTES, VIDEO_CONTENT_TYPE_RE;
|
|
147387
147871
|
var init_video = __esm({
|
|
147388
147872
|
"src/commands/capture/video.ts"() {
|
|
147389
147873
|
"use strict";
|
|
147390
|
-
init_dist();
|
|
147391
147874
|
init_colors();
|
|
147392
147875
|
init_assetDownloader();
|
|
147393
|
-
examples25 = [
|
|
147394
|
-
[
|
|
147395
|
-
"Download the hero video (index 0) from a captured project's manifest",
|
|
147396
|
-
"capture video ./my-project --index 0"
|
|
147397
|
-
],
|
|
147398
|
-
[
|
|
147399
|
-
"Download a specific video by exact URL",
|
|
147400
|
-
"capture video ./my-project --url https://cdn.example.com/hero.mp4"
|
|
147401
|
-
],
|
|
147402
|
-
["List entries in the manifest without downloading", "capture video ./my-project --list"]
|
|
147403
|
-
];
|
|
147404
147876
|
MAX_VIDEO_BYTES = 250 * 1024 * 1024;
|
|
147405
147877
|
VIDEO_CONTENT_TYPE_RE = /^(video\/|application\/(mp4|octet-stream|x-mpegurl))/i;
|
|
147406
|
-
video_default = defineCommand({
|
|
147407
|
-
meta: {
|
|
147408
|
-
name: "video",
|
|
147409
|
-
description: "Download a video referenced in capture/extracted/video-manifest.json (on-demand; the capture pipeline only writes the manifest + preview PNGs)"
|
|
147410
|
-
},
|
|
147411
|
-
args: {
|
|
147412
|
-
project: {
|
|
147413
|
-
type: "positional",
|
|
147414
|
-
description: "Path to the captured project directory",
|
|
147415
|
-
required: true
|
|
147416
|
-
},
|
|
147417
|
-
index: {
|
|
147418
|
-
type: "string",
|
|
147419
|
-
description: "Manifest entry index to download (0-based)"
|
|
147420
|
-
},
|
|
147421
|
-
url: {
|
|
147422
|
-
type: "string",
|
|
147423
|
-
description: "Exact video URL to download (must match a manifest entry)"
|
|
147424
|
-
},
|
|
147425
|
-
list: {
|
|
147426
|
-
type: "boolean",
|
|
147427
|
-
description: "List manifest entries (index, dimensions, heading) and exit"
|
|
147428
|
-
}
|
|
147429
|
-
},
|
|
147430
|
-
// fallow-ignore-next-line complexity
|
|
147431
|
-
async run({ args }) {
|
|
147432
|
-
const projectDir = resolve50(String(args.project));
|
|
147433
|
-
const directPath = join85(projectDir, "extracted", "video-manifest.json");
|
|
147434
|
-
const w2hPath = join85(projectDir, "capture", "extracted", "video-manifest.json");
|
|
147435
|
-
const manifestPath = existsSync76(directPath) ? directPath : w2hPath;
|
|
147436
|
-
const isW2hLayout = manifestPath === w2hPath;
|
|
147437
|
-
if (!existsSync76(manifestPath)) {
|
|
147438
|
-
console.error(
|
|
147439
|
-
`${c2.error("\u2717")} no video-manifest.json at ${directPath} or ${w2hPath}
|
|
147440
|
-
Was this directory produced by \`hyperframes capture\`?`
|
|
147441
|
-
);
|
|
147442
|
-
process.exitCode = 1;
|
|
147443
|
-
return;
|
|
147444
|
-
}
|
|
147445
|
-
let manifest;
|
|
147446
|
-
try {
|
|
147447
|
-
manifest = JSON.parse(readFileSync58(manifestPath, "utf-8"));
|
|
147448
|
-
} catch (e3) {
|
|
147449
|
-
console.error(`${c2.error("\u2717")} video-manifest.json is malformed: ${e3.message}`);
|
|
147450
|
-
process.exitCode = 1;
|
|
147451
|
-
return;
|
|
147452
|
-
}
|
|
147453
|
-
if (args.list) {
|
|
147454
|
-
if (manifest.length === 0) {
|
|
147455
|
-
console.log(c2.dim("(manifest is empty \u2014 no <video> elements on the captured page)"));
|
|
147456
|
-
return;
|
|
147457
|
-
}
|
|
147458
|
-
console.log(
|
|
147459
|
-
`${manifest.length} video entr${manifest.length === 1 ? "y" : "ies"} in ${manifestPath}:`
|
|
147460
|
-
);
|
|
147461
|
-
for (const e3 of manifest) {
|
|
147462
|
-
console.log(
|
|
147463
|
-
` ${c2.bold(`[${e3.index}]`)} ${e3.filename} \u2014 ${e3.width}\xD7${e3.height}` + (e3.heading ? `
|
|
147464
|
-
heading: "${e3.heading}"` : "") + `
|
|
147465
|
-
url: ${e3.url}`
|
|
147466
|
-
);
|
|
147467
|
-
}
|
|
147468
|
-
return;
|
|
147469
|
-
}
|
|
147470
|
-
const pick = pickManifestEntry(manifest, args);
|
|
147471
|
-
if (!pick.ok) {
|
|
147472
|
-
console.error(
|
|
147473
|
-
`${c2.error("\u2717")} ${pick.message}` + (pick.code === "no-match-url" ? `
|
|
147474
|
-
Run with --list to see what's available.` : "")
|
|
147475
|
-
);
|
|
147476
|
-
process.exitCode = 1;
|
|
147477
|
-
return;
|
|
147478
|
-
}
|
|
147479
|
-
const entry = pick.entry;
|
|
147480
|
-
const collisions = findFilenameCollision(manifest, entry);
|
|
147481
|
-
if (collisions.length > 0) {
|
|
147482
|
-
console.error(
|
|
147483
|
-
`${c2.error("\u2717")} filename "${safeFilename(entry.filename || basename18(entry.url))}" collides with manifest entr${collisions.length === 1 ? "y" : "ies"} ${collisions.map((co) => `[${co.index}]`).join(", ")}. Refusing to download \u2014 the on-disk file's bytes would not match the requested entry.`
|
|
147484
|
-
);
|
|
147485
|
-
process.exitCode = 1;
|
|
147486
|
-
return;
|
|
147487
|
-
}
|
|
147488
|
-
const outDir = isW2hLayout ? join85(projectDir, "capture", "assets", "videos") : join85(projectDir, "assets", "videos");
|
|
147489
|
-
mkdirSync42(outDir, { recursive: true });
|
|
147490
|
-
const fname = safeFilename(entry.filename || basename18(entry.url));
|
|
147491
|
-
const outPath = join85(outDir, fname);
|
|
147492
|
-
const relPath = isW2hLayout ? `capture/assets/videos/${fname}` : `assets/videos/${fname}`;
|
|
147493
|
-
console.log(
|
|
147494
|
-
`${c2.accent("\u25B8")} downloading [${entry.index}] ${entry.filename} (${entry.width}\xD7${entry.height})`
|
|
147495
|
-
);
|
|
147496
|
-
console.log(` from: ${entry.url}`);
|
|
147497
|
-
try {
|
|
147498
|
-
const bytes = await streamToFile(entry.url, outPath);
|
|
147499
|
-
const sizeKb = Math.round(bytes / 1024);
|
|
147500
|
-
const sizeStr = sizeKb > 1024 ? `${(sizeKb / 1024).toFixed(1)}MB` : `${sizeKb}KB`;
|
|
147501
|
-
console.log(`${c2.success("\u25C7")} wrote ${relPath} (${sizeStr})`);
|
|
147502
|
-
const snippetId = `video-${entry.index}`;
|
|
147503
|
-
console.log(
|
|
147504
|
-
` Reference it from a beat composition as:
|
|
147505
|
-
<video id="${snippetId}" src="${relPath}" data-start="0" data-duration="${entry.width === entry.height ? 5 : 4}" data-track-index="0" autoplay muted loop></video>`
|
|
147506
|
-
);
|
|
147507
|
-
} catch (e3) {
|
|
147508
|
-
if (e3.code === "EEXIST") {
|
|
147509
|
-
console.log(`${c2.warn("\u26A0")} already downloaded: ${relPath} (skipping)`);
|
|
147510
|
-
console.log(` Delete the file and re-run to refetch.`);
|
|
147511
|
-
return;
|
|
147512
|
-
}
|
|
147513
|
-
console.error(`${c2.error("\u2717")} download failed: ${e3.message}`);
|
|
147514
|
-
process.exitCode = 1;
|
|
147515
|
-
}
|
|
147516
|
-
}
|
|
147517
|
-
});
|
|
147518
147878
|
}
|
|
147519
147879
|
});
|
|
147520
147880
|
|
|
@@ -148509,8 +148869,8 @@ var init_designStyleExtractor = __esm({
|
|
|
148509
148869
|
});
|
|
148510
148870
|
|
|
148511
148871
|
// src/capture/fontMetadataExtractor.ts
|
|
148512
|
-
import { readdirSync as
|
|
148513
|
-
import { join as
|
|
148872
|
+
import { readdirSync as readdirSync30, readFileSync as readFileSync60, writeFileSync as writeFileSync35, existsSync as existsSync78 } from "fs";
|
|
148873
|
+
import { join as join87 } from "path";
|
|
148514
148874
|
import * as fontkit from "fontkit";
|
|
148515
148875
|
function isFontCollection(value) {
|
|
148516
148876
|
return value.type === "TTC" || value.type === "DFont";
|
|
@@ -148518,10 +148878,10 @@ function isFontCollection(value) {
|
|
|
148518
148878
|
function extractFontMetadata(fontsDir, outputPath) {
|
|
148519
148879
|
const files = [];
|
|
148520
148880
|
const unidentified = [];
|
|
148521
|
-
if (
|
|
148522
|
-
const fontFiles =
|
|
148881
|
+
if (existsSync78(fontsDir)) {
|
|
148882
|
+
const fontFiles = readdirSync30(fontsDir).filter((f3) => /\.(woff2?|ttf|otf)$/i.test(f3));
|
|
148523
148883
|
for (const filename of fontFiles) {
|
|
148524
|
-
const fullPath =
|
|
148884
|
+
const fullPath = join87(fontsDir, filename);
|
|
148525
148885
|
const meta = readSingleFont(fullPath, filename);
|
|
148526
148886
|
if (meta.identified) {
|
|
148527
148887
|
files.push(meta);
|
|
@@ -148559,7 +148919,7 @@ function readSingleFont(fullPath, filename) {
|
|
|
148559
148919
|
identified: false
|
|
148560
148920
|
};
|
|
148561
148921
|
try {
|
|
148562
|
-
const buf =
|
|
148922
|
+
const buf = readFileSync60(fullPath);
|
|
148563
148923
|
const created = fontkit.create(buf);
|
|
148564
148924
|
const font = isFontCollection(created) ? created.fonts[0] : created;
|
|
148565
148925
|
if (!font) return empty2;
|
|
@@ -148815,8 +149175,8 @@ var init_animationCataloger = __esm({
|
|
|
148815
149175
|
});
|
|
148816
149176
|
|
|
148817
149177
|
// src/capture/mediaCapture.ts
|
|
148818
|
-
import { mkdirSync as mkdirSync43, writeFileSync as writeFileSync36, readdirSync as
|
|
148819
|
-
import { join as
|
|
149178
|
+
import { mkdirSync as mkdirSync43, writeFileSync as writeFileSync36, readdirSync as readdirSync31, readFileSync as readFileSync61, statSync as statSync25 } from "fs";
|
|
149179
|
+
import { join as join88, extname as extname15 } from "path";
|
|
148820
149180
|
async function saveLottieAnimations(discoveredLotties, lottieDir) {
|
|
148821
149181
|
let savedCount = 0;
|
|
148822
149182
|
const savedHashes = /* @__PURE__ */ new Set();
|
|
@@ -148848,7 +149208,7 @@ async function saveLottieAnimations(discoveredLotties, lottieDir) {
|
|
|
148848
149208
|
const hash2 = buf.toString("base64").slice(0, 100);
|
|
148849
149209
|
if (savedHashes.has(hash2)) continue;
|
|
148850
149210
|
savedHashes.add(hash2);
|
|
148851
|
-
writeFileSync36(
|
|
149211
|
+
writeFileSync36(join88(lottieDir, `animation-${savedCount}.lottie`), buf);
|
|
148852
149212
|
savedCount++;
|
|
148853
149213
|
continue;
|
|
148854
149214
|
}
|
|
@@ -148866,7 +149226,7 @@ async function saveLottieAnimations(discoveredLotties, lottieDir) {
|
|
|
148866
149226
|
} catch {
|
|
148867
149227
|
continue;
|
|
148868
149228
|
}
|
|
148869
|
-
writeFileSync36(
|
|
149229
|
+
writeFileSync36(join88(lottieDir, `animation-${savedCount}.json`), jsonData, "utf-8");
|
|
148870
149230
|
savedCount++;
|
|
148871
149231
|
}
|
|
148872
149232
|
} catch {
|
|
@@ -148876,22 +149236,22 @@ async function saveLottieAnimations(discoveredLotties, lottieDir) {
|
|
|
148876
149236
|
}
|
|
148877
149237
|
async function renderLottiePreviews(chromeBrowser, lottieDir, outputDir) {
|
|
148878
149238
|
const manifest = [];
|
|
148879
|
-
const previewDir =
|
|
149239
|
+
const previewDir = join88(lottieDir, "previews");
|
|
148880
149240
|
mkdirSync43(previewDir, { recursive: true });
|
|
148881
|
-
for (const file of
|
|
149241
|
+
for (const file of readdirSync31(lottieDir)) {
|
|
148882
149242
|
if (!file.endsWith(".json")) continue;
|
|
148883
149243
|
try {
|
|
148884
|
-
const raw = JSON.parse(
|
|
149244
|
+
const raw = JSON.parse(readFileSync61(join88(lottieDir, file), "utf-8"));
|
|
148885
149245
|
const fr = raw.fr || 30;
|
|
148886
149246
|
const dur = ((raw.op || 0) - (raw.ip || 0)) / fr;
|
|
148887
149247
|
const previewName = file.replace(".json", "-preview.png");
|
|
148888
|
-
const fileSize = statSync25(
|
|
149248
|
+
const fileSize = statSync25(join88(lottieDir, file)).size;
|
|
148889
149249
|
if (fileSize > 2e6) continue;
|
|
148890
149250
|
let previewPage;
|
|
148891
149251
|
try {
|
|
148892
149252
|
previewPage = await chromeBrowser.newPage();
|
|
148893
149253
|
await previewPage.setViewport({ width: 400, height: 400 });
|
|
148894
|
-
const animData = JSON.parse(
|
|
149254
|
+
const animData = JSON.parse(readFileSync61(join88(lottieDir, file), "utf-8"));
|
|
148895
149255
|
const midFrame = Math.floor(((raw.op || 0) - (raw.ip || 0)) * 0.3);
|
|
148896
149256
|
await previewPage.setContent(
|
|
148897
149257
|
`<!DOCTYPE html>
|
|
@@ -148921,7 +149281,7 @@ async function renderLottiePreviews(chromeBrowser, lottieDir, outputDir) {
|
|
|
148921
149281
|
await previewPage.waitForFunction(() => window.__READY === true, { timeout: 5e3 }).catch(() => {
|
|
148922
149282
|
});
|
|
148923
149283
|
await previewPage.screenshot({
|
|
148924
|
-
path:
|
|
149284
|
+
path: join88(previewDir, previewName),
|
|
148925
149285
|
type: "png",
|
|
148926
149286
|
omitBackground: true
|
|
148927
149287
|
});
|
|
@@ -148945,7 +149305,7 @@ async function renderLottiePreviews(chromeBrowser, lottieDir, outputDir) {
|
|
|
148945
149305
|
}
|
|
148946
149306
|
if (manifest.length > 0) {
|
|
148947
149307
|
writeFileSync36(
|
|
148948
|
-
|
|
149308
|
+
join88(outputDir, "extracted", "lottie-manifest.json"),
|
|
148949
149309
|
JSON.stringify(manifest, null, 2),
|
|
148950
149310
|
"utf-8"
|
|
148951
149311
|
);
|
|
@@ -148980,7 +149340,7 @@ async function downloadVideoBody(srcUrl, filename, videosDir) {
|
|
|
148980
149340
|
}
|
|
148981
149341
|
if (total < 1024) return null;
|
|
148982
149342
|
const safe = /\.[a-z0-9]+$/i.test(filename) ? filename.replace(/[^\w.-]/g, "_") : `video${ext}`;
|
|
148983
|
-
writeFileSync36(
|
|
149343
|
+
writeFileSync36(join88(videosDir, safe), Buffer.concat(chunks));
|
|
148984
149344
|
return `assets/videos/${safe}`;
|
|
148985
149345
|
} catch {
|
|
148986
149346
|
return null;
|
|
@@ -149040,9 +149400,9 @@ async function captureVideoManifest(page, outputDir, progress, opts) {
|
|
|
149040
149400
|
}
|
|
149041
149401
|
const merged = [...byKey.values()];
|
|
149042
149402
|
if (merged.length === 0) return;
|
|
149043
|
-
const videoManifestDir =
|
|
149403
|
+
const videoManifestDir = join88(outputDir, "assets", "videos");
|
|
149044
149404
|
mkdirSync43(videoManifestDir, { recursive: true });
|
|
149045
|
-
const previewDir =
|
|
149405
|
+
const previewDir = join88(videoManifestDir, "previews");
|
|
149046
149406
|
mkdirSync43(previewDir, { recursive: true });
|
|
149047
149407
|
const videoManifest = [];
|
|
149048
149408
|
const dlStart = Date.now();
|
|
@@ -149065,7 +149425,7 @@ async function captureVideoManifest(page, outputDir, progress, opts) {
|
|
|
149065
149425
|
if (rect && rect.width >= 10) {
|
|
149066
149426
|
await new Promise((r2) => setTimeout(r2, 200));
|
|
149067
149427
|
await page.screenshot({
|
|
149068
|
-
path:
|
|
149428
|
+
path: join88(previewDir, previewName),
|
|
149069
149429
|
clip: {
|
|
149070
149430
|
x: Math.max(0, rect.x),
|
|
149071
149431
|
y: Math.max(0, rect.y),
|
|
@@ -149095,7 +149455,7 @@ async function captureVideoManifest(page, outputDir, progress, opts) {
|
|
|
149095
149455
|
}
|
|
149096
149456
|
if (videoManifest.length > 0) {
|
|
149097
149457
|
writeFileSync36(
|
|
149098
|
-
|
|
149458
|
+
join88(outputDir, "extracted", "video-manifest.json"),
|
|
149099
149459
|
JSON.stringify(videoManifest, null, 2),
|
|
149100
149460
|
"utf-8"
|
|
149101
149461
|
);
|
|
@@ -149157,8 +149517,8 @@ var init_mediaCapture = __esm({
|
|
|
149157
149517
|
});
|
|
149158
149518
|
|
|
149159
149519
|
// src/capture/contentExtractor.ts
|
|
149160
|
-
import { existsSync as
|
|
149161
|
-
import { join as
|
|
149520
|
+
import { existsSync as existsSync79, readdirSync as readdirSync32, statSync as statSync26, readFileSync as readFileSync62 } from "fs";
|
|
149521
|
+
import { join as join89 } from "path";
|
|
149162
149522
|
import sharp2 from "sharp";
|
|
149163
149523
|
async function detectLibraries(page, capturedShaders) {
|
|
149164
149524
|
let detectedLibraries = [];
|
|
@@ -149279,7 +149639,7 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
|
|
|
149279
149639
|
try {
|
|
149280
149640
|
const { GoogleGenAI: GoogleGenAI2 } = await Promise.resolve().then(() => (init_node4(), node_exports));
|
|
149281
149641
|
const ai = new GoogleGenAI2({ apiKey: geminiKey });
|
|
149282
|
-
const imageFiles =
|
|
149642
|
+
const imageFiles = readdirSync32(join89(outputDir, "assets")).filter(
|
|
149283
149643
|
(f3) => /\.(png|jpg|jpeg|webp|gif)$/i.test(f3)
|
|
149284
149644
|
);
|
|
149285
149645
|
const model = process.env.HYPERFRAMES_GEMINI_MODEL || "gemini-3.1-flash-lite-preview";
|
|
@@ -149288,10 +149648,10 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
|
|
|
149288
149648
|
const batch = imageFiles.slice(i2, i2 + BATCH_SIZE);
|
|
149289
149649
|
const results = await Promise.allSettled(
|
|
149290
149650
|
batch.map(async (file) => {
|
|
149291
|
-
const filePath =
|
|
149651
|
+
const filePath = join89(outputDir, "assets", file);
|
|
149292
149652
|
const stat3 = statSync26(filePath);
|
|
149293
149653
|
if (stat3.size > 4e6) return { file, caption: "" };
|
|
149294
|
-
const buffer =
|
|
149654
|
+
const buffer = readFileSync62(filePath);
|
|
149295
149655
|
const base64 = buffer.toString("base64");
|
|
149296
149656
|
const ext = file.split(".").pop()?.toLowerCase() || "png";
|
|
149297
149657
|
const mimeType = ext === "jpg" ? "image/jpeg" : `image/${ext}`;
|
|
@@ -149328,13 +149688,13 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
|
|
|
149328
149688
|
}
|
|
149329
149689
|
progress("design", `${Object.keys(geminiCaptions).length} images captioned with Gemini`);
|
|
149330
149690
|
const svgFiles = [];
|
|
149331
|
-
const assetsDir =
|
|
149332
|
-
for (const f3 of
|
|
149691
|
+
const assetsDir = join89(outputDir, "assets");
|
|
149692
|
+
for (const f3 of readdirSync32(assetsDir)) {
|
|
149333
149693
|
if (/\.svg$/i.test(f3)) svgFiles.push({ file: f3, relPath: f3 });
|
|
149334
149694
|
}
|
|
149335
|
-
const svgsSubdir =
|
|
149336
|
-
if (
|
|
149337
|
-
for (const f3 of
|
|
149695
|
+
const svgsSubdir = join89(assetsDir, "svgs");
|
|
149696
|
+
if (existsSync79(svgsSubdir)) {
|
|
149697
|
+
for (const f3 of readdirSync32(svgsSubdir)) {
|
|
149338
149698
|
if (/\.svg$/i.test(f3)) svgFiles.push({ file: f3, relPath: `svgs/${f3}` });
|
|
149339
149699
|
}
|
|
149340
149700
|
}
|
|
@@ -149347,10 +149707,10 @@ async function captionImagesWithGemini(outputDir, progress, warnings) {
|
|
|
149347
149707
|
const batch = svgFiles.slice(i2, i2 + SVG_BATCH);
|
|
149348
149708
|
const results = await Promise.allSettled(
|
|
149349
149709
|
batch.map(async ({ relPath }) => {
|
|
149350
|
-
const filePath =
|
|
149710
|
+
const filePath = join89(assetsDir, relPath);
|
|
149351
149711
|
let pngBase64;
|
|
149352
149712
|
try {
|
|
149353
|
-
const svgSource =
|
|
149713
|
+
const svgSource = readFileSync62(filePath, "utf-8");
|
|
149354
149714
|
const lightFillHits = (svgSource.match(/fill\s*=\s*["'](#fff(fff)?|white|#[ef][ef][ef]|#[ef]{6})["']/gi) || []).length;
|
|
149355
149715
|
const darkFillHits = (svgSource.match(/fill\s*=\s*["'](#000(000)?|black|#[0-3]{6}|#[0-3]{3})["']/gi) || []).length;
|
|
149356
149716
|
const bg = lightFillHits > darkFillHits ? { r: 32, g: 32, b: 32 } : { r: 255, g: 255, b: 255 };
|
|
@@ -149414,11 +149774,11 @@ function generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCap
|
|
|
149414
149774
|
const uncaptionedLines = [];
|
|
149415
149775
|
const svgLines = [];
|
|
149416
149776
|
const fontLines = [];
|
|
149417
|
-
const assetsPath =
|
|
149777
|
+
const assetsPath = join89(outputDir, "assets");
|
|
149418
149778
|
try {
|
|
149419
|
-
for (const file of
|
|
149779
|
+
for (const file of readdirSync32(assetsPath)) {
|
|
149420
149780
|
if (file === "svgs" || file === "fonts" || file === "lottie" || file === "videos") continue;
|
|
149421
|
-
const filePath =
|
|
149781
|
+
const filePath = join89(assetsPath, file);
|
|
149422
149782
|
const stat3 = statSync26(filePath);
|
|
149423
149783
|
if (!stat3.isFile()) continue;
|
|
149424
149784
|
const sizeKb = Math.round(stat3.size / 1024);
|
|
@@ -149447,8 +149807,8 @@ function generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCap
|
|
|
149447
149807
|
} catch {
|
|
149448
149808
|
}
|
|
149449
149809
|
try {
|
|
149450
|
-
const svgsPath =
|
|
149451
|
-
for (const file of
|
|
149810
|
+
const svgsPath = join89(assetsPath, "svgs");
|
|
149811
|
+
for (const file of readdirSync32(svgsPath)) {
|
|
149452
149812
|
if (!file.endsWith(".svg")) continue;
|
|
149453
149813
|
const svgMatch = tokens.svgs.find(
|
|
149454
149814
|
(s2) => s2.label && file.includes(
|
|
@@ -149466,8 +149826,8 @@ function generateAssetDescriptions(outputDir, tokens, catalogedAssets, geminiCap
|
|
|
149466
149826
|
} catch {
|
|
149467
149827
|
}
|
|
149468
149828
|
try {
|
|
149469
|
-
const fontsPath =
|
|
149470
|
-
for (const file of
|
|
149829
|
+
const fontsPath = join89(assetsPath, "fonts");
|
|
149830
|
+
for (const file of readdirSync32(fontsPath)) {
|
|
149471
149831
|
fontLines.push(`fonts/${file} \u2014 font file`);
|
|
149472
149832
|
}
|
|
149473
149833
|
} catch {
|
|
@@ -149485,8 +149845,8 @@ var agentPromptGenerator_exports = {};
|
|
|
149485
149845
|
__export(agentPromptGenerator_exports, {
|
|
149486
149846
|
generateAgentPrompt: () => generateAgentPrompt
|
|
149487
149847
|
});
|
|
149488
|
-
import { writeFileSync as writeFileSync37, readdirSync as
|
|
149489
|
-
import { join as
|
|
149848
|
+
import { writeFileSync as writeFileSync37, readdirSync as readdirSync33, existsSync as existsSync80 } from "fs";
|
|
149849
|
+
import { join as join90 } from "path";
|
|
149490
149850
|
function inferColorRole(hex) {
|
|
149491
149851
|
const r2 = parseInt(hex.slice(1, 3), 16) / 255;
|
|
149492
149852
|
const g = parseInt(hex.slice(3, 5), 16) / 255;
|
|
@@ -149505,9 +149865,9 @@ function inferColorRole(hex) {
|
|
|
149505
149865
|
}
|
|
149506
149866
|
function generateAgentPrompt(outputDir, url, tokens, _animations, hasScreenshot, hasLottie, hasShaders, _catalogedAssets, _detectedLibraries) {
|
|
149507
149867
|
const prompt = buildPrompt(outputDir, url, tokens, hasScreenshot, hasLottie, hasShaders);
|
|
149508
|
-
writeFileSync37(
|
|
149509
|
-
writeFileSync37(
|
|
149510
|
-
writeFileSync37(
|
|
149868
|
+
writeFileSync37(join90(outputDir, "AGENTS.md"), prompt, "utf-8");
|
|
149869
|
+
writeFileSync37(join90(outputDir, "CLAUDE.md"), prompt, "utf-8");
|
|
149870
|
+
writeFileSync37(join90(outputDir, ".cursorrules"), prompt, "utf-8");
|
|
149511
149871
|
}
|
|
149512
149872
|
function buildPrompt(outputDir, url, tokens, hasScreenshot, hasLottie, hasShaders) {
|
|
149513
149873
|
const title = tokens.title || new URL(url).hostname.replace(/^www\./, "");
|
|
@@ -149516,12 +149876,12 @@ function buildPrompt(outputDir, url, tokens, hasScreenshot, hasLottie, hasShader
|
|
|
149516
149876
|
(f3) => f3.family + (f3.variable && f3.weightRange ? ` (${f3.weightRange[0]}-${f3.weightRange[1]} variable)` : f3.weights.length > 0 ? ` (${f3.weights.join(",")})` : "")
|
|
149517
149877
|
).join(", ") || "none detected";
|
|
149518
149878
|
function contactSheetRows(dir, baseFile, label2) {
|
|
149519
|
-
const fullDir =
|
|
149520
|
-
if (!
|
|
149879
|
+
const fullDir = join90(outputDir, dir);
|
|
149880
|
+
if (!existsSync80(fullDir)) return [];
|
|
149521
149881
|
const baseName = baseFile.replace(/\.jpg$/, "");
|
|
149522
149882
|
const escapedBase = baseName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
149523
149883
|
const paginatedRe = new RegExp(`^${escapedBase}(?:-(\\d+))?\\.jpg$`);
|
|
149524
|
-
const all =
|
|
149884
|
+
const all = readdirSync33(fullDir).filter((f3) => paginatedRe.test(f3)).map((f3) => ({ name: f3, page: parseInt(f3.match(paginatedRe)?.[1] ?? "0", 10) })).sort((a, b2) => a.page - b2.page).map((entry) => entry.name);
|
|
149525
149885
|
if (all.length === 0) return [];
|
|
149526
149886
|
if (all.length === 1) {
|
|
149527
149887
|
return [`| \`${dir}/${all[0]}\` | ${label2} |`];
|
|
@@ -149549,7 +149909,7 @@ function buildPrompt(outputDir, url, tokens, hasScreenshot, hasLottie, hasShader
|
|
|
149549
149909
|
tableRows.push(
|
|
149550
149910
|
`| \`extracted/tokens.json\` | Design tokens: ${tokens.colors.length} colors, ${tokens.fonts.length} fonts, ${tokens.headings?.length ?? 0} headings, ${tokens.ctas?.length ?? 0} CTAs |`
|
|
149551
149911
|
);
|
|
149552
|
-
if (
|
|
149912
|
+
if (existsSync80(join90(outputDir, "extracted", "design-styles.json"))) {
|
|
149553
149913
|
tableRows.push(
|
|
149554
149914
|
"| `extracted/design-styles.json` | Computed styles from live DOM: typography hierarchy, button/card/nav styles, spacing scale, border-radius, box shadows. Primary data source for DESIGN.md. |"
|
|
149555
149915
|
);
|
|
@@ -149620,15 +149980,15 @@ var init_agentPromptGenerator = __esm({
|
|
|
149620
149980
|
});
|
|
149621
149981
|
|
|
149622
149982
|
// src/capture/scaffolding.ts
|
|
149623
|
-
import { existsSync as
|
|
149624
|
-
import { join as
|
|
149983
|
+
import { existsSync as existsSync81, writeFileSync as writeFileSync38, readFileSync as readFileSync63 } from "fs";
|
|
149984
|
+
import { join as join91, resolve as resolve51 } from "path";
|
|
149625
149985
|
function loadEnvFile(startDir) {
|
|
149626
149986
|
try {
|
|
149627
149987
|
let dir = resolve51(startDir);
|
|
149628
149988
|
for (let i2 = 0; i2 < 5; i2++) {
|
|
149629
149989
|
const envPath = resolve51(dir, ".env");
|
|
149630
149990
|
try {
|
|
149631
|
-
const envContent =
|
|
149991
|
+
const envContent = readFileSync63(envPath, "utf-8");
|
|
149632
149992
|
for (const line of envContent.split("\n")) {
|
|
149633
149993
|
const trimmed = line.trim();
|
|
149634
149994
|
if (!trimmed || trimmed.startsWith("#")) continue;
|
|
@@ -149647,8 +150007,8 @@ function loadEnvFile(startDir) {
|
|
|
149647
150007
|
}
|
|
149648
150008
|
}
|
|
149649
150009
|
async function generateProjectScaffold(outputDir, url, tokens, animationCatalog, hasScreenshots, hasLotties, hasShaders, catalogedAssets, progress, warnings, detectedLibraries) {
|
|
149650
|
-
const metaPath =
|
|
149651
|
-
if (!
|
|
150010
|
+
const metaPath = join91(outputDir, "meta.json");
|
|
150011
|
+
if (!existsSync81(metaPath)) {
|
|
149652
150012
|
const hostname = new URL(url).hostname.replace(/^www\./, "");
|
|
149653
150013
|
writeFileSync38(
|
|
149654
150014
|
metaPath,
|
|
@@ -149686,9 +150046,9 @@ __export(screenshotCapture_exports, {
|
|
|
149686
150046
|
captureScrollScreenshots: () => captureScrollScreenshots
|
|
149687
150047
|
});
|
|
149688
150048
|
import { writeFileSync as writeFileSync39, mkdirSync as mkdirSync44 } from "fs";
|
|
149689
|
-
import { join as
|
|
150049
|
+
import { join as join92 } from "path";
|
|
149690
150050
|
async function captureScrollScreenshots(page, outputDir) {
|
|
149691
|
-
const screenshotsDir =
|
|
150051
|
+
const screenshotsDir = join92(outputDir, "screenshots");
|
|
149692
150052
|
mkdirSync44(screenshotsDir, { recursive: true });
|
|
149693
150053
|
const MAX_SCREENSHOTS = 20;
|
|
149694
150054
|
const filePaths = [];
|
|
@@ -149780,7 +150140,7 @@ async function captureScrollScreenshots(page, outputDir) {
|
|
|
149780
150140
|
finalPositions[i2] / Math.max(1, scrollHeight - viewportHeight) * 100
|
|
149781
150141
|
);
|
|
149782
150142
|
const filename = `scroll-${String(Math.min(pct, 100)).padStart(3, "0")}.png`;
|
|
149783
|
-
const filePath =
|
|
150143
|
+
const filePath = join92(screenshotsDir, filename);
|
|
149784
150144
|
const buffer = await page.screenshot({ type: "png" });
|
|
149785
150145
|
writeFileSync39(filePath, buffer);
|
|
149786
150146
|
filePaths.push(`screenshots/${filename}`);
|
|
@@ -150129,8 +150489,8 @@ var capture_exports = {};
|
|
|
150129
150489
|
__export(capture_exports, {
|
|
150130
150490
|
captureWebsite: () => captureWebsite
|
|
150131
150491
|
});
|
|
150132
|
-
import { mkdirSync as mkdirSync45, writeFileSync as writeFileSync40, existsSync as
|
|
150133
|
-
import { join as
|
|
150492
|
+
import { mkdirSync as mkdirSync45, writeFileSync as writeFileSync40, existsSync as existsSync82 } from "fs";
|
|
150493
|
+
import { join as join93 } from "path";
|
|
150134
150494
|
async function captureWebsite(opts, onProgress) {
|
|
150135
150495
|
const {
|
|
150136
150496
|
url,
|
|
@@ -150147,9 +150507,9 @@ async function captureWebsite(opts, onProgress) {
|
|
|
150147
150507
|
onProgress?.(stage, detail);
|
|
150148
150508
|
};
|
|
150149
150509
|
loadEnvFile(outputDir);
|
|
150150
|
-
mkdirSync45(
|
|
150151
|
-
mkdirSync45(
|
|
150152
|
-
mkdirSync45(
|
|
150510
|
+
mkdirSync45(join93(outputDir, "extracted"), { recursive: true });
|
|
150511
|
+
mkdirSync45(join93(outputDir, "screenshots"), { recursive: true });
|
|
150512
|
+
mkdirSync45(join93(outputDir, "assets"), { recursive: true });
|
|
150153
150513
|
progress("browser", "Launching headless Chrome...");
|
|
150154
150514
|
const { ensureBrowser: ensureBrowser2 } = await Promise.resolve().then(() => (init_manager2(), manager_exports2));
|
|
150155
150515
|
const browser = await ensureBrowser2();
|
|
@@ -150309,7 +150669,7 @@ async function captureWebsite(opts, onProgress) {
|
|
|
150309
150669
|
} catch {
|
|
150310
150670
|
}
|
|
150311
150671
|
if (discoveredLotties.length > 0) {
|
|
150312
|
-
const lottieDir =
|
|
150672
|
+
const lottieDir = join93(outputDir, "assets", "lottie");
|
|
150313
150673
|
mkdirSync45(lottieDir, { recursive: true });
|
|
150314
150674
|
const savedCount = await saveLottieAnimations(discoveredLotties, lottieDir);
|
|
150315
150675
|
if (savedCount > 0) {
|
|
@@ -150329,7 +150689,7 @@ async function captureWebsite(opts, onProgress) {
|
|
|
150329
150689
|
});
|
|
150330
150690
|
capturedShaders = unique;
|
|
150331
150691
|
writeFileSync40(
|
|
150332
|
-
|
|
150692
|
+
join93(outputDir, "extracted", "shaders.json"),
|
|
150333
150693
|
JSON.stringify(unique, null, 2),
|
|
150334
150694
|
"utf-8"
|
|
150335
150695
|
);
|
|
@@ -150344,7 +150704,7 @@ async function captureWebsite(opts, onProgress) {
|
|
|
150344
150704
|
svgs: tokens.svgs.map(({ outerHTML: _, ...rest }) => rest)
|
|
150345
150705
|
};
|
|
150346
150706
|
writeFileSync40(
|
|
150347
|
-
|
|
150707
|
+
join93(outputDir, "extracted", "tokens.json"),
|
|
150348
150708
|
JSON.stringify(tokensForDisk, null, 2),
|
|
150349
150709
|
"utf-8"
|
|
150350
150710
|
);
|
|
@@ -150352,7 +150712,7 @@ async function captureWebsite(opts, onProgress) {
|
|
|
150352
150712
|
try {
|
|
150353
150713
|
const designStyles = await extractDesignStyles(page1);
|
|
150354
150714
|
writeFileSync40(
|
|
150355
|
-
|
|
150715
|
+
join93(outputDir, "extracted", "design-styles.json"),
|
|
150356
150716
|
JSON.stringify(designStyles, null, 2),
|
|
150357
150717
|
"utf-8"
|
|
150358
150718
|
);
|
|
@@ -150431,8 +150791,8 @@ ${err.stack}` : String(err);
|
|
|
150431
150791
|
extracted.headHtml = await downloadAndRewriteFonts(extracted.headHtml, outputDir);
|
|
150432
150792
|
try {
|
|
150433
150793
|
const fontsManifest = extractFontMetadata(
|
|
150434
|
-
|
|
150435
|
-
|
|
150794
|
+
join93(outputDir, "assets", "fonts"),
|
|
150795
|
+
join93(outputDir, "extracted", "fonts-manifest.json")
|
|
150436
150796
|
);
|
|
150437
150797
|
if (fontsManifest.families.length > 0) {
|
|
150438
150798
|
const summary = fontsManifest.families.map((f3) => `${f3.family}${f3.variable ? " (variable)" : ""} \xD7 ${f3.fileCount}`).join(", ");
|
|
@@ -150462,7 +150822,7 @@ ${err.stack}` : String(err);
|
|
|
150462
150822
|
representativeAnimations: representativeAnims
|
|
150463
150823
|
};
|
|
150464
150824
|
writeFileSync40(
|
|
150465
|
-
|
|
150825
|
+
join93(outputDir, "extracted", "animations.json"),
|
|
150466
150826
|
JSON.stringify(leanCatalog, null, 2),
|
|
150467
150827
|
"utf-8"
|
|
150468
150828
|
);
|
|
@@ -150493,7 +150853,7 @@ ${err.stack}` : String(err);
|
|
|
150493
150853
|
svgs: tokens.svgs.map(({ outerHTML: _, ...rest }) => rest)
|
|
150494
150854
|
};
|
|
150495
150855
|
writeFileSync40(
|
|
150496
|
-
|
|
150856
|
+
join93(outputDir, "extracted", "tokens.json"),
|
|
150497
150857
|
JSON.stringify(tokensForDisk2, null, 2),
|
|
150498
150858
|
"utf-8"
|
|
150499
150859
|
);
|
|
@@ -150509,12 +150869,12 @@ ${extracted.bodyHtml}
|
|
|
150509
150869
|
</body>
|
|
150510
150870
|
</html>
|
|
150511
150871
|
`;
|
|
150512
|
-
writeFileSync40(
|
|
150872
|
+
writeFileSync40(join93(outputDir, "extracted", "page.html"), pageHtml, "utf-8");
|
|
150513
150873
|
} catch (err) {
|
|
150514
150874
|
warnings.push(`page.html write failed: ${err}`);
|
|
150515
150875
|
}
|
|
150516
150876
|
if (visibleTextContent) {
|
|
150517
|
-
writeFileSync40(
|
|
150877
|
+
writeFileSync40(join93(outputDir, "extracted", "visible-text.txt"), visibleTextContent, "utf-8");
|
|
150518
150878
|
}
|
|
150519
150879
|
const geminiCaptions = await captionImagesWithGemini(outputDir, progress, warnings);
|
|
150520
150880
|
progress("design", "Generating asset descriptions...");
|
|
@@ -150524,7 +150884,7 @@ ${extracted.bodyHtml}
|
|
|
150524
150884
|
const hasGeminiKey = !!(process.env.GEMINI_API_KEY || process.env.GOOGLE_API_KEY);
|
|
150525
150885
|
const header = hasGeminiKey ? "# Asset Descriptions\n\nOne line per file. Read this instead of opening every image individually.\n\nTo find a specific brand or icon, **grep this file for the brand name in the description text** (e.g. `grep -i 'autodesk' asset-descriptions.md`). The Gemini Vision captions identify what's actually in each file \u2014 that's the agent's selector.\n\nThe `logo-<hash>.svg` filename prefix is a cheap structural hint (DOM said this SVG was inside a `<header>`, home-link `<a>`, or had an aria-label matching the page brand). It is NOT a content claim \u2014 many `logo-*` files are nav icons or decorative shapes. Trust the captions, not the filename prefix.\n\n" : "# Asset Descriptions\n\n\u26A0\uFE0F GEMINI_API_KEY not set \u2014 descriptions below are catalog-derived (alt text, headings, section context, filename) instead of Vision-generated. To get richer Vision descriptions on the next capture, set GEMINI_API_KEY (or GOOGLE_API_KEY) and re-run.\n\nThe `logo-<hash>.svg` filename prefix is a structural hint (DOM said this SVG was inside a `<header>`, home-link `<a>`, or had an aria-label matching the page brand). To pick the actual brand logo without Vision, open the `logo-*` candidates in a previewer or rasterize them with `sharp` before referencing \u2014 composing a fake logo ships off-brand in the final video.\n\n";
|
|
150526
150886
|
writeFileSync40(
|
|
150527
|
-
|
|
150887
|
+
join93(outputDir, "extracted", "asset-descriptions.md"),
|
|
150528
150888
|
header + lines.map((l) => "- " + l).join("\n") + "\n",
|
|
150529
150889
|
"utf-8"
|
|
150530
150890
|
);
|
|
@@ -150539,19 +150899,19 @@ ${extracted.bodyHtml}
|
|
|
150539
150899
|
try {
|
|
150540
150900
|
const { createScrollContactSheet: createScrollContactSheet2, createAssetContactSheet: createAssetContactSheet2, createSvgContactSheet: createSvgContactSheet2 } = await Promise.resolve().then(() => (init_contactSheet(), contactSheet_exports));
|
|
150541
150901
|
const scrollSheets = await createScrollContactSheet2(
|
|
150542
|
-
|
|
150543
|
-
|
|
150902
|
+
join93(outputDir, "screenshots"),
|
|
150903
|
+
join93(outputDir, "screenshots", "contact-sheet.jpg")
|
|
150544
150904
|
);
|
|
150545
150905
|
if (scrollSheets.length > 0)
|
|
150546
150906
|
progress(
|
|
150547
150907
|
"design",
|
|
150548
150908
|
`Screenshot contact sheet generated (${scrollSheets.length} page${scrollSheets.length > 1 ? "s" : ""})`
|
|
150549
150909
|
);
|
|
150550
|
-
const assetsImgDir =
|
|
150551
|
-
if (
|
|
150910
|
+
const assetsImgDir = join93(outputDir, "assets");
|
|
150911
|
+
if (existsSync82(assetsImgDir)) {
|
|
150552
150912
|
const assetSheets = await createAssetContactSheet2(
|
|
150553
150913
|
assetsImgDir,
|
|
150554
|
-
|
|
150914
|
+
join93(outputDir, "assets", "contact-sheet.jpg")
|
|
150555
150915
|
);
|
|
150556
150916
|
if (assetSheets.length > 0)
|
|
150557
150917
|
progress(
|
|
@@ -150559,9 +150919,9 @@ ${extracted.bodyHtml}
|
|
|
150559
150919
|
`Asset contact sheet generated (${assetSheets.length} page${assetSheets.length > 1 ? "s" : ""})`
|
|
150560
150920
|
);
|
|
150561
150921
|
}
|
|
150562
|
-
const svgsDir =
|
|
150563
|
-
const assetsRootDir =
|
|
150564
|
-
const svgOutputPath =
|
|
150922
|
+
const svgsDir = join93(outputDir, "assets", "svgs");
|
|
150923
|
+
const assetsRootDir = join93(outputDir, "assets");
|
|
150924
|
+
const svgOutputPath = existsSync82(svgsDir) ? join93(outputDir, "assets", "svgs", "contact-sheet.jpg") : join93(outputDir, "assets", "contact-sheet-svgs.jpg");
|
|
150565
150925
|
const svgSheets = await createSvgContactSheet2(svgsDir, svgOutputPath, assetsRootDir);
|
|
150566
150926
|
if (svgSheets.length > 0)
|
|
150567
150927
|
progress(
|
|
@@ -150577,7 +150937,7 @@ ${extracted.bodyHtml}
|
|
|
150577
150937
|
animationCatalog,
|
|
150578
150938
|
screenshots.length > 0,
|
|
150579
150939
|
discoveredLotties.length > 0,
|
|
150580
|
-
|
|
150940
|
+
existsSync82(join93(outputDir, "extracted", "shaders.json")),
|
|
150581
150941
|
catalogedAssets,
|
|
150582
150942
|
progress,
|
|
150583
150943
|
warnings,
|
|
@@ -150619,21 +150979,25 @@ var init_capture = __esm({
|
|
|
150619
150979
|
var capture_exports2 = {};
|
|
150620
150980
|
__export(capture_exports2, {
|
|
150621
150981
|
default: () => capture_default,
|
|
150622
|
-
examples: () =>
|
|
150982
|
+
examples: () => examples25
|
|
150623
150983
|
});
|
|
150624
150984
|
import { resolve as resolve52 } from "path";
|
|
150625
|
-
var
|
|
150985
|
+
var examples25, capture_default;
|
|
150626
150986
|
var init_capture2 = __esm({
|
|
150627
150987
|
"src/commands/capture.ts"() {
|
|
150628
150988
|
"use strict";
|
|
150629
150989
|
init_dist();
|
|
150630
|
-
|
|
150990
|
+
examples25 = [
|
|
150631
150991
|
["Capture a website", "hyperframes capture https://stripe.com"],
|
|
150632
150992
|
["Capture to a specific directory", "hyperframes capture https://linear.app -o linear-video"],
|
|
150633
150993
|
["JSON output for AI agents", "hyperframes capture https://example.com --json"],
|
|
150634
150994
|
[
|
|
150635
150995
|
"Pull a video from the captured manifest by index",
|
|
150636
|
-
"hyperframes capture video ./linear-video --index 0"
|
|
150996
|
+
"hyperframes capture --video ./linear-video --index 0"
|
|
150997
|
+
],
|
|
150998
|
+
[
|
|
150999
|
+
"List videos referenced in the captured manifest",
|
|
151000
|
+
"hyperframes capture --video ./linear-video --list"
|
|
150637
151001
|
]
|
|
150638
151002
|
];
|
|
150639
151003
|
capture_default = defineCommand({
|
|
@@ -150641,14 +151005,11 @@ var init_capture2 = __esm({
|
|
|
150641
151005
|
name: "capture",
|
|
150642
151006
|
description: "Capture a website as editable HyperFrames components"
|
|
150643
151007
|
},
|
|
150644
|
-
subCommands: {
|
|
150645
|
-
video: () => Promise.resolve().then(() => (init_video(), video_exports)).then((m2) => m2.default)
|
|
150646
|
-
},
|
|
150647
151008
|
args: {
|
|
150648
151009
|
url: {
|
|
150649
151010
|
type: "positional",
|
|
150650
|
-
description: "Website URL to capture",
|
|
150651
|
-
required:
|
|
151011
|
+
description: "Website URL to capture (omit when using --video)",
|
|
151012
|
+
required: false
|
|
150652
151013
|
},
|
|
150653
151014
|
output: {
|
|
150654
151015
|
type: "string",
|
|
@@ -150672,11 +151033,43 @@ var init_capture2 = __esm({
|
|
|
150672
151033
|
type: "boolean",
|
|
150673
151034
|
description: "Output JSON (for AI agents / programmatic use)",
|
|
150674
151035
|
default: false
|
|
151036
|
+
},
|
|
151037
|
+
video: {
|
|
151038
|
+
type: "string",
|
|
151039
|
+
description: "Switch to video-download mode: path to a captured project directory whose video-manifest.json should be read. Pair with --index, --video-url, or --list."
|
|
151040
|
+
},
|
|
151041
|
+
index: {
|
|
151042
|
+
type: "string",
|
|
151043
|
+
description: "(--video mode) Manifest entry index to download (0-based)"
|
|
151044
|
+
},
|
|
151045
|
+
"video-url": {
|
|
151046
|
+
type: "string",
|
|
151047
|
+
description: "(--video mode) Exact video URL to download (must match a manifest entry)"
|
|
151048
|
+
},
|
|
151049
|
+
list: {
|
|
151050
|
+
type: "boolean",
|
|
151051
|
+
description: "(--video mode) List manifest entries and exit",
|
|
151052
|
+
default: false
|
|
150675
151053
|
}
|
|
150676
151054
|
},
|
|
150677
151055
|
async run({ args }) {
|
|
151056
|
+
if (args.video) {
|
|
151057
|
+
const { runVideoMode: runVideoMode2 } = await Promise.resolve().then(() => (init_video(), video_exports));
|
|
151058
|
+
await runVideoMode2({
|
|
151059
|
+
project: args.video,
|
|
151060
|
+
index: args.index ?? null,
|
|
151061
|
+
url: args["video-url"] ?? null,
|
|
151062
|
+
list: args.list
|
|
151063
|
+
});
|
|
151064
|
+
return;
|
|
151065
|
+
}
|
|
150678
151066
|
const url = args.url;
|
|
150679
|
-
if (url
|
|
151067
|
+
if (!url) {
|
|
151068
|
+
console.error(
|
|
151069
|
+
"Missing URL. Pass a website URL, or use --video <project> for video download."
|
|
151070
|
+
);
|
|
151071
|
+
process.exit(1);
|
|
151072
|
+
}
|
|
150680
151073
|
try {
|
|
150681
151074
|
new URL(url);
|
|
150682
151075
|
} catch {
|
|
@@ -150813,10 +151206,10 @@ __export(state_exports, {
|
|
|
150813
151206
|
stateFilePath: () => stateFilePath,
|
|
150814
151207
|
writeStackOutputs: () => writeStackOutputs
|
|
150815
151208
|
});
|
|
150816
|
-
import { existsSync as
|
|
150817
|
-
import { dirname as dirname37, join as
|
|
151209
|
+
import { existsSync as existsSync83, mkdirSync as mkdirSync46, readdirSync as readdirSync34, readFileSync as readFileSync64, rmSync as rmSync18, writeFileSync as writeFileSync41 } from "fs";
|
|
151210
|
+
import { dirname as dirname37, join as join94 } from "path";
|
|
150818
151211
|
function stateFilePath(stackName = DEFAULT_STACK_NAME, cwd = process.cwd()) {
|
|
150819
|
-
return
|
|
151212
|
+
return join94(cwd, STATE_DIR_NAME, `${STATE_FILE_PREFIX}${stackName}.json`);
|
|
150820
151213
|
}
|
|
150821
151214
|
function writeStackOutputs(outputs, cwd = process.cwd()) {
|
|
150822
151215
|
const path2 = stateFilePath(outputs.stackName, cwd);
|
|
@@ -150826,21 +151219,21 @@ function writeStackOutputs(outputs, cwd = process.cwd()) {
|
|
|
150826
151219
|
}
|
|
150827
151220
|
function readStackOutputs(stackName = DEFAULT_STACK_NAME, cwd = process.cwd()) {
|
|
150828
151221
|
const path2 = stateFilePath(stackName, cwd);
|
|
150829
|
-
if (!
|
|
151222
|
+
if (!existsSync83(path2)) return null;
|
|
150830
151223
|
try {
|
|
150831
|
-
return JSON.parse(
|
|
151224
|
+
return JSON.parse(readFileSync64(path2, "utf-8"));
|
|
150832
151225
|
} catch {
|
|
150833
151226
|
return null;
|
|
150834
151227
|
}
|
|
150835
151228
|
}
|
|
150836
151229
|
function deleteStackOutputs(stackName = DEFAULT_STACK_NAME, cwd = process.cwd()) {
|
|
150837
151230
|
const path2 = stateFilePath(stackName, cwd);
|
|
150838
|
-
if (
|
|
151231
|
+
if (existsSync83(path2)) rmSync18(path2);
|
|
150839
151232
|
}
|
|
150840
151233
|
function listStackNames(cwd = process.cwd()) {
|
|
150841
|
-
const dir =
|
|
150842
|
-
if (!
|
|
150843
|
-
return
|
|
151234
|
+
const dir = join94(cwd, STATE_DIR_NAME);
|
|
151235
|
+
if (!existsSync83(dir)) return [];
|
|
151236
|
+
return readdirSync34(dir).filter((f3) => f3.startsWith(STATE_FILE_PREFIX) && f3.endsWith(".json")).map((f3) => f3.slice(STATE_FILE_PREFIX.length, -".json".length));
|
|
150844
151237
|
}
|
|
150845
151238
|
function requireStack(stackName, cwd = process.cwd()) {
|
|
150846
151239
|
const stack = readStackOutputs(stackName, cwd);
|
|
@@ -150869,8 +151262,8 @@ var init_state = __esm({
|
|
|
150869
151262
|
|
|
150870
151263
|
// src/commands/lambda/sam.ts
|
|
150871
151264
|
import { execFileSync as execFileSync11, spawnSync as spawnSync4 } from "child_process";
|
|
150872
|
-
import { existsSync as
|
|
150873
|
-
import { join as
|
|
151265
|
+
import { existsSync as existsSync84 } from "fs";
|
|
151266
|
+
import { join as join95 } from "path";
|
|
150874
151267
|
function assertSamAvailable() {
|
|
150875
151268
|
try {
|
|
150876
151269
|
execFileSync11("sam", ["--version"], { stdio: "ignore" });
|
|
@@ -150890,8 +151283,8 @@ function assertAwsCliAvailable() {
|
|
|
150890
151283
|
}
|
|
150891
151284
|
}
|
|
150892
151285
|
function locateSamTemplate(repoRoot2) {
|
|
150893
|
-
const candidate =
|
|
150894
|
-
if (!
|
|
151286
|
+
const candidate = join95(repoRoot2, "examples", "aws-lambda", "template.yaml");
|
|
151287
|
+
if (!existsSync84(candidate)) {
|
|
150895
151288
|
throw new Error(
|
|
150896
151289
|
`[lambda] SAM template not found at ${candidate}. If you're running from an installed package, point --sam-template at your local copy of examples/aws-lambda/template.yaml.`
|
|
150897
151290
|
);
|
|
@@ -150924,7 +151317,7 @@ function samDeploy(opts) {
|
|
|
150924
151317
|
if (opts.awsProfile) {
|
|
150925
151318
|
args.push("--profile", opts.awsProfile);
|
|
150926
151319
|
}
|
|
150927
|
-
const samDir =
|
|
151320
|
+
const samDir = join95(opts.repoRoot, "examples", "aws-lambda");
|
|
150928
151321
|
const result = spawnSync4("sam", args, { cwd: samDir, stdio: opts.stdio ?? "inherit" });
|
|
150929
151322
|
if (result.status !== 0) {
|
|
150930
151323
|
throw new Error(`[lambda] sam deploy exited with code ${result.status ?? "unknown"}`);
|
|
@@ -150936,7 +151329,7 @@ function samDelete(opts) {
|
|
|
150936
151329
|
if (opts.awsProfile) {
|
|
150937
151330
|
args.push("--profile", opts.awsProfile);
|
|
150938
151331
|
}
|
|
150939
|
-
const samDir =
|
|
151332
|
+
const samDir = join95(opts.repoRoot, "examples", "aws-lambda");
|
|
150940
151333
|
const result = spawnSync4("sam", args, { cwd: samDir, stdio: opts.stdio ?? "inherit" });
|
|
150941
151334
|
if (result.status !== 0) {
|
|
150942
151335
|
throw new Error(`[lambda] sam delete exited with code ${result.status ?? "unknown"}`);
|
|
@@ -150986,17 +151379,17 @@ var init_sam = __esm({
|
|
|
150986
151379
|
});
|
|
150987
151380
|
|
|
150988
151381
|
// src/commands/lambda/repoRoot.ts
|
|
150989
|
-
import { existsSync as
|
|
151382
|
+
import { existsSync as existsSync85 } from "fs";
|
|
150990
151383
|
import { dirname as dirname38, resolve as resolve53 } from "path";
|
|
150991
151384
|
import { fileURLToPath as fileURLToPath12 } from "url";
|
|
150992
151385
|
function repoRoot() {
|
|
150993
151386
|
const override = process.env.HYPERFRAMES_REPO_ROOT;
|
|
150994
|
-
if (override &&
|
|
151387
|
+
if (override && existsSync85(resolve53(override, "packages", "aws-lambda", "package.json"))) {
|
|
150995
151388
|
return override;
|
|
150996
151389
|
}
|
|
150997
151390
|
let dir = dirname38(fileURLToPath12(import.meta.url));
|
|
150998
151391
|
for (let depth = 0; depth < 12; depth++) {
|
|
150999
|
-
if (
|
|
151392
|
+
if (existsSync85(resolve53(dir, "packages", "aws-lambda", "package.json"))) {
|
|
151000
151393
|
return dir;
|
|
151001
151394
|
}
|
|
151002
151395
|
const parent = dirname38(dir);
|
|
@@ -151019,8 +151412,8 @@ __export(deploy_exports, {
|
|
|
151019
151412
|
runDeploy: () => runDeploy
|
|
151020
151413
|
});
|
|
151021
151414
|
import { spawnSync as spawnSync5 } from "child_process";
|
|
151022
|
-
import { existsSync as
|
|
151023
|
-
import { join as
|
|
151415
|
+
import { existsSync as existsSync86 } from "fs";
|
|
151416
|
+
import { join as join96, resolve as resolve54 } from "path";
|
|
151024
151417
|
async function runDeploy(args = {}) {
|
|
151025
151418
|
const resolved = {
|
|
151026
151419
|
stackName: args.stackName ?? DEFAULT_STACK_NAME,
|
|
@@ -151037,8 +151430,8 @@ async function runDeploy(args = {}) {
|
|
|
151037
151430
|
console.log(c2.dim("\u2192 Building handler ZIP"));
|
|
151038
151431
|
buildHandlerZip(root);
|
|
151039
151432
|
} else {
|
|
151040
|
-
const zip =
|
|
151041
|
-
if (!
|
|
151433
|
+
const zip = join96(root, "packages", "aws-lambda", "dist", "handler.zip");
|
|
151434
|
+
if (!existsSync86(zip)) {
|
|
151042
151435
|
throw new Error(
|
|
151043
151436
|
`--skip-build set but ${zip} does not exist. Run \`bun run --cwd packages/aws-lambda build:zip\` first or drop --skip-build.`
|
|
151044
151437
|
);
|
|
@@ -151081,7 +151474,7 @@ async function runDeploy(args = {}) {
|
|
|
151081
151474
|
function buildHandlerZip(root) {
|
|
151082
151475
|
const result = spawnSync5(
|
|
151083
151476
|
"bun",
|
|
151084
|
-
["run", "--cwd",
|
|
151477
|
+
["run", "--cwd", join96(root, "packages", "aws-lambda"), "build:zip"],
|
|
151085
151478
|
{ stdio: "inherit" }
|
|
151086
151479
|
);
|
|
151087
151480
|
if (result.status !== 0) {
|
|
@@ -151150,14 +151543,14 @@ var init_sites = __esm({
|
|
|
151150
151543
|
});
|
|
151151
151544
|
|
|
151152
151545
|
// src/commands/lambda/_dimensions.ts
|
|
151153
|
-
import { readFileSync as
|
|
151154
|
-
import { join as
|
|
151546
|
+
import { readFileSync as readFileSync65 } from "fs";
|
|
151547
|
+
import { join as join97 } from "path";
|
|
151155
151548
|
function warnOnDimensionMismatch(args) {
|
|
151156
151549
|
if (args.quiet) return;
|
|
151157
151550
|
if (args.outputResolution) return;
|
|
151158
151551
|
let html;
|
|
151159
151552
|
try {
|
|
151160
|
-
html =
|
|
151553
|
+
html = readFileSync65(join97(args.projectDir, "index.html"), "utf-8");
|
|
151161
151554
|
} catch {
|
|
151162
151555
|
return;
|
|
151163
151556
|
}
|
|
@@ -151185,8 +151578,8 @@ var render_exports2 = {};
|
|
|
151185
151578
|
__export(render_exports2, {
|
|
151186
151579
|
runRender: () => runRender
|
|
151187
151580
|
});
|
|
151188
|
-
import { existsSync as
|
|
151189
|
-
import { join as
|
|
151581
|
+
import { existsSync as existsSync87 } from "fs";
|
|
151582
|
+
import { join as join98, resolve as resolvePath2 } from "path";
|
|
151190
151583
|
async function loadSDK2() {
|
|
151191
151584
|
return import("@hyperframes/aws-lambda/sdk");
|
|
151192
151585
|
}
|
|
@@ -151202,8 +151595,8 @@ async function runRender(args) {
|
|
|
151202
151595
|
});
|
|
151203
151596
|
const variables = resolveVariablesArg(args.variables, args.variablesFile);
|
|
151204
151597
|
if (variables && Object.keys(variables).length > 0) {
|
|
151205
|
-
const indexPath =
|
|
151206
|
-
if (
|
|
151598
|
+
const indexPath = join98(projectDir, "index.html");
|
|
151599
|
+
if (existsSync87(indexPath)) {
|
|
151207
151600
|
const issues = validateVariablesAgainstProject(indexPath, variables);
|
|
151208
151601
|
reportVariableIssues(issues, { strict: args.strictVariables ?? false, quiet: args.json });
|
|
151209
151602
|
} else if (args.strictVariables && !args.json) {
|
|
@@ -151327,8 +151720,8 @@ __export(render_batch_exports, {
|
|
|
151327
151720
|
runRenderBatch: () => runRenderBatch,
|
|
151328
151721
|
runWithConcurrencyLimit: () => runWithConcurrencyLimit
|
|
151329
151722
|
});
|
|
151330
|
-
import { existsSync as
|
|
151331
|
-
import { join as
|
|
151723
|
+
import { existsSync as existsSync88, readFileSync as readFileSync66 } from "fs";
|
|
151724
|
+
import { join as join99, resolve as resolvePath3 } from "path";
|
|
151332
151725
|
async function loadSDK3() {
|
|
151333
151726
|
return import("@hyperframes/aws-lambda/sdk");
|
|
151334
151727
|
}
|
|
@@ -151336,7 +151729,7 @@ async function runRenderBatch(args) {
|
|
|
151336
151729
|
const projectDir = resolvePath3(args.projectDir);
|
|
151337
151730
|
const stack = requireStack(args.stackName);
|
|
151338
151731
|
const batchPath = resolvePath3(args.batch);
|
|
151339
|
-
if (!
|
|
151732
|
+
if (!existsSync88(batchPath)) {
|
|
151340
151733
|
errorBox("Batch file not found", `No such file: ${batchPath}`);
|
|
151341
151734
|
process.exit(1);
|
|
151342
151735
|
}
|
|
@@ -151352,7 +151745,7 @@ async function runRenderBatch(args) {
|
|
|
151352
151745
|
outputResolution: args.outputResolution,
|
|
151353
151746
|
quiet: args.json
|
|
151354
151747
|
});
|
|
151355
|
-
const schema = loadProjectVariableSchema(
|
|
151748
|
+
const schema = loadProjectVariableSchema(join99(projectDir, "index.html"));
|
|
151356
151749
|
const strict = args.strictVariables ?? false;
|
|
151357
151750
|
let hadStrictIssue = false;
|
|
151358
151751
|
for (const { entry, lineNumber } of entries2) {
|
|
@@ -151480,7 +151873,7 @@ function makePlaceholderSiteHandle(siteId, bucketName) {
|
|
|
151480
151873
|
};
|
|
151481
151874
|
}
|
|
151482
151875
|
function parseBatchFile(path2) {
|
|
151483
|
-
const raw =
|
|
151876
|
+
const raw = readFileSync66(path2, "utf8");
|
|
151484
151877
|
const lines = raw.split(/\r?\n/);
|
|
151485
151878
|
const out = [];
|
|
151486
151879
|
for (let i2 = 0; i2 < lines.length; i2++) {
|
|
@@ -151674,7 +152067,7 @@ __export(policies_exports, {
|
|
|
151674
152067
|
runPolicies: () => runPolicies,
|
|
151675
152068
|
validatePolicy: () => validatePolicy
|
|
151676
152069
|
});
|
|
151677
|
-
import { readFileSync as
|
|
152070
|
+
import { readFileSync as readFileSync67 } from "fs";
|
|
151678
152071
|
function allRequiredActions() {
|
|
151679
152072
|
const set = /* @__PURE__ */ new Set();
|
|
151680
152073
|
for (const group of Object.values(REQUIRED_ACTIONS)) {
|
|
@@ -151780,7 +152173,7 @@ async function runPolicies(args) {
|
|
|
151780
152173
|
}
|
|
151781
152174
|
}
|
|
151782
152175
|
function validatePolicy(policyPath) {
|
|
151783
|
-
const raw =
|
|
152176
|
+
const raw = readFileSync67(policyPath, "utf-8");
|
|
151784
152177
|
const parsed = JSON.parse(raw);
|
|
151785
152178
|
const statements = Array.isArray(parsed.Statement) ? parsed.Statement : parsed.Statement ? [
|
|
151786
152179
|
parsed.Statement
|
|
@@ -151947,7 +152340,7 @@ var init_policies = __esm({
|
|
|
151947
152340
|
var lambda_exports = {};
|
|
151948
152341
|
__export(lambda_exports, {
|
|
151949
152342
|
default: () => lambda_default,
|
|
151950
|
-
examples: () =>
|
|
152343
|
+
examples: () => examples26
|
|
151951
152344
|
});
|
|
151952
152345
|
function parseIntFlag(raw) {
|
|
151953
152346
|
if (raw === void 0 || raw === null || raw === "") return void 0;
|
|
@@ -151976,14 +152369,14 @@ function parseOutputResolution(raw) {
|
|
|
151976
152369
|
`[lambda render] --output-resolution must be one of ${VALID_CANVAS_RESOLUTIONS.join("|")} (or an alias: 1080p, 4k, uhd, hd, 1080p-portrait, portrait-1080p, 4k-portrait, 1080p-square, square-1080p, 4k-square); got ${String(raw)}`
|
|
151977
152370
|
);
|
|
151978
152371
|
}
|
|
151979
|
-
var
|
|
152372
|
+
var examples26, HELP, lambda_default, FORMATS, CODECS, QUALITIES2, CHROME_SOURCES, parseFormat, parseCodec, parseQuality, parseChromeSource;
|
|
151980
152373
|
var init_lambda = __esm({
|
|
151981
152374
|
"src/commands/lambda.ts"() {
|
|
151982
152375
|
"use strict";
|
|
151983
152376
|
init_dist();
|
|
151984
152377
|
init_src();
|
|
151985
152378
|
init_colors();
|
|
151986
|
-
|
|
152379
|
+
examples26 = [
|
|
151987
152380
|
["Deploy the Lambda render stack to AWS", "hyperframes lambda deploy"],
|
|
151988
152381
|
[
|
|
151989
152382
|
"Render a composition on the deployed stack",
|
|
@@ -152370,18 +152763,18 @@ ${HELP}`);
|
|
|
152370
152763
|
var cloudrun_exports = {};
|
|
152371
152764
|
__export(cloudrun_exports, {
|
|
152372
152765
|
default: () => cloudrun_default,
|
|
152373
|
-
examples: () =>
|
|
152766
|
+
examples: () => examples27
|
|
152374
152767
|
});
|
|
152375
152768
|
import { spawnSync as spawnSync6 } from "child_process";
|
|
152376
152769
|
import { createRequire as createRequire4 } from "module";
|
|
152377
|
-
import { existsSync as
|
|
152770
|
+
import { existsSync as existsSync89, mkdirSync as mkdirSync47, readFileSync as readFileSync68, writeFileSync as writeFileSync42 } from "fs";
|
|
152378
152771
|
import { homedir as homedir12 } from "os";
|
|
152379
|
-
import { dirname as dirname39, join as
|
|
152772
|
+
import { dirname as dirname39, join as join100, resolve as resolve55 } from "path";
|
|
152380
152773
|
function stateDir() {
|
|
152381
|
-
return
|
|
152774
|
+
return join100(homedir12(), ".hyperframes");
|
|
152382
152775
|
}
|
|
152383
152776
|
function statePath() {
|
|
152384
|
-
return
|
|
152777
|
+
return join100(stateDir(), "cloudrun-state.json");
|
|
152385
152778
|
}
|
|
152386
152779
|
function writeState(state) {
|
|
152387
152780
|
mkdirSync47(stateDir(), { recursive: true });
|
|
@@ -152393,9 +152786,9 @@ function readState(args) {
|
|
|
152393
152786
|
region: args.region
|
|
152394
152787
|
};
|
|
152395
152788
|
let base2 = {};
|
|
152396
|
-
if (
|
|
152789
|
+
if (existsSync89(statePath())) {
|
|
152397
152790
|
try {
|
|
152398
|
-
base2 = JSON.parse(
|
|
152791
|
+
base2 = JSON.parse(readFileSync68(statePath(), "utf8"));
|
|
152399
152792
|
} catch {
|
|
152400
152793
|
}
|
|
152401
152794
|
}
|
|
@@ -152415,7 +152808,7 @@ function stripUndefined2(o) {
|
|
|
152415
152808
|
function terraformDir() {
|
|
152416
152809
|
const require3 = createRequire4(import.meta.url);
|
|
152417
152810
|
const pkgJson = require3.resolve("@hyperframes/gcp-cloud-run/package.json");
|
|
152418
|
-
return
|
|
152811
|
+
return join100(dirname39(pkgJson), "terraform");
|
|
152419
152812
|
}
|
|
152420
152813
|
function run(cmd, cmdArgs, opts = {}) {
|
|
152421
152814
|
const res = spawnSync6(cmd, cmdArgs, { stdio: "inherit", cwd: opts.cwd });
|
|
@@ -152542,11 +152935,11 @@ function machineVars(args, project, region, image) {
|
|
|
152542
152935
|
}
|
|
152543
152936
|
function findRepoRoot(tfDir) {
|
|
152544
152937
|
const candidate = resolve55(tfDir, "..", "..", "..");
|
|
152545
|
-
if (
|
|
152938
|
+
if (existsSync89(join100(candidate, "packages", "gcp-cloud-run", "Dockerfile"))) return candidate;
|
|
152546
152939
|
return null;
|
|
152547
152940
|
}
|
|
152548
152941
|
function writeCloudBuildConfig(image) {
|
|
152549
|
-
const cfgPath =
|
|
152942
|
+
const cfgPath = join100(stateDir(), "cloudrun-cloudbuild.yaml");
|
|
152550
152943
|
mkdirSync47(stateDir(), { recursive: true });
|
|
152551
152944
|
writeFileSync42(
|
|
152552
152945
|
cfgPath,
|
|
@@ -152693,7 +153086,7 @@ async function runRenderBatch2(args) {
|
|
|
152693
153086
|
console.error(`[cloudrun render-batch] --fps must be 24, 30, or 60; got ${fps}.`);
|
|
152694
153087
|
process.exit(1);
|
|
152695
153088
|
}
|
|
152696
|
-
if (!
|
|
153089
|
+
if (!existsSync89(resolve55(batchPath))) {
|
|
152697
153090
|
console.error(`[cloudrun render-batch] batch file not found: ${batchPath}`);
|
|
152698
153091
|
process.exit(1);
|
|
152699
153092
|
}
|
|
@@ -152760,7 +153153,7 @@ async function runRenderBatch2(args) {
|
|
|
152760
153153
|
if (failed.length > 0) process.exit(1);
|
|
152761
153154
|
}
|
|
152762
153155
|
function parseBatchFile2(path2) {
|
|
152763
|
-
const lines =
|
|
153156
|
+
const lines = readFileSync68(path2, "utf8").split(/\r?\n/);
|
|
152764
153157
|
const entries2 = [];
|
|
152765
153158
|
lines.forEach((line, idx) => {
|
|
152766
153159
|
const trimmed = line.trim();
|
|
@@ -152784,7 +153177,7 @@ function parseBatchFile2(path2) {
|
|
|
152784
153177
|
}
|
|
152785
153178
|
function runDestroy2(args) {
|
|
152786
153179
|
const tfDir = terraformDir();
|
|
152787
|
-
const state =
|
|
153180
|
+
const state = existsSync89(statePath()) ? JSON.parse(readFileSync68(statePath(), "utf8")) : {};
|
|
152788
153181
|
const project = args.project ?? state.projectId;
|
|
152789
153182
|
const region = args.region ?? state.region ?? "us-central1";
|
|
152790
153183
|
const image = args.image ?? "unused:latest";
|
|
@@ -152832,8 +153225,8 @@ function resolveAndValidateVariables(args, projectDir) {
|
|
|
152832
153225
|
args["variables-file"]
|
|
152833
153226
|
);
|
|
152834
153227
|
if (variables && Object.keys(variables).length > 0) {
|
|
152835
|
-
const indexPath =
|
|
152836
|
-
if (
|
|
153228
|
+
const indexPath = join100(projectDir, "index.html");
|
|
153229
|
+
if (existsSync89(indexPath)) {
|
|
152837
153230
|
const issues = validateVariablesAgainstProject(indexPath, variables);
|
|
152838
153231
|
reportVariableIssues(issues, {
|
|
152839
153232
|
strict: Boolean(args["strict-variables"]),
|
|
@@ -152870,7 +153263,7 @@ function parseEnum2(raw, allowed, errorPrefix, defaultValue) {
|
|
|
152870
153263
|
if (allowed.includes(s2)) return s2;
|
|
152871
153264
|
throw new Error(`${errorPrefix} must be ${allowed.join("|")}; got ${s2}`);
|
|
152872
153265
|
}
|
|
152873
|
-
var
|
|
153266
|
+
var examples27, HELP2, cloudrun_default, DEFAULT_BATCH_MAX_CONCURRENT, FORMATS2, CODECS2, QUALITIES3, parseFormat2, parseCodec2, parseQuality2;
|
|
152874
153267
|
var init_cloudrun = __esm({
|
|
152875
153268
|
"src/commands/cloudrun.ts"() {
|
|
152876
153269
|
"use strict";
|
|
@@ -152878,7 +153271,7 @@ var init_cloudrun = __esm({
|
|
|
152878
153271
|
init_src();
|
|
152879
153272
|
init_colors();
|
|
152880
153273
|
init_variables();
|
|
152881
|
-
|
|
153274
|
+
examples27 = [
|
|
152882
153275
|
["Deploy the Cloud Run render stack", "hyperframes cloudrun deploy --project my-gcp-project"],
|
|
152883
153276
|
[
|
|
152884
153277
|
"Render a composition on the deployed stack",
|
|
@@ -153062,7 +153455,7 @@ ${HELP2}`);
|
|
|
153062
153455
|
});
|
|
153063
153456
|
|
|
153064
153457
|
// src/cloud/detectAspectRatio.ts
|
|
153065
|
-
import { readFileSync as
|
|
153458
|
+
import { readFileSync as readFileSync69 } from "fs";
|
|
153066
153459
|
function extractAttributeNumber(tag, re2) {
|
|
153067
153460
|
const match = tag.match(re2);
|
|
153068
153461
|
if (!match) return null;
|
|
@@ -153074,7 +153467,7 @@ function extractAttributeNumber(tag, re2) {
|
|
|
153074
153467
|
function detectAspectRatioFromHtml(entryHtmlPath) {
|
|
153075
153468
|
let html;
|
|
153076
153469
|
try {
|
|
153077
|
-
html =
|
|
153470
|
+
html = readFileSync69(entryHtmlPath, "utf-8");
|
|
153078
153471
|
} catch (err) {
|
|
153079
153472
|
return { kind: "read-error", error: err instanceof Error ? err.message : String(err) };
|
|
153080
153473
|
}
|
|
@@ -153817,14 +154210,14 @@ var init_browser2 = __esm({
|
|
|
153817
154210
|
|
|
153818
154211
|
// src/auth/paths.ts
|
|
153819
154212
|
import { homedir as homedir13 } from "os";
|
|
153820
|
-
import { join as
|
|
154213
|
+
import { join as join101 } from "path";
|
|
153821
154214
|
function configDir() {
|
|
153822
154215
|
const override = process.env["HEYGEN_CONFIG_DIR"];
|
|
153823
154216
|
if (override && override.length > 0) return override;
|
|
153824
|
-
return
|
|
154217
|
+
return join101(homedir13(), ".heygen");
|
|
153825
154218
|
}
|
|
153826
154219
|
function credentialPath() {
|
|
153827
|
-
return
|
|
154220
|
+
return join101(configDir(), CREDENTIAL_FILENAME);
|
|
153828
154221
|
}
|
|
153829
154222
|
var CREDENTIAL_FILENAME;
|
|
153830
154223
|
var init_paths2 = __esm({
|
|
@@ -154534,12 +154927,12 @@ var init_statusColor = __esm({
|
|
|
154534
154927
|
var render_exports3 = {};
|
|
154535
154928
|
__export(render_exports3, {
|
|
154536
154929
|
default: () => render_default2,
|
|
154537
|
-
examples: () =>
|
|
154930
|
+
examples: () => examples28,
|
|
154538
154931
|
resolveAspectRatioForSubmit: () => resolveAspectRatioForSubmit,
|
|
154539
154932
|
validateResolutionFormatCombo: () => validateResolutionFormatCombo
|
|
154540
154933
|
});
|
|
154541
154934
|
import { isAbsolute as isAbsolute13, resolve as resolvePath4 } from "path";
|
|
154542
|
-
import { existsSync as
|
|
154935
|
+
import { existsSync as existsSync90 } from "fs";
|
|
154543
154936
|
function parsePollIntervalMs(raw) {
|
|
154544
154937
|
const n = parseNumericFlag(raw, { flag: "--poll-interval", min: 1 });
|
|
154545
154938
|
return n === void 0 ? DEFAULT_POLL_INTERVAL_MS : Math.round(n * 1e3);
|
|
@@ -154581,7 +154974,7 @@ function resolveAspectRatioForSubmit(project, compositionArg, explicit, asJson)
|
|
|
154581
154974
|
const dir = project.dir ?? ".";
|
|
154582
154975
|
const entryRelative = compositionArg ?? "index.html";
|
|
154583
154976
|
const entryPath = resolvePath4(dir, entryRelative);
|
|
154584
|
-
if (!
|
|
154977
|
+
if (!existsSync90(entryPath)) {
|
|
154585
154978
|
errorBox(
|
|
154586
154979
|
"Composition not found",
|
|
154587
154980
|
`Entry file "${entryRelative}" does not exist in ${dir}.`,
|
|
@@ -154806,7 +155199,7 @@ async function streamVideo(url, destPath, asJson) {
|
|
|
154806
155199
|
process.exit(1);
|
|
154807
155200
|
}
|
|
154808
155201
|
}
|
|
154809
|
-
var VALID_QUALITY2, VALID_FORMAT2, VALID_RESOLUTION, VALID_ASPECT_RATIO, FORMAT_EXT2,
|
|
155202
|
+
var VALID_QUALITY2, VALID_FORMAT2, VALID_RESOLUTION, VALID_ASPECT_RATIO, FORMAT_EXT2, examples28, render_default2, IDEMPOTENCY_KEY_RE, ASPECT_FALLBACK_HINT;
|
|
154810
155203
|
var init_render4 = __esm({
|
|
154811
155204
|
"src/commands/cloud/render.ts"() {
|
|
154812
155205
|
"use strict";
|
|
@@ -154827,7 +155220,7 @@ var init_render4 = __esm({
|
|
|
154827
155220
|
VALID_RESOLUTION = ["1080p", "4k"];
|
|
154828
155221
|
VALID_ASPECT_RATIO = ["16:9", "9:16", "1:1"];
|
|
154829
155222
|
FORMAT_EXT2 = { mp4: ".mp4", webm: ".webm", mov: ".mov" };
|
|
154830
|
-
|
|
155223
|
+
examples28 = [
|
|
154831
155224
|
["Render the current directory in the cloud", "hyperframes cloud render"],
|
|
154832
155225
|
[
|
|
154833
155226
|
"Pick a specific composition + output path",
|
|
@@ -155352,15 +155745,15 @@ var init_delete = __esm({
|
|
|
155352
155745
|
var cloud_exports = {};
|
|
155353
155746
|
__export(cloud_exports, {
|
|
155354
155747
|
default: () => cloud_default,
|
|
155355
|
-
examples: () =>
|
|
155748
|
+
examples: () => examples29
|
|
155356
155749
|
});
|
|
155357
|
-
var
|
|
155750
|
+
var examples29, HELP3, cloud_default;
|
|
155358
155751
|
var init_cloud2 = __esm({
|
|
155359
155752
|
"src/commands/cloud.ts"() {
|
|
155360
155753
|
"use strict";
|
|
155361
155754
|
init_dist();
|
|
155362
155755
|
init_colors();
|
|
155363
|
-
|
|
155756
|
+
examples29 = [
|
|
155364
155757
|
["Render the current directory in the cloud", "hyperframes cloud render"],
|
|
155365
155758
|
["Render a specific project", "hyperframes cloud render ./my-video"],
|
|
155366
155759
|
[
|
|
@@ -155895,15 +156288,15 @@ var init_refresh = __esm({
|
|
|
155895
156288
|
var auth_exports = {};
|
|
155896
156289
|
__export(auth_exports, {
|
|
155897
156290
|
default: () => auth_default,
|
|
155898
|
-
examples: () =>
|
|
156291
|
+
examples: () => examples30
|
|
155899
156292
|
});
|
|
155900
|
-
var
|
|
156293
|
+
var examples30, HELP4, auth_default;
|
|
155901
156294
|
var init_auth3 = __esm({
|
|
155902
156295
|
"src/commands/auth.ts"() {
|
|
155903
156296
|
"use strict";
|
|
155904
156297
|
init_dist();
|
|
155905
156298
|
init_colors();
|
|
155906
|
-
|
|
156299
|
+
examples30 = [
|
|
155907
156300
|
["Sign in via browser (OAuth)", "hyperframes auth login"],
|
|
155908
156301
|
["Save an API key (interactive)", "hyperframes auth login --api-key"],
|
|
155909
156302
|
["Save an API key from stdin", "echo $HEYGEN_API_KEY | hyperframes auth login --api-key"],
|
|
@@ -156081,7 +156474,7 @@ __export(autoUpdate_exports, {
|
|
|
156081
156474
|
import { spawn as spawn17 } from "child_process";
|
|
156082
156475
|
import { appendFileSync as appendFileSync2, mkdirSync as mkdirSync49, openSync as openSync3 } from "fs";
|
|
156083
156476
|
import { homedir as homedir14 } from "os";
|
|
156084
|
-
import { join as
|
|
156477
|
+
import { join as join102 } from "path";
|
|
156085
156478
|
import { compareVersions as compareVersions3 } from "compare-versions";
|
|
156086
156479
|
function isAutoInstallDisabled() {
|
|
156087
156480
|
if (isDevMode()) return true;
|
|
@@ -156104,7 +156497,7 @@ function log(line) {
|
|
|
156104
156497
|
}
|
|
156105
156498
|
function launchDetachedInstall(installCommand, version2) {
|
|
156106
156499
|
mkdirSync49(CONFIG_DIR2, { recursive: true, mode: 448 });
|
|
156107
|
-
const configFile =
|
|
156500
|
+
const configFile = join102(CONFIG_DIR2, "config.json");
|
|
156108
156501
|
const nodeScript = `
|
|
156109
156502
|
const { exec } = require("node:child_process");
|
|
156110
156503
|
const { readFileSync, renameSync, writeFileSync } = require("node:fs");
|
|
@@ -156223,8 +156616,8 @@ var init_autoUpdate = __esm({
|
|
|
156223
156616
|
init_config();
|
|
156224
156617
|
init_env();
|
|
156225
156618
|
init_installerDetection();
|
|
156226
|
-
CONFIG_DIR2 =
|
|
156227
|
-
LOG_FILE =
|
|
156619
|
+
CONFIG_DIR2 = join102(homedir14(), ".hyperframes");
|
|
156620
|
+
LOG_FILE = join102(CONFIG_DIR2, "auto-update.log");
|
|
156228
156621
|
PENDING_TIMEOUT_MS = 10 * 60 * 1e3;
|
|
156229
156622
|
}
|
|
156230
156623
|
});
|
|
@@ -156236,8 +156629,8 @@ __export(help_exports, {
|
|
|
156236
156629
|
});
|
|
156237
156630
|
async function loadExamples(name, parentName) {
|
|
156238
156631
|
if (parentName && parentName !== "hyperframes") {
|
|
156239
|
-
const
|
|
156240
|
-
if (
|
|
156632
|
+
const examples31 = await tryLoadExamples(`./commands/${parentName}/${name}.js`);
|
|
156633
|
+
if (examples31) return examples31;
|
|
156241
156634
|
}
|
|
156242
156635
|
return await tryLoadExamples(`./commands/${name}.js`);
|
|
156243
156636
|
}
|
|
@@ -156275,10 +156668,10 @@ function renderRootHelp() {
|
|
|
156275
156668
|
lines.push(`Run ${c2.cyan("hyperframes <command> --help")} for more information about a command.`);
|
|
156276
156669
|
return lines.join("\n");
|
|
156277
156670
|
}
|
|
156278
|
-
function formatExamples(
|
|
156671
|
+
function formatExamples(examples31) {
|
|
156279
156672
|
const lines = [];
|
|
156280
156673
|
lines.push(c2.bold("Examples:"));
|
|
156281
|
-
for (const [comment, command2] of
|
|
156674
|
+
for (const [comment, command2] of examples31) {
|
|
156282
156675
|
lines.push(` ${c2.gray(`# ${comment}`)}`);
|
|
156283
156676
|
lines.push(` ${command2}`);
|
|
156284
156677
|
lines.push("");
|
|
@@ -156297,9 +156690,9 @@ async function showUsage2(cmd, parent) {
|
|
|
156297
156690
|
if (name) {
|
|
156298
156691
|
const parentMeta = await (typeof parent.meta === "function" ? parent.meta() : parent.meta);
|
|
156299
156692
|
const parentName = parentMeta?.name;
|
|
156300
|
-
const
|
|
156301
|
-
if (
|
|
156302
|
-
console.log(formatExamples(
|
|
156693
|
+
const examples31 = STATIC_EXAMPLES[name] ?? await loadExamples(name, parentName);
|
|
156694
|
+
if (examples31) {
|
|
156695
|
+
console.log(formatExamples(examples31) + "\n");
|
|
156303
156696
|
}
|
|
156304
156697
|
}
|
|
156305
156698
|
}
|
|
@@ -156398,9 +156791,9 @@ var init_help = __esm({
|
|
|
156398
156791
|
// src/cli.ts
|
|
156399
156792
|
init_version();
|
|
156400
156793
|
init_dist();
|
|
156401
|
-
import { dirname as dirname42, join as
|
|
156794
|
+
import { dirname as dirname42, join as join103 } from "path";
|
|
156402
156795
|
import { fileURLToPath as fileURLToPath13 } from "url";
|
|
156403
|
-
import { existsSync as
|
|
156796
|
+
import { existsSync as existsSync91 } from "fs";
|
|
156404
156797
|
var commandFailed = false;
|
|
156405
156798
|
for (const stream of [process.stdout, process.stderr]) {
|
|
156406
156799
|
stream.on("error", (err) => {
|
|
@@ -156412,8 +156805,8 @@ for (const stream of [process.stdout, process.stderr]) {
|
|
|
156412
156805
|
}
|
|
156413
156806
|
(() => {
|
|
156414
156807
|
const here = dirname42(fileURLToPath13(import.meta.url));
|
|
156415
|
-
const shader =
|
|
156416
|
-
if (!process.env.HF_SHADER_WORKER_ENTRY &&
|
|
156808
|
+
const shader = join103(here, "shaderTransitionWorker.js");
|
|
156809
|
+
if (!process.env.HF_SHADER_WORKER_ENTRY && existsSync91(shader)) {
|
|
156417
156810
|
process.env.HF_SHADER_WORKER_ENTRY = shader;
|
|
156418
156811
|
}
|
|
156419
156812
|
})();
|
|
@@ -156425,10 +156818,10 @@ if (rootVersionRequested) {
|
|
|
156425
156818
|
process.exit(0);
|
|
156426
156819
|
}
|
|
156427
156820
|
try {
|
|
156428
|
-
const { readFileSync:
|
|
156821
|
+
const { readFileSync: readFileSync70 } = await import("fs");
|
|
156429
156822
|
const { resolve: resolve56 } = await import("path");
|
|
156430
156823
|
const envPath = resolve56(process.cwd(), ".env");
|
|
156431
|
-
const envContent =
|
|
156824
|
+
const envContent = readFileSync70(envPath, "utf-8");
|
|
156432
156825
|
for (const rawLine of envContent.split("\n")) {
|
|
156433
156826
|
let line = rawLine.trim();
|
|
156434
156827
|
if (!line || line.startsWith("#")) continue;
|