@file-viewer/web-full 2.1.3 → 2.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +1 -1
- package/README.md +1 -1
- package/dist/flyfish-file-viewer-web-full.iife.js +10 -11643
- package/dist/flyfish-viewer-manifest.json +1 -1
- package/dist/global.d.ts +4 -2
- package/dist/global.js +4 -2
- package/dist/iife.d.ts +40 -0
- package/dist/iife.js +325 -0
- package/dist/renderers/archive.iife.js +358 -0
- package/dist/renderers/cad.iife.js +198 -0
- package/dist/renderers/data.iife.js +154 -0
- package/dist/renderers/drawing.iife.js +3389 -0
- package/dist/renderers/ebook.iife.js +95 -0
- package/dist/renderers/eda.iife.js +146 -0
- package/dist/renderers/email.iife.js +95 -0
- package/dist/renderers/geo.iife.js +30 -0
- package/dist/renderers/image.iife.js +88 -0
- package/dist/renderers/media.iife.js +89 -0
- package/dist/renderers/mindmap.iife.js +57 -0
- package/dist/renderers/model.iife.js +4288 -0
- package/dist/renderers/ofd.iife.js +31 -0
- package/dist/renderers/pdf.iife.js +2097 -0
- package/dist/renderers/presentation.iife.js +108 -0
- package/dist/renderers/spreadsheet.iife.js +121 -0
- package/dist/renderers/text.iife.js +284 -0
- package/dist/renderers/typst.iife.js +109 -0
- package/dist/renderers/word.iife.js +458 -0
- package/package.json +23 -3
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
(function(){var mu=Object.create,Ot=Object.defineProperty,hu=Object.getOwnPropertyDescriptor,pu=Object.getOwnPropertyNames,bu=Object.getPrototypeOf,fu=Object.prototype.hasOwnProperty,ne=(e,t)=>()=>(e&&(t=e(e=0)),t),yu=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),Bt=(e,t)=>{let r={};for(var n in e)Ot(r,n,{get:e[n],enumerable:!0});return t||Ot(r,Symbol.toStringTag,{value:"Module"}),r},vu=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(var i=pu(t),a=0,l=i.length,o;a<l;a++)o=i[a],!fu.call(e,o)&&o!==r&&Ot(e,o,{get:(s=>t[s]).bind(null,o),enumerable:!(n=hu(t,o))||n.enumerable});return e},gu=(e,t,r)=>(r=e!=null?mu(bu(e)):{},vu(t||!e||!e.__esModule?Ot(r,"default",{value:e,enumerable:!0}):r,e)),jt,Fi,Qt,qt,$t,er,tr,rr,ir,ki,io,nr,ar,lr,or,sr,no,ao,Ei,dr,lo,cr,st,ve,oo,dt,ur,Ui,so,co,uo,mo,ho,po,bo,fo,yo,vo,Ti,go,wo,wu=ne((()=>{jt="vendor/libarchive/worker-bundle.js",Fi="vendor/libarchive/libarchive.wasm",Qt="vendor/docx/docx.worker.js",qt="vendor/docx/jszip.min.js",$t="vendor/xlsx/sheet.worker.js",er="vendor/pdf/pdf.worker.mjs",tr="vendor/pdf/cmaps/",rr="vendor/pdf/wasm/",ir="vendor/pdf/standard_fonts/",ki="vendor/drawio/viewer-static.min.js",io="vendor/drawio/",nr="wasm/cad/",ar="wasm/cad/dwg-worker.js",lr="wasm/cad/dwfv-render.wasm",or="wasm/typst/typst_ts_web_compiler_bg.wasm",sr="wasm/typst/typst_ts_renderer_bg.wasm",no="wasm/typst/fonts/",ao="@myriaddreamin/typst-ts-web-compiler/pkg/typst_ts_web_compiler_bg.wasm",Ei="@myriaddreamin/typst-ts-renderer/pkg/typst_ts_renderer_bg.wasm",dr="wasm/data/sql-wasm.wasm",lo="sql.js/dist/sql-wasm.wasm",cr=[{rendererId:"drawing",assets:[{id:"drawio-viewer-script",rendererId:"drawing",kind:"script",target:"public",required:!0,defaultPath:ki,optionPath:"drawing.viewerScriptUrl",description:"Official diagrams.net viewer-static.min.js self-hosted for offline Draw.io rendering."},{id:"drawio-offline-assets",rendererId:"drawing",kind:"directory",target:"public",required:!0,defaultPath:io,description:"Official diagrams.net styles, shapes, stencils, images, mxGraph and math assets for offline rendering."}]},{rendererId:"pdf",assets:[{id:"pdf-worker",rendererId:"pdf",kind:"worker",target:"public",required:!0,defaultPath:er,optionPath:"pdf.workerUrl",description:"PDF.js module worker copied into viewer assets for offline PDF rendering."},{id:"pdf-cmaps",rendererId:"pdf",kind:"directory",target:"public",required:!0,defaultPath:tr,optionPath:"pdf.cMapUrl",description:"PDF.js packed CMaps used for CJK and embedded text decoding."},{id:"pdf-wasm",rendererId:"pdf",kind:"wasm-directory",target:"public",required:!0,defaultPath:rr,optionPath:"pdf.wasmUrl",description:"PDF.js WebAssembly helper directory for fully self-hosted PDF rendering."},{id:"pdf-standard-fonts",rendererId:"pdf",kind:"directory",target:"public",required:!0,defaultPath:ir,optionPath:"pdf.standardFontDataUrl",description:"PDF.js standard font data used when PDF files reference base fonts."}]},{rendererId:"archive",assets:[{id:"libarchive-worker",rendererId:"archive",kind:"worker",target:"public",required:!1,defaultPath:jt,optionPath:"archive.workerUrl",description:"libarchive.js module worker used for broad archive format parsing."},{id:"libarchive-wasm",rendererId:"archive",kind:"wasm",target:"public",required:!1,defaultPath:Fi,optionPath:"archive.wasmUrl",description:"libarchive.js WebAssembly module expected next to the public worker."}]},{rendererId:"cad",assets:[{id:"cad-wasm-directory",rendererId:"cad",kind:"wasm-directory",target:"public",required:!0,defaultPath:nr,optionPath:"cad.wasmPath",description:"@flyfish-dev/cad-viewer WebAssembly directory for DWG/DXF helpers."},{id:"cad-dwg-worker",rendererId:"cad",kind:"worker",target:"public",required:!0,defaultPath:ar,optionPath:"cad.workerUrl",description:"DWG worker entry used by @flyfish-dev/cad-viewer."},{id:"cad-dwf-wasm",rendererId:"cad",kind:"wasm",target:"public",required:!0,defaultPath:lr,optionPath:"cad.dwfWasmUrl",description:"DWF/DWFx/XPS raster WebAssembly module used by @flyfish-dev/cad-viewer."}]},{rendererId:"office-word-openxml",assets:[{id:"docx-worker",rendererId:"office-word-openxml",kind:"worker",target:"public",required:!1,defaultPath:Qt,optionPath:"docx.workerUrl",description:"Optional @file-viewer/docx worker for off-main-thread DOCX ZIP/XML parsing."},{id:"docx-worker-jszip",rendererId:"office-word-openxml",kind:"script",target:"public",required:!1,defaultPath:qt,optionPath:"docx.workerJsZipUrl",description:"JSZip runtime loaded by the @file-viewer/docx worker for fully offline DOCX parsing."}]},{rendererId:"spreadsheet-openxml",assets:[{id:"spreadsheet-worker",rendererId:"spreadsheet-openxml",kind:"worker",target:"public",required:!1,defaultPath:$t,optionPath:"spreadsheet.workerUrl",description:"Optional Spreadsheet worker for off-main-thread styled-exceljs workbook parsing."}]},{rendererId:"typst",assets:[{id:"typst-compiler-wasm",rendererId:"typst",kind:"wasm",target:"public",required:!0,defaultPath:or,packagePath:ao,optionPath:"typst.compilerWasmUrl",description:"Typst compiler WebAssembly module copied to the public assets directory."},{id:"typst-renderer-wasm",rendererId:"typst",kind:"wasm",target:"public",required:!0,defaultPath:sr,packagePath:Ei,optionPath:"typst.rendererWasmUrl",description:"Typst SVG renderer WebAssembly module copied to the public assets directory."},{id:"typst-font-assets",rendererId:"typst",kind:"directory",target:"public",required:!0,defaultPath:no,optionPath:"typst.fontAssetsUrl",description:"Self-hosted default Typst text fonts used by typst.ts without public CDN requests."}]},{rendererId:"data-asset",assets:[{id:"data-sql-wasm",rendererId:"data-asset",kind:"wasm",target:"public",required:!1,defaultPath:dr,packagePath:lo,optionPath:"data.sqlWasmUrl",description:"sql.js WebAssembly module copied to the public assets directory for SQLite previews."}]}],st="http://localhost/",ve=(e,t,r={})=>{const n=e?String(e):t,i=r.documentBaseUrl||st,a=r.baseUrl?r.baseUrl.endsWith("/")?r.baseUrl:`${r.baseUrl}/`:i,l=r.baseUrl?new URL(a,i).href:a,o=new URL(n,l).href;return r.trimTrailingSlash?o.replace(/\/+$/,""):o},oo=e=>{try{const t=new URL(e||st,st);if(t.origin&&t.origin!=="null")return`${t.origin}/`}catch{}return st},dt=(e,t,r={})=>e!=null&&String(e).trim()?ve(e,t,r):ve(void 0,t,{...r,baseUrl:oo(r.documentBaseUrl)}),ur=(e,t)=>ve(e?.workerUrl,jt,{baseUrl:t}),Ui=(e,t="")=>e?.wasmUrl?ve(e.wasmUrl,t||e.wasmUrl):t,so=(e,t)=>({wasmPath:ve(e?.wasmPath,nr,{documentBaseUrl:t,trimTrailingSlash:!0}),workerUrl:ve(e?.workerUrl,ar,{documentBaseUrl:t}),dwfWasmUrl:ve(e?.dwfWasmUrl,lr,{documentBaseUrl:t})}),co=(e,t)=>({workerUrl:dt(e?.workerUrl,er,{documentBaseUrl:t}),cMapUrl:dt(e?.cMapUrl,tr,{documentBaseUrl:t}),wasmUrl:dt(e?.wasmUrl,rr,{documentBaseUrl:t}),standardFontDataUrl:dt(e?.standardFontDataUrl,ir,{documentBaseUrl:t})}),uo=(e,t)=>ve(e?.viewerScriptUrl,ki,{documentBaseUrl:t}),mo=(e,t)=>ve(e?.workerUrl,Qt,{documentBaseUrl:t}),ho=(e,t)=>ve(e?.workerJsZipUrl,qt,{documentBaseUrl:t}),po=(e,t)=>ve(e?.workerUrl,$t,{documentBaseUrl:t}),bo=(e,t=[],r)=>ve(e?.compilerWasmUrl||t.find(Boolean),or,{documentBaseUrl:r}),fo=(e,t=[],r)=>ve(e?.rendererWasmUrl||t.find(Boolean),sr,{documentBaseUrl:r}),yo=(e,t=[],r)=>ve(e?.sqlWasmUrl||t.find(Boolean),dr,{documentBaseUrl:r}),vo=()=>[...cr],Ti=e=>cr.find(t=>t.rendererId===e)||null,go=(e,t)=>{var r,n,i,a,l,o,s,h,f,p,v,m,g,u,y,b,Z;switch(t){case"archive.workerUrl":return(r=e?.archive)===null||r===void 0?void 0:r.workerUrl;case"archive.wasmUrl":return(n=e?.archive)===null||n===void 0?void 0:n.wasmUrl;case"cad.wasmPath":return(i=e?.cad)===null||i===void 0?void 0:i.wasmPath;case"cad.workerUrl":return(a=e?.cad)===null||a===void 0?void 0:a.workerUrl;case"cad.dwfWasmUrl":return(l=e?.cad)===null||l===void 0?void 0:l.dwfWasmUrl;case"data.sqlWasmUrl":return(o=e?.data)===null||o===void 0?void 0:o.sqlWasmUrl;case"docx.workerJsZipUrl":return(s=e?.docx)===null||s===void 0?void 0:s.workerJsZipUrl;case"docx.workerUrl":return(h=e?.docx)===null||h===void 0?void 0:h.workerUrl;case"drawing.viewerScriptUrl":return(f=e?.drawing)===null||f===void 0?void 0:f.viewerScriptUrl;case"pdf.workerUrl":return(p=e?.pdf)===null||p===void 0?void 0:p.workerUrl;case"pdf.cMapUrl":return(v=e?.pdf)===null||v===void 0?void 0:v.cMapUrl;case"pdf.wasmUrl":return(m=e?.pdf)===null||m===void 0?void 0:m.wasmUrl;case"pdf.standardFontDataUrl":return(g=e?.pdf)===null||g===void 0?void 0:g.standardFontDataUrl;case"spreadsheet.workerUrl":return(u=e?.spreadsheet)===null||u===void 0?void 0:u.workerUrl;case"typst.compilerWasmUrl":return(y=e?.typst)===null||y===void 0?void 0:y.compilerWasmUrl;case"typst.fontAssetsUrl":return(b=e?.typst)===null||b===void 0?void 0:b.fontAssetsUrl;case"typst.rendererWasmUrl":return(Z=e?.typst)===null||Z===void 0?void 0:Z.rendererWasmUrl;default:return}},wo=(e,t={})=>{const r=Ti(e);return r?r.assets.map(n=>{const i=go(t.options,n.optionPath),a=i?String(i):n.defaultUrl||n.defaultPath,l={...n,configured:!!i};return a&&(l.url=ve(a,a,{baseUrl:t.baseUrl,documentBaseUrl:t.documentBaseUrl,trimTrailingSlash:n.kind==="directory"||n.kind==="wasm-directory"||t.trimTrailingSlash})),l}):[]}})),Zo=ne((()=>{wu()})),mr,hr,pr,br,Re,Ki,_e=ne((()=>{mr=["zip","zipx","7z","rar","tar","gz","gzip","tgz","bz2","bzip2","tbz","tbz2","xz","txz","lzma","zst","tzst","cab","ar","cpio","iso","xar","lha","lzh","jar","war","ear","apk","cbz","cbr"],hr=["glb","gltf","obj","stl","ply","fbx","dae","3ds","3mf","amf","usd","usda","usdc","usdz","kmz","step","stp","iges","igs","ifc","3dm","brep","pcd","wrl","vrml","xyz","vtk","vtp"],pr=["txt","json","js","mjs","cjs","css","java","py","html","htm","jsx","ts","tsx","xml","log","vue","yaml","yml","ini","sh","bash","sql","go","rs","php","c","cpp","cc","h","hpp","cs","diff","patch","bundle","bdl","jsonc","json5","ipynb","toml","proto","hcl","tex","gv","http","react","rb","swift","kt"],br=["gif","jpg","jpeg","bmp","tiff","tif","png","svg","webp","avif","ico","heic","heif","jxl"],Re=[{id:"office-word-openxml",label:"Word OpenXML",category:"office",extensions:["docx","docm","dotx","dotm"],async:!0,capabilities:{download:!0,print:"adapter",exportHtml:"adapter",zoom:"provider",search:!0}},{id:"office-word-binary",label:"Word Binary",category:"office",extensions:["doc","dot"],async:!0,capabilities:{download:!0,print:"adapter",exportHtml:"adapter",zoom:"provider",search:!0}},{id:"office-presentation",label:"PowerPoint",category:"office",extensions:["pptx","pptm","potx","potm","ppsx","ppsm"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!0}},{id:"open-document",label:"Open Document",category:"office",extensions:["rtf","odt","odp"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!0}},{id:"spreadsheet-openxml",label:"Spreadsheet",category:"office",extensions:["xlsx","xltx","xlsm","xlsb","xls","xlt","xltm","csv","ods","fods","numbers"],async:!0,capabilities:{download:!0,print:!1,exportHtml:!1,zoom:"provider",search:!0}},{id:"pdf",label:"PDF",category:"document",extensions:["pdf"],async:!0,capabilities:{download:!0,print:"adapter",exportHtml:"adapter",zoom:"provider",search:"provider"}},{id:"ofd",label:"OFD",category:"document",extensions:["ofd"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!0}},{id:"typst",label:"Typst",category:"document",extensions:["typ","typst"],async:!0,capabilities:{download:!0,print:"adapter",exportHtml:"adapter",zoom:"provider",search:!0}},{id:"archive",label:"Archive",category:"archive",extensions:mr,async:!0,capabilities:{download:!0,print:!1,exportHtml:!1,zoom:!1,search:!0}},{id:"email",label:"Email",category:"email",extensions:["eml","msg","mbox"],async:!0,capabilities:{download:!0,print:!1,exportHtml:!0,zoom:!1,search:!0}},{id:"eda",label:"EDA",category:"eda",extensions:["olb","dra","gds","oas","oasis"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:!1,search:!0}},{id:"cad",label:"CAD",category:"cad",extensions:["dxf","dwg","dwf","dwfx","xps"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!1}},{id:"model",label:"3D Model",category:"model",extensions:hr,async:!0,capabilities:{download:!0,print:!1,exportHtml:!1,zoom:"provider",search:!1}},{id:"geo",label:"Geospatial",category:"geo",extensions:["geojson","kml","gpx","shp"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!0}},{id:"drawing",label:"Drawing",category:"drawing",extensions:["excalidraw","drawio","dio","mermaid","mmd","plantuml","puml"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!0}},{id:"mindmap",label:"Mind Map",category:"mindmap",extensions:["xmind"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!0}},{id:"epub",label:"EPUB",category:"ebook",extensions:["epub"],async:!0,capabilities:{download:!0,print:!1,exportHtml:!0,zoom:!1,search:"provider"}},{id:"umd",label:"UMD",category:"ebook",extensions:["umd"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!0}},{id:"image",label:"Image",category:"image",extensions:br,async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:"provider",search:!1}},{id:"markdown",label:"Markdown",category:"markdown",extensions:["md","markdown"],async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:!1,search:!0}},{id:"code",label:"Code and Text",category:"code",extensions:pr,async:!0,capabilities:{download:!0,print:!0,exportHtml:!0,zoom:!1,search:!0}},{id:"video",label:"Video",category:"media",extensions:["mp4","webm","m3u8"],async:!0,capabilities:{download:!0,print:!1,exportHtml:!1,zoom:!1,search:!1}},{id:"audio",label:"Audio",category:"media",extensions:["mp3","mpeg","wav","ogg","oga","opus","m4a","aac","flac","weba","midi","mid"],async:!0,capabilities:{download:!0,print:!1,exportHtml:!1,zoom:!1,search:!1}},{id:"data-asset",label:"Data Asset",category:"asset",extensions:["ttf","otf","woff","woff2","psd","ai","eps","sqlite","wasm","parquet","avro","webarchive"],async:!0,capabilities:{download:!0,print:!1,exportHtml:!0,zoom:!1,search:!0}}],Ki=Object.freeze(Array.from(new Set(Re.flatMap(e=>e.extensions))).sort())})),Zu,So,Su,fr,_i,ct,Pi,Ci,ut=ne((()=>{Zu=1,So=1200,Su=160,fr=(e={})=>{var t,r,n;const i=Number.isFinite(e.scale)&&e.scale?Number(e.scale):1;return{scale:i,label:e.label||`${Math.round(i*100)}%`,canZoomIn:(t=e.canZoomIn)!==null&&t!==void 0?t:!1,canZoomOut:(r=e.canZoomOut)!==null&&r!==void 0?r:!1,canReset:(n=e.canReset)!==null&&n!==void 0?n:!1,minScale:e.minScale,maxScale:e.maxScale}},_i=e=>e===!1?{enabled:!1}:e===!0||e===void 0?{}:e,ct=(e="")=>({query:e,total:0,currentIndex:-1,current:null,matches:[]}),Pi=e=>e===!1?{enabled:!1,collectText:!1}:e===!0||e===void 0?{}:e,Ci=(e,t)=>{var r;const n=Pi(t);if(n.enabled===!1||n.collectText===!1)return[];const i=Math.max(200,n.chunkSize||1200),a=Math.max(0,Math.min(i-1,(r=n.chunkOverlap)!==null&&r!==void 0?r:160)),l=Math.max(0,n.maxTextLength||0),o=[];return e.forEach(s=>{const h=l?s.text.slice(0,l):s.text;if(!h)return;if(h.length<=i){o.push({id:`${s.id}-chunk-1`,text:h,anchor:s,startLine:s.line,endLine:s.line});return}let f=0,p=1;for(;f<h.length;){const v=h.slice(f,f+i);if(o.push({id:`${s.id}-chunk-${p}`,text:v,anchor:s,startLine:s.line,endLine:s.line}),f+i>=h.length)break;f+=i-a,p+=1}}),o}})),zi,Yi,Hi,Ni,Vo,xo,Io,Ro,Go,yr,Ji,Di,Ai,Vu=ne((()=>{zi=["[data-viewer-anchor-id]",".pdfViewer .page",".docx-wrapper section",".docx p",".docx li",".docx table",".markdown-body h1",".markdown-body h2",".markdown-body h3",".markdown-body h4",".markdown-body h5",".markdown-body h6",".markdown-body p",".markdown-body li",".markdown-body pre",".markdown-body table","article h1","article h2","article h3","article h4","article h5","article h6","article p","article li","article pre","article table","pre code","p","li","tr","h1","h2","h3","h4","h5","h6","pre","table"].join(","),Yi=[".viewer-actions",".viewer-watermark",".state-panel",".pdf-toolbar",".pdf-nav-pane",".flyfish-search-match"].join(","),Hi=e=>typeof CSS<"u"&&typeof CSS.escape=="function"?CSS.escape(e):e.replace(/["\\]/g,"\\$&"),Ni=(e,t=160)=>{const r=e.replace(/\s+/g," ").trim();return r.length>t?`${r.slice(0,t-1)}…`:r},Vo=e=>{const t=e.getBoundingClientRect();return t.width>0||t.height>0},xo=e=>!!e.closest(Yi),Io=e=>{const t=e.closest("[data-page-number], [data-page]"),r=t?.dataset.pageNumber||t?.dataset.page,n=r?Number.parseInt(r,10):NaN;return Number.isFinite(n)?n:void 0},Ro=e=>e.matches(".pdfViewer .page, [data-page-number], [data-page]")?"page":e.matches("p, li, tr, pre, code")?"line":"block",Go=(e,t)=>{let r=e.parentElement;for(;r;){if(t.has(r))return!0;r=r.parentElement}return!1},yr=e=>{if(!e)return[];const t=e.getBoundingClientRect(),r=new Set,n=[];return Array.from(e.querySelectorAll(zi)).forEach(i=>{if(xo(i)||!Vo(i))return;const a=Ni(i.textContent||"",1e3);if(!a||Go(i,r)&&!i.matches("p, li, tr, pre, code"))return;r.add(i);const l=i.dataset.viewerAnchorId||`viewer-anchor-${n.length+1}`;i.dataset.viewerAnchorId=l,i.dataset.viewerLine=String(n.length+1);const o=i.getBoundingClientRect();n.push({id:l,index:n.length,line:n.length+1,type:Ro(i),label:Ni(a,96),text:a,page:Io(i),top:o.top-t.top+e.scrollTop,left:o.left-t.left+e.scrollLeft,width:o.width,height:o.height})}),n},Ji=(e,t,r)=>{if(!e)return null;const n=e.closest("[data-viewer-anchor-id]");if(n?.dataset.viewerAnchorId){const o=t.find(s=>s.id===n.dataset.viewerAnchorId);if(o)return o}if(!r)return null;const i=r.getBoundingClientRect(),a=e.getBoundingClientRect().top-i.top+r.scrollTop;let l=null;for(const o of t){if(o.top<=a+1){l=o;continue}break}return l},Di=(e,t)=>{if(!e||!t.length)return null;const r=e.scrollTop+e.clientHeight*.42;let n=t[0];for(const i of t){if(i.top<=r){n=i;continue}break}return n},Ai=(e,t)=>{if(!e||t===null||t===void 0)return!1;const r=typeof t=="object"?`[data-viewer-anchor-id="${Hi(t.id)}"]`:typeof t=="number"?`[data-viewer-line="${t}"]`:`[data-viewer-anchor-id="${Hi(t)}"]`,n=e.querySelector(r);return n?(n.scrollIntoView({block:"center",inline:"nearest"}),!0):typeof t=="object"?(e.scrollTo({top:Math.max(0,t.top-e.clientHeight*.18),left:Math.max(0,Math.min(t.left,e.scrollWidth-e.clientWidth)),behavior:"smooth"}),!0):!1}})),mt,ht,Lo,Xo,Mi,Oi,Bi,ji,xu=ne((()=>{mt=new WeakMap,ht=new WeakMap,Lo=(e,t)=>{mt.set(e,t),e.__flyfishViewerSearchProvider=t},Xo=e=>{e&&(mt.delete(e),delete e.__flyfishViewerSearchProvider)},Mi=e=>{if(!e)return null;const t=mt.get(e)||e.__flyfishViewerSearchProvider;if(t)return t;const r=e.querySelector("[data-viewer-search-provider]");return r&&(mt.get(r)||r.__flyfishViewerSearchProvider)||null},Oi=(e,t)=>{ht.set(e,t),e.dataset.viewerZoomProvider=e.dataset.viewerZoomProvider||"custom",e.__flyfishViewerZoomProvider=t},Bi=e=>{e&&(ht.delete(e),delete e.dataset.viewerZoomProvider,delete e.__flyfishViewerZoomProvider)},ji=e=>{if(!e)return null;const t=ht.get(e)||e.__flyfishViewerZoomProvider;if(t)return t;const r=e.querySelector("[data-viewer-zoom-provider]");return r&&(ht.get(r)||r.__flyfishViewerZoomProvider)||null}})),Wo,Fo,Qi,pt,bt,qi,Iu=ne((()=>{Wo="[data-viewer-scroll-container], .pdf-wrapper",Fo="div, section, article, pre",Qi=["auto","scroll","overlay"],pt=e=>Math.max(0,e.scrollHeight-e.clientHeight),bt=(e,t={})=>{var r,n;const i=(r=t.minScrollRange)!==null&&r!==void 0?r:2;if(pt(e)<=i)return!1;const a=(n=e.ownerDocument)===null||n===void 0?void 0:n.defaultView,l=a?.getComputedStyle?a:typeof window<"u"?window:void 0;if(!l?.getComputedStyle)return!1;const o=l.getComputedStyle(e),s=o.overflowY||o.overflow;return(t.overflowValues||Qi).includes(s)},qi=(e,t={})=>{if(!e)return null;const r=t.preferredSelector||"[data-viewer-scroll-container], .pdf-wrapper",n=t.candidateSelector||"div, section, article, pre",i=e.querySelector(r);return i&&bt(i,t)?i:bt(e,t)?e:Array.from(e.querySelectorAll(n)).filter(a=>bt(a,t)).sort((a,l)=>pt(l)-pt(a))[0]||i||e}})),ft=ne((()=>{Vu(),xu(),Iu()})),ko,Eo,Uo,To,$i,vr,gr,yt,en,Pe,tn,rn,nn,Ko,_o,Po,Co,an,wr,zo,Yo,Ho,No,ln,Jo=ne((()=>{ft(),ut(),ko="flyfish-search-match",Eo="flyfish-search-match--active",Uo=1e3,To=["script","style","textarea","input","select","button",".viewer-actions",".viewer-watermark",".state-panel",".pdf-toolbar",".pdf-nav-pane",".flyfish-search-match",".textLayer",".annotationLayer",".xfaLayer","svg","canvas","iframe","video","audio"].join(","),$i=e=>({...e,anchor:e.anchor?{...e.anchor}:null}),vr=e=>({query:e.query,total:e.total,currentIndex:e.currentIndex,current:e.current?$i(e.current):null,matches:e.matches.map($i)}),gr=(e,t)=>{const r=vr(t);return e.query=r.query,e.total=r.total,e.currentIndex=r.currentIndex,e.current=r.current,e.matches=r.matches,e},yt=(e,t)=>(e.anchors.value=t.anchors,gr(e.state,t.state),e.state),en=(e,t)=>(t.observe(),yt(e,t)),Pe=async(e,t,r)=>(await r(),yt(e,t)),tn=(e,t)=>(t.destroy(),yt(e,t)),rn=(e,t)=>({observe(){return en(e,t)},async refreshAnchors(){return await Pe(e,t,()=>t.refreshAnchors()),e.anchors.value},async search(r){return Pe(e,t,()=>t.search(r))},async next(){return Pe(e,t,()=>t.next())},async previous(){return Pe(e,t,()=>t.previous())},async clear(){return Pe(e,t,()=>t.clear())},destroy(){return tn(e,t)}}),nn=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),Ko=e=>e.replace(/\s+/g," ").trim(),_o=(e,t)=>{const r=t.wholeWord?`\\b${nn(e)}\\b`:nn(e);return new RegExp(r,t.caseSensitive?"g":"gi")},Po=e=>e.map(({element:t,...r})=>r),Co=e=>{const t=e.parentNode;if(t){for(;e.firstChild;)t.insertBefore(e.firstChild,e);t.removeChild(e),t.normalize()}},an=(e,t)=>{const r=e.parentElement;return!r||r.closest(To)?!0:!t.contains(r)||!e.data.trim()},wr=(e,t)=>{const r=e.ownerDocument.defaultView,n=r?.NodeFilter||(typeof NodeFilter<"u"?NodeFilter:void 0);return n?n[t]:t==="SHOW_TEXT"?4:t==="FILTER_REJECT"?2:1},zo=e=>{const t=[],r=e.ownerDocument.createTreeWalker(e,wr(e,"SHOW_TEXT"),{acceptNode(i){return an(i,e)?wr(e,"FILTER_REJECT"):wr(e,"FILTER_ACCEPT")}});let n=r.nextNode();for(;n;)an(n,e)||t.push(n),n=r.nextNode();return t},Yo=e=>{var t,r;return((r=(t=e?.ownerDocument)===null||t===void 0?void 0:t.defaultView)===null||r===void 0?void 0:r.MutationObserver)||(typeof MutationObserver<"u"?MutationObserver:void 0)},Ho=e=>{var t;return((t=e?.ownerDocument)===null||t===void 0?void 0:t.defaultView)||(typeof window<"u"?window:void 0)},No=e=>{if(Math.max(0,e.scrollHeight-e.clientHeight)<=2)return!1;const t=e.ownerDocument.defaultView||(typeof window<"u"?window:void 0);if(!t?.getComputedStyle)return!0;const r=t.getComputedStyle(e),n=r.overflowY||r.overflow;return["auto","scroll","overlay","visible"].includes(n)},ln=({root:e,options:t,waitForDomUpdate:r,preferredScrollContainer:n})=>{let i=[],a=[];const l=new Set,o=ct();let s=null,h=!1,f=null,p=!1;const v=()=>_i(t?.()),m=()=>{const X=Po(a);o.total=X.length,o.currentIndex=X.length?Math.max(0,Math.min(o.currentIndex,X.length-1)):-1,o.current=o.currentIndex>=0?X[o.currentIndex]:null,o.matches=X},g=X=>gr(o,X),u=()=>{Array.from(l).forEach(Co),l.clear(),a=[],o.total=0,o.currentIndex=-1,o.current=null,o.matches=[]},y=async(X,P=o.query)=>{var V;const k=Mi(e());return k?(u(),g(await X(k)||((V=k.getState)===null||V===void 0?void 0:V.call(k))||ct(P))):null},b=()=>{s?.disconnect(),s=null},Z=X=>{const P=e()||null,V=n?.()||null;if(V&&(V===X||V.contains(X)))return V;let k=X.parentElement;for(;k;){if(No(k))return k;if(k===P)break;k=k.parentElement}return P},I=X=>{const P=Z(X);if(!P){X.scrollIntoView({block:"center",inline:"nearest"});return}const V=P.scrollLeft,k=P.getBoundingClientRect(),c=X.getBoundingClientRect(),_=c.top-k.top+P.scrollTop-P.clientHeight/2+c.height/2,Q=Math.max(0,P.scrollHeight-P.clientHeight),Y=Math.max(0,Math.min(_,Q));typeof P.scrollTo=="function"?P.scrollTo({top:Y,left:V,behavior:"auto"}):(P.scrollTop=Y,P.scrollLeft=V),P.scrollLeft=V},w=(X,P=!0)=>{const V=v();if(!a.length)return m(),o;const k=(X%a.length+a.length)%a.length;a.forEach(_=>{_.element.classList.remove(V.activeClassName||"flyfish-search-match--active")});const c=a[k];return c.element.classList.add(V.activeClassName||"flyfish-search-match--active"),o.currentIndex=k,m(),P&&I(c.element),o},G=(X,P,V,k)=>{var c;const _=e();if(!_)return;const Q=v(),Y=X.data;let q=0,C;const ee=X.ownerDocument.createDocumentFragment();let U=!1;for(P.lastIndex=0;(C=P.exec(Y))&&k.length<V;){if(!C[0]){P.lastIndex+=1;continue}C.index>q&&ee.appendChild(X.ownerDocument.createTextNode(Y.slice(q,C.index)));const W=X.ownerDocument.createElement("mark");W.className=Q.className||"flyfish-search-match",W.textContent=C[0],W.dataset.searchMatchId=`viewer-search-match-${k.length+1}`,l.add(W),ee.appendChild(W),U=!0;const $=Ji(X.parentElement,i,_);k.push({id:W.dataset.searchMatchId,index:k.length,text:C[0],anchor:$,line:$?.line,page:$?.page,element:W}),q=C.index+C[0].length}U&&(q<Y.length&&ee.appendChild(X.ownerDocument.createTextNode(Y.slice(q))),(c=X.parentNode)===null||c===void 0||c.replaceChild(ee,X))},K=()=>{b();const X=e(),P=Yo(X);!h||!X||!P||(s=new P(R),s.observe(X,{childList:!0,subtree:!0,characterData:!0}))},F=()=>{if(!h)return;const X=Ho(e());if(X?.setTimeout){X.setTimeout(K,0);return}setTimeout(K,0)},J=async(X,P=0)=>{const V=Ko(X),k=v();o.query=V,b(),p=!0;try{u();const c=e();if(!V||k.enabled===!1||!c){const U=await y(W=>{var $;return($=W.clear)===null||$===void 0?void 0:$.call(W)},V);return U||o}const _=await y(U=>U.search(V,k),V);if(_)return _;await r?.();const Q=e();if(!Q)return o;i=yr(Q);const Y=_o(V,k),q=Math.max(1,k.maxMatches||1e3),C=[],ee=zo(Q);for(const U of ee){if(C.length>=q)break;G(U,Y,q,C)}a=C,m(),C.length&&w(P,!0)}finally{p=!1,F()}return o},R=()=>{var X;const P=v();!o.query||p||P.enabled===!1||(f!==null&&clearTimeout(f),f=setTimeout(()=>{f=null,J(o.query,Math.max(0,o.currentIndex))},(X=P.debounce)!==null&&X!==void 0?X:180))};return{get anchors(){return i},state:o,getInternalMatches:()=>a,observe(){h=!0,K()},async refreshAnchors(){return await r?.(),i=yr(e()||null),i},search:X=>J(X,0),next:async()=>await y(X=>{var P,V;return((P=X.next)===null||P===void 0?void 0:P.call(X))||((V=X.getState)===null||V===void 0?void 0:V.call(X))})||w(o.currentIndex+1),previous:async()=>await y(X=>{var P,V;return((P=X.previous)===null||P===void 0?void 0:P.call(X))||((V=X.getState)===null||V===void 0?void 0:V.call(X))})||w(o.currentIndex-1),clear:async()=>{o.query="",b(),p=!0;try{u();const X=await y(P=>{var V;return(V=P.clear)===null||V===void 0?void 0:V.call(P)},"");return X||o}finally{p=!1,F()}},destroy(){h=!1,b(),f!==null&&(clearTimeout(f),f=null),u()}}}})),vt,Zr,Do,on,sn,dn,cn,Ao=ne((()=>{ut(),ft(),Jo(),vt=e=>vr(e),Zr=({root:e,anchors:t})=>Di(e||null,t),Do=({root:e,anchors:t,searchState:r})=>({searchState:vt(r),locationAnchor:Zr({root:e,anchors:t})}),on=({root:e,searchTarget:t,searchOptions:r,waitForDomUpdate:n,preferredScrollContainer:i,getAiOptions:a,onSearchChange:l,onLocationChange:o})=>{let s=null;const h=rn(t,ln({root:e,options:r,waitForDomUpdate:n,preferredScrollContainer:()=>{var f,p;return(p=(f=i?.())!==null&&f!==void 0?f:s?.getScrollContainer())!==null&&p!==void 0?p:null}}));return s=cn({root:e,searchController:{getAnchors:()=>t.anchors.value,getSearchState:()=>t.state,observe:h.observe,refreshAnchors:h.refreshAnchors,search:h.search,clear:h.clear,next:h.next,previous:h.previous},getAiOptions:a,onSearchChange:l,onLocationChange:o}),{...s,destroyDocumentFeatures:h.destroy}},sn=({state:e,onChange:t})=>{const r=vt(e);return t?.(r),!0},dn=({anchor:e,onChange:t})=>(t?.(e),!0),cn=({root:e,searchController:t,getAiOptions:r,onSearchChange:n,onLocationChange:i})=>{const a=()=>e()||null,l=()=>t.getAnchors(),o=()=>vt(t.getSearchState()),s=()=>{const u=o();return sn({state:u,onChange:n}),u},h=()=>Zr({root:a(),anchors:l()}),f=()=>{const u=h();return dn({anchor:u,onChange:i}),u},p=u=>u?.notify===!1?h():f(),v=async u=>{t.observe();const y=await t.refreshAnchors();return p(u),y},m=async u=>(l().length||await v(u),l()),g=(u,y)=>{const b=Ai(a(),u);return p(y),b};return{refreshDocumentIndex:v,async clearDocumentState(){return await t.clear(),o()},getScrollContainer(){return qi(a())},async searchDocument(u){return await t.search(u),s()},async clearDocumentSearch(){return await t.clear(),s()},async nextSearchResult(){return await t.next(),f(),s()},async previousSearchResult(){return await t.previous(),f(),s()},getSearchState:o,async collectDocumentAnchors(u){return await v(u),l()},getCurrentDocumentAnchor:h,scrollToLoadedAnchor:g,async scrollToAnchor(u,y){return await m(y),g(u,y)},async scrollToLine(u,y){return await m(y),g(u,y)},getDocumentTextChunks(u){return Ci(l(),u??r?.())}}}})),Ce,ke,Sr,je,Vr,un,mn,hn,gt,Mo,pn,Oo,bn,fn=ne((()=>{ut(),ft(),Ce=e=>({scale:e.scale,label:e.label,canZoomIn:e.canZoomIn,canZoomOut:e.canZoomOut,canReset:e.canReset,minScale:e.minScale,maxScale:e.maxScale}),ke=(e,t)=>{const r=fr(t||{});return e.scale=r.scale,e.label=r.label,e.canZoomIn=r.canZoomIn,e.canZoomOut=r.canZoomOut,e.canReset=r.canReset,e.minScale=r.minScale,e.maxScale=r.maxScale,e},Sr=e=>Ce(e),je=(e,t)=>ke(e,t.state),Vr=(e,t)=>{const r=t.refreshProvider();return je(e,t),r},un=(e,t)=>(t.observe(),je(e,t)),mn=(e,t)=>(t.clearProvider(),je(e,t)),hn=(e,t)=>(t.destroy(),je(e,t)),gt=async(e,t)=>(ke(e,await t()),Sr(e)),Mo=(e,t)=>({hasZoomProvider(){return!!Vr(e,t)},refreshZoomProvider(){return Vr(e,t)},startZoomObserver(){return un(e,t)},stopZoomObserver(){return hn(e,t)},clearZoomProvider(){return mn(e,t)},getZoomState(){return Sr(e)},zoomIn(){return gt(e,()=>t.zoomIn())},zoomOut(){return gt(e,()=>t.zoomOut())},resetZoom(){return gt(e,()=>t.resetZoom())}}),pn=()=>{const e=new Set;return{emit(){e.forEach(t=>t())},subscribe(t){return e.add(t),()=>{e.delete(t)}}}},Oo=e=>{var t,r;return((r=(t=e?.ownerDocument)===null||t===void 0?void 0:t.defaultView)===null||r===void 0?void 0:r.MutationObserver)||(typeof MutationObserver<"u"?MutationObserver:void 0)},bn=({root:e,enabled:t,beforeZoom:r})=>{let n=null,i=null,a=null;const l=fr(),o=()=>{i?.(),i=null,n=null,ke(l,null)},s=()=>{var p,v;if(t?.()===!1)return o(),null;const m=ji(e());return m!==n&&(i?.(),n=m,i=((p=m?.subscribe)===null||p===void 0?void 0:p.call(m,()=>{ke(l,m.getState())}))||null),ke(l,((v=m?.getState)===null||v===void 0?void 0:v.call(m))||null),m},h=()=>{a?.disconnect(),a=null},f=async(p,v)=>{const m=s();return!m||r&&await r(p)===!1||ke(l,await v(m)||m.getState()),Ce(l)};return{get provider(){return n},state:l,hasProvider(){return!!s()},refreshProvider:s,observe(){h();const p=e(),v=Oo(p);if(!p||!v){s();return}a=new v(()=>{s()}),a.observe(p,{childList:!0,subtree:!0}),s()},clearProvider:o,getState(){return Ce(l)},zoomIn:()=>f("zoom-in",p=>p.zoomIn()),zoomOut:()=>f("zoom-out",p=>p.zoomOut()),resetZoom:()=>f("zoom-reset",p=>p.resetZoom()),destroy(){h(),o()}}}})),yn,Bo,vn,xr,wt,gn,wn,Ir,Zn,Sn,Rr,Vn,xn,In=ne((()=>{yn=e=>e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">"),Bo=`
|
|
2
|
+
* { box-sizing: border-box; }
|
|
3
|
+
html, body { margin: 0; min-height: 100%; background: #f2f4f7; color: #172033; font-family: Aptos, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif; print-color-adjust: exact; -webkit-print-color-adjust: exact; }
|
|
4
|
+
body { padding: 24px; }
|
|
5
|
+
.viewer-export-shell { position: relative; min-height: calc(100vh - 48px); overflow: visible; background: #f2f4f7; }
|
|
6
|
+
.viewer-export-content { position: relative; z-index: 1; contain: none; width: 100%; min-height: 100%; overflow: visible; }
|
|
7
|
+
.viewer-export-content .file-render,
|
|
8
|
+
.viewer-export-content .file-viewer,
|
|
9
|
+
.viewer-export-content .viewer-stage,
|
|
10
|
+
.viewer-export-content .content,
|
|
11
|
+
.viewer-export-content .pdf-shell,
|
|
12
|
+
.viewer-export-content .pdf-content,
|
|
13
|
+
.viewer-export-content .pdf-viewport,
|
|
14
|
+
.viewer-export-content .pdf-wrapper,
|
|
15
|
+
.viewer-export-content .docx-fit-viewer,
|
|
16
|
+
.viewer-export-content .docx-wrapper,
|
|
17
|
+
.viewer-export-content .msdoc-stage,
|
|
18
|
+
.viewer-export-content .code-viewer,
|
|
19
|
+
.viewer-export-content .markdown-viewer,
|
|
20
|
+
.viewer-export-content .email-shell,
|
|
21
|
+
.viewer-export-content .archive-shell,
|
|
22
|
+
.viewer-export-content .eda-shell,
|
|
23
|
+
.viewer-export-content .ebook-shell,
|
|
24
|
+
.viewer-export-content .umd-shell,
|
|
25
|
+
.viewer-export-content .drawing-shell,
|
|
26
|
+
.viewer-export-content .audio-shell,
|
|
27
|
+
.viewer-export-content .cad-shell,
|
|
28
|
+
.viewer-export-content .cad-body,
|
|
29
|
+
.viewer-export-content .cad-canvas-wrap,
|
|
30
|
+
.viewer-export-content .dwg-preview-frame {
|
|
31
|
+
position: relative !important;
|
|
32
|
+
inset: auto !important;
|
|
33
|
+
contain: none !important;
|
|
34
|
+
width: 100% !important;
|
|
35
|
+
height: auto !important;
|
|
36
|
+
min-height: 0 !important;
|
|
37
|
+
max-height: none !important;
|
|
38
|
+
overflow: visible !important;
|
|
39
|
+
}
|
|
40
|
+
.viewer-export-content .docx-wrapper {
|
|
41
|
+
display: block !important;
|
|
42
|
+
padding: 0 !important;
|
|
43
|
+
background: transparent !important;
|
|
44
|
+
}
|
|
45
|
+
.viewer-export-content .docx-print-document {
|
|
46
|
+
display: block !important;
|
|
47
|
+
width: fit-content !important;
|
|
48
|
+
max-width: 100% !important;
|
|
49
|
+
height: auto !important;
|
|
50
|
+
overflow: visible !important;
|
|
51
|
+
margin: 0 auto !important;
|
|
52
|
+
}
|
|
53
|
+
.viewer-export-content .docx-page-frame {
|
|
54
|
+
position: relative !important;
|
|
55
|
+
width: var(--viewer-print-page-width, fit-content) !important;
|
|
56
|
+
height: var(--viewer-print-page-height, auto) !important;
|
|
57
|
+
min-height: var(--viewer-print-page-height, 0) !important;
|
|
58
|
+
max-width: 100% !important;
|
|
59
|
+
margin: 0 auto 18px !important;
|
|
60
|
+
overflow: hidden !important;
|
|
61
|
+
break-inside: avoid;
|
|
62
|
+
page-break-inside: avoid;
|
|
63
|
+
break-after: page;
|
|
64
|
+
page-break-after: always;
|
|
65
|
+
}
|
|
66
|
+
.viewer-export-content .msdoc-page {
|
|
67
|
+
position: relative !important;
|
|
68
|
+
width: var(--viewer-print-page-width, 794px) !important;
|
|
69
|
+
min-height: var(--viewer-print-page-height, 1123px) !important;
|
|
70
|
+
max-width: 100% !important;
|
|
71
|
+
height: auto !important;
|
|
72
|
+
margin: 0 auto 18px !important;
|
|
73
|
+
overflow: visible !important;
|
|
74
|
+
break-after: page;
|
|
75
|
+
page-break-after: always;
|
|
76
|
+
}
|
|
77
|
+
.viewer-export-content .docx-page-frame:last-child,
|
|
78
|
+
.viewer-export-content .msdoc-page:last-child {
|
|
79
|
+
break-after: auto;
|
|
80
|
+
page-break-after: auto;
|
|
81
|
+
}
|
|
82
|
+
.viewer-export-content .docx-page-frame > section.docx {
|
|
83
|
+
position: relative !important;
|
|
84
|
+
top: auto !important;
|
|
85
|
+
left: auto !important;
|
|
86
|
+
width: var(--viewer-print-page-width, auto) !important;
|
|
87
|
+
min-height: var(--viewer-print-page-height, auto) !important;
|
|
88
|
+
max-width: none !important;
|
|
89
|
+
margin: 0 auto !important;
|
|
90
|
+
overflow: visible !important;
|
|
91
|
+
transform: none !important;
|
|
92
|
+
box-shadow: none !important;
|
|
93
|
+
break-inside: avoid;
|
|
94
|
+
page-break-inside: avoid;
|
|
95
|
+
}
|
|
96
|
+
.viewer-export-content .msdoc-stage {
|
|
97
|
+
display: block !important;
|
|
98
|
+
padding: 0 !important;
|
|
99
|
+
background: transparent !important;
|
|
100
|
+
}
|
|
101
|
+
.viewer-export-content .msdoc-page > .msdoc-root {
|
|
102
|
+
margin: 0 auto !important;
|
|
103
|
+
box-shadow: none !important;
|
|
104
|
+
overflow: visible !important;
|
|
105
|
+
}
|
|
106
|
+
.viewer-export-content .pdf-toolbar,
|
|
107
|
+
.viewer-export-content .pdf-nav-pane,
|
|
108
|
+
.viewer-export-content .viewer-actions,
|
|
109
|
+
.viewer-export-content .code-toolbar,
|
|
110
|
+
.viewer-export-content .umd-toolbar,
|
|
111
|
+
.viewer-export-content .drawing-toolbar,
|
|
112
|
+
.viewer-export-content .cad-toolbar {
|
|
113
|
+
display: none !important;
|
|
114
|
+
}
|
|
115
|
+
.viewer-export-content .pdf-content,
|
|
116
|
+
.viewer-export-content .pdf-shell--nav-hidden .pdf-content,
|
|
117
|
+
.viewer-export-content .cad-body.without-layers {
|
|
118
|
+
display: block !important;
|
|
119
|
+
grid-template-columns: none !important;
|
|
120
|
+
}
|
|
121
|
+
.viewer-export-content .pdfViewer { padding: 0 !important; }
|
|
122
|
+
.viewer-export-content .pdfViewer .page {
|
|
123
|
+
margin: 0 auto 16px !important;
|
|
124
|
+
border: 0 !important;
|
|
125
|
+
box-shadow: none !important;
|
|
126
|
+
break-after: page;
|
|
127
|
+
page-break-after: always;
|
|
128
|
+
}
|
|
129
|
+
.viewer-export-content .pdfViewer .page:last-child {
|
|
130
|
+
break-after: auto;
|
|
131
|
+
page-break-after: auto;
|
|
132
|
+
}
|
|
133
|
+
.viewer-export-content .pdf-export-document {
|
|
134
|
+
display: grid;
|
|
135
|
+
justify-items: center;
|
|
136
|
+
gap: 18px;
|
|
137
|
+
padding: 4px 0;
|
|
138
|
+
}
|
|
139
|
+
.viewer-export-content .pdf-export-page {
|
|
140
|
+
width: var(--viewer-print-page-width, auto);
|
|
141
|
+
height: var(--viewer-print-page-height, auto);
|
|
142
|
+
max-width: 100%;
|
|
143
|
+
overflow: hidden;
|
|
144
|
+
background: #ffffff;
|
|
145
|
+
box-shadow: 0 12px 32px rgba(15, 23, 42, 0.12);
|
|
146
|
+
break-inside: avoid;
|
|
147
|
+
page-break-inside: avoid;
|
|
148
|
+
break-after: page;
|
|
149
|
+
page-break-after: always;
|
|
150
|
+
}
|
|
151
|
+
.viewer-export-content .pdf-export-page:last-child {
|
|
152
|
+
break-after: auto;
|
|
153
|
+
page-break-after: auto;
|
|
154
|
+
}
|
|
155
|
+
.viewer-export-content .pdf-export-page img {
|
|
156
|
+
display: block;
|
|
157
|
+
width: 100%;
|
|
158
|
+
height: 100%;
|
|
159
|
+
object-fit: contain;
|
|
160
|
+
}
|
|
161
|
+
.viewer-export-content .pptx-wrapper {
|
|
162
|
+
width: 100% !important;
|
|
163
|
+
max-width: 100% !important;
|
|
164
|
+
height: auto !important;
|
|
165
|
+
overflow: visible !important;
|
|
166
|
+
transform: none !important;
|
|
167
|
+
}
|
|
168
|
+
.viewer-export-content .pptx-wrapper .slide {
|
|
169
|
+
margin: 0 auto 18px !important;
|
|
170
|
+
break-inside: avoid;
|
|
171
|
+
page-break-inside: avoid;
|
|
172
|
+
break-after: page;
|
|
173
|
+
page-break-after: always;
|
|
174
|
+
box-shadow: none !important;
|
|
175
|
+
}
|
|
176
|
+
.viewer-export-content .pptx-wrapper .slide:last-child {
|
|
177
|
+
break-after: auto;
|
|
178
|
+
page-break-after: auto;
|
|
179
|
+
}
|
|
180
|
+
.viewer-export-content .ofd-stage {
|
|
181
|
+
padding: 0 !important;
|
|
182
|
+
overflow: visible !important;
|
|
183
|
+
}
|
|
184
|
+
.viewer-export-content .ofd-page,
|
|
185
|
+
.viewer-export-content .drawing-svg,
|
|
186
|
+
.viewer-export-content .cad-canvas-wrap,
|
|
187
|
+
.viewer-export-content .dwg-preview-frame {
|
|
188
|
+
break-inside: avoid;
|
|
189
|
+
page-break-inside: avoid;
|
|
190
|
+
break-after: page;
|
|
191
|
+
page-break-after: always;
|
|
192
|
+
box-shadow: none !important;
|
|
193
|
+
}
|
|
194
|
+
.viewer-export-content .ofd-page:last-child,
|
|
195
|
+
.viewer-export-content .drawing-svg:last-child,
|
|
196
|
+
.viewer-export-content .cad-canvas-wrap:last-child,
|
|
197
|
+
.viewer-export-content .dwg-preview-frame:last-child {
|
|
198
|
+
break-after: auto;
|
|
199
|
+
page-break-after: auto;
|
|
200
|
+
}
|
|
201
|
+
.viewer-export-content .code-area {
|
|
202
|
+
overflow: visible !important;
|
|
203
|
+
white-space: pre-wrap !important;
|
|
204
|
+
word-break: break-word !important;
|
|
205
|
+
}
|
|
206
|
+
.viewer-export-content .umd-body,
|
|
207
|
+
.viewer-export-content .umd-stage-wrap,
|
|
208
|
+
.viewer-export-content .umd-stage {
|
|
209
|
+
display: block !important;
|
|
210
|
+
height: auto !important;
|
|
211
|
+
max-height: none !important;
|
|
212
|
+
overflow: visible !important;
|
|
213
|
+
}
|
|
214
|
+
.viewer-export-content .umd-toc {
|
|
215
|
+
display: none !important;
|
|
216
|
+
}
|
|
217
|
+
img, canvas, svg, video { max-width: 100%; }
|
|
218
|
+
@media print {
|
|
219
|
+
@page { margin: 12mm; }
|
|
220
|
+
html, body { min-height: auto; background: #ffffff; }
|
|
221
|
+
body { padding: 0; }
|
|
222
|
+
.viewer-export-shell,
|
|
223
|
+
.viewer-export-content {
|
|
224
|
+
min-height: 0;
|
|
225
|
+
overflow: visible;
|
|
226
|
+
background: #ffffff;
|
|
227
|
+
}
|
|
228
|
+
.viewer-export-content .pdf-export-document {
|
|
229
|
+
display: block;
|
|
230
|
+
padding: 0;
|
|
231
|
+
}
|
|
232
|
+
.viewer-export-content .pdf-export-page {
|
|
233
|
+
width: var(--viewer-print-page-width, auto) !important;
|
|
234
|
+
height: var(--viewer-print-page-height, auto) !important;
|
|
235
|
+
max-width: none !important;
|
|
236
|
+
margin: 0;
|
|
237
|
+
overflow: hidden;
|
|
238
|
+
box-shadow: none;
|
|
239
|
+
}
|
|
240
|
+
.viewer-export-content .docx-page-frame {
|
|
241
|
+
width: var(--viewer-print-page-width, auto) !important;
|
|
242
|
+
height: var(--viewer-print-page-height, auto) !important;
|
|
243
|
+
min-height: var(--viewer-print-page-height, 0) !important;
|
|
244
|
+
max-width: none !important;
|
|
245
|
+
margin: 0 !important;
|
|
246
|
+
overflow: hidden !important;
|
|
247
|
+
}
|
|
248
|
+
.viewer-export-content .msdoc-page {
|
|
249
|
+
width: var(--viewer-print-page-width, 794px) !important;
|
|
250
|
+
min-height: var(--viewer-print-page-height, 1123px) !important;
|
|
251
|
+
max-width: none !important;
|
|
252
|
+
margin: 0 !important;
|
|
253
|
+
overflow: visible !important;
|
|
254
|
+
}
|
|
255
|
+
.viewer-export-content .docx-page-frame > section.docx,
|
|
256
|
+
.viewer-export-content .msdoc-page > .msdoc-root {
|
|
257
|
+
width: var(--viewer-print-page-width, 100%) !important;
|
|
258
|
+
max-width: none !important;
|
|
259
|
+
border: 0 !important;
|
|
260
|
+
}
|
|
261
|
+
.viewer-export-content .pptx-wrapper .slide,
|
|
262
|
+
.viewer-export-content .ofd-page,
|
|
263
|
+
.viewer-export-content .drawing-svg,
|
|
264
|
+
.viewer-export-content .cad-canvas-wrap,
|
|
265
|
+
.viewer-export-content .dwg-preview-frame {
|
|
266
|
+
box-shadow: none !important;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
`,vn=()=>Array.from(document.querySelectorAll('style, link[rel="stylesheet"]')).map(e=>e instanceof HTMLStyleElement?`<style>${e.textContent||""}</style>`:e.href?`<link rel="stylesheet" href="${yn(e.href)}" />`:"").filter(Boolean).join(`
|
|
270
|
+
`),xr=({contentHtml:e,includeDocumentStyles:t=!0,printStyle:r="",title:n,watermarkInlineStyle:i=""})=>{const a=i?`<div class="viewer-export-watermark" style="${i}"></div>`:"",l=t?vn():"",o=r?`<style data-viewer-print-style>${r}</style>`:"";return`<!doctype html>
|
|
271
|
+
<html lang="zh-CN">
|
|
272
|
+
<head>
|
|
273
|
+
<meta charset="utf-8" />
|
|
274
|
+
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
|
275
|
+
<title>${yn(n)}</title>
|
|
276
|
+
${l}
|
|
277
|
+
<style>${Bo}</style>
|
|
278
|
+
</head>
|
|
279
|
+
<body>
|
|
280
|
+
<main class="viewer-export-shell">
|
|
281
|
+
<div class="viewer-export-content">${e}</div>
|
|
282
|
+
${a}
|
|
283
|
+
</main>
|
|
284
|
+
${o}
|
|
285
|
+
</body>
|
|
286
|
+
</html>`},wt=(e,t)=>{const r=URL.createObjectURL(e),n=document.createElement("a");n.href=r,n.download=t,n.rel="noopener",document.body.appendChild(n),n.click(),n.remove(),window.setTimeout(()=>URL.revokeObjectURL(r),4e3)},gn=(e,t)=>{const r=document.createElement("a");r.href=e,r.download=t,r.rel="noopener",r.target="_blank",document.body.appendChild(r),r.click(),r.remove()},wn=(e,t)=>{const r=Array.from(e.querySelectorAll("canvas"));Array.from(t.querySelectorAll("canvas")).forEach((n,i)=>{const a=r[i];if(a)try{const l=document.createElement("img");l.src=a.toDataURL("image/png"),l.alt="rendered canvas",l.style.maxWidth="100%",l.style.display="block",l.style.margin="0 auto",n.replaceWith(l)}catch{}})},Ir=e=>new Promise(t=>{const r=e||(typeof window<"u"?window:void 0);if(!r||typeof r.requestAnimationFrame!="function"){(r?.setTimeout?r.setTimeout.bind(r):globalThis.setTimeout.bind(globalThis))(()=>t(),0);return}const n=r.requestAnimationFrame.bind(r);n(()=>{n(()=>t())})}),Zn=async e=>{const t=Array.from(e.querySelectorAll("img"));await Promise.all(t.map(async r=>{if(!r.complete){if("decode"in r)try{await r.decode();return}catch{}await new Promise(n=>{r.addEventListener("load",()=>n(),{once:!0}),r.addEventListener("error",()=>n(),{once:!0})})}}))},Sn=async e=>{const{document:t}=e;t.readyState!=="complete"&&await new Promise(r=>{e.addEventListener("load",()=>r(),{once:!0}),e.setTimeout(()=>r(),1200)}),await Promise.all(Array.from(t.images).map(async r=>{if(!r.complete){if("decode"in r)try{await r.decode();return}catch{}await new Promise(n=>{r.addEventListener("load",()=>n(),{once:!0}),r.addEventListener("error",()=>n(),{once:!0}),e.setTimeout(()=>n(),1500)})}})),await new Promise(r=>{e.requestAnimationFrame(()=>{e.requestAnimationFrame(()=>r())})})},Rr=async(e,t)=>t.mode!=="print"||!e?.printStyle?"":typeof e.printStyle=="function"?await e.printStyle(t):e.printStyle,Vn=async(e,t)=>{var r;await((r=t?.beforeSnapshot)===null||r===void 0?void 0:r.call(t)),await Ir(),await Zn(e)},xn=async({source:e,mode:t="export",title:r,adapter:n=null,watermarkInlineStyle:i=""})=>{const a={mode:t,title:r},l=n?.toHtml;if(l){const h=await l(a),f=await Rr(n,a);return xr({contentHtml:h,includeDocumentStyles:n.includeDocumentStyles!==!1,printStyle:f,title:r,watermarkInlineStyle:i})}await Vn(e,n);const o=e.cloneNode(!0);wn(e,o);const s=await Rr(n,a);return xr({contentHtml:o.innerHTML,printStyle:s,title:r,watermarkInlineStyle:i})}})),jo,Zt,Qe,Rn,Gr,Qo,qo,$o,Ru=ne((()=>{jo=96,Zt=e=>!Number.isFinite(e)||e<=0?0:Number(e.toFixed(3)),Qe=e=>`${Zt(e)}px`,Rn=e=>`${Number((Zt(e)/jo).toFixed(4))}in`,Gr=e=>{const t=Number.parseFloat(e);return Number.isFinite(t)&&t>0?t:0},Qo=(e,t={})=>{const r=window.getComputedStyle(e),n=Gr(r.width)||e.offsetWidth||t.width||e.getBoundingClientRect().width,i=Gr(r.height)||Gr(r.minHeight)||e.offsetHeight||t.height||e.getBoundingClientRect().height;return{width:Zt(n),height:Zt(i)}},qo=(e,t,r={})=>{const n=Qe(t.width),i=Qe(t.height),a=r.heightMode||"fixed";e.classList.add("viewer-print-page"),e.style.setProperty("--viewer-print-page-width",n),e.style.setProperty("--viewer-print-page-height",i),e.style.width=n,e.style.maxWidth="none",e.style.minHeight=i,a==="fixed"?(e.style.height=i,e.style.overflow="hidden"):(e.style.height="auto",e.style.overflow="visible")},$o=({selector:e,width:t,height:r,heightMode:n="fixed"})=>{const i=Qe(t),a=Qe(r),l=n==="fixed"?`height:${a}!important;min-height:${a}!important;overflow:hidden!important;`:`height:auto!important;min-height:${a}!important;overflow:visible!important;`;return`
|
|
287
|
+
@page { size: ${Rn(t)} ${Rn(r)}; margin: 0; }
|
|
288
|
+
@media print {
|
|
289
|
+
html, body {
|
|
290
|
+
width: ${i};
|
|
291
|
+
min-width: ${i};
|
|
292
|
+
background: #ffffff !important;
|
|
293
|
+
}
|
|
294
|
+
${e} {
|
|
295
|
+
width: ${i}!important;
|
|
296
|
+
max-width: none!important;
|
|
297
|
+
${l}
|
|
298
|
+
margin: 0!important;
|
|
299
|
+
box-shadow: none!important;
|
|
300
|
+
border: 0!important;
|
|
301
|
+
break-after: page;
|
|
302
|
+
page-break-after: always;
|
|
303
|
+
}
|
|
304
|
+
${e}:last-child {
|
|
305
|
+
break-after: auto;
|
|
306
|
+
page-break-after: auto;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
`}})),Ee,ye,Gn,ze,Ge,es,Ln,qe,Lr,Xr,Xn,Wn,ts,rs,Ve=ne((()=>{Ee="preview.bin",ye=e=>e.trim().replace(/^\./,"").toLowerCase(),Gn=e=>{try{return decodeURIComponent(e)}catch{return e}},ze=e=>{const t=e.split(/[?#]/)[0]||e,r=t.lastIndexOf(".");return r===-1?"":ye(t.slice(r+1))},Ge=(e,t=Ee)=>{const r=(e||"").split(/[?#]/)[0].trim();if(!r)return t;const n=Math.max(r.lastIndexOf("/"),r.lastIndexOf("\\"));return Gn(n===-1?r:r.slice(n+1))},es=e=>e.file?"file":e.buffer?"buffer":e.url?"url":"empty",Ln=e=>e&&"name"in e&&typeof e.name=="string"?e.name:void 0,qe=({filename:e,file:t,url:r,fallback:n=""})=>{if(e)return Ge(e,n);const i=Ln(t);return i?Ge(i,n):r?Ge(r,n):n},Lr=e=>{const t=es(e),r=Ge(e.filename||Ln(e.file)||e.url,e.type?`preview.${ye(e.type)}`:Ee),n=ye(e.type||ze(r)),i=typeof e.size=="number"?e.size:e.file?e.file.size:e.buffer?e.buffer.byteLength:void 0;return{kind:t,filename:r,extension:n,url:e.url,file:e.file,buffer:e.buffer,size:i}},Xr=(e,t=Ee)=>{if(typeof File<"u"&&e instanceof File)return e;const r=Ge(t||"preview.bin");if(typeof Blob<"u"&&e instanceof Blob)return new File([e],r,{type:e.type});if(e instanceof ArrayBuffer)return new File([e],r,{});throw new Error("Unsupported file source input.")},Xn=async e=>typeof e.arrayBuffer=="function"?e.arrayBuffer():new Promise((t,r)=>{const n=new FileReader;n.onload=i=>{var a;const l=(a=i.target)===null||a===void 0?void 0:a.result;if(l instanceof ArrayBuffer){t(l);return}r(new Error("Failed to read file as ArrayBuffer."))},n.onerror=i=>r(i),n.readAsArrayBuffer(e)}),Wn=e=>{if(typeof Blob<"u"&&e instanceof Blob)return e;if(typeof Blob>"u")throw new Error("Blob is not available in the current execution environment.");return new Blob([e])},ts=async e=>{const t=Wn(e);return new Promise((r,n)=>{const i=new FileReader;i.onload=a=>{var l;const o=(l=a.target)===null||l===void 0?void 0:l.result;if(typeof o=="string"){r(o);return}n(new Error("Failed to read file as data URL."))},i.onerror=a=>n(a),i.readAsDataURL(t)})},rs=async(e,t="utf-8")=>{const r=Wn(e);return typeof r.text=="function"&&t.toLowerCase()==="utf-8"?r.text():new Promise((n,i)=>{const a=new FileReader;a.onload=l=>{var o;const s=(o=l.target)===null||o===void 0?void 0:o.result;if(typeof s=="string"){n(s);return}i(new Error("Failed to read file as text."))},a.onerror=l=>i(l),a.readAsText(r,t)})}})),is,ns,as,ls,Wr,os,Fn,ss,Fr,kn,de,kr,$e=ne((()=>{is="zh-CN",ns="en-US",as={"toolbar.zoomGroup":"缩放控制","toolbar.zoomOut":"缩小预览","toolbar.zoomIn":"放大预览","toolbar.zoomReset":"还原比例","toolbar.download":"下载","toolbar.downloadTitle":"下载原始文件","toolbar.print":"打印","toolbar.printTitle":"打印完整渲染内容","toolbar.exportHtml":"HTML","toolbar.exportHtmlTitle":"导出当前渲染后的 HTML","state.ready.title":"预览完成","state.ready.message":"文件内容已完成渲染。","state.empty.title":"暂无文件","state.empty.message":"请选择文件或提供可访问的文件地址后开始预览。","state.unsupported.install.title":"需要装配预览能力","state.unsupported.install.message":"{extension} 格式已在支持矩阵中,但当前项目尚未装配 {rendererLabel} renderer。","state.unsupported.install.description":"推荐安装 {presetPackage},通过 options.preset / options.renderers 注入对应能力{rendererTip};Vite 项目也可以使用 @file-viewer/vite-plugin 自动发现已安装 preset。","state.unsupported.title":"暂不支持在线预览","state.unsupported.message":"不支持{extension}格式的在线预览,请下载后预览或转换为支持的格式。","state.unsupported.description":"支持 Office、PDF、OFD、Typst、压缩包、邮件、OLB/DRA、CAD、地理数据、3D 模型、Excalidraw、draw.io、EPUB、UMD、Markdown、代码/文本、图片、音视频、字体和数据资产的在线预览","state.error.title":"预览失败","preview.downloading":"正在下载文件资源...","preview.streamingPdf":"正在建立 PDF 流式预览...","preview.reading":"正在解析文件内容...","error.download":"下载失败","error.print":"打印失败","error.exportHtml":"导出 HTML 失败","error.noDownloadSource":"当前没有可下载的源文件","error.noExportContent":"当前没有可导出的预览内容","error.printUnavailable":"当前文件类型不支持完整打印,请下载原文件后在本地应用中打印","error.printWindowBlocked":"浏览器拦截了打印窗口","error.remoteDownload":"文件下载失败","error.localRead":"读取文件异常","error.load":"加载文件异常","error.stream":"加载 PDF 流式预览异常","error.beforeOperation":"操作前置校验失败","operation.download":"下载原始文件","operation.print":"打印完整渲染内容","operation.exportHtml":"导出渲染 HTML","operation.zoomIn":"放大预览","operation.zoomOut":"缩小预览","operation.zoomReset":"还原预览比例","pdf.toolbar.toggleNavigation":"切换导航窗格","pdf.toolbar.previousPage":"上一页","pdf.toolbar.nextPage":"下一页","pdf.toolbar.fitWidth":"适合宽度","pdf.toolbar.zoomOut":"缩小","pdf.toolbar.zoomIn":"放大","pdf.toolbar.rotateLeft":"向左旋转","pdf.toolbar.rotateRight":"向右旋转","pdf.nav.typeLabel":"PDF 导航类型","pdf.nav.pagesTab":"页面","pdf.nav.outlineTab":"目录","pdf.nav.pagesTitle":"页面导航","pdf.nav.outlineTitle":"目录导航","pdf.nav.pageCount":"{count} 页","pdf.nav.itemCount":"{count} 项","pdf.nav.pageLabel":"第 {page} 页","pdf.nav.outlineEmpty":"当前 PDF 没有可用目录","pdf.nav.outlineFallbackTitle":"目录 {index}","pdf.thumbnail.alt":"第 {page} 页缩略图","pdf.state.loading":"正在加载 PDF...","pdf.error.browserWindow":"PDF 预览需要浏览器窗口","pdf.error.missingSource":"PDF 缺少可读取的数据源","pdf.error.loadFailed":"PDF 加载失败","pdf.error.notLoaded":"PDF 尚未加载完成,请稍后再试","pdf.error.unloaded":"PDF 已卸载,无法继续打印","pdf.error.canvasUnavailable":"当前浏览器无法创建 PDF 打印画布","pdf.export.pageTitle":"{title} - 第 {page} 页","spreadsheet.loading.kicker":"Excel 表格","spreadsheet.loading.title":"正在解析 Excel 工作簿","spreadsheet.loading.hint":"正在准备工作表、样式和大数据视口,请稍候。","spreadsheet.loading.streaming":"正在平滑补充可视区数据","spreadsheet.tabs.ariaLabel":"工作表列表","spreadsheet.state.parsingWorkbook":"正在解析 Excel 工作簿,请耐心等待...","spreadsheet.state.preparingSheet":"正在准备工作表内容...","spreadsheet.state.preparingSheetNamed":"正在准备「{name}」...","spreadsheet.state.cachedRows":"已缓存 {cached} / {total} 行","spreadsheet.state.rows":"共 {rows} 行,按视口预取平滑加载","spreadsheet.state.rowsAndColumns":"共 {rows} 行,{cols} 列,按视口预取平滑加载","spreadsheet.error.parseFailed":"Excel 解析失败","spreadsheet.error.workerFailed":"Excel Worker 运行失败","archive.error.nestedUnsupported":"不支持 .{type} 格式的在线预览,请下载后预览或转换为支持的格式","archive.loading.readingDirectory":"正在读取压缩包目录...","archive.loading.readingDirectoryHint":"大文件会在 Worker 中解析,避免阻塞主线程。","archive.search.placeholder":"筛选压缩包内文件","archive.preview.title":"压缩包内预览","archive.preview.chooseFile":"请选择一个文件","archive.preview.downloadFile":"下载文件","archive.error.title":"压缩包预览提示","archive.stats.summary":"{count} 个文件 · {size} · {previewable} 个可直接预览","archive.warning.encrypted":"检测到加密内容,当前在线预览不接收密码,建议下载后本地解压。","archive.empty.title":"选择左侧文件即可预览","archive.empty.message":"压缩包只读取目录;文件内容会在点击后按需解压,并在体积允许时缓存到 IndexedDB。","archive.loading.initializingCandidate":"正在初始化 {label}...","archive.loading.initializingCandidateHint":"如果当前服务器没有正确发布 Worker/WASM,会自动切换兼容模式。","archive.error.candidateInitTimeout":"{label} 初始化超时","archive.error.encryptedCheckTimeout":"{label} 加密检测超时","archive.loading.directoryReadyHint":"目录读取完成后,点击内部文件才会按需解压。","archive.error.candidateReadTimeout":"{label} 读取目录超时","archive.loading.workerFallback":"Worker 不可用,正在切换 ZIP/TAR 兼容模式...","archive.loading.workerFallbackHint":"兼容模式无需额外静态 Worker,适合手机 WebView 或本地临时服务器。","archive.notice.workerFallback":"当前环境的 libarchive Worker 未能启动,已自动切换到 ZIP/TAR/GZIP 兼容模式。RAR、7z 等格式仍建议发布 vendor/libarchive/worker-bundle.js 与 libarchive.wasm。","archive.error.tooLarge":"压缩包体积 {size} 超过安全上限 {limit},请下载后在本地解压。","archive.loading.initializingWorker":"正在初始化压缩包解析 Worker...","archive.loading.initializingWorkerHint":"大文件会在 Worker 中解析,避免阻塞主线程。","archive.error.workerInitFailed":"压缩包 Worker 初始化失败","archive.error.entryTooLarge":"压缩包内文件 {name} 体积 {size} 超过预览上限 {limit}。","archive.loading.extracting":"正在按需解压 {name}...","archive.loading.rendering":"正在渲染 {name}...","archive.loading.exporting":"正在导出 {name}...","media.audio.title":"音频预览","media.audio.description":"使用浏览器原生播放器打开,兼容性取决于当前浏览器支持的音频编码。","media.audio.unsupported":"当前浏览器不支持音频播放。","media.video.title":"视频预览","media.video.unsupported":"当前浏览器不支持该视频格式。","media.video.hlsHint":"HLS 会优先使用原始 URL 加载分片;如果传入的是本地单文件清单,请确保分片地址可被浏览器访问。","media.midi.title":"MIDI 文件","media.midi.loading":"正在解析 MIDI 轨道...","media.midi.trackHeader":"轨道","media.midi.instrumentHeader":"乐器","media.midi.channelHeader":"通道","media.midi.noteCountHeader":"音符数","media.midi.durationHeader":"时长","media.midi.durationStat":"时长","media.midi.trackStat":"轨道","media.midi.noteStat":"音符","media.midi.parseFailed":"MIDI 解析失败","email.mbox.subject":"{filename} · 第 1 封","email.mbox.summary":"MBOX 共识别 {count} 封邮件,当前展示第 1 封。","email.error.title":"邮件预览提示","email.meta.from":"发件人","email.meta.to":"收件人","email.meta.cc":"抄送","email.meta.date":"时间","email.tabs.text":"正文","email.tabs.headers":"头信息","email.attachments.title":"附件","email.attachments.empty":"暂无附件","email.attachments.download":"下载附件","email.attachments.opening":"正在打开附件 {name}...","email.attachments.nestedUnavailable":"当前运行环境未提供附件嵌套预览入口,请下载 {name} 后查看。","email.loading.parsing":"正在解析邮件...","data.font.sample":"Flyfish Viewer 轻量预览 AaBbCc 1234567890","data.error.fontFaceUnsupported":"当前浏览器不支持 FontFace API","data.title.font":"字体文件预览","data.title.sqlite":"SQLite 数据库预览","data.title.parquet":"Parquet 列式数据预览","data.title.avro":"Avro 对象容器预览","data.title.wasm":"WebAssembly 模块预览","data.title.eps":"EPS 矢量文件摘要","data.title.ai":"Illustrator 文件摘要","data.title.webarchive":"WebArchive 摘要预览","data.title.summary":"数据资产摘要","data.label.format":"格式","data.label.size":"大小","data.label.rendering":"渲染方式","data.label.objects":"对象数","data.label.sampleTable":"示例表","data.label.rows":"行数","data.label.columns":"列数","data.label.sampleRows":"示例行","data.label.imports":"导入","data.label.exports":"导出","data.label.magic":"Magic","data.label.note":"说明","data.label.container":"容器","data.value.schemaRead":"已读取","data.value.schemaUnread":"未读取","data.note.aiSummary":"非 PDF-compatible AI 按摘要展示","data.note.postscriptSummary":"PostScript 摘要展示","data.note.webarchive":"安全提取可读片段,不执行网页脚本","data.image.alt":"资产预览","psd.title":"PSD 图层预览","psd.action.fit":"适合","psd.action.showAll":"全显","psd.action.hideAll":"全隐","psd.layers.title":"图层","psd.layers.redrawable":"{count} 可重绘","psd.layers.empty":"未发现可展示图层,使用合成图预览。","psd.layers.hidden":"隐藏","drawing.error.viewerLoadFailed":"diagrams.net viewer 加载失败","drawing.error.excalidrawEmpty":"Excalidraw 文件中没有可预览图元","drawing.error.excalidrawTimeout":"Excalidraw 官方导出超时,自动切换 rough.js 兼容渲染","drawing.error.drawioParseFailed":"Draw.io XML 解析失败:{message}","drawing.error.drawioNoModel":"当前 Draw.io 文件没有可直接渲染的 mxGraphModel。","drawing.error.drawioNoElements":"当前 Draw.io 文件没有可预览图元。","drawing.error.viewerInitFailed":"diagrams.net viewer 未正确初始化","drawing.error.drawioTimeout":"diagrams.net 官方 Viewer 加载超时,自动切换本地 SVG 预览","drawing.error.svgParseFailed":"SVG 解析失败","drawing.error.plantumlRenderFailed":"PlantUML SVG 渲染失败:{status}","drawing.title.excalidraw":"Excalidraw 官方 SVG 预览","drawing.title.mermaid":"Mermaid SVG 预览","drawing.title.plantuml":"PlantUML SVG 预览","drawing.title.drawio":"Draw.io 离线 SVG 预览","drawing.toolbar.zoomOut":"缩小","drawing.toolbar.zoomIn":"放大","drawing.toolbar.fit":"适合","drawing.toolbar.fitWidth":"适合宽度","drawing.state.loading":"正在加载绘图预览...","text.code.loadingHighlight":"正在加载高亮...","ebook.toc":"目录","ebook.reading":"阅读中","ebook.itemCount":"{count} 项","epub.title":"EPUB 电子书","epub.previousPage":"上一页","epub.nextPage":"下一页","epub.loading":"正在解析 EPUB...","epub.chapterFallback":"章节 {index}","epub.renderIncomplete":"EPUB 正文渲染未完成,请刷新后重试","umd.title":"UMD 电子书","umd.previousChapter":"上一章","umd.nextChapter":"下一章","umd.loading":"正在解析 UMD...","umd.emptyContent":"未解析到正文内容","umd.chapterFallback":"章节 {index}","umd.galleryFallback":"图集 {index}","umd.warningBodyTooShort":"UMD 正文长度小于声明长度,文件可能不完整","umd.error.unexpectedEnd":"UMD 文件结构不完整,读取时遇到意外结尾","umd.error.invalidFile":"不是有效的 UMD 电子书文件","typst.summaryRenderer":"Typst WASM 渲染器","typst.pageSummary.empty":"0 页","typst.pageSummary.ready":"{count} 页 / {width} x {height} pt","typst.status.compiling":"正在编译","typst.status.failed":"编译失败","typst.status.rendered":"已渲染","typst.loading.title":"正在解析 Typst","typst.loading.hint":"加载编译器并生成页面预览...","typst.error.title":"Typst 渲染失败","typst.error.timeout":"Typst WASM / 字体加载或编译超过 {seconds} 秒","typst.error.timeoutHint":"请检查 Typst compiler WASM、renderer WASM、字体目录的下载速度和缓存策略;弱网或跨境部署可通过 options.typst.renderTimeoutMs 调大浏览器端加载/编译超时。","typst.error.assetHint":"Typst 需要本地 compiler / renderer WASM 和字体目录。请运行 file-viewer-copy-assets,或配置 options.typst.compilerWasmUrl / options.typst.rendererWasmUrl / options.typst.fontAssetsUrl,并确认服务器以 application/wasm 返回 WASM。","typst.error.svgParseFailed":"Typst SVG 解析失败","typst.error.wasmLoadFailed":"Typst WASM 加载失败","xmind.toolbar.zoomOut":"缩小","xmind.toolbar.zoomIn":"放大","xmind.toolbar.fit":"适合","xmind.toolbar.fitTitle":"适配画布","xmind.state.loading":"正在解析 XMind 脑图...","xmind.stats.nodes":"节点","xmind.stats.depth":"层级","xmind.stats.theme":"主题","xmind.stats.template":"模板","xmind.badge.paused":"暂停","xmind.badge.collapsed":"折叠","xmind.badge.floating":"浮动","xmind.badge.summary":"概要","xmind.badge.callout":"标注","xmind.imageResource":"图片资源: {name}","xmind.error.unrecognized":"无法识别 XMind 文件: ZIP 中未找到 content.json 或 content.xml","xmind.error.noCanvas":"XMind 文件中没有可预览的画布","cad.toolbar.fit":"适配","cad.toolbar.zoomOut":"缩小","cad.toolbar.zoomIn":"放大","cad.layers.title":"图层","cad.layers.count":"{count} 项","cad.inspector.title":"结构","cad.inspector.entities":"实体","cad.inspector.blocks":"块","cad.inspector.pages":"页面","cad.inspector.drawn":"绘制","cad.state.loadingViewer":"正在加载 CAD 预览器...","cad.state.parsing":"正在解析 CAD...","cad.error.parseFailed":"CAD 文件解析失败","image.alt":"图片","image.lightbox.alt":"图片预览","image.lightbox.close":"关闭图片预览","gitBundle.error.invalid":"当前文件不是标准 Git bundle。","gitBundle.error.missingPack":"Git bundle header 后未找到 PACK 数据。","gitBundle.notice.delta":"当前 bundle 包含 delta 压缩对象。预览器已在浏览器端解析常规 OFS_DELTA / REF_DELTA;若仍有缺失文件,通常是包体过大、对象过多或依赖外部 prerequisite。","gitBundle.title.history":"历史记录","gitBundle.title.fileTree":"文件树","gitBundle.file.choose":"选择文件查看内容","gitBundle.file.noTree":"当前 bundle 的 tree/blob 可能被 delta 压缩,暂未解析到可展开文件。","gitBundle.file.none":"未解析到文件","gitBundle.history.empty":"当前 bundle 未解析到 commit 对象,仅展示 refs 和 pack 摘要。","gitBundle.toolbar.summary":"{commits} commits · {files} files","gitBundle.meta.bundle":"Bundle","gitBundle.meta.refs":"Refs","gitBundle.meta.commits":"Commits","gitBundle.meta.objects":"Objects","gitBundle.meta.deltas":"Deltas","gitBundle.meta.objectFormat":"Object format","gitBundle.meta.objectTypes":"Object types","geo.error.unrecognized":"无法识别的 GeoJSON 数据","geo.error.xmlParseFailed":"XML 解析失败","geo.error.unsupported":"不支持 .{type} 地理格式","geo.title":"地理数据预览","geo.featureCount":"要素数","geo.bounds":"范围","geo.geometryTypes":"几何类型","geo.aria":"地理数据 SVG 预览","geo.loading":"正在解析地理数据...","model.toolbar.fit":"适配","model.toolbar.rotate":"旋转","model.toolbar.wireframe":"线框","model.toolbar.grid":"网格","model.toolbar.axes":"坐标","model.state.loadingSummary":"正在加载模型","model.state.loading":"正在解析 3D 模型...","model.state.loaded":"模型已加载","model.state.parseFailed":"模型解析失败","model.summary.meshes":"{count} 个网格","model.summary.points":"{count} 个点云","model.error.daeEmpty":"DAE 模型未解析出有效场景","model.error.unsupported":"暂不支持 .{type} 模型格式","model.error.parseFailed":"{type} 模型解析失败","model.notice.signature":"检测到文件签名: {signature}。","loading.generic.label":"文件内容","loading.generic.hint":"正在整理内容结构并生成预览。","loading.word.label":"Word 文档","loading.word.hint":"正在准备分页、文本样式和文档结构。","loading.wordWorker.hint":"正在通过 Worker 准备文档结构、文本样式和分页结果。","loading.sheet.label":"Excel 表格","loading.sheet.hint":"正在准备工作表、样式和可视区数据。","loading.csv.label":"表格数据","loading.csv.hint":"正在准备行列数据和基础样式。","loading.presentation.label":"PPT 演示文稿","loading.presentation.hint":"正在构建幻灯片布局和媒体内容。","loading.pdf.label":"PDF 文档","loading.pdf.hint":"正在载入页面位图、文本层和缩放视图。","loading.ofd.label":"OFD 版式文件","loading.ofd.hint":"正在解析国产版式文档和页面对象。","loading.archive.label":"压缩包","loading.archive.hint":"正在启动 Worker 并读取压缩包目录。","loading.email.label":"邮件文件","loading.email.hint":"正在解析邮件头、正文和附件。","loading.msg.hint":"正在解析 Outlook 邮件和附件。","loading.eda.label":"EDA 文件","loading.eda.hint":"正在读取 EDA 容器结构和可读属性。","loading.cad.label":"CAD 图纸","loading.cad.hint":"正在准备 CAD 图层、几何对象和画布视图。","loading.dwg.hint":"正在通过 Worker 加载 DWG 几何和 LibreDWG WASM。","loading.dwf.hint":"正在加载 DWF native renderer 与 W2D/W3D 图形。","loading.dwfx.hint":"正在加载 DWFx/XPS native renderer 与页面图形。","loading.xps.hint":"正在加载 XPS native renderer 与嵌入字体。","loading.drawio.label":"draw.io 图纸","loading.drawio.hint":"正在解析图元、连线和 SVG 预览。","loading.excalidraw.label":"Excalidraw 图纸","loading.excalidraw.hint":"正在解析手绘图元并生成安全 SVG。","loading.epub.label":"EPUB 电子书","loading.epub.hint":"正在解析目录、章节资源和阅读分页。","loading.umd.label":"UMD 电子书","loading.umd.hint":"正在解析移动电子书结构、目录和压缩正文。","loading.image.label":"图片文件","loading.image.hint":"正在解码像素数据并生成预览。","loading.video.label":"视频文件","loading.video.hint":"正在准备媒体资源和播放组件。","loading.audio.label":"音频文件","loading.audio.hint":"正在准备音频资源和播放控件。"},ls={"toolbar.zoomGroup":"Zoom controls","toolbar.zoomOut":"Zoom out","toolbar.zoomIn":"Zoom in","toolbar.zoomReset":"Reset zoom","toolbar.download":"Download","toolbar.downloadTitle":"Download the original file","toolbar.print":"Print","toolbar.printTitle":"Print the complete rendered document","toolbar.exportHtml":"HTML","toolbar.exportHtmlTitle":"Export the rendered HTML","state.ready.title":"Preview ready","state.ready.message":"The file has been rendered.","state.empty.title":"No file selected","state.empty.message":"Choose a file or provide an accessible URL to start previewing.","state.unsupported.install.title":"Preview capability required","state.unsupported.install.message":"{extension} is in the supported matrix, but {rendererLabel} renderer is not assembled in this project.","state.unsupported.install.description":"Install {presetPackage} and pass the capability through options.preset / options.renderers{rendererTip}. Vite projects can also use @file-viewer/vite-plugin to auto-discover installed presets.","state.unsupported.title":"Online preview is not supported yet","state.unsupported.message":"{extension} cannot be previewed online. Download it or convert it to a supported format.","state.unsupported.description":"Supports online preview for Office, PDF, OFD, Typst, archives, email, OLB/DRA, CAD, geospatial data, 3D models, Excalidraw, draw.io, EPUB, UMD, Markdown, code/text, images, audio/video, fonts, and structured data assets.","state.error.title":"Preview failed","preview.downloading":"Downloading file resources...","preview.streamingPdf":"Preparing streaming PDF preview...","preview.reading":"Parsing file content...","error.download":"Download failed","error.print":"Print failed","error.exportHtml":"HTML export failed","error.noDownloadSource":"There is no original file source to download.","error.noExportContent":"There is no rendered preview content to export.","error.printUnavailable":"This file type does not support full-document printing. Download the original file and print it locally.","error.printWindowBlocked":"The browser blocked the print window.","error.remoteDownload":"File download failed","error.localRead":"Failed to read local file","error.load":"Failed to load file","error.stream":"Failed to load streaming PDF preview","error.beforeOperation":"Before-operation check failed","operation.download":"Download original file","operation.print":"Print complete rendered content","operation.exportHtml":"Export rendered HTML","operation.zoomIn":"Zoom in","operation.zoomOut":"Zoom out","operation.zoomReset":"Reset preview zoom","pdf.toolbar.toggleNavigation":"Toggle navigation pane","pdf.toolbar.previousPage":"Previous page","pdf.toolbar.nextPage":"Next page","pdf.toolbar.fitWidth":"Fit to width","pdf.toolbar.zoomOut":"Zoom out","pdf.toolbar.zoomIn":"Zoom in","pdf.toolbar.rotateLeft":"Rotate left","pdf.toolbar.rotateRight":"Rotate right","pdf.nav.typeLabel":"PDF navigation type","pdf.nav.pagesTab":"Pages","pdf.nav.outlineTab":"Outline","pdf.nav.pagesTitle":"Page navigation","pdf.nav.outlineTitle":"Outline navigation","pdf.nav.pageCount":"{count} pages","pdf.nav.itemCount":"{count} items","pdf.nav.pageLabel":"Page {page}","pdf.nav.outlineEmpty":"This PDF has no available outline.","pdf.nav.outlineFallbackTitle":"Outline {index}","pdf.thumbnail.alt":"Page {page} thumbnail","pdf.state.loading":"Loading PDF...","pdf.error.browserWindow":"PDF preview requires a browser window","pdf.error.missingSource":"PDF has no readable data source","pdf.error.loadFailed":"Failed to load PDF","pdf.error.notLoaded":"The PDF is not loaded yet. Please try again later.","pdf.error.unloaded":"The PDF has been unloaded and cannot continue printing.","pdf.error.canvasUnavailable":"This browser cannot create a PDF print canvas.","pdf.export.pageTitle":"{title} - Page {page}","spreadsheet.loading.kicker":"Excel workbook","spreadsheet.loading.title":"Parsing Excel workbook","spreadsheet.loading.hint":"Preparing worksheets, styles, and virtualized viewport data.","spreadsheet.loading.streaming":"Loading visible worksheet data","spreadsheet.tabs.ariaLabel":"Worksheet list","spreadsheet.state.parsingWorkbook":"Parsing the Excel workbook. Please wait...","spreadsheet.state.preparingSheet":"Preparing worksheet content...","spreadsheet.state.preparingSheetNamed":"Preparing “{name}”...","spreadsheet.state.cachedRows":"Cached {cached} / {total} rows","spreadsheet.state.rows":"{rows} rows, loading smoothly by viewport","spreadsheet.state.rowsAndColumns":"{rows} rows, {cols} columns, loading smoothly by viewport","spreadsheet.error.parseFailed":"Failed to parse Excel","spreadsheet.error.workerFailed":"Excel Worker failed","archive.error.nestedUnsupported":".{type} cannot be previewed online. Download it or convert it to a supported format.","archive.loading.readingDirectory":"Reading archive directory...","archive.loading.readingDirectoryHint":"Large files are parsed in a Worker to keep the main thread responsive.","archive.search.placeholder":"Filter files inside the archive","archive.preview.title":"Archive entry preview","archive.preview.chooseFile":"Choose a file","archive.preview.downloadFile":"Download file","archive.error.title":"Archive preview notice","archive.stats.summary":"{count} files · {size} · {previewable} directly previewable","archive.warning.encrypted":"Encrypted content was detected. Online preview does not accept passwords; download and extract it locally.","archive.empty.title":"Choose a file from the left to preview","archive.empty.message":"The archive directory is read first. File contents are extracted on demand and cached in IndexedDB when size allows.","archive.loading.initializingCandidate":"Initializing {label}...","archive.loading.initializingCandidateHint":"If the server does not publish Worker/WASM assets correctly, the viewer falls back automatically.","archive.error.candidateInitTimeout":"{label} initialization timed out","archive.error.encryptedCheckTimeout":"{label} encryption check timed out","archive.loading.directoryReadyHint":"After the directory is ready, click an entry to extract it on demand.","archive.error.candidateReadTimeout":"{label} directory read timed out","archive.loading.workerFallback":"Worker unavailable. Switching to ZIP/TAR compatibility mode...","archive.loading.workerFallbackHint":"Compatibility mode needs no static Worker and works well in mobile WebViews or temporary local servers.","archive.notice.workerFallback":"The libarchive Worker could not start in this environment, so ZIP/TAR/GZIP compatibility mode is active. RAR, 7z, and similar formats should still publish vendor/libarchive/worker-bundle.js and libarchive.wasm.","archive.error.tooLarge":"Archive size {size} exceeds the safety limit {limit}. Download and extract it locally.","archive.loading.initializingWorker":"Initializing archive parsing Worker...","archive.loading.initializingWorkerHint":"Large files are parsed in a Worker to keep the main thread responsive.","archive.error.workerInitFailed":"Archive Worker initialization failed","archive.error.entryTooLarge":"Entry {name} is {size}, exceeding the preview limit {limit}.","archive.loading.extracting":"Extracting {name} on demand...","archive.loading.rendering":"Rendering {name}...","archive.loading.exporting":"Exporting {name}...","media.audio.title":"Audio preview","media.audio.description":"Opened with the browser-native audio player. Codec support depends on the current browser.","media.audio.unsupported":"This browser does not support audio playback.","media.video.title":"Video preview","media.video.unsupported":"This browser does not support this video format.","media.video.hlsHint":"HLS prefers the original URL for segment loading. If the input is a local single-file playlist, make sure segment URLs are reachable by the browser.","media.midi.title":"MIDI file","media.midi.loading":"Parsing MIDI tracks...","media.midi.trackHeader":"Track","media.midi.instrumentHeader":"Instrument","media.midi.channelHeader":"Channel","media.midi.noteCountHeader":"Notes","media.midi.durationHeader":"Duration","media.midi.durationStat":"Duration","media.midi.trackStat":"Tracks","media.midi.noteStat":"Notes","media.midi.parseFailed":"Failed to parse MIDI","email.mbox.subject":"{filename} · message 1","email.mbox.summary":"Detected {count} messages in the MBOX archive. Showing message 1.","email.error.title":"Email preview notice","email.meta.from":"From","email.meta.to":"To","email.meta.cc":"Cc","email.meta.date":"Date","email.tabs.text":"Body","email.tabs.headers":"Headers","email.attachments.title":"Attachments","email.attachments.empty":"No attachments","email.attachments.download":"Download attachment","email.attachments.opening":"Opening attachment {name}...","email.attachments.nestedUnavailable":"Nested attachment preview is not available in this environment. Download {name} to inspect it.","email.loading.parsing":"Parsing email...","data.font.sample":"Flyfish Viewer preview AaBbCc 1234567890","data.error.fontFaceUnsupported":"This browser does not support the FontFace API","data.title.font":"Font file preview","data.title.sqlite":"SQLite database preview","data.title.parquet":"Parquet columnar data preview","data.title.avro":"Avro object container preview","data.title.wasm":"WebAssembly module preview","data.title.eps":"EPS vector file summary","data.title.ai":"Illustrator file summary","data.title.webarchive":"WebArchive summary preview","data.title.summary":"Data asset summary","data.label.format":"Format","data.label.size":"Size","data.label.rendering":"Renderer","data.label.objects":"Objects","data.label.sampleTable":"Sample table","data.label.rows":"Rows","data.label.columns":"Columns","data.label.sampleRows":"Sample rows","data.label.imports":"Imports","data.label.exports":"Exports","data.label.magic":"Magic","data.label.note":"Note","data.label.container":"Container","data.value.schemaRead":"Read","data.value.schemaUnread":"Not read","data.note.aiSummary":"Non PDF-compatible AI is shown as a safe summary.","data.note.postscriptSummary":"PostScript summary preview","data.note.webarchive":"Readable fragments are extracted safely. Web scripts are not executed.","data.image.alt":"Asset preview","psd.title":"PSD layer preview","psd.action.fit":"Fit","psd.action.showAll":"Show all","psd.action.hideAll":"Hide all","psd.layers.title":"Layers","psd.layers.redrawable":"{count} redrawable","psd.layers.empty":"No displayable layers were found. Showing the composite image.","psd.layers.hidden":"hidden","drawing.error.viewerLoadFailed":"Failed to load the diagrams.net viewer","drawing.error.excalidrawEmpty":"This Excalidraw file has no previewable elements","drawing.error.excalidrawTimeout":"Official Excalidraw export timed out. Falling back to the rough.js renderer.","drawing.error.drawioParseFailed":"Failed to parse Draw.io XML: {message}","drawing.error.drawioNoModel":"This Draw.io file has no directly renderable mxGraphModel.","drawing.error.drawioNoElements":"This Draw.io file has no previewable elements.","drawing.error.viewerInitFailed":"The diagrams.net viewer was not initialized correctly","drawing.error.drawioTimeout":"Official diagrams.net Viewer timed out. Falling back to the local SVG preview.","drawing.error.svgParseFailed":"Failed to parse SVG","drawing.error.plantumlRenderFailed":"Failed to render PlantUML SVG: {status}","drawing.title.excalidraw":"Official Excalidraw SVG preview","drawing.title.mermaid":"Mermaid SVG preview","drawing.title.plantuml":"PlantUML SVG preview","drawing.title.drawio":"Draw.io offline SVG preview","drawing.toolbar.zoomOut":"Zoom out","drawing.toolbar.zoomIn":"Zoom in","drawing.toolbar.fit":"Fit","drawing.toolbar.fitWidth":"Fit width","drawing.state.loading":"Loading drawing preview...","text.code.loadingHighlight":"Loading syntax highlighting...","ebook.toc":"Table of contents","ebook.reading":"Reading","ebook.itemCount":"{count} items","epub.title":"EPUB ebook","epub.previousPage":"Previous","epub.nextPage":"Next","epub.loading":"Parsing EPUB...","epub.chapterFallback":"Chapter {index}","epub.renderIncomplete":"EPUB content did not finish rendering. Refresh and try again.","umd.title":"UMD ebook","umd.previousChapter":"Previous chapter","umd.nextChapter":"Next chapter","umd.loading":"Parsing UMD...","umd.emptyContent":"No readable body content was parsed.","umd.chapterFallback":"Chapter {index}","umd.galleryFallback":"Gallery {index}","umd.warningBodyTooShort":"The UMD body is shorter than declared and may be incomplete.","umd.error.unexpectedEnd":"The UMD structure is incomplete and ended unexpectedly.","umd.error.invalidFile":"This is not a valid UMD ebook file.","typst.summaryRenderer":"Typst WASM renderer","typst.pageSummary.empty":"0 pages","typst.pageSummary.ready":"{count} pages / {width} x {height} pt","typst.status.compiling":"Compiling","typst.status.failed":"Compilation failed","typst.status.rendered":"Rendered","typst.loading.title":"Parsing Typst","typst.loading.hint":"Loading the compiler and generating page previews...","typst.error.title":"Typst render failed","typst.error.timeout":"Typst WASM / font loading or compilation exceeded {seconds} seconds","typst.error.timeoutHint":"Check the download speed and cache strategy for the Typst compiler WASM, renderer WASM, and font directory. On weak networks or cross-region deployments, increase options.typst.renderTimeoutMs.","typst.error.assetHint":"Typst requires local compiler / renderer WASM files and a font directory. Run file-viewer-copy-assets, or configure options.typst.compilerWasmUrl / options.typst.rendererWasmUrl / options.typst.fontAssetsUrl, and make sure the server returns WASM with application/wasm.","typst.error.svgParseFailed":"Failed to parse Typst SVG","typst.error.wasmLoadFailed":"Failed to load Typst WASM","xmind.toolbar.zoomOut":"Zoom out","xmind.toolbar.zoomIn":"Zoom in","xmind.toolbar.fit":"Fit","xmind.toolbar.fitTitle":"Fit canvas","xmind.state.loading":"Parsing XMind mind map...","xmind.stats.nodes":"Nodes","xmind.stats.depth":"Depth","xmind.stats.theme":"Theme","xmind.stats.template":"Template","xmind.badge.paused":"Paused","xmind.badge.collapsed":"Collapsed","xmind.badge.floating":"Floating","xmind.badge.summary":"Summary","xmind.badge.callout":"Callout","xmind.imageResource":"Image resource: {name}","xmind.error.unrecognized":"Unrecognized XMind file: content.json or content.xml was not found in the ZIP package.","xmind.error.noCanvas":"This XMind file has no previewable canvas.","cad.toolbar.fit":"Fit","cad.toolbar.zoomOut":"Zoom out","cad.toolbar.zoomIn":"Zoom in","cad.layers.title":"Layers","cad.layers.count":"{count} items","cad.inspector.title":"Structure","cad.inspector.entities":"Entities","cad.inspector.blocks":"Blocks","cad.inspector.pages":"Pages","cad.inspector.drawn":"Drawn","cad.state.loadingViewer":"Loading CAD viewer...","cad.state.parsing":"Parsing CAD...","cad.error.parseFailed":"Failed to parse CAD file","image.alt":"Image","image.lightbox.alt":"Image preview","image.lightbox.close":"Close image preview","gitBundle.error.invalid":"This file is not a valid Git bundle.","gitBundle.error.missingPack":"No PACK data was found after the Git bundle header.","gitBundle.notice.delta":"This bundle contains delta-compressed objects. The viewer resolves common OFS_DELTA / REF_DELTA objects in the browser. Missing files usually indicate a very large bundle, too many objects, or an external prerequisite.","gitBundle.title.history":"History","gitBundle.title.fileTree":"File tree","gitBundle.file.choose":"Select a file to inspect","gitBundle.file.noTree":"The tree/blob objects in this bundle may be delta-compressed, and no expandable files were parsed.","gitBundle.file.none":"No files parsed","gitBundle.history.empty":"No commit objects were parsed. Showing refs and pack summary only.","gitBundle.toolbar.summary":"{commits} commits · {files} files","gitBundle.meta.bundle":"Bundle","gitBundle.meta.refs":"Refs","gitBundle.meta.commits":"Commits","gitBundle.meta.objects":"Objects","gitBundle.meta.deltas":"Deltas","gitBundle.meta.objectFormat":"Object format","gitBundle.meta.objectTypes":"Object types","geo.error.unrecognized":"Unrecognized GeoJSON data","geo.error.xmlParseFailed":"Failed to parse XML","geo.error.unsupported":".{type} geospatial format is not supported","geo.title":"Geospatial preview","geo.featureCount":"Features","geo.bounds":"Bounds","geo.geometryTypes":"Geometry types","geo.aria":"Geospatial SVG preview","geo.loading":"Parsing geospatial data...","model.toolbar.fit":"Fit","model.toolbar.rotate":"Rotate","model.toolbar.wireframe":"Wireframe","model.toolbar.grid":"Grid","model.toolbar.axes":"Axes","model.state.loadingSummary":"Loading model","model.state.loading":"Parsing 3D model...","model.state.loaded":"Model loaded","model.state.parseFailed":"Failed to parse model","model.summary.meshes":"{count} meshes","model.summary.points":"{count} point clouds","model.error.daeEmpty":"The DAE model did not contain a valid scene.","model.error.unsupported":".{type} model format is not supported yet","model.error.parseFailed":"Failed to parse {type} model","model.notice.signature":"Detected file signature: {signature}.","loading.generic.label":"File content","loading.generic.hint":"Preparing content structure and preview.","loading.word.label":"Word document","loading.word.hint":"Preparing document structure, text styles, and layout.","loading.wordWorker.hint":"Preparing document structure, text styles, and layout in a Worker.","loading.sheet.label":"Excel workbook","loading.sheet.hint":"Preparing worksheets, styles, and viewport data.","loading.csv.label":"Tabular data","loading.csv.hint":"Preparing rows, columns, and basic styling.","loading.presentation.label":"PowerPoint deck","loading.presentation.hint":"Building slide layout and media content.","loading.pdf.label":"PDF document","loading.pdf.hint":"Loading page bitmaps, text layers, and zoom view.","loading.ofd.label":"OFD layout document","loading.ofd.hint":"Parsing OFD pages and layout objects.","loading.archive.label":"Archive","loading.archive.hint":"Starting Worker and reading archive entries.","loading.email.label":"Email file","loading.email.hint":"Parsing message headers, body, and attachments.","loading.msg.hint":"Parsing Outlook message and attachments.","loading.eda.label":"EDA file","loading.eda.hint":"Reading EDA container structure and properties.","loading.cad.label":"CAD drawing","loading.cad.hint":"Preparing CAD layers, geometry, and canvas view.","loading.dwg.hint":"Loading DWG geometry and LibreDWG WASM in a Worker.","loading.dwf.hint":"Loading native DWF renderer and W2D/W3D graphics.","loading.dwfx.hint":"Loading native DWFx/XPS renderer and page graphics.","loading.xps.hint":"Loading native XPS renderer and embedded fonts.","loading.drawio.label":"draw.io diagram","loading.drawio.hint":"Parsing shapes, connectors, and SVG preview.","loading.excalidraw.label":"Excalidraw scene","loading.excalidraw.hint":"Parsing hand-drawn elements and generating safe SVG.","loading.epub.label":"EPUB ebook","loading.epub.hint":"Parsing table of contents, chapter resources, and reading pages.","loading.umd.label":"UMD ebook","loading.umd.hint":"Parsing mobile ebook metadata, table of contents, and compressed chapters.","loading.image.label":"Image file","loading.image.hint":"Decoding pixels and generating preview.","loading.video.label":"Video file","loading.video.hint":"Preparing media resource and player.","loading.audio.label":"Audio file","loading.audio.hint":"Preparing audio resource and playback controls."},Wr=Object.freeze({"zh-CN":as,"en-US":ls}),os=()=>{var e;if(!(typeof navigator>"u"))return((e=navigator.languages)===null||e===void 0?void 0:e[0])||navigator.language},Fn=e=>{const t=!e||e==="auto"?os():e;return String(t||"zh-CN").toLowerCase().startsWith("zh")?"zh-CN":"en-US"},ss=e=>{var t;return((t=e?.i18n)===null||t===void 0?void 0:t.messages)||e?.messages},Fr=e=>{var t;return Fn(((t=e?.i18n)===null||t===void 0?void 0:t.locale)||e?.locale)},kn=(e,t={})=>e.replace(/\{([a-zA-Z0-9_.-]+)\}/g,(r,n)=>{const i=t[n];return i==null?"":String(i)}),de=(e,t,r={})=>{const n=Fr(e),i=ss(e);return kn((typeof i=="function"?i(t,r,n):i?.[t])||Wr[n][t]||Wr["zh-CN"][t],r)},kr=e=>(t,r)=>de(e,t,r)})),Er,St,Ur,ds,cs,us,En,Vt,et,Un,Tn,We,Kn,Tr,Kr,_n,_r,Pr,Cr,zr,Pn,ms,Cn=ne((()=>{In(),Ve(),$e(),Er="file-viewer-preview",St="preview",Ur=Ee,ds={download:"下载失败",print:"打印失败","export-html":"导出 HTML 失败"},cs={download:"error.download",print:"error.print","export-html":"error.exportHtml"},us=e=>e&&"name"in e&&typeof e.name=="string"?e.name:"",En=e=>e&&typeof e.type=="string"?e.type:"",Vt=({buffer:e=null,file:t=null,url:r=null,filename:n=null,mimeType:i=null}={})=>({buffer:e,file:t,url:r,filename:n,mimeType:i||En(t)||null}),et=(e,t=St)=>e?.filename||t,Un=(e,t=St)=>{var r;return Vt({buffer:e?.buffer,file:e?.file,url:e?.url,filename:et(e,t),mimeType:(r=e?.file)===null||r===void 0?void 0:r.type})},Tn=(e,t="preview")=>e.filename||us(e.file)||t,We=({filename:e,source:t,fallback:r=Er})=>e||(t?Tn(t,""):"")||r,Kn=({context:e,formatErrorMessage:t,prefixes:r,i18n:n})=>{var i;return t((i=r?.[e.operation])!==null&&i!==void 0?i:de(n,cs[e.operation]),e.error)},Tr=e=>!!e.buffer||!!e.file||!!e.url,Kr=async(e,t)=>e?await e(t):!0,_n=async(e,{source:t,title:r,filename:n,adapter:i=null,watermarkInlineStyle:a,i18n:l})=>{if(!t)throw new Error(de(l,"error.noExportContent"));return xn({source:t,mode:e,title:We({filename:r||n,fallback:Er}),adapter:i,watermarkInlineStyle:a})},_r=async({source:e,filename:t,beforeOperation:r,i18n:n,throwOnMissingSource:i=!0})=>{var a;if(!Tr(e)){if(i)throw new Error(de(n,"error.noDownloadSource"));return!1}if(!await Kr(r,"download"))return!1;const l=We({filename:t,source:e,fallback:Ur});return e.buffer?(wt(new Blob([e.buffer],{type:e.mimeType||((a=e.file)===null||a===void 0?void 0:a.type)||"application/octet-stream"}),l),!0):e.file?(wt(e.file,l),!0):(gn(e.url,l),!0)},Pr=async({download:e=!0,filename:t,beforeOperation:r,i18n:n,...i})=>{if(!await Kr(r,"export-html"))return"";const a=await _n("export",{...i,filename:t,i18n:n});if(e!==!1){const l=We({filename:t||i.title,fallback:St});wt(new Blob([a],{type:"text/html;charset=utf-8"}),`${l}.rendered.html`)}return a},Cr=async({autoPrint:e=!0,beforeOperation:t,i18n:r,openWindow:n,printAvailable:i=!0,printWindow:a,...l})=>{if(!i)throw new Error(de(r,"error.printUnavailable"));if(!await Kr(t,"print"))return!1;const o=await _n("print",{...l,i18n:r}),s=a||n?.()||(typeof window<"u"?window.open("","_blank"):null);if(!s)throw new Error(de(r,"error.printWindowBlocked"));return s.document.open(),s.document.write(o),s.document.close(),s.focus(),await Sn(s),e!==!1&&s.print(),!0},zr=(e,t,{errorPrefixes:r,formatErrorMessage:n,getI18n:i,i18n:a,onError:l,onErrorMessage:o})=>{var s;const h={operation:e,error:t};l?.(h),n&&o&&o(Kn({context:h,formatErrorMessage:n,prefixes:r,i18n:(s=i?.())!==null&&s!==void 0?s:a}),h)},Pn=({getBuffer:e,getFile:t,getUrl:r,getI18n:n,getFilename:i,getMimeType:a,getRenderedSource:l,getAdapter:o,getWatermarkInlineStyle:s,getPrintAvailable:h,beforeOperation:f,i18n:p,errorPrefixes:v,formatErrorMessage:m,onError:g,onErrorMessage:u})=>{const y=()=>{var I;return(I=n?.())!==null&&I!==void 0?I:p},b=()=>{var I,w,G,K;const F=(I=t?.())!==null&&I!==void 0?I:null;return Vt({buffer:(w=e?.())!==null&&w!==void 0?w:null,file:F,url:(G=r?.())!==null&&G!==void 0?G:null,filename:i(),mimeType:(K=a?.())!==null&&K!==void 0?K:En(F)})},Z=()=>{var I,w;const G=i()||void 0;return{source:l(),adapter:(I=o?.())!==null&&I!==void 0?I:null,title:G,filename:G,watermarkInlineStyle:(w=s?.())!==null&&w!==void 0?w:void 0,beforeOperation:f,i18n:y()}};return{async downloadOriginalFile(){try{return await _r({source:b(),beforeOperation:f,i18n:y(),throwOnMissingSource:!1})}catch(I){zr("download",I,{errorPrefixes:v,formatErrorMessage:m,getI18n:n,i18n:p,onError:g,onErrorMessage:u});return}},async exportRenderedHtml(){try{return await Pr(Z())}catch(I){zr("export-html",I,{errorPrefixes:v,formatErrorMessage:m,getI18n:n,i18n:p,onError:g,onErrorMessage:u});return}},async printRenderedHtml(){var I;try{return await Cr({...Z(),printAvailable:(I=h?.())!==null&&I!==void 0?I:!0})}catch(w){zr("print",w,{errorPrefixes:v,formatErrorMessage:m,getI18n:n,i18n:p,onError:g,onErrorMessage:u});return}}}},ms=e=>{const t=Pn(e);return{async downloadOriginalFile(){await t.downloadOriginalFile()},async exportRenderedHtml(){await t.exportRenderedHtml()},async printRenderedHtml(){await t.printRenderedHtml()}}}})),Yr,Ue,hs,tt,zn,xt,ps,bs,Yn,fs,Hn,ys,Nn,Jn,It,Rt,Dn,Hr=ne((()=>{_e(),Ve(),Yr="__flyfish_file_viewer_auto_renderer_presets__",Ue=()=>{const e=globalThis;return e[Yr]||(e[Yr]={version:0,presets:new Map}),e[Yr]},hs=e=>({...e,extensions:e.extensions.map(ye)}),tt=(e=Re)=>{const t=new Map,r=new Map,n=i=>{const a=hs(i),l=t.get(a.id);l&&l.extensions.forEach(o=>{var s;((s=r.get(o))===null||s===void 0?void 0:s.id)===l.id&&r.delete(o)}),t.set(a.id,a),a.extensions.forEach(o=>{const s=r.get(o);if(s&&s.id!==a.id)throw new Error(`File extension "${o}" is already registered by renderer "${s.id}".`);r.set(o,a)})};return e.forEach(n),{register:n,unregister(i){const a=t.get(i);return a?(a.extensions.forEach(l=>{var o;((o=r.get(l))===null||o===void 0?void 0:o.id)===i&&r.delete(l)}),t.delete(i),!0):!1},getById(i){return t.get(i)},getByExtension(i){return r.get(ye(i))},hasExtension(i){return r.has(ye(i))},list(){return Array.from(t.values())},listExtensions(){return Array.from(r.keys()).sort()}}},zn=e=>!!e&&typeof e=="object"&&!Array.isArray(e)&&Array.isArray(e.renderers),xt=e=>e?Array.isArray(e)?e.flatMap(t=>xt(t)):zn(e)?xt(e.renderers):[e]:[],ps=(e,t={})=>t.id?t.id:t.packageName?t.packageName:zn(e)?e.id:!Array.isArray(e)&&e&&typeof e=="object"&&"id"in e?String(e.id):"file-viewer-auto-renderers",bs=(e,t={})=>{const r=Ue(),n=ps(e,t),i=r.presets.get(n);return(i?.input!==e||i.packageName!==t.packageName)&&(r.presets.set(n,{id:n,packageName:t.packageName,input:e}),r.version+=1),()=>{Yn(n)}},Yn=e=>{const t=Ue(),r=t.presets.delete(e);return r&&(t.version+=1),r},fs=()=>{const e=Ue();e.presets.size&&(e.presets.clear(),e.version+=1)},Hn=()=>Array.from(Ue().presets.values()).map(e=>e.input),ys=()=>Array.from(Ue().presets.values()).map(e=>({...e,input:e.input})),Nn=e=>{var t;const r=Ue(),n=r.presets.get(e);if(n)return n.input;const i=e.startsWith("@file-viewer/preset-")?e:`@file-viewer/preset-${e}`;return(t=Array.from(r.presets.values()).find(a=>a.packageName===i||a.id===i))===null||t===void 0?void 0:t.input},Jn=()=>Ue().version,It=e=>e?typeof e=="string"?!0:Array.isArray(e)?e.some(t=>It(t)):!1:!1,Rt=e=>{if(!e)return[];if(typeof e=="string"){const t=Nn(e);return t?[t]:[]}return Array.isArray(e)?e.flatMap(t=>Rt(t)):[e]},Dn=async({registry:e,plugins:t,registerHandler:r})=>{var n,i,a;for(const l of t)(n=l.definitions)===null||n===void 0||n.forEach(o=>{e.register(o)}),(i=l.handlers)===null||i===void 0||i.forEach(o=>{r?.(o)}),await((a=l.install)===null||a===void 0?void 0:a.call(l,{registry:e,registerHandler:r}));return e}})),Nr,An=ne((()=>{_e(),Hr(),Ve(),Nr=({registry:e=tt(Re),handlers:t,fallbackHandler:r,fallbackKey:n="error"})=>{const i=Array.from(t).reduce((s,h)=>(s.set(h.rendererId,h.handler),s),new Map),a=new Map,l=[];e.list().forEach(s=>{const h=i.get(s.id);if(!h){l.push(s.id);return}s.extensions.forEach(f=>{a.set(ye(f),h)})}),r&&n&&a.set(ye(n),r);const o=s=>a.get(ye(s));return{handlersByRendererId:i,handlersByExtension:a,missingRendererIds:l,get:o,resolve(s){return o(s)||(n?o(n):void 0)},has(s){return a.has(ye(s))},listExtensions(){return Array.from(a.keys()).sort()}}}})),Jr,Ye,Mn,On,Bn,jn,Qn,Dr,qn,$n,ea,ta,ra=ne((()=>{_e(),Ve(),Jr=Object.freeze({download:!1,print:!1,exportHtml:!1,zoom:!1,zoomIn:!1,zoomOut:!1,zoomReset:!1}),Ye=e=>e===!0||e==="adapter"||e==="provider",Mn=(e,t)=>{var r,n,i,a,l,o,s,h;return e?{download:((r=e.capabilities)===null||r===void 0?void 0:r.download)!==!1,print:Ye((n=e.capabilities)===null||n===void 0?void 0:n.print),exportHtml:Ye((i=e.capabilities)===null||i===void 0?void 0:i.exportHtml),zoom:Ye((a=e.capabilities)===null||a===void 0?void 0:a.zoom),zoomIn:Ye((l=e.capabilities)===null||l===void 0?void 0:l.zoom),zoomOut:Ye((o=e.capabilities)===null||o===void 0?void 0:o.zoom),zoomReset:Ye((s=e.capabilities)===null||s===void 0?void 0:s.zoom),...(h=t?.getAvailability)===null||h===void 0?void 0:h.call(t)}:{...Jr}},On=e=>({...Jr,download:ye(e).length>0}),Bn=["docx","docm","dotx","dotm","doc","dot","pdf","typ","typst"],jn=["pptx","pptm","potx","potm","ppsx","ppsm","ofd","dxf","dwg","dwf","dwfx","xps","excalidraw","drawio","dio","mermaid","mmd","plantuml","puml","umd","md","markdown","olb","dra",...pr,...br],Qn=["xlsx","xltx","xlsm","xlsb","xls","xlt","xltm","csv","ods","fods","numbers",...mr,"eml","msg","epub","mp4","mp3","mpeg","wav","ogg","oga","opus","m4a","aac","flac","weba",...hr],Dr=(e,t)=>e.includes(ye(t)),qn=e=>Dr(Bn,e),$n=e=>Dr(jn,e),ea=e=>Dr(Qn,e),ta=(e,t,r)=>{if(!r)return!1;if(t){if(t.print===!1)return!1;if(t.toHtml)return!0}return qn(e)||ea(e)?!1:$n(e)}})),ia,vs,gs,na,ws,Zs,rt,Ar,aa,la,Mr,oa,sa,da,ca,ua,Ss,ma,Vs,ha,pa,ba,Or,fa,Br,Fe,Gt,xs,Is,jr,Rs,ya,Qr,va,ga,wa,Za,Gs,Sa,Va,xa,Ls,Ia,Ra,Lt,Ga,La,Xa,Xs,Wa,Fa,Xt=ne((()=>{ra(),Ve(),$e(),Cn(),ia={"load-start":"onLoadStart","load-complete":"onLoadComplete","unload-start":"onUnloadStart","unload-complete":"onUnloadComplete"},vs={download:"下载原始文件",print:"打印完整渲染内容","export-html":"导出渲染 HTML","zoom-in":"放大预览","zoom-out":"缩小预览","zoom-reset":"还原预览比例"},gs="操作前置校验失败",na="FileViewer",ws=["zoom-in","zoom-out","zoom-reset"],Zs={canZoomIn:"zoom-in",canZoomOut:"zoom-out",canReset:"zoom-reset"},rt=({phase:e,version:t,source:r,filename:n,file:i,url:a,size:l,bufferSize:o,startedAt:s,duration:h,timestamp:f,reason:p})=>{var v;const m=Ge(i?.name||n||a||""),g=f??Date.now();return{phase:e,type:ze(m),filename:m,source:r,url:a,file:i||void 0,size:(v=l??i?.size)!==null&&v!==void 0?v:o,version:t,timestamp:g,duration:h??(e==="load-complete"&&typeof s=="number"?g-s:void 0),reason:p}},Ar=({phase:e,source:t,version:r,startedAt:n,timestamp:i,reason:a})=>{const l=i??Date.now();return rt({phase:e,filename:t.filename,source:t.kind,url:t.url,file:typeof File<"u"&&t.file instanceof File?t.file:void 0,size:t.size,version:r,timestamp:l,duration:e.endsWith("complete")&&typeof n=="number"?l-n:void 0,reason:a})},aa=({file:e,url:t}={})=>e?{source:"file"}:t?{source:"url",sourceUrl:t}:{source:"empty"},la=()=>{let e=null;const t=new Map;return{markLoadStarted(r,n=Date.now()){t.set(r,n)},clearLoadStarted(r){t.delete(r)},getLoadStartedAt(r){return t.get(r)},getActiveDocumentContext(){return e},setActiveDocumentContext(r){e=r},clearActiveDocumentContext(){e=null},buildActiveUnloadContext(r,n,i="replace",a=Date.now()){return n?{...n,phase:r,timestamp:a,reason:i}:null}}},Mr=(e,t,r=Date.now(),n)=>{const{phase:i,...a}=t;return{...a,operation:e,label:de(n,{download:"operation.download",print:"operation.print","export-html":"operation.exportHtml","zoom-in":"operation.zoomIn","zoom-out":"operation.zoomOut","zoom-reset":"operation.zoomReset"}[e]),timestamp:r}},oa=({operation:e,lifecycleState:t,version:r,filename:n,bufferSize:i,currentFile:a,fallbackFile:l,fallbackUrl:o,timestamp:s,lifecycleTimestamp:h,i18n:f})=>{const p=t.getActiveDocumentContext(),v=aa({file:l,url:o});return Mr(e,p||rt({phase:"load-complete",version:r,source:v.source,file:a,filename:n,url:v.sourceUrl,bufferSize:i,startedAt:t.getLoadStartedAt(r),timestamp:h}),s,f)},sa=(e,t)=>{if(t.phase==="load-start"){e("load-start",t);return}if(t.phase==="load-complete"){e("load-complete",t);return}if(t.phase==="unload-start"){e("unload-start",t);return}e("unload-complete",t)},da=({error:e,formatErrorMessage:t,prefix:r,i18n:n})=>t(r||de(n,"error.beforeOperation"),e),ca=({context:e,prefix:t=na})=>`${t} ${e.phase} hook failed`,ua=(e,t)=>{typeof console<"u"&&typeof console.error=="function"&&console.error(e,t)},Ss=({error:e,context:t,onLogError:r=ua,prefix:n})=>{const i=ca({context:t,prefix:n});return r?.(i,e,t),i},ma=e=>{typeof console<"u"&&typeof console.error=="function"&&console.error(e)},Vs=({error:e,context:t,onLogError:r=ma})=>(r?.(e,t),e),ha=({lifecycleState:e,reason:t="replace",onLifecycle:r})=>{const n=e.getActiveDocumentContext(),i=e.buildActiveUnloadContext("unload-start",n,t);return i&&r?.(i),{reason:t,context:n,unloadContext:i}},pa=({lifecycleState:e,context:t=null,reason:r="replace",onLifecycle:n})=>{const i=e.buildActiveUnloadContext("unload-complete",t,r);return i&&n?.(i),{reason:r,context:t,unloadContext:i}},ba=e=>ia[e],Or=async(e,t,r)=>{const n=t?.[ba(e.phase)];if(n)try{await n(e)}catch(i){r?.(i,e)}},fa=(e,t)=>{const r=e?.toolbar;if(!r||typeof r!="object")return[e?.beforeOperation];const n=t==="download"?r.beforeDownload:t==="print"?r.beforePrint:t==="export-html"?r.beforeExportHtml:void 0;return[e?.beforeOperation,r.beforeOperation,n]},Br=(e,t)=>e?.[t]!==!1,Fe=(e,t)=>!e||typeof e!="object"?!0:Br(e.permissions,t),Gt=(e,t)=>Br(e.items,t)&&Br(e.permissions,t),xs=e=>ws.some(t=>Gt(e,t)),Is=(e,t)=>{if(!t||typeof t!="object"||!t.permissions)return e;const r=Lt(e);return Fe(t,"download")||(r.download=!1),Fe(t,"print")||(r.print=!1),Fe(t,"export-html")||(r.exportHtml=!1),Fe(t,"zoom-in")||(r.zoomIn=!1),Fe(t,"zoom-out")||(r.zoomOut=!1),Fe(t,"zoom-reset")||(r.zoomReset=!1),r.zoom=r.zoom&&(r.zoomIn||r.zoomOut||r.zoomReset),r},jr=async({context:e,options:t,onBefore:r,onCancel:n,onError:i})=>{r?.(e);try{if(!Fe(t?.toolbar,e.operation))return n?.(e),!1;for(const a of fa(t,e.operation))if(a&&await a(e)===!1)return n?.(e),!1}catch(a){return i?.(a,e),n?.(e),!1}return!0},Rs=e=>{const{file:t,...r}=e;return{...r,hasFile:!!e.file}},ya=({context:e,hooks:t,onChange:r,onError:n})=>(r?.(e.phase,e),Or(e,t,n),!0),Qr=({event:e,context:t,onChange:r})=>(r?.(t),!0),va=({lifecycleState:e,getOptions:t=()=>{},onLifecycleChange:r,onLifecycleError:n,onOperationBefore:i,onOperationCancel:a,onOperationError:l})=>{const o=s=>{var h;return ya({context:s,hooks:(h=t())===null||h===void 0?void 0:h.hooks,onChange:r,onError:n})};return{notifyLifecycle:o,notifyActiveUnloadStart(s="replace"){return ha({lifecycleState:e,reason:s,onLifecycle:o}).context},notifyActiveUnloadComplete(s,h="replace"){return pa({lifecycleState:e,context:s,reason:h,onLifecycle:o})},runBeforeOperation(s){return jr({context:s,options:t(),onBefore:h=>{Qr({event:"operation-before",context:h,onChange:i})},onCancel:h=>{Qr({event:"operation-cancel",context:h,onChange:a})},onError:l})}}},ga=({availability:e,onChange:t})=>{const r=Lt(e);return t?.(r),!0},wa=({state:e,onChange:t})=>(t?.(e),!0),Za=({getOperationAvailability:e,getToolbarDisabled:t=()=>!1,getZoomState:r,onOperationAvailabilityChange:n,onZoomChange:i})=>({notifyOperationAvailabilityChange(a=e()){return ga({availability:a,onChange:n})},notifyZoomChange(a=r()){return wa({state:a,onChange:i})},isZoomButtonDisabled(a){return Xa({action:a,availability:e(),toolbarDisabled:t(),zoomState:r()})}}),Gs=({getOperationAvailability:e,...t})=>({...t,getOperationAvailability:()=>Lt(e())}),Sa=e=>[e.scale,e.label,e.canZoomIn,e.canZoomOut,e.canReset],Va=({toolbarActions:e,availability:t})=>e.notifyOperationAvailabilityChange(t),xa=({toolbarActions:e,state:t})=>e.notifyZoomChange(t),Ls=({getAdapter:e=()=>null,getBuffer:t=()=>null,getExtension:r,getFile:n=()=>null,getHasError:i=()=>!1,getLoading:a=()=>!1,getOptions:l,getSourceUrl:o=()=>null,getToolbar:s,getRenderedReady:h,getZoomState:f,zoomSyncState:p,onOperationAvailabilityChange:v,onZoomChange:m})=>{let g=null;const u=()=>{var Z,I,w,G;return g=Wa({extension:r(),source:Vt({buffer:(Z=t())!==null&&Z!==void 0?Z:null,file:(I=n())!==null&&I!==void 0?I:null,url:(w=o())!==null&&w!==void 0?w:null}),renderedReady:h(),hasError:i(),adapter:(G=e())!==null&&G!==void 0?G:null,zoomState:f(),toolbar:s(),options:l?.(),loading:a()}),g},y=()=>g??u(),b=Za({getOperationAvailability:()=>y().operationAvailability,getToolbarDisabled:()=>y().toolbarDisabled,getZoomState:f,onOperationAvailabilityChange:v,onZoomChange:m});return{resolveToolbarState:u,createZoomSyncSnapshot:()=>Sa(p??f()),syncOperationAvailability:Z=>Va({toolbarActions:b,availability:Z}),syncZoomChange:Z=>xa({toolbarActions:b,state:Z}),isZoomButtonDisabled:b.isZoomButtonDisabled}},Ia=e=>{const t=e?.toolbar;return t===!1?{download:!1,print:!1,exportHtml:!1,zoom:!1}:t&&typeof t=="object"?{download:t.download!==!1&&Gt(t,"download"),print:t.print!==!1&&Gt(t,"print"),exportHtml:t.exportHtml!==!1&&Gt(t,"export-html"),zoom:t.zoom!==!1&&xs(t),items:t.items,permissions:t.permissions,position:t.position,beforeOperation:t.beforeOperation,beforeDownload:t.beforeDownload,beforePrint:t.beforePrint,beforeExportHtml:t.beforeExportHtml}:{download:!0,print:!0,exportHtml:!0,zoom:!0}},Ra=({extension:e,hasOriginalSource:t,renderedReady:r,hasError:n=!1,adapter:i,source:a,zoomState:l})=>{const o=r&&!n,s=t??(a?Tr(a):!1),h=o&&(l.canZoomIn||l.canZoomOut||l.canReset);return{download:s,print:o&&ta(e,i??null,r),exportHtml:o&&i?.exportHtml!==!1,zoom:h,zoomIn:h&&l.canZoomIn,zoomOut:h&&l.canZoomOut,zoomReset:h&&l.canReset}},Lt=e=>({download:e.download,print:e.print,exportHtml:e.exportHtml,zoom:e.zoom,zoomIn:e.zoomIn,zoomOut:e.zoomOut,zoomReset:e.zoomReset}),Ga=(e,t)=>({download:e.download&&t.download,print:e.print&&t.print,exportHtml:e.exportHtml&&t.exportHtml,zoom:e.zoom&&t.zoom}),La=e=>!!(e.download||e.print||e.exportHtml||e.zoom),Xa=({toolbarDisabled:e=!1,availability:t,zoomState:r,action:n})=>{const i=Zs[n],a=i==="zoom-in"?t.zoomIn:i==="zoom-out"?t.zoomOut:t.zoomReset;return e||!t.zoom||!a||!r[n]},Xs=({loading:e=!1,hasError:t=!1})=>!!(e||t),Wa=({toolbar:e,options:t,loading:r=!1,...n})=>{const i=Is(Ra(n),t?.toolbar),a=Ga(e,i);return{operationAvailability:i,visibleToolbar:a,showToolbar:La(a),toolbarPosition:Fa(t,n.extension),toolbarDisabled:Xs({loading:r,hasError:n.hasError})}},Fa=(e,t)=>{const r=e?.toolbar,n=r&&typeof r=="object"?r.position:"auto";return n==="top"||n==="bottom-right"?n:t==="pdf"?"bottom-right":"top"}})),Ws,qr,Te,Fs,ks,Es,Us,Ts,Ks,_s,ka,He,Ps,Cs,zs,$r,ei,Ys,Hs,ti=ne((()=>{Ve(),_e(),$e(),Ws=Object.freeze({downloading:"正在下载文件资源...",streamingPdf:"正在建立 PDF 流式预览...",reading:"正在解析文件内容..."}),qr=e=>Object.freeze({downloading:de(e,"preview.downloading"),streamingPdf:de(e,"preview.streamingPdf"),reading:de(e,"preview.reading")}),Te=Object.freeze({accent:"#5f6f82",soft:"rgba(95, 111, 130, 0.12)",badge:"DOC",label:"文件内容",hint:"正在整理内容结构并生成预览。"}),Fs="支持 Office、PDF、OFD、Typst、压缩包、邮件、OLB/DRA、CAD、地理数据、3D 模型、Excalidraw、draw.io、EPUB、UMD、Markdown、代码/文本、图片、音视频、字体和数据资产的在线预览",ks=e=>{const t=ye(e);return t?`.${t}`:"当前"},Es={"office-word-openxml":"@file-viewer/renderer-word","office-word-binary":"@file-viewer/renderer-word","office-presentation":"@file-viewer/renderer-presentation","open-document":"@file-viewer/renderer-word","spreadsheet-openxml":"@file-viewer/renderer-spreadsheet",pdf:"@file-viewer/renderer-pdf",ofd:"@file-viewer/renderer-ofd",typst:"@file-viewer/renderer-typst",archive:"@file-viewer/renderer-archive",email:"@file-viewer/renderer-email",eda:"@file-viewer/renderer-eda",cad:"@file-viewer/renderer-cad",model:"@file-viewer/renderer-3d",geo:"@file-viewer/renderer-geo",drawing:"@file-viewer/renderer-drawing",mindmap:"@file-viewer/renderer-mindmap",epub:"@file-viewer/renderer-epub",umd:"@file-viewer/renderer-epub",image:"@file-viewer/renderer-image",markdown:"@file-viewer/renderer-text",code:"@file-viewer/renderer-text",video:"@file-viewer/renderer-media",audio:"@file-viewer/renderer-media","data-asset":"@file-viewer/renderer-data"},Us=new Set(["office-word-openxml","office-word-binary","office-presentation","open-document","spreadsheet-openxml","pdf","ofd"]),Ts=new Set(["image","markdown","code","video","audio"]),Ks=new Set(["typst","archive","eda","cad","model","geo","drawing","mindmap","data-asset"]),_s=e=>Us.has(e.id)?{packageName:"@file-viewer/preset-office",vitePreset:"office",label:"Office preset"}:Ks.has(e.id)?{packageName:"@file-viewer/preset-engineering",vitePreset:"engineering",label:"Engineering preset"}:Ts.has(e.id)?{packageName:"@file-viewer/preset-lite",vitePreset:"lite",label:"Lite preset"}:{packageName:"@file-viewer/preset-all",vitePreset:"all",label:"Full preset"},ka=(e="")=>{const t=ye(e),r=Re.find(i=>i.extensions.map(ye).includes(t));if(!r)return null;const n=_s(r);return{extension:t,rendererId:r.id,rendererLabel:r.label,rendererCategory:r.category,rendererPackage:Es[r.id],presetPackage:n.packageName,vitePreset:n.vitePreset,presetLabel:n.label}},He=({state:e,extension:t="",title:r,message:n,description:i,theme:a=Te,recoverable:l})=>({state:e,extension:ye(t),title:r,message:n,description:i,theme:a,recoverable:l}),Ps=(e="",t,r=Te,n)=>He({state:"loading",extension:e,title:r.label,message:t||de(n,"preview.reading"),description:r.hint,theme:r,recoverable:!1}),Cs=(e="",t=Te,r)=>He({state:"ready",extension:e,title:de(r,"state.ready.title"),message:de(r,"state.ready.message"),theme:t,recoverable:!1}),zs=(e="",t=Te,r)=>He({state:"empty",extension:e,title:de(r,"state.empty.title"),message:de(r,"state.empty.message"),theme:t,recoverable:!0}),$r=(e="",t=Te,r)=>{const n=ks(e),i=ka(e);if(i){const a=Fr(r),l=i.rendererPackage?a==="zh-CN"?`;如果需要极致裁剪,也可以只安装 ${i.rendererPackage}`:`; for a strict custom cut, install only ${i.rendererPackage}`:"";return He({state:"unsupported",extension:e,title:de(r,"state.unsupported.install.title"),message:de(r,"state.unsupported.install.message",{extension:n,rendererLabel:i.rendererLabel}),description:de(r,"state.unsupported.install.description",{extension:n,rendererLabel:i.rendererLabel,presetPackage:i.presetPackage,vitePreset:i.vitePreset,rendererTip:l}),theme:t,recoverable:!0})}return He({state:"unsupported",extension:e,title:de(r,"state.unsupported.title"),message:de(r,"state.unsupported.message",{extension:n}),description:de(r,"state.unsupported.description"),theme:t,recoverable:!0})},ei=e=>e instanceof Error?e.message:String(e),Ys=(e,t)=>`${e}:${ei(t)}`,Hs=(e="",t="未知错误",r=Te,n)=>He({state:"error",extension:e,title:de(n,"state.error.title"),message:ei(t),theme:r,recoverable:!0})})),Ns,Ea,Js,Ds,Ua,Ta,Ka,ri,_a,Pa,Ca,za,Ya,Ha,it,Na,Ja,As,ii,ni,Da,Ms,Os,Aa,ai,Ma,Oa,Ba,ja,Qa,Wt,li,oi,qa,$a,el,Bs,Ft,tl,si,rl,il,di,nl,al,ll,js,ol,sl,dl,ci=ne((()=>{Xt(),ti(),$e(),Ve(),Ns=64*1024,Ea="preview.pdf",Js="文件下载失败",Ds={local:"读取文件异常",load:"加载文件异常",stream:"加载 PDF 流式预览异常"},Ua=({kind:e,error:t,formatErrorMessage:r,prefixes:n,i18n:i})=>{var a;const l=e==="local"?de(i,"error.localRead"):e==="stream"?de(i,"error.stream"):de(i,"error.load");return r((a=n?.[e])!==null&&a!==void 0?a:l,t)},Ta=({message:e,i18n:t}={})=>e||de(t,"error.remoteDownload"),Ka=e=>{typeof console<"u"&&typeof console.error=="function"&&console.error(e)},ri=({onLogError:e=Ka,onErrorMessage:t,...r})=>{e?.(r.error);const n=Ua(r);return t?.(n),n},_a=({onErrorMessage:e,...t}={})=>{const r=Ta(t);return e?.(r),r},Pa=()=>{let e=0,t=null;return{get version(){return e},createVersion(){return e+=1,t?.abort(),t=null,e},isCurrent(r){return r===e},createAbortController(){return t=typeof AbortController=="function"?new AbortController:null,t},clearAbortController(r){t===r&&(t=null)},abort(){t?.abort(),t=null}}},Ca=(e=Pa())=>({requestController:e,getCurrentVersion:()=>e.version,isCurrentRequest:t=>e.isCurrent(t)}),za=e=>{if(typeof DOMException<"u"&&e instanceof DOMException&&e.name==="AbortError")return!0;if(!e||typeof e!="object")return!1;const t=e;return t.__CANCEL__===!0||t.code==="ERR_CANCELED"||t.name==="AbortError"||t.name==="CanceledError"},Ya=({file:e,url:t}={})=>!!e||!!t,Ha=(e={})=>Ya(e)?"replace":"reset",it=e=>e||null,Na=()=>({filename:"",file:null,buffer:null,sourceUrl:null,renderedReady:!1,progressiveReady:!1}),Ja=()=>({file:null,buffer:null,sourceUrl:null,progressiveReady:!1}),As=({filename:e,file:t,buffer:r,sourceUrl:n,renderedReady:i,progressiveReady:a})=>({get filename(){return e.get()},set filename(l){e.set(l)},get file(){return t.get()},set file(l){t.set(l)},get buffer(){return r.get()},set buffer(l){r.set(l)},get sourceUrl(){return n.get()},set sourceUrl(l){n.set(l)},get renderedReady(){return i.get()},set renderedReady(l){i.set(l)},get progressiveReady(){return a.get()},set progressiveReady(l){a.set(l)}}),ii=(e,t=Ja())=>(e.file=t.file,e.buffer=t.buffer,e.sourceUrl=t.sourceUrl,e.progressiveReady=t.progressiveReady,e),ni=({reason:e="replace",requestController:t,previewTarget:r,onClearRenderedContent:n,onClearError:i})=>{const a=t.createVersion();return n?.(e),ii(r),i?.(),a},Da=({reason:e="component-unmount",requestController:t,previewTarget:r,onClearRenderedContent:n,onClearError:i})=>ni({reason:e,requestController:t,previewTarget:r,onClearRenderedContent:n,onClearError:i}),Ms=({onRefreshPreview:e}={})=>e?.(),Os=({reason:e="component-unmount",onCancelPreview:t,onResetLoading:r,onStopZoomObserver:n}={})=>(t?.(e),r?.(),n?.(),{reason:e}),Aa=(e,t=Na())=>(e.filename=t.filename,e.renderedReady=t.renderedReady,ii(e,t),e),ai=({previewTarget:e,state:t,reason:r,onClearRenderedContent:n,onResetLoading:i})=>(Aa(e,t),n?.(r),i?.(),e),Ma=async({file:e,url:t,reason:r=Ha({file:e,url:t}),requestController:n,previewTarget:i,onPreviewLocalFile:a,onPreviewRemoteFile:l,onClearRenderedContent:o,onClearError:s,onResetLoading:h})=>{const f=ni({reason:r,requestController:n,previewTarget:i,onClearRenderedContent:o,onClearError:s});return e?{status:"file",version:f,reason:r,file:e,url:null,result:await a(e,f)}:t?{status:"url",version:f,reason:r,file:null,url:t,result:await l(t,f)}:{status:"reset",version:f,reason:r,file:null,url:null,result:ai({previewTarget:i,onClearRenderedContent:o,onResetLoading:h})}},Oa=({file:e,buffer:t,sourceUrl:r,fallbackFilename:n=""})=>({filename:qe({file:e,fallback:n}),file:e,buffer:t,sourceUrl:it(r)}),Ba=(e,t)=>(e.filename=t.filename,e.file=t.file,e.buffer=t.buffer,e.sourceUrl=t.sourceUrl,e),ja=(e,t)=>(e.sourceUrl=it(t),e),Qa=(e,t,r="")=>(e.filename=qe({filename:t,fallback:r}),e),Wt=(e,t)=>(typeof t.renderedReady=="boolean"&&(e.renderedReady=t.renderedReady),typeof t.progressiveReady=="boolean"&&(e.progressiveReady=t.progressiveReady),e),li=({version:e,session:t,buildState:r,readinessTarget:n,onSession:i,onActiveDocumentContext:a,onLifecycle:l,onClearLoadStarted:o})=>{i?.(t??null);const s=r();return Wt(n,s.readiness),a?.(s.lifecycleContext),l?.(s.lifecycleContext),o?.(e),s},oi=async({file:e,version:t,sourceUrl:r,source:n=r?"url":"file",fallbackFilename:i="",previewTarget:a,isCurrent:l,mountRenderedContent:o,destroyRenderSession:s,buildRenderCompleteState:h,onSession:f,onActiveDocumentContext:p,onLifecycle:v,onClearLoadStarted:m})=>{const g=await Xn(e);if(!l(t))return{stale:!0,buffer:g,session:null,complete:null};Ba(a,Oa({file:e,buffer:g,sourceUrl:r,fallbackFilename:i}));const u=await o(g,e,t,r);return l(t)?{stale:!1,buffer:g,session:u,complete:li({version:t,session:u,readinessTarget:a,buildState:()=>h({version:t,source:n,file:e,sourceUrl:r}),onSession:f,onActiveDocumentContext:p,onLifecycle:v,onClearLoadStarted:m})}:(s?.(u),{stale:!0,buffer:g,session:u,complete:null})},qa=async({url:e,version:t,filename:r,previewTarget:n,isCurrent:i,mountRenderedContent:a,destroyRenderSession:l,buildRenderCompleteState:o,loadingMessage:s,i18n:h,onStartLoading:f,onSession:p,onActiveDocumentContext:v,onLifecycle:m,onClearLoadStarted:g,onStopLoading:u,onError:y})=>{let b=null;f?.(s||qr(h).streamingPdf);try{b=dl(r),ja(n,e);const Z=await a(new ArrayBuffer(0),b,t,e,e);if(!i(t))return l?.(Z),{status:"stale",placeholderFile:b,session:Z,complete:null,error:null};const I=li({version:t,session:Z,readinessTarget:n,buildState:()=>o({version:t,source:"url",sourceUrl:e}),onSession:p,onActiveDocumentContext:v,onLifecycle:m,onClearLoadStarted:g});return{status:"ready",placeholderFile:b,session:Z,complete:I,error:null}}catch(Z){return i(t)?(y?.(Z),{status:"error",placeholderFile:b,session:null,complete:null,error:Z}):{status:"stale",placeholderFile:b,session:null,complete:null,error:null}}finally{Ft({version:t,isCurrent:i,onClearLoadStarted:g,onStopLoading:u})}},$a=async({source:e,version:t,currentFilename:r,fallbackFilename:n,previewTarget:i,isCurrent:a,mountRenderedContent:l,destroyRenderSession:o,buildLoadStartState:s,buildRenderCompleteState:h,onMarkLoadStarted:f,onStartLoading:p,onSession:v,onActiveDocumentContext:m,onLifecycle:g,onClearLoadStarted:u,onStopLoading:y,onError:b})=>{const Z=di({source:e,currentFilename:r,fallbackFilename:n}),{file:I}=Z;si({version:t,filename:Z.filename,filenameTarget:i,buildState:()=>s({version:t,source:"file",file:I}),onMarkLoadStarted:f,onLifecycle:g,onStartLoading:p});try{const w=await oi({file:I,version:t,source:"file",previewTarget:i,isCurrent:a,mountRenderedContent:l,destroyRenderSession:o,buildRenderCompleteState:G=>h({version:G.version,source:"file",file:I}),onSession:v,onActiveDocumentContext:m,onLifecycle:g,onClearLoadStarted:u});return w.stale?{status:"stale",source:Z,read:w,error:null}:{status:"ready",source:Z,read:w,error:null}}catch(w){return a(t)?(b?.(w),{status:"error",source:Z,read:null,error:w}):{status:"stale",source:Z,read:null,error:null}}finally{Ft({version:t,isCurrent:a,onClearLoadStarted:u,onStopLoading:y})}},el=async({url:e,version:t,pageHref:r,streaming:n,previewTarget:i,requestController:a,isCurrent:l,downloadFile:o,mountRenderedContent:s,destroyRenderSession:h,buildLoadStartState:f,buildRenderCompleteState:p,i18n:v,onMarkLoadStarted:m,onStartLoading:g,onSetLoadingMessage:u,onSession:y,onActiveDocumentContext:b,onLifecycle:Z,onClearLoadStarted:I,onStopLoading:w,onMissingData:G,onError:K})=>{const F=ol({pageHref:r,streaming:n,url:e});if(si({version:t,filename:F.filename,filenameTarget:i,buildState:()=>f({version:t,source:"url",sourceUrl:e}),onMarkLoadStarted:m,onLifecycle:Z,onStartLoading:g}),F.streamPdf){const R=await qa({url:e,version:t,filename:F.filename,previewTarget:i,isCurrent:l,mountRenderedContent:s,destroyRenderSession:h,buildRenderCompleteState:X=>p({version:X.version,source:"url",sourceUrl:e}),i18n:v,onStartLoading:g,onSession:y,onActiveDocumentContext:b,onLifecycle:Z,onClearLoadStarted:I,onStopLoading:w,onError:X=>K?.(X,"stream")});return R.status==="ready"?{status:"stream",remoteSource:F,download:null,read:null,stream:R,error:null}:R.status==="error"?{status:"error",remoteSource:F,download:null,read:null,stream:R,error:R.error}:{status:"stale",remoteSource:F,download:null,read:null,stream:R,error:null}}const J=a.createAbortController();try{const R=sl({version:t,data:await o({url:e,signal:J?.signal}),currentFilename:F.filename,isCurrent:l,i18n:v,onMissingData:G,onSetLoadingMessage:u});if(R.stale)return{status:"stale",remoteSource:F,download:R,read:null,stream:null,error:null};if(R.missing)return{status:"missing",remoteSource:F,download:R,read:null,stream:null,error:null};const X=await oi({file:R.source.file,version:t,source:"url",sourceUrl:e,previewTarget:i,isCurrent:l,mountRenderedContent:s,destroyRenderSession:h,buildRenderCompleteState:P=>p({version:P.version,source:"url",file:P.file,sourceUrl:e}),onSession:y,onActiveDocumentContext:b,onLifecycle:Z,onClearLoadStarted:I});return X.stale?{status:"stale",remoteSource:F,download:R,read:X,stream:null,error:null}:{status:"ready",remoteSource:F,download:R,read:X,stream:null,error:null}}catch(R){return!l(t)||za(R)?{status:"stale",remoteSource:F,download:null,read:null,stream:null,error:null}:(K?.(R,"load"),{status:"error",remoteSource:F,download:null,read:null,stream:null,error:R})}finally{a.clearAbortController(J),Ft({version:t,isCurrent:l,onClearLoadStarted:I,onStopLoading:w})}},Bs=({getFile:e,getUrl:t,getCurrentFilename:r,getPdfStreaming:n,getI18n:i,getPageHref:a,previewTarget:l,requestController:o,downloadFile:s,mountRenderedContent:h,destroyRenderSession:f,buildLoadStartState:p,buildRenderCompleteState:v,formatErrorMessage:m,onMarkLoadStarted:g,onClearLoadStarted:u,onStartLoading:y,onSetLoadingMessage:b,onStopLoading:Z,onShowError:I,onClearError:w,onResetLoading:G,onClearRenderedContent:K,onSession:F,onActiveDocumentContext:J,onLifecycle:R})=>{const X=Q=>o.isCurrent(Q),P=async(Q,Y)=>{var q;return await $a({source:Q,version:Y,currentFilename:(q=r?.())!==null&&q!==void 0?q:l.filename,previewTarget:l,isCurrent:X,mountRenderedContent:h,destroyRenderSession:f,buildLoadStartState:C=>p({version:C.version,source:"file",file:C.file}),buildRenderCompleteState:C=>v({version:C.version,source:"file",file:C.file}),onMarkLoadStarted:g,onStartLoading:y,onSession:F,onActiveDocumentContext:J,onLifecycle:R,onClearLoadStarted:u,onStopLoading:Z,onError:C=>{ri({kind:"local",error:C,formatErrorMessage:m,i18n:i?.(),onErrorMessage:I})}})},V=async(Q,Y)=>await el({url:Q,version:Y,pageHref:a?.(),streaming:n?.(),i18n:i?.(),previewTarget:l,requestController:o,isCurrent:X,downloadFile:s,mountRenderedContent:h,destroyRenderSession:f,buildLoadStartState:q=>p({version:q.version,source:"url",sourceUrl:q.sourceUrl}),buildRenderCompleteState:q=>v({version:q.version,source:"url",file:q.file,sourceUrl:q.sourceUrl}),onMarkLoadStarted:g,onStartLoading:y,onSetLoadingMessage:b,onSession:F,onActiveDocumentContext:J,onLifecycle:R,onClearLoadStarted:u,onStopLoading:Z,onMissingData:()=>{_a({i18n:i?.(),onErrorMessage:I})},onError:(q,C)=>{ri({kind:C,error:q,formatErrorMessage:m,i18n:i?.(),onErrorMessage:I})}});return{isCurrentRequest:X,previewLocalFile:P,previewRemoteFile:V,resetViewer:Q=>ai({previewTarget:l,reason:Q,onClearRenderedContent:K,onResetLoading:G}),refreshPreview:async()=>await Ma({file:e(),url:t(),requestController:o,previewTarget:l,onPreviewLocalFile:P,onPreviewRemoteFile:V,onClearRenderedContent:K,onClearError:w,onResetLoading:G}),cancelPreview:(Q="component-unmount")=>Da({reason:Q,requestController:o,previewTarget:l,onClearRenderedContent:K,onClearError:w})}},Ft=({version:e,isCurrent:t,onClearLoadStarted:r,onStopLoading:n})=>{r?.(e),t(e)&&n?.()},tl=(e,t)=>{const r=qr(t);return e==="url"?r.downloading:r.reading},si=({version:e,filename:t,fallbackFilename:r,filenameTarget:n,buildState:i,onMarkLoadStarted:a,onLifecycle:l,onStartLoading:o})=>{n&&Qa(n,t,r),a?.(e);const s=i();return l?.(s.lifecycleContext),o?.(s.loadingMessage),s},rl=({version:e,source:t,filename:r,file:n,sourceUrl:i,bufferSize:a,loadingMessage:l,i18n:o,timestamp:s})=>({loadingMessage:l||tl(t,o),lifecycleContext:rt({phase:"load-start",version:e,source:t,file:n,filename:r,url:it(i)||void 0,bufferSize:a,timestamp:s})}),il=({version:e,source:t,filename:r,file:n,sourceUrl:i,bufferSize:a,startedAt:l,timestamp:o,lifecycleState:s})=>({readiness:{renderedReady:!0,progressiveReady:!1},lifecycleContext:rt({phase:"load-complete",version:e,source:t,file:n,filename:r,url:it(i)||void 0,bufferSize:a,startedAt:l??s?.getLoadStartedAt(e),timestamp:o})}),di=({source:e,currentFilename:t,fallbackFilename:r=Ee})=>{const n=Xr(e,t||r);return{file:n,filename:qe({file:n,fallback:r})}},nl=e=>e===!0||e===!1||e==="same-origin"?e:"same-origin",al=(e,t)=>{try{const r=new URL(e,t),n=new URL(t);return r.origin===n.origin}catch{return!1}},ll=({extension:e,pageHref:t,streaming:r,url:n})=>{if(e.toLowerCase()!=="pdf")return!1;const i=nl(r);return i===!1?!1:i===!0?!0:al(n,t)},js=e=>e?.href||void 0,ol=({filename:e,fallbackFilename:t=Ee,pageHref:r,streaming:n,url:i})=>{const a=Ge(e||i,t),l=ze(a);return{url:i,filename:a,extension:l,streamPdf:r?ll({extension:l,pageHref:r,streaming:n,url:i}):!1}},sl=({version:e,data:t,currentFilename:r,fallbackFilename:n,isCurrent:i,i18n:a,onMissingData:l,onSetLoadingMessage:o})=>i(e)?t?(o?.(qr(a).reading),{stale:!1,missing:!1,source:di({source:t,currentFilename:r,fallbackFilename:n})}):(l?.(),{stale:!1,missing:!0,source:null}):{stale:!0,missing:!1,source:null},dl=e=>{if(typeof Blob>"u")throw new Error("Blob is not available in the current execution environment.");return Xr(new Blob([],{type:"application/pdf"}),Ge(e,Ea))}})),cl,Qs,qs,ul,ml,kt,hl,$s,ed,Le,pl,Et,bl,fl,yl,Ut,vl,gl,wl,Zl,td,Sl,rd,ui,Vl,xl=ne((()=>{_e(),In(),An(),Hr(),Ve(),ci(),cl="预览内容卸载失败",Qs="file-render",qs=e=>!!e&&(typeof e=="object"||typeof e=="function")&&typeof e.then=="function",ul=e=>{if(e)for(;e.firstChild;)e.removeChild(e.firstChild)},ml=(e,t={})=>{const r=e.ownerDocument.createElement("div");return r.className=t.className||"file-render",e.appendChild(r),r},kt=(e,t)=>t.parentNode!==e?!1:(e.removeChild(t),!0),hl=()=>({session:null,exportAdapter:null}),$s=({renderedReady:e,progressiveReady:t})=>({get renderedReady(){return e.get()},set renderedReady(r){e.set(r)},get progressiveReady(){return t.get()},set progressiveReady(r){t.set(r)}}),ed=({session:e,exportAdapter:t})=>({get session(){return e.get()},set session(r){e.set(r)},get exportAdapter(){return t.get()},set exportAdapter(r){t.set(r)}}),Le=(e,t)=>{var r,n;return"session"in t&&(e.session=(r=t.session)!==null&&r!==void 0?r:null),"exportAdapter"in t&&(e.exportAdapter=(n=t.exportAdapter)!==null&&n!==void 0?n:null),e},pl=(e,t)=>({rendered:e,destroy:()=>t?t():Et(e)}),Et=e=>{if(!e||typeof e!="object")return;const t=e;if(typeof t.unmount=="function")return t.unmount();if(typeof t.$destroy=="function")return t.$destroy();if(typeof t.destroy=="function")return t.destroy()},bl=({message:e=cl}={})=>e,fl=(e,t)=>{typeof console<"u"&&typeof console.warn=="function"&&console.warn(e,t)},yl=({error:e,onLogError:t=fl,...r})=>{const n=bl(r);return t?.(n,e),n},Ut=(e,t={})=>{if(!e?.destroy)return;const r=n=>{var i;(i=t.onError)===null||i===void 0||i.call(t,n)};try{const n=e.destroy();qs(n)&&Promise.resolve(n).catch(r)}catch(n){r(n)}},vl=(e,t={})=>{const r=e.session;try{Ut(r,t)}finally{e.session=null}return r},gl=({surfaceState:e,readinessState:t,container:r,disposeOptions:n})=>{const i=vl(e,n);return Le(e,{exportAdapter:null}),Wt(t,{renderedReady:!1,progressiveReady:!1}),ul(r),i},wl=({reason:e="replace",surfaceState:t,readinessState:r,container:n,disposeOptions:i,onUnloadStart:a,onUnloadComplete:l,onClearActiveDocumentContext:o,onClearDocumentState:s,onStopZoomObserver:h,onClearZoomProvider:f})=>{const p=a?.(e);let v;try{v=gl({surfaceState:t,readinessState:r,container:n,disposeOptions:i})}finally{o?.(),s?.(),h?.(),f?.()}return l?.(p,e),{reason:e,unloadContext:p,session:v}},Zl=async({buffer:e,file:t,version:r,sourceUrl:n,streamUrl:i,getContainer:a,surfaceState:l,readinessState:o,isCurrent:s,clearRenderedContent:h,render:f,waitForContainer:p,waitForPaint:v=Ir,disposeSession:m=Ut,onStartZoomObserver:g,onRefreshDocumentIndex:u,onRefreshZoomProvider:y})=>{a()||await p?.();const b=a();if(!b||!s(r))return;h("replace");const Z=ml(b);if(g?.(),await p?.(),await v(),!s(r)){kt(b,Z);return}const I=G=>{Le(l,{exportAdapter:G})},w=()=>{s(r)&&Wt(o,{progressiveReady:!0})};try{const G=await f({buffer:e,file:t,version:r,type:ze(t.name),target:Z,filename:t.name,sourceUrl:n,streamUrl:i,onProgressiveRender:w,registerExportAdapter:I,surfaceState:l,readinessState:o});if(!s(r)){m(G),kt(b,Z);return}return u?.(),y?.(),G}catch(G){throw kt(b,Z),G}},td=({getContainer:e,surfaceState:t,readinessState:r,isCurrent:n,render:i,waitForContainer:a,waitForPaint:l,disposeOptions:o,onUnloadStart:s,onUnloadComplete:h,onClearActiveDocumentContext:f,onClearDocumentState:p,onStartZoomObserver:v,onStopZoomObserver:m,onClearZoomProvider:g,onRefreshDocumentIndex:u,onRefreshZoomProvider:y})=>{const Z={...o,onError:F=>{if(o?.onError){o.onError(F);return}yl({error:F})}},I=F=>{Ut(F,Z)},w=F=>Le(t,{session:F}),G=(F="replace")=>wl({reason:F,surfaceState:t,readinessState:r,container:e(),disposeOptions:Z,onUnloadStart:s,onUnloadComplete:h,onClearActiveDocumentContext:f,onClearDocumentState:p,onStopZoomObserver:m,onClearZoomProvider:g});return{destroyRenderSession:I,setActiveRenderSession:w,clearRenderedContent:G,mountRenderedContent:async(F,J,R,X,P)=>await Zl({buffer:F,file:J,version:R,sourceUrl:X,streamUrl:P,getContainer:e,surfaceState:t,readinessState:r,isCurrent:n,clearRenderedContent:G,render:i,waitForContainer:a,waitForPaint:l,disposeSession:I,onStartZoomObserver:v,onRefreshDocumentIndex:u,onRefreshZoomProvider:y})}},Sl=({source:e,options:t,registerExportAdapter:r,renderContext:n})=>({filename:e.filename,url:e.url,streamUrl:e.url,options:t,registerExportAdapter:r,...n}),rd=async({dispatcher:e,buffer:t,target:r,type:n="",context:i,throwOnMissingHandler:a=!1})=>{const l=ye(n),o=e.resolve(l);if(!o){if(a)throw new Error(`No file viewer renderer is registered for "${l}".`);return}return o(t,r,l,i)},ui=({handler:e,getTarget:t=i=>i.surface.container,createContext:r=Sl,destroy:n})=>async i=>{const{source:a}=i;if(!a.buffer)throw new Error("FileRenderHandler renderer requires an ArrayBuffer source.");const l=t(i),o=await e(a.buffer,l,a.extension,r(i));return pl(o,()=>n?n(o,i):Et(o))},Vl=({definitions:e=Re,handlers:t,getTarget:r,createContext:n,destroy:i})=>{const a=tt(e),l=Nr({registry:a,handlers:t});return{registry:tt(a.list().map(o=>{const s=l.handlersByRendererId.get(o.id);return s?{...o,load:ui({handler:s,getTarget:r,createContext:n,destroy:i})}:o})),dispatcher:l,missingRendererIds:l.missingRendererIds}}})),id=Bt({default:()=>Gu});async function Gu(e,t,r){const n=await dd(e,r);let i=1,a=0;const l=pn(),o=document.createElement("div");o.className="image-viewer",o.dataset.viewerZoomProvider="image";const s=document.createElement("div");s.className="image-stage";const h=document.createElement("img");h.alt="图片",h.src=n,s.append(h),o.append(s);const f=ud(n),p=()=>f.open();h.addEventListener("click",p),document.body.append(f.element);const v=()=>{a=o.clientHeight||0,Il(h,a,i),l.emit()},m=new ResizeObserver(v);m.observe(o);const g=()=>({scale:i,label:`${Math.round(i*100)}%`,canZoomIn:i<5,canZoomOut:i>.1,canReset:i!==1,minScale:.1,maxScale:5}),u=y=>(i=cd(y),Il(h,a,i),l.emit(),g());return Oi(o,{zoomIn:()=>u(i+.15),zoomOut:()=>u(i-.15),resetZoom:()=>u(1),setZoom:u,getState:g,subscribe:l.subscribe}),t.replaceChildren(ld(),o),v(),{$el:t,unmount(){Bi(o),m.disconnect(),h.removeEventListener("click",p),f.destroy(),t.replaceChildren()}}}var nd,ad,ld,od,sd,dd,cd,Il,ud,md=ne((()=>{ft(),fn(),nd={avif:"image/avif",bmp:"image/bmp",gif:"image/gif",heic:"image/heic",heif:"image/heif",ico:"image/x-icon",jxl:"image/jxl",jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",svg:"image/svg+xml",tif:"image/tiff",tiff:"image/tiff",webp:"image/webp"},ad=`
|
|
310
|
+
.image-viewer{position:relative;width:100%;height:100%;overflow:auto;background:#eef1f4;box-sizing:border-box}
|
|
311
|
+
.image-stage{min-width:100%;min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px;box-sizing:border-box}
|
|
312
|
+
.image-stage img{display:block;width:auto;max-width:none;margin:0 auto;border:0;box-shadow:0 18px 48px rgba(15,23,42,.16);background:#fff;cursor:zoom-in}
|
|
313
|
+
.image-lightbox{position:fixed;inset:0;z-index:2147483000;display:flex;align-items:center;justify-content:center;padding:40px;background:rgba(15,23,42,.88);box-sizing:border-box}
|
|
314
|
+
.image-lightbox[hidden]{display:none}
|
|
315
|
+
.image-lightbox img{display:block;max-width:100%;max-height:100%;object-fit:contain;background:#fff;box-shadow:0 30px 80px rgba(0,0,0,.4);cursor:zoom-out}
|
|
316
|
+
.image-lightbox button{position:absolute;top:20px;right:20px;width:40px;height:40px;border:0;border-radius:999px;background:rgba(255,255,255,.92);color:#172033;font-size:24px;line-height:40px;cursor:pointer;box-shadow:0 12px 28px rgba(0,0,0,.18)}
|
|
317
|
+
.file-viewer[data-viewer-theme='dark'] .image-viewer{background:#101820}
|
|
318
|
+
@media (prefers-color-scheme:dark){.file-viewer[data-viewer-theme='system'] .image-viewer{background:#101820}}
|
|
319
|
+
@media (max-width:767px){.image-stage{padding:12px}.image-lightbox{padding:16px}.image-lightbox button{top:12px;right:12px}}
|
|
320
|
+
`,ld=()=>{const e=document.createElement("style");return e.textContent=ad,e},od=e=>nd[(e||"").trim().toLowerCase()]||"image/*",sd=async e=>await new Promise((t,r)=>{const n=new FileReader;n.onload=i=>{var a;const l=(a=i.target)===null||a===void 0?void 0:a.result;if(typeof l=="string"){t(l);return}r(new Error("Unable to read image data URL."))},n.onerror=()=>r(n.error||new Error("Unable to read image data URL.")),n.readAsDataURL(e)}),dd=async(e,t)=>{const r=(t||"").trim().toLowerCase();if(r==="heic"||r==="heif")throw new Error("HEIC/HEIF image conversion has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-image, or use @file-viewer/preset-all.");return sd(new Blob([e],{type:od(r)}))},cd=e=>Math.min(5,Math.max(.1,Number(e.toFixed(2)))),Il=(e,t,r)=>{if(t>0){e.style.height=`${Math.max(1,Math.round(t*r))}px`;return}e.style.height=`${r*100}%`},ud=e=>{const t=document.createElement("div");t.className="image-lightbox",t.hidden=!0,t.setAttribute("role","dialog"),t.setAttribute("aria-modal","true");const r=document.createElement("img");r.alt="Preview image",r.src=e;const n=document.createElement("button");n.type="button",n.setAttribute("aria-label","Close image preview"),n.textContent="x";const i=()=>{t.hidden=!0};return n.addEventListener("click",i),r.addEventListener("click",i),t.addEventListener("click",a=>{a.target===t&&i()}),t.append(r,n),{element:t,open(){t.hidden=!1},destroy(){n.removeEventListener("click",i),r.removeEventListener("click",i),t.remove()}}}})),hd,Tt,mi,Rl,Gl,pd,bd,fd,hi,Kt,yd,vd,gd,wd=ne((()=>{_e(),xl(),An(),ti(),hd=e=>({$el:e,unmount(){}}),Tt=[{rendererId:"image",handler:async(e,t,r)=>{const{default:n}=await Promise.resolve().then(()=>(md(),id));return n(e,t,r)}}],mi=["image"],Rl=Tt.filter(e=>mi.includes(e.rendererId)),Gl=Re.filter(e=>mi.includes(e.id)),pd=e=>e==="none"?[]:e==="lite"?Gl:Re,bd=e=>e==="none"?[]:e==="lite"?Rl:Tt,fd=async(e,t,r)=>{const n=$r(r),i=document.createElement("div");i.style.textAlign="center",i.style.marginTop="80px";const a=document.createElement("div");if(a.textContent=n.message,i.appendChild(a),n.description){const l=document.createElement("div");l.textContent=n.description,i.appendChild(l)}return t.replaceChildren(i),hd(t)},hi=(e={})=>{const t=e.builtinRenderers||"all",r=Vl({definitions:pd(t),handlers:bd(t)});return{...r,dispatcher:Nr({registry:r.registry,handlers:Tt,fallbackHandler:fd})}},Kt=hi(),yd=Kt.registry,vd=Kt.dispatcher,gd=Kt.missingRendererIds})),Ll,Xl,Zd,Sd,pi,bi,Wl,xe,fi,Fl,Xe,kl,Vd,xd,Lu=ne((()=>{$e(),Ll={accent:"#5f6f82",soft:"rgba(95, 111, 130, 0.12)",badge:"DOC",label:"文件内容",hint:"正在整理内容结构并生成预览。"},Xl={doc:{accent:"#2b78f6",soft:"rgba(43, 120, 246, 0.12)",badge:"W",label:"Word 文档",hint:"正在准备分页、文本样式和文档结构。"},docx:{accent:"#2b78f6",soft:"rgba(43, 120, 246, 0.12)",badge:"W",label:"Word 文档",hint:"正在通过 Worker 准备文档结构、文本样式和分页结果。"},xls:{accent:"#21a366",soft:"rgba(33, 163, 102, 0.12)",badge:"X",label:"Excel 表格",hint:"正在准备工作表、样式和可视区数据。"},xlsx:{accent:"#21a366",soft:"rgba(33, 163, 102, 0.12)",badge:"X",label:"Excel 表格",hint:"正在准备工作表、样式和可视区数据。"},csv:{accent:"#21a366",soft:"rgba(33, 163, 102, 0.12)",badge:"X",label:"表格数据",hint:"正在准备行列数据和基础样式。"},ppt:{accent:"#f28b27",soft:"rgba(242, 139, 39, 0.12)",badge:"P",label:"PPT 演示文稿",hint:"正在构建幻灯片布局和媒体内容。"},pptx:{accent:"#f28b27",soft:"rgba(242, 139, 39, 0.12)",badge:"P",label:"PPT 演示文稿",hint:"正在构建幻灯片布局和媒体内容。"},pdf:{accent:"#e5534b",soft:"rgba(229, 83, 75, 0.12)",badge:"PDF",label:"PDF 文档",hint:"正在载入页面位图、文本层和缩放视图。"},ofd:{accent:"#c2410c",soft:"rgba(194, 65, 12, 0.12)",badge:"OFD",label:"OFD 版式文件",hint:"正在解析国产版式文档和页面对象。"},zip:{accent:"#a15c07",soft:"rgba(161, 92, 7, 0.12)",badge:"ZIP",label:"压缩包",hint:"正在启动 Worker 并读取压缩包目录。"},rar:{accent:"#a15c07",soft:"rgba(161, 92, 7, 0.12)",badge:"RAR",label:"压缩包",hint:"正在启动 Worker 并读取压缩包目录。"},"7z":{accent:"#a15c07",soft:"rgba(161, 92, 7, 0.12)",badge:"7Z",label:"压缩包",hint:"正在启动 Worker 并读取压缩包目录。"},tar:{accent:"#a15c07",soft:"rgba(161, 92, 7, 0.12)",badge:"TAR",label:"压缩包",hint:"正在启动 Worker 并读取压缩包目录。"},gz:{accent:"#a15c07",soft:"rgba(161, 92, 7, 0.12)",badge:"GZ",label:"压缩包",hint:"正在启动 Worker 并读取压缩包目录。"},eml:{accent:"#2563eb",soft:"rgba(37, 99, 235, 0.12)",badge:"EML",label:"邮件文件",hint:"正在解析邮件头、正文和附件。"},msg:{accent:"#2563eb",soft:"rgba(37, 99, 235, 0.12)",badge:"MSG",label:"邮件文件",hint:"正在解析 Outlook 邮件和附件。"},olb:{accent:"#0d7884",soft:"rgba(13, 120, 132, 0.12)",badge:"OLB",label:"EDA 文件",hint:"正在读取 EDA 容器结构和可读属性。"},dra:{accent:"#0d7884",soft:"rgba(13, 120, 132, 0.12)",badge:"DRA",label:"EDA 文件",hint:"正在读取 EDA 容器结构和可读属性。"},dxf:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"CAD",label:"CAD 图纸",hint:"正在准备 CAD 图层、几何对象和画布视图。"},dwg:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"CAD",label:"CAD 图纸",hint:"正在通过 Worker 加载 DWG 几何和 LibreDWG WASM。"},dwf:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"DWF",label:"CAD 图纸",hint:"正在加载 DWF native renderer 与 W2D/W3D 图形。"},dwfx:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"DWFx",label:"CAD 图纸",hint:"正在加载 DWFx/XPS native renderer 与页面图形。"},xps:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"XPS",label:"CAD 图纸",hint:"正在加载 XPS native renderer 与嵌入字体。"},drawio:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"DIO",label:"draw.io 图纸",hint:"正在解析图元、连线和 SVG 预览。"},dio:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"DIO",label:"draw.io 图纸",hint:"正在解析图元、连线和 SVG 预览。"},excalidraw:{accent:"#6d28d9",soft:"rgba(109, 40, 217, 0.12)",badge:"EX",label:"Excalidraw 图纸",hint:"正在解析手绘图元并生成安全 SVG。"},epub:{accent:"#7c3aed",soft:"rgba(124, 58, 237, 0.12)",badge:"EPUB",label:"EPUB 电子书",hint:"正在解析目录、章节资源和阅读分页。"},umd:{accent:"#0284c7",soft:"rgba(2, 132, 199, 0.12)",badge:"UMD",label:"UMD 电子书",hint:"正在解析移动电子书结构、目录和压缩正文。"},png:{accent:"#7c5cff",soft:"rgba(124, 92, 255, 0.12)",badge:"IMG",label:"图片文件",hint:"正在解码像素数据并生成预览。"},jpg:{accent:"#7c5cff",soft:"rgba(124, 92, 255, 0.12)",badge:"IMG",label:"图片文件",hint:"正在解码像素数据并生成预览。"},jpeg:{accent:"#7c5cff",soft:"rgba(124, 92, 255, 0.12)",badge:"IMG",label:"图片文件",hint:"正在解码像素数据并生成预览。"},gif:{accent:"#7c5cff",soft:"rgba(124, 92, 255, 0.12)",badge:"IMG",label:"图片文件",hint:"正在解码像素数据并生成预览。"},webp:{accent:"#7c5cff",soft:"rgba(124, 92, 255, 0.12)",badge:"IMG",label:"图片文件",hint:"正在解码像素数据并生成预览。"},svg:{accent:"#7c5cff",soft:"rgba(124, 92, 255, 0.12)",badge:"IMG",label:"图片文件",hint:"正在解码像素数据并生成预览。"},bmp:{accent:"#7c5cff",soft:"rgba(124, 92, 255, 0.12)",badge:"IMG",label:"图片文件",hint:"正在解码像素数据并生成预览。"},mp4:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"VID",label:"视频文件",hint:"正在准备媒体资源和播放组件。"},mp3:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"AUD",label:"音频文件",hint:"正在准备音频资源和播放控件。"},mpeg:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"AUD",label:"音频文件",hint:"正在准备音频资源和播放控件。"},wav:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"AUD",label:"音频文件",hint:"正在准备音频资源和播放控件。"},ogg:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"AUD",label:"音频文件",hint:"正在准备音频资源和播放控件。"},oga:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"AUD",label:"音频文件",hint:"正在准备音频资源和播放控件。"},opus:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"AUD",label:"音频文件",hint:"正在准备音频资源和播放控件。"},m4a:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"AUD",label:"音频文件",hint:"正在准备音频资源和播放控件。"},aac:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"AUD",label:"音频文件",hint:"正在准备音频资源和播放控件。"},flac:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"AUD",label:"音频文件",hint:"正在准备音频资源和播放控件。"},weba:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"AUD",label:"音频文件",hint:"正在准备音频资源和播放控件。"},mov:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"VID",label:"视频文件",hint:"正在准备媒体资源和播放组件。"},avi:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"VID",label:"视频文件",hint:"正在准备媒体资源和播放组件。"},webm:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"VID",label:"视频文件",hint:"正在准备媒体资源和播放组件。"},m4v:{accent:"#0f766e",soft:"rgba(15, 118, 110, 0.12)",badge:"VID",label:"视频文件",hint:"正在准备媒体资源和播放组件。"}},Zd={doc:{label:"loading.word.label",hint:"loading.word.hint"},docx:{label:"loading.word.label",hint:"loading.wordWorker.hint"},xls:{label:"loading.sheet.label",hint:"loading.sheet.hint"},xlsx:{label:"loading.sheet.label",hint:"loading.sheet.hint"},csv:{label:"loading.csv.label",hint:"loading.csv.hint"},ppt:{label:"loading.presentation.label",hint:"loading.presentation.hint"},pptx:{label:"loading.presentation.label",hint:"loading.presentation.hint"},pdf:{label:"loading.pdf.label",hint:"loading.pdf.hint"},ofd:{label:"loading.ofd.label",hint:"loading.ofd.hint"},zip:{label:"loading.archive.label",hint:"loading.archive.hint"},rar:{label:"loading.archive.label",hint:"loading.archive.hint"},"7z":{label:"loading.archive.label",hint:"loading.archive.hint"},tar:{label:"loading.archive.label",hint:"loading.archive.hint"},gz:{label:"loading.archive.label",hint:"loading.archive.hint"},eml:{label:"loading.email.label",hint:"loading.email.hint"},msg:{label:"loading.email.label",hint:"loading.msg.hint"},olb:{label:"loading.eda.label",hint:"loading.eda.hint"},dra:{label:"loading.eda.label",hint:"loading.eda.hint"},dxf:{label:"loading.cad.label",hint:"loading.cad.hint"},dwg:{label:"loading.cad.label",hint:"loading.dwg.hint"},dwf:{label:"loading.cad.label",hint:"loading.dwf.hint"},dwfx:{label:"loading.cad.label",hint:"loading.dwfx.hint"},xps:{label:"loading.cad.label",hint:"loading.xps.hint"},drawio:{label:"loading.drawio.label",hint:"loading.drawio.hint"},dio:{label:"loading.drawio.label",hint:"loading.drawio.hint"},excalidraw:{label:"loading.excalidraw.label",hint:"loading.excalidraw.hint"},epub:{label:"loading.epub.label",hint:"loading.epub.hint"},umd:{label:"loading.umd.label",hint:"loading.umd.hint"},png:{label:"loading.image.label",hint:"loading.image.hint"},jpg:{label:"loading.image.label",hint:"loading.image.hint"},jpeg:{label:"loading.image.label",hint:"loading.image.hint"},gif:{label:"loading.image.label",hint:"loading.image.hint"},webp:{label:"loading.image.label",hint:"loading.image.hint"},svg:{label:"loading.image.label",hint:"loading.image.hint"},bmp:{label:"loading.image.label",hint:"loading.image.hint"},mp4:{label:"loading.video.label",hint:"loading.video.hint"},mov:{label:"loading.video.label",hint:"loading.video.hint"},avi:{label:"loading.video.label",hint:"loading.video.hint"},webm:{label:"loading.video.label",hint:"loading.video.hint"},m4v:{label:"loading.video.label",hint:"loading.video.hint"},mp3:{label:"loading.audio.label",hint:"loading.audio.hint"},mpeg:{label:"loading.audio.label",hint:"loading.audio.hint"},wav:{label:"loading.audio.label",hint:"loading.audio.hint"},ogg:{label:"loading.audio.label",hint:"loading.audio.hint"},oga:{label:"loading.audio.label",hint:"loading.audio.hint"},opus:{label:"loading.audio.label",hint:"loading.audio.hint"},m4a:{label:"loading.audio.label",hint:"loading.audio.hint"},aac:{label:"loading.audio.label",hint:"loading.audio.hint"},flac:{label:"loading.audio.label",hint:"loading.audio.hint"},weba:{label:"loading.audio.label",hint:"loading.audio.hint"}},Sd=(e,t="",r)=>{const n=Zd[t.trim().toLowerCase()]||{label:"loading.generic.label",hint:"loading.generic.hint"};return{...e,label:de(r,n.label),hint:de(r,n.hint)}},pi=(e="",t)=>{const r=e.trim().toLowerCase();return Sd(Xl[r]||Ll,r,t)},bi=e=>({"--viewer-accent":e.accent,"--viewer-soft":e.soft}),Wl=(e="",t)=>{const r=pi(e,t);return{loading:!1,error:"",message:"",theme:r,styleVars:bi(r)}},xe=e=>({loading:e.loading,error:e.error,message:e.message,theme:{...e.theme},styleVars:{...e.styleVars}}),fi=(e,t)=>(e.loading=t.loading,e.error=t.error,e.message=t.message,e.theme={...t.theme},e.styleVars={...t.styleVars},e),Fl=(e,t,r=t.getState())=>fi(e,r),Xe=(e,t)=>fi(e,t()),kl=({target:e,controller:t,extension:r})=>Xe(e,()=>t.setExtension(r)),Vd=(e,t)=>({setExtension(r){return kl({target:e,controller:t,extension:r})},setI18n(r){return Xe(e,()=>t.setI18n(r))},startLoading(r){return Xe(e,()=>t.startLoading(r))},setLoadingMessage(r){return Xe(e,()=>t.setLoadingMessage(r))},stopLoading(){return Xe(e,()=>t.stopLoading())},showError(r){return Xe(e,()=>t.showError(r))},clearError(){return Xe(e,()=>t.clearError())},resetLoading(){return Xe(e,()=>t.resetLoading())},syncLoadingState(){return Fl(e,t)}}),xd=(e="",t)=>{let r=e,n=t;const i=Wl(e,t),a=l=>{r=l,i.theme=pi(l,n),i.styleVars=bi(i.theme)};return{state:i,setExtension(l=""){return a(l),xe(i)},setI18n(l){return n=l,a(r),xe(i)},startLoading(l){return i.loading=!0,i.message=l,i.error="",xe(i)},setLoadingMessage(l){return i.message=l,xe(i)},stopLoading(){return i.loading=!1,i.message="",xe(i)},showError(l){return i.loading=!1,i.message="",i.error=l,xe(i)},clearError(){return i.error="",xe(i)},resetLoading(){return i.loading=!1,i.message="",i.error="",xe(i)},getState(){return xe(i)}}}})),Id,Xu=ne((()=>{Xt(),ci(),Id=({getOptions:e,getFilename:t,getBufferSize:r,getCurrentFile:n,getCurrentVersion:i,getFallbackFile:a,getFallbackUrl:l,emitLifecycle:o,emitOperationBefore:s,emitOperationCancel:h,formatErrorMessage:f,handleLifecycleError:p,handleOperationError:v,onOperationErrorMessage:m})=>{const g=la(),u=va({lifecycleState:g,getOptions:e,onLifecycleChange:(b,Z)=>{sa(o,Z)},onLifecycleError:p,onOperationBefore:s,onOperationCancel:h,onOperationError:(b,Z)=>{v?.(b,Z),m?.(da({error:b,formatErrorMessage:f,i18n:e()}),Z)}}),y=b=>oa({operation:b,lifecycleState:g,version:i(),filename:t(),bufferSize:r(),currentFile:n(),fallbackFile:a(),fallbackUrl:l(),i18n:e()});return{markLoadStarted:g.markLoadStarted,clearLoadStarted:g.clearLoadStarted,notifyLifecycle:u.notifyLifecycle,notifyActiveUnloadStart:u.notifyActiveUnloadStart,notifyActiveUnloadComplete:u.notifyActiveUnloadComplete,setActiveDocumentContext:g.setActiveDocumentContext,clearActiveDocumentContext:g.clearActiveDocumentContext,buildOperationContext:y,buildLoadStartState({version:b,source:Z,file:I,sourceUrl:w}){return rl({version:b,source:Z,file:I,sourceUrl:w,filename:t(),bufferSize:r(),i18n:e()})},buildRenderCompleteState({version:b,source:Z,file:I,sourceUrl:w}){return il({version:b,source:Z,file:I,sourceUrl:w,filename:t(),bufferSize:r(),lifecycleState:g})},runBeforeOperation(b){return u.runBeforeOperation(y(b))}}}})),_t,Rd,yi,Gd,El,Pt,Ul,Tl,Ld,Xd,Wd=ne((()=>{_t=e=>!!e&&typeof e=="object"&&!Array.isArray(e),Rd=e=>typeof URL<"u"&&e instanceof URL,yi=e=>{if(e===void 0||typeof e=="function"||typeof e=="symbol")return;if(e===null||typeof e=="string"||typeof e=="boolean")return e;if(typeof e=="number")return Number.isFinite(e)?e:void 0;if(typeof e=="bigint")return e.toString();if(e instanceof Date)return e.toISOString();if(Rd(e))return e.toString();if(Array.isArray(e))return e.map(r=>yi(r)).filter(r=>r!==void 0);if(!_t(e))return;const t={};return Object.entries(e).forEach(([r,n])=>{const i=yi(n);i!==void 0&&(t[r]=i)}),Object.keys(t).length?t:void 0},Gd=e=>{const{beforeOperation:t,hooks:r,preset:n,presets:i,renderers:a,rendererMode:l,...o}=e;if(_t(o.toolbar)){const{beforeOperation:s,beforeDownload:h,beforePrint:f,beforeExportHtml:p,...v}=o.toolbar;o.toolbar=v}return o},El=e=>e==="light"||e==="dark"||e==="system"?e:"system",Pt=e=>{if(!_t(e))return;const t=yi(Gd(e));if(_t(t))return t},Ul=e=>{const t=Pt(e);return t?JSON.stringify(t):void 0},Tl=e=>{if(e){if(typeof e=="string")try{return Pt(JSON.parse(e))}catch{return}return Pt(e)}},Ld=(e,t,r="options")=>{const n=Ul(t);if(!n){e.delete(r);return}e.set(r,n)},Xd=(e,t="options")=>Tl(e.get(t))})),Fd,Wu=ne((()=>{Xt(),Wd(),Ve(),Fd=({filename:e,file:t,url:r,options:n})=>{const i=qe({filename:e,file:t,url:r});return{displayFilename:i,extension:ze(i),toolbar:Ia(n),theme:El(n?.theme)}}})),Ct,Kl,Ke,vi,gi,wi,kd,_l,Ed,Ud=ne((()=>{Ct=e=>e.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">"),Kl=e=>`url("data:image/svg+xml;charset=utf-8,${encodeURIComponent(e)}")`,Ke=(e,t,r,n)=>Math.min(n,Math.max(r,typeof e=="number"&&Number.isFinite(e)?e:t)),vi=e=>e?e===!0?{enabled:!0,text:"Flyfish Viewer"}:e.enabled===!1||!e.text&&!e.image?null:{enabled:!0,...e}:null,gi=e=>{const t=Ke(e.gapX,260,96,800),r=Ke(e.gapY,180,80,800),n=Ke(e.width,e.image?160:220,32,t),i=Ke(e.height,(e.image,72),24,r),a=Ke(e.rotate,-24,-75,75),l=Ke(e.opacity,.18,.02,.8),o=(t-n)/2,s=(r-i)/2,h=t/2,f=r/2;if(e.image)return`<svg xmlns="http://www.w3.org/2000/svg" width="${t}" height="${r}" viewBox="0 0 ${t} ${r}"><g opacity="${l}" transform="rotate(${a} ${h} ${f})"><image href="${Ct(e.image)}" x="${o}" y="${s}" width="${n}" height="${i}" preserveAspectRatio="xMidYMid meet"/></g></svg>`;const p=Ct(e.text||"Flyfish Viewer"),v=Ke(e.fontSize,20,10,72);return`<svg xmlns="http://www.w3.org/2000/svg" width="${t}" height="${r}" viewBox="0 0 ${t} ${r}"><g opacity="${l}" transform="rotate(${a} ${h} ${f})"><text x="${h}" y="${f}" text-anchor="middle" dominant-baseline="middle" fill="${Ct(e.color||"#355070")}" font-family="${Ct(e.fontFamily||"Aptos, 'Segoe UI', sans-serif")}" font-size="${v}" font-weight="700">${p}</text></g></svg>`},wi=e=>{const t=vi(e);return t?Kl(gi(t)):""},kd=e=>{const t=wi(e);return t?{backgroundImage:t}:void 0},_l=e=>{const t=wi(e);return t?`position:absolute;inset:0;pointer-events:none;background-image:${t};background-repeat:repeat;z-index:20;`:""},Ed=e=>{const t=vi(e),r=t?Kl(gi(t)):"";return{normalizedWatermark:t,watermarkStyle:r?{backgroundImage:r}:void 0,watermarkInlineStyle:r?`position:absolute;inset:0;pointer-events:none;background-image:${r};background-repeat:repeat;z-index:20;`:""}}})),nt,Pl,Cl,Td,Kd,Fu=ne((()=>{ut(),Ao(),fn(),Cn(),ra(),Xt(),Hr(),xl(),wd(),ci(),Ve(),Ud(),ti(),nt=async(e,t,r,n,i,a,l)=>{const o=Ar({phase:r,source:n,version:i,timestamp:Date.now(),startedAt:a,reason:l});await Or(o,e.hooks,s=>{throw s}),t?.({type:r,payload:o})},Pl=(e,t)=>t.rendererMode==="replace"?tt([]):e.registry?e.registry:hi({builtinRenderers:t.builtinRenderers}).registry,Cl=e=>{const t=e.autoRenderers;return typeof t=="boolean"?t:t?.enabled!==void 0?t.enabled:(e.rendererMode||"extend")!=="replace"},Td=(e,t,r)=>{const n=e.ownerDocument,i=$r(t,void 0,r),a=n.createElement("div");a.className="file-viewer-missing-renderer",a.style.cssText=["display:flex","min-height:260px","height:100%","align-items:center","justify-content:center","padding:32px","box-sizing:border-box","text-align:center","color:#64748b",'font:14px/1.6 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif'].join(";");const l=n.createElement("div"),o=n.createElement("strong");o.textContent=i.message,o.style.cssText="display:block;margin-bottom:8px;color:#172033;font-size:16px;";const s=n.createElement("p");s.textContent=i.description||i.title,s.style.cssText="max-width:520px;margin:0;",l.append(o,s),a.append(l),e.replaceChildren(a)},Kd=(e,t={})=>{let r=t.options||{},n=Pl(t,r),i,a,l,o=r.rendererMode||"extend",s=r.builtinRenderers||"all",h=Cl(r),f=-1,p=null;const v=hl(),m=Ca(),g={anchors:{value:[]},state:ct()},u=async()=>{const R=r.rendererMode||"extend",X=r.renderers,P=r.preset,V=r.presets,k=r.builtinRenderers||"all",c=Cl(r),_=c||It(P)||It(V)?Jn():0;if(R===o&&X===i&&P===a&&V===l&&k===s&&c===h&&_===f)return;n=Pl(t,r),o=R,i=X,a=P,l=V,s=k,h=c,f=_;const Q=[];c&&Q.push(...Hn()),Q.push(...Rt(P),...Rt(V)),X&&Q.push(X);const Y=xt(Q);if(!Y.length)return;await Dn({registry:n,plugins:Y,registerHandler:C=>{const ee=n.getById(C.rendererId);ee&&n.register({...ee,load:ui({handler:C.handler,getTarget:U=>U.surface.container})})}})},y=()=>Ar({phase:"load-complete",source:p||Lr({}),version:m.getCurrentVersion(),timestamp:Date.now()}),b=async R=>jr({context:Mr(R,y()),options:r,onBefore:X=>{var P;(P=t.onEvent)===null||P===void 0||P.call(t,{type:"operation-before",payload:X})},onCancel:X=>{var P;(P=t.onEvent)===null||P===void 0||P.call(t,{type:"operation-cancel",payload:X})},onError(X){throw X}}),Z=R=>typeof R=="string"?R:_l(r.watermark),I=R=>{const X=R||p?.extension||"",P=n.getByExtension(X);return P?Mn(P,v.session):On(X)},w=()=>{var R;(R=t.onEvent)===null||R===void 0||R.call(t,{type:"operation-availability-change",payload:I()})},G=(R=K.getState())=>{var X;(X=t.onEvent)===null||X===void 0||X.call(t,{type:"zoom-change",payload:R})},K=bn({root:()=>e,beforeZoom:b}),F=on({root:()=>e,searchTarget:g,searchOptions:()=>r.search,getAiOptions:()=>r.ai,onSearchChange:R=>{var X;(X=t.onEvent)===null||X===void 0||X.call(t,{type:"search-change",payload:R})},onLocationChange:R=>{var X;(X=t.onEvent)===null||X===void 0||X.call(t,{type:"location-change",payload:R})}});K.observe();const J=async(R="replace")=>{var X,P;if(!p)return;const V=p,k=Date.now(),c=m.getCurrentVersion();await nt(r,t.onEvent,"unload-start",V,c,k,R),await((P=(X=v.session)===null||X===void 0?void 0:X.destroy)===null||P===void 0?void 0:P.call(X)),p=null,Le(v,{session:null,exportAdapter:null}),await F.clearDocumentState(),K.clearProvider(),w(),G(),await nt(r,t.onEvent,"unload-complete",V,c,k,R)};return{container:e,async load(R){await J("replace"),await u();const X=Lr(R);p=X;const P=m.requestController.createVersion(),V=n.getByExtension(X.extension),k=Date.now();if(await nt(r,t.onEvent,"load-start",X,P,k),!V?.load)return Td(e,X.extension,r),Le(v,{session:null}),w(),G(),await nt(r,t.onEvent,"load-complete",X,P,k),null;const c=await V.load({source:X,surface:{container:e},options:r,signal:t.signal,registerExportAdapter:_=>{Le(v,{exportAdapter:_})}});return Le(v,{session:c}),K.refreshProvider(),await F.refreshDocumentIndex({notify:!1}),w(),G(),await nt(r,t.onEvent,"load-complete",X,P,k),c},async destroy(R="component-unmount"){await J(R),F.destroyDocumentFeatures(),K.destroy()},updateOptions(R){r={...r,...R}},getCapabilities(R){return I(R)},getRenderer(R){return n.getByExtension(R||p?.extension||"")},getSource(){return p},registerExportAdapter(R){Le(v,{exportAdapter:R})},getExportAdapter(){return v.exportAdapter},async download(R={}){const X=Un(p);await _r({source:X,filename:R.filename||We({source:X,fallback:Ur}),beforeOperation:b})},async exportHtml(R={}){return Pr({source:e,adapter:v.exportAdapter,download:R.download,filename:R.filename||We({filename:et(p),fallback:"preview"}),title:R.title||We({filename:et(p),fallback:"file-viewer-preview"}),watermarkInlineStyle:Z(R.watermarkInlineStyle),beforeOperation:b})},async print(R={}){await Cr({source:e,adapter:v.exportAdapter,autoPrint:R.autoPrint,openWindow:R.openWindow,printWindow:R.printWindow,title:R.title||We({filename:et(p),fallback:"file-viewer-preview"}),watermarkInlineStyle:Z(R.watermarkInlineStyle),printAvailable:I().print,beforeOperation:b})},async zoomIn(){const R=await K.zoomIn();return G(R),R},async zoomOut(){const R=await K.zoomOut();return G(R),R},async resetZoom(){const R=await K.resetZoom();return G(R),R},getZoomState(){return K.getState()},search(R){return F.searchDocument(R)},nextSearchResult(){return F.nextSearchResult()},previousSearchResult(){return F.previousSearchResult()},clearSearch(){return F.clearDocumentSearch()},getSearchState(){return F.getSearchState()},collectDocumentAnchors(){return F.collectDocumentAnchors({notify:!1})},getCurrentDocumentAnchor(){return F.getCurrentDocumentAnchor()},scrollToDocumentAnchor(R){return F.scrollToLoadedAnchor(R)},scrollToLine(R){return F.scrollToLine(R)},getDocumentTextChunks(R){return F.getDocumentTextChunks(R)}}}})),zl,_d,Pd,ku=ne((()=>{zl=class{constructor(e,t=null){if(typeof e=="string"){this.name=e,this.worker=t;return}this.name="",this.worker=e}defaults(e){return this.worker||(this.worker=e()),this.worker}},_d=(e,t=!1)=>new zl(e,null),Pd=(e,t={})=>{const r=e(),n=new Map,i=new Set,a=new Set,l=(h,f)=>{r?.postMessage({type:h,payload:f})},o=h=>{const{type:f,payload:p}=h.data||{},v=n.get(f);v?.forEach(m=>m(p)),i.forEach(m=>m(h))},s=h=>{t.logErrors!==!1&&console.error(h),a.forEach(f=>f(h))};return r?.addEventListener("message",o),r?.addEventListener("error",s),{instance:r,worker:{emit:l},emit:l,onWorkerMessage(h){return i.add(h),()=>{i.delete(h)}},onWorkerError(h){return a.add(h),()=>{a.delete(h)}},onWorkerEvent(h,f){let p=n.get(h);return p||(p=new Set,n.set(h,p)),p.add(f),()=>{p?.delete(f),p?.size===0&&n.delete(h)}},mapEvents(h){return Array.isArray(h)?h.reduce((f,p)=>(f[p]=v=>l(p,v),f),{}):Object.keys(h).reduce((f,p)=>{const v=h[p];return f[v]=m=>l(p,m),f},{})},destroy(){r?.removeEventListener("message",o),r?.removeEventListener("error",s),r?.terminate(),n.clear(),i.clear(),a.clear()}}}})),Eu=Bt({ADAPTER_PRINT_REQUIRED_EXTENSIONS:()=>Bn,ARCHIVE_EXTENSIONS:()=>mr,CORE_LITE_RENDERER_IDS:()=>mi,DEFAULT_FILE_VIEWER_ANCHOR_EXCLUDE_SELECTOR:()=>Yi,DEFAULT_FILE_VIEWER_ANCHOR_SELECTOR:()=>zi,DEFAULT_FILE_VIEWER_ARCHIVE_WASM_PATH:()=>Fi,DEFAULT_FILE_VIEWER_ARCHIVE_WORKER_PATH:()=>jt,DEFAULT_FILE_VIEWER_CAD_DWF_WASM_PATH:()=>lr,DEFAULT_FILE_VIEWER_CAD_WASM_PATH:()=>nr,DEFAULT_FILE_VIEWER_CAD_WORKER_PATH:()=>ar,DEFAULT_FILE_VIEWER_DATA_SQL_WASM_URL:()=>dr,DEFAULT_FILE_VIEWER_DOCX_WORKER_JSZIP_PATH:()=>qt,DEFAULT_FILE_VIEWER_DOCX_WORKER_PATH:()=>Qt,DEFAULT_FILE_VIEWER_DOWNLOAD_FILENAME:()=>Ur,DEFAULT_FILE_VIEWER_EXPORT_FILENAME:()=>St,DEFAULT_FILE_VIEWER_LIFECYCLE_HOOK_ERROR_LOGGER:()=>ua,DEFAULT_FILE_VIEWER_OPERATION_ERROR_LOGGER:()=>ma,DEFAULT_FILE_VIEWER_PDF_CMAP_PATH:()=>tr,DEFAULT_FILE_VIEWER_PDF_STANDARD_FONT_PATH:()=>ir,DEFAULT_FILE_VIEWER_PDF_WASM_PATH:()=>rr,DEFAULT_FILE_VIEWER_PDF_WORKER_PATH:()=>er,DEFAULT_FILE_VIEWER_PREVIEW_LOAD_ERROR_LOGGER:()=>Ka,DEFAULT_FILE_VIEWER_PREVIEW_TITLE:()=>Er,DEFAULT_FILE_VIEWER_RENDERER_ASSET_MANIFESTS:()=>cr,DEFAULT_FILE_VIEWER_RENDER_SESSION_DISPOSE_ERROR_LOGGER:()=>fl,DEFAULT_FILE_VIEWER_RENDER_TARGET_CLASS:()=>Qs,DEFAULT_FILE_VIEWER_SCROLLABLE_OVERFLOW_VALUES:()=>Qi,DEFAULT_FILE_VIEWER_SCROLL_CONTAINER_CANDIDATE_SELECTOR:()=>Fo,DEFAULT_FILE_VIEWER_SCROLL_CONTAINER_SELECTOR:()=>Wo,DEFAULT_FILE_VIEWER_SEARCH_ACTIVE_CLASS:()=>Eo,DEFAULT_FILE_VIEWER_SEARCH_MATCH_CLASS:()=>ko,DEFAULT_FILE_VIEWER_SEARCH_MAX_MATCHES:()=>Uo,DEFAULT_FILE_VIEWER_SOURCE_FILENAME:()=>Ee,DEFAULT_FILE_VIEWER_SPREADSHEET_WORKER_PATH:()=>$t,DEFAULT_FILE_VIEWER_STATE_THEME:()=>Te,DEFAULT_FILE_VIEWER_STREAMING_PDF_FILENAME:()=>Ea,DEFAULT_FILE_VIEWER_TEXT_CHUNK_OVERLAP:()=>160,DEFAULT_FILE_VIEWER_TEXT_CHUNK_SIZE:()=>So,DEFAULT_FILE_VIEWER_TYPST_COMPILER_WASM_URL:()=>or,DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_PACKAGE_PATH:()=>Ei,DEFAULT_FILE_VIEWER_TYPST_RENDERER_WASM_URL:()=>sr,DEFAULT_FILE_VIEWER_UNSUPPORTED_DESCRIPTION:()=>Fs,DEFAULT_FILE_VIEWER_ZOOM_SCALE:()=>1,DEFAULT_OPERATION_AVAILABILITY:()=>Jr,DEFAULT_PDF_RANGE_CHUNK_SIZE:()=>Ns,DEFAULT_RENDERER_DEFINITIONS:()=>Re,DEFAULT_SUPPORTED_EXTENSIONS:()=>Ki,DOM_PRINTABLE_EXTENSIONS:()=>jn,FALLBACK_FILE_VIEWER_LOADING_THEME:()=>Ll,FILE_VIEWER_BEFORE_OPERATION_ERROR_PREFIX:()=>gs,FILE_VIEWER_BUILTIN_MESSAGES:()=>Wr,FILE_VIEWER_DEFAULT_LOCALE:()=>is,FILE_VIEWER_FALLBACK_LOCALE:()=>ns,FILE_VIEWER_LIFECYCLE_HOOKS:()=>ia,FILE_VIEWER_LIFECYCLE_HOOK_ERROR_MESSAGE_PREFIX:()=>na,FILE_VIEWER_LOADING_THEME_MAP:()=>Xl,FILE_VIEWER_OPERATION_ACTION_ERROR_PREFIXES:()=>ds,FILE_VIEWER_OPERATION_LABELS:()=>vs,FILE_VIEWER_PREVIEW_LOAD_ERROR_PREFIXES:()=>Ds,FILE_VIEWER_PREVIEW_MESSAGES:()=>Ws,FILE_VIEWER_REMOTE_MISSING_DATA_ERROR_MESSAGE:()=>Js,FILE_VIEWER_RENDER_SESSION_DISPOSE_ERROR_MESSAGE:()=>cl,IMAGE_EXTENSIONS:()=>br,MODEL_EXTENSIONS:()=>hr,NON_PRINTABLE_EXTENSIONS:()=>Qn,TEXT_EXTENSIONS:()=>pr,WorkerRefImpl:()=>zl,applyFileViewerEmptyPreviewState:()=>Aa,applyFileViewerLoadingState:()=>fi,applyFileViewerPreviewFilenameState:()=>Qa,applyFileViewerPreviewRequestResetState:()=>ii,applyFileViewerPreviewSourceUrlState:()=>ja,applyFileViewerReadPreviewState:()=>Ba,applyFileViewerRenderReadinessState:()=>Wt,applyFileViewerRenderSurfaceState:()=>Le,applyFileViewerSearchState:()=>gr,applyFileViewerZoomState:()=>ke,applyPrintPageSize:()=>qo,buildExportHtmlDocument:()=>xr,buildFileRenderContextFromLoadContext:()=>Sl,buildFileViewerDocumentTextChunks:()=>Ci,buildFileViewerLifecycleContext:()=>rt,buildFileViewerLifecycleContextFromNormalizedSource:()=>Ar,buildFileViewerOperationContext:()=>Mr,buildFileViewerOperationContextFromLifecycleState:()=>oa,buildFileViewerRenderedHtmlDocument:()=>xn,buildFileViewerWatermarkBackgroundImage:()=>wi,buildFileViewerWatermarkInlineStyle:()=>_l,buildFileViewerWatermarkStyle:()=>kd,buildFileViewerWatermarkSvg:()=>gi,buildPrintPageStyle:()=>$o,cancelFileViewerPreviewRequest:()=>Da,clearFileViewerAutoRendererPresets:()=>fs,clearFileViewerRenderSurface:()=>ul,clearFileViewerZoomControllerProvider:()=>mn,cloneFileViewerLoadingState:()=>xe,cloneFileViewerOperationAvailability:()=>Lt,cloneFileViewerSearchState:()=>vr,cloneFileViewerZoomState:()=>Ce,collectDocumentStyles:()=>vn,collectFileViewerDocumentAnchors:()=>yr,collectFileViewerRendererPlugins:()=>xt,commitFileViewerEmptyPreviewResetState:()=>ai,commitFileViewerLoadStartState:()=>si,commitFileViewerPreviewRequestStartState:()=>ni,commitFileViewerRemoteDownloadState:()=>sl,commitFileViewerRenderCompleteState:()=>li,coreBrowserRendererHandlers:()=>Tt,coreLiteBrowserRendererHandlers:()=>Rl,coreLiteRendererDefinitions:()=>Gl,createEmptyFileViewerSearchState:()=>ct,createFileRenderHandlerLoader:()=>ui,createFileRenderHandlerRegistry:()=>Vl,createFileRenderHandlerRendererSession:()=>pl,createFileViewerCoreRendererRegistry:()=>hi,createFileViewerDocumentChangeSnapshot:()=>Do,createFileViewerDocumentFeatureActions:()=>cn,createFileViewerDocumentFeatureControllerActionHandlers:()=>on,createFileViewerDomSearchController:()=>ln,createFileViewerDomSearchControllerActionHandlers:()=>rn,createFileViewerEmptyPreviewState:()=>Na,createFileViewerEmptyState:()=>zs,createFileViewerErrorState:()=>Hs,createFileViewerLifecycleActions:()=>va,createFileViewerLifecycleFacade:()=>Id,createFileViewerLifecycleStateController:()=>la,createFileViewerLoadStartState:()=>rl,createFileViewerLoadingController:()=>xd,createFileViewerLoadingControllerActionHandlers:()=>Vd,createFileViewerLoadingState:()=>Wl,createFileViewerLoadingStyleVars:()=>bi,createFileViewerOperationActionHandlers:()=>Pn,createFileViewerOriginalSourceState:()=>Vt,createFileViewerOriginalSourceStateFromNormalizedSource:()=>Un,createFileViewerPreviewLoadingState:()=>Ps,createFileViewerPreviewRequestResetState:()=>Ja,createFileViewerPreviewStateTarget:()=>As,createFileViewerPublicApi:()=>Gs,createFileViewerPublicOperationActionHandlers:()=>ms,createFileViewerReadPreviewState:()=>Oa,createFileViewerReadyState:()=>Cs,createFileViewerRenderCompleteState:()=>il,createFileViewerRenderReadinessTarget:()=>$s,createFileViewerRenderSurfaceActionHandlers:()=>td,createFileViewerRenderSurfaceState:()=>hl,createFileViewerRenderSurfaceStateTarget:()=>ed,createFileViewerRenderTarget:()=>ml,createFileViewerRendererDispatcher:()=>Nr,createFileViewerRequestController:()=>Pa,createFileViewerRequestScope:()=>Ca,createFileViewerSearchChangeState:()=>vt,createFileViewerSourceLoadingActionHandlers:()=>Bs,createFileViewerStreamingPdfPlaceholderFile:()=>dl,createFileViewerToolbarActions:()=>Za,createFileViewerToolbarControllerActionHandlers:()=>Ls,createFileViewerToolbarZoomSyncSnapshot:()=>Sa,createFileViewerTranslator:()=>kr,createFileViewerUnsupportedState:()=>$r,createFileViewerWorkerController:()=>Pd,createFileViewerZoomChangeEmitter:()=>pn,createFileViewerZoomChangeState:()=>Sr,createFileViewerZoomController:()=>bn,createFileViewerZoomControllerActionHandlers:()=>Mo,createFileViewerZoomState:()=>fr,createRendererRegistry:()=>tt,createUnsupportedAvailability:()=>On,createViewer:()=>Kd,decodeFilename:()=>Gn,destroyFileViewerDomSearchController:()=>tn,destroyFileViewerZoomController:()=>hn,dispatchFileViewerLifecycleEvent:()=>ya,dispatchFileViewerLocationChange:()=>dn,dispatchFileViewerOperationAvailabilityChange:()=>ga,dispatchFileViewerOperationContextEvent:()=>Qr,dispatchFileViewerSearchChange:()=>sn,dispatchFileViewerZoomChange:()=>wa,disposeActiveFileViewerRendererSession:()=>vl,disposeFileViewerRendered:()=>Et,disposeFileViewerRendererSession:()=>Ut,emitFileViewerComponentLifecycleEvent:()=>sa,executeFileViewerDownloadOperation:()=>_r,executeFileViewerExportHtmlOperation:()=>Pr,executeFileViewerPrintOperation:()=>Cr,fileViewerCoreRendererDispatcher:()=>vd,fileViewerCoreRendererRegistry:()=>yd,fileViewerCoreRendererRegistryBridge:()=>Kt,finalizeFileViewerPreviewLoadState:()=>Ft,findFileViewerAnchorForElement:()=>Ji,findFileViewerAutoRendererPreset:()=>Nn,findFileViewerSearchProvider:()=>Mi,findFileViewerZoomProvider:()=>ji,formatCssPixels:()=>Qe,formatFileViewerErrorMessage:()=>Ys,formatFileViewerMessage:()=>kn,getCurrentFileViewerDocumentAnchor:()=>Di,getElementPrintPageSize:()=>Qo,getExtension:()=>ze,getFileViewerAutoRendererPresetVersion:()=>Jn,getFileViewerBeforeOperationHooks:()=>fa,getFileViewerLifecycleHookName:()=>ba,getFileViewerOptionsSearchParam:()=>Xd,getFileViewerRendererAssetManifest:()=>Ti,getFileViewerScrollableRange:()=>pt,getRendererAvailability:()=>Mn,hasFileViewerOriginalSource:()=>Tr,hasFileViewerPreviewSource:()=>Ya,hasFileViewerRendererPresetName:()=>It,hasVisibleFileViewerToolbarActions:()=>La,installFileViewerRendererPlugins:()=>Dn,isDomPrintableExtension:()=>$n,isFileViewerAbortError:()=>za,isFileViewerScrollableElement:()=>bt,isFileViewerToolbarOperationPermitted:()=>Fe,isFileViewerZoomButtonDisabled:()=>Xa,isKnownNonPrintableExtension:()=>ea,isSameOriginUrl:()=>al,listFileViewerAutoRendererPresetEntries:()=>ys,listFileViewerAutoRendererPresets:()=>Hn,listFileViewerRendererAssetManifests:()=>vo,missingFileViewerCoreRendererHandlers:()=>gd,needsDedicatedPrintAdapter:()=>qn,normalizeFileExtension:()=>ye,normalizeFileViewerAiOptions:()=>Pi,normalizeFileViewerErrorMessage:()=>ei,normalizeFileViewerLocale:()=>Fn,normalizeFileViewerSearchOptions:()=>_i,normalizeFileViewerSourceUrl:()=>it,normalizeFileViewerTheme:()=>El,normalizeFileViewerToolbar:()=>Ia,normalizeFileViewerWatermark:()=>vi,normalizeFilename:()=>Ge,normalizePdfStreamingMode:()=>nl,normalizeSource:()=>Lr,observeFileViewerDomSearchController:()=>en,observeFileViewerZoomController:()=>un,parseEdaFile:()=>sc,parseFileViewerOptions:()=>Tl,prepareFileViewerRenderedContentForSnapshot:()=>Vn,readFileViewerBuffer:()=>Xn,readFileViewerDataUrl:()=>ts,readFileViewerText:()=>rs,refWorker:()=>_d,refreshFileViewerZoomControllerProvider:()=>Vr,registerFileViewerAutoRendererPreset:()=>bs,registerFileViewerSearchProvider:()=>Lo,registerFileViewerZoomProvider:()=>Oi,removeFileViewerRenderTarget:()=>kt,renderFileViewerArchive:()=>zd,renderFileViewerAudio:()=>Cd,renderFileViewerCad:()=>Yd,renderFileViewerCode:()=>Hd,renderFileViewerDataAsset:()=>Nd,renderFileViewerDrawing:()=>Jd,renderFileViewerEda:()=>Dd,renderFileViewerEmail:()=>Ad,renderFileViewerEpub:()=>Md,renderFileViewerGeo:()=>Od,renderFileViewerHandler:()=>rd,renderFileViewerImage:()=>Bd,renderFileViewerMarkdown:()=>jd,renderFileViewerModel:()=>Qd,renderFileViewerOfd:()=>qd,renderFileViewerOpenDocument:()=>$d,renderFileViewerPdf:()=>ec,renderFileViewerPptx:()=>tc,renderFileViewerSpreadsheet:()=>oc,renderFileViewerTypst:()=>rc,renderFileViewerUmd:()=>ic,renderFileViewerVideo:()=>nc,renderFileViewerWordDoc:()=>ac,renderFileViewerWordDocx:()=>lc,replaceFileViewerCanvasWithImages:()=>wn,reportFileViewerLifecycleHookError:()=>Ss,reportFileViewerMissingRemoteData:()=>_a,reportFileViewerOperationError:()=>Vs,reportFileViewerPreviewLoadError:()=>ri,reportFileViewerRenderSessionDisposeError:()=>yl,resetFileViewerRenderSurface:()=>gl,resolveFileViewerArchiveWasmUrl:()=>Ui,resolveFileViewerArchiveWorkerUrl:()=>ur,resolveFileViewerAssetUrl:()=>ve,resolveFileViewerBeforeOperationErrorMessage:()=>da,resolveFileViewerCadAssetUrls:()=>so,resolveFileViewerDataSqlWasmUrl:()=>yo,resolveFileViewerDisplayFilename:()=>et,resolveFileViewerDocxWorkerJsZipUrl:()=>ho,resolveFileViewerDocxWorkerUrl:()=>mo,resolveFileViewerDrawioViewerScriptUrl:()=>uo,resolveFileViewerFileRefSourcePlan:()=>di,resolveFileViewerLifecycleFallbackSource:()=>aa,resolveFileViewerLifecycleHookErrorMessage:()=>ca,resolveFileViewerLoadStartMessage:()=>tl,resolveFileViewerLoadingTheme:()=>pi,resolveFileViewerLocale:()=>Fr,resolveFileViewerLocationChangeAnchor:()=>Zr,resolveFileViewerMissingRemoteDataErrorMessage:()=>Ta,resolveFileViewerOperationActionErrorMessage:()=>Kn,resolveFileViewerOperationAvailability:()=>Ra,resolveFileViewerOperationFilename:()=>We,resolveFileViewerOriginalFilename:()=>Tn,resolveFileViewerPageHref:()=>js,resolveFileViewerPdfAssetUrls:()=>co,resolveFileViewerPresentationState:()=>Fd,resolveFileViewerPreviewLoadErrorMessage:()=>Ua,resolveFileViewerPreviewRequestReason:()=>Ha,resolveFileViewerPrintStyle:()=>Rr,resolveFileViewerRemoteSourcePlan:()=>ol,resolveFileViewerRenderSessionDisposeErrorMessage:()=>bl,resolveFileViewerRendererAssets:()=>wo,resolveFileViewerRendererInstallHint:()=>ka,resolveFileViewerRendererPresetInputs:()=>Rt,resolveFileViewerScrollContainer:()=>qi,resolveFileViewerSourceFilename:()=>qe,resolveFileViewerSpreadsheetWorkerUrl:()=>po,resolveFileViewerToolbarPosition:()=>Fa,resolveFileViewerToolbarState:()=>Wa,resolveFileViewerTypstCompilerWasmUrl:()=>bo,resolveFileViewerTypstRendererWasmUrl:()=>fo,resolveFileViewerWatermarkPresentationState:()=>Ed,resolvePrintAvailability:()=>ta,resolveVisibleFileViewerToolbar:()=>Ga,runFileViewerActiveUnloadComplete:()=>pa,runFileViewerActiveUnloadStart:()=>ha,runFileViewerBeforeOperation:()=>jr,runFileViewerDomSearchControllerAction:()=>Pe,runFileViewerLifecycleHook:()=>Or,runFileViewerLoadingControllerAction:()=>Xe,runFileViewerLoadingExtensionSync:()=>kl,runFileViewerLocalFilePreview:()=>$a,runFileViewerPreviewComponentUnmount:()=>Os,runFileViewerPreviewRequest:()=>Ma,runFileViewerPreviewSourceChange:()=>Ms,runFileViewerReadAndRenderFile:()=>oi,runFileViewerRemoteFilePreview:()=>el,runFileViewerRenderSurfaceClear:()=>wl,runFileViewerRenderSurfaceMount:()=>Zl,runFileViewerStreamingPdfPreview:()=>qa,runFileViewerToolbarAvailabilitySync:()=>Va,runFileViewerToolbarZoomSync:()=>xa,runFileViewerZoomControllerAction:()=>gt,sanitizeFileViewerOptions:()=>Pt,scrollToFileViewerDocumentAnchor:()=>Ai,serializeFileViewerContext:()=>Rs,serializeFileViewerOptions:()=>Ul,setFileViewerOptionsSearchParam:()=>Ld,shouldStreamPdfUrl:()=>ll,syncFileViewerDomSearchControllerState:()=>yt,syncFileViewerLoadingControllerState:()=>Fl,syncFileViewerZoomControllerState:()=>je,translateFileViewerMessage:()=>de,triggerFileViewerBlobDownload:()=>wt,triggerFileViewerUrlDownload:()=>gn,unregisterFileViewerAutoRendererPreset:()=>Yn,unregisterFileViewerSearchProvider:()=>Xo,unregisterFileViewerZoomProvider:()=>Bi,waitForFileViewerImages:()=>Zn,waitForFileViewerNextPaint:()=>Ir,waitForFileViewerPrintWindowReady:()=>Sn,wrapFileViewerFileRef:()=>Xr}),Cd,zd,Yd,Hd,Nd,Jd,Dd,Ad,Md,Od,Bd,jd,Qd,qd,$d,ec,tc,rc,ic,nc,ac,lc,oc,sc,Zi=ne((()=>{Zo(),_e(),ut(),Jo(),Ao(),fn(),ft(),In(),Ru(),Cn(),$e(),Hr(),wd(),ra(),Xt(),Lu(),Xu(),Wd(),Wu(),An(),xl(),Ve(),ti(),Ud(),ci(),Fu(),ku(),Cd=async(e,t,r)=>{throw new Error("Audio and MIDI rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-media, or use @file-viewer/preset-all.")},zd=async(e,t,r,n)=>{throw new Error("Archive rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-archive, or use @file-viewer/preset-all.")},Yd=async(e,t,r,n)=>{throw new Error("CAD rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-cad, or use @file-viewer/preset-all.")},Hd=async(e,t,r)=>{throw new Error("Code and text rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-text, or use @file-viewer/preset-all.")},Nd=async(e,t,r,n)=>{throw new Error("Data asset rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-data, or use @file-viewer/preset-all.")},Jd=async(e,t,r,n)=>{throw new Error("Draw.io and Excalidraw rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-drawing, or use @file-viewer/preset-all.")},Dd=async(e,t,r,n)=>{throw new Error("EDA rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-eda, or use @file-viewer/preset-all.")},Ad=async(e,t,r,n)=>{throw new Error("Email rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-email, or use @file-viewer/preset-all.")},Md=async(e,t)=>{throw new Error("EPUB rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-epub, or use @file-viewer/preset-all.")},Od=async(e,t,r)=>{throw new Error("Geospatial rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-geo, or use @file-viewer/preset-all.")},Bd=async(e,t,r)=>{const{default:n}=await Promise.resolve().then(()=>(md(),id));return n(e,t,r)},jd=async(e,t)=>{throw new Error("Markdown rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-text, or use @file-viewer/preset-all.")},Qd=async(e,t,r,n)=>{throw new Error("3D model rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-3d, or use @file-viewer/preset-all.")},qd=async(e,t,r)=>{throw new Error("OFD rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-ofd, or use @file-viewer/preset-all.")},$d=async(e,t,r)=>{throw new Error("OpenDocument/RTF rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-word, or use @file-viewer/preset-all.")},ec=async(e,t,r)=>{throw new Error("PDF rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-pdf, or use @file-viewer/preset-all.")},tc=async(e,t,r,n)=>{throw new Error("PPTX rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-presentation, or use @file-viewer/preset-all.")},rc=async(e,t,r,n)=>{throw new Error("Typst rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-typst, or use @file-viewer/preset-all.")},ic=async(e,t)=>{throw new Error("UMD ebook rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-epub, or use @file-viewer/preset-all.")},nc=async(e,t,r,n)=>{throw new Error("Video and HLS rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-media, or use @file-viewer/preset-all.")},ac=async(e,t,r)=>{throw new Error("DOC rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-word, or use @file-viewer/preset-all.")},lc=async(e,t,r)=>{throw new Error("DOCX rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-word, or use @file-viewer/preset-all.")},oc=async(e,t,r,n)=>{throw new Error("Spreadsheet rendering has moved out of @file-viewer/core. Install and pass @file-viewer/renderer-spreadsheet, or use @file-viewer/preset-all.")},sc=async(e,t)=>{throw new Error("EDA parsing has moved out of @file-viewer/core. Import parseEdaFile from @file-viewer/renderer-eda instead.")}})),dc,zt,cc,Si,Yl,Ne,uc,Hl,mc,hc,pc,bc=ne((()=>{Zi(),dc=Ki,zt=e=>{const t=e.split(/[?#]/)[0]||e,r=t.lastIndexOf(".");return r===-1?"":t.slice(r+1).toLowerCase()},cc=new Set([".ds_store","desktop.ini","thumbs.db"]),Si=e=>{var t;const r=e.replace(/^\/+/,"").replace(/\\/g,"/").split("/").filter(Boolean),n=((t=r[r.length-1])===null||t===void 0?void 0:t.toLowerCase())||"";return r.some(i=>i==="__MACOSX"||i.startsWith("._"))||cc.has(n)},Yl=e=>{const t=zt(e);return dc.includes(t)},Ne=e=>{if(!Number.isFinite(e)||e<0)return"-";if(e<1024)return`${e} B`;const t=["KB","MB","GB"];let r=e/1024;for(const n of t){if(r<1024||n===t[t.length-1])return`${r.toFixed(r<10?1:0)} ${n}`;r/=1024}return`${e} B`},uc=e=>typeof e=="object"&&e!==null&&"extract"in e&&typeof e.extract=="function",Hl=(e,t="")=>{const r=[];return Object.entries(e).forEach(([n,i])=>{const a=t?`${t}/${n}`:n;if(!Si(a)){if(uc(i)){const l=i.name||n,o=zt(l);r.push({id:a,path:a,name:l,extension:o,size:i.size||0,lastModified:i.lastModified,depth:a.split("/").length-1,previewable:Yl(l),compressedFile:i});return}i&&typeof i=="object"&&r.push(...Hl(i,a))}}),r},mc=(e,t,r)=>["archive-entry",e||"archive",t,r.path,r.size,r.lastModified||0].join(":"),hc=(e,t)=>({...e?.options||{},archive:t}),pc=(e,t,r)=>({...e,filename:t.name,url:void 0,streamUrl:void 0,options:hc(e,r)})})),fc,Je,yc,vc,gc,Yt,wc,Nl,Jl,Zc,Sc,Vc,Uu=ne((()=>{fc="flyfish-file-viewer-cache",Je="archiveEntries",yc=1,vc=24*1024*1024,gc=96*1024*1024,Yt=null,wc=()=>typeof indexedDB<"u",Nl=()=>wc()?Yt||(Yt=new Promise((e,t)=>{const r=indexedDB.open(fc,yc);r.onupgradeneeded=()=>{const n=r.result;n.objectStoreNames.contains(Je)||n.createObjectStore(Je,{keyPath:"key"}).createIndex("updatedAt","updatedAt")},r.onsuccess=()=>e(r.result),r.onerror=()=>t(r.error)}),Yt):Promise.reject(new Error("IndexedDB 不可用")),Jl=async(e,t)=>{const r=await Nl();return new Promise((n,i)=>{const a=r.transaction(Je,e),l=t(a.objectStore(Je));l.onsuccess=()=>n(l.result),l.onerror=()=>i(l.error),a.onerror=()=>i(a.error)})},Zc=async e=>{try{return await Jl("readonly",t=>t.get(e))||null}catch{return null}},Sc=async()=>{try{const e=await Nl();await new Promise((t,r)=>{const n=e.transaction(Je,"readwrite"),i=n.objectStore(Je),a=i.index("updatedAt"),l=[];let o=0;a.openCursor().onsuccess=s=>{const h=s.target.result;if(!h){for(;o>gc&&l.length;){const p=l.shift();p&&(o-=p.size,i.delete(p.key))}return}const f=h.value;o+=f.size||0,l.push({key:f.key,size:f.size||0}),h.continue()},n.oncomplete=()=>t(),n.onerror=()=>r(n.error)})}catch{}},Vc=async e=>{if(!(e.size>vc))try{await Jl("readwrite",t=>t.put({...e,updatedAt:Date.now()})),await Sc()}catch{}}})),Tu=yu(((e,t)=>{(function(r){typeof e=="object"&&typeof t<"u"?t.exports=r():typeof define=="function"&&define.amd?define([],r):(typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:this).JSZip=r()})(function(){return(function r(n,i,a){function l(h,f){if(!i[h]){if(!n[h]){var p=typeof require=="function"&&require;if(!f&&p)return p(h,!0);if(o)return o(h,!0);var v=new Error("Cannot find module '"+h+"'");throw v.code="MODULE_NOT_FOUND",v}var m=i[h]={exports:{}};n[h][0].call(m.exports,function(g){var u=n[h][1][g];return l(u||g)},m,m.exports,r,n,i,a)}return i[h].exports}for(var o=typeof require=="function"&&require,s=0;s<a.length;s++)l(a[s]);return l})({1:[function(r,n,i){"use strict";var a=r("./utils"),l=r("./support"),o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";i.encode=function(s){for(var h,f,p,v,m,g,u,y=[],b=0,Z=s.length,I=Z,w=a.getTypeOf(s)!=="string";b<s.length;)I=Z-b,p=w?(h=s[b++],f=b<Z?s[b++]:0,b<Z?s[b++]:0):(h=s.charCodeAt(b++),f=b<Z?s.charCodeAt(b++):0,b<Z?s.charCodeAt(b++):0),v=h>>2,m=(3&h)<<4|f>>4,g=1<I?(15&f)<<2|p>>6:64,u=2<I?63&p:64,y.push(o.charAt(v)+o.charAt(m)+o.charAt(g)+o.charAt(u));return y.join("")},i.decode=function(s){var h,f,p,v,m,g,u=0,y=0,b="data:";if(s.substr(0,b.length)===b)throw new Error("Invalid base64 input, it looks like a data url.");var Z,I=3*(s=s.replace(/[^A-Za-z0-9+/=]/g,"")).length/4;if(s.charAt(s.length-1)===o.charAt(64)&&I--,s.charAt(s.length-2)===o.charAt(64)&&I--,I%1!=0)throw new Error("Invalid base64 input, bad content length.");for(Z=l.uint8array?new Uint8Array(0|I):new Array(0|I);u<s.length;)h=o.indexOf(s.charAt(u++))<<2|(v=o.indexOf(s.charAt(u++)))>>4,f=(15&v)<<4|(m=o.indexOf(s.charAt(u++)))>>2,p=(3&m)<<6|(g=o.indexOf(s.charAt(u++))),Z[y++]=h,m!==64&&(Z[y++]=f),g!==64&&(Z[y++]=p);return Z}},{"./support":30,"./utils":32}],2:[function(r,n,i){"use strict";var a=r("./external"),l=r("./stream/DataWorker"),o=r("./stream/Crc32Probe"),s=r("./stream/DataLengthProbe");function h(f,p,v,m,g){this.compressedSize=f,this.uncompressedSize=p,this.crc32=v,this.compression=m,this.compressedContent=g}h.prototype={getContentWorker:function(){var f=new l(a.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new s("data_length")),p=this;return f.on("end",function(){if(this.streamInfo.data_length!==p.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),f},getCompressedWorker:function(){return new l(a.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},h.createWorkerFrom=function(f,p,v){return f.pipe(new o).pipe(new s("uncompressedSize")).pipe(p.compressWorker(v)).pipe(new s("compressedSize")).withStreamInfo("compression",p)},n.exports=h},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(r,n,i){"use strict";var a=r("./stream/GenericWorker");i.STORE={magic:"\0\0",compressWorker:function(){return new a("STORE compression")},uncompressWorker:function(){return new a("STORE decompression")}},i.DEFLATE=r("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(r,n,i){"use strict";var a=r("./utils"),l=(function(){for(var o,s=[],h=0;h<256;h++){o=h;for(var f=0;f<8;f++)o=1&o?3988292384^o>>>1:o>>>1;s[h]=o}return s})();n.exports=function(o,s){return o!==void 0&&o.length?a.getTypeOf(o)!=="string"?(function(h,f,p,v){var m=l,g=v+p;h^=-1;for(var u=v;u<g;u++)h=h>>>8^m[255&(h^f[u])];return-1^h})(0|s,o,o.length,0):(function(h,f,p,v){var m=l,g=v+p;h^=-1;for(var u=v;u<g;u++)h=h>>>8^m[255&(h^f.charCodeAt(u))];return-1^h})(0|s,o,o.length,0):0}},{"./utils":32}],5:[function(r,n,i){"use strict";i.base64=!1,i.binary=!1,i.dir=!1,i.createFolders=!0,i.date=null,i.compression=null,i.compressionOptions=null,i.comment=null,i.unixPermissions=null,i.dosPermissions=null},{}],6:[function(r,n,i){"use strict";var a=null;a=typeof Promise<"u"?Promise:r("lie"),n.exports={Promise:a}},{lie:37}],7:[function(r,n,i){"use strict";var a=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",l=r("pako"),o=r("./utils"),s=r("./stream/GenericWorker"),h=a?"uint8array":"array";function f(p,v){s.call(this,"FlateWorker/"+p),this._pako=null,this._pakoAction=p,this._pakoOptions=v,this.meta={}}i.magic="\b\0",o.inherits(f,s),f.prototype.processChunk=function(p){this.meta=p.meta,this._pako===null&&this._createPako(),this._pako.push(o.transformTo(h,p.data),!1)},f.prototype.flush=function(){s.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},f.prototype.cleanUp=function(){s.prototype.cleanUp.call(this),this._pako=null},f.prototype._createPako=function(){this._pako=new l[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var p=this;this._pako.onData=function(v){p.push({data:v,meta:p.meta})}},i.compressWorker=function(p){return new f("Deflate",p)},i.uncompressWorker=function(){return new f("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(r,n,i){"use strict";function a(m,g){var u,y="";for(u=0;u<g;u++)y+=String.fromCharCode(255&m),m>>>=8;return y}function l(m,g,u,y,b,Z){var I,w,G=m.file,K=m.compression,F=Z!==h.utf8encode,J=o.transformTo("string",Z(G.name)),R=o.transformTo("string",h.utf8encode(G.name)),X=G.comment,P=o.transformTo("string",Z(X)),V=o.transformTo("string",h.utf8encode(X)),k=R.length!==G.name.length,c=V.length!==X.length,_="",Q="",Y="",q=G.dir,C=G.date,ee={crc32:0,compressedSize:0,uncompressedSize:0};g&&!u||(ee.crc32=m.crc32,ee.compressedSize=m.compressedSize,ee.uncompressedSize=m.uncompressedSize);var U=0;g&&(U|=8),F||!k&&!c||(U|=2048);var W=0,$=0;q&&(W|=16),b==="UNIX"?($=798,W|=(function(M,ue){var fe=M;return M||(fe=ue?16893:33204),(65535&fe)<<16})(G.unixPermissions,q)):($=20,W|=(function(M){return 63&(M||0)})(G.dosPermissions)),I=C.getUTCHours(),I<<=6,I|=C.getUTCMinutes(),I<<=5,I|=C.getUTCSeconds()/2,w=C.getUTCFullYear()-1980,w<<=4,w|=C.getUTCMonth()+1,w<<=5,w|=C.getUTCDate(),k&&(Q=a(1,1)+a(f(J),4)+R,_+="up"+a(Q.length,2)+Q),c&&(Y=a(1,1)+a(f(P),4)+V,_+="uc"+a(Y.length,2)+Y);var j="";return j+=`
|
|
321
|
+
\0`,j+=a(U,2),j+=K.magic,j+=a(I,2),j+=a(w,2),j+=a(ee.crc32,4),j+=a(ee.compressedSize,4),j+=a(ee.uncompressedSize,4),j+=a(J.length,2),j+=a(_.length,2),{fileRecord:p.LOCAL_FILE_HEADER+j+J+_,dirRecord:p.CENTRAL_FILE_HEADER+a($,2)+j+a(P.length,2)+"\0\0\0\0"+a(W,4)+a(y,4)+J+_+P}}var o=r("../utils"),s=r("../stream/GenericWorker"),h=r("../utf8"),f=r("../crc32"),p=r("../signature");function v(m,g,u,y){s.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=g,this.zipPlatform=u,this.encodeFileName=y,this.streamFiles=m,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}o.inherits(v,s),v.prototype.push=function(m){var g=m.meta.percent||0,u=this.entriesCount,y=this._sources.length;this.accumulate?this.contentBuffer.push(m):(this.bytesWritten+=m.data.length,s.prototype.push.call(this,{data:m.data,meta:{currentFile:this.currentFile,percent:u?(g+100*(u-y-1))/u:100}}))},v.prototype.openedSource=function(m){this.currentSourceOffset=this.bytesWritten,this.currentFile=m.file.name;var g=this.streamFiles&&!m.file.dir;if(g){var u=l(m,g,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:u.fileRecord,meta:{percent:0}})}else this.accumulate=!0},v.prototype.closedSource=function(m){this.accumulate=!1;var g=this.streamFiles&&!m.file.dir,u=l(m,g,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(u.dirRecord),g)this.push({data:(function(y){return p.DATA_DESCRIPTOR+a(y.crc32,4)+a(y.compressedSize,4)+a(y.uncompressedSize,4)})(m),meta:{percent:100}});else for(this.push({data:u.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},v.prototype.flush=function(){for(var m=this.bytesWritten,g=0;g<this.dirRecords.length;g++)this.push({data:this.dirRecords[g],meta:{percent:100}});var u=this.bytesWritten-m,y=(function(b,Z,I,w,G){var K=o.transformTo("string",G(w));return p.CENTRAL_DIRECTORY_END+"\0\0\0\0"+a(b,2)+a(b,2)+a(Z,4)+a(I,4)+a(K.length,2)+K})(this.dirRecords.length,u,m,this.zipComment,this.encodeFileName);this.push({data:y,meta:{percent:100}})},v.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},v.prototype.registerPrevious=function(m){this._sources.push(m);var g=this;return m.on("data",function(u){g.processChunk(u)}),m.on("end",function(){g.closedSource(g.previous.streamInfo),g._sources.length?g.prepareNextSource():g.end()}),m.on("error",function(u){g.error(u)}),this},v.prototype.resume=function(){return!!s.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},v.prototype.error=function(m){var g=this._sources;if(!s.prototype.error.call(this,m))return!1;for(var u=0;u<g.length;u++)try{g[u].error(m)}catch{}return!0},v.prototype.lock=function(){s.prototype.lock.call(this);for(var m=this._sources,g=0;g<m.length;g++)m[g].lock()},n.exports=v},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(r,n,i){"use strict";var a=r("../compressions"),l=r("./ZipFileWorker");i.generateWorker=function(o,s,h){var f=new l(s.streamFiles,h,s.platform,s.encodeFileName),p=0;try{o.forEach(function(v,m){p++;var g=(function(Z,I){var w=Z||I,G=a[w];if(!G)throw new Error(w+" is not a valid compression method !");return G})(m.options.compression,s.compression),u=m.options.compressionOptions||s.compressionOptions||{},y=m.dir,b=m.date;m._compressWorker(g,u).withStreamInfo("file",{name:v,dir:y,date:b,comment:m.comment||"",unixPermissions:m.unixPermissions,dosPermissions:m.dosPermissions}).pipe(f)}),f.entriesCount=p}catch(v){f.error(v)}return f}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(r,n,i){"use strict";function a(){if(!(this instanceof a))return new a;if(arguments.length)throw new Error("The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.");this.files=Object.create(null),this.comment=null,this.root="",this.clone=function(){var l=new a;for(var o in this)typeof this[o]!="function"&&(l[o]=this[o]);return l}}(a.prototype=r("./object")).loadAsync=r("./load"),a.support=r("./support"),a.defaults=r("./defaults"),a.version="3.10.1",a.loadAsync=function(l,o){return new a().loadAsync(l,o)},a.external=r("./external"),n.exports=a},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(r,n,i){"use strict";var a=r("./utils"),l=r("./external"),o=r("./utf8"),s=r("./zipEntries"),h=r("./stream/Crc32Probe"),f=r("./nodejsUtils");function p(v){return new l.Promise(function(m,g){var u=v.decompressed.getContentWorker().pipe(new h);u.on("error",function(y){g(y)}).on("end",function(){u.streamInfo.crc32!==v.decompressed.crc32?g(new Error("Corrupted zip : CRC32 mismatch")):m()}).resume()})}n.exports=function(v,m){var g=this;return m=a.extend(m||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:o.utf8decode}),f.isNode&&f.isStream(v)?l.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):a.prepareContent("the loaded zip file",v,!0,m.optimizedBinaryString,m.base64).then(function(u){var y=new s(m);return y.load(u),y}).then(function(u){var y=[l.Promise.resolve(u)],b=u.files;if(m.checkCRC32)for(var Z=0;Z<b.length;Z++)y.push(p(b[Z]));return l.Promise.all(y)}).then(function(u){for(var y=u.shift(),b=y.files,Z=0;Z<b.length;Z++){var I=b[Z],w=I.fileNameStr,G=a.resolve(I.fileNameStr);g.file(G,I.decompressed,{binary:!0,optimizedBinaryString:!0,date:I.date,dir:I.dir,comment:I.fileCommentStr.length?I.fileCommentStr:null,unixPermissions:I.unixPermissions,dosPermissions:I.dosPermissions,createFolders:m.createFolders}),I.dir||(g.file(G).unsafeOriginalName=w)}return y.zipComment.length&&(g.comment=y.zipComment),g})}},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(r,n,i){"use strict";var a=r("../utils"),l=r("../stream/GenericWorker");function o(s,h){l.call(this,"Nodejs stream input adapter for "+s),this._upstreamEnded=!1,this._bindStream(h)}a.inherits(o,l),o.prototype._bindStream=function(s){var h=this;(this._stream=s).pause(),s.on("data",function(f){h.push({data:f,meta:{percent:0}})}).on("error",function(f){h.isPaused?this.generatedError=f:h.error(f)}).on("end",function(){h.isPaused?h._upstreamEnded=!0:h.end()})},o.prototype.pause=function(){return!!l.prototype.pause.call(this)&&(this._stream.pause(),!0)},o.prototype.resume=function(){return!!l.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},n.exports=o},{"../stream/GenericWorker":28,"../utils":32}],13:[function(r,n,i){"use strict";var a=r("readable-stream").Readable;function l(o,s,h){a.call(this,s),this._helper=o;var f=this;o.on("data",function(p,v){f.push(p)||f._helper.pause(),h&&h(v)}).on("error",function(p){f.emit("error",p)}).on("end",function(){f.push(null)})}r("../utils").inherits(l,a),l.prototype._read=function(){this._helper.resume()},n.exports=l},{"../utils":32,"readable-stream":16}],14:[function(r,n,i){"use strict";n.exports={isNode:typeof Buffer<"u",newBufferFrom:function(a,l){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(a,l);if(typeof a=="number")throw new Error('The "data" argument must not be a number');return new Buffer(a,l)},allocBuffer:function(a){if(Buffer.alloc)return Buffer.alloc(a);var l=new Buffer(a);return l.fill(0),l},isBuffer:function(a){return Buffer.isBuffer(a)},isStream:function(a){return a&&typeof a.on=="function"&&typeof a.pause=="function"&&typeof a.resume=="function"}}},{}],15:[function(r,n,i){"use strict";function a(w,G,K){var F,J=o.getTypeOf(G),R=o.extend(K||{},f);R.date=R.date||new Date,R.compression!==null&&(R.compression=R.compression.toUpperCase()),typeof R.unixPermissions=="string"&&(R.unixPermissions=parseInt(R.unixPermissions,8)),R.unixPermissions&&16384&R.unixPermissions&&(R.dir=!0),R.dosPermissions&&16&R.dosPermissions&&(R.dir=!0),R.dir&&(w=b(w)),R.createFolders&&(F=y(w))&&Z.call(this,F,!0);var X=J==="string"&&R.binary===!1&&R.base64===!1;K&&K.binary!==void 0||(R.binary=!X),(G instanceof p&&G.uncompressedSize===0||R.dir||!G||G.length===0)&&(R.base64=!1,R.binary=!0,G="",R.compression="STORE",J="string");var P=null;P=G instanceof p||G instanceof s?G:g.isNode&&g.isStream(G)?new u(w,G):o.prepareContent(w,G,R.binary,R.optimizedBinaryString,R.base64);var V=new v(w,P,R);this.files[w]=V}var l=r("./utf8"),o=r("./utils"),s=r("./stream/GenericWorker"),h=r("./stream/StreamHelper"),f=r("./defaults"),p=r("./compressedObject"),v=r("./zipObject"),m=r("./generate"),g=r("./nodejsUtils"),u=r("./nodejs/NodejsStreamInputAdapter"),y=function(w){w.slice(-1)==="/"&&(w=w.substring(0,w.length-1));var G=w.lastIndexOf("/");return 0<G?w.substring(0,G):""},b=function(w){return w.slice(-1)!=="/"&&(w+="/"),w},Z=function(w,G){return G=G!==void 0?G:f.createFolders,w=b(w),this.files[w]||a.call(this,w,null,{dir:!0,createFolders:G}),this.files[w]};function I(w){return Object.prototype.toString.call(w)==="[object RegExp]"}n.exports={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(w){var G,K,F;for(G in this.files)F=this.files[G],(K=G.slice(this.root.length,G.length))&&G.slice(0,this.root.length)===this.root&&w(K,F)},filter:function(w){var G=[];return this.forEach(function(K,F){w(K,F)&&G.push(F)}),G},file:function(w,G,K){if(arguments.length!==1)return w=this.root+w,a.call(this,w,G,K),this;if(I(w)){var F=w;return this.filter(function(R,X){return!X.dir&&F.test(R)})}var J=this.files[this.root+w];return J&&!J.dir?J:null},folder:function(w){if(!w)return this;if(I(w))return this.filter(function(J,R){return R.dir&&w.test(J)});var G=this.root+w,K=Z.call(this,G),F=this.clone();return F.root=K.name,F},remove:function(w){w=this.root+w;var G=this.files[w];if(G||(w.slice(-1)!=="/"&&(w+="/"),G=this.files[w]),G&&!G.dir)delete this.files[w];else for(var K=this.filter(function(J,R){return R.name.slice(0,w.length)===w}),F=0;F<K.length;F++)delete this.files[K[F].name];return this},generate:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(w){var G,K={};try{if((K=o.extend(w||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:l.utf8encode})).type=K.type.toLowerCase(),K.compression=K.compression.toUpperCase(),K.type==="binarystring"&&(K.type="string"),!K.type)throw new Error("No output type specified.");o.checkSupport(K.type),K.platform!=="darwin"&&K.platform!=="freebsd"&&K.platform!=="linux"&&K.platform!=="sunos"||(K.platform="UNIX"),K.platform==="win32"&&(K.platform="DOS");var F=K.comment||this.comment||"";G=m.generateWorker(this,K,F)}catch(J){(G=new s("error")).error(J)}return new h(G,K.type||"string",K.mimeType)},generateAsync:function(w,G){return this.generateInternalStream(w).accumulate(G)},generateNodeStream:function(w,G){return(w=w||{}).type||(w.type="nodebuffer"),this.generateInternalStream(w).toNodejsStream(G)}}},{"./compressedObject":2,"./defaults":5,"./generate":9,"./nodejs/NodejsStreamInputAdapter":12,"./nodejsUtils":14,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31,"./utils":32,"./zipObject":35}],16:[function(r,n,i){"use strict";n.exports=r("stream")},{stream:void 0}],17:[function(r,n,i){"use strict";var a=r("./DataReader");function l(o){a.call(this,o);for(var s=0;s<this.data.length;s++)o[s]=255&o[s]}r("../utils").inherits(l,a),l.prototype.byteAt=function(o){return this.data[this.zero+o]},l.prototype.lastIndexOfSignature=function(o){for(var s=o.charCodeAt(0),h=o.charCodeAt(1),f=o.charCodeAt(2),p=o.charCodeAt(3),v=this.length-4;0<=v;--v)if(this.data[v]===s&&this.data[v+1]===h&&this.data[v+2]===f&&this.data[v+3]===p)return v-this.zero;return-1},l.prototype.readAndCheckSignature=function(o){var s=o.charCodeAt(0),h=o.charCodeAt(1),f=o.charCodeAt(2),p=o.charCodeAt(3),v=this.readData(4);return s===v[0]&&h===v[1]&&f===v[2]&&p===v[3]},l.prototype.readData=function(o){if(this.checkOffset(o),o===0)return[];var s=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,s},n.exports=l},{"../utils":32,"./DataReader":18}],18:[function(r,n,i){"use strict";var a=r("../utils");function l(o){this.data=o,this.length=o.length,this.index=0,this.zero=0}l.prototype={checkOffset:function(o){this.checkIndex(this.index+o)},checkIndex:function(o){if(this.length<this.zero+o||o<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+o+"). Corrupted zip ?")},setIndex:function(o){this.checkIndex(o),this.index=o},skip:function(o){this.setIndex(this.index+o)},byteAt:function(){},readInt:function(o){var s,h=0;for(this.checkOffset(o),s=this.index+o-1;s>=this.index;s--)h=(h<<8)+this.byteAt(s);return this.index+=o,h},readString:function(o){return a.transformTo("string",this.readData(o))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var o=this.readInt(4);return new Date(Date.UTC(1980+(o>>25&127),(o>>21&15)-1,o>>16&31,o>>11&31,o>>5&63,(31&o)<<1))}},n.exports=l},{"../utils":32}],19:[function(r,n,i){"use strict";var a=r("./Uint8ArrayReader");function l(o){a.call(this,o)}r("../utils").inherits(l,a),l.prototype.readData=function(o){this.checkOffset(o);var s=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,s},n.exports=l},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(r,n,i){"use strict";var a=r("./DataReader");function l(o){a.call(this,o)}r("../utils").inherits(l,a),l.prototype.byteAt=function(o){return this.data.charCodeAt(this.zero+o)},l.prototype.lastIndexOfSignature=function(o){return this.data.lastIndexOf(o)-this.zero},l.prototype.readAndCheckSignature=function(o){return o===this.readData(4)},l.prototype.readData=function(o){this.checkOffset(o);var s=this.data.slice(this.zero+this.index,this.zero+this.index+o);return this.index+=o,s},n.exports=l},{"../utils":32,"./DataReader":18}],21:[function(r,n,i){"use strict";var a=r("./ArrayReader");function l(o){a.call(this,o)}r("../utils").inherits(l,a),l.prototype.readData=function(o){if(this.checkOffset(o),o===0)return new Uint8Array(0);var s=this.data.subarray(this.zero+this.index,this.zero+this.index+o);return this.index+=o,s},n.exports=l},{"../utils":32,"./ArrayReader":17}],22:[function(r,n,i){"use strict";var a=r("../utils"),l=r("../support"),o=r("./ArrayReader"),s=r("./StringReader"),h=r("./NodeBufferReader"),f=r("./Uint8ArrayReader");n.exports=function(p){var v=a.getTypeOf(p);return a.checkSupport(v),v!=="string"||l.uint8array?v==="nodebuffer"?new h(p):l.uint8array?new f(a.transformTo("uint8array",p)):new o(a.transformTo("array",p)):new s(p)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(r,n,i){"use strict";i.LOCAL_FILE_HEADER="PK",i.CENTRAL_FILE_HEADER="PK",i.CENTRAL_DIRECTORY_END="PK",i.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",i.ZIP64_CENTRAL_DIRECTORY_END="PK",i.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(r,n,i){"use strict";var a=r("./GenericWorker"),l=r("../utils");function o(s){a.call(this,"ConvertWorker to "+s),this.destType=s}l.inherits(o,a),o.prototype.processChunk=function(s){this.push({data:l.transformTo(this.destType,s.data),meta:s.meta})},n.exports=o},{"../utils":32,"./GenericWorker":28}],25:[function(r,n,i){"use strict";var a=r("./GenericWorker"),l=r("../crc32");function o(){a.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}r("../utils").inherits(o,a),o.prototype.processChunk=function(s){this.streamInfo.crc32=l(s.data,this.streamInfo.crc32||0),this.push(s)},n.exports=o},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(r,n,i){"use strict";var a=r("../utils"),l=r("./GenericWorker");function o(s){l.call(this,"DataLengthProbe for "+s),this.propName=s,this.withStreamInfo(s,0)}a.inherits(o,l),o.prototype.processChunk=function(s){if(s){var h=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=h+s.data.length}l.prototype.processChunk.call(this,s)},n.exports=o},{"../utils":32,"./GenericWorker":28}],27:[function(r,n,i){"use strict";var a=r("../utils"),l=r("./GenericWorker");function o(s){l.call(this,"DataWorker");var h=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,s.then(function(f){h.dataIsReady=!0,h.data=f,h.max=f&&f.length||0,h.type=a.getTypeOf(f),h.isPaused||h._tickAndRepeat()},function(f){h.error(f)})}a.inherits(o,l),o.prototype.cleanUp=function(){l.prototype.cleanUp.call(this),this.data=null},o.prototype.resume=function(){return!!l.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,a.delay(this._tickAndRepeat,[],this)),!0)},o.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(a.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},o.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var s=null,h=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":s=this.data.substring(this.index,h);break;case"uint8array":s=this.data.subarray(this.index,h);break;case"array":case"nodebuffer":s=this.data.slice(this.index,h)}return this.index=h,this.push({data:s,meta:{percent:this.max?this.index/this.max*100:0}})},n.exports=o},{"../utils":32,"./GenericWorker":28}],28:[function(r,n,i){"use strict";function a(l){this.name=l||"default",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}a.prototype={push:function(l){this.emit("data",l)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit("end"),this.cleanUp(),this.isFinished=!0}catch(l){this.emit("error",l)}return!0},error:function(l){return!this.isFinished&&(this.isPaused?this.generatedError=l:(this.isFinished=!0,this.emit("error",l),this.previous&&this.previous.error(l),this.cleanUp()),!0)},on:function(l,o){return this._listeners[l].push(o),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(l,o){if(this._listeners[l])for(var s=0;s<this._listeners[l].length;s++)this._listeners[l][s].call(this,o)},pipe:function(l){return l.registerPrevious(this)},registerPrevious:function(l){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.streamInfo=l.streamInfo,this.mergeStreamInfo(),this.previous=l;var o=this;return l.on("data",function(s){o.processChunk(s)}),l.on("end",function(){o.end()}),l.on("error",function(s){o.error(s)}),this},pause:function(){return!this.isPaused&&!this.isFinished&&(this.isPaused=!0,this.previous&&this.previous.pause(),!0)},resume:function(){if(!this.isPaused||this.isFinished)return!1;var l=this.isPaused=!1;return this.generatedError&&(this.error(this.generatedError),l=!0),this.previous&&this.previous.resume(),!l},flush:function(){},processChunk:function(l){this.push(l)},withStreamInfo:function(l,o){return this.extraStreamInfo[l]=o,this.mergeStreamInfo(),this},mergeStreamInfo:function(){for(var l in this.extraStreamInfo)Object.prototype.hasOwnProperty.call(this.extraStreamInfo,l)&&(this.streamInfo[l]=this.extraStreamInfo[l])},lock:function(){if(this.isLocked)throw new Error("The stream '"+this+"' has already been used.");this.isLocked=!0,this.previous&&this.previous.lock()},toString:function(){var l="Worker "+this.name;return this.previous?this.previous+" -> "+l:l}},n.exports=a},{}],29:[function(r,n,i){"use strict";var a=r("../utils"),l=r("./ConvertWorker"),o=r("./GenericWorker"),s=r("../base64"),h=r("../support"),f=r("../external"),p=null;if(h.nodestream)try{p=r("../nodejs/NodejsStreamOutputAdapter")}catch{}function v(g,u){return new f.Promise(function(y,b){var Z=[],I=g._internalType,w=g._outputType,G=g._mimeType;g.on("data",function(K,F){Z.push(K),u&&u(F)}).on("error",function(K){Z=[],b(K)}).on("end",function(){try{y((function(K,F,J){switch(K){case"blob":return a.newBlob(a.transformTo("arraybuffer",F),J);case"base64":return s.encode(F);default:return a.transformTo(K,F)}})(w,(function(K,F){var J,R=0,X=null,P=0;for(J=0;J<F.length;J++)P+=F[J].length;switch(K){case"string":return F.join("");case"array":return Array.prototype.concat.apply([],F);case"uint8array":for(X=new Uint8Array(P),J=0;J<F.length;J++)X.set(F[J],R),R+=F[J].length;return X;case"nodebuffer":return Buffer.concat(F);default:throw new Error("concat : unsupported type '"+K+"'")}})(I,Z),G))}catch(K){b(K)}Z=[]}).resume()})}function m(g,u,y){var b=u;switch(u){case"blob":case"arraybuffer":b="uint8array";break;case"base64":b="string"}try{this._internalType=b,this._outputType=u,this._mimeType=y,a.checkSupport(b),this._worker=g.pipe(new l(b)),g.lock()}catch(Z){this._worker=new o("error"),this._worker.error(Z)}}m.prototype={accumulate:function(g){return v(this,g)},on:function(g,u){var y=this;return g==="data"?this._worker.on(g,function(b){u.call(y,b.data,b.meta)}):this._worker.on(g,function(){a.delay(u,arguments,y)}),this},resume:function(){return a.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(g){if(a.checkSupport("nodestream"),this._outputType!=="nodebuffer")throw new Error(this._outputType+" is not supported by this method");return new p(this,{objectMode:this._outputType!=="nodebuffer"},g)}},n.exports=m},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(r,n,i){"use strict";if(i.base64=!0,i.array=!0,i.string=!0,i.arraybuffer=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u",i.nodebuffer=typeof Buffer<"u",i.uint8array=typeof Uint8Array<"u",typeof ArrayBuffer>"u")i.blob=!1;else{var a=new ArrayBuffer(0);try{i.blob=new Blob([a],{type:"application/zip"}).size===0}catch{try{var l=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);l.append(a),i.blob=l.getBlob("application/zip").size===0}catch{i.blob=!1}}}try{i.nodestream=!!r("readable-stream").Readable}catch{i.nodestream=!1}},{"readable-stream":16}],31:[function(r,n,i){"use strict";for(var a=r("./utils"),l=r("./support"),o=r("./nodejsUtils"),s=r("./stream/GenericWorker"),h=new Array(256),f=0;f<256;f++)h[f]=252<=f?6:248<=f?5:240<=f?4:224<=f?3:192<=f?2:1;h[254]=h[254]=1;function p(){s.call(this,"utf-8 decode"),this.leftOver=null}function v(){s.call(this,"utf-8 encode")}i.utf8encode=function(m){return l.nodebuffer?o.newBufferFrom(m,"utf-8"):(function(g){var u,y,b,Z,I,w=g.length,G=0;for(Z=0;Z<w;Z++)(64512&(y=g.charCodeAt(Z)))==55296&&Z+1<w&&(64512&(b=g.charCodeAt(Z+1)))==56320&&(y=65536+(y-55296<<10)+(b-56320),Z++),G+=y<128?1:y<2048?2:y<65536?3:4;for(u=l.uint8array?new Uint8Array(G):new Array(G),Z=I=0;I<G;Z++)(64512&(y=g.charCodeAt(Z)))==55296&&Z+1<w&&(64512&(b=g.charCodeAt(Z+1)))==56320&&(y=65536+(y-55296<<10)+(b-56320),Z++),y<128?u[I++]=y:(y<2048?u[I++]=192|y>>>6:(y<65536?u[I++]=224|y>>>12:(u[I++]=240|y>>>18,u[I++]=128|y>>>12&63),u[I++]=128|y>>>6&63),u[I++]=128|63&y);return u})(m)},i.utf8decode=function(m){return l.nodebuffer?a.transformTo("nodebuffer",m).toString("utf-8"):(function(g){var u,y,b,Z,I=g.length,w=new Array(2*I);for(u=y=0;u<I;)if((b=g[u++])<128)w[y++]=b;else if(4<(Z=h[b]))w[y++]=65533,u+=Z-1;else{for(b&=Z===2?31:Z===3?15:7;1<Z&&u<I;)b=b<<6|63&g[u++],Z--;1<Z?w[y++]=65533:b<65536?w[y++]=b:(b-=65536,w[y++]=55296|b>>10&1023,w[y++]=56320|1023&b)}return w.length!==y&&(w.subarray?w=w.subarray(0,y):w.length=y),a.applyFromCharCode(w)})(m=a.transformTo(l.uint8array?"uint8array":"array",m))},a.inherits(p,s),p.prototype.processChunk=function(m){var g=a.transformTo(l.uint8array?"uint8array":"array",m.data);if(this.leftOver&&this.leftOver.length){if(l.uint8array){var u=g;(g=new Uint8Array(u.length+this.leftOver.length)).set(this.leftOver,0),g.set(u,this.leftOver.length)}else g=this.leftOver.concat(g);this.leftOver=null}var y=(function(Z,I){var w;for((I=I||Z.length)>Z.length&&(I=Z.length),w=I-1;0<=w&&(192&Z[w])==128;)w--;return w<0||w===0?I:w+h[Z[w]]>I?w:I})(g),b=g;y!==g.length&&(l.uint8array?(b=g.subarray(0,y),this.leftOver=g.subarray(y,g.length)):(b=g.slice(0,y),this.leftOver=g.slice(y,g.length))),this.push({data:i.utf8decode(b),meta:m.meta})},p.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:i.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},i.Utf8DecodeWorker=p,a.inherits(v,s),v.prototype.processChunk=function(m){this.push({data:i.utf8encode(m.data),meta:m.meta})},i.Utf8EncodeWorker=v},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(r,n,i){"use strict";var a=r("./support"),l=r("./base64"),o=r("./nodejsUtils"),s=r("./external");function h(u){return u}function f(u,y){for(var b=0;b<u.length;++b)y[b]=255&u.charCodeAt(b);return y}r("setimmediate"),i.newBlob=function(u,y){i.checkSupport("blob");try{return new Blob([u],{type:y})}catch{try{var b=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return b.append(u),b.getBlob(y)}catch{throw new Error("Bug : can't construct the Blob.")}}};var p={stringifyByChunk:function(u,y,b){var Z=[],I=0,w=u.length;if(w<=b)return String.fromCharCode.apply(null,u);for(;I<w;)y==="array"||y==="nodebuffer"?Z.push(String.fromCharCode.apply(null,u.slice(I,Math.min(I+b,w)))):Z.push(String.fromCharCode.apply(null,u.subarray(I,Math.min(I+b,w)))),I+=b;return Z.join("")},stringifyByChar:function(u){for(var y="",b=0;b<u.length;b++)y+=String.fromCharCode(u[b]);return y},applyCanBeUsed:{uint8array:(function(){try{return a.uint8array&&String.fromCharCode.apply(null,new Uint8Array(1)).length===1}catch{return!1}})(),nodebuffer:(function(){try{return a.nodebuffer&&String.fromCharCode.apply(null,o.allocBuffer(1)).length===1}catch{return!1}})()}};function v(u){var y=65536,b=i.getTypeOf(u),Z=!0;if(b==="uint8array"?Z=p.applyCanBeUsed.uint8array:b==="nodebuffer"&&(Z=p.applyCanBeUsed.nodebuffer),Z)for(;1<y;)try{return p.stringifyByChunk(u,b,y)}catch{y=Math.floor(y/2)}return p.stringifyByChar(u)}function m(u,y){for(var b=0;b<u.length;b++)y[b]=u[b];return y}i.applyFromCharCode=v;var g={};g.string={string:h,array:function(u){return f(u,new Array(u.length))},arraybuffer:function(u){return g.string.uint8array(u).buffer},uint8array:function(u){return f(u,new Uint8Array(u.length))},nodebuffer:function(u){return f(u,o.allocBuffer(u.length))}},g.array={string:v,array:h,arraybuffer:function(u){return new Uint8Array(u).buffer},uint8array:function(u){return new Uint8Array(u)},nodebuffer:function(u){return o.newBufferFrom(u)}},g.arraybuffer={string:function(u){return v(new Uint8Array(u))},array:function(u){return m(new Uint8Array(u),new Array(u.byteLength))},arraybuffer:h,uint8array:function(u){return new Uint8Array(u)},nodebuffer:function(u){return o.newBufferFrom(new Uint8Array(u))}},g.uint8array={string:v,array:function(u){return m(u,new Array(u.length))},arraybuffer:function(u){return u.buffer},uint8array:h,nodebuffer:function(u){return o.newBufferFrom(u)}},g.nodebuffer={string:v,array:function(u){return m(u,new Array(u.length))},arraybuffer:function(u){return g.nodebuffer.uint8array(u).buffer},uint8array:function(u){return m(u,new Uint8Array(u.length))},nodebuffer:h},i.transformTo=function(u,y){return y=y||"",u?(i.checkSupport(u),g[i.getTypeOf(y)][u](y)):y},i.resolve=function(u){for(var y=u.split("/"),b=[],Z=0;Z<y.length;Z++){var I=y[Z];I==="."||I===""&&Z!==0&&Z!==y.length-1||(I===".."?b.pop():b.push(I))}return b.join("/")},i.getTypeOf=function(u){return typeof u=="string"?"string":Object.prototype.toString.call(u)==="[object Array]"?"array":a.nodebuffer&&o.isBuffer(u)?"nodebuffer":a.uint8array&&u instanceof Uint8Array?"uint8array":a.arraybuffer&&u instanceof ArrayBuffer?"arraybuffer":void 0},i.checkSupport=function(u){if(!a[u.toLowerCase()])throw new Error(u+" is not supported by this platform")},i.MAX_VALUE_16BITS=65535,i.MAX_VALUE_32BITS=-1,i.pretty=function(u){var y,b,Z="";for(b=0;b<(u||"").length;b++)Z+="\\x"+((y=u.charCodeAt(b))<16?"0":"")+y.toString(16).toUpperCase();return Z},i.delay=function(u,y,b){setImmediate(function(){u.apply(b||null,y||[])})},i.inherits=function(u,y){function b(){}b.prototype=y.prototype,u.prototype=new b},i.extend=function(){var u,y,b={};for(u=0;u<arguments.length;u++)for(y in arguments[u])Object.prototype.hasOwnProperty.call(arguments[u],y)&&b[y]===void 0&&(b[y]=arguments[u][y]);return b},i.prepareContent=function(u,y,b,Z,I){return s.Promise.resolve(y).then(function(w){return a.blob&&(w instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(w))!==-1)&&typeof FileReader<"u"?new s.Promise(function(G,K){var F=new FileReader;F.onload=function(J){G(J.target.result)},F.onerror=function(J){K(J.target.error)},F.readAsArrayBuffer(w)}):w}).then(function(w){var G=i.getTypeOf(w);return G?(G==="arraybuffer"?w=i.transformTo("uint8array",w):G==="string"&&(I?w=l.decode(w):b&&Z!==!0&&(w=(function(K){return f(K,a.uint8array?new Uint8Array(K.length):new Array(K.length))})(w))),w):s.Promise.reject(new Error("Can't read the data of '"+u+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,setimmediate:54}],33:[function(r,n,i){"use strict";var a=r("./reader/readerFor"),l=r("./utils"),o=r("./signature"),s=r("./zipEntry"),h=r("./support");function f(p){this.files=[],this.loadOptions=p}f.prototype={checkSignature:function(p){if(!this.reader.readAndCheckSignature(p)){this.reader.index-=4;var v=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+l.pretty(v)+", expected "+l.pretty(p)+")")}},isSignature:function(p,v){var m=this.reader.index;this.reader.setIndex(p);var g=this.reader.readString(4)===v;return this.reader.setIndex(m),g},readBlockEndOfCentral:function(){this.diskNumber=this.reader.readInt(2),this.diskWithCentralDirStart=this.reader.readInt(2),this.centralDirRecordsOnThisDisk=this.reader.readInt(2),this.centralDirRecords=this.reader.readInt(2),this.centralDirSize=this.reader.readInt(4),this.centralDirOffset=this.reader.readInt(4),this.zipCommentLength=this.reader.readInt(2);var p=this.reader.readData(this.zipCommentLength),v=h.uint8array?"uint8array":"array",m=l.transformTo(v,p);this.zipComment=this.loadOptions.decodeFileName(m)},readBlockZip64EndOfCentral:function(){this.zip64EndOfCentralSize=this.reader.readInt(8),this.reader.skip(4),this.diskNumber=this.reader.readInt(4),this.diskWithCentralDirStart=this.reader.readInt(4),this.centralDirRecordsOnThisDisk=this.reader.readInt(8),this.centralDirRecords=this.reader.readInt(8),this.centralDirSize=this.reader.readInt(8),this.centralDirOffset=this.reader.readInt(8),this.zip64ExtensibleData={};for(var p,v,m,g=this.zip64EndOfCentralSize-44;0<g;)p=this.reader.readInt(2),v=this.reader.readInt(4),m=this.reader.readData(v),this.zip64ExtensibleData[p]={id:p,length:v,value:m}},readBlockZip64EndOfCentralLocator:function(){if(this.diskWithZip64CentralDirStart=this.reader.readInt(4),this.relativeOffsetEndOfZip64CentralDir=this.reader.readInt(8),this.disksCount=this.reader.readInt(4),1<this.disksCount)throw new Error("Multi-volumes zip are not supported")},readLocalFiles:function(){var p,v;for(p=0;p<this.files.length;p++)v=this.files[p],this.reader.setIndex(v.localHeaderOffset),this.checkSignature(o.LOCAL_FILE_HEADER),v.readLocalPart(this.reader),v.handleUTF8(),v.processAttributes()},readCentralDir:function(){var p;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(o.CENTRAL_FILE_HEADER);)(p=new s({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(p);if(this.centralDirRecords!==this.files.length&&this.centralDirRecords!==0&&this.files.length===0)throw new Error("Corrupted zip or bug: expected "+this.centralDirRecords+" records in central dir, got "+this.files.length)},readEndOfCentral:function(){var p=this.reader.lastIndexOfSignature(o.CENTRAL_DIRECTORY_END);if(p<0)throw this.isSignature(0,o.LOCAL_FILE_HEADER)?new Error("Corrupted zip: can't find end of central directory"):new Error("Can't find end of central directory : is this a zip file ? If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html");this.reader.setIndex(p);var v=p;if(this.checkSignature(o.CENTRAL_DIRECTORY_END),this.readBlockEndOfCentral(),this.diskNumber===l.MAX_VALUE_16BITS||this.diskWithCentralDirStart===l.MAX_VALUE_16BITS||this.centralDirRecordsOnThisDisk===l.MAX_VALUE_16BITS||this.centralDirRecords===l.MAX_VALUE_16BITS||this.centralDirSize===l.MAX_VALUE_32BITS||this.centralDirOffset===l.MAX_VALUE_32BITS){if(this.zip64=!0,(p=this.reader.lastIndexOfSignature(o.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(p),this.checkSignature(o.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,o.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(o.ZIP64_CENTRAL_DIRECTORY_END),this.relativeOffsetEndOfZip64CentralDir<0))throw new Error("Corrupted zip: can't find the ZIP64 end of central directory");this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir),this.checkSignature(o.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var m=this.centralDirOffset+this.centralDirSize;this.zip64&&(m+=20,m+=12+this.zip64EndOfCentralSize);var g=v-m;if(0<g)this.isSignature(v,o.CENTRAL_FILE_HEADER)||(this.reader.zero=g);else if(g<0)throw new Error("Corrupted zip: missing "+Math.abs(g)+" bytes.")},prepareReader:function(p){this.reader=a(p)},load:function(p){this.prepareReader(p),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},n.exports=f},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utils":32,"./zipEntry":34}],34:[function(r,n,i){"use strict";var a=r("./reader/readerFor"),l=r("./utils"),o=r("./compressedObject"),s=r("./crc32"),h=r("./utf8"),f=r("./compressions"),p=r("./support");function v(m,g){this.options=m,this.loadOptions=g}v.prototype={isEncrypted:function(){return(1&this.bitFlag)==1},useUTF8:function(){return(2048&this.bitFlag)==2048},readLocalPart:function(m){var g,u;if(m.skip(22),this.fileNameLength=m.readInt(2),u=m.readInt(2),this.fileName=m.readData(this.fileNameLength),m.skip(u),this.compressedSize===-1||this.uncompressedSize===-1)throw new Error("Bug or corrupted zip : didn't get enough information from the central directory (compressedSize === -1 || uncompressedSize === -1)");if((g=(function(y){for(var b in f)if(Object.prototype.hasOwnProperty.call(f,b)&&f[b].magic===y)return f[b];return null})(this.compressionMethod))===null)throw new Error("Corrupted zip : compression "+l.pretty(this.compressionMethod)+" unknown (inner file : "+l.transformTo("string",this.fileName)+")");this.decompressed=new o(this.compressedSize,this.uncompressedSize,this.crc32,g,m.readData(this.compressedSize))},readCentralPart:function(m){this.versionMadeBy=m.readInt(2),m.skip(2),this.bitFlag=m.readInt(2),this.compressionMethod=m.readString(2),this.date=m.readDate(),this.crc32=m.readInt(4),this.compressedSize=m.readInt(4),this.uncompressedSize=m.readInt(4);var g=m.readInt(2);if(this.extraFieldsLength=m.readInt(2),this.fileCommentLength=m.readInt(2),this.diskNumberStart=m.readInt(2),this.internalFileAttributes=m.readInt(2),this.externalFileAttributes=m.readInt(4),this.localHeaderOffset=m.readInt(4),this.isEncrypted())throw new Error("Encrypted zip are not supported");m.skip(g),this.readExtraFields(m),this.parseZIP64ExtraField(m),this.fileComment=m.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var m=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),m==0&&(this.dosPermissions=63&this.externalFileAttributes),m==3&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||this.fileNameStr.slice(-1)!=="/"||(this.dir=!0)},parseZIP64ExtraField:function(){if(this.extraFields[1]){var m=a(this.extraFields[1].value);this.uncompressedSize===l.MAX_VALUE_32BITS&&(this.uncompressedSize=m.readInt(8)),this.compressedSize===l.MAX_VALUE_32BITS&&(this.compressedSize=m.readInt(8)),this.localHeaderOffset===l.MAX_VALUE_32BITS&&(this.localHeaderOffset=m.readInt(8)),this.diskNumberStart===l.MAX_VALUE_32BITS&&(this.diskNumberStart=m.readInt(4))}},readExtraFields:function(m){var g,u,y,b=m.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});m.index+4<b;)g=m.readInt(2),u=m.readInt(2),y=m.readData(u),this.extraFields[g]={id:g,length:u,value:y};m.setIndex(b)},handleUTF8:function(){var m=p.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=h.utf8decode(this.fileName),this.fileCommentStr=h.utf8decode(this.fileComment);else{var g=this.findExtraFieldUnicodePath();if(g!==null)this.fileNameStr=g;else{var u=l.transformTo(m,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(u)}var y=this.findExtraFieldUnicodeComment();if(y!==null)this.fileCommentStr=y;else{var b=l.transformTo(m,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(b)}}},findExtraFieldUnicodePath:function(){var m=this.extraFields[28789];if(m){var g=a(m.value);return g.readInt(1)!==1||s(this.fileName)!==g.readInt(4)?null:h.utf8decode(g.readData(m.length-5))}return null},findExtraFieldUnicodeComment:function(){var m=this.extraFields[25461];if(m){var g=a(m.value);return g.readInt(1)!==1||s(this.fileComment)!==g.readInt(4)?null:h.utf8decode(g.readData(m.length-5))}return null}},n.exports=v},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(r,n,i){"use strict";function a(g,u,y){this.name=g,this.dir=y.dir,this.date=y.date,this.comment=y.comment,this.unixPermissions=y.unixPermissions,this.dosPermissions=y.dosPermissions,this._data=u,this._dataBinary=y.binary,this.options={compression:y.compression,compressionOptions:y.compressionOptions}}var l=r("./stream/StreamHelper"),o=r("./stream/DataWorker"),s=r("./utf8"),h=r("./compressedObject"),f=r("./stream/GenericWorker");a.prototype={internalStream:function(g){var u=null,y="string";try{if(!g)throw new Error("No output type specified.");var b=(y=g.toLowerCase())==="string"||y==="text";y!=="binarystring"&&y!=="text"||(y="string"),u=this._decompressWorker();var Z=!this._dataBinary;Z&&!b&&(u=u.pipe(new s.Utf8EncodeWorker)),!Z&&b&&(u=u.pipe(new s.Utf8DecodeWorker))}catch(I){(u=new f("error")).error(I)}return new l(u,y,"")},async:function(g,u){return this.internalStream(g).accumulate(u)},nodeStream:function(g,u){return this.internalStream(g||"nodebuffer").toNodejsStream(u)},_compressWorker:function(g,u){if(this._data instanceof h&&this._data.compression.magic===g.magic)return this._data.getCompressedWorker();var y=this._decompressWorker();return this._dataBinary||(y=y.pipe(new s.Utf8EncodeWorker)),h.createWorkerFrom(y,g,u)},_decompressWorker:function(){return this._data instanceof h?this._data.getContentWorker():this._data instanceof f?this._data:new o(this._data)}};for(var p=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],v=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},m=0;m<p.length;m++)a.prototype[p[m]]=v;n.exports=a},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(r,n,i){(function(a){"use strict";var l,o,s=a.MutationObserver||a.WebKitMutationObserver;if(s){var h=0,f=new s(g),p=a.document.createTextNode("");f.observe(p,{characterData:!0}),l=function(){p.data=h=++h%2}}else if(a.setImmediate||a.MessageChannel===void 0)l="document"in a&&"onreadystatechange"in a.document.createElement("script")?function(){var u=a.document.createElement("script");u.onreadystatechange=function(){g(),u.onreadystatechange=null,u.parentNode.removeChild(u),u=null},a.document.documentElement.appendChild(u)}:function(){setTimeout(g,0)};else{var v=new a.MessageChannel;v.port1.onmessage=g,l=function(){v.port2.postMessage(0)}}var m=[];function g(){var u,y;o=!0;for(var b=m.length;b;){for(y=m,m=[],u=-1;++u<b;)y[u]();b=m.length}o=!1}n.exports=function(u){m.push(u)!==1||o||l()}}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}],37:[function(r,n,i){"use strict";var a=r("immediate");function l(){}var o={},s=["REJECTED"],h=["FULFILLED"],f=["PENDING"];function p(b){if(typeof b!="function")throw new TypeError("resolver must be a function");this.state=f,this.queue=[],this.outcome=void 0,b!==l&&u(this,b)}function v(b,Z,I){this.promise=b,typeof Z=="function"&&(this.onFulfilled=Z,this.callFulfilled=this.otherCallFulfilled),typeof I=="function"&&(this.onRejected=I,this.callRejected=this.otherCallRejected)}function m(b,Z,I){a(function(){var w;try{w=Z(I)}catch(G){return o.reject(b,G)}w===b?o.reject(b,new TypeError("Cannot resolve promise with itself")):o.resolve(b,w)})}function g(b){var Z=b&&b.then;if(b&&(typeof b=="object"||typeof b=="function")&&typeof Z=="function")return function(){Z.apply(b,arguments)}}function u(b,Z){var I=!1;function w(F){I||(I=!0,o.reject(b,F))}function G(F){I||(I=!0,o.resolve(b,F))}var K=y(function(){Z(G,w)});K.status==="error"&&w(K.value)}function y(b,Z){var I={};try{I.value=b(Z),I.status="success"}catch(w){I.status="error",I.value=w}return I}(n.exports=p).prototype.finally=function(b){if(typeof b!="function")return this;var Z=this.constructor;return this.then(function(I){return Z.resolve(b()).then(function(){return I})},function(I){return Z.resolve(b()).then(function(){throw I})})},p.prototype.catch=function(b){return this.then(null,b)},p.prototype.then=function(b,Z){if(typeof b!="function"&&this.state===h||typeof Z!="function"&&this.state===s)return this;var I=new this.constructor(l);return this.state!==f?m(I,this.state===h?b:Z,this.outcome):this.queue.push(new v(I,b,Z)),I},v.prototype.callFulfilled=function(b){o.resolve(this.promise,b)},v.prototype.otherCallFulfilled=function(b){m(this.promise,this.onFulfilled,b)},v.prototype.callRejected=function(b){o.reject(this.promise,b)},v.prototype.otherCallRejected=function(b){m(this.promise,this.onRejected,b)},o.resolve=function(b,Z){var I=y(g,Z);if(I.status==="error")return o.reject(b,I.value);var w=I.value;if(w)u(b,w);else{b.state=h,b.outcome=Z;for(var G=-1,K=b.queue.length;++G<K;)b.queue[G].callFulfilled(Z)}return b},o.reject=function(b,Z){b.state=s,b.outcome=Z;for(var I=-1,w=b.queue.length;++I<w;)b.queue[I].callRejected(Z);return b},p.resolve=function(b){return b instanceof this?b:o.resolve(new this(l),b)},p.reject=function(b){var Z=new this(l);return o.reject(Z,b)},p.all=function(b){var Z=this;if(Object.prototype.toString.call(b)!=="[object Array]")return this.reject(new TypeError("must be an array"));var I=b.length,w=!1;if(!I)return this.resolve([]);for(var G=new Array(I),K=0,F=-1,J=new this(l);++F<I;)R(b[F],F);return J;function R(X,P){Z.resolve(X).then(function(V){G[P]=V,++K!==I||w||(w=!0,o.resolve(J,G))},function(V){w||(w=!0,o.reject(J,V))})}},p.race=function(b){var Z=this;if(Object.prototype.toString.call(b)!=="[object Array]")return this.reject(new TypeError("must be an array"));var I=b.length,w=!1;if(!I)return this.resolve([]);for(var G=-1,K=new this(l);++G<I;)F=b[G],Z.resolve(F).then(function(J){w||(w=!0,o.resolve(K,J))},function(J){w||(w=!0,o.reject(K,J))});var F;return K}},{immediate:36}],38:[function(r,n,i){"use strict";var a={};(0,r("./lib/utils/common").assign)(a,r("./lib/deflate"),r("./lib/inflate"),r("./lib/zlib/constants")),n.exports=a},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(r,n,i){"use strict";var a=r("./zlib/deflate"),l=r("./utils/common"),o=r("./utils/strings"),s=r("./zlib/messages"),h=r("./zlib/zstream"),f=Object.prototype.toString,p=0,v=-1,m=0,g=8;function u(b){if(!(this instanceof u))return new u(b);this.options=l.assign({level:v,method:g,chunkSize:16384,windowBits:15,memLevel:8,strategy:m,to:""},b||{});var Z=this.options;Z.raw&&0<Z.windowBits?Z.windowBits=-Z.windowBits:Z.gzip&&0<Z.windowBits&&Z.windowBits<16&&(Z.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new h,this.strm.avail_out=0;var I=a.deflateInit2(this.strm,Z.level,Z.method,Z.windowBits,Z.memLevel,Z.strategy);if(I!==p)throw new Error(s[I]);if(Z.header&&a.deflateSetHeader(this.strm,Z.header),Z.dictionary){var w;if(w=typeof Z.dictionary=="string"?o.string2buf(Z.dictionary):f.call(Z.dictionary)==="[object ArrayBuffer]"?new Uint8Array(Z.dictionary):Z.dictionary,(I=a.deflateSetDictionary(this.strm,w))!==p)throw new Error(s[I]);this._dict_set=!0}}function y(b,Z){var I=new u(Z);if(I.push(b,!0),I.err)throw I.msg||s[I.err];return I.result}u.prototype.push=function(b,Z){var I,w,G=this.strm,K=this.options.chunkSize;if(this.ended)return!1;w=Z===~~Z?Z:Z===!0?4:0,typeof b=="string"?G.input=o.string2buf(b):f.call(b)==="[object ArrayBuffer]"?G.input=new Uint8Array(b):G.input=b,G.next_in=0,G.avail_in=G.input.length;do{if(G.avail_out===0&&(G.output=new l.Buf8(K),G.next_out=0,G.avail_out=K),(I=a.deflate(G,w))!==1&&I!==p)return this.onEnd(I),!(this.ended=!0);G.avail_out!==0&&(G.avail_in!==0||w!==4&&w!==2)||(this.options.to==="string"?this.onData(o.buf2binstring(l.shrinkBuf(G.output,G.next_out))):this.onData(l.shrinkBuf(G.output,G.next_out)))}while((0<G.avail_in||G.avail_out===0)&&I!==1);return w===4?(I=a.deflateEnd(this.strm),this.onEnd(I),this.ended=!0,I===p):w!==2||(this.onEnd(p),!(G.avail_out=0))},u.prototype.onData=function(b){this.chunks.push(b)},u.prototype.onEnd=function(b){b===p&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=b,this.msg=this.strm.msg},i.Deflate=u,i.deflate=y,i.deflateRaw=function(b,Z){return(Z=Z||{}).raw=!0,y(b,Z)},i.gzip=function(b,Z){return(Z=Z||{}).gzip=!0,y(b,Z)}},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(r,n,i){"use strict";var a=r("./zlib/inflate"),l=r("./utils/common"),o=r("./utils/strings"),s=r("./zlib/constants"),h=r("./zlib/messages"),f=r("./zlib/zstream"),p=r("./zlib/gzheader"),v=Object.prototype.toString;function m(u){if(!(this instanceof m))return new m(u);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},u||{});var y=this.options;y.raw&&0<=y.windowBits&&y.windowBits<16&&(y.windowBits=-y.windowBits,y.windowBits===0&&(y.windowBits=-15)),!(0<=y.windowBits&&y.windowBits<16)||u&&u.windowBits||(y.windowBits+=32),15<y.windowBits&&y.windowBits<48&&(15&y.windowBits)==0&&(y.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new f,this.strm.avail_out=0;var b=a.inflateInit2(this.strm,y.windowBits);if(b!==s.Z_OK)throw new Error(h[b]);this.header=new p,a.inflateGetHeader(this.strm,this.header)}function g(u,y){var b=new m(y);if(b.push(u,!0),b.err)throw b.msg||h[b.err];return b.result}m.prototype.push=function(u,y){var b,Z,I,w,G,K,F=this.strm,J=this.options.chunkSize,R=this.options.dictionary,X=!1;if(this.ended)return!1;Z=y===~~y?y:y===!0?s.Z_FINISH:s.Z_NO_FLUSH,typeof u=="string"?F.input=o.binstring2buf(u):v.call(u)==="[object ArrayBuffer]"?F.input=new Uint8Array(u):F.input=u,F.next_in=0,F.avail_in=F.input.length;do{if(F.avail_out===0&&(F.output=new l.Buf8(J),F.next_out=0,F.avail_out=J),(b=a.inflate(F,s.Z_NO_FLUSH))===s.Z_NEED_DICT&&R&&(K=typeof R=="string"?o.string2buf(R):v.call(R)==="[object ArrayBuffer]"?new Uint8Array(R):R,b=a.inflateSetDictionary(this.strm,K)),b===s.Z_BUF_ERROR&&X===!0&&(b=s.Z_OK,X=!1),b!==s.Z_STREAM_END&&b!==s.Z_OK)return this.onEnd(b),!(this.ended=!0);F.next_out&&(F.avail_out!==0&&b!==s.Z_STREAM_END&&(F.avail_in!==0||Z!==s.Z_FINISH&&Z!==s.Z_SYNC_FLUSH)||(this.options.to==="string"?(I=o.utf8border(F.output,F.next_out),w=F.next_out-I,G=o.buf2string(F.output,I),F.next_out=w,F.avail_out=J-w,w&&l.arraySet(F.output,F.output,I,w,0),this.onData(G)):this.onData(l.shrinkBuf(F.output,F.next_out)))),F.avail_in===0&&F.avail_out===0&&(X=!0)}while((0<F.avail_in||F.avail_out===0)&&b!==s.Z_STREAM_END);return b===s.Z_STREAM_END&&(Z=s.Z_FINISH),Z===s.Z_FINISH?(b=a.inflateEnd(this.strm),this.onEnd(b),this.ended=!0,b===s.Z_OK):Z!==s.Z_SYNC_FLUSH||(this.onEnd(s.Z_OK),!(F.avail_out=0))},m.prototype.onData=function(u){this.chunks.push(u)},m.prototype.onEnd=function(u){u===s.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=u,this.msg=this.strm.msg},i.Inflate=m,i.inflate=g,i.inflateRaw=function(u,y){return(y=y||{}).raw=!0,g(u,y)},i.ungzip=g},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(r,n,i){"use strict";var a=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";i.assign=function(s){for(var h=Array.prototype.slice.call(arguments,1);h.length;){var f=h.shift();if(f){if(typeof f!="object")throw new TypeError(f+"must be non-object");for(var p in f)f.hasOwnProperty(p)&&(s[p]=f[p])}}return s},i.shrinkBuf=function(s,h){return s.length===h?s:s.subarray?s.subarray(0,h):(s.length=h,s)};var l={arraySet:function(s,h,f,p,v){if(h.subarray&&s.subarray)s.set(h.subarray(f,f+p),v);else for(var m=0;m<p;m++)s[v+m]=h[f+m]},flattenChunks:function(s){var h,f,p,v,m,g;for(h=p=0,f=s.length;h<f;h++)p+=s[h].length;for(g=new Uint8Array(p),h=v=0,f=s.length;h<f;h++)m=s[h],g.set(m,v),v+=m.length;return g}},o={arraySet:function(s,h,f,p,v){for(var m=0;m<p;m++)s[v+m]=h[f+m]},flattenChunks:function(s){return[].concat.apply([],s)}};i.setTyped=function(s){s?(i.Buf8=Uint8Array,i.Buf16=Uint16Array,i.Buf32=Int32Array,i.assign(i,l)):(i.Buf8=Array,i.Buf16=Array,i.Buf32=Array,i.assign(i,o))},i.setTyped(a)},{}],42:[function(r,n,i){"use strict";var a=r("./common"),l=!0,o=!0;try{String.fromCharCode.apply(null,[0])}catch{l=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{o=!1}for(var s=new a.Buf8(256),h=0;h<256;h++)s[h]=252<=h?6:248<=h?5:240<=h?4:224<=h?3:192<=h?2:1;function f(p,v){if(v<65537&&(p.subarray&&o||!p.subarray&&l))return String.fromCharCode.apply(null,a.shrinkBuf(p,v));for(var m="",g=0;g<v;g++)m+=String.fromCharCode(p[g]);return m}s[254]=s[254]=1,i.string2buf=function(p){var v,m,g,u,y,b=p.length,Z=0;for(u=0;u<b;u++)(64512&(m=p.charCodeAt(u)))==55296&&u+1<b&&(64512&(g=p.charCodeAt(u+1)))==56320&&(m=65536+(m-55296<<10)+(g-56320),u++),Z+=m<128?1:m<2048?2:m<65536?3:4;for(v=new a.Buf8(Z),u=y=0;y<Z;u++)(64512&(m=p.charCodeAt(u)))==55296&&u+1<b&&(64512&(g=p.charCodeAt(u+1)))==56320&&(m=65536+(m-55296<<10)+(g-56320),u++),m<128?v[y++]=m:(m<2048?v[y++]=192|m>>>6:(m<65536?v[y++]=224|m>>>12:(v[y++]=240|m>>>18,v[y++]=128|m>>>12&63),v[y++]=128|m>>>6&63),v[y++]=128|63&m);return v},i.buf2binstring=function(p){return f(p,p.length)},i.binstring2buf=function(p){for(var v=new a.Buf8(p.length),m=0,g=v.length;m<g;m++)v[m]=p.charCodeAt(m);return v},i.buf2string=function(p,v){var m,g,u,y,b=v||p.length,Z=new Array(2*b);for(m=g=0;m<b;)if((u=p[m++])<128)Z[g++]=u;else if(4<(y=s[u]))Z[g++]=65533,m+=y-1;else{for(u&=y===2?31:y===3?15:7;1<y&&m<b;)u=u<<6|63&p[m++],y--;1<y?Z[g++]=65533:u<65536?Z[g++]=u:(u-=65536,Z[g++]=55296|u>>10&1023,Z[g++]=56320|1023&u)}return f(Z,g)},i.utf8border=function(p,v){var m;for((v=v||p.length)>p.length&&(v=p.length),m=v-1;0<=m&&(192&p[m])==128;)m--;return m<0||m===0?v:m+s[p[m]]>v?m:v}},{"./common":41}],43:[function(r,n,i){"use strict";n.exports=function(a,l,o,s){for(var h=65535&a|0,f=a>>>16&65535|0,p=0;o!==0;){for(o-=p=2e3<o?2e3:o;f=f+(h=h+l[s++]|0)|0,--p;);h%=65521,f%=65521}return h|f<<16|0}},{}],44:[function(r,n,i){"use strict";n.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],45:[function(r,n,i){"use strict";var a=(function(){for(var l,o=[],s=0;s<256;s++){l=s;for(var h=0;h<8;h++)l=1&l?3988292384^l>>>1:l>>>1;o[s]=l}return o})();n.exports=function(l,o,s,h){var f=a,p=h+s;l^=-1;for(var v=h;v<p;v++)l=l>>>8^f[255&(l^o[v])];return-1^l}},{}],46:[function(r,n,i){"use strict";var a,l=r("../utils/common"),o=r("./trees"),s=r("./adler32"),h=r("./crc32"),f=r("./messages"),p=0,v=4,m=0,g=-2,u=-1,y=4,b=2,Z=8,I=9,w=286,G=30,K=19,F=2*w+1,J=15,R=3,X=258,P=X+R+1,V=42,k=113,c=1,_=2,Q=3,Y=4;function q(d,z){return d.msg=f[z],z}function C(d){return(d<<1)-(4<d?9:0)}function ee(d){for(var z=d.length;0<=--z;)d[z]=0}function U(d){var z=d.state,T=z.pending;T>d.avail_out&&(T=d.avail_out),T!==0&&(l.arraySet(d.output,z.pending_buf,z.pending_out,T,d.next_out),d.next_out+=T,z.pending_out+=T,d.total_out+=T,d.avail_out-=T,z.pending-=T,z.pending===0&&(z.pending_out=0))}function W(d,z){o._tr_flush_block(d,0<=d.block_start?d.block_start:-1,d.strstart-d.block_start,z),d.block_start=d.strstart,U(d.strm)}function $(d,z){d.pending_buf[d.pending++]=z}function j(d,z){d.pending_buf[d.pending++]=z>>>8&255,d.pending_buf[d.pending++]=255&z}function M(d,z){var T,x,S=d.max_chain_length,L=d.strstart,H=d.prev_length,N=d.nice_match,E=d.strstart>d.w_size-P?d.strstart-(d.w_size-P):0,D=d.window,O=d.w_mask,A=d.prev,te=d.strstart+X,ce=D[L+H-1],oe=D[L+H];d.prev_length>=d.good_match&&(S>>=2),N>d.lookahead&&(N=d.lookahead);do if(D[(T=z)+H]===oe&&D[T+H-1]===ce&&D[T]===D[L]&&D[++T]===D[L+1]){L+=2,T++;do;while(D[++L]===D[++T]&&D[++L]===D[++T]&&D[++L]===D[++T]&&D[++L]===D[++T]&&D[++L]===D[++T]&&D[++L]===D[++T]&&D[++L]===D[++T]&&D[++L]===D[++T]&&L<te);if(x=X-(te-L),L=te-X,H<x){if(d.match_start=z,N<=(H=x))break;ce=D[L+H-1],oe=D[L+H]}}while((z=A[z&O])>E&&--S!=0);return H<=d.lookahead?H:d.lookahead}function ue(d){var z,T,x,S,L,H,N,E,D,O,A=d.w_size;do{if(S=d.window_size-d.lookahead-d.strstart,d.strstart>=A+(A-P)){for(l.arraySet(d.window,d.window,A,A,0),d.match_start-=A,d.strstart-=A,d.block_start-=A,z=T=d.hash_size;x=d.head[--z],d.head[z]=A<=x?x-A:0,--T;);for(z=T=A;x=d.prev[--z],d.prev[z]=A<=x?x-A:0,--T;);S+=A}if(d.strm.avail_in===0)break;if(H=d.strm,N=d.window,E=d.strstart+d.lookahead,D=S,O=void 0,O=H.avail_in,D<O&&(O=D),T=O===0?0:(H.avail_in-=O,l.arraySet(N,H.input,H.next_in,O,E),H.state.wrap===1?H.adler=s(H.adler,N,O,E):H.state.wrap===2&&(H.adler=h(H.adler,N,O,E)),H.next_in+=O,H.total_in+=O,O),d.lookahead+=T,d.lookahead+d.insert>=R)for(L=d.strstart-d.insert,d.ins_h=d.window[L],d.ins_h=(d.ins_h<<d.hash_shift^d.window[L+1])&d.hash_mask;d.insert&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[L+R-1])&d.hash_mask,d.prev[L&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=L,L++,d.insert--,!(d.lookahead+d.insert<R)););}while(d.lookahead<P&&d.strm.avail_in!==0)}function fe(d,z){for(var T,x;;){if(d.lookahead<P){if(ue(d),d.lookahead<P&&z===p)return c;if(d.lookahead===0)break}if(T=0,d.lookahead>=R&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+R-1])&d.hash_mask,T=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),T!==0&&d.strstart-T<=d.w_size-P&&(d.match_length=M(d,T)),d.match_length>=R)if(x=o._tr_tally(d,d.strstart-d.match_start,d.match_length-R),d.lookahead-=d.match_length,d.match_length<=d.max_lazy_match&&d.lookahead>=R){for(d.match_length--;d.strstart++,d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+R-1])&d.hash_mask,T=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart,--d.match_length!=0;);d.strstart++}else d.strstart+=d.match_length,d.match_length=0,d.ins_h=d.window[d.strstart],d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+1])&d.hash_mask;else x=o._tr_tally(d,0,d.window[d.strstart]),d.lookahead--,d.strstart++;if(x&&(W(d,!1),d.strm.avail_out===0))return c}return d.insert=d.strstart<R-1?d.strstart:R-1,z===v?(W(d,!0),d.strm.avail_out===0?Q:Y):d.last_lit&&(W(d,!1),d.strm.avail_out===0)?c:_}function le(d,z){for(var T,x,S;;){if(d.lookahead<P){if(ue(d),d.lookahead<P&&z===p)return c;if(d.lookahead===0)break}if(T=0,d.lookahead>=R&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+R-1])&d.hash_mask,T=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),d.prev_length=d.match_length,d.prev_match=d.match_start,d.match_length=R-1,T!==0&&d.prev_length<d.max_lazy_match&&d.strstart-T<=d.w_size-P&&(d.match_length=M(d,T),d.match_length<=5&&(d.strategy===1||d.match_length===R&&4096<d.strstart-d.match_start)&&(d.match_length=R-1)),d.prev_length>=R&&d.match_length<=d.prev_length){for(S=d.strstart+d.lookahead-R,x=o._tr_tally(d,d.strstart-1-d.prev_match,d.prev_length-R),d.lookahead-=d.prev_length-1,d.prev_length-=2;++d.strstart<=S&&(d.ins_h=(d.ins_h<<d.hash_shift^d.window[d.strstart+R-1])&d.hash_mask,T=d.prev[d.strstart&d.w_mask]=d.head[d.ins_h],d.head[d.ins_h]=d.strstart),--d.prev_length!=0;);if(d.match_available=0,d.match_length=R-1,d.strstart++,x&&(W(d,!1),d.strm.avail_out===0))return c}else if(d.match_available){if((x=o._tr_tally(d,0,d.window[d.strstart-1]))&&W(d,!1),d.strstart++,d.lookahead--,d.strm.avail_out===0)return c}else d.match_available=1,d.strstart++,d.lookahead--}return d.match_available&&(x=o._tr_tally(d,0,d.window[d.strstart-1]),d.match_available=0),d.insert=d.strstart<R-1?d.strstart:R-1,z===v?(W(d,!0),d.strm.avail_out===0?Q:Y):d.last_lit&&(W(d,!1),d.strm.avail_out===0)?c:_}function se(d,z,T,x,S){this.good_length=d,this.max_lazy=z,this.nice_length=T,this.max_chain=x,this.func=S}function be(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=Z,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new l.Buf16(2*F),this.dyn_dtree=new l.Buf16(2*(2*G+1)),this.bl_tree=new l.Buf16(2*(2*K+1)),ee(this.dyn_ltree),ee(this.dyn_dtree),ee(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new l.Buf16(J+1),this.heap=new l.Buf16(2*w+1),ee(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new l.Buf16(2*w+1),ee(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function me(d){var z;return d&&d.state?(d.total_in=d.total_out=0,d.data_type=b,(z=d.state).pending=0,z.pending_out=0,z.wrap<0&&(z.wrap=-z.wrap),z.status=z.wrap?V:k,d.adler=z.wrap===2?0:1,z.last_flush=p,o._tr_init(z),m):q(d,g)}function Ze(d){var z=me(d);return z===m&&(function(T){T.window_size=2*T.w_size,ee(T.head),T.max_lazy_match=a[T.level].max_lazy,T.good_match=a[T.level].good_length,T.nice_match=a[T.level].nice_length,T.max_chain_length=a[T.level].max_chain,T.strstart=0,T.block_start=0,T.lookahead=0,T.insert=0,T.match_length=T.prev_length=R-1,T.match_available=0,T.ins_h=0})(d.state),z}function ge(d,z,T,x,S,L){if(!d)return g;var H=1;if(z===u&&(z=6),x<0?(H=0,x=-x):15<x&&(H=2,x-=16),S<1||I<S||T!==Z||x<8||15<x||z<0||9<z||L<0||y<L)return q(d,g);x===8&&(x=9);var N=new be;return(d.state=N).strm=d,N.wrap=H,N.gzhead=null,N.w_bits=x,N.w_size=1<<N.w_bits,N.w_mask=N.w_size-1,N.hash_bits=S+7,N.hash_size=1<<N.hash_bits,N.hash_mask=N.hash_size-1,N.hash_shift=~~((N.hash_bits+R-1)/R),N.window=new l.Buf8(2*N.w_size),N.head=new l.Buf16(N.hash_size),N.prev=new l.Buf16(N.w_size),N.lit_bufsize=1<<S+6,N.pending_buf_size=4*N.lit_bufsize,N.pending_buf=new l.Buf8(N.pending_buf_size),N.d_buf=1*N.lit_bufsize,N.l_buf=3*N.lit_bufsize,N.level=z,N.strategy=L,N.method=T,Ze(d)}a=[new se(0,0,0,0,function(d,z){var T=65535;for(T>d.pending_buf_size-5&&(T=d.pending_buf_size-5);;){if(d.lookahead<=1){if(ue(d),d.lookahead===0&&z===p)return c;if(d.lookahead===0)break}d.strstart+=d.lookahead,d.lookahead=0;var x=d.block_start+T;if((d.strstart===0||d.strstart>=x)&&(d.lookahead=d.strstart-x,d.strstart=x,W(d,!1),d.strm.avail_out===0)||d.strstart-d.block_start>=d.w_size-P&&(W(d,!1),d.strm.avail_out===0))return c}return d.insert=0,z===v?(W(d,!0),d.strm.avail_out===0?Q:Y):(d.strstart>d.block_start&&(W(d,!1),d.strm.avail_out),c)}),new se(4,4,8,4,fe),new se(4,5,16,8,fe),new se(4,6,32,32,fe),new se(4,4,16,16,le),new se(8,16,32,32,le),new se(8,16,128,128,le),new se(8,32,128,256,le),new se(32,128,258,1024,le),new se(32,258,258,4096,le)],i.deflateInit=function(d,z){return ge(d,z,Z,15,8,0)},i.deflateInit2=ge,i.deflateReset=Ze,i.deflateResetKeep=me,i.deflateSetHeader=function(d,z){return d&&d.state?d.state.wrap!==2?g:(d.state.gzhead=z,m):g},i.deflate=function(d,z){var T,x,S,L;if(!d||!d.state||5<z||z<0)return d?q(d,g):g;if(x=d.state,!d.output||!d.input&&d.avail_in!==0||x.status===666&&z!==v)return q(d,d.avail_out===0?-5:g);if(x.strm=d,T=x.last_flush,x.last_flush=z,x.status===V)if(x.wrap===2)d.adler=0,$(x,31),$(x,139),$(x,8),x.gzhead?($(x,(x.gzhead.text?1:0)+(x.gzhead.hcrc?2:0)+(x.gzhead.extra?4:0)+(x.gzhead.name?8:0)+(x.gzhead.comment?16:0)),$(x,255&x.gzhead.time),$(x,x.gzhead.time>>8&255),$(x,x.gzhead.time>>16&255),$(x,x.gzhead.time>>24&255),$(x,x.level===9?2:2<=x.strategy||x.level<2?4:0),$(x,255&x.gzhead.os),x.gzhead.extra&&x.gzhead.extra.length&&($(x,255&x.gzhead.extra.length),$(x,x.gzhead.extra.length>>8&255)),x.gzhead.hcrc&&(d.adler=h(d.adler,x.pending_buf,x.pending,0)),x.gzindex=0,x.status=69):($(x,0),$(x,0),$(x,0),$(x,0),$(x,0),$(x,x.level===9?2:2<=x.strategy||x.level<2?4:0),$(x,3),x.status=k);else{var H=Z+(x.w_bits-8<<4)<<8;H|=(2<=x.strategy||x.level<2?0:x.level<6?1:x.level===6?2:3)<<6,x.strstart!==0&&(H|=32),H+=31-H%31,x.status=k,j(x,H),x.strstart!==0&&(j(x,d.adler>>>16),j(x,65535&d.adler)),d.adler=1}if(x.status===69)if(x.gzhead.extra){for(S=x.pending;x.gzindex<(65535&x.gzhead.extra.length)&&(x.pending!==x.pending_buf_size||(x.gzhead.hcrc&&x.pending>S&&(d.adler=h(d.adler,x.pending_buf,x.pending-S,S)),U(d),S=x.pending,x.pending!==x.pending_buf_size));)$(x,255&x.gzhead.extra[x.gzindex]),x.gzindex++;x.gzhead.hcrc&&x.pending>S&&(d.adler=h(d.adler,x.pending_buf,x.pending-S,S)),x.gzindex===x.gzhead.extra.length&&(x.gzindex=0,x.status=73)}else x.status=73;if(x.status===73)if(x.gzhead.name){S=x.pending;do{if(x.pending===x.pending_buf_size&&(x.gzhead.hcrc&&x.pending>S&&(d.adler=h(d.adler,x.pending_buf,x.pending-S,S)),U(d),S=x.pending,x.pending===x.pending_buf_size)){L=1;break}L=x.gzindex<x.gzhead.name.length?255&x.gzhead.name.charCodeAt(x.gzindex++):0,$(x,L)}while(L!==0);x.gzhead.hcrc&&x.pending>S&&(d.adler=h(d.adler,x.pending_buf,x.pending-S,S)),L===0&&(x.gzindex=0,x.status=91)}else x.status=91;if(x.status===91)if(x.gzhead.comment){S=x.pending;do{if(x.pending===x.pending_buf_size&&(x.gzhead.hcrc&&x.pending>S&&(d.adler=h(d.adler,x.pending_buf,x.pending-S,S)),U(d),S=x.pending,x.pending===x.pending_buf_size)){L=1;break}L=x.gzindex<x.gzhead.comment.length?255&x.gzhead.comment.charCodeAt(x.gzindex++):0,$(x,L)}while(L!==0);x.gzhead.hcrc&&x.pending>S&&(d.adler=h(d.adler,x.pending_buf,x.pending-S,S)),L===0&&(x.status=103)}else x.status=103;if(x.status===103&&(x.gzhead.hcrc?(x.pending+2>x.pending_buf_size&&U(d),x.pending+2<=x.pending_buf_size&&($(x,255&d.adler),$(x,d.adler>>8&255),d.adler=0,x.status=k)):x.status=k),x.pending!==0){if(U(d),d.avail_out===0)return x.last_flush=-1,m}else if(d.avail_in===0&&C(z)<=C(T)&&z!==v)return q(d,-5);if(x.status===666&&d.avail_in!==0)return q(d,-5);if(d.avail_in!==0||x.lookahead!==0||z!==p&&x.status!==666){var N=x.strategy===2?(function(E,D){for(var O;;){if(E.lookahead===0&&(ue(E),E.lookahead===0)){if(D===p)return c;break}if(E.match_length=0,O=o._tr_tally(E,0,E.window[E.strstart]),E.lookahead--,E.strstart++,O&&(W(E,!1),E.strm.avail_out===0))return c}return E.insert=0,D===v?(W(E,!0),E.strm.avail_out===0?Q:Y):E.last_lit&&(W(E,!1),E.strm.avail_out===0)?c:_})(x,z):x.strategy===3?(function(E,D){for(var O,A,te,ce,oe=E.window;;){if(E.lookahead<=X){if(ue(E),E.lookahead<=X&&D===p)return c;if(E.lookahead===0)break}if(E.match_length=0,E.lookahead>=R&&0<E.strstart&&(A=oe[te=E.strstart-1])===oe[++te]&&A===oe[++te]&&A===oe[++te]){ce=E.strstart+X;do;while(A===oe[++te]&&A===oe[++te]&&A===oe[++te]&&A===oe[++te]&&A===oe[++te]&&A===oe[++te]&&A===oe[++te]&&A===oe[++te]&&te<ce);E.match_length=X-(ce-te),E.match_length>E.lookahead&&(E.match_length=E.lookahead)}if(E.match_length>=R?(O=o._tr_tally(E,1,E.match_length-R),E.lookahead-=E.match_length,E.strstart+=E.match_length,E.match_length=0):(O=o._tr_tally(E,0,E.window[E.strstart]),E.lookahead--,E.strstart++),O&&(W(E,!1),E.strm.avail_out===0))return c}return E.insert=0,D===v?(W(E,!0),E.strm.avail_out===0?Q:Y):E.last_lit&&(W(E,!1),E.strm.avail_out===0)?c:_})(x,z):a[x.level].func(x,z);if(N!==Q&&N!==Y||(x.status=666),N===c||N===Q)return d.avail_out===0&&(x.last_flush=-1),m;if(N===_&&(z===1?o._tr_align(x):z!==5&&(o._tr_stored_block(x,0,0,!1),z===3&&(ee(x.head),x.lookahead===0&&(x.strstart=0,x.block_start=0,x.insert=0))),U(d),d.avail_out===0))return x.last_flush=-1,m}return z!==v?m:x.wrap<=0?1:(x.wrap===2?($(x,255&d.adler),$(x,d.adler>>8&255),$(x,d.adler>>16&255),$(x,d.adler>>24&255),$(x,255&d.total_in),$(x,d.total_in>>8&255),$(x,d.total_in>>16&255),$(x,d.total_in>>24&255)):(j(x,d.adler>>>16),j(x,65535&d.adler)),U(d),0<x.wrap&&(x.wrap=-x.wrap),x.pending!==0?m:1)},i.deflateEnd=function(d){var z;return d&&d.state?(z=d.state.status)!==V&&z!==69&&z!==73&&z!==91&&z!==103&&z!==k&&z!==666?q(d,g):(d.state=null,z===k?q(d,-3):m):g},i.deflateSetDictionary=function(d,z){var T,x,S,L,H,N,E,D,O=z.length;if(!d||!d.state||(L=(T=d.state).wrap)===2||L===1&&T.status!==V||T.lookahead)return g;for(L===1&&(d.adler=s(d.adler,z,O,0)),T.wrap=0,O>=T.w_size&&(L===0&&(ee(T.head),T.strstart=0,T.block_start=0,T.insert=0),D=new l.Buf8(T.w_size),l.arraySet(D,z,O-T.w_size,T.w_size,0),z=D,O=T.w_size),H=d.avail_in,N=d.next_in,E=d.input,d.avail_in=O,d.next_in=0,d.input=z,ue(T);T.lookahead>=R;){for(x=T.strstart,S=T.lookahead-(R-1);T.ins_h=(T.ins_h<<T.hash_shift^T.window[x+R-1])&T.hash_mask,T.prev[x&T.w_mask]=T.head[T.ins_h],T.head[T.ins_h]=x,x++,--S;);T.strstart=x,T.lookahead=R-1,ue(T)}return T.strstart+=T.lookahead,T.block_start=T.strstart,T.insert=T.lookahead,T.lookahead=0,T.match_length=T.prev_length=R-1,T.match_available=0,d.next_in=N,d.input=E,d.avail_in=H,T.wrap=L,m},i.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(r,n,i){"use strict";n.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}},{}],48:[function(r,n,i){"use strict";n.exports=function(a,l){var o=a.state,s=a.next_in,h,f,p,v,m,g,u,y,b,Z,I,w,G,K,F,J,R,X,P,V,k,c=a.input,_;h=s+(a.avail_in-5),f=a.next_out,_=a.output,p=f-(l-a.avail_out),v=f+(a.avail_out-257),m=o.dmax,g=o.wsize,u=o.whave,y=o.wnext,b=o.window,Z=o.hold,I=o.bits,w=o.lencode,G=o.distcode,K=(1<<o.lenbits)-1,F=(1<<o.distbits)-1;e:do{I<15&&(Z+=c[s++]<<I,I+=8,Z+=c[s++]<<I,I+=8),J=w[Z&K];t:for(;;){if(Z>>>=R=J>>>24,I-=R,(R=J>>>16&255)===0)_[f++]=65535&J;else{if(!(16&R)){if((64&R)==0){J=w[(65535&J)+(Z&(1<<R)-1)];continue t}if(32&R){o.mode=12;break e}a.msg="invalid literal/length code",o.mode=30;break e}X=65535&J,(R&=15)&&(I<R&&(Z+=c[s++]<<I,I+=8),X+=Z&(1<<R)-1,Z>>>=R,I-=R),I<15&&(Z+=c[s++]<<I,I+=8,Z+=c[s++]<<I,I+=8),J=G[Z&F];r:for(;;){if(Z>>>=R=J>>>24,I-=R,!(16&(R=J>>>16&255))){if((64&R)==0){J=G[(65535&J)+(Z&(1<<R)-1)];continue r}a.msg="invalid distance code",o.mode=30;break e}if(P=65535&J,I<(R&=15)&&(Z+=c[s++]<<I,(I+=8)<R&&(Z+=c[s++]<<I,I+=8)),m<(P+=Z&(1<<R)-1)){a.msg="invalid distance too far back",o.mode=30;break e}if(Z>>>=R,I-=R,(R=f-p)<P){if(u<(R=P-R)&&o.sane){a.msg="invalid distance too far back",o.mode=30;break e}if(k=b,(V=0)===y){if(V+=g-R,R<X){for(X-=R;_[f++]=b[V++],--R;);V=f-P,k=_}}else if(y<R){if(V+=g+y-R,(R-=y)<X){for(X-=R;_[f++]=b[V++],--R;);if(V=0,y<X){for(X-=R=y;_[f++]=b[V++],--R;);V=f-P,k=_}}}else if(V+=y-R,R<X){for(X-=R;_[f++]=b[V++],--R;);V=f-P,k=_}for(;2<X;)_[f++]=k[V++],_[f++]=k[V++],_[f++]=k[V++],X-=3;X&&(_[f++]=k[V++],1<X&&(_[f++]=k[V++]))}else{for(V=f-P;_[f++]=_[V++],_[f++]=_[V++],_[f++]=_[V++],2<(X-=3););X&&(_[f++]=_[V++],1<X&&(_[f++]=_[V++]))}break}}break}}while(s<h&&f<v);s-=X=I>>3,Z&=(1<<(I-=X<<3))-1,a.next_in=s,a.next_out=f,a.avail_in=s<h?h-s+5:5-(s-h),a.avail_out=f<v?v-f+257:257-(f-v),o.hold=Z,o.bits=I}},{}],49:[function(r,n,i){"use strict";var a=r("../utils/common"),l=r("./adler32"),o=r("./crc32"),s=r("./inffast"),h=r("./inftrees"),f=1,p=2,v=0,m=-2,g=1,u=852,y=592;function b(V){return(V>>>24&255)+(V>>>8&65280)+((65280&V)<<8)+((255&V)<<24)}function Z(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new a.Buf16(320),this.work=new a.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function I(V){var k;return V&&V.state?(k=V.state,V.total_in=V.total_out=k.total=0,V.msg="",k.wrap&&(V.adler=1&k.wrap),k.mode=g,k.last=0,k.havedict=0,k.dmax=32768,k.head=null,k.hold=0,k.bits=0,k.lencode=k.lendyn=new a.Buf32(u),k.distcode=k.distdyn=new a.Buf32(y),k.sane=1,k.back=-1,v):m}function w(V){var k;return V&&V.state?((k=V.state).wsize=0,k.whave=0,k.wnext=0,I(V)):m}function G(V,k){var c,_;return V&&V.state?(_=V.state,k<0?(c=0,k=-k):(c=1+(k>>4),k<48&&(k&=15)),k&&(k<8||15<k)?m:(_.window!==null&&_.wbits!==k&&(_.window=null),_.wrap=c,_.wbits=k,w(V))):m}function K(V,k){var c,_;return V?(_=new Z,(V.state=_).window=null,(c=G(V,k))!==v&&(V.state=null),c):m}var F,J,R=!0;function X(V){if(R){var k;for(F=new a.Buf32(512),J=new a.Buf32(32),k=0;k<144;)V.lens[k++]=8;for(;k<256;)V.lens[k++]=9;for(;k<280;)V.lens[k++]=7;for(;k<288;)V.lens[k++]=8;for(h(f,V.lens,0,288,F,0,V.work,{bits:9}),k=0;k<32;)V.lens[k++]=5;h(p,V.lens,0,32,J,0,V.work,{bits:5}),R=!1}V.lencode=F,V.lenbits=9,V.distcode=J,V.distbits=5}function P(V,k,c,_){var Q,Y=V.state;return Y.window===null&&(Y.wsize=1<<Y.wbits,Y.wnext=0,Y.whave=0,Y.window=new a.Buf8(Y.wsize)),_>=Y.wsize?(a.arraySet(Y.window,k,c-Y.wsize,Y.wsize,0),Y.wnext=0,Y.whave=Y.wsize):(_<(Q=Y.wsize-Y.wnext)&&(Q=_),a.arraySet(Y.window,k,c-_,Q,Y.wnext),(_-=Q)?(a.arraySet(Y.window,k,c-_,_,0),Y.wnext=_,Y.whave=Y.wsize):(Y.wnext+=Q,Y.wnext===Y.wsize&&(Y.wnext=0),Y.whave<Y.wsize&&(Y.whave+=Q))),0}i.inflateReset=w,i.inflateReset2=G,i.inflateResetKeep=I,i.inflateInit=function(V){return K(V,15)},i.inflateInit2=K,i.inflate=function(V,k){var c,_,Q,Y,q,C,ee,U,W,$,j,M,ue,fe,le,se,be,me,Ze,ge,d,z,T,x,S=0,L=new a.Buf8(4),H=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!V||!V.state||!V.output||!V.input&&V.avail_in!==0)return m;(c=V.state).mode===12&&(c.mode=13),q=V.next_out,Q=V.output,ee=V.avail_out,Y=V.next_in,_=V.input,C=V.avail_in,U=c.hold,W=c.bits,$=C,j=ee,z=v;e:for(;;)switch(c.mode){case g:if(c.wrap===0){c.mode=13;break}for(;W<16;){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}if(2&c.wrap&&U===35615){L[c.check=0]=255&U,L[1]=U>>>8&255,c.check=o(c.check,L,2,0),W=U=0,c.mode=2;break}if(c.flags=0,c.head&&(c.head.done=!1),!(1&c.wrap)||(((255&U)<<8)+(U>>8))%31){V.msg="incorrect header check",c.mode=30;break}if((15&U)!=8){V.msg="unknown compression method",c.mode=30;break}if(W-=4,d=8+(15&(U>>>=4)),c.wbits===0)c.wbits=d;else if(d>c.wbits){V.msg="invalid window size",c.mode=30;break}c.dmax=1<<d,V.adler=c.check=1,c.mode=512&U?10:12,W=U=0;break;case 2:for(;W<16;){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}if(c.flags=U,(255&c.flags)!=8){V.msg="unknown compression method",c.mode=30;break}if(57344&c.flags){V.msg="unknown header flags set",c.mode=30;break}c.head&&(c.head.text=U>>8&1),512&c.flags&&(L[0]=255&U,L[1]=U>>>8&255,c.check=o(c.check,L,2,0)),W=U=0,c.mode=3;case 3:for(;W<32;){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}c.head&&(c.head.time=U),512&c.flags&&(L[0]=255&U,L[1]=U>>>8&255,L[2]=U>>>16&255,L[3]=U>>>24&255,c.check=o(c.check,L,4,0)),W=U=0,c.mode=4;case 4:for(;W<16;){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}c.head&&(c.head.xflags=255&U,c.head.os=U>>8),512&c.flags&&(L[0]=255&U,L[1]=U>>>8&255,c.check=o(c.check,L,2,0)),W=U=0,c.mode=5;case 5:if(1024&c.flags){for(;W<16;){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}c.length=U,c.head&&(c.head.extra_len=U),512&c.flags&&(L[0]=255&U,L[1]=U>>>8&255,c.check=o(c.check,L,2,0)),W=U=0}else c.head&&(c.head.extra=null);c.mode=6;case 6:if(1024&c.flags&&(C<(M=c.length)&&(M=C),M&&(c.head&&(d=c.head.extra_len-c.length,c.head.extra||(c.head.extra=new Array(c.head.extra_len)),a.arraySet(c.head.extra,_,Y,M,d)),512&c.flags&&(c.check=o(c.check,_,M,Y)),C-=M,Y+=M,c.length-=M),c.length))break e;c.length=0,c.mode=7;case 7:if(2048&c.flags){if(C===0)break e;for(M=0;d=_[Y+M++],c.head&&d&&c.length<65536&&(c.head.name+=String.fromCharCode(d)),d&&M<C;);if(512&c.flags&&(c.check=o(c.check,_,M,Y)),C-=M,Y+=M,d)break e}else c.head&&(c.head.name=null);c.length=0,c.mode=8;case 8:if(4096&c.flags){if(C===0)break e;for(M=0;d=_[Y+M++],c.head&&d&&c.length<65536&&(c.head.comment+=String.fromCharCode(d)),d&&M<C;);if(512&c.flags&&(c.check=o(c.check,_,M,Y)),C-=M,Y+=M,d)break e}else c.head&&(c.head.comment=null);c.mode=9;case 9:if(512&c.flags){for(;W<16;){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}if(U!==(65535&c.check)){V.msg="header crc mismatch",c.mode=30;break}W=U=0}c.head&&(c.head.hcrc=c.flags>>9&1,c.head.done=!0),V.adler=c.check=0,c.mode=12;break;case 10:for(;W<32;){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}V.adler=c.check=b(U),W=U=0,c.mode=11;case 11:if(c.havedict===0)return V.next_out=q,V.avail_out=ee,V.next_in=Y,V.avail_in=C,c.hold=U,c.bits=W,2;V.adler=c.check=1,c.mode=12;case 12:if(k===5||k===6)break e;case 13:if(c.last){U>>>=7&W,W-=7&W,c.mode=27;break}for(;W<3;){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}switch(c.last=1&U,W-=1,3&(U>>>=1)){case 0:c.mode=14;break;case 1:if(X(c),c.mode=20,k!==6)break;U>>>=2,W-=2;break e;case 2:c.mode=17;break;case 3:V.msg="invalid block type",c.mode=30}U>>>=2,W-=2;break;case 14:for(U>>>=7&W,W-=7&W;W<32;){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}if((65535&U)!=(U>>>16^65535)){V.msg="invalid stored block lengths",c.mode=30;break}if(c.length=65535&U,W=U=0,c.mode=15,k===6)break e;case 15:c.mode=16;case 16:if(M=c.length){if(C<M&&(M=C),ee<M&&(M=ee),M===0)break e;a.arraySet(Q,_,Y,M,q),C-=M,Y+=M,ee-=M,q+=M,c.length-=M;break}c.mode=12;break;case 17:for(;W<14;){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}if(c.nlen=257+(31&U),U>>>=5,W-=5,c.ndist=1+(31&U),U>>>=5,W-=5,c.ncode=4+(15&U),U>>>=4,W-=4,286<c.nlen||30<c.ndist){V.msg="too many length or distance symbols",c.mode=30;break}c.have=0,c.mode=18;case 18:for(;c.have<c.ncode;){for(;W<3;){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}c.lens[H[c.have++]]=7&U,U>>>=3,W-=3}for(;c.have<19;)c.lens[H[c.have++]]=0;if(c.lencode=c.lendyn,c.lenbits=7,T={bits:c.lenbits},z=h(0,c.lens,0,19,c.lencode,0,c.work,T),c.lenbits=T.bits,z){V.msg="invalid code lengths set",c.mode=30;break}c.have=0,c.mode=19;case 19:for(;c.have<c.nlen+c.ndist;){for(;se=(S=c.lencode[U&(1<<c.lenbits)-1])>>>16&255,be=65535&S,!((le=S>>>24)<=W);){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}if(be<16)U>>>=le,W-=le,c.lens[c.have++]=be;else{if(be===16){for(x=le+2;W<x;){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}if(U>>>=le,W-=le,c.have===0){V.msg="invalid bit length repeat",c.mode=30;break}d=c.lens[c.have-1],M=3+(3&U),U>>>=2,W-=2}else if(be===17){for(x=le+3;W<x;){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}W-=le,d=0,M=3+(7&(U>>>=le)),U>>>=3,W-=3}else{for(x=le+7;W<x;){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}W-=le,d=0,M=11+(127&(U>>>=le)),U>>>=7,W-=7}if(c.have+M>c.nlen+c.ndist){V.msg="invalid bit length repeat",c.mode=30;break}for(;M--;)c.lens[c.have++]=d}}if(c.mode===30)break;if(c.lens[256]===0){V.msg="invalid code -- missing end-of-block",c.mode=30;break}if(c.lenbits=9,T={bits:c.lenbits},z=h(f,c.lens,0,c.nlen,c.lencode,0,c.work,T),c.lenbits=T.bits,z){V.msg="invalid literal/lengths set",c.mode=30;break}if(c.distbits=6,c.distcode=c.distdyn,T={bits:c.distbits},z=h(p,c.lens,c.nlen,c.ndist,c.distcode,0,c.work,T),c.distbits=T.bits,z){V.msg="invalid distances set",c.mode=30;break}if(c.mode=20,k===6)break e;case 20:c.mode=21;case 21:if(6<=C&&258<=ee){V.next_out=q,V.avail_out=ee,V.next_in=Y,V.avail_in=C,c.hold=U,c.bits=W,s(V,j),q=V.next_out,Q=V.output,ee=V.avail_out,Y=V.next_in,_=V.input,C=V.avail_in,U=c.hold,W=c.bits,c.mode===12&&(c.back=-1);break}for(c.back=0;se=(S=c.lencode[U&(1<<c.lenbits)-1])>>>16&255,be=65535&S,!((le=S>>>24)<=W);){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}if(se&&(240&se)==0){for(me=le,Ze=se,ge=be;se=(S=c.lencode[ge+((U&(1<<me+Ze)-1)>>me)])>>>16&255,be=65535&S,!(me+(le=S>>>24)<=W);){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}U>>>=me,W-=me,c.back+=me}if(U>>>=le,W-=le,c.back+=le,c.length=be,se===0){c.mode=26;break}if(32&se){c.back=-1,c.mode=12;break}if(64&se){V.msg="invalid literal/length code",c.mode=30;break}c.extra=15&se,c.mode=22;case 22:if(c.extra){for(x=c.extra;W<x;){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}c.length+=U&(1<<c.extra)-1,U>>>=c.extra,W-=c.extra,c.back+=c.extra}c.was=c.length,c.mode=23;case 23:for(;se=(S=c.distcode[U&(1<<c.distbits)-1])>>>16&255,be=65535&S,!((le=S>>>24)<=W);){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}if((240&se)==0){for(me=le,Ze=se,ge=be;se=(S=c.distcode[ge+((U&(1<<me+Ze)-1)>>me)])>>>16&255,be=65535&S,!(me+(le=S>>>24)<=W);){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}U>>>=me,W-=me,c.back+=me}if(U>>>=le,W-=le,c.back+=le,64&se){V.msg="invalid distance code",c.mode=30;break}c.offset=be,c.extra=15&se,c.mode=24;case 24:if(c.extra){for(x=c.extra;W<x;){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}c.offset+=U&(1<<c.extra)-1,U>>>=c.extra,W-=c.extra,c.back+=c.extra}if(c.offset>c.dmax){V.msg="invalid distance too far back",c.mode=30;break}c.mode=25;case 25:if(ee===0)break e;if(M=j-ee,c.offset>M){if((M=c.offset-M)>c.whave&&c.sane){V.msg="invalid distance too far back",c.mode=30;break}ue=M>c.wnext?(M-=c.wnext,c.wsize-M):c.wnext-M,M>c.length&&(M=c.length),fe=c.window}else fe=Q,ue=q-c.offset,M=c.length;for(ee<M&&(M=ee),ee-=M,c.length-=M;Q[q++]=fe[ue++],--M;);c.length===0&&(c.mode=21);break;case 26:if(ee===0)break e;Q[q++]=c.length,ee--,c.mode=21;break;case 27:if(c.wrap){for(;W<32;){if(C===0)break e;C--,U|=_[Y++]<<W,W+=8}if(j-=ee,V.total_out+=j,c.total+=j,j&&(V.adler=c.check=c.flags?o(c.check,Q,j,q-j):l(c.check,Q,j,q-j)),j=ee,(c.flags?U:b(U))!==c.check){V.msg="incorrect data check",c.mode=30;break}W=U=0}c.mode=28;case 28:if(c.wrap&&c.flags){for(;W<32;){if(C===0)break e;C--,U+=_[Y++]<<W,W+=8}if(U!==(4294967295&c.total)){V.msg="incorrect length check",c.mode=30;break}W=U=0}c.mode=29;case 29:z=1;break e;case 30:z=-3;break e;case 31:return-4;default:return m}return V.next_out=q,V.avail_out=ee,V.next_in=Y,V.avail_in=C,c.hold=U,c.bits=W,(c.wsize||j!==V.avail_out&&c.mode<30&&(c.mode<27||k!==4))&&P(V,V.output,V.next_out,j-V.avail_out)?(c.mode=31,-4):($-=V.avail_in,j-=V.avail_out,V.total_in+=$,V.total_out+=j,c.total+=j,c.wrap&&j&&(V.adler=c.check=c.flags?o(c.check,Q,j,V.next_out-j):l(c.check,Q,j,V.next_out-j)),V.data_type=c.bits+(c.last?64:0)+(c.mode===12?128:0)+(c.mode===20||c.mode===15?256:0),($==0&&j===0||k===4)&&z===v&&(z=-5),z)},i.inflateEnd=function(V){if(!V||!V.state)return m;var k=V.state;return k.window&&(k.window=null),V.state=null,v},i.inflateGetHeader=function(V,k){var c;return V&&V.state?(2&(c=V.state).wrap)==0?m:((c.head=k).done=!1,v):m},i.inflateSetDictionary=function(V,k){var c,_=k.length;return V&&V.state?(c=V.state).wrap!==0&&c.mode!==11?m:c.mode===11&&l(1,k,_,0)!==c.check?-3:P(V,k,_,_)?(c.mode=31,-4):(c.havedict=1,v):m},i.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(r,n,i){"use strict";var a=r("../utils/common"),l=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],o=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],s=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],h=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];n.exports=function(f,p,v,m,g,u,y,b){var Z,I,w,G,K,F,J,R,X,P=b.bits,V=0,k=0,c=0,_=0,Q=0,Y=0,q=0,C=0,ee=0,U=0,W=null,$=0,j=new a.Buf16(16),M=new a.Buf16(16),ue=null,fe=0;for(V=0;V<=15;V++)j[V]=0;for(k=0;k<m;k++)j[p[v+k]]++;for(Q=P,_=15;1<=_&&j[_]===0;_--);if(_<Q&&(Q=_),_===0)return g[u++]=20971520,g[u++]=20971520,b.bits=1,0;for(c=1;c<_&&j[c]===0;c++);for(Q<c&&(Q=c),V=C=1;V<=15;V++)if(C<<=1,(C-=j[V])<0)return-1;if(0<C&&(f===0||_!==1))return-1;for(M[1]=0,V=1;V<15;V++)M[V+1]=M[V]+j[V];for(k=0;k<m;k++)p[v+k]!==0&&(y[M[p[v+k]]++]=k);if(F=f===0?(W=ue=y,19):f===1?(W=l,$-=257,ue=o,fe-=257,256):(W=s,ue=h,-1),V=c,K=u,q=k=U=0,w=-1,G=(ee=1<<(Y=Q))-1,f===1&&852<ee||f===2&&592<ee)return 1;for(;;){for(J=V-q,X=y[k]<F?(R=0,y[k]):y[k]>F?(R=ue[fe+y[k]],W[$+y[k]]):(R=96,0),Z=1<<V-q,c=I=1<<Y;g[K+(U>>q)+(I-=Z)]=J<<24|R<<16|X|0,I!==0;);for(Z=1<<V-1;U&Z;)Z>>=1;if(Z!==0?(U&=Z-1,U+=Z):U=0,k++,--j[V]==0){if(V===_)break;V=p[v+y[k]]}if(Q<V&&(U&G)!==w){for(q===0&&(q=Q),K+=c,C=1<<(Y=V-q);Y+q<_&&!((C-=j[Y+q])<=0);)Y++,C<<=1;if(ee+=1<<Y,f===1&&852<ee||f===2&&592<ee)return 1;g[w=U&G]=Q<<24|Y<<16|K-u|0}}return U!==0&&(g[K+U]=V-q<<24|4194304),b.bits=Q,0}},{"../utils/common":41}],51:[function(r,n,i){"use strict";n.exports={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"}},{}],52:[function(r,n,i){"use strict";var a=r("../utils/common"),l=0,o=1;function s(S){for(var L=S.length;0<=--L;)S[L]=0}var h=0,f=29,p=256,v=p+1+f,m=30,g=19,u=2*v+1,y=15,b=16,Z=7,I=256,w=16,G=17,K=18,F=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],J=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],R=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],X=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],P=new Array(2*(v+2));s(P);var V=new Array(2*m);s(V);var k=new Array(512);s(k);var c=new Array(256);s(c);var _=new Array(f);s(_);var Q,Y,q,C=new Array(m);function ee(S,L,H,N,E){this.static_tree=S,this.extra_bits=L,this.extra_base=H,this.elems=N,this.max_length=E,this.has_stree=S&&S.length}function U(S,L){this.dyn_tree=S,this.max_code=0,this.stat_desc=L}function W(S){return S<256?k[S]:k[256+(S>>>7)]}function $(S,L){S.pending_buf[S.pending++]=255&L,S.pending_buf[S.pending++]=L>>>8&255}function j(S,L,H){S.bi_valid>b-H?(S.bi_buf|=L<<S.bi_valid&65535,$(S,S.bi_buf),S.bi_buf=L>>b-S.bi_valid,S.bi_valid+=H-b):(S.bi_buf|=L<<S.bi_valid&65535,S.bi_valid+=H)}function M(S,L,H){j(S,H[2*L],H[2*L+1])}function ue(S,L){for(var H=0;H|=1&S,S>>>=1,H<<=1,0<--L;);return H>>>1}function fe(S,L,H){var N,E,D=new Array(y+1),O=0;for(N=1;N<=y;N++)D[N]=O=O+H[N-1]<<1;for(E=0;E<=L;E++){var A=S[2*E+1];A!==0&&(S[2*E]=ue(D[A]++,A))}}function le(S){var L;for(L=0;L<v;L++)S.dyn_ltree[2*L]=0;for(L=0;L<m;L++)S.dyn_dtree[2*L]=0;for(L=0;L<g;L++)S.bl_tree[2*L]=0;S.dyn_ltree[2*I]=1,S.opt_len=S.static_len=0,S.last_lit=S.matches=0}function se(S){8<S.bi_valid?$(S,S.bi_buf):0<S.bi_valid&&(S.pending_buf[S.pending++]=S.bi_buf),S.bi_buf=0,S.bi_valid=0}function be(S,L,H,N){var E=2*L,D=2*H;return S[E]<S[D]||S[E]===S[D]&&N[L]<=N[H]}function me(S,L,H){for(var N=S.heap[H],E=H<<1;E<=S.heap_len&&(E<S.heap_len&&be(L,S.heap[E+1],S.heap[E],S.depth)&&E++,!be(L,N,S.heap[E],S.depth));)S.heap[H]=S.heap[E],H=E,E<<=1;S.heap[H]=N}function Ze(S,L,H){var N,E,D,O,A=0;if(S.last_lit!==0)for(;N=S.pending_buf[S.d_buf+2*A]<<8|S.pending_buf[S.d_buf+2*A+1],E=S.pending_buf[S.l_buf+A],A++,N===0?M(S,E,L):(M(S,(D=c[E])+p+1,L),(O=F[D])!==0&&j(S,E-=_[D],O),M(S,D=W(--N),H),(O=J[D])!==0&&j(S,N-=C[D],O)),A<S.last_lit;);M(S,I,L)}function ge(S,L){var H,N,E,D=L.dyn_tree,O=L.stat_desc.static_tree,A=L.stat_desc.has_stree,te=L.stat_desc.elems,ce=-1;for(S.heap_len=0,S.heap_max=u,H=0;H<te;H++)D[2*H]!==0?(S.heap[++S.heap_len]=ce=H,S.depth[H]=0):D[2*H+1]=0;for(;S.heap_len<2;)D[2*(E=S.heap[++S.heap_len]=ce<2?++ce:0)]=1,S.depth[E]=0,S.opt_len--,A&&(S.static_len-=O[2*E+1]);for(L.max_code=ce,H=S.heap_len>>1;1<=H;H--)me(S,D,H);for(E=te;H=S.heap[1],S.heap[1]=S.heap[S.heap_len--],me(S,D,1),N=S.heap[1],S.heap[--S.heap_max]=H,S.heap[--S.heap_max]=N,D[2*E]=D[2*H]+D[2*N],S.depth[E]=(S.depth[H]>=S.depth[N]?S.depth[H]:S.depth[N])+1,D[2*H+1]=D[2*N+1]=E,S.heap[1]=E++,me(S,D,1),2<=S.heap_len;);S.heap[--S.heap_max]=S.heap[1],(function(oe,we){var Ae,Se,Me,pe,B,re,ie=we.dyn_tree,he=we.max_code,Dt=we.stat_desc.static_tree,At=we.stat_desc.has_stree,Mt=we.stat_desc.extra_bits,Oe=we.stat_desc.extra_base,Be=we.stat_desc.max_length,Wi=0;for(pe=0;pe<=y;pe++)oe.bl_count[pe]=0;for(ie[2*oe.heap[oe.heap_max]+1]=0,Ae=oe.heap_max+1;Ae<u;Ae++)Be<(pe=ie[2*ie[2*(Se=oe.heap[Ae])+1]+1]+1)&&(pe=Be,Wi++),ie[2*Se+1]=pe,he<Se||(oe.bl_count[pe]++,B=0,Oe<=Se&&(B=Mt[Se-Oe]),re=ie[2*Se],oe.opt_len+=re*(pe+B),At&&(oe.static_len+=re*(Dt[2*Se+1]+B)));if(Wi!==0){do{for(pe=Be-1;oe.bl_count[pe]===0;)pe--;oe.bl_count[pe]--,oe.bl_count[pe+1]+=2,oe.bl_count[Be]--,Wi-=2}while(0<Wi);for(pe=Be;pe!==0;pe--)for(Se=oe.bl_count[pe];Se!==0;)he<(Me=oe.heap[--Ae])||(ie[2*Me+1]!==pe&&(oe.opt_len+=(pe-ie[2*Me+1])*ie[2*Me],ie[2*Me+1]=pe),Se--)}})(S,L),fe(D,ce,S.bl_count)}function d(S,L,H){var N,E,D=-1,O=L[1],A=0,te=7,ce=4;for(O===0&&(te=138,ce=3),L[2*(H+1)+1]=65535,N=0;N<=H;N++)E=O,O=L[2*(N+1)+1],++A<te&&E===O||(A<ce?S.bl_tree[2*E]+=A:E!==0?(E!==D&&S.bl_tree[2*E]++,S.bl_tree[2*w]++):A<=10?S.bl_tree[2*G]++:S.bl_tree[2*K]++,D=E,ce=(A=0)===O?(te=138,3):E===O?(te=6,3):(te=7,4))}function z(S,L,H){var N,E,D=-1,O=L[1],A=0,te=7,ce=4;for(O===0&&(te=138,ce=3),N=0;N<=H;N++)if(E=O,O=L[2*(N+1)+1],!(++A<te&&E===O)){if(A<ce)for(;M(S,E,S.bl_tree),--A!=0;);else E!==0?(E!==D&&(M(S,E,S.bl_tree),A--),M(S,w,S.bl_tree),j(S,A-3,2)):A<=10?(M(S,G,S.bl_tree),j(S,A-3,3)):(M(S,K,S.bl_tree),j(S,A-11,7));D=E,ce=(A=0)===O?(te=138,3):E===O?(te=6,3):(te=7,4)}}s(C);var T=!1;function x(S,L,H,N){j(S,(h<<1)+(N?1:0),3),(function(E,D,O,A){se(E),A&&($(E,O),$(E,~O)),a.arraySet(E.pending_buf,E.window,D,O,E.pending),E.pending+=O})(S,L,H,!0)}i._tr_init=function(S){T||((function(){var L,H,N,E,D,O=new Array(y+1);for(E=N=0;E<f-1;E++)for(_[E]=N,L=0;L<1<<F[E];L++)c[N++]=E;for(c[N-1]=E,E=D=0;E<16;E++)for(C[E]=D,L=0;L<1<<J[E];L++)k[D++]=E;for(D>>=7;E<m;E++)for(C[E]=D<<7,L=0;L<1<<J[E]-7;L++)k[256+D++]=E;for(H=0;H<=y;H++)O[H]=0;for(L=0;L<=143;)P[2*L+1]=8,L++,O[8]++;for(;L<=255;)P[2*L+1]=9,L++,O[9]++;for(;L<=279;)P[2*L+1]=7,L++,O[7]++;for(;L<=287;)P[2*L+1]=8,L++,O[8]++;for(fe(P,v+1,O),L=0;L<m;L++)V[2*L+1]=5,V[2*L]=ue(L,5);Q=new ee(P,F,p+1,v,y),Y=new ee(V,J,0,m,y),q=new ee(new Array(0),R,0,g,Z)})(),T=!0),S.l_desc=new U(S.dyn_ltree,Q),S.d_desc=new U(S.dyn_dtree,Y),S.bl_desc=new U(S.bl_tree,q),S.bi_buf=0,S.bi_valid=0,le(S)},i._tr_stored_block=x,i._tr_flush_block=function(S,L,H,N){var E,D,O=0;0<S.level?(S.strm.data_type===2&&(S.strm.data_type=(function(A){var te,ce=4093624447;for(te=0;te<=31;te++,ce>>>=1)if(1&ce&&A.dyn_ltree[2*te]!==0)return l;if(A.dyn_ltree[18]!==0||A.dyn_ltree[20]!==0||A.dyn_ltree[26]!==0)return o;for(te=32;te<p;te++)if(A.dyn_ltree[2*te]!==0)return o;return l})(S)),ge(S,S.l_desc),ge(S,S.d_desc),O=(function(A){var te;for(d(A,A.dyn_ltree,A.l_desc.max_code),d(A,A.dyn_dtree,A.d_desc.max_code),ge(A,A.bl_desc),te=g-1;3<=te&&A.bl_tree[2*X[te]+1]===0;te--);return A.opt_len+=3*(te+1)+5+5+4,te})(S),E=S.opt_len+3+7>>>3,(D=S.static_len+3+7>>>3)<=E&&(E=D)):E=D=H+5,H+4<=E&&L!==-1?x(S,L,H,N):S.strategy===4||D===E?(j(S,2+(N?1:0),3),Ze(S,P,V)):(j(S,4+(N?1:0),3),(function(A,te,ce,oe){var we;for(j(A,te-257,5),j(A,ce-1,5),j(A,oe-4,4),we=0;we<oe;we++)j(A,A.bl_tree[2*X[we]+1],3);z(A,A.dyn_ltree,te-1),z(A,A.dyn_dtree,ce-1)})(S,S.l_desc.max_code+1,S.d_desc.max_code+1,O+1),Ze(S,S.dyn_ltree,S.dyn_dtree)),le(S),N&&se(S)},i._tr_tally=function(S,L,H){return S.pending_buf[S.d_buf+2*S.last_lit]=L>>>8&255,S.pending_buf[S.d_buf+2*S.last_lit+1]=255&L,S.pending_buf[S.l_buf+S.last_lit]=255&H,S.last_lit++,L===0?S.dyn_ltree[2*H]++:(S.matches++,L--,S.dyn_ltree[2*(c[H]+p+1)]++,S.dyn_dtree[2*W(L)]++),S.last_lit===S.lit_bufsize-1},i._tr_align=function(S){j(S,2,3),M(S,I,P),(function(L){L.bi_valid===16?($(L,L.bi_buf),L.bi_buf=0,L.bi_valid=0):8<=L.bi_valid&&(L.pending_buf[L.pending++]=255&L.bi_buf,L.bi_buf>>=8,L.bi_valid-=8)})(S)}},{"../utils/common":41}],53:[function(r,n,i){"use strict";n.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}},{}],54:[function(r,n,i){(function(a){(function(l,o){"use strict";if(!l.setImmediate){var s,h,f,p,v=1,m={},g=!1,u=l.document,y=Object.getPrototypeOf&&Object.getPrototypeOf(l);y=y&&y.setTimeout?y:l,s={}.toString.call(l.process)==="[object process]"?function(w){process.nextTick(function(){Z(w)})}:(function(){if(l.postMessage&&!l.importScripts){var w=!0,G=l.onmessage;return l.onmessage=function(){w=!1},l.postMessage("","*"),l.onmessage=G,w}})()?(p="setImmediate$"+Math.random()+"$",l.addEventListener?l.addEventListener("message",I,!1):l.attachEvent("onmessage",I),function(w){l.postMessage(p+w,"*")}):l.MessageChannel?((f=new MessageChannel).port1.onmessage=function(w){Z(w.data)},function(w){f.port2.postMessage(w)}):u&&"onreadystatechange"in u.createElement("script")?(h=u.documentElement,function(w){var G=u.createElement("script");G.onreadystatechange=function(){Z(w),G.onreadystatechange=null,h.removeChild(G),G=null},h.appendChild(G)}):function(w){setTimeout(Z,0,w)},y.setImmediate=function(w){typeof w!="function"&&(w=new Function(""+w));for(var G=new Array(arguments.length-1),K=0;K<G.length;K++)G[K]=arguments[K+1];return m[v]={callback:w,args:G},s(v),v++},y.clearImmediate=b}function b(w){delete m[w]}function Z(w){if(g)setTimeout(Z,0,w);else{var G=m[w];if(G){g=!0;try{(function(K){var F=K.callback,J=K.args;switch(J.length){case 0:F();break;case 1:F(J[0]);break;case 2:F(J[0],J[1]);break;case 3:F(J[0],J[1],J[2]);break;default:F.apply(o,J)}})(G)}finally{b(w),g=!1}}}}function I(w){w.source===l&&typeof w.data=="string"&&w.data.indexOf(p)===0&&Z(+w.data.slice(p.length))}})(typeof self>"u"?a===void 0?this:a:self)}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})})),xc,Ic,at,Vi,Rc,lt,Gc,Lc,xi,Xc,Wc,Fc,kc,Ec,Uc,Tc,Kc,Ku=ne((()=>{bc(),xc=new Set(["zip","zipx","jar","war","ear","apk","cbz"]),Ic=new Set(["tar","tgz","gz","gzip"]),at=512,Vi=e=>{const t=new Uint8Array(e.byteLength);return t.set(e),t.buffer},Rc=async(e,t)=>{if(typeof DecompressionStream>"u")return null;const r=new Blob([Vi(e)]).stream().pipeThrough(new DecompressionStream(t));return new Uint8Array(await new Response(r).arrayBuffer())},lt=e=>e.replace(/^\/+/,"").replace(/\\/g,"/"),Gc=e=>{const t=lt(e).split("/");return t[t.length-1]||e},Lc=e=>Math.max(0,lt(e).split("/").length-1),xi=e=>{const t=lt(e.path),r=Gc(t);return{id:t,path:t,name:r,extension:zt(r),size:e.size,lastModified:e.lastModified,depth:Lc(t),previewable:Yl(r),compressedFile:{name:r,size:e.size,lastModified:e.lastModified,async extract(){const n=await e.load();return new File([n],r,{type:"application/octet-stream",lastModified:e.lastModified||Date.now()})}}}},Xc=(e,t,r)=>{const n=new TextDecoder("ascii").decode(e.slice(t,t+r)).replace(/\0.*$/,"").trim();return n&&Number.parseInt(n,8)||0},Wc=(e,t)=>{const r=new TextDecoder("utf-8"),n=r.decode(e.slice(t,t+100)).replace(/\0.*$/,""),i=r.decode(e.slice(t+345,t+500)).replace(/\0.*$/,"");return lt(i?`${i}/${n}`:n)},Fc=e=>{const t=[];let r=0;for(;r+at<=e.length&&!e.slice(r,r+at).every(s=>s===0);){const n=Wc(e,r),i=Xc(e,r+124,12),a=String.fromCharCode(e[r+156]||0),l=r+at,o=l+Math.ceil(i/at)*at;if(n&&a!=="5"&&!Si(n)){const s=e.slice(l,l+i);t.push(xi({path:n,size:i,load:async()=>Vi(s)}))}r=o}return t},kc=e=>{const t=e.toLowerCase();return t.endsWith(".tar.gz")||t.endsWith(".tgz")?"tgz":zt(e)},Ec=e=>{const t=e.toLowerCase();return t.endsWith(".gzip")?e.slice(0,-5)||"archive":t.endsWith(".gz")?e.slice(0,-3)||"archive":`${e||"archive"}.bin`},Uc=async e=>{const{default:t}=await Promise.resolve().then(()=>gu(Tu(),1)),r=await t.loadAsync(e),n=[];return r.forEach((i,a)=>{var l,o;if(a.dir)return;const s=a,h=lt(i);Si(h)||n.push(xi({path:h,size:((l=s._data)===null||l===void 0?void 0:l.uncompressedSize)||0,lastModified:(o=a.date)===null||o===void 0?void 0:o.getTime(),load:async()=>a.async("arraybuffer")}))}),n},Tc=async(e,t,r)=>{const n=new Uint8Array(e),i=r==="tar"?n:await Rc(n,"gzip");if(!i)return null;if(r==="gz"||r==="gzip"){const a=t.toLowerCase();if(!(a.endsWith(".tar.gz")||a.endsWith(".tgz")))return[xi({path:Ec(t),size:i.byteLength,load:async()=>Vi(i)})]}return Fc(i)},Kc=async(e,t)=>{const r=kc(t);return xc.has(r)?Uc(e):Ic.has(r)?Tc(e,t,r):null}})),_u=Bt({Archive:()=>eo,ArchiveCompression:()=>$l,ArchiveFormat:()=>ql});function _c(e,t=globalThis,r=["*"]){t.addEventListener("message",(function n(i){if(!i||!i.data)return;if(!(function(f,p){for(const v of f)if(p===v||v==="*"||v instanceof RegExp&&v.test(p))return!0;return!1})(r,i.origin))return void console.warn(`Invalid origin '${i.origin}' for comlink proxy`);const{id:a,type:l,path:o}=Object.assign({path:[]},i.data),s=(i.data.argumentList||[]).map(De);let h;try{const f=o.slice(0,-1).reduce(((v,m)=>v[m]),e),p=o.reduce(((v,m)=>v[m]),e);switch(l){case"GET":h=p;break;case"SET":f[o.slice(-1)[0]]=De(i.data.value),h=!0;break;case"APPLY":h=p.apply(f,s);break;case"CONSTRUCT":h=Al(new p(...s));break;case"ENDPOINT":{const{port1:v,port2:m}=new MessageChannel;_c(e,m),h=(function(g,u){return Ql.set(g,u),g})(v,[v])}break;case"RELEASE":h=void 0;break;default:return}}catch(f){h={value:f,[Ht]:0}}Promise.resolve(h).catch((f=>({value:f,[Ht]:0}))).then((f=>{const[p,v]=Ri(f);t.postMessage(Object.assign(Object.assign({},p),{id:a}),v),l==="RELEASE"&&(t.removeEventListener("message",n),Pc(t),Gi in e&&typeof e[Gi]=="function"&&e[Gi]())})).catch((f=>{const[p,v]=Ri({value:new TypeError("Unserializable return value"),[Ht]:0});t.postMessage(Object.assign(Object.assign({},p),{id:a}),v)}))})),t.start&&t.start()}function Pc(e){(function(t){return t.constructor.name==="MessagePort"})(e)&&e.close()}function Cc(e,t){return Dl(e,[],t)}function Ii(e){if(e)throw new Error("Proxy has been released and is not useable")}function zc(e){return ot(e,{type:"RELEASE"}).then((()=>{Pc(e)}))}function Dl(e,t=[],r=function(){}){let n=!1;const i=new Proxy(r,{get(a,l){if(Ii(n),l===Dc)return()=>{(function(o){Jt&&Jt.unregister(o)})(i),zc(e),n=!0};if(l==="then"){if(t.length===0)return{then:()=>i};const o=ot(e,{type:"GET",path:t.map((s=>s.toString()))}).then(De);return o.then.bind(o)}return Dl(e,[...t,l])},set(a,l,o){Ii(n);const[s,h]=Ri(o);return ot(e,{type:"SET",path:[...t,l].map((f=>f.toString())),value:s},h).then(De)},apply(a,l,o){Ii(n);const s=t[t.length-1];if(s===Jc)return ot(e,{type:"ENDPOINT"}).then(De);if(s==="bind")return Dl(e,t.slice(0,-1));const[h,f]=Yc(o);return ot(e,{type:"APPLY",path:t.map((p=>p.toString())),argumentList:h},f).then(De)},construct(a,l){Ii(n);const[o,s]=Yc(l);return ot(e,{type:"CONSTRUCT",path:t.map((h=>h.toString())),argumentList:o},s).then(De)}});return(function(a,l){const o=(Nt.get(l)||0)+1;Nt.set(l,o),Jt&&Jt.register(a,l,a)})(i,e),i}function Yc(e){const t=e.map(Ri);return[t.map((n=>n[0])),(r=t.map((n=>n[1])),Array.prototype.concat.apply([],r))];var r}function Al(e){return Object.assign(e,{[Ol]:!0})}function Ri(e){for(const[t,r]of jl)if(r.canHandle(e)){const[n,i]=r.serialize(e);return[{type:"HANDLER",name:t,value:n},i]}return[{type:"RAW",value:e},Ql.get(e)||[]]}function De(e){switch(e.type){case"HANDLER":return jl.get(e.name).deserialize(e.value);case"RAW":return e.value}}function ot(e,t,r){return new Promise((n=>{const i=new Array(4).fill(0).map((()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16))).join("-");e.addEventListener("message",(function a(l){l.data&&l.data.id&&l.data.id===i&&(e.removeEventListener("message",a),n(l.data))})),e.start&&e.start(),e.postMessage(Object.assign({id:i},t),r)}))}function Ml(e){if(e instanceof File||e instanceof Li||e===null)return e;const t={};for(const r of Object.keys(e))t[r]=Ml(e[r]);return t}function Hc(e,t=""){const r=[];for(const n of Object.keys(e))e[n]instanceof File||e[n]instanceof Li||e[n]===null?r.push({file:e[n]||n,path:t}):r.push(...Hc(e[n],`${t}${n}/`));return r}function Nc(e,t){const r=t.split("/");r[r.length-1]===""&&r.pop();let n=e,i=null;for(const a of r)n[a]=n[a]||{},i=n,n=n[a];return[i,r[r.length-1]]}var Ol,Jc,Dc,Gi,Ht,Bl,jl,Nt,Jt,Ql,Li,Ac,ql,$l,eo,Pu=ne((()=>{Ol=Symbol("Comlink.proxy"),Jc=Symbol("Comlink.endpoint"),Dc=Symbol("Comlink.releaseProxy"),Gi=Symbol("Comlink.finalizer"),Ht=Symbol("Comlink.thrown"),Bl=e=>typeof e=="object"&&e!==null||typeof e=="function",jl=new Map([["proxy",{canHandle:e=>Bl(e)&&e[Ol],serialize(e){const{port1:t,port2:r}=new MessageChannel;return _c(e,t),[r,[r]]},deserialize:e=>(e.start(),Cc(e))}],["throw",{canHandle:e=>Bl(e)&&Ht in e,serialize({value:e}){let t;return t=e instanceof Error?{isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:{isError:!1,value:e},[t,[]]},deserialize(e){throw e.isError?Object.assign(new Error(e.value.message),e.value):e.value}}]]),Nt=new WeakMap,Jt="FinalizationRegistry"in globalThis&&new FinalizationRegistry((e=>{const t=(Nt.get(e)||0)-1;Nt.set(e,t),t===0&&zc(e)})),Ql=new WeakMap,Li=class{constructor(e,t,r,n,i){this._name=e,this._size=t,this._path=r,this._lastModified=n,this._archiveRef=i}get name(){return this._name}get size(){return this._size}get lastModified(){return this._lastModified}extract(){return this._archiveRef.extractSingleFile(this._path)}},Ac=class{constructor(e,t,r){this._content={},this._processed=0,this.file=e,this.client=t,this.worker=r}open(){return this._content={},this._processed=0,new Promise(((e,t)=>{this.client.open(this.file,Al((()=>{e(this)})))}))}async close(){var e;(e=this.worker)===null||e===void 0||e.terminate(),this.worker=null,this.client=null,this.file=null}async hasEncryptedData(){return await this.client.hasEncryptedData()}async usePassword(e){await this.client.usePassword(e)}async setLocale(e){await this.client.setLocale(e)}async getFilesObject(){return this._processed>0?Promise.resolve().then((()=>this._content)):((await this.client.listFiles()).forEach((e=>{const[t,r]=Nc(this._content,e.path);e.type==="FILE"&&(t[r]=new Li(e.fileName,e.size,e.path,e.lastModified,this))})),this._processed=1,Ml(this._content))}getFilesArray(){return this.getFilesObject().then((e=>Hc(e)))}async extractSingleFile(e){if(this.worker===null)throw new Error("Archive already closed");const t=await this.client.extractSingleFile(e);return new File([t.fileData],t.fileName,{type:"application/octet-stream",lastModified:t.lastModified/1e6})}async extractFiles(e=void 0){var t;return this._processed>1?Promise.resolve().then((()=>this._content)):((await this.client.extractFiles()).forEach((r=>{const[n,i]=Nc(this._content,r.path);r.type==="FILE"&&(n[i]=new File([r.fileData],r.fileName,{type:"application/octet-stream"}),e!==void 0&&setTimeout(e.bind(null,{file:n[i],path:r.path})))})),this._processed=2,(t=this.worker)===null||t===void 0||t.terminate(),Ml(this._content))}},(function(e){e.SEVEN_ZIP="7zip",e.AR="ar",e.ARBSD="arbsd",e.ARGNU="argnu",e.ARSVR4="arsvr4",e.BIN="bin",e.BSDTAR="bsdtar",e.CD9660="cd9660",e.CPIO="cpio",e.GNUTAR="gnutar",e.ISO="iso",e.ISO9660="iso9660",e.MTREE="mtree",e.MTREE_CLASSIC="mtree-classic",e.NEWC="newc",e.ODC="odc",e.OLDTAR="oldtar",e.PAX="pax",e.PAXR="paxr",e.POSIX="posix",e.PWB="pwb",e.RAW="raw",e.RPAX="rpax",e.SHAR="shar",e.SHARDUMP="shardump",e.USTAR="ustar",e.V7TAR="v7tar",e.V7="v7",e.WARC="warc",e.XAR="xar",e.ZIP="zip"})(ql||(ql={})),(function(e){e.B64ENCODE="b64encode",e.BZIP2="bzip2",e.COMPRESS="compress",e.GRZIP="grzip",e.GZIP="gzip",e.LRZIP="lrzip",e.LZ4="lz4",e.LZIP="lzip",e.LZMA="lzma",e.LZOP="lzop",e.UUENCODE="uuencode",e.XZ="xz",e.ZSTD="zstd",e.NONE="none"})($l||($l={})),eo=class Ie{static init(t=null){return Ie._options=t||{},Ie._options}static async open(t){const r=Ie.getWorker(Ie._options);return await new Ac(t,await Ie.getClient(r,Ie._options),r).open()}static async write({files:t,outputFileName:r,compression:n,format:i,passphrase:a=null}){const l=Ie.getWorker(Ie._options),o=await(await Ie.getClient(l,Ie._options)).writeArchive(t,n,i,a);return l.terminate(),new File([o],r,{type:"application/octet-stream"})}static getWorker(t){return t.getWorker?t.getWorker():new Worker(t.workerUrl||new URL("data:text/javascript;base64,LyoqCiAqIEBsaWNlbnNlCiAqIENvcHlyaWdodCAyMDE5IEdvb2dsZSBMTEMKICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKICovCmNvbnN0IGU9U3ltYm9sKCJDb21saW5rLnByb3h5Iikscj1TeW1ib2woIkNvbWxpbmsuZW5kcG9pbnQiKSx0PVN5bWJvbCgiQ29tbGluay5yZWxlYXNlUHJveHkiKSxuPVN5bWJvbCgiQ29tbGluay5maW5hbGl6ZXIiKSxvPVN5bWJvbCgiQ29tbGluay50aHJvd24iKSxhPWU9PiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlLHM9bmV3IE1hcChbWyJwcm94eSIse2NhbkhhbmRsZTpyPT5hKHIpJiZyW2VdLHNlcmlhbGl6ZShlKXtjb25zdHtwb3J0MTpyLHBvcnQyOnR9PW5ldyBNZXNzYWdlQ2hhbm5lbDtyZXR1cm4gaShlLHIpLFt0LFt0XV19LGRlc2VyaWFsaXplKGUpe3JldHVybiBlLnN0YXJ0KCksZihlLFtdLHIpO3ZhciByfX1dLFsidGhyb3ciLHtjYW5IYW5kbGU6ZT0+YShlKSYmbyBpbiBlLHNlcmlhbGl6ZSh7dmFsdWU6ZX0pe2xldCByO3JldHVybiByPWUgaW5zdGFuY2VvZiBFcnJvcj97aXNFcnJvcjohMCx2YWx1ZTp7bWVzc2FnZTplLm1lc3NhZ2UsbmFtZTplLm5hbWUsc3RhY2s6ZS5zdGFja319Ontpc0Vycm9yOiExLHZhbHVlOmV9LFtyLFtdXX0sZGVzZXJpYWxpemUoZSl7aWYoZS5pc0Vycm9yKXRocm93IE9iamVjdC5hc3NpZ24obmV3IEVycm9yKGUudmFsdWUubWVzc2FnZSksZS52YWx1ZSk7dGhyb3cgZS52YWx1ZX19XV0pO2Z1bmN0aW9uIGkocix0PWdsb2JhbFRoaXMsYT1bIioiXSl7dC5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwoZnVuY3Rpb24gcyhsKXtpZighbHx8IWwuZGF0YSlyZXR1cm47aWYoIWZ1bmN0aW9uKGUscil7Zm9yKGNvbnN0IHQgb2YgZSl7aWYocj09PXR8fCIqIj09PXQpcmV0dXJuITA7aWYodCBpbnN0YW5jZW9mIFJlZ0V4cCYmdC50ZXN0KHIpKXJldHVybiEwfXJldHVybiExfShhLGwub3JpZ2luKSlyZXR1cm4gdm9pZCBjb25zb2xlLndhcm4oYEludmFsaWQgb3JpZ2luICcke2wub3JpZ2lufScgZm9yIGNvbWxpbmsgcHJveHlgKTtjb25zdHtpZDpjLHR5cGU6ZCxwYXRoOmh9PU9iamVjdC5hc3NpZ24oe3BhdGg6W119LGwuZGF0YSksZj0obC5kYXRhLmFyZ3VtZW50TGlzdHx8W10pLm1hcCh3KTtsZXQgbTt0cnl7Y29uc3QgdD1oLnNsaWNlKDAsLTEpLnJlZHVjZSgoKGUscik9PmVbcl0pLHIpLG49aC5yZWR1Y2UoKChlLHIpPT5lW3JdKSxyKTtzd2l0Y2goZCl7Y2FzZSJHRVQiOm09bjticmVhaztjYXNlIlNFVCI6dFtoLnNsaWNlKC0xKVswXV09dyhsLmRhdGEudmFsdWUpLG09ITA7YnJlYWs7Y2FzZSJBUFBMWSI6bT1uLmFwcGx5KHQsZik7YnJlYWs7Y2FzZSJDT05TVFJVQ1QiOm09ZnVuY3Rpb24ocil7cmV0dXJuIE9iamVjdC5hc3NpZ24ocix7W2VdOiEwfSl9KG5ldyBuKC4uLmYpKTticmVhaztjYXNlIkVORFBPSU5UIjp7Y29uc3R7cG9ydDE6ZSxwb3J0Mjp0fT1uZXcgTWVzc2FnZUNoYW5uZWw7aShyLHQpLG09ZnVuY3Rpb24oZSxyKXtyZXR1cm4gcC5zZXQoZSxyKSxlfShlLFtlXSl9YnJlYWs7Y2FzZSJSRUxFQVNFIjptPXZvaWQgMDticmVhaztkZWZhdWx0OnJldHVybn19Y2F0Y2goZSl7bT17dmFsdWU6ZSxbb106MH19UHJvbWlzZS5yZXNvbHZlKG0pLmNhdGNoKChlPT4oe3ZhbHVlOmUsW29dOjB9KSkpLnRoZW4oKGU9Pntjb25zdFtvLGFdPXYoZSk7dC5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sbykse2lkOmN9KSxhKSwiUkVMRUFTRSI9PT1kJiYodC5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixzKSx1KHQpLG4gaW4gciYmImZ1bmN0aW9uIj09dHlwZW9mIHJbbl0mJnJbbl0oKSl9KSkuY2F0Y2goKGU9Pntjb25zdFtyLG5dPXYoe3ZhbHVlOm5ldyBUeXBlRXJyb3IoIlVuc2VyaWFsaXphYmxlIHJldHVybiB2YWx1ZSIpLFtvXTowfSk7dC5wb3N0TWVzc2FnZShPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30scikse2lkOmN9KSxuKX0pKX0pKSx0LnN0YXJ0JiZ0LnN0YXJ0KCl9ZnVuY3Rpb24gdShlKXsoZnVuY3Rpb24oZSl7cmV0dXJuIk1lc3NhZ2VQb3J0Ij09PWUuY29uc3RydWN0b3IubmFtZX0pKGUpJiZlLmNsb3NlKCl9ZnVuY3Rpb24gbChlKXtpZihlKXRocm93IG5ldyBFcnJvcigiUHJveHkgaGFzIGJlZW4gcmVsZWFzZWQgYW5kIGlzIG5vdCB1c2VhYmxlIil9ZnVuY3Rpb24gYyhlKXtyZXR1cm4gZyhlLHt0eXBlOiJSRUxFQVNFIn0pLnRoZW4oKCgpPT57dShlKX0pKX1jb25zdCBkPW5ldyBXZWFrTWFwLGg9IkZpbmFsaXphdGlvblJlZ2lzdHJ5ImluIGdsb2JhbFRoaXMmJm5ldyBGaW5hbGl6YXRpb25SZWdpc3RyeSgoZT0+e2NvbnN0IHI9KGQuZ2V0KGUpfHwwKS0xO2Quc2V0KGUsciksMD09PXImJmMoZSl9KSk7ZnVuY3Rpb24gZihlLG49W10sbz1mdW5jdGlvbigpe30pe2xldCBhPSExO2NvbnN0IHM9bmV3IFByb3h5KG8se2dldChyLG8pe2lmKGwoYSksbz09PXQpcmV0dXJuKCk9PnshZnVuY3Rpb24oZSl7aCYmaC51bnJlZ2lzdGVyKGUpfShzKSxjKGUpLGE9ITB9O2lmKCJ0aGVuIj09PW8pe2lmKDA9PT1uLmxlbmd0aClyZXR1cm57dGhlbjooKT0+c307Y29uc3Qgcj1nKGUse3R5cGU6IkdFVCIscGF0aDpuLm1hcCgoZT0+ZS50b1N0cmluZygpKSl9KS50aGVuKHcpO3JldHVybiByLnRoZW4uYmluZChyKX1yZXR1cm4gZihlLFsuLi5uLG9dKX0sc2V0KHIsdCxvKXtsKGEpO2NvbnN0W3MsaV09dihvKTtyZXR1cm4gZyhlLHt0eXBlOiJTRVQiLHBhdGg6Wy4uLm4sdF0ubWFwKChlPT5lLnRvU3RyaW5nKCkpKSx2YWx1ZTpzfSxpKS50aGVuKHcpfSxhcHBseSh0LG8scyl7bChhKTtjb25zdCBpPW5bbi5sZW5ndGgtMV07aWYoaT09PXIpcmV0dXJuIGcoZSx7dHlwZToiRU5EUE9JTlQifSkudGhlbih3KTtpZigiYmluZCI9PT1pKXJldHVybiBmKGUsbi5zbGljZSgwLC0xKSk7Y29uc3RbdSxjXT1tKHMpO3JldHVybiBnKGUse3R5cGU6IkFQUExZIixwYXRoOm4ubWFwKChlPT5lLnRvU3RyaW5nKCkpKSxhcmd1bWVudExpc3Q6dX0sYykudGhlbih3KX0sY29uc3RydWN0KHIsdCl7bChhKTtjb25zdFtvLHNdPW0odCk7cmV0dXJuIGcoZSx7dHlwZToiQ09OU1RSVUNUIixwYXRoOm4ubWFwKChlPT5lLnRvU3RyaW5nKCkpKSxhcmd1bWVudExpc3Q6b30scykudGhlbih3KX19KTtyZXR1cm4gZnVuY3Rpb24oZSxyKXtjb25zdCB0PShkLmdldChyKXx8MCkrMTtkLnNldChyLHQpLGgmJmgucmVnaXN0ZXIoZSxyLGUpfShzLGUpLHN9ZnVuY3Rpb24gbShlKXtjb25zdCByPWUubWFwKHYpO3JldHVybltyLm1hcCgoZT0+ZVswXSkpLCh0PXIubWFwKChlPT5lWzFdKSksQXJyYXkucHJvdG90eXBlLmNvbmNhdC5hcHBseShbXSx0KSldO3ZhciB0fWNvbnN0IHA9bmV3IFdlYWtNYXA7ZnVuY3Rpb24gdihlKXtmb3IoY29uc3Rbcix0XW9mIHMpaWYodC5jYW5IYW5kbGUoZSkpe2NvbnN0W24sb109dC5zZXJpYWxpemUoZSk7cmV0dXJuW3t0eXBlOiJIQU5ETEVSIixuYW1lOnIsdmFsdWU6bn0sb119cmV0dXJuW3t0eXBlOiJSQVciLHZhbHVlOmV9LHAuZ2V0KGUpfHxbXV19ZnVuY3Rpb24gdyhlKXtzd2l0Y2goZS50eXBlKXtjYXNlIkhBTkRMRVIiOnJldHVybiBzLmdldChlLm5hbWUpLmRlc2VyaWFsaXplKGUudmFsdWUpO2Nhc2UiUkFXIjpyZXR1cm4gZS52YWx1ZX19ZnVuY3Rpb24gZyhlLHIsdCl7cmV0dXJuIG5ldyBQcm9taXNlKChuPT57Y29uc3Qgbz1uZXcgQXJyYXkoNCkuZmlsbCgwKS5tYXAoKCgpPT5NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLnRvU3RyaW5nKDE2KSkpLmpvaW4oIi0iKTtlLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLChmdW5jdGlvbiByKHQpe3QuZGF0YSYmdC5kYXRhLmlkJiZ0LmRhdGEuaWQ9PT1vJiYoZS5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIixyKSxuKHQuZGF0YSkpfSkpLGUuc3RhcnQmJmUuc3RhcnQoKSxlLnBvc3RNZXNzYWdlKE9iamVjdC5hc3NpZ24oe2lkOm99LHIpLHQpfSkpfWNvbnN0IF89ezMyNzY4OiJGSUxFIiwxNjM4NDoiRElSIiw0MDk2MDoiU1lNQk9MSUNfTElOSyIsNDkxNTI6IlNPQ0tFVCIsODE5MjoiQ0hBUkFDVEVSX0RFVklDRSIsMjQ1NzY6IkJMT0NLX0RFVklDRSIsNDA5NjoiTkFNRURfUElQRSJ9O2NsYXNzIHl7Y29uc3RydWN0b3IoZSl7dGhpcy5fd2FzbU1vZHVsZT1lLHRoaXMuX3J1bkNvZGU9ZS5ydW5Db2RlLHRoaXMuX2ZpbGU9bnVsbCx0aGlzLl9wYXNzcGhyYXNlPW51bGwsdGhpcy5fbG9jYWxlPSJlbl9VUy5VVEYtOCJ9YXN5bmMgb3BlbihlKXtudWxsIT09dGhpcy5fZmlsZSYmKGNvbnNvbGUud2FybigiQ2xvc2luZyBwcmV2aW91cyBmaWxlIiksdGhpcy5jbG9zZSgpKTtjb25zdCByPWF3YWl0IHRoaXMuX2xvYWRGaWxlKGUpO3RoaXMuX2ZpbGVMZW5ndGg9ci5sZW5ndGgsdGhpcy5fZmlsZVB0cj1yLnB0cn1jbG9zZSgpe3RoaXMuX3J1bkNvZGUuY2xvc2VBcmNoaXZlKHRoaXMuX2FyY2hpdmUpLHRoaXMuX3dhc21Nb2R1bGUuX2ZyZWUodGhpcy5fZmlsZVB0ciksdGhpcy5fZmlsZT1udWxsLHRoaXMuX2ZpbGVQdHI9bnVsbCx0aGlzLl9hcmNoaXZlPW51bGx9aGFzRW5jcnlwdGVkRGF0YSgpe3RoaXMuX2FyY2hpdmU9dGhpcy5fcnVuQ29kZS5vcGVuQXJjaGl2ZSh0aGlzLl9maWxlUHRyLHRoaXMuX2ZpbGVMZW5ndGgsdGhpcy5fcGFzc3BocmFzZSx0aGlzLl9sb2NhbGUpLHRoaXMuX3J1bkNvZGUuZ2V0TmV4dEVudHJ5KHRoaXMuX2FyY2hpdmUpO2NvbnN0IGU9dGhpcy5fcnVuQ29kZS5oYXNFbmNyeXB0ZWRFbnRyaWVzKHRoaXMuX2FyY2hpdmUpO3JldHVybiAwIT09ZSYmKGU+MHx8bnVsbCl9c2V0UGFzc3BocmFzZShlKXt0aGlzLl9wYXNzcGhyYXNlPWV9c2V0TG9jYWxlKGUpe3RoaXMuX2xvY2FsZT1lfSplbnRyaWVzKGU9ITEscj1udWxsKXtsZXQgdDtmb3IodGhpcy5fYXJjaGl2ZT10aGlzLl9ydW5Db2RlLm9wZW5BcmNoaXZlKHRoaXMuX2ZpbGVQdHIsdGhpcy5fZmlsZUxlbmd0aCx0aGlzLl9wYXNzcGhyYXNlLHRoaXMuX2xvY2FsZSk7dD10aGlzLl9ydW5Db2RlLmdldE5leHRFbnRyeSh0aGlzLl9hcmNoaXZlKSwwIT09dDspe2NvbnN0IG49e3NpemU6dGhpcy5fcnVuQ29kZS5nZXRFbnRyeVNpemUodCkscGF0aDp0aGlzLl9ydW5Db2RlLmdldEVudHJ5TmFtZSh0KSx0eXBlOl9bdGhpcy5fcnVuQ29kZS5nZXRFbnRyeVR5cGUodCldLGxhc3RNb2RpZmllZDp0aGlzLl9ydW5Db2RlLmdldEVudHJ5TGFzdE1vZGlmaWVkKHQpLHJlZjp0fTtpZigiRklMRSI9PT1uLnR5cGUpe2xldCBlPW4ucGF0aC5zcGxpdCgiLyIpO24uZmlsZU5hbWU9ZVtlLmxlbmd0aC0xXX1pZihlJiZyIT09bi5wYXRoKXRoaXMuX3J1bkNvZGUuc2tpcEVudHJ5KHRoaXMuX2FyY2hpdmUpO2Vsc2V7Y29uc3QgZT10aGlzLl9ydW5Db2RlLmdldEZpbGVEYXRhKHRoaXMuX2FyY2hpdmUsbi5zaXplKTtpZihlPDApdGhyb3cgbmV3IEVycm9yKHRoaXMuX3J1bkNvZGUuZ2V0RXJyb3IodGhpcy5fYXJjaGl2ZSkpO24uZmlsZURhdGE9dGhpcy5fd2FzbU1vZHVsZS5IRUFQVTguc2xpY2UoZSxlK24uc2l6ZSksdGhpcy5fd2FzbU1vZHVsZS5fZnJlZShlKX15aWVsZCBufX1hc3luYyBfbG9hZEZpbGUoZSl7Y29uc3Qgcj1hd2FpdCBlLmFycmF5QnVmZmVyKCksdD1uZXcgVWludDhBcnJheShyKSxuPXRoaXMuX3J1bkNvZGUubWFsbG9jKHQubGVuZ3RoKTtyZXR1cm4gdGhpcy5fd2FzbU1vZHVsZS5IRUFQVTguc2V0KHQsbikse3B0cjpuLGxlbmd0aDp0Lmxlbmd0aH19fWNsYXNzIEV7Y29uc3RydWN0b3IoZSl7dGhpcy5fd2FzbU1vZHVsZT1lLHRoaXMuX3J1bkNvZGU9ZS5ydW5Db2RlLHRoaXMuX3Bhc3NwaHJhc2U9bnVsbCx0aGlzLl9sb2NhbGU9ImVuX1VTLlVURi04In1hc3luYyB3cml0ZShlLHIsdCxuPW51bGwpe2xldCBvPWUucmVkdWNlKCgoZSx7ZmlsZTpyfSk9PmUrci5zaXplKzEyOCksMCkrMTI4O2NvbnN0IGE9dGhpcy5fcnVuQ29kZS5tYWxsb2Mobykscz10aGlzLl9ydW5Db2RlLm1hbGxvYyh0aGlzLl9ydW5Db2RlLnNpemVPZlNpemVUKCkpLGk9dGhpcy5fcnVuQ29kZS5zdGFydEFyY2hpdmVXcml0ZShyLHQsYSxvLHMsbik7Zm9yKGNvbnN0e2ZpbGU6cixwYXRobmFtZTp0fW9mIGUpe2NvbnN0IGU9YXdhaXQgdGhpcy5fbG9hZEZpbGUocik7dGhpcy5fcnVuQ29kZS53cml0ZUFyY2hpdmVGaWxlKGksdHx8ci5uYW1lLGUubGVuZ3RoLGUucHRyKSx0aGlzLl9ydW5Db2RlLmZyZWUoZS5wdHIpfWNvbnN0IHU9dGhpcy5fcnVuQ29kZS5maW5pc2hBcmNoaXZlV3JpdGUoaSxzKTtpZih1PDApdGhyb3cgbmV3IEVycm9yKHRoaXMuX3J1bkNvZGUuZ2V0RXJyb3IoaSkpO3JldHVybiB0aGlzLl93YXNtTW9kdWxlLkhFQVBVOC5zbGljZShhLGErdSl9YXN5bmMgX2xvYWRGaWxlKGUpe2NvbnN0IHI9YXdhaXQgZS5hcnJheUJ1ZmZlcigpLHQ9bmV3IFVpbnQ4QXJyYXkociksbj10aGlzLl9ydW5Db2RlLm1hbGxvYyh0Lmxlbmd0aCk7cmV0dXJuIHRoaXMuX3dhc21Nb2R1bGUuSEVBUFU4LnNldCh0LG4pLHtwdHI6bixsZW5ndGg6dC5sZW5ndGh9fX12YXIgYixrPShiPWltcG9ydC5tZXRhLnVybCxhc3luYyBmdW5jdGlvbihlPXt9KXt2YXIgcix0LG49ZTtuLnJlYWR5PW5ldyBQcm9taXNlKCgoZSxuKT0+e3I9ZSx0PW59KSk7dmFyIG8sYSxzLGk9T2JqZWN0LmFzc2lnbih7fSxuKSx1PSIuL3RoaXMucHJvZ3JhbSIsbD0oZSxyKT0+e3Rocm93IHJ9LGM9Im9iamVjdCI9PXR5cGVvZiB3aW5kb3csZD0iZnVuY3Rpb24iPT10eXBlb2YgaW1wb3J0U2NyaXB0cyxoPSJvYmplY3QiPT10eXBlb2YgcHJvY2VzcyYmIm9iamVjdCI9PXR5cGVvZiBwcm9jZXNzLnZlcnNpb25zJiYic3RyaW5nIj09dHlwZW9mIHByb2Nlc3MudmVyc2lvbnMubm9kZSxmPSIiO2lmKGgpe2NvbnN0e2NyZWF0ZVJlcXVpcmU6ZX09YXdhaXQgaW1wb3J0KCJtb2R1bGUiKTt2YXIgbT1lKGltcG9ydC5tZXRhLnVybCkscD1tKCJmcyIpLHY9bSgicGF0aCIpO2Y9ZD92LmRpcm5hbWUoZikrIi8iOm0oInVybCIpLmZpbGVVUkxUb1BhdGgobmV3IFVSTCgiLi8iLGltcG9ydC5tZXRhLnVybCkpLG89KGUscik9PihlPVkoZSk/bmV3IFVSTChlKTp2Lm5vcm1hbGl6ZShlKSxwLnJlYWRGaWxlU3luYyhlLHI/dm9pZCAwOiJ1dGY4IikpLHM9ZT0+e3ZhciByPW8oZSwhMCk7cmV0dXJuIHIuYnVmZmVyfHwocj1uZXcgVWludDhBcnJheShyKSkscn0sYT0oZSxyLHQsbj0hMCk9PntlPVkoZSk/bmV3IFVSTChlKTp2Lm5vcm1hbGl6ZShlKSxwLnJlYWRGaWxlKGUsbj92b2lkIDA6InV0ZjgiLCgoZSxvKT0+e2U/dChlKTpyKG4/by5idWZmZXI6byl9KSl9LCFuLnRoaXNQcm9ncmFtJiZwcm9jZXNzLmFyZ3YubGVuZ3RoPjEmJih1PXByb2Nlc3MuYXJndlsxXS5yZXBsYWNlKC9cXC9nLCIvIikpLHByb2Nlc3MuYXJndi5zbGljZSgyKSxsPShlLHIpPT57dGhyb3cgcHJvY2Vzcy5leGl0Q29kZT1lLHJ9LG4uaW5zcGVjdD0oKT0+IltFbXNjcmlwdGVuIE1vZHVsZSBvYmplY3RdIn1lbHNlKGN8fGQpJiYoZD9mPXNlbGYubG9jYXRpb24uaHJlZjoidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50JiZkb2N1bWVudC5jdXJyZW50U2NyaXB0JiYoZj1kb2N1bWVudC5jdXJyZW50U2NyaXB0LnNyYyksYiYmKGY9YiksZj0wIT09Zi5pbmRleE9mKCJibG9iOiIpP2Yuc3Vic3RyKDAsZi5yZXBsYWNlKC9bPyNdLiovLCIiKS5sYXN0SW5kZXhPZigiLyIpKzEpOiIiLG89ZT0+e3ZhciByPW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gci5vcGVuKCJHRVQiLGUsITEpLHIuc2VuZChudWxsKSxyLnJlc3BvbnNlVGV4dH0sZCYmKHM9ZT0+e3ZhciByPW5ldyBYTUxIdHRwUmVxdWVzdDtyZXR1cm4gci5vcGVuKCJHRVQiLGUsITEpLHIucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciIsci5zZW5kKG51bGwpLG5ldyBVaW50OEFycmF5KHIucmVzcG9uc2UpfSksYT0oZSxyLHQpPT57dmFyIG49bmV3IFhNTEh0dHBSZXF1ZXN0O24ub3BlbigiR0VUIixlLCEwKSxuLnJlc3BvbnNlVHlwZT0iYXJyYXlidWZmZXIiLG4ub25sb2FkPSgpPT57MjAwPT1uLnN0YXR1c3x8MD09bi5zdGF0dXMmJm4ucmVzcG9uc2U/cihuLnJlc3BvbnNlKTp0KCl9LG4ub25lcnJvcj10LG4uc2VuZChudWxsKX0pO3ZhciB3LGcsXz1uLnByaW50fHxjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpLHk9bi5wcmludEVycnx8Y29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUpO09iamVjdC5hc3NpZ24obixpKSxpPW51bGwsbi5hcmd1bWVudHMmJm4uYXJndW1lbnRzLG4udGhpc1Byb2dyYW0mJih1PW4udGhpc1Byb2dyYW0pLG4ucXVpdCYmKGw9bi5xdWl0KSxuLndhc21CaW5hcnkmJih3PW4ud2FzbUJpbmFyeSksIm9iamVjdCIhPXR5cGVvZiBXZWJBc3NlbWJseSYmTygibm8gbmF0aXZlIHdhc20gc3VwcG9ydCBkZXRlY3RlZCIpO3ZhciBFLGssUyxGLEQsTT0hMTtmdW5jdGlvbiBBKGUscil7ZXx8TyhyKX1mdW5jdGlvbiBDKCl7dmFyIGU9Zy5idWZmZXI7bi5IRUFQOD1FPW5ldyBJbnQ4QXJyYXkoZSksbi5IRUFQMTY9Uz1uZXcgSW50MTZBcnJheShlKSxuLkhFQVBVOD1rPW5ldyBVaW50OEFycmF5KGUpLG4uSEVBUFUxNj1uZXcgVWludDE2QXJyYXkoZSksbi5IRUFQMzI9Rj1uZXcgSW50MzJBcnJheShlKSxuLkhFQVBVMzI9RD1uZXcgVWludDMyQXJyYXkoZSksbi5IRUFQRjMyPW5ldyBGbG9hdDMyQXJyYXkoZSksbi5IRUFQRjY0PW5ldyBGbG9hdDY0QXJyYXkoZSl9dmFyIFA9W10sVD1bXSxSPVtdLHo9MCxVPW51bGw7ZnVuY3Rpb24gTChlKXt6Kyssbi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzPy4oeil9ZnVuY3Rpb24geChlKXtpZih6LS0sbi5tb25pdG9yUnVuRGVwZW5kZW5jaWVzPy4oeiksMD09eiYmVSl7dmFyIHI9VTtVPW51bGwscigpfX1mdW5jdGlvbiBPKGUpe24ub25BYm9ydD8uKGUpLHkoZT0iQWJvcnRlZCgiK2UrIikiKSxNPSEwLGUrPSIuIEJ1aWxkIHdpdGggLXNBU1NFUlRJT05TIGZvciBtb3JlIGluZm8uIjt2YXIgcj1uZXcgV2ViQXNzZW1ibHkuUnVudGltZUVycm9yKGUpO3Rocm93IHQocikscn12YXIgTixCLGosSSxIPWU9PmUuc3RhcnRzV2l0aCgiZGF0YTphcHBsaWNhdGlvbi9vY3RldC1zdHJlYW07YmFzZTY0LCIpLFk9ZT0+ZS5zdGFydHNXaXRoKCJmaWxlOi8vIik7ZnVuY3Rpb24gVyhlKXtpZihlPT1OJiZ3KXJldHVybiBuZXcgVWludDhBcnJheSh3KTtpZihzKXJldHVybiBzKGUpO3Rocm93ImJvdGggYXN5bmMgYW5kIHN5bmMgZmV0Y2hpbmcgb2YgdGhlIHdhc20gZmFpbGVkIn1mdW5jdGlvbiBLKGUscix0KXtyZXR1cm4gZnVuY3Rpb24oZSl7aWYoIXcmJihjfHxkKSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGZldGNoJiYhWShlKSlyZXR1cm4gZmV0Y2goZSx7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pLnRoZW4oKHI9PntpZighci5vayl0aHJvdyJmYWlsZWQgdG8gbG9hZCB3YXNtIGJpbmFyeSBmaWxlIGF0ICciK2UrIiciO3JldHVybiByLmFycmF5QnVmZmVyKCl9KSkuY2F0Y2goKCgpPT5XKGUpKSk7aWYoYSlyZXR1cm4gbmV3IFByb21pc2UoKChyLHQpPT57YShlLChlPT5yKG5ldyBVaW50OEFycmF5KGUpKSksdCl9KSl9cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCgpPT5XKGUpKSl9KGUpLnRoZW4oKGU9PldlYkFzc2VtYmx5Lmluc3RhbnRpYXRlKGUscikpKS50aGVuKChlPT5lKSkudGhlbih0LChlPT57eShgZmFpbGVkIHRvIGFzeW5jaHJvbm91c2x5IHByZXBhcmUgd2FzbTogJHtlfWApLE8oZSl9KSl9ZnVuY3Rpb24gcShlKXt0aGlzLm5hbWU9IkV4aXRTdGF0dXMiLHRoaXMubWVzc2FnZT1gUHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggZXhpdCgke2V9KWAsdGhpcy5zdGF0dXM9ZX1uLmxvY2F0ZUZpbGU/SChOPSJsaWJhcmNoaXZlLndhc20iKXx8KEI9TixOPW4ubG9jYXRlRmlsZT9uLmxvY2F0ZUZpbGUoQixmKTpmK0IpOk49bmV3IFVSTCgibGliYXJjaGl2ZS53YXNtIixpbXBvcnQubWV0YS51cmwpLmhyZWY7dmFyICQ9ZT0+e2Zvcig7ZS5sZW5ndGg+MDspZS5zaGlmdCgpKG4pfSxYPW4ubm9FeGl0UnVudGltZXx8ITAsWj17aXNBYnM6ZT0+Ii8iPT09ZS5jaGFyQXQoMCksc3BsaXRQYXRoOmU9Pi9eKFwvP3wpKFtcc1xTXSo/KSgoPzpcLnsxLDJ9fFteXC9dKz98KShcLlteLlwvXSp8KSkoPzpbXC9dKikkLy5leGVjKGUpLnNsaWNlKDEpLG5vcm1hbGl6ZUFycmF5OihlLHIpPT57Zm9yKHZhciB0PTAsbj1lLmxlbmd0aC0xO24+PTA7bi0tKXt2YXIgbz1lW25dOyIuIj09PW8/ZS5zcGxpY2UobiwxKToiLi4iPT09bz8oZS5zcGxpY2UobiwxKSx0KyspOnQmJihlLnNwbGljZShuLDEpLHQtLSl9aWYocilmb3IoO3Q7dC0tKWUudW5zaGlmdCgiLi4iKTtyZXR1cm4gZX0sbm9ybWFsaXplOmU9Pnt2YXIgcj1aLmlzQWJzKGUpLHQ9Ii8iPT09ZS5zdWJzdHIoLTEpO3JldHVybihlPVoubm9ybWFsaXplQXJyYXkoZS5zcGxpdCgiLyIpLmZpbHRlcigoZT0+ISFlKSksIXIpLmpvaW4oIi8iKSl8fHJ8fChlPSIuIiksZSYmdCYmKGUrPSIvIiksKHI/Ii8iOiIiKStlfSxkaXJuYW1lOmU9Pnt2YXIgcj1aLnNwbGl0UGF0aChlKSx0PXJbMF0sbj1yWzFdO3JldHVybiB0fHxuPyhuJiYobj1uLnN1YnN0cigwLG4ubGVuZ3RoLTEpKSx0K24pOiIuIn0sYmFzZW5hbWU6ZT0+e2lmKCIvIj09PWUpcmV0dXJuIi8iO3ZhciByPShlPShlPVoubm9ybWFsaXplKGUpKS5yZXBsYWNlKC9cLyQvLCIiKSkubGFzdEluZGV4T2YoIi8iKTtyZXR1cm4tMT09PXI/ZTplLnN1YnN0cihyKzEpfSxqb2luOmZ1bmN0aW9uKCl7dmFyIGU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtyZXR1cm4gWi5ub3JtYWxpemUoZS5qb2luKCIvIikpfSxqb2luMjooZSxyKT0+Wi5ub3JtYWxpemUoZSsiLyIrcil9LEc9ZT0+KEc9KCgpPT57aWYoIm9iamVjdCI9PXR5cGVvZiBjcnlwdG8mJiJmdW5jdGlvbiI9PXR5cGVvZiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKXJldHVybiBlPT5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKGUpO2lmKGgpdHJ5e3ZhciBlPW0oImNyeXB0byIpO2lmKGUucmFuZG9tRmlsbFN5bmMpcmV0dXJuIHI9PmUucmFuZG9tRmlsbFN5bmMocik7dmFyIHI9ZS5yYW5kb21CeXRlcztyZXR1cm4gZT0+KGUuc2V0KHIoZS5ieXRlTGVuZ3RoKSksZSl9Y2F0Y2goZSl7fU8oImluaXRSYW5kb21EZXZpY2UiKX0pKCkpKGUpLFY9e3Jlc29sdmU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9IiIscj0hMSx0PWFyZ3VtZW50cy5sZW5ndGgtMTt0Pj0tMSYmIXI7dC0tKXt2YXIgbj10Pj0wP2FyZ3VtZW50c1t0XTpsZS5jd2QoKTtpZigic3RyaW5nIiE9dHlwZW9mIG4pdGhyb3cgbmV3IFR5cGVFcnJvcigiQXJndW1lbnRzIHRvIHBhdGgucmVzb2x2ZSBtdXN0IGJlIHN0cmluZ3MiKTtpZighbilyZXR1cm4iIjtlPW4rIi8iK2Uscj1aLmlzQWJzKG4pfXJldHVybihyPyIvIjoiIikrKGU9Wi5ub3JtYWxpemVBcnJheShlLnNwbGl0KCIvIikuZmlsdGVyKChlPT4hIWUpKSwhcikuam9pbigiLyIpKXx8Ii4ifSxyZWxhdGl2ZTooZSxyKT0+e2Z1bmN0aW9uIHQoZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aCYmIiI9PT1lW3JdO3IrKyk7Zm9yKHZhciB0PWUubGVuZ3RoLTE7dD49MCYmIiI9PT1lW3RdO3QtLSk7cmV0dXJuIHI+dD9bXTplLnNsaWNlKHIsdC1yKzEpfWU9Vi5yZXNvbHZlKGUpLnN1YnN0cigxKSxyPVYucmVzb2x2ZShyKS5zdWJzdHIoMSk7Zm9yKHZhciBuPXQoZS5zcGxpdCgiLyIpKSxvPXQoci5zcGxpdCgiLyIpKSxhPU1hdGgubWluKG4ubGVuZ3RoLG8ubGVuZ3RoKSxzPWEsaT0wO2k8YTtpKyspaWYobltpXSE9PW9baV0pe3M9aTticmVha312YXIgdT1bXTtmb3IoaT1zO2k8bi5sZW5ndGg7aSsrKXUucHVzaCgiLi4iKTtyZXR1cm4odT11LmNvbmNhdChvLnNsaWNlKHMpKSkuam9pbigiLyIpfX0sSj0idW5kZWZpbmVkIiE9dHlwZW9mIFRleHREZWNvZGVyP25ldyBUZXh0RGVjb2RlcigidXRmOCIpOnZvaWQgMCxRPShlLHIsdCk9Pntmb3IodmFyIG49cit0LG89cjtlW29dJiYhKG8+PW4pOykrK287aWYoby1yPjE2JiZlLmJ1ZmZlciYmSilyZXR1cm4gSi5kZWNvZGUoZS5zdWJhcnJheShyLG8pKTtmb3IodmFyIGE9IiI7cjxvOyl7dmFyIHM9ZVtyKytdO2lmKDEyOCZzKXt2YXIgaT02MyZlW3IrK107aWYoMTkyIT0oMjI0JnMpKXt2YXIgdT02MyZlW3IrK107aWYoKHM9MjI0PT0oMjQwJnMpPygxNSZzKTw8MTJ8aTw8Nnx1Oig3JnMpPDwxOHxpPDwxMnx1PDw2fDYzJmVbcisrXSk8NjU1MzYpYSs9U3RyaW5nLmZyb21DaGFyQ29kZShzKTtlbHNle3ZhciBsPXMtNjU1MzY7YSs9U3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NnxsPj4xMCw1NjMyMHwxMDIzJmwpfX1lbHNlIGErPVN0cmluZy5mcm9tQ2hhckNvZGUoKDMxJnMpPDw2fGkpfWVsc2UgYSs9U3RyaW5nLmZyb21DaGFyQ29kZShzKX1yZXR1cm4gYX0sZWU9W10scmU9ZT0+e2Zvcih2YXIgcj0wLHQ9MDt0PGUubGVuZ3RoOysrdCl7dmFyIG49ZS5jaGFyQ29kZUF0KHQpO248PTEyNz9yKys6bjw9MjA0Nz9yKz0yOm4+PTU1Mjk2JiZuPD01NzM0Mz8ocis9NCwrK3QpOnIrPTN9cmV0dXJuIHJ9LHRlPShlLHIsdCxuKT0+e2lmKCEobj4wKSlyZXR1cm4gMDtmb3IodmFyIG89dCxhPXQrbi0xLHM9MDtzPGUubGVuZ3RoOysrcyl7dmFyIGk9ZS5jaGFyQ29kZUF0KHMpO2lmKGk+PTU1Mjk2JiZpPD01NzM0MyYmKGk9NjU1MzYrKCgxMDIzJmkpPDwxMCl8MTAyMyZlLmNoYXJDb2RlQXQoKytzKSksaTw9MTI3KXtpZih0Pj1hKWJyZWFrO3JbdCsrXT1pfWVsc2UgaWYoaTw9MjA0Nyl7aWYodCsxPj1hKWJyZWFrO3JbdCsrXT0xOTJ8aT4+NixyW3QrK109MTI4fDYzJml9ZWxzZSBpZihpPD02NTUzNSl7aWYodCsyPj1hKWJyZWFrO3JbdCsrXT0yMjR8aT4+MTIsclt0KytdPTEyOHxpPj42JjYzLHJbdCsrXT0xMjh8NjMmaX1lbHNle2lmKHQrMz49YSlicmVhaztyW3QrK109MjQwfGk+PjE4LHJbdCsrXT0xMjh8aT4+MTImNjMsclt0KytdPTEyOHxpPj42JjYzLHJbdCsrXT0xMjh8NjMmaX19cmV0dXJuIHJbdF09MCx0LW99O2Z1bmN0aW9uIG5lKGUscix0KXt2YXIgbj10PjA/dDpyZShlKSsxLG89bmV3IEFycmF5KG4pLGE9dGUoZSxvLDAsby5sZW5ndGgpO3JldHVybiByJiYoby5sZW5ndGg9YSksb312YXIgb2U9e3R0eXM6W10saW5pdCgpe30sc2h1dGRvd24oKXt9LHJlZ2lzdGVyKGUscil7b2UudHR5c1tlXT17aW5wdXQ6W10sb3V0cHV0OltdLG9wczpyfSxsZS5yZWdpc3RlckRldmljZShlLG9lLnN0cmVhbV9vcHMpfSxzdHJlYW1fb3BzOntvcGVuKGUpe3ZhciByPW9lLnR0eXNbZS5ub2RlLnJkZXZdO2lmKCFyKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDQzKTtlLnR0eT1yLGUuc2Vla2FibGU9ITF9LGNsb3NlKGUpe2UudHR5Lm9wcy5mc3luYyhlLnR0eSl9LGZzeW5jKGUpe2UudHR5Lm9wcy5mc3luYyhlLnR0eSl9LHJlYWQoZSxyLHQsbixvKXtpZighZS50dHl8fCFlLnR0eS5vcHMuZ2V0X2NoYXIpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNjApO2Zvcih2YXIgYT0wLHM9MDtzPG47cysrKXt2YXIgaTt0cnl7aT1lLnR0eS5vcHMuZ2V0X2NoYXIoZS50dHkpfWNhdGNoKGUpe3Rocm93IG5ldyBsZS5FcnJub0Vycm9yKDI5KX1pZih2b2lkIDA9PT1pJiYwPT09YSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig2KTtpZihudWxsPT1pKWJyZWFrO2ErKyxyW3Qrc109aX1yZXR1cm4gYSYmKGUubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKSksYX0sd3JpdGUoZSxyLHQsbixvKXtpZighZS50dHl8fCFlLnR0eS5vcHMucHV0X2NoYXIpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNjApO3RyeXtmb3IodmFyIGE9MDthPG47YSsrKWUudHR5Lm9wcy5wdXRfY2hhcihlLnR0eSxyW3QrYV0pfWNhdGNoKGUpe3Rocm93IG5ldyBsZS5FcnJub0Vycm9yKDI5KX1yZXR1cm4gbiYmKGUubm9kZS50aW1lc3RhbXA9RGF0ZS5ub3coKSksYX19LGRlZmF1bHRfdHR5X29wczp7Z2V0X2NoYXI6ZT0+KCgpPT57aWYoIWVlLmxlbmd0aCl7dmFyIGU9bnVsbDtpZihoKXt2YXIgcj1CdWZmZXIuYWxsb2MoMjU2KSx0PTAsbj1wcm9jZXNzLnN0ZGluLmZkO3RyeXt0PXAucmVhZFN5bmMobixyKX1jYXRjaChlKXtpZighZS50b1N0cmluZygpLmluY2x1ZGVzKCJFT0YiKSl0aHJvdyBlO3Q9MH1lPXQ+MD9yLnNsaWNlKDAsdCkudG9TdHJpbmcoInV0Zi04Iik6bnVsbH1lbHNlInVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJmdW5jdGlvbiI9PXR5cGVvZiB3aW5kb3cucHJvbXB0P251bGwhPT0oZT13aW5kb3cucHJvbXB0KCJJbnB1dDogIikpJiYoZSs9IlxuIik6ImZ1bmN0aW9uIj09dHlwZW9mIHJlYWRsaW5lJiZudWxsIT09KGU9cmVhZGxpbmUoKSkmJihlKz0iXG4iKTtpZighZSlyZXR1cm4gbnVsbDtlZT1uZShlLCEwKX1yZXR1cm4gZWUuc2hpZnQoKX0pKCkscHV0X2NoYXIoZSxyKXtudWxsPT09cnx8MTA9PT1yPyhfKFEoZS5vdXRwdXQsMCkpLGUub3V0cHV0PVtdKTowIT1yJiZlLm91dHB1dC5wdXNoKHIpfSxmc3luYyhlKXtlLm91dHB1dCYmZS5vdXRwdXQubGVuZ3RoPjAmJihfKFEoZS5vdXRwdXQsMCkpLGUub3V0cHV0PVtdKX0saW9jdGxfdGNnZXRzOmU9Pih7Y19pZmxhZzoyNTg1NixjX29mbGFnOjUsY19jZmxhZzoxOTEsY19sZmxhZzozNTM4NyxjX2NjOlszLDI4LDEyNywyMSw0LDAsMSwwLDE3LDE5LDI2LDAsMTgsMTUsMjMsMjIsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMF19KSxpb2N0bF90Y3NldHM6KGUscix0KT0+MCxpb2N0bF90aW9jZ3dpbnN6OmU9PlsyNCw4MF19LGRlZmF1bHRfdHR5MV9vcHM6e3B1dF9jaGFyKGUscil7bnVsbD09PXJ8fDEwPT09cj8oeShRKGUub3V0cHV0LDApKSxlLm91dHB1dD1bXSk6MCE9ciYmZS5vdXRwdXQucHVzaChyKX0sZnN5bmMoZSl7ZS5vdXRwdXQmJmUub3V0cHV0Lmxlbmd0aD4wJiYoeShRKGUub3V0cHV0LDApKSxlLm91dHB1dD1bXSl9fX0sYWU9ZT0+e08oKX0sc2U9e29wc190YWJsZTpudWxsLG1vdW50OmU9PnNlLmNyZWF0ZU5vZGUobnVsbCwiLyIsMTY4OTUsMCksY3JlYXRlTm9kZShlLHIsdCxuKXtpZihsZS5pc0Jsa2Rldih0KXx8bGUuaXNGSUZPKHQpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDYzKTtzZS5vcHNfdGFibGV8fD17ZGlyOntub2RlOntnZXRhdHRyOnNlLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpzZS5ub2RlX29wcy5zZXRhdHRyLGxvb2t1cDpzZS5ub2RlX29wcy5sb29rdXAsbWtub2Q6c2Uubm9kZV9vcHMubWtub2QscmVuYW1lOnNlLm5vZGVfb3BzLnJlbmFtZSx1bmxpbms6c2Uubm9kZV9vcHMudW5saW5rLHJtZGlyOnNlLm5vZGVfb3BzLnJtZGlyLHJlYWRkaXI6c2Uubm9kZV9vcHMucmVhZGRpcixzeW1saW5rOnNlLm5vZGVfb3BzLnN5bWxpbmt9LHN0cmVhbTp7bGxzZWVrOnNlLnN0cmVhbV9vcHMubGxzZWVrfX0sZmlsZTp7bm9kZTp7Z2V0YXR0cjpzZS5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6c2Uubm9kZV9vcHMuc2V0YXR0cn0sc3RyZWFtOntsbHNlZWs6c2Uuc3RyZWFtX29wcy5sbHNlZWsscmVhZDpzZS5zdHJlYW1fb3BzLnJlYWQsd3JpdGU6c2Uuc3RyZWFtX29wcy53cml0ZSxhbGxvY2F0ZTpzZS5zdHJlYW1fb3BzLmFsbG9jYXRlLG1tYXA6c2Uuc3RyZWFtX29wcy5tbWFwLG1zeW5jOnNlLnN0cmVhbV9vcHMubXN5bmN9fSxsaW5rOntub2RlOntnZXRhdHRyOnNlLm5vZGVfb3BzLmdldGF0dHIsc2V0YXR0cjpzZS5ub2RlX29wcy5zZXRhdHRyLHJlYWRsaW5rOnNlLm5vZGVfb3BzLnJlYWRsaW5rfSxzdHJlYW06e319LGNocmRldjp7bm9kZTp7Z2V0YXR0cjpzZS5ub2RlX29wcy5nZXRhdHRyLHNldGF0dHI6c2Uubm9kZV9vcHMuc2V0YXR0cn0sc3RyZWFtOmxlLmNocmRldl9zdHJlYW1fb3BzfX07dmFyIG89bGUuY3JlYXRlTm9kZShlLHIsdCxuKTtyZXR1cm4gbGUuaXNEaXIoby5tb2RlKT8oby5ub2RlX29wcz1zZS5vcHNfdGFibGUuZGlyLm5vZGUsby5zdHJlYW1fb3BzPXNlLm9wc190YWJsZS5kaXIuc3RyZWFtLG8uY29udGVudHM9e30pOmxlLmlzRmlsZShvLm1vZGUpPyhvLm5vZGVfb3BzPXNlLm9wc190YWJsZS5maWxlLm5vZGUsby5zdHJlYW1fb3BzPXNlLm9wc190YWJsZS5maWxlLnN0cmVhbSxvLnVzZWRCeXRlcz0wLG8uY29udGVudHM9bnVsbCk6bGUuaXNMaW5rKG8ubW9kZSk/KG8ubm9kZV9vcHM9c2Uub3BzX3RhYmxlLmxpbmsubm9kZSxvLnN0cmVhbV9vcHM9c2Uub3BzX3RhYmxlLmxpbmsuc3RyZWFtKTpsZS5pc0NocmRldihvLm1vZGUpJiYoby5ub2RlX29wcz1zZS5vcHNfdGFibGUuY2hyZGV2Lm5vZGUsby5zdHJlYW1fb3BzPXNlLm9wc190YWJsZS5jaHJkZXYuc3RyZWFtKSxvLnRpbWVzdGFtcD1EYXRlLm5vdygpLGUmJihlLmNvbnRlbnRzW3JdPW8sZS50aW1lc3RhbXA9by50aW1lc3RhbXApLG99LGdldEZpbGVEYXRhQXNUeXBlZEFycmF5OmU9PmUuY29udGVudHM/ZS5jb250ZW50cy5zdWJhcnJheT9lLmNvbnRlbnRzLnN1YmFycmF5KDAsZS51c2VkQnl0ZXMpOm5ldyBVaW50OEFycmF5KGUuY29udGVudHMpOm5ldyBVaW50OEFycmF5KDApLGV4cGFuZEZpbGVTdG9yYWdlKGUscil7dmFyIHQ9ZS5jb250ZW50cz9lLmNvbnRlbnRzLmxlbmd0aDowO2lmKCEodD49cikpe3I9TWF0aC5tYXgocix0Kih0PDEwNDg1NzY/MjoxLjEyNSk+Pj4wKSwwIT10JiYocj1NYXRoLm1heChyLDI1NikpO3ZhciBuPWUuY29udGVudHM7ZS5jb250ZW50cz1uZXcgVWludDhBcnJheShyKSxlLnVzZWRCeXRlcz4wJiZlLmNvbnRlbnRzLnNldChuLnN1YmFycmF5KDAsZS51c2VkQnl0ZXMpLDApfX0scmVzaXplRmlsZVN0b3JhZ2UoZSxyKXtpZihlLnVzZWRCeXRlcyE9cilpZigwPT1yKWUuY29udGVudHM9bnVsbCxlLnVzZWRCeXRlcz0wO2Vsc2V7dmFyIHQ9ZS5jb250ZW50cztlLmNvbnRlbnRzPW5ldyBVaW50OEFycmF5KHIpLHQmJmUuY29udGVudHMuc2V0KHQuc3ViYXJyYXkoMCxNYXRoLm1pbihyLGUudXNlZEJ5dGVzKSkpLGUudXNlZEJ5dGVzPXJ9fSxub2RlX29wczp7Z2V0YXR0cihlKXt2YXIgcj17fTtyZXR1cm4gci5kZXY9bGUuaXNDaHJkZXYoZS5tb2RlKT9lLmlkOjEsci5pbm89ZS5pZCxyLm1vZGU9ZS5tb2RlLHIubmxpbms9MSxyLnVpZD0wLHIuZ2lkPTAsci5yZGV2PWUucmRldixsZS5pc0RpcihlLm1vZGUpP3Iuc2l6ZT00MDk2OmxlLmlzRmlsZShlLm1vZGUpP3Iuc2l6ZT1lLnVzZWRCeXRlczpsZS5pc0xpbmsoZS5tb2RlKT9yLnNpemU9ZS5saW5rLmxlbmd0aDpyLnNpemU9MCxyLmF0aW1lPW5ldyBEYXRlKGUudGltZXN0YW1wKSxyLm10aW1lPW5ldyBEYXRlKGUudGltZXN0YW1wKSxyLmN0aW1lPW5ldyBEYXRlKGUudGltZXN0YW1wKSxyLmJsa3NpemU9NDA5NixyLmJsb2Nrcz1NYXRoLmNlaWwoci5zaXplL3IuYmxrc2l6ZSkscn0sc2V0YXR0cihlLHIpe3ZvaWQgMCE9PXIubW9kZSYmKGUubW9kZT1yLm1vZGUpLHZvaWQgMCE9PXIudGltZXN0YW1wJiYoZS50aW1lc3RhbXA9ci50aW1lc3RhbXApLHZvaWQgMCE9PXIuc2l6ZSYmc2UucmVzaXplRmlsZVN0b3JhZ2UoZSxyLnNpemUpfSxsb29rdXAoZSxyKXt0aHJvdyBsZS5nZW5lcmljRXJyb3JzWzQ0XX0sbWtub2Q6KGUscix0LG4pPT5zZS5jcmVhdGVOb2RlKGUscix0LG4pLHJlbmFtZShlLHIsdCl7aWYobGUuaXNEaXIoZS5tb2RlKSl7dmFyIG47dHJ5e249bGUubG9va3VwTm9kZShyLHQpfWNhdGNoKGUpe31pZihuKWZvcih2YXIgbyBpbiBuLmNvbnRlbnRzKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDU1KX1kZWxldGUgZS5wYXJlbnQuY29udGVudHNbZS5uYW1lXSxlLnBhcmVudC50aW1lc3RhbXA9RGF0ZS5ub3coKSxlLm5hbWU9dCxyLmNvbnRlbnRzW3RdPWUsci50aW1lc3RhbXA9ZS5wYXJlbnQudGltZXN0YW1wLGUucGFyZW50PXJ9LHVubGluayhlLHIpe2RlbGV0ZSBlLmNvbnRlbnRzW3JdLGUudGltZXN0YW1wPURhdGUubm93KCl9LHJtZGlyKGUscil7dmFyIHQ9bGUubG9va3VwTm9kZShlLHIpO2Zvcih2YXIgbiBpbiB0LmNvbnRlbnRzKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDU1KTtkZWxldGUgZS5jb250ZW50c1tyXSxlLnRpbWVzdGFtcD1EYXRlLm5vdygpfSxyZWFkZGlyKGUpe3ZhciByPVsiLiIsIi4uIl07Zm9yKHZhciB0IG9mIE9iamVjdC5rZXlzKGUuY29udGVudHMpKXIucHVzaCh0KTtyZXR1cm4gcn0sc3ltbGluayhlLHIsdCl7dmFyIG49c2UuY3JlYXRlTm9kZShlLHIsNDE0NzEsMCk7cmV0dXJuIG4ubGluaz10LG59LHJlYWRsaW5rKGUpe2lmKCFsZS5pc0xpbmsoZS5tb2RlKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigyOCk7cmV0dXJuIGUubGlua319LHN0cmVhbV9vcHM6e3JlYWQoZSxyLHQsbixvKXt2YXIgYT1lLm5vZGUuY29udGVudHM7aWYobz49ZS5ub2RlLnVzZWRCeXRlcylyZXR1cm4gMDt2YXIgcz1NYXRoLm1pbihlLm5vZGUudXNlZEJ5dGVzLW8sbik7aWYocz44JiZhLnN1YmFycmF5KXIuc2V0KGEuc3ViYXJyYXkobyxvK3MpLHQpO2Vsc2UgZm9yKHZhciBpPTA7aTxzO2krKylyW3QraV09YVtvK2ldO3JldHVybiBzfSx3cml0ZShlLHIsdCxuLG8sYSl7aWYoci5idWZmZXI9PT1FLmJ1ZmZlciYmKGE9ITEpLCFuKXJldHVybiAwO3ZhciBzPWUubm9kZTtpZihzLnRpbWVzdGFtcD1EYXRlLm5vdygpLHIuc3ViYXJyYXkmJighcy5jb250ZW50c3x8cy5jb250ZW50cy5zdWJhcnJheSkpe2lmKGEpcmV0dXJuIHMuY29udGVudHM9ci5zdWJhcnJheSh0LHQrbikscy51c2VkQnl0ZXM9bixuO2lmKDA9PT1zLnVzZWRCeXRlcyYmMD09PW8pcmV0dXJuIHMuY29udGVudHM9ci5zbGljZSh0LHQrbikscy51c2VkQnl0ZXM9bixuO2lmKG8rbjw9cy51c2VkQnl0ZXMpcmV0dXJuIHMuY29udGVudHMuc2V0KHIuc3ViYXJyYXkodCx0K24pLG8pLG59aWYoc2UuZXhwYW5kRmlsZVN0b3JhZ2UocyxvK24pLHMuY29udGVudHMuc3ViYXJyYXkmJnIuc3ViYXJyYXkpcy5jb250ZW50cy5zZXQoci5zdWJhcnJheSh0LHQrbiksbyk7ZWxzZSBmb3IodmFyIGk9MDtpPG47aSsrKXMuY29udGVudHNbbytpXT1yW3QraV07cmV0dXJuIHMudXNlZEJ5dGVzPU1hdGgubWF4KHMudXNlZEJ5dGVzLG8rbiksbn0sbGxzZWVrKGUscix0KXt2YXIgbj1yO2lmKDE9PT10P24rPWUucG9zaXRpb246Mj09PXQmJmxlLmlzRmlsZShlLm5vZGUubW9kZSkmJihuKz1lLm5vZGUudXNlZEJ5dGVzKSxuPDApdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMjgpO3JldHVybiBufSxhbGxvY2F0ZShlLHIsdCl7c2UuZXhwYW5kRmlsZVN0b3JhZ2UoZS5ub2RlLHIrdCksZS5ub2RlLnVzZWRCeXRlcz1NYXRoLm1heChlLm5vZGUudXNlZEJ5dGVzLHIrdCl9LG1tYXAoZSxyLHQsbixvKXtpZighbGUuaXNGaWxlKGUubm9kZS5tb2RlKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig0Myk7dmFyIGEscyxpPWUubm9kZS5jb250ZW50cztpZigyJm98fGkuYnVmZmVyIT09RS5idWZmZXIpe2lmKCh0PjB8fHQrcjxpLmxlbmd0aCkmJihpPWkuc3ViYXJyYXk/aS5zdWJhcnJheSh0LHQrcik6QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoaSx0LHQrcikpLHM9ITAsIShhPWFlKCkpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDQ4KTtFLnNldChpLGEpfWVsc2Ugcz0hMSxhPWkuYnl0ZU9mZnNldDtyZXR1cm57cHRyOmEsYWxsb2NhdGVkOnN9fSxtc3luYzooZSxyLHQsbixvKT0+KHNlLnN0cmVhbV9vcHMud3JpdGUoZSxyLDAsbix0LCExKSwwKX19LGllPW4ucHJlbG9hZFBsdWdpbnN8fFtdLHVlPShlLHIpPT57dmFyIHQ9MDtyZXR1cm4gZSYmKHR8PTM2NSksciYmKHR8PTE0NiksdH0sbGU9e3Jvb3Q6bnVsbCxtb3VudHM6W10sZGV2aWNlczp7fSxzdHJlYW1zOltdLG5leHRJbm9kZToxLG5hbWVUYWJsZTpudWxsLGN1cnJlbnRQYXRoOiIvIixpbml0aWFsaXplZDohMSxpZ25vcmVQZXJtaXNzaW9uczohMCxFcnJub0Vycm9yOm51bGwsZ2VuZXJpY0Vycm9yczp7fSxmaWxlc3lzdGVtczpudWxsLHN5bmNGU1JlcXVlc3RzOjAsbG9va3VwUGF0aChlLHI9e30pe2lmKCEoZT1WLnJlc29sdmUoZSkpKXJldHVybntwYXRoOiIiLG5vZGU6bnVsbH07aWYoKHI9T2JqZWN0LmFzc2lnbih7Zm9sbG93X21vdW50OiEwLHJlY3Vyc2VfY291bnQ6MH0scikpLnJlY3Vyc2VfY291bnQ+OCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigzMik7Zm9yKHZhciB0PWUuc3BsaXQoIi8iKS5maWx0ZXIoKGU9PiEhZSkpLG49bGUucm9vdCxvPSIvIixhPTA7YTx0Lmxlbmd0aDthKyspe3ZhciBzPWE9PT10Lmxlbmd0aC0xO2lmKHMmJnIucGFyZW50KWJyZWFrO2lmKG49bGUubG9va3VwTm9kZShuLHRbYV0pLG89Wi5qb2luMihvLHRbYV0pLGxlLmlzTW91bnRwb2ludChuKSYmKCFzfHxzJiZyLmZvbGxvd19tb3VudCkmJihuPW4ubW91bnRlZC5yb290KSwhc3x8ci5mb2xsb3cpZm9yKHZhciBpPTA7bGUuaXNMaW5rKG4ubW9kZSk7KXt2YXIgdT1sZS5yZWFkbGluayhvKTtpZihvPVYucmVzb2x2ZShaLmRpcm5hbWUobyksdSksbj1sZS5sb29rdXBQYXRoKG8se3JlY3Vyc2VfY291bnQ6ci5yZWN1cnNlX2NvdW50KzF9KS5ub2RlLGkrKz40MCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigzMil9fXJldHVybntwYXRoOm8sbm9kZTpufX0sZ2V0UGF0aChlKXtmb3IodmFyIHI7Oyl7aWYobGUuaXNSb290KGUpKXt2YXIgdD1lLm1vdW50Lm1vdW50cG9pbnQ7cmV0dXJuIHI/Ii8iIT09dFt0Lmxlbmd0aC0xXT9gJHt0fS8ke3J9YDp0K3I6dH1yPXI/YCR7ZS5uYW1lfS8ke3J9YDplLm5hbWUsZT1lLnBhcmVudH19LGhhc2hOYW1lKGUscil7Zm9yKHZhciB0PTAsbj0wO248ci5sZW5ndGg7bisrKXQ9KHQ8PDUpLXQrci5jaGFyQ29kZUF0KG4pfDA7cmV0dXJuKGUrdD4+PjApJWxlLm5hbWVUYWJsZS5sZW5ndGh9LGhhc2hBZGROb2RlKGUpe3ZhciByPWxlLmhhc2hOYW1lKGUucGFyZW50LmlkLGUubmFtZSk7ZS5uYW1lX25leHQ9bGUubmFtZVRhYmxlW3JdLGxlLm5hbWVUYWJsZVtyXT1lfSxoYXNoUmVtb3ZlTm9kZShlKXt2YXIgcj1sZS5oYXNoTmFtZShlLnBhcmVudC5pZCxlLm5hbWUpO2lmKGxlLm5hbWVUYWJsZVtyXT09PWUpbGUubmFtZVRhYmxlW3JdPWUubmFtZV9uZXh0O2Vsc2UgZm9yKHZhciB0PWxlLm5hbWVUYWJsZVtyXTt0Oyl7aWYodC5uYW1lX25leHQ9PT1lKXt0Lm5hbWVfbmV4dD1lLm5hbWVfbmV4dDticmVha310PXQubmFtZV9uZXh0fX0sbG9va3VwTm9kZShlLHIpe3ZhciB0PWxlLm1heUxvb2t1cChlKTtpZih0KXRocm93IG5ldyBsZS5FcnJub0Vycm9yKHQsZSk7Zm9yKHZhciBuPWxlLmhhc2hOYW1lKGUuaWQsciksbz1sZS5uYW1lVGFibGVbbl07bztvPW8ubmFtZV9uZXh0KXt2YXIgYT1vLm5hbWU7aWYoby5wYXJlbnQuaWQ9PT1lLmlkJiZhPT09cilyZXR1cm4gb31yZXR1cm4gbGUubG9va3VwKGUscil9LGNyZWF0ZU5vZGUoZSxyLHQsbil7dmFyIG89bmV3IGxlLkZTTm9kZShlLHIsdCxuKTtyZXR1cm4gbGUuaGFzaEFkZE5vZGUobyksb30sZGVzdHJveU5vZGUoZSl7bGUuaGFzaFJlbW92ZU5vZGUoZSl9LGlzUm9vdDplPT5lPT09ZS5wYXJlbnQsaXNNb3VudHBvaW50OmU9PiEhZS5tb3VudGVkLGlzRmlsZTplPT4zMjc2OD09KDYxNDQwJmUpLGlzRGlyOmU9PjE2Mzg0PT0oNjE0NDAmZSksaXNMaW5rOmU9PjQwOTYwPT0oNjE0NDAmZSksaXNDaHJkZXY6ZT0+ODE5Mj09KDYxNDQwJmUpLGlzQmxrZGV2OmU9PjI0NTc2PT0oNjE0NDAmZSksaXNGSUZPOmU9PjQwOTY9PSg2MTQ0MCZlKSxpc1NvY2tldDplPT40OTE1Mj09KDQ5MTUyJmUpLGZsYWdzVG9QZXJtaXNzaW9uU3RyaW5nKGUpe3ZhciByPVsiciIsInciLCJydyJdWzMmZV07cmV0dXJuIDUxMiZlJiYocis9InciKSxyfSxub2RlUGVybWlzc2lvbnM6KGUscik9PmxlLmlnbm9yZVBlcm1pc3Npb25zfHwoIXIuaW5jbHVkZXMoInIiKXx8MjkyJmUubW9kZSkmJighci5pbmNsdWRlcygidyIpfHwxNDYmZS5tb2RlKSYmKCFyLmluY2x1ZGVzKCJ4Iil8fDczJmUubW9kZSk/MDoyLG1heUxvb2t1cChlKXt2YXIgcj1sZS5ub2RlUGVybWlzc2lvbnMoZSwieCIpO3JldHVybiByfHwoZS5ub2RlX29wcy5sb29rdXA/MDoyKX0sbWF5Q3JlYXRlKGUscil7dHJ5e3JldHVybiBsZS5sb29rdXBOb2RlKGUsciksMjB9Y2F0Y2goZSl7fXJldHVybiBsZS5ub2RlUGVybWlzc2lvbnMoZSwid3giKX0sbWF5RGVsZXRlKGUscix0KXt2YXIgbjt0cnl7bj1sZS5sb29rdXBOb2RlKGUscil9Y2F0Y2goZSl7cmV0dXJuIGUuZXJybm99dmFyIG89bGUubm9kZVBlcm1pc3Npb25zKGUsInd4Iik7aWYobylyZXR1cm4gbztpZih0KXtpZighbGUuaXNEaXIobi5tb2RlKSlyZXR1cm4gNTQ7aWYobGUuaXNSb290KG4pfHxsZS5nZXRQYXRoKG4pPT09bGUuY3dkKCkpcmV0dXJuIDEwfWVsc2UgaWYobGUuaXNEaXIobi5tb2RlKSlyZXR1cm4gMzE7cmV0dXJuIDB9LG1heU9wZW46KGUscik9PmU/bGUuaXNMaW5rKGUubW9kZSk/MzI6bGUuaXNEaXIoZS5tb2RlKSYmKCJyIiE9PWxlLmZsYWdzVG9QZXJtaXNzaW9uU3RyaW5nKHIpfHw1MTImcik/MzE6bGUubm9kZVBlcm1pc3Npb25zKGUsbGUuZmxhZ3NUb1Blcm1pc3Npb25TdHJpbmcocikpOjQ0LE1BWF9PUEVOX0ZEUzo0MDk2LG5leHRmZCgpe2Zvcih2YXIgZT0wO2U8PWxlLk1BWF9PUEVOX0ZEUztlKyspaWYoIWxlLnN0cmVhbXNbZV0pcmV0dXJuIGU7dGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMzMpfSxnZXRTdHJlYW1DaGVja2VkKGUpe3ZhciByPWxlLmdldFN0cmVhbShlKTtpZighcil0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig4KTtyZXR1cm4gcn0sZ2V0U3RyZWFtOmU9PmxlLnN0cmVhbXNbZV0sY3JlYXRlU3RyZWFtOihlLHI9LTEpPT4obGUuRlNTdHJlYW18fChsZS5GU1N0cmVhbT1mdW5jdGlvbigpe3RoaXMuc2hhcmVkPXt9fSxsZS5GU1N0cmVhbS5wcm90b3R5cGU9e30sT2JqZWN0LmRlZmluZVByb3BlcnRpZXMobGUuRlNTdHJlYW0ucHJvdG90eXBlLHtvYmplY3Q6e2dldCgpe3JldHVybiB0aGlzLm5vZGV9LHNldChlKXt0aGlzLm5vZGU9ZX19LGlzUmVhZDp7Z2V0KCl7cmV0dXJuIDEhPSgyMDk3MTU1JnRoaXMuZmxhZ3MpfX0saXNXcml0ZTp7Z2V0KCl7cmV0dXJuIDAhPSgyMDk3MTU1JnRoaXMuZmxhZ3MpfX0saXNBcHBlbmQ6e2dldCgpe3JldHVybiAxMDI0JnRoaXMuZmxhZ3N9fSxmbGFnczp7Z2V0KCl7cmV0dXJuIHRoaXMuc2hhcmVkLmZsYWdzfSxzZXQoZSl7dGhpcy5zaGFyZWQuZmxhZ3M9ZX19LHBvc2l0aW9uOntnZXQoKXtyZXR1cm4gdGhpcy5zaGFyZWQucG9zaXRpb259LHNldChlKXt0aGlzLnNoYXJlZC5wb3NpdGlvbj1lfX19KSksZT1PYmplY3QuYXNzaWduKG5ldyBsZS5GU1N0cmVhbSxlKSwtMT09ciYmKHI9bGUubmV4dGZkKCkpLGUuZmQ9cixsZS5zdHJlYW1zW3JdPWUsZSksY2xvc2VTdHJlYW0oZSl7bGUuc3RyZWFtc1tlXT1udWxsfSxjaHJkZXZfc3RyZWFtX29wczp7b3BlbihlKXt2YXIgcj1sZS5nZXREZXZpY2UoZS5ub2RlLnJkZXYpO2Uuc3RyZWFtX29wcz1yLnN0cmVhbV9vcHMsZS5zdHJlYW1fb3BzLm9wZW4/LihlKX0sbGxzZWVrKCl7dGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNzApfX0sbWFqb3I6ZT0+ZT4+OCxtaW5vcjplPT4yNTUmZSxtYWtlZGV2OihlLHIpPT5lPDw4fHIscmVnaXN0ZXJEZXZpY2UoZSxyKXtsZS5kZXZpY2VzW2VdPXtzdHJlYW1fb3BzOnJ9fSxnZXREZXZpY2U6ZT0+bGUuZGV2aWNlc1tlXSxnZXRNb3VudHMoZSl7Zm9yKHZhciByPVtdLHQ9W2VdO3QubGVuZ3RoOyl7dmFyIG49dC5wb3AoKTtyLnB1c2gobiksdC5wdXNoLmFwcGx5KHQsbi5tb3VudHMpfXJldHVybiByfSxzeW5jZnMoZSxyKXsiZnVuY3Rpb24iPT10eXBlb2YgZSYmKHI9ZSxlPSExKSxsZS5zeW5jRlNSZXF1ZXN0cysrLGxlLnN5bmNGU1JlcXVlc3RzPjEmJnkoYHdhcm5pbmc6ICR7bGUuc3luY0ZTUmVxdWVzdHN9IEZTLnN5bmNmcyBvcGVyYXRpb25zIGluIGZsaWdodCBhdCBvbmNlLCBwcm9iYWJseSBqdXN0IGRvaW5nIGV4dHJhIHdvcmtgKTt2YXIgdD1sZS5nZXRNb3VudHMobGUucm9vdC5tb3VudCksbj0wO2Z1bmN0aW9uIG8oZSl7cmV0dXJuIGxlLnN5bmNGU1JlcXVlc3RzLS0scihlKX1mdW5jdGlvbiBhKGUpe2lmKGUpcmV0dXJuIGEuZXJyb3JlZD92b2lkIDA6KGEuZXJyb3JlZD0hMCxvKGUpKTsrK24+PXQubGVuZ3RoJiZvKG51bGwpfXQuZm9yRWFjaCgocj0+e2lmKCFyLnR5cGUuc3luY2ZzKXJldHVybiBhKG51bGwpO3IudHlwZS5zeW5jZnMocixlLGEpfSkpfSxtb3VudChlLHIsdCl7dmFyIG4sbz0iLyI9PT10LGE9IXQ7aWYobyYmbGUucm9vdCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigxMCk7aWYoIW8mJiFhKXt2YXIgcz1sZS5sb29rdXBQYXRoKHQse2ZvbGxvd19tb3VudDohMX0pO2lmKHQ9cy5wYXRoLG49cy5ub2RlLGxlLmlzTW91bnRwb2ludChuKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigxMCk7aWYoIWxlLmlzRGlyKG4ubW9kZSkpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNTQpfXZhciBpPXt0eXBlOmUsb3B0czpyLG1vdW50cG9pbnQ6dCxtb3VudHM6W119LHU9ZS5tb3VudChpKTtyZXR1cm4gdS5tb3VudD1pLGkucm9vdD11LG8/bGUucm9vdD11Om4mJihuLm1vdW50ZWQ9aSxuLm1vdW50JiZuLm1vdW50Lm1vdW50cy5wdXNoKGkpKSx1fSx1bm1vdW50KGUpe3ZhciByPWxlLmxvb2t1cFBhdGgoZSx7Zm9sbG93X21vdW50OiExfSk7aWYoIWxlLmlzTW91bnRwb2ludChyLm5vZGUpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDI4KTt2YXIgdD1yLm5vZGUsbj10Lm1vdW50ZWQsbz1sZS5nZXRNb3VudHMobik7T2JqZWN0LmtleXMobGUubmFtZVRhYmxlKS5mb3JFYWNoKChlPT57Zm9yKHZhciByPWxlLm5hbWVUYWJsZVtlXTtyOyl7dmFyIHQ9ci5uYW1lX25leHQ7by5pbmNsdWRlcyhyLm1vdW50KSYmbGUuZGVzdHJveU5vZGUocikscj10fX0pKSx0Lm1vdW50ZWQ9bnVsbDt2YXIgYT10Lm1vdW50Lm1vdW50cy5pbmRleE9mKG4pO3QubW91bnQubW91bnRzLnNwbGljZShhLDEpfSxsb29rdXA6KGUscik9PmUubm9kZV9vcHMubG9va3VwKGUsciksbWtub2QoZSxyLHQpe3ZhciBuPWxlLmxvb2t1cFBhdGgoZSx7cGFyZW50OiEwfSkubm9kZSxvPVouYmFzZW5hbWUoZSk7aWYoIW98fCIuIj09PW98fCIuLiI9PT1vKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDI4KTt2YXIgYT1sZS5tYXlDcmVhdGUobixvKTtpZihhKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKGEpO2lmKCFuLm5vZGVfb3BzLm1rbm9kKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDYzKTtyZXR1cm4gbi5ub2RlX29wcy5ta25vZChuLG8scix0KX0sY3JlYXRlOihlLHIpPT4ocj12b2lkIDAhPT1yP3I6NDM4LHImPTQwOTUscnw9MzI3NjgsbGUubWtub2QoZSxyLDApKSxta2RpcjooZSxyKT0+KHI9dm9pZCAwIT09cj9yOjUxMSxyJj0xMDIzLHJ8PTE2Mzg0LGxlLm1rbm9kKGUsciwwKSksbWtkaXJUcmVlKGUscil7Zm9yKHZhciB0PWUuc3BsaXQoIi8iKSxuPSIiLG89MDtvPHQubGVuZ3RoOysrbylpZih0W29dKXtuKz0iLyIrdFtvXTt0cnl7bGUubWtkaXIobixyKX1jYXRjaChlKXtpZigyMCE9ZS5lcnJubyl0aHJvdyBlfX19LG1rZGV2OihlLHIsdCk9Pih2b2lkIDA9PT10JiYodD1yLHI9NDM4KSxyfD04MTkyLGxlLm1rbm9kKGUscix0KSksc3ltbGluayhlLHIpe2lmKCFWLnJlc29sdmUoZSkpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNDQpO3ZhciB0PWxlLmxvb2t1cFBhdGgocix7cGFyZW50OiEwfSkubm9kZTtpZighdCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig0NCk7dmFyIG49Wi5iYXNlbmFtZShyKSxvPWxlLm1heUNyZWF0ZSh0LG4pO2lmKG8pdGhyb3cgbmV3IGxlLkVycm5vRXJyb3Iobyk7aWYoIXQubm9kZV9vcHMuc3ltbGluayl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig2Myk7cmV0dXJuIHQubm9kZV9vcHMuc3ltbGluayh0LG4sZSl9LHJlbmFtZShlLHIpe3ZhciB0LG4sbz1aLmRpcm5hbWUoZSksYT1aLmRpcm5hbWUocikscz1aLmJhc2VuYW1lKGUpLGk9Wi5iYXNlbmFtZShyKTtpZih0PWxlLmxvb2t1cFBhdGgoZSx7cGFyZW50OiEwfSkubm9kZSxuPWxlLmxvb2t1cFBhdGgocix7cGFyZW50OiEwfSkubm9kZSwhdHx8IW4pdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNDQpO2lmKHQubW91bnQhPT1uLm1vdW50KXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDc1KTt2YXIgdSxsPWxlLmxvb2t1cE5vZGUodCxzKSxjPVYucmVsYXRpdmUoZSxhKTtpZigiLiIhPT1jLmNoYXJBdCgwKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigyOCk7aWYoIi4iIT09KGM9Vi5yZWxhdGl2ZShyLG8pKS5jaGFyQXQoMCkpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNTUpO3RyeXt1PWxlLmxvb2t1cE5vZGUobixpKX1jYXRjaChlKXt9aWYobCE9PXUpe3ZhciBkPWxlLmlzRGlyKGwubW9kZSksaD1sZS5tYXlEZWxldGUodCxzLGQpO2lmKGgpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoaCk7aWYoaD11P2xlLm1heURlbGV0ZShuLGksZCk6bGUubWF5Q3JlYXRlKG4saSkpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoaCk7aWYoIXQubm9kZV9vcHMucmVuYW1lKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDYzKTtpZihsZS5pc01vdW50cG9pbnQobCl8fHUmJmxlLmlzTW91bnRwb2ludCh1KSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigxMCk7aWYobiE9PXQmJihoPWxlLm5vZGVQZXJtaXNzaW9ucyh0LCJ3IikpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKGgpO2xlLmhhc2hSZW1vdmVOb2RlKGwpO3RyeXt0Lm5vZGVfb3BzLnJlbmFtZShsLG4saSl9Y2F0Y2goZSl7dGhyb3cgZX1maW5hbGx5e2xlLmhhc2hBZGROb2RlKGwpfX19LHJtZGlyKGUpe3ZhciByPWxlLmxvb2t1cFBhdGgoZSx7cGFyZW50OiEwfSkubm9kZSx0PVouYmFzZW5hbWUoZSksbj1sZS5sb29rdXBOb2RlKHIsdCksbz1sZS5tYXlEZWxldGUocix0LCEwKTtpZihvKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKG8pO2lmKCFyLm5vZGVfb3BzLnJtZGlyKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDYzKTtpZihsZS5pc01vdW50cG9pbnQobikpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMTApO3Iubm9kZV9vcHMucm1kaXIocix0KSxsZS5kZXN0cm95Tm9kZShuKX0scmVhZGRpcihlKXt2YXIgcj1sZS5sb29rdXBQYXRoKGUse2ZvbGxvdzohMH0pLm5vZGU7aWYoIXIubm9kZV9vcHMucmVhZGRpcil0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig1NCk7cmV0dXJuIHIubm9kZV9vcHMucmVhZGRpcihyKX0sdW5saW5rKGUpe3ZhciByPWxlLmxvb2t1cFBhdGgoZSx7cGFyZW50OiEwfSkubm9kZTtpZighcil0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig0NCk7dmFyIHQ9Wi5iYXNlbmFtZShlKSxuPWxlLmxvb2t1cE5vZGUocix0KSxvPWxlLm1heURlbGV0ZShyLHQsITEpO2lmKG8pdGhyb3cgbmV3IGxlLkVycm5vRXJyb3Iobyk7aWYoIXIubm9kZV9vcHMudW5saW5rKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDYzKTtpZihsZS5pc01vdW50cG9pbnQobikpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMTApO3Iubm9kZV9vcHMudW5saW5rKHIsdCksbGUuZGVzdHJveU5vZGUobil9LHJlYWRsaW5rKGUpe3ZhciByPWxlLmxvb2t1cFBhdGgoZSkubm9kZTtpZighcil0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig0NCk7aWYoIXIubm9kZV9vcHMucmVhZGxpbmspdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMjgpO3JldHVybiBWLnJlc29sdmUobGUuZ2V0UGF0aChyLnBhcmVudCksci5ub2RlX29wcy5yZWFkbGluayhyKSl9LHN0YXQoZSxyKXt2YXIgdD1sZS5sb29rdXBQYXRoKGUse2ZvbGxvdzohcn0pLm5vZGU7aWYoIXQpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNDQpO2lmKCF0Lm5vZGVfb3BzLmdldGF0dHIpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNjMpO3JldHVybiB0Lm5vZGVfb3BzLmdldGF0dHIodCl9LGxzdGF0OmU9PmxlLnN0YXQoZSwhMCksY2htb2QoZSxyLHQpe3ZhciBuO2lmKCEobj0ic3RyaW5nIj09dHlwZW9mIGU/bGUubG9va3VwUGF0aChlLHtmb2xsb3c6IXR9KS5ub2RlOmUpLm5vZGVfb3BzLnNldGF0dHIpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNjMpO24ubm9kZV9vcHMuc2V0YXR0cihuLHttb2RlOjQwOTUmcnwtNDA5NiZuLm1vZGUsdGltZXN0YW1wOkRhdGUubm93KCl9KX0sbGNobW9kKGUscil7bGUuY2htb2QoZSxyLCEwKX0sZmNobW9kKGUscil7dmFyIHQ9bGUuZ2V0U3RyZWFtQ2hlY2tlZChlKTtsZS5jaG1vZCh0Lm5vZGUscil9LGNob3duKGUscix0LG4pe3ZhciBvO2lmKCEobz0ic3RyaW5nIj09dHlwZW9mIGU/bGUubG9va3VwUGF0aChlLHtmb2xsb3c6IW59KS5ub2RlOmUpLm5vZGVfb3BzLnNldGF0dHIpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNjMpO28ubm9kZV9vcHMuc2V0YXR0cihvLHt0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSxsY2hvd24oZSxyLHQpe2xlLmNob3duKGUscix0LCEwKX0sZmNob3duKGUscix0KXt2YXIgbj1sZS5nZXRTdHJlYW1DaGVja2VkKGUpO2xlLmNob3duKG4ubm9kZSxyLHQpfSx0cnVuY2F0ZShlLHIpe2lmKHI8MCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigyOCk7dmFyIHQ7aWYoISh0PSJzdHJpbmciPT10eXBlb2YgZT9sZS5sb29rdXBQYXRoKGUse2ZvbGxvdzohMH0pLm5vZGU6ZSkubm9kZV9vcHMuc2V0YXR0cil0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig2Myk7aWYobGUuaXNEaXIodC5tb2RlKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigzMSk7aWYoIWxlLmlzRmlsZSh0Lm1vZGUpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDI4KTt2YXIgbj1sZS5ub2RlUGVybWlzc2lvbnModCwidyIpO2lmKG4pdGhyb3cgbmV3IGxlLkVycm5vRXJyb3Iobik7dC5ub2RlX29wcy5zZXRhdHRyKHQse3NpemU6cix0aW1lc3RhbXA6RGF0ZS5ub3coKX0pfSxmdHJ1bmNhdGUoZSxyKXt2YXIgdD1sZS5nZXRTdHJlYW1DaGVja2VkKGUpO2lmKDA9PSgyMDk3MTU1JnQuZmxhZ3MpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDI4KTtsZS50cnVuY2F0ZSh0Lm5vZGUscil9LHV0aW1lKGUscix0KXt2YXIgbj1sZS5sb29rdXBQYXRoKGUse2ZvbGxvdzohMH0pLm5vZGU7bi5ub2RlX29wcy5zZXRhdHRyKG4se3RpbWVzdGFtcDpNYXRoLm1heChyLHQpfSl9LG9wZW4oZSxyLHQpe2lmKCIiPT09ZSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig0NCk7dmFyIG87aWYodD12b2lkIDA9PT10PzQzODp0LHQ9NjQmKHI9InN0cmluZyI9PXR5cGVvZiByPyhlPT57dmFyIHI9e3I6MCwicisiOjIsdzo1NzcsIncrIjo1NzgsYToxMDg5LCJhKyI6MTA5MH1bZV07aWYodm9pZCAwPT09cil0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gZmlsZSBvcGVuIG1vZGU6ICR7ZX1gKTtyZXR1cm4gcn0pKHIpOnIpPzQwOTUmdHwzMjc2ODowLCJvYmplY3QiPT10eXBlb2YgZSlvPWU7ZWxzZXtlPVoubm9ybWFsaXplKGUpO3RyeXtvPWxlLmxvb2t1cFBhdGgoZSx7Zm9sbG93OiEoMTMxMDcyJnIpfSkubm9kZX1jYXRjaChlKXt9fXZhciBhPSExO2lmKDY0JnIpaWYobyl7aWYoMTI4JnIpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMjApfWVsc2Ugbz1sZS5ta25vZChlLHQsMCksYT0hMDtpZighbyl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig0NCk7aWYobGUuaXNDaHJkZXYoby5tb2RlKSYmKHImPS01MTMpLDY1NTM2JnImJiFsZS5pc0RpcihvLm1vZGUpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDU0KTtpZighYSl7dmFyIHM9bGUubWF5T3BlbihvLHIpO2lmKHMpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3Iocyl9NTEyJnImJiFhJiZsZS50cnVuY2F0ZShvLDApLHImPS0xMzE3MTM7dmFyIGk9bGUuY3JlYXRlU3RyZWFtKHtub2RlOm8scGF0aDpsZS5nZXRQYXRoKG8pLGZsYWdzOnIsc2Vla2FibGU6ITAscG9zaXRpb246MCxzdHJlYW1fb3BzOm8uc3RyZWFtX29wcyx1bmdvdHRlbjpbXSxlcnJvcjohMX0pO3JldHVybiBpLnN0cmVhbV9vcHMub3BlbiYmaS5zdHJlYW1fb3BzLm9wZW4oaSksIW4ubG9nUmVhZEZpbGVzfHwxJnJ8fChsZS5yZWFkRmlsZXN8fChsZS5yZWFkRmlsZXM9e30pLGUgaW4gbGUucmVhZEZpbGVzfHwobGUucmVhZEZpbGVzW2VdPTEpKSxpfSxjbG9zZShlKXtpZihsZS5pc0Nsb3NlZChlKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig4KTtlLmdldGRlbnRzJiYoZS5nZXRkZW50cz1udWxsKTt0cnl7ZS5zdHJlYW1fb3BzLmNsb3NlJiZlLnN0cmVhbV9vcHMuY2xvc2UoZSl9Y2F0Y2goZSl7dGhyb3cgZX1maW5hbGx5e2xlLmNsb3NlU3RyZWFtKGUuZmQpfWUuZmQ9bnVsbH0saXNDbG9zZWQ6ZT0+bnVsbD09PWUuZmQsbGxzZWVrKGUscix0KXtpZihsZS5pc0Nsb3NlZChlKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig4KTtpZighZS5zZWVrYWJsZXx8IWUuc3RyZWFtX29wcy5sbHNlZWspdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNzApO2lmKDAhPXQmJjEhPXQmJjIhPXQpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMjgpO3JldHVybiBlLnBvc2l0aW9uPWUuc3RyZWFtX29wcy5sbHNlZWsoZSxyLHQpLGUudW5nb3R0ZW49W10sZS5wb3NpdGlvbn0scmVhZChlLHIsdCxuLG8pe2lmKG48MHx8bzwwKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDI4KTtpZihsZS5pc0Nsb3NlZChlKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig4KTtpZigxPT0oMjA5NzE1NSZlLmZsYWdzKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig4KTtpZihsZS5pc0RpcihlLm5vZGUubW9kZSkpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMzEpO2lmKCFlLnN0cmVhbV9vcHMucmVhZCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigyOCk7dmFyIGE9dm9pZCAwIT09bztpZihhKXtpZighZS5zZWVrYWJsZSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig3MCl9ZWxzZSBvPWUucG9zaXRpb247dmFyIHM9ZS5zdHJlYW1fb3BzLnJlYWQoZSxyLHQsbixvKTtyZXR1cm4gYXx8KGUucG9zaXRpb24rPXMpLHN9LHdyaXRlKGUscix0LG4sbyxhKXtpZihuPDB8fG88MCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigyOCk7aWYobGUuaXNDbG9zZWQoZSkpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoOCk7aWYoMD09KDIwOTcxNTUmZS5mbGFncykpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoOCk7aWYobGUuaXNEaXIoZS5ub2RlLm1vZGUpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDMxKTtpZighZS5zdHJlYW1fb3BzLndyaXRlKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDI4KTtlLnNlZWthYmxlJiYxMDI0JmUuZmxhZ3MmJmxlLmxsc2VlayhlLDAsMik7dmFyIHM9dm9pZCAwIT09bztpZihzKXtpZighZS5zZWVrYWJsZSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig3MCl9ZWxzZSBvPWUucG9zaXRpb247dmFyIGk9ZS5zdHJlYW1fb3BzLndyaXRlKGUscix0LG4sbyxhKTtyZXR1cm4gc3x8KGUucG9zaXRpb24rPWkpLGl9LGFsbG9jYXRlKGUscix0KXtpZihsZS5pc0Nsb3NlZChlKSl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig4KTtpZihyPDB8fHQ8PTApdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMjgpO2lmKDA9PSgyMDk3MTU1JmUuZmxhZ3MpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDgpO2lmKCFsZS5pc0ZpbGUoZS5ub2RlLm1vZGUpJiYhbGUuaXNEaXIoZS5ub2RlLm1vZGUpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDQzKTtpZighZS5zdHJlYW1fb3BzLmFsbG9jYXRlKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDEzOCk7ZS5zdHJlYW1fb3BzLmFsbG9jYXRlKGUscix0KX0sbW1hcChlLHIsdCxuLG8pe2lmKDAhPSgyJm4pJiYwPT0oMiZvKSYmMiE9KDIwOTcxNTUmZS5mbGFncykpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMik7aWYoMT09KDIwOTcxNTUmZS5mbGFncykpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMik7aWYoIWUuc3RyZWFtX29wcy5tbWFwKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDQzKTtyZXR1cm4gZS5zdHJlYW1fb3BzLm1tYXAoZSxyLHQsbixvKX0sbXN5bmM6KGUscix0LG4sbyk9PmUuc3RyZWFtX29wcy5tc3luYz9lLnN0cmVhbV9vcHMubXN5bmMoZSxyLHQsbixvKTowLG11bm1hcDplPT4wLGlvY3RsKGUscix0KXtpZighZS5zdHJlYW1fb3BzLmlvY3RsKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDU5KTtyZXR1cm4gZS5zdHJlYW1fb3BzLmlvY3RsKGUscix0KX0scmVhZEZpbGUoZSxyPXt9KXtpZihyLmZsYWdzPXIuZmxhZ3N8fDAsci5lbmNvZGluZz1yLmVuY29kaW5nfHwiYmluYXJ5IiwidXRmOCIhPT1yLmVuY29kaW5nJiYiYmluYXJ5IiE9PXIuZW5jb2RpbmcpdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVuY29kaW5nIHR5cGUgIiR7ci5lbmNvZGluZ30iYCk7dmFyIHQsbj1sZS5vcGVuKGUsci5mbGFncyksbz1sZS5zdGF0KGUpLnNpemUsYT1uZXcgVWludDhBcnJheShvKTtyZXR1cm4gbGUucmVhZChuLGEsMCxvLDApLCJ1dGY4Ij09PXIuZW5jb2Rpbmc/dD1RKGEsMCk6ImJpbmFyeSI9PT1yLmVuY29kaW5nJiYodD1hKSxsZS5jbG9zZShuKSx0fSx3cml0ZUZpbGUoZSxyLHQ9e30pe3QuZmxhZ3M9dC5mbGFnc3x8NTc3O3ZhciBuPWxlLm9wZW4oZSx0LmZsYWdzLHQubW9kZSk7aWYoInN0cmluZyI9PXR5cGVvZiByKXt2YXIgbz1uZXcgVWludDhBcnJheShyZShyKSsxKSxhPXRlKHIsbywwLG8ubGVuZ3RoKTtsZS53cml0ZShuLG8sMCxhLHZvaWQgMCx0LmNhbk93bil9ZWxzZXtpZighQXJyYXlCdWZmZXIuaXNWaWV3KHIpKXRocm93IG5ldyBFcnJvcigiVW5zdXBwb3J0ZWQgZGF0YSB0eXBlIik7bGUud3JpdGUobixyLDAsci5ieXRlTGVuZ3RoLHZvaWQgMCx0LmNhbk93bil9bGUuY2xvc2Uobil9LGN3ZDooKT0+bGUuY3VycmVudFBhdGgsY2hkaXIoZSl7dmFyIHI9bGUubG9va3VwUGF0aChlLHtmb2xsb3c6ITB9KTtpZihudWxsPT09ci5ub2RlKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDQ0KTtpZighbGUuaXNEaXIoci5ub2RlLm1vZGUpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDU0KTt2YXIgdD1sZS5ub2RlUGVybWlzc2lvbnMoci5ub2RlLCJ4Iik7aWYodCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcih0KTtsZS5jdXJyZW50UGF0aD1yLnBhdGh9LGNyZWF0ZURlZmF1bHREaXJlY3Rvcmllcygpe2xlLm1rZGlyKCIvdG1wIiksbGUubWtkaXIoIi9ob21lIiksbGUubWtkaXIoIi9ob21lL3dlYl91c2VyIil9LGNyZWF0ZURlZmF1bHREZXZpY2VzKCl7bGUubWtkaXIoIi9kZXYiKSxsZS5yZWdpc3RlckRldmljZShsZS5tYWtlZGV2KDEsMykse3JlYWQ6KCk9PjAsd3JpdGU6KGUscix0LG4sbyk9Pm59KSxsZS5ta2RldigiL2Rldi9udWxsIixsZS5tYWtlZGV2KDEsMykpLG9lLnJlZ2lzdGVyKGxlLm1ha2VkZXYoNSwwKSxvZS5kZWZhdWx0X3R0eV9vcHMpLG9lLnJlZ2lzdGVyKGxlLm1ha2VkZXYoNiwwKSxvZS5kZWZhdWx0X3R0eTFfb3BzKSxsZS5ta2RldigiL2Rldi90dHkiLGxlLm1ha2VkZXYoNSwwKSksbGUubWtkZXYoIi9kZXYvdHR5MSIsbGUubWFrZWRldig2LDApKTt2YXIgZT1uZXcgVWludDhBcnJheSgxMDI0KSxyPTAsdD0oKT0+KDA9PT1yJiYocj1HKGUpLmJ5dGVMZW5ndGgpLGVbLS1yXSk7bGUuY3JlYXRlRGV2aWNlKCIvZGV2IiwicmFuZG9tIix0KSxsZS5jcmVhdGVEZXZpY2UoIi9kZXYiLCJ1cmFuZG9tIix0KSxsZS5ta2RpcigiL2Rldi9zaG0iKSxsZS5ta2RpcigiL2Rldi9zaG0vdG1wIil9LGNyZWF0ZVNwZWNpYWxEaXJlY3Rvcmllcygpe2xlLm1rZGlyKCIvcHJvYyIpO3ZhciBlPWxlLm1rZGlyKCIvcHJvYy9zZWxmIik7bGUubWtkaXIoIi9wcm9jL3NlbGYvZmQiKSxsZS5tb3VudCh7bW91bnQoKXt2YXIgcj1sZS5jcmVhdGVOb2RlKGUsImZkIiwxNjg5NSw3Myk7cmV0dXJuIHIubm9kZV9vcHM9e2xvb2t1cChlLHIpe3ZhciB0PStyLG49bGUuZ2V0U3RyZWFtQ2hlY2tlZCh0KSxvPXtwYXJlbnQ6bnVsbCxtb3VudDp7bW91bnRwb2ludDoiZmFrZSJ9LG5vZGVfb3BzOntyZWFkbGluazooKT0+bi5wYXRofX07cmV0dXJuIG8ucGFyZW50PW8sb319LHJ9fSx7fSwiL3Byb2Mvc2VsZi9mZCIpfSxjcmVhdGVTdGFuZGFyZFN0cmVhbXMoKXtuLnN0ZGluP2xlLmNyZWF0ZURldmljZSgiL2RldiIsInN0ZGluIixuLnN0ZGluKTpsZS5zeW1saW5rKCIvZGV2L3R0eSIsIi9kZXYvc3RkaW4iKSxuLnN0ZG91dD9sZS5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRvdXQiLG51bGwsbi5zdGRvdXQpOmxlLnN5bWxpbmsoIi9kZXYvdHR5IiwiL2Rldi9zdGRvdXQiKSxuLnN0ZGVycj9sZS5jcmVhdGVEZXZpY2UoIi9kZXYiLCJzdGRlcnIiLG51bGwsbi5zdGRlcnIpOmxlLnN5bWxpbmsoIi9kZXYvdHR5MSIsIi9kZXYvc3RkZXJyIiksbGUub3BlbigiL2Rldi9zdGRpbiIsMCksbGUub3BlbigiL2Rldi9zdGRvdXQiLDEpLGxlLm9wZW4oIi9kZXYvc3RkZXJyIiwxKX0sZW5zdXJlRXJybm9FcnJvcigpe2xlLkVycm5vRXJyb3J8fChsZS5FcnJub0Vycm9yPWZ1bmN0aW9uKGUscil7dGhpcy5uYW1lPSJFcnJub0Vycm9yIix0aGlzLm5vZGU9cix0aGlzLnNldEVycm5vPWZ1bmN0aW9uKGUpe3RoaXMuZXJybm89ZX0sdGhpcy5zZXRFcnJubyhlKSx0aGlzLm1lc3NhZ2U9IkZTIGVycm9yIn0sbGUuRXJybm9FcnJvci5wcm90b3R5cGU9bmV3IEVycm9yLGxlLkVycm5vRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yPWxlLkVycm5vRXJyb3IsWzQ0XS5mb3JFYWNoKChlPT57bGUuZ2VuZXJpY0Vycm9yc1tlXT1uZXcgbGUuRXJybm9FcnJvcihlKSxsZS5nZW5lcmljRXJyb3JzW2VdLnN0YWNrPSI8Z2VuZXJpYyBlcnJvciwgbm8gc3RhY2s+In0pKSl9LHN0YXRpY0luaXQoKXtsZS5lbnN1cmVFcnJub0Vycm9yKCksbGUubmFtZVRhYmxlPW5ldyBBcnJheSg0MDk2KSxsZS5tb3VudChzZSx7fSwiLyIpLGxlLmNyZWF0ZURlZmF1bHREaXJlY3RvcmllcygpLGxlLmNyZWF0ZURlZmF1bHREZXZpY2VzKCksbGUuY3JlYXRlU3BlY2lhbERpcmVjdG9yaWVzKCksbGUuZmlsZXN5c3RlbXM9e01FTUZTOnNlfX0saW5pdChlLHIsdCl7bGUuaW5pdC5pbml0aWFsaXplZD0hMCxsZS5lbnN1cmVFcnJub0Vycm9yKCksbi5zdGRpbj1lfHxuLnN0ZGluLG4uc3Rkb3V0PXJ8fG4uc3Rkb3V0LG4uc3RkZXJyPXR8fG4uc3RkZXJyLGxlLmNyZWF0ZVN0YW5kYXJkU3RyZWFtcygpfSxxdWl0KCl7bGUuaW5pdC5pbml0aWFsaXplZD0hMTtmb3IodmFyIGU9MDtlPGxlLnN0cmVhbXMubGVuZ3RoO2UrKyl7dmFyIHI9bGUuc3RyZWFtc1tlXTtyJiZsZS5jbG9zZShyKX19LGZpbmRPYmplY3QoZSxyKXt2YXIgdD1sZS5hbmFseXplUGF0aChlLHIpO3JldHVybiB0LmV4aXN0cz90Lm9iamVjdDpudWxsfSxhbmFseXplUGF0aChlLHIpe3RyeXtlPShuPWxlLmxvb2t1cFBhdGgoZSx7Zm9sbG93OiFyfSkpLnBhdGh9Y2F0Y2goZSl7fXZhciB0PXtpc1Jvb3Q6ITEsZXhpc3RzOiExLGVycm9yOjAsbmFtZTpudWxsLHBhdGg6bnVsbCxvYmplY3Q6bnVsbCxwYXJlbnRFeGlzdHM6ITEscGFyZW50UGF0aDpudWxsLHBhcmVudE9iamVjdDpudWxsfTt0cnl7dmFyIG49bGUubG9va3VwUGF0aChlLHtwYXJlbnQ6ITB9KTt0LnBhcmVudEV4aXN0cz0hMCx0LnBhcmVudFBhdGg9bi5wYXRoLHQucGFyZW50T2JqZWN0PW4ubm9kZSx0Lm5hbWU9Wi5iYXNlbmFtZShlKSxuPWxlLmxvb2t1cFBhdGgoZSx7Zm9sbG93OiFyfSksdC5leGlzdHM9ITAsdC5wYXRoPW4ucGF0aCx0Lm9iamVjdD1uLm5vZGUsdC5uYW1lPW4ubm9kZS5uYW1lLHQuaXNSb290PSIvIj09PW4ucGF0aH1jYXRjaChlKXt0LmVycm9yPWUuZXJybm99cmV0dXJuIHR9LGNyZWF0ZVBhdGgoZSxyLHQsbil7ZT0ic3RyaW5nIj09dHlwZW9mIGU/ZTpsZS5nZXRQYXRoKGUpO2Zvcih2YXIgbz1yLnNwbGl0KCIvIikucmV2ZXJzZSgpO28ubGVuZ3RoOyl7dmFyIGE9by5wb3AoKTtpZihhKXt2YXIgcz1aLmpvaW4yKGUsYSk7dHJ5e2xlLm1rZGlyKHMpfWNhdGNoKGUpe31lPXN9fXJldHVybiBzfSxjcmVhdGVGaWxlKGUscix0LG4sbyl7dmFyIGE9Wi5qb2luMigic3RyaW5nIj09dHlwZW9mIGU/ZTpsZS5nZXRQYXRoKGUpLHIpLHM9dWUobixvKTtyZXR1cm4gbGUuY3JlYXRlKGEscyl9LGNyZWF0ZURhdGFGaWxlKGUscix0LG4sbyxhKXt2YXIgcz1yO2UmJihlPSJzdHJpbmciPT10eXBlb2YgZT9lOmxlLmdldFBhdGgoZSkscz1yP1ouam9pbjIoZSxyKTplKTt2YXIgaT11ZShuLG8pLHU9bGUuY3JlYXRlKHMsaSk7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXtmb3IodmFyIGw9bmV3IEFycmF5KHQubGVuZ3RoKSxjPTAsZD10Lmxlbmd0aDtjPGQ7KytjKWxbY109dC5jaGFyQ29kZUF0KGMpO3Q9bH1sZS5jaG1vZCh1LDE0NnxpKTt2YXIgaD1sZS5vcGVuKHUsNTc3KTtsZS53cml0ZShoLHQsMCx0Lmxlbmd0aCwwLGEpLGxlLmNsb3NlKGgpLGxlLmNobW9kKHUsaSl9fSxjcmVhdGVEZXZpY2UoZSxyLHQsbil7dmFyIG89Wi5qb2luMigic3RyaW5nIj09dHlwZW9mIGU/ZTpsZS5nZXRQYXRoKGUpLHIpLGE9dWUoISF0LCEhbik7bGUuY3JlYXRlRGV2aWNlLm1ham9yfHwobGUuY3JlYXRlRGV2aWNlLm1ham9yPTY0KTt2YXIgcz1sZS5tYWtlZGV2KGxlLmNyZWF0ZURldmljZS5tYWpvcisrLDApO3JldHVybiBsZS5yZWdpc3RlckRldmljZShzLHtvcGVuKGUpe2Uuc2Vla2FibGU9ITF9LGNsb3NlKGUpe24/LmJ1ZmZlcj8ubGVuZ3RoJiZuKDEwKX0scmVhZChlLHIsbixvLGEpe2Zvcih2YXIgcz0wLGk9MDtpPG87aSsrKXt2YXIgdTt0cnl7dT10KCl9Y2F0Y2goZSl7dGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMjkpfWlmKHZvaWQgMD09PXUmJjA9PT1zKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDYpO2lmKG51bGw9PXUpYnJlYWs7cysrLHJbbitpXT11fXJldHVybiBzJiYoZS5ub2RlLnRpbWVzdGFtcD1EYXRlLm5vdygpKSxzfSx3cml0ZShlLHIsdCxvLGEpe2Zvcih2YXIgcz0wO3M8bztzKyspdHJ5e24oclt0K3NdKX1jYXRjaChlKXt0aHJvdyBuZXcgbGUuRXJybm9FcnJvcigyOSl9cmV0dXJuIG8mJihlLm5vZGUudGltZXN0YW1wPURhdGUubm93KCkpLHN9fSksbGUubWtkZXYobyxhLHMpfSxmb3JjZUxvYWRGaWxlKGUpe2lmKGUuaXNEZXZpY2V8fGUuaXNGb2xkZXJ8fGUubGlua3x8ZS5jb250ZW50cylyZXR1cm4hMDtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0KXRocm93IG5ldyBFcnJvcigiTGF6eSBsb2FkaW5nIHNob3VsZCBoYXZlIGJlZW4gcGVyZm9ybWVkIChjb250ZW50cyBzZXQpIGluIGNyZWF0ZUxhenlGaWxlLCBidXQgaXQgd2FzIG5vdC4gTGF6eSBsb2FkaW5nIG9ubHkgd29ya3MgaW4gd2ViIHdvcmtlcnMuIFVzZSAtLWVtYmVkLWZpbGUgb3IgLS1wcmVsb2FkLWZpbGUgaW4gZW1jYyBvbiB0aGUgbWFpbiB0aHJlYWQuIik7aWYoIW8pdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgbG9hZCB3aXRob3V0IHJlYWQoKSBvciBYTUxIdHRwUmVxdWVzdC4iKTt0cnl7ZS5jb250ZW50cz1uZShvKGUudXJsKSwhMCksZS51c2VkQnl0ZXM9ZS5jb250ZW50cy5sZW5ndGh9Y2F0Y2goZSl7dGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMjkpfX0sY3JlYXRlTGF6eUZpbGUoZSxyLHQsbixvKXtmdW5jdGlvbiBhKCl7dGhpcy5sZW5ndGhLbm93bj0hMSx0aGlzLmNodW5rcz1bXX1pZihhLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7aWYoIShlPnRoaXMubGVuZ3RoLTF8fGU8MCkpe3ZhciByPWUldGhpcy5jaHVua1NpemUsdD1lL3RoaXMuY2h1bmtTaXplfDA7cmV0dXJuIHRoaXMuZ2V0dGVyKHQpW3JdfX0sYS5wcm90b3R5cGUuc2V0RGF0YUdldHRlcj1mdW5jdGlvbihlKXt0aGlzLmdldHRlcj1lfSxhLnByb3RvdHlwZS5jYWNoZUxlbmd0aD1mdW5jdGlvbigpe3ZhciBlPW5ldyBYTUxIdHRwUmVxdWVzdDtpZihlLm9wZW4oIkhFQUQiLHQsITEpLGUuc2VuZChudWxsKSwhKGUuc3RhdHVzPj0yMDAmJmUuc3RhdHVzPDMwMHx8MzA0PT09ZS5zdGF0dXMpKXRocm93IG5ldyBFcnJvcigiQ291bGRuJ3QgbG9hZCAiK3QrIi4gU3RhdHVzOiAiK2Uuc3RhdHVzKTt2YXIgcixuPU51bWJlcihlLmdldFJlc3BvbnNlSGVhZGVyKCJDb250ZW50LWxlbmd0aCIpKSxvPShyPWUuZ2V0UmVzcG9uc2VIZWFkZXIoIkFjY2VwdC1SYW5nZXMiKSkmJiJieXRlcyI9PT1yLGE9KHI9ZS5nZXRSZXNwb25zZUhlYWRlcigiQ29udGVudC1FbmNvZGluZyIpKSYmImd6aXAiPT09cixzPTEwNDg1NzY7b3x8KHM9bik7dmFyIGk9dGhpcztpLnNldERhdGFHZXR0ZXIoKGU9Pnt2YXIgcj1lKnMsbz0oZSsxKSpzLTE7aWYobz1NYXRoLm1pbihvLG4tMSksdm9pZCAwPT09aS5jaHVua3NbZV0mJihpLmNodW5rc1tlXT0oKGUscik9PntpZihlPnIpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHJhbmdlICgiK2UrIiwgIityKyIpIG9yIG5vIGJ5dGVzIHJlcXVlc3RlZCEiKTtpZihyPm4tMSl0aHJvdyBuZXcgRXJyb3IoIm9ubHkgIituKyIgYnl0ZXMgYXZhaWxhYmxlISBwcm9ncmFtbWVyIGVycm9yISIpO3ZhciBvPW5ldyBYTUxIdHRwUmVxdWVzdDtpZihvLm9wZW4oIkdFVCIsdCwhMSksbiE9PXMmJm8uc2V0UmVxdWVzdEhlYWRlcigiUmFuZ2UiLCJieXRlcz0iK2UrIi0iK3IpLG8ucmVzcG9uc2VUeXBlPSJhcnJheWJ1ZmZlciIsby5vdmVycmlkZU1pbWVUeXBlJiZvLm92ZXJyaWRlTWltZVR5cGUoInRleHQvcGxhaW47IGNoYXJzZXQ9eC11c2VyLWRlZmluZWQiKSxvLnNlbmQobnVsbCksIShvLnN0YXR1cz49MjAwJiZvLnN0YXR1czwzMDB8fDMwND09PW8uc3RhdHVzKSl0aHJvdyBuZXcgRXJyb3IoIkNvdWxkbid0IGxvYWQgIit0KyIuIFN0YXR1czogIitvLnN0YXR1cyk7cmV0dXJuIHZvaWQgMCE9PW8ucmVzcG9uc2U/bmV3IFVpbnQ4QXJyYXkoby5yZXNwb25zZXx8W10pOm5lKG8ucmVzcG9uc2VUZXh0fHwiIiwhMCl9KShyLG8pKSx2b2lkIDA9PT1pLmNodW5rc1tlXSl0aHJvdyBuZXcgRXJyb3IoImRvWEhSIGZhaWxlZCEiKTtyZXR1cm4gaS5jaHVua3NbZV19KSksIWEmJm58fChzPW49MSxuPXRoaXMuZ2V0dGVyKDApLmxlbmd0aCxzPW4sXygiTGF6eUZpbGVzIG9uIGd6aXAgZm9yY2VzIGRvd25sb2FkIG9mIHRoZSB3aG9sZSBmaWxlIHdoZW4gbGVuZ3RoIGlzIGFjY2Vzc2VkIikpLHRoaXMuX2xlbmd0aD1uLHRoaXMuX2NodW5rU2l6ZT1zLHRoaXMubGVuZ3RoS25vd249ITB9LCJ1bmRlZmluZWQiIT10eXBlb2YgWE1MSHR0cFJlcXVlc3Qpe2lmKCFkKXRocm93IkNhbm5vdCBkbyBzeW5jaHJvbm91cyBiaW5hcnkgWEhScyBvdXRzaWRlIHdlYndvcmtlcnMgaW4gbW9kZXJuIGJyb3dzZXJzLiBVc2UgLS1lbWJlZC1maWxlIG9yIC0tcHJlbG9hZC1maWxlIGluIGVtY2MiO3ZhciBzPW5ldyBhO09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHMse2xlbmd0aDp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RoS25vd258fHRoaXMuY2FjaGVMZW5ndGgoKSx0aGlzLl9sZW5ndGh9fSxjaHVua1NpemU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aEtub3dufHx0aGlzLmNhY2hlTGVuZ3RoKCksdGhpcy5fY2h1bmtTaXplfX19KTt2YXIgaT17aXNEZXZpY2U6ITEsY29udGVudHM6c319ZWxzZSBpPXtpc0RldmljZTohMSx1cmw6dH07dmFyIHU9bGUuY3JlYXRlRmlsZShlLHIsaSxuLG8pO2kuY29udGVudHM/dS5jb250ZW50cz1pLmNvbnRlbnRzOmkudXJsJiYodS5jb250ZW50cz1udWxsLHUudXJsPWkudXJsKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh1LHt1c2VkQnl0ZXM6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbnRlbnRzLmxlbmd0aH19fSk7dmFyIGw9e307ZnVuY3Rpb24gYyhlLHIsdCxuLG8pe3ZhciBhPWUubm9kZS5jb250ZW50cztpZihvPj1hLmxlbmd0aClyZXR1cm4gMDt2YXIgcz1NYXRoLm1pbihhLmxlbmd0aC1vLG4pO2lmKGEuc2xpY2UpZm9yKHZhciBpPTA7aTxzO2krKylyW3QraV09YVtvK2ldO2Vsc2UgZm9yKGk9MDtpPHM7aSsrKXJbdCtpXT1hLmdldChvK2kpO3JldHVybiBzfXJldHVybiBPYmplY3Qua2V5cyh1LnN0cmVhbV9vcHMpLmZvckVhY2goKGU9Pnt2YXIgcj11LnN0cmVhbV9vcHNbZV07bFtlXT1mdW5jdGlvbigpe3JldHVybiBsZS5mb3JjZUxvYWRGaWxlKHUpLHIuYXBwbHkobnVsbCxhcmd1bWVudHMpfX0pKSxsLnJlYWQ9KGUscix0LG4sbyk9PihsZS5mb3JjZUxvYWRGaWxlKHUpLGMoZSxyLHQsbixvKSksbC5tbWFwPShlLHIsdCxuLG8pPT57bGUuZm9yY2VMb2FkRmlsZSh1KTt2YXIgYT1hZSgpO2lmKCFhKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDQ4KTtyZXR1cm4gYyhlLEUsYSxyLHQpLHtwdHI6YSxhbGxvY2F0ZWQ6ITB9fSx1LnN0cmVhbV9vcHM9bCx1fX0sY2U9KGUscik9PmU/UShrLGUscik6IiIsZGU9e0RFRkFVTFRfUE9MTE1BU0s6NSxjYWxjdWxhdGVBdChlLHIsdCl7aWYoWi5pc0FicyhyKSlyZXR1cm4gcjt2YXIgbjtpZihuPS0xMDA9PT1lP2xlLmN3ZCgpOmRlLmdldFN0cmVhbUZyb21GRChlKS5wYXRoLDA9PXIubGVuZ3RoKXtpZighdCl0aHJvdyBuZXcgbGUuRXJybm9FcnJvcig0NCk7cmV0dXJuIG59cmV0dXJuIFouam9pbjIobixyKX0sZG9TdGF0KGUscix0KXt0cnl7dmFyIG49ZShyKX1jYXRjaChlKXtpZihlJiZlLm5vZGUmJloubm9ybWFsaXplKHIpIT09Wi5ub3JtYWxpemUobGUuZ2V0UGF0aChlLm5vZGUpKSlyZXR1cm4tNTQ7dGhyb3cgZX1GW3Q+PjJdPW4uZGV2LEZbdCs0Pj4yXT1uLm1vZGUsRFt0Kzg+PjJdPW4ubmxpbmssRlt0KzEyPj4yXT1uLnVpZCxGW3QrMTY+PjJdPW4uZ2lkLEZbdCsyMD4+Ml09bi5yZGV2LEk9W24uc2l6ZT4+PjAsKGo9bi5zaXplLCtNYXRoLmFicyhqKT49MT9qPjA/K01hdGguZmxvb3Ioai80Mjk0OTY3Mjk2KT4+PjA6fn4rTWF0aC5jZWlsKChqLSsofn5qPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sRlt0KzI0Pj4yXT1JWzBdLEZbdCsyOD4+Ml09SVsxXSxGW3QrMzI+PjJdPTQwOTYsRlt0KzM2Pj4yXT1uLmJsb2Nrczt2YXIgbz1uLmF0aW1lLmdldFRpbWUoKSxhPW4ubXRpbWUuZ2V0VGltZSgpLHM9bi5jdGltZS5nZXRUaW1lKCk7cmV0dXJuIEk9W01hdGguZmxvb3Ioby8xZTMpPj4+MCwoaj1NYXRoLmZsb29yKG8vMWUzKSwrTWF0aC5hYnMoaik+PTE/aj4wPytNYXRoLmZsb29yKGovNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoai0rKH5+aj4+PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCldLEZbdCs0MD4+Ml09SVswXSxGW3QrNDQ+PjJdPUlbMV0sRFt0KzQ4Pj4yXT1vJTFlMyoxZTMsST1bTWF0aC5mbG9vcihhLzFlMyk+Pj4wLChqPU1hdGguZmxvb3IoYS8xZTMpLCtNYXRoLmFicyhqKT49MT9qPjA/K01hdGguZmxvb3Ioai80Mjk0OTY3Mjk2KT4+PjA6fn4rTWF0aC5jZWlsKChqLSsofn5qPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKV0sRlt0KzU2Pj4yXT1JWzBdLEZbdCs2MD4+Ml09SVsxXSxEW3QrNjQ+PjJdPWElMWUzKjFlMyxJPVtNYXRoLmZsb29yKHMvMWUzKT4+PjAsKGo9TWF0aC5mbG9vcihzLzFlMyksK01hdGguYWJzKGopPj0xP2o+MD8rTWF0aC5mbG9vcihqLzQyOTQ5NjcyOTYpPj4+MDp+fitNYXRoLmNlaWwoKGotKyh+fmo+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXSxGW3QrNzI+PjJdPUlbMF0sRlt0Kzc2Pj4yXT1JWzFdLERbdCs4MD4+Ml09cyUxZTMqMWUzLEk9W24uaW5vPj4+MCwoaj1uLmlubywrTWF0aC5hYnMoaik+PTE/aj4wPytNYXRoLmZsb29yKGovNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoai0rKH5+aj4+PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCldLEZbdCs4OD4+Ml09SVswXSxGW3QrOTI+PjJdPUlbMV0sMH0sZG9Nc3luYyhlLHIsdCxuLG8pe2lmKCFsZS5pc0ZpbGUoci5ub2RlLm1vZGUpKXRocm93IG5ldyBsZS5FcnJub0Vycm9yKDQzKTtpZigyJm4pcmV0dXJuIDA7dmFyIGE9ay5zbGljZShlLGUrdCk7bGUubXN5bmMocixhLG8sdCxuKX0sdmFyYXJnczp2b2lkIDAsZ2V0KCl7dmFyIGU9RlsrZGUudmFyYXJncz4+Ml07cmV0dXJuIGRlLnZhcmFyZ3MrPTQsZX0sZ2V0cDooKT0+ZGUuZ2V0KCksZ2V0U3RyOmU9PmNlKGUpLGdldFN0cmVhbUZyb21GRDplPT5sZS5nZXRTdHJlYW1DaGVja2VkKGUpfSxoZT1lPT4oRltPZSgpPj4yXT1lLGUpLGZlPXtCVUNLRVRfQlVGRkVSX1NJWkU6ODE5Mixtb3VudDplPT5sZS5jcmVhdGVOb2RlKG51bGwsIi8iLDE2ODk1LDApLGNyZWF0ZVBpcGUoKXt2YXIgZT17YnVja2V0czpbXSxyZWZjbnQ6Mn07ZS5idWNrZXRzLnB1c2goe2J1ZmZlcjpuZXcgVWludDhBcnJheShmZS5CVUNLRVRfQlVGRkVSX1NJWkUpLG9mZnNldDowLHJvZmZzZXQ6MH0pO3ZhciByPWZlLm5leHRuYW1lKCksdD1mZS5uZXh0bmFtZSgpLG49bGUuY3JlYXRlTm9kZShmZS5yb290LHIsNDA5NiwwKSxvPWxlLmNyZWF0ZU5vZGUoZmUucm9vdCx0LDQwOTYsMCk7bi5waXBlPWUsby5waXBlPWU7dmFyIGE9bGUuY3JlYXRlU3RyZWFtKHtwYXRoOnIsbm9kZTpuLGZsYWdzOjAsc2Vla2FibGU6ITEsc3RyZWFtX29wczpmZS5zdHJlYW1fb3BzfSk7bi5zdHJlYW09YTt2YXIgcz1sZS5jcmVhdGVTdHJlYW0oe3BhdGg6dCxub2RlOm8sZmxhZ3M6MSxzZWVrYWJsZTohMSxzdHJlYW1fb3BzOmZlLnN0cmVhbV9vcHN9KTtyZXR1cm4gby5zdHJlYW09cyx7cmVhZGFibGVfZmQ6YS5mZCx3cml0YWJsZV9mZDpzLmZkfX0sc3RyZWFtX29wczp7cG9sbChlKXt2YXIgcj1lLm5vZGUucGlwZTtpZigxPT0oMjA5NzE1NSZlLmZsYWdzKSlyZXR1cm4gMjYwO2lmKHIuYnVja2V0cy5sZW5ndGg+MClmb3IodmFyIHQ9MDt0PHIuYnVja2V0cy5sZW5ndGg7dCsrKXt2YXIgbj1yLmJ1Y2tldHNbdF07aWYobi5vZmZzZXQtbi5yb2Zmc2V0PjApcmV0dXJuIDY1fXJldHVybiAwfSxpb2N0bDooZSxyLHQpPT4yOCxmc3luYzplPT4yOCxyZWFkKGUscix0LG4sbyl7Zm9yKHZhciBhPWUubm9kZS5waXBlLHM9MCxpPTA7aTxhLmJ1Y2tldHMubGVuZ3RoO2krKyl7dmFyIHU9YS5idWNrZXRzW2ldO3MrPXUub2Zmc2V0LXUucm9mZnNldH12YXIgbD1yLnN1YmFycmF5KHQsdCtuKTtpZihuPD0wKXJldHVybiAwO2lmKDA9PXMpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoNik7dmFyIGM9TWF0aC5taW4ocyxuKSxkPWMsaD0wO2ZvcihpPTA7aTxhLmJ1Y2tldHMubGVuZ3RoO2krKyl7dmFyIGY9YS5idWNrZXRzW2ldLG09Zi5vZmZzZXQtZi5yb2Zmc2V0O2lmKGM8PW0pe3ZhciBwPWYuYnVmZmVyLnN1YmFycmF5KGYucm9mZnNldCxmLm9mZnNldCk7YzxtPyhwPXAuc3ViYXJyYXkoMCxjKSxmLnJvZmZzZXQrPWMpOmgrKyxsLnNldChwKTticmVha31wPWYuYnVmZmVyLnN1YmFycmF5KGYucm9mZnNldCxmLm9mZnNldCksbC5zZXQocCksbD1sLnN1YmFycmF5KHAuYnl0ZUxlbmd0aCksYy09cC5ieXRlTGVuZ3RoLGgrK31yZXR1cm4gaCYmaD09YS5idWNrZXRzLmxlbmd0aCYmKGgtLSxhLmJ1Y2tldHNbaF0ub2Zmc2V0PTAsYS5idWNrZXRzW2hdLnJvZmZzZXQ9MCksYS5idWNrZXRzLnNwbGljZSgwLGgpLGR9LHdyaXRlKGUscix0LG4sbyl7dmFyIGE9ZS5ub2RlLnBpcGUscz1yLnN1YmFycmF5KHQsdCtuKSxpPXMuYnl0ZUxlbmd0aDtpZihpPD0wKXJldHVybiAwO3ZhciB1PW51bGw7MD09YS5idWNrZXRzLmxlbmd0aD8odT17YnVmZmVyOm5ldyBVaW50OEFycmF5KGZlLkJVQ0tFVF9CVUZGRVJfU0laRSksb2Zmc2V0OjAscm9mZnNldDowfSxhLmJ1Y2tldHMucHVzaCh1KSk6dT1hLmJ1Y2tldHNbYS5idWNrZXRzLmxlbmd0aC0xXSxBKHUub2Zmc2V0PD1mZS5CVUNLRVRfQlVGRkVSX1NJWkUpO3ZhciBsPWZlLkJVQ0tFVF9CVUZGRVJfU0laRS11Lm9mZnNldDtpZihsPj1pKXJldHVybiB1LmJ1ZmZlci5zZXQocyx1Lm9mZnNldCksdS5vZmZzZXQrPWksaTtsPjAmJih1LmJ1ZmZlci5zZXQocy5zdWJhcnJheSgwLGwpLHUub2Zmc2V0KSx1Lm9mZnNldCs9bCxzPXMuc3ViYXJyYXkobCxzLmJ5dGVMZW5ndGgpKTtmb3IodmFyIGM9cy5ieXRlTGVuZ3RoL2ZlLkJVQ0tFVF9CVUZGRVJfU0laRXwwLGQ9cy5ieXRlTGVuZ3RoJWZlLkJVQ0tFVF9CVUZGRVJfU0laRSxoPTA7aDxjO2grKyl7dmFyIGY9e2J1ZmZlcjpuZXcgVWludDhBcnJheShmZS5CVUNLRVRfQlVGRkVSX1NJWkUpLG9mZnNldDpmZS5CVUNLRVRfQlVGRkVSX1NJWkUscm9mZnNldDowfTthLmJ1Y2tldHMucHVzaChmKSxmLmJ1ZmZlci5zZXQocy5zdWJhcnJheSgwLGZlLkJVQ0tFVF9CVUZGRVJfU0laRSkpLHM9cy5zdWJhcnJheShmZS5CVUNLRVRfQlVGRkVSX1NJWkUscy5ieXRlTGVuZ3RoKX1yZXR1cm4gZD4wJiYoZj17YnVmZmVyOm5ldyBVaW50OEFycmF5KGZlLkJVQ0tFVF9CVUZGRVJfU0laRSksb2Zmc2V0OnMuYnl0ZUxlbmd0aCxyb2Zmc2V0OjB9LGEuYnVja2V0cy5wdXNoKGYpLGYuYnVmZmVyLnNldChzKSksaX0sY2xvc2UoZSl7dmFyIHI9ZS5ub2RlLnBpcGU7ci5yZWZjbnQtLSwwPT09ci5yZWZjbnQmJihyLmJ1Y2tldHM9bnVsbCl9fSxuZXh0bmFtZTooKT0+KGZlLm5leHRuYW1lLmN1cnJlbnR8fChmZS5uZXh0bmFtZS5jdXJyZW50PTApLCJwaXBlWyIrZmUubmV4dG5hbWUuY3VycmVudCsrKyJdIil9LG1lPShlLHIpPT5yKzIwOTcxNTI+Pj4wPDQxOTQzMDUtISFlPyhlPj4+MCkrNDI5NDk2NzI5NipyOk5hTixwZT1lPT5lJTQ9PTAmJihlJTEwMCE9MHx8ZSU0MDA9PTApLHZlPVswLDMxLDYwLDkxLDEyMSwxNTIsMTgyLDIxMywyNDQsMjc0LDMwNSwzMzVdLHdlPVswLDMxLDU5LDkwLDEyMCwxNTEsMTgxLDIxMiwyNDMsMjczLDMwNCwzMzRdLGdlPWU9PihwZShlLmdldEZ1bGxZZWFyKCkpP3ZlOndlKVtlLmdldE1vbnRoKCldK2UuZ2V0RGF0ZSgpLTEsX2U9KGUscix0KT0+dGUoZSxrLHIsdCkseWU9ZT0+e3ZhciByPXJlKGUpKzEsdD14ZShyKTtyZXR1cm4gdCYmX2UoZSx0LHIpLHR9LEVlPWU9Pnt2YXIgcj0oZS1nLmJ1ZmZlci5ieXRlTGVuZ3RoKzY1NTM1KS82NTUzNjt0cnl7cmV0dXJuIGcuZ3JvdyhyKSxDKCksMX1jYXRjaChlKXt9fSxiZT17fSxrZT0oKT0+e2lmKCFrZS5zdHJpbmdzKXt2YXIgZT17VVNFUjoid2ViX3VzZXIiLExPR05BTUU6IndlYl91c2VyIixQQVRIOiIvIixQV0Q6Ii8iLEhPTUU6Ii9ob21lL3dlYl91c2VyIixMQU5HOigib2JqZWN0Ij09dHlwZW9mIG5hdmlnYXRvciYmbmF2aWdhdG9yLmxhbmd1YWdlcyYmbmF2aWdhdG9yLmxhbmd1YWdlc1swXXx8IkMiKS5yZXBsYWNlKCItIiwiXyIpKyIuVVRGLTgiLF86dXx8Ii4vdGhpcy5wcm9ncmFtIn07Zm9yKHZhciByIGluIGJlKXZvaWQgMD09PWJlW3JdP2RlbGV0ZSBlW3JdOmVbcl09YmVbcl07dmFyIHQ9W107Zm9yKHZhciByIGluIGUpdC5wdXNoKGAke3J9PSR7ZVtyXX1gKTtrZS5zdHJpbmdzPXR9cmV0dXJuIGtlLnN0cmluZ3N9LFNlPWU9PntYfHwobi5vbkV4aXQ/LihlKSxNPSEwKSxsKGUsbmV3IHEoZSkpfSxGZT0oZSxyKT0+e1NlKGUpfSxEZT1bMzEsMjksMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzFdLE1lPVszMSwyOCwzMSwzMCwzMSwzMCwzMSwzMSwzMCwzMSwzMCwzMV0sQWU9KGUscik9PntFLnNldChlLHIpfSxDZT1lPT5uWyJfIitlXSxQZT0oZSxyLHQsbixvKT0+e3ZhciBhPXtzdHJpbmc6ZT0+e3ZhciByPTA7cmV0dXJuIG51bGwhPWUmJjAhPT1lJiYocj0oZT0+e3ZhciByPXJlKGUpKzEsdD1IZShyKTtyZXR1cm4gX2UoZSx0LHIpLHR9KShlKSkscn0sYXJyYXk6ZT0+e3ZhciByPUhlKGUubGVuZ3RoKTtyZXR1cm4gQWUoZSxyKSxyfX0scz1DZShlKSxpPVtdLHU9MDtpZihuKWZvcih2YXIgbD0wO2w8bi5sZW5ndGg7bCsrKXt2YXIgYz1hW3RbbF1dO2M/KDA9PT11JiYodT1qZSgpKSxpW2xdPWMobltsXSkpOmlbbF09bltsXX12YXIgZD1zLmFwcGx5KG51bGwsaSk7cmV0dXJuIGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIDAhPT11JiZJZSh1KSxmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09PXI/Y2UoZSk6ImJvb2xlYW4iPT09cj9Cb29sZWFuKGUpOmV9KGUpfShkKX0sVGU9ZnVuY3Rpb24oZSxyLHQsbil7ZXx8KGU9dGhpcyksdGhpcy5wYXJlbnQ9ZSx0aGlzLm1vdW50PWUubW91bnQsdGhpcy5tb3VudGVkPW51bGwsdGhpcy5pZD1sZS5uZXh0SW5vZGUrKyx0aGlzLm5hbWU9cix0aGlzLm1vZGU9dCx0aGlzLm5vZGVfb3BzPXt9LHRoaXMuc3RyZWFtX29wcz17fSx0aGlzLnJkZXY9bn0sUmU9MzY1LHplPTE0NjtPYmplY3QuZGVmaW5lUHJvcGVydGllcyhUZS5wcm90b3R5cGUse3JlYWQ6e2dldDpmdW5jdGlvbigpe3JldHVybih0aGlzLm1vZGUmUmUpPT09UmV9LHNldDpmdW5jdGlvbihlKXtlP3RoaXMubW9kZXw9UmU6dGhpcy5tb2RlJj0tMzY2fX0sd3JpdGU6e2dldDpmdW5jdGlvbigpe3JldHVybih0aGlzLm1vZGUmemUpPT09emV9LHNldDpmdW5jdGlvbihlKXtlP3RoaXMubW9kZXw9emU6dGhpcy5tb2RlJj0tMTQ3fX0saXNGb2xkZXI6e2dldDpmdW5jdGlvbigpe3JldHVybiBsZS5pc0Rpcih0aGlzLm1vZGUpfX0saXNEZXZpY2U6e2dldDpmdW5jdGlvbigpe3JldHVybiBsZS5pc0NocmRldih0aGlzLm1vZGUpfX19KSxsZS5GU05vZGU9VGUsbGUuY3JlYXRlUHJlbG9hZGVkRmlsZT0oZSxyLHQsbixvLHMsaSx1LGwsYyk9Pnt2YXIgZD1yP1YucmVzb2x2ZShaLmpvaW4yKGUscikpOmU7ZnVuY3Rpb24gaCh0KXtmdW5jdGlvbiBhKHQpe2M/LigpLHV8fCgoZSxyLHQsbixvLGEpPT57bGUuY3JlYXRlRGF0YUZpbGUoZSxyLHQsbixvLGEpfSkoZSxyLHQsbixvLGwpLHM/LigpLHgoKX0oKGUscix0LG4pPT57InVuZGVmaW5lZCIhPXR5cGVvZiBCcm93c2VyJiZCcm93c2VyLmluaXQoKTt2YXIgbz0hMTtyZXR1cm4gaWUuZm9yRWFjaCgoYT0+e298fGEuY2FuSGFuZGxlKHIpJiYoYS5oYW5kbGUoZSxyLHQsbiksbz0hMCl9KSksb30pKHQsZCxhLCgoKT0+e2k/LigpLHgoKX0pKXx8YSh0KX1MKCksInN0cmluZyI9PXR5cGVvZiB0PygoZSxyLHQsbik9Pnt2YXIgbz1uPyIiOmBhbCAke2V9YDthKGUsKHQ9PntBKHQsYExvYWRpbmcgZGF0YSBmaWxlICIke2V9IiBmYWlsZWQgKG5vIGFycmF5QnVmZmVyKS5gKSxyKG5ldyBVaW50OEFycmF5KHQpKSxvJiZ4KCl9KSwocj0+e2lmKCF0KXRocm93YExvYWRpbmcgZGF0YSBmaWxlICIke2V9IiBmYWlsZWQuYDt0KCl9KSksbyYmTCgpfSkodCwoZT0+aChlKSksaSk6aCh0KX0sbGUuc3RhdGljSW5pdCgpO3ZhciBVZT17aTpmdW5jdGlvbihlKXt0cnl7dmFyIHI9ZGUuZ2V0U3RyZWFtRnJvbUZEKGUpO3JldHVybiBsZS5jcmVhdGVTdHJlYW0ocikuZmR9Y2F0Y2goZSl7aWYodm9pZCAwPT09bGV8fCJFcnJub0Vycm9yIiE9PWUubmFtZSl0aHJvdyBlO3JldHVybi1lLmVycm5vfX0sYTpmdW5jdGlvbihlLHIsdCl7ZGUudmFyYXJncz10O3RyeXt2YXIgbj1kZS5nZXRTdHJlYW1Gcm9tRkQoZSk7c3dpdGNoKHIpe2Nhc2UgMDppZigobz1kZS5nZXQoKSk8MClyZXR1cm4tMjg7Zm9yKDtsZS5zdHJlYW1zW29dOylvKys7cmV0dXJuIGxlLmNyZWF0ZVN0cmVhbShuLG8pLmZkO2Nhc2UgMTpjYXNlIDI6Y2FzZSA2OmNhc2UgNzpyZXR1cm4gMDtjYXNlIDM6cmV0dXJuIG4uZmxhZ3M7Y2FzZSA0OnZhciBvPWRlLmdldCgpO3JldHVybiBuLmZsYWdzfD1vLDA7Y2FzZSA1OnJldHVybiBvPWRlLmdldHAoKSxTW28rMD4+MV09MiwwO2Nhc2UgMTY6Y2FzZSA4OmRlZmF1bHQ6cmV0dXJuLTI4O2Nhc2UgOTpyZXR1cm4gaGUoMjgpLC0xfX1jYXRjaChlKXtpZih2b2lkIDA9PT1sZXx8IkVycm5vRXJyb3IiIT09ZS5uYW1lKXRocm93IGU7cmV0dXJuLWUuZXJybm99fSx4OmZ1bmN0aW9uKGUscil7dHJ5e3ZhciB0PWRlLmdldFN0cmVhbUZyb21GRChlKTtyZXR1cm4gZGUuZG9TdGF0KGxlLnN0YXQsdC5wYXRoLHIpfWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4tZS5lcnJub319LHU6ZnVuY3Rpb24oZSxyKXt0cnl7cmV0dXJuIGU9ZGUuZ2V0U3RyKGUpLGRlLmRvU3RhdChsZS5sc3RhdCxlLHIpfWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4tZS5lcnJub319LHY6ZnVuY3Rpb24oZSxyLHQsbil7dHJ5e3I9ZGUuZ2V0U3RyKHIpO3ZhciBvPTI1NiZuLGE9NDA5NiZuO3JldHVybiBuJj0tNjQwMSxyPWRlLmNhbGN1bGF0ZUF0KGUscixhKSxkZS5kb1N0YXQobz9sZS5sc3RhdDpsZS5zdGF0LHIsdCl9Y2F0Y2goZSl7aWYodm9pZCAwPT09bGV8fCJFcnJub0Vycm9yIiE9PWUubmFtZSl0aHJvdyBlO3JldHVybi1lLmVycm5vfX0seTpmdW5jdGlvbihlLHIsdCxuKXtkZS52YXJhcmdzPW47dHJ5e3I9ZGUuZ2V0U3RyKHIpLHI9ZGUuY2FsY3VsYXRlQXQoZSxyKTt2YXIgbz1uP2RlLmdldCgpOjA7cmV0dXJuIGxlLm9wZW4ocix0LG8pLmZkfWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4tZS5lcnJub319LHQ6ZnVuY3Rpb24oZSl7dHJ5e2lmKDA9PWUpdGhyb3cgbmV3IGxlLkVycm5vRXJyb3IoMjEpO3ZhciByPWZlLmNyZWF0ZVBpcGUoKTtyZXR1cm4gRltlPj4yXT1yLnJlYWRhYmxlX2ZkLEZbZSs0Pj4yXT1yLndyaXRhYmxlX2ZkLDB9Y2F0Y2goZSl7aWYodm9pZCAwPT09bGV8fCJFcnJub0Vycm9yIiE9PWUubmFtZSl0aHJvdyBlO3JldHVybi1lLmVycm5vfX0sczpmdW5jdGlvbihlLHIsdCl7dHJ5e2Zvcih2YXIgbj0wLG89MDtvPHI7bysrKXt2YXIgYT1lKzgqbyxzPUZbYT4+Ml0saT1TW2ErND4+MV0sdT0zMixsPWxlLmdldFN0cmVhbShzKTtsJiYodT1kZS5ERUZBVUxUX1BPTExNQVNLLGwuc3RyZWFtX29wcy5wb2xsJiYodT1sLnN0cmVhbV9vcHMucG9sbChsLC0xKSkpLCh1Jj0yNHxpKSYmbisrLFNbYSs2Pj4xXT11fXJldHVybiBufWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4tZS5lcnJub319LHc6ZnVuY3Rpb24oZSxyKXt0cnl7cmV0dXJuIGU9ZGUuZ2V0U3RyKGUpLGRlLmRvU3RhdChsZS5zdGF0LGUscil9Y2F0Y2goZSl7aWYodm9pZCAwPT09bGV8fCJFcnJub0Vycm9yIiE9PWUubmFtZSl0aHJvdyBlO3JldHVybi1lLmVycm5vfX0scTpmdW5jdGlvbihlLHIsdCl7dHJ5e3JldHVybiByPWRlLmdldFN0cihyKSxyPWRlLmNhbGN1bGF0ZUF0KGUsciksMD09PXQ/bGUudW5saW5rKHIpOjUxMj09PXQ/bGUucm1kaXIocik6TygiSW52YWxpZCBmbGFncyBwYXNzZWQgdG8gdW5saW5rYXQiKSwwfWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4tZS5lcnJub319LEI6KCk9PjEsazpmdW5jdGlvbihlLHIsdCl7dmFyIG49bWUoZSxyKSxvPW5ldyBEYXRlKDFlMypuKTtGW3Q+PjJdPW8uZ2V0VVRDU2Vjb25kcygpLEZbdCs0Pj4yXT1vLmdldFVUQ01pbnV0ZXMoKSxGW3QrOD4+Ml09by5nZXRVVENIb3VycygpLEZbdCsxMj4+Ml09by5nZXRVVENEYXRlKCksRlt0KzE2Pj4yXT1vLmdldFVUQ01vbnRoKCksRlt0KzIwPj4yXT1vLmdldFVUQ0Z1bGxZZWFyKCktMTkwMCxGW3QrMjQ+PjJdPW8uZ2V0VVRDRGF5KCk7dmFyIGE9RGF0ZS5VVEMoby5nZXRVVENGdWxsWWVhcigpLDAsMSwwLDAsMCwwKSxzPShvLmdldFRpbWUoKS1hKS84NjRlNXwwO0ZbdCsyOD4+Ml09c30sbDpmdW5jdGlvbihlLHIsdCl7dmFyIG49bWUoZSxyKSxvPW5ldyBEYXRlKDFlMypuKTtGW3Q+PjJdPW8uZ2V0U2Vjb25kcygpLEZbdCs0Pj4yXT1vLmdldE1pbnV0ZXMoKSxGW3QrOD4+Ml09by5nZXRIb3VycygpLEZbdCsxMj4+Ml09by5nZXREYXRlKCksRlt0KzE2Pj4yXT1vLmdldE1vbnRoKCksRlt0KzIwPj4yXT1vLmdldEZ1bGxZZWFyKCktMTkwMCxGW3QrMjQ+PjJdPW8uZ2V0RGF5KCk7dmFyIGE9MHxnZShvKTtGW3QrMjg+PjJdPWEsRlt0KzM2Pj4yXT0tNjAqby5nZXRUaW1lem9uZU9mZnNldCgpO3ZhciBzPW5ldyBEYXRlKG8uZ2V0RnVsbFllYXIoKSwwLDEpLGk9bmV3IERhdGUoby5nZXRGdWxsWWVhcigpLDYsMSkuZ2V0VGltZXpvbmVPZmZzZXQoKSx1PXMuZ2V0VGltZXpvbmVPZmZzZXQoKSxsPTB8KGkhPXUmJm8uZ2V0VGltZXpvbmVPZmZzZXQoKT09TWF0aC5taW4odSxpKSk7Rlt0KzMyPj4yXT1sfSxtOmZ1bmN0aW9uKGUpe3ZhciByPSgoKT0+e3ZhciByPW5ldyBEYXRlKEZbZSsyMD4+Ml0rMTkwMCxGW2UrMTY+PjJdLEZbZSsxMj4+Ml0sRltlKzg+PjJdLEZbZSs0Pj4yXSxGW2U+PjJdLDApLHQ9RltlKzMyPj4yXSxuPXIuZ2V0VGltZXpvbmVPZmZzZXQoKSxvPW5ldyBEYXRlKHIuZ2V0RnVsbFllYXIoKSwwLDEpLGE9bmV3IERhdGUoci5nZXRGdWxsWWVhcigpLDYsMSkuZ2V0VGltZXpvbmVPZmZzZXQoKSxzPW8uZ2V0VGltZXpvbmVPZmZzZXQoKSxpPU1hdGgubWluKHMsYSk7aWYodDwwKUZbZSszMj4+Ml09TnVtYmVyKGEhPXMmJmk9PW4pO2Vsc2UgaWYodD4wIT0oaT09bikpe3ZhciB1PU1hdGgubWF4KHMsYSksbD10PjA/aTp1O3Iuc2V0VGltZShyLmdldFRpbWUoKSs2ZTQqKGwtbikpfUZbZSsyND4+Ml09ci5nZXREYXkoKTt2YXIgYz0wfGdlKHIpO0ZbZSsyOD4+Ml09YyxGW2U+PjJdPXIuZ2V0U2Vjb25kcygpLEZbZSs0Pj4yXT1yLmdldE1pbnV0ZXMoKSxGW2UrOD4+Ml09ci5nZXRIb3VycygpLEZbZSsxMj4+Ml09ci5nZXREYXRlKCksRltlKzE2Pj4yXT1yLmdldE1vbnRoKCksRltlKzIwPj4yXT1yLmdldFllYXIoKTt2YXIgZD1yLmdldFRpbWUoKTtyZXR1cm4gaXNOYU4oZCk/KGhlKDYxKSwtMSk6ZC8xZTN9KSgpO3JldHVybiBCZSgoaj1yLCtNYXRoLmFicyhqKT49MT9qPjA/K01hdGguZmxvb3Ioai80Mjk0OTY3Mjk2KT4+PjA6fn4rTWF0aC5jZWlsKChqLSsofn5qPj4+MCkpLzQyOTQ5NjcyOTYpPj4+MDowKSkscj4+PjB9LG46ZnVuY3Rpb24oZSl7dmFyIHI9KCgpPT57dmFyIHI9RGF0ZS5VVEMoRltlKzIwPj4yXSsxOTAwLEZbZSsxNj4+Ml0sRltlKzEyPj4yXSxGW2UrOD4+Ml0sRltlKzQ+PjJdLEZbZT4+Ml0sMCksdD1uZXcgRGF0ZShyKTtGW2UrMjQ+PjJdPXQuZ2V0VVRDRGF5KCk7dmFyIG49RGF0ZS5VVEModC5nZXRVVENGdWxsWWVhcigpLDAsMSwwLDAsMCwwKSxvPSh0LmdldFRpbWUoKS1uKS84NjRlNXwwO3JldHVybiBGW2UrMjg+PjJdPW8sdC5nZXRUaW1lKCkvMWUzfSkoKTtyZXR1cm4gQmUoKGo9ciwrTWF0aC5hYnMoaik+PTE/aj4wPytNYXRoLmZsb29yKGovNDI5NDk2NzI5Nik+Pj4wOn5+K01hdGguY2VpbCgoai0rKH5+aj4+PjApKS80Mjk0OTY3Mjk2KT4+PjA6MCkpLHI+Pj4wfSxyOihlLHIsdCk9Pnt2YXIgbj0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCksbz1uZXcgRGF0ZShuLDAsMSksYT1uZXcgRGF0ZShuLDYsMSkscz1vLmdldFRpbWV6b25lT2Zmc2V0KCksaT1hLmdldFRpbWV6b25lT2Zmc2V0KCksdT1NYXRoLm1heChzLGkpO2Z1bmN0aW9uIGwoZSl7dmFyIHI9ZS50b1RpbWVTdHJpbmcoKS5tYXRjaCgvXCgoW0EtWmEteiBdKylcKSQvKTtyZXR1cm4gcj9yWzFdOiJHTVQifURbZT4+Ml09NjAqdSxGW3I+PjJdPU51bWJlcihzIT1pKTt2YXIgYz1sKG8pLGQ9bChhKSxoPXllKGMpLGY9eWUoZCk7aTxzPyhEW3Q+PjJdPWgsRFt0KzQ+PjJdPWYpOihEW3Q+PjJdPWYsRFt0KzQ+PjJdPWgpfSxiOigpPT57TygiIil9LGM6KCk9PkRhdGUubm93KCksaDooZSxyLHQpPT5rLmNvcHlXaXRoaW4oZSxyLHIrdCkscDplPT57dmFyIHI9ay5sZW5ndGgsdD0yMTQ3NDgzNjQ4O2lmKChlPj4+PTApPnQpcmV0dXJuITE7Zm9yKHZhciBuLG8sYT0xO2E8PTQ7YSo9Mil7dmFyIHM9ciooMSsuMi9hKTtzPU1hdGgubWluKHMsZSsxMDA2NjMyOTYpO3ZhciBpPU1hdGgubWluKHQsKG49TWF0aC5tYXgoZSxzKSkrKChvPTY1NTM2KS1uJW8pJW8pO2lmKEVlKGkpKXJldHVybiEwfXJldHVybiExfSx6OihlLHIpPT57dmFyIHQ9MDtyZXR1cm4ga2UoKS5mb3JFYWNoKCgobixvKT0+e3ZhciBhPXIrdDtEW2UrNCpvPj4yXT1hLCgoZSxyKT0+e2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7Kyt0KUVbcisrPj4wXT1lLmNoYXJDb2RlQXQodCk7RVtyPj4wXT0wfSkobixhKSx0Kz1uLmxlbmd0aCsxfSkpLDB9LEE6KGUscik9Pnt2YXIgdD1rZSgpO0RbZT4+Ml09dC5sZW5ndGg7dmFyIG49MDtyZXR1cm4gdC5mb3JFYWNoKChlPT5uKz1lLmxlbmd0aCsxKSksRFtyPj4yXT1uLDB9LGc6RmUsZTpmdW5jdGlvbihlKXt0cnl7dmFyIHI9ZGUuZ2V0U3RyZWFtRnJvbUZEKGUpO3JldHVybiBsZS5jbG9zZShyKSwwfWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4gZS5lcnJub319LGo6ZnVuY3Rpb24oZSxyLHQsbil7dHJ5e3ZhciBvPSgoZSxyLHQsbik9Pntmb3IodmFyIG89MCxhPTA7YTx0O2ErKyl7dmFyIHM9RFtyPj4yXSxpPURbcis0Pj4yXTtyKz04O3ZhciB1PWxlLnJlYWQoZSxFLHMsaSxuKTtpZih1PDApcmV0dXJuLTE7aWYobys9dSx1PGkpYnJlYWs7dm9pZCAwIT09biYmKG4rPXUpfXJldHVybiBvfSkoZGUuZ2V0U3RyZWFtRnJvbUZEKGUpLHIsdCk7cmV0dXJuIERbbj4+Ml09bywwfWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4gZS5lcnJub319LG86ZnVuY3Rpb24oZSxyLHQsbixvKXt2YXIgYT1tZShyLHQpO3RyeXtpZihpc05hTihhKSlyZXR1cm4gNjE7dmFyIHM9ZGUuZ2V0U3RyZWFtRnJvbUZEKGUpO3JldHVybiBsZS5sbHNlZWsocyxhLG4pLEk9W3MucG9zaXRpb24+Pj4wLChqPXMucG9zaXRpb24sK01hdGguYWJzKGopPj0xP2o+MD8rTWF0aC5mbG9vcihqLzQyOTQ5NjcyOTYpPj4+MDp+fitNYXRoLmNlaWwoKGotKyh+fmo+Pj4wKSkvNDI5NDk2NzI5Nik+Pj4wOjApXSxGW28+PjJdPUlbMF0sRltvKzQ+PjJdPUlbMV0scy5nZXRkZW50cyYmMD09PWEmJjA9PT1uJiYocy5nZXRkZW50cz1udWxsKSwwfWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4gZS5lcnJub319LGQ6ZnVuY3Rpb24oZSxyLHQsbil7dHJ5e3ZhciBvPSgoZSxyLHQsbik9Pntmb3IodmFyIG89MCxhPTA7YTx0O2ErKyl7dmFyIHM9RFtyPj4yXSxpPURbcis0Pj4yXTtyKz04O3ZhciB1PWxlLndyaXRlKGUsRSxzLGksbik7aWYodTwwKXJldHVybi0xO28rPXUsdm9pZCAwIT09biYmKG4rPXUpfXJldHVybiBvfSkoZGUuZ2V0U3RyZWFtRnJvbUZEKGUpLHIsdCk7cmV0dXJuIERbbj4+Ml09bywwfWNhdGNoKGUpe2lmKHZvaWQgMD09PWxlfHwiRXJybm9FcnJvciIhPT1lLm5hbWUpdGhyb3cgZTtyZXR1cm4gZS5lcnJub319LGY6KGUscix0LG4pPT57dmFyIG89RFtuKzQwPj4yXSxhPXt0bV9zZWM6RltuPj4yXSx0bV9taW46RltuKzQ+PjJdLHRtX2hvdXI6RltuKzg+PjJdLHRtX21kYXk6RltuKzEyPj4yXSx0bV9tb246RltuKzE2Pj4yXSx0bV95ZWFyOkZbbisyMD4+Ml0sdG1fd2RheTpGW24rMjQ+PjJdLHRtX3lkYXk6RltuKzI4Pj4yXSx0bV9pc2RzdDpGW24rMzI+PjJdLHRtX2dtdG9mZjpGW24rMzY+PjJdLHRtX3pvbmU6bz9jZShvKToiIn0scz1jZSh0KSxpPXsiJWMiOiIlYSAlYiAlZCAlSDolTTolUyAlWSIsIiVEIjoiJW0vJWQvJXkiLCIlRiI6IiVZLSVtLSVkIiwiJWgiOiIlYiIsIiVyIjoiJUk6JU06JVMgJXAiLCIlUiI6IiVIOiVNIiwiJVQiOiIlSDolTTolUyIsIiV4IjoiJW0vJWQvJXkiLCIlWCI6IiVIOiVNOiVTIiwiJUVjIjoiJWMiLCIlRUMiOiIlQyIsIiVFeCI6IiVtLyVkLyV5IiwiJUVYIjoiJUg6JU06JVMiLCIlRXkiOiIleSIsIiVFWSI6IiVZIiwiJU9kIjoiJWQiLCIlT2UiOiIlZSIsIiVPSCI6IiVIIiwiJU9JIjoiJUkiLCIlT20iOiIlbSIsIiVPTSI6IiVNIiwiJU9TIjoiJVMiLCIlT3UiOiIldSIsIiVPVSI6IiVVIiwiJU9WIjoiJVYiLCIlT3ciOiIldyIsIiVPVyI6IiVXIiwiJU95IjoiJXkifTtmb3IodmFyIHUgaW4gaSlzPXMucmVwbGFjZShuZXcgUmVnRXhwKHUsImciKSxpW3VdKTt2YXIgbD1bIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sYz1bIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl07ZnVuY3Rpb24gZChlLHIsdCl7Zm9yKHZhciBuPSJudW1iZXIiPT10eXBlb2YgZT9lLnRvU3RyaW5nKCk6ZXx8IiI7bi5sZW5ndGg8cjspbj10WzBdK247cmV0dXJuIG59ZnVuY3Rpb24gaChlLHIpe3JldHVybiBkKGUsciwiMCIpfWZ1bmN0aW9uIGYoZSxyKXtmdW5jdGlvbiB0KGUpe3JldHVybiBlPDA/LTE6ZT4wPzE6MH12YXIgbjtyZXR1cm4gMD09PShuPXQoZS5nZXRGdWxsWWVhcigpLXIuZ2V0RnVsbFllYXIoKSkpJiYwPT09KG49dChlLmdldE1vbnRoKCktci5nZXRNb250aCgpKSkmJihuPXQoZS5nZXREYXRlKCktci5nZXREYXRlKCkpKSxufWZ1bmN0aW9uIG0oZSl7c3dpdGNoKGUuZ2V0RGF5KCkpe2Nhc2UgMDpyZXR1cm4gbmV3IERhdGUoZS5nZXRGdWxsWWVhcigpLTEsMTEsMjkpO2Nhc2UgMTpyZXR1cm4gZTtjYXNlIDI6cmV0dXJuIG5ldyBEYXRlKGUuZ2V0RnVsbFllYXIoKSwwLDMpO2Nhc2UgMzpyZXR1cm4gbmV3IERhdGUoZS5nZXRGdWxsWWVhcigpLDAsMik7Y2FzZSA0OnJldHVybiBuZXcgRGF0ZShlLmdldEZ1bGxZZWFyKCksMCwxKTtjYXNlIDU6cmV0dXJuIG5ldyBEYXRlKGUuZ2V0RnVsbFllYXIoKS0xLDExLDMxKTtjYXNlIDY6cmV0dXJuIG5ldyBEYXRlKGUuZ2V0RnVsbFllYXIoKS0xLDExLDMwKX19ZnVuY3Rpb24gcChlKXt2YXIgcj0oKGUscik9Pntmb3IodmFyIHQ9bmV3IERhdGUoZS5nZXRUaW1lKCkpO3I+MDspe3ZhciBuPXBlKHQuZ2V0RnVsbFllYXIoKSksbz10LmdldE1vbnRoKCksYT0obj9EZTpNZSlbb107aWYoIShyPmEtdC5nZXREYXRlKCkpKXJldHVybiB0LnNldERhdGUodC5nZXREYXRlKCkrciksdDtyLT1hLXQuZ2V0RGF0ZSgpKzEsdC5zZXREYXRlKDEpLG88MTE/dC5zZXRNb250aChvKzEpOih0LnNldE1vbnRoKDApLHQuc2V0RnVsbFllYXIodC5nZXRGdWxsWWVhcigpKzEpKX1yZXR1cm4gdH0pKG5ldyBEYXRlKGUudG1feWVhcisxOTAwLDAsMSksZS50bV95ZGF5KSx0PW5ldyBEYXRlKHIuZ2V0RnVsbFllYXIoKSwwLDQpLG49bmV3IERhdGUoci5nZXRGdWxsWWVhcigpKzEsMCw0KSxvPW0odCksYT1tKG4pO3JldHVybiBmKG8scik8PTA/ZihhLHIpPD0wP3IuZ2V0RnVsbFllYXIoKSsxOnIuZ2V0RnVsbFllYXIoKTpyLmdldEZ1bGxZZWFyKCktMX12YXIgdj17IiVhIjplPT5sW2UudG1fd2RheV0uc3Vic3RyaW5nKDAsMyksIiVBIjplPT5sW2UudG1fd2RheV0sIiViIjplPT5jW2UudG1fbW9uXS5zdWJzdHJpbmcoMCwzKSwiJUIiOmU9PmNbZS50bV9tb25dLCIlQyI6ZT0+aCgoZS50bV95ZWFyKzE5MDApLzEwMHwwLDIpLCIlZCI6ZT0+aChlLnRtX21kYXksMiksIiVlIjplPT5kKGUudG1fbWRheSwyLCIgIiksIiVnIjplPT5wKGUpLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpLCIlRyI6ZT0+cChlKSwiJUgiOmU9PmgoZS50bV9ob3VyLDIpLCIlSSI6ZT0+e3ZhciByPWUudG1faG91cjtyZXR1cm4gMD09cj9yPTEyOnI+MTImJihyLT0xMiksaChyLDIpfSwiJWoiOmU9PmgoZS50bV9tZGF5KygoZSxyKT0+e2Zvcih2YXIgdD0wLG49MDtuPD1yO3QrPWVbbisrXSk7cmV0dXJuIHR9KShwZShlLnRtX3llYXIrMTkwMCk/RGU6TWUsZS50bV9tb24tMSksMyksIiVtIjplPT5oKGUudG1fbW9uKzEsMiksIiVNIjplPT5oKGUudG1fbWluLDIpLCIlbiI6KCk9PiJcbiIsIiVwIjplPT5lLnRtX2hvdXI+PTAmJmUudG1faG91cjwxMj8iQU0iOiJQTSIsIiVTIjplPT5oKGUudG1fc2VjLDIpLCIldCI6KCk9PiJcdCIsIiV1IjplPT5lLnRtX3dkYXl8fDcsIiVVIjplPT57dmFyIHI9ZS50bV95ZGF5KzctZS50bV93ZGF5O3JldHVybiBoKE1hdGguZmxvb3Ioci83KSwyKX0sIiVWIjplPT57dmFyIHI9TWF0aC5mbG9vcigoZS50bV95ZGF5KzctKGUudG1fd2RheSs2KSU3KS83KTtpZigoZS50bV93ZGF5KzM3MS1lLnRtX3lkYXktMiklNzw9MiYmcisrLHIpe2lmKDUzPT1yKXt2YXIgdD0oZS50bV93ZGF5KzM3MS1lLnRtX3lkYXkpJTc7ND09dHx8Mz09dCYmcGUoZS50bV95ZWFyKXx8KHI9MSl9fWVsc2V7cj01Mjt2YXIgbj0oZS50bV93ZGF5KzctZS50bV95ZGF5LTEpJTc7KDQ9PW58fDU9PW4mJnBlKGUudG1feWVhciU0MDAtMSkpJiZyKyt9cmV0dXJuIGgociwyKX0sIiV3IjplPT5lLnRtX3dkYXksIiVXIjplPT57dmFyIHI9ZS50bV95ZGF5KzctKGUudG1fd2RheSs2KSU3O3JldHVybiBoKE1hdGguZmxvb3Ioci83KSwyKX0sIiV5IjplPT4oZS50bV95ZWFyKzE5MDApLnRvU3RyaW5nKCkuc3Vic3RyaW5nKDIpLCIlWSI6ZT0+ZS50bV95ZWFyKzE5MDAsIiV6IjplPT57dmFyIHI9ZS50bV9nbXRvZmYsdD1yPj0wO3JldHVybiByPShyPU1hdGguYWJzKHIpLzYwKS82MCoxMDArciU2MCwodD8iKyI6Ii0iKStTdHJpbmcoIjAwMDAiK3IpLnNsaWNlKC00KX0sIiVaIjplPT5lLnRtX3pvbmUsIiUlIjooKT0+IiUifTtmb3IodmFyIHUgaW4gcz1zLnJlcGxhY2UoLyUlL2csIlwwXDAiKSx2KXMuaW5jbHVkZXModSkmJihzPXMucmVwbGFjZShuZXcgUmVnRXhwKHUsImciKSx2W3VdKGEpKSk7dmFyIHc9bmUocz1zLnJlcGxhY2UoL1wwXDAvZywiJSIpLCExKTtyZXR1cm4gdy5sZW5ndGg+cj8wOihBZSh3LGUpLHcubGVuZ3RoLTEpfX0sTGU9ZnVuY3Rpb24oKXt2YXIgZSxyLG8sYSxzPXthOlVlfTtmdW5jdGlvbiBpKGUscil7dmFyIHQ7cmV0dXJuIExlPWUuZXhwb3J0cyxnPUxlLkMsQygpLHQ9TGUuRCxULnVuc2hpZnQodCkseCgpLExlfWlmKEwoKSxuLmluc3RhbnRpYXRlV2FzbSl0cnl7cmV0dXJuIG4uaW5zdGFudGlhdGVXYXNtKHMsaSl9Y2F0Y2goZSl7eShgTW9kdWxlLmluc3RhbnRpYXRlV2FzbSBjYWxsYmFjayBmYWlsZWQgd2l0aCBlcnJvcjogJHtlfWApLHQoZSl9cmV0dXJuKGU9dyxyPU4sbz1zLGE9ZnVuY3Rpb24oZSl7aShlLmluc3RhbmNlKX0sZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIFdlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nfHxIKHIpfHxZKHIpfHxofHwiZnVuY3Rpb24iIT10eXBlb2YgZmV0Y2g/SyhyLG8sYSk6ZmV0Y2gocix7Y3JlZGVudGlhbHM6InNhbWUtb3JpZ2luIn0pLnRoZW4oKGU9PldlYkFzc2VtYmx5Lmluc3RhbnRpYXRlU3RyZWFtaW5nKGUsbykudGhlbihhLChmdW5jdGlvbihlKXtyZXR1cm4geShgd2FzbSBzdHJlYW1pbmcgY29tcGlsZSBmYWlsZWQ6ICR7ZX1gKSx5KCJmYWxsaW5nIGJhY2sgdG8gQXJyYXlCdWZmZXIgaW5zdGFudGlhdGlvbiIpLEsocixvLGEpfSkpKSkpLmNhdGNoKHQpLHt9fSgpO24uX2dldF92ZXJzaW9uPSgpPT4obi5fZ2V0X3ZlcnNpb249TGUuRSkoKSxuLl9hcmNoaXZlX29wZW49KGUscix0LG8pPT4obi5fYXJjaGl2ZV9vcGVuPUxlLkYpKGUscix0LG8pLG4uX2FyY2hpdmVfcmVhZF9hZGRfcGFzc3BocmFzZT0oZSxyKT0+KG4uX2FyY2hpdmVfcmVhZF9hZGRfcGFzc3BocmFzZT1MZS5HKShlLHIpLG4uX2FyY2hpdmVfZXJyb3Jfc3RyaW5nPWU9PihuLl9hcmNoaXZlX2Vycm9yX3N0cmluZz1MZS5IKShlKSxuLl9nZXRfbmV4dF9lbnRyeT1lPT4obi5fZ2V0X25leHRfZW50cnk9TGUuSSkoZSksbi5fZ2V0X2ZpbGVkYXRhPShlLHIpPT4obi5fZ2V0X2ZpbGVkYXRhPUxlLkopKGUscik7dmFyIHhlPW4uX21hbGxvYz1lPT4oeGU9bi5fbWFsbG9jPUxlLkspKGUpO24uX2FyY2hpdmVfY2xvc2U9ZT0+KG4uX2FyY2hpdmVfY2xvc2U9TGUuTCkoZSksbi5fc3RhcnRfYXJjaGl2ZV93cml0ZT0oZSxyLHQsbyxhLHMpPT4obi5fc3RhcnRfYXJjaGl2ZV93cml0ZT1MZS5NKShlLHIsdCxvLGEscyksbi5fd3JpdGVfYXJjaGl2ZV9maWxlPShlLHIsdCxvKT0+KG4uX3dyaXRlX2FyY2hpdmVfZmlsZT1MZS5OKShlLHIsdCxvKSxuLl9zaXplX29mX3NpemVfdD0oKT0+KG4uX3NpemVfb2Zfc2l6ZV90PUxlLk8pKCksbi5fZmluaXNoX2FyY2hpdmVfd3JpdGU9KGUscik9PihuLl9maW5pc2hfYXJjaGl2ZV93cml0ZT1MZS5QKShlLHIpLG4uX2ZyZWU9ZT0+KG4uX2ZyZWU9TGUuUSkoZSk7dmFyIE9lPSgpPT4oT2U9TGUuUikoKTtuLl9hcmNoaXZlX2VudHJ5X2JpcnRodGltZV9uc2VjPWU9PihuLl9hcmNoaXZlX2VudHJ5X2JpcnRodGltZV9uc2VjPUxlLlMpKGUpLG4uX2FyY2hpdmVfZW50cnlfZmlsZXR5cGU9ZT0+KG4uX2FyY2hpdmVfZW50cnlfZmlsZXR5cGU9TGUuVCkoZSksbi5fYXJjaGl2ZV9lbnRyeV9tdGltZV9uc2VjPWU9PihuLl9hcmNoaXZlX2VudHJ5X210aW1lX25zZWM9TGUuVSkoZSksbi5fYXJjaGl2ZV9lbnRyeV9wYXRobmFtZT1lPT4obi5fYXJjaGl2ZV9lbnRyeV9wYXRobmFtZT1MZS5WKShlKSxuLl9hcmNoaXZlX2VudHJ5X3BhdGhuYW1lX3V0Zjg9ZT0+KG4uX2FyY2hpdmVfZW50cnlfcGF0aG5hbWVfdXRmOD1MZS5XKShlKSxuLl9hcmNoaXZlX2VudHJ5X3NpemU9ZT0+KG4uX2FyY2hpdmVfZW50cnlfc2l6ZT1MZS5YKShlKSxuLl9hcmNoaXZlX2VudHJ5X2lzX2VuY3J5cHRlZD1lPT4obi5fYXJjaGl2ZV9lbnRyeV9pc19lbmNyeXB0ZWQ9TGUuWSkoZSksbi5fYXJjaGl2ZV9yZWFkX2hhc19lbmNyeXB0ZWRfZW50cmllcz1lPT4obi5fYXJjaGl2ZV9yZWFkX2hhc19lbmNyeXB0ZWRfZW50cmllcz1MZS5aKShlKSxuLl9hcmNoaXZlX3JlYWRfZGF0YV9za2lwPWU9PihuLl9hcmNoaXZlX3JlYWRfZGF0YV9za2lwPUxlLl8pKGUpO3ZhciBOZSxCZT1lPT4oQmU9TGUuYWEpKGUpLGplPSgpPT4oamU9TGUuYmEpKCksSWU9ZT0+KEllPUxlLmNhKShlKSxIZT1lPT4oSGU9TGUuZGEpKGUpO2Z1bmN0aW9uIFllKCl7ZnVuY3Rpb24gZSgpe05lfHwoTmU9ITAsbi5jYWxsZWRSdW49ITAsTXx8KG4ubm9GU0luaXR8fGxlLmluaXQuaW5pdGlhbGl6ZWR8fGxlLmluaXQoKSxsZS5pZ25vcmVQZXJtaXNzaW9ucz0hMSxmZS5yb290PWxlLm1vdW50KGZlLHt9LG51bGwpLCQoVCkscihuKSxuLm9uUnVudGltZUluaXRpYWxpemVkJiZuLm9uUnVudGltZUluaXRpYWxpemVkKCksZnVuY3Rpb24oKXtpZihuLnBvc3RSdW4pZm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBuLnBvc3RSdW4mJihuLnBvc3RSdW49W24ucG9zdFJ1bl0pO24ucG9zdFJ1bi5sZW5ndGg7KWU9bi5wb3N0UnVuLnNoaWZ0KCksUi51bnNoaWZ0KGUpO3ZhciBlOyQoUil9KCkpKX16PjB8fChmdW5jdGlvbigpe2lmKG4ucHJlUnVuKWZvcigiZnVuY3Rpb24iPT10eXBlb2Ygbi5wcmVSdW4mJihuLnByZVJ1bj1bbi5wcmVSdW5dKTtuLnByZVJ1bi5sZW5ndGg7KWU9bi5wcmVSdW4uc2hpZnQoKSxQLnVuc2hpZnQoZSk7dmFyIGU7JChQKX0oKSx6PjB8fChuLnNldFN0YXR1cz8obi5zZXRTdGF0dXMoIlJ1bm5pbmcuLi4iKSxzZXRUaW1lb3V0KChmdW5jdGlvbigpe3NldFRpbWVvdXQoKGZ1bmN0aW9uKCl7bi5zZXRTdGF0dXMoIiIpfSksMSksZSgpfSksMSkpOmUoKSkpfWlmKG4uY3dyYXA9KGUscix0LG4pPT57dmFyIG89IXR8fHQuZXZlcnkoKGU9PiJudW1iZXIiPT09ZXx8ImJvb2xlYW4iPT09ZSkpO3JldHVybiJzdHJpbmciIT09ciYmbyYmIW4/Q2UoZSk6ZnVuY3Rpb24oKXtyZXR1cm4gUGUoZSxyLHQsYXJndW1lbnRzKX19LG4uYWxsb2NhdGU9KGUscik9Pnt2YXIgdDtyZXR1cm4gdD0xPT1yP0hlKGUubGVuZ3RoKTp4ZShlLmxlbmd0aCksZS5zdWJhcnJheXx8ZS5zbGljZXx8KGU9bmV3IFVpbnQ4QXJyYXkoZSkpLGsuc2V0KGUsdCksdH0sVT1mdW5jdGlvbiBlKCl7TmV8fFllKCksTmV8fChVPWUpfSxuLnByZUluaXQpZm9yKCJmdW5jdGlvbiI9PXR5cGVvZiBuLnByZUluaXQmJihuLnByZUluaXQ9W24ucHJlSW5pdF0pO24ucHJlSW5pdC5sZW5ndGg+MDspbi5wcmVJbml0LnBvcCgpKCk7cmV0dXJuIFllKCksZS5yZWFkeX0pO2NsYXNzIFN7Y29uc3RydWN0b3IoKXt0aGlzLnByZVJ1bj1bXSx0aGlzLnBvc3RSdW49W10sdGhpcy50b3RhbERlcGVuZGVuY2llcz0wfXByaW50KC4uLmUpe2NvbnNvbGUubG9nKGUpfXByaW50RXJyKC4uLmUpe2NvbnNvbGUuZXJyb3IoZSl9aW5pdEZ1bmN0aW9ucygpe3RoaXMucnVuQ29kZT17Z2V0VmVyc2lvbjp0aGlzLmN3cmFwKCJnZXRfdmVyc2lvbiIsInN0cmluZyIsW10pLG9wZW5BcmNoaXZlOnRoaXMuY3dyYXAoImFyY2hpdmVfb3BlbiIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiLCJzdHJpbmciLCJzdHJpbmciXSksZ2V0TmV4dEVudHJ5OnRoaXMuY3dyYXAoImdldF9uZXh0X2VudHJ5IiwibnVtYmVyIixbIm51bWJlciJdKSxnZXRGaWxlRGF0YTp0aGlzLmN3cmFwKCJnZXRfZmlsZWRhdGEiLCJudW1iZXIiLFsibnVtYmVyIiwibnVtYmVyIl0pLHNraXBFbnRyeTp0aGlzLmN3cmFwKCJhcmNoaXZlX3JlYWRfZGF0YV9za2lwIiwibnVtYmVyIixbIm51bWJlciJdKSxjbG9zZUFyY2hpdmU6dGhpcy5jd3JhcCgiYXJjaGl2ZV9jbG9zZSIsbnVsbCxbIm51bWJlciJdKSxnZXRFbnRyeVNpemU6dGhpcy5jd3JhcCgiYXJjaGl2ZV9lbnRyeV9zaXplIiwibnVtYmVyIixbIm51bWJlciJdKSxnZXRFbnRyeU5hbWU6dGhpcy5jd3JhcCgiYXJjaGl2ZV9lbnRyeV9wYXRobmFtZSIsInN0cmluZyIsWyJudW1iZXIiXSksZ2V0RW50cnlUeXBlOnRoaXMuY3dyYXAoImFyY2hpdmVfZW50cnlfZmlsZXR5cGUiLCJudW1iZXIiLFsibnVtYmVyIl0pLGdldEVudHJ5TGFzdE1vZGlmaWVkOnRoaXMuY3dyYXAoImFyY2hpdmVfZW50cnlfbXRpbWVfbnNlYyIsIm51bWJlciIsWyJudW1iZXIiXSksZ2V0RXJyb3I6dGhpcy5jd3JhcCgiYXJjaGl2ZV9lcnJvcl9zdHJpbmciLCJzdHJpbmciLFsibnVtYmVyIl0pLHN0YXJ0QXJjaGl2ZVdyaXRlOnRoaXMuY3dyYXAoInN0YXJ0X2FyY2hpdmVfd3JpdGUiLCJudW1iZXIiLFsic3RyaW5nIiwic3RyaW5nIiwibnVtYmVyIiwibnVtYmVyIiwibnVtYmVyIiwic3RyaW5nIl0pLHdyaXRlQXJjaGl2ZUZpbGU6dGhpcy5jd3JhcCgid3JpdGVfYXJjaGl2ZV9maWxlIixudWxsLFsibnVtYmVyIiwic3RyaW5nIiwibnVtYmVyIiwibnVtYmVyIl0pLGZpbmlzaEFyY2hpdmVXcml0ZTp0aGlzLmN3cmFwKCJmaW5pc2hfYXJjaGl2ZV93cml0ZSIsIm51bWJlciIsWyJudW1iZXIiLCJudW1iZXIiXSksZW50cnlJc0VuY3J5cHRlZDp0aGlzLmN3cmFwKCJhcmNoaXZlX2VudHJ5X2lzX2VuY3J5cHRlZCIsIm51bWJlciIsWyJudW1iZXIiXSksaGFzRW5jcnlwdGVkRW50cmllczp0aGlzLmN3cmFwKCJhcmNoaXZlX3JlYWRfaGFzX2VuY3J5cHRlZF9lbnRyaWVzIiwibnVtYmVyIixbIm51bWJlciJdKSxhZGRQYXNzcGhyYXNlOnRoaXMuY3dyYXAoImFyY2hpdmVfcmVhZF9hZGRfcGFzc3BocmFzZSIsIm51bWJlciIsWyJudW1iZXIiLCJzdHJpbmciXSksc3RyaW5nOmU9PnRoaXMuYWxsb2NhdGUodGhpcy5pbnRBcnJheUZyb21TdHJpbmcoZSksImk4IiwwKSxtYWxsb2M6dGhpcy5jd3JhcCgibWFsbG9jIiwibnVtYmVyIixbIm51bWJlciJdKSxmcmVlOnRoaXMuY3dyYXAoImZyZWUiLG51bGwsWyJudW1iZXIiXSksc2l6ZU9mU2l6ZVQ6dGhpcy5jd3JhcCgic2l6ZV9vZl9zaXplX3QiLCJudW1iZXIiLFtdKX19bW9uaXRvclJ1bkRlcGVuZGVuY2llcygpe319bGV0IEY9bnVsbCxEPW51bGwsTT0hMTtjbGFzcyBBe2NvbnN0cnVjdG9yKGUpe0EucmVhZHlDYWxsYmFjaz1lLE0mJnNldFRpbWVvdXQoKCgpPT5lKCkpLDApfW9wZW4oZSxyKXtGLm9wZW4oZSkudGhlbigoKCk9PnIoKSkpfWxpc3RGaWxlcygpe2xldCBlPVtdO2Zvcihjb25zdCByIG9mIEYuZW50cmllcyghMCkpZS5wdXNoKHIpO3JldHVybiBlfWV4dHJhY3RGaWxlcygpe2xldCBlPVtdO2Zvcihjb25zdCByIG9mIEYuZW50cmllcyghMSkpZS5wdXNoKHIpO3JldHVybiBlfWV4dHJhY3RTaW5nbGVGaWxlKGUpe2Zvcihjb25zdCByIG9mIEYuZW50cmllcyghMCxlKSlpZihyLmZpbGVEYXRhKXJldHVybiByfWhhc0VuY3J5cHRlZERhdGEoKXtyZXR1cm4gRi5oYXNFbmNyeXB0ZWREYXRhKCl9dXNlUGFzc3dvcmQoZSl7Ri5zZXRQYXNzcGhyYXNlKGUpfXNldExvY2FsZShlKXtGLnNldExvY2FsZShlKX13cml0ZUFyY2hpdmUoZSxyLHQsbil7cmV0dXJuIEQud3JpdGUoZSxyLHQsbil9Y2xvc2UoKXtGLmNsb3NlKCl9fXZhciBDO0M9ZT0+e0Y9bmV3IHkoZSksRD1uZXcgRShlKSxBPy5yZWFkeUNhbGxiYWNrPy4oKSxNPSEwfSxrKG5ldyBTKS50aGVuKChlPT57ZS5pbml0RnVuY3Rpb25zKCksQyhlKX0pKSxpKEEpOwo=",""+(document.currentScript?.src||location.href)),{type:"module"})}static async getClient(t,r){var n;const i=((n=r.createClient)===null||n===void 0?void 0:n.call(r,t))||Cc(t);let{promise:a,resolve:l}=Promise.withResolvers();const o=await new i(Al((()=>{l()})));return await a,o}},eo._options={},Promise.withResolvers||(Promise.withResolvers=function(){var e,t,r=new this((function(n,i){e=n,t=i}));return{resolve:e,reject:t,promise:r}})})),Cu=Bt({default:()=>zu});async function zu(e,t,r,n){var i;const a=t.ownerDocument,l=a.defaultView||null,o=(i=n?.options)===null||i===void 0?void 0:i.archive,s=n?.filename||"archive.bin",h=o?.maxArchiveSize||Mc,f=o?.maxEntryPreviewSize||Oc,p=o?.cache!==!1,v=o?.workerTimeoutMs||Bc,m=[],g=[];let u=null,y=[],b=null,Z,I=!1;const w=kr(n?.options);let G=w("archive.loading.readingDirectory"),K=w("archive.loading.readingDirectoryHint"),F="",J="",R=null,X="";const P=qc(a),V=ae(a,"section","archive-shell archive-viewer"),k=ae(a,"aside","archive-sidebar"),c=ae(a,"div","archive-head"),_=ae(a,"span",void 0,"ARCHIVE"),Q=ae(a,"strong",void 0,s),Y=ae(a,"p");c.append(_,Q,Y);const q=ae(a,"div","archive-warning"),C=ae(a,"div","archive-info"),ee=ae(a,"input","archive-search");ee.type="search",ee.placeholder=w("archive.search.placeholder");const U=ae(a,"div","archive-list");U.setAttribute("role","list"),k.append(c,q,C,ee,U);const W=ae(a,"main","archive-preview"),$=ae(a,"div","archive-preview-toolbar"),j=ae(a,"div");j.append(ae(a,"span",void 0,w("archive.preview.title")),ae(a,"strong",void 0,w("archive.preview.chooseFile")));const M=ae(a,"button",void 0,w("archive.preview.downloadFile"));M.type="button",$.append(j,M);const ue=ae(a,"div","archive-nested-target");W.append($,ue),V.append(k,W);const fe=ae(a,"div","archive-state"),le=ae(a,"div"),se=ae(a,"span","archive-spinner"),be=ae(a,"div"),me=ae(a,"strong",void 0,G),Ze=ae(a,"p",void 0,K);be.append(me,Ze),le.append(se,be),fe.append(le),V.append(fe);const ge=ae(a,"div","archive-error"),d=ae(a,"strong",void 0,w("archive.error.title")),z=ae(a,"p");ge.append(d,z),V.append(ge),t.replaceChildren(P,V);const T=(B,re,ie)=>{B.addEventListener(re,ie),g.push(()=>B.removeEventListener(re,ie))},x=()=>{const B=y.reduce((ie,he)=>ie+he.size,0),re=y.filter(ie=>ie.previewable).length;return{count:y.length,totalSize:B,previewableCount:re}},S=()=>{const B=X.trim().toLowerCase();return(B?y.filter(re=>re.path.toLowerCase().includes(B)):y).slice(0,jc)},L=async()=>{await Et(Z),Z=void 0,ue.replaceChildren()},H=async()=>{var B;await((B=u?.close)===null||B===void 0?void 0:B.call(u)),u=null},N=()=>{const B=x();Y.textContent=w("archive.stats.summary",{count:B.count,size:Ne(B.totalSize),previewable:B.previewableCount}),q.textContent=w("archive.warning.encrypted"),q.classList.toggle("archive-hidden",!R),C.textContent=J,C.classList.toggle("archive-hidden",!J),fe.classList.toggle("archive-hidden",!I),me.textContent=G,Ze.textContent=K,ge.classList.toggle("archive-hidden",!F),z.textContent=F,M.hidden=!b;const re=j.querySelector("strong");re&&(re.textContent=b?.name||w("archive.preview.chooseFile"))},E=()=>{if(b||I||ue.childElementCount)return;const B=ae(a,"div","archive-empty");B.append(ae(a,"strong",void 0,w("archive.empty.title")),ae(a,"p",void 0,w("archive.empty.message"))),ue.replaceChildren(B)},D=()=>{U.replaceChildren(),S().forEach(B=>{const re=ae(a,"button","archive-entry");re.type="button",re.style.setProperty("--entry-depth",String(B.depth)),re.classList.toggle("active",b?.id===B.id);const ie=ae(a,"span","entry-ext",B.extension||"file"),he=ae(a,"span","entry-copy");he.append(ae(a,"strong",void 0,B.name),ae(a,"em",void 0,B.path)),re.append(ie,he,ae(a,"small",void 0,Ne(B.size))),re.addEventListener("click",()=>{Me(B)}),U.append(re)})},O=(B,re,ie)=>{I=B,re&&(G=re),ie&&(K=ie),N(),E()},A=B=>{F=B,N()},te=B=>{B.forEach(re=>re.terminate()),B.length=0},ce=async(B,re)=>{const ie=[],he=await lu(re,m),Dt=tu(a);try{B.init({getWorker:()=>{const Oe=new Dt(he,{type:"module"});return ie.push(Oe),Oe}}),O(!0,w("archive.loading.initializingCandidate",{label:re.label}),w("archive.loading.initializingCandidateHint"));const At=iu(a,e,s),Mt=await Xi(B.open(At),v,w("archive.error.candidateInitTimeout",{label:re.label}),l);return u=Mt,R=await Xi(Mt.hasEncryptedData(),v,w("archive.error.encryptedCheckTimeout",{label:re.label}),l).catch(()=>null),O(!0,w("archive.loading.readingDirectory"),w("archive.loading.directoryReadyHint")),y=Hl(await Xi(Mt.getFilesObject(),v,w("archive.error.candidateReadTimeout",{label:re.label}),l)).sort((Oe,Be)=>Oe.path.localeCompare(Be.path)),N(),D(),E(),!0}catch(At){throw u||te(ie),At}},oe=async()=>{O(!0,w("archive.loading.workerFallback"),w("archive.loading.workerFallbackHint"));const B=await Kc(e,s);return B?(y=B.sort((re,ie)=>re.path.localeCompare(ie.path)),R=null,J=w("archive.notice.workerFallback"),N(),D(),E(),!0):!1},we=async()=>{if(e.byteLength>h){A(w("archive.error.tooLarge",{size:Ne(e.byteLength),limit:Ne(h)}));return}O(!0,w("archive.loading.initializingWorker"),w("archive.loading.initializingWorkerHint")),A(""),J="";try{const[{Archive:B},re]=await Promise.all([Promise.resolve().then(()=>(Pu(),_u)),ou(a,o)]),ie=[];for(const he of re)try{await H(),await ce(B,he);return}catch(Dt){ie.push(`${he.label}: ${$c(Dt)}`)}if(await H(),await oe())return;throw new Error(ie.join("; ")||w("archive.error.workerInitFailed"))}catch(B){console.error(B),A(B instanceof Error?B.message:String(B))}finally{O(!1)}},Ae=async(B,re)=>{await L();const ie=ae(a,"div","archive-nested-content");ue.append(ie);const he=pc(n,B,o);Z=n?.renderNestedBuffer?await n.renderNestedBuffer(re,B.extension,ie,he):await to(re,B.extension,ie,he)},Se=async B=>{const re=mc(s,e.byteLength,B);if(p){const he=await Zc(re);if(he)return he.buffer}const ie=await(await B.compressedFile.extract()).arrayBuffer();return p&&await Vc({key:re,filename:B.name,size:ie.byteLength,updatedAt:Date.now(),buffer:ie}),ie};async function Me(B){if(b=B,D(),N(),B.size>f){A(w("archive.error.entryTooLarge",{name:B.name,size:Ne(B.size),limit:Ne(f)}));return}O(!0,w("archive.loading.extracting",{name:B.name})),A("");try{const re=await Se(B);O(!0,w("archive.loading.rendering",{name:B.name})),await Ae(B,re)}catch(re){console.error(re),A(re instanceof Error?re.message:String(re))}finally{O(!1)}}const pe=async B=>{O(!0,w("archive.loading.exporting",{name:B.name}));try{const re=await Se(B),ie=URL.createObjectURL(new Blob([re]));m.push(ie);const he=a.createElement("a");he.href=ie,he.download=B.name,a.body.append(he),he.click(),he.remove()}finally{O(!1)}};return T(ee,"input",()=>{X=ee.value,D()}),T(M,"click",()=>{b&&pe(b)}),N(),E(),we(),{$el:V,async unmount(){g.splice(0).forEach(B=>B()),await L(),await H(),m.forEach(B=>URL.revokeObjectURL(B)),t.replaceChildren()}}}var Mc,Oc,Bc,jc,Qc,qc,ae,$c,Xi,eu,tu,ru,iu,nu,au,lu,ou,to,Yu=ne((()=>{Zo(),Zi(),bc(),Uu(),Ku(),Mc=320*1024*1024,Oc=64*1024*1024,Bc=3e4,jc=5e3,Qc=`
|
|
322
|
+
.archive-shell,.archive-viewer{position:relative;box-sizing:border-box;height:100%;min-height:0;display:grid;grid-template-columns:minmax(280px,34%) minmax(0,1fr);background:#edf2f7;color:#172033;font-family:Aptos,'Segoe UI','PingFang SC','Microsoft YaHei',sans-serif}
|
|
323
|
+
.archive-shell *,.archive-viewer *{box-sizing:border-box}
|
|
324
|
+
.archive-sidebar{min-width:0;min-height:0;display:flex;flex-direction:column;gap:12px;padding:16px;border-right:1px solid rgba(23,32,51,.08);background:rgba(255,255,255,.72)}
|
|
325
|
+
.archive-head span,.archive-preview-toolbar span{color:#6c7c90;font-size:12px;font-weight:800;letter-spacing:0}
|
|
326
|
+
.archive-head strong,.archive-preview-toolbar strong{display:block;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:18px;line-height:1.25}
|
|
327
|
+
.archive-head p{margin:8px 0 0;color:#69798b;font-size:13px}
|
|
328
|
+
.archive-warning,.archive-info,.archive-error{border-radius:12px;padding:10px 12px;background:#fff7e8;color:#8a4b00;font-size:13px;line-height:1.5}
|
|
329
|
+
.archive-info{background:#ecfdf5;color:#166534}
|
|
330
|
+
.archive-search{width:100%;height:42px;padding:0 12px;border-radius:12px;border:1px solid rgba(23,32,51,.1);outline:none;background:#fff;color:#172033;font:inherit}
|
|
331
|
+
.archive-list{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:7px;padding-right:4px}
|
|
332
|
+
.archive-entry{width:100%;min-height:58px;display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 10px 8px calc(10px + var(--entry-depth,0) * 10px);border:1px solid rgba(23,32,51,.07);border-radius:12px;background:rgba(255,255,255,.86);color:inherit;text-align:left;cursor:pointer;font:inherit}
|
|
333
|
+
.archive-entry:hover,.archive-entry.active{border-color:rgba(33,129,95,.28);box-shadow:0 10px 22px rgba(23,32,51,.08)}
|
|
334
|
+
.entry-ext{height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;background:rgba(33,129,95,.12);color:#1d7a56;font-size:11px;font-weight:900;text-transform:uppercase}
|
|
335
|
+
.entry-copy{min-width:0}
|
|
336
|
+
.entry-copy strong,.entry-copy em{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
337
|
+
.entry-copy em,.archive-entry small{color:#718096;font-size:12px;font-style:normal}
|
|
338
|
+
.archive-preview{min-width:0;min-height:0;display:flex;flex-direction:column}
|
|
339
|
+
.archive-preview-toolbar{min-height:64px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 16px;border-bottom:1px solid rgba(23,32,51,.08);background:rgba(255,255,255,.76)}
|
|
340
|
+
.archive-preview-toolbar button{height:34px;border:0;border-radius:10px;padding:0 12px;background:#1f7a58;color:#fff;font:inherit;font-size:13px;font-weight:800;cursor:pointer}
|
|
341
|
+
.archive-nested-target{position:relative;flex:1;min-height:0;overflow:auto}
|
|
342
|
+
.archive-nested-content{width:100%;height:100%;min-height:420px}
|
|
343
|
+
.archive-empty{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px;text-align:center;color:#64748b}
|
|
344
|
+
.archive-empty strong{color:#172033;font-size:18px}
|
|
345
|
+
.archive-state{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(241,245,249,.82);backdrop-filter:blur(8px);z-index:4}
|
|
346
|
+
.archive-state>div{display:flex;align-items:center;gap:14px;width:min(92%,430px);padding:18px;border-radius:16px;background:#fff;box-shadow:0 18px 42px rgba(15,23,42,.14)}
|
|
347
|
+
.archive-state p{margin:4px 0 0;color:#64748b}
|
|
348
|
+
.archive-spinner{width:34px;height:34px;flex-shrink:0;border-radius:999px;border:3px solid rgba(31,122,88,.16);border-top-color:#1f7a58;animation:archive-spin .9s linear infinite}
|
|
349
|
+
.archive-error{position:absolute;right:18px;bottom:18px;width:min(460px,calc(100% - 36px));box-shadow:0 16px 36px rgba(23,32,51,.14);z-index:5}
|
|
350
|
+
.archive-hidden{display:none!important}
|
|
351
|
+
.file-viewer[data-viewer-theme='dark'] .archive-shell,.file-viewer[data-viewer-theme='dark'] .archive-viewer{background:#101820;color:#e6edf3}
|
|
352
|
+
.file-viewer[data-viewer-theme='dark'] .archive-sidebar,.file-viewer[data-viewer-theme='dark'] .archive-preview-toolbar{border-color:rgba(139,148,158,.2);background:rgba(21,27,35,.82)}
|
|
353
|
+
.file-viewer[data-viewer-theme='dark'] .archive-entry,.file-viewer[data-viewer-theme='dark'] .archive-search,.file-viewer[data-viewer-theme='dark'] .archive-state>div{background:#151b23;color:#e6edf3;border-color:rgba(139,148,158,.2)}
|
|
354
|
+
.file-viewer[data-viewer-theme='dark'] .archive-empty strong{color:#f8fafc}
|
|
355
|
+
@media (prefers-color-scheme:dark){.file-viewer[data-viewer-theme='system'] .archive-shell,.file-viewer[data-viewer-theme='system'] .archive-viewer{background:#101820;color:#e6edf3}.file-viewer[data-viewer-theme='system'] .archive-sidebar,.file-viewer[data-viewer-theme='system'] .archive-preview-toolbar{border-color:rgba(139,148,158,.2);background:rgba(21,27,35,.82)}.file-viewer[data-viewer-theme='system'] .archive-entry,.file-viewer[data-viewer-theme='system'] .archive-search,.file-viewer[data-viewer-theme='system'] .archive-state>div{background:#151b23;color:#e6edf3;border-color:rgba(139,148,158,.2)}.file-viewer[data-viewer-theme='system'] .archive-empty strong{color:#f8fafc}}
|
|
356
|
+
@keyframes archive-spin{to{transform:rotate(360deg)}}
|
|
357
|
+
@media (max-width:860px){.archive-shell,.archive-viewer{grid-template-columns:1fr;grid-template-rows:minmax(220px,38%) minmax(0,1fr)}.archive-sidebar{border-right:0;border-bottom:1px solid rgba(23,32,51,.08)}}
|
|
358
|
+
`,qc=e=>{const t=e.createElement("style");return t.textContent=Qc,t},ae=(e,t,r,n)=>{const i=e.createElement(t);return r&&(i.className=r),n!==void 0&&(i.textContent=n),i},$c=e=>e instanceof Error?e.message:typeof e=="string"?e:JSON.stringify(e),Xi=async(e,t,r,n)=>{let i=0;const a=n||(typeof window<"u"?window:void 0);try{return await Promise.race([e,new Promise((l,o)=>{i=a?.setTimeout?a.setTimeout(()=>o(new Error(r)),t):setTimeout(()=>o(new Error(r)),t)})])}finally{a?.clearTimeout?a.clearTimeout(i):clearTimeout(i)}},eu=e=>e.baseURI||e.URL||"http://localhost/",tu=e=>{var t;const r=((t=e.defaultView)===null||t===void 0?void 0:t.Worker)||(typeof Worker<"u"?Worker:void 0);if(!r)throw new Error("Web Worker is not supported by this browser.");return r},ru=e=>{var t;return((t=e.defaultView)===null||t===void 0?void 0:t.File)||(typeof File<"u"?File:void 0)},iu=(e,t,r)=>{const n=ru(e);return n?new n([t],r||"archive.bin",{type:"application/octet-stream"}):Object.assign(new Blob([t],{type:"application/octet-stream"}),{name:r||"archive.bin"})},nu=async e=>{try{const t=await fetch(e,{method:"HEAD",cache:"no-cache"}),r=t.headers.get("content-type")||"";if(t.ok&&/javascript|ecmascript|octet-stream/i.test(r))return!0;if(t.status&&t.status!==405)return!1}catch{}try{const t=await fetch(e,{method:"GET",cache:"no-cache",headers:{Range:"bytes=0-0"}}),r=t.headers.get("content-type")||"";return t.ok&&/javascript|ecmascript|octet-stream/i.test(r)}catch{return!1}},au=(e,t)=>{const r=JSON.stringify(t);return e.replace(/new URL\((['"])libarchive\.wasm\1\s*,\s*import\.meta\.url\)\.href/g,r)},lu=async(e,t)=>{if(!e.wasmUrl)return e.workerUrl;const r=await fetch(e.workerUrl,{cache:"no-cache"});if(!r.ok)throw new Error(`Unable to read libarchive Worker: ${r.status}`);const n=await r.text(),i=URL.createObjectURL(new Blob([au(n,e.wasmUrl)],{type:"application/javascript"}));return t.push(i),i},ou=async(e,t)=>{const r=[],n=eu(e),i=t?.wasmUrl?Ui(t,""):void 0;if(t?.workerUrl)return r.push({label:"custom libarchive Worker",workerUrl:ur(t,n),wasmUrl:i}),r;const a=ur(void 0,n);return await nu(a)&&r.push({label:"static libarchive Worker",workerUrl:a,wasmUrl:i}),r},to=async(e,t,r,n)=>{const i=kr(n?.options),{fileViewerCoreRendererDispatcher:a}=await Promise.resolve().then(()=>(Zi(),Eu)),l=a.resolve(t);if(!l){r.textContent=i("archive.error.nestedUnsupported",{type:t});return}return l(e,r,t,{...n,renderNestedBuffer:n?.renderNestedBuffer||to})}}));Zi();var su=Re.find(e=>e.id==="archive");if(!su)throw new Error("@file-viewer/renderer-archive could not locate the shared archive format definition.");var du=su,Hu=(e,t,r,n)=>Promise.resolve().then(()=>(Yu(),Cu)).then(({default:i})=>i(e,t,r,n)),ro={id:"file-viewer-renderer-archive",label:"Flyfish File Viewer archive renderer",definitions:[du],handlers:[{rendererId:du.id,handler:Hu}]},cu=globalThis,uu=cu.FlyfishFileViewerWebFullRenderers||(cu.FlyfishFileViewerWebFullRenderers={});uu.archive=ro,uu[ro.id]=ro})();
|