diff --git a/bin/cli.js b/bin/cli.js index 761e8cd..e499d67 100755 --- a/bin/cli.js +++ b/bin/cli.js @@ -1,85 +1,85 @@ #!/usr/bin/env node -import{createRequire as dF}from"node:module";var mF=Object.create;var{getPrototypeOf:cF,defineProperty:Ju,getOwnPropertyNames:lF}=Object;var pF=Object.prototype.hasOwnProperty;var XD=(D,u,F)=>{F=D!=null?mF(cF(D)):{};let E=u||!D||!D.__esModule?Ju(F,"default",{value:D,enumerable:!0}):F;for(let C of lF(D))if(!pF.call(E,C))Ju(E,C,{get:()=>D[C],enumerable:!0});return E};var H=(D,u)=>()=>(u||D((u={exports:{}}).exports,u),u.exports);var n=dF(import.meta.url);var ju=H((D2,Ru)=>{class Lu{constructor(D,u,F){this.etaBufferLength=D||100,this.valueBuffer=[F],this.timeBuffer=[u],this.eta="0"}update(D,u,F){this.valueBuffer.push(u),this.timeBuffer.push(D),this.calculate(F-u)}getTime(){return this.eta}calculate(D){let u=this.valueBuffer.length,F=Math.min(this.etaBufferLength,u),E=this.valueBuffer[u-1]-this.valueBuffer[u-F],C=this.timeBuffer[u-1]-this.timeBuffer[u-F],A=E/C;this.valueBuffer=this.valueBuffer.slice(-this.etaBufferLength),this.timeBuffer=this.timeBuffer.slice(-this.etaBufferLength);let B=Math.ceil(D/A/1000);if(isNaN(B))this.eta="NULL";else if(!isFinite(B))this.eta="INF";else if(B>1e7)this.eta="INF";else if(B<0)this.eta=0;else this.eta=B}}Ru.exports=Lu});var PD=H((u2,wu)=>{var p=n("readline");class Tu{constructor(D){this.stream=D,this.linewrap=!0,this.dy=0}cursorSave(){if(!this.stream.isTTY)return;this.stream.write("\x1B7")}cursorRestore(){if(!this.stream.isTTY)return;this.stream.write("\x1B8")}cursor(D){if(!this.stream.isTTY)return;if(D)this.stream.write("\x1B[?25h");else this.stream.write("\x1B[?25l")}cursorTo(D=null,u=null){if(!this.stream.isTTY)return;p.cursorTo(this.stream,D,u)}cursorRelative(D=null,u=null){if(!this.stream.isTTY)return;this.dy=this.dy+u,p.moveCursor(this.stream,D,u)}cursorRelativeReset(){if(!this.stream.isTTY)return;p.moveCursor(this.stream,0,-this.dy),p.cursorTo(this.stream,0,null),this.dy=0}clearRight(){if(!this.stream.isTTY)return;p.clearLine(this.stream,1)}clearLine(){if(!this.stream.isTTY)return;p.clearLine(this.stream,0)}clearBottom(){if(!this.stream.isTTY)return;p.clearScreenDown(this.stream)}newline(){this.stream.write(` -`),this.dy++}write(D,u=!1){if(this.linewrap===!0&&u===!1)this.stream.write(D.substr(0,this.getWidth()));else this.stream.write(D)}lineWrapping(D){if(!this.stream.isTTY)return;if(this.linewrap=D,D)this.stream.write("\x1B[?7h");else this.stream.write("\x1B[?7l")}isTTY(){return this.stream.isTTY===!0}getWidth(){return this.stream.columns||(this.stream.isTTY?80:200)}}wu.exports=Tu});var Su=H((F2,yu)=>{yu.exports=({onlyFirst:D=!1}={})=>{let u=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(u,D?void 0:"g")}});var vu=H((E2,bu)=>{var U8=Su();bu.exports=(D)=>typeof D==="string"?D.replace(U8(),""):D});var hu=H((C2,hD)=>{var Pu=(D)=>{if(Number.isNaN(D))return!1;if(D>=4352&&(D<=4447||D===9001||D===9002||11904<=D&&D<=12871&&D!==12351||12880<=D&&D<=19903||19968<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65131||65281<=D&&D<=65376||65504<=D&&D<=65510||110592<=D&&D<=110593||127488<=D&&D<=127569||131072<=D&&D<=262141))return!0;return!1};hD.exports=Pu;hD.exports.default=Pu});var gu=H((B2,fu)=>{fu.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var cu=H((A2,fD)=>{var W8=vu(),N8=hu(),k8=gu(),mu=(D)=>{if(typeof D!=="string"||D.length===0)return 0;if(D=W8(D),D.length===0)return 0;D=D.replace(k8()," ");let u=0;for(let F=0;F=127&&E<=159)continue;if(E>=768&&E<=879)continue;if(E>65535)F++;u+=N8(E)?2:1}return u};fD.exports=mu;fD.exports.default=mu});var gD=H((Z2,lu)=>{lu.exports=function(u,F,E){if(F.autopadding!==!0)return u;function C(A,B){return(F.autopaddingChar+A).slice(-B)}switch(E){case"percentage":return C(u,3);default:return u}}});var mD=H(($2,pu)=>{pu.exports=function(u,F){let E=Math.round(u*F.barsize),C=F.barsize-E;return F.barCompleteString.substr(0,E)+F.barGlue+F.barIncompleteString.substr(0,C)}});var cD=H((J2,du)=>{du.exports=function(u,F,E){function C(B){if(E)return E*Math.round(B/E);else return B}function A(B){return(F.autopaddingChar+B).slice(-2)}if(u>3600)return A(Math.floor(u/3600))+"h"+A(C(u%3600/60))+"m";else if(u>60)return A(Math.floor(u/60))+"m"+A(C(u%60))+"s";else if(u>10)return A(C(u))+"s";else return A(u)+"s"}});var lD=H((K2,nu)=>{var Q8=cu(),_8=gD(),z8=mD(),q8=cD();nu.exports=function(u,F,E){let C=u.format,A=u.formatTime||q8,B=u.formatValue||_8,$=u.formatBar||z8,K=Math.floor(F.progress*100)+"",X=F.stopTime||Date.now(),U=Math.round((X-F.startTime)/1000),Y=Object.assign({},E,{bar:$(F.progress,u),percentage:B(K,u,"percentage"),total:B(F.total,u,"total"),value:B(F.value,u,"value"),eta:B(F.eta,u,"eta"),eta_formatted:A(F.eta,u,5),duration:B(U,u,"duration"),duration_formatted:A(U,u,1)});C=C.replace(/\{(\w+)\}/g,function(J,Q){if(typeof Y[Q]<"u")return Y[Q];return J});let Z=Math.max(0,F.maxWidth-Q8(C)-2),W=Math.floor(Z/2);switch(u.align){case"right":C=Z>0?" ".repeat(Z)+C:C;break;case"center":C=W>0?" ".repeat(W)+C:C;break;case"left":default:break}return C}});var QD=H((X2,su)=>{function q(D,u){if(typeof D>"u"||D===null)return u;else return D}su.exports={parse:function(u,F){let E={},C=Object.assign({},F,u);return E.throttleTime=1000/q(C.fps,10),E.stream=q(C.stream,process.stderr),E.terminal=q(C.terminal,null),E.clearOnComplete=q(C.clearOnComplete,!1),E.stopOnComplete=q(C.stopOnComplete,!1),E.barsize=q(C.barsize,40),E.align=q(C.align,"left"),E.hideCursor=q(C.hideCursor,!1),E.linewrap=q(C.linewrap,!1),E.barGlue=q(C.barGlue,""),E.barCompleteChar=q(C.barCompleteChar,"="),E.barIncompleteChar=q(C.barIncompleteChar,"-"),E.format=q(C.format,"progress [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}"),E.formatTime=q(C.formatTime,null),E.formatValue=q(C.formatValue,null),E.formatBar=q(C.formatBar,null),E.etaBufferLength=q(C.etaBuffer,10),E.etaAsynchronousUpdate=q(C.etaAsynchronousUpdate,!1),E.progressCalculationRelative=q(C.progressCalculationRelative,!1),E.synchronousUpdate=q(C.synchronousUpdate,!0),E.noTTYOutput=q(C.noTTYOutput,!1),E.notTTYSchedule=q(C.notTTYSchedule,2000),E.emptyOnZero=q(C.emptyOnZero,!1),E.forceRedraw=q(C.forceRedraw,!1),E.autopadding=q(C.autopadding,!1),E.gracefulExit=q(C.gracefulExit,!1),E},assignDerivedOptions:function(u){return u.barCompleteString=u.barCompleteChar.repeat(u.barsize+1),u.barIncompleteString=u.barIncompleteChar.repeat(u.barsize+1),u.autopaddingChar=u.autopadding?q(u.autopaddingChar," "):"",u}}});var pD=H((Y2,iu)=>{var au=ju(),I8=PD(),H8=lD(),V8=QD(),x8=n("events");iu.exports=class extends x8{constructor(u){super();this.options=V8.assignDerivedOptions(u),this.terminal=this.options.terminal?this.options.terminal:new I8(this.options.stream),this.value=0,this.startValue=0,this.total=100,this.lastDrawnString=null,this.startTime=null,this.stopTime=null,this.lastRedraw=Date.now(),this.eta=new au(this.options.etaBufferLength,0,0),this.payload={},this.isActive=!1,this.formatter=typeof this.options.format==="function"?this.options.format:H8}render(u=!1){let F={progress:this.getProgress(),eta:this.eta.getTime(),startTime:this.startTime,stopTime:this.stopTime,total:this.total,value:this.value,maxWidth:this.terminal.getWidth()};if(this.options.etaAsynchronousUpdate)this.updateETA();let E=this.formatter(this.options,F,this.payload);if(u||this.options.forceRedraw||this.options.noTTYOutput&&!this.terminal.isTTY()||this.lastDrawnString!=E)this.emit("redraw-pre"),this.terminal.cursorTo(0,null),this.terminal.write(E),this.terminal.clearRight(),this.lastDrawnString=E,this.lastRedraw=Date.now(),this.emit("redraw-post")}start(u,F,E){this.value=F||0,this.total=typeof u<"u"&&u>=0?u:100,this.startValue=F||0,this.payload=E||{},this.startTime=Date.now(),this.stopTime=null,this.lastDrawnString="",this.eta=new au(this.options.etaBufferLength,this.startTime,this.value),this.isActive=!0,this.emit("start",u,F)}stop(){this.isActive=!1,this.stopTime=Date.now(),this.emit("stop",this.total,this.value)}update(u,F={}){if(typeof u==="number")this.value=u,this.eta.update(Date.now(),u,this.total);let E=(typeof u==="object"?u:F)||{};this.emit("update",this.total,this.value);for(let C in E)this.payload[C]=E[C];if(this.value>=this.getTotal()&&this.options.stopOnComplete)this.stop()}getProgress(){let u=this.value/this.total;if(this.options.progressCalculationRelative)u=(this.value-this.startValue)/(this.total-this.startValue);if(isNaN(u))u=this.options&&this.options.emptyOnZero?0:1;return u=Math.min(Math.max(u,0),1),u}increment(u=1,F={}){if(typeof u==="object")this.update(this.value+1,u);else this.update(this.value+u,F)}getTotal(){return this.total}setTotal(u){if(typeof u<"u"&&u>=0)this.total=u}updateETA(){this.eta.update(Date.now(),this.value,this.total)}}});var ou=H((G2,ru)=>{var M8=pD(),O8=QD();ru.exports=class extends M8{constructor(u,F){super(O8.parse(u,F));if(this.timer=null,this.options.noTTYOutput&&this.terminal.isTTY()===!1)this.options.synchronousUpdate=!1;this.schedulingRate=this.terminal.isTTY()?this.options.throttleTime:this.options.notTTYSchedule,this.sigintCallback=null}render(){if(this.timer)clearTimeout(this.timer),this.timer=null;if(super.render(),this.options.noTTYOutput&&this.terminal.isTTY()===!1)this.terminal.newline();this.timer=setTimeout(this.render.bind(this),this.schedulingRate)}update(u,F){if(!this.timer)return;if(super.update(u,F),this.options.synchronousUpdate&&this.lastRedraw+this.options.throttleTime*2{var L8=PD(),R8=pD(),j8=QD(),T8=n("events");tu.exports=class extends T8{constructor(u,F){super();this.bars=[],this.options=j8.parse(u,F),this.options.synchronousUpdate=!1,this.terminal=this.options.terminal?this.options.terminal:new L8(this.options.stream),this.timer=null,this.isActive=!1,this.schedulingRate=this.terminal.isTTY()?this.options.throttleTime:this.options.notTTYSchedule,this.loggingBuffer=[],this.sigintCallback=null}create(u,F,E,C={}){let A=new R8(Object.assign({},this.options,{terminal:this.terminal},C));if(this.bars.push(A),this.options.noTTYOutput===!1&&this.terminal.isTTY()===!1)return A;if(this.sigintCallback===null&&this.options.gracefulExit)this.sigintCallback=this.stop.bind(this),process.once("SIGINT",this.sigintCallback),process.once("SIGTERM",this.sigintCallback);if(!this.isActive){if(this.options.hideCursor===!0)this.terminal.cursor(!1);if(this.options.linewrap===!1)this.terminal.lineWrapping(!1);this.timer=setTimeout(this.update.bind(this),this.schedulingRate)}return this.isActive=!0,A.start(u,F,E),this.emit("start"),A}remove(u){let F=this.bars.indexOf(u);if(F<0)return!1;return this.bars.splice(F,1),this.update(),this.terminal.newline(),this.terminal.clearBottom(),!0}update(){if(this.timer)clearTimeout(this.timer),this.timer=null;if(this.emit("update-pre"),this.terminal.cursorRelativeReset(),this.emit("redraw-pre"),this.loggingBuffer.length>0){this.terminal.clearLine();while(this.loggingBuffer.length>0)this.terminal.write(this.loggingBuffer.shift(),!0)}for(let u=0;u0)this.terminal.newline();this.bars[u].render()}if(this.emit("redraw-post"),this.options.noTTYOutput&&this.terminal.isTTY()===!1)this.terminal.newline(),this.terminal.newline();if(this.timer=setTimeout(this.update.bind(this),this.schedulingRate),this.emit("update-post"),this.options.stopOnComplete&&!this.bars.find((u)=>u.isActive))this.stop()}stop(){if(clearTimeout(this.timer),this.timer=null,this.sigintCallback)process.removeListener("SIGINT",this.sigintCallback),process.removeListener("SIGTERM",this.sigintCallback),this.sigintCallback=null;if(this.isActive=!1,this.options.hideCursor===!0)this.terminal.cursor(!0);if(this.options.linewrap===!1)this.terminal.lineWrapping(!0);if(this.terminal.cursorRelativeReset(),this.emit("stop-pre-clear"),this.options.clearOnComplete)this.terminal.clearBottom();else{for(let u=0;u0)this.terminal.newline();this.bars[u].render(),this.bars[u].stop()}this.terminal.newline()}this.emit("stop")}log(u){this.loggingBuffer.push(u)}}});var uF=H((W2,DF)=>{DF.exports={format:"progress [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}",barCompleteChar:"=",barIncompleteChar:"-"}});var EF=H((N2,FF)=>{FF.exports={format:" {bar} {percentage}% | ETA: {eta}s | {value}/{total}",barCompleteChar:"█",barIncompleteChar:"░"}});var BF=H((k2,CF)=>{CF.exports={format:" \x1B[90m{bar}\x1B[0m {percentage}% | ETA: {eta}s | {value}/{total}",barCompleteChar:"█",barIncompleteChar:"░"}});var ZF=H((Q2,AF)=>{AF.exports={format:" {bar}■ {percentage}% | ETA: {eta}s | {value}/{total}",barCompleteChar:"■",barIncompleteChar:" "}});var JF=H((_2,$F)=>{var w8=uF(),y8=EF(),S8=BF(),b8=ZF();$F.exports={legacy:w8,shades_classic:y8,shades_grey:S8,rect:b8}});var YF=H((z2,XF)=>{var KF=ou(),v8=eu(),P8=JF(),h8=lD(),f8=gD(),g8=mD(),m8=cD();XF.exports={Bar:KF,SingleBar:KF,MultiBar:v8,Presets:P8,Format:{Formatter:h8,BarFormat:g8,ValueFormat:f8,TimeFormat:m8}}});import{join as kD,basename as xu,extname as Mu}from"node:path";import{randomUUID as K8}from"node:crypto";import{rm as Ou}from"node:fs/promises";import{spawn as f}from"node:child_process";import{appendFile as nF}from"node:fs/promises";var LD=null;function RD(D){LD=D}async function h(D){if(LD)try{await nF(LD,D,"utf-8")}catch(u){}}async function s(){return new Promise((D)=>{let u=f("ffmpeg",["-version"]);u.on("error",()=>D(!1)),u.on("close",(F)=>D(F===0))})}async function a(){return new Promise((D)=>{let u=f("MP4Box",["-version"]);u.on("error",()=>D(!1)),u.on("close",(F)=>D(F===0))})}async function i(){let D=await new Promise((C)=>{let A=f("ffmpeg",["-hide_banner","-encoders"]),B="";A.stdout.on("data",($)=>{B+=$.toString()}),A.on("error",()=>C("")),A.on("close",()=>C(B))}),u=(C)=>D.includes(C),F=[],E=[{acc:"nvenc",h264:u("h264_nvenc")?"h264_nvenc":void 0,av1:u("av1_nvenc")?"av1_nvenc":void 0},{acc:"qsv",h264:u("h264_qsv")?"h264_qsv":void 0,av1:u("av1_qsv")?"av1_qsv":void 0},{acc:"amf",h264:u("h264_amf")?"h264_amf":void 0,av1:u("av1_amf")?"av1_amf":void 0},{acc:"vaapi",h264:u("h264_vaapi")?"h264_vaapi":void 0,av1:u("av1_vaapi")?"av1_vaapi":void 0},{acc:"videotoolbox",h264:u("h264_videotoolbox")?"h264_videotoolbox":void 0,av1:u("av1_videotoolbox")?"av1_videotoolbox":void 0},{acc:"v4l2",h264:u("h264_v4l2m2m")?"h264_v4l2m2m":void 0,av1:u("av1_v4l2m2m")?"av1_v4l2m2m":void 0}];for(let C of E)if(C.h264||C.av1)F.push({accelerator:C.acc,h264Encoder:C.h264,av1Encoder:C.av1});return F}async function r(){let u=(await new Promise((C)=>{let A=f("ffmpeg",["-hide_banner","-hwaccels"]),B="";A.stdout.on("data",($)=>B+=$.toString()),A.on("error",()=>C("")),A.on("close",()=>C(B))})).split(` -`).map((C)=>C.trim()).filter(Boolean),F=[],E={cuda:"nvenc",qsv:"qsv",vaapi:"vaapi",videotoolbox:"videotoolbox",v4l2m2m:"v4l2",dxva2:"amf"};for(let C of u){let A=E[C];if(A)F.push({accelerator:A})}return F}async function YD(D){let u=["-v","error","-f","lavfi","-i","testsrc=size=320x240:rate=1","-frames:v","1","-an","-c:v",D,"-f","null","-"];return new Promise((F)=>{let E=f("ffmpeg",u);E.on("error",()=>F(!1)),E.on("close",(C)=>F(C===0))})}async function GD(D,u){let F=["-v","error"];if(D==="nvenc")F.push("-hwaccel","cuda","-hwaccel_output_format","cuda");else if(D==="qsv")F.push("-hwaccel","qsv");else if(D==="vaapi")F.push("-hwaccel","vaapi","-vaapi_device","/dev/dri/renderD128");else if(D==="videotoolbox")F.push("-hwaccel","videotoolbox");else if(D==="v4l2")F.push("-hwaccel","v4l2m2m");else if(D==="amf")return!1;return F.push("-i",u,"-frames:v","1","-f","null","-"),new Promise((E)=>{let C=f("ffmpeg",F);C.on("error",()=>E(!1)),C.on("close",(A)=>E(A===0))})}async function c(D,u,F){let C=` +import{createRequire as rF}from"node:module";var nF=Object.create;var{getPrototypeOf:sF,defineProperty:Gu,getOwnPropertyNames:aF}=Object;var iF=Object.prototype.hasOwnProperty;var YD=(D,u,C)=>{C=D!=null?nF(sF(D)):{};let F=u||!D||!D.__esModule?Gu(C,"default",{value:D,enumerable:!0}):C;for(let E of aF(D))if(!iF.call(F,E))Gu(F,E,{get:()=>D[E],enumerable:!0});return F};var H=(D,u)=>()=>(u||D((u={exports:{}}).exports,u),u.exports);var i=rF(import.meta.url);var Su=H((B2,yu)=>{class wu{constructor(D,u,C){this.etaBufferLength=D||100,this.valueBuffer=[C],this.timeBuffer=[u],this.eta="0"}update(D,u,C){this.valueBuffer.push(u),this.timeBuffer.push(D),this.calculate(C-u)}getTime(){return this.eta}calculate(D){let u=this.valueBuffer.length,C=Math.min(this.etaBufferLength,u),F=this.valueBuffer[u-1]-this.valueBuffer[u-C],E=this.timeBuffer[u-1]-this.timeBuffer[u-C],A=F/E;this.valueBuffer=this.valueBuffer.slice(-this.etaBufferLength),this.timeBuffer=this.timeBuffer.slice(-this.etaBufferLength);let B=Math.ceil(D/A/1000);if(isNaN(B))this.eta="NULL";else if(!isFinite(B))this.eta="INF";else if(B>1e7)this.eta="INF";else if(B<0)this.eta=0;else this.eta=B}}yu.exports=wu});var fD=H((A2,vu)=>{var n=i("readline");class bu{constructor(D){this.stream=D,this.linewrap=!0,this.dy=0}cursorSave(){if(!this.stream.isTTY)return;this.stream.write("\x1B7")}cursorRestore(){if(!this.stream.isTTY)return;this.stream.write("\x1B8")}cursor(D){if(!this.stream.isTTY)return;if(D)this.stream.write("\x1B[?25h");else this.stream.write("\x1B[?25l")}cursorTo(D=null,u=null){if(!this.stream.isTTY)return;n.cursorTo(this.stream,D,u)}cursorRelative(D=null,u=null){if(!this.stream.isTTY)return;this.dy=this.dy+u,n.moveCursor(this.stream,D,u)}cursorRelativeReset(){if(!this.stream.isTTY)return;n.moveCursor(this.stream,0,-this.dy),n.cursorTo(this.stream,0,null),this.dy=0}clearRight(){if(!this.stream.isTTY)return;n.clearLine(this.stream,1)}clearLine(){if(!this.stream.isTTY)return;n.clearLine(this.stream,0)}clearBottom(){if(!this.stream.isTTY)return;n.clearScreenDown(this.stream)}newline(){this.stream.write(` +`),this.dy++}write(D,u=!1){if(this.linewrap===!0&&u===!1)this.stream.write(D.substr(0,this.getWidth()));else this.stream.write(D)}lineWrapping(D){if(!this.stream.isTTY)return;if(this.linewrap=D,D)this.stream.write("\x1B[?7h");else this.stream.write("\x1B[?7l")}isTTY(){return this.stream.isTTY===!0}getWidth(){return this.stream.columns||(this.stream.isTTY?80:200)}}vu.exports=bu});var hu=H((Z2,Pu)=>{Pu.exports=({onlyFirst:D=!1}={})=>{let u=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");return new RegExp(u,D?void 0:"g")}});var gu=H(($2,fu)=>{var _8=hu();fu.exports=(D)=>typeof D==="string"?D.replace(_8(),""):D});var cu=H((J2,gD)=>{var mu=(D)=>{if(Number.isNaN(D))return!1;if(D>=4352&&(D<=4447||D===9001||D===9002||11904<=D&&D<=12871&&D!==12351||12880<=D&&D<=19903||19968<=D&&D<=42182||43360<=D&&D<=43388||44032<=D&&D<=55203||63744<=D&&D<=64255||65040<=D&&D<=65049||65072<=D&&D<=65131||65281<=D&&D<=65376||65504<=D&&D<=65510||110592<=D&&D<=110593||127488<=D&&D<=127569||131072<=D&&D<=262141))return!0;return!1};gD.exports=mu;gD.exports.default=mu});var lu=H((K2,pu)=>{pu.exports=function(){return/\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F|\uD83D\uDC68(?:\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|[\u2695\u2696\u2708]\uFE0F|\uD83D[\uDC66\uDC67]|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708])\uFE0F|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C[\uDFFB-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)\uD83C\uDFFB|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB\uDFFC])|\uD83D\uDC69(?:\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69)(?:\uD83C[\uDFFB-\uDFFD])|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)\uFE0F|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:(?:\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\uD83C\uDFF4\u200D\u2620)\uFE0F|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF4\uD83C\uDDF2|\uD83C\uDDF6\uD83C\uDDE6|[#\*0-9]\uFE0F\u20E3|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83D\uDC69(?:\uD83C[\uDFFB-\uDFFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270A-\u270D]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC70\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDCAA\uDD74\uDD7A\uDD90\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD36\uDDB5\uDDB6\uDDBB\uDDD2-\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5\uDEEB\uDEEC\uDEF4-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFA\uDFE0-\uDFEB]|\uD83E[\uDD0D-\uDD3A\uDD3C-\uDD45\uDD47-\uDD71\uDD73-\uDD76\uDD7A-\uDDA2\uDDA5-\uDDAA\uDDAE-\uDDCA\uDDCD-\uDDFF\uDE70-\uDE73\uDE78-\uDE7A\uDE80-\uDE82\uDE90-\uDE95])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g}});var nu=H((X2,mD)=>{var z8=gu(),q8=cu(),I8=lu(),du=(D)=>{if(typeof D!=="string"||D.length===0)return 0;if(D=z8(D),D.length===0)return 0;D=D.replace(I8()," ");let u=0;for(let C=0;C=127&&F<=159)continue;if(F>=768&&F<=879)continue;if(F>65535)C++;u+=q8(F)?2:1}return u};mD.exports=du;mD.exports.default=du});var cD=H((Y2,su)=>{su.exports=function(u,C,F){if(C.autopadding!==!0)return u;function E(A,B){return(C.autopaddingChar+A).slice(-B)}switch(F){case"percentage":return E(u,3);default:return u}}});var pD=H((G2,au)=>{au.exports=function(u,C){let F=Math.round(u*C.barsize),E=C.barsize-F;return C.barCompleteString.substr(0,F)+C.barGlue+C.barIncompleteString.substr(0,E)}});var lD=H((U2,iu)=>{iu.exports=function(u,C,F){function E(B){if(F)return F*Math.round(B/F);else return B}function A(B){return(C.autopaddingChar+B).slice(-2)}if(u>3600)return A(Math.floor(u/3600))+"h"+A(E(u%3600/60))+"m";else if(u>60)return A(Math.floor(u/60))+"m"+A(E(u%60))+"s";else if(u>10)return A(E(u))+"s";else return A(u)+"s"}});var dD=H((W2,ru)=>{var V8=nu(),H8=cD(),x8=pD(),M8=lD();ru.exports=function(u,C,F){let E=u.format,A=u.formatTime||M8,B=u.formatValue||H8,$=u.formatBar||x8,K=Math.floor(C.progress*100)+"",X=C.stopTime||Date.now(),G=Math.round((X-C.startTime)/1000),Y=Object.assign({},F,{bar:$(C.progress,u),percentage:B(K,u,"percentage"),total:B(C.total,u,"total"),value:B(C.value,u,"value"),eta:B(C.eta,u,"eta"),eta_formatted:A(C.eta,u,5),duration:B(G,u,"duration"),duration_formatted:A(G,u,1)});E=E.replace(/\{(\w+)\}/g,function(_,J){if(typeof Y[J]<"u")return Y[J];return _});let Z=Math.max(0,C.maxWidth-V8(E)-2),k=Math.floor(Z/2);switch(u.align){case"right":E=Z>0?" ".repeat(Z)+E:E;break;case"center":E=k>0?" ".repeat(k)+E:E;break;case"left":default:break}return E}});var _D=H((N2,ou)=>{function I(D,u){if(typeof D>"u"||D===null)return u;else return D}ou.exports={parse:function(u,C){let F={},E=Object.assign({},C,u);return F.throttleTime=1000/I(E.fps,10),F.stream=I(E.stream,process.stderr),F.terminal=I(E.terminal,null),F.clearOnComplete=I(E.clearOnComplete,!1),F.stopOnComplete=I(E.stopOnComplete,!1),F.barsize=I(E.barsize,40),F.align=I(E.align,"left"),F.hideCursor=I(E.hideCursor,!1),F.linewrap=I(E.linewrap,!1),F.barGlue=I(E.barGlue,""),F.barCompleteChar=I(E.barCompleteChar,"="),F.barIncompleteChar=I(E.barIncompleteChar,"-"),F.format=I(E.format,"progress [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}"),F.formatTime=I(E.formatTime,null),F.formatValue=I(E.formatValue,null),F.formatBar=I(E.formatBar,null),F.etaBufferLength=I(E.etaBuffer,10),F.etaAsynchronousUpdate=I(E.etaAsynchronousUpdate,!1),F.progressCalculationRelative=I(E.progressCalculationRelative,!1),F.synchronousUpdate=I(E.synchronousUpdate,!0),F.noTTYOutput=I(E.noTTYOutput,!1),F.notTTYSchedule=I(E.notTTYSchedule,2000),F.emptyOnZero=I(E.emptyOnZero,!1),F.forceRedraw=I(E.forceRedraw,!1),F.autopadding=I(E.autopadding,!1),F.gracefulExit=I(E.gracefulExit,!1),F},assignDerivedOptions:function(u){return u.barCompleteString=u.barCompleteChar.repeat(u.barsize+1),u.barIncompleteString=u.barIncompleteChar.repeat(u.barsize+1),u.autopaddingChar=u.autopadding?I(u.autopaddingChar," "):"",u}}});var nD=H((k2,eu)=>{var tu=Su(),O8=fD(),L8=dD(),R8=_D(),j8=i("events");eu.exports=class extends j8{constructor(u){super();this.options=R8.assignDerivedOptions(u),this.terminal=this.options.terminal?this.options.terminal:new O8(this.options.stream),this.value=0,this.startValue=0,this.total=100,this.lastDrawnString=null,this.startTime=null,this.stopTime=null,this.lastRedraw=Date.now(),this.eta=new tu(this.options.etaBufferLength,0,0),this.payload={},this.isActive=!1,this.formatter=typeof this.options.format==="function"?this.options.format:L8}render(u=!1){let C={progress:this.getProgress(),eta:this.eta.getTime(),startTime:this.startTime,stopTime:this.stopTime,total:this.total,value:this.value,maxWidth:this.terminal.getWidth()};if(this.options.etaAsynchronousUpdate)this.updateETA();let F=this.formatter(this.options,C,this.payload);if(u||this.options.forceRedraw||this.options.noTTYOutput&&!this.terminal.isTTY()||this.lastDrawnString!=F)this.emit("redraw-pre"),this.terminal.cursorTo(0,null),this.terminal.write(F),this.terminal.clearRight(),this.lastDrawnString=F,this.lastRedraw=Date.now(),this.emit("redraw-post")}start(u,C,F){this.value=C||0,this.total=typeof u<"u"&&u>=0?u:100,this.startValue=C||0,this.payload=F||{},this.startTime=Date.now(),this.stopTime=null,this.lastDrawnString="",this.eta=new tu(this.options.etaBufferLength,this.startTime,this.value),this.isActive=!0,this.emit("start",u,C)}stop(){this.isActive=!1,this.stopTime=Date.now(),this.emit("stop",this.total,this.value)}update(u,C={}){if(typeof u==="number")this.value=u,this.eta.update(Date.now(),u,this.total);let F=(typeof u==="object"?u:C)||{};this.emit("update",this.total,this.value);for(let E in F)this.payload[E]=F[E];if(this.value>=this.getTotal()&&this.options.stopOnComplete)this.stop()}getProgress(){let u=this.value/this.total;if(this.options.progressCalculationRelative)u=(this.value-this.startValue)/(this.total-this.startValue);if(isNaN(u))u=this.options&&this.options.emptyOnZero?0:1;return u=Math.min(Math.max(u,0),1),u}increment(u=1,C={}){if(typeof u==="object")this.update(this.value+1,u);else this.update(this.value+u,C)}getTotal(){return this.total}setTotal(u){if(typeof u<"u"&&u>=0)this.total=u}updateETA(){this.eta.update(Date.now(),this.value,this.total)}}});var uF=H((Q2,DF)=>{var T8=nD(),w8=_D();DF.exports=class extends T8{constructor(u,C){super(w8.parse(u,C));if(this.timer=null,this.options.noTTYOutput&&this.terminal.isTTY()===!1)this.options.synchronousUpdate=!1;this.schedulingRate=this.terminal.isTTY()?this.options.throttleTime:this.options.notTTYSchedule,this.sigintCallback=null}render(){if(this.timer)clearTimeout(this.timer),this.timer=null;if(super.render(),this.options.noTTYOutput&&this.terminal.isTTY()===!1)this.terminal.newline();this.timer=setTimeout(this.render.bind(this),this.schedulingRate)}update(u,C){if(!this.timer)return;if(super.update(u,C),this.options.synchronousUpdate&&this.lastRedraw+this.options.throttleTime*2{var y8=fD(),S8=nD(),b8=_D(),v8=i("events");FF.exports=class extends v8{constructor(u,C){super();this.bars=[],this.options=b8.parse(u,C),this.options.synchronousUpdate=!1,this.terminal=this.options.terminal?this.options.terminal:new y8(this.options.stream),this.timer=null,this.isActive=!1,this.schedulingRate=this.terminal.isTTY()?this.options.throttleTime:this.options.notTTYSchedule,this.loggingBuffer=[],this.sigintCallback=null}create(u,C,F,E={}){let A=new S8(Object.assign({},this.options,{terminal:this.terminal},E));if(this.bars.push(A),this.options.noTTYOutput===!1&&this.terminal.isTTY()===!1)return A;if(this.sigintCallback===null&&this.options.gracefulExit)this.sigintCallback=this.stop.bind(this),process.once("SIGINT",this.sigintCallback),process.once("SIGTERM",this.sigintCallback);if(!this.isActive){if(this.options.hideCursor===!0)this.terminal.cursor(!1);if(this.options.linewrap===!1)this.terminal.lineWrapping(!1);this.timer=setTimeout(this.update.bind(this),this.schedulingRate)}return this.isActive=!0,A.start(u,C,F),this.emit("start"),A}remove(u){let C=this.bars.indexOf(u);if(C<0)return!1;return this.bars.splice(C,1),this.update(),this.terminal.newline(),this.terminal.clearBottom(),!0}update(){if(this.timer)clearTimeout(this.timer),this.timer=null;if(this.emit("update-pre"),this.terminal.cursorRelativeReset(),this.emit("redraw-pre"),this.loggingBuffer.length>0){this.terminal.clearLine();while(this.loggingBuffer.length>0)this.terminal.write(this.loggingBuffer.shift(),!0)}for(let u=0;u0)this.terminal.newline();this.bars[u].render()}if(this.emit("redraw-post"),this.options.noTTYOutput&&this.terminal.isTTY()===!1)this.terminal.newline(),this.terminal.newline();if(this.timer=setTimeout(this.update.bind(this),this.schedulingRate),this.emit("update-post"),this.options.stopOnComplete&&!this.bars.find((u)=>u.isActive))this.stop()}stop(){if(clearTimeout(this.timer),this.timer=null,this.sigintCallback)process.removeListener("SIGINT",this.sigintCallback),process.removeListener("SIGTERM",this.sigintCallback),this.sigintCallback=null;if(this.isActive=!1,this.options.hideCursor===!0)this.terminal.cursor(!0);if(this.options.linewrap===!1)this.terminal.lineWrapping(!0);if(this.terminal.cursorRelativeReset(),this.emit("stop-pre-clear"),this.options.clearOnComplete)this.terminal.clearBottom();else{for(let u=0;u0)this.terminal.newline();this.bars[u].render(),this.bars[u].stop()}this.terminal.newline()}this.emit("stop")}log(u){this.loggingBuffer.push(u)}}});var BF=H((z2,CF)=>{CF.exports={format:"progress [{bar}] {percentage}% | ETA: {eta}s | {value}/{total}",barCompleteChar:"=",barIncompleteChar:"-"}});var ZF=H((q2,AF)=>{AF.exports={format:" {bar} {percentage}% | ETA: {eta}s | {value}/{total}",barCompleteChar:"█",barIncompleteChar:"░"}});var JF=H((I2,$F)=>{$F.exports={format:" \x1B[90m{bar}\x1B[0m {percentage}% | ETA: {eta}s | {value}/{total}",barCompleteChar:"█",barIncompleteChar:"░"}});var XF=H((V2,KF)=>{KF.exports={format:" {bar}■ {percentage}% | ETA: {eta}s | {value}/{total}",barCompleteChar:"■",barIncompleteChar:" "}});var GF=H((H2,YF)=>{var P8=BF(),h8=ZF(),f8=JF(),g8=XF();YF.exports={legacy:P8,shades_classic:h8,shades_grey:f8,rect:g8}});var NF=H((x2,WF)=>{var UF=uF(),m8=EF(),c8=GF(),p8=dD(),l8=cD(),d8=pD(),n8=lD();WF.exports={Bar:UF,SingleBar:UF,MultiBar:m8,Presets:c8,Format:{Formatter:p8,BarFormat:d8,ValueFormat:l8,TimeFormat:n8}}});import{join as QD,basename as Ru,extname as ju}from"node:path";import{randomUUID as W8}from"node:crypto";import{rm as Tu}from"node:fs/promises";import{spawn as g}from"node:child_process";import{appendFile as oF}from"node:fs/promises";var jD=null;function TD(D){jD=D}async function f(D){if(jD)try{await oF(jD,D,"utf-8")}catch(u){}}async function r(){return new Promise((D)=>{let u=g("ffmpeg",["-version"]);u.on("error",()=>D(!1)),u.on("close",(C)=>D(C===0))})}async function o(){return new Promise((D)=>{let u=g("MP4Box",["-version"]);u.on("error",()=>D(!1)),u.on("close",(C)=>D(C===0))})}async function t(){let D=await new Promise((E)=>{let A=g("ffmpeg",["-hide_banner","-encoders"]),B="";A.stdout.on("data",($)=>{B+=$.toString()}),A.on("error",()=>E("")),A.on("close",()=>E(B))}),u=(E)=>D.includes(E),C=[],F=[{acc:"nvenc",h264:u("h264_nvenc")?"h264_nvenc":void 0,av1:u("av1_nvenc")?"av1_nvenc":void 0},{acc:"qsv",h264:u("h264_qsv")?"h264_qsv":void 0,av1:u("av1_qsv")?"av1_qsv":void 0},{acc:"amf",h264:u("h264_amf")?"h264_amf":void 0,av1:u("av1_amf")?"av1_amf":void 0},{acc:"vaapi",h264:u("h264_vaapi")?"h264_vaapi":void 0,av1:u("av1_vaapi")?"av1_vaapi":void 0},{acc:"videotoolbox",h264:u("h264_videotoolbox")?"h264_videotoolbox":void 0,av1:u("av1_videotoolbox")?"av1_videotoolbox":void 0},{acc:"v4l2",h264:u("h264_v4l2m2m")?"h264_v4l2m2m":void 0,av1:u("av1_v4l2m2m")?"av1_v4l2m2m":void 0}];for(let E of F)if(E.h264||E.av1)C.push({accelerator:E.acc,h264Encoder:E.h264,av1Encoder:E.av1});return C}async function e(){let u=(await new Promise((E)=>{let A=g("ffmpeg",["-hide_banner","-hwaccels"]),B="";A.stdout.on("data",($)=>B+=$.toString()),A.on("error",()=>E("")),A.on("close",()=>E(B))})).split(` +`).map((E)=>E.trim()).filter(Boolean),C=[],F={cuda:"nvenc",qsv:"qsv",vaapi:"vaapi",videotoolbox:"videotoolbox",v4l2m2m:"v4l2",dxva2:"amf"};for(let E of u){let A=F[E];if(A)C.push({accelerator:A})}return C}async function GD(D){let u=["-v","error","-f","lavfi","-i","testsrc=size=320x240:rate=1","-frames:v","1","-an","-c:v",D,"-f","null","-"];return new Promise((C)=>{let F=g("ffmpeg",u);F.on("error",()=>C(!1)),F.on("close",(E)=>C(E===0))})}async function UD(D,u){let C=["-v","error"];if(D==="nvenc")C.push("-hwaccel","cuda","-hwaccel_output_format","cuda");else if(D==="qsv")C.push("-hwaccel","qsv");else if(D==="vaapi")C.push("-hwaccel","vaapi","-vaapi_device","/dev/dri/renderD128");else if(D==="videotoolbox")C.push("-hwaccel","videotoolbox");else if(D==="v4l2")C.push("-hwaccel","v4l2m2m");else if(D==="amf")return!1;return C.push("-i",u,"-frames:v","1","-f","null","-"),new Promise((F)=>{let E=g("ffmpeg",C);E.on("error",()=>F(!1)),E.on("close",(A)=>F(A===0))})}async function l(D,u,C){let E=` === FFmpeg Command [${new Date().toISOString()}] === ffmpeg ${D.join(" ")} -`;return await h(C),new Promise((A,B)=>{let $=f("ffmpeg",D),K="";$.stderr.on("data",(X)=>{let U=X.toString();if(K+=U,u&&F){let Y=U.match(/time=(\d{2}):(\d{2}):(\d{2}\.\d{2})/);if(Y){let Z=parseInt(Y[1]),W=parseInt(Y[2]),J=parseFloat(Y[3]),Q=Z*3600+W*60+J,G=Math.min(100,Q/F*100);u(G)}}}),$.on("error",(X)=>{h(`ERROR: ${X.message} +`;return await f(E),new Promise((A,B)=>{let $=g("ffmpeg",D),K="";$.stderr.on("data",(X)=>{let G=X.toString();if(K+=G,u&&C){let Y=G.match(/time=(\d{2}):(\d{2}):(\d{2}\.\d{2})/);if(Y){let Z=parseInt(Y[1]),k=parseInt(Y[2]),_=parseFloat(Y[3]),J=Z*3600+k*60+_,N=Math.min(100,J/C*100);u(N)}}}),$.on("error",(X)=>{f(`ERROR: ${X.message} `),B(Error(`FFmpeg error: ${X.message}`))}),$.on("close",(X)=>{if(X===0){let Y=K.split(` `).filter((Z)=>Z.trim()).slice(-10).join(` -`);h(`SUCCESS: Exit code ${X} +`);f(`SUCCESS: Exit code ${X} --- Last 10 lines of output --- ${Y} -`),A()}else h(`FAILED: Exit code ${X} +`),A()}else f(`FAILED: Exit code ${X} --- Full error output --- ${K} `),B(Error(`FFmpeg failed with exit code ${X} -${K}`))})})}async function jD(D){let F=` +${K}`))})})}async function wD(D){let C=` === MP4Box Command [${new Date().toISOString()}] === MP4Box ${D.join(" ")} -`;return await h(F),new Promise((E,C)=>{let A=f("MP4Box",D),B="",$="";A.stdout.on("data",(K)=>{B+=K.toString()}),A.stderr.on("data",(K)=>{$+=K.toString()}),A.on("error",(K)=>{h(`ERROR: ${K.message} -`),C(Error(`MP4Box error: ${K.message}`))}),A.on("close",(K)=>{if(K===0){let Y=(B||$).split(` +`;return await f(C),new Promise((F,E)=>{let A=g("MP4Box",D),B="",$="";A.stdout.on("data",(K)=>{B+=K.toString()}),A.stderr.on("data",(K)=>{$+=K.toString()}),A.on("error",(K)=>{f(`ERROR: ${K.message} +`),E(Error(`MP4Box error: ${K.message}`))}),A.on("close",(K)=>{if(K===0){let Y=(B||$).split(` `).filter((Z)=>Z.trim()).slice(-10).join(` -`);h(`SUCCESS: Exit code ${K} +`);f(`SUCCESS: Exit code ${K} --- Last 10 lines of output --- ${Y} -`),E()}else{let X=$||B;h(`FAILED: Exit code ${K} +`),F()}else{let X=$||B;f(`FAILED: Exit code ${K} --- Full error output --- ${X} -`),C(Error(`MP4Box failed with exit code ${K} -${X}`))}})})}import{spawn as sF}from"node:child_process";async function o(D){return new Promise((u,F)=>{let E=sF("ffprobe",["-v","error","-show_entries","stream=width,height,duration,r_frame_rate,codec_name,codec_type,bit_rate","-show_entries","format=duration","-of","json",D]),C="";E.stdout.on("data",(A)=>{C+=A.toString()}),E.on("error",(A)=>{F(Error(`ffprobe error: ${A.message}`))}),E.on("close",(A)=>{if(A!==0){F(Error(`ffprobe failed with exit code ${A}`));return}try{let B=JSON.parse(C),$=B.streams.find((Q)=>Q.codec_type==="video"),K=B.streams.find((Q)=>Q.codec_type==="audio"),X=B.format;if(!$){F(Error("No video stream found in input file"));return}let U=30;if($.r_frame_rate){let[Q,G]=$.r_frame_rate.split("/").map(Number);if(Q&&G&&G!==0)U=Q/G}let Y=parseFloat($.duration||X.duration||"0"),Z=B.streams.find((Q)=>Q.codec_type==="audio"&&Q.bit_rate),W=Z?.bit_rate?Math.round(parseInt(Z.bit_rate)/1000):void 0,J=$.bit_rate?Math.round(parseInt($.bit_rate)/1000):void 0;u({width:$.width,height:$.height,duration:Y,fps:U,codec:$.codec_name,hasAudio:Boolean(K),audioBitrate:W,videoBitrate:J})}catch(B){F(Error(`Failed to parse ffprobe output: ${B}`))}})})}function UD(D,u=256){if(!D)return`${u}k`;let F=Math.min(D,u);if(F<=64)return"64k";if(F<=96)return"96k";if(F<=128)return"128k";if(F<=192)return"192k";return"256k"}function WD(D){let u=Math.floor(D/3600),F=Math.floor(D%3600/60),E=D%60;return`${String(u).padStart(2,"0")}:${String(F).padStart(2,"0")}:${E.toFixed(3).padStart(6,"0")}`}import{mkdir as aF,access as iF,constants as rF}from"node:fs/promises";async function l(D){try{await iF(D,rF.F_OK)}catch{await aF(D,{recursive:!0})}}function eF(D,u){let F=D*u;if(F<=230400)return 0.08;if(F<=409920)return 0.075;if(F<=921600)return 0.07;if(F<=2073600)return 0.065;if(F<=3686400)return 0.06;return 0.055}function b(D,u,F=30,E){let C=eF(D,u),A=Math.round(D*u*F*C/1000);if(E&&A>E)A=E;return`${A}k`}var TD=[{name:"360p",width:640,height:360,videoBitrate:b(640,360,30),audioBitrate:"192k"},{name:"480p",width:854,height:480,videoBitrate:b(854,480,30),audioBitrate:"192k"},{name:"720p",width:1280,height:720,videoBitrate:b(1280,720,30),audioBitrate:"192k"},{name:"1080p",width:1920,height:1080,videoBitrate:b(1920,1080,30),audioBitrate:"256k"},{name:"1440p",width:2560,height:1440,videoBitrate:b(2560,1440,30),audioBitrate:"256k"},{name:"2160p",width:3840,height:2160,videoBitrate:b(3840,2160,30),audioBitrate:"256k"}];function AD(D,u,F=30,E){let C=[],A=TD.filter((B)=>{return B.width<=D&&B.height<=u});for(let B of A)C.push({...B,videoBitrate:b(B.width,B.height,30,E),fps:30});return C}function D8(D,u,F){return{...D,name:`${D.name}-${u}`,videoBitrate:b(D.width,D.height,u,F),fps:u}}function Ku(D){let F=D.trim().match(/^(\d+)p?(?:[@-](\d+))?$/i);if(!F)return null;let E=F[1]+"p",C=F[2]?parseInt(F[2]):30;return{resolution:E,fps:C}}function Xu(D,u=30,F){let E=TD.find((C)=>C.name===D);if(!E)return null;if(u===30)return{...E,videoBitrate:b(E.width,E.height,30,F),fps:30};return D8(E,u,F)}function u8(D,u,F,E){let C=Ku(D);if(!C)return{error:`Invalid profile format: ${D}. Use format like: 360, 720@60, 1080-60`};let A=Xu(C.resolution,C.fps);if(!A)return{error:`Unknown resolution: ${C.resolution}. Available: 360, 480, 720, 1080, 1440, 2160`};if(A.width>u||A.height>F)return{error:`Source resolution (${u}x${F}) is lower than ${D} (${A.width}x${A.height})`};let B=120,$=C.fps,K;if(C.fps>E)$=Math.min(E,B),K=`Requested ${C.fps} FPS in ${D}, but source is ${E} FPS. Using ${$} FPS instead`;else if(C.fps>B)$=B,K=`Requested ${C.fps} FPS in ${D} exceeds maximum ${B} FPS. Using ${$} FPS instead`;return K?{warning:K,adjustedFps:$}:{}}function ND(D,u,F,E,C){let A=[],B=[],$=[];for(let K of D){let X=u8(K,u,F,E);if(X.error){B.push(X.error);continue}if(X.warning)$.push(X.warning);let U=Ku(K);if(!U)continue;let Y=X.adjustedFps!==void 0?X.adjustedFps:U.fps,Z=Xu(U.resolution,Y,C);if(Z)A.push(Z)}return{profiles:A,errors:B,warnings:$}}import{join as g}from"node:path";import{readdir as F8,unlink as Yu,rmdir as E8,writeFile as Gu}from"node:fs/promises";async function Uu(D,u,F="00:00:00"){let E=g(u,"poster.jpg"),C=/^\d+(\.\d+)?$/.test(F)?F:F;return await c(["-ss",C,"-i",D,"-vframes","1","-q:v","2","-y",E]),E}async function Wu(D,u,F,E){let{width:C,height:A,interval:B,columns:$}=E,K=g(u,".thumbnails_temp");await l(K),await Gu(g(K,".keep"),"");let X=g(K,"thumb_%04d.jpg");await c(["-i",D,"-vf",`fps=1/${B},scale=${C}:${A}`,"-q:v","5",X]);let Y=(await F8(K)).filter((k)=>k.startsWith("thumb_")&&k.endsWith(".jpg")).sort();if(Y.length===0)throw Error("No thumbnails generated");let Z=Y.length,W=Math.ceil(Z/$),J=g(u,"thumbnails.jpg"),Q=`tile=${$}x${W}`;await c(["-i",X,"-filter_complex",Q,"-q:v","5",J]);let G=g(u,"thumbnails.vtt"),N=C8(Z,B,C,A,$,"thumbnails.jpg");await Gu(G,N);for(let k of Y)await Yu(g(K,k));return await Yu(g(K,".keep")),await E8(K),{spritePath:J,vttPath:G}}function C8(D,u,F,E,C,A){let B=`WEBVTT +`),E(Error(`MP4Box failed with exit code ${K} +${X}`))}})})}import{spawn as tF}from"node:child_process";async function DD(D){return new Promise((u,C)=>{let F=tF("ffprobe",["-v","error","-show_entries","stream=width,height,duration,r_frame_rate,codec_name,codec_type,bit_rate","-show_entries","format=duration","-of","json",D]),E="";F.stdout.on("data",(A)=>{E+=A.toString()}),F.on("error",(A)=>{C(Error(`ffprobe error: ${A.message}`))}),F.on("close",(A)=>{if(A!==0){C(Error(`ffprobe failed with exit code ${A}`));return}try{let B=JSON.parse(E),$=B.streams.find((J)=>J.codec_type==="video"),K=B.streams.find((J)=>J.codec_type==="audio"),X=B.format;if(!$){C(Error("No video stream found in input file"));return}let G=30;if($.r_frame_rate){let[J,N]=$.r_frame_rate.split("/").map(Number);if(J&&N&&N!==0)G=J/N}let Y=parseFloat($.duration||X.duration||"0"),Z=B.streams.find((J)=>J.codec_type==="audio"&&J.bit_rate),k=Z?.bit_rate?Math.round(parseInt(Z.bit_rate)/1000):void 0,_=$.bit_rate?Math.round(parseInt($.bit_rate)/1000):void 0;u({width:$.width,height:$.height,duration:Y,fps:G,codec:$.codec_name,hasAudio:Boolean(K),audioBitrate:k,videoBitrate:_})}catch(B){C(Error(`Failed to parse ffprobe output: ${B}`))}})})}function WD(D,u=256){if(!D)return`${u}k`;let F=Math.max(D,64),E=Math.min(F,u);if(E<=64)return"64k";if(E<=96)return"96k";if(E<=128)return"128k";if(E<=192)return"192k";return"256k"}function ND(D){let u=Math.floor(D/3600),C=Math.floor(D%3600/60),F=D%60;return`${String(u).padStart(2,"0")}:${String(C).padStart(2,"0")}:${F.toFixed(3).padStart(6,"0")}`}import{mkdir as eF,access as D8,constants as u8}from"node:fs/promises";async function d(D){try{await D8(D,u8.F_OK)}catch{await eF(D,{recursive:!0})}}function C8(D,u){let C=D*u;if(C<=230400)return 0.08;if(C<=409920)return 0.075;if(C<=921600)return 0.07;if(C<=2073600)return 0.065;if(C<=3686400)return 0.06;return 0.055}function v(D,u,C=30,F){let E=C8(D,u),A=Math.round(D*u*C*E/1000);if(F&&A>F)A=F;return`${A}k`}var yD=[{name:"360p",width:640,height:360,videoBitrate:v(640,360,30),audioBitrate:"192k"},{name:"480p",width:854,height:480,videoBitrate:v(854,480,30),audioBitrate:"192k"},{name:"720p",width:1280,height:720,videoBitrate:v(1280,720,30),audioBitrate:"192k"},{name:"1080p",width:1920,height:1080,videoBitrate:v(1920,1080,30),audioBitrate:"256k"},{name:"1440p",width:2560,height:1440,videoBitrate:v(2560,1440,30),audioBitrate:"256k"},{name:"2160p",width:3840,height:2160,videoBitrate:v(3840,2160,30),audioBitrate:"256k"}];function $D(D,u,C=30,F){let E=[],A=yD.filter((B)=>{return B.height<=u});for(let B of A)E.push({...B,videoBitrate:v(B.width,B.height,30,F),fps:30});return E}function B8(D,u,C){return{...D,name:`${D.name}-${u}`,videoBitrate:v(D.width,D.height,u,C),fps:u}}function Uu(D){let C=D.trim().match(/^(\d+)p?(?:[@-](\d+))?$/i);if(!C)return null;let F=C[1]+"p",E=C[2]?parseInt(C[2]):30;return{resolution:F,fps:E}}function Wu(D,u=30,C){let F=yD.find((E)=>E.name===D);if(!F)return null;if(u===30)return{...F,videoBitrate:v(F.width,F.height,30,C),fps:30};return B8(F,u,C)}function A8(D,u,C,F){let E=Uu(D);if(!E)return{error:`Invalid profile format: ${D}. Use format like: 360, 720@60, 1080-60`};let A=Wu(E.resolution,E.fps);if(!A)return{error:`Unknown resolution: ${E.resolution}. Available: 360, 480, 720, 1080, 1440, 2160`};if(A.height>C)return{error:`Source height (${C}px) is lower than requested ${D} height (${A.height}px)`};let B=120,$=E.fps,K;if(E.fps>F)$=Math.min(F,B),K=`Requested ${E.fps} FPS in ${D}, but source is ${F} FPS. Using ${$} FPS instead`;else if(E.fps>B)$=B,K=`Requested ${E.fps} FPS in ${D} exceeds maximum ${B} FPS. Using ${$} FPS instead`;return K?{warning:K,adjustedFps:$}:{}}function kD(D,u,C,F,E){let A=[],B=[],$=[];for(let K of D){let X=A8(K,u,C,F);if(X.error){B.push(X.error);continue}if(X.warning)$.push(X.warning);let G=Uu(K);if(!G)continue;let Y=X.adjustedFps!==void 0?X.adjustedFps:G.fps,Z=Wu(G.resolution,Y,E);if(Z)A.push(Z)}return{profiles:A,errors:B,warnings:$}}import{join as m}from"node:path";import{readdir as Z8,unlink as Nu,rmdir as $8,writeFile as ku}from"node:fs/promises";async function Qu(D,u,C="00:00:00"){let F=m(u,"poster.jpg"),E=/^\d+(\.\d+)?$/.test(C)?C:C;return await l(["-ss",E,"-i",D,"-vframes","1","-q:v","2","-y",F]),F}async function _u(D,u,C,F){let{width:E,height:A,interval:B,columns:$}=F,K=m(u,".thumbnails_temp");await d(K),await ku(m(K,".keep"),"");let X=m(K,"thumb_%04d.jpg");await l(["-i",D,"-vf",`fps=1/${B},scale=${E}:${A}`,"-q:v","5",X]);let Y=(await Z8(K)).filter((W)=>W.startsWith("thumb_")&&W.endsWith(".jpg")).sort();if(Y.length===0)throw Error("No thumbnails generated");let Z=Y.length,k=Math.ceil(Z/$),_=m(u,"thumbnails.jpg"),J=`tile=${$}x${k}`;await l(["-i",X,"-filter_complex",J,"-q:v","5",_]);let N=m(u,"thumbnails.vtt"),U=J8(Z,B,E,A,$,"thumbnails.jpg");await ku(N,U);for(let W of Y)await Nu(m(K,W));return await Nu(m(K,".keep")),await $8(K),{spritePath:_,vttPath:N}}function J8(D,u,C,F,E,A){let B=`WEBVTT -`;for(let $=0;$ ${WD(X)} -`,B+=`${A}#xywh=${Z},${W},${F},${E} +`;for(let $=0;$ ${ND(X)} +`,B+=`${A}#xywh=${Z},${k},${C},${F} -`}return B}import{join as B8}from"node:path";function A8(D,u,F){if(F)if(u==="h264")return 32;else return 42;else if(u==="h264"){if(D<=360)return 25;if(D<=480)return 24;if(D<=720)return 23;if(D<=1080)return 22;if(D<=1440)return 21;return 20}else{if(D<=360)return 40;if(D<=480)return 38;if(D<=720)return 35;if(D<=1080)return 32;if(D<=1440)return 30;return 28}}async function Nu(D,u,F,E,C,A,B,$,K,X,U,Y,Z){let W=B8(u,`video_${K}_${F.name}.mp4`),J=["-y"];if(Y){if(Y==="nvenc")J.push("-hwaccel","cuda","-hwaccel_output_format","cuda");else if(Y==="qsv")J.push("-hwaccel","qsv");else if(Y==="vaapi")J.push("-hwaccel","vaapi");else if(Y==="videotoolbox")J.push("-hwaccel","videotoolbox");else if(Y==="v4l2")J.push("-hwaccel","v4l2")}J.push("-i",D,"-c:v",E);let Q=E.includes("nvenc")||E.includes("qsv")||E.includes("amf")||E.includes("vaapi")||E.includes("videotoolbox")||E.includes("v4l2"),G;if(Q&&X?.cq!==void 0)G=X.cq;else if(!Q&&X?.crf!==void 0)G=X.crf;else G=A8(F.height,K,Q);if(E==="h264_nvenc")J.push("-rc:v","vbr"),J.push("-cq",String(G)),J.push("-preset",C),J.push("-2pass","0");else if(E==="av1_nvenc")J.push("-rc:v","vbr"),J.push("-cq",String(G)),J.push("-preset",C),J.push("-2pass","0");else if(E==="av1_qsv")J.push("-preset",C),J.push("-global_quality",String(G));else if(E==="h264_qsv")J.push("-preset",C),J.push("-global_quality",String(G));else if(E==="av1_amf")J.push("-quality","balanced"),J.push("-rc","cqp"),J.push("-qp_i",String(G)),J.push("-qp_p",String(G));else if(E==="h264_amf")J.push("-quality","balanced"),J.push("-rc","cqp"),J.push("-qp_i",String(G)),J.push("-qp_p",String(G));else if(E==="libsvtav1")J.push("-crf",String(G)),J.push("-preset",C),J.push("-svtav1-params","tune=0:enable-overlays=1");else if(E==="libx264")J.push("-crf",String(G)),J.push("-preset",C);else J.push("-preset",C);let N=K==="av1"?0.6:1,k=Math.round(parseInt(F.videoBitrate)*N*1.5);J.push("-maxrate",`${k}k`),J.push("-bufsize",`${k*2}k`);let x=F.fps||30,O=Math.round(x*B);J.push("-g",String(O),"-keyint_min",String(O),"-sc_threshold","0");let M=[];if(Y==="nvenc")M.push(`scale_cuda=${F.width}:${F.height}`);else M.push(`scale=${F.width}:${F.height}`);if(U){if(U.deinterlace)M.push("yadif");if(U.denoise)M.push("hqdn3d");if(U.customFilters)M.push(...U.customFilters)}J.push("-vf",M.join(","));let S=parseInt(F.audioBitrate)||256,ED=UD($,S);if(J.push("-c:a","aac","-b:a",ED),U?.audioNormalize)J.push("-af","loudnorm");return J.push("-f","mp4",W),await c(J,Z,A),W}async function ku(D,u,F,E,C,A,B,$,K,X,U,Y,Z,W,J){let Q=new Map;if(K&&F.length>1)for(let G=0;GNu(D,u,O,E,C,A,B,$,U,Y,Z,W,(M)=>{if(J)J(O.name,M)}));(await Promise.all(k)).forEach((O,M)=>{let S=N[M];Q.set(S.name,O)})}else for(let G of F){let N=await Nu(D,u,G,E,C,A,B,$,U,Y,Z,W,(k)=>{if(J)J(G.name,k)});Q.set(G.name,N)}return Q}import{join as L}from"node:path";import{readdir as Iu,rename as P3,mkdir as h3,writeFile as bD}from"node:fs/promises";import{readFile as wD,writeFile as yD}from"node:fs/promises";async function Qu(D){let u=await wD(D,"utf-8");u=u.replace(/\/\/>/g,"/>"),u=u.replace(/\/\s+\/>/g,"/>"),u=u.replace(/(]+)\s+\/>/g,"$1/>"),u=u.replace(/]+)\/>\s*<\/Representation>/g,""),u=u.replace(/]+)\/>\s*(]*\/>)/g,` +`}return B}import{join as K8}from"node:path";function X8(D,u,C){if(C)if(u==="h264")return 32;else return 42;else if(u==="h264"){if(D<=360)return 25;if(D<=480)return 24;if(D<=720)return 23;if(D<=1080)return 22;if(D<=1440)return 21;return 20}else{if(D<=360)return 40;if(D<=480)return 38;if(D<=720)return 35;if(D<=1080)return 32;if(D<=1440)return 30;return 28}}async function zu(D,u,C,F,E,A,B,$,K,X,G,Y=!1,Z,k){let _=K8(u,`video_${K}_${C.name}.mp4`),J=["-y"];if(Z){if(Z==="nvenc")J.push("-hwaccel","cuda","-hwaccel_output_format","cuda");else if(Z==="qsv")J.push("-hwaccel","qsv");else if(Z==="vaapi")J.push("-hwaccel","vaapi");else if(Z==="videotoolbox")J.push("-hwaccel","videotoolbox");else if(Z==="v4l2")J.push("-hwaccel","v4l2")}J.push("-i",D,"-c:v",F);let N=F.includes("nvenc")||F.includes("qsv")||F.includes("amf")||F.includes("vaapi")||F.includes("videotoolbox")||F.includes("v4l2"),U;if(N&&X?.cq!==void 0)U=X.cq;else if(!N&&X?.crf!==void 0)U=X.crf;else U=X8(C.height,K,N);if(F==="h264_nvenc")J.push("-rc:v","vbr"),J.push("-cq",String(U)),J.push("-preset",E),J.push("-2pass","0");else if(F==="av1_nvenc")J.push("-rc:v","vbr"),J.push("-cq",String(U)),J.push("-preset",E),J.push("-2pass","0");else if(F==="av1_qsv")J.push("-preset",E),J.push("-global_quality",String(U));else if(F==="h264_qsv")J.push("-preset",E),J.push("-global_quality",String(U));else if(F==="av1_amf")J.push("-quality","balanced"),J.push("-rc","cqp"),J.push("-qp_i",String(U)),J.push("-qp_p",String(U));else if(F==="h264_amf")J.push("-quality","balanced"),J.push("-rc","cqp"),J.push("-qp_i",String(U)),J.push("-qp_p",String(U));else if(F==="libsvtav1")J.push("-crf",String(U)),J.push("-preset",E),J.push("-svtav1-params","tune=0:enable-overlays=1");else if(F==="libx264")J.push("-crf",String(U)),J.push("-preset",E);else J.push("-preset",E);let W=K==="av1"?0.6:1,z=Math.round(parseInt(C.videoBitrate)*W*1.5);J.push("-maxrate",`${z}k`),J.push("-bufsize",`${z*2}k`);let j=C.fps||30,O=Math.round(j*B);J.push("-g",String(O),"-keyint_min",String(O),"-sc_threshold","0");let M=[],T=C.width,p=C.height;if(Z==="nvenc")M.push(`scale_cuda=${T}:${p}:force_original_aspect_ratio=decrease:force_divisible_by=2`);else M.push(`scale=${T}:${p}:force_original_aspect_ratio=decrease:force_divisible_by=2`);if(G){if(G.deinterlace)M.push("yadif");if(G.denoise)M.push("hqdn3d");if(G.customFilters)M.push(...G.customFilters)}if(M.push(`pad=${T}:${p}:(ow-iw)/2:(oh-ih)/2`,"setsar=1"),J.push("-vf",M.join(",")),!Y){let a=parseInt(C.audioBitrate)||256,xD=WD($,a);if(J.push("-c:a","aac","-b:a",xD),G?.audioNormalize)J.push("-af","loudnorm")}else J.push("-an");return J.push("-f","mp4",_),await l(J,k,A),_}async function qu(D,u,C,F,E,A,B,$,K,X,G,Y,Z,k=!1,_,J){let N=new Map;if(K&&C.length>1)for(let U=0;Uzu(D,u,O,F,E,A,B,$,G,Y,Z,k,_,(M)=>{if(J)J(O.name,M)}));(await Promise.all(z)).forEach((O,M)=>{let T=W[M];N.set(T.name,O)})}else for(let U of C){let W=await zu(D,u,U,F,E,A,B,$,G,Y,Z,k,_,(z)=>{if(J)J(U.name,z)});N.set(U.name,W)}return N}import{join as L}from"node:path";import{readdir as Mu,rename as c3,mkdir as p3,writeFile as PD}from"node:fs/promises";import{readFile as SD,writeFile as bD}from"node:fs/promises";async function Iu(D){let u=await SD(D,"utf-8");u=u.replace(/\/\/>/g,"/>"),u=u.replace(/\/\s+\/>/g,"/>"),u=u.replace(/(]+)\s+\/>/g,"$1/>"),u=u.replace(/]+)\/>\s*<\/Representation>/g,""),u=u.replace(/]+)\/>\s*(]*\/>)/g,` $2 `),u=u.replace(/]+)>\s*(?=<(?:Representation|\/AdaptationSet))/g,` -`),await yD(D,u,"utf-8")}async function _u(D){let u=await wD(D,"utf-8");u=u.replace(/media="\$RepresentationID\$_\$Number\$\.m4s"/g,'media="$RepresentationID$/$RepresentationID$_$Number$.m4s"'),u=u.replace(/initialization="\$RepresentationID\$_\.mp4"/g,'initialization="$RepresentationID$/$RepresentationID$_.mp4"'),await yD(D,u,"utf-8")}async function zu(D){let F=(await wD(D,"utf-8")).split(` -`),E=[],C=0;while(C")){let Z=F[C];if(Z.includes(""))Y=!1}else if(Z.includes("0&&U.length>0)E.push(A),K.forEach((Z)=>E.push(Z)),X.forEach((Z)=>E.push(Z)),E.push(" "),E.push(A),K.forEach((Z)=>E.push(Z)),U.forEach((Z)=>E.push(Z)),E.push(" ");else{E.push(A);for(let Z=B+1;Z")){let Z=C[E];if(Z.includes(""))Y=!1}else if(Z.includes("0&&G.length>0)F.push(A),K.forEach((Z)=>F.push(Z)),X.forEach((Z)=>F.push(Z)),F.push(" "),F.push(A),K.forEach((Z)=>F.push(Z)),G.forEach((Z)=>F.push(Z)),F.push(" ");else{F.push(A);for(let Z=B+1;Z1,K=["-dash",String(E*1000),"-frag",String(E*1000),"-rap","-segment-timeline","-segment-name","$RepresentationID$_$Number$","-out",B],X=!0;for(let[U,Y]of D.entries())for(let Z of F){let W=Y.get(Z.name);if(!W)throw Error(`MP4 file not found for profile: ${Z.name}, codec: ${U}`);let J=$?`${Z.name}-${U}`:Z.name;if(K.push(`${W}#video:id=${J}`),X&&A)K.push(`${W}#audio:id=audio`),X=!1}if(await jD(K),await $8(u,F,C,A),await _u(B),$)await zu(B);return await Qu(B),B}async function $8(D,u,F,E){let{readdir:C,rename:A,mkdir:B}=await import("node:fs/promises"),$=F.length>1,K=[];for(let Y of F)for(let Z of u){let W=$?`${Z.name}-${Y}`:Z.name;K.push(W);let J=L(D,W);await B(J,{recursive:!0})}let X=L(D,"audio");if(E)await B(X,{recursive:!0});let U=await C(D);for(let Y of U){if(Y==="manifest.mpd")continue;if(E&&(Y.startsWith("audio_")||Y==="audio_init.m4s")){let Z=L(D,Y),W=L(X,Y);await A(Z,W);continue}for(let Z of K)if(Y.startsWith(`${Z}_`)){let W=L(D,Y),J=L(D,Z,Y);await A(W,J);break}}}async function Hu(D,u,F,E,C,A,B){let $,K,X=A.length>0,U=A.includes("dash"),Y=A.includes("hls");if(X){if($=await Z8(D,u,F,E,C,B),!U)$=void 0}if(Y)K=await J8(u,F,E,C.length>1,B);return{manifestPath:$,hlsManifestPath:K}}async function J8(D,u,F,E,C){let A=L(D,"master.m3u8"),B=[];for(let U of u){let Y=E?`${U.name}-h264`:U.name,Z=L(D,Y),W=await Iu(Z),J=W.filter((x)=>x.endsWith(".m4s")).sort((x,O)=>{let M=parseInt(x.match(/_(\d+)\.m4s$/)?.[1]||"0"),S=parseInt(O.match(/_(\d+)\.m4s$/)?.[1]||"0");return M-S}),Q=W.find((x)=>x.endsWith("_.mp4"));if(!Q||J.length===0)continue;let G=SD(J,Q,F),N=L(Z,"playlist.m3u8");await bD(N,G,"utf-8");let k=parseInt(U.videoBitrate)*1000;B.push({path:`${Y}/playlist.m3u8`,bandwidth:k,resolution:`${U.width}x${U.height}`,fps:U.fps||30})}let $,K=[];if(C){let U=L(D,"audio"),Y=[];try{Y=await Iu(U)}catch{Y=[]}if(K=Y.filter((Z)=>Z.endsWith(".m4s")).sort((Z,W)=>{let J=parseInt(Z.match(/_(\d+)\.m4s$/)?.[1]||"0"),Q=parseInt(W.match(/_(\d+)\.m4s$/)?.[1]||"0");return J-Q}),$=Y.find((Z)=>Z.endsWith("_.mp4")),$&&K.length>0){let Z=SD(K,$,F);await bD(L(U,"playlist.m3u8"),Z,"utf-8")}}let X=qu(B,C&&$!==void 0&&K.length>0);return await bD(A,X,"utf-8"),A}async function vD(D){let{input:u,outputDir:F,segmentDuration:E=2,profiles:C,customProfiles:A,codec:B=["h264"],formats:$=["dash","hls"],hardwareDecoder:K,hardwareAccelerator:X,quality:U,generateThumbnails:Y=!0,thumbnailConfig:Z={},generatePoster:W=!0,posterTimecode:J="00:00:00",parallel:Q=!0,onProgress:G}=D,N=kD("/tmp",`dash-converter-${K8()}`);await l(N);let k=xu(u,Mu(u)),x=kD(F,k);await l(x);let O=kD(x,"conversion.log");RD(O);let{writeFile:M}=await import("node:fs/promises"),S=`=========================================== +`}return C}async function Y8(D,u,C,F,E,A){let B=L(u,"manifest.mpd"),$=E.length>1,K=["-dash",String(F*1000),"-frag",String(F*1000),"-rap","-segment-timeline","-segment-name","$RepresentationID$_$Number$","-out",B],X=!0;for(let[G,Y]of D.entries())for(let Z of C){let k=Y.get(Z.name);if(!k)throw Error(`MP4 file not found for profile: ${Z.name}, codec: ${G}`);let _=$?`${Z.name}-${G}`:Z.name;if(K.push(`${k}#video:id=${_}`),X&&A)K.push(`${k}#audio:id=audio`),X=!1}if(await wD(K),await G8(u,C,E,A),await Vu(B),$)await Hu(B);return await Iu(B),B}async function G8(D,u,C,F){let{readdir:E,rename:A,mkdir:B}=await import("node:fs/promises"),$=C.length>1,K=[];for(let Y of C)for(let Z of u){let k=$?`${Z.name}-${Y}`:Z.name;K.push(k);let _=L(D,k);await B(_,{recursive:!0})}let X=L(D,"audio");if(F)await B(X,{recursive:!0});let G=await E(D);for(let Y of G){if(Y==="manifest.mpd")continue;if(F&&(Y.startsWith("audio_")||Y==="audio_init.m4s")){let Z=L(D,Y),k=L(X,Y);await A(Z,k);continue}for(let Z of K)if(Y.startsWith(`${Z}_`)){let k=L(D,Y),_=L(D,Z,Y);await A(k,_);break}}}async function Ou(D,u,C,F,E,A,B){let $,K,X=A.length>0,G=A.includes("dash"),Y=A.includes("hls");if(X){if($=await Y8(D,u,C,F,E,B),!G)$=void 0}if(Y)K=await U8(u,C,F,E.length>1,B);return{manifestPath:$,hlsManifestPath:K}}async function U8(D,u,C,F,E){let A=L(D,"master.m3u8"),B=[];for(let G of u){let Y=F?`${G.name}-h264`:G.name,Z=L(D,Y),k=await Mu(Z),_=k.filter((z)=>z.endsWith(".m4s")).sort((z,j)=>{let O=parseInt(z.match(/_(\d+)\.m4s$/)?.[1]||"0"),M=parseInt(j.match(/_(\d+)\.m4s$/)?.[1]||"0");return O-M}),J=k.find((z)=>z.endsWith("_.mp4"));if(!J||_.length===0)continue;let N=vD(_,J,C),U=L(Z,"playlist.m3u8");await PD(U,N,"utf-8");let W=parseInt(G.videoBitrate)*1000;B.push({path:`${Y}/playlist.m3u8`,bandwidth:W,resolution:`${G.width}x${G.height}`,fps:G.fps||30})}let $,K=[];if(E){let G=L(D,"audio"),Y=[];try{Y=await Mu(G)}catch{Y=[]}if(K=Y.filter((Z)=>Z.endsWith(".m4s")).sort((Z,k)=>{let _=parseInt(Z.match(/_(\d+)\.m4s$/)?.[1]||"0"),J=parseInt(k.match(/_(\d+)\.m4s$/)?.[1]||"0");return _-J}),$=Y.find((Z)=>Z.endsWith("_.mp4")),$&&K.length>0){let Z=vD(K,$,C);await PD(L(G,"playlist.m3u8"),Z,"utf-8")}}let X=xu(B,E&&$!==void 0&&K.length>0);return await PD(A,X,"utf-8"),A}async function hD(D){let{input:u,outputDir:C,segmentDuration:F=2,profiles:E,customProfiles:A,codec:B=["h264"],formats:$=["dash","hls"],hardwareDecoder:K,hardwareAccelerator:X,quality:G,generateThumbnails:Y=!0,thumbnailConfig:Z={},generatePoster:k=!0,posterTimecode:_="00:00:00",parallel:J=!0,muted:N=!1,onProgress:U}=D,W=QD("/tmp",`dash-converter-${W8()}`);await d(W);let z=Ru(u,ju(u)),j=QD(C,z);await d(j);let O=QD(j,"conversion.log");TD(O);let{writeFile:M}=await import("node:fs/promises"),T=`=========================================== DASH Conversion Log Started: ${new Date().toISOString()} Input: ${u} -Output: ${x} +Output: ${j} Codec: ${Array.isArray(B)?B.join(","):B} Formats: ${$?.join(",")||"dash,hls"} =========================================== -`;await M(O,S,"utf-8");try{return await X8(u,F,N,E,C,A,B,$,X,K,U,Y,Z,W,J,Q,G)}finally{let{appendFile:ED}=await import("node:fs/promises");try{await ED(O,` +`;await M(O,T,"utf-8");try{return await N8(u,C,W,F,E,A,B,$,X,K,G,Y,Z,k,_,J,N,U)}finally{let{appendFile:p}=await import("node:fs/promises");try{await p(O,` Completed: ${new Date().toISOString()} -`,"utf-8")}catch($D){}try{await Ou(N,{recursive:!0,force:!0})}catch($D){console.warn(`Warning: Failed to cleanup temp directory: ${N}`)}}}async function X8(D,u,F,E,C,A,B,$,K,X,U,Y,Z,W,J,Q,G){if(!await s())throw Error("FFmpeg is not installed or not in PATH");if(!await a())throw Error("MP4Box is not installed or not in PATH. Install gpac package.");let N=(z,I,MD,OD)=>{if(G)G({stage:z,percent:I,message:MD,currentProfile:OD})};N("analyzing",0,"Analyzing input video...");let k=await o(D),x=k.hasAudio,O=K&&K!=="auto"?K:"auto",M=await i(),S=await r(),ED=M.some((z)=>z.av1Encoder),$D=Array.isArray(B)?B:[B],tD=$D.includes("h264"),VD=$D.includes("av1"),{selected:JD,h264Encoder:RF,av1Encoder:jF,warnings:eD}=Y8(M,O,tD,VD);if(eD.length>0)for(let z of eD)console.warn(`⚠️ ${z}`);let{selected:KD}=G8(S,X||"auto");if(VD&&!ED)console.warn("⚠️ AV1 hardware encoder not detected. AV1 will use CPU encoder (slow).");let v=[];if(tD)v.push("h264");if(VD)v.push("av1");if(v.length===0)v.push("h264");let Du=$&&$.length>0?Array.from(new Set($)):["dash","hls"],R;if(A&&A.length>0){let z=ND(A,k.width,k.height,k.fps,k.videoBitrate);if(z.errors.length>0){console.warn(` -❌ Profile errors:`);for(let I of z.errors)console.warn(` - ${I}`);console.warn("")}if(z.warnings.length>0){console.warn(` -⚠️ Profile warnings:`);for(let I of z.warnings)console.warn(` - ${I}`);console.warn("")}if(R=z.profiles,R.length===0)throw Error("No valid profiles found in custom list. Check errors above.")}else if(C)R=C;else R=AD(k.width,k.height,k.fps,k.videoBitrate);if(R.length===0)throw Error("No suitable profiles found for input video resolution");let TF=xu(D,Mu(D)),CD=kD(u,TF);try{await Ou(CD,{recursive:!0,force:!0})}catch(z){}await l(CD);let P=[];if(v.includes("h264")){let z=RF||"libx264",I=Vu(z,"h264");P.push({type:"h264",codec:z,preset:I})}if(v.includes("av1")){let z=jF||"libsvtav1",I=Vu(z,"av1");P.push({type:"av1",codec:z,preset:I})}let wF=P.map((z)=>z.type.toUpperCase()).join(" + "),yF=JD==="cpu"?"CPU":JD.toUpperCase();N("analyzing",20,`Using ${wF} encoding (${yF}, decoder ${KD.toUpperCase()})`,void 0);let SF=JD==="cpu"?2:3,xD=new Map;for(let z=0;z{let J3=R.findIndex((gF)=>gF.name===BD),Zu=25+Bu*40,$u=Au/100*(40*PF/R.length);if(N("encoding",Zu+$u,`Encoding ${I.toUpperCase()} ${BD}...`,`${I}-${BD}`),G)G({stage:"encoding",percent:Zu+$u,currentProfile:`${I}-${BD}`,profilePercent:Au,message:`Encoding ${I.toUpperCase()} ${BD}...`})});xD.set(I,fF)}N("encoding",65,"Stage 1 complete: All codecs and profiles encoded"),N("encoding",70,"Stage 2: Creating segments and manifests...");let{manifestPath:bF,hlsManifestPath:vF}=await Hu(xD,CD,R,E,v,Du,x),uu=[];for(let z of xD.values())uu.push(...Array.from(z.values()));N("encoding",80,"Stage 2 complete: All formats packaged");let Fu,Eu;if(Y){N("thumbnails",80,"Generating thumbnail sprites...");let z={width:Z.width||160,height:Z.height||90,interval:Z.interval||1,columns:Z.columns||10},I=await Wu(D,CD,k.duration,z);Fu=I.spritePath,Eu=I.vttPath,N("thumbnails",90,"Thumbnails generated")}let Cu;if(W)N("thumbnails",92,"Generating poster image..."),Cu=await Uu(D,CD,J),N("thumbnails",95,"Poster generated");return N("manifest",95,"Finalizing..."),N("complete",100,"Conversion complete!"),{manifestPath:bF,hlsManifestPath:vF,videoPaths:uu,thumbnailSpritePath:Fu,thumbnailVttPath:Eu,posterPath:Cu,duration:k.duration,profiles:R,usedNvenc:P.some((z)=>z.codec.includes("nvenc")),selectedAccelerator:JD,selectedDecoder:KD,codecs:v,formats:Du}}var t={nvenc:100,qsv:90,amf:80,vaapi:70,videotoolbox:65,v4l2:60,cpu:1};function Y8(D,u,F,E){let C=[],A=new Set(["nvenc","qsv","amf","vaapi","videotoolbox","v4l2"]),B=D.filter((G)=>F&&G.h264Encoder||E&&G.av1Encoder),$=B.filter((G)=>A.has(G.accelerator)),K=(G)=>B.find((N)=>N.accelerator===G);if(u==="cpu")return{selected:"cpu",h264Encoder:void 0,av1Encoder:void 0,warnings:C};let X;if(u!=="auto"){if(!A.has(u))C.push(`Ускоритель "${u}" пока не поддерживается, использую CPU`);else if(X=K(u),!X)throw Error(`Аппаратный ускоритель "${u}" недоступен в системе`)}else if(X=($.length>0?$:[]).sort((N,k)=>(t[k.accelerator]||0)-(t[N.accelerator]||0))[0],!X&&B.length>0)C.push("Доступен аппаратный ускоритель, но он пока не поддерживается пайплайном, использую CPU");let Y=($.length>0?$:[]).sort((G,N)=>(t[N.accelerator]||0)-(t[G.accelerator]||0)),Z=(G)=>{let N=G==="h264"?X?.h264Encoder:X?.av1Encoder;if(N)return{encoder:N,accel:X?.accelerator};let k=Y.find((x)=>G==="h264"?x.h264Encoder:x.av1Encoder);if(k){if(u!=="auto"&&X)C.push(`Выбранный ускоритель "${X.accelerator}" не поддерживает ${G.toUpperCase()}, использую ${k.accelerator}`);return{encoder:G==="h264"?k.h264Encoder:k.av1Encoder,accel:k.accelerator}}if(u!=="auto")C.push(`Ускоритель "${u}" не поддерживает ${G.toUpperCase()}, использую CPU`);return{encoder:void 0,accel:"cpu"}},W=F?Z("h264"):{encoder:void 0,accel:X?.accelerator},J=E?Z("av1"):{encoder:void 0,accel:X?.accelerator};return{selected:X?.accelerator||W.accel||J.accel||"cpu",h264Encoder:W.encoder,av1Encoder:J.encoder,warnings:C}}function G8(D,u){let F=new Set(["nvenc","qsv","vaapi","videotoolbox","v4l2"]),E=(B)=>D.find(($)=>$.accelerator===B);if(u!=="auto"){if(u==="cpu")return{selected:"cpu"};let B=E(u);return{selected:B?B.accelerator:"cpu"}}let C=D.filter((B)=>F.has(B.accelerator));if(C.length===0)return{selected:"cpu"};return{selected:C.sort((B,$)=>(t[$.accelerator]||0)-(t[B.accelerator]||0))[0].accelerator}}function Vu(D,u){if(D.includes("nvenc"))return"p4";if(D.includes("qsv"))return"medium";if(D.includes("amf"))return"balanced";if(D.includes("vaapi"))return"5";if(D.includes("videotoolbox"))return"medium";if(D.includes("v4l2"))return"medium";if(D==="libsvtav1")return"8";if(D==="libx264")return"medium";return u==="av1"?"8":"medium"}var sD=XD(YF(),1);import{statSync as c8}from"node:fs";var _=process.argv.slice(2),ZD,iD,zD,rD=[],j,T,w,y,e,DD;for(let D=0;D<_.length;D++)if(_[D]==="-r"||_[D]==="--resolutions"){let u=[];for(let E=D+1;E<_.length;E++){if(_[E].startsWith("-"))break;u.push(_[E]),D=E}ZD=u.join(",").split(/[,\s]+/).map((E)=>E.trim()).filter((E)=>E.length>0)}else if(_[D]==="-p"||_[D]==="--poster")iD=_[D+1],D++;else if(_[D]==="-c"||_[D]==="--codec"){let F=_[D+1].split(/[,\s]+/).map((C)=>C.trim()).filter(Boolean),E=new Set(["h264","av1"]);for(let C of F)if(!E.has(C))console.error(`❌ Invalid codec: ${C}. Valid options: av1, h264`),process.exit(1);zD=Array.from(new Set(F)),D++}else if(_[D]==="--h264-cq"){if(j=parseInt(_[D+1]),isNaN(j)||j<0||j>51)console.error(`❌ Invalid H.264 CQ value: ${_[D+1]}. Must be 0-51`),process.exit(1);D++}else if(_[D]==="--h264-crf"){if(T=parseInt(_[D+1]),isNaN(T)||T<0||T>51)console.error(`❌ Invalid H.264 CRF value: ${_[D+1]}. Must be 0-51`),process.exit(1);D++}else if(_[D]==="--av1-cq"){if(w=parseInt(_[D+1]),isNaN(w)||w<0||w>51)console.error(`❌ Invalid AV1 CQ value: ${_[D+1]}. Must be 0-51`),process.exit(1);D++}else if(_[D]==="--av1-crf"){if(y=parseInt(_[D+1]),isNaN(y)||y<0||y>63)console.error(`❌ Invalid AV1 CRF value: ${_[D+1]}. Must be 0-63`),process.exit(1);D++}else if(_[D]==="-e"||_[D]==="--encoder"){let u=_[D+1];if(!["auto","nvenc","qsv","amf","cpu","vaapi","videotoolbox","v4l2"].includes(u))console.error(`❌ Invalid accelerator: ${u}. Valid: auto, nvenc, qsv, amf, vaapi, videotoolbox, v4l2, cpu`),process.exit(1);e=u,D++}else if(_[D]==="-d"||_[D]==="--decoder"){let u=_[D+1];if(!["auto","nvenc","qsv","amf","vaapi","videotoolbox","v4l2","cpu"].includes(u))console.error(`❌ Invalid decoder: ${u}. Valid: auto, nvenc, qsv, amf, vaapi, videotoolbox, v4l2, cpu`),process.exit(1);DD=u,D++}else if(!_[D].startsWith("-"))rD.push(_[D]);var d=rD[0],_F=rD[1]||".";if(!d)console.error("❌ Usage: create-vod [output-dir] [options]"),console.error(` -Options:`),console.error(" -r, --resolutions Video resolutions (e.g., 360,480,720 or 720@60,1080@60)"),console.error(" -c, --codec Video codec: av1 or h264 (default: auto = h264 + AV1 if HW)"),console.error(" -f, --format Streaming format: dash or hls (default: auto = dash + hls)"),console.error(" -p, --poster Poster timecode (e.g., 00:00:05 or 10)"),console.error(" -e, --encoder Hardware encoder: auto|nvenc|qsv|amf|vaapi|videotoolbox|v4l2|cpu (default: auto)"),console.error(" -d, --decoder Hardware decoder: auto|nvenc|qsv|amf|vaapi|videotoolbox|v4l2|cpu (default: auto)"),console.error(` +`,"utf-8")}catch(a){}try{await Tu(W,{recursive:!0,force:!0})}catch(a){console.warn(`Warning: Failed to cleanup temp directory: ${W}`)}}}async function N8(D,u,C,F,E,A,B,$,K,X,G,Y,Z,k,_,J,N,U){if(!await r())throw Error("FFmpeg is not installed or not in PATH");if(!await o())throw Error("MP4Box is not installed or not in PATH. Install gpac package.");let W=(q,V,LD,RD)=>{if(U)U({stage:q,percent:V,message:LD,currentProfile:RD})};W("analyzing",0,"Analyzing input video...");let z=await DD(D),j=!N&&z.hasAudio,O=z.duration,M=Math.max(1,Math.ceil(O/F)),T=O/M,p=K&&K!=="auto"?K:"auto",a=await t(),xD=await e(),yF=a.some((q)=>q.av1Encoder),uu=Array.isArray(B)?B:[B],Fu=uu.includes("h264"),MD=uu.includes("av1"),{selected:KD,h264Encoder:SF,av1Encoder:bF,warnings:Eu}=k8(a,p,Fu,MD);if(Eu.length>0)for(let q of Eu)console.warn(`⚠️ ${q}`);let{selected:XD}=Q8(xD,X||"auto");if(MD&&!yF)console.warn("⚠️ AV1 hardware encoder not detected. AV1 will use CPU encoder (slow).");let P=[];if(Fu)P.push("h264");if(MD)P.push("av1");if(P.length===0)P.push("h264");let Cu=$&&$.length>0?Array.from(new Set($)):["dash","hls"],R;if(A&&A.length>0){let q=kD(A,z.width,z.height,z.fps,z.videoBitrate);if(q.errors.length>0){console.warn(` +❌ Profile errors:`);for(let V of q.errors)console.warn(` - ${V}`);console.warn("")}if(q.warnings.length>0){console.warn(` +⚠️ Profile warnings:`);for(let V of q.warnings)console.warn(` - ${V}`);console.warn("")}if(R=q.profiles,R.length===0)throw Error("No valid profiles found in custom list. Check errors above.")}else if(E)R=E;else R=$D(z.width,z.height,z.fps,z.videoBitrate);if(R.length===0)throw Error("No suitable profiles found for input video resolution");let vF=Ru(D,ju(D)),AD=QD(u,vF);try{await Tu(AD,{recursive:!0,force:!0})}catch(q){}await d(AD);let h=[];if(P.includes("h264")){let q=SF||"libx264",V=Lu(q,"h264");h.push({type:"h264",codec:q,preset:V})}if(P.includes("av1")){let q=bF||"libsvtav1",V=Lu(q,"av1");h.push({type:"av1",codec:q,preset:V})}let PF=h.map((q)=>q.type.toUpperCase()).join(" + "),hF=KD==="cpu"?"CPU":KD.toUpperCase();W("analyzing",20,`Using ${PF} encoding (${hF}, decoder ${XD.toUpperCase()})`,void 0);let fF=KD==="cpu"?2:3,OD=new Map;for(let q=0;q{let U3=R.findIndex((dF)=>dF.name===ZD),Xu=25+Ju*40,Yu=Ku/100*(40*cF/R.length);if(W("encoding",Xu+Yu,`Encoding ${V.toUpperCase()} ${ZD}...`,`${V}-${ZD}`),U)U({stage:"encoding",percent:Xu+Yu,currentProfile:`${V}-${ZD}`,profilePercent:Ku,message:`Encoding ${V.toUpperCase()} ${ZD}...`})});OD.set(V,lF)}W("encoding",65,"Stage 1 complete: All codecs and profiles encoded"),W("encoding",70,"Stage 2: Creating segments and manifests...");let{manifestPath:gF,hlsManifestPath:mF}=await Ou(OD,AD,R,T,P,Cu,j),Bu=[];for(let q of OD.values())Bu.push(...Array.from(q.values()));W("encoding",80,"Stage 2 complete: All formats packaged");let Au,Zu;if(Y){W("thumbnails",80,"Generating thumbnail sprites...");let q={width:Z.width||160,height:Z.height||90,interval:Z.interval||1,columns:Z.columns||10},V=await _u(D,AD,z.duration,q);Au=V.spritePath,Zu=V.vttPath,W("thumbnails",90,"Thumbnails generated")}let $u;if(k)W("thumbnails",92,"Generating poster image..."),$u=await Qu(D,AD,_),W("thumbnails",95,"Poster generated");return W("manifest",95,"Finalizing..."),W("complete",100,"Conversion complete!"),{manifestPath:gF,hlsManifestPath:mF,videoPaths:Bu,thumbnailSpritePath:Au,thumbnailVttPath:Zu,posterPath:$u,duration:z.duration,profiles:R,usedNvenc:h.some((q)=>q.codec.includes("nvenc")),selectedAccelerator:KD,selectedDecoder:XD,codecs:P,formats:Cu}}var uD={nvenc:100,qsv:90,amf:80,vaapi:70,videotoolbox:65,v4l2:60,cpu:1};function k8(D,u,C,F){let E=[],A=new Set(["nvenc","qsv","amf","vaapi","videotoolbox","v4l2"]),B=D.filter((N)=>C&&N.h264Encoder||F&&N.av1Encoder),$=B.filter((N)=>A.has(N.accelerator)),K=(N)=>B.find((U)=>U.accelerator===N);if(u==="cpu")return{selected:"cpu",h264Encoder:void 0,av1Encoder:void 0,warnings:E};let X;if(u!=="auto"){if(!A.has(u))E.push(`Ускоритель "${u}" пока не поддерживается, использую CPU`);else if(X=K(u),!X)throw Error(`Аппаратный ускоритель "${u}" недоступен в системе`)}else if(X=($.length>0?$:[]).sort((U,W)=>(uD[W.accelerator]||0)-(uD[U.accelerator]||0))[0],!X&&B.length>0)E.push("Доступен аппаратный ускоритель, но он пока не поддерживается пайплайном, использую CPU");let Y=($.length>0?$:[]).sort((N,U)=>(uD[U.accelerator]||0)-(uD[N.accelerator]||0)),Z=(N)=>{let U=N==="h264"?X?.h264Encoder:X?.av1Encoder;if(U)return{encoder:U,accel:X?.accelerator};let W=Y.find((z)=>N==="h264"?z.h264Encoder:z.av1Encoder);if(W){if(u!=="auto"&&X)E.push(`Выбранный ускоритель "${X.accelerator}" не поддерживает ${N.toUpperCase()}, использую ${W.accelerator}`);return{encoder:N==="h264"?W.h264Encoder:W.av1Encoder,accel:W.accelerator}}if(u!=="auto")E.push(`Ускоритель "${u}" не поддерживает ${N.toUpperCase()}, использую CPU`);return{encoder:void 0,accel:"cpu"}},k=C?Z("h264"):{encoder:void 0,accel:X?.accelerator},_=F?Z("av1"):{encoder:void 0,accel:X?.accelerator};return{selected:X?.accelerator||k.accel||_.accel||"cpu",h264Encoder:k.encoder,av1Encoder:_.encoder,warnings:E}}function Q8(D,u){let C=new Set(["nvenc","qsv","vaapi","videotoolbox","v4l2"]),F=(B)=>D.find(($)=>$.accelerator===B);if(u!=="auto"){if(u==="cpu")return{selected:"cpu"};let B=F(u);return{selected:B?B.accelerator:"cpu"}}let E=D.filter((B)=>C.has(B.accelerator));if(E.length===0)return{selected:"cpu"};return{selected:E.sort((B,$)=>(uD[$.accelerator]||0)-(uD[B.accelerator]||0))[0].accelerator}}function Lu(D,u){if(D.includes("nvenc"))return"p4";if(D.includes("qsv"))return"medium";if(D.includes("amf"))return"balanced";if(D.includes("vaapi"))return"5";if(D.includes("videotoolbox"))return"medium";if(D.includes("v4l2"))return"medium";if(D==="libsvtav1")return"8";if(D==="libx264")return"medium";return u==="av1"?"8":"medium"}var iD=YD(NF(),1);import{statSync as s8}from"node:fs";var Q=process.argv.slice(2),JD,oD,qD,tD=[],w,y,S,b,FD,ED,eD=!1;for(let D=0;DF.trim()).filter((F)=>F.length>0)}else if(Q[D]==="-p"||Q[D]==="--poster")oD=Q[D+1],D++;else if(Q[D]==="-c"||Q[D]==="--codec"){let C=Q[D+1].split(/[,\s]+/).map((E)=>E.trim()).filter(Boolean),F=new Set(["h264","av1"]);for(let E of C)if(!F.has(E))console.error(`❌ Invalid codec: ${E}. Valid options: av1, h264`),process.exit(1);qD=Array.from(new Set(C)),D++}else if(Q[D]==="--h264-cq"){if(w=parseInt(Q[D+1]),isNaN(w)||w<0||w>51)console.error(`❌ Invalid H.264 CQ value: ${Q[D+1]}. Must be 0-51`),process.exit(1);D++}else if(Q[D]==="--h264-crf"){if(y=parseInt(Q[D+1]),isNaN(y)||y<0||y>51)console.error(`❌ Invalid H.264 CRF value: ${Q[D+1]}. Must be 0-51`),process.exit(1);D++}else if(Q[D]==="--av1-cq"){if(S=parseInt(Q[D+1]),isNaN(S)||S<0||S>51)console.error(`❌ Invalid AV1 CQ value: ${Q[D+1]}. Must be 0-51`),process.exit(1);D++}else if(Q[D]==="--av1-crf"){if(b=parseInt(Q[D+1]),isNaN(b)||b<0||b>63)console.error(`❌ Invalid AV1 CRF value: ${Q[D+1]}. Must be 0-63`),process.exit(1);D++}else if(Q[D]==="-e"||Q[D]==="--encoder"){let u=Q[D+1];if(!["auto","nvenc","qsv","amf","cpu","vaapi","videotoolbox","v4l2"].includes(u))console.error(`❌ Invalid accelerator: ${u}. Valid: auto, nvenc, qsv, amf, vaapi, videotoolbox, v4l2, cpu`),process.exit(1);FD=u,D++}else if(Q[D]==="-d"||Q[D]==="--decoder"){let u=Q[D+1];if(!["auto","nvenc","qsv","amf","vaapi","videotoolbox","v4l2","cpu"].includes(u))console.error(`❌ Invalid decoder: ${u}. Valid: auto, nvenc, qsv, amf, vaapi, videotoolbox, v4l2, cpu`),process.exit(1);ED=u,D++}else if(Q[D]==="-m"||Q[D]==="--muted")eD=!0;else if(!Q[D].startsWith("-"))tD.push(Q[D]);var s=tD[0],VF=tD[1]||".";if(!s)console.error("❌ Usage: create-vod [output-dir] [options]"),console.error(` +Options:`),console.error(" -r, --resolutions Video resolutions (e.g., 360,480,720 or 720@60,1080@60)"),console.error(" -c, --codec Video codec: av1 or h264 (default: auto = h264 + AV1 if HW)"),console.error(" -f, --format Streaming format: dash or hls (default: auto = dash + hls)"),console.error(" -p, --poster Poster timecode (e.g., 00:00:05 or 10)"),console.error(" -e, --encoder Hardware encoder: auto|nvenc|qsv|amf|vaapi|videotoolbox|v4l2|cpu (default: auto)"),console.error(" -d, --decoder Hardware decoder: auto|nvenc|qsv|amf|vaapi|videotoolbox|v4l2|cpu (default: auto)"),console.error(" -m, --muted Disable audio track (no audio in output)"),console.error(` Quality Options (override defaults):`),console.error(" --h264-cq H.264 GPU CQ value (0-51, lower = better, default: auto)"),console.error(" --h264-crf H.264 CPU CRF value (0-51, lower = better, default: auto)"),console.error(" --av1-cq AV1 GPU CQ value (0-51, lower = better, default: auto)"),console.error(" --av1-crf AV1 CPU CRF value (0-63, lower = better, default: auto)"),console.error(` Examples:`),console.error(" create-vod video.mp4"),console.error(" create-vod video.mp4 ./output"),console.error(" create-vod video.mp4 -r 360,480,720"),console.error(" create-vod video.mp4 -c av1 --av1-cq 40"),console.error(" create-vod video.mp4 -c h264 --h264-cq 30"),console.error(" create-vod video.mp4 -f hls"),console.error(" create-vod video.mp4 -r 720@60,1080@60,2160@60 -c av1 -f dash"),console.error(" create-vod video.mp4 -p 00:00:05"),console.error(" create-vod video.mp4 ./output -r 720,1080 -p 10 --h264-cq 28"),process.exit(1);console.log(`\uD83D\uDD0D Checking system... -`);var zF=await s(),qF=await a(),IF=await i(),l8=await r(),p8=IF.some((D)=>D.av1Encoder),qD={nvenc:100,qsv:90,amf:80,vaapi:70,videotoolbox:65,v4l2:60,cpu:1},d8={nvenc:"h264_nvenc",qsv:"h264_qsv",amf:"h264_amf",vaapi:"h264_vaapi",videotoolbox:"h264_videotoolbox",v4l2:"h264_v4l2m2m",cpu:"libx264"},n8=Array.from(new Set([...IF.map((D)=>D.accelerator),"cpu"])),s8=Array.from(new Set([...l8.map((D)=>D.accelerator),"cpu"]));async function a8(){let D=[];for(let u of n8){if(u==="amf")continue;let F=d8[u]||"libx264";if(await YD(F))D.push(u)}return D}async function i8(){let D=[];for(let u of s8){if(u==="cpu"){D.push("cpu");continue}if(await GD(u,d))D.push(u)}return D}var HF=await a8(),VF=await i8(),uD=HF.slice().sort((D,u)=>(qD[u]||0)-(qD[D]||0))[0],FD=VF.slice().sort((D,u)=>(qD[u]||0)-(qD[D]||0))[0];console.log(`FFmpeg: ${zF?"✅":"❌"}`);console.log(`MP4Box: ${qF?"✅":"❌"}`);var GF=Array.from(new Set(HF.map((D)=>D.toUpperCase()))),UF=Array.from(new Set(VF.map((D)=>D.toUpperCase()))),WF=e?e.toUpperCase():uD&&uD.toUpperCase()||"CPU",xF=GF.length>0?GF:["CPU"],NF=DD?DD.toUpperCase():FD&&FD.toUpperCase()||"CPU",MF=UF.length>0?UF:["CPU"];console.log(`Encoder: ${WF==="AUTO"?uD&&uD.toUpperCase()||"CPU":WF} (${xF.join(", ")})`);console.log(`Decoder: ${NF==="AUTO"?FD&&FD.toUpperCase()||"CPU":NF} (${MF.join(", ")})`);console.log("");if(!zF)console.error("❌ FFmpeg not found. Please install FFmpeg first."),process.exit(1);if(!qF)console.error("❌ MP4Box not found. Please install: sudo pacman -S gpac"),process.exit(1);var oD=zD&&zD.length>0?zD:["h264"],ID=oD.includes("h264"),HD=oD.includes("av1");if(!ID)console.warn("⚠️ H.264 is mandatory for compatibility. Adding H.264."),ID=!0;if(HD&&!p8)console.error("⚠️ AV1 requested but no hardware AV1 encoder found."),console.error(" CPU-based AV1 encoding (libsvtav1) will be VERY slow."),console.error(` Consider using --codec h264 for faster encoding. -`);var r8=!0,o8=!0;console.log(`\uD83D\uDCCA Analyzing video... -`);var V=await o(d),t8=c8(d),e8=(t8.size/1048576).toFixed(2);console.log("\uD83D\uDCF9 Video Information:");console.log(` File: ${d}`);console.log(` Size: ${e8} MB`);console.log(` Resolution: ${V.width}x${V.height}`);console.log(` FPS: ${V.fps.toFixed(2)}`);console.log(` Duration: ${Math.floor(V.duration/60)}m ${Math.floor(V.duration%60)}s`);console.log(` Codec: ${V.codec}`);if(V.videoBitrate)console.log(` Video Bitrate: ${(V.videoBitrate/1000).toFixed(2)} Mbps`);if(V.audioBitrate)console.log(` Audio Bitrate: ${V.audioBitrate} kbps`);var aD=[];if(ZD&&ZD.length>0){let D=ND(ZD,V.width,V.height,V.fps,V.videoBitrate);if(D.errors.length>0)console.error(` +`);var HF=await r(),xF=await o(),MF=await t(),a8=await e(),i8=MF.some((D)=>D.av1Encoder),ID={nvenc:100,qsv:90,amf:80,vaapi:70,videotoolbox:65,v4l2:60,cpu:1},r8={nvenc:"h264_nvenc",qsv:"h264_qsv",amf:"h264_amf",vaapi:"h264_vaapi",videotoolbox:"h264_videotoolbox",v4l2:"h264_v4l2m2m",cpu:"libx264"},o8=Array.from(new Set([...MF.map((D)=>D.accelerator),"cpu"])),t8=Array.from(new Set([...a8.map((D)=>D.accelerator),"cpu"]));async function e8(){let D=[];for(let u of o8){if(u==="amf")continue;let C=r8[u]||"libx264";if(await GD(C))D.push(u)}return D}async function D3(){let D=[];for(let u of t8){if(u==="cpu"){D.push("cpu");continue}if(await UD(u,s))D.push(u)}return D}var OF=await e8(),LF=await D3(),CD=OF.slice().sort((D,u)=>(ID[u]||0)-(ID[D]||0))[0],BD=LF.slice().sort((D,u)=>(ID[u]||0)-(ID[D]||0))[0];console.log(`FFmpeg: ${HF?"✅":"❌"}`);console.log(`MP4Box: ${xF?"✅":"❌"}`);var kF=Array.from(new Set(OF.map((D)=>D.toUpperCase()))),QF=Array.from(new Set(LF.map((D)=>D.toUpperCase()))),_F=FD?FD.toUpperCase():CD&&CD.toUpperCase()||"CPU",RF=kF.length>0?kF:["CPU"],zF=ED?ED.toUpperCase():BD&&BD.toUpperCase()||"CPU",jF=QF.length>0?QF:["CPU"];console.log(`Encoder: ${_F==="AUTO"?CD&&CD.toUpperCase()||"CPU":_F} (${RF.join(", ")})`);console.log(`Decoder: ${zF==="AUTO"?BD&&BD.toUpperCase()||"CPU":zF} (${jF.join(", ")})`);console.log("");if(!HF)console.error("❌ FFmpeg not found. Please install FFmpeg first."),process.exit(1);if(!xF)console.error("❌ MP4Box not found. Please install: sudo pacman -S gpac"),process.exit(1);var Du=qD&&qD.length>0?qD:["h264"],VD=Du.includes("h264"),HD=Du.includes("av1");if(!VD)console.warn("⚠️ H.264 is mandatory for compatibility. Adding H.264."),VD=!0;if(HD&&!i8)console.error("⚠️ AV1 requested but no hardware AV1 encoder found."),console.error(" CPU-based AV1 encoding (libsvtav1) will be VERY slow."),console.error(` Consider using --codec h264 for faster encoding. +`);var u3=!0,F3=!0;console.log(`\uD83D\uDCCA Analyzing video... +`);var x=await DD(s),E3=s8(s),C3=(E3.size/1048576).toFixed(2);console.log("\uD83D\uDCF9 Video Information:");console.log(` File: ${s}`);console.log(` Size: ${C3} MB`);console.log(` Resolution: ${x.width}x${x.height}`);console.log(` FPS: ${x.fps.toFixed(2)}`);console.log(` Duration: ${Math.floor(x.duration/60)}m ${Math.floor(x.duration%60)}s`);console.log(` Codec: ${x.codec}`);if(x.videoBitrate)console.log(` Video Bitrate: ${(x.videoBitrate/1000).toFixed(2)} Mbps`);if(x.audioBitrate)console.log(` Audio Bitrate: ${x.audioBitrate} kbps`);var rD=[];if(JD&&JD.length>0){let D=kD(JD,x.width,x.height,x.fps,x.videoBitrate);if(D.errors.length>0)console.error(` ❌ Profile errors:`),D.errors.forEach((u)=>console.error(` - ${u}`)),process.exit(1);if(D.warnings.length>0)console.warn(` -⚠️ Profile warnings:`),D.warnings.forEach((u)=>console.warn(` - ${u}`));aD=D.profiles.map((u)=>u.name)}else aD=AD(V.width,V.height,V.fps,V.videoBitrate).map((u)=>u.name);var D3=[r8?"DASH (manifest.mpd)":null,o8?"HLS (master.m3u8)":null].filter(Boolean).join(", "),u3=!0,F3=iD||"00:00:00",E3=[ID?"h264":null,HD?"av1":null].filter(Boolean).join(", "),C3=!HD&&oD.includes("av1")?" (AV1 disabled: no HW)":"",OF=uD&&uD.toUpperCase()||"CPU",LF=FD&&FD.toUpperCase()||"CPU",kF=e?e.toUpperCase():OF,QF=DD?DD.toUpperCase():LF,B3=kF==="AUTO"?OF:kF,A3=QF==="AUTO"?LF:QF,Z3=xF.join(", "),$3=MF.join(", ");console.log(` -\uD83D\uDCE6 Parameters:`);console.log(` Input: ${d}`);console.log(` Output: ${_F}`);console.log(` Codec: ${E3}${C3}`);console.log(` Profiles: ${aD.join(", ")}`);console.log(` Manifests: ${D3}`);console.log(` Poster: ${F3} (will be generated)`);console.log(` Thumbnails: ${u3?"yes (with VTT)":"no"}`);console.log(` Encoder: ${B3} (available: ${Z3})`);console.log(` Decoder: ${A3} (available: ${$3})`);var m;if(j!==void 0||T!==void 0||w!==void 0||y!==void 0){if(m={},j!==void 0||T!==void 0){if(m.h264={},j!==void 0)m.h264.cq=j;if(T!==void 0)m.h264.crf=T;console.log(`\uD83C\uDF9A️ H.264 Quality: ${j!==void 0?`CQ ${j}`:""}${T!==void 0?` CRF ${T}`:""}`)}if(w!==void 0||y!==void 0){if(m.av1={},w!==void 0)m.av1.cq=w;if(y!==void 0)m.av1.crf=y;console.log(`\uD83C\uDF9A️ AV1 Quality: ${w!==void 0?`CQ ${w}`:""}${y!==void 0?` CRF ${y}`:""}`)}}console.log(` +⚠️ Profile warnings:`),D.warnings.forEach((u)=>console.warn(` - ${u}`));rD=D.profiles.map((u)=>u.name)}else rD=$D(x.width,x.height,x.fps,x.videoBitrate).map((u)=>u.name);var B3=[u3?"DASH (manifest.mpd)":null,F3?"HLS (master.m3u8)":null].filter(Boolean).join(", "),A3=!0,Z3=oD||"00:00:00",$3=[VD?"h264":null,HD?"av1":null].filter(Boolean).join(", "),J3=!HD&&Du.includes("av1")?" (AV1 disabled: no HW)":"",TF=CD&&CD.toUpperCase()||"CPU",wF=BD&&BD.toUpperCase()||"CPU",qF=FD?FD.toUpperCase():TF,IF=ED?ED.toUpperCase():wF,K3=qF==="AUTO"?TF:qF,X3=IF==="AUTO"?wF:IF,Y3=RF.join(", "),G3=jF.join(", ");console.log(` +\uD83D\uDCE6 Parameters:`);console.log(` Input: ${s}`);console.log(` Output: ${VF}`);console.log(` Codec: ${$3}${J3}`);console.log(` Profiles: ${rD.join(", ")}`);console.log(` Manifests: ${B3}`);console.log(` Poster: ${Z3} (will be generated)`);console.log(` Thumbnails: ${A3?"yes (with VTT)":"no"}`);console.log(` Encoder: ${K3} (available: ${Y3})`);console.log(` Decoder: ${X3} (available: ${G3})`);console.log(` Audio: ${eD?"disabled (muted)":"enabled"}`);var c;if(w!==void 0||y!==void 0||S!==void 0||b!==void 0){if(c={},w!==void 0||y!==void 0){if(c.h264={},w!==void 0)c.h264.cq=w;if(y!==void 0)c.h264.crf=y;console.log(`\uD83C\uDF9A️ H.264 Quality: ${w!==void 0?`CQ ${w}`:""}${y!==void 0?` CRF ${y}`:""}`)}if(S!==void 0||b!==void 0){if(c.av1={},S!==void 0)c.av1.cq=S;if(b!==void 0)c.av1.crf=b;console.log(`\uD83C\uDF9A️ AV1 Quality: ${S!==void 0?`CQ ${S}`:""}${b!==void 0?` CRF ${b}`:""}`)}}console.log(` \uD83D\uDE80 Starting conversion... -`);var _D=new sD.default.MultiBar({format:"{stage} | {bar} | {percentage}% | {name}",barCompleteChar:"█",barIncompleteChar:"░",hideCursor:!0,clearOnComplete:!1,stopOnComplete:!0},sD.default.Presets.shades_classic),dD={},nD=null;try{let D=Date.now(),u=await vD({input:d,outputDir:_F,customProfiles:ZD,posterTimecode:iD,codec:[...ID?["h264"]:[],...HD?["av1"]:[]],segmentDuration:2,hardwareAccelerator:e,hardwareDecoder:DD,quality:m,generateThumbnails:!0,generatePoster:!0,parallel:!0,onProgress:(C)=>{let A=C.stage==="encoding"?"Encoding":C.stage==="thumbnails"?"Thumbnails":C.stage==="manifest"?"Manifest":C.stage==="analyzing"?"Analyzing":"Complete";if(C.stage==="encoding"&&C.currentProfile){if(!dD[C.currentProfile])dD[C.currentProfile]=_D.create(100,0,{stage:"Encode",name:C.currentProfile});let B=C.profilePercent??C.percent;dD[C.currentProfile].update(B,{stage:"Encode",name:C.currentProfile})}if(!nD)nD=_D.create(100,0,{stage:A,name:"Overall"});nD.update(C.percent,{stage:A,name:C.message||"Overall"})}});_D.stop();let E=((Date.now()-D)/1000).toFixed(2);console.log(` -✅ Conversion completed successfully! (${E}s) -`)}catch(D){_D.stop(),console.error(` +`);var zD=new iD.default.MultiBar({format:"{stage} | {bar} | {percentage}% | {name}",barCompleteChar:"█",barIncompleteChar:"░",hideCursor:!0,clearOnComplete:!1,stopOnComplete:!0},iD.default.Presets.shades_classic),sD={},aD=null;try{let D=Date.now(),u=await hD({input:s,outputDir:VF,customProfiles:JD,posterTimecode:oD,codec:[...VD?["h264"]:[],...HD?["av1"]:[]],segmentDuration:2,hardwareAccelerator:FD,hardwareDecoder:ED,quality:c,generateThumbnails:!0,generatePoster:!0,muted:eD,parallel:!0,onProgress:(E)=>{let A=E.stage==="encoding"?"Encoding":E.stage==="thumbnails"?"Thumbnails":E.stage==="manifest"?"Manifest":E.stage==="analyzing"?"Analyzing":"Complete";if(E.stage==="encoding"&&E.currentProfile){if(!sD[E.currentProfile])sD[E.currentProfile]=zD.create(100,0,{stage:"Encode",name:E.currentProfile});let B=E.profilePercent??E.percent;sD[E.currentProfile].update(B,{stage:"Encode",name:E.currentProfile})}if(!aD)aD=zD.create(100,0,{stage:A,name:"Overall"});aD.update(E.percent,{stage:A,name:E.message||"Overall"})}});zD.stop();let F=((Date.now()-D)/1000).toFixed(2);console.log(` +✅ Conversion completed successfully! (${F}s) +`)}catch(D){zD.stop(),console.error(` ❌ Error during conversion:`),console.error(D),process.exit(1)} diff --git a/src/cli.ts b/src/cli.ts index 116525d..ac77020 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -31,6 +31,7 @@ let av1CQ: number | undefined; let av1CRF: number | undefined; let accelerator: HardwareAccelerationOption | undefined; let decoder: HardwareAccelerationOption | undefined; +let muted = false; // First pass: extract flags and their values for (let i = 0; i < args.length; i++) { @@ -113,6 +114,8 @@ for (let i = 0; i < args.length; i++) { } decoder = acc as HardwareAccelerationOption; i++; + } else if (args[i] === '-m' || args[i] === '--muted') { + muted = true; } else if (!args[i].startsWith('-')) { // Positional argument positionalArgs.push(args[i]); @@ -132,6 +135,7 @@ if (!input) { console.error(' -p, --poster Poster timecode (e.g., 00:00:05 or 10)'); console.error(' -e, --encoder Hardware encoder: auto|nvenc|qsv|amf|vaapi|videotoolbox|v4l2|cpu (default: auto)'); console.error(' -d, --decoder Hardware decoder: auto|nvenc|qsv|amf|vaapi|videotoolbox|v4l2|cpu (default: auto)'); + console.error(' -m, --muted Disable audio track (no audio in output)'); console.error('\nQuality Options (override defaults):'); console.error(' --h264-cq H.264 GPU CQ value (0-51, lower = better, default: auto)'); console.error(' --h264-crf H.264 CPU CRF value (0-51, lower = better, default: auto)'); @@ -351,6 +355,7 @@ console.log(` Poster: ${posterPlanned} (will be generated)`); console.log(` Thumbnails: ${thumbnailsPlanned ? 'yes (with VTT)' : 'no'}`); console.log(` Encoder: ${acceleratorDisplay} (available: ${encoderListDisplay})`); console.log(` Decoder: ${decoderDisplay} (available: ${decoderListDisplay})`); +console.log(` Audio: ${muted ? 'disabled (muted)' : 'enabled'}`); // Build quality settings if any are specified let quality: QualitySettings | undefined; @@ -405,6 +410,7 @@ try { quality, generateThumbnails: true, generatePoster: true, + muted, parallel: true, onProgress: (progress) => { const stageName = progress.stage === 'encoding' ? 'Encoding' : diff --git a/src/core/converter.ts b/src/core/converter.ts index 464b415..673900f 100644 --- a/src/core/converter.ts +++ b/src/core/converter.ts @@ -51,6 +51,7 @@ export async function convertToDash( generatePoster: shouldGeneratePoster = true, posterTimecode = '00:00:00', parallel = true, + muted = false, onProgress } = options; @@ -97,6 +98,7 @@ Formats: ${formats?.join(',') || 'dash,hls'} shouldGeneratePoster, posterTimecode, parallel, + muted, onProgress ); } finally { @@ -137,6 +139,7 @@ async function convertToDashInternal( generatePosterFlag: boolean, posterTimecode: string, parallel: boolean, + muted: boolean, onProgress?: (progress: ConversionProgress) => void ): Promise { @@ -160,7 +163,12 @@ async function convertToDashInternal( // Get video metadata const metadata = await getVideoMetadata(input); - const hasAudio = metadata.hasAudio; + const hasAudio = !muted && metadata.hasAudio; + const durationSeconds = metadata.duration; + + // Подгоняем длительность сегмента под общий хронометраж, чтобы не оставался короткий хвост + const segmentCount = Math.max(1, Math.ceil(durationSeconds / segmentDuration)); + const effectiveSegmentDuration = durationSeconds / segmentCount; // Determine hardware accelerator (auto by default) const preferredAccelerator: HardwareAccelerationOption = @@ -311,13 +319,14 @@ async function convertToDashInternal( videoCodec, codecPreset, metadata.duration, - segmentDuration, + effectiveSegmentDuration, metadata.audioBitrate, parallel, maxConcurrent, type, // Pass codec type to differentiate output files codecQuality, // Pass quality settings (CQ/CRF) undefined, // optimizations - for future use + muted, selectedDecoder === 'cpu' ? undefined : selectedDecoder, (profileName, percent) => { const profileIndex = profiles.findIndex(p => p.name === profileName); @@ -350,7 +359,7 @@ async function convertToDashInternal( codecMP4Paths, videoOutputDir, profiles, - segmentDuration, + effectiveSegmentDuration, codecsSelected, formatsSelected, hasAudio diff --git a/src/core/encoding.ts b/src/core/encoding.ts index 8371d47..48dd7e7 100644 --- a/src/core/encoding.ts +++ b/src/core/encoding.ts @@ -53,6 +53,7 @@ export async function encodeProfileToMP4( codecType: 'h264' | 'av1', qualitySettings?: CodecQualitySettings, optimizations?: VideoOptimizations, + muted: boolean = false, decoderAccel?: HardwareAccelerator, onProgress?: (percent: number) => void ): Promise { @@ -157,12 +158,14 @@ export async function encodeProfileToMP4( // Build video filter chain const filters: string[] = []; + const targetWidth = profile.width; + const targetHeight = profile.height; if (decoderAccel === 'nvenc') { - // CUDA path: keep frames on GPU - filters.push(`scale_cuda=${profile.width}:${profile.height}`); + // CUDA path: вписываем в профиль с сохранением исходного AR + filters.push(`scale_cuda=${targetWidth}:${targetHeight}:force_original_aspect_ratio=decrease:force_divisible_by=2`); } else { - filters.push(`scale=${profile.width}:${profile.height}`); + filters.push(`scale=${targetWidth}:${targetHeight}:force_original_aspect_ratio=decrease:force_divisible_by=2`); } // Apply optimizations (for future use) @@ -178,17 +181,26 @@ export async function encodeProfileToMP4( } } + // Центрируем кадр, чтобы браузеры (Firefox/videotoolbox) не игнорировали PAR + filters.push( + `pad=${targetWidth}:${targetHeight}:(ow-iw)/2:(oh-ih)/2`, + 'setsar=1' + ); + args.push('-vf', filters.join(',')); - // Audio encoding - // Select optimal bitrate based on source (don't upscale) - const targetAudioBitrate = parseInt(profile.audioBitrate) || 256; - const optimalAudioBitrate = selectAudioBitrate(sourceAudioBitrate, targetAudioBitrate); - args.push('-c:a', 'aac', '-b:a', optimalAudioBitrate); - - // Audio optimizations - if (optimizations?.audioNormalize) { - args.push('-af', 'loudnorm'); + if (!muted) { + // Audio encoding + const targetAudioBitrate = parseInt(profile.audioBitrate) || 256; + const optimalAudioBitrate = selectAudioBitrate(sourceAudioBitrate, targetAudioBitrate); + args.push('-c:a', 'aac', '-b:a', optimalAudioBitrate); + + // Audio optimizations + if (optimizations?.audioNormalize) { + args.push('-af', 'loudnorm'); + } + } else { + args.push('-an'); // без аудио дорожки } // Output @@ -217,6 +229,7 @@ export async function encodeProfilesToMP4( codecType: 'h264' | 'av1', qualitySettings?: CodecQualitySettings, optimizations?: VideoOptimizations, + muted: boolean = false, decoderAccel?: HardwareAccelerator, onProgress?: (profileName: string, percent: number) => void ): Promise> { @@ -239,6 +252,7 @@ export async function encodeProfilesToMP4( codecType, qualitySettings, optimizations, + muted, decoderAccel, (percent) => { if (onProgress) { @@ -269,6 +283,7 @@ export async function encodeProfilesToMP4( codecType, qualitySettings, optimizations, + muted, decoderAccel, (percent) => { if (onProgress) { diff --git a/src/types/index.ts b/src/types/index.ts index edcd961..ee881c6 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -81,10 +81,13 @@ export interface DashConvertOptions { /** Streaming formats: list (default: ['dash','hls']) */ formats?: StreamingFormat[]; - /** Предпочитаемый аппаратный ускоритель (auto по умолчанию) */ + /** Предпочитаемый аппаратный ускоритель (auto по умолчанию) */ hardwareAccelerator?: HardwareAccelerationOption; /** Предпочитаемый аппаратный ускоритель для декодера (auto по умолчанию) */ hardwareDecoder?: HardwareAccelerationOption; + + /** Отключить аудиодорожку (muted). По умолчанию false. */ + muted?: boolean; /** Quality settings for video encoding (CQ/CRF values) */ quality?: QualitySettings; diff --git a/src/utils/video.ts b/src/utils/video.ts index 3435e9b..ede0f22 100644 --- a/src/utils/video.ts +++ b/src/utils/video.ts @@ -90,13 +90,16 @@ export function selectAudioBitrate( sourceAudioBitrate: number | undefined, targetBitrate: number = 256 ): string { + const MIN_AUDIO_KBPS = 64; // не опускаться ниже базового качества + if (!sourceAudioBitrate) { // If we can't detect source bitrate, use target return `${targetBitrate}k`; } - // Use minimum of source and target (no upscaling) - const optimalBitrate = Math.min(sourceAudioBitrate, targetBitrate); + // Не занижаем слишком низко: clamp к минималке, но не выше целевого + const clampedSource = Math.max(sourceAudioBitrate, MIN_AUDIO_KBPS); + const optimalBitrate = Math.min(clampedSource, targetBitrate); // Round to common bitrate values for consistency if (optimalBitrate <= 64) return '64k'; diff --git a/web-test/dash.all.min.js b/web-test/dash.all.min.js new file mode 100644 index 0000000..1d16b18 --- /dev/null +++ b/web-test/dash.all.min.js @@ -0,0 +1,3 @@ +/*! For license information please see dash.all.min.js.LICENSE.txt */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.dashjs=e():t.dashjs=e()}(self,(function(){return function(){var t={7267:function(t,e){"use strict";e.byteLength=function(t){var e=l(t),n=e[0],a=e[1];return 3*(n+a)/4-a},e.toByteArray=function(t){var e,n,i=l(t),o=i[0],s=i[1],u=new r(function(t,e,n){return 3*(e+n)/4-n}(0,o,s)),c=0,d=s>0?o-4:o;for(n=0;n>16&255,u[c++]=e>>8&255,u[c++]=255&e;return 2===s&&(e=a[t.charCodeAt(n)]<<2|a[t.charCodeAt(n+1)]>>4,u[c++]=255&e),1===s&&(e=a[t.charCodeAt(n)]<<10|a[t.charCodeAt(n+1)]<<4|a[t.charCodeAt(n+2)]>>2,u[c++]=e>>8&255,u[c++]=255&e),u},e.fromByteArray=function(t){for(var e,a=t.length,r=a%3,i=[],o=16383,l=0,u=a-r;lu?u:l+o));return 1===r?(e=t[a-1],i.push(n[e>>2]+n[e<<4&63]+"==")):2===r&&(e=(t[a-2]<<8)+t[a-1],i.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+"=")),i.join("")};for(var n=[],a=[],r="undefined"!=typeof Uint8Array?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0;o<64;++o)n[o]=i[o],a[i.charCodeAt(o)]=o;function l(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. Length must be a multiple of 4");var n=t.indexOf("=");return-1===n&&(n=e),[n,n===e?0:4-n%4]}function s(t,e,a){for(var r,i,o=[],l=e;l>18&63]+n[i>>12&63]+n[i>>6&63]+n[63&i]);return o.join("")}a["-".charCodeAt(0)]=62,a["_".charCodeAt(0)]=63},44:function(t,e,n){"use strict";var a=n(7267),r=n(7986),i="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=s,e.SlowBuffer=function(t){return+t!=t&&(t=0),s.alloc(+t)},e.INSPECT_MAX_BYTES=50;var o=2147483647;function l(t){if(t>o)throw new RangeError('The value "'+t+'" is invalid for option "size"');var e=new Uint8Array(t);return Object.setPrototypeOf(e,s.prototype),e}function s(t,e,n){if("number"==typeof t){if("string"==typeof e)throw new TypeError('The "string" argument must be of type string. Received type number');return d(t)}return u(t,e,n)}function u(t,e,n){if("string"==typeof t)return function(t,e){if("string"==typeof e&&""!==e||(e="utf8"),!s.isEncoding(e))throw new TypeError("Unknown encoding: "+e);var n=0|h(t,e),a=l(n),r=a.write(t,e);return r!==n&&(a=a.slice(0,r)),a}(t,e);if(ArrayBuffer.isView(t))return function(t){if(B(t,Uint8Array)){var e=new Uint8Array(t);return g(e.buffer,e.byteOffset,e.byteLength)}return f(t)}(t);if(null==t)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);if(B(t,ArrayBuffer)||t&&B(t.buffer,ArrayBuffer))return g(t,e,n);if("undefined"!=typeof SharedArrayBuffer&&(B(t,SharedArrayBuffer)||t&&B(t.buffer,SharedArrayBuffer)))return g(t,e,n);if("number"==typeof t)throw new TypeError('The "value" argument must not be of type number. Received type number');var a=t.valueOf&&t.valueOf();if(null!=a&&a!==t)return s.from(a,e,n);var r=function(t){if(s.isBuffer(t)){var e=0|m(t.length),n=l(e);return 0===n.length||t.copy(n,0,0,e),n}return void 0!==t.length?"number"!=typeof t.length||q(t.length)?l(0):f(t):"Buffer"===t.type&&Array.isArray(t.data)?f(t.data):void 0}(t);if(r)return r;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof t[Symbol.toPrimitive])return s.from(t[Symbol.toPrimitive]("string"),e,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t)}function c(t){if("number"!=typeof t)throw new TypeError('"size" argument must be of type number');if(t<0)throw new RangeError('The value "'+t+'" is invalid for option "size"')}function d(t){return c(t),l(t<0?0:0|m(t))}function f(t){for(var e=t.length<0?0:0|m(t.length),n=l(e),a=0;a=o)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+o.toString(16)+" bytes");return 0|t}function h(t,e){if(s.isBuffer(t))return t.length;if(ArrayBuffer.isView(t)||B(t,ArrayBuffer))return t.byteLength;if("string"!=typeof t)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof t);var n=t.length,a=arguments.length>2&&!0===arguments[2];if(!a&&0===n)return 0;for(var r=!1;;)switch(e){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return F(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return U(t).length;default:if(r)return a?-1:F(t).length;e=(""+e).toLowerCase(),r=!0}}function p(t,e,n){var a=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return C(this,e,n);case"utf8":case"utf-8":return I(this,e,n);case"ascii":return R(this,e,n);case"latin1":case"binary":return N(this,e,n);case"base64":return w(this,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return x(this,e,n);default:if(a)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),a=!0}}function b(t,e,n){var a=t[e];t[e]=t[n],t[n]=a}function y(t,e,n,a,r){if(0===t.length)return-1;if("string"==typeof n?(a=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),q(n=+n)&&(n=r?0:t.length-1),n<0&&(n=t.length+n),n>=t.length){if(r)return-1;n=t.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof e&&(e=s.from(e,a)),s.isBuffer(e))return 0===e.length?-1:E(t,e,n,a,r);if("number"==typeof e)return e&=255,"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(t,e,n):Uint8Array.prototype.lastIndexOf.call(t,e,n):E(t,[e],n,a,r);throw new TypeError("val must be string, number or Buffer")}function E(t,e,n,a,r){var i,o=1,l=t.length,s=e.length;if(void 0!==a&&("ucs2"===(a=String(a).toLowerCase())||"ucs-2"===a||"utf16le"===a||"utf-16le"===a)){if(t.length<2||e.length<2)return-1;o=2,l/=2,s/=2,n/=2}function u(t,e){return 1===o?t[e]:t.readUInt16BE(e*o)}if(r){var c=-1;for(i=n;il&&(n=l-s),i=n;i>=0;i--){for(var d=!0,f=0;fr&&(a=r):a=r;var i=e.length;a>i/2&&(a=i/2);for(var o=0;o>8,r=n%256,i.push(r),i.push(a);return i}(e,t.length-n),t,n,a)}function w(t,e,n){return 0===e&&n===t.length?a.fromByteArray(t):a.fromByteArray(t.slice(e,n))}function I(t,e,n){n=Math.min(t.length,n);for(var a=[],r=e;r239?4:u>223?3:u>191?2:1;if(r+d<=n)switch(d){case 1:u<128&&(c=u);break;case 2:128==(192&(i=t[r+1]))&&(s=(31&u)<<6|63&i)>127&&(c=s);break;case 3:i=t[r+1],o=t[r+2],128==(192&i)&&128==(192&o)&&(s=(15&u)<<12|(63&i)<<6|63&o)>2047&&(s<55296||s>57343)&&(c=s);break;case 4:i=t[r+1],o=t[r+2],l=t[r+3],128==(192&i)&&128==(192&o)&&128==(192&l)&&(s=(15&u)<<18|(63&i)<<12|(63&o)<<6|63&l)>65535&&s<1114112&&(c=s)}null===c?(c=65533,d=1):c>65535&&(c-=65536,a.push(c>>>10&1023|55296),c=56320|1023&c),a.push(c),r+=d}return function(t){var e=t.length;if(e<=k)return String.fromCharCode.apply(String,t);for(var n="",a=0;aa.length?s.from(i).copy(a,r):Uint8Array.prototype.set.call(a,i,r);else{if(!s.isBuffer(i))throw new TypeError('"list" argument must be an Array of Buffers');i.copy(a,r)}r+=i.length}return a},s.byteLength=h,s.prototype._isBuffer=!0,s.prototype.swap16=function(){var t=this.length;if(t%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(var e=0;en&&(t+=" ... "),""},i&&(s.prototype[i]=s.prototype.inspect),s.prototype.compare=function(t,e,n,a,r){if(B(t,Uint8Array)&&(t=s.from(t,t.offset,t.byteLength)),!s.isBuffer(t))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof t);if(void 0===e&&(e=0),void 0===n&&(n=t?t.length:0),void 0===a&&(a=0),void 0===r&&(r=this.length),e<0||n>t.length||a<0||r>this.length)throw new RangeError("out of range index");if(a>=r&&e>=n)return 0;if(a>=r)return-1;if(e>=n)return 1;if(this===t)return 0;for(var i=(r>>>=0)-(a>>>=0),o=(n>>>=0)-(e>>>=0),l=Math.min(i,o),u=this.slice(a,r),c=t.slice(e,n),d=0;d>>=0,isFinite(n)?(n>>>=0,void 0===a&&(a="utf8")):(a=n,n=void 0)}var r=this.length-e;if((void 0===n||n>r)&&(n=r),t.length>0&&(n<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");a||(a="utf8");for(var i=!1;;)switch(a){case"hex":return A(this,t,e,n);case"utf8":case"utf-8":return _(this,t,e,n);case"ascii":case"latin1":case"binary":return T(this,t,e,n);case"base64":return v(this,t,e,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return S(this,t,e,n);default:if(i)throw new TypeError("Unknown encoding: "+a);a=(""+a).toLowerCase(),i=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var k=4096;function R(t,e,n){var a="";n=Math.min(t.length,n);for(var r=e;ra)&&(n=a);for(var r="",i=e;in)throw new RangeError("Trying to access beyond buffer length")}function M(t,e,n,a,r,i){if(!s.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>r||et.length)throw new RangeError("Index out of range")}function O(t,e,n,a,r,i){if(n+a>t.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function z(t,e,n,a,i){return e=+e,n>>>=0,i||O(t,0,n,4),r.write(t,e,n,a,23,4),n+4}function P(t,e,n,a,i){return e=+e,n>>>=0,i||O(t,0,n,8),r.write(t,e,n,a,52,8),n+8}s.prototype.slice=function(t,e){var n=this.length;(t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(e=void 0===e?n:~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),e>>=0,e>>>=0,n||D(t,e,this.length);for(var a=this[t],r=1,i=0;++i>>=0,e>>>=0,n||D(t,e,this.length);for(var a=this[t+--e],r=1;e>0&&(r*=256);)a+=this[t+--e]*r;return a},s.prototype.readUint8=s.prototype.readUInt8=function(t,e){return t>>>=0,e||D(t,1,this.length),this[t]},s.prototype.readUint16LE=s.prototype.readUInt16LE=function(t,e){return t>>>=0,e||D(t,2,this.length),this[t]|this[t+1]<<8},s.prototype.readUint16BE=s.prototype.readUInt16BE=function(t,e){return t>>>=0,e||D(t,2,this.length),this[t]<<8|this[t+1]},s.prototype.readUint32LE=s.prototype.readUInt32LE=function(t,e){return t>>>=0,e||D(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},s.prototype.readUint32BE=s.prototype.readUInt32BE=function(t,e){return t>>>=0,e||D(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},s.prototype.readIntLE=function(t,e,n){t>>>=0,e>>>=0,n||D(t,e,this.length);for(var a=this[t],r=1,i=0;++i=(r*=128)&&(a-=Math.pow(2,8*e)),a},s.prototype.readIntBE=function(t,e,n){t>>>=0,e>>>=0,n||D(t,e,this.length);for(var a=e,r=1,i=this[t+--a];a>0&&(r*=256);)i+=this[t+--a]*r;return i>=(r*=128)&&(i-=Math.pow(2,8*e)),i},s.prototype.readInt8=function(t,e){return t>>>=0,e||D(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},s.prototype.readInt16LE=function(t,e){t>>>=0,e||D(t,2,this.length);var n=this[t]|this[t+1]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt16BE=function(t,e){t>>>=0,e||D(t,2,this.length);var n=this[t+1]|this[t]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt32LE=function(t,e){return t>>>=0,e||D(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},s.prototype.readInt32BE=function(t,e){return t>>>=0,e||D(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},s.prototype.readFloatLE=function(t,e){return t>>>=0,e||D(t,4,this.length),r.read(this,t,!0,23,4)},s.prototype.readFloatBE=function(t,e){return t>>>=0,e||D(t,4,this.length),r.read(this,t,!1,23,4)},s.prototype.readDoubleLE=function(t,e){return t>>>=0,e||D(t,8,this.length),r.read(this,t,!0,52,8)},s.prototype.readDoubleBE=function(t,e){return t>>>=0,e||D(t,8,this.length),r.read(this,t,!1,52,8)},s.prototype.writeUintLE=s.prototype.writeUIntLE=function(t,e,n,a){t=+t,e>>>=0,n>>>=0,a||M(this,t,e,n,Math.pow(2,8*n)-1,0);var r=1,i=0;for(this[e]=255&t;++i>>=0,n>>>=0,a||M(this,t,e,n,Math.pow(2,8*n)-1,0);var r=n-1,i=1;for(this[e+r]=255&t;--r>=0&&(i*=256);)this[e+r]=t/i&255;return e+n},s.prototype.writeUint8=s.prototype.writeUInt8=function(t,e,n){return t=+t,e>>>=0,n||M(this,t,e,1,255,0),this[e]=255&t,e+1},s.prototype.writeUint16LE=s.prototype.writeUInt16LE=function(t,e,n){return t=+t,e>>>=0,n||M(this,t,e,2,65535,0),this[e]=255&t,this[e+1]=t>>>8,e+2},s.prototype.writeUint16BE=s.prototype.writeUInt16BE=function(t,e,n){return t=+t,e>>>=0,n||M(this,t,e,2,65535,0),this[e]=t>>>8,this[e+1]=255&t,e+2},s.prototype.writeUint32LE=s.prototype.writeUInt32LE=function(t,e,n){return t=+t,e>>>=0,n||M(this,t,e,4,4294967295,0),this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t,e+4},s.prototype.writeUint32BE=s.prototype.writeUInt32BE=function(t,e,n){return t=+t,e>>>=0,n||M(this,t,e,4,4294967295,0),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},s.prototype.writeIntLE=function(t,e,n,a){if(t=+t,e>>>=0,!a){var r=Math.pow(2,8*n-1);M(this,t,e,n,r-1,-r)}var i=0,o=1,l=0;for(this[e]=255&t;++i>>=0,!a){var r=Math.pow(2,8*n-1);M(this,t,e,n,r-1,-r)}var i=n-1,o=1,l=0;for(this[e+i]=255&t;--i>=0&&(o*=256);)t<0&&0===l&&0!==this[e+i+1]&&(l=1),this[e+i]=(t/o|0)-l&255;return e+n},s.prototype.writeInt8=function(t,e,n){return t=+t,e>>>=0,n||M(this,t,e,1,127,-128),t<0&&(t=255+t+1),this[e]=255&t,e+1},s.prototype.writeInt16LE=function(t,e,n){return t=+t,e>>>=0,n||M(this,t,e,2,32767,-32768),this[e]=255&t,this[e+1]=t>>>8,e+2},s.prototype.writeInt16BE=function(t,e,n){return t=+t,e>>>=0,n||M(this,t,e,2,32767,-32768),this[e]=t>>>8,this[e+1]=255&t,e+2},s.prototype.writeInt32LE=function(t,e,n){return t=+t,e>>>=0,n||M(this,t,e,4,2147483647,-2147483648),this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24,e+4},s.prototype.writeInt32BE=function(t,e,n){return t=+t,e>>>=0,n||M(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t,e+4},s.prototype.writeFloatLE=function(t,e,n){return z(this,t,e,!0,n)},s.prototype.writeFloatBE=function(t,e,n){return z(this,t,e,!1,n)},s.prototype.writeDoubleLE=function(t,e,n){return P(this,t,e,!0,n)},s.prototype.writeDoubleBE=function(t,e,n){return P(this,t,e,!1,n)},s.prototype.copy=function(t,e,n,a){if(!s.isBuffer(t))throw new TypeError("argument should be a Buffer");if(n||(n=0),a||0===a||(a=this.length),e>=t.length&&(e=t.length),e||(e=0),a>0&&a=this.length)throw new RangeError("Index out of range");if(a<0)throw new RangeError("sourceEnd out of bounds");a>this.length&&(a=this.length),t.length-e>>=0,n=void 0===n?this.length:n>>>0,t||(t=0),"number"==typeof t)for(i=e;i55295&&n<57344){if(!r){if(n>56319){(e-=3)>-1&&i.push(239,191,189);continue}if(o+1===a){(e-=3)>-1&&i.push(239,191,189);continue}r=n;continue}if(n<56320){(e-=3)>-1&&i.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(e-=3)>-1&&i.push(239,191,189);if(r=null,n<128){if((e-=1)<0)break;i.push(n)}else if(n<2048){if((e-=2)<0)break;i.push(n>>6|192,63&n|128)}else if(n<65536){if((e-=3)<0)break;i.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;i.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return i}function U(t){return a.toByteArray(function(t){if((t=(t=t.split("=")[0]).trim().replace(L,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function j(t,e,n,a){for(var r=0;r=e.length||r>=t.length);++r)e[r+n]=t[r];return r}function B(t,e){return t instanceof e||null!=t&&null!=t.constructor&&null!=t.constructor.name&&t.constructor.name===e.name}function q(t){return t!=t}var G=function(){for(var t="0123456789abcdef",e=new Array(256),n=0;n<16;++n)for(var a=16*n,r=0;r<16;++r)e[a+r]=t[n]+t[r];return e}()},6877:function(t,e){var n={parseBuffer:function(t){return new a(t).parse()},addBoxProcessor:function(t,e){"string"==typeof t&&"function"==typeof e&&(r.prototype._boxProcessors[t]=e)},createFile:function(){return new a},createBox:function(t,e,n){var a=r.create(t);return e&&e.append(a,n),a},createFullBox:function(t,e,a){var r=n.createBox(t,e,a);return r.version=0,r.flags=0,r},Utils:{}};n.Utils.dataViewToString=function(t,e){var n=e||"utf-8";if("undefined"!=typeof TextDecoder)return new TextDecoder(n).decode(t);var a=[],r=0;if("utf-8"===n)for(;r>6),e.push(128|63&a)):a<65536?(e.push(224|a>>12),e.push(128|63&a>>6),e.push(128|63&a)):(e.push(240|a>>18),e.push(128|63&a>>12),e.push(128|63&a>>6),e.push(128|63&a))}return e},n.Utils.appendBox=function(t,e,n){if(e._offset=t._cursor.offset,e._root=t._root?t._root:t,e._raw=t._raw,e._parent=t,-1!==n)if(null!=n){var a,r=-1;if("number"==typeof n)r=n;else{if("string"==typeof n)a=n;else{if("object"!=typeof n||!n.type)return void t.boxes.push(e);a=n.type}for(var i=0;i>3,e},r.prototype._readUint=function(t){var e,n,a=null,r=this._cursor.offset-this._raw.byteOffset;switch(t){case 8:a=this._raw.getUint8(r);break;case 16:a=this._raw.getUint16(r);break;case 24:a=((e=this._raw.getUint16(r))<<8)+(n=this._raw.getUint8(r+2));break;case 32:a=this._raw.getUint32(r);break;case 64:e=this._raw.getUint32(r),n=this._raw.getUint32(r+4),a=e*Math.pow(2,32)+n}return this._cursor.offset+=t>>3,a},r.prototype._readString=function(t){for(var e="",n=0;n0?t:this._raw.byteLength-(this._cursor.offset-this._offset);if(e>0){var n=new Uint8Array(this._raw.buffer,this._cursor.offset,e);return this._cursor.offset+=e,n}return null},r.prototype._readUTF8String=function(){var t=this._raw.byteLength-(this._cursor.offset-this._offset),e=null;return t>0&&(e=new DataView(this._raw.buffer,this._cursor.offset,t),this._cursor.offset+=t),e?n.Utils.dataViewToString(e):e},r.prototype._readUTF8TerminatedString=function(){var t=this._raw.byteLength-(this._cursor.offset-this._offset),e=null;if(t>0){var a;for(e=new DataView(this._raw.buffer,this._cursor.offset,t),a=0;athis._raw.buffer.byteLength)this._root._incomplete=!0;else{switch(this._procField("size","uint",32),this._procField("type","string",4),1===this.size&&this._procField("largesize","uint",64),"uuid"===this.type&&this._procFieldArray("usertype",16,"uint",8),this.size){case 0:this._raw=new DataView(this._raw.buffer,this._offset);break;case 1:this._offset+this.size>this._raw.buffer.byteLength?(this._incomplete=!0,this._root._incomplete=!0):this._raw=new DataView(this._raw.buffer,this._offset,this.largesize);break;default:this._offset+this.size>this._raw.buffer.byteLength?(this._incomplete=!0,this._root._incomplete=!0):this._raw=new DataView(this._raw.buffer,this._offset,this.size)}this._incomplete||(this._boxProcessors[this.type]&&this._boxProcessors[this.type].call(this),-1!==this._boxContainers.indexOf(this.type)?this._parseContainerBox():this._data=this._readData())}},r.prototype._parseFullBox=function(){this.version=this._readUint(8),this.flags=this._readUint(24)},r.prototype._parseContainerBox=function(){for(this.boxes=[];this._cursor.offset-this._raw.byteOffset>3}else this.size+=t>>3},r.prototype._writeUint=function(t,e){if(this._rawo){var n,a,r=this._cursor.offset-this._rawo.byteOffset;switch(t){case 8:this._rawo.setUint8(r,e);break;case 16:this._rawo.setUint16(r,e);break;case 24:n=(16776960&e)>>8,a=255&e,this._rawo.setUint16(r,n),this._rawo.setUint8(r+2,a);break;case 32:this._rawo.setUint32(r,e);break;case 64:a=e-(n=Math.floor(e/Math.pow(2,32)))*Math.pow(2,32),this._rawo.setUint32(r,n),this._rawo.setUint32(r+4,a)}this._cursor.offset+=t>>3}else this.size+=t>>3},r.prototype._writeString=function(t,e){for(var n=0;n>10&31),96+(this.language>>5&31),96+(31&this.language))),this._procField("pre_defined","uint",16)},r.prototype._boxProcessors.mehd=function(){this._procFullBox(),this._procField("fragment_duration","uint",1==this.version?64:32)},r.prototype._boxProcessors.meta=function(){this._procFullBox()},r.prototype._boxProcessors.mfhd=function(){this._procFullBox(),this._procField("sequence_number","uint",32)},r.prototype._boxProcessors.mfro=function(){this._procFullBox(),this._procField("mfra_size","uint",32)},r.prototype._boxProcessors.mp4a=r.prototype._boxProcessors.enca=function(){this._procFieldArray("reserved1",6,"uint",8),this._procField("data_reference_index","uint",16),this._procFieldArray("reserved2",2,"uint",32),this._procField("channelcount","uint",16),this._procField("samplesize","uint",16),this._procField("pre_defined","uint",16),this._procField("reserved3","uint",16),this._procField("samplerate","template",32),this._procField("esds","data",-1)},r.prototype._boxProcessors.mvhd=function(){this._procFullBox(),this._procField("creation_time","uint",1==this.version?64:32),this._procField("modification_time","uint",1==this.version?64:32),this._procField("timescale","uint",32),this._procField("duration","uint",1==this.version?64:32),this._procField("rate","template",32),this._procField("volume","template",16),this._procField("reserved1","uint",16),this._procFieldArray("reserved2",2,"uint",32),this._procFieldArray("matrix",9,"template",32),this._procFieldArray("pre_defined",6,"uint",32),this._procField("next_track_ID","uint",32)},r.prototype._boxProcessors.payl=function(){this._procField("cue_text","utf8")},r.prototype._boxProcessors.prft=function(){this._procFullBox(),this._procField("reference_track_ID","uint",32),this._procField("ntp_timestamp_sec","uint",32),this._procField("ntp_timestamp_frac","uint",32),this._procField("media_time","uint",1==this.version?64:32)},r.prototype._boxProcessors.prsl=function(){this._procFullBox(),this._procField("group_id","uint",32),this._procField("num_entities_in_group","uint",32),this._procEntries("entities",this.num_entities_in_group,(function(t){this._procEntryField(t,"entity_id","uint",32)})),4096&this.flags&&this._procField("preselection_tag","utf8string"),8192&this.flags&&this._procField("selection_priority","uint",8),16384&this.flags&&this._procField("interleaving_tag","utf8string")},r.prototype._boxProcessors.pssh=function(){this._procFullBox(),this._procFieldArray("SystemID",16,"uint",8),this._procField("DataSize","uint",32),this._procFieldArray("Data",this.DataSize,"uint",8)},r.prototype._boxProcessors.schm=function(){this._procFullBox(),this._procField("scheme_type","uint",32),this._procField("scheme_version","uint",32),1&this.flags&&this._procField("scheme_uri","string",-1)},r.prototype._boxProcessors.sdtp=function(){this._procFullBox();var t=-1;this._parsing&&(t=this._raw.byteLength-(this._cursor.offset-this._raw.byteOffset)),this._procFieldArray("sample_dependency_table",t,"uint",8)},r.prototype._boxProcessors.sidx=function(){this._procFullBox(),this._procField("reference_ID","uint",32),this._procField("timescale","uint",32),this._procField("earliest_presentation_time","uint",1==this.version?64:32),this._procField("first_offset","uint",1==this.version?64:32),this._procField("reserved","uint",16),this._procField("reference_count","uint",16),this._procEntries("references",this.reference_count,(function(t){this._parsing||(t.reference=(1&t.reference_type)<<31,t.reference|=2147483647&t.referenced_size,t.sap=(1&t.starts_with_SAP)<<31,t.sap|=(3&t.SAP_type)<<28,t.sap|=268435455&t.SAP_delta_time),this._procEntryField(t,"reference","uint",32),this._procEntryField(t,"subsegment_duration","uint",32),this._procEntryField(t,"sap","uint",32),this._parsing&&(t.reference_type=t.reference>>31&1,t.referenced_size=2147483647&t.reference,t.starts_with_SAP=t.sap>>31&1,t.SAP_type=t.sap>>28&7,t.SAP_delta_time=268435455&t.sap)}))},r.prototype._boxProcessors.smhd=function(){this._procFullBox(),this._procField("balance","uint",16),this._procField("reserved","uint",16)},r.prototype._boxProcessors.ssix=function(){this._procFullBox(),this._procField("subsegment_count","uint",32),this._procEntries("subsegments",this.subsegment_count,(function(t){this._procEntryField(t,"ranges_count","uint",32),this._procSubEntries(t,"ranges",t.ranges_count,(function(t){this._procEntryField(t,"level","uint",8),this._procEntryField(t,"range_size","uint",24)}))}))},r.prototype._boxProcessors.stsd=function(){this._procFullBox(),this._procField("entry_count","uint",32),this._procSubBoxes("entries",this.entry_count)},r.prototype._boxProcessors.sttg=function(){this._procField("settings","utf8")},r.prototype._boxProcessors.stts=function(){this._procFullBox(),this._procField("entry_count","uint",32),this._procEntries("entries",this.entry_count,(function(t){this._procEntryField(t,"sample_count","uint",32),this._procEntryField(t,"sample_delta","uint",32)}))},r.prototype._boxProcessors.subs=function(){this._procFullBox(),this._procField("entry_count","uint",32),this._procEntries("entries",this.entry_count,(function(t){this._procEntryField(t,"sample_delta","uint",32),this._procEntryField(t,"subsample_count","uint",16),this._procSubEntries(t,"subsamples",t.subsample_count,(function(t){this._procEntryField(t,"subsample_size","uint",1===this.version?32:16),this._procEntryField(t,"subsample_priority","uint",8),this._procEntryField(t,"discardable","uint",8),this._procEntryField(t,"codec_specific_parameters","uint",32)}))}))},r.prototype._boxProcessors.tenc=function(){this._procFullBox(),this._procField("default_IsEncrypted","uint",24),this._procField("default_IV_size","uint",8),this._procFieldArray("default_KID",16,"uint",8)},r.prototype._boxProcessors.tfdt=function(){this._procFullBox(),this._procField("baseMediaDecodeTime","uint",1==this.version?64:32)},r.prototype._boxProcessors.tfhd=function(){this._procFullBox(),this._procField("track_ID","uint",32),1&this.flags&&this._procField("base_data_offset","uint",64),2&this.flags&&this._procField("sample_description_offset","uint",32),8&this.flags&&this._procField("default_sample_duration","uint",32),16&this.flags&&this._procField("default_sample_size","uint",32),32&this.flags&&this._procField("default_sample_flags","uint",32)},r.prototype._boxProcessors.tfra=function(){this._procFullBox(),this._procField("track_ID","uint",32),this._parsing||(this.reserved=0,this.reserved|=(48&this.length_size_of_traf_num)<<4,this.reserved|=(12&this.length_size_of_trun_num)<<2,this.reserved|=3&this.length_size_of_sample_num),this._procField("reserved","uint",32),this._parsing&&(this.length_size_of_traf_num=(48&this.reserved)>>4,this.length_size_of_trun_num=(12&this.reserved)>>2,this.length_size_of_sample_num=3&this.reserved),this._procField("number_of_entry","uint",32),this._procEntries("entries",this.number_of_entry,(function(t){this._procEntryField(t,"time","uint",1===this.version?64:32),this._procEntryField(t,"moof_offset","uint",1===this.version?64:32),this._procEntryField(t,"traf_number","uint",8*(this.length_size_of_traf_num+1)),this._procEntryField(t,"trun_number","uint",8*(this.length_size_of_trun_num+1)),this._procEntryField(t,"sample_number","uint",8*(this.length_size_of_sample_num+1))}))},r.prototype._boxProcessors.tkhd=function(){this._procFullBox(),this._procField("creation_time","uint",1==this.version?64:32),this._procField("modification_time","uint",1==this.version?64:32),this._procField("track_ID","uint",32),this._procField("reserved1","uint",32),this._procField("duration","uint",1==this.version?64:32),this._procFieldArray("reserved2",2,"uint",32),this._procField("layer","uint",16),this._procField("alternate_group","uint",16),this._procField("volume","template",16),this._procField("reserved3","uint",16),this._procFieldArray("matrix",9,"template",32),this._procField("width","template",32),this._procField("height","template",32)},r.prototype._boxProcessors.trex=function(){this._procFullBox(),this._procField("track_ID","uint",32),this._procField("default_sample_description_index","uint",32),this._procField("default_sample_duration","uint",32),this._procField("default_sample_size","uint",32),this._procField("default_sample_flags","uint",32)},r.prototype._boxProcessors.trun=function(){this._procFullBox(),this._procField("sample_count","uint",32),1&this.flags&&this._procField("data_offset","int",32),4&this.flags&&this._procField("first_sample_flags","uint",32),this._procEntries("samples",this.sample_count,(function(t){256&this.flags&&this._procEntryField(t,"sample_duration","uint",32),512&this.flags&&this._procEntryField(t,"sample_size","uint",32),1024&this.flags&&this._procEntryField(t,"sample_flags","uint",32),2048&this.flags&&this._procEntryField(t,"sample_composition_time_offset",1===this.version?"int":"uint",32)}))},r.prototype._boxProcessors["url "]=r.prototype._boxProcessors["urn "]=function(){this._procFullBox(),"urn "===this.type&&this._procField("name","string",-1),this._procField("location","string",-1)},r.prototype._boxProcessors.vlab=function(){this._procField("source_label","utf8")},r.prototype._boxProcessors.vmhd=function(){this._procFullBox(),this._procField("graphicsmode","uint",16),this._procFieldArray("opcolor",3,"uint",16)},r.prototype._boxProcessors.vttC=function(){this._procField("config","utf8")},r.prototype._boxProcessors.vtte=function(){}},9826:function(t){"use strict";var e,n="object"==typeof Reflect?Reflect:null,a=n&&"function"==typeof n.apply?n.apply:function(t,e,n){return Function.prototype.apply.call(t,e,n)};e=n&&"function"==typeof n.ownKeys?n.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var r=Number.isNaN||function(t){return t!=t};function i(){i.init.call(this)}t.exports=i,t.exports.once=function(t,e){return new Promise((function(n,a){function r(n){t.removeListener(e,i),a(n)}function i(){"function"==typeof t.removeListener&&t.removeListener("error",r),n([].slice.call(arguments))}h(t,e,i,{once:!0}),"error"!==e&&function(t,e){"function"==typeof t.on&&h(t,"error",e,{once:!0})}(t,r)}))},i.EventEmitter=i,i.prototype._events=void 0,i.prototype._eventsCount=0,i.prototype._maxListeners=void 0;var o=10;function l(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function s(t){return void 0===t._maxListeners?i.defaultMaxListeners:t._maxListeners}function u(t,e,n,a){var r,i,o,u;if(l(n),void 0===(i=t._events)?(i=t._events=Object.create(null),t._eventsCount=0):(void 0!==i.newListener&&(t.emit("newListener",e,n.listener?n.listener:n),i=t._events),o=i[e]),void 0===o)o=i[e]=n,++t._eventsCount;else if("function"==typeof o?o=i[e]=a?[n,o]:[o,n]:a?o.unshift(n):o.push(n),(r=s(t))>0&&o.length>r&&!o.warned){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=o.length,u=c,console&&console.warn&&console.warn(u)}return t}function c(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function d(t,e,n){var a={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},r=c.bind(a);return r.listener=n,a.wrapFn=r,r}function f(t,e,n){var a=t._events;if(void 0===a)return[];var r=a[e];return void 0===r?[]:"function"==typeof r?n?[r.listener||r]:[r]:n?function(t){for(var e=new Array(t.length),n=0;n0&&(o=e[0]),o instanceof Error)throw o;var l=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw l.context=o,l}var s=i[t];if(void 0===s)return!1;if("function"==typeof s)a(s,this,e);else{var u=s.length,c=m(s,u);for(n=0;n=0;i--)if(n[i]===e||n[i].listener===e){o=n[i].listener,r=i;break}if(r<0)return this;0===r?n.shift():function(t,e){for(;e+1=0;a--)this.removeListener(t,e[a]);return this},i.prototype.listeners=function(t){return f(this,t,!0)},i.prototype.rawListeners=function(t){return f(this,t,!1)},i.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):g.call(t,e)},i.prototype.listenerCount=g,i.prototype.eventNames=function(){return this._eventsCount>0?e(this._events):[]}},7316:function(t){"use strict";t.exports=function t(e,n){if(e===n)return!0;if(e&&n&&"object"==typeof e&&"object"==typeof n){if(e.constructor!==n.constructor)return!1;var a,r,i;if(Array.isArray(e)){if((a=e.length)!=n.length)return!1;for(r=a;0!=r--;)if(!t(e[r],n[r]))return!1;return!0}if(e.constructor===RegExp)return e.source===n.source&&e.flags===n.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===n.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===n.toString();if((a=(i=Object.keys(e)).length)!==Object.keys(n).length)return!1;for(r=a;0!=r--;)if(!Object.prototype.hasOwnProperty.call(n,i[r]))return!1;for(r=a;0!=r--;){var o=i[r];if(!t(e[o],n[o]))return!1}return!0}return e!=e&&n!=n}},7986:function(t,e){e.read=function(t,e,n,a,r){var i,o,l=8*r-a-1,s=(1<>1,c=-7,d=n?r-1:0,f=n?-1:1,g=t[e+d];for(d+=f,i=g&(1<<-c)-1,g>>=-c,c+=l;c>0;i=256*i+t[e+d],d+=f,c-=8);for(o=i&(1<<-c)-1,i>>=-c,c+=a;c>0;o=256*o+t[e+d],d+=f,c-=8);if(0===i)i=1-u;else{if(i===s)return o?NaN:1/0*(g?-1:1);o+=Math.pow(2,a),i-=u}return(g?-1:1)*o*Math.pow(2,i-a)},e.write=function(t,e,n,a,r,i){var o,l,s,u=8*i-r-1,c=(1<>1,f=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,g=a?0:i-1,m=a?1:-1,h=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(l=isNaN(e)?1:0,o=c):(o=Math.floor(Math.log(e)/Math.LN2),e*(s=Math.pow(2,-o))<1&&(o--,s*=2),(e+=o+d>=1?f/s:f*Math.pow(2,1-d))*s>=2&&(o++,s/=2),o+d>=c?(l=0,o=c):o+d>=1?(l=(e*s-1)*Math.pow(2,r),o+=d):(l=e*Math.pow(2,d-1)*Math.pow(2,r),o=0));r>=8;t[n+g]=255&l,g+=m,l/=256,r-=8);for(o=o<0;t[n+g]=255&o,g+=m,o/=256,u-=8);t[n+g-m]|=128*h}},5474:function(t,e,n){!function(t){t.parser=function(t,e){return new r(t,e)},t.SAXParser=r,t.SAXStream=o,t.createStream=function(t,e){return new o(t,e)},t.MAX_BUFFER_LENGTH=65536;var e,a=["comment","sgmlDecl","textNode","tagName","doctype","procInstName","procInstBody","entity","attribName","attribValue","cdata","script"];function r(e,n){if(!(this instanceof r))return new r(e,n);var i=this;!function(t){for(var e=0,n=a.length;e"===i?(C(n,"onsgmldeclaration",n.sgmlDecl),n.sgmlDecl="",n.state=k.TEXT):T(c,i)?(n.state=k.SGML_DECL_QUOTED,n.sgmlDecl+=i):n.sgmlDecl+=i;continue;case k.SGML_DECL_QUOTED:i===n.q&&(n.state=k.SGML_DECL,n.q=""),n.sgmlDecl+=i;continue;case k.DOCTYPE:">"===i?(n.state=k.TEXT,C(n,"ondoctype",n.doctype),n.doctype=!0):(n.doctype+=i,"["===i?n.state=k.DOCTYPE_DTD:T(c,i)&&(n.state=k.DOCTYPE_QUOTED,n.q=i));continue;case k.DOCTYPE_QUOTED:n.doctype+=i,i===n.q&&(n.q="",n.state=k.DOCTYPE);continue;case k.DOCTYPE_DTD:n.doctype+=i,"]"===i?n.state=k.DOCTYPE:T(c,i)&&(n.state=k.DOCTYPE_DTD_QUOTED,n.q=i);continue;case k.DOCTYPE_DTD_QUOTED:n.doctype+=i,i===n.q&&(n.state=k.DOCTYPE_DTD,n.q="");continue;case k.COMMENT:"-"===i?n.state=k.COMMENT_ENDING:n.comment+=i;continue;case k.COMMENT_ENDING:"-"===i?(n.state=k.COMMENT_ENDED,n.comment=D(n.opt,n.comment),n.comment&&C(n,"oncomment",n.comment),n.comment=""):(n.comment+="-"+i,n.state=k.COMMENT);continue;case k.COMMENT_ENDED:">"!==i?(z(n,"Malformed comment"),n.comment+="--"+i,n.state=k.COMMENT):n.state=k.TEXT;continue;case k.CDATA:"]"===i?n.state=k.CDATA_ENDING:n.cdata+=i;continue;case k.CDATA_ENDING:"]"===i?n.state=k.CDATA_ENDING_2:(n.cdata+="]"+i,n.state=k.CDATA);continue;case k.CDATA_ENDING_2:">"===i?(n.cdata&&C(n,"oncdata",n.cdata),C(n,"onclosecdata"),n.cdata="",n.state=k.TEXT):"]"===i?n.cdata+="]":(n.cdata+="]]"+i,n.state=k.CDATA);continue;case k.PROC_INST:"?"===i?n.state=k.PROC_INST_ENDING:T(l,i)?n.state=k.PROC_INST_BODY:n.procInstName+=i;continue;case k.PROC_INST_BODY:if(!n.procInstBody&&T(l,i))continue;"?"===i?n.state=k.PROC_INST_ENDING:n.procInstBody+=i;continue;case k.PROC_INST_ENDING:">"===i?(C(n,"onprocessinginstruction",{name:n.procInstName,body:n.procInstBody}),n.procInstName=n.procInstBody="",n.state=k.TEXT):(n.procInstBody+="?"+i,n.state=k.PROC_INST_BODY);continue;case k.OPEN_TAG:T(y,i)?n.tagName+=i:(P(n),">"===i?U(n):"/"===i?n.state=k.OPEN_TAG_SLASH:(v(l,i)&&z(n,"Invalid character in tag name"),n.state=k.ATTRIB));continue;case k.OPEN_TAG_SLASH:">"===i?(U(n,!0),j(n)):(z(n,"Forward-slash in opening tag not followed by >"),n.state=k.ATTRIB);continue;case k.ATTRIB:if(T(l,i))continue;">"===i?U(n):"/"===i?n.state=k.OPEN_TAG_SLASH:T(b,i)?(n.attribName=i,n.attribValue="",n.state=k.ATTRIB_NAME):z(n,"Invalid attribute name");continue;case k.ATTRIB_NAME:"="===i?n.state=k.ATTRIB_VALUE:">"===i?(z(n,"Attribute without value"),n.attribValue=n.attribName,F(n),U(n)):T(l,i)?n.state=k.ATTRIB_NAME_SAW_WHITE:T(y,i)?n.attribName+=i:z(n,"Invalid attribute name");continue;case k.ATTRIB_NAME_SAW_WHITE:if("="===i)n.state=k.ATTRIB_VALUE;else{if(T(l,i))continue;z(n,"Attribute without value"),n.tag.attributes[n.attribName]="",n.attribValue="",C(n,"onattribute",{name:n.attribName,value:""}),n.attribName="",">"===i?U(n):T(b,i)?(n.attribName=i,n.state=k.ATTRIB_NAME):(z(n,"Invalid attribute name"),n.state=k.ATTRIB)}continue;case k.ATTRIB_VALUE:if(T(l,i))continue;T(c,i)?(n.q=i,n.state=k.ATTRIB_VALUE_QUOTED):(z(n,"Unquoted attribute value"),n.state=k.ATTRIB_VALUE_UNQUOTED,n.attribValue=i);continue;case k.ATTRIB_VALUE_QUOTED:if(i!==n.q){"&"===i?n.state=k.ATTRIB_VALUE_ENTITY_Q:n.attribValue+=i;continue}F(n),n.q="",n.state=k.ATTRIB_VALUE_CLOSED;continue;case k.ATTRIB_VALUE_CLOSED:T(l,i)?n.state=k.ATTRIB:">"===i?U(n):"/"===i?n.state=k.OPEN_TAG_SLASH:T(b,i)?(z(n,"No whitespace between attributes"),n.attribName=i,n.attribValue="",n.state=k.ATTRIB_NAME):z(n,"Invalid attribute name");continue;case k.ATTRIB_VALUE_UNQUOTED:if(v(d,i)){"&"===i?n.state=k.ATTRIB_VALUE_ENTITY_U:n.attribValue+=i;continue}F(n),">"===i?U(n):n.state=k.ATTRIB;continue;case k.CLOSE_TAG:if(n.tagName)">"===i?j(n):T(y,i)?n.tagName+=i:n.script?(n.script+=""===i?j(n):z(n,"Invalid characters in closing tag");continue;case k.TEXT_ENTITY:case k.ATTRIB_VALUE_ENTITY_Q:case k.ATTRIB_VALUE_ENTITY_U:var u,m;switch(n.state){case k.TEXT_ENTITY:u=k.TEXT,m="textNode";break;case k.ATTRIB_VALUE_ENTITY_Q:u=k.ATTRIB_VALUE_QUOTED,m="attribValue";break;case k.ATTRIB_VALUE_ENTITY_U:u=k.ATTRIB_VALUE_UNQUOTED,m="attribValue"}";"===i?(n[m]+=B(n),n.entity="",n.state=u):T(n.entity.length?A:E,i)?n.entity+=i:(z(n,"Invalid character in entity name"),n[m]+="&"+n.entity+i,n.entity="",n.state=u);continue;default:throw new Error(n,"Unknown state: "+n.state)}return n.position>=n.bufferCheckPosition&&function(e){for(var n=Math.max(t.MAX_BUFFER_LENGTH,10),r=0,i=0,o=a.length;in)switch(a[i]){case"textNode":x(e);break;case"cdata":C(e,"oncdata",e.cdata),e.cdata="";break;case"script":C(e,"onscript",e.script),e.script="";break;default:M(e,"Max buffer length exceeded: "+a[i])}r=Math.max(r,l)}var s=t.MAX_BUFFER_LENGTH-r;e.bufferCheckPosition=s+e.position}(n),n},resume:function(){return this.error=null,this},close:function(){return this.write(null)},flush:function(){var t;x(t=this),""!==t.cdata&&(C(t,"oncdata",t.cdata),t.cdata=""),""!==t.script&&(C(t,"onscript",t.script),t.script="")}};try{e=n(3515).Stream}catch(t){e=function(){}}var i=t.EVENTS.filter((function(t){return"error"!==t&&"end"!==t}));function o(t,n){if(!(this instanceof o))return new o(t,n);e.apply(this),this._parser=new r(t,n),this.writable=!0,this.readable=!0;var a=this;this._parser.onend=function(){a.emit("end")},this._parser.onerror=function(t){a.emit("error",t),a._parser.error=null},this._decoder=null,i.forEach((function(t){Object.defineProperty(a,"on"+t,{get:function(){return a._parser["on"+t]},set:function(e){if(!e)return a.removeAllListeners(t),a._parser["on"+t]=e,e;a.on(t,e)},enumerable:!0,configurable:!1})}))}o.prototype=Object.create(e.prototype,{constructor:{value:o}}),o.prototype.write=function(t){if("function"==typeof Buffer&&"function"==typeof Buffer.isBuffer&&Buffer.isBuffer(t)){if(!this._decoder){var e=n(748).I;this._decoder=new e("utf8")}t=this._decoder.write(t)}return this._parser.write(t.toString()),this.emit("data",t),!0},o.prototype.end=function(t){return t&&t.length&&this.write(t),this._parser.end(),!0},o.prototype.on=function(t,n){var a=this;return a._parser["on"+t]||-1===i.indexOf(t)||(a._parser["on"+t]=function(){var e=1===arguments.length?[arguments[0]]:Array.apply(null,arguments);e.splice(0,0,t),a.emit.apply(a,e)}),e.prototype.on.call(a,t,n)};var l="\r\n\t ",s="0124356789",u="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",c="'\"",d=l+">",f="[CDATA[",g="DOCTYPE",m="http://www.w3.org/XML/1998/namespace",h="http://www.w3.org/2000/xmlns/",p={xml:m,xmlns:h};l=_(l),s=_(s),u=_(u);var b=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,y=/[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/,E=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,A=/[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/;function _(t){return t.split("").reduce((function(t,e){return t[e]=!0,t}),{})}function T(t,e){return function(t){return"[object RegExp]"===Object.prototype.toString.call(t)}(t)?!!e.match(t):t[e]}function v(t,e){return!T(t,e)}c=_(c),d=_(d);var S,w,I,k=0;for(var R in t.STATE={BEGIN:k++,BEGIN_WHITESPACE:k++,TEXT:k++,TEXT_ENTITY:k++,OPEN_WAKA:k++,SGML_DECL:k++,SGML_DECL_QUOTED:k++,DOCTYPE:k++,DOCTYPE_QUOTED:k++,DOCTYPE_DTD:k++,DOCTYPE_DTD_QUOTED:k++,COMMENT_STARTING:k++,COMMENT:k++,COMMENT_ENDING:k++,COMMENT_ENDED:k++,CDATA:k++,CDATA_ENDING:k++,CDATA_ENDING_2:k++,PROC_INST:k++,PROC_INST_BODY:k++,PROC_INST_ENDING:k++,OPEN_TAG:k++,OPEN_TAG_SLASH:k++,ATTRIB:k++,ATTRIB_NAME:k++,ATTRIB_NAME_SAW_WHITE:k++,ATTRIB_VALUE:k++,ATTRIB_VALUE_QUOTED:k++,ATTRIB_VALUE_CLOSED:k++,ATTRIB_VALUE_UNQUOTED:k++,ATTRIB_VALUE_ENTITY_Q:k++,ATTRIB_VALUE_ENTITY_U:k++,CLOSE_TAG:k++,CLOSE_TAG_SAW_WHITE:k++,SCRIPT:k++,SCRIPT_ENDING:k++},t.XML_ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'"},t.ENTITIES={amp:"&",gt:">",lt:"<",quot:'"',apos:"'",AElig:198,Aacute:193,Acirc:194,Agrave:192,Aring:197,Atilde:195,Auml:196,Ccedil:199,ETH:208,Eacute:201,Ecirc:202,Egrave:200,Euml:203,Iacute:205,Icirc:206,Igrave:204,Iuml:207,Ntilde:209,Oacute:211,Ocirc:212,Ograve:210,Oslash:216,Otilde:213,Ouml:214,THORN:222,Uacute:218,Ucirc:219,Ugrave:217,Uuml:220,Yacute:221,aacute:225,acirc:226,aelig:230,agrave:224,aring:229,atilde:227,auml:228,ccedil:231,eacute:233,ecirc:234,egrave:232,eth:240,euml:235,iacute:237,icirc:238,igrave:236,iuml:239,ntilde:241,oacute:243,ocirc:244,ograve:242,oslash:248,otilde:245,ouml:246,szlig:223,thorn:254,uacute:250,ucirc:251,ugrave:249,uuml:252,yacute:253,yuml:255,copy:169,reg:174,nbsp:160,iexcl:161,cent:162,pound:163,curren:164,yen:165,brvbar:166,sect:167,uml:168,ordf:170,laquo:171,not:172,shy:173,macr:175,deg:176,plusmn:177,sup1:185,sup2:178,sup3:179,acute:180,micro:181,para:182,middot:183,cedil:184,ordm:186,raquo:187,frac14:188,frac12:189,frac34:190,iquest:191,times:215,divide:247,OElig:338,oelig:339,Scaron:352,scaron:353,Yuml:376,fnof:402,circ:710,tilde:732,Alpha:913,Beta:914,Gamma:915,Delta:916,Epsilon:917,Zeta:918,Eta:919,Theta:920,Iota:921,Kappa:922,Lambda:923,Mu:924,Nu:925,Xi:926,Omicron:927,Pi:928,Rho:929,Sigma:931,Tau:932,Upsilon:933,Phi:934,Chi:935,Psi:936,Omega:937,alpha:945,beta:946,gamma:947,delta:948,epsilon:949,zeta:950,eta:951,theta:952,iota:953,kappa:954,lambda:955,mu:956,nu:957,xi:958,omicron:959,pi:960,rho:961,sigmaf:962,sigma:963,tau:964,upsilon:965,phi:966,chi:967,psi:968,omega:969,thetasym:977,upsih:978,piv:982,ensp:8194,emsp:8195,thinsp:8201,zwnj:8204,zwj:8205,lrm:8206,rlm:8207,ndash:8211,mdash:8212,lsquo:8216,rsquo:8217,sbquo:8218,ldquo:8220,rdquo:8221,bdquo:8222,dagger:8224,Dagger:8225,bull:8226,hellip:8230,permil:8240,prime:8242,Prime:8243,lsaquo:8249,rsaquo:8250,oline:8254,frasl:8260,euro:8364,image:8465,weierp:8472,real:8476,trade:8482,alefsym:8501,larr:8592,uarr:8593,rarr:8594,darr:8595,harr:8596,crarr:8629,lArr:8656,uArr:8657,rArr:8658,dArr:8659,hArr:8660,forall:8704,part:8706,exist:8707,empty:8709,nabla:8711,isin:8712,notin:8713,ni:8715,prod:8719,sum:8721,minus:8722,lowast:8727,radic:8730,prop:8733,infin:8734,ang:8736,and:8743,or:8744,cap:8745,cup:8746,int:8747,there4:8756,sim:8764,cong:8773,asymp:8776,ne:8800,equiv:8801,le:8804,ge:8805,sub:8834,sup:8835,nsub:8836,sube:8838,supe:8839,oplus:8853,otimes:8855,perp:8869,sdot:8901,lceil:8968,rceil:8969,lfloor:8970,rfloor:8971,lang:9001,rang:9002,loz:9674,spades:9824,clubs:9827,hearts:9829,diams:9830},Object.keys(t.ENTITIES).forEach((function(e){var n=t.ENTITIES[e],a="number"==typeof n?String.fromCharCode(n):n;t.ENTITIES[e]=a})),t.STATE)t.STATE[t.STATE[R]]=R;function N(t,e,n){t[e]&&t[e](n)}function C(t,e,n){t.textNode&&x(t),N(t,e,n)}function x(t){t.textNode=D(t.opt,t.textNode),t.textNode&&N(t,"ontext",t.textNode),t.textNode=""}function D(t,e){return t.trim&&(e=e.trim()),t.normalize&&(e=e.replace(/\s+/g," ")),e}function M(t,e){return x(t),t.trackPosition&&(e+="\nLine: "+t.line+"\nColumn: "+t.column+"\nChar: "+t.c),e=new Error(e),t.error=e,N(t,"onerror",e),t}function O(t){return t.sawRoot&&!t.closedRoot&&z(t,"Unclosed root tag"),t.state!==k.BEGIN&&t.state!==k.BEGIN_WHITESPACE&&t.state!==k.TEXT&&M(t,"Unexpected end"),x(t),t.c="",t.closed=!0,N(t,"onend"),r.call(t,t.strict,t.opt),t}function z(t,e){if("object"!=typeof t||!(t instanceof r))throw new Error("bad call to strictFail");t.strict&&M(t,e)}function P(t){t.strict||(t.tagName=t.tagName[t.looseCase]());var e=t.tags[t.tags.length-1]||t,n=t.tag={name:t.tagName,attributes:{}};t.opt.xmlns&&(n.ns=e.ns),t.attribList.length=0,C(t,"onopentagstart",n)}function L(t,e){var n=t.indexOf(":")<0?["",t]:t.split(":"),a=n[0],r=n[1];return e&&"xmlns"===t&&(a="xmlns",r=""),{prefix:a,local:r}}function F(t){if(t.strict||(t.attribName=t.attribName[t.looseCase]()),-1!==t.attribList.indexOf(t.attribName)||t.tag.attributes.hasOwnProperty(t.attribName))t.attribName=t.attribValue="";else{if(t.opt.xmlns){var e=L(t.attribName,!0),n=e.prefix,a=e.local;if("xmlns"===n)if("xml"===a&&t.attribValue!==m)z(t,"xml: prefix must be bound to "+m+"\nActual: "+t.attribValue);else if("xmlns"===a&&t.attribValue!==h)z(t,"xmlns: prefix must be bound to "+h+"\nActual: "+t.attribValue);else{var r=t.tag,i=t.tags[t.tags.length-1]||t;r.ns===i.ns&&(r.ns=Object.create(i.ns)),r.ns[a]=t.attribValue}t.attribList.push([t.attribName,t.attribValue])}else t.tag.attributes[t.attribName]=t.attribValue,C(t,"onattribute",{name:t.attribName,value:t.attribValue});t.attribName=t.attribValue=""}}function U(t,e){if(t.opt.xmlns){var n=t.tag,a=L(t.tagName);n.prefix=a.prefix,n.local=a.local,n.uri=n.ns[a.prefix]||"",n.prefix&&!n.uri&&(z(t,"Unbound namespace prefix: "+JSON.stringify(t.tagName)),n.uri=a.prefix);var r=t.tags[t.tags.length-1]||t;n.ns&&r.ns!==n.ns&&Object.keys(n.ns).forEach((function(e){C(t,"onopennamespace",{prefix:e,uri:n.ns[e]})}));for(var i=0,o=t.attribList.length;i",t.tagName="",void(t.state=k.SCRIPT);C(t,"onscript",t.script),t.script=""}var e=t.tags.length,n=t.tagName;t.strict||(n=n[t.looseCase]());for(var a=n;e--&&t.tags[e].name!==a;)z(t,"Unexpected close tag");if(e<0)return z(t,"Unmatched closing tag: "+t.tagName),t.textNode+="",void(t.state=k.TEXT);t.tagName=n;for(var r=t.tags.length;r-- >e;){var i=t.tag=t.tags.pop();t.tagName=t.tag.name,C(t,"onclosetag",t.tagName);var o={};for(var l in i.ns)o[l]=i.ns[l];var s=t.tags[t.tags.length-1]||t;t.opt.xmlns&&i.ns!==s.ns&&Object.keys(i.ns).forEach((function(e){var n=i.ns[e];C(t,"onclosenamespace",{prefix:e,uri:n})}))}0===e&&(t.closedRoot=!0),t.tagName=t.attribValue=t.attribName="",t.attribList.length=0,t.state=k.TEXT}function B(t){var e,n=t.entity,a=n.toLowerCase(),r="";return t.ENTITIES[n]?t.ENTITIES[n]:t.ENTITIES[a]?t.ENTITIES[a]:("#"===(n=a).charAt(0)&&("x"===n.charAt(1)?(n=n.slice(2),r=(e=parseInt(n,16)).toString(16)):(n=n.slice(1),r=(e=parseInt(n,10)).toString(10))),n=n.replace(/^0+/,""),r.toLowerCase()!==n?(z(t,"Invalid character entity"),"&"+t.entity+";"):String.fromCodePoint(e))}function q(t,e){"<"===e?(t.state=k.OPEN_WAKA,t.startTagPosition=t.position):v(l,e)&&(z(t,"Non-whitespace before first tag."),t.textNode=e,t.state=k.TEXT)}function G(t,e){var n="";return e1114111||w(o)!==o)throw RangeError("Invalid code point: "+o);o<=65535?n.push(o):(t=55296+((o-=65536)>>10),e=o%1024+56320,n.push(t,e)),(a+1===r||n.length>16384)&&(i+=S.apply(null,n),n.length=0)}return i},Object.defineProperty?Object.defineProperty(String,"fromCodePoint",{value:I,configurable:!0,writable:!0}):String.fromCodePoint=I)}(e)},6739:function(t,e,n){!function(t,e,n,a,r){function i(t){if("contents"in t)for(var e=("styleAttrs"in t?t.styleAttrs[a.byName.ruby.qname]:null),n="span"===t.kind&&("container"===e||"textContainer"===e||"baseContainer"===e),r=t.contents.length-1;r>=0;r--)!n||"styleAttrs"in t.contents[r]&&a.byName.ruby.qname in t.contents[r].styleAttrs?i(t.contents[r]):delete t.contents[r]}function o(t,e,n,a){var r=a&&"seq"===a.timeContainer,i=0;a&&(i=r&&n?n.end:a.begin),e.begin=e.explicit_begin?e.explicit_begin+i:i;var l=e.begin,s=null;if("sets"in e)for(var u=0;u0;){var a=e.styleRefs.pop();a in t.styles?(z(t,t.styles[a],n),L(t.styles[a].styleAttrs,e.styleAttrs)):U(n,"Non-existant style id referenced")}}function P(t,e,n,a){for(var r=e.length-1;r>=0;r--){var i=e[r];i in t.styles?L(t.styles[i].styleAttrs,n):U(a,"Non-existant style id referenced")}}function L(t,e){for(var n in t)t.hasOwnProperty(n)&&(n in e||(e[n]=t[n]))}function F(t,e){if(t&&t.warn&&t.warn(e))throw e}function U(t,e){if(t&&t.error&&t.error(e))throw e}function j(t,e){throw t&&t.fatal&&t.fatal(e),e}function B(t,e){for(var n,a=0,r=t.length-1;a<=r;){var i=t[n=Math.floor((a+r)/2)];if(ie))return{found:!0,index:n};r=n-1}}return{found:!1,index:a}}t.fromXML=function(t,r,h){var p=e.parser(!0,{xmlns:!0}),b=[],y=[],E=[],A=0,_=null;p.onclosetag=function(t){if(b[0]instanceof R)null!==_.head&&null!==_.head.styling&&P(_.head.styling,b[0].styleRefs,b[0].styleAttrs,r),delete b[0].styleRefs;else if(b[0]instanceof c)for(var e in b[0].styles)b[0].styles.hasOwnProperty(e)&&z(b[0],b[0].styles[e],r);else if(b[0]instanceof S||b[0]instanceof w){if(b[0].contents.length>1){var a,i=[b[0].contents[0]];for(a=1;a0&&h&&"onCloseTag"in h&&h.onCloseTag());E.shift(),y.shift(),b.shift()},p.ontext=function(t){if(void 0===b[0]);else if(b[0]instanceof w||b[0]instanceof S){if(b[0]instanceof w){var e=b[0].styleAttrs[a.byName.ruby.qname];if("container"===e||"textContainer"===e||"baseContainer"===e)return}var n=new I;n.initFromText(_,b[0],t,y[0],E[0],r),b[0].contents.push(n)}else b[0]instanceof l&&A>0&&h&&"onText"in h&&h.onText(t)},p.onopentag=function(t){var e=t.attributes["xml:space"];e?E.unshift(e.value):0===E.length?E.unshift("default"):E.unshift(E[0]);var i=t.attributes["xml:lang"];if(i?y.unshift(i.value):0===y.length?y.unshift(""):y.unshift(y[0]),t.uri===n.ns_tt)if("tt"===t.local)null!==_&&j(r,"Two elements at ("+this.line+","+this.column+")"),(_=new s).initFromNode(t,y[0],r),b.unshift(_);else if("head"===t.local)b[0]instanceof s||j(r,"Parent of element is not at ("+this.line+","+this.column+")"),b.unshift(_.head);else if("styling"===t.local)b[0]instanceof u||j(r,"Parent of element is not at ("+this.line+","+this.column+")"),b.unshift(_.head.styling);else if("style"===t.local){var o;b[0]instanceof c?((o=new d).initFromNode(t,r),o.id?_.head.styling.styles[o.id]=o:U(r," @@ -24,7 +27,8 @@ - \ No newline at end of file +