@file-viewer/web-full 2.1.6 → 2.1.8
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/assets/pptx.worker-BZNcmFr3.js +20174 -0
- package/dist/flyfish-file-viewer-web-full.iife.js +3 -3
- package/dist/flyfish-viewer-manifest.json +1 -1
- package/dist/renderers/archive.iife.js +37 -320
- package/dist/renderers/cad.iife.js +9 -9
- package/dist/renderers/data.iife.js +1 -1
- package/dist/renderers/drawing.iife.js +1 -1
- package/dist/renderers/ebook.iife.js +9 -9
- package/dist/renderers/eda.iife.js +16 -16
- package/dist/renderers/email.iife.js +15 -15
- package/dist/renderers/geo.iife.js +1 -1
- package/dist/renderers/image.iife.js +1 -1
- package/dist/renderers/media.iife.js +15 -15
- package/dist/renderers/mindmap.iife.js +11 -11
- package/dist/renderers/model.iife.js +36 -36
- package/dist/renderers/ofd.iife.js +8 -8
- package/dist/renderers/pdf.iife.js +92 -38
- package/dist/renderers/presentation.iife.js +3 -3
- package/dist/renderers/spreadsheet.iife.js +1 -1
- package/dist/renderers/text.iife.js +39 -39
- package/dist/renderers/typst.iife.js +7 -7
- package/dist/renderers/word.iife.js +18 -18
- package/package.json +23 -23
|
@@ -1,312 +1,4 @@
|
|
|
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=`
|
|
1
|
+
(function(){var La=Object.create,et=Object.defineProperty,Va=Object.getOwnPropertyDescriptor,Ra=Object.getOwnPropertyNames,ka=Object.getPrototypeOf,Ka=Object.prototype.hasOwnProperty,le=(e,n)=>()=>(e&&(n=e(e=0)),n),Ua=(e,n)=>()=>(n||(e((n={exports:{}}).exports,n),e=null),n.exports),xt=(e,n)=>{let t={};for(var c in e)et(t,c,{get:e[c],enumerable:!0});return n||et(t,Symbol.toStringTag,{value:"Module"}),t},Ya=(e,n,t,c)=>{if(n&&typeof n=="object"||typeof n=="function")for(var s=Ra(n),r=0,l=s.length,a;r<l;r++)a=s[r],!Ka.call(e,a)&&a!==t&&et(e,a,{get:(u=>n[u]).bind(null,a),enumerable:!(c=Va(n,a))||c.enumerable});return e},za=(e,n,t)=>(t=e!=null?La(ka(e)):{},Ya(n||!e||!e.__esModule?et(t,"default",{value:e,enumerable:!0}):t,e)),gi,vi,St,Wt,Gi,Ta=le((()=>{gi="vendor/libarchive/worker-bundle.js",vi="http://localhost/",St=(e,n,t={})=>{const c=e?String(e):n,s=t.documentBaseUrl||vi,r=t.baseUrl?t.baseUrl.endsWith("/")?t.baseUrl:`${t.baseUrl}/`:s,l=t.baseUrl?new URL(r,s).href:r,a=new URL(c,l).href;return t.trimTrailingSlash?a.replace(/\/+$/,""):a},Wt=(e,n)=>St(e?.workerUrl,gi,{baseUrl:n}),Gi=(e,n="")=>e?.wasmUrl?St(e.wasmUrl,n||e.wasmUrl):n})),Xi=le((()=>{Ta()})),It,Lt,Vt,Rt,Ie,wi,ke=le((()=>{It=["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"],Lt=["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"],Vt=["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"],Rt=["gif","jpg","jpeg","bmp","tiff","tif","png","svg","webp","avif","ico","heic","heif","jxl"],Ie=[{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:It,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:Lt,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:Rt,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:Vt,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}}],wi=Object.freeze(Array.from(new Set(Ie.flatMap(e=>e.extensions))).sort())})),Fa,Ja,Ca=le((()=>{Fa=["[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(","),Ja=[".viewer-actions",".viewer-watermark",".state-panel",".pdf-toolbar",".pdf-nav-pane",".flyfish-search-match"].join(",")})),kt,xi,Si,Pa=le((()=>{kt=new WeakMap,xi=(e,n)=>{kt.set(e,n),e.dataset.viewerZoomProvider=e.dataset.viewerZoomProvider||"custom",e.__flyfishViewerZoomProvider=n},Si=e=>{e&&(kt.delete(e),delete e.dataset.viewerZoomProvider,delete e.__flyfishViewerZoomProvider)}})),Me=le((()=>{Ca(),Pa()})),Ha,Wi=le((()=>{Me(),Ha=["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(",")})),Ii=le((()=>{Me(),Wi()})),Li,Kt=le((()=>{Me(),Li=()=>{const e=new Set;return{emit(){e.forEach(n=>n())},subscribe(n){return e.add(n),()=>{e.delete(n)}}}}})),Ut,Ge,Vi,Ri,ki,Ki,Ui,Yi,tt=le((()=>{Ut="preview.bin",Ge=e=>e.trim().replace(/^\./,"").toLowerCase(),Vi=e=>{try{return decodeURIComponent(e)}catch{return e}},Ri=e=>{const n=e.split(/[?#]/)[0]||e,t=n.lastIndexOf(".");return t===-1?"":Ge(n.slice(t+1))},ki=(e,n=Ut)=>{const t=(e||"").split(/[?#]/)[0].trim();if(!t)return n;const c=Math.max(t.lastIndexOf("/"),t.lastIndexOf("\\"));return Vi(c===-1?t:t.slice(c+1))},Ki=e=>e.file?"file":e.buffer?"buffer":e.url?"url":"empty",Ui=e=>e&&"name"in e&&typeof e.name=="string"?e.name:void 0,Yi=e=>{const n=Ki(e),t=ki(e.filename||Ui(e.file)||e.url,e.type?`preview.${Ge(e.type)}`:Ut),c=Ge(e.type||Ri(t)),s=typeof e.size=="number"?e.size:e.file?e.file.size:e.buffer?e.buffer.byteLength:void 0;return{kind:n,filename:t,extension:c,url:e.url,file:e.file,buffer:e.buffer,size:s}}})),Na,zi,Ti,Yt,Fi,Ji,Ci,zt,Pi,Ve,Tt,Te=le((()=>{Na="zh-CN",zi={"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.sidebar.hide":"隐藏压缩包文件列表","archive.sidebar.show":"显示压缩包文件列表","archive.preview.title":"压缩包内预览","archive.preview.chooseFile":"请选择一个文件","archive.preview.downloadFile":"下载文件","archive.error.title":"压缩包预览提示","archive.stats.summary":"{count} 个文件 · {size} · {previewable} 个可直接预览","archive.warning.encrypted":"检测到加密内容,输入正确密码后即可预览;密码仅在当前会话中传递给 libarchive Worker。","archive.password.title":"请输入压缩包密码","archive.password.description":"该压缩包包含加密内容,需要密码才能继续读取目录或预览内部文件。","archive.password.placeholder":"压缩包密码","archive.password.invalid":"密码不正确或无法解密,请重新输入。","archive.password.required":"请输入密码后继续。","archive.password.cancel":"取消","archive.password.confirm":"解锁预览","archive.error.passwordRequired":"已取消输入密码,无法预览加密压缩包。","archive.error.encryptedRequiresWorker":"该压缩包包含加密内容,需要发布 libarchive Worker/WASM 后才能在线解密预览。","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":"正在准备音频资源和播放控件。"},Ti={"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.sidebar.hide":"Hide archive file list","archive.sidebar.show":"Show archive file list","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. Enter the correct password to preview it; the password is passed only to the libarchive Worker for this session.","archive.password.title":"Enter archive password","archive.password.description":"This archive contains encrypted content. A password is required to read the directory or preview entries.","archive.password.placeholder":"Archive password","archive.password.invalid":"The password is incorrect or the entry could not be decrypted. Try again.","archive.password.required":"Enter a password to continue.","archive.password.cancel":"Cancel","archive.password.confirm":"Unlock preview","archive.error.passwordRequired":"Password entry was cancelled, so the encrypted archive cannot be previewed.","archive.error.encryptedRequiresWorker":"This archive contains encrypted content and requires the libarchive Worker/WASM assets for online decryption.","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."},Yt=Object.freeze({"zh-CN":zi,"en-US":Ti}),Fi=()=>{var e;if(!(typeof navigator>"u"))return((e=navigator.languages)===null||e===void 0?void 0:e[0])||navigator.language},Ji=e=>{const n=!e||e==="auto"?Fi():e;return String(n||"zh-CN").toLowerCase().startsWith("zh")?"zh-CN":"en-US"},Ci=e=>{var n;return((n=e?.i18n)===null||n===void 0?void 0:n.messages)||e?.messages},zt=e=>{var n;return Ji(((n=e?.i18n)===null||n===void 0?void 0:n.locale)||e?.locale)},Pi=(e,n={})=>e.replace(/\{([a-zA-Z0-9_.-]+)\}/g,(t,c)=>{const s=n[c];return s==null?"":String(s)}),Ve=(e,n,t={})=>{const c=zt(e),s=Ci(e);return Pi((typeof s=="function"?s(n,t,c):s?.[n])||Yt[c][n]||Yt["zh-CN"][n],t)},Tt=e=>(n,t)=>Ve(e,n,t)})),Ft=le((()=>{Te()})),it,Jt,Hi,_e,Ni,rt,Ei,Mi,at,_i,nt=le((()=>{ke(),tt(),it="__flyfish_file_viewer_auto_renderer_presets__",Jt=()=>{const e=globalThis;return e[it]||(e[it]={version:0,presets:new Map}),e[it]},Hi=e=>({...e,extensions:e.extensions.map(Ge)}),_e=(e=Ie)=>{const n=new Map,t=new Map,c=s=>{const r=Hi(s),l=n.get(r.id);l&&l.extensions.forEach(a=>{var u;((u=t.get(a))===null||u===void 0?void 0:u.id)===l.id&&t.delete(a)}),n.set(r.id,r),r.extensions.forEach(a=>{const u=t.get(a);if(u&&u.id!==r.id)throw new Error(`File extension "${a}" is already registered by renderer "${u.id}".`);t.set(a,r)})};return e.forEach(c),{register:c,unregister(s){const r=n.get(s);return r?(r.extensions.forEach(l=>{var a;((a=t.get(l))===null||a===void 0?void 0:a.id)===s&&t.delete(l)}),n.delete(s),!0):!1},getById(s){return n.get(s)},getByExtension(s){return t.get(Ge(s))},hasExtension(s){return t.has(Ge(s))},list(){return Array.from(n.values())},listExtensions(){return Array.from(t.keys()).sort()}}},Ni=e=>!!e&&typeof e=="object"&&!Array.isArray(e)&&Array.isArray(e.renderers),rt=e=>e?Array.isArray(e)?e.flatMap(n=>rt(n)):Ni(e)?rt(e.renderers):[e]:[],Ei=()=>Array.from(Jt().presets.values()).map(e=>e.input),Mi=e=>{var n;const t=Jt(),c=t.presets.get(e);if(c)return c.input;const s=e.startsWith("@file-viewer/preset-")?e:`@file-viewer/preset-${e}`;return(n=Array.from(t.presets.values()).find(r=>r.packageName===s||r.id===s))===null||n===void 0?void 0:n.input},at=e=>{if(!e)return[];if(typeof e=="string"){const n=Mi(e);return n?[n]:[]}return Array.isArray(e)?e.flatMap(n=>at(n)):[e]},_i=async({registry:e,plugins:n,registerHandler:t})=>{var c,s,r;for(const l of n)(c=l.definitions)===null||c===void 0||c.forEach(a=>{e.register(a)}),(s=l.handlers)===null||s===void 0||s.forEach(a=>{t?.(a)}),await((r=l.install)===null||r===void 0?void 0:r.call(l,{registry:e,registerHandler:t}));return e}})),Ct,Pt=le((()=>{ke(),nt(),tt(),Ct=({registry:e=_e(Ie),handlers:n,fallbackHandler:t,fallbackKey:c="error"})=>{const s=Array.from(n).reduce((u,g)=>(u.set(g.rendererId,g.handler),u),new Map),r=new Map,l=[];e.list().forEach(u=>{const g=s.get(u.id);if(!g){l.push(u.id);return}u.extensions.forEach(w=>{r.set(Ge(w),g)})}),t&&c&&r.set(Ge(c),t);const a=u=>r.get(Ge(u));return{handlersByRendererId:s,handlersByExtension:r,missingRendererIds:l,get:a,resolve(u){return a(u)||(c?a(c):void 0)},has(u){return r.has(Ge(u))},listExtensions(){return Array.from(r.keys()).sort()}}}})),Ea,Ma,_a,Ht=le((()=>{ke(),Ea=Object.freeze({download:!1,print:!1,exportHtml:!1,zoom:!1,zoomIn:!1,zoomOut:!1,zoomReset:!1}),Ma=["pptx","pptm","potx","potm","ppsx","ppsm","ofd","dxf","dwg","dwf","dwfx","xps","excalidraw","drawio","dio","mermaid","mmd","plantuml","puml","umd","md","markdown","olb","dra",...Vt,...Rt],_a=["xlsx","xltx","xlsm","xlsb","xls","xlt","xltm","csv","ods","fods","numbers",...It,"eml","msg","epub","mp4","mp3","mpeg","wav","ogg","oga","opus","m4a","aac","flac","weba",...Lt]})),Be=le((()=>{Ht(),Te(),Ft()})),Ba,Nt,Bi,ji,Di,Oi,Ai,Qi,qi,Et,$i,ot=le((()=>{tt(),ke(),Te(),Ba=Object.freeze({downloading:"正在下载文件资源...",streamingPdf:"正在建立 PDF 流式预览...",reading:"正在解析文件内容..."}),Nt=Object.freeze({accent:"#5f6f82",soft:"rgba(95, 111, 130, 0.12)",badge:"DOC",label:"文件内容",hint:"正在整理内容结构并生成预览。"}),Bi=e=>{const n=Ge(e);return n?`.${n}`:"当前"},ji={"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"},Di=new Set(["office-word-openxml","office-word-binary","office-presentation","open-document","spreadsheet-openxml","pdf","ofd"]),Oi=new Set(["image","markdown","code","video","audio"]),Ai=new Set(["typst","archive","eda","cad","model","geo","drawing","mindmap","data-asset"]),Qi=e=>Di.has(e.id)?{packageName:"@file-viewer/preset-office",vitePreset:"office",label:"Office preset"}:Ai.has(e.id)?{packageName:"@file-viewer/preset-engineering",vitePreset:"engineering",label:"Engineering preset"}:Oi.has(e.id)?{packageName:"@file-viewer/preset-lite",vitePreset:"lite",label:"Lite preset"}:{packageName:"@file-viewer/preset-all",vitePreset:"all",label:"Full preset"},qi=(e="")=>{const n=Ge(e),t=Ie.find(s=>s.extensions.map(Ge).includes(n));if(!t)return null;const c=Qi(t);return{extension:n,rendererId:t.id,rendererLabel:t.label,rendererCategory:t.category,rendererPackage:ji[t.id],presetPackage:c.packageName,vitePreset:c.vitePreset,presetLabel:c.label}},Et=({state:e,extension:n="",title:t,message:c,description:s,theme:r=Nt,recoverable:l})=>({state:e,extension:Ge(n),title:t,message:c,description:s,theme:r,recoverable:l}),$i=(e="",n=Nt,t)=>{const c=Bi(e),s=qi(e);if(s){const r=zt(t),l=s.rendererPackage?r==="zh-CN"?`;如果需要极致裁剪,也可以只安装 ${s.rendererPackage}`:`; for a strict custom cut, install only ${s.rendererPackage}`:"";return Et({state:"unsupported",extension:e,title:Ve(t,"state.unsupported.install.title"),message:Ve(t,"state.unsupported.install.message",{extension:c,rendererLabel:s.rendererLabel}),description:Ve(t,"state.unsupported.install.description",{extension:c,rendererLabel:s.rendererLabel,presetPackage:s.presetPackage,vitePreset:s.vitePreset,rendererTip:l}),theme:n,recoverable:!0})}return Et({state:"unsupported",extension:e,title:Ve(t,"state.unsupported.title"),message:Ve(t,"state.unsupported.message",{extension:c}),description:Ve(t,"state.unsupported.description"),theme:n,recoverable:!0})}})),st=le((()=>{Be(),ot(),Te()})),er,lt,tr,Mt,ir,_t=le((()=>{ke(),Pt(),nt(),st(),er=(e,n)=>({rendered:e,destroy:()=>n?n():lt(e)}),lt=e=>{if(!e||typeof e!="object")return;const n=e;if(typeof n.unmount=="function")return n.unmount();if(typeof n.$destroy=="function")return n.$destroy();if(typeof n.destroy=="function")return n.destroy()},tr=({source:e,options:n,registerExportAdapter:t,renderContext:c})=>({filename:e.filename,url:e.url,streamUrl:e.url,options:n,registerExportAdapter:t,...c}),Mt=({handler:e,getTarget:n=s=>s.surface.container,createContext:t=tr,destroy:c})=>async s=>{const{source:r}=s;if(!r.buffer)throw new Error("FileRenderHandler renderer requires an ArrayBuffer source.");const l=n(s),a=await e(r.buffer,l,r.extension,t(s));return er(a,()=>c?c(a,s):lt(a))},ir=({definitions:e=Ie,handlers:n,getTarget:t,createContext:c,destroy:s})=>{const r=_e(e),l=Ct({registry:r,handlers:n});return{registry:_e(r.list().map(a=>{const u=l.handlersByRendererId.get(a.id);return u?{...a,load:Mt({handler:u,getTarget:t,createContext:c,destroy:s})}:a})),dispatcher:l,missingRendererIds:l.missingRendererIds}}})),ja=xt({default:()=>Da});async function Da(e,n,t){const c=await lr(e,t);let s=1,r=0;const l=Li(),a=document.createElement("div");a.className="image-viewer",a.dataset.viewerZoomProvider="image";const u=document.createElement("div");u.className="image-stage";const g=document.createElement("img");g.alt="图片",g.src=c,u.append(g),a.append(u);const w=cr(c),v=()=>w.open();g.addEventListener("click",v),document.body.append(w.element);const X=()=>{r=a.clientHeight||0,Bt(g,r,s),l.emit()},m=new ResizeObserver(X);m.observe(a);const Z=()=>({scale:s,label:`${Math.round(s*100)}%`,canZoomIn:s<5,canZoomOut:s>.1,canReset:s!==1,minScale:.1,maxScale:5}),d=b=>(s=dr(b),Bt(g,r,s),l.emit(),Z());return xi(a,{zoomIn:()=>d(s+.15),zoomOut:()=>d(s-.15),resetZoom:()=>d(1),setZoom:d,getState:Z,subscribe:l.subscribe}),n.replaceChildren(nr(),a),X(),{$el:n,unmount(){Si(a),m.disconnect(),g.removeEventListener("click",v),w.destroy(),n.replaceChildren()}}}var rr,ar,nr,or,sr,lr,dr,Bt,cr,Oa=le((()=>{Me(),Kt(),rr={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"},ar=`
|
|
310
2
|
.image-viewer{position:relative;width:100%;height:100%;overflow:auto;background:#eef1f4;box-sizing:border-box}
|
|
311
3
|
.image-stage{min-width:100%;min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px;box-sizing:border-box}
|
|
312
4
|
.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}
|
|
@@ -317,27 +9,38 @@
|
|
|
317
9
|
.file-viewer[data-viewer-theme='dark'] .image-viewer{background:#101820}
|
|
318
10
|
@media (prefers-color-scheme:dark){.file-viewer[data-viewer-theme='system'] .image-viewer{background:#101820}}
|
|
319
11
|
@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}
|
|
12
|
+
`,nr=()=>{const e=document.createElement("style");return e.textContent=ar,e},or=e=>rr[(e||"").trim().toLowerCase()]||"image/*",sr=async e=>await new Promise((n,t)=>{const c=new FileReader;c.onload=s=>{var r;const l=(r=s.target)===null||r===void 0?void 0:r.result;if(typeof l=="string"){n(l);return}t(new Error("Unable to read image data URL."))},c.onerror=()=>t(c.error||new Error("Unable to read image data URL.")),c.readAsDataURL(e)}),lr=async(e,n)=>{const t=(n||"").trim().toLowerCase();if(t==="heic"||t==="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 sr(new Blob([e],{type:or(t)}))},dr=e=>Math.min(5,Math.max(.1,Number(e.toFixed(2)))),Bt=(e,n,t)=>{if(n>0){e.style.height=`${Math.max(1,Math.round(n*t))}px`;return}e.style.height=`${t*100}%`},cr=e=>{const n=document.createElement("div");n.className="image-lightbox",n.hidden=!0,n.setAttribute("role","dialog"),n.setAttribute("aria-modal","true");const t=document.createElement("img");t.alt="Preview image",t.src=e;const c=document.createElement("button");c.type="button",c.setAttribute("aria-label","Close image preview"),c.textContent="x";const s=()=>{n.hidden=!0};return c.addEventListener("click",s),t.addEventListener("click",s),n.addEventListener("click",r=>{r.target===n&&s()}),n.append(t,c),{element:n,open(){n.hidden=!1},destroy(){c.removeEventListener("click",s),t.removeEventListener("click",s),n.remove()}}}})),ur,dt,jt,mr,hr,pr,br,yr,Dt,ct,Aa,Qa,qa,fr=le((()=>{ke(),_t(),Pt(),ot(),ur=e=>({$el:e,unmount(){}}),dt=[{rendererId:"image",handler:async(e,n,t)=>{const{default:c}=await Promise.resolve().then(()=>(Oa(),ja));return c(e,n,t)}}],jt=["image"],mr=dt.filter(e=>jt.includes(e.rendererId)),hr=Ie.filter(e=>jt.includes(e.id)),pr=e=>e==="none"?[]:e==="lite"?hr:Ie,br=e=>e==="none"?[]:e==="lite"?mr:dt,yr=async(e,n,t)=>{const c=$i(t),s=document.createElement("div");s.style.textAlign="center",s.style.marginTop="80px";const r=document.createElement("div");if(r.textContent=c.message,s.appendChild(r),c.description){const l=document.createElement("div");l.textContent=c.description,s.appendChild(l)}return n.replaceChildren(s),ur(n)},Dt=(e={})=>{const n=e.builtinRenderers||"all",t=ir({definitions:pr(n),handlers:br(n)});return{...t,dispatcher:Ct({registry:t.registry,handlers:dt,fallbackHandler:yr})}},ct=Dt(),Aa=ct.registry,Qa=ct.dispatcher,qa=ct.missingRendererIds})),$a=le((()=>{Te()})),en=le((()=>{Be(),st()})),tn=le((()=>{Be()})),rn=le((()=>{Ii(),Kt(),Ft(),Ht(),Be(),nt(),_t(),fr(),st(),ot()})),Ot=le((()=>{Xi(),ke(),Wi(),Ii(),Kt(),Me(),Ft(),Te(),nt(),fr(),Ht(),Be(),$a(),en(),tn(),Pt(),_t(),tt(),ot(),st(),rn()})),Zr,je,gr,ut,At,Ke,vr,Qt,Gr,Xr,wr,xr=le((()=>{Ot(),Zr=wi,je=e=>{const n=e.split(/[?#]/)[0]||e,t=n.lastIndexOf(".");return t===-1?"":n.slice(t+1).toLowerCase()},gr=new Set([".ds_store","desktop.ini","thumbs.db"]),ut=e=>{var n;const t=e.replace(/^\/+/,"").replace(/\\/g,"/").split("/").filter(Boolean),c=((n=t[t.length-1])===null||n===void 0?void 0:n.toLowerCase())||"";return t.some(s=>s==="__MACOSX"||s.startsWith("._"))||gr.has(c)},At=e=>{const n=je(e);return Zr.includes(n)},Ke=e=>{if(!Number.isFinite(e)||e<0)return"-";if(e<1024)return`${e} B`;const n=["KB","MB","GB"];let t=e/1024;for(const c of n){if(t<1024||c===n[n.length-1])return`${t.toFixed(t<10?1:0)} ${c}`;t/=1024}return`${e} B`},vr=e=>typeof e=="object"&&e!==null&&"extract"in e&&typeof e.extract=="function",Qt=(e,n="")=>{const t=[];return Object.entries(e).forEach(([c,s])=>{const r=n?`${n}/${c}`:c;if(!ut(r)){if(vr(s)){const l=s.name||c,a=je(l);t.push({id:r,path:r,name:l,extension:a,size:s.size||0,lastModified:s.lastModified,depth:r.split("/").length-1,previewable:At(l),compressedFile:s});return}s&&typeof s=="object"&&t.push(...Qt(s,r))}}),t},Gr=(e,n,t)=>["archive-entry",e||"archive",n,t.path,t.size,t.lastModified||0].join(":"),Xr=(e,n)=>({...e?.options||{},archive:n}),wr=(e,n,t)=>({...e,filename:n.name,url:void 0,streamUrl:void 0,options:Xr(e,t)})})),Sr,Ue,Wr,Ir,Lr,De,Vr,qt,$t,Rr,kr,Kr,an=le((()=>{Sr="flyfish-file-viewer-cache",Ue="archiveEntries",Wr=1,Ir=24*1024*1024,Lr=96*1024*1024,De=null,Vr=()=>typeof indexedDB<"u",qt=()=>Vr()?De||(De=new Promise((e,n)=>{const t=indexedDB.open(Sr,Wr);t.onupgradeneeded=()=>{const c=t.result;c.objectStoreNames.contains(Ue)||c.createObjectStore(Ue,{keyPath:"key"}).createIndex("updatedAt","updatedAt")},t.onsuccess=()=>e(t.result),t.onerror=()=>n(t.error)}),De):Promise.reject(new Error("IndexedDB 不可用")),$t=async(e,n)=>{const t=await qt();return new Promise((c,s)=>{const r=t.transaction(Ue,e),l=n(r.objectStore(Ue));l.onsuccess=()=>c(l.result),l.onerror=()=>s(l.error),r.onerror=()=>s(r.error)})},Rr=async e=>{try{return await $t("readonly",n=>n.get(e))||null}catch{return null}},kr=async()=>{try{const e=await qt();await new Promise((n,t)=>{const c=e.transaction(Ue,"readwrite"),s=c.objectStore(Ue),r=s.index("updatedAt"),l=[];let a=0;r.openCursor().onsuccess=u=>{const g=u.target.result;if(!g){for(;a>Lr&&l.length;){const v=l.shift();v&&(a-=v.size,s.delete(v.key))}return}const w=g.value;a+=w.size||0,l.push({key:w.key,size:w.size||0}),g.continue()},c.oncomplete=()=>n(),c.onerror=()=>t(c.error)})}catch{}},Kr=async e=>{if(!(e.size>Ir))try{await $t("readwrite",n=>n.put({...e,updatedAt:Date.now()})),await kr()}catch{}}})),nn=Ua(((e,n)=>{(function(t){typeof e=="object"&&typeof n<"u"?n.exports=t():typeof define=="function"&&define.amd?define([],t):(typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:this).JSZip=t()})(function(){return(function t(c,s,r){function l(g,w){if(!s[g]){if(!c[g]){var v=typeof require=="function"&&require;if(!w&&v)return v(g,!0);if(a)return a(g,!0);var X=new Error("Cannot find module '"+g+"'");throw X.code="MODULE_NOT_FOUND",X}var m=s[g]={exports:{}};c[g][0].call(m.exports,function(Z){var d=c[g][1][Z];return l(d||Z)},m,m.exports,t,c,s,r)}return s[g].exports}for(var a=typeof require=="function"&&require,u=0;u<r.length;u++)l(r[u]);return l})({1:[function(t,c,s){"use strict";var r=t("./utils"),l=t("./support"),a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";s.encode=function(u){for(var g,w,v,X,m,Z,d,b=[],h=0,G=u.length,S=G,y=r.getTypeOf(u)!=="string";h<u.length;)S=G-h,v=y?(g=u[h++],w=h<G?u[h++]:0,h<G?u[h++]:0):(g=u.charCodeAt(h++),w=h<G?u.charCodeAt(h++):0,h<G?u.charCodeAt(h++):0),X=g>>2,m=(3&g)<<4|w>>4,Z=1<S?(15&w)<<2|v>>6:64,d=2<S?63&v:64,b.push(a.charAt(X)+a.charAt(m)+a.charAt(Z)+a.charAt(d));return b.join("")},s.decode=function(u){var g,w,v,X,m,Z,d=0,b=0,h="data:";if(u.substr(0,h.length)===h)throw new Error("Invalid base64 input, it looks like a data url.");var G,S=3*(u=u.replace(/[^A-Za-z0-9+/=]/g,"")).length/4;if(u.charAt(u.length-1)===a.charAt(64)&&S--,u.charAt(u.length-2)===a.charAt(64)&&S--,S%1!=0)throw new Error("Invalid base64 input, bad content length.");for(G=l.uint8array?new Uint8Array(0|S):new Array(0|S);d<u.length;)g=a.indexOf(u.charAt(d++))<<2|(X=a.indexOf(u.charAt(d++)))>>4,w=(15&X)<<4|(m=a.indexOf(u.charAt(d++)))>>2,v=(3&m)<<6|(Z=a.indexOf(u.charAt(d++))),G[b++]=g,m!==64&&(G[b++]=w),Z!==64&&(G[b++]=v);return G}},{"./support":30,"./utils":32}],2:[function(t,c,s){"use strict";var r=t("./external"),l=t("./stream/DataWorker"),a=t("./stream/Crc32Probe"),u=t("./stream/DataLengthProbe");function g(w,v,X,m,Z){this.compressedSize=w,this.uncompressedSize=v,this.crc32=X,this.compression=m,this.compressedContent=Z}g.prototype={getContentWorker:function(){var w=new l(r.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new u("data_length")),v=this;return w.on("end",function(){if(this.streamInfo.data_length!==v.uncompressedSize)throw new Error("Bug : uncompressed data size mismatch")}),w},getCompressedWorker:function(){return new l(r.Promise.resolve(this.compressedContent)).withStreamInfo("compressedSize",this.compressedSize).withStreamInfo("uncompressedSize",this.uncompressedSize).withStreamInfo("crc32",this.crc32).withStreamInfo("compression",this.compression)}},g.createWorkerFrom=function(w,v,X){return w.pipe(new a).pipe(new u("uncompressedSize")).pipe(v.compressWorker(X)).pipe(new u("compressedSize")).withStreamInfo("compression",v)},c.exports=g},{"./external":6,"./stream/Crc32Probe":25,"./stream/DataLengthProbe":26,"./stream/DataWorker":27}],3:[function(t,c,s){"use strict";var r=t("./stream/GenericWorker");s.STORE={magic:"\0\0",compressWorker:function(){return new r("STORE compression")},uncompressWorker:function(){return new r("STORE decompression")}},s.DEFLATE=t("./flate")},{"./flate":7,"./stream/GenericWorker":28}],4:[function(t,c,s){"use strict";var r=t("./utils"),l=(function(){for(var a,u=[],g=0;g<256;g++){a=g;for(var w=0;w<8;w++)a=1&a?3988292384^a>>>1:a>>>1;u[g]=a}return u})();c.exports=function(a,u){return a!==void 0&&a.length?r.getTypeOf(a)!=="string"?(function(g,w,v,X){var m=l,Z=X+v;g^=-1;for(var d=X;d<Z;d++)g=g>>>8^m[255&(g^w[d])];return-1^g})(0|u,a,a.length,0):(function(g,w,v,X){var m=l,Z=X+v;g^=-1;for(var d=X;d<Z;d++)g=g>>>8^m[255&(g^w.charCodeAt(d))];return-1^g})(0|u,a,a.length,0):0}},{"./utils":32}],5:[function(t,c,s){"use strict";s.base64=!1,s.binary=!1,s.dir=!1,s.createFolders=!0,s.date=null,s.compression=null,s.compressionOptions=null,s.comment=null,s.unixPermissions=null,s.dosPermissions=null},{}],6:[function(t,c,s){"use strict";var r=null;r=typeof Promise<"u"?Promise:t("lie"),c.exports={Promise:r}},{lie:37}],7:[function(t,c,s){"use strict";var r=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Uint32Array<"u",l=t("pako"),a=t("./utils"),u=t("./stream/GenericWorker"),g=r?"uint8array":"array";function w(v,X){u.call(this,"FlateWorker/"+v),this._pako=null,this._pakoAction=v,this._pakoOptions=X,this.meta={}}s.magic="\b\0",a.inherits(w,u),w.prototype.processChunk=function(v){this.meta=v.meta,this._pako===null&&this._createPako(),this._pako.push(a.transformTo(g,v.data),!1)},w.prototype.flush=function(){u.prototype.flush.call(this),this._pako===null&&this._createPako(),this._pako.push([],!0)},w.prototype.cleanUp=function(){u.prototype.cleanUp.call(this),this._pako=null},w.prototype._createPako=function(){this._pako=new l[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var v=this;this._pako.onData=function(X){v.push({data:X,meta:v.meta})}},s.compressWorker=function(v){return new w("Deflate",v)},s.uncompressWorker=function(){return new w("Inflate",{})}},{"./stream/GenericWorker":28,"./utils":32,pako:38}],8:[function(t,c,s){"use strict";function r(m,Z){var d,b="";for(d=0;d<Z;d++)b+=String.fromCharCode(255&m),m>>>=8;return b}function l(m,Z,d,b,h,G){var S,y,V=m.file,J=m.compression,T=G!==g.utf8encode,_=a.transformTo("string",G(V.name)),R=a.transformTo("string",g.utf8encode(V.name)),Q=V.comment,$=a.transformTo("string",G(Q)),x=a.transformTo("string",g.utf8encode(Q)),U=R.length!==V.name.length,o=x.length!==Q.length,Y="",ie="",P="",ae=V.dir,N=V.date,te={crc32:0,compressedSize:0,uncompressedSize:0};Z&&!d||(te.crc32=m.crc32,te.compressedSize=m.compressedSize,te.uncompressedSize=m.uncompressedSize);var k=0;Z&&(k|=8),T||!U&&!o||(k|=2048);var L=0,q=0;ae&&(L|=16),h==="UNIX"?(q=798,L|=(function(B,ce){var be=B;return B||(be=ce?16893:33204),(65535&be)<<16})(V.unixPermissions,ae)):(q=20,L|=(function(B){return 63&(B||0)})(V.dosPermissions)),S=N.getUTCHours(),S<<=6,S|=N.getUTCMinutes(),S<<=5,S|=N.getUTCSeconds()/2,y=N.getUTCFullYear()-1980,y<<=4,y|=N.getUTCMonth()+1,y<<=5,y|=N.getUTCDate(),U&&(ie=r(1,1)+r(w(_),4)+R,Y+="up"+r(ie.length,2)+ie),o&&(P=r(1,1)+r(w($),4)+x,Y+="uc"+r(P.length,2)+P);var D="";return D+=`
|
|
13
|
+
\0`,D+=r(k,2),D+=J.magic,D+=r(S,2),D+=r(y,2),D+=r(te.crc32,4),D+=r(te.compressedSize,4),D+=r(te.uncompressedSize,4),D+=r(_.length,2),D+=r(Y.length,2),{fileRecord:v.LOCAL_FILE_HEADER+D+_+Y,dirRecord:v.CENTRAL_FILE_HEADER+r(q,2)+D+r($.length,2)+"\0\0\0\0"+r(L,4)+r(b,4)+_+Y+$}}var a=t("../utils"),u=t("../stream/GenericWorker"),g=t("../utf8"),w=t("../crc32"),v=t("../signature");function X(m,Z,d,b){u.call(this,"ZipFileWorker"),this.bytesWritten=0,this.zipComment=Z,this.zipPlatform=d,this.encodeFileName=b,this.streamFiles=m,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}a.inherits(X,u),X.prototype.push=function(m){var Z=m.meta.percent||0,d=this.entriesCount,b=this._sources.length;this.accumulate?this.contentBuffer.push(m):(this.bytesWritten+=m.data.length,u.prototype.push.call(this,{data:m.data,meta:{currentFile:this.currentFile,percent:d?(Z+100*(d-b-1))/d:100}}))},X.prototype.openedSource=function(m){this.currentSourceOffset=this.bytesWritten,this.currentFile=m.file.name;var Z=this.streamFiles&&!m.file.dir;if(Z){var d=l(m,Z,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:d.fileRecord,meta:{percent:0}})}else this.accumulate=!0},X.prototype.closedSource=function(m){this.accumulate=!1;var Z=this.streamFiles&&!m.file.dir,d=l(m,Z,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(d.dirRecord),Z)this.push({data:(function(b){return v.DATA_DESCRIPTOR+r(b.crc32,4)+r(b.compressedSize,4)+r(b.uncompressedSize,4)})(m),meta:{percent:100}});else for(this.push({data:d.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},X.prototype.flush=function(){for(var m=this.bytesWritten,Z=0;Z<this.dirRecords.length;Z++)this.push({data:this.dirRecords[Z],meta:{percent:100}});var d=this.bytesWritten-m,b=(function(h,G,S,y,V){var J=a.transformTo("string",V(y));return v.CENTRAL_DIRECTORY_END+"\0\0\0\0"+r(h,2)+r(h,2)+r(G,4)+r(S,4)+r(J.length,2)+J})(this.dirRecords.length,d,m,this.zipComment,this.encodeFileName);this.push({data:b,meta:{percent:100}})},X.prototype.prepareNextSource=function(){this.previous=this._sources.shift(),this.openedSource(this.previous.streamInfo),this.isPaused?this.previous.pause():this.previous.resume()},X.prototype.registerPrevious=function(m){this._sources.push(m);var Z=this;return m.on("data",function(d){Z.processChunk(d)}),m.on("end",function(){Z.closedSource(Z.previous.streamInfo),Z._sources.length?Z.prepareNextSource():Z.end()}),m.on("error",function(d){Z.error(d)}),this},X.prototype.resume=function(){return!!u.prototype.resume.call(this)&&(!this.previous&&this._sources.length?(this.prepareNextSource(),!0):this.previous||this._sources.length||this.generatedError?void 0:(this.end(),!0))},X.prototype.error=function(m){var Z=this._sources;if(!u.prototype.error.call(this,m))return!1;for(var d=0;d<Z.length;d++)try{Z[d].error(m)}catch{}return!0},X.prototype.lock=function(){u.prototype.lock.call(this);for(var m=this._sources,Z=0;Z<m.length;Z++)m[Z].lock()},c.exports=X},{"../crc32":4,"../signature":23,"../stream/GenericWorker":28,"../utf8":31,"../utils":32}],9:[function(t,c,s){"use strict";var r=t("../compressions"),l=t("./ZipFileWorker");s.generateWorker=function(a,u,g){var w=new l(u.streamFiles,g,u.platform,u.encodeFileName),v=0;try{a.forEach(function(X,m){v++;var Z=(function(G,S){var y=G||S,V=r[y];if(!V)throw new Error(y+" is not a valid compression method !");return V})(m.options.compression,u.compression),d=m.options.compressionOptions||u.compressionOptions||{},b=m.dir,h=m.date;m._compressWorker(Z,d).withStreamInfo("file",{name:X,dir:b,date:h,comment:m.comment||"",unixPermissions:m.unixPermissions,dosPermissions:m.dosPermissions}).pipe(w)}),w.entriesCount=v}catch(X){w.error(X)}return w}},{"../compressions":3,"./ZipFileWorker":8}],10:[function(t,c,s){"use strict";function r(){if(!(this instanceof r))return new r;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 r;for(var a in this)typeof this[a]!="function"&&(l[a]=this[a]);return l}}(r.prototype=t("./object")).loadAsync=t("./load"),r.support=t("./support"),r.defaults=t("./defaults"),r.version="3.10.1",r.loadAsync=function(l,a){return new r().loadAsync(l,a)},r.external=t("./external"),c.exports=r},{"./defaults":5,"./external":6,"./load":11,"./object":15,"./support":30}],11:[function(t,c,s){"use strict";var r=t("./utils"),l=t("./external"),a=t("./utf8"),u=t("./zipEntries"),g=t("./stream/Crc32Probe"),w=t("./nodejsUtils");function v(X){return new l.Promise(function(m,Z){var d=X.decompressed.getContentWorker().pipe(new g);d.on("error",function(b){Z(b)}).on("end",function(){d.streamInfo.crc32!==X.decompressed.crc32?Z(new Error("Corrupted zip : CRC32 mismatch")):m()}).resume()})}c.exports=function(X,m){var Z=this;return m=r.extend(m||{},{base64:!1,checkCRC32:!1,optimizedBinaryString:!1,createFolders:!1,decodeFileName:a.utf8decode}),w.isNode&&w.isStream(X)?l.Promise.reject(new Error("JSZip can't accept a stream when loading a zip file.")):r.prepareContent("the loaded zip file",X,!0,m.optimizedBinaryString,m.base64).then(function(d){var b=new u(m);return b.load(d),b}).then(function(d){var b=[l.Promise.resolve(d)],h=d.files;if(m.checkCRC32)for(var G=0;G<h.length;G++)b.push(v(h[G]));return l.Promise.all(b)}).then(function(d){for(var b=d.shift(),h=b.files,G=0;G<h.length;G++){var S=h[G],y=S.fileNameStr,V=r.resolve(S.fileNameStr);Z.file(V,S.decompressed,{binary:!0,optimizedBinaryString:!0,date:S.date,dir:S.dir,comment:S.fileCommentStr.length?S.fileCommentStr:null,unixPermissions:S.unixPermissions,dosPermissions:S.dosPermissions,createFolders:m.createFolders}),S.dir||(Z.file(V).unsafeOriginalName=y)}return b.zipComment.length&&(Z.comment=b.zipComment),Z})}},{"./external":6,"./nodejsUtils":14,"./stream/Crc32Probe":25,"./utf8":31,"./utils":32,"./zipEntries":33}],12:[function(t,c,s){"use strict";var r=t("../utils"),l=t("../stream/GenericWorker");function a(u,g){l.call(this,"Nodejs stream input adapter for "+u),this._upstreamEnded=!1,this._bindStream(g)}r.inherits(a,l),a.prototype._bindStream=function(u){var g=this;(this._stream=u).pause(),u.on("data",function(w){g.push({data:w,meta:{percent:0}})}).on("error",function(w){g.isPaused?this.generatedError=w:g.error(w)}).on("end",function(){g.isPaused?g._upstreamEnded=!0:g.end()})},a.prototype.pause=function(){return!!l.prototype.pause.call(this)&&(this._stream.pause(),!0)},a.prototype.resume=function(){return!!l.prototype.resume.call(this)&&(this._upstreamEnded?this.end():this._stream.resume(),!0)},c.exports=a},{"../stream/GenericWorker":28,"../utils":32}],13:[function(t,c,s){"use strict";var r=t("readable-stream").Readable;function l(a,u,g){r.call(this,u),this._helper=a;var w=this;a.on("data",function(v,X){w.push(v)||w._helper.pause(),g&&g(X)}).on("error",function(v){w.emit("error",v)}).on("end",function(){w.push(null)})}t("../utils").inherits(l,r),l.prototype._read=function(){this._helper.resume()},c.exports=l},{"../utils":32,"readable-stream":16}],14:[function(t,c,s){"use strict";c.exports={isNode:typeof Buffer<"u",newBufferFrom:function(r,l){if(Buffer.from&&Buffer.from!==Uint8Array.from)return Buffer.from(r,l);if(typeof r=="number")throw new Error('The "data" argument must not be a number');return new Buffer(r,l)},allocBuffer:function(r){if(Buffer.alloc)return Buffer.alloc(r);var l=new Buffer(r);return l.fill(0),l},isBuffer:function(r){return Buffer.isBuffer(r)},isStream:function(r){return r&&typeof r.on=="function"&&typeof r.pause=="function"&&typeof r.resume=="function"}}},{}],15:[function(t,c,s){"use strict";function r(y,V,J){var T,_=a.getTypeOf(V),R=a.extend(J||{},w);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&&(y=h(y)),R.createFolders&&(T=b(y))&&G.call(this,T,!0);var Q=_==="string"&&R.binary===!1&&R.base64===!1;J&&J.binary!==void 0||(R.binary=!Q),(V instanceof v&&V.uncompressedSize===0||R.dir||!V||V.length===0)&&(R.base64=!1,R.binary=!0,V="",R.compression="STORE",_="string");var $=null;$=V instanceof v||V instanceof u?V:Z.isNode&&Z.isStream(V)?new d(y,V):a.prepareContent(y,V,R.binary,R.optimizedBinaryString,R.base64);var x=new X(y,$,R);this.files[y]=x}var l=t("./utf8"),a=t("./utils"),u=t("./stream/GenericWorker"),g=t("./stream/StreamHelper"),w=t("./defaults"),v=t("./compressedObject"),X=t("./zipObject"),m=t("./generate"),Z=t("./nodejsUtils"),d=t("./nodejs/NodejsStreamInputAdapter"),b=function(y){y.slice(-1)==="/"&&(y=y.substring(0,y.length-1));var V=y.lastIndexOf("/");return 0<V?y.substring(0,V):""},h=function(y){return y.slice(-1)!=="/"&&(y+="/"),y},G=function(y,V){return V=V!==void 0?V:w.createFolders,y=h(y),this.files[y]||r.call(this,y,null,{dir:!0,createFolders:V}),this.files[y]};function S(y){return Object.prototype.toString.call(y)==="[object RegExp]"}c.exports={load:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},forEach:function(y){var V,J,T;for(V in this.files)T=this.files[V],(J=V.slice(this.root.length,V.length))&&V.slice(0,this.root.length)===this.root&&y(J,T)},filter:function(y){var V=[];return this.forEach(function(J,T){y(J,T)&&V.push(T)}),V},file:function(y,V,J){if(arguments.length!==1)return y=this.root+y,r.call(this,y,V,J),this;if(S(y)){var T=y;return this.filter(function(R,Q){return!Q.dir&&T.test(R)})}var _=this.files[this.root+y];return _&&!_.dir?_:null},folder:function(y){if(!y)return this;if(S(y))return this.filter(function(_,R){return R.dir&&y.test(_)});var V=this.root+y,J=G.call(this,V),T=this.clone();return T.root=J.name,T},remove:function(y){y=this.root+y;var V=this.files[y];if(V||(y.slice(-1)!=="/"&&(y+="/"),V=this.files[y]),V&&!V.dir)delete this.files[y];else for(var J=this.filter(function(_,R){return R.name.slice(0,y.length)===y}),T=0;T<J.length;T++)delete this.files[J[T].name];return this},generate:function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},generateInternalStream:function(y){var V,J={};try{if((J=a.extend(y||{},{streamFiles:!1,compression:"STORE",compressionOptions:null,type:"",platform:"DOS",comment:null,mimeType:"application/zip",encodeFileName:l.utf8encode})).type=J.type.toLowerCase(),J.compression=J.compression.toUpperCase(),J.type==="binarystring"&&(J.type="string"),!J.type)throw new Error("No output type specified.");a.checkSupport(J.type),J.platform!=="darwin"&&J.platform!=="freebsd"&&J.platform!=="linux"&&J.platform!=="sunos"||(J.platform="UNIX"),J.platform==="win32"&&(J.platform="DOS");var T=J.comment||this.comment||"";V=m.generateWorker(this,J,T)}catch(_){(V=new u("error")).error(_)}return new g(V,J.type||"string",J.mimeType)},generateAsync:function(y,V){return this.generateInternalStream(y).accumulate(V)},generateNodeStream:function(y,V){return(y=y||{}).type||(y.type="nodebuffer"),this.generateInternalStream(y).toNodejsStream(V)}}},{"./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(t,c,s){"use strict";c.exports=t("stream")},{stream:void 0}],17:[function(t,c,s){"use strict";var r=t("./DataReader");function l(a){r.call(this,a);for(var u=0;u<this.data.length;u++)a[u]=255&a[u]}t("../utils").inherits(l,r),l.prototype.byteAt=function(a){return this.data[this.zero+a]},l.prototype.lastIndexOfSignature=function(a){for(var u=a.charCodeAt(0),g=a.charCodeAt(1),w=a.charCodeAt(2),v=a.charCodeAt(3),X=this.length-4;0<=X;--X)if(this.data[X]===u&&this.data[X+1]===g&&this.data[X+2]===w&&this.data[X+3]===v)return X-this.zero;return-1},l.prototype.readAndCheckSignature=function(a){var u=a.charCodeAt(0),g=a.charCodeAt(1),w=a.charCodeAt(2),v=a.charCodeAt(3),X=this.readData(4);return u===X[0]&&g===X[1]&&w===X[2]&&v===X[3]},l.prototype.readData=function(a){if(this.checkOffset(a),a===0)return[];var u=this.data.slice(this.zero+this.index,this.zero+this.index+a);return this.index+=a,u},c.exports=l},{"../utils":32,"./DataReader":18}],18:[function(t,c,s){"use strict";var r=t("../utils");function l(a){this.data=a,this.length=a.length,this.index=0,this.zero=0}l.prototype={checkOffset:function(a){this.checkIndex(this.index+a)},checkIndex:function(a){if(this.length<this.zero+a||a<0)throw new Error("End of data reached (data length = "+this.length+", asked index = "+a+"). Corrupted zip ?")},setIndex:function(a){this.checkIndex(a),this.index=a},skip:function(a){this.setIndex(this.index+a)},byteAt:function(){},readInt:function(a){var u,g=0;for(this.checkOffset(a),u=this.index+a-1;u>=this.index;u--)g=(g<<8)+this.byteAt(u);return this.index+=a,g},readString:function(a){return r.transformTo("string",this.readData(a))},readData:function(){},lastIndexOfSignature:function(){},readAndCheckSignature:function(){},readDate:function(){var a=this.readInt(4);return new Date(Date.UTC(1980+(a>>25&127),(a>>21&15)-1,a>>16&31,a>>11&31,a>>5&63,(31&a)<<1))}},c.exports=l},{"../utils":32}],19:[function(t,c,s){"use strict";var r=t("./Uint8ArrayReader");function l(a){r.call(this,a)}t("../utils").inherits(l,r),l.prototype.readData=function(a){this.checkOffset(a);var u=this.data.slice(this.zero+this.index,this.zero+this.index+a);return this.index+=a,u},c.exports=l},{"../utils":32,"./Uint8ArrayReader":21}],20:[function(t,c,s){"use strict";var r=t("./DataReader");function l(a){r.call(this,a)}t("../utils").inherits(l,r),l.prototype.byteAt=function(a){return this.data.charCodeAt(this.zero+a)},l.prototype.lastIndexOfSignature=function(a){return this.data.lastIndexOf(a)-this.zero},l.prototype.readAndCheckSignature=function(a){return a===this.readData(4)},l.prototype.readData=function(a){this.checkOffset(a);var u=this.data.slice(this.zero+this.index,this.zero+this.index+a);return this.index+=a,u},c.exports=l},{"../utils":32,"./DataReader":18}],21:[function(t,c,s){"use strict";var r=t("./ArrayReader");function l(a){r.call(this,a)}t("../utils").inherits(l,r),l.prototype.readData=function(a){if(this.checkOffset(a),a===0)return new Uint8Array(0);var u=this.data.subarray(this.zero+this.index,this.zero+this.index+a);return this.index+=a,u},c.exports=l},{"../utils":32,"./ArrayReader":17}],22:[function(t,c,s){"use strict";var r=t("../utils"),l=t("../support"),a=t("./ArrayReader"),u=t("./StringReader"),g=t("./NodeBufferReader"),w=t("./Uint8ArrayReader");c.exports=function(v){var X=r.getTypeOf(v);return r.checkSupport(X),X!=="string"||l.uint8array?X==="nodebuffer"?new g(v):l.uint8array?new w(r.transformTo("uint8array",v)):new a(r.transformTo("array",v)):new u(v)}},{"../support":30,"../utils":32,"./ArrayReader":17,"./NodeBufferReader":19,"./StringReader":20,"./Uint8ArrayReader":21}],23:[function(t,c,s){"use strict";s.LOCAL_FILE_HEADER="PK",s.CENTRAL_FILE_HEADER="PK",s.CENTRAL_DIRECTORY_END="PK",s.ZIP64_CENTRAL_DIRECTORY_LOCATOR="PK\x07",s.ZIP64_CENTRAL_DIRECTORY_END="PK",s.DATA_DESCRIPTOR="PK\x07\b"},{}],24:[function(t,c,s){"use strict";var r=t("./GenericWorker"),l=t("../utils");function a(u){r.call(this,"ConvertWorker to "+u),this.destType=u}l.inherits(a,r),a.prototype.processChunk=function(u){this.push({data:l.transformTo(this.destType,u.data),meta:u.meta})},c.exports=a},{"../utils":32,"./GenericWorker":28}],25:[function(t,c,s){"use strict";var r=t("./GenericWorker"),l=t("../crc32");function a(){r.call(this,"Crc32Probe"),this.withStreamInfo("crc32",0)}t("../utils").inherits(a,r),a.prototype.processChunk=function(u){this.streamInfo.crc32=l(u.data,this.streamInfo.crc32||0),this.push(u)},c.exports=a},{"../crc32":4,"../utils":32,"./GenericWorker":28}],26:[function(t,c,s){"use strict";var r=t("../utils"),l=t("./GenericWorker");function a(u){l.call(this,"DataLengthProbe for "+u),this.propName=u,this.withStreamInfo(u,0)}r.inherits(a,l),a.prototype.processChunk=function(u){if(u){var g=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=g+u.data.length}l.prototype.processChunk.call(this,u)},c.exports=a},{"../utils":32,"./GenericWorker":28}],27:[function(t,c,s){"use strict";var r=t("../utils"),l=t("./GenericWorker");function a(u){l.call(this,"DataWorker");var g=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type="",this._tickScheduled=!1,u.then(function(w){g.dataIsReady=!0,g.data=w,g.max=w&&w.length||0,g.type=r.getTypeOf(w),g.isPaused||g._tickAndRepeat()},function(w){g.error(w)})}r.inherits(a,l),a.prototype.cleanUp=function(){l.prototype.cleanUp.call(this),this.data=null},a.prototype.resume=function(){return!!l.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,r.delay(this._tickAndRepeat,[],this)),!0)},a.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(r.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},a.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var u=null,g=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case"string":u=this.data.substring(this.index,g);break;case"uint8array":u=this.data.subarray(this.index,g);break;case"array":case"nodebuffer":u=this.data.slice(this.index,g)}return this.index=g,this.push({data:u,meta:{percent:this.max?this.index/this.max*100:0}})},c.exports=a},{"../utils":32,"./GenericWorker":28}],28:[function(t,c,s){"use strict";function r(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}r.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,a){return this._listeners[l].push(a),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(l,a){if(this._listeners[l])for(var u=0;u<this._listeners[l].length;u++)this._listeners[l][u].call(this,a)},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 a=this;return l.on("data",function(u){a.processChunk(u)}),l.on("end",function(){a.end()}),l.on("error",function(u){a.error(u)}),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,a){return this.extraStreamInfo[l]=a,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}},c.exports=r},{}],29:[function(t,c,s){"use strict";var r=t("../utils"),l=t("./ConvertWorker"),a=t("./GenericWorker"),u=t("../base64"),g=t("../support"),w=t("../external"),v=null;if(g.nodestream)try{v=t("../nodejs/NodejsStreamOutputAdapter")}catch{}function X(Z,d){return new w.Promise(function(b,h){var G=[],S=Z._internalType,y=Z._outputType,V=Z._mimeType;Z.on("data",function(J,T){G.push(J),d&&d(T)}).on("error",function(J){G=[],h(J)}).on("end",function(){try{b((function(J,T,_){switch(J){case"blob":return r.newBlob(r.transformTo("arraybuffer",T),_);case"base64":return u.encode(T);default:return r.transformTo(J,T)}})(y,(function(J,T){var _,R=0,Q=null,$=0;for(_=0;_<T.length;_++)$+=T[_].length;switch(J){case"string":return T.join("");case"array":return Array.prototype.concat.apply([],T);case"uint8array":for(Q=new Uint8Array($),_=0;_<T.length;_++)Q.set(T[_],R),R+=T[_].length;return Q;case"nodebuffer":return Buffer.concat(T);default:throw new Error("concat : unsupported type '"+J+"'")}})(S,G),V))}catch(J){h(J)}G=[]}).resume()})}function m(Z,d,b){var h=d;switch(d){case"blob":case"arraybuffer":h="uint8array";break;case"base64":h="string"}try{this._internalType=h,this._outputType=d,this._mimeType=b,r.checkSupport(h),this._worker=Z.pipe(new l(h)),Z.lock()}catch(G){this._worker=new a("error"),this._worker.error(G)}}m.prototype={accumulate:function(Z){return X(this,Z)},on:function(Z,d){var b=this;return Z==="data"?this._worker.on(Z,function(h){d.call(b,h.data,h.meta)}):this._worker.on(Z,function(){r.delay(d,arguments,b)}),this},resume:function(){return r.delay(this._worker.resume,[],this._worker),this},pause:function(){return this._worker.pause(),this},toNodejsStream:function(Z){if(r.checkSupport("nodestream"),this._outputType!=="nodebuffer")throw new Error(this._outputType+" is not supported by this method");return new v(this,{objectMode:this._outputType!=="nodebuffer"},Z)}},c.exports=m},{"../base64":1,"../external":6,"../nodejs/NodejsStreamOutputAdapter":13,"../support":30,"../utils":32,"./ConvertWorker":24,"./GenericWorker":28}],30:[function(t,c,s){"use strict";if(s.base64=!0,s.array=!0,s.string=!0,s.arraybuffer=typeof ArrayBuffer<"u"&&typeof Uint8Array<"u",s.nodebuffer=typeof Buffer<"u",s.uint8array=typeof Uint8Array<"u",typeof ArrayBuffer>"u")s.blob=!1;else{var r=new ArrayBuffer(0);try{s.blob=new Blob([r],{type:"application/zip"}).size===0}catch{try{var l=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);l.append(r),s.blob=l.getBlob("application/zip").size===0}catch{s.blob=!1}}}try{s.nodestream=!!t("readable-stream").Readable}catch{s.nodestream=!1}},{"readable-stream":16}],31:[function(t,c,s){"use strict";for(var r=t("./utils"),l=t("./support"),a=t("./nodejsUtils"),u=t("./stream/GenericWorker"),g=new Array(256),w=0;w<256;w++)g[w]=252<=w?6:248<=w?5:240<=w?4:224<=w?3:192<=w?2:1;g[254]=g[254]=1;function v(){u.call(this,"utf-8 decode"),this.leftOver=null}function X(){u.call(this,"utf-8 encode")}s.utf8encode=function(m){return l.nodebuffer?a.newBufferFrom(m,"utf-8"):(function(Z){var d,b,h,G,S,y=Z.length,V=0;for(G=0;G<y;G++)(64512&(b=Z.charCodeAt(G)))==55296&&G+1<y&&(64512&(h=Z.charCodeAt(G+1)))==56320&&(b=65536+(b-55296<<10)+(h-56320),G++),V+=b<128?1:b<2048?2:b<65536?3:4;for(d=l.uint8array?new Uint8Array(V):new Array(V),G=S=0;S<V;G++)(64512&(b=Z.charCodeAt(G)))==55296&&G+1<y&&(64512&(h=Z.charCodeAt(G+1)))==56320&&(b=65536+(b-55296<<10)+(h-56320),G++),b<128?d[S++]=b:(b<2048?d[S++]=192|b>>>6:(b<65536?d[S++]=224|b>>>12:(d[S++]=240|b>>>18,d[S++]=128|b>>>12&63),d[S++]=128|b>>>6&63),d[S++]=128|63&b);return d})(m)},s.utf8decode=function(m){return l.nodebuffer?r.transformTo("nodebuffer",m).toString("utf-8"):(function(Z){var d,b,h,G,S=Z.length,y=new Array(2*S);for(d=b=0;d<S;)if((h=Z[d++])<128)y[b++]=h;else if(4<(G=g[h]))y[b++]=65533,d+=G-1;else{for(h&=G===2?31:G===3?15:7;1<G&&d<S;)h=h<<6|63&Z[d++],G--;1<G?y[b++]=65533:h<65536?y[b++]=h:(h-=65536,y[b++]=55296|h>>10&1023,y[b++]=56320|1023&h)}return y.length!==b&&(y.subarray?y=y.subarray(0,b):y.length=b),r.applyFromCharCode(y)})(m=r.transformTo(l.uint8array?"uint8array":"array",m))},r.inherits(v,u),v.prototype.processChunk=function(m){var Z=r.transformTo(l.uint8array?"uint8array":"array",m.data);if(this.leftOver&&this.leftOver.length){if(l.uint8array){var d=Z;(Z=new Uint8Array(d.length+this.leftOver.length)).set(this.leftOver,0),Z.set(d,this.leftOver.length)}else Z=this.leftOver.concat(Z);this.leftOver=null}var b=(function(G,S){var y;for((S=S||G.length)>G.length&&(S=G.length),y=S-1;0<=y&&(192&G[y])==128;)y--;return y<0||y===0?S:y+g[G[y]]>S?y:S})(Z),h=Z;b!==Z.length&&(l.uint8array?(h=Z.subarray(0,b),this.leftOver=Z.subarray(b,Z.length)):(h=Z.slice(0,b),this.leftOver=Z.slice(b,Z.length))),this.push({data:s.utf8decode(h),meta:m.meta})},v.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:s.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},s.Utf8DecodeWorker=v,r.inherits(X,u),X.prototype.processChunk=function(m){this.push({data:s.utf8encode(m.data),meta:m.meta})},s.Utf8EncodeWorker=X},{"./nodejsUtils":14,"./stream/GenericWorker":28,"./support":30,"./utils":32}],32:[function(t,c,s){"use strict";var r=t("./support"),l=t("./base64"),a=t("./nodejsUtils"),u=t("./external");function g(d){return d}function w(d,b){for(var h=0;h<d.length;++h)b[h]=255&d.charCodeAt(h);return b}t("setimmediate"),s.newBlob=function(d,b){s.checkSupport("blob");try{return new Blob([d],{type:b})}catch{try{var h=new(self.BlobBuilder||self.WebKitBlobBuilder||self.MozBlobBuilder||self.MSBlobBuilder);return h.append(d),h.getBlob(b)}catch{throw new Error("Bug : can't construct the Blob.")}}};var v={stringifyByChunk:function(d,b,h){var G=[],S=0,y=d.length;if(y<=h)return String.fromCharCode.apply(null,d);for(;S<y;)b==="array"||b==="nodebuffer"?G.push(String.fromCharCode.apply(null,d.slice(S,Math.min(S+h,y)))):G.push(String.fromCharCode.apply(null,d.subarray(S,Math.min(S+h,y)))),S+=h;return G.join("")},stringifyByChar:function(d){for(var b="",h=0;h<d.length;h++)b+=String.fromCharCode(d[h]);return b},applyCanBeUsed:{uint8array:(function(){try{return r.uint8array&&String.fromCharCode.apply(null,new Uint8Array(1)).length===1}catch{return!1}})(),nodebuffer:(function(){try{return r.nodebuffer&&String.fromCharCode.apply(null,a.allocBuffer(1)).length===1}catch{return!1}})()}};function X(d){var b=65536,h=s.getTypeOf(d),G=!0;if(h==="uint8array"?G=v.applyCanBeUsed.uint8array:h==="nodebuffer"&&(G=v.applyCanBeUsed.nodebuffer),G)for(;1<b;)try{return v.stringifyByChunk(d,h,b)}catch{b=Math.floor(b/2)}return v.stringifyByChar(d)}function m(d,b){for(var h=0;h<d.length;h++)b[h]=d[h];return b}s.applyFromCharCode=X;var Z={};Z.string={string:g,array:function(d){return w(d,new Array(d.length))},arraybuffer:function(d){return Z.string.uint8array(d).buffer},uint8array:function(d){return w(d,new Uint8Array(d.length))},nodebuffer:function(d){return w(d,a.allocBuffer(d.length))}},Z.array={string:X,array:g,arraybuffer:function(d){return new Uint8Array(d).buffer},uint8array:function(d){return new Uint8Array(d)},nodebuffer:function(d){return a.newBufferFrom(d)}},Z.arraybuffer={string:function(d){return X(new Uint8Array(d))},array:function(d){return m(new Uint8Array(d),new Array(d.byteLength))},arraybuffer:g,uint8array:function(d){return new Uint8Array(d)},nodebuffer:function(d){return a.newBufferFrom(new Uint8Array(d))}},Z.uint8array={string:X,array:function(d){return m(d,new Array(d.length))},arraybuffer:function(d){return d.buffer},uint8array:g,nodebuffer:function(d){return a.newBufferFrom(d)}},Z.nodebuffer={string:X,array:function(d){return m(d,new Array(d.length))},arraybuffer:function(d){return Z.nodebuffer.uint8array(d).buffer},uint8array:function(d){return m(d,new Uint8Array(d.length))},nodebuffer:g},s.transformTo=function(d,b){return b=b||"",d?(s.checkSupport(d),Z[s.getTypeOf(b)][d](b)):b},s.resolve=function(d){for(var b=d.split("/"),h=[],G=0;G<b.length;G++){var S=b[G];S==="."||S===""&&G!==0&&G!==b.length-1||(S===".."?h.pop():h.push(S))}return h.join("/")},s.getTypeOf=function(d){return typeof d=="string"?"string":Object.prototype.toString.call(d)==="[object Array]"?"array":r.nodebuffer&&a.isBuffer(d)?"nodebuffer":r.uint8array&&d instanceof Uint8Array?"uint8array":r.arraybuffer&&d instanceof ArrayBuffer?"arraybuffer":void 0},s.checkSupport=function(d){if(!r[d.toLowerCase()])throw new Error(d+" is not supported by this platform")},s.MAX_VALUE_16BITS=65535,s.MAX_VALUE_32BITS=-1,s.pretty=function(d){var b,h,G="";for(h=0;h<(d||"").length;h++)G+="\\x"+((b=d.charCodeAt(h))<16?"0":"")+b.toString(16).toUpperCase();return G},s.delay=function(d,b,h){setImmediate(function(){d.apply(h||null,b||[])})},s.inherits=function(d,b){function h(){}h.prototype=b.prototype,d.prototype=new h},s.extend=function(){var d,b,h={};for(d=0;d<arguments.length;d++)for(b in arguments[d])Object.prototype.hasOwnProperty.call(arguments[d],b)&&h[b]===void 0&&(h[b]=arguments[d][b]);return h},s.prepareContent=function(d,b,h,G,S){return u.Promise.resolve(b).then(function(y){return r.blob&&(y instanceof Blob||["[object File]","[object Blob]"].indexOf(Object.prototype.toString.call(y))!==-1)&&typeof FileReader<"u"?new u.Promise(function(V,J){var T=new FileReader;T.onload=function(_){V(_.target.result)},T.onerror=function(_){J(_.target.error)},T.readAsArrayBuffer(y)}):y}).then(function(y){var V=s.getTypeOf(y);return V?(V==="arraybuffer"?y=s.transformTo("uint8array",y):V==="string"&&(S?y=l.decode(y):h&&G!==!0&&(y=(function(J){return w(J,r.uint8array?new Uint8Array(J.length):new Array(J.length))})(y))),y):u.Promise.reject(new Error("Can't read the data of '"+d+"'. Is it in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?"))})}},{"./base64":1,"./external":6,"./nodejsUtils":14,"./support":30,setimmediate:54}],33:[function(t,c,s){"use strict";var r=t("./reader/readerFor"),l=t("./utils"),a=t("./signature"),u=t("./zipEntry"),g=t("./support");function w(v){this.files=[],this.loadOptions=v}w.prototype={checkSignature:function(v){if(!this.reader.readAndCheckSignature(v)){this.reader.index-=4;var X=this.reader.readString(4);throw new Error("Corrupted zip or bug: unexpected signature ("+l.pretty(X)+", expected "+l.pretty(v)+")")}},isSignature:function(v,X){var m=this.reader.index;this.reader.setIndex(v);var Z=this.reader.readString(4)===X;return this.reader.setIndex(m),Z},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 v=this.reader.readData(this.zipCommentLength),X=g.uint8array?"uint8array":"array",m=l.transformTo(X,v);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 v,X,m,Z=this.zip64EndOfCentralSize-44;0<Z;)v=this.reader.readInt(2),X=this.reader.readInt(4),m=this.reader.readData(X),this.zip64ExtensibleData[v]={id:v,length:X,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 v,X;for(v=0;v<this.files.length;v++)X=this.files[v],this.reader.setIndex(X.localHeaderOffset),this.checkSignature(a.LOCAL_FILE_HEADER),X.readLocalPart(this.reader),X.handleUTF8(),X.processAttributes()},readCentralDir:function(){var v;for(this.reader.setIndex(this.centralDirOffset);this.reader.readAndCheckSignature(a.CENTRAL_FILE_HEADER);)(v=new u({zip64:this.zip64},this.loadOptions)).readCentralPart(this.reader),this.files.push(v);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 v=this.reader.lastIndexOfSignature(a.CENTRAL_DIRECTORY_END);if(v<0)throw this.isSignature(0,a.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(v);var X=v;if(this.checkSignature(a.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,(v=this.reader.lastIndexOfSignature(a.ZIP64_CENTRAL_DIRECTORY_LOCATOR))<0)throw new Error("Corrupted zip: can't find the ZIP64 end of central directory locator");if(this.reader.setIndex(v),this.checkSignature(a.ZIP64_CENTRAL_DIRECTORY_LOCATOR),this.readBlockZip64EndOfCentralLocator(),!this.isSignature(this.relativeOffsetEndOfZip64CentralDir,a.ZIP64_CENTRAL_DIRECTORY_END)&&(this.relativeOffsetEndOfZip64CentralDir=this.reader.lastIndexOfSignature(a.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(a.ZIP64_CENTRAL_DIRECTORY_END),this.readBlockZip64EndOfCentral()}var m=this.centralDirOffset+this.centralDirSize;this.zip64&&(m+=20,m+=12+this.zip64EndOfCentralSize);var Z=X-m;if(0<Z)this.isSignature(X,a.CENTRAL_FILE_HEADER)||(this.reader.zero=Z);else if(Z<0)throw new Error("Corrupted zip: missing "+Math.abs(Z)+" bytes.")},prepareReader:function(v){this.reader=r(v)},load:function(v){this.prepareReader(v),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},c.exports=w},{"./reader/readerFor":22,"./signature":23,"./support":30,"./utils":32,"./zipEntry":34}],34:[function(t,c,s){"use strict";var r=t("./reader/readerFor"),l=t("./utils"),a=t("./compressedObject"),u=t("./crc32"),g=t("./utf8"),w=t("./compressions"),v=t("./support");function X(m,Z){this.options=m,this.loadOptions=Z}X.prototype={isEncrypted:function(){return(1&this.bitFlag)==1},useUTF8:function(){return(2048&this.bitFlag)==2048},readLocalPart:function(m){var Z,d;if(m.skip(22),this.fileNameLength=m.readInt(2),d=m.readInt(2),this.fileName=m.readData(this.fileNameLength),m.skip(d),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((Z=(function(b){for(var h in w)if(Object.prototype.hasOwnProperty.call(w,h)&&w[h].magic===b)return w[h];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 a(this.compressedSize,this.uncompressedSize,this.crc32,Z,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 Z=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(Z),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=r(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 Z,d,b,h=m.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});m.index+4<h;)Z=m.readInt(2),d=m.readInt(2),b=m.readData(d),this.extraFields[Z]={id:Z,length:d,value:b};m.setIndex(h)},handleUTF8:function(){var m=v.uint8array?"uint8array":"array";if(this.useUTF8())this.fileNameStr=g.utf8decode(this.fileName),this.fileCommentStr=g.utf8decode(this.fileComment);else{var Z=this.findExtraFieldUnicodePath();if(Z!==null)this.fileNameStr=Z;else{var d=l.transformTo(m,this.fileName);this.fileNameStr=this.loadOptions.decodeFileName(d)}var b=this.findExtraFieldUnicodeComment();if(b!==null)this.fileCommentStr=b;else{var h=l.transformTo(m,this.fileComment);this.fileCommentStr=this.loadOptions.decodeFileName(h)}}},findExtraFieldUnicodePath:function(){var m=this.extraFields[28789];if(m){var Z=r(m.value);return Z.readInt(1)!==1||u(this.fileName)!==Z.readInt(4)?null:g.utf8decode(Z.readData(m.length-5))}return null},findExtraFieldUnicodeComment:function(){var m=this.extraFields[25461];if(m){var Z=r(m.value);return Z.readInt(1)!==1||u(this.fileComment)!==Z.readInt(4)?null:g.utf8decode(Z.readData(m.length-5))}return null}},c.exports=X},{"./compressedObject":2,"./compressions":3,"./crc32":4,"./reader/readerFor":22,"./support":30,"./utf8":31,"./utils":32}],35:[function(t,c,s){"use strict";function r(Z,d,b){this.name=Z,this.dir=b.dir,this.date=b.date,this.comment=b.comment,this.unixPermissions=b.unixPermissions,this.dosPermissions=b.dosPermissions,this._data=d,this._dataBinary=b.binary,this.options={compression:b.compression,compressionOptions:b.compressionOptions}}var l=t("./stream/StreamHelper"),a=t("./stream/DataWorker"),u=t("./utf8"),g=t("./compressedObject"),w=t("./stream/GenericWorker");r.prototype={internalStream:function(Z){var d=null,b="string";try{if(!Z)throw new Error("No output type specified.");var h=(b=Z.toLowerCase())==="string"||b==="text";b!=="binarystring"&&b!=="text"||(b="string"),d=this._decompressWorker();var G=!this._dataBinary;G&&!h&&(d=d.pipe(new u.Utf8EncodeWorker)),!G&&h&&(d=d.pipe(new u.Utf8DecodeWorker))}catch(S){(d=new w("error")).error(S)}return new l(d,b,"")},async:function(Z,d){return this.internalStream(Z).accumulate(d)},nodeStream:function(Z,d){return this.internalStream(Z||"nodebuffer").toNodejsStream(d)},_compressWorker:function(Z,d){if(this._data instanceof g&&this._data.compression.magic===Z.magic)return this._data.getCompressedWorker();var b=this._decompressWorker();return this._dataBinary||(b=b.pipe(new u.Utf8EncodeWorker)),g.createWorkerFrom(b,Z,d)},_decompressWorker:function(){return this._data instanceof g?this._data.getContentWorker():this._data instanceof w?this._data:new a(this._data)}};for(var v=["asText","asBinary","asNodeBuffer","asUint8Array","asArrayBuffer"],X=function(){throw new Error("This method has been removed in JSZip 3.0, please check the upgrade guide.")},m=0;m<v.length;m++)r.prototype[v[m]]=X;c.exports=r},{"./compressedObject":2,"./stream/DataWorker":27,"./stream/GenericWorker":28,"./stream/StreamHelper":29,"./utf8":31}],36:[function(t,c,s){(function(r){"use strict";var l,a,u=r.MutationObserver||r.WebKitMutationObserver;if(u){var g=0,w=new u(Z),v=r.document.createTextNode("");w.observe(v,{characterData:!0}),l=function(){v.data=g=++g%2}}else if(r.setImmediate||r.MessageChannel===void 0)l="document"in r&&"onreadystatechange"in r.document.createElement("script")?function(){var d=r.document.createElement("script");d.onreadystatechange=function(){Z(),d.onreadystatechange=null,d.parentNode.removeChild(d),d=null},r.document.documentElement.appendChild(d)}:function(){setTimeout(Z,0)};else{var X=new r.MessageChannel;X.port1.onmessage=Z,l=function(){X.port2.postMessage(0)}}var m=[];function Z(){var d,b;a=!0;for(var h=m.length;h;){for(b=m,m=[],d=-1;++d<h;)b[d]();h=m.length}a=!1}c.exports=function(d){m.push(d)!==1||a||l()}}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}],37:[function(t,c,s){"use strict";var r=t("immediate");function l(){}var a={},u=["REJECTED"],g=["FULFILLED"],w=["PENDING"];function v(h){if(typeof h!="function")throw new TypeError("resolver must be a function");this.state=w,this.queue=[],this.outcome=void 0,h!==l&&d(this,h)}function X(h,G,S){this.promise=h,typeof G=="function"&&(this.onFulfilled=G,this.callFulfilled=this.otherCallFulfilled),typeof S=="function"&&(this.onRejected=S,this.callRejected=this.otherCallRejected)}function m(h,G,S){r(function(){var y;try{y=G(S)}catch(V){return a.reject(h,V)}y===h?a.reject(h,new TypeError("Cannot resolve promise with itself")):a.resolve(h,y)})}function Z(h){var G=h&&h.then;if(h&&(typeof h=="object"||typeof h=="function")&&typeof G=="function")return function(){G.apply(h,arguments)}}function d(h,G){var S=!1;function y(T){S||(S=!0,a.reject(h,T))}function V(T){S||(S=!0,a.resolve(h,T))}var J=b(function(){G(V,y)});J.status==="error"&&y(J.value)}function b(h,G){var S={};try{S.value=h(G),S.status="success"}catch(y){S.status="error",S.value=y}return S}(c.exports=v).prototype.finally=function(h){if(typeof h!="function")return this;var G=this.constructor;return this.then(function(S){return G.resolve(h()).then(function(){return S})},function(S){return G.resolve(h()).then(function(){throw S})})},v.prototype.catch=function(h){return this.then(null,h)},v.prototype.then=function(h,G){if(typeof h!="function"&&this.state===g||typeof G!="function"&&this.state===u)return this;var S=new this.constructor(l);return this.state!==w?m(S,this.state===g?h:G,this.outcome):this.queue.push(new X(S,h,G)),S},X.prototype.callFulfilled=function(h){a.resolve(this.promise,h)},X.prototype.otherCallFulfilled=function(h){m(this.promise,this.onFulfilled,h)},X.prototype.callRejected=function(h){a.reject(this.promise,h)},X.prototype.otherCallRejected=function(h){m(this.promise,this.onRejected,h)},a.resolve=function(h,G){var S=b(Z,G);if(S.status==="error")return a.reject(h,S.value);var y=S.value;if(y)d(h,y);else{h.state=g,h.outcome=G;for(var V=-1,J=h.queue.length;++V<J;)h.queue[V].callFulfilled(G)}return h},a.reject=function(h,G){h.state=u,h.outcome=G;for(var S=-1,y=h.queue.length;++S<y;)h.queue[S].callRejected(G);return h},v.resolve=function(h){return h instanceof this?h:a.resolve(new this(l),h)},v.reject=function(h){var G=new this(l);return a.reject(G,h)},v.all=function(h){var G=this;if(Object.prototype.toString.call(h)!=="[object Array]")return this.reject(new TypeError("must be an array"));var S=h.length,y=!1;if(!S)return this.resolve([]);for(var V=new Array(S),J=0,T=-1,_=new this(l);++T<S;)R(h[T],T);return _;function R(Q,$){G.resolve(Q).then(function(x){V[$]=x,++J!==S||y||(y=!0,a.resolve(_,V))},function(x){y||(y=!0,a.reject(_,x))})}},v.race=function(h){var G=this;if(Object.prototype.toString.call(h)!=="[object Array]")return this.reject(new TypeError("must be an array"));var S=h.length,y=!1;if(!S)return this.resolve([]);for(var V=-1,J=new this(l);++V<S;)T=h[V],G.resolve(T).then(function(_){y||(y=!0,a.resolve(J,_))},function(_){y||(y=!0,a.reject(J,_))});var T;return J}},{immediate:36}],38:[function(t,c,s){"use strict";var r={};(0,t("./lib/utils/common").assign)(r,t("./lib/deflate"),t("./lib/inflate"),t("./lib/zlib/constants")),c.exports=r},{"./lib/deflate":39,"./lib/inflate":40,"./lib/utils/common":41,"./lib/zlib/constants":44}],39:[function(t,c,s){"use strict";var r=t("./zlib/deflate"),l=t("./utils/common"),a=t("./utils/strings"),u=t("./zlib/messages"),g=t("./zlib/zstream"),w=Object.prototype.toString,v=0,X=-1,m=0,Z=8;function d(h){if(!(this instanceof d))return new d(h);this.options=l.assign({level:X,method:Z,chunkSize:16384,windowBits:15,memLevel:8,strategy:m,to:""},h||{});var G=this.options;G.raw&&0<G.windowBits?G.windowBits=-G.windowBits:G.gzip&&0<G.windowBits&&G.windowBits<16&&(G.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new g,this.strm.avail_out=0;var S=r.deflateInit2(this.strm,G.level,G.method,G.windowBits,G.memLevel,G.strategy);if(S!==v)throw new Error(u[S]);if(G.header&&r.deflateSetHeader(this.strm,G.header),G.dictionary){var y;if(y=typeof G.dictionary=="string"?a.string2buf(G.dictionary):w.call(G.dictionary)==="[object ArrayBuffer]"?new Uint8Array(G.dictionary):G.dictionary,(S=r.deflateSetDictionary(this.strm,y))!==v)throw new Error(u[S]);this._dict_set=!0}}function b(h,G){var S=new d(G);if(S.push(h,!0),S.err)throw S.msg||u[S.err];return S.result}d.prototype.push=function(h,G){var S,y,V=this.strm,J=this.options.chunkSize;if(this.ended)return!1;y=G===~~G?G:G===!0?4:0,typeof h=="string"?V.input=a.string2buf(h):w.call(h)==="[object ArrayBuffer]"?V.input=new Uint8Array(h):V.input=h,V.next_in=0,V.avail_in=V.input.length;do{if(V.avail_out===0&&(V.output=new l.Buf8(J),V.next_out=0,V.avail_out=J),(S=r.deflate(V,y))!==1&&S!==v)return this.onEnd(S),!(this.ended=!0);V.avail_out!==0&&(V.avail_in!==0||y!==4&&y!==2)||(this.options.to==="string"?this.onData(a.buf2binstring(l.shrinkBuf(V.output,V.next_out))):this.onData(l.shrinkBuf(V.output,V.next_out)))}while((0<V.avail_in||V.avail_out===0)&&S!==1);return y===4?(S=r.deflateEnd(this.strm),this.onEnd(S),this.ended=!0,S===v):y!==2||(this.onEnd(v),!(V.avail_out=0))},d.prototype.onData=function(h){this.chunks.push(h)},d.prototype.onEnd=function(h){h===v&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=h,this.msg=this.strm.msg},s.Deflate=d,s.deflate=b,s.deflateRaw=function(h,G){return(G=G||{}).raw=!0,b(h,G)},s.gzip=function(h,G){return(G=G||{}).gzip=!0,b(h,G)}},{"./utils/common":41,"./utils/strings":42,"./zlib/deflate":46,"./zlib/messages":51,"./zlib/zstream":53}],40:[function(t,c,s){"use strict";var r=t("./zlib/inflate"),l=t("./utils/common"),a=t("./utils/strings"),u=t("./zlib/constants"),g=t("./zlib/messages"),w=t("./zlib/zstream"),v=t("./zlib/gzheader"),X=Object.prototype.toString;function m(d){if(!(this instanceof m))return new m(d);this.options=l.assign({chunkSize:16384,windowBits:0,to:""},d||{});var b=this.options;b.raw&&0<=b.windowBits&&b.windowBits<16&&(b.windowBits=-b.windowBits,b.windowBits===0&&(b.windowBits=-15)),!(0<=b.windowBits&&b.windowBits<16)||d&&d.windowBits||(b.windowBits+=32),15<b.windowBits&&b.windowBits<48&&(15&b.windowBits)==0&&(b.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new w,this.strm.avail_out=0;var h=r.inflateInit2(this.strm,b.windowBits);if(h!==u.Z_OK)throw new Error(g[h]);this.header=new v,r.inflateGetHeader(this.strm,this.header)}function Z(d,b){var h=new m(b);if(h.push(d,!0),h.err)throw h.msg||g[h.err];return h.result}m.prototype.push=function(d,b){var h,G,S,y,V,J,T=this.strm,_=this.options.chunkSize,R=this.options.dictionary,Q=!1;if(this.ended)return!1;G=b===~~b?b:b===!0?u.Z_FINISH:u.Z_NO_FLUSH,typeof d=="string"?T.input=a.binstring2buf(d):X.call(d)==="[object ArrayBuffer]"?T.input=new Uint8Array(d):T.input=d,T.next_in=0,T.avail_in=T.input.length;do{if(T.avail_out===0&&(T.output=new l.Buf8(_),T.next_out=0,T.avail_out=_),(h=r.inflate(T,u.Z_NO_FLUSH))===u.Z_NEED_DICT&&R&&(J=typeof R=="string"?a.string2buf(R):X.call(R)==="[object ArrayBuffer]"?new Uint8Array(R):R,h=r.inflateSetDictionary(this.strm,J)),h===u.Z_BUF_ERROR&&Q===!0&&(h=u.Z_OK,Q=!1),h!==u.Z_STREAM_END&&h!==u.Z_OK)return this.onEnd(h),!(this.ended=!0);T.next_out&&(T.avail_out!==0&&h!==u.Z_STREAM_END&&(T.avail_in!==0||G!==u.Z_FINISH&&G!==u.Z_SYNC_FLUSH)||(this.options.to==="string"?(S=a.utf8border(T.output,T.next_out),y=T.next_out-S,V=a.buf2string(T.output,S),T.next_out=y,T.avail_out=_-y,y&&l.arraySet(T.output,T.output,S,y,0),this.onData(V)):this.onData(l.shrinkBuf(T.output,T.next_out)))),T.avail_in===0&&T.avail_out===0&&(Q=!0)}while((0<T.avail_in||T.avail_out===0)&&h!==u.Z_STREAM_END);return h===u.Z_STREAM_END&&(G=u.Z_FINISH),G===u.Z_FINISH?(h=r.inflateEnd(this.strm),this.onEnd(h),this.ended=!0,h===u.Z_OK):G!==u.Z_SYNC_FLUSH||(this.onEnd(u.Z_OK),!(T.avail_out=0))},m.prototype.onData=function(d){this.chunks.push(d)},m.prototype.onEnd=function(d){d===u.Z_OK&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=l.flattenChunks(this.chunks)),this.chunks=[],this.err=d,this.msg=this.strm.msg},s.Inflate=m,s.inflate=Z,s.inflateRaw=function(d,b){return(b=b||{}).raw=!0,Z(d,b)},s.ungzip=Z},{"./utils/common":41,"./utils/strings":42,"./zlib/constants":44,"./zlib/gzheader":47,"./zlib/inflate":49,"./zlib/messages":51,"./zlib/zstream":53}],41:[function(t,c,s){"use strict";var r=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";s.assign=function(u){for(var g=Array.prototype.slice.call(arguments,1);g.length;){var w=g.shift();if(w){if(typeof w!="object")throw new TypeError(w+"must be non-object");for(var v in w)w.hasOwnProperty(v)&&(u[v]=w[v])}}return u},s.shrinkBuf=function(u,g){return u.length===g?u:u.subarray?u.subarray(0,g):(u.length=g,u)};var l={arraySet:function(u,g,w,v,X){if(g.subarray&&u.subarray)u.set(g.subarray(w,w+v),X);else for(var m=0;m<v;m++)u[X+m]=g[w+m]},flattenChunks:function(u){var g,w,v,X,m,Z;for(g=v=0,w=u.length;g<w;g++)v+=u[g].length;for(Z=new Uint8Array(v),g=X=0,w=u.length;g<w;g++)m=u[g],Z.set(m,X),X+=m.length;return Z}},a={arraySet:function(u,g,w,v,X){for(var m=0;m<v;m++)u[X+m]=g[w+m]},flattenChunks:function(u){return[].concat.apply([],u)}};s.setTyped=function(u){u?(s.Buf8=Uint8Array,s.Buf16=Uint16Array,s.Buf32=Int32Array,s.assign(s,l)):(s.Buf8=Array,s.Buf16=Array,s.Buf32=Array,s.assign(s,a))},s.setTyped(r)},{}],42:[function(t,c,s){"use strict";var r=t("./common"),l=!0,a=!0;try{String.fromCharCode.apply(null,[0])}catch{l=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{a=!1}for(var u=new r.Buf8(256),g=0;g<256;g++)u[g]=252<=g?6:248<=g?5:240<=g?4:224<=g?3:192<=g?2:1;function w(v,X){if(X<65537&&(v.subarray&&a||!v.subarray&&l))return String.fromCharCode.apply(null,r.shrinkBuf(v,X));for(var m="",Z=0;Z<X;Z++)m+=String.fromCharCode(v[Z]);return m}u[254]=u[254]=1,s.string2buf=function(v){var X,m,Z,d,b,h=v.length,G=0;for(d=0;d<h;d++)(64512&(m=v.charCodeAt(d)))==55296&&d+1<h&&(64512&(Z=v.charCodeAt(d+1)))==56320&&(m=65536+(m-55296<<10)+(Z-56320),d++),G+=m<128?1:m<2048?2:m<65536?3:4;for(X=new r.Buf8(G),d=b=0;b<G;d++)(64512&(m=v.charCodeAt(d)))==55296&&d+1<h&&(64512&(Z=v.charCodeAt(d+1)))==56320&&(m=65536+(m-55296<<10)+(Z-56320),d++),m<128?X[b++]=m:(m<2048?X[b++]=192|m>>>6:(m<65536?X[b++]=224|m>>>12:(X[b++]=240|m>>>18,X[b++]=128|m>>>12&63),X[b++]=128|m>>>6&63),X[b++]=128|63&m);return X},s.buf2binstring=function(v){return w(v,v.length)},s.binstring2buf=function(v){for(var X=new r.Buf8(v.length),m=0,Z=X.length;m<Z;m++)X[m]=v.charCodeAt(m);return X},s.buf2string=function(v,X){var m,Z,d,b,h=X||v.length,G=new Array(2*h);for(m=Z=0;m<h;)if((d=v[m++])<128)G[Z++]=d;else if(4<(b=u[d]))G[Z++]=65533,m+=b-1;else{for(d&=b===2?31:b===3?15:7;1<b&&m<h;)d=d<<6|63&v[m++],b--;1<b?G[Z++]=65533:d<65536?G[Z++]=d:(d-=65536,G[Z++]=55296|d>>10&1023,G[Z++]=56320|1023&d)}return w(G,Z)},s.utf8border=function(v,X){var m;for((X=X||v.length)>v.length&&(X=v.length),m=X-1;0<=m&&(192&v[m])==128;)m--;return m<0||m===0?X:m+u[v[m]]>X?m:X}},{"./common":41}],43:[function(t,c,s){"use strict";c.exports=function(r,l,a,u){for(var g=65535&r|0,w=r>>>16&65535|0,v=0;a!==0;){for(a-=v=2e3<a?2e3:a;w=w+(g=g+l[u++]|0)|0,--v;);g%=65521,w%=65521}return g|w<<16|0}},{}],44:[function(t,c,s){"use strict";c.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(t,c,s){"use strict";var r=(function(){for(var l,a=[],u=0;u<256;u++){l=u;for(var g=0;g<8;g++)l=1&l?3988292384^l>>>1:l>>>1;a[u]=l}return a})();c.exports=function(l,a,u,g){var w=r,v=g+u;l^=-1;for(var X=g;X<v;X++)l=l>>>8^w[255&(l^a[X])];return-1^l}},{}],46:[function(t,c,s){"use strict";var r,l=t("../utils/common"),a=t("./trees"),u=t("./adler32"),g=t("./crc32"),w=t("./messages"),v=0,X=4,m=0,Z=-2,d=-1,b=4,h=2,G=8,S=9,y=286,V=30,J=19,T=2*y+1,_=15,R=3,Q=258,$=Q+R+1,x=42,U=113,o=1,Y=2,ie=3,P=4;function ae(i,z){return i.msg=w[z],z}function N(i){return(i<<1)-(4<i?9:0)}function te(i){for(var z=i.length;0<=--z;)i[z]=0}function k(i){var z=i.state,K=z.pending;K>i.avail_out&&(K=i.avail_out),K!==0&&(l.arraySet(i.output,z.pending_buf,z.pending_out,K,i.next_out),i.next_out+=K,z.pending_out+=K,i.total_out+=K,i.avail_out-=K,z.pending-=K,z.pending===0&&(z.pending_out=0))}function L(i,z){a._tr_flush_block(i,0<=i.block_start?i.block_start:-1,i.strstart-i.block_start,z),i.block_start=i.strstart,k(i.strm)}function q(i,z){i.pending_buf[i.pending++]=z}function D(i,z){i.pending_buf[i.pending++]=z>>>8&255,i.pending_buf[i.pending++]=255&z}function B(i,z){var K,f,p=i.max_chain_length,W=i.strstart,F=i.prev_length,C=i.nice_match,I=i.strstart>i.w_size-$?i.strstart-(i.w_size-$):0,E=i.window,O=i.w_mask,M=i.prev,A=i.strstart+Q,de=E[W+F-1],se=E[W+F];i.prev_length>=i.good_match&&(p>>=2),C>i.lookahead&&(C=i.lookahead);do if(E[(K=z)+F]===se&&E[K+F-1]===de&&E[K]===E[W]&&E[++K]===E[W+1]){W+=2,K++;do;while(E[++W]===E[++K]&&E[++W]===E[++K]&&E[++W]===E[++K]&&E[++W]===E[++K]&&E[++W]===E[++K]&&E[++W]===E[++K]&&E[++W]===E[++K]&&E[++W]===E[++K]&&W<A);if(f=Q-(A-W),W=A-Q,F<f){if(i.match_start=z,C<=(F=f))break;de=E[W+F-1],se=E[W+F]}}while((z=M[z&O])>I&&--p!=0);return F<=i.lookahead?F:i.lookahead}function ce(i){var z,K,f,p,W,F,C,I,E,O,M=i.w_size;do{if(p=i.window_size-i.lookahead-i.strstart,i.strstart>=M+(M-$)){for(l.arraySet(i.window,i.window,M,M,0),i.match_start-=M,i.strstart-=M,i.block_start-=M,z=K=i.hash_size;f=i.head[--z],i.head[z]=M<=f?f-M:0,--K;);for(z=K=M;f=i.prev[--z],i.prev[z]=M<=f?f-M:0,--K;);p+=M}if(i.strm.avail_in===0)break;if(F=i.strm,C=i.window,I=i.strstart+i.lookahead,E=p,O=void 0,O=F.avail_in,E<O&&(O=E),K=O===0?0:(F.avail_in-=O,l.arraySet(C,F.input,F.next_in,O,I),F.state.wrap===1?F.adler=u(F.adler,C,O,I):F.state.wrap===2&&(F.adler=g(F.adler,C,O,I)),F.next_in+=O,F.total_in+=O,O),i.lookahead+=K,i.lookahead+i.insert>=R)for(W=i.strstart-i.insert,i.ins_h=i.window[W],i.ins_h=(i.ins_h<<i.hash_shift^i.window[W+1])&i.hash_mask;i.insert&&(i.ins_h=(i.ins_h<<i.hash_shift^i.window[W+R-1])&i.hash_mask,i.prev[W&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=W,W++,i.insert--,!(i.lookahead+i.insert<R)););}while(i.lookahead<$&&i.strm.avail_in!==0)}function be(i,z){for(var K,f;;){if(i.lookahead<$){if(ce(i),i.lookahead<$&&z===v)return o;if(i.lookahead===0)break}if(K=0,i.lookahead>=R&&(i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+R-1])&i.hash_mask,K=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart),K!==0&&i.strstart-K<=i.w_size-$&&(i.match_length=B(i,K)),i.match_length>=R)if(f=a._tr_tally(i,i.strstart-i.match_start,i.match_length-R),i.lookahead-=i.match_length,i.match_length<=i.max_lazy_match&&i.lookahead>=R){for(i.match_length--;i.strstart++,i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+R-1])&i.hash_mask,K=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart,--i.match_length!=0;);i.strstart++}else i.strstart+=i.match_length,i.match_length=0,i.ins_h=i.window[i.strstart],i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+1])&i.hash_mask;else f=a._tr_tally(i,0,i.window[i.strstart]),i.lookahead--,i.strstart++;if(f&&(L(i,!1),i.strm.avail_out===0))return o}return i.insert=i.strstart<R-1?i.strstart:R-1,z===X?(L(i,!0),i.strm.avail_out===0?ie:P):i.last_lit&&(L(i,!1),i.strm.avail_out===0)?o:Y}function oe(i,z){for(var K,f,p;;){if(i.lookahead<$){if(ce(i),i.lookahead<$&&z===v)return o;if(i.lookahead===0)break}if(K=0,i.lookahead>=R&&(i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+R-1])&i.hash_mask,K=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart),i.prev_length=i.match_length,i.prev_match=i.match_start,i.match_length=R-1,K!==0&&i.prev_length<i.max_lazy_match&&i.strstart-K<=i.w_size-$&&(i.match_length=B(i,K),i.match_length<=5&&(i.strategy===1||i.match_length===R&&4096<i.strstart-i.match_start)&&(i.match_length=R-1)),i.prev_length>=R&&i.match_length<=i.prev_length){for(p=i.strstart+i.lookahead-R,f=a._tr_tally(i,i.strstart-1-i.prev_match,i.prev_length-R),i.lookahead-=i.prev_length-1,i.prev_length-=2;++i.strstart<=p&&(i.ins_h=(i.ins_h<<i.hash_shift^i.window[i.strstart+R-1])&i.hash_mask,K=i.prev[i.strstart&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=i.strstart),--i.prev_length!=0;);if(i.match_available=0,i.match_length=R-1,i.strstart++,f&&(L(i,!1),i.strm.avail_out===0))return o}else if(i.match_available){if((f=a._tr_tally(i,0,i.window[i.strstart-1]))&&L(i,!1),i.strstart++,i.lookahead--,i.strm.avail_out===0)return o}else i.match_available=1,i.strstart++,i.lookahead--}return i.match_available&&(f=a._tr_tally(i,0,i.window[i.strstart-1]),i.match_available=0),i.insert=i.strstart<R-1?i.strstart:R-1,z===X?(L(i,!0),i.strm.avail_out===0?ie:P):i.last_lit&&(L(i,!1),i.strm.avail_out===0)?o:Y}function ne(i,z,K,f,p){this.good_length=i,this.max_lazy=z,this.nice_length=K,this.max_chain=f,this.func=p}function pe(){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=G,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*T),this.dyn_dtree=new l.Buf16(2*(2*V+1)),this.bl_tree=new l.Buf16(2*(2*J+1)),te(this.dyn_ltree),te(this.dyn_dtree),te(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new l.Buf16(_+1),this.heap=new l.Buf16(2*y+1),te(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new l.Buf16(2*y+1),te(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 ue(i){var z;return i&&i.state?(i.total_in=i.total_out=0,i.data_type=h,(z=i.state).pending=0,z.pending_out=0,z.wrap<0&&(z.wrap=-z.wrap),z.status=z.wrap?x:U,i.adler=z.wrap===2?0:1,z.last_flush=v,a._tr_init(z),m):ae(i,Z)}function Ze(i){var z=ue(i);return z===m&&(function(K){K.window_size=2*K.w_size,te(K.head),K.max_lazy_match=r[K.level].max_lazy,K.good_match=r[K.level].good_length,K.nice_match=r[K.level].nice_length,K.max_chain_length=r[K.level].max_chain,K.strstart=0,K.block_start=0,K.lookahead=0,K.insert=0,K.match_length=K.prev_length=R-1,K.match_available=0,K.ins_h=0})(i.state),z}function Xe(i,z,K,f,p,W){if(!i)return Z;var F=1;if(z===d&&(z=6),f<0?(F=0,f=-f):15<f&&(F=2,f-=16),p<1||S<p||K!==G||f<8||15<f||z<0||9<z||W<0||b<W)return ae(i,Z);f===8&&(f=9);var C=new pe;return(i.state=C).strm=i,C.wrap=F,C.gzhead=null,C.w_bits=f,C.w_size=1<<C.w_bits,C.w_mask=C.w_size-1,C.hash_bits=p+7,C.hash_size=1<<C.hash_bits,C.hash_mask=C.hash_size-1,C.hash_shift=~~((C.hash_bits+R-1)/R),C.window=new l.Buf8(2*C.w_size),C.head=new l.Buf16(C.hash_size),C.prev=new l.Buf16(C.w_size),C.lit_bufsize=1<<p+6,C.pending_buf_size=4*C.lit_bufsize,C.pending_buf=new l.Buf8(C.pending_buf_size),C.d_buf=1*C.lit_bufsize,C.l_buf=3*C.lit_bufsize,C.level=z,C.strategy=W,C.method=K,Ze(i)}r=[new ne(0,0,0,0,function(i,z){var K=65535;for(K>i.pending_buf_size-5&&(K=i.pending_buf_size-5);;){if(i.lookahead<=1){if(ce(i),i.lookahead===0&&z===v)return o;if(i.lookahead===0)break}i.strstart+=i.lookahead,i.lookahead=0;var f=i.block_start+K;if((i.strstart===0||i.strstart>=f)&&(i.lookahead=i.strstart-f,i.strstart=f,L(i,!1),i.strm.avail_out===0)||i.strstart-i.block_start>=i.w_size-$&&(L(i,!1),i.strm.avail_out===0))return o}return i.insert=0,z===X?(L(i,!0),i.strm.avail_out===0?ie:P):(i.strstart>i.block_start&&(L(i,!1),i.strm.avail_out),o)}),new ne(4,4,8,4,be),new ne(4,5,16,8,be),new ne(4,6,32,32,be),new ne(4,4,16,16,oe),new ne(8,16,32,32,oe),new ne(8,16,128,128,oe),new ne(8,32,128,256,oe),new ne(32,128,258,1024,oe),new ne(32,258,258,4096,oe)],s.deflateInit=function(i,z){return Xe(i,z,G,15,8,0)},s.deflateInit2=Xe,s.deflateReset=Ze,s.deflateResetKeep=ue,s.deflateSetHeader=function(i,z){return i&&i.state?i.state.wrap!==2?Z:(i.state.gzhead=z,m):Z},s.deflate=function(i,z){var K,f,p,W;if(!i||!i.state||5<z||z<0)return i?ae(i,Z):Z;if(f=i.state,!i.output||!i.input&&i.avail_in!==0||f.status===666&&z!==X)return ae(i,i.avail_out===0?-5:Z);if(f.strm=i,K=f.last_flush,f.last_flush=z,f.status===x)if(f.wrap===2)i.adler=0,q(f,31),q(f,139),q(f,8),f.gzhead?(q(f,(f.gzhead.text?1:0)+(f.gzhead.hcrc?2:0)+(f.gzhead.extra?4:0)+(f.gzhead.name?8:0)+(f.gzhead.comment?16:0)),q(f,255&f.gzhead.time),q(f,f.gzhead.time>>8&255),q(f,f.gzhead.time>>16&255),q(f,f.gzhead.time>>24&255),q(f,f.level===9?2:2<=f.strategy||f.level<2?4:0),q(f,255&f.gzhead.os),f.gzhead.extra&&f.gzhead.extra.length&&(q(f,255&f.gzhead.extra.length),q(f,f.gzhead.extra.length>>8&255)),f.gzhead.hcrc&&(i.adler=g(i.adler,f.pending_buf,f.pending,0)),f.gzindex=0,f.status=69):(q(f,0),q(f,0),q(f,0),q(f,0),q(f,0),q(f,f.level===9?2:2<=f.strategy||f.level<2?4:0),q(f,3),f.status=U);else{var F=G+(f.w_bits-8<<4)<<8;F|=(2<=f.strategy||f.level<2?0:f.level<6?1:f.level===6?2:3)<<6,f.strstart!==0&&(F|=32),F+=31-F%31,f.status=U,D(f,F),f.strstart!==0&&(D(f,i.adler>>>16),D(f,65535&i.adler)),i.adler=1}if(f.status===69)if(f.gzhead.extra){for(p=f.pending;f.gzindex<(65535&f.gzhead.extra.length)&&(f.pending!==f.pending_buf_size||(f.gzhead.hcrc&&f.pending>p&&(i.adler=g(i.adler,f.pending_buf,f.pending-p,p)),k(i),p=f.pending,f.pending!==f.pending_buf_size));)q(f,255&f.gzhead.extra[f.gzindex]),f.gzindex++;f.gzhead.hcrc&&f.pending>p&&(i.adler=g(i.adler,f.pending_buf,f.pending-p,p)),f.gzindex===f.gzhead.extra.length&&(f.gzindex=0,f.status=73)}else f.status=73;if(f.status===73)if(f.gzhead.name){p=f.pending;do{if(f.pending===f.pending_buf_size&&(f.gzhead.hcrc&&f.pending>p&&(i.adler=g(i.adler,f.pending_buf,f.pending-p,p)),k(i),p=f.pending,f.pending===f.pending_buf_size)){W=1;break}W=f.gzindex<f.gzhead.name.length?255&f.gzhead.name.charCodeAt(f.gzindex++):0,q(f,W)}while(W!==0);f.gzhead.hcrc&&f.pending>p&&(i.adler=g(i.adler,f.pending_buf,f.pending-p,p)),W===0&&(f.gzindex=0,f.status=91)}else f.status=91;if(f.status===91)if(f.gzhead.comment){p=f.pending;do{if(f.pending===f.pending_buf_size&&(f.gzhead.hcrc&&f.pending>p&&(i.adler=g(i.adler,f.pending_buf,f.pending-p,p)),k(i),p=f.pending,f.pending===f.pending_buf_size)){W=1;break}W=f.gzindex<f.gzhead.comment.length?255&f.gzhead.comment.charCodeAt(f.gzindex++):0,q(f,W)}while(W!==0);f.gzhead.hcrc&&f.pending>p&&(i.adler=g(i.adler,f.pending_buf,f.pending-p,p)),W===0&&(f.status=103)}else f.status=103;if(f.status===103&&(f.gzhead.hcrc?(f.pending+2>f.pending_buf_size&&k(i),f.pending+2<=f.pending_buf_size&&(q(f,255&i.adler),q(f,i.adler>>8&255),i.adler=0,f.status=U)):f.status=U),f.pending!==0){if(k(i),i.avail_out===0)return f.last_flush=-1,m}else if(i.avail_in===0&&N(z)<=N(K)&&z!==X)return ae(i,-5);if(f.status===666&&i.avail_in!==0)return ae(i,-5);if(i.avail_in!==0||f.lookahead!==0||z!==v&&f.status!==666){var C=f.strategy===2?(function(I,E){for(var O;;){if(I.lookahead===0&&(ce(I),I.lookahead===0)){if(E===v)return o;break}if(I.match_length=0,O=a._tr_tally(I,0,I.window[I.strstart]),I.lookahead--,I.strstart++,O&&(L(I,!1),I.strm.avail_out===0))return o}return I.insert=0,E===X?(L(I,!0),I.strm.avail_out===0?ie:P):I.last_lit&&(L(I,!1),I.strm.avail_out===0)?o:Y})(f,z):f.strategy===3?(function(I,E){for(var O,M,A,de,se=I.window;;){if(I.lookahead<=Q){if(ce(I),I.lookahead<=Q&&E===v)return o;if(I.lookahead===0)break}if(I.match_length=0,I.lookahead>=R&&0<I.strstart&&(M=se[A=I.strstart-1])===se[++A]&&M===se[++A]&&M===se[++A]){de=I.strstart+Q;do;while(M===se[++A]&&M===se[++A]&&M===se[++A]&&M===se[++A]&&M===se[++A]&&M===se[++A]&&M===se[++A]&&M===se[++A]&&A<de);I.match_length=Q-(de-A),I.match_length>I.lookahead&&(I.match_length=I.lookahead)}if(I.match_length>=R?(O=a._tr_tally(I,1,I.match_length-R),I.lookahead-=I.match_length,I.strstart+=I.match_length,I.match_length=0):(O=a._tr_tally(I,0,I.window[I.strstart]),I.lookahead--,I.strstart++),O&&(L(I,!1),I.strm.avail_out===0))return o}return I.insert=0,E===X?(L(I,!0),I.strm.avail_out===0?ie:P):I.last_lit&&(L(I,!1),I.strm.avail_out===0)?o:Y})(f,z):r[f.level].func(f,z);if(C!==ie&&C!==P||(f.status=666),C===o||C===ie)return i.avail_out===0&&(f.last_flush=-1),m;if(C===Y&&(z===1?a._tr_align(f):z!==5&&(a._tr_stored_block(f,0,0,!1),z===3&&(te(f.head),f.lookahead===0&&(f.strstart=0,f.block_start=0,f.insert=0))),k(i),i.avail_out===0))return f.last_flush=-1,m}return z!==X?m:f.wrap<=0?1:(f.wrap===2?(q(f,255&i.adler),q(f,i.adler>>8&255),q(f,i.adler>>16&255),q(f,i.adler>>24&255),q(f,255&i.total_in),q(f,i.total_in>>8&255),q(f,i.total_in>>16&255),q(f,i.total_in>>24&255)):(D(f,i.adler>>>16),D(f,65535&i.adler)),k(i),0<f.wrap&&(f.wrap=-f.wrap),f.pending!==0?m:1)},s.deflateEnd=function(i){var z;return i&&i.state?(z=i.state.status)!==x&&z!==69&&z!==73&&z!==91&&z!==103&&z!==U&&z!==666?ae(i,Z):(i.state=null,z===U?ae(i,-3):m):Z},s.deflateSetDictionary=function(i,z){var K,f,p,W,F,C,I,E,O=z.length;if(!i||!i.state||(W=(K=i.state).wrap)===2||W===1&&K.status!==x||K.lookahead)return Z;for(W===1&&(i.adler=u(i.adler,z,O,0)),K.wrap=0,O>=K.w_size&&(W===0&&(te(K.head),K.strstart=0,K.block_start=0,K.insert=0),E=new l.Buf8(K.w_size),l.arraySet(E,z,O-K.w_size,K.w_size,0),z=E,O=K.w_size),F=i.avail_in,C=i.next_in,I=i.input,i.avail_in=O,i.next_in=0,i.input=z,ce(K);K.lookahead>=R;){for(f=K.strstart,p=K.lookahead-(R-1);K.ins_h=(K.ins_h<<K.hash_shift^K.window[f+R-1])&K.hash_mask,K.prev[f&K.w_mask]=K.head[K.ins_h],K.head[K.ins_h]=f,f++,--p;);K.strstart=f,K.lookahead=R-1,ce(K)}return K.strstart+=K.lookahead,K.block_start=K.strstart,K.insert=K.lookahead,K.lookahead=0,K.match_length=K.prev_length=R-1,K.match_available=0,i.next_in=C,i.input=I,i.avail_in=F,K.wrap=W,m},s.deflateInfo="pako deflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./messages":51,"./trees":52}],47:[function(t,c,s){"use strict";c.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(t,c,s){"use strict";c.exports=function(r,l){var a=r.state,u=r.next_in,g,w,v,X,m,Z,d,b,h,G,S,y,V,J,T,_,R,Q,$,x,U,o=r.input,Y;g=u+(r.avail_in-5),w=r.next_out,Y=r.output,v=w-(l-r.avail_out),X=w+(r.avail_out-257),m=a.dmax,Z=a.wsize,d=a.whave,b=a.wnext,h=a.window,G=a.hold,S=a.bits,y=a.lencode,V=a.distcode,J=(1<<a.lenbits)-1,T=(1<<a.distbits)-1;e:do{S<15&&(G+=o[u++]<<S,S+=8,G+=o[u++]<<S,S+=8),_=y[G&J];t:for(;;){if(G>>>=R=_>>>24,S-=R,(R=_>>>16&255)===0)Y[w++]=65535&_;else{if(!(16&R)){if((64&R)==0){_=y[(65535&_)+(G&(1<<R)-1)];continue t}if(32&R){a.mode=12;break e}r.msg="invalid literal/length code",a.mode=30;break e}Q=65535&_,(R&=15)&&(S<R&&(G+=o[u++]<<S,S+=8),Q+=G&(1<<R)-1,G>>>=R,S-=R),S<15&&(G+=o[u++]<<S,S+=8,G+=o[u++]<<S,S+=8),_=V[G&T];i:for(;;){if(G>>>=R=_>>>24,S-=R,!(16&(R=_>>>16&255))){if((64&R)==0){_=V[(65535&_)+(G&(1<<R)-1)];continue i}r.msg="invalid distance code",a.mode=30;break e}if($=65535&_,S<(R&=15)&&(G+=o[u++]<<S,(S+=8)<R&&(G+=o[u++]<<S,S+=8)),m<($+=G&(1<<R)-1)){r.msg="invalid distance too far back",a.mode=30;break e}if(G>>>=R,S-=R,(R=w-v)<$){if(d<(R=$-R)&&a.sane){r.msg="invalid distance too far back",a.mode=30;break e}if(U=h,(x=0)===b){if(x+=Z-R,R<Q){for(Q-=R;Y[w++]=h[x++],--R;);x=w-$,U=Y}}else if(b<R){if(x+=Z+b-R,(R-=b)<Q){for(Q-=R;Y[w++]=h[x++],--R;);if(x=0,b<Q){for(Q-=R=b;Y[w++]=h[x++],--R;);x=w-$,U=Y}}}else if(x+=b-R,R<Q){for(Q-=R;Y[w++]=h[x++],--R;);x=w-$,U=Y}for(;2<Q;)Y[w++]=U[x++],Y[w++]=U[x++],Y[w++]=U[x++],Q-=3;Q&&(Y[w++]=U[x++],1<Q&&(Y[w++]=U[x++]))}else{for(x=w-$;Y[w++]=Y[x++],Y[w++]=Y[x++],Y[w++]=Y[x++],2<(Q-=3););Q&&(Y[w++]=Y[x++],1<Q&&(Y[w++]=Y[x++]))}break}}break}}while(u<g&&w<X);u-=Q=S>>3,G&=(1<<(S-=Q<<3))-1,r.next_in=u,r.next_out=w,r.avail_in=u<g?g-u+5:5-(u-g),r.avail_out=w<X?X-w+257:257-(w-X),a.hold=G,a.bits=S}},{}],49:[function(t,c,s){"use strict";var r=t("../utils/common"),l=t("./adler32"),a=t("./crc32"),u=t("./inffast"),g=t("./inftrees"),w=1,v=2,X=0,m=-2,Z=1,d=852,b=592;function h(x){return(x>>>24&255)+(x>>>8&65280)+((65280&x)<<8)+((255&x)<<24)}function G(){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 r.Buf16(320),this.work=new r.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function S(x){var U;return x&&x.state?(U=x.state,x.total_in=x.total_out=U.total=0,x.msg="",U.wrap&&(x.adler=1&U.wrap),U.mode=Z,U.last=0,U.havedict=0,U.dmax=32768,U.head=null,U.hold=0,U.bits=0,U.lencode=U.lendyn=new r.Buf32(d),U.distcode=U.distdyn=new r.Buf32(b),U.sane=1,U.back=-1,X):m}function y(x){var U;return x&&x.state?((U=x.state).wsize=0,U.whave=0,U.wnext=0,S(x)):m}function V(x,U){var o,Y;return x&&x.state?(Y=x.state,U<0?(o=0,U=-U):(o=1+(U>>4),U<48&&(U&=15)),U&&(U<8||15<U)?m:(Y.window!==null&&Y.wbits!==U&&(Y.window=null),Y.wrap=o,Y.wbits=U,y(x))):m}function J(x,U){var o,Y;return x?(Y=new G,(x.state=Y).window=null,(o=V(x,U))!==X&&(x.state=null),o):m}var T,_,R=!0;function Q(x){if(R){var U;for(T=new r.Buf32(512),_=new r.Buf32(32),U=0;U<144;)x.lens[U++]=8;for(;U<256;)x.lens[U++]=9;for(;U<280;)x.lens[U++]=7;for(;U<288;)x.lens[U++]=8;for(g(w,x.lens,0,288,T,0,x.work,{bits:9}),U=0;U<32;)x.lens[U++]=5;g(v,x.lens,0,32,_,0,x.work,{bits:5}),R=!1}x.lencode=T,x.lenbits=9,x.distcode=_,x.distbits=5}function $(x,U,o,Y){var ie,P=x.state;return P.window===null&&(P.wsize=1<<P.wbits,P.wnext=0,P.whave=0,P.window=new r.Buf8(P.wsize)),Y>=P.wsize?(r.arraySet(P.window,U,o-P.wsize,P.wsize,0),P.wnext=0,P.whave=P.wsize):(Y<(ie=P.wsize-P.wnext)&&(ie=Y),r.arraySet(P.window,U,o-Y,ie,P.wnext),(Y-=ie)?(r.arraySet(P.window,U,o-Y,Y,0),P.wnext=Y,P.whave=P.wsize):(P.wnext+=ie,P.wnext===P.wsize&&(P.wnext=0),P.whave<P.wsize&&(P.whave+=ie))),0}s.inflateReset=y,s.inflateReset2=V,s.inflateResetKeep=S,s.inflateInit=function(x){return J(x,15)},s.inflateInit2=J,s.inflate=function(x,U){var o,Y,ie,P,ae,N,te,k,L,q,D,B,ce,be,oe,ne,pe,ue,Ze,Xe,i,z,K,f,p=0,W=new r.Buf8(4),F=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!x||!x.state||!x.output||!x.input&&x.avail_in!==0)return m;(o=x.state).mode===12&&(o.mode=13),ae=x.next_out,ie=x.output,te=x.avail_out,P=x.next_in,Y=x.input,N=x.avail_in,k=o.hold,L=o.bits,q=N,D=te,z=X;e:for(;;)switch(o.mode){case Z:if(o.wrap===0){o.mode=13;break}for(;L<16;){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}if(2&o.wrap&&k===35615){W[o.check=0]=255&k,W[1]=k>>>8&255,o.check=a(o.check,W,2,0),L=k=0,o.mode=2;break}if(o.flags=0,o.head&&(o.head.done=!1),!(1&o.wrap)||(((255&k)<<8)+(k>>8))%31){x.msg="incorrect header check",o.mode=30;break}if((15&k)!=8){x.msg="unknown compression method",o.mode=30;break}if(L-=4,i=8+(15&(k>>>=4)),o.wbits===0)o.wbits=i;else if(i>o.wbits){x.msg="invalid window size",o.mode=30;break}o.dmax=1<<i,x.adler=o.check=1,o.mode=512&k?10:12,L=k=0;break;case 2:for(;L<16;){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}if(o.flags=k,(255&o.flags)!=8){x.msg="unknown compression method",o.mode=30;break}if(57344&o.flags){x.msg="unknown header flags set",o.mode=30;break}o.head&&(o.head.text=k>>8&1),512&o.flags&&(W[0]=255&k,W[1]=k>>>8&255,o.check=a(o.check,W,2,0)),L=k=0,o.mode=3;case 3:for(;L<32;){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}o.head&&(o.head.time=k),512&o.flags&&(W[0]=255&k,W[1]=k>>>8&255,W[2]=k>>>16&255,W[3]=k>>>24&255,o.check=a(o.check,W,4,0)),L=k=0,o.mode=4;case 4:for(;L<16;){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}o.head&&(o.head.xflags=255&k,o.head.os=k>>8),512&o.flags&&(W[0]=255&k,W[1]=k>>>8&255,o.check=a(o.check,W,2,0)),L=k=0,o.mode=5;case 5:if(1024&o.flags){for(;L<16;){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}o.length=k,o.head&&(o.head.extra_len=k),512&o.flags&&(W[0]=255&k,W[1]=k>>>8&255,o.check=a(o.check,W,2,0)),L=k=0}else o.head&&(o.head.extra=null);o.mode=6;case 6:if(1024&o.flags&&(N<(B=o.length)&&(B=N),B&&(o.head&&(i=o.head.extra_len-o.length,o.head.extra||(o.head.extra=new Array(o.head.extra_len)),r.arraySet(o.head.extra,Y,P,B,i)),512&o.flags&&(o.check=a(o.check,Y,B,P)),N-=B,P+=B,o.length-=B),o.length))break e;o.length=0,o.mode=7;case 7:if(2048&o.flags){if(N===0)break e;for(B=0;i=Y[P+B++],o.head&&i&&o.length<65536&&(o.head.name+=String.fromCharCode(i)),i&&B<N;);if(512&o.flags&&(o.check=a(o.check,Y,B,P)),N-=B,P+=B,i)break e}else o.head&&(o.head.name=null);o.length=0,o.mode=8;case 8:if(4096&o.flags){if(N===0)break e;for(B=0;i=Y[P+B++],o.head&&i&&o.length<65536&&(o.head.comment+=String.fromCharCode(i)),i&&B<N;);if(512&o.flags&&(o.check=a(o.check,Y,B,P)),N-=B,P+=B,i)break e}else o.head&&(o.head.comment=null);o.mode=9;case 9:if(512&o.flags){for(;L<16;){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}if(k!==(65535&o.check)){x.msg="header crc mismatch",o.mode=30;break}L=k=0}o.head&&(o.head.hcrc=o.flags>>9&1,o.head.done=!0),x.adler=o.check=0,o.mode=12;break;case 10:for(;L<32;){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}x.adler=o.check=h(k),L=k=0,o.mode=11;case 11:if(o.havedict===0)return x.next_out=ae,x.avail_out=te,x.next_in=P,x.avail_in=N,o.hold=k,o.bits=L,2;x.adler=o.check=1,o.mode=12;case 12:if(U===5||U===6)break e;case 13:if(o.last){k>>>=7&L,L-=7&L,o.mode=27;break}for(;L<3;){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}switch(o.last=1&k,L-=1,3&(k>>>=1)){case 0:o.mode=14;break;case 1:if(Q(o),o.mode=20,U!==6)break;k>>>=2,L-=2;break e;case 2:o.mode=17;break;case 3:x.msg="invalid block type",o.mode=30}k>>>=2,L-=2;break;case 14:for(k>>>=7&L,L-=7&L;L<32;){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}if((65535&k)!=(k>>>16^65535)){x.msg="invalid stored block lengths",o.mode=30;break}if(o.length=65535&k,L=k=0,o.mode=15,U===6)break e;case 15:o.mode=16;case 16:if(B=o.length){if(N<B&&(B=N),te<B&&(B=te),B===0)break e;r.arraySet(ie,Y,P,B,ae),N-=B,P+=B,te-=B,ae+=B,o.length-=B;break}o.mode=12;break;case 17:for(;L<14;){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}if(o.nlen=257+(31&k),k>>>=5,L-=5,o.ndist=1+(31&k),k>>>=5,L-=5,o.ncode=4+(15&k),k>>>=4,L-=4,286<o.nlen||30<o.ndist){x.msg="too many length or distance symbols",o.mode=30;break}o.have=0,o.mode=18;case 18:for(;o.have<o.ncode;){for(;L<3;){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}o.lens[F[o.have++]]=7&k,k>>>=3,L-=3}for(;o.have<19;)o.lens[F[o.have++]]=0;if(o.lencode=o.lendyn,o.lenbits=7,K={bits:o.lenbits},z=g(0,o.lens,0,19,o.lencode,0,o.work,K),o.lenbits=K.bits,z){x.msg="invalid code lengths set",o.mode=30;break}o.have=0,o.mode=19;case 19:for(;o.have<o.nlen+o.ndist;){for(;ne=(p=o.lencode[k&(1<<o.lenbits)-1])>>>16&255,pe=65535&p,!((oe=p>>>24)<=L);){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}if(pe<16)k>>>=oe,L-=oe,o.lens[o.have++]=pe;else{if(pe===16){for(f=oe+2;L<f;){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}if(k>>>=oe,L-=oe,o.have===0){x.msg="invalid bit length repeat",o.mode=30;break}i=o.lens[o.have-1],B=3+(3&k),k>>>=2,L-=2}else if(pe===17){for(f=oe+3;L<f;){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}L-=oe,i=0,B=3+(7&(k>>>=oe)),k>>>=3,L-=3}else{for(f=oe+7;L<f;){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}L-=oe,i=0,B=11+(127&(k>>>=oe)),k>>>=7,L-=7}if(o.have+B>o.nlen+o.ndist){x.msg="invalid bit length repeat",o.mode=30;break}for(;B--;)o.lens[o.have++]=i}}if(o.mode===30)break;if(o.lens[256]===0){x.msg="invalid code -- missing end-of-block",o.mode=30;break}if(o.lenbits=9,K={bits:o.lenbits},z=g(w,o.lens,0,o.nlen,o.lencode,0,o.work,K),o.lenbits=K.bits,z){x.msg="invalid literal/lengths set",o.mode=30;break}if(o.distbits=6,o.distcode=o.distdyn,K={bits:o.distbits},z=g(v,o.lens,o.nlen,o.ndist,o.distcode,0,o.work,K),o.distbits=K.bits,z){x.msg="invalid distances set",o.mode=30;break}if(o.mode=20,U===6)break e;case 20:o.mode=21;case 21:if(6<=N&&258<=te){x.next_out=ae,x.avail_out=te,x.next_in=P,x.avail_in=N,o.hold=k,o.bits=L,u(x,D),ae=x.next_out,ie=x.output,te=x.avail_out,P=x.next_in,Y=x.input,N=x.avail_in,k=o.hold,L=o.bits,o.mode===12&&(o.back=-1);break}for(o.back=0;ne=(p=o.lencode[k&(1<<o.lenbits)-1])>>>16&255,pe=65535&p,!((oe=p>>>24)<=L);){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}if(ne&&(240&ne)==0){for(ue=oe,Ze=ne,Xe=pe;ne=(p=o.lencode[Xe+((k&(1<<ue+Ze)-1)>>ue)])>>>16&255,pe=65535&p,!(ue+(oe=p>>>24)<=L);){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}k>>>=ue,L-=ue,o.back+=ue}if(k>>>=oe,L-=oe,o.back+=oe,o.length=pe,ne===0){o.mode=26;break}if(32&ne){o.back=-1,o.mode=12;break}if(64&ne){x.msg="invalid literal/length code",o.mode=30;break}o.extra=15&ne,o.mode=22;case 22:if(o.extra){for(f=o.extra;L<f;){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}o.length+=k&(1<<o.extra)-1,k>>>=o.extra,L-=o.extra,o.back+=o.extra}o.was=o.length,o.mode=23;case 23:for(;ne=(p=o.distcode[k&(1<<o.distbits)-1])>>>16&255,pe=65535&p,!((oe=p>>>24)<=L);){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}if((240&ne)==0){for(ue=oe,Ze=ne,Xe=pe;ne=(p=o.distcode[Xe+((k&(1<<ue+Ze)-1)>>ue)])>>>16&255,pe=65535&p,!(ue+(oe=p>>>24)<=L);){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}k>>>=ue,L-=ue,o.back+=ue}if(k>>>=oe,L-=oe,o.back+=oe,64&ne){x.msg="invalid distance code",o.mode=30;break}o.offset=pe,o.extra=15&ne,o.mode=24;case 24:if(o.extra){for(f=o.extra;L<f;){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}o.offset+=k&(1<<o.extra)-1,k>>>=o.extra,L-=o.extra,o.back+=o.extra}if(o.offset>o.dmax){x.msg="invalid distance too far back",o.mode=30;break}o.mode=25;case 25:if(te===0)break e;if(B=D-te,o.offset>B){if((B=o.offset-B)>o.whave&&o.sane){x.msg="invalid distance too far back",o.mode=30;break}ce=B>o.wnext?(B-=o.wnext,o.wsize-B):o.wnext-B,B>o.length&&(B=o.length),be=o.window}else be=ie,ce=ae-o.offset,B=o.length;for(te<B&&(B=te),te-=B,o.length-=B;ie[ae++]=be[ce++],--B;);o.length===0&&(o.mode=21);break;case 26:if(te===0)break e;ie[ae++]=o.length,te--,o.mode=21;break;case 27:if(o.wrap){for(;L<32;){if(N===0)break e;N--,k|=Y[P++]<<L,L+=8}if(D-=te,x.total_out+=D,o.total+=D,D&&(x.adler=o.check=o.flags?a(o.check,ie,D,ae-D):l(o.check,ie,D,ae-D)),D=te,(o.flags?k:h(k))!==o.check){x.msg="incorrect data check",o.mode=30;break}L=k=0}o.mode=28;case 28:if(o.wrap&&o.flags){for(;L<32;){if(N===0)break e;N--,k+=Y[P++]<<L,L+=8}if(k!==(4294967295&o.total)){x.msg="incorrect length check",o.mode=30;break}L=k=0}o.mode=29;case 29:z=1;break e;case 30:z=-3;break e;case 31:return-4;default:return m}return x.next_out=ae,x.avail_out=te,x.next_in=P,x.avail_in=N,o.hold=k,o.bits=L,(o.wsize||D!==x.avail_out&&o.mode<30&&(o.mode<27||U!==4))&&$(x,x.output,x.next_out,D-x.avail_out)?(o.mode=31,-4):(q-=x.avail_in,D-=x.avail_out,x.total_in+=q,x.total_out+=D,o.total+=D,o.wrap&&D&&(x.adler=o.check=o.flags?a(o.check,ie,D,x.next_out-D):l(o.check,ie,D,x.next_out-D)),x.data_type=o.bits+(o.last?64:0)+(o.mode===12?128:0)+(o.mode===20||o.mode===15?256:0),(q==0&&D===0||U===4)&&z===X&&(z=-5),z)},s.inflateEnd=function(x){if(!x||!x.state)return m;var U=x.state;return U.window&&(U.window=null),x.state=null,X},s.inflateGetHeader=function(x,U){var o;return x&&x.state?(2&(o=x.state).wrap)==0?m:((o.head=U).done=!1,X):m},s.inflateSetDictionary=function(x,U){var o,Y=U.length;return x&&x.state?(o=x.state).wrap!==0&&o.mode!==11?m:o.mode===11&&l(1,U,Y,0)!==o.check?-3:$(x,U,Y,Y)?(o.mode=31,-4):(o.havedict=1,X):m},s.inflateInfo="pako inflate (from Nodeca project)"},{"../utils/common":41,"./adler32":43,"./crc32":45,"./inffast":48,"./inftrees":50}],50:[function(t,c,s){"use strict";var r=t("../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],a=[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],u=[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],g=[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];c.exports=function(w,v,X,m,Z,d,b,h){var G,S,y,V,J,T,_,R,Q,$=h.bits,x=0,U=0,o=0,Y=0,ie=0,P=0,ae=0,N=0,te=0,k=0,L=null,q=0,D=new r.Buf16(16),B=new r.Buf16(16),ce=null,be=0;for(x=0;x<=15;x++)D[x]=0;for(U=0;U<m;U++)D[v[X+U]]++;for(ie=$,Y=15;1<=Y&&D[Y]===0;Y--);if(Y<ie&&(ie=Y),Y===0)return Z[d++]=20971520,Z[d++]=20971520,h.bits=1,0;for(o=1;o<Y&&D[o]===0;o++);for(ie<o&&(ie=o),x=N=1;x<=15;x++)if(N<<=1,(N-=D[x])<0)return-1;if(0<N&&(w===0||Y!==1))return-1;for(B[1]=0,x=1;x<15;x++)B[x+1]=B[x]+D[x];for(U=0;U<m;U++)v[X+U]!==0&&(b[B[v[X+U]]++]=U);if(T=w===0?(L=ce=b,19):w===1?(L=l,q-=257,ce=a,be-=257,256):(L=u,ce=g,-1),x=o,J=d,ae=U=k=0,y=-1,V=(te=1<<(P=ie))-1,w===1&&852<te||w===2&&592<te)return 1;for(;;){for(_=x-ae,Q=b[U]<T?(R=0,b[U]):b[U]>T?(R=ce[be+b[U]],L[q+b[U]]):(R=96,0),G=1<<x-ae,o=S=1<<P;Z[J+(k>>ae)+(S-=G)]=_<<24|R<<16|Q|0,S!==0;);for(G=1<<x-1;k&G;)G>>=1;if(G!==0?(k&=G-1,k+=G):k=0,U++,--D[x]==0){if(x===Y)break;x=v[X+b[U]]}if(ie<x&&(k&V)!==y){for(ae===0&&(ae=ie),J+=o,N=1<<(P=x-ae);P+ae<Y&&!((N-=D[P+ae])<=0);)P++,N<<=1;if(te+=1<<P,w===1&&852<te||w===2&&592<te)return 1;Z[y=k&V]=ie<<24|P<<16|J-d|0}}return k!==0&&(Z[J+k]=x-ae<<24|4194304),h.bits=ie,0}},{"../utils/common":41}],51:[function(t,c,s){"use strict";c.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(t,c,s){"use strict";var r=t("../utils/common"),l=0,a=1;function u(p){for(var W=p.length;0<=--W;)p[W]=0}var g=0,w=29,v=256,X=v+1+w,m=30,Z=19,d=2*X+1,b=15,h=16,G=7,S=256,y=16,V=17,J=18,T=[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],_=[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],Q=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],$=new Array(2*(X+2));u($);var x=new Array(2*m);u(x);var U=new Array(512);u(U);var o=new Array(256);u(o);var Y=new Array(w);u(Y);var ie,P,ae,N=new Array(m);function te(p,W,F,C,I){this.static_tree=p,this.extra_bits=W,this.extra_base=F,this.elems=C,this.max_length=I,this.has_stree=p&&p.length}function k(p,W){this.dyn_tree=p,this.max_code=0,this.stat_desc=W}function L(p){return p<256?U[p]:U[256+(p>>>7)]}function q(p,W){p.pending_buf[p.pending++]=255&W,p.pending_buf[p.pending++]=W>>>8&255}function D(p,W,F){p.bi_valid>h-F?(p.bi_buf|=W<<p.bi_valid&65535,q(p,p.bi_buf),p.bi_buf=W>>h-p.bi_valid,p.bi_valid+=F-h):(p.bi_buf|=W<<p.bi_valid&65535,p.bi_valid+=F)}function B(p,W,F){D(p,F[2*W],F[2*W+1])}function ce(p,W){for(var F=0;F|=1&p,p>>>=1,F<<=1,0<--W;);return F>>>1}function be(p,W,F){var C,I,E=new Array(b+1),O=0;for(C=1;C<=b;C++)E[C]=O=O+F[C-1]<<1;for(I=0;I<=W;I++){var M=p[2*I+1];M!==0&&(p[2*I]=ce(E[M]++,M))}}function oe(p){var W;for(W=0;W<X;W++)p.dyn_ltree[2*W]=0;for(W=0;W<m;W++)p.dyn_dtree[2*W]=0;for(W=0;W<Z;W++)p.bl_tree[2*W]=0;p.dyn_ltree[2*S]=1,p.opt_len=p.static_len=0,p.last_lit=p.matches=0}function ne(p){8<p.bi_valid?q(p,p.bi_buf):0<p.bi_valid&&(p.pending_buf[p.pending++]=p.bi_buf),p.bi_buf=0,p.bi_valid=0}function pe(p,W,F,C){var I=2*W,E=2*F;return p[I]<p[E]||p[I]===p[E]&&C[W]<=C[F]}function ue(p,W,F){for(var C=p.heap[F],I=F<<1;I<=p.heap_len&&(I<p.heap_len&&pe(W,p.heap[I+1],p.heap[I],p.depth)&&I++,!pe(W,C,p.heap[I],p.depth));)p.heap[F]=p.heap[I],F=I,I<<=1;p.heap[F]=C}function Ze(p,W,F){var C,I,E,O,M=0;if(p.last_lit!==0)for(;C=p.pending_buf[p.d_buf+2*M]<<8|p.pending_buf[p.d_buf+2*M+1],I=p.pending_buf[p.l_buf+M],M++,C===0?B(p,I,W):(B(p,(E=o[I])+v+1,W),(O=T[E])!==0&&D(p,I-=Y[E],O),B(p,E=L(--C),F),(O=_[E])!==0&&D(p,C-=N[E],O)),M<p.last_lit;);B(p,S,W)}function Xe(p,W){var F,C,I,E=W.dyn_tree,O=W.stat_desc.static_tree,M=W.stat_desc.has_stree,A=W.stat_desc.elems,de=-1;for(p.heap_len=0,p.heap_max=d,F=0;F<A;F++)E[2*F]!==0?(p.heap[++p.heap_len]=de=F,p.depth[F]=0):E[2*F+1]=0;for(;p.heap_len<2;)E[2*(I=p.heap[++p.heap_len]=de<2?++de:0)]=1,p.depth[I]=0,p.opt_len--,M&&(p.static_len-=O[2*I+1]);for(W.max_code=de,F=p.heap_len>>1;1<=F;F--)ue(p,E,F);for(I=A;F=p.heap[1],p.heap[1]=p.heap[p.heap_len--],ue(p,E,1),C=p.heap[1],p.heap[--p.heap_max]=F,p.heap[--p.heap_max]=C,E[2*I]=E[2*F]+E[2*C],p.depth[I]=(p.depth[F]>=p.depth[C]?p.depth[F]:p.depth[C])+1,E[2*F+1]=E[2*C+1]=I,p.heap[1]=I++,ue(p,E,1),2<=p.heap_len;);p.heap[--p.heap_max]=p.heap[1],(function(se,ge){var Re,fe,Se,he,Pe,qe,we=ge.dyn_tree,vt=ge.max_code,Zi=ge.stat_desc.static_tree,Gt=ge.stat_desc.has_stree,$e=ge.stat_desc.extra_bits,Xt=ge.stat_desc.extra_base,ve=ge.stat_desc.max_length,Le=0;for(he=0;he<=b;he++)se.bl_count[he]=0;for(we[2*se.heap[se.heap_max]+1]=0,Re=se.heap_max+1;Re<d;Re++)ve<(he=we[2*we[2*(fe=se.heap[Re])+1]+1]+1)&&(he=ve,Le++),we[2*fe+1]=he,vt<fe||(se.bl_count[he]++,Pe=0,Xt<=fe&&(Pe=$e[fe-Xt]),qe=we[2*fe],se.opt_len+=qe*(he+Pe),Gt&&(se.static_len+=qe*(Zi[2*fe+1]+Pe)));if(Le!==0){do{for(he=ve-1;se.bl_count[he]===0;)he--;se.bl_count[he]--,se.bl_count[he+1]+=2,se.bl_count[ve]--,Le-=2}while(0<Le);for(he=ve;he!==0;he--)for(fe=se.bl_count[he];fe!==0;)vt<(Se=se.heap[--Re])||(we[2*Se+1]!==he&&(se.opt_len+=(he-we[2*Se+1])*we[2*Se],we[2*Se+1]=he),fe--)}})(p,W),be(E,de,p.bl_count)}function i(p,W,F){var C,I,E=-1,O=W[1],M=0,A=7,de=4;for(O===0&&(A=138,de=3),W[2*(F+1)+1]=65535,C=0;C<=F;C++)I=O,O=W[2*(C+1)+1],++M<A&&I===O||(M<de?p.bl_tree[2*I]+=M:I!==0?(I!==E&&p.bl_tree[2*I]++,p.bl_tree[2*y]++):M<=10?p.bl_tree[2*V]++:p.bl_tree[2*J]++,E=I,de=(M=0)===O?(A=138,3):I===O?(A=6,3):(A=7,4))}function z(p,W,F){var C,I,E=-1,O=W[1],M=0,A=7,de=4;for(O===0&&(A=138,de=3),C=0;C<=F;C++)if(I=O,O=W[2*(C+1)+1],!(++M<A&&I===O)){if(M<de)for(;B(p,I,p.bl_tree),--M!=0;);else I!==0?(I!==E&&(B(p,I,p.bl_tree),M--),B(p,y,p.bl_tree),D(p,M-3,2)):M<=10?(B(p,V,p.bl_tree),D(p,M-3,3)):(B(p,J,p.bl_tree),D(p,M-11,7));E=I,de=(M=0)===O?(A=138,3):I===O?(A=6,3):(A=7,4)}}u(N);var K=!1;function f(p,W,F,C){D(p,(g<<1)+(C?1:0),3),(function(I,E,O,M){ne(I),M&&(q(I,O),q(I,~O)),r.arraySet(I.pending_buf,I.window,E,O,I.pending),I.pending+=O})(p,W,F,!0)}s._tr_init=function(p){K||((function(){var W,F,C,I,E,O=new Array(b+1);for(I=C=0;I<w-1;I++)for(Y[I]=C,W=0;W<1<<T[I];W++)o[C++]=I;for(o[C-1]=I,I=E=0;I<16;I++)for(N[I]=E,W=0;W<1<<_[I];W++)U[E++]=I;for(E>>=7;I<m;I++)for(N[I]=E<<7,W=0;W<1<<_[I]-7;W++)U[256+E++]=I;for(F=0;F<=b;F++)O[F]=0;for(W=0;W<=143;)$[2*W+1]=8,W++,O[8]++;for(;W<=255;)$[2*W+1]=9,W++,O[9]++;for(;W<=279;)$[2*W+1]=7,W++,O[7]++;for(;W<=287;)$[2*W+1]=8,W++,O[8]++;for(be($,X+1,O),W=0;W<m;W++)x[2*W+1]=5,x[2*W]=ce(W,5);ie=new te($,T,v+1,X,b),P=new te(x,_,0,m,b),ae=new te(new Array(0),R,0,Z,G)})(),K=!0),p.l_desc=new k(p.dyn_ltree,ie),p.d_desc=new k(p.dyn_dtree,P),p.bl_desc=new k(p.bl_tree,ae),p.bi_buf=0,p.bi_valid=0,oe(p)},s._tr_stored_block=f,s._tr_flush_block=function(p,W,F,C){var I,E,O=0;0<p.level?(p.strm.data_type===2&&(p.strm.data_type=(function(M){var A,de=4093624447;for(A=0;A<=31;A++,de>>>=1)if(1&de&&M.dyn_ltree[2*A]!==0)return l;if(M.dyn_ltree[18]!==0||M.dyn_ltree[20]!==0||M.dyn_ltree[26]!==0)return a;for(A=32;A<v;A++)if(M.dyn_ltree[2*A]!==0)return a;return l})(p)),Xe(p,p.l_desc),Xe(p,p.d_desc),O=(function(M){var A;for(i(M,M.dyn_ltree,M.l_desc.max_code),i(M,M.dyn_dtree,M.d_desc.max_code),Xe(M,M.bl_desc),A=Z-1;3<=A&&M.bl_tree[2*Q[A]+1]===0;A--);return M.opt_len+=3*(A+1)+5+5+4,A})(p),I=p.opt_len+3+7>>>3,(E=p.static_len+3+7>>>3)<=I&&(I=E)):I=E=F+5,F+4<=I&&W!==-1?f(p,W,F,C):p.strategy===4||E===I?(D(p,2+(C?1:0),3),Ze(p,$,x)):(D(p,4+(C?1:0),3),(function(M,A,de,se){var ge;for(D(M,A-257,5),D(M,de-1,5),D(M,se-4,4),ge=0;ge<se;ge++)D(M,M.bl_tree[2*Q[ge]+1],3);z(M,M.dyn_ltree,A-1),z(M,M.dyn_dtree,de-1)})(p,p.l_desc.max_code+1,p.d_desc.max_code+1,O+1),Ze(p,p.dyn_ltree,p.dyn_dtree)),oe(p),C&&ne(p)},s._tr_tally=function(p,W,F){return p.pending_buf[p.d_buf+2*p.last_lit]=W>>>8&255,p.pending_buf[p.d_buf+2*p.last_lit+1]=255&W,p.pending_buf[p.l_buf+p.last_lit]=255&F,p.last_lit++,W===0?p.dyn_ltree[2*F]++:(p.matches++,W--,p.dyn_ltree[2*(o[F]+v+1)]++,p.dyn_dtree[2*L(W)]++),p.last_lit===p.lit_bufsize-1},s._tr_align=function(p){D(p,2,3),B(p,S,$),(function(W){W.bi_valid===16?(q(W,W.bi_buf),W.bi_buf=0,W.bi_valid=0):8<=W.bi_valid&&(W.pending_buf[W.pending++]=255&W.bi_buf,W.bi_buf>>=8,W.bi_valid-=8)})(p)}},{"../utils/common":41}],53:[function(t,c,s){"use strict";c.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(t,c,s){(function(r){(function(l,a){"use strict";if(!l.setImmediate){var u,g,w,v,X=1,m={},Z=!1,d=l.document,b=Object.getPrototypeOf&&Object.getPrototypeOf(l);b=b&&b.setTimeout?b:l,u={}.toString.call(l.process)==="[object process]"?function(y){process.nextTick(function(){G(y)})}:(function(){if(l.postMessage&&!l.importScripts){var y=!0,V=l.onmessage;return l.onmessage=function(){y=!1},l.postMessage("","*"),l.onmessage=V,y}})()?(v="setImmediate$"+Math.random()+"$",l.addEventListener?l.addEventListener("message",S,!1):l.attachEvent("onmessage",S),function(y){l.postMessage(v+y,"*")}):l.MessageChannel?((w=new MessageChannel).port1.onmessage=function(y){G(y.data)},function(y){w.port2.postMessage(y)}):d&&"onreadystatechange"in d.createElement("script")?(g=d.documentElement,function(y){var V=d.createElement("script");V.onreadystatechange=function(){G(y),V.onreadystatechange=null,g.removeChild(V),V=null},g.appendChild(V)}):function(y){setTimeout(G,0,y)},b.setImmediate=function(y){typeof y!="function"&&(y=new Function(""+y));for(var V=new Array(arguments.length-1),J=0;J<V.length;J++)V[J]=arguments[J+1];return m[X]={callback:y,args:V},u(X),X++},b.clearImmediate=h}function h(y){delete m[y]}function G(y){if(Z)setTimeout(G,0,y);else{var V=m[y];if(V){Z=!0;try{(function(J){var T=J.callback,_=J.args;switch(_.length){case 0:T();break;case 1:T(_[0]);break;case 2:T(_[0],_[1]);break;case 3:T(_[0],_[1],_[2]);break;default:T.apply(a,_)}})(V)}finally{h(y),Z=!1}}}}function S(y){y.source===l&&typeof y.data=="string"&&y.data.indexOf(v)===0&&G(+y.data.slice(v.length))}})(typeof self>"u"?r===void 0?this:r:self)}).call(this,typeof global<"u"?global:typeof self<"u"?self:typeof window<"u"?window:{})},{}]},{},[10])(10)})})),ei,Ur,Fe,ti,Yr,zr,mt,Tr,Je,Fr,Jr,ht,Cr,Pr,Hr,ii,Nr,Er,Mr,ri,_r,Br,jr,Dr,on=le((()=>{xr(),ei=new Set(["zip","zipx","jar","war","ear","apk","cbz"]),Ur=new Set(["tar","tgz","gz","gzip"]),Fe=512,ti=33639248,Yr=67324752,zr=1,mt=e=>{const n=new Uint8Array(e.byteLength);return n.set(e),n.buffer},Tr=async(e,n)=>{if(typeof DecompressionStream>"u")return null;const t=new Blob([mt(e)]).stream().pipeThrough(new DecompressionStream(n));return new Uint8Array(await new Response(t).arrayBuffer())},Je=e=>e.replace(/^\/+/,"").replace(/\\/g,"/"),Fr=e=>{const n=Je(e).split("/");return n[n.length-1]||e},Jr=e=>Math.max(0,Je(e).split("/").length-1),ht=e=>{const n=Je(e.path),t=Fr(n);return{id:n,path:n,name:t,extension:je(t),size:e.size,lastModified:e.lastModified,depth:Jr(n),previewable:At(t),compressedFile:{name:t,size:e.size,lastModified:e.lastModified,async extract(){const c=await e.load();return new File([c],t,{type:"application/octet-stream",lastModified:e.lastModified||Date.now()})}}}},Cr=(e,n,t)=>{const c=new TextDecoder("ascii").decode(e.slice(n,n+t)).replace(/\0.*$/,"").trim();return c&&Number.parseInt(c,8)||0},Pr=(e,n)=>{const t=new TextDecoder("utf-8"),c=t.decode(e.slice(n,n+100)).replace(/\0.*$/,""),s=t.decode(e.slice(n+345,n+500)).replace(/\0.*$/,"");return Je(s?`${s}/${c}`:c)},Hr=e=>{const n=[];let t=0;for(;t+Fe<=e.length&&!e.slice(t,t+Fe).every(u=>u===0);){const c=Pr(e,t),s=Cr(e,t+124,12),r=String.fromCharCode(e[t+156]||0),l=t+Fe,a=l+Math.ceil(s/Fe)*Fe;if(c&&r!=="5"&&!ut(c)){const u=e.slice(l,l+s);n.push(ht({path:c,size:s,load:async()=>mt(u)}))}t=a}return n},ii=e=>{const n=e.toLowerCase();return n.endsWith(".tar.gz")||n.endsWith(".tgz")?"tgz":je(e)},Nr=(e,n)=>n+2<=e.byteLength?e.getUint16(n,!0):0,Er=(e,n)=>n+4<=e.byteLength?e.getUint32(n,!0):0,Mr=e=>{const n=new DataView(e);for(let t=0;t+12<=n.byteLength;t+=1){const c=Er(n,t);if(!(c!==ti&&c!==Yr)&&(Nr(n,c===ti?t+8:t+6)&zr)!==0)return!0}return!1},ri=(e,n)=>{const t=ii(n);return ei.has(t)?Mr(e):!1},_r=e=>{const n=e.toLowerCase();return n.endsWith(".gzip")?e.slice(0,-5)||"archive":n.endsWith(".gz")?e.slice(0,-3)||"archive":`${e||"archive"}.bin`},Br=async e=>{const{default:n}=await Promise.resolve().then(()=>za(nn(),1)),t=await n.loadAsync(e),c=[];return t.forEach((s,r)=>{var l,a;if(r.dir)return;const u=r,g=Je(s);ut(g)||c.push(ht({path:g,size:((l=u._data)===null||l===void 0?void 0:l.uncompressedSize)||0,lastModified:(a=r.date)===null||a===void 0?void 0:a.getTime(),load:async()=>r.async("arraybuffer")}))}),c},jr=async(e,n,t)=>{const c=new Uint8Array(e),s=t==="tar"?c:await Tr(c,"gzip");if(!s)return null;if(t==="gz"||t==="gzip"){const r=n.toLowerCase();if(!(r.endsWith(".tar.gz")||r.endsWith(".tgz")))return[ht({path:_r(n),size:s.byteLength,load:async()=>mt(s)})]}return Hr(s)},Dr=async(e,n)=>{const t=ii(n);return ei.has(t)?ri(e,n)?null:Br(e):Ur.has(t)?jr(e,n,t):null}})),sn=xt({Archive:()=>hi,ArchiveCompression:()=>mi,ArchiveFormat:()=>ui});function Or(e,n=globalThis,t=["*"]){n.addEventListener("message",(function c(s){if(!s||!s.data)return;if(!(function(w,v){for(const X of w)if(v===X||X==="*"||X instanceof RegExp&&X.test(v))return!0;return!1})(t,s.origin))return void console.warn(`Invalid origin '${s.origin}' for comlink proxy`);const{id:r,type:l,path:a}=Object.assign({path:[]},s.data),u=(s.data.argumentList||[]).map(Ye);let g;try{const w=a.slice(0,-1).reduce(((X,m)=>X[m]),e),v=a.reduce(((X,m)=>X[m]),e);switch(l){case"GET":g=v;break;case"SET":w[a.slice(-1)[0]]=Ye(s.data.value),g=!0;break;case"APPLY":g=v.apply(w,u);break;case"CONSTRUCT":g=ni(new v(...u));break;case"ENDPOINT":{const{port1:X,port2:m}=new MessageChannel;Or(e,m),g=(function(Z,d){return ci.set(Z,d),Z})(X,[X])}break;case"RELEASE":g=void 0;break;default:return}}catch(w){g={value:w,[Oe]:0}}Promise.resolve(g).catch((w=>({value:w,[Oe]:0}))).then((w=>{const[v,X]=bt(w);n.postMessage(Object.assign(Object.assign({},v),{id:r}),X),l==="RELEASE"&&(n.removeEventListener("message",c),Ar(n),yt in e&&typeof e[yt]=="function"&&e[yt]())})).catch((w=>{const[v,X]=bt({value:new TypeError("Unserializable return value"),[Oe]:0});n.postMessage(Object.assign(Object.assign({},v),{id:r}),X)}))})),n.start&&n.start()}function Ar(e){(function(n){return n.constructor.name==="MessagePort"})(e)&&e.close()}function Qr(e,n){return ai(e,[],n)}function pt(e){if(e)throw new Error("Proxy has been released and is not useable")}function qr(e){return Ce(e,{type:"RELEASE"}).then((()=>{Ar(e)}))}function ai(e,n=[],t=function(){}){let c=!1;const s=new Proxy(t,{get(r,l){if(pt(c),l===ra)return()=>{(function(a){Qe&&Qe.unregister(a)})(s),qr(e),c=!0};if(l==="then"){if(n.length===0)return{then:()=>s};const a=Ce(e,{type:"GET",path:n.map((u=>u.toString()))}).then(Ye);return a.then.bind(a)}return ai(e,[...n,l])},set(r,l,a){pt(c);const[u,g]=bt(a);return Ce(e,{type:"SET",path:[...n,l].map((w=>w.toString())),value:u},g).then(Ye)},apply(r,l,a){pt(c);const u=n[n.length-1];if(u===ia)return Ce(e,{type:"ENDPOINT"}).then(Ye);if(u==="bind")return ai(e,n.slice(0,-1));const[g,w]=$r(a);return Ce(e,{type:"APPLY",path:n.map((v=>v.toString())),argumentList:g},w).then(Ye)},construct(r,l){pt(c);const[a,u]=$r(l);return Ce(e,{type:"CONSTRUCT",path:n.map((g=>g.toString())),argumentList:a},u).then(Ye)}});return(function(r,l){const a=(Ae.get(l)||0)+1;Ae.set(l,a),Qe&&Qe.register(r,l,r)})(s,e),s}function $r(e){const n=e.map(bt);return[n.map((c=>c[0])),(t=n.map((c=>c[1])),Array.prototype.concat.apply([],t))];var t}function ni(e){return Object.assign(e,{[si]:!0})}function bt(e){for(const[n,t]of di)if(t.canHandle(e)){const[c,s]=t.serialize(e);return[{type:"HANDLER",name:n,value:c},s]}return[{type:"RAW",value:e},ci.get(e)||[]]}function Ye(e){switch(e.type){case"HANDLER":return di.get(e.name).deserialize(e.value);case"RAW":return e.value}}function Ce(e,n,t){return new Promise((c=>{const s=new Array(4).fill(0).map((()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16))).join("-");e.addEventListener("message",(function r(l){l.data&&l.data.id&&l.data.id===s&&(e.removeEventListener("message",r),c(l.data))})),e.start&&e.start(),e.postMessage(Object.assign({id:s},n),t)}))}function oi(e){if(e instanceof File||e instanceof ft||e===null)return e;const n={};for(const t of Object.keys(e))n[t]=oi(e[t]);return n}function ea(e,n=""){const t=[];for(const c of Object.keys(e))e[c]instanceof File||e[c]instanceof ft||e[c]===null?t.push({file:e[c]||c,path:n}):t.push(...ea(e[c],`${n}${c}/`));return t}function ta(e,n){const t=n.split("/");t[t.length-1]===""&&t.pop();let c=e,s=null;for(const r of t)c[r]=c[r]||{},s=c,c=c[r];return[s,t[t.length-1]]}var si,ia,ra,yt,Oe,li,di,Ae,Qe,ci,ft,aa,ui,mi,hi,ln=le((()=>{si=Symbol("Comlink.proxy"),ia=Symbol("Comlink.endpoint"),ra=Symbol("Comlink.releaseProxy"),yt=Symbol("Comlink.finalizer"),Oe=Symbol("Comlink.thrown"),li=e=>typeof e=="object"&&e!==null||typeof e=="function",di=new Map([["proxy",{canHandle:e=>li(e)&&e[si],serialize(e){const{port1:n,port2:t}=new MessageChannel;return Or(e,n),[t,[t]]},deserialize:e=>(e.start(),Qr(e))}],["throw",{canHandle:e=>li(e)&&Oe in e,serialize({value:e}){let n;return n=e instanceof Error?{isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:{isError:!1,value:e},[n,[]]},deserialize(e){throw e.isError?Object.assign(new Error(e.value.message),e.value):e.value}}]]),Ae=new WeakMap,Qe="FinalizationRegistry"in globalThis&&new FinalizationRegistry((e=>{const n=(Ae.get(e)||0)-1;Ae.set(e,n),n===0&&qr(e)})),ci=new WeakMap,ft=class{constructor(e,n,t,c,s){this._name=e,this._size=n,this._path=t,this._lastModified=c,this._archiveRef=s}get name(){return this._name}get size(){return this._size}get lastModified(){return this._lastModified}extract(){return this._archiveRef.extractSingleFile(this._path)}},aa=class{constructor(e,n,t){this._content={},this._processed=0,this.file=e,this.client=n,this.worker=t}open(){return this._content={},this._processed=0,new Promise(((e,n)=>{this.client.open(this.file,ni((()=>{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[n,t]=ta(this._content,e.path);e.type==="FILE"&&(n[t]=new ft(e.fileName,e.size,e.path,e.lastModified,this))})),this._processed=1,oi(this._content))}getFilesArray(){return this.getFilesObject().then((e=>ea(e)))}async extractSingleFile(e){if(this.worker===null)throw new Error("Archive already closed");const n=await this.client.extractSingleFile(e);return new File([n.fileData],n.fileName,{type:"application/octet-stream",lastModified:n.lastModified/1e6})}async extractFiles(e=void 0){var n;return this._processed>1?Promise.resolve().then((()=>this._content)):((await this.client.extractFiles()).forEach((t=>{const[c,s]=ta(this._content,t.path);t.type==="FILE"&&(c[s]=new File([t.fileData],t.fileName,{type:"application/octet-stream"}),e!==void 0&&setTimeout(e.bind(null,{file:c[s],path:t.path})))})),this._processed=2,(n=this.worker)===null||n===void 0||n.terminate(),oi(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"})(ui||(ui={})),(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"})(mi||(mi={})),hi=class xe{static init(n=null){return xe._options=n||{},xe._options}static async open(n){const t=xe.getWorker(xe._options);return await new aa(n,await xe.getClient(t,xe._options),t).open()}static async write({files:n,outputFileName:t,compression:c,format:s,passphrase:r=null}){const l=xe.getWorker(xe._options),a=await(await xe.getClient(l,xe._options)).writeArchive(n,c,s,r);return l.terminate(),new File([a],t,{type:"application/octet-stream"})}static getWorker(n){return n.getWorker?n.getWorker():new Worker(n.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(n,t){var c;const s=((c=t.createClient)===null||c===void 0?void 0:c.call(t,n))||Qr(n);let{promise:r,resolve:l}=Promise.withResolvers();const a=await new s(ni((()=>{l()})));return await r,a}},hi._options={},Promise.withResolvers||(Promise.withResolvers=function(){var e,n,t=new this((function(c,s){e=c,n=s}));return{resolve:e,reject:n,promise:t}})})),dn=xt({default:()=>cn});async function cn(e,n,t,c){var s;const r=n.ownerDocument,l=r.defaultView||null,a=(s=c?.options)===null||s===void 0?void 0:s.archive,u=c?.filename||"archive.bin",g=a?.maxArchiveSize||na,w=a?.maxEntryPreviewSize||oa,v=a?.cache!==!1,X=a?.workerTimeoutMs||sa,m=[],Z=[];let d=null,b=[],h=null,G,S=!1;const y=Tt(c?.options);let V=y("archive.loading.readingDirectory"),J=y("archive.loading.readingDirectoryHint"),T="",_="",R=null,Q="",$=0,x=null,U=!1;const o=ca(r),Y=ee(r,"section","archive-shell archive-viewer"),ie=ee(r,"aside","archive-sidebar"),P=ee(r,"div","archive-head"),ae=ee(r,"div","archive-head-main"),N=ee(r,"span",void 0,"ARCHIVE"),te=ee(r,"strong",void 0,u);te.title=u;const k=ee(r,"p"),L=ee(r,"button","archive-sidebar-toggle");L.type="button",ae.append(N,te,k),P.append(ae,L);const q=ee(r,"div","archive-warning"),D=ee(r,"div","archive-info"),B=ee(r,"input","archive-search");B.type="search",B.placeholder=y("archive.search.placeholder");const ce=ee(r,"div","archive-list");ce.setAttribute("role","list"),ie.append(P,q,D,B,ce);const be=ee(r,"main","archive-preview"),oe=ee(r,"div","archive-preview-toolbar"),ne=ee(r,"button","archive-sidebar-toggle");ne.type="button";const pe=ee(r,"div","archive-preview-title");pe.append(ee(r,"span",void 0,y("archive.preview.title")),ee(r,"strong",void 0,y("archive.preview.chooseFile")));const ue=ee(r,"button","archive-download-button",y("archive.preview.downloadFile"));ue.type="button",oe.append(ne,pe,ue);const Ze=ee(r,"div","archive-nested-target");be.append(oe,Ze),Y.append(ie,be);const Xe=ee(r,"div","archive-state"),i=ee(r,"div"),z=ee(r,"span","archive-spinner"),K=ee(r,"div"),f=ee(r,"strong",void 0,V),p=ee(r,"p",void 0,J);K.append(f,p),i.append(z,K),Xe.append(i),Y.append(Xe);const W=ee(r,"div","archive-error"),F=ee(r,"strong",void 0,y("archive.error.title")),C=ee(r,"p");W.append(F,C),Y.append(W);const I=ee(r,"div","archive-password-dialog archive-hidden");I.setAttribute("role","dialog"),I.setAttribute("aria-modal","true");const E=ee(r,"form","archive-password-card"),O=ee(r,"h3",void 0,y("archive.password.title")),M=ee(r,"p",void 0,y("archive.password.description")),A=ee(r,"input");A.type="password",A.autocomplete="current-password",A.placeholder=y("archive.password.placeholder");const de=ee(r,"p","archive-password-error"),se=ee(r,"div","archive-password-actions"),ge=ee(r,"button","archive-password-cancel",y("archive.password.cancel"));ge.type="button";const Re=ee(r,"button","archive-password-submit",y("archive.password.confirm"));Re.type="submit",se.append(ge,Re),E.append(O,M,A,de,se),I.append(E),Y.append(I),n.replaceChildren(o,Y);const fe=(H,j,re)=>{H.addEventListener(j,re),Z.push(()=>H.removeEventListener(j,re))},Se=H=>{I.classList.add("archive-hidden");const j=x;x=null,j?.(H)},he=async(H,j)=>(M.textContent=y("archive.password.description"),de.textContent=j||H==="invalid-password"?y("archive.password.invalid"):"",A.value="",I.classList.remove("archive-hidden"),l?.setTimeout(()=>A.focus(),0),new Promise(re=>{x=re})),Pe=async(H,j,re)=>{$+=1;const me={filename:u,entryName:j?.name,attempt:$,reason:H,error:re};if(a?.password&&$===1&&!re)return a.password;if(a?.requestPassword){const ye=await a.requestPassword(me);return ye??null}return he(H,re)},qe=async H=>{var j;await((j=d?.usePassword)===null||j===void 0?void 0:j.call(d,H))},we=async(H,j,re)=>{const me=await Pe(H,j,re);if(me===null)throw new pi(y("archive.error.passwordRequired"));await qe(me)};fe(E,"submit",H=>{H.preventDefault();const j=A.value;if(!j){de.textContent=y("archive.password.required"),A.focus();return}Se(j)}),fe(ge,"click",()=>{Se(null)}),fe(I,"keydown",H=>{H.key==="Escape"&&(H.preventDefault(),Se(null))}),fe(L,"click",()=>{U=!0,ve()}),fe(ne,"click",()=>{U=!U,ve()});const vt=()=>{const H=b.reduce((re,me)=>re+me.size,0),j=b.filter(re=>re.previewable).length;return{count:b.length,totalSize:H,previewableCount:j}},Zi=()=>{const H=Q.trim().toLowerCase();return(H?b.filter(j=>j.path.toLowerCase().includes(H)):b).slice(0,la)},Gt=async()=>{await lt(G),G=void 0,Ze.replaceChildren()},$e=async()=>{var H;await((H=d?.close)===null||H===void 0?void 0:H.call(d)),d=null},Xt=()=>{const H=y("archive.sidebar.show"),j=y("archive.sidebar.hide"),re=U?H:j;Y.classList.toggle("archive-sidebar-collapsed",U),L.textContent="‹",ne.textContent=U?"☰":"‹",L.title=j,ne.title=re,L.setAttribute("aria-label",j),ne.setAttribute("aria-label",re),L.setAttribute("aria-expanded",String(!U)),ne.setAttribute("aria-expanded",String(!U))},ve=()=>{const H=vt();k.textContent=y("archive.stats.summary",{count:H.count,size:Ke(H.totalSize),previewable:H.previewableCount}),q.textContent=y("archive.warning.encrypted"),q.classList.toggle("archive-hidden",!R),D.textContent=_,D.classList.toggle("archive-hidden",!_),Xe.classList.toggle("archive-hidden",!S),f.textContent=V,p.textContent=J,W.classList.toggle("archive-hidden",!T),C.textContent=T,ue.hidden=!h;const j=pe.querySelector("strong");j&&(j.textContent=h?.name||y("archive.preview.chooseFile"),j.setAttribute("title",h?.path||h?.name||"")),Xt()},Le=()=>{if(h||S||Ze.childElementCount)return;const H=ee(r,"div","archive-empty");H.append(ee(r,"strong",void 0,y("archive.empty.title")),ee(r,"p",void 0,y("archive.empty.message"))),Ze.replaceChildren(H)},wt=()=>{ce.replaceChildren(),Zi().forEach(H=>{const j=ee(r,"button","archive-entry");j.type="button",j.style.setProperty("--entry-depth",String(H.depth)),j.classList.toggle("active",h?.id===H.id);const re=ee(r,"span","entry-ext",H.extension||"file"),me=ee(r,"span","entry-copy"),ye=ee(r,"strong",void 0,H.name),Ne=ee(r,"em",void 0,H.path),Ee=Ke(H.size),ze=ee(r,"small",void 0,Ee);ye.title=H.name,Ne.title=H.path,ze.title=Ee,j.title=H.path,me.append(ye,Ne),j.append(re,me,ze),j.addEventListener("click",()=>{gn(H)}),ce.append(j)})},We=(H,j,re)=>{S=H,j&&(V=j),re&&(J=re),ve(),Le()},He=H=>{T=H,ve()},hn=H=>{H.forEach(j=>j.terminate()),H.length=0},pn=async(H,j)=>{for(;;)try{return await Zt(H.getFilesObject(),X,y("archive.error.candidateReadTimeout",{label:j.label}),l)}catch(re){if(!R&&!yi(re))throw re;await we(R?"invalid-password":"read-failed",void 0,re)}},bn=async(H,j)=>{const re=[],me=await va(j,m),ye=ba(r);try{H.init({getWorker:()=>{const ze=new ye(me,{type:"module"});return re.push(ze),ze}}),We(!0,y("archive.loading.initializingCandidate",{label:j.label}),y("archive.loading.initializingCandidateHint"));const Ne=fa(r,e,u),Ee=await Zt(H.open(Ne),X,y("archive.error.candidateInitTimeout",{label:j.label}),l);return d=Ee,R=await Zt(Ee.hasEncryptedData(),X,y("archive.error.encryptedCheckTimeout",{label:j.label}),l).catch(()=>null),R&&await we("encrypted"),We(!0,y("archive.loading.readingDirectory"),y("archive.loading.directoryReadyHint")),b=Qt(await pn(Ee,j)).sort((ze,Gn)=>ze.path.localeCompare(Gn.path)),ve(),wt(),Le(),!0}catch(Ne){throw d||hn(re),Ne}},yn=async()=>{We(!0,y("archive.loading.workerFallback"),y("archive.loading.workerFallbackHint"));const H=await Dr(e,u);return H?(b=H.sort((j,re)=>j.path.localeCompare(re.path)),R=null,_=y("archive.notice.workerFallback"),ve(),wt(),Le(),!0):!1},fn=async()=>{if(e.byteLength>g){He(y("archive.error.tooLarge",{size:Ke(e.byteLength),limit:Ke(g)}));return}We(!0,y("archive.loading.initializingWorker"),y("archive.loading.initializingWorkerHint")),He(""),_="";try{const[{Archive:H},j]=await Promise.all([Promise.resolve().then(()=>(ln(),sn)),Ga(r,a)]),re=[];for(const me of j)try{await $e(),await bn(H,me);return}catch(ye){if(ye instanceof pi)throw ye;re.push(`${me.label}: ${bi(ye)}`)}if(await $e(),ri(e,u))throw R=!0,ve(),new Error(y("archive.error.encryptedRequiresWorker"));if(await yn())return;throw new Error(re.join("; ")||y("archive.error.workerInitFailed"))}catch(H){console.error(H),He(H instanceof Error?H.message:String(H))}finally{We(!1)}},Zn=async(H,j)=>{await Gt();const re=ee(r,"div","archive-nested-content");Ze.append(re);const me=wr(c,H,a);G=await Xa(j,H.extension,re,me)},Ia=async H=>{const j=Gr(u,e.byteLength,H);if(v){const ye=await Rr(j);if(ye)return ye.buffer}let re;for(;;)try{re=await H.compressedFile.extract();break}catch(ye){if(!d||!yi(ye))throw ye;R=!0,ve(),await we("extract-failed",H,ye)}const me=await re.arrayBuffer();return v&&await Kr({key:j,filename:H.name,size:me.byteLength,updatedAt:Date.now(),buffer:me}),me};async function gn(H){if(h=H,wt(),ve(),H.size>w){He(y("archive.error.entryTooLarge",{name:H.name,size:Ke(H.size),limit:Ke(w)}));return}We(!0,y("archive.loading.extracting",{name:H.name})),He("");try{const j=await Ia(H);We(!0,y("archive.loading.rendering",{name:H.name})),await Zn(H,j)}catch(j){console.error(j),He(j instanceof Error?j.message:String(j))}finally{We(!1)}}const vn=async H=>{We(!0,y("archive.loading.exporting",{name:H.name}));try{const j=await Ia(H),re=URL.createObjectURL(new Blob([j]));m.push(re);const me=r.createElement("a");me.href=re,me.download=H.name,r.body.append(me),me.click(),me.remove()}finally{We(!1)}};return fe(B,"input",()=>{Q=B.value,wt()}),fe(ue,"click",()=>{h&&vn(h)}),ve(),Le(),fn(),{$el:Y,async unmount(){Se(null),Z.splice(0).forEach(H=>H()),await Gt(),await $e(),m.forEach(H=>URL.revokeObjectURL(H)),n.replaceChildren()}}}var na,oa,sa,la,pi,da,ca,ee,bi,yi,ua,ma,ha,Zt,pa,ba,ya,fa,Za,ga,va,Ga,gt,Xa,un=le((()=>{Xi(),Ot(),xr(),an(),on(),na=320*1024*1024,oa=64*1024*1024,sa=3e4,la=5e3,pi=class extends Error{constructor(e){super(e),this.name="ArchivePasswordCancelledError"}},da=`
|
|
14
|
+
.archive-shell,.archive-viewer{position:relative;box-sizing:border-box;width:100%;height:100%;min-width:0;min-height:0;overflow:hidden;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
15
|
.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)}
|
|
16
|
+
.archive-sidebar{min-width:0;min-height:0;overflow:hidden;display:flex;flex-direction:column;gap:12px;padding:16px;border-right:1px solid rgba(23,32,51,.08);background:rgba(255,255,255,.72);transition:opacity .18s ease,padding .18s ease,border-color .18s ease}
|
|
17
|
+
.archive-shell.archive-sidebar-collapsed,.archive-viewer.archive-sidebar-collapsed{grid-template-columns:0 minmax(0,1fr)}
|
|
18
|
+
.archive-sidebar-collapsed .archive-sidebar{display:none;width:0;max-width:0;padding:0;border-color:transparent;opacity:0;pointer-events:none}
|
|
19
|
+
.archive-sidebar-collapsed .archive-sidebar>*{visibility:hidden}
|
|
20
|
+
.archive-head{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:10px;align-items:start}
|
|
21
|
+
.archive-head-main{min-width:0}
|
|
325
22
|
.archive-head span,.archive-preview-toolbar span{color:#6c7c90;font-size:12px;font-weight:800;letter-spacing:0}
|
|
326
23
|
.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}
|
|
24
|
+
.archive-head p{min-width:0;margin:8px 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#69798b;font-size:13px}
|
|
25
|
+
.archive-sidebar-toggle{width:34px;height:34px;flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(23,32,51,.1);border-radius:10px;background:#fff;color:#1f7a58;font:inherit;font-size:17px;font-weight:900;line-height:1;cursor:pointer;box-shadow:0 6px 16px rgba(23,32,51,.07)}
|
|
26
|
+
.archive-sidebar-toggle:hover{border-color:rgba(31,122,88,.32);background:#f0fdf4}
|
|
328
27
|
.archive-warning,.archive-info,.archive-error{border-radius:12px;padding:10px 12px;background:#fff7e8;color:#8a4b00;font-size:13px;line-height:1.5}
|
|
329
28
|
.archive-info{background:#ecfdf5;color:#166534}
|
|
330
29
|
.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}
|
|
30
|
+
.archive-list{flex:1;min-width:0;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:7px;padding-right:4px}
|
|
31
|
+
.archive-entry{width:100%;min-width:0;min-height:58px;display:grid;grid-template-columns:42px minmax(0,1fr) minmax(46px,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
32
|
.archive-entry:hover,.archive-entry.active{border-color:rgba(33,129,95,.28);box-shadow:0 10px 22px rgba(23,32,51,.08)}
|
|
334
33
|
.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
34
|
.entry-copy{min-width:0}
|
|
336
35
|
.entry-copy strong,.entry-copy em{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
337
36
|
.entry-copy em,.archive-entry small{color:#718096;font-size:12px;font-style:normal}
|
|
37
|
+
.archive-entry small{min-width:0;max-width:74px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}
|
|
338
38
|
.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;
|
|
39
|
+
.archive-preview-toolbar{min-width:0;min-height:64px;display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid rgba(23,32,51,.08);background:rgba(255,255,255,.76)}
|
|
340
40
|
.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}
|
|
41
|
+
.archive-preview-toolbar .archive-sidebar-toggle{background:#fff;color:#1f7a58;border:1px solid rgba(23,32,51,.1);padding:0}
|
|
42
|
+
.archive-preview-title{min-width:0;flex:1}
|
|
43
|
+
.archive-preview-toolbar .archive-download-button{flex:0 0 auto}
|
|
341
44
|
.archive-nested-target{position:relative;flex:1;min-height:0;overflow:auto}
|
|
342
45
|
.archive-nested-content{width:100%;height:100%;min-height:420px}
|
|
343
46
|
.archive-empty{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px;text-align:center;color:#64748b}
|
|
@@ -347,12 +50,26 @@
|
|
|
347
50
|
.archive-state p{margin:4px 0 0;color:#64748b}
|
|
348
51
|
.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
52
|
.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}
|
|
53
|
+
.archive-password-dialog{position:absolute;inset:0;z-index:8;display:flex;align-items:center;justify-content:center;padding:22px;background:rgba(15,23,42,.42);backdrop-filter:blur(10px)}
|
|
54
|
+
.archive-password-card{width:min(420px,100%);display:flex;flex-direction:column;gap:14px;padding:20px;border-radius:18px;background:#fff;color:#172033;box-shadow:0 24px 56px rgba(15,23,42,.24)}
|
|
55
|
+
.archive-password-card h3{margin:0;font-size:19px;line-height:1.25}
|
|
56
|
+
.archive-password-card p{margin:0;color:#64748b;font-size:13px;line-height:1.55}
|
|
57
|
+
.archive-password-card input{width:100%;height:44px;border-radius:12px;border:1px solid rgba(23,32,51,.12);outline:none;padding:0 12px;background:#fff;color:#172033;font:inherit}
|
|
58
|
+
.archive-password-card input:focus{border-color:rgba(31,122,88,.48);box-shadow:0 0 0 3px rgba(31,122,88,.12)}
|
|
59
|
+
.archive-password-error{min-height:18px;color:#b42318!important}
|
|
60
|
+
.archive-password-actions{display:flex;justify-content:flex-end;gap:10px}
|
|
61
|
+
.archive-password-actions button{height:38px;border:0;border-radius:10px;padding:0 14px;font:inherit;font-weight:800;cursor:pointer}
|
|
62
|
+
.archive-password-cancel{background:#eef2f7;color:#334155}
|
|
63
|
+
.archive-password-submit{background:#1f7a58;color:#fff}
|
|
350
64
|
.archive-hidden{display:none!important}
|
|
351
65
|
.file-viewer[data-viewer-theme='dark'] .archive-shell,.file-viewer[data-viewer-theme='dark'] .archive-viewer{background:#101820;color:#e6edf3}
|
|
352
66
|
.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
67
|
.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)}
|
|
68
|
+
.file-viewer[data-viewer-theme='dark'] .archive-password-card{background:#151b23;color:#e6edf3}
|
|
69
|
+
.file-viewer[data-viewer-theme='dark'] .archive-password-card input{background:#0d1117;color:#e6edf3;border-color:rgba(139,148,158,.24)}
|
|
70
|
+
.file-viewer[data-viewer-theme='dark'] .archive-password-cancel{background:#212a35;color:#d7dee8}
|
|
354
71
|
.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}}
|
|
72
|
+
@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-password-card{background:#151b23;color:#e6edf3}.file-viewer[data-viewer-theme='system'] .archive-password-card input{background:#0d1117;color:#e6edf3;border-color:rgba(139,148,158,.24)}.file-viewer[data-viewer-theme='system'] .archive-password-cancel{background:#212a35;color:#d7dee8}.file-viewer[data-viewer-theme='system'] .archive-empty strong{color:#f8fafc}}
|
|
356
73
|
@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
|
-
`,
|
|
74
|
+
@media (max-width:860px){.archive-shell,.archive-viewer{grid-template-columns:1fr;grid-template-rows:minmax(220px,38%) minmax(0,1fr)}.archive-shell.archive-sidebar-collapsed,.archive-viewer.archive-sidebar-collapsed{grid-template-columns:1fr;grid-template-rows:0 minmax(0,1fr)}.archive-sidebar{border-right:0;border-bottom:1px solid rgba(23,32,51,.08)}.archive-preview-toolbar{min-height:56px;padding:10px 12px}.archive-head strong,.archive-preview-toolbar strong{font-size:16px}.archive-entry{grid-template-columns:38px minmax(0,1fr) minmax(40px,auto)}}
|
|
75
|
+
`,ca=e=>{const n=e.createElement("style");return n.textContent=da,n},ee=(e,n,t,c)=>{const s=e.createElement(n);return t&&(s.className=t),c!==void 0&&(s.textContent=c),s},bi=e=>e instanceof Error?e.message:typeof e=="string"?e:JSON.stringify(e),yi=e=>{const n=bi(e).toLowerCase();return/passphrase|password|encrypted|decrypt|crypto|wrong key|incorrect/i.test(n)},ua=(e={})=>{const n=e.autoRenderers;return typeof n=="boolean"?n:n?.enabled!==void 0?n.enabled:(e.rendererMode||"extend")!=="replace"},ma=async e=>{const n=e?.options||{},t=n.rendererMode==="replace"?_e([]):Dt({builtinRenderers:n.builtinRenderers}).registry,c=[];ua(n)&&c.push(...Ei()),c.push(...at(n.preset),...at(n.presets)),n.renderers&&c.push(n.renderers);const s=rt(c);return s.length&&await _i({registry:t,plugins:s,registerHandler:r=>{const l=t.getById(r.rendererId);l&&t.register({...l,load:Mt({handler:r.handler,getTarget:a=>a.surface.container})})}}),t},ha=(e,n)=>({$el:e,destroy:()=>{var t;return(t=n.destroy)===null||t===void 0?void 0:t.call(n)}}),Zt=async(e,n,t,c)=>{let s=0;const r=c||(typeof window<"u"?window:void 0);try{return await Promise.race([e,new Promise((l,a)=>{s=r?.setTimeout?r.setTimeout(()=>a(new Error(t)),n):setTimeout(()=>a(new Error(t)),n)})])}finally{r?.clearTimeout?r.clearTimeout(s):clearTimeout(s)}},pa=e=>e.baseURI||e.URL||"http://localhost/",ba=e=>{var n;const t=((n=e.defaultView)===null||n===void 0?void 0:n.Worker)||(typeof Worker<"u"?Worker:void 0);if(!t)throw new Error("Web Worker is not supported by this browser.");return t},ya=e=>{var n;return((n=e.defaultView)===null||n===void 0?void 0:n.File)||(typeof File<"u"?File:void 0)},fa=(e,n,t)=>{const c=ya(e);return c?new c([n],t||"archive.bin",{type:"application/octet-stream"}):Object.assign(new Blob([n],{type:"application/octet-stream"}),{name:t||"archive.bin"})},Za=async e=>{try{const n=await fetch(e,{method:"HEAD",cache:"no-cache"}),t=n.headers.get("content-type")||"";if(n.ok&&/javascript|ecmascript|octet-stream/i.test(t))return!0;if(n.status&&n.status!==405)return!1}catch{}try{const n=await fetch(e,{method:"GET",cache:"no-cache",headers:{Range:"bytes=0-0"}}),t=n.headers.get("content-type")||"";return n.ok&&/javascript|ecmascript|octet-stream/i.test(t)}catch{return!1}},ga=(e,n)=>{const t=JSON.stringify(n);return e.replace(/new URL\((['"])libarchive\.wasm\1\s*,\s*import\.meta\.url\)\.href/g,t)},va=async(e,n)=>{if(!e.wasmUrl)return e.workerUrl;const t=await fetch(e.workerUrl,{cache:"no-cache"});if(!t.ok)throw new Error(`Unable to read libarchive Worker: ${t.status}`);const c=await t.text(),s=URL.createObjectURL(new Blob([ga(c,e.wasmUrl)],{type:"application/javascript"}));return n.push(s),s},Ga=async(e,n)=>{const t=[],c=pa(e),s=n?.wasmUrl?Gi(n,""):void 0;if(n?.workerUrl)return t.push({label:"custom libarchive Worker",workerUrl:Wt(n,c),wasmUrl:s}),t;const r=Wt(void 0,c);return await Za(r)&&t.push({label:"static libarchive Worker",workerUrl:r,wasmUrl:s}),t},gt=async(e,n,t,c)=>{const s=Tt(c?.options),r=(await ma(c)).getByExtension(n);if(!r?.load){t.textContent=s("archive.error.nestedUnsupported",{type:n});return}return ha(t,await r.load({source:Yi({buffer:e,filename:c?.filename||`preview.${n}`,type:n,url:c?.url}),surface:{container:t},options:c?.options||{},registerExportAdapter:c?.registerExportAdapter,renderContext:{...c,renderNestedBuffer:c?.renderNestedBuffer||gt}}))},Xa=(e,n,t,c)=>(c?.renderNestedBuffer||gt)(e,n,t,{...c,renderNestedBuffer:c?.renderNestedBuffer||gt})}));Ot();var wa=Ie.find(e=>e.id==="archive");if(!wa)throw new Error("@file-viewer/renderer-archive could not locate the shared archive format definition.");var xa=wa,mn=(e,n,t,c)=>Promise.resolve().then(()=>(un(),dn)).then(({default:s})=>s(e,n,t,c)),fi={id:"file-viewer-renderer-archive",label:"Flyfish File Viewer archive renderer",definitions:[xa],handlers:[{rendererId:xa.id,handler:mn}]},Sa=globalThis,Wa=Sa.FlyfishFileViewerWebFullRenderers||(Sa.FlyfishFileViewerWebFullRenderers={});Wa.archive=fi,Wa[fi.id]=fi})();
|