@metricinsights/pp-dev 0.18.0 → 0.18.1
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/CHANGELOG.md +77 -64
- package/README.md +91 -66
- package/dist/CHANGELOG.md +77 -64
- package/dist/README.md +91 -66
- package/dist/cjs/cli.js +1 -1
- package/dist/cjs/cli.js.map +1 -1
- package/dist/cjs/helpers.js.map +1 -1
- package/dist/cjs/index-B1GblhLQ.js +2 -0
- package/dist/cjs/index-B1GblhLQ.js.map +1 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/plugin-DY9gjLm8.js +2 -0
- package/dist/cjs/plugin-DY9gjLm8.js.map +1 -0
- package/dist/cjs/plugin.js +1 -1
- package/dist/cjs/version-plugin-DSLhm6Q1.js +2 -0
- package/dist/cjs/version-plugin-DSLhm6Q1.js.map +1 -0
- package/dist/client/client.css +1 -1
- package/dist/client/client.css.map +1 -1
- package/dist/client/client.js +91 -2
- package/dist/client/client.js.map +1 -1
- package/dist/client/index.html +12 -9
- package/dist/esm/cli.js +1 -1
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/helpers.js.map +1 -1
- package/dist/esm/index-basLGB1P.js +2 -0
- package/dist/esm/index-basLGB1P.js.map +1 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/esm/plugin-B6DaUVqp.js +2 -0
- package/dist/esm/plugin-B6DaUVqp.js.map +1 -0
- package/dist/esm/plugin.js +1 -1
- package/dist/esm/version-plugin-DekxT1OJ.js +2 -0
- package/dist/esm/version-plugin-DekxT1OJ.js.map +1 -0
- package/dist/types/index.d.ts +1 -205
- package/package.json +1 -1
- package/pp-dev.d.ts +1 -0
- package/scripts/patch-npm-bundled-vulnerabilities.mjs +8 -11
- package/dist/cjs/index-DR5Vl6zz.js +0 -2
- package/dist/cjs/index-DR5Vl6zz.js.map +0 -1
- package/dist/cjs/plugin-DMyHXqs8.js +0 -2
- package/dist/cjs/plugin-DMyHXqs8.js.map +0 -1
- package/dist/cjs/version-plugin-Cj4Pv-pw.js +0 -2
- package/dist/cjs/version-plugin-Cj4Pv-pw.js.map +0 -1
- package/dist/esm/index-Co3ktLxA.js +0 -2
- package/dist/esm/index-Co3ktLxA.js.map +0 -1
- package/dist/esm/plugin-CcoYWcTD.js +0 -2
- package/dist/esm/plugin-CcoYWcTD.js.map +0 -1
- package/dist/esm/version-plugin-B1n39tE6.js +0 -2
- package/dist/esm/version-plugin-B1n39tE6.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createProxyMiddleware as e,responseInterceptor as t}from"http-proxy-middleware";import{URL as s,fileURLToPath as r}from"url";import{createLogger as a}from"vite";import{createColors as n}from"picocolors";import i,{isAxiosError as o}from"axios";import{JSDOM as c}from"jsdom";import{Agent as l}from"https";import*as p from"memory-cache";import*as d from"path";import{promises as h}from"fs";import*as u from"crypto";import*as g from"process";import*as f from"child_process";import*as m from"console";import{inflateSync as w,brotliDecompressSync as y,unzipSync as v,deflateSync as b,brotliCompressSync as k,gzipSync as x}from"zlib";import P from"express";const T=(e,t,s)=>{const r=new RegExp(`(!!)?(https?(:(\\\\)?/(\\\\)?/)${e})`,"gi");return s.replace(r,(e,...s)=>e.startsWith("!!")?s[1]:`http${s[2]}${t}`)},$=(e,t,s)=>{e.setHeader("location",t),e.statusCode=s,e.end()};let A=new Map;const I="default",E=(e="info",t=I)=>{if(A&&"function"==typeof A.has||(A=new Map),A.has(t))return A.get(t);if(t===I){const s=a(e);return A.set(t,s),s}const s=a(e);return A.set(t,s),s},S=n(),L=function(){const e={personal:{placeholder:"API Token",caption:`You can get the API Token\n <a href="https://${host}/api-token" target="_blank" \n style="color: #007bff; text-decoration: none;">here</a>`,endpoint:"/@api/login"},regular:{placeholder:"Legacy Token",caption:`You can get the Legacy Token\n <a href="https://${host}/api/get_token" target="_blank" \n style="color: #007bff; text-decoration: none;">here</a>`,endpoint:"/@api/login"}};function t(t,s,r){const a=e[t];a&&(s.placeholder=a.placeholder,r.innerHTML=a.caption)}function s(e,t){t.textContent=e,t.classList.add("show")}function r(e){e.classList.remove("show")}function a(e,t,a,n){a.addEventListener("click",async a=>{if(a.preventDefault(),r(n),!t.value.trim())return s(`${t.placeholder} is required`,n),void t.focus();const i=document.getElementById("token-type-switcher"),o=i?.querySelector(".token-type-option.active"),c=o?.dataset.value||"personal";await async function(e,t,r,a){try{r.classList.add("loading");const n=await fetch("/@api/login",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token:e,tokenType:t}),redirect:"follow"}),i=n.url&&new URL(n.url,window.location.origin);if(!i||i.pathname.startsWith("/login")||i.pathname.startsWith("/@api/"))try{const e=await n.json();s(`Login failed: ${e?.error||"Unknown error occurred"}`,a)}catch(e){s("Login failed: Unable to parse response",a)}else window.location.href=n.url}catch(e){s("Login failed: Network error. Please check your connection.",a)}finally{r.classList.remove("loading")}}(t.value.trim(),c,e,n)}),t.addEventListener("keydown",e=>{"Enter"===e.key&&(e.preventDefault(),a.click())}),t.addEventListener("input",()=>{r(n)})}function n(e){const s=e.firstChild;if(!s)return;const r=s.lastChild?.cloneNode(!0);if(!r)return;r.innerHTML="";const n=r.cloneNode(!0);n.innerText="OR",n.setAttribute("role","separator"),n.setAttribute("aria-label","Alternative login method");const i=r.cloneNode(!0),o=document.createElement("div"),c=document.createElement("style");c.textContent="\n.helper-login-wrapper {\n font-family: Arial, sans-serif;\n color: #222;\n padding: 8px;\n background-color: #f8f9fa;\n border-radius: 8px;\n border: 1px solid #ddd;\n width: 100%;\n max-width: 400px;\n margin: 0 auto;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n}\n\n.helper-login-wrapper .title {\n font-weight: bold;\n font-size: 18px;\n margin-bottom: 12px;\n text-align: center;\n}\n\n.helper-login-wrapper .control {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.helper-login-wrapper .control input {\n border: 1px solid #ddd;\n border-radius: 4px;\n width: 100%;\n box-sizing: border-box;\n text-align: center;\n height: 26px;\n padding: 0 8px;\n font-size: 14px;\n}\n\n.helper-login-wrapper .control input:focus {\n outline: none;\n border-color: #007bff;\n box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25);\n}\n\n.helper-login-wrapper .control .caption {\n font-size: 12px;\n color: #666;\n text-align: center;\n}\n\n.helper-login-wrapper .footer {\n margin-top: 16px;\n text-align: center;\n}\n\n.helper-login-wrapper .footer .btn.submit {\n background-color: #007bff;\n color: white;\n border: none;\n border-radius: 4px;\n cursor: pointer;\n width: 100%;\n font-size: 14px;\n transition: background-color 0.3s;\n height: 26px;\n font-weight: 500;\n}\n\n.helper-login-wrapper .footer .btn.submit:hover {\n background-color: #0056b3;\n}\n\n.helper-login-wrapper .footer .btn.submit:disabled {\n background-color: #6c757d;\n cursor: not-allowed;\n}\n\n.helper-login-wrapper .token-type-switcher {\n display: flex;\n border: 1px solid #ccc;\n border-radius: 4px;\n overflow: hidden;\n margin-bottom: 12px;\n width: 100%;\n}\n\n.helper-login-wrapper .token-type-option {\n padding: 4px 8px;\n cursor: pointer;\n background-color: #f8f9fa;\n color: #666;\n font-size: 12px;\n text-align: center;\n transition: background-color 0.2s, color 0.2s;\n border-right: 1px solid #ccc;\n flex: 1;\n user-select: none;\n}\n\n.helper-login-wrapper .token-type-option:last-child {\n border-right: none;\n}\n\n.helper-login-wrapper .token-type-option.active {\n background-color: #007bff;\n color: white;\n font-weight: bold;\n}\n\n.helper-login-wrapper .token-type-option:not(.active):hover {\n background-color: #e9ecef;\n}\n\n.helper-login-wrapper .error-message {\n color: #dc3545;\n font-size: 12px;\n text-align: center;\n margin-top: 8px;\n display: none;\n}\n\n.helper-login-wrapper .error-message.show {\n display: block;\n}\n\n.helper-login-wrapper .loading {\n opacity: 0.6;\n pointer-events: none;\n}\n",document.head.appendChild(c),o.innerHTML=`\n<div class="helper-login-wrapper" role="form" aria-label="PP Dev Helper Login">\n <div class="title" role="heading" aria-level="2">PP Dev Helper</div>\n\n <div class="token-type-switcher" id="token-type-switcher" role="tablist" aria-label="Token type selection">\n <div class="token-type-option active" data-value="personal" role="tab" aria-selected="true" tabindex="0">\n API Token\n </div>\n <div class="token-type-option" data-value="regular" role="tab" aria-selected="false" tabindex="0">\n Legacy Token\n </div>\n </div>\n\n <div class="control">\n <input \n type="password" \n id="helper-token" \n placeholder="API Token"\n aria-label="Token input"\n aria-describedby="token-caption"\n >\n <span class="caption" id="token-caption">\n You can get the API Token\n <a href="https://${host}/api-token" target="_blank" style="color: #007bff; text-decoration: none;">here</a>\n </span>\n </div>\n\n <div class="error-message" id="error-message" role="alert" aria-live="polite"></div>\n\n <div class="footer">\n <button id="helper-token-submit" class="btn submit" type="button">\n Token Login\n </button>\n </div>\n</div>`,i.appendChild(o),s.appendChild(n),s.appendChild(i);const l=document.getElementById("token-type-switcher"),p=document.getElementById("helper-token"),d=document.getElementById("token-caption"),h=document.getElementById("helper-token-submit"),u=document.getElementById("error-message"),g=o.querySelector(".helper-login-wrapper");l&&p&&d&&h&&u&&g?(!function(e,s,r){const a=e.querySelectorAll(".token-type-option"),n=e=>{const n=e.dataset.value;a.forEach(e=>{e.classList.remove("active"),e.setAttribute("aria-selected","false"),e.setAttribute("tabindex","-1")}),e.classList.add("active"),e.setAttribute("aria-selected","true"),e.setAttribute("tabindex","0"),t(n,s,r)};a.forEach(e=>{e.addEventListener("click",e=>{const t=e.currentTarget;n(t)}),e.addEventListener("keydown",t=>{"Enter"!==t.key&&" "!==t.key||(t.preventDefault(),n(e))})})}(l,p,d),a(g,p,h,u),t("personal",p,d)):console.error("Failed to find required form elements")}const i=new MutationObserver(e=>{for(const t of e)if("childList"===t.type){const e=document.querySelector("#mi-react-root form");if(e){i.disconnect(),n(e);break}}});i.observe(document.body,{childList:!0,subtree:!0});const o=document.querySelector("#mi-react-root form");o&&(i.disconnect(),n(o))},R=/^(https?:\/\/)([^/]+)(\/.*)?$/i,C="X-PP-Proxy";function F(r){const{rewritePath:a=/^\/(?!p[tl]).*/i,baseURL:n="",disableSSLValidation:i=!1,miAPI:o,templateName:c}=r;if(!n)throw new Error("Base url is required");const l=n.replace(R,"$2"),p=n.replace(R,"$1$2"),d=import("file-type"),h=E();return e({selfHandleResponse:!0,pathFilter:(e,t)=>!(r.proxyIgnore||[]).some(t=>"string"==typeof t?e.startsWith(t):"function"!=typeof t.test||t.test(e))&&("string"==typeof a?e.startsWith(a):Array.isArray(a)?a.some(t=>e.startsWith(t)):"function"==typeof a.test&&a.test(e)),target:n,changeOrigin:!0,autoRewrite:!0,cookieDomainRewrite:{[l]:"localhost"},logger:{info:()=>{},log:()=>{},error:()=>{},warn:()=>{}},secure:!i,headers:{host:l,origin:p},on:{proxyReq(e,t,r){const a=t.headers.host,i=e.getHeader("referer");a&&i&&"string"==typeof i&&e.setHeader("referer",i.replace(new RegExp(`https?://${a}`),n)),o.personalAccessToken&&e.setHeader("Authorization",`Bearer ${o.personalAccessToken}`);const l=t.url??"/",p=function(e,t,r,a){if(!t||!r||!a||r===a)return e;try{const t=new s(e,"http://localhost"),n=t.pathname.match(/^\/data\/page\/([^/]+)(\/.*)?$/);if(!n)return e;let i;try{i=decodeURIComponent(n[1])}catch{i=n[1]}if(i!==r)return e;return`/data/page/${a}${n[2]??""}`+t.search+t.hash}catch{return e}}(l,o.v7Features,c,o.internalPageName);return p!==l&&(t.url=p,e.path=p,console.info(`${S.cyan("Rewrites data page to correct internal page name")}: ${S.yellow(l)} ${S.blue("→")} ${S.green(p)}`)),h.info(`${S.blue("Proxies request:")} ${S.green(t.method)} ${t.url} -> ${S.green(e.method)} ${e.protocol}//${e.host}${e.path}`),t.socket.on("close",()=>{setTimeout(()=>{e.destroyed||e.destroy()},200)}),e},proxyRes:(e,s,r)=>{if(e.headers["content-type"]?.includes("text/event-stream")||e.headers["transfer-encoding"]?.includes("chunked")&&"no"===e.headers["x-accel-buffering"]){h.info(`${S.blue("Start streaming for request:")} ${S.green(s.method)} ${s.url}`);const t=async(e,t,s)=>{s.setHeader(C,1),s.setHeaders(new Map(Object.entries(e.headers))),e.pipe(s)};return t(e,s,r)}const a=t(async(e,t,s,r)=>{r.setHeader(C,1);if(await(await d).fileTypeFromBuffer(e))return e;{let t=e.toString("utf8");try{const e=new URL(s.url??"",`http://${l}`);if(e.searchParams&&e.searchParams.has("proxyRedirect")){t+=`<script>(${function(){const e="pp-dev::redirectCount",t="pp-dev::lastRedirect";let s=+(localStorage.getItem(e)??0);localStorage.getItem(t);Number.isNaN(s)&&(s=0);let r=window.location.href;const a=function(){const n=new URLSearchParams(window.location.search);if(!n.has("proxyRedirect"))return console.debug("No proxyRedirect param. Cleaning up."),void localStorage.removeItem(e);r!==window.location.href?(r=window.location.href,setTimeout(a,s<3?3e3:5e3)):window.location.href=n.get("proxyRedirect"),localStorage.setItem(e,""+ ++s),localStorage.setItem(t,(new Date).toISOString())};setTimeout(a,3e3)}.toString()})()<\/script>`}e.pathname.startsWith("/login")&&(r.setHeader("Cache-Control","no-cache, no-store, must-revalidate"),r.setHeader("Pragma","no-cache"),r.setHeader("Expires","0"));const a=t.slice(0,100);(a.includes("<html")||a.includes("<body")||a.includes("<head")||a.includes("html>"))&&(t+=`<script>const host = "${l}";\n(${L.toString()})()<\/script>`)}catch{}const a=s.headers.host??"";return((e,t,s)=>{const r=new RegExp(`${e.replace(/\\*\//gi,"\\\\/")}`,"gi"),a=new RegExp(`${e}`,"gi"),n=s.replace(r,t);return n===s?n.replace(a,t):n})("/auth/saml/login","/login",T(l,a,t))}});return a(e,s,r)},error(e,t,s){const r=`Proxy error: "${e.message}" when trying to "${t.method} ${t.url}"\n\n${e.stack}`;h.error(r),s.writable&&s.writeHead(500,{"Content-Type":"text/plain"}),s.end(r)}}})}class N{axios;constructor(e){this.axios=e}async checkAuth(e){return this.axios.get("/data/page/index/auth/info",{headers:Object.assign({},e,{accept:"text/html"}),maxRedirects:0}).then(()=>!0).catch(()=>!1)}}class D extends N{formdataModulePromise=import("formdata-node");constructor(e){super(e)}getDownloadUrl(e){return`/admin/page/downloadassets/id/${e}`}getDownloadTemplateUrl(e){return`/admin/pagetemplate/downloadassets/id/${e}`}getUploadUrl(e){return`/admin/page/uploadassets/id/${e}`}getUploadTemplateUrl(e){return`/admin/pagetemplate/uploadassets/id/${e}`}async downloadPageAssets(e,t){return this.axios.get(this.getDownloadUrl(e),{withCredentials:!0,headers:Object.assign({},t,{accept:"*/*"}),responseType:"arraybuffer"}).then(e=>e.data)}async uploadPageAssets(e,t,s){const r=new(await this.formdataModulePromise).FormData,{File:a}=await this.formdataModulePromise,n=new a([t],"file.zip",{type:"application/zip"});r.append("file",n);const i=this.getUploadUrl(e);return this.axios.post(i,r,{withCredentials:!0,headers:Object.assign({},s,{accept:"application/json","Content-Type":"multipart/form-data",Referer:this.axios.getUri({url:i})})}).then(e=>e.data)}async downloadTemplateAssets(e,t){return this.axios.get(this.getDownloadTemplateUrl(e),{withCredentials:!0,headers:Object.assign({},t,{accept:"*/*"}),responseType:"arraybuffer"}).then(e=>e.data)}async uploadTemplateAssets(e,t,s){const r=new(await this.formdataModulePromise).FormData,{File:a}=await this.formdataModulePromise,n=new a([t],"file.zip",{type:"application/zip"});r.append("file",n,"file.zip");const i=this.getUploadTemplateUrl(e);return this.axios.post(i,r,{withCredentials:!0,headers:Object.assign({},s,{accept:"application/json","Content-Type":"multipart/form-data",Referer:this.axios.getUri({url:i})})}).then(e=>e.data)}}class O extends D{getDownloadUrl(e){return`/api/page/id/${e}/asset/download`}getDownloadTemplateUrl(e){return`/api/page_template/id/${e}/asset/download`}getUploadUrl(e){return`/api/page/id/${e}/asset/upload`}getUploadTemplateUrl(e){return`/api/page_template/id/${e}/asset/upload`}}class U extends N{async getAll(e){return(await this.axios.get("/api/page",{withCredentials:!0,headers:Object.assign({},e,{Accept:"application/json","Content-Type":"application/json","Cache-Control":"no-cache",Pragma:"no-cache",Expires:"0"})})).data.pages}async get(e,t){const s=(await this.axios.get(`/api/page/id/${e}`,{withCredentials:!0,headers:Object.assign({},t,{accept:"application/json","content-type":"application/json"})})).data;if("object"!=typeof s||null===s)throw new Error("Something went wrong when fetching page data. The instance may be down or in maintenance mode. Please try again later.");return s.page}async getPageContent(e,t){return(await this.axios.get(`/p/${e}`,{withCredentials:!0,headers:Object.assign({},t,{accept:"text/html","content-type":"application/json"})})).data}async create(e,t){return(await this.axios.post("/api/page",e,{withCredentials:!0,headers:Object.assign({},t,{accept:"application/json","content-type":"application/json"})})).data.page}}class M extends N{async getAll(e,t){return(await this.axios.get("/api/page_template",{withCredentials:!0,headers:Object.assign({},t,{Accept:"application/json","Content-Type":"application/json","Cache-Control":"no-cache",Pragma:"no-cache",Expires:"0"}),params:{internal_name:e}})).data.page_templates}async get(e,t){return(await this.axios.get(`/api/page_template/id/${e}`,{withCredentials:!0,headers:Object.assign({},t,{accept:"application/json","content-type":"application/json"})})).data.page_template}}function j(e){const t=e.response?.status||0,s=e.response?.data?.message||e.message||"Unknown error";switch(t){case 412:const e=s.toLowerCase();return e.includes("session expired")||e.includes("session has expired")?{status:t,message:s,code:"SESSION_EXPIRED",userFriendlyMessage:"Your session has expired",suggestions:["Refresh your token in the portal","Re-authenticate with the portal","Check if your token has been revoked","Ensure your token has the correct permissions"]}:{status:t,message:s,code:"AUTH_FAILED",userFriendlyMessage:"Authentication failed",suggestions:["Verify your token is correct","Check token permissions","Ensure the token hasn't expired","Try generating a new token"]};case 401:return{status:t,message:s,code:"UNAUTHORIZED",userFriendlyMessage:"Unauthorized access",suggestions:["Check if your token is valid","Verify you have the required permissions","Ensure the token hasn't been revoked","Try logging in again"]};case 403:return{status:t,message:s,code:"FORBIDDEN",userFriendlyMessage:"Access forbidden",suggestions:["Check your user permissions","Verify the portal page ID is correct","Ensure your token has the right scope","Contact your administrator"]};default:return{status:t,message:s,code:"UNKNOWN_ERROR",userFriendlyMessage:"An unexpected error occurred",suggestions:["Check your network connection","Verify the portal URL is correct","Try again in a few moments","Check the portal status"]}}}const H="[DEV PAGE. DO NOT DELETE]",B=new Map;class z{#e;#t;#s=null;#r;#a;#n;#i;#o;#c;#l;internalPageName;portalPageId;templateLess;assetsApi;pageApi;pageTemplateApi;logger;constructor(e,t){const{headers:s={},portalPageId:r,templateLess:a=!0,disableSSLValidation:n=!1,v7Features:o=!1,personalAccessToken:c}=t||{};this.#e=s,this.#a=[],this.#r="",this.#n=o,this.#i=c,this.#o=!1,this.#c=Promise.resolve(!1);const p=`${e}:${n}`;B.has(p)?this.#t=B.get(p):(n&&(process.env.NODE_TLS_REJECT_UNAUTHORIZED="0",i.defaults.httpsAgent=new l({rejectUnauthorized:!1})),this.#t=i.create({baseURL:e,headers:s,timeout:3e4,maxRedirects:5,httpAgent:new l({keepAlive:!0,maxSockets:10}),httpsAgent:new l({keepAlive:!0,maxSockets:10})}),B.set(p,this.#t)),this.portalPageId=r,this.templateLess=a,this.assetsApi=new(o?O:D)(this.#t),this.pageApi=new U(this.#t),this.pageTemplateApi=new M(this.#t),this.logger=E()}async isTemplateLoaded(){return this.#c}get isV710OrHigher(){return this.#o}get v7Features(){return this.#n}#p(e){const t=Object.assign({},e,{host:void 0,referer:void 0});return Object.keys(t).forEach(e=>void 0===t[e]&&delete t[e]),this.#e=t,!t.authorization&&this.#i&&(t.authorization=`Bearer ${this.#i}`),t}get personalAccessToken(){return this.#i}set personalAccessToken(e){this.#i=e}updateHeaders(e){this.#p(e)}get localTemplateHTML(){return'<!DOCTYPE html>\n <html lang="en">\n <head>\n <meta charset="UTF-8" />\n <title>%%PAGE TITLE%%</title>\n <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>\n <meta name="theme-color" content="rgba(255, 255, 255, 1)"/>\n <link rel="shortcut icon" type="image/x-icon" sizes="any" href="/img/favicon/favicon.ico"/>\n <link rel="icon" type="image/png" sizes="16x16" href="/img/favicon/favicon-16x16.png"/>\n <link rel="icon" type="image/png" sizes="32x32" href="/img/favicon/favicon-32x32.png"/>\n <link rel="icon" type="image/png" sizes="48x48" href="/img/favicon/favicon-48x48.png"/>\n <meta name="msapplication-config" content="/auth/browserconfig.xml"/>\n <link rel="apple-touch-icon" sizes="180x180" href="/img/favicon/apple-touch-icon.png"/>\n <link rel="manifest" href="/auth/site.webmanifest"/>\n <link rel="manifest" href="/auth/manifest.json"/>\n <link rel="stylesheet" type="text/css" href="/auth/theme-vars.css"/>\n <link rel="icon" type="image/svg+xml" href="/favicon.ico" />\n <meta name="viewport" content="width=device-width, initial-scale=1.0" />\n <script src="/js/libs/underscore-latest.min.js" charset="utf-8"><\/script>\n <script src="/js/jquery/jquery-latest.min.js" charset="utf-8"><\/script>\n <script src="/js/application/rating_component.js" charset="utf-8"><\/script>\n </head>\n <body>\n <div id="mi-react-root"></div>\n <script src="/auth/info.js"><\/script>\n <script src="/js/main.js" defer><\/script>\n <link rel="stylesheet" href="/css/main.css" />\n </body>\n </html>'}async getPageTemplate(e){if(await this.#c||this.#s||(this.#c=new Promise(e=>{this.#l=e})),this.#s)return Promise.resolve(this.#s);if(void 0===this.templateLess&&(this.templateLess=!1),this.#n){const t=await this.pageApi.get(this.portalPageId,this.#p(e)).then(e=>(this.logger.info(S.green("Page fetched")),e)).catch(async t=>{throw this.#l(!1),await this.pageApi.checkAuth(this.#p(e))?(this.logger.error(S.red(`Error fetching page data: ${t.message}\n${t.stack}`)),new Error("The current user does not have access to this page. Check your configuration to ensure the portalPageId is correct.")):t});return void 0!==t.template_id&&(this.#o=!0),this.internalPageName=t.internal_name,this.#s=this.localTemplateHTML,this.#s=this.#s.replace(/%%PAGE TITLE%%/g,t.name||"Local template"),this.logger.info(S.green("Local page template fetched")),this.#l(!0),this.#s}let t=(await this.pageApi.getAll(this.#p(e)).then(e=>(this.logger.info(S.green("Page list fetched")),e)).catch(async t=>{throw this.#l(!1),await this.pageApi.checkAuth(this.#p(e))?(this.logger.error(S.red(`Error fetching page list: ${t.message}\n${t.stack}`)),new Error("Current user does not have access to page list")):t})).find(e=>e.name===H);return t||(this.logger.warn(S.yellow("Creating dev page template...")),t=await this.pageApi.create({enabled:"Y",name:H,internal_name:"dev-page-template",visible_in_homepage:"Y"},this.#p(e)).then(e=>(this.logger.info(S.green("Dev page created")),e)).catch(e=>{throw this.logger.error(S.red(`Error creating dev page: ${e.message}`)),this.#l(!1),new Error(`Error when creating dev page.\n That can be caused by missing permissions or page with name "${H}" already exists`)})),await this.pageApi.getPageContent(t.internal_name,this.#p(e)).then(e=>(this.#s=e,e)).then(e=>(this.#l(!0),this.logger.info(S.green("Page template fetched")),e)).catch(e=>{throw this.#l(!1),this.logger.error(S.red(`Error fetching page template: ${e.message}`)),new Error("Error fetching page template")})}async getPageVariables(e,t){return this.#s=await this.getPageTemplate(t),this.portalPageId||(this.portalPageId=e,this.templateLess=!1),await this.pageApi.get(e,this.#p(t)).then(e=>{const{tags:t="[]",name:s,template:r}=e;if(r&&t){const e=JSON.parse(t);return this.#a=e,this.#r=s,e}return this.#a=[],this.#r=s,[]}).catch(t=>{if(this.logger.error(S.red(`Error fetching page variables: ${t.message}`)),404===t.response?.status)throw new Error(`Portal Page with id "${e}" not found on instance ${this.#t.getUri()}`);if(401===t.response?.status)throw new Error(`Current user does not have access to page with id "${e}" on instance ${this.#t.getUri()}`);throw t})}async getPageInfo(e,t){this.portalPageId||(this.portalPageId=e);const s=this.#p(t),r=this.portalPageId;try{return this.#n?await this.#d(r,s):await this.#h(r,s)}catch(e){this.#u(e,r)}}async#d(e,t){const s=await this.pageApi.get(e,t);return this.logger.info(S.green("Page fetched")),void 0!==s.template_id&&(this.#o=!0),this.internalPageName=s.internal_name,s}async#h(e,t){return await this.pageApi.get(e,t)}#u(e,t){if(this.#n&&e.message?.includes("access"))throw new Error("The current user does not have access to this page. Check your configuration to ensure the portalPageId is correct.");if(404===e.response?.status)throw new Error(`Portal Page with id "${t}" not found on instance ${this.#t.getUri()}`);throw 401===e.response?.status&&this.logger.error(S.red(`Current user does not have access to page with id "${t}" on instance ${this.#t.getUri()}`)),e}buildPage(e,t=!1){let s="string"==typeof e?e:e.toString("utf-8");for(const e of this.#a)s=s.replace(new RegExp(`\\[${e.name}\\]`,"g"),e.value);const r=new c(t?s:this.#s),a="%%PLACEHOLDER%%";if(!t){const e=r.window.document.createElement("div");e.innerHTML=a;const t=r.window.document.querySelector(".main-side");if(t){const s=t.querySelectorAll("script");s.length?t.insertBefore(e,s.item(s.length-1)):t.append(e)}else{const t=r.window.document.createElement("div");t.append(e),r.window.document.body.append(t)}const s=r.window.document.querySelector("head"),n=s.querySelector("title");n?n.text=this.#r:s.innerHTML+=`<title>${this.#r}</title>`}return r.serialize().replace(new RegExp(`<div>\\s*${a}\\s*<\\/div>`,"i"),s)}async getAssets(){if(this.portalPageId){if(this.templateLess)return await this.assetsApi.downloadPageAssets(this.portalPageId,this.#e);{const e=await this.pageApi.get(this.portalPageId,this.#e);if(this.#o){const t=await this.pageTemplateApi.get(e.template_id,this.#e);return await this.assetsApi.downloadTemplateAssets(t.id,this.#e)}if(e.template)return await this.assetsApi.downloadTemplateAssets(e.template,this.#e)}}}async updateAssets(e){if(this.portalPageId){if(this.templateLess)return await this.assetsApi.uploadPageAssets(this.portalPageId,e,this.#e);{const t=await this.pageApi.get(this.portalPageId,this.#e);if(this.#o){const s=await this.pageTemplateApi.get(t.template_id,this.#e);return await this.assetsApi.uploadTemplateAssets(s.id,e,this.#e)}if(t.template)return await this.assetsApi.uploadTemplateAssets(t.template,e,this.#e)}}}async validateCredentials(e){try{const t=e||this.#e;return await this.get("/api/user",t,!0),{isValid:!0}}catch(e){const t=j(e);return{isValid:!1,error:t.userFriendlyMessage,code:t.code}}}async get(e,t,s=!1){const r=s?t:Object.assign({},this.#p(this.#e),t);try{return await this.#t.get(e,{headers:r})}catch(e){if("UNKNOWN_ERROR"!==j(e).code){const t=j(e);throw this.logger.error(S.red(`API request failed: ${t.userFriendlyMessage}`)),function(e,t,s){const r=j(t),a=`[${s}] `;e.error(S.red(`${a}${r.userFriendlyMessage}`)),e.error(S.red(`Status: ${r.status} (${r.code})`)),e.error(S.red(`Details: ${r.message}`)),r.suggestions.length>0&&(e.info(S.yellow("Suggestions:")),r.suggestions.forEach((t,s)=>{e.info(S.yellow(` ${s+1}. ${t}`))}))}(this.logger,e,"API Request"),e.response||(e.response={status:t.status,data:{message:t.message}}),e.tokenErrorInfo=t,e}throw e}}}class V{server;opts;eventMap;logger;constructor(e,t){this.server=e,this.opts=t||{},this.eventMap=new Map,this.eventMap.set("info-data:request",this.onInfoDataRequest.bind(this)),this.eventMap.set("template:sync",this.onTemplateSync.bind(this)),this.logger=E(),this.init()}init(){const{ws:e}=this.server;for(const[t,s]of this.eventMap)e.on(t,s)}onInfoDataRequest(){this.server.ws.send({type:"custom",event:"info-data:response",data:{}})}async onTemplateSync(){if(!this.opts.distService||!this.opts.miAPI)return this.server.ws.send("template:sync:response",{error:"Dist service or MiAPI is not defined"}),void this.logger.error(S.red("Dist service or MiAPI is not defined"));{const{distService:e,miAPI:t}=this.opts;if(this.server.config.clientInjectionPlugin?.v7Features){if(!t?.isV710OrHigher)return void this.server.ws.send("template:sync:response",{error:"This feature is available only for MI v7.1.0 or higher",config:{canSync:!1}});this.server.ws.send("client:config:update",{config:{canSync:!0}})}const s=await(t?.getAssets().catch(async e=>{if(o(e)){if("SESSION_EXPIRED"===j(e).code){this.logger.info(S.yellow("Session expired - attempting to validate credentials"));try{const e=await(t?.validateCredentials());e&&!e.isValid?(this.logger.error(S.red(`Authentication error: ${e.error}`)),this.server.ws.send("template:sync:response",{error:e.error,code:e.code,refresh:!0})):(this.logger.info(S.yellow("Session expired")),this.server.ws.send("template:sync:response",{error:"Session expired",code:"SESSION_EXPIRED",refresh:!0}))}catch(e){this.logger.info(S.yellow("Session expired")),this.server.ws.send("template:sync:response",{error:"Session expired",code:"SESSION_EXPIRED",refresh:!0})}return e}if(e.cause instanceof Error&&("ECONNRESET"===e.cause.code||"ENOTFOUND"===e.cause.code))return this.logger.info(S.yellow("Server in maintenance mode, VPN connection is needed or no internet connection")),this.server.ws.send("template:sync:response",{error:"Server in maintenance mode, VPN connection is needed or no internet connection",code:"CONNECTION_ERROR"}),e}throw e}));if(s instanceof Error)return;const r=s?await(e?.saveBackupAndBuild(s).catch(e=>{if("Backup file is not a ZIP file"===e.message)return this.logger.error(S.red("Backup file is not a ZIP file")),e})):await(e?.buildNewAssets());if(!(r&&r instanceof Buffer))return r instanceof Error?(this.server.ws.send("template:sync:response",{error:r.message}),void this.logger.error(S.red(r.message))):(this.server.ws.send("template:sync:response",{error:"Failed to build new assets"}),void this.logger.error(S.red("Failed to build new assets")));{const s=await(t?.updateAssets(r));if("OK"===s?.status){const t=e?.getBackupMeta(),{lastBackupName:s,lastBackupHash:r,lastBackupDate:a}=t||{lastBackupName:"",lastBackupHash:"",lastBackupDate:(new Date).toISOString()};this.server.ws.send("template:sync:response",{syncedAt:new Date(a),currentHash:r,backupFilename:s}),this.logger.info(S.green("Template synced"))}else this.server.ws.send("template:sync:response",{error:"Failed to update assets"}),this.logger.error(S.red("Failed to update assets"))}}}}const _=/\.(?:[a-z0-9]+)$/i,q=6e5,Z=104857600,W=1e3;class X extends p.Cache{totalSize=0;maxSize;maxItems;constructor(e,t){super(),this.maxSize=e,this.maxItems=t}put(e,t,s){const r=this.get(e);r&&(this.totalSize-=r.size);const a=super.put(e,t,s);return this.totalSize+=t.size,this.cleanup(),a}cleanup(){const e=this.keys();if(e.length>this.maxItems){const t=e.length-this.maxItems,s=e.sort((e,t)=>{const s=this.get(e),r=this.get(t);return(s?.timestamp||0)-(r?.timestamp||0)});for(let e=0;e<t;e++){const t=s[e],r=this.get(t);r&&(this.totalSize-=r.size,this.del(t))}}for(;this.totalSize>this.maxSize&&e.length>0;){const t=e.sort((e,t)=>{const s=this.get(e),r=this.get(t);return(s?.timestamp||0)-(r?.timestamp||0)})[0];if(t){const e=this.get(t);e&&(this.totalSize-=e.size,this.del(t))}}}getTotalSize(){return this.totalSize}getItemCount(){return this.keys().length}}const Y=new X(Z,W);function K(e){if(0===e.length)return Buffer.alloc(0);if(1===e.length)return e[0];const t=e.reduce((e,t)=>Buffer.byteLength(t)+e,0);return Buffer.concat(e,t)}function J(e){const{devServer:t,ttl:s=q,maxSize:r=Z,maxItems:a=W}=e,n=E();return r===Z&&a===W||(Y.maxSize=r,Y.maxItems=a),t.cache=Y,(e,t,r)=>{const a=e.originalUrl||e.url||"",i=function(e){const t=e.split("?")[0];return _.test(t)?t.includes("/auth/info.js")?"":e:""}(a);if(!i)return r();const o=Y.get(i);if(o)return n.info(`${S.blue("Proxies request:")} ${S.green(e.method)} ${a} -> ${S.blue("Cache")} ${i}`),function(e,t){try{for(const[s,r]of Object.entries(t))null!=r&&e.setHeader(s,r)}catch(e){console.warn("Failed to set some response headers:",e)}}(t,o.headers),t.write(o.content),void t.end();const c=t.end,l=t.write,p=[];t.write=function(e,s,r){if(!t.hasHeader(C))return l.call(this,e,s,r);if("string"==typeof e){const t=s||"utf8";p.push(Buffer.from(e,t))}else Buffer.isBuffer(e)?p.push(e):null!=e&&p.push(Buffer.from(String(e),"utf8"));return!0},t.end=function(e,r,a){if(!t.hasHeader(C))return c.call(this,e,r,a);if(null!=e)if("string"==typeof e){const t=r||"utf8";p.push(Buffer.from(e,t))}else Buffer.isBuffer(e)?p.push(e):p.push(Buffer.from(String(e),"utf8"));let o;try{o=K(p);const e=Buffer.byteLength(o);if(e>0&&e<10485760){const r={headers:t.getHeaders(),content:o,timestamp:Date.now(),size:e};Y.put(i,r,s),n.info(`${S.blue("[Cached]")} ${i} (${(e/1024).toFixed(1)}KB)`)}}catch(e){n.error(`Failed to cache response for ${i}: ${e}`),o=K(p)}const l=r||"utf8";return c.call(this,o,l,a)},r()}}const G="pageName",Q="date",ee=d.dirname("undefined"!=typeof __filename&&__filename||r(import.meta.url)),te=d.resolve(ee,"..",".."),se=d.resolve(te,"..",".."),re=d.resolve(se,".pp-dev-meta"),ae=d.resolve(re,"sync-service.meta.json");class ne{backupFolder;backupNameTemplate;dateFormat;pageName;currentMeta=null;distZipFolder;distZipFilename;logger;constructor(e,t){this.pageName=e;const{backupFolder:s=d.resolve(g.cwd(),"backups"),distZipFolder:r=d.resolve(g.cwd(),"dist-zip"),distZipFilename:a=`${this.pageName}.zip`,backupNameTemplate:n=`{${G}}-{${Q}}.zip`,dateFormat:i=e=>e.toISOString().replace(/:/g,"-").replace(/\..*$/,"")}=t||{};this.backupFolder=s,this.backupNameTemplate=n,this.dateFormat=i,this.distZipFolder=r,this.distZipFilename=a,this.syncMeta(),this.logger=E()}async checkMeta(){try{await h.stat(re)}catch{await h.mkdir(re)}try{await h.stat(this.backupFolder)}catch{await h.mkdir(this.backupFolder)}}async readMetaFile(){return await this.checkMeta(),await h.readFile(ae,{encoding:"utf-8"}).catch(()=>"{}")}async writeMetaFile(e){return await this.checkMeta(),await h.writeFile(ae,JSON.stringify(e,null,2),{encoding:"utf-8"})}async syncMeta(){this.currentMeta?await this.writeMetaFile(this.currentMeta):this.currentMeta=JSON.parse(await this.readMetaFile())}async getLatestSavedBackup(){const{lastBackupName:e}=this.currentMeta;if(!e)return null;const t=d.resolve(this.backupFolder,e);try{return await h.stat(t),t}catch{return null}}backupName(e,t=new Date){return this.backupNameTemplate.replace(`{${G}}`,e).replace(`{${Q}}`,this.dateFormat(t))}getBackupMeta(){return this.currentMeta}async saveBackup(e){if("PK"!==e.toString("utf-8").slice(0,4))throw new Error("Backup file is not a ZIP file");const t=u.createHash("md5").update(e).digest("hex");if(await this.getLatestSavedBackup()){const{lastBackupHash:e}=this.currentMeta;if(e===t)return}const s=new Date,r=this.backupName(this.pageName,s);return this.currentMeta.lastBackupName=r,this.currentMeta.lastBackupHash=t,this.currentMeta.lastBackupDate=s.toISOString(),await this.syncMeta(),await h.writeFile(d.resolve(this.backupFolder,r),e).finally(()=>{this.logger.info(`Backup saved to ${r}`)})}async buildNewAssets(){const e=new Promise((e,t)=>{let s="";this.logger.info(S.cyan("[DistService] Build started"));const r=f.spawn("node",[d.resolve(te,"./bin/pp-dev.js"),"build"],{cwd:g.cwd(),env:Object.assign({},g.env,{NODE_ENV:"production"}),stdio:"inherit"});r.on("message",e=>{s+=e}),r.on("close",r=>{0===r?e(s):t(new Error(`build command exited with code ${r}`))}),r.on("error",e=>{t(e)})});try{await e.finally(()=>{this.logger.info(S.cyan("[DistService] Build finished"))});const t=d.resolve(g.cwd(),this.distZipFolder,this.distZipFilename);if(!await h.stat(t))throw new Error(`File ${t} not found`);return await h.readFile(t)}catch(e){throw m.log(e),e}}async saveBackupAndBuild(e){return await this.saveBackup(e),await this.buildNewAssets()}}function ie(e,t){return async(s,r,a)=>{if(await e(s.url??"",s,r)){E().info(`Rewrite response for ${s.url}`);const e=r.end,a=[];r.write=function(e){return a.push(e),!0},r.end=function(n,i,o){"string"==typeof n&&a.push(Buffer.from(n));const c=r.getHeader("content-encoding"),l=function(e,t){switch(t){case"gzip":return v(e);case"br":return y(e);case"deflate":return w(e);default:return e}}(Buffer.from(Buffer.concat(a)),c),p="function"!=typeof i&&i?i:"utf-8",d="function"==typeof i?i:o;return e.call(this,function(e,t){switch(t){case"gzip":return x(e);case"br":return k(e);case"deflate":return b(e);default:return e}}(t(l,s,r),c),p,d),this}}a()}}function oe(e,t){const r=(e=(e=e.startsWith("/")?e:`/${e}`).endsWith("/")?e:`${e}/`).endsWith("/")?e.slice(0,-1):e,a=E();return(n,i,o)=>{const c=new s(n.url??"","http://localhost"),{pathname:l,search:p}=c,d=["/",r];if(t&&(d.push(`/pt/${t}`),d.push(`/pl/${t}`)),d.includes(l)){const t=`${e}${p}`;return a.info(S.yellow(`Redirecting to: ${t}`)),$(i,t,302)}o()}}class ce{state={isAuthenticated:!1,isRedirected:!1,lastChecked:0};listeners=new Set;getState(){return{...this.state}}isAuthenticated(){return this.state.isAuthenticated}isRedirected(){return this.state.isRedirected}setAuthenticated(e){this.state.isAuthenticated=e,this.state.lastChecked=Date.now(),this.notifyListeners()}setRedirected(e){this.state.isRedirected=e,this.notifyListeners()}updateState(e){void 0!==e.isAuthenticated&&(this.state.isAuthenticated=e.isAuthenticated),void 0!==e.isRedirected&&(this.state.isRedirected=e.isRedirected),this.state.lastChecked=Date.now(),this.notifyListeners()}reset(){this.state={isAuthenticated:!1,isRedirected:!1,lastChecked:0},this.notifyListeners()}subscribe(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}notifyListeners(){this.listeners.forEach(e=>{try{e(this.getState())}catch(e){console.error("Error in auth state listener:",e)}})}getDebugInfo(){return{...this.getState(),listenerCount:this.listeners.size}}}const le=new ce,pe=new Map;function de(e){const t=pe.get(e);return t?Date.now()-t.timestamp>18e4?(pe.delete(e),null):t.data:null}function he(e,t){pe.set(e,{timestamp:Date.now(),data:t})}const ue="/home?proxyRedirect=";function ge(e,t,s){const{templateLess:r=!1,miHudLess:a=!1,appId:n,base:i,v7Features:o}=s,c=E();if(r&&a&&void 0===n)throw new Error("Custom App ID is required when both templateLess and miHudLess are true");let l=le.getState();return le.subscribe(e=>{l=e}),async(s,p,d)=>{try{const h=!(r&&a),u=e.test((s.url??"").split("?")[0]);if(!l.isAuthenticated&&!l.isRedirected&&s.url?.startsWith("/home")&&!s.url?.startsWith(ue)){c.info(S.blue("Trying to authenticate and redirect to base"));try{return h?await me(t,{templateLess:r,miHudLess:a,appId:n,redirectUrl:o&&i?`${i}`:`${ue}${encodeURIComponent("/")}`},s,p,()=>{},c):await fe(t,{templateLess:r,miHudLess:a,appId:n,redirectUrl:o&&i?`${i}`:`${ue}${encodeURIComponent("/")}`},s,p,()=>{},c),le.setRedirected(!0),c.info(S.blue("Successfully authenticated. Redirecting to base")),$(p,i??"/",302)}catch(e){return d()}}if(!u)return d();if(!h){return await fe(t,{templateLess:r,miHudLess:a,appId:n,redirectUrl:o&&i?`${i}`:`${ue}${encodeURIComponent("/")}`},s,p,d,c)}return await me(t,{templateLess:r,miHudLess:a,appId:n,redirectUrl:o&&i?`${i}`:`${ue}${encodeURIComponent("/")}`},s,p,d,c)}catch(e){return c.error(S.red(`Unexpected error in load-pp-data middleware: ${e instanceof Error?e.message:String(e)}`)),le.reset(),d(e)}}}async function fe(e,t,s,r,a,n){const{appId:i,redirectOnAuthFailure:o,redirectUrl:c}=t;if(void 0===i){const e=new Error("Custom App ID is required for page info only mode");return n.error(S.red(e.message)),a(e)}const l=s.headers??{};n.info(S.green("Start loading page info"));try{const t=`pageInfo:${i}`;return de(t)?(n.info(S.green("Page info loaded from cache")),a()):(await e.getPageInfo(i,l),n.info(S.blue("Clearing proxy cache after successful login")),Y.clear(),he(t,{success:!0}),le.updateState({isAuthenticated:!0}),n.info(S.green("Page info loaded successfully")),a())}catch(e){return le.reset(),we(e,o??!0,c||`${ue}${encodeURIComponent("/")}`,r,a,n,"Page info")}}async function me(e,t,s,r,a,n){const{templateLess:i,appId:o,redirectOnAuthFailure:c,redirectUrl:l}=t,p=s.headers??{};n.info(S.green("Start loading page data"));try{const t=`pageData:${i}:${o}`;if(de(t))return n.info(S.green("Page data loaded from cache")),a();const s=i||void 0===o?e.getPageTemplate(p):e.getPageVariables(o,p);return await s,n.info(S.blue("Clearing proxy cache after successful login")),Y.clear(),he(t,{success:!0}),n.info(S.green("Page data loaded successfully")),a()}catch(e){return le.reset(),we(e,c??!0,l||`${ue}${encodeURIComponent("/")}`,r,a,n,"Page data")}}function we(e,t,s,r,a,n,i){if(function(e){return null!==e&&"object"==typeof e&&"response"in e&&void 0!==e.response}(e)&&(n.info(S.red(`${i} loading failed. Not authorized`)),t)){const e=`${s}`;return n.info(S.yellow(`Redirecting to: ${e}`)),$(r,e,302)}const o=e instanceof Error?e.message:String(e);return n.info(S.red(`${i} loading failed. Error: ${o}`)),a(e)}function ye(){const e=P();return e.use(P.json()),e.use(P.urlencoded({extended:!0})),e}const ve=ye();function be(e,t,s){return t(e)?{isValid:!0}:{isValid:!1,error:s}}function ke(e){const t=function(e){return[be(e,e=>"object"==typeof e&&null!==e,"VitePPDevOptions must be an object"),be(e.templateName,e=>"string"==typeof e&&e.length>0,"VitePPDevOptions.templateName must be a non-empty string"),be(e.backendBaseURL,e=>void 0===e||"string"==typeof e&&e.length>0,"VitePPDevOptions.backendBaseURL must be a non-empty string if provided"),be(e.portalPageId,e=>void 0===e||"number"==typeof e&&e>0,"VitePPDevOptions.portalPageId must be a positive number if provided"),be(e.appId,e=>void 0===e||"number"==typeof e&&e>0,"VitePPDevOptions.appId must be a positive number if provided"),be(e.proxyCacheTTL,e=>void 0===e||"number"==typeof e&&e>0,"VitePPDevOptions.proxyCacheTTL must be a positive number if provided"),be(e.integrateMiTopBar,t=>{if(void 0===t)return!0;if(null===t)return!1;if("boolean"!=typeof t&&"object"!=typeof t)return!1;if(!0===t&&!0!==e.miHudLess)return!1;if("object"==typeof t&&null!==t){if(void 0!==t.addRootElement&&"boolean"!=typeof t.addRootElement)return!1;if(void 0!==t.addSharedComponentsScripts&&"boolean"!=typeof t.addSharedComponentsScripts)return!1;if(!0!==e.miHudLess&&(!0===t.addRootElement||!0===t.addSharedComponentsScripts))return!1}return!0},"VitePPDevOptions.integrateMiTopBar must be a boolean or an object with addRootElement and addSharedComponentsScripts booleans")].find(e=>!e.isValid)||{isValid:!0}}(e);if(!t.isValid)throw new Error(t.error);const s=e.appId??e.portalPageId,{enableProxyCache:r=!0,proxyCacheTTL:a=6e5,disableSSLValidation:n=!1,imageOptimizer:i=!0,miHudLess:o=!1,integrateMiTopBar:c=!1,templateLess:l=!1,outDir:p="dist",distZip:d=!0,versionPlugin:h=!0,syncBackupsDir:u="backups",v7Features:g=!1,personalAccessToken:f=process.env.MI_ACCESS_TOKEN}=e||{};let m=d;m=!0===m?{outFileName:`${e.templateName}.zip`,outDir:"dist-zip"}:"object"==typeof d&&{outFileName:"string"==typeof d.outFileName?d.outFileName.replace("[templateName]",e.templateName):`${e.templateName}.zip`,outDir:d.outDir??"dist-zip"};let w=i;"boolean"==typeof i?!0===w&&(w={}):"object"!=typeof i&&(w=!1);const y="VERSION-v{packageversion}-{currentDate}.json";let v;return v=!1!==h&&(!0===h?{versionFileTemplate:y,enabled:!0}:{versionFileTemplate:h.versionFileTemplate??y,enabled:h.enabled??!0}),{enableProxyCache:r,proxyCacheTTL:a,disableSSLValidation:n,imageOptimizer:w,templateLess:l,miHudLess:o,outDir:p,distZip:m,versionPlugin:v,syncBackupsDir:u,v7Features:g,personalAccessToken:f,portalPageId:s,integrateMiTopBar:c,...e}}function xe(e){const{templateName:t,templateLess:s,backendBaseURL:r,miHudLess:a,portalPageId:n,appId:i,enableProxyCache:o,proxyCacheTTL:c,disableSSLValidation:l,distZip:p,syncBackupsDir:d,v7Features:h,personalAccessToken:u}=e||{};let g=!0;process.cwd();const f=i??n;return{name:"vite-pp-dev",apply:"serve",config:e=>{const a=function(e){return[be(e.base,e=>"string"==typeof e&&e.length>0&&"/"!==e,'Server base path cannot be empty or "/"'),be(e.port,e=>void 0===e||"number"==typeof e&&e>0&&e<65536,"Server port must be a valid port number (1-65535)")].find(e=>!e.isValid)||{isValid:!0}}({base:e.base||"",...e.server});if(!a.isValid)throw new Error(a.error);return e.clientInjectionPlugin={backendBaseURL:r,portalPageId:f,templateLess:s,v7Features:h},h&&(e.base=`/pl/${t}`),e},transformIndexHtml:async(e,t)=>{const s={html:e,tags:[]};return g&&(g=!1,s.tags.push({tag:"script",injectTo:"body",children:`${Math.random()}`})),s},configureServer:n=>{let i=n.config.base;i.endsWith("/")||(i+="/");const g=i.substring(0,i.lastIndexOf("/"));if(n.middlewares.use(oe(i,t)),r){const w=new URL(r).host,y={headers:{host:w,referer:r,origin:r.replace(/^(https?:\/\/)([^/]+)(\/.*)?$/i,"$1$2")},portalPageId:f,appId:f,templateLess:s,disableSSLValidation:l,v7Features:h,personalAccessToken:u??process.env.MI_ACCESS_TOKEN},v=[be((m=y).headers,e=>"object"==typeof e&&"string"==typeof e.host&&"string"==typeof e.referer&&"string"==typeof e.origin,"MiAPI headers must be properly configured"),be(m.portalPageId,e=>void 0===e||"number"==typeof e&&e>0,"MiAPI portalPageId must be a positive number if provided"),be(m.appId,e=>void 0===e||"number"==typeof e&&e>0,"MiAPI appId must be a positive number if provided"),be(m.personalAccessToken,e=>void 0===e||"string"==typeof e,"MiAPI personalAccessToken must be a string if provided")].find(e=>!e.isValid)||{isValid:!0};if(!v.isValid)throw new Error(v.error);const b=new z(r,y);if(o){let e=+c;(!e||Number.isNaN(e)||e<0)&&(e=6e5);const t={devServer:n,ttl:e},s=function(e){return[be(e.ttl,e=>"number"==typeof e&&e>0,"Proxy cache TTL must be a positive number")].find(e=>!e.isValid)||{isValid:!0}}(t);if(!s.isValid)throw new Error(s.error);n.middlewares.use(J(t))}const k=new RegExp(`^((${i})|/)$`);n.middlewares.use(ge(k,b,Object.assign({},e,{appId:f,portalPageId:f}))),n.middlewares.use(F({baseURL:r,proxyIgnore:["/@vite","/@metricinsights","/@",g],disableSSLValidation:l,miAPI:b,templateName:t}));const x=(e,t,s,r,a)=>{const n={error:s};r&&(n.details=r),a&&(n.code=a),e.status(t).json(n).end()},P=(e,t,s)=>{n.config.logger.error(`${s} token validation error:`,t);const r=j(t);if(t.tokenErrorInfo){const s=t.tokenErrorInfo;n.config.logger.info(`Using enhanced error info: ${s.code} - ${s.userFriendlyMessage}`);const r=s.status||500,a=s.code,i=s.userFriendlyMessage,o=s.message;x(e,r,i,o,a)}else{let t,a,i;switch(n.config.logger.info(`Using original error info: ${r.code} - ${r.userFriendlyMessage}`),r.code){case"SESSION_EXPIRED":t=412,a="personal"===s?"Personal access token expired":"Session expired",i="personal"===s?"PAT_EXPIRED":"SESSION_EXPIRED";break;case"UNAUTHORIZED":t=401,a="Unauthorized",i="UNAUTHORIZED";break;case"FORBIDDEN":t=403,a="Access forbidden",i="FORBIDDEN";break;default:t=500,a="Internal server error",i=r.code}const o="personal"===s&&"PAT_EXPIRED"===i?"Your personal access token has expired. Please generate a new token from the portal.":"regular"===s&&"SESSION_EXPIRED"===i?"Your portal session has expired. Please refresh your token or re-authenticate.":r.userFriendlyMessage;x(e,t,a,o,i)}return null},A=ye();A.post("/@api/login",async(e,t,s)=>{const{token:r,tokenType:a}=e.body;if(r){if(n.config.logger.info(`Attempting to validate ${a} token...`),"personal"===a){if(!await b.get("/data/page/index/auth/info",{"Content-Type":"application/json",Accept:"application/json",Authorization:`Bearer ${r}`},!0).then(async e=>"number"==typeof e.data?.user?.user_id?(b.personalAccessToken=r,n.config.logger.info(`Personal access token validated successfully for user ${e.data.user.user_id}`),e):(x(t,400,"Token expired or invalid"),null)).catch(e=>P(t,e,"personal")))return;$(t,"/",302)}else if("regular"===a){if(!await b.get("/api/user",{"Content-Type":"application/json",Accept:"application/json",Token:r},!0).then(e=>e.data?.users?.length?(b.personalAccessToken=void 0,n.config.logger.info(`Regular token validated successfully for ${e.data.users.length} user(s)`),t.setHeader("set-cookie",e.headers["set-cookie"]??""),e):(x(t,400,"Token expired or invalid"),null)).catch(e=>P(t,e,"regular")))return;$(t,"/",302)}}else x(t,400,"Token is required")}),n.middlewares.use(A);const I=!1!==p?new ne(t,Object.assign({backupDir:d},"object"==typeof p?{distZipFolder:p.outDir,distZipFilename:p.outFileName}:void 0)):void 0;return new V(n,{distService:I,miAPI:b}),()=>{n.middlewares.use(ie(e=>e.split("?")[0].endsWith("index.html"),(e,t)=>Buffer.from(T(w,t.headers.host??"",b.buildPage(e,a)))))}}var m}}}export{ce as A,z as M,S as a,J as b,E as c,ge as d,F as e,ve as f,ie as g,le as h,oe as i,ke as n,T as u,xe as v};
|
|
2
|
-
//# sourceMappingURL=plugin-CcoYWcTD.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-CcoYWcTD.js","sources":["../../../../src/lib/helpers/url.helper.ts","../../../../src/lib/logger.ts","../../../../src/lib/helpers/color.helper.ts","../../../../src/lib/helpers/login.helper.ts","../../../../src/lib/proxy-pass.middleware.ts","../../../../src/api/base.ts","../../../../src/api/assets.ts","../../../../src/api/assets-v7.ts","../../../../src/api/page.ts","../../../../src/api/page-template.ts","../../../../src/lib/helpers/token.helper.ts","../../../../src/lib/pp.middleware.ts","../../../../src/lib/client.service.ts","../../../../src/lib/proxy-cache.middleware.ts","../../../../src/lib/dist.service.ts","../../../../src/lib/rewrite-response.middleware.ts","../../../../src/lib/helpers/content-encoding.helper.ts","../../../../src/lib/pp-redirect.middleware.ts","../../../../src/lib/auth.provider.ts","../../../../src/lib/load-pp-data.middleware.ts","../../../../src/lib/internal.middleware.ts","../../../../src/plugin.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["urlReplacer","originalHost","destinationHost","content","urlReplaceRegExp","RegExp","replace","substring","args","startsWith","redirect","res","url","statusCode","setHeader","end","storage","Map","DEFAULT_LOGGER_KEY","createLogger","level","name","has","get","logger","cL","set","colors","createColors","tokenLoginFunction","TOKEN_TYPE_CONFIG","personal","placeholder","caption","host","endpoint","regular","updateTokenUI","type","tokenInput","tokenCaption","info","innerHTML","showError","message","errorElement","textContent","classList","add","hideError","remove","setupEventHandlers","formWrapper","submitButton","addEventListener","async","e","preventDefault","value","trim","focus","tokenTypeSwitcher","document","getElementById","activeOption","querySelector","tokenType","dataset","token","response","fetch","method","headers","body","JSON","stringify","URL","window","location","origin","pathname","json","error","parseError","href","networkError","handleFormSubmission","key","click","initializeLoginForm","loginForm","contentWrapper","firstChild","rowTemplate","lastChild","cloneNode","orRow","innerText","setAttribute","helperForm","formContent","createElement","styleElement","head","appendChild","tokenTypeOptions","querySelectorAll","handleTokenTypeChange","target","forEach","opt","option","currentTarget","setupTokenTypeSwitcher","console","observer","MutationObserver","mutations","mutation","disconnect","observe","childList","subtree","existingForm","hostOriginRegExp","PROXY_HEADER","initProxy","opts","rewritePath","baseURL","disableSSLValidation","miAPI","templateName","Error","fileType","import","createProxyMiddleware","selfHandleResponse","pathFilter","req","proxyIgnore","some","test","Array","isArray","rP","changeOrigin","autoRewrite","cookieDomainRewrite","log","warn","secure","on","proxyReq","referer","getHeader","personalAccessToken","originalUrl","rewritten","requestUrl","v7Features","internalPageName","u","m","match","segmentDecoded","decodeURIComponent","search","hash","rewriteDataPagePathForV7Proxy","path","cyan","yellow","blue","green","protocol","socket","setTimeout","destroyed","destroy","proxyRes","serverRes","includes","streamInterceptor","setHeaders","Object","entries","pipe","rewriteInterceptor","responseInterceptor","responseBuffer","fileTypeFromBuffer","toString","reqUrl","searchParams","storageKey","lastRedirectKey","redirectCount","localStorage","getItem","Number","isNaN","func","params","URLSearchParams","debug","removeItem","setItem","Date","toISOString","slice","reqHost","urlPath","destinationPath","unescapedUrlReplaceRegExp","replacedContent","urlPathReplacer","err","errorMessage","stack","writable","writeHead","BaseAPI","axios","constructor","this","checkAuth","assign","accept","maxRedirects","then","catch","AssetsAPI","formdataModulePromise","super","getDownloadUrl","portalPageId","getDownloadTemplateUrl","templateId","getUploadUrl","getUploadTemplateUrl","downloadPageAssets","withCredentials","responseType","data","uploadPageAssets","file","formData","FormData","File","assetFile","append","post","Referer","getUri","downloadTemplateAssets","uploadTemplateAssets","AssetsV7API","PageAPI","getAll","Accept","Pragma","Expires","pages","id","page","getPageContent","create","PageTemplateAPI","internal_name","page_templates","page_template","getTokenErrorInfo","status","lowerMessage","toLowerCase","code","userFriendlyMessage","suggestions","TEMPLATE_PAGE_NAME","axiosInstanceCache","MiAPI","pageTemplate","pageTitle","pageVars","isV710OrHigher","templateLoaded","templateLoadedResolve","templateLess","assetsApi","pageApi","pageTemplateApi","Promise","resolve","cacheKey","process","env","NODE_TLS_REJECT_UNAUTHORIZED","defaults","httpsAgent","Agent","rejectUnauthorized","timeout","httpAgent","keepAlive","maxSockets","isTemplateLoaded","clearHeaders","obj","undefined","keys","authorization","updateHeaders","localTemplateHTML","getPageTemplate","red","template_id","find","p","enabled","visible_in_homepage","getPageVariables","pageId","tags","template","parsed","parse","reason","getPageInfo","pageIdToFetch","fetchV7Page","fetchLegacyPage","handlePageFetchError","buildPage","miHudLess","result","v","dom","JSDOM","placeholderText","container","scripts","length","insertBefore","item","title","text","serialize","getAssets","pageInfo","templateInfo","updateAssets","assets","validateCredentials","testHeaders","isValid","errorInfo","cleanup","normalizedHeaders","context","contextPrefix","suggestion","index","logTokenError","tokenErrorInfo","ClientService","server","eventMap","onInfoDataRequest","bind","onTemplateSync","init","ws","event","handler","send","distService","config","clientInjectionPlugin","canSync","currentAssets","isAxiosError","validation","refresh","validationError","cause","newAssets","saveBackupAndBuild","buildNewAssets","Buffer","updateResult","backupMeta","getBackupMeta","lastBackupName","backupFilename","lastBackupHash","currentHash","lastBackupDate","backupDate","syncedAt","FILE_EXTENSION_REGEX","DEFAULT_TTL","DEFAULT_MAX_SIZE","DEFAULT_MAX_ITEMS","EnhancedCache","memoryCache","Cache","totalSize","maxSize","maxItems","put","ttl","oldItem","size","itemsToRemove","sortedKeys","sort","a","b","itemA","itemB","timestamp","i","del","oldestKey","getTotalSize","getItemCount","cache","createResponseBuffer","chunks","alloc","totalLength","reduce","sum","chunk","byteLength","concat","initProxyCache","devServer","next","cleanUrl","split","generateCacheKey","cacheItem","header","setResponseHeaders","write","originalEnd","originalWrite","encoding","callback","hasHeader","call","safeEncoding","push","from","isBuffer","String","finalBuffer","responseSize","getHeaders","now","toFixed","finalEncoding","TEMPLATE_PART_PAGE_NAME","TEMPLATE_PART_DATE","DIRNAME","dirname","__filename","fileURLToPath","pluginPath","node_modules_path","metaDirPath","metaFilePath","DistService","backupFolder","backupNameTemplate","dateFormat","pageName","currentMeta","distZipFolder","distZipFilename","syncOptions","cwd","date","syncMeta","checkMeta","fs","stat","mkdir","readMetaFile","readFile","writeMetaFile","meta","writeFile","getLatestSavedBackup","backupPath","backupName","saveBackup","backupFile","backupFileHash","crypto","createHash","update","digest","filename","finally","buildCommand","reject","proc","child_process","spawn","NODE_ENV","stdio","msg","initRewriteResponse","predicate","rewrite","buffers","cb","contentEncoding","unzipSync","brotliDecompressSync","inflateSync","decodeContent","bufferEncoding","endCallback","gzipSync","brotliCompressSync","deflateSync","encodeContent","initPPRedirect","base","baseWithoutTrailingSlash","endsWith","parsedUrl","findPaths","redirectUrl","AuthProvider","state","isAuthenticated","isRedirected","lastChecked","listeners","Set","getState","setAuthenticated","authenticated","notifyListeners","setRedirected","redirected","updateState","updates","reset","subscribe","listener","delete","getDebugInfo","listenerCount","authProvider","apiResponseCache","getCachedResponse","cached","setCachedResponse","DEFAULT_REDIRECT_URL","initLoadPPData","applyUrlRegExp","mi","appId","authState","isNeedTemplateLoad","isApplyRequest","handleTemplateLoad","encodeURIComponent","handlePageInfoOnly","options","redirectOnAuthFailure","clear","success","handleLoadError","loadPageData","operationType","isAuthError","fullRedirectUrl","createInternalServer","app","express","use","urlencoded","extended","internalServer","validateConfigValue","validator","normalizeVitePPDevConfig","validationResult","c","backendBaseURL","proxyCacheTTL","integrateMiTopBar","integrate","addRootElement","addSharedComponentsScripts","validateConfig","enableProxyCache","imageOptimizer","outDir","distZip","versionPlugin","syncBackupsDir","MI_ACCESS_TOKEN","distZipConfig","outFileName","imageOptimizerConfig","versionPluginDefaultTemplate","versionPluginConfig","versionFileTemplate","vitePPDev","isFirstRequest","normalizedAppId","apply","port","validateServerConfig","transformIndexHtml","html","ctx","tag","injectTo","children","Math","random","configureServer","lastIndexOf","middlewares","baseUrlHost","miConfig","cacheConfig","validateProxyCacheConfig","isIndexRegExp","proxyPassMiddleware","sendErrorResponse","details","handleTokenValidationError","enhancedErrorInfo","errorCode","Authorization","user","user_id","Token","users","backupDir"],"mappings":"ipBAmBO,MAAMA,EAAc,CACzBC,EACAC,EACAC,KAEA,MAAMC,EAAmB,IAAIC,OAC3B,kCAAkCJ,KAClC,MAGF,OAAOE,EAAQG,QAAQF,EAAkB,CAACG,KAAcC,IAClDD,EAAUE,WAAW,MAChBD,EAAK,GAGP,OAAOA,EAAK,KAAKN,MAsBfQ,EAAW,CACtBC,EACAC,EACAC,KAEAF,EAAIG,UAAU,WAAYF,GAC1BD,EAAIE,WAAaA,EAEjBF,EAAII,OC9DN,IAAIC,EAA2C,IAAIC,IAE5C,MAAMC,EAAqB,UAErBC,EAAe,CAACC,EAAkB,OAAQC,EAAOH,KAM5D,GAJKF,GAAkC,mBAAhBA,EAAQM,MAC7BN,EAAU,IAAIC,KAGZD,EAAQM,IAAID,GACd,OAAOL,EAAQO,IAAIF,GAGrB,GAAIA,IAASH,EAAoB,CAC/B,MAAMM,EAASC,EAAGL,GAIlB,OAFAJ,EAAQU,IAAIL,EAAMG,GAEXA,CACT,CAEA,MAAMA,EAASC,EAAGL,GAIlB,OAFAJ,EAAQU,IAAIL,EAAMG,GAEXA,GC1BIG,EAASC,ICATC,EAAqB,WAKhC,MAAMC,EAAoB,CACxBC,SAAU,CACRC,YAAa,YACbC,QAAS,uDACYC,uGAErBC,SAAU,eAEZC,QAAS,CACPJ,YAAa,eACbC,QAAS,0DACYC,2GAErBC,SAAU,gBA8Kd,SAASE,EACPC,EACAC,EACAC,GAEA,MAAMC,EAAOX,EAAkBQ,GAE3BG,IACFF,EAAWP,YAAcS,EAAKT,YAC9BQ,EAAaE,UAAYD,EAAKR,QAElC,CAEA,SAASU,EAAUC,EAAiBC,GAClCA,EAAaC,YAAcF,EAC3BC,EAAaE,UAAUC,IAAI,OAC7B,CAEA,SAASC,EAAUJ,GACjBA,EAAaE,UAAUG,OAAO,OAChC,CAgGA,SAASC,EACPC,EACAb,EACAc,EACAR,GAGAQ,EAAaC,iBAAiB,QAASC,MAAOC,IAI5C,GAHAA,EAAEC,iBACFR,EAAUJ,IAELN,EAAWmB,MAAMC,OAIpB,OAHAhB,EAAU,GAAGJ,EAAWP,0BAA2Ba,QACnDN,EAAWqB,QAKb,MAAMC,EAAoBC,SAASC,eAAe,uBAC5CC,EAAeH,GAAmBI,cACtC,6BAEIC,EAAaF,GAAcG,QAAQT,OACvC,iBAzENH,eACEa,EACAF,EACAd,EACAP,GAEA,IAEEO,EAAYL,UAAUC,IAAI,WAE1B,MAAMqB,QAAiBC,MAAM,cAAe,CAC1CC,OAAQ,OACRC,QAAS,CACP,eAAgB,oBAElBC,KAAMC,KAAKC,UAAU,CAAEP,QAAOF,cAC9BxD,SAAU,WAGNE,EAAMyD,EAASzD,KAAO,IAAIgE,IAAIP,EAASzD,IAAKiE,OAAOC,SAASC,QAElE,IACEnE,GACCA,EAAIoE,SAASvE,WAAW,WACxBG,EAAIoE,SAASvE,WAAW,UAMzB,IACE,MAAMwE,QAAaZ,EAASY,OAG5BtC,EAAU,iBAFWsC,GAAMC,OAAS,2BAEOrC,EAC7C,CAAE,MAAOsC,GACPxC,EAAU,yCAA0CE,EACtD,MAVAgC,OAAOC,SAASM,KAAOf,EAASzD,GAYpC,CAAE,MAAOyE,GACP1C,EACE,6DACAE,EAEJ,SAEEO,EAAYL,UAAUG,OAAO,UAC/B,CACF,CA2BUoC,CACJ/C,EAAWmB,MAAMC,OACjBO,EACAd,EACAP,KAKJN,EAAWe,iBAAiB,UAAYE,IACxB,UAAVA,EAAE+B,MACJ/B,EAAEC,iBACFJ,EAAamC,WAKjBjD,EAAWe,iBAAiB,QAAS,KACnCL,EAAUJ,IAEd,CAEA,SAAS4C,EAAoBC,GAC3B,MAAMC,EAAiBD,EAAUE,WAEjC,IAAKD,EACH,OAIF,MAAME,EAAeF,EAAeG,WAA8BC,WAChE,GAGF,IAAKF,EACH,OAGFA,EAAYnD,UAAY,GAExB,MAAMsD,EAAQH,EAAYE,WAAU,GAEpCC,EAAMC,UAAY,KAClBD,EAAME,aAAa,OAAQ,aAC3BF,EAAME,aAAa,aAAc,4BAEjC,MAAMC,EAAaN,EAAYE,WAAU,GACnCK,EAActC,SAASuC,cAAc,OAGrCC,EAAexC,SAASuC,cAAc,SAE5CC,EAAaxD,YA3We,0iFA4W5BgB,SAASyC,KAAKC,YAAYF,GAE1BF,EAAY1D,UAzOL,41BAuBcR,iWAmNrBiE,EAAWK,YAAYJ,GAGvBT,EAAea,YAAYR,GAC3BL,EAAea,YAAYL,GAG3B,MAAMtC,EAAoBC,SAASC,eAAe,uBAC5CxB,EAAauB,SAASC,eAC1B,gBAEIvB,EAAesB,SAASC,eAC5B,iBAEIV,EAAeS,SAASC,eAC5B,uBAEIlB,EAAeiB,SAASC,eAC5B,iBAEIX,EAAcgD,EAAYnC,cAC9B,yBAICJ,GACAtB,GACAC,GACAa,GACAR,GACAO,IA7ML,SACES,EACAtB,EACAC,GAEA,MAAMiE,EACJ5C,EAAkB6C,iBAAiC,sBAE/CC,EAAyBC,IAC7B,MAAMlD,EAAQkD,EAAOzC,QAAQT,MAG7B+C,EAAiBI,QAASC,IACxBA,EAAI/D,UAAUG,OAAO,UACrB4D,EAAIZ,aAAa,gBAAiB,SAClCY,EAAIZ,aAAa,WAAY,QAG/BU,EAAO7D,UAAUC,IAAI,UACrB4D,EAAOV,aAAa,gBAAiB,QACrCU,EAAOV,aAAa,WAAY,KAGhC7D,EAAcqB,EAAOnB,EAAYC,IAInCiE,EAAiBI,QAASE,IACxBA,EAAOzD,iBAAiB,QAAUE,IAChC,MAAMoD,EAASpD,EAAEwD,cAEjBL,EAAsBC,KAIxBG,EAAOzD,iBAAiB,UAAYE,IACpB,UAAVA,EAAE+B,KAA6B,MAAV/B,EAAE+B,MACzB/B,EAAEC,iBACFkD,EAAsBI,OAI9B,CA2KEE,CAAuBpD,EAAmBtB,EAAYC,GACtDW,EAAmBC,EAAab,EAAYc,EAAcR,GAG1DR,EAAc,WAAYE,EAAYC,IAVpC0E,QAAQhC,MAAM,wCAWlB,CAGA,MAAMiC,EAAW,IAAIC,iBAAkBC,IACrC,IAAK,MAAMC,KAAYD,EACrB,GAAsB,cAAlBC,EAAShF,KAAsB,CACjC,MAAMoD,EAAY5B,SAASG,cACzB,uBAGF,GAAIyB,EAAW,CACbyB,EAASI,aACT9B,EAAoBC,GACpB,KACF,CACF,IAKJyB,EAASK,QAAQ1D,SAASW,KAAM,CAC9BgD,WAAW,EACXC,SAAS,IAIX,MAAMC,EAAe7D,SAASG,cAC5B,uBAGE0D,IACFR,EAASI,aACT9B,EAAoBkC,GAExB,EClbMC,EAAmB,iCACZC,EAAe,aAmBtB,SAAUC,EAAUC,GACxB,MAAMC,YACJA,EAAc,kBAAiBC,QAC/BA,EAAU,GAAEC,qBAEZA,GAAuB,EAAKC,MAC5BA,EAAKC,aACLA,GACEL,EAEJ,IAAKE,EACH,MAAM,IAAII,MAAM,wBAGlB,MAAMnG,EAAO+F,EAAQ3H,QAAQsH,EAAkB,MACzC7C,EAASkD,EAAQ3H,QAAQsH,EAAkB,QAE3CU,EAAWC,OAAO,aAElB/G,EAASL,IAEf,OAAOqH,EAAsB,CAI3BC,oBAAoB,EAEpBC,WAAY,CAAC1D,EAAU2D,MAElBZ,EAAKa,aAAe,IAAIC,KAAMnF,GACR,iBAAVA,EACFsB,EAASvE,WAAWiD,GACI,mBAAfA,EAAMoF,MACfpF,EAAMoF,KAAK9D,MAWG,iBAAhBgD,EACFhD,EAASvE,WAAWuH,GAClBe,MAAMC,QAAQhB,GAChBA,EAAYa,KAAMI,GAAOjE,EAASvE,WAAWwI,IACf,mBAArBjB,EAAYc,MACrBd,EAAYc,KAAK9D,IAM5B4B,OAAQqB,EACRiB,cAAc,EACdC,aAAa,EACbC,oBAAqB,CACnBlH,CAACA,GAAO,aAEVV,OAAQ,CACNiB,KAAM,OAGN4G,IAAK,OAGLnE,MAAO,OAGPoE,KAAM,QAIRC,QAASrB,EACT1D,QAAS,CACPtC,OACA6C,UAEFyE,GAAI,CACF,QAAAC,CAASA,EAAUd,EAAKhI,GACtB,MAAMuB,EAAOyG,EAAInE,QAAQtC,KACnBwH,EAAUD,EAASE,UAAU,WAE/BzH,GAAQwH,GAA8B,iBAAZA,GAC5BD,EAAS3I,UACP,UACA4I,EAAQpJ,QAAQ,IAAID,OAAO,YAAY6B,KAAS+F,IAIhDE,EAAMyB,qBACRH,EAAS3I,UACP,gBACA,UAAUqH,EAAMyB,uBAIpB,MAAMC,EAAclB,EAAI/H,KAAO,IACzBkJ,EJrER,SACJC,EACAC,EACA5B,EACA6B,GAEA,IACGD,IACA5B,IACA6B,GACD7B,IAAiB6B,EAEjB,OAAOF,EAGT,IACE,MAAMG,EAAI,IAAItF,EAAImF,EAAY,oBACxBI,EAAID,EAAElF,SAASoF,MAAM,kCAE3B,IAAKD,EACH,OAAOJ,EAGT,IAAIM,EAEJ,IACEA,EAAiBC,mBAAmBH,EAAE,GACxC,CAAE,MACAE,EAAiBF,EAAE,EACrB,CAEA,GAAIE,IAAmBjC,EACrB,OAAO2B,EAOT,MAFE,cAAcE,IAFHE,EAAE,IAAM,KAEuBD,EAAEK,OAASL,EAAEM,IAG3D,CAAE,MACA,OAAOT,CACT,CACF,CI0B0BU,CAChBZ,EACA1B,EAAM6B,WACN5B,EACAD,EAAM8B,kBA2BR,OAxBIH,IAAcD,IAChBlB,EAAI/H,IAAMkJ,EACTL,EAA+BiB,KAAOZ,EACvC5C,QAAQzE,KACN,GAAGd,EAAOgJ,KAAK,wDAAwDhJ,EAAOiJ,OAC5Ef,MACGlI,EAAOkJ,KAAK,QAAQlJ,EAAOmJ,MAAMhB,OAI1CtI,EAAOiB,KACL,GAAGd,EAAOkJ,KAAK,uBAAuBlJ,EAAOmJ,MAAMnC,EAAIpE,WAAWoE,EAAI/H,UAAUe,EAAOmJ,MACrFrB,EAASlF,WACNkF,EAASsB,aAAatB,EAASvH,OAAOuH,EAASiB,QAGtD/B,EAAIqC,OAAOxB,GAAG,QAAS,KACrByB,WAAW,KACJxB,EAASyB,WACZzB,EAAS0B,WAEV,OAGE1B,CACT,EACA2B,SAAU,CAACC,EAAW1C,EAAKhI,KACzB,GACE0K,EAAU7G,QAAQ,iBAAiB8G,SAAS,sBAC3CD,EAAU7G,QAAQ,sBAAsB8G,SAAS,YACL,OAA3CD,EAAU7G,QAAQ,qBACpB,CACAhD,EAAOiB,KACL,GAAGd,EAAOkJ,KAAK,mCAAmClJ,EAAOmJ,MAAMnC,EAAIpE,WAAWoE,EAAI/H,OAGpF,MAAM2K,EA5JPhI,MACL6H,EACAzC,EACAhI,KAEAA,EAAIG,UAAU+G,EAAc,GAE5BlH,EAAI6K,WAAW,IAAIvK,IAAIwK,OAAOC,QAAQN,EAAS5G,WAE/C4G,EAASO,KAAKhL,IAgKR,OAAO4K,EAAkBF,EAAW1C,EAAKhI,EAC3C,CAEA,MAAMiL,EAAqBC,EACzBtI,MAAOuI,EAAgBV,EAAUzC,EAAKhI,KACpCA,EAAIG,UAAU+G,EAAc,GAM5B,eAHQS,GACNyD,mBAAmBD,GAGnB,OAAOA,EACF,CACL,IAAIzH,EAAWyH,EAAeE,SAAS,QAEvC,IACE,MAAMC,EAAS,IAAIrH,IAAI+D,EAAI/H,KAAO,GAAI,UAAUsB,KAEhD,GACE+J,EAAOC,cACPD,EAAOC,aAAa5K,IAAI,iBACxB,CAgDA+C,GAEE,YAjDyB,WACzB,MAAM8H,EAAa,wBACbC,EAAkB,uBAExB,IAAIC,IACFC,aAAaC,QAAQJ,IAAe,GAEnBG,aAAaC,QAAQH,GAEpCI,OAAOC,MAAMJ,KACfA,EAAgB,GAGlB,IAAIzL,EAAMiE,OAAOC,SAASM,KAE1B,MAAMsH,EAAO,WACX,MAAMC,EAAS,IAAIC,gBACjB/H,OAAOC,SAASyF,QAGlB,IAAKoC,EAAOrL,IAAI,iBAId,OAHA4F,QAAQ2F,MAAM,6CACdP,aAAaQ,WAAWX,GAKtBvL,IAAQiE,OAAOC,SAASM,MAC1BxE,EAAMiE,OAAOC,SAASM,KAEtB6F,WAAWyB,EAAML,EAAgB,EAAI,IAAO,MAE5CxH,OAAOC,SAASM,KAAOuH,EAAOpL,IAC5B,iBAIJ+K,aAAaS,QAAQZ,EAAY,MAAKE,GACtCC,aAAaS,QACXX,GACA,IAAIY,MAAOC,cAEf,EAEAhC,WAAWyB,EAAM,IACnB,EAIyBV,yBAE3B,CAEIC,EAAOjH,SAASvE,WAAW,YAE7BE,EAAIG,UACF,gBACA,uCAEFH,EAAIG,UAAU,SAAU,YACxBH,EAAIG,UAAU,UAAW,MAG3B,MAAMoM,EAAQ7I,EAAS6I,MAAM,EAAG,MAG9BA,EAAM5B,SAAS,UACf4B,EAAM5B,SAAS,UACf4B,EAAM5B,SAAS,UACf4B,EAAM5B,SAAS,YAEfjH,GAEE,yBAAiBnC,SAAYL,EAAmBmK,0BAGtD,CAAE,MAEF,CAEA,MAAMmB,EAAUxE,EAAInE,QAAQtC,MAAQ,GAGpC,MJtRiB,EAC7BkL,EACAC,EACAlN,KAEA,MAAMC,EAAmB,IAAIC,OAC3B,GAAG+M,EAAQ9M,QAAQ,UAAW,WAC9B,MAEIgN,EAA4B,IAAIjN,OAAO,GAAG+M,IAAW,MAErDG,EAAkBpN,EAAQG,QAAQF,EAAkBiN,GAE1D,OAAOE,IAAoBpN,EACvBoN,EAAgBjN,QAAQgN,EAA2BD,GACnDE,GIuQeC,CACL,mBACA,SACAxN,EAAYkC,EAAMiL,EAAS9I,GAE/B,IAIJ,OAAOuH,EAAmBP,EAAW1C,EAAKhI,IAE5C,KAAAuE,CAAMuI,EAAK9E,EAAKhI,GACd,MAAM+M,EAAe,iBAAiBD,EAAI7K,4BAA4B+F,EAAIpE,UAAUoE,EAAI/H,WAAW6M,EAAIE,QAEvGnM,EAAO0D,MAAMwI,GAET/M,EAAIiN,UACLjN,EAAuBkN,UAAU,IAAK,CACrC,eAAgB,eAIpBlN,EAAII,IAAI2M,EACV,IAGN,OCnVaI,EACDC,MAEV,WAAAC,CAAYD,GACVE,KAAKF,MAAQA,CACf,CAEA,eAAMG,CAAU1J,GACd,OAAOyJ,KAAKF,MACTxM,IAAI,6BAA8B,CACjCiD,QAASiH,OAAO0C,OAAO,CAAA,EAAI3J,EAAS,CAAE4J,OAAQ,cAC9CC,aAAc,IAEfC,KAAK,KAAM,GACXC,MAAM,KAAM,EACjB,ECdI,MAAOC,UAAkBV,EAErBW,sBAAwBlG,OAAO,iBAEvC,WAAAyF,CAAYD,GACVW,MAAMX,EACR,CAEU,cAAAY,CAAeC,GACvB,MAAO,iCAAiCA,GAC1C,CAEU,sBAAAC,CAAuBC,GAC/B,MAAO,yCAAyCA,GAClD,CAEU,YAAAC,CAAaH,GACrB,MAAO,+BAA+BA,GACxC,CAEU,oBAAAI,CAAqBF,GAC7B,MAAO,uCAAuCA,GAChD,CAEA,wBAAMG,CAAmBL,EAA+BpK,GACtD,OAAOyJ,KAAKF,MACTxM,IAAY0M,KAAKU,eAAeC,GAAe,CAC9CM,iBAAiB,EACjB1K,QAASiH,OAAO0C,OAAO,CAAA,EAAI3J,EAAS,CAAE4J,OAAQ,QAC9Ce,aAAc,gBAEfb,KAAM3N,GAAQA,EAAIyO,KACvB,CAQA,sBAAMC,CAAiBT,EAA+BU,EAAc9K,GAClE,MAAM+K,EAAW,UAAWtB,KAAKQ,uBAAuBe,UAClDC,KAAEA,SAAexB,KAAKQ,sBAEtBiB,EAAY,IAAID,EAAK,CAACH,GAAO,WAAY,CAAEhN,KAAM,oBAEvDiN,EAASI,OAAO,OAAQD,GAExB,MAAM9O,EAAMqN,KAAKc,aAAaH,GAE9B,OAAOX,KAAKF,MACT6B,KAAwBhP,EAAK2O,EAAU,CACtCL,iBAAiB,EACjB1K,QAASiH,OAAO0C,OAAO,CAAA,EAAI3J,EAAS,CAClC4J,OAAQ,mBACR,eAAgB,sBAChByB,QAAS5B,KAAKF,MAAM+B,OAAO,CAAElP,YAGhC0N,KAAM3N,GAAQA,EAAIyO,KACvB,CAEA,4BAAMW,CAAuBjB,EAA6BtK,GACxD,OAAOyJ,KAAKF,MACTxM,IAAY0M,KAAKY,uBAAuBC,GAAa,CACpDI,iBAAiB,EACjB1K,QAASiH,OAAO0C,OAAO,CAAA,EAAI3J,EAAS,CAAE4J,OAAQ,QAC9Ce,aAAc,gBAEfb,KAAM3N,GAAQA,EAAIyO,KACvB,CAQA,0BAAMY,CAAqBlB,EAA6BQ,EAAc9K,GACpE,MAAM+K,EAAW,UAAWtB,KAAKQ,uBAAuBe,UAClDC,KAAEA,SAAexB,KAAKQ,sBAEtBiB,EAAY,IAAID,EAAK,CAACH,GAAO,WAAY,CAAEhN,KAAM,oBAEvDiN,EAASI,OAAO,OAAQD,EAAW,YAEnC,MAAM9O,EAAMqN,KAAKe,qBAAqBF,GAEtC,OAAOb,KAAKF,MACT6B,KAAwBhP,EAAK2O,EAAU,CACtCL,iBAAiB,EACjB1K,QAASiH,OAAO0C,OAAO,CAAA,EAAI3J,EAAS,CAClC4J,OAAQ,mBACR,eAAgB,sBAChByB,QAAS5B,KAAKF,MAAM+B,OAAO,CAAElP,YAGhC0N,KAAM3N,GAAQA,EAAIyO,KACvB,ECpGI,MAAOa,UAAoBzB,EACrB,cAAAG,CAAeC,GACvB,MAAO,gBAAgBA,kBACzB,CAEU,sBAAAC,CAAuBC,GAC/B,MAAO,yBAAyBA,kBAClC,CAEU,YAAAC,CAAaH,GACrB,MAAO,gBAAgBA,gBACzB,CAEU,oBAAAI,CAAqBF,GAC7B,MAAO,yBAAyBA,gBAClC,ECDI,MAAOoB,UAAgBpC,EAC3B,YAAMqC,CAAO3L,GACX,aACQyJ,KAAKF,MAAMxM,IAAuB,YAAa,CACnD2N,iBAAiB,EACjB1K,QAASiH,OAAO0C,OAAO,CAAA,EAAI3J,EAAS,CAClC4L,OAAQ,mBACR,eAAgB,mBAChB,gBAAiB,WACjBC,OAAQ,WACRC,QAAS,SAGblB,KAAKmB,KACT,CAEA,SAAMhP,CAAIiP,EAAqBhM,GAC7B,MAAM4K,SACEnB,KAAKF,MAAMxM,IAAoB,gBAAgBiP,IAAM,CACzDtB,iBAAiB,EACjB1K,QAASiH,OAAO0C,OAAO,CAAA,EAAI3J,EAAS,CAClC4J,OAAQ,mBACR,eAAgB,wBAGpBgB,KAGF,GAAoB,iBAATA,GAA8B,OAATA,EAC9B,MAAM,IAAI/G,MACR,0HAIJ,OAAO+G,EAAKqB,IACd,CAEA,oBAAMC,CAAezG,EAA0BzF,GAC7C,aACQyJ,KAAKF,MAAMxM,IAAY,MAAM0I,IAAoB,CACrDiF,iBAAiB,EACjB1K,QAASiH,OAAO0C,OAAO,CAAA,EAAI3J,EAAS,CAClC4J,OAAQ,YACR,eAAgB,wBAGpBgB,IACJ,CAEA,YAAMuB,CAAOF,EAAYjM,GACvB,aACQyJ,KAAKF,MAAM6B,KAAqB,YAAaa,EAAM,CACvDvB,iBAAiB,EACjB1K,QAASiH,OAAO0C,OAAO,CAAA,EAAI3J,EAAS,CAClC4J,OAAQ,mBACR,eAAgB,wBAGpBgB,KAAKqB,IACT,ECzDI,MAAOG,UAAwB9C,EAC5B,YAAMqC,CAAOU,EAAwBrM,GAC1C,aACQyJ,KAAKF,MAAMxM,IAAwC,qBAAsB,CAC7E2N,iBAAiB,EACjB1K,QAASiH,OAAO0C,OAAO,CAAA,EAAI3J,EAAS,CAClC4L,OAAQ,mBACR,eAAgB,mBAChB,gBAAiB,WACjBC,OAAQ,WACRC,QAAS,MAEX3D,OAAQ,CACNkE,oBAGJzB,KAAK0B,cACT,CAEO,SAAMvP,CAAIiP,EAAYhM,GAC3B,aACQyJ,KAAKF,MAAMxM,IAA6C,yBAAyBiP,IAAM,CAC3FtB,iBAAiB,EACjB1K,QAASiH,OAAO0C,OAAO,CAAA,EAAI3J,EAAS,CAClC4J,OAAQ,mBACR,eAAgB,wBAGpBgB,KAAK2B,aACT,EC3BI,SAAUC,EAAkB9L,GAChC,MAAM+L,EAAS/L,EAAMb,UAAU4M,QAAU,EACnCrO,EACJsC,EAAMb,UAAU+K,MAAMxM,SAAWsC,EAAMtC,SAAW,gBAEpD,OAAQqO,GACN,KAAK,IACH,MAAMC,EAAetO,EAAQuO,cAE7B,OACED,EAAa5F,SAAS,oBACtB4F,EAAa5F,SAAS,uBAEf,CACL2F,SACArO,UACAwO,KAAM,kBACNC,oBAAqB,2BACrBC,YAAa,CACX,mCACA,kCACA,uCACA,kDAIC,CACLL,SACArO,UACAwO,KAAM,cACNC,oBAAqB,wBACrBC,YAAa,CACX,+BACA,0BACA,kCACA,+BAIN,KAAK,IACH,MAAO,CACLL,SACArO,UACAwO,KAAM,eACNC,oBAAqB,sBACrBC,YAAa,CACX,+BACA,2CACA,uCACA,yBAIN,KAAK,IACH,MAAO,CACLL,SACArO,UACAwO,KAAM,YACNC,oBAAqB,mBACrBC,YAAa,CACX,8BACA,uCACA,wCACA,+BAIN,QACE,MAAO,CACLL,SACArO,UACAwO,KAAM,gBACNC,oBAAqB,+BACrBC,YAAa,CACX,gCACA,mCACA,6BACA,4BAIV,CC5EO,MAAMC,EAAqB,4BAG5BC,EAAqB,IAAIvQ,UAElBwQ,EACXjN,GAESuJ,GAET2D,GAA+B,KAE/BC,GAEAC,GAEA5H,GAEAJ,GAEAiI,GAEAC,GACAC,GAEO9H,iBAEC2E,aACAoD,aAEAC,UACAC,QACAC,gBAEA3Q,OAER,WAAAwM,CAAY/F,EAAiBF,GAC3B,MAAMvD,QACJA,EAAU,CAAA,EAAEoK,aACZA,EAAYoD,aACZA,GAAe,EAAI9J,qBACnBA,GAAuB,EAAK8B,WAC5BA,GAAa,EAAKJ,oBAClBA,GACE7B,GAAQ,CAAA,EAEZkG,MAAKzJ,EAAWA,EAEhByJ,MAAK2D,EAAY,GACjB3D,MAAK0D,EAAa,GAElB1D,MAAKjE,EAAcA,EACnBiE,MAAKrE,EAAuBA,EAC5BqE,MAAK4D,GAAkB,EAEvB5D,MAAK6D,EAAkBM,QAAQC,SAAQ,GAGvC,MAAMC,EAAW,GAAGrK,KAAWC,IAE3BsJ,EAAmBlQ,IAAIgR,GACzBrE,MAAKF,EAASyD,EAAmBjQ,IAAI+Q,IAEjCpK,IACFqK,QAAQC,IAAIC,6BAA+B,IAE3C1E,EAAM2E,SAASC,WAAa,IAAIC,EAAM,CAAEC,oBAAoB,KAG9D5E,MAAKF,EAASA,EAAM4C,OAAO,CACzB1I,UACAzD,UAEAsO,QAAS,IACTzE,aAAc,EAEd0E,UAAW,IAAIH,EAAM,CAAEI,WAAW,EAAMC,WAAY,KACpDN,WAAY,IAAIC,EAAM,CAAEI,WAAW,EAAMC,WAAY,OAGvDzB,EAAmB9P,IAAI4Q,EAAUrE,MAAKF,IAGxCE,KAAKW,aAAeA,EACpBX,KAAK+D,aAAeA,EAEpB/D,KAAKgE,UAAY,IAAMjI,EAAyBiG,EAAZzB,GAAyBP,MAAKF,GAClEE,KAAKiE,QAAU,IAAIhC,EAAQjC,MAAKF,GAChCE,KAAKkE,gBAAkB,IAAIvB,EAAgB3C,MAAKF,GAEhDE,KAAKzM,OAASL,GAChB,CAEA,sBAAM+R,GACJ,OAAOjF,MAAK6D,CACd,CAEA,kBAAID,GACF,OAAO5D,MAAK4D,CACd,CAEA,cAAI7H,GACF,OAAOiE,MAAKjE,CACd,CAEA,EAAAmJ,CAAc3O,GACZ,MAAM4O,EAAM3H,OAAO0C,OAAO,CAAA,EAAI3J,EAAS,CACrCtC,UAAMmR,EACN3J,aAAS2J,IAaX,OAVA5H,OAAO6H,KAAKF,GAAKvM,QACdtB,QAAqB8N,IAAbD,EAAI7N,WAA6B6N,EAAI7N,IAGhD0I,MAAKzJ,EAAW4O,GAEXA,EAAIG,eAAiBtF,MAAKrE,IAC7BwJ,EAAIG,cAAgB,UAAUtF,MAAKrE,KAG9BwJ,CACT,CAEA,uBAAIxJ,GACF,OAAOqE,MAAKrE,CACd,CAEA,uBAAIA,CAAoBxF,GACtB6J,MAAKrE,EAAuBxF,CAC9B,CAEA,aAAAoP,CAAchP,GACZyJ,MAAKkF,EAAc3O,EACrB,CAEA,qBAAYiP,GACV,MAAkB,ytDA6BpB,CAMA,qBAAMC,CAAgBlP,GAOpB,SANYyJ,MAAK6D,GAAqB7D,MAAKyD,IACzCzD,MAAK6D,EAAkB,IAAIM,QAASC,IAClCpE,MAAK8D,EAAyBM,KAI9BpE,MAAKyD,EACP,OAAOU,QAAQC,QAAQpE,MAAKyD,GAO9B,QAJiC,IAAtBzD,KAAK+D,eACd/D,KAAK+D,cAAe,GAGlB/D,MAAKjE,EAAa,CACpB,MAAMyG,QAAaxC,KAAKiE,QACrB3Q,IAAI0M,KAAKW,aAAeX,MAAKkF,EAAc3O,IAC3C8J,KAAMjK,IACL4J,KAAKzM,OAAOiB,KAAKd,EAAOmJ,MAAM,iBAEvBzG,IAERkK,MAAMhL,MAAOC,IAGZ,MAFAyK,MAAK8D,GAAuB,SAElB9D,KAAKiE,QAAQhE,UAAUD,MAAKkF,EAAc3O,KAClDyJ,KAAKzM,OAAO0D,MACVvD,EAAOgS,IAAI,6BAA6BnQ,EAAEZ,YAAYY,EAAEmK,UAGpD,IAAItF,MACR,wHAII7E,IAqBZ,YAjBgC,IAArBiN,EAAKmD,cACd3F,MAAK4D,GAAkB,GAGzB5D,KAAKhE,iBAAmBwG,EAAKI,cAE7B5C,MAAKyD,EAAgBzD,KAAKwF,kBAE1BxF,MAAKyD,EAAgBzD,MAAKyD,EAAcpR,QACtC,kBACAmQ,EAAKpP,MAAQ,kBAGf4M,KAAKzM,OAAOiB,KAAKd,EAAOmJ,MAAM,gCAE9BmD,MAAK8D,GAAuB,GAErB9D,MAAKyD,CACd,CAuBA,IAAIjB,SArBmBxC,KAAKiE,QACzB/B,OAAOlC,MAAKkF,EAAc3O,IAC1B8J,KAAMjK,IACL4J,KAAKzM,OAAOiB,KAAKd,EAAOmJ,MAAM,sBAEvBzG,IAERkK,MAAMhL,MAAOC,IAGZ,MAFAyK,MAAK8D,GAAuB,SAElB9D,KAAKiE,QAAQhE,UAAUD,MAAKkF,EAAc3O,KAClDyJ,KAAKzM,OAAO0D,MACVvD,EAAOgS,IAAI,6BAA6BnQ,EAAEZ,YAAYY,EAAEmK,UAGpD,IAAItF,MAAM,mDAEV7E,KAIQqQ,KAAMC,GAAMA,EAAEzS,OAASkQ,GAkC3C,OAhCKd,IACHxC,KAAKzM,OAAO8H,KAAK3H,EAAOiJ,OAAO,kCAE/B6F,QAAaxC,KAAKiE,QACfvB,OACC,CACEoD,QAAS,IACT1S,KAAMkQ,EACNV,cAAe,oBACfmD,oBAAqB,KAEvB/F,MAAKkF,EAAc3O,IAEpB8J,KAAMjK,IACL4J,KAAKzM,OAAOiB,KAAKd,EAAOmJ,MAAM,qBAEvBzG,IAERkK,MAAO/K,IAON,MANAyK,KAAKzM,OAAO0D,MACVvD,EAAOgS,IAAI,4BAA4BnQ,EAAEZ,YAG3CqL,MAAK8D,GAAuB,GAEtB,IAAI1J,MACR,2GAC+DkJ,8BAK1DtD,KAAKiE,QACfxB,eAAeD,EAAKI,cAAe5C,MAAKkF,EAAc3O,IACtD8J,KAAMjK,IACL4J,MAAKyD,EAAgBrN,EAEdA,IAERiK,KAAMjK,IACL4J,MAAK8D,GAAuB,GAE5B9D,KAAKzM,OAAOiB,KAAKd,EAAOmJ,MAAM,0BAEvBzG,IAERkK,MAAO/K,IAON,MANAyK,MAAK8D,GAAuB,GAE5B9D,KAAKzM,OAAO0D,MACVvD,EAAOgS,IAAI,iCAAiCnQ,EAAEZ,YAG1C,IAAIyF,MAAM,iCAEtB,CAQA,sBAAM4L,CAAiBC,EAAgB1P,GAQrC,OAPAyJ,MAAKyD,QAAsBzD,KAAKyF,gBAAgBlP,GAE3CyJ,KAAKW,eACRX,KAAKW,aAAesF,EACpBjG,KAAK+D,cAAe,SAGT/D,KAAKiE,QACf3Q,IAAI2S,EAAQjG,MAAKkF,EAAc3O,IAC/B8J,KAAMjK,IACL,MAAM8P,KAAEA,EAAO,KAAI9S,KAAEA,EAAI+S,SAAEA,GAAa/P,EAExC,GAAI+P,GAAYD,EAAM,CACpB,MAAME,EAAS3P,KAAK4P,MAAMH,GAK1B,OAHAlG,MAAK2D,EAAYyC,EACjBpG,MAAK0D,EAAatQ,EAEXgT,CACT,CAKA,OAHApG,MAAK2D,EAAY,GACjB3D,MAAK0D,EAAatQ,EAEX,KAERkN,MAAOgG,IAKN,GAJAtG,KAAKzM,OAAO0D,MACVvD,EAAOgS,IAAI,kCAAkCY,EAAO3R,YAGtB,MAA5B2R,EAAOlQ,UAAU4M,OACnB,MAAM,IAAI5I,MACR,wBAAwB6L,4BAAiCjG,MAAKF,EAAO+B,YAIzE,GAAgC,MAA5ByE,EAAOlQ,UAAU4M,OAGnB,MAAM,IAAI5I,MACR,sDAAsD6L,kBAAuBjG,MAAKF,EAAO+B,YAI7F,MAAMyE,GAEZ,CAQA,iBAAMC,CAAYN,EAAgB1P,GAC3ByJ,KAAKW,eACRX,KAAKW,aAAesF,GAGtB,MAAMf,EAAelF,MAAKkF,EAAc3O,GAClCiQ,EAAgBxG,KAAKW,aAE3B,IACE,OAAIX,MAAKjE,QACMiE,MAAKyG,EAAaD,EAAetB,SAGnClF,MAAK0G,EAAiBF,EAAetB,EACpD,CAAE,MAAOjO,GACP+I,MAAK2G,EAAsB1P,EAAOuP,EACpC,CACF,CAKA,OAAMC,CAAaR,EAAgB1P,GACjC,MAAMiM,QAAaxC,KAAKiE,QAAQ3Q,IAAI2S,EAAQ1P,GAU5C,OARAyJ,KAAKzM,OAAOiB,KAAKd,EAAOmJ,MAAM,sBAEE,IAArB2F,EAAKmD,cACd3F,MAAK4D,GAAkB,GAGzB5D,KAAKhE,iBAAmBwG,EAAKI,cAEtBJ,CACT,CAKA,OAAMkE,CAAiBT,EAAgB1P,GACrC,aAAayJ,KAAKiE,QAAQ3Q,IAAI2S,EAAQ1P,EACxC,CAKA,EAAAoQ,CAAsB1P,EAAYgP,GAChC,GAAIjG,MAAKjE,GAAe9E,EAAMtC,SAAS0I,SAAS,UAC9C,MAAM,IAAIjD,MACR,uHAKJ,GAA+B,MAA3BnD,EAAMb,UAAU4M,OAClB,MAAM,IAAI5I,MACR,wBAAwB6L,4BAAiCjG,MAAKF,EAAO+B,YAazE,MAT+B,MAA3B5K,EAAMb,UAAU4M,QAClBhD,KAAKzM,OAAO0D,MACVvD,EAAOgS,IACL,sDAAsDO,kBAAuBjG,MAAKF,EAAO+B,aAMzF5K,CACR,CAQA,SAAA2P,CAAU1U,EAA0B2U,GAAY,GAC9C,IAAIC,EACiB,iBAAZ5U,EAAuBA,EAAUA,EAAQ6L,SAAS,SAE3D,IAAK,MAAMgJ,KAAK/G,MAAK2D,EACnBmD,EAASA,EAAOzU,QAAQ,IAAID,OAAO,MAAM2U,EAAE3T,UAAW,KAAM2T,EAAEtR,OAGhE,MAAMuR,EAAM,IAAIC,EAAMJ,EAAYC,EAAS9G,MAAKyD,GAE1CyD,EAAkB,kBAExB,IAAKL,EAAW,CACd,MAAM9S,EAAciT,EAAIpQ,OAAOf,SAASuC,cAAc,OACtDrE,EAAYU,UAAYyS,EAExB,MAAMC,EAAYH,EAAIpQ,OAAOf,SAASG,cAAc,cAEpD,GAAImR,EAAW,CACb,MAAMC,EAAUD,EAAU1O,iBAAiB,UAEvC2O,EAAQC,OACVF,EAAUG,aAAavT,EAAaqT,EAAQG,KAAKH,EAAQC,OAAS,IAElEF,EAAUzF,OAAO3N,EAErB,KAAO,CACL,MAAMoT,EAAYH,EAAIpQ,OAAOf,SAASuC,cAAc,OAEpD+O,EAAUzF,OAAO3N,GAEjBiT,EAAIpQ,OAAOf,SAASW,KAAKkL,OAAOyF,EAClC,CAEA,MAAM7O,EAAO0O,EAAIpQ,OAAOf,SAASG,cAAc,QACzCwR,EAAQlP,EAAMtC,cAAc,SAE9BwR,EACFA,EAAMC,KAAOzH,MAAK0D,EAElBpL,EAAK7D,WAAa,UAAUuL,MAAK0D,WAErC,CAIA,OAFsBsD,EAAIU,YAELrV,QACnB,IAAID,OAAO,YAAY8U,gBAA+B,KACtDJ,EAEJ,CAEA,eAAMa,GACJ,GAAI3H,KAAKW,aAAc,CACrB,GAAIX,KAAK+D,aACP,aAAa/D,KAAKgE,UAAUhD,mBAC1BhB,KAAKW,aACLX,MAAKzJ,GAEF,CACL,MAAMqR,QAAiB5H,KAAKiE,QAAQ3Q,IAClC0M,KAAKW,aACLX,MAAKzJ,GAGP,GAAIyJ,MAAK4D,EAAiB,CACxB,MAAMiE,QAAqB7H,KAAKkE,gBAAgB5Q,IAC9CsU,EAASjC,YACT3F,MAAKzJ,GAGP,aAAayJ,KAAKgE,UAAUlC,uBAC1B+F,EAAatF,GACbvC,MAAKzJ,EAET,CACE,GAAIqR,EAASzB,SACX,aAAanG,KAAKgE,UAAUlC,uBAC1B8F,EAASzB,SACTnG,MAAKzJ,EAIb,CACF,CACF,CAEA,kBAAMuR,CAAaC,GACjB,GAAI/H,KAAKW,aAAc,CACrB,GAAIX,KAAK+D,aACP,aAAa/D,KAAKgE,UAAU5C,iBAC1BpB,KAAKW,aACLoH,EACA/H,MAAKzJ,GAEF,CACL,MAAMqR,QAAiB5H,KAAKiE,QAAQ3Q,IAClC0M,KAAKW,aACLX,MAAKzJ,GAGP,GAAIyJ,MAAK4D,EAAiB,CACxB,MAAMiE,QAAqB7H,KAAKkE,gBAAgB5Q,IAC9CsU,EAASjC,YACT3F,MAAKzJ,GAGP,aAAayJ,KAAKgE,UAAUjC,qBAC1B8F,EAAatF,GACbwF,EACA/H,MAAKzJ,EAET,CACE,GAAIqR,EAASzB,SACX,aAAanG,KAAKgE,UAAUjC,qBAC1B6F,EAASzB,SACT4B,EACA/H,MAAKzJ,EAIb,CACF,CACF,CAOA,yBAAMyR,CACJzR,GAEA,IACE,MAAM0R,EAAc1R,GAAWyJ,MAAKzJ,EAKpC,aAFMyJ,KAAK1M,IAAI,YAAa2U,GAAa,GAElC,CAAEC,SAAS,EACpB,CAAE,MAAOjR,GACP,MAAMkR,EAAYpF,EAAkB9L,GAEpC,MAAO,CACLiR,SAAS,EACTjR,MAAOkR,EAAU/E,oBACjBD,KAAMgF,EAAUhF,KAEpB,CACF,CAEA,SAAM7P,CACJmJ,EACAlG,EACA6R,GAAU,GAEV,MAAMC,EAAoBD,EACtB7R,EACAiH,OAAO0C,OAAO,CAAA,EAAIF,MAAKkF,EAAclF,MAAKzJ,GAAWA,GAEzD,IACE,aAAayJ,MAAKF,EAAOxM,IAAOmJ,EAAM,CACpClG,QAAS8R,GAEb,CAAE,MAAOpR,GAEP,GAAsC,kBAAlC8L,EAAkB9L,GAAOkM,KAA0B,CACrD,MAAMgF,EAAYpF,EAAkB9L,GAqBpC,MApBA+I,KAAKzM,OAAO0D,MACVvD,EAAOgS,IAAI,uBAAuByC,EAAU/E,iCD5hBxB7P,EAAa0D,EAAYqR,GACrD,MAAMH,EAAYpF,EAAkB9L,GAC9BsR,EAA0B,IAAID,MAEpC/U,EAAO0D,MAAMvD,EAAOgS,IAAI,GAAG6C,IAAgBJ,EAAU/E,wBACrD7P,EAAO0D,MAAMvD,EAAOgS,IAAI,WAAWyC,EAAUnF,WAAWmF,EAAUhF,UAClE5P,EAAO0D,MAAMvD,EAAOgS,IAAI,YAAYyC,EAAUxT,YAE1CwT,EAAU9E,YAAYgE,OAAS,IACjC9T,EAAOiB,KAAKd,EAAOiJ,OAAO,iBAC1BwL,EAAU9E,YAAYzK,QAAQ,CAAC4P,EAAYC,KACzClV,EAAOiB,KAAKd,EAAOiJ,OAAO,KAAK8L,EAAQ,MAAMD,QAGnD,CCkhBQE,CAAc1I,KAAKzM,OAAQ0D,EAAO,eAG9BA,EAAMb,WAKPa,EAAcb,SAAW,CACxB4M,OAAQmF,EAAUnF,OAClB7B,KAAM,CAAExM,QAASwT,EAAUxT,WAL7BsC,EAAM0R,eAAiBR,EAUnBlR,CACR,CAGA,MAAMA,CACR,CACF,QCnpBW2R,EACMC,OACA/O,KACAgP,SAKTvV,OAER,WAAAwM,CAAY8I,EAAuB/O,GACjCkG,KAAK6I,OAASA,EACd7I,KAAKlG,KAAOA,GAAQ,CAAA,EAEpBkG,KAAK8I,SAAW,IAAI9V,IAKpBgN,KAAK8I,SAASrV,IAAI,oBAAqBuM,KAAK+I,kBAAkBC,KAAKhJ,OACnEA,KAAK8I,SAASrV,IAAI,gBAAiBuM,KAAKiJ,eAAeD,KAAKhJ,OAE5DA,KAAKzM,OAASL,IAEd8M,KAAKkJ,MACP,CAEA,IAAAA,GACE,MAAMC,GAAEA,GAAOnJ,KAAK6I,OAEpB,IAAK,MAAOO,EAAOC,KAAYrJ,KAAK8I,SAClCK,EAAG5N,GAAG6N,EAAOC,EAEjB,CAEA,iBAAAN,GACE/I,KAAK6I,OAAOM,GAAGG,KAAK,CAClBjV,KAAM,SACN+U,MAAO,qBACPjI,KAAM,CAAA,GAEV,CAEA,oBAAM8H,GACJ,IAAIjJ,KAAKlG,KAAKyP,cAAevJ,KAAKlG,KAAKI,MAmKrC,OANA8F,KAAK6I,OAAOM,GAAGG,KAAK,yBAA0B,CAC5CrS,MAAO,8CAGT+I,KAAKzM,OAAO0D,MAAMvD,EAAOgS,IAAI,yCAjKe,CAC5C,MAAM6D,YAAEA,EAAWrP,MAAEA,GAAU8F,KAAKlG,KAEpC,GAAIkG,KAAK6I,OAAOW,OAAOC,uBAAuB1N,WAAY,CACxD,IAAK7B,GAAO0J,eAQV,YAPA5D,KAAK6I,OAAOM,GAAGG,KAAK,yBAA0B,CAC5CrS,MAAO,yDACPuS,OAAQ,CACNE,SAAS,KAMb1J,KAAK6I,OAAOM,GAAGG,KAAK,uBAAwB,CAC1CE,OAAQ,CACNE,SAAS,IAIjB,CAEA,MAAMC,QAAsBzP,GAAOyN,YAAYrH,MAAMhL,MAAOkK,IAC1D,GAAIoK,EAAapK,GAAM,CAIrB,GAAuB,oBAFLuD,EAAkBvD,GAEtB2D,KAA4B,CACxCnD,KAAKzM,OAAOiB,KACVd,EAAOiJ,OACL,yDAKJ,IACE,MAAMkN,QAAmB3P,GAAO8N,uBAC5B6B,IAAeA,EAAW3B,SAC5BlI,KAAKzM,OAAO0D,MACVvD,EAAOgS,IAAI,yBAAyBmE,EAAW5S,UAEjD+I,KAAK6I,OAAOM,GAAGG,KAAK,yBAA0B,CAC5CrS,MAAO4S,EAAW5S,MAClBkM,KAAM0G,EAAW1G,KACjB2G,SAAS,MAGX9J,KAAKzM,OAAOiB,KAAKd,EAAOiJ,OAAO,oBAC/BqD,KAAK6I,OAAOM,GAAGG,KAAK,yBAA0B,CAC5CrS,MAAO,kBACPkM,KAAM,kBACN2G,SAAS,IAGf,CAAE,MAAOC,GACP/J,KAAKzM,OAAOiB,KAAKd,EAAOiJ,OAAO,oBAC/BqD,KAAK6I,OAAOM,GAAGG,KAAK,yBAA0B,CAC5CrS,MAAO,kBACPkM,KAAM,kBACN2G,SAAS,GAEb,CAEA,OAAOtK,CACT,CAGA,GACEA,EAAIwK,iBAAiB5P,QAC6B,eAAhDoF,EAAIwK,MAAmC7G,MACU,cAAhD3D,EAAIwK,MAAmC7G,MAc1C,OAZAnD,KAAKzM,OAAOiB,KACVd,EAAOiJ,OACL,mFAIJqD,KAAK6I,OAAOM,GAAGG,KAAK,yBAA0B,CAC5CrS,MACE,iFACFkM,KAAM,qBAGD3D,CAEX,CAEA,MAAMA,KAGR,GAAImK,aAAyBvP,MAC3B,OAGF,MAAM6P,EAAYN,QACRJ,GACFW,mBAAmBP,GACpBrJ,MAAOd,IACN,GAAoB,kCAAhBA,EAAI7K,QAGN,OAFAqL,KAAKzM,OAAO0D,MAAMvD,EAAOgS,IAAI,kCAEtBlG,WAGP+J,GAAaY,kBAEvB,KAAIF,GAAaA,aAAqBG,QA+BpC,OAAIH,aAAqB7P,OACvB4F,KAAK6I,OAAOM,GAAGG,KAAK,yBAA0B,CAC5CrS,MAAOgT,EAAUtV,eAGnBqL,KAAKzM,OAAO0D,MAAMvD,EAAOgS,IAAIuE,EAAUtV,YAKzCqL,KAAK6I,OAAOM,GAAGG,KAAK,yBAA0B,CAC5CrS,MAAO,oCAGT+I,KAAKzM,OAAO0D,MAAMvD,EAAOgS,IAAI,gCA7Ce,CAC5C,MAAM2E,QAAqBnQ,GAAO4N,aAAamC,IAE/C,GAA6B,OAAzBI,GAAcrH,OAAiB,CACjC,MAAMsH,EAAaf,GAAagB,iBAG9BC,eAAgBC,EAChBC,eAAgBC,EAChBC,eAAgBC,GACdP,GAAc,CAChBE,eAAgB,GAChBE,eAAgB,GAChBE,gBAAgB,IAAI7L,MAAOC,eAG7BgB,KAAK6I,OAAOM,GAAGG,KAAK,yBAA0B,CAC5CwB,SAAU,IAAI/L,KAAK8L,GACnBF,cACAF,mBAGFzK,KAAKzM,OAAOiB,KAAKd,EAAOmJ,MAAM,mBAChC,MACEmD,KAAK6I,OAAOM,GAAGG,KAAK,yBAA0B,CAC5CrS,MAAO,4BAGT+I,KAAKzM,OAAO0D,MAAMvD,EAAOgS,IAAI,2BAEjC,CAmBF,CASF,EC/LF,MAAMqF,EAAuB,oBAGvBC,EAAc,IACdC,EAAmB,UACnBC,EAAoB,IAG1B,MAAMC,UAAsBC,EAAYC,MAC9BC,UAAY,EACbC,QACAC,SAEP,WAAAzL,CAAYwL,EAAiBC,GAC3B/K,QACAT,KAAKuL,QAAUA,EACfvL,KAAKwL,SAAWA,CAClB,CAEA,GAAAC,CAAInU,EAAa7B,EAAkBiW,GAEjC,MAAMC,EAAU3L,KAAK1M,IAAIgE,GAErBqU,IACF3L,KAAKsL,WAAaK,EAAQC,MAI5B,MAAM9E,EAASrG,MAAMgL,IAAInU,EAAK7B,EAAOiW,GAOrC,OALA1L,KAAKsL,WAAa7V,EAAMmW,KAGxB5L,KAAKoI,UAEEtB,CACT,CAEQ,OAAAsB,GACN,MAAM/C,EAAOrF,KAAKqF,OAGlB,GAAIA,EAAKgC,OAASrH,KAAKwL,SAAU,CAC/B,MAAMK,EAAgBxG,EAAKgC,OAASrH,KAAKwL,SACnCM,EAAazG,EAAK0G,KAAK,CAACC,EAAGC,KAC/B,MAAMC,EAAQlM,KAAK1M,IAAI0Y,GACjBG,EAAQnM,KAAK1M,IAAI2Y,GAEvB,OAAQC,GAAOE,WAAa,IAAMD,GAAOC,WAAa,KAGxD,IAAK,IAAIC,EAAI,EAAGA,EAAIR,EAAeQ,IAAK,CACtC,MAAM/U,EAAMwU,EAAWO,GACjB9E,EAAOvH,KAAK1M,IAAIgE,GAElBiQ,IACFvH,KAAKsL,WAAa/D,EAAKqE,KACvB5L,KAAKsM,IAAIhV,GAEb,CACF,CAGA,KAAO0I,KAAKsL,UAAYtL,KAAKuL,SAAWlG,EAAKgC,OAAS,GAAG,CACvD,MAAMkF,EAAYlH,EAAK0G,KAAK,CAACC,EAAGC,KAC9B,MAAMC,EAAQlM,KAAK1M,IAAI0Y,GACjBG,EAAQnM,KAAK1M,IAAI2Y,GAEvB,OAAQC,GAAOE,WAAa,IAAMD,GAAOC,WAAa,KACrD,GAEH,GAAIG,EAAW,CACb,MAAMhF,EAAOvH,KAAK1M,IAAIiZ,GAElBhF,IACFvH,KAAKsL,WAAa/D,EAAKqE,KACvB5L,KAAKsM,IAAIC,GAEb,CACF,CACF,CAEA,YAAAC,GACE,OAAOxM,KAAKsL,SACd,CAEA,YAAAmB,GACE,OAAOzM,KAAKqF,OAAOgC,MACrB,EAIF,MAAMqF,EAAQ,IAAIvB,EAAcF,EAAkBC,GAwBlD,SAASyB,EAAqBC,GAC5B,GAAsB,IAAlBA,EAAOvF,OACT,OAAO+C,OAAOyC,MAAM,GAGtB,GAAsB,IAAlBD,EAAOvF,OACT,OAAOuF,EAAO,GAGhB,MAAME,EAAcF,EAAOG,OACzB,CAACC,EAAKC,IAAU7C,OAAO8C,WAAWD,GAASD,EAC3C,GAGF,OAAO5C,OAAO+C,OAAOP,EAAmCE,EAC1D,CAqBM,SAAUM,EAAetT,GAC7B,MAAMuT,UACJA,EAAS3B,IACTA,EAAMV,EAAWO,QACjBA,EAAUN,EAAgBO,SAC1BA,EAAWN,GACTpR,EAEEvG,EAASL,IAUf,OAPIqY,IAAYN,GAAoBO,IAAaN,IAC/CwB,EAAMnB,QAAUA,EAChBmB,EAAMlB,SAAWA,GAGnB6B,EAAUX,MAAQA,EAEX,CAAChS,EAAKhI,EAAK4a,KAChB,MAAM3a,EAAM+H,EAAIkB,aAAelB,EAAI/H,KAAO,GACpC0R,EA3EV,SAA0B1R,GAExB,MAAM4a,EAAW5a,EAAI6a,MAAM,KAAK,GAGhC,OAAKzC,EAAqBlQ,KAAK0S,GAI3BA,EAASlQ,SAAS,iBACb,GAGF1K,EAPE,EAQX,CA6DqB8a,CAAiB9a,GAGlC,IAAK0R,EACH,OAAOiJ,IAIT,MAAMI,EAAYhB,EAAMpZ,IAAI+Q,GAE5B,GAAIqJ,EAYF,OAXAna,EAAOiB,KACL,GAAGd,EAAOkJ,KAAK,uBAAuBlJ,EAAOmJ,MAC3CnC,EAAIpE,WACD3D,QAAUe,EAAOkJ,KAAK,YAAYyH,KAlD/C,SACE3R,EACA6D,GAEA,IACE,IAAK,MAAOoX,EAAQlY,KAAU+H,OAAOC,QAAQlH,GACvCd,SACF/C,EAAIG,UAAU8a,EAAQlY,EAG5B,CAAE,MAAOwB,GAEPgC,QAAQoC,KAAK,uCAAwCpE,EACvD,CACF,CAuCM2W,CAAmBlb,EAAKgb,EAAUnX,SAElC7D,EAAImb,MAAMH,EAAUxb,cACpBQ,EAAII,MAMN,MAAMgb,EAAcpb,EAAII,IAClBib,EAAgBrb,EAAImb,MACpBjB,EAAmB,GAGxBla,EAAYmb,MAAQ,SACnB1M,EACA6M,EACAC,GAEA,IAAKvb,EAAIwb,UAAUtU,GACjB,OAAOmU,EAAcI,KACnBnO,KACAmB,EACA6M,EACAC,GAKJ,GAAoB,iBAAT9M,EAAmB,CAC5B,MAAMiN,EAA+BJ,GAAY,OACjDpB,EAAOyB,KAAKjE,OAAOkE,KAAKnN,EAAMiN,GAChC,MAAWhE,OAAOmE,SAASpN,GACzByL,EAAOyB,KAAKlN,GACHA,SACTyL,EAAOyB,KAAKjE,OAAOkE,KAAKE,OAAOrN,GAAO,SAGxC,OAAO,CACT,EAGCzO,EAAYI,IAAM,SACjBma,EACAe,EACAC,GAEA,IAAKvb,EAAIwb,UAAUtU,GACjB,OAAOkU,EAAYK,KACjBnO,KACAiN,EACAe,EACAC,GAKJ,GAAIhB,QACF,GAAqB,iBAAVA,EAAoB,CAC7B,MAAMmB,EAA+BJ,GAAY,OACjDpB,EAAOyB,KAAKjE,OAAOkE,KAAKrB,EAAOmB,GACjC,MAAWhE,OAAOmE,SAAStB,GACzBL,EAAOyB,KAAKpB,GAEZL,EAAOyB,KAAKjE,OAAOkE,KAAKE,OAAOvB,GAAQ,SAK3C,IAAIwB,EAEJ,IACEA,EAAc9B,EAAqBC,GAEnC,MAAM8B,EAAetE,OAAO8C,WAAWuB,GAGvC,GAAIC,EAAe,GAAKA,EAAe,SAAkB,CAEvD,MAAMhB,EAAuB,CAC3BnX,QAAS7D,EAAIic,aACbzc,QAASuc,EACTrC,UAAWrN,KAAK6P,MAChBhD,KAAM8C,GAGRhC,EAAMjB,IAAIpH,EAAUqJ,EAAWhC,GAE/BnY,EAAOiB,KACL,GAAGd,EAAOkJ,KAAK,eAAeyH,OAC5BqK,EAAe,MACfG,QAAQ,QAEd,CACF,CAAE,MAAO5X,GACP1D,EAAO0D,MAAM,gCAAgCoN,MAAapN,KAC1DwX,EAAc9B,EAAqBC,EACrC,CAGA,MAAMkC,EAAgBd,GAAY,OAElC,OAAOF,EAAYK,KACjBnO,KACAyO,EACAK,EACAb,EAEJ,EAEAX,IAEJ,CChUO,MAAMyB,EAA0B,WAC1BC,EAAqB,OAE5BC,GAAUxS,EAAKyS,QACI,oBAAfC,YAA8BA,YACpCC,cAA0Bzc,MAGxB0c,GAAa5S,EAAK2H,QAAQ6K,GAAS,KAAM,MACzCK,GAAoB7S,EAAK2H,QAAQiL,GAAY,KAAM,MAiBnDE,GAAc9S,EAAK2H,QAAQkL,GADb,gBAEdE,GAAe/S,EAAK2H,QAAQmL,GAAa,gCAElCE,GACMC,aACTC,mBACSC,WACAC,SACTC,YAA+B,KACtBC,cACAC,gBAETzc,OAER,WAAAwM,CAAY8P,EAAkBI,GAC5BjQ,KAAK6P,SAAWA,EAEhB,MAAMH,aACJA,EAAejT,EAAK2H,QAAQE,EAAQ4L,MAAO,WAAUH,cACrDA,EAAgBtT,EAAK2H,QAAQE,EAAQ4L,MAAO,YAAWF,gBACvDA,EAAkB,GAAGhQ,KAAK6P,eAAcF,mBACxCA,EAAqB,IAAIZ,OAA6BC,SAAyBY,WAC/EA,EAAcO,GACZA,EAAKnR,cAAc3M,QAAQ,KAAM,KAAKA,QAAQ,QAAS,KACvD4d,GAAe,CAAA,EAEnBjQ,KAAK0P,aAAeA,EACpB1P,KAAK2P,mBAAqBA,EAC1B3P,KAAK4P,WAAaA,EAElB5P,KAAK+P,cAAgBA,EACrB/P,KAAKgQ,gBAAkBA,EAEvBhQ,KAAKoQ,WAELpQ,KAAKzM,OAASL,GAChB,CAEA,eAAMmd,GACJ,UACQC,EAAGC,KAAKhB,GAChB,CAAE,YACMe,EAAGE,MAAMjB,GACjB,CAEA,UACQe,EAAGC,KAAKvQ,KAAK0P,aACrB,CAAE,YACMY,EAAGE,MAAMxQ,KAAK0P,aACtB,CACF,CAEA,kBAAMe,GAGJ,aAFMzQ,KAAKqQ,kBAEEC,EACVI,SAASlB,GAAc,CACtBxB,SAAU,UAEX1N,MAAM,IAAM,KACjB,CAEA,mBAAMqQ,CAAcC,GAGlB,aAFM5Q,KAAKqQ,kBAEEC,EAAGO,UAAUrB,GAAc/Y,KAAKC,UAAUka,EAAM,KAAM,GAAI,CACrE5C,SAAU,SAEd,CAEA,cAAMoC,GACCpQ,KAAK8P,kBAGF9P,KAAK2Q,cAAc3Q,KAAK8P,aAF9B9P,KAAK8P,YAAcrZ,KAAK4P,YAAYrG,KAAKyQ,eAI7C,CAEA,0BAAMK,GACJ,MAAMtG,eAAEA,GAAmBxK,KAAK8P,YAEhC,IAAKtF,EACH,OAAO,KAGT,MAAMuG,EAAatU,EAAK2H,QAAQpE,KAAK0P,aAAclF,GAEnD,IAGE,aAFM8F,EAAGC,KAAKQ,GAEPA,CACT,CAAE,MACA,OAAO,IACT,CACF,CAEA,UAAAC,CAAWnB,EAAkBM,EAAa,IAAIpR,MAC5C,OAAOiB,KAAK2P,mBACTtd,QAAQ,IAAI0c,KAA4Bc,GACxCxd,QAAQ,IAAI2c,KAAuBhP,KAAK4P,WAAWO,GACxD,CAEA,aAAA5F,GACE,OAAOvK,KAAK8P,WACd,CAEA,gBAAMmB,CAAWC,GAEf,GAAiD,SAA7CA,EAAWnT,SAAS,SAASkB,MAAM,EAAG,GACxC,MAAM,IAAI7E,MAAM,iCAGlB,MAAM+W,EAAiBC,EACpBC,WAAW,OACXC,OAAOJ,GACPK,OAAO,OAGV,SAF8BvR,KAAK8Q,uBAEd,CACnB,MAAMpG,eAAEA,GAAmB1K,KAAK8P,YAEhC,GAAIpF,IAAmByG,EACrB,MAEJ,CAEA,MAAMtG,EAAa,IAAI9L,KAEjByS,EAAWxR,KAAKgR,WAAWhR,KAAK6P,SAAUhF,GAQhD,OANA7K,KAAK8P,YAAatF,eAAiBgH,EACnCxR,KAAK8P,YAAapF,eAAiByG,EACnCnR,KAAK8P,YAAalF,eAAiBC,EAAW7L,oBAExCgB,KAAKoQ,iBAEEE,EACVO,UAAUpU,EAAK2H,QAAQpE,KAAK0P,aAAc8B,GAAWN,GACrDO,QAAQ,KACPzR,KAAKzM,OAAOiB,KAAK,mBAAmBgd,MAE1C,CAEA,oBAAMrH,GACJ,MAAMuH,EAAe,IAAIvN,QAAgB,CAACC,EAASuN,KACjD,IAAIxQ,EAAO,GAGXnB,KAAKzM,OAAOiB,KAAKd,EAAOgJ,KAAK,gCAE7B,MAAMkV,EAAOC,EAAcC,MACzB,OACA,CAACrV,EAAK2H,QAAQiL,GAAY,mBAAoB,SAC9C,CACEa,IAAK5L,EAAQ4L,MACb3L,IAAK/G,OAAO0C,OAAO,CAAA,EAAIoE,EAAQC,IAAK,CAAEwN,SAAU,eAChDC,MAAO,YAIXJ,EAAKrW,GAAG,UAAY0W,IAClB9Q,GAAQ8Q,IAGVL,EAAKrW,GAAG,QAAU4H,IACH,IAATA,EAMJiB,EAAQjD,GALNwQ,EAAO,IAAIvX,MAAM,kCAAkC+I,QAQvDyO,EAAKrW,GAAG,QAAUiE,IAChBmS,EAAOnS,OAIX,UACQkS,EAAaD,QAAQ,KAEzBzR,KAAKzM,OAAOiB,KAAKd,EAAOgJ,KAAK,mCAG/B,MAAM+E,EAAYhF,EAAK2H,QACrBE,EAAQ4L,MACRlQ,KAAK+P,cACL/P,KAAKgQ,iBAGP,UAAYM,EAAGC,KAAK9O,GAClB,MAAM,IAAIrH,MAAM,QAAQqH,eAG1B,aAAa6O,EAAGI,SAASjP,EAC3B,CAAE,MAAOlM,GAGP,MAFA0D,EAAQmC,IAAI7F,GAENA,CACR,CACF,CAEA,wBAAM2U,CAAmBgH,GAGvB,aAFMlR,KAAKiR,WAAWC,SAETlR,KAAKmK,gBACpB,ECzOI,SAAU+H,GACdC,EAKAC,GAEA,OAAO9c,MAAOoF,EAAKhI,EAAK4a,KACtB,SAAU6E,EAAUzX,EAAI/H,KAAO,GAAI+H,EAAKhI,GAAM,CAC7BQ,IAERsB,KAAK,wBAAwBkG,EAAI/H,OAExC,MAAMG,EAAMJ,EAAII,IAEVuf,EAAoB,GAE1B3f,EAAImb,MAAQ,SAAUrX,GAGpB,OAFA6b,EAAQhE,KAAK7X,IAEN,CACT,EAEA9D,EAAII,IAAM,SAAUma,EAAae,EAA0CsE,GACpD,iBAAVrF,GACToF,EAAQhE,KAAKjE,OAAOkE,KAAKrB,IAG3B,MAAMsF,EAAkB7f,EAAIgJ,UAAU,oBAChCxJ,EChCR,SAAwBA,EAAiBqgB,GAC7C,OAAQA,GACN,IAAK,OACH,OAAOC,EAAUtgB,GAEnB,IAAK,KACH,OAAOugB,EAAqBvgB,GAE9B,IAAK,UACH,OAAOwgB,EAAYxgB,GAErB,QACE,OAAOA,EAEb,CDkBwBygB,CAAcvI,OAAOkE,KAAKlE,OAAO+C,OAAOkF,IAAWE,GAE7DK,EAAqC,mBAAb5E,GAA2BA,EAAWA,EAAW,QACzE6E,EAAkC,mBAAb7E,EAA0BA,EAAWsE,EAIhE,OAFAxf,EAAIqb,KAAKnO,KCrBX,SAAwB9N,EAAiBqgB,GAC7C,OAAQA,GACN,IAAK,OACH,OAAOO,EAAS5gB,GAElB,IAAK,KACH,OAAO6gB,EAAmB7gB,GAE5B,IAAK,UACH,OAAO8gB,EAAY9gB,GAErB,QACE,OAAOA,EAEb,CDOuB+gB,CAAcb,EAAQlgB,EAASwI,EAAKhI,GAAM6f,GAAkBK,EAAgBC,GAEpF7S,IACT,CACF,CAEAsN,IAEJ,CEhDM,SAAU4F,GAAeC,EAAchZ,GAI3C,MAAMiZ,GAFND,GADAA,EAAOA,EAAK3gB,WAAW,KAAO2gB,EAAO,IAAIA,KAC7BE,SAAS,KAAOF,EAAO,GAAGA,MAEAE,SAAS,KAAOF,EAAKlU,MAAM,GAAG,GAAMkU,EAEpE5f,EAASL,IAEf,MAAO,CAACwH,EAAKhI,EAAK4a,KAChB,MAAMgG,EAAY,IAAI3c,EAAI+D,EAAI/H,KAAO,GAAI,qBACnCoE,SAAEA,EAAQuF,OAAEA,GAAWgX,EACvBC,EAAY,CAAC,IAAKH,GAQxB,GANIjZ,IACFoZ,EAAUlF,KAAK,OAAOlU,KACtBoZ,EAAUlF,KAAK,OAAOlU,MAIpBoZ,EAAUlW,SAAStG,GAAW,CAChC,MAAMyc,EAAc,GAAGL,IAAO7W,IAI9B,OAFA/I,EAAOiB,KAAKd,EAAOiJ,OAAO,mBAAmB6W,MAEtC/gB,EAASC,EAAK8gB,EAAa,IACpC,CAEAlG,IAEJ,CCtBA,MAAMmG,GACIC,MAAmB,CACzBC,iBAAiB,EACjBC,cAAc,EACdC,YAAa,GAGPC,UAA6C,IAAIC,IAKzD,QAAAC,GACE,MAAO,IAAKhU,KAAK0T,MACnB,CAKA,eAAAC,GACE,OAAO3T,KAAK0T,MAAMC,eACpB,CAKA,YAAAC,GACE,OAAO5T,KAAK0T,MAAME,YACpB,CAKA,gBAAAK,CAAiBC,GACflU,KAAK0T,MAAMC,gBAAkBO,EAC7BlU,KAAK0T,MAAMG,YAAc9U,KAAK6P,MAC9B5O,KAAKmU,iBACP,CAKA,aAAAC,CAAcC,GACZrU,KAAK0T,MAAME,aAAeS,EAC1BrU,KAAKmU,iBACP,CAKA,WAAAG,CACEC,QAEgCnP,IAA5BmP,EAAQZ,kBACV3T,KAAK0T,MAAMC,gBAAkBY,EAAQZ,sBAEVvO,IAAzBmP,EAAQX,eACV5T,KAAK0T,MAAME,aAAeW,EAAQX,cAEpC5T,KAAK0T,MAAMG,YAAc9U,KAAK6P,MAC9B5O,KAAKmU,iBACP,CAKA,KAAAK,GACExU,KAAK0T,MAAQ,CACXC,iBAAiB,EACjBC,cAAc,EACdC,YAAa,GAEf7T,KAAKmU,iBACP,CAKA,SAAAM,CAAUC,GAIR,OAHA1U,KAAK8T,UAAU/e,IAAI2f,GAGZ,KACL1U,KAAK8T,UAAUa,OAAOD,GAE1B,CAKQ,eAAAP,GACNnU,KAAK8T,UAAUlb,QAAS8b,IACtB,IACEA,EAAS1U,KAAKgU,WAChB,CAAE,MAAO/c,GACPgC,QAAQhC,MAAM,gCAAiCA,EACjD,GAEJ,CAKA,YAAA2d,GACE,MAAO,IACF5U,KAAKgU,WACRa,cAAe7U,KAAK8T,UAAUlI,KAElC,EAIK,MAAMkJ,GAAe,IAAIrB,GCxG1BsB,GAAmB,IAAI/hB,IAG7B,SAASgiB,GAAkB1d,GACzB,MAAM2d,EAASF,GAAiBzhB,IAAIgE,GACpC,OAAK2d,EAEDlW,KAAK6P,MAAQqG,EAAO7I,UANR,MAOd2I,GAAiBJ,OAAOrd,GAEjB,MAGF2d,EAAO9T,KARM,IAStB,CAEA,SAAS+T,GAAkB5d,EAAa6J,GACtC4T,GAAiBthB,IAAI6D,EAAK,CAAE8U,UAAWrN,KAAK6P,MAAOzN,QACrD,CAGA,MAAMgU,GAAuB,gCAEbC,GACdC,EACAC,EACAxb,GAEA,MAAMiK,aAAEA,GAAe,EAAK8C,UAAEA,GAAY,EAAK0O,MAAEA,EAAKpC,KAAEA,EAAIpX,WAAEA,GAAejC,EAEvEvG,EAASL,IAGf,GAAI6Q,GAAgB8C,QAA8B,IAAV0O,EACtC,MAAM,IAAInb,MAAM,2EAGlB,IAAIob,EAAYV,GAAad,WAM7B,OAJAc,GAAaL,UAAWf,IACtB8B,EAAY9B,IAGPpe,MAAOoF,EAAsBhI,EAAqB4a,KACvD,IACE,MAAMmI,IAAuB1R,GAAgB8C,GACvC6O,EAAiBL,EAAexa,MAAkBH,EAAI/H,KAAO,InBClD6a,MAAM,KAEX,ImBAZ,IACGgI,EAAU7B,kBACV6B,EAAU5B,cAEXlZ,EAAI/H,KAAKH,WAAW,WAEnBkI,EAAI/H,KAAKH,WAAW2iB,IACrB,CACA5hB,EAAOiB,KAAKd,EAAOkJ,KAAK,gDAExB,IAmCE,OAlCK6Y,QAeGE,GACJL,EACA,CACEvR,eACA8C,YACA0O,MAAOA,EACP/B,YAAazX,GAAcoX,EAAO,GAAGA,IAAS,GAAGgC,KAAuBS,mBAAmB,QAE7Flb,EACAhI,EACA,OACAa,SAzBIsiB,GACJP,EACA,CACEvR,eACA8C,YACA0O,MAAOA,EACP/B,YAAazX,GAAcoX,EAAO,GAAGA,IAAS,GAAGgC,KAAuBS,mBAAmB,QAE7Flb,EACAhI,EACA,OACAa,GAkBJuhB,GAAaV,eAAc,GAE3B7gB,EAAOiB,KAAKd,EAAOkJ,KAAK,oDAEjBnK,EAASC,EAAKygB,GAAQ,IAAK,IACpC,CAAE,MAAOlc,GAEP,OAAOqW,GACT,CACF,CAGA,IAAKoI,EACH,OAAOpI,IAGT,IAAKmI,EAAoB,CAevB,aAdqBI,GACnBP,EACA,CACEvR,eACA8C,YACA0O,MAAOA,EACP/B,YAAazX,GAAcoX,EAAO,GAAGA,IAAS,GAAGgC,KAAuBS,mBAAmB,QAE7Flb,EACAhI,EACA4a,EACA/Z,EAIJ,CAgBA,aAdqBoiB,GACnBL,EACA,CACEvR,eACA8C,YACA0O,MAAOA,EACP/B,YAAazX,GAAcoX,EAAO,GAAGA,IAAS,GAAGgC,KAAuBS,mBAAmB,QAE7Flb,EACAhI,EACA4a,EACA/Z,EAIJ,CAAE,MAAO0D,GASP,OARA1D,EAAO0D,MACLvD,EAAOgS,IACL,gDAAgDzO,aAAiBmD,MAAQnD,EAAMtC,QAAU6Z,OAAOvX,OAIpG6d,GAAaN,QAENlH,EAAKrW,EACd,EAEJ,CAKA3B,eAAeugB,GACbP,EACAQ,EACApb,EACAhI,EACA4a,EACA/Z,GAEA,MAAMgiB,MAAEA,EAAKQ,sBAAEA,EAAqBvC,YAAEA,GAAgBsC,EAEtD,QAAqB,IAAVP,EAAuB,CAChC,MAAMte,EAAQ,IAAImD,MAAM,qDAIxB,OAFA7G,EAAO0D,MAAMvD,EAAOgS,IAAIzO,EAAMtC,UAEvB2Y,EAAKrW,EACd,CAEA,MAAMV,EAAWmE,EAAInE,SAAW,GAEhChD,EAAOiB,KAAKd,EAAOmJ,MAAM,4BAEzB,IAEE,MAAMwH,EAAW,YAAYkR,IAG7B,OAFmBP,GAAkB3Q,IAGnC9Q,EAAOiB,KAAKd,EAAOmJ,MAAM,gCAClByQ,YAGHgI,EAAG/O,YAAYgP,EAAOhf,GAE5BhD,EAAOiB,KAAKd,EAAOkJ,KAAK,gDACxB8P,EAAMsJ,QAGNd,GAAkB7Q,EAAU,CAAE4R,SAAS,IAEvCnB,GAAaR,YAAY,CAAEX,iBAAiB,IAE5CpgB,EAAOiB,KAAKd,EAAOmJ,MAAM,kCAElByQ,IACT,CAAE,MAAOrW,GAGP,OAFA6d,GAAaN,QAEN0B,GACLjf,EACA8e,IAAyB,EACzBvC,GAAe,GAAG2B,KAAuBS,mBAAmB,OAC5DljB,EACA4a,EACA/Z,EACA,YAEJ,CACF,CAKA+B,eAAeqgB,GACbL,EACAQ,EACApb,EACAhI,EACA4a,EACA/Z,GAEA,MAAMwQ,aAAEA,EAAYwR,MAAEA,EAAKQ,sBAAEA,EAAqBvC,YAAEA,GAAgBsC,EAC9Dvf,EAAWmE,EAAInE,SAAW,GAEhChD,EAAOiB,KAAKd,EAAOmJ,MAAM,4BAEzB,IAEE,MAAMwH,EAAW,YAAYN,KAAgBwR,IAG7C,GAFmBP,GAAkB3Q,GAInC,OADA9Q,EAAOiB,KAAKd,EAAOmJ,MAAM,gCAClByQ,IAGT,MAAM6I,EACHpS,QAAiC,IAAVwR,EAEpBD,EAAG7P,gBAAgBlP,GADnB+e,EAAGtP,iBAAiBuP,EAAOhf,GAajC,aAVM4f,EAEN5iB,EAAOiB,KAAKd,EAAOkJ,KAAK,gDACxB8P,EAAMsJ,QAGNd,GAAkB7Q,EAAU,CAAE4R,SAAS,IAEvC1iB,EAAOiB,KAAKd,EAAOmJ,MAAM,kCAElByQ,GACT,CAAE,MAAOrW,GAGP,OAFA6d,GAAaN,QAEN0B,GACLjf,EACA8e,IAAyB,EACzBvC,GAAe,GAAG2B,KAAuBS,mBAAmB,OAC5DljB,EACA4a,EACA/Z,EACA,YAEJ,CACF,CAKA,SAAS2iB,GACPjf,EACA8e,EACAvC,EACA9gB,EACA4a,EACA/Z,EACA6iB,GAGA,GAwBF,SAAqBnf,GACnB,OAAiB,OAAVA,GAAmC,iBAAVA,GAAsB,aAAcA,QAA4BmO,IAAnBnO,EAAMb,QACrF,CA1BMigB,CAAYpf,KACd1D,EAAOiB,KAAKd,EAAOgS,IAAI,GAAG0Q,qCAEtBL,GAAuB,CACzB,MAAMO,EAAkB,GAAG9C,IAI3B,OAFAjgB,EAAOiB,KAAKd,EAAOiJ,OAAO,mBAAmB2Z,MAEtC7jB,EAASC,EAAK4jB,EAAiB,IACxC,CAIF,MAAM7W,EAAexI,aAAiBmD,MAAQnD,EAAMtC,QAAU6Z,OAAOvX,GAKrE,OAHA1D,EAAOiB,KAAKd,EAAOgS,IAAI,GAAG0Q,4BAAwC3W,MAG3D6N,EAAKrW,EACd,UC/TgBsf,KACd,MAAMC,EAAMC,IAKZ,OAHAD,EAAIE,IAAID,EAAQzf,QAChBwf,EAAIE,IAAID,EAAQE,WAAW,CAAEC,UAAU,KAEhCJ,CACT,CAEA,MAAMK,GAAiBN,KC6LvB,SAASO,GACPrhB,EACAshB,EACAtX,GAEA,OAAOsX,EAAUthB,GACb,CAAEyS,SAAS,GACX,CAAEA,SAAS,EAAOjR,MAAOwI,EAC/B,CAkGM,SAAUuX,GACdxN,GAEA,MAAMyN,EAnGR,SAAwBzN,GA6FtB,MA5FwC,CACtCsN,GACEtN,EACC0N,GAA0C,iBAANA,GAAwB,OAANA,EACvD,sCAEFJ,GACEtN,EAAOrP,aACN/G,GAAyC,iBAATA,GAAqBA,EAAKiU,OAAS,EACpE,4DAEFyP,GACEtN,EAAO2N,eACNxkB,QACSyS,IAARzS,GAAqC,iBAARA,GAAoBA,EAAI0U,OAAS,EAChE,0EAEFyP,GACEtN,EAAO7I,aACN4B,QACQ6C,IAAP7C,GAAmC,iBAAPA,GAAmBA,EAAK,EACtD,uEAEFuU,GACEtN,EAAO+L,MACNhT,QACQ6C,IAAP7C,GAAmC,iBAAPA,GAAmBA,EAAK,EACtD,gEAEFuU,GACEtN,EAAO4N,cACN1L,QACStG,IAARsG,GAAqC,iBAARA,GAAoBA,EAAM,EACzD,wEAEFoL,GACEtN,EAAO6N,kBAELC,IAKA,QAAkBlS,IAAdkS,EACF,OAAO,EAGT,GAAkB,OAAdA,EACF,OAAO,EAGT,GAAyB,kBAAdA,GAAgD,iBAAdA,EAC3C,OAAO,EAIT,IAAkB,IAAdA,IAA2C,IAArB9N,EAAO3C,UAC/B,OAAO,EAGT,GAAyB,iBAAdyQ,GAAwC,OAAdA,EAAoB,CACvD,QAC+BlS,IAA7BkS,EAAUC,gBAC0B,kBAA7BD,EAAUC,eAEjB,OAAO,EAGT,QAC2CnS,IAAzCkS,EAAUE,4BACsC,kBAAzCF,EAAUE,2BAEjB,OAAO,EAGT,IACuB,IAArBhO,EAAO3C,aACuB,IAA7ByQ,EAAUC,iBACgC,IAAzCD,EAAUE,4BAEZ,OAAO,CAEX,CAEA,OAAO,GAET,kIAI8B5R,KAAMkB,IAAYA,EAAOoB,UAEnC,CAAEA,SAAS,EACrC,CAK2BuP,CAAejO,GAExC,IAAKyN,EAAiB/O,QACpB,MAAM,IAAI9N,MAAM6c,EAAiBhgB,OAInC,MAAM0J,EAAe6I,EAAO+L,OAAS/L,EAAO7I,cAEtC+W,iBACJA,GAAmB,EAAIN,cACvBA,EAAgB,IAAcnd,qBAC9BA,GAAuB,EAAK0d,eAC5BA,GAAiB,EAAI9Q,UACrBA,GAAY,EAAKwQ,kBACjBA,GAAoB,EAAKtT,aACzBA,GAAe,EAAK6T,OACpBA,EAAS,OAAMC,QACfA,GAAU,EAAIC,cACdA,GAAgB,EAAIC,eACpBA,EAAiB,UAAShc,WAC1BA,GAAa,EAAKJ,oBAClBA,EAAsB2I,QAAQC,IAAIyT,iBAChCxO,GAAU,CAAA,EAEd,IAAIyO,EAAgBJ,EAGlBI,GADoB,IAAlBA,EACc,CACdC,YAAa,GAAG1O,EAAOrP,mBACvByd,OAAQ,YAEkB,iBAAZC,GACA,CACdK,YACiC,iBAAxBL,EAAQK,YACXL,EAAQK,YAAY7lB,QAAQ,iBAAkBmX,EAAOrP,cACrD,GAAGqP,EAAOrP,mBAChByd,OAAQC,EAAQD,QAAU,YAM9B,IAAIO,EAAuBR,EAEG,kBAAnBA,GACoB,IAAzBQ,IACFA,EAAuB,CAAA,GAEU,iBAAnBR,IAChBQ,GAAuB,GAGzB,MAAMC,EACJ,+CACF,IAAIC,EAiBJ,OAdEA,GADoB,IAAlBP,KAEyB,IAAlBA,EACa,CACpBQ,oBAAqBF,EACrBtS,SAAS,GAGW,CACpBwS,oBACER,EAAcQ,qBAAuBF,EACvCtS,QAASgS,EAAchS,UAAW,IAI/B,CACL4R,mBACAN,gBACAnd,uBACA0d,eAAgBQ,EAChBpU,eACA8C,YACA+Q,SACAC,QAASI,EACTH,cAAeO,EACfN,iBACAhc,aACAJ,sBACAgF,eACA0W,uBACG7N,EAEP,CA+FA,SAAS+O,GAAUzC,GACjB,MAAM3b,aACJA,EAAY4J,aACZA,EAAYoT,eACZA,EAActQ,UACdA,EAASlG,aACTA,EAAY4U,MACZA,EAAKmC,iBACLA,EAAgBN,cAChBA,EAAand,qBACbA,EAAoB4d,QACpBA,EAAOE,eACPA,EAAchc,WACdA,EAAUJ,oBACVA,GACEma,GAAW,CAAA,EAGf,IAAI0C,GAAiB,EACPlU,QAAQ4L,MAEtB,MAAMuI,EAAkBlD,GAAS5U,EAEjC,MAAO,CACLvN,KAAM,cACNslB,MAAO,QACPlP,OAASA,IACP,MAKMyN,EA7HZ,SACEzN,GAoBA,MAlBwC,CACtCsN,GACEtN,EAAO2J,KACNA,GACiB,iBAATA,GAAqBA,EAAK9L,OAAS,GAAc,MAAT8L,EACjD,2CAEF2D,GACEtN,EAAOmP,KACNA,QACUvT,IAATuT,GACiB,iBAATA,GAAqBA,EAAO,GAAKA,EAAO,MAClD,sDAI8B/S,KAAMkB,IAAYA,EAAOoB,UAEnC,CAAEA,SAAS,EACrC,CAuG+B0Q,CAL8B,CACrDzF,KAAM3J,EAAO2J,MAAQ,MAClB3J,EAAOX,SAKZ,IAAKoO,EAAiB/O,QACpB,MAAM,IAAI9N,MAAM6c,EAAiBhgB,OAkBnC,OAfAuS,EAAOC,sBAAwB,CAC7B0N,iBACAxW,aAAc8X,EACd1U,eACAhI,cAGEA,IACFyN,EAAO2J,KAAO,OAAOhZ,KAOhBqP,GAETqP,mBAAoBvjB,MAAOwjB,EAAMC,KAC/B,MAAMjS,EAAmC,CAAEgS,OAAM5S,KAAM,IAYvD,OAVIsS,IACFA,GAAiB,EAEjB1R,EAAOZ,KAAKmI,KAAK,CACf2K,IAAK,SACLC,SAAU,OACVC,SAAU,GAAGC,KAAKC,cAIftS,GAETuS,gBAAkBxQ,IAChB,IAAIsK,EAAOtK,EAAOW,OAAO2J,KAEpBA,EAAKE,SAAS,OACjBF,GAAQ,KAGV,MAAMC,EAA2BD,EAAK7gB,UAAU,EAAG6gB,EAAKmG,YAAY,MAIpE,GAFAzQ,EAAO0Q,YAAY7C,IAAIxD,GAAeC,EAAMhZ,IAExCgd,EAAgB,CAClB,MAAMqC,EAAc,IAAI7iB,IAAIwgB,GAAgBljB,KAEtCwlB,EAAwB,CAC5BljB,QAAS,CACPtC,KAAMulB,EACN/d,QAAS0b,EACTrgB,OAAQqgB,EAAe9kB,QACrB,iCACA,SAGJsO,aAAc8X,EACdlD,MAAOkD,EACP1U,eACA9J,uBACA8B,aACAJ,oBACEA,GAAuB2I,QAAQC,IAAIyT,iBAGjCf,EA5J4B,CACtCH,IAFyBtN,EA6JwBiQ,GA1JxCljB,QACNA,GACoB,iBAAZA,GACiB,iBAAjBA,EAAQtC,MACY,iBAApBsC,EAAQkF,SACW,iBAAnBlF,EAAQO,OACjB,6CAEFggB,GACEtN,EAAO7I,aACN4B,QACQ6C,IAAP7C,GAAmC,iBAAPA,GAAmBA,EAAK,EACtD,4DAEFuU,GACEtN,EAAO+L,MACNhT,QACQ6C,IAAP7C,GAAmC,iBAAPA,GAAmBA,EAAK,EACtD,qDAEFuU,GACEtN,EAAO7N,oBACNxF,QACWiP,IAAVjP,GAAwC,iBAAVA,EAChC,2DAI8ByP,KAAMkB,IAAYA,EAAOoB,UAEnC,CAAEA,SAAS,GA8H7B,IAAK+O,EAAiB/O,QACpB,MAAM,IAAI9N,MAAM6c,EAAiBhgB,OAGnC,MAAMqe,EAAK,IAAI9R,EAAM2T,EAAgBsC,GAErC,GAAI/B,EAAkB,CACpB,IAAIhM,GAAO0L,IAEN1L,GAAOnN,OAAOC,MAAMkN,IAAQA,EAAM,KACrCA,EAAM,KAGR,MAAMgO,EAAgC,CACpCrM,UAAWxE,EACX6C,OAGIuL,EAxIhB,SAAkCzN,GAWhC,MAVwC,CACtCsN,GACEtN,EAAOkC,IACNA,GAAsC,iBAARA,GAAoBA,EAAM,EACzD,8CAI8B9F,KAAMkB,IAAYA,EAAOoB,UAEnC,CAAEA,SAAS,EACrC,CA4HmCyR,CAAyBD,GAElD,IAAKzC,EAAiB/O,QACpB,MAAM,IAAI9N,MAAM6c,EAAiBhgB,OAGnC4R,EAAO0Q,YAAY7C,IAAItJ,EAAesM,GACxC,CAEA,MAAME,EAAgB,IAAIxnB,OAAO,MAAM+gB,UAGvCtK,EAAO0Q,YAAY7C,IACjBtB,GAAewE,EAAetE,EAAI9X,OAAO0C,OAAO,CAAA,EAAI4V,EAAS,CAC3DP,MAAOkD,EACP9X,aAAc8X,MAIlB5P,EAAO0Q,YAAY7C,IACjBmD,EAAoB,CAElB7f,QAASmd,EACTxc,YAAa,CACX,SACA,mBACA,KACAyY,GAEFnZ,uBACAC,MAAOob,EACPnb,kBAKJ,MAAM2f,EAAoB,CACxBpnB,EACAsQ,EACA/L,EACA8iB,EACA5W,KAEA,MAAM/M,EAAgB,CAAEa,SAEpB8iB,IACF3jB,EAAS2jB,QAAUA,GAGjB5W,IACF/M,EAAS+M,KAAOA,GAGlBzQ,EAAIsQ,OAAOA,GAAQhM,KAAKZ,GAAUtD,OAI9BknB,EAA6B,CACjCtnB,EACAuE,EACAhB,KAGA4S,EAAOW,OAAOjW,OAAO0D,MACnB,GAAGhB,4BACHgB,GAIF,MAAMkR,EAAYpF,EAAkB9L,GAGpC,GAAIA,EAAM0R,eAAgB,CACxB,MAAMsR,EAAoBhjB,EAAM0R,eAEhCE,EAAOW,OAAOjW,OAAOiB,KACnB,8BAA8BylB,EAAkB9W,UAAU8W,EAAkB7W,uBAG9E,MAAMJ,EAASiX,EAAkBjX,QAAU,IACrCG,EAAO8W,EAAkB9W,KACzBC,EAAsB6W,EAAkB7W,oBACxC2W,EAAUE,EAAkBtlB,QAElCmlB,EAAkBpnB,EAAKsQ,EAAQI,EAAqB2W,EAAS5W,EAC/D,KAAO,CAML,IAAIH,EACAvD,EACAya,EAEJ,OATArR,EAAOW,OAAOjW,OAAOiB,KACnB,8BAA8B2T,EAAUhF,UAAUgF,EAAU/E,uBAQtD+E,EAAUhF,MAChB,IAAK,kBACHH,EAAS,IACTvD,EACgB,aAAdxJ,EACI,gCACA,kBACNikB,EACgB,aAAdjkB,EAA2B,cAAgB,kBAC7C,MACF,IAAK,eACH+M,EAAS,IACTvD,EAAe,eACfya,EAAY,eACZ,MACF,IAAK,YACHlX,EAAS,IACTvD,EAAe,mBACfya,EAAY,YACZ,MACF,QACElX,EAAS,IACTvD,EAAe,wBACfya,EAAY/R,EAAUhF,KAG1B,MAAM4W,EACU,aAAd9jB,GAA0C,gBAAdikB,EACxB,uFACc,YAAdjkB,GAAyC,oBAAdikB,EACzB,iFACA/R,EAAU/E,oBAElB0W,EAAkBpnB,EAAKsQ,EAAQvD,EAAcsa,EAASG,EACxD,CAEA,OAAO,MAGHrD,EAAiBN,KACvBM,EAAelV,KAAK,cAAerM,MAAOoF,EAAKhI,EAAK4a,KAClD,MAAMnX,MAAEA,EAAKF,UAAEA,GAAcyE,EAAIlE,KAEjC,GAAKL,GAWL,GAJA0S,EAAOW,OAAOjW,OAAOiB,KACnB,0BAA0ByB,cAGV,aAAdA,EAA0B,CA6B5B,UA5B0Bqf,EACvBhiB,IACC,6BACA,CACE,eAAgB,mBAChB6O,OAAQ,mBACRgY,cAAe,UAAUhkB,MAE3B,GAEDkK,KAAK/K,MAAOc,GACiC,iBAAjCA,EAAS+K,MAAMiZ,MAAMC,SAC9B/E,EAAG3Z,oBAAsBxF,EAEzB0S,EAAOW,OAAOjW,OAAOiB,KACnB,yDAAyD4B,EAAS+K,KAAKiZ,KAAKC,WAGvEjkB,IAGT0jB,EAAkBpnB,EAAK,IAAK,4BACrB,OAER4N,MAAOrJ,GACN+iB,EAA2BtnB,EAAKuE,EAAO,aAIzC,OAGFxE,EAASC,EAAK,IAAK,IACrB,MAAO,GAAkB,YAAduD,EAAyB,CAkClC,UAjC0Bqf,EACvBhiB,IACC,YACA,CACE,eAAgB,mBAChB6O,OAAQ,mBACRmY,MAAOnkB,IAET,GAEDkK,KAAMjK,GACDA,EAAS+K,MAAMoZ,OAAOlT,QACxBiO,EAAG3Z,yBAAsByJ,EAEzByD,EAAOW,OAAOjW,OAAOiB,KACnB,4CAA4C4B,EAAS+K,KAAKoZ,MAAMlT,kBAGlE3U,EAAIG,UACF,aACAuD,EAASG,QAAQ,eAAiB,IAG7BH,IAGT0jB,EAAkBpnB,EAAK,IAAK,4BACrB,OAER4N,MAAOrJ,GACN+iB,EAA2BtnB,EAAKuE,EAAO,YAIzC,OAGFxE,EAASC,EAAK,IAAK,IACrB,OAnFEonB,EAAkBpnB,EAAK,IAAK,uBAsFhCmW,EAAO0Q,YAAY7C,IAAIG,GAEvB,MAAMtN,GACQ,IAAZsO,EACI,IAAIpI,GACFtV,EACAqD,OAAO0C,OACL,CAAEsa,UAAWzC,GACM,iBAAZF,EACH,CACE9H,cAAe8H,EAAQD,OACvB5H,gBAAiB6H,EAAQK,kBAE3B9S,SAGRA,EAON,OALqB,IAAIwD,EAAcC,EAAQ,CAC7CU,cACArP,MAAOob,IAGF,KACLzM,EAAO0Q,YAAY7C,IACjBxE,GACGvf,GAGQA,EAAI6a,MAAM,KAAK,GAAG6F,SAAS,cAEpC,CAACjd,EAAUsE,IACF0P,OAAOkE,KACZvc,EACEynB,EACA9e,EAAInE,QAAQtC,MAAQ,GACpBqhB,EAAG1O,UAAUxQ,EAAUyQ,OAOrC,CA7bN,IAA6B2C,GAgc7B"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{createHash as e}from"crypto";import{statSync as r,writeFileSync as t,readdirSync as n,readFileSync as o}from"fs";import i from"path";function s(e,r,t){const o=n(e,{withFileTypes:!0}),c=[];for(const n of o){const o=i.join(e,n.name),a=i.relative(r,o).replace(/\\/g,"/");n.isDirectory()?c.push(...s(o,r,t)):n.isFile()&&a!==t&&c.push(o)}return c}function c(r){const t=o(r);return e("sha256").update(t).digest("hex")}function a(n){return{name:"pp-dev-version",apply:"build",enforce:"post",closeBundle(){if(!1===n.enabled)return;const{outDir:o,versionFileTemplate:a,packageVersion:p}=n,u=i.resolve(process.cwd(),o);if(!r(u,{throwIfNoEntry:!1})?.isDirectory())return;const f=(new Date).toISOString(),l=function(e,r,t){return e.replace(/\{packageversion\}/g,r).replace(/\{currentDate\}/g,t)}(a??"VERSION-v{packageversion}-{currentDate}.json",p,f.replace(/:/g,"-")),g=s(u,u,l),m={};for(const e of g){m[i.relative(u,e).replace(/\\/g,"/")]=c(e)}const v=function(r){const t=Object.keys(r).sort().map(e=>r[e]).join("");return e("sha256").update(t).digest("hex")}(m),d={version:`v${p}`,date:f,checksum:v,files:m},h=i.join(u,l);t(h,JSON.stringify(d,null,2),"utf-8")}}}export{a as versionPlugin};
|
|
2
|
-
//# sourceMappingURL=version-plugin-B1n39tE6.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"version-plugin-B1n39tE6.js","sources":["../../../../src/plugins/version-plugin.ts"],"sourcesContent":[null],"names":["walkDir","dir","baseDir","excludeFile","entries","readdirSync","withFileTypes","files","entry","fullPath","path","join","name","relativePath","relative","replace","isDirectory","push","isFile","sha256OfContent","filePath","content","readFileSync","createHash","update","digest","versionPlugin","config","apply","enforce","closeBundle","enabled","outDir","versionFileTemplate","packageVersion","outDirResolved","resolve","process","cwd","statSync","throwIfNoEntry","manifestDate","Date","toISOString","versionFileName","template","currentDate","resolveVersionFileName","allPaths","checksum","hashesConcatenated","Object","keys","sort","map","p","computeChecksum","manifest","version","date","manifestPath","writeFileSync","JSON","stringify"],"mappings":"4IAkBA,SAASA,EAAQC,EAAaC,EAAiBC,GAC7C,MAAMC,EAAUC,EAAYJ,EAAK,CAAEK,eAAe,IAC5CC,EAAkB,GAExB,IAAK,MAAMC,KAASJ,EAAS,CAC3B,MAAMK,EAAWC,EAAKC,KAAKV,EAAKO,EAAMI,MAChCC,EAAeH,EAAKI,SAASZ,EAASO,GAAUM,QAAQ,MAAO,KAEjEP,EAAMQ,cACRT,EAAMU,QAAQjB,EAAQS,EAAUP,EAASC,IAChCK,EAAMU,UAAYL,IAAiBV,GAC5CI,EAAMU,KAAKR,EAEf,CAEA,OAAOF,CACT,CAEA,SAASY,EAAgBC,GACvB,MAAMC,EAAUC,EAAaF,GAE7B,OAAOG,EAAW,UAAUC,OAAOH,GAASI,OAAO,MACrD,CAmBM,SAAUC,EAAcC,GAC5B,MAAO,CACLf,KAAM,iBACNgB,MAAO,QACPC,QAAS,OAET,WAAAC,GACE,IAAuB,IAAnBH,EAAOI,QACT,OAGF,MAAMC,OAAEA,EAAMC,oBAAEA,EAAmBC,eAAEA,GAAmBP,EAClDQ,EAAiBzB,EAAK0B,QAAQC,QAAQC,MAAON,GAEnD,IAAKO,EAASJ,EAAgB,CAAEK,gBAAgB,KAAUxB,cACxD,OAGF,MACMyB,GADM,IAAIC,MACSC,cAEnBC,EA/BZ,SACEC,EACAX,EACAY,GAEA,OAAOD,EACJ9B,QAAQ,sBAAuBmB,GAC/BnB,QAAQ,mBAAoB+B,EACjC,CAuB8BC,CACtBd,GAAuB,+CACvBC,EAHkBO,EAAa1B,QAAQ,KAAM,MAOzCiC,EAAWhD,EAAQmC,EAAgBA,EAAgBS,GACnDrC,EAAgC,CAAA,EAEtC,IAAK,MAAMa,KAAY4B,EAAU,CAG/BzC,EAFqBG,EAAKI,SAASqB,EAAgBf,GAAUL,QAAQ,MAAO,MAEtDI,EAAgBC,EACxC,CAEA,MAAM6B,EArDZ,SAAyB1C,GACvB,MACM2C,EADcC,OAAOC,KAAK7C,GAAO8C,OACAC,IAAKC,GAAMhD,EAAMgD,IAAI5C,KAAK,IAEjE,OAAOY,EAAW,UAAUC,OAAO0B,GAAoBzB,OAAO,MAChE,CAgDuB+B,CAAgBjD,GAE3BkD,EAA4B,CAChCC,QAAS,IAAIxB,IACbyB,KAAMlB,EACNQ,WACA1C,SAGIqD,EAAelD,EAAKC,KAAKwB,EAAgBS,GAE/CiB,EAAcD,EAAcE,KAAKC,UAAUN,EAAU,KAAM,GAAI,QACjE,EAEJ"}
|