eslint-plugin-zappie 0.4.1 → 0.4.2

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 CHANGED
@@ -1,5 +1,15 @@
1
1
  # eslint-plugin-zappie
2
2
 
3
+ ## 0.4.2
4
+
5
+ ### Patch Changes
6
+
7
+ - a5bd08f: `@zappie/sdk/account` reads the signed-in shopper's account through the same endpoint and session as `createCustomer`. `createAccount()` returns `wallets()`, `cards()`, `removeCard(id)`, `payments({ limit, cursor })` and `payment(id)`. A call the shopper's sign-in doesn't cover rejects with `ScopeRequiredError`, which names the scope, and a card or payment that isn't theirs rejects with `NotFoundError`. Both are a `CustomerError`. `accountsUrl(path, environment, { returnTo })` builds a link to a page on the Zappie accounts portal, `/account`, `/account/profile`, `/account/payouts`, `/account/withdraw` or `/account/activity`, with the page to come back to. It refuses a path the way `checkoutUrl` does. `@zappie/sdk/testing` adds `mockAccountFetch()` and `accountFixtures`, which answer the account endpoints as the API does, including a removed card and a missing scope.
8
+
9
+ `@zappie/foundations/account` adds headless account parts that load only on account pages: `Wallets`, `Cards`, `RemoveCard` (a confirmation before a card is removed), `Payments`, `Receipt` and `ScopeMissing`, which offers to sign in again. `SignInOptions.scopes` accepts `wallet`, `cards` and `payments:read`.
10
+
11
+ `no-offsite-navigation` trusts the staging accounts portal and `accountsUrl` from `@zappie/sdk/account`, and `no-direct-api` points a written-out accounts address to `accountsUrl`.
12
+
3
13
  ## 0.4.1
4
14
 
5
15
  ### Patch Changes
package/dist/index.d.ts CHANGED
@@ -110,9 +110,10 @@ declare const verifyMarkers: TSESLint.RuleModule<"marker", [], unknown, TSESLint
110
110
 
111
111
  /**
112
112
  * Origins outside the site that a storefront may send the shopper to. They match what @zappie/sdk trusts: its
113
- * checkout origin check and the CSP form-action list. A test in @zappie/check compares them.
113
+ * checkout origin check, the accounts portal accountsUrl builds and the CSP form-action list. A test in
114
+ * @zappie/check compares them.
114
115
  */
115
- declare const TRUSTED_NAVIGATION_ORIGINS: readonly ["https://checkout.zappie.ai", "https://checkout.stg.zappie.ai", "https://accounts.zappie.ai"];
116
+ declare const TRUSTED_NAVIGATION_ORIGINS: readonly ["https://checkout.zappie.ai", "https://checkout.stg.zappie.ai", "https://accounts.zappie.ai", "https://accounts.stg.zappie.ai"];
116
117
 
117
118
  /**
118
119
  * The rules that stop code from running or leaving the site without review. zappie check runs them as errors on every
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
- import at from"@typescript-eslint/parser";import st from"eslint-plugin-jsx-a11y";import pr from"eslint-plugin-react-hooks";import{minimatch as ut}from"minimatch";import{ESLintUtils as pt}from"@typescript-eslint/utils";var y=pt.RuleCreator(e=>`https://docs.zappie.ai/lint/${e}`);import{minimatch as ct}from"minimatch";var lt=/(?:api|accounts|checkout|edge)\.zappie\.ai|\/storefront\/v1|\/customer\/graphql/i,mt=/googletagmanager\.com|google-analytics\.com|connect\.facebook\.net|analytics\.tiktok\.com|static\.hotjar\.com|cdn\.segment\.com|plausible\.io|clarity\.ms/i,pe=/checkout\.paystack\.com|flutterwave|(?:^|\.)stripe\.com/i;function S(e){if(e?.type==="Literal"&&typeof e.value=="string")return e.value;if(e?.type==="TemplateLiteral")return e.quasis.map(t=>t.value.cooked??t.value.raw).join("")}function f(e){return!e.computed&&e.property.type==="Identifier"?e.property.name:S(e.property)}function E(e){return e.type==="TSAsExpression"||e.type==="TSTypeAssertion"||e.type==="TSNonNullExpression"?E(e.expression):e}function T(e,t,i){for(let r=e.getScope(t);r;r=r.upper){let n=r.set.get(i);if(n)return n}}function g(e,t){return e.attributes.find(i=>i.type==="JSXAttribute"&&i.name.type==="JSXIdentifier"&&i.name.name.toLowerCase()===t.toLowerCase())}function h(e){if(e?.value){if(e.value.type==="Literal")return typeof e.value.value=="string"?e.value.value:void 0;if(e.value.type==="JSXExpressionContainer")return S(e.value.expression)}}var D=e=>lt.test(e),O=e=>mt.test(e),ce=e=>e==="@zappie/sdk/internal"||e.startsWith("@zappie/sdk/internal/");function C(e,t){let i=e.replaceAll("\\","/");return t.some(r=>ct(i,r,{matchBase:!0}))}var q="{_index,index,home,menu,item,items,category,categories,catalogue,collection,collections,product,products}",F="{js,jsx,ts,tsx}",ft=[`**/app/root.${F}`,`**/app/routes/${q}.${F}`,`**/app/routes/${q}.*.${F}`,`**/app/routes/${q}/**/*.${F}`],dt=new Set(["loader","headers","middleware","unstable_middleware"]),yt=new Set(["getCustomer","zappieFetch","getSession","requireCustomer","openSealedValue"]),le=/session/i,St=new Set(["cookie","authorization"]),me=/\/_zappie\/(?:session|api\/)/,ue=e=>e.parent?.type==="Program"||e.parent?.type==="ExportNamedDeclaration";function gt(e){if(e.type==="FunctionDeclaration"&&ue(e))return e.id?.name;if(e.type==="VariableDeclarator"&&e.id.type==="Identifier"&&ue(e.parent))return e.id.name}function de(e,t){return T(e,t,t.name)?.defs[0]}function Et(e,t){if(t.type==="MemberExpression")return f(t)==="headers";if(t.type!=="Identifier")return!1;if(t.name==="headers")return!0;let i=de(e,t);if(!i)return!1;let r=i.name;for(;r.parent?.type==="AssignmentPattern";)r=r.parent;return r.parent?.type==="Property"&&r.parent.value===r&&!r.parent.computed&&r.parent.key.type==="Identifier"&&r.parent.key.name==="headers"?!0:i.node.type==="VariableDeclarator"&&i.node.id===i.name&&i.node.init?.type==="MemberExpression"&&f(i.node.init)==="headers"}var ht=e=>e?.type==="TSTypeReference"&&e.typeName.type==="Identifier"&&e.typeName.name.endsWith("SessionStore"),fe=e=>e?.type==="CallExpression"&&e.callee.type==="Identifier"&&/SessionStore$/.test(e.callee.name);function Tt(e,t){if(fe(t))return!0;if(t.type==="MemberExpression")return le.test(f(t)??"");if(t.type!=="Identifier")return!1;if(le.test(t.name))return!0;let i=de(e,t);if(!i)return!1;let r=i.name;return ht(r.typeAnnotation?.typeAnnotation)||i.node.type==="VariableDeclarator"&&i.node.id===r&&fe(i.node.init)}function bt(e){return e.callee.type==="Identifier"?e.callee.name:e.callee.type==="MemberExpression"?f(e.callee):void 0}var ye=y({name:"cacheable-menu-routes",meta:{type:"suggestion",docs:{description:"Keep the customer's session out of menu page loaders, so shared caches can keep those pages."},schema:[{type:"object",properties:{routes:{type:"array",items:{type:"string"}}},additionalProperties:!1}],messages:{sessionRead:"This menu page reads the customer's session on the server, so no shared cache can keep it. Show customer details in the browser with useCustomer() from @zappie/sdk/customer/react."}},defaultOptions:[{}],create(e,[t]){let i=e.filename.replaceAll("\\","/");if(!(t.routes??ft).some(o=>ut(i,o,{dot:!0})))return{};let r=o=>e.sourceCode.getAncestors(o).some(s=>dt.has(gt(s)??"")),n=o=>{r(o)&&e.report({node:o,messageId:"sessionRead"})};return{CallExpression(o){let s=bt(o);if(s&&yt.has(s)){n(o);return}if(s!=="get"||o.callee.type!=="MemberExpression")return;let p=o.callee.object,a=S(o.arguments[0]??null)?.toLowerCase();(a!==void 0&&St.has(a)&&Et(e.sourceCode,p)||Tt(e.sourceCode,p))&&n(o)},Literal(o){typeof o.value=="string"&&me.test(o.value)&&n(o)},TemplateLiteral(o){me.test(S(o)??"")&&n(o)}}}});var xt=/^(cart|basket|bag)(Items|Lines|Count|Total)?$/i,vt=/cart|basket|bag/i;function B(e){if(e.type==="Identifier")return e.name;if(e.type==="MemberExpression"&&e.property.type==="Identifier")return e.property.name}function It(e){return e.type==="Identifier"?e.name:e.type==="ArrayPattern"&&e.elements[0]?.type==="Identifier"?e.elements[0].name:void 0}function kt(e){let t=B(e.callee)==="useReducer"?e.arguments[1]:e.arguments[0];return!!(t&&t.type!=="SpreadElement"&&(t.type==="ArrayExpression"||t.type==="Literal"&&typeof t.value=="number"))}var Se=y({name:"cart-via-sdk",meta:{type:"problem",docs:{description:"Keep your cart state in the SDK."},schema:[],messages:{cart:"Use useCart(), useCartLine() or the SDK client cart. Keep cart state and storage in the SDK."}},defaultOptions:[],create(e){return{CallExpression(t){let i=B(t.callee),r=t.arguments[0];["getItem","setItem","removeItem","open"].includes(i??"")&&r?.type==="Literal"&&typeof r.value=="string"&&vt.test(r.value)&&e.report({node:t,messageId:"cart"})},VariableDeclarator(t){if(t.init?.type!=="CallExpression")return;let i=It(t.id),r=B(t.init.callee);i&&xt.test(i)&&["useState","useReducer","createContext"].includes(r??"")&&kt(t.init)&&e.report({node:t,messageId:"cart"}),i&&/cart/i.test(i)&&["create","createStore","atom"].includes(r??"")&&e.report({node:t,messageId:"cart"})}}}});var wt=new Set(["cc-number","cc-exp","cc-csc","cc-name"]),ge=/card.?number|cvv|cvc|expiry/i;function jt(e){return e.startsWith("@paystack/")||e==="react-paystack"||e==="flutterwave-react-v3"||e.startsWith("@stripe/")}var Ee=y({name:"checkout-via-sdk",meta:{type:"problem",docs:{description:"Open checkout through the Zappie SDK."},schema:[],messages:{checkout:"Use createCheckout().open() from @zappie/sdk/checkout. Let checkout collect payment details."}},defaultOptions:[],create(e){return{ImportDeclaration(t){jt(t.source.value)&&e.report({node:t.source,messageId:"checkout"})},JSXOpeningElement(t){let i=t.name.type==="JSXIdentifier"?t.name.name.toLowerCase():"",r=h(g(t,"autocomplete")),n=h(g(t,"name")),o=h(g(t,"id")),s=h(g(t,i==="iframe"?"src":"href")),p=i==="input"&&(r!==void 0&&wt.has(r.toLowerCase())||n!==void 0&&ge.test(n)||o!==void 0&&ge.test(o)),a=(i==="iframe"||i==="a")&&s!==void 0&&pe.test(s);(p||a)&&e.report({node:t,messageId:"checkout"})}}}});function Ct(e){let t=e;for(;t?.parent;){let i=t.parent;if((i.type==="ArrowFunctionExpression"||i.type==="FunctionExpression")&&i.parent?.type==="CallExpression"&&i.parent.callee.type==="MemberExpression"&&i.parent.callee.property.type==="Identifier"&&i.parent.callee.property.name==="map")return i;t=i}}function Lt(e,t){let i=e.getText(t.parent);if(/\.slice\(\s*0\s*,\s*1\s*\)\.map/.test(i))return!0;let r=t.params[1];return r?.type!=="Identifier"?!1:new RegExp(`${r.name}\\s*(?:={2,3}\\s*0|<\\s*1)`).test(e.getText(t))}var he=y({name:"image-priority",meta:{type:"problem",docs:{description:"Reserve priority for the first phone screen."},schema:[],messages:{mapped:"Remove priority from repeated images or limit it to the first.",routeLimit:"Keep no more than two priority images in a route."}},defaultOptions:[],create(e){let t=[];return{JSXOpeningElement(i){let r=g(i,"priority"),n=r?.value?.type==="JSXExpressionContainer"&&r.value.expression.type==="Literal"&&r.value.expression.value===!1;if(i.name.type!=="JSXIdentifier"||i.name.name!=="Image"||!r||n)return;t.push(i);let o=Ct(i);o&&!Lt(e.sourceCode,o)&&e.report({node:r,messageId:"mapped"})},"Program:exit"(){if(/(?:^|\/)routes?\/[^/]+\.[jt]sx$/.test(e.filename.replaceAll("\\","/"))&&t.length>2)for(let i of t.slice(2))e.report({node:i,messageId:"routeLimit"})}}}});function Nt(e){let t=e?.value?.type==="JSXExpressionContainer"?e.value.expression:void 0;if(t?.type==="CallExpression"&&t.callee.type==="Identifier"&&t.callee.name==="itemHref")return!0;let i=h(e);return i!==void 0&&/^\/item(?:\/|$)/.test(i)}var Te=y({name:"item-link-prefetch",meta:{type:"problem",docs:{description:"Prefetch item routes before shoppers tap."},schema:[],messages:{prefetch:'Add prefetch="viewport" so this item route is ready to tap.'}},defaultOptions:[],create(e){let t=new Set;return{ImportDeclaration(i){if(["react-router","react-router-dom"].includes(i.source.value))for(let r of i.specifiers)r.type==="ImportSpecifier"&&r.imported.type==="Identifier"&&["Link","NavLink"].includes(r.imported.name)&&t.add(r.local.name)},JSXOpeningElement(i){i.name.type==="JSXIdentifier"&&t.has(i.name.name)&&Nt(g(i,"to"))&&!g(i,"prefetch")&&e.report({node:i,messageId:"prefetch"})}}}});var Rt=["**/*.server.*","**/server/**"],K=/otp|verify.?code|access.?token|refresh.?token|id.?token/i,be=new Set(["localStorage","sessionStorage"]),Mt=new Set(["window","globalThis","self"]);function xe(e){return e.type==="Identifier"?be.has(e.name):e.type==="MemberExpression"&&!e.computed&&e.object.type==="Identifier"&&Mt.has(e.object.name)&&e.property.type==="Identifier"&&be.has(e.property.name)}function Ot(e){return!e.computed&&e.property.type==="Identifier"?e.property.name:S(e.property)}function At(e){if(e==="jose"||e==="jsonwebtoken")return"server";if(e==="next-auth"||e.startsWith("next-auth/")||e.startsWith("@auth/")||e==="better-auth"||e.startsWith("better-auth/")||e==="lucia"||e.startsWith("@clerk/")||e==="firebase/auth"||e.startsWith("@supabase/auth-"))return"all"}var ve=y({name:"no-custom-auth",meta:{type:"problem",docs:{description:"Sign customers in through the Zappie SDK."},schema:[{type:"object",properties:{serverFiles:{type:"array",items:{type:"string"},uniqueItems:!0}},additionalProperties:!1}],messages:{auth:"Use createCustomer().signIn() from @zappie/sdk/customer to sign customers in."}},defaultOptions:[{}],create(e,[t]){let i=C(e.filename,t.serverFiles??Rt);return{ImportDeclaration(r){let n=At(r.source.value);(n==="all"||n==="server"&&!i)&&e.report({node:r.source,messageId:"auth"})},JSXOpeningElement(r){if(r.name.type!=="JSXIdentifier"||r.name.name.toLowerCase()!=="input")return;let n=h(g(r,"type")),o=h(g(r,"autocomplete"));(n?.toLowerCase()==="password"||o!==void 0&&["one-time-code","current-password","new-password"].includes(o.toLowerCase()))&&e.report({node:r,messageId:"auth"})},CallExpression(r){if(r.callee.type!=="MemberExpression"||!xe(r.callee.object))return;let n=r.arguments[0],o=n?.type==="Identifier"?n.name:S(n??null);o&&K.test(o)&&e.report({node:r,messageId:"auth"})},AssignmentExpression(r){if(r.left.type==="MemberExpression"&&xe(r.left.object)){let s=Ot(r.left);s&&K.test(s)&&e.report({node:r,messageId:"auth"});return}let n=r.left.type==="MemberExpression"&&r.left.object.type==="Identifier"&&r.left.object.name==="document"&&r.left.property.type==="Identifier"&&r.left.property.name==="cookie",o=S(r.right);n&&o&&K.test(o)&&e.report({node:r,messageId:"auth"})}}}});function zt(e){return/checkout\.zappie\.ai|\/checkout(?:\/|$)/i.test(e)?"checkout":/accounts\.zappie\.ai|\/customer\/graphql/i.test(e)?"customer":/\/storefront\/v1/i.test(e)?"storefront":"direct"}var Ie=y({name:"no-direct-api",meta:{type:"problem",docs:{description:"Call Zappie through the SDK."},schema:[],messages:{direct:"Call the matching public @zappie/sdk client to reach this Zappie endpoint.",internal:"Use a public SDK entry. Only Zappie-owned packages can import @zappie/sdk/internal.",storefront:"Use createZappie(config).store or .menu to read storefront data.",checkout:"Use createCheckout().open() from @zappie/sdk/checkout, or checkoutUrl() from @zappie/sdk/services for a link to checkout.",customer:"Use createCustomer() from @zappie/sdk/customer."}},defaultOptions:[],create(e){let t=i=>{if(i.parent.type==="ImportDeclaration")return;let r=S(i);r&&D(r)&&e.report({node:i,messageId:zt(r)})};return{Literal:t,TemplateLiteral:t,ImportDeclaration(i){ce(i.source.value)&&e.report({node:i.source,messageId:"internal"})}}}});var ke=["https://checkout.zappie.ai","https://checkout.stg.zappie.ai","https://accounts.zappie.ai"],we=new Set(["window","globalThis","self","top","parent","frames","opener"]),Pt=new Set([...we,"defaultView","contentWindow"]),Dt=new Set(["document","ownerDocument","contentDocument"]);function A(e,t){let i=t.type==="ChainExpression"?t.expression:t;return b(e,i)==="location"||i.type==="MemberExpression"&&f(i)==="location"}function $(e,t,i){if(i.has(t.name))return;let r=T(e,t,t.name),n=r?.defs[0];if(r?.defs.length!==1||n?.type!=="Variable"||n.node.type!=="VariableDeclarator"||!n.node.init)return;i.add(t.name);let{id:o,init:s}=n.node;if(o.type==="Identifier")return s;if(o.type!=="ObjectPattern")return;let p=o.properties.find(a=>a.type==="Property"&&a.value.type==="Identifier"&&a.value.name===t.name);if(!(!p||p.computed||p.key.type!=="Identifier"))return{...s,type:"MemberExpression",object:s,property:p.key,computed:!1,optional:!1}}function L(e,t){let i=T(e,t,t.name);return!i||i.defs.length===0}function j(e,t,i){if(t.type==="ChainExpression")return j(e,t.expression,i);let r=E(t);if(r.type==="Identifier"){if(L(e,r))return we.has(r.name)?"window":r.name==="document"?"document":r.name==="location"?"location":void 0;let n=$(e,r,i);return n?j(e,n,i):void 0}if(r.type==="MemberExpression"){let n=f(r);if(n==="location"){let o=j(e,r.object,i);return o==="window"||o==="document"?"location":void 0}return n&&Pt.has(n)?"window":n&&Dt.has(n)?"document":void 0}if(r.type==="LogicalExpression")return j(e,r.left,i)??j(e,r.right,i);if(r.type==="ConditionalExpression")return j(e,r.consequent,i)??j(e,r.alternate,i)}function b(e,t){return j(e,t,new Set)}function x(e,t,i=new Set){if(!t||t.type==="SpreadElement")return;let r=E(t);if(r.type==="Literal")return typeof r.value=="string"?r.value:void 0;if(r.type==="TemplateLiteral"){let n=[];for(let[o,s]of r.quasis.entries()){n.push(s.value.cooked??s.value.raw);let p=r.expressions[o];if(p){let a=x(e,p,i);if(a===void 0)return;n.push(a)}}return n.join("")}if(r.type==="BinaryExpression"&&r.operator==="+"){let n=x(e,r.left,i),o=x(e,r.right,i);return n===void 0||o===void 0?void 0:n+o}if(r.type==="Identifier"){let n=$(e,r,i);return n?x(e,n,i):void 0}}function v(e,t,i=new Set){if(!t||t.type==="SpreadElement")return"";let r=x(e,t,new Set(i));if(r!==void 0)return r;let n=E(t);if(n.type==="TemplateLiteral"){let o="";for(let[s,p]of n.quasis.entries()){o+=p.value.cooked??p.value.raw;let a=n.expressions[s];if(!a)break;let c=x(e,a,new Set(i));if(c===void 0)return o+v(e,a,i);o+=c}return o}if(n.type==="BinaryExpression"&&n.operator==="+"){let o=x(e,n.left,new Set(i));return o===void 0?v(e,n.left,i):o+v(e,n.right,i)}if(n.type==="Identifier"){let o=$(e,n,i);return o?v(e,o,i):""}return""}function H(e,t,i=ke){let r=e.replace(/[\t\n\r]/g,"").replaceAll("\\","/");return/^\s/.test(r)?!1:/^(?:[?#]|\/[^/])/.test(r)||/^(?:tel|mailto|sms):/i.test(r)||t&&r==="/"?!0:/^[a-z][a-z\d+.-]*:|^\/\//i.test(r)?i.some(n=>t?r===n||r.toLowerCase().startsWith(`${n}/`):r.toLowerCase().startsWith(`${n}/`)):t&&r.length>0&&!r.includes(":")}function je(e){let t=e.replace(/[\t\n\r]/g,"").replaceAll("\\","/");return/^\s*(?:[a-z][a-z\d+.-]*:|\/\/)/i.test(t)}var Ce=y({name:"no-document-write",meta:{type:"problem",docs:{description:"Render markup with React, not document.write."},schema:[],messages:{write:"Remove document.write. Render the markup with React so it ships in the storefront bundle."}},defaultOptions:[],create(e){return{CallExpression(t){let i=t.callee,r=i.type==="MemberExpression"?f(i):void 0;i.type==="MemberExpression"&&(r==="write"||r==="writeln")&&b(e.sourceCode,i.object)==="document"&&e.report({node:t,messageId:"write"})}}}});function W(e,t){let i=E(t);if(i.type==="Identifier")return i.name;if(i.type==="SequenceExpression"){let r=i.expressions.at(-1);return r?W(e,r):void 0}if(i.type==="MemberExpression"&&b(e,i.object)==="window")return f(i)}function G(e){return!e||e.type==="SpreadElement"?!1:S(e)!==void 0?!0:e.type==="BinaryExpression"&&e.operator==="+"&&(G(e.left)||G(e.right))}var Le=y({name:"no-eval",meta:{type:"problem",docs:{description:"Do not execute strings as code."},schema:[],messages:{eval:"Remove code generated from a string. Ship executable code in the storefront bundle."}},defaultOptions:[],create(e){return{CallExpression(t){let i=W(e.sourceCode,t.callee),r=t.callee.type==="MemberExpression"&&f(t.callee)==="constructor";if(i==="eval"||i==="Function"||r){e.report({node:t,messageId:"eval"});return}["setTimeout","setInterval"].includes(i??"")&&G(t.arguments[0])&&e.report({node:t,messageId:"eval"})},NewExpression(t){let i=t.callee;(W(e.sourceCode,i)==="Function"||i.type==="MemberExpression"&&f(i)==="constructor")&&e.report({node:t,messageId:"eval"})}}}});var Ne=e=>!!(e&&/^\s*(?:[a-z][a-z\d+.-]*:|\/\/|\\\\)/i.test(e.replace(/[\t\n\r]/g,""))),Re=y({name:"no-external-scripts",meta:{type:"problem",docs:{description:"Ship scripts in the storefront bundle."},schema:[],messages:{externalScript:"Remove the external script. Install reviewed code as a package so it ships in the storefront bundle."}},defaultOptions:[],create(e){return{JSXOpeningElement(t){if(t.name.type!=="JSXIdentifier")return;let i=t.name.name.toLowerCase();if(i==="script"){let s=g(t,"src"),p=h(s),a=s?.value?.type==="JSXExpressionContainer"&&!(s.value.expression.type==="Literal"||s.value.expression.type==="TemplateLiteral"&&s.value.expression.expressions.length===0);s&&(a||p===void 0||Ne(p)&&!O(p))&&e.report({node:t,messageId:"externalScript"});return}if(i!=="link")return;let r=h(g(t,"rel"))?.toLowerCase(),n=h(g(t,"as"))?.toLowerCase(),o=h(g(t,"href"));(r==="preload"&&n==="script"||r==="modulepreload")&&Ne(o)&&!O(o??"")&&e.report({node:t,messageId:"externalScript"})},CallExpression(t){if(t.callee.type==="MemberExpression"&&f(t.callee)==="createElement"&&b(e.sourceCode,t.callee.object)==="document"&&S(t.arguments[0]??null)?.toLowerCase()==="script"){e.report({node:t,messageId:"externalScript"});return}t.callee.type==="MemberExpression"&&!t.callee.computed&&t.callee.object.type==="Identifier"&&t.callee.object.name==="React"&&t.callee.property.type==="Identifier"&&t.callee.property.name==="createElement"&&S(t.arguments[0]??null)?.toLowerCase()==="script"&&t.arguments[1]?.type==="ObjectExpression"&&t.arguments[1].properties.find(n=>n.type==="Property"&&(n.key.type==="Identifier"&&n.key.name==="src"||S(n.key)==="src"))&&e.report({node:t,messageId:"externalScript"})}}}});var Me=new Set(["location","href","host","hostname","origin","protocol","port"]);function Ft(e,t){if(t==="defineProperty"){let r=S(e.arguments[1]??null);return r!==void 0&&!Me.has(r)}let i=e.arguments.slice(1);return t==="assign"&&i.length>0&&i.every(r=>r.type==="ObjectExpression"&&r.properties.every(n=>n.type==="Property"&&!n.computed&&n.key.type==="Identifier"&&!Me.has(n.key.name)))}var Xt={Reflect:new Set(["get","set","apply","defineProperty","getOwnPropertyDescriptor"]),Object:new Set(["assign","defineProperty","defineProperties","getOwnPropertyDescriptor","getOwnPropertyDescriptors","setPrototypeOf"])},Oe=y({name:"no-global-indirection",meta:{type:"problem",docs:{description:"Reach window, document and location by name, so every use can be reviewed."},schema:[],messages:{computed:"Name the property with dot access. Computed access to window, document or location hides what the code reaches.",reflection:"Use window, document or location directly. Reflection on them hides what the code reaches."}},defaultOptions:[],create(e){let t=e.sourceCode,i=r=>b(t,r)!==void 0||A(t,r);return{MemberExpression(r){r.computed&&!(r.property.type==="Literal"&&typeof r.property.value=="number")&&i(r.object)&&e.report({node:r,messageId:"computed"})},VariableDeclarator(r){r.id.type==="ObjectPattern"&&r.init&&i(r.init)&&r.id.properties.some(n=>n.type==="Property"&&n.computed)&&e.report({node:r,messageId:"computed"})},CallExpression(r){let n=r.callee;if(n.type!=="MemberExpression"||n.object.type!=="Identifier")return;let o=Xt[n.object.name],s=f(n),p=r.arguments[0];o&&s&&o.has(s)&&p&&p.type!=="SpreadElement"&&i(p)&&!(n.object.name==="Object"&&b(t,p)!=="location"&&!A(t,p)&&Ft(r,s))&&e.report({node:r,messageId:"reflection"})}}}});var Jt=new Set(["react"]),Ut="React",Ae=y({name:"no-lazy-overlay",meta:{type:"problem",docs:{description:"Load overlays with deferred() from @zappie/foundations, not React.lazy or Suspense."},schema:[],messages:{lazy:"Load this component with deferred() from @zappie/foundations. React.lazy suspends, and React holds a suspended reveal back for about 300 ms, so the overlay opens late.",suspense:"Remove Suspense and load the component with deferred() from @zappie/foundations. It renders as soon as its code arrives and never suspends."}},defaultOptions:[],create(e){let t=new Set,i=new Set,r=new Set([Ut]),n=(o,s,p)=>o.type==="Identifier"&&r.has(o.name)&&s.type==="Identifier"&&s.name===p;return{ImportDeclaration(o){if(Jt.has(o.source.value))for(let s of o.specifiers){if(s.type!=="ImportSpecifier"){r.add(s.local.name);continue}let p=s.imported.type==="Identifier"?s.imported.name:s.imported.value;p==="lazy"?t.add(s.local.name):p==="Suspense"&&i.add(s.local.name)}},CallExpression(o){let s=o.callee;(s.type==="Identifier"&&t.has(s.name)||s.type==="MemberExpression"&&!s.computed&&n(s.object,s.property,"lazy"))&&e.report({node:o,messageId:"lazy"})},JSXOpeningElement(o){let s=o.name;(s.type==="JSXIdentifier"&&i.has(s.name)||s.type==="JSXMemberExpression"&&s.object.type==="JSXIdentifier"&&r.has(s.object.name)&&s.property.name==="Suspense")&&e.report({node:o,messageId:"suspense"})}}}});import{ESLintUtils as Vt}from"@typescript-eslint/utils";var _t=/[₦€£]\s?\d|\$\s?\d|NGN\s?\d|\d+(?:\.\d{2})?\s?(?:naira|NGN)/i;function X(e){return e.trim()!=="$1"&&_t.test(e)}function I(e){if(e.type==="MemberExpression"){if(!e.computed&&e.property.type==="Identifier")return e.property.name;if(e.computed&&e.property.type==="Literal")return typeof e.property.value=="string"?e.property.value:void 0}}var N=e=>I(e)==="amountMinor";function qt(e){return e.type==="MemberExpression"&&N(e)?e.object:void 0}function k(e){if(!(e.type!=="BinaryExpression"||e.operator!=="/"||e.right.type!=="Literal"||e.right.value!==100))return qt(e.left)}function J(e){try{return Vt.getParserServices(e,!0)}catch{return}}function Bt(e){return e.getName().includes("MoneyBrand")?(e.getDeclarations()??[]).some(t=>{let i=t.getSourceFile().fileName.replaceAll("\\","/");return i.endsWith("/packages/sdk/src/money.ts")||/\/node_modules\/@zappie\/sdk\/.*\.d\.ts$/.test(i)}):!1}function U(e,t){if(!e?.program)return!1;let i=e.program.getTypeChecker(),r=e.esTreeNodeToTSNodeMap.get(t),n=i.getTypeAtLocation(r);return(n.isUnionOrIntersection()?n.types:[n]).some(s=>s.getProperties().some(p=>Bt(p)))}function V(e){return e?.type!=="ObjectExpression"?!1:e.properties.some(t=>t.type==="Property"&&!t.computed&&(t.key.type==="Identifier"&&t.key.name==="style"||t.key.type==="Literal"&&t.key.value==="style")&&t.value.type==="Literal"&&t.value.value==="currency")}var ze=y({name:"no-money-literals",meta:{type:"problem",docs:{description:"Use SDK prices and totals in your storefront."},schema:[],messages:{arithmetic:"Use cart.subtotal, line.lineSubtotal, quote.subtotal, quote.lines totals or quote.total. Let the SDK calculate amounts.",literal:"Render SDK Money with format.money() or <Money> instead of a hard-coded amount.",scale:"Use format.money() to display amountMinor. Currencies use 0, 2, 3 or 4 minor-unit digits."}},defaultOptions:[],create(e){let t=J(e),i=r=>N(r)||U(t,r);return{Literal(r){typeof r.value=="string"&&r.parent.type!=="ImportDeclaration"&&X(r.value)&&e.report({node:r,messageId:"literal"})},JSXText(r){X(r.value)&&e.report({node:r,messageId:"literal"})},BinaryExpression(r){["+","-","*","/"].includes(r.operator)&&(k(r)&&r.parent.type==="MemberExpression"&&r.parent.object===r&&I(r.parent)==="toFixed"||(i(r.left)||i(r.right))&&e.report({node:r,messageId:"arithmetic"}))},TemplateLiteral(r){for(let n of r.quasis)X(n.value.cooked??n.value.raw)&&e.report({node:n,messageId:"literal"})},CallExpression(r){r.callee.type==="MemberExpression"&&I(r.callee)==="toFixed"&&r.arguments[0]?.type==="Literal"&&r.arguments[0].value===2&&k(r.callee.object)&&e.report({node:r,messageId:"scale"})}}}});var Kt=new Set(["host","hostname","origin","protocol","port"]),$t=new Set(["navigate","redirect","redirectDocument"]),Pe={safeRedirect:"@zappie/sdk/redirect",checkoutUrl:"@zappie/sdk/services",appUrl:"@zappie/sdk/services"},De=y({name:"no-offsite-navigation",meta:{type:"problem",docs:{description:"Keep shoppers on the site unless they follow a link themselves."},schema:[],messages:{offsite:"Navigate with a router link, navigate() to a path on this site, or an SDK helper such as redirectToCheckout from @zappie/sdk/redirect or checkoutUrl from @zappie/sdk/services. Use a plain <a href> for a page on another site.",refresh:"Remove the refresh. Send the shopper on with a router redirect to a path on this site.",anchorClick:"Render an <a href> the shopper clicks instead of clicking a link from code."}},defaultOptions:[],create(e){let t=e.sourceCode,i=l=>b(t,l)==="location",r=l=>A(t,l),n=l=>{if(!l||l.type==="SpreadElement")return!1;let m=E(l);if(m.type==="CallExpression"&&o(m))return!0;if(m.type==="ConditionalExpression"||m.type==="LogicalExpression"){let[d,w]=m.type==="ConditionalExpression"?[m.consequent,m.alternate]:[m.left,m.right];return n(d)&&n(w)}let u=x(t,m);return u===void 0?H(v(t,m),!1):H(u,!0)},o=l=>l.callee.type!=="Identifier"?!1:!!T(t,l.callee,l.callee.name)?.defs.some(u=>u.type==="ImportBinding"&&u.node.type==="ImportSpecifier"&&u.node.imported.type==="Identifier"&&u.parent?.type==="ImportDeclaration"&&Object.hasOwn(Pe,u.node.imported.name)&&u.parent.source.value===Pe[u.node.imported.name]),s=l=>{if(!l||l.type==="SpreadElement")return!1;let m=v(t,l);return je(m)&&!n(l)},p=l=>{let m=l.callee;if(m.type==="Identifier"){if($t.has(m.name))return!0;let d=T(t,m,m.name)?.defs[0];return d?.type==="Variable"&&d.node.type==="VariableDeclarator"&&d.node.init?.type==="CallExpression"&&d.node.init.callee.type==="Identifier"&&d.node.init.callee.name==="useNavigate"}return m.type==="MemberExpression"&&f(m)==="redirect"&&m.object.type==="Identifier"&&m.object.name==="Response"},a=new Map,c=(l,m)=>{l.type==="Identifier"&&a.has(l.name)&&a.set(l.name,a.get(l.name)!=="unsafe"&&n(m)?"safe":"unsafe")};return{AssignmentExpression(l){let m=l.left;if(m.type==="MemberExpression"&&f(m)==="href"&&c(m.object,l.right),(m.type==="Identifier"||m.type==="MemberExpression")&&i(m)&&!n(l.right)){e.report({node:l,messageId:"offsite"});return}if(m.type!=="MemberExpression"||!r(m.object))return;let u=f(m);(u===void 0||Kt.has(u)||u==="href"&&!n(l.right))&&e.report({node:l,messageId:"offsite"})},CallExpression(l){let m=l.callee;if(m.type==="MemberExpression"){let u=f(m);if((u==="assign"||u==="replace")&&r(m.object)&&!n(l.arguments[0])){e.report({node:l,messageId:"offsite"});return}if(u==="open"&&b(t,m.object)==="window"&&!n(l.arguments[0])){e.report({node:l,messageId:"offsite"});return}if((u==="set"||u==="append")&&S(l.arguments[0]??null)?.toLowerCase()==="refresh"){e.report({node:l,messageId:"refresh"});return}if(u==="setAttribute"&&S(l.arguments[0]??null)?.toLowerCase()==="href"&&c(m.object,l.arguments[1]),u==="click"&&m.object.type==="Identifier"&&a.has(m.object.name)&&a.get(m.object.name)!=="safe"){e.report({node:l,messageId:"anchorClick"});return}}if(m.type==="Identifier"&&m.name==="open"&&L(t,m)&&!n(l.arguments[0])){e.report({node:l,messageId:"offsite"});return}p(l)&&s(l.arguments[0])&&e.report({node:l,messageId:"offsite"})},VariableDeclarator(l){let m=l.init&&E(l.init);l.id.type==="Identifier"&&m?.type==="CallExpression"&&m.callee.type==="MemberExpression"&&f(m.callee)==="createElement"&&b(t,m.callee.object)==="document"&&S(m.arguments[0]??null)?.toLowerCase()==="a"&&a.set(l.id.name,"none")},JSXOpeningElement(l){if(l.name.type!=="JSXIdentifier")return;let m=l.name.name;if(m.toLowerCase()==="meta"){let u=g(l,"httpEquiv")??g(l,"http-equiv"),d=u&&h(u);u&&(d===void 0||d.toLowerCase()==="refresh")&&e.report({node:l,messageId:"refresh"});return}if(m==="Navigate"){let u=g(l,"to"),d=u?.value?.type==="JSXExpressionContainer"&&u.value.expression.type!=="JSXEmptyExpression"?u.value.expression:u?.value;d&&s(d)&&e.report({node:l,messageId:"offsite"})}},Property(l){let m=l.key.type==="Identifier"&&!l.computed?l.key.name:S(l.key),u=l.value;if(!m)return;let d=m.toLowerCase();if((d==="httpequiv"||d==="http-equiv")&&S(u)?.toLowerCase()==="refresh"){e.report({node:l,messageId:"refresh"});return}d==="refresh"&&/^\s*\d/.test(S(u)??"")&&e.report({node:l,messageId:"refresh"})}}}});var Z=e=>/^\s*(?:https?:|data:|blob:|\/\/|\\\\)/i.test(e.replace(/[\t\n\r]/g,"")),Ht=new Set(["Worker","SharedWorker"]),Fe=e=>e!==void 0&&/^\.\.?\//.test(e);function Xe(e,t){let i=E(t);if(i.type==="MemberExpression"&&f(i)==="href"&&(i=E(i.object)),i.type==="Identifier"){let n=T(e,i,i.name),o=n?.defs[0];return n?.defs.length!==1||o?.type!=="Variable"||o.node.type!=="VariableDeclarator"||o.parent?.type!=="VariableDeclaration"||o.parent.kind!=="const"||!o.node.init?!1:!n.references.some(p=>{let a=p.identifier.parent;return a.type==="MemberExpression"&&a.object===p.identifier&&a.parent.type==="AssignmentExpression"&&a.parent.left===a&&!["search","hash"].includes(f(a)??"")})&&Xe(e,o.node.init)}let r=i.type==="NewExpression"?i.arguments[1]:void 0;return i.type==="NewExpression"&&i.callee.type==="Identifier"&&i.callee.name==="URL"&&Fe(x(e,i.arguments[0]))&&r?.type==="MemberExpression"&&r.object.type==="MetaProperty"&&f(r)==="url"}var Je=y({name:"no-remote-import",meta:{type:"problem",docs:{description:"Load code from the storefront bundle only."},schema:[],messages:{remote:"Install the code as a package so it ships in the storefront bundle. Code loaded from a URL changes without review.",computed:"Import a file in the project. A computed import must start with ./ or ../ so the bundler can see every file it may load."}},defaultOptions:[],create(e){let t=e.sourceCode,i=(n,o)=>{if(!o||o.type==="SpreadElement")return;let s=x(t,o),p=s??v(t,o);if(Z(p)){e.report({node:n,messageId:"remote"});return}s===void 0&&!Fe(p)&&!Xe(t,o)&&e.report({node:n,messageId:"computed"})},r=n=>{n.source&&Z(n.source.value)&&e.report({node:n,messageId:"remote"})};return{ImportExpression(n){i(n,n.source)},ImportDeclaration:r,ExportAllDeclaration:r,ExportNamedDeclaration:r,NewExpression(n){if(n.callee.type==="Identifier"&&Ht.has(n.callee.name)&&L(t,n.callee)){let o=n.arguments[0];o&&o.type!=="SpreadElement"&&Z(v(t,o))&&e.report({node:n,messageId:"remote"})}},CallExpression(n){n.callee.type==="Identifier"&&n.callee.name==="importScripts"&&L(t,n.callee)&&e.report({node:n,messageId:"remote"})}}}});var Wt=["**/*.server.{js,jsx,ts,tsx,mjs,cjs,mts,cts}","**/app/.server/**","**/app/server.ts","**/test/**","**/tests/**","**/__tests__/**","**/*.{test,spec}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}","**/*.config.{js,ts,mjs,cjs,mts,cts}"],Gt=new Set(["MODE","DEV","PROD","SSR","BASE_URL"]);function Ue(e){if(e.type==="FunctionDeclaration")return e.id?.name;if(e.type!=="FunctionExpression"&&e.type!=="ArrowFunctionExpression")return;let t=e.parent;if(t.type==="VariableDeclarator"&&t.id.type==="Identifier")return t.id.name;if(t.type==="Property")return t.key.type==="Identifier"?t.key.name:S(t.key)}function Ve(e){if(e.type==="MemberExpression"&&e.object.type==="Identifier"&&e.object.name==="process"&&f(e)==="env")return"process";if(e.type==="MemberExpression"&&e.object.type==="MetaProperty"&&e.object.meta.name==="import"&&e.object.property.name==="meta"&&f(e)==="env")return"vite"}function _e(e){return e.type!=="MemberExpression"||f(e)!=="cloudflare"?!1:e.object.type==="Identifier"&&e.object.name==="context"||e.object.type==="MemberExpression"&&f(e.object)==="context"}function qe(e,t,i=!1){return e==="process"?t!=="NODE_ENV"&&!(i&&t?.startsWith("NEXT_PUBLIC_ZAPPIE_")):t===void 0||!t.startsWith("VITE_ZAPPIE_")&&!Gt.has(t)}var Be=y({name:"no-server-env-in-client",meta:{type:"problem",docs:{description:"Read server environment values only in server code."},schema:[],messages:{serverEnv:"Move this environment read into a loader, action, *.server.ts file, app/.server/ or app/server.ts so it cannot reach the client bundle."}},defaultOptions:[],create(e){let t=e.filename.replaceAll("\\","/");if(C(t,Wt)||/(?:^|\/)(?:test|tests|__tests__)(?:\/|$)/.test(t)||/\.(?:test|spec|config)\.[cm]?[jt]sx?$/.test(t))return{};let i=new Map,r=new Set,n=a=>e.sourceCode.getAncestors(a).some(c=>["loader","action"].includes(Ue(c)??"")),o=a=>{let c=Ve(a);return c||(a.type==="Identifier"?i.get(a.name):void 0)},s=a=>{if(a.type==="ObjectPattern")for(let c of a.properties)c.type==="Property"&&(c.key.type==="Identifier"&&c.key.name==="cloudflare"||S(c.key)==="cloudflare")&&c.value.type==="Identifier"&&r.add(c.value.name),c.type==="Property"&&(c.key.type==="Identifier"&&c.key.name==="context"||S(c.key)==="context")&&s(c.value)},p=a=>{if(!(n(a)||["loader","action"].includes(Ue(a)??"")))for(let c of a.params)c.type!=="RestElement"&&s(c)};return{ArrowFunctionExpression:p,FunctionDeclaration:p,FunctionExpression:p,VariableDeclarator(a){if(n(a)||!a.init)return;let c=o(a.init);if(a.id.type==="Identifier"&&c){i.set(a.id.name,c);return}if(a.id.type==="ObjectPattern"&&c){for(let l of a.id.properties){let m=l.type==="Property"?l.key.type==="Identifier"?l.key.name:S(l.key):void 0;qe(c,m)&&e.report({node:l,messageId:"serverEnv"})}return}if(a.id.type==="ObjectPattern"&&_e(a.init))for(let l of a.id.properties)l.type==="Property"&&(l.key.type==="Identifier"&&l.key.name==="env"||S(l.key)==="env")&&e.report({node:l,messageId:"serverEnv"})},MemberExpression(a){if(n(a))return;let c=o(a.object);if(c&&qe(c,f(a),Ve(a.object)===c)){e.report({node:a,messageId:"serverEnv"});return}f(a)==="env"&&(_e(a.object)||a.object.type==="Identifier"&&r.has(a.object.name))&&e.report({node:a,messageId:"serverEnv"})}}}});var Zt=["react-ga4","react-facebook-pixel","@vercel/analytics","posthog-js"];function Yt(e){return Zt.includes(e)||e.startsWith("@segment/")}var Ke=y({name:"no-tracking-scripts",meta:{type:"problem",docs:{description:"Forward analytics through Zappie."},schema:[],messages:{tracking:"Configure analytics.forward in zappie.config.ts to forward analytics. Remove the tracking script."}},defaultOptions:[],create(e){let t=i=>{if(i.parent.type==="ImportDeclaration")return;let r=S(i);r&&O(r)&&e.report({node:i,messageId:"tracking"})};return{Literal:t,TemplateLiteral:t,ImportDeclaration(i){Yt(i.source.value)&&e.report({node:i.source,messageId:"tracking"})},CallExpression(i){let r=i.callee,n=r.type==="Identifier"&&["gtag","fbq"].includes(r.name),o=r.type==="MemberExpression"&&!r.computed&&r.object.type==="Identifier"&&r.object.name==="dataLayer"&&r.property.type==="Identifier"&&r.property.name==="push";(n||o)&&e.report({node:i,messageId:"tracking"})}}}});function $e(e){let t=S(e??null);if(t!==void 0)return t;if(e?.type==="NewExpression"&&e.callee.type==="Identifier"&&e.callee.name==="URL")return $e(e.arguments[0])}function Qt(e){if(!(!/^(?:https?|wss?):\/\//i.test(e)&&!e.startsWith("//")))try{return new URL(e,"https://storefront.invalid").hostname.toLowerCase()}catch{return}}function er(e,t){return t.some(i=>{let r=i.toLowerCase();return r.startsWith("*.")?e.endsWith(r.slice(1))&&e!==r.slice(2):e===r})}var z=y({name:"no-unlisted-fetch",meta:{type:"problem",docs:{description:"List every external request host in outbound.allow."},schema:[{type:"object",properties:{dynamicOnly:{type:"boolean"}},additionalProperties:!1}],messages:{dynamicRequest:"This request URL is computed. Review its possible hosts and list each external host in zappie.config.ts outbound.allow.",unlistedRequest:"Add {{host}} to zappie.config.ts outbound.allow, or remove this external request."}},defaultOptions:[{}],create(e,[t]){let i=e.filename.replaceAll("\\","/");if(C(i,["**/test/**","**/tests/**","**/__tests__/**","**/*.{test,spec}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}"])||/(?:^|\/)(?:test|tests|__tests__)(?:\/|$)/.test(i)||/\.(?:test|spec)\.[cm]?[jt]sx?$/.test(i))return{};let r=e.settings?.zappie?.outboundAllow,n=Array.isArray(r)?r.filter(p=>typeof p=="string"):[],o=new Set,s=(p,a)=>{let c=$e(a);if(c===void 0){t.dynamicOnly&&e.report({node:p,messageId:"dynamicRequest"});return}if(t.dynamicOnly)return;let l=Qt(c);!l||D(c)||er(l,n)||e.report({node:p,messageId:"unlistedRequest",data:{host:l}})};return{VariableDeclarator(p){p.id.type==="Identifier"&&p.init?.type==="NewExpression"&&p.init.callee.type==="Identifier"&&p.init.callee.name==="XMLHttpRequest"&&o.add(p.id.name)},CallExpression(p){if(p.callee.type==="Identifier"&&p.callee.name==="fetch"||p.callee.type==="MemberExpression"&&f(p.callee)==="fetch"&&p.callee.object.type==="Identifier"&&["window","globalThis"].includes(p.callee.object.name)){s(p,p.arguments[0]);return}if(p.callee.type!=="MemberExpression")return;let c=f(p.callee);if(c==="sendBeacon"&&p.callee.object.type==="Identifier"&&p.callee.object.name==="navigator"){s(p,p.arguments[0]);return}c==="open"&&(p.callee.object.type==="Identifier"&&o.has(p.callee.object.name)||p.callee.object.type==="NewExpression"&&p.callee.object.callee.type==="Identifier"&&p.callee.object.callee.name==="XMLHttpRequest")&&s(p,p.arguments[1])},NewExpression(p){p.callee.type==="Identifier"&&["WebSocket","EventSource"].includes(p.callee.name)&&s(p,p.arguments[0])}}}}),He={...z,meta:{...z.meta,docs:{...z.meta.docs,url:"https://docs.zappie.ai/lint/no-unlisted-fetch-dynamic"}}};function tr(e){return e.properties.find(t=>t.type==="Property"&&!t.computed&&(t.key.type==="Identifier"&&t.key.name==="__html"||S(t.key)==="__html"))?.value}var We=y({name:"no-unsafe-html",meta:{type:"problem",docs:{description:"Sanitize rich text before inserting HTML."},schema:[],messages:{unsafeHtml:"Pass the HTML straight through a sanitizer created with createSanitizeRichText from @zappie/foundations/rich-text."}},defaultOptions:[],create(e){let t=e.sourceCode,i=s=>!!T(t,s,s.name)?.defs.some(a=>a.type==="ImportBinding"&&a.node.type==="ImportSpecifier"&&a.node.imported.type==="Identifier"&&a.node.imported.name==="createSanitizeRichText"&&a.parent?.type==="ImportDeclaration"&&a.parent.source.value==="@zappie/foundations/rich-text"),r=s=>!!T(t,s,s.name)?.defs.some(a=>{if(a.type!=="Variable"||a.node.type!=="VariableDeclarator")return!1;let c=a.node.init;return c?.type==="CallExpression"&&c.callee.type==="Identifier"&&i(c.callee)}),n=(s,p=new Set)=>{if(!s||s.type==="SpreadElement")return!1;let a=E(s);if(a.type==="Literal")return a.value==="";if(a.type==="ConditionalExpression")return n(a.consequent,p)&&n(a.alternate,p);if(a.type==="LogicalExpression")return n(a.left,p)&&n(a.right,p);if(a.type==="CallExpression")return a.callee.type==="Identifier"&&r(a.callee)?!0:a.callee.type==="CallExpression"&&a.callee.callee.type==="Identifier"&&i(a.callee.callee);if(a.type!=="Identifier")return!1;let c=T(t,a,a.name);if(!c||p.has(c))return!1;let l=new Set(p).add(c);for(let m of c.defs){if(m.type!=="Variable"||m.node.type!=="VariableDeclarator")continue;if(m.node.id.type==="Identifier")return n(m.node.init,l);if(m.node.id.type!=="ArrayPattern"||m.node.id.elements[0]?.type!=="Identifier"||m.node.id.elements[0].name!==a.name||m.node.init?.type!=="CallExpression"||m.node.init.callee.type!=="Identifier"||m.node.init.callee.name!=="useState")continue;let u=m.node.init.arguments[0],d=m.node.id.elements[1];if(!n(u,l)||d?.type!=="Identifier")return!1;let ae=T(t,d,d.name)?.references.filter(M=>M.identifier.parent.type==="CallExpression"&&M.identifier.parent.callee===M.identifier)??[];return ae.length>0&&ae.every(M=>{let oe=M.identifier.parent;return oe.type==="CallExpression"&&n(oe.arguments[0],l)})}return!1},o=(s,p)=>{(p?.type!=="ObjectExpression"||!n(tr(p)))&&e.report({node:s,messageId:"unsafeHtml"})};return{JSXAttribute(s){if(s.name.type!=="JSXIdentifier")return;let p=s.name.name.toLowerCase();!["dangerouslysetinnerhtml","srcdoc"].includes(p)||s.value?.type!=="JSXExpressionContainer"||(p==="dangerouslysetinnerhtml"?o(s,s.value.expression):n(s.value.expression)||e.report({node:s,messageId:"unsafeHtml"}))},JSXSpreadAttribute(s){if(s.argument.type!=="ObjectExpression")return;let p=s.argument.properties.find(a=>a.type==="Property"&&(a.key.type==="Identifier"&&a.key.name==="dangerouslySetInnerHTML"||S(a.key)==="dangerouslySetInnerHTML"));p&&o(s,p.value)},JSXElement(s){if(s.openingElement.name.type==="JSXIdentifier"&&s.openingElement.name.name.toLowerCase()==="script")for(let p of s.children)p.type==="JSXExpressionContainer"&&p.expression.type!=="JSXEmptyExpression"&&e.report({node:p,messageId:"unsafeHtml"})},AssignmentExpression(s){s.left.type==="MemberExpression"&&["innerHTML","outerHTML","srcdoc"].includes(f(s.left)??"")&&!n(s.right)&&e.report({node:s,messageId:"unsafeHtml"})},CallExpression(s){if(s.callee.type==="MemberExpression"&&f(s.callee)==="insertAdjacentHTML"){n(s.arguments[1])||e.report({node:s,messageId:"unsafeHtml"});return}if(s.callee.type==="MemberExpression"&&["createContextualFragment","setHTMLUnsafe"].includes(f(s.callee)??"")){n(s.arguments[0])||e.report({node:s,messageId:"unsafeHtml"});return}if(!(s.callee.type==="Identifier"&&s.callee.name==="createElement"||s.callee.type==="MemberExpression"&&f(s.callee)==="createElement"&&s.callee.object.type==="Identifier"&&s.callee.object.name==="React"))return;if(S(s.arguments[0]??null)?.toLowerCase()==="script")for(let l of s.arguments.slice(2))l.type!=="SpreadElement"&&e.report({node:l,messageId:"unsafeHtml"});let a=s.arguments[1];if(a?.type!=="ObjectExpression")return;let c=a.properties.find(l=>l.type==="Property"&&(l.key.type==="Identifier"&&l.key.name==="dangerouslySetInnerHTML"||S(l.key)==="dangerouslySetInnerHTML"));c&&o(s,c.value)}}}});var rr=["modal","sheet","drawer","dialog","item","cart","cart_sheet","cart_edit","cart_clear","search","catalogue_search","catalogue_categories","product_note","modal_id"];function Y(e){if(e.type==="Identifier")return e.name;if(e.type==="MemberExpression"&&e.property.type==="Identifier")return e.property.name}function Ge(e,t){return e.type==="Literal"&&typeof e.value=="string"?[...t].some(i=>new RegExp(`[?&]${i}=`).test(e.value)):e.type==="TemplateLiteral"?e.quasis.some(i=>Ge({...i,type:"Literal",value:i.value.raw},t)):e.type==="ObjectExpression"?e.properties.some(i=>i.type==="Property"&&(i.key.type==="Identifier"&&t.has(i.key.name)||i.key.type==="Literal"&&typeof i.key.value=="string"&&t.has(i.key.value))):!1}var Ze=y({name:"overlay-primitive",meta:{type:"problem",docs:{description:"Use Overlay to keep dialogs and sheets in the URL."},schema:[{type:"object",properties:{keys:{type:"array",items:{type:"string"}}},additionalProperties:!1}],messages:{overlay:"Use Overlay or useOverlay for dialogs and sheets in the URL. They handle Back, Forward and focus restoration."}},defaultOptions:[{}],create(e,[t]){let i=new Set([...rr,...t.keys??[]]),r=new Set,n=o=>{let s=e.sourceCode.getText(o);return s.includes("useSearchParams(")||[...r].some(p=>new RegExp(`\\b${p}\\b`).test(s))};return{VariableDeclarator(o){o.init?.type==="CallExpression"&&Y(o.init.callee)==="useSearchParams"?o.id.type==="Identifier"?r.add(o.id.name):o.id.type==="ArrayPattern"&&o.id.elements[0]?.type==="Identifier"&&r.add(o.id.elements[0].name):o.id.type==="Identifier"&&o.init&&n(o.init)&&r.add(o.id.name)},CallExpression(o){let s=Y(o.callee);(s==="setSearchParams"||s==="navigate"||s==="pushState"||s==="replaceState"||o.callee.type==="CallExpression"&&Y(o.callee.callee)==="useNavigate")&&o.arguments.some(a=>a.type!=="SpreadElement"&&Ge(a,i))&&e.report({node:o,messageId:"overlay"})},JSXOpeningElement(o){let s=o.name.type==="JSXIdentifier"&&o.name.name==="dialog",p=o.attributes.some(c=>c.type==="JSXAttribute"&&c.name.name==="role"&&c.value?.type==="Literal"&&c.value.value==="dialog"),a=o.attributes.find(c=>c.type==="JSXAttribute"&&c.name.name==="open");(s||p)&&a?.type==="JSXAttribute"&&a.value?.type==="JSXExpressionContainer"&&n(a.value.expression)&&e.report({node:o,messageId:"overlay"})}}}});function ir(e){return e.callee.type==="Identifier"?e.callee.name:e.callee.type==="MemberExpression"?f(e.callee):void 0}function R(e){return!e||e.type==="JSXEmptyExpression"?!1:e.type==="TSAsExpression"||e.type==="TSTypeAssertion"||e.type==="TSNonNullExpression"?R(e.expression):e.type==="ConditionalExpression"?R(e.consequent)||R(e.alternate):e.type==="LogicalExpression"?R(e.left)||R(e.right):S(e)?.toLowerCase()==="_blank"}var Ye=y({name:"safe-external-links",meta:{type:"problem",docs:{description:"Open links and redirects without exposing the site."},fixable:"code",schema:[],messages:{javascriptUrl:"Remove the javascript: URL. Use an event handler for storefront behavior.",noopener:'Add rel="noopener noreferrer" when target="_blank" opens a new tab.',redirect:"Pass this redirect target through safeRedirect(to, fallback) from @zappie/sdk/redirect."}},defaultOptions:[],create(e){let t=e.sourceCode,i=new Set,r=new Set,n=a=>!!T(t,a,a.name)?.defs.some(l=>l.type==="ImportBinding"&&l.node.type==="ImportSpecifier"&&l.node.imported.type==="Identifier"&&l.node.imported.name==="safeRedirect"&&l.parent?.type==="ImportDeclaration"&&l.parent.source.value==="@zappie/sdk/redirect"),o=a=>{if(!a||a.type==="SpreadElement")return!1;let c=E(a);return c.type==="Identifier"?i.has(c.name)&&!r.has(c.name):c.type==="MemberExpression"?c.object.type==="Identifier"&&c.object.name==="request"&&f(c)==="url"?!0:o(c.object):c.type==="CallExpression"?c.callee.type==="Identifier"&&n(c.callee)?!1:c.callee.type==="Identifier"&&c.callee.name==="safeRedirect"?c.arguments.some(o):!!(c.callee.type==="MemberExpression"&&f(c.callee)==="get"&&(c.callee.object.type==="MemberExpression"&&f(c.callee.object)==="searchParams"||c.callee.object.type==="Identifier"&&/searchParams/i.test(c.callee.object.name)||o(c.callee.object))):c.type==="NewExpression"?c.callee.type==="Identifier"&&c.callee.name==="URL"&&c.arguments.some(o):c.type==="ConditionalExpression"?o(c.consequent)||o(c.alternate):c.type==="LogicalExpression"?o(c.left)||o(c.right):c.type==="BinaryExpression"?o(c.left):c.type==="TemplateLiteral"?c.expressions.some(o):!1},s=(a,c)=>{if(c.type!=="Identifier")return!1;let l=u=>{let d=E(u);return d.type==="MemberExpression"&&f(d)==="origin"&&d.object.type==="Identifier"&&d.object.name===c.name},m=u=>{let d=E(u);return d.type==="MemberExpression"&&f(d)==="origin"&&(d.object.type==="Identifier"&&d.object.name==="location"||o(d.object))};return t.getAncestors(a).some(u=>{if(u.type!=="IfStatement"||!t.getAncestors(a).includes(u.consequent))return!1;let d=E(u.test);return d.type==="BinaryExpression"&&(d.operator==="==="||d.operator==="==")&&(l(d.left)&&m(d.right)||m(d.left)&&l(d.right))})};return{VariableDeclarator(a){a.id.type!=="Identifier"||!a.init||(a.init.type==="CallExpression"&&a.init.callee.type==="Identifier"&&n(a.init.callee)?r.add(a.id.name):o(a.init)&&i.add(a.id.name))},JSXOpeningElement(a){for(let d of["href","src","action","formAction"]){let w=h(g(a,d));/^javascript:/i.test((w??"").replace(/[\u0000-\u0020\u007f\s]/gu,""))&&e.report({node:g(a,d)??a,messageId:"javascriptUrl"})}let c=g(a,"target"),l=c?.value?.type==="JSXExpressionContainer"?c.value.expression:c?.value;if(!R(l))return;let m=g(a,"rel"),u=h(m);u?.toLowerCase().split(/\s+/).includes("noopener")||e.report({node:a,messageId:"noopener",fix(d){if(!m)return d.insertTextAfter(a.name,' rel="noopener noreferrer"');if(!m.value||m.value.type!=="Literal")return null;let w=new Set((u??"").split(/\s+/).filter(Boolean));return w.add("noopener"),w.add("noreferrer"),d.replaceText(m,`rel="${[...w].join(" ")}"`)}})},CallExpression:a=>{let c=ir(a);if(!["redirect","navigate","assign","replace"].includes(c??""))return;let l=a.arguments[0];l&&l.type!=="SpreadElement"&&o(l)&&!s(a,E(l))&&e.report({node:l,messageId:"redirect"})},AssignmentExpression(a){a.left.type==="MemberExpression"&&f(a.left)==="href"&&(a.left.object.type==="Identifier"&&a.left.object.name==="location"||a.left.object.type==="MemberExpression"&&f(a.left.object)==="location")&&o(a.right)&&e.report({node:a.right,messageId:"redirect"})}}}});function Q(e){return e.body.find(t=>t.type==="ImportDeclaration"&&t.source.value==="@zappie/sdk")}function ee(e){return e?.specifiers.find(t=>t.type==="ImportSpecifier"&&t.imported.type==="Identifier"&&t.imported.name==="format")}function nr(e,t,i,r){let n=Q(i);if(ee(n)?.local.name===r)return;let o=r==="format"?"format":`format as ${r}`,s=n?.specifiers.filter(c=>c.type==="ImportSpecifier");if(n&&n.importKind!=="type"&&s?.length){let c=s.at(-1);if(c)return e.insertTextAfter(c,`, ${o}`)}let p=i.body[0],a=`import { ${o} } from "@zappie/sdk";
2
- `;return p?e.insertTextBefore(p,a):e.insertTextAfter(i,a)}function te(e,t,i,r,n,o){let s=[e.replaceText(r,`${o}.money(${t.getText(n)})`)],p=nr(e,t,i,o);return p&&s.push(p),s}function Qe(e,t,i){if(ee(Q(t)))return"imported";let r=e.getScope(i);for(;r;){if(r.variables.some(n=>n.name==="format"))return"conflict";r=r.upper}return"available"}function et(e){return ee(Q(e))?.local.name}function tt(e,t){let i=new Set,r=e.getScope(t);for(;r;){for(let n of r.variables)i.add(n.name);r=r.upper}for(let n of["zappieFormat","zappieMoneyFormat","formatMoneyValue"])if(!i.has(n))return n;return"zappieSdkFormat"}function rt(e){let t=e.type==="NewExpression"||e.type==="CallExpression"?e.callee:void 0;return t?.type==="MemberExpression"&&t.object.type==="Identifier"&&t.object.name==="Intl"&&I(t)==="NumberFormat"}function sr(e){if(e.callee.type==="MemberExpression"){if(I(e.callee)==="toLocaleString")return k(e.callee.object);if(I(e.callee)==="format")return k(e.arguments[0]??e)}}function ar(e){let t=e.parent,i=t.type==="MemberExpression"?t.parent:void 0;return!!(i?.type==="CallExpression"&&i.callee===t&&I(t)==="format"&&k(i.arguments[0]??i))}var it=y({name:"use-format-money",meta:{type:"problem",docs:{description:"Format SDK Money with format.money() or <Money>."},fixable:"code",hasSuggestions:!0,schema:[],messages:{currency:"Use format.money(). Intl currency defaults can differ from the API minor-unit digits.",direct:"Render SDK Money with format.money(value) or <Money value={value}>.",minor:"Use format.money(value). Dividing by 100 gives the wrong amount for currencies with 0, 3 or 4 minor-unit digits.",useAlias:"Import format with an unused alias and format this Money value."}},defaultOptions:[],create(e){let t=e.sourceCode,i=J(e),r,n=(s,p,a)=>{let c={node:s,messageId:"minor"};if(Qe(t,r,s)==="conflict"){let m=tt(t,s);e.report({...c,suggest:[{messageId:"useAlias",fix:u=>te(u,t,r,p,a,m)}]});return}e.report({...c,fix:m=>{let u=et(r)??"format";return te(m,t,r,p,a,u)}})},o=s=>{let p=sr(s);return p?(n(s,s,p),!0):!1};return{Program(s){r=s},NewExpression(s){rt(s)&&V(s.arguments[1])&&!ar(s)&&e.report({node:s,messageId:"currency"})},CallExpression(s){if(!o(s)){if(rt(s)&&V(s.arguments[1])){e.report({node:s,messageId:"currency"});return}s.callee.type==="MemberExpression"&&I(s.callee)==="toLocaleString"&&s.arguments.some(V)&&e.report({node:s,messageId:"currency"})}},TemplateLiteral(s){for(let p of s.expressions){let a=k(p);a?n(p,p,a):N(p)&&e.report({node:p,messageId:"minor"})}},JSXExpressionContainer(s){s.parent.type==="JSXAttribute"||s.expression.type==="JSXEmptyExpression"||(k(s.expression)||N(s.expression)?e.report({node:s.expression,messageId:"minor"}):U(i,s.expression)&&e.report({node:s.expression,messageId:"direct"}))}}}});var re={add:{name:"data-zappie-action",text:'data-zappie-action="add-to-cart"'},checkout:{name:"data-zappie-checkout",text:"data-zappie-checkout"},signin:{name:"data-zappie-signin",text:"data-zappie-signin"}};function or(e,t){let i=t.value?e.getText(t.value):"";if(/\b(?:cart(?:\.actions)?\.add)\s*\(/.test(i))return"add";if(/\b(?:checkout|createCheckout\([^)]*\))\.open\s*\(/.test(i))return"checkout";if(/\b(?:auth|createCustomer\([^)]*\))\.signIn\s*\(/.test(i))return"signin"}var nt=y({name:"verify-markers",meta:{type:"suggestion",docs:{description:"Mark shopping actions so verify can find them."},fixable:"code",schema:[],messages:{marker:"Add {{marker}} so zappie verify can find this shopping action."}},defaultOptions:[],create(e){return{JSXOpeningElement(t){let i=t.attributes.find(n=>n.type==="JSXAttribute"&&n.name.name==="onClick");if(!i)return;let r=or(e.sourceCode,i);!r||t.attributes.some(n=>n.type==="JSXAttribute"&&n.name.name===re[r].name)||e.report({node:i,messageId:"marker",data:{marker:re[r].text},fix:n=>n.insertTextAfter(t.name,` ${re[r].text}`)})}}}});var ot={"no-direct-api":Ie,"no-tracking-scripts":Ke,"checkout-via-sdk":Ee,"no-custom-auth":ve,"no-money-literals":ze,"use-format-money":it,"overlay-primitive":Ze,"cart-via-sdk":Se,"verify-markers":nt,"item-link-prefetch":Te,"image-priority":he,"no-lazy-overlay":Ae,"no-unsafe-html":We,"no-eval":Le,"no-external-scripts":Re,"safe-external-links":Ye,"no-unlisted-fetch":z,"no-unlisted-fetch-dynamic":He,"no-server-env-in-client":Be,"cacheable-menu-routes":ye,"no-offsite-navigation":De,"no-global-indirection":Oe,"no-document-write":Ce,"no-remote-import":Je},cr=["no-offsite-navigation","no-global-indirection","no-document-write","no-remote-import","no-eval","no-external-scripts","no-unsafe-html","safe-external-links"],se=Object.fromEntries(Object.keys(ot).map(e=>[`zappie/${e}`,e==="verify-markers"||e==="no-unlisted-fetch-dynamic"||e==="cacheable-menu-routes"?"warn":"error"])),lr={...se,"zappie/verify-markers":"error","zappie/cacheable-menu-routes":"error","zappie/no-unlisted-fetch-dynamic":["error",{dynamicOnly:!0}]};se["zappie/no-unlisted-fetch-dynamic"]=["warn",{dynamicOnly:!0}];var _={meta:{name:"eslint-plugin-zappie",version:"0.0.0"},rules:ot,configs:{}},P={name:"zappie/rules",files:["**/*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}"],languageOptions:{parser:at},plugins:{zappie:_,"jsx-a11y":st,"react-hooks":pr},rules:{...st.flatConfigs.recommended.rules,"react-hooks/rules-of-hooks":"error",...se}},ie={name:"zappie/search-dialogs",files:["**/search/**/*.{jsx,tsx}","**/*search*.{jsx,tsx}"],rules:{"jsx-a11y/no-autofocus":"off"}},ne={name:"zappie/typed",files:["**/*.{ts,tsx,mts,cts}"],languageOptions:{parserOptions:{projectService:!0}}},mr={name:"zappie/security",files:P.files,languageOptions:{parser:at},plugins:{zappie:_},rules:Object.fromEntries(cr.map(e=>[`zappie/${e}`,"error"]))};_.configs={recommended:[P,ne,ie],security:[mr],strict:[{...P,rules:{...P.rules,...lr}},ne,ie],"zappie-internal":[P,ne,ie,{name:"zappie/internal-sdk",files:["packages/sdk/src/**/*.{ts,tsx}"],rules:{"zappie/no-direct-api":"off","zappie/no-unlisted-fetch":"off","zappie/no-unlisted-fetch-dynamic":"off"}},{name:"zappie/internal-map-loader",files:["packages/foundations/src/branch-map/loader.ts"],rules:{"zappie/no-external-scripts":"off","zappie/no-global-indirection":"off"}},{name:"zappie/internal-checkout-redirect",files:["packages/sdk/src/checkout/embed.ts","packages/sdk/src/redirect/index.ts"],rules:{"zappie/no-offsite-navigation":"off"}},{name:"zappie/internal-auth-ui",files:["packages/foundations/src/otp/**/*.{ts,tsx}"],rules:{"zappie/no-custom-auth":"off"}},{name:"zappie/internal-money",files:["packages/sdk/src/money.ts","packages/sdk/src/internal/money-math.ts","packages/sdk/src/cart/branch.ts","packages/sdk/src/pricing/index.ts"],rules:{"zappie/no-money-literals":"off","zappie/use-format-money":"off"}},{name:"zappie/internal-overlay",files:["packages/foundations/src/overlay/**/*.{ts,tsx}"],rules:{"zappie/overlay-primitive":"off"}},{name:"zappie/internal-overlay-tests",files:["themes/base/src/cart/cart-review.test.tsx","themes/base/src/cart/core-cart.test.tsx","themes/base/src/cart/fulfilment.test.tsx","themes/base/src/cart/theme-class.test.tsx"],rules:{"zappie/overlay-primitive":"off"}}]};var fn=_;export{cr as SECURITY_RULES,ke as TRUSTED_NAVIGATION_ORIGINS,ye as cacheableMenuRoutes,Se as cartViaSdk,Ee as checkoutViaSdk,fn as default,he as imagePriority,Te as itemLinkPrefetch,ve as noCustomAuth,Ie as noDirectApi,Ce as noDocumentWrite,Le as noEval,Re as noExternalScripts,Oe as noGlobalIndirection,Ae as noLazyOverlay,ze as noMoneyLiterals,De as noOffsiteNavigation,Je as noRemoteImport,Be as noServerEnvInClient,Ke as noTrackingScripts,z as noUnlistedFetch,We as noUnsafeHtml,Ze as overlayPrimitive,Ye as safeExternalLinks,it as useFormatMoney,nt as verifyMarkers};
1
+ import at from"@typescript-eslint/parser";import st from"eslint-plugin-jsx-a11y";import pr from"eslint-plugin-react-hooks";import{minimatch as ut}from"minimatch";import{ESLintUtils as pt}from"@typescript-eslint/utils";var y=pt.RuleCreator(e=>`https://docs.zappie.ai/lint/${e}`);import{minimatch as ct}from"minimatch";var lt=/(?:api|accounts|checkout|edge)\.zappie\.ai|\/storefront\/v1|\/customer\/graphql/i,mt=/googletagmanager\.com|google-analytics\.com|connect\.facebook\.net|analytics\.tiktok\.com|static\.hotjar\.com|cdn\.segment\.com|plausible\.io|clarity\.ms/i,pe=/checkout\.paystack\.com|flutterwave|(?:^|\.)stripe\.com/i;function S(e){if(e?.type==="Literal"&&typeof e.value=="string")return e.value;if(e?.type==="TemplateLiteral")return e.quasis.map(t=>t.value.cooked??t.value.raw).join("")}function f(e){return!e.computed&&e.property.type==="Identifier"?e.property.name:S(e.property)}function E(e){return e.type==="TSAsExpression"||e.type==="TSTypeAssertion"||e.type==="TSNonNullExpression"?E(e.expression):e}function T(e,t,i){for(let r=e.getScope(t);r;r=r.upper){let n=r.set.get(i);if(n)return n}}function g(e,t){return e.attributes.find(i=>i.type==="JSXAttribute"&&i.name.type==="JSXIdentifier"&&i.name.name.toLowerCase()===t.toLowerCase())}function h(e){if(e?.value){if(e.value.type==="Literal")return typeof e.value.value=="string"?e.value.value:void 0;if(e.value.type==="JSXExpressionContainer")return S(e.value.expression)}}var D=e=>lt.test(e),O=e=>mt.test(e),ce=e=>e==="@zappie/sdk/internal"||e.startsWith("@zappie/sdk/internal/");function C(e,t){let i=e.replaceAll("\\","/");return t.some(r=>ct(i,r,{matchBase:!0}))}var q="{_index,index,home,menu,item,items,category,categories,catalogue,collection,collections,product,products}",F="{js,jsx,ts,tsx}",ft=[`**/app/root.${F}`,`**/app/routes/${q}.${F}`,`**/app/routes/${q}.*.${F}`,`**/app/routes/${q}/**/*.${F}`],dt=new Set(["loader","headers","middleware","unstable_middleware"]),yt=new Set(["getCustomer","zappieFetch","getSession","requireCustomer","openSealedValue"]),le=/session/i,St=new Set(["cookie","authorization"]),me=/\/_zappie\/(?:session|api\/)/,ue=e=>e.parent?.type==="Program"||e.parent?.type==="ExportNamedDeclaration";function gt(e){if(e.type==="FunctionDeclaration"&&ue(e))return e.id?.name;if(e.type==="VariableDeclarator"&&e.id.type==="Identifier"&&ue(e.parent))return e.id.name}function de(e,t){return T(e,t,t.name)?.defs[0]}function Et(e,t){if(t.type==="MemberExpression")return f(t)==="headers";if(t.type!=="Identifier")return!1;if(t.name==="headers")return!0;let i=de(e,t);if(!i)return!1;let r=i.name;for(;r.parent?.type==="AssignmentPattern";)r=r.parent;return r.parent?.type==="Property"&&r.parent.value===r&&!r.parent.computed&&r.parent.key.type==="Identifier"&&r.parent.key.name==="headers"?!0:i.node.type==="VariableDeclarator"&&i.node.id===i.name&&i.node.init?.type==="MemberExpression"&&f(i.node.init)==="headers"}var ht=e=>e?.type==="TSTypeReference"&&e.typeName.type==="Identifier"&&e.typeName.name.endsWith("SessionStore"),fe=e=>e?.type==="CallExpression"&&e.callee.type==="Identifier"&&/SessionStore$/.test(e.callee.name);function Tt(e,t){if(fe(t))return!0;if(t.type==="MemberExpression")return le.test(f(t)??"");if(t.type!=="Identifier")return!1;if(le.test(t.name))return!0;let i=de(e,t);if(!i)return!1;let r=i.name;return ht(r.typeAnnotation?.typeAnnotation)||i.node.type==="VariableDeclarator"&&i.node.id===r&&fe(i.node.init)}function bt(e){return e.callee.type==="Identifier"?e.callee.name:e.callee.type==="MemberExpression"?f(e.callee):void 0}var ye=y({name:"cacheable-menu-routes",meta:{type:"suggestion",docs:{description:"Keep the customer's session out of menu page loaders, so shared caches can keep those pages."},schema:[{type:"object",properties:{routes:{type:"array",items:{type:"string"}}},additionalProperties:!1}],messages:{sessionRead:"This menu page reads the customer's session on the server, so no shared cache can keep it. Show customer details in the browser with useCustomer() from @zappie/sdk/customer/react."}},defaultOptions:[{}],create(e,[t]){let i=e.filename.replaceAll("\\","/");if(!(t.routes??ft).some(o=>ut(i,o,{dot:!0})))return{};let r=o=>e.sourceCode.getAncestors(o).some(s=>dt.has(gt(s)??"")),n=o=>{r(o)&&e.report({node:o,messageId:"sessionRead"})};return{CallExpression(o){let s=bt(o);if(s&&yt.has(s)){n(o);return}if(s!=="get"||o.callee.type!=="MemberExpression")return;let p=o.callee.object,a=S(o.arguments[0]??null)?.toLowerCase();(a!==void 0&&St.has(a)&&Et(e.sourceCode,p)||Tt(e.sourceCode,p))&&n(o)},Literal(o){typeof o.value=="string"&&me.test(o.value)&&n(o)},TemplateLiteral(o){me.test(S(o)??"")&&n(o)}}}});var xt=/^(cart|basket|bag)(Items|Lines|Count|Total)?$/i,vt=/cart|basket|bag/i;function B(e){if(e.type==="Identifier")return e.name;if(e.type==="MemberExpression"&&e.property.type==="Identifier")return e.property.name}function It(e){return e.type==="Identifier"?e.name:e.type==="ArrayPattern"&&e.elements[0]?.type==="Identifier"?e.elements[0].name:void 0}function kt(e){let t=B(e.callee)==="useReducer"?e.arguments[1]:e.arguments[0];return!!(t&&t.type!=="SpreadElement"&&(t.type==="ArrayExpression"||t.type==="Literal"&&typeof t.value=="number"))}var Se=y({name:"cart-via-sdk",meta:{type:"problem",docs:{description:"Keep your cart state in the SDK."},schema:[],messages:{cart:"Use useCart(), useCartLine() or the SDK client cart. Keep cart state and storage in the SDK."}},defaultOptions:[],create(e){return{CallExpression(t){let i=B(t.callee),r=t.arguments[0];["getItem","setItem","removeItem","open"].includes(i??"")&&r?.type==="Literal"&&typeof r.value=="string"&&vt.test(r.value)&&e.report({node:t,messageId:"cart"})},VariableDeclarator(t){if(t.init?.type!=="CallExpression")return;let i=It(t.id),r=B(t.init.callee);i&&xt.test(i)&&["useState","useReducer","createContext"].includes(r??"")&&kt(t.init)&&e.report({node:t,messageId:"cart"}),i&&/cart/i.test(i)&&["create","createStore","atom"].includes(r??"")&&e.report({node:t,messageId:"cart"})}}}});var wt=new Set(["cc-number","cc-exp","cc-csc","cc-name"]),ge=/card.?number|cvv|cvc|expiry/i;function jt(e){return e.startsWith("@paystack/")||e==="react-paystack"||e==="flutterwave-react-v3"||e.startsWith("@stripe/")}var Ee=y({name:"checkout-via-sdk",meta:{type:"problem",docs:{description:"Open checkout through the Zappie SDK."},schema:[],messages:{checkout:"Use createCheckout().open() from @zappie/sdk/checkout. Let checkout collect payment details."}},defaultOptions:[],create(e){return{ImportDeclaration(t){jt(t.source.value)&&e.report({node:t.source,messageId:"checkout"})},JSXOpeningElement(t){let i=t.name.type==="JSXIdentifier"?t.name.name.toLowerCase():"",r=h(g(t,"autocomplete")),n=h(g(t,"name")),o=h(g(t,"id")),s=h(g(t,i==="iframe"?"src":"href")),p=i==="input"&&(r!==void 0&&wt.has(r.toLowerCase())||n!==void 0&&ge.test(n)||o!==void 0&&ge.test(o)),a=(i==="iframe"||i==="a")&&s!==void 0&&pe.test(s);(p||a)&&e.report({node:t,messageId:"checkout"})}}}});function Ct(e){let t=e;for(;t?.parent;){let i=t.parent;if((i.type==="ArrowFunctionExpression"||i.type==="FunctionExpression")&&i.parent?.type==="CallExpression"&&i.parent.callee.type==="MemberExpression"&&i.parent.callee.property.type==="Identifier"&&i.parent.callee.property.name==="map")return i;t=i}}function Lt(e,t){let i=e.getText(t.parent);if(/\.slice\(\s*0\s*,\s*1\s*\)\.map/.test(i))return!0;let r=t.params[1];return r?.type!=="Identifier"?!1:new RegExp(`${r.name}\\s*(?:={2,3}\\s*0|<\\s*1)`).test(e.getText(t))}var he=y({name:"image-priority",meta:{type:"problem",docs:{description:"Reserve priority for the first phone screen."},schema:[],messages:{mapped:"Remove priority from repeated images or limit it to the first.",routeLimit:"Keep no more than two priority images in a route."}},defaultOptions:[],create(e){let t=[];return{JSXOpeningElement(i){let r=g(i,"priority"),n=r?.value?.type==="JSXExpressionContainer"&&r.value.expression.type==="Literal"&&r.value.expression.value===!1;if(i.name.type!=="JSXIdentifier"||i.name.name!=="Image"||!r||n)return;t.push(i);let o=Ct(i);o&&!Lt(e.sourceCode,o)&&e.report({node:r,messageId:"mapped"})},"Program:exit"(){if(/(?:^|\/)routes?\/[^/]+\.[jt]sx$/.test(e.filename.replaceAll("\\","/"))&&t.length>2)for(let i of t.slice(2))e.report({node:i,messageId:"routeLimit"})}}}});function Nt(e){let t=e?.value?.type==="JSXExpressionContainer"?e.value.expression:void 0;if(t?.type==="CallExpression"&&t.callee.type==="Identifier"&&t.callee.name==="itemHref")return!0;let i=h(e);return i!==void 0&&/^\/item(?:\/|$)/.test(i)}var Te=y({name:"item-link-prefetch",meta:{type:"problem",docs:{description:"Prefetch item routes before shoppers tap."},schema:[],messages:{prefetch:'Add prefetch="viewport" so this item route is ready to tap.'}},defaultOptions:[],create(e){let t=new Set;return{ImportDeclaration(i){if(["react-router","react-router-dom"].includes(i.source.value))for(let r of i.specifiers)r.type==="ImportSpecifier"&&r.imported.type==="Identifier"&&["Link","NavLink"].includes(r.imported.name)&&t.add(r.local.name)},JSXOpeningElement(i){i.name.type==="JSXIdentifier"&&t.has(i.name.name)&&Nt(g(i,"to"))&&!g(i,"prefetch")&&e.report({node:i,messageId:"prefetch"})}}}});var Rt=["**/*.server.*","**/server/**"],K=/otp|verify.?code|access.?token|refresh.?token|id.?token/i,be=new Set(["localStorage","sessionStorage"]),Mt=new Set(["window","globalThis","self"]);function xe(e){return e.type==="Identifier"?be.has(e.name):e.type==="MemberExpression"&&!e.computed&&e.object.type==="Identifier"&&Mt.has(e.object.name)&&e.property.type==="Identifier"&&be.has(e.property.name)}function Ot(e){return!e.computed&&e.property.type==="Identifier"?e.property.name:S(e.property)}function zt(e){if(e==="jose"||e==="jsonwebtoken")return"server";if(e==="next-auth"||e.startsWith("next-auth/")||e.startsWith("@auth/")||e==="better-auth"||e.startsWith("better-auth/")||e==="lucia"||e.startsWith("@clerk/")||e==="firebase/auth"||e.startsWith("@supabase/auth-"))return"all"}var ve=y({name:"no-custom-auth",meta:{type:"problem",docs:{description:"Sign customers in through the Zappie SDK."},schema:[{type:"object",properties:{serverFiles:{type:"array",items:{type:"string"},uniqueItems:!0}},additionalProperties:!1}],messages:{auth:"Use createCustomer().signIn() from @zappie/sdk/customer to sign customers in."}},defaultOptions:[{}],create(e,[t]){let i=C(e.filename,t.serverFiles??Rt);return{ImportDeclaration(r){let n=zt(r.source.value);(n==="all"||n==="server"&&!i)&&e.report({node:r.source,messageId:"auth"})},JSXOpeningElement(r){if(r.name.type!=="JSXIdentifier"||r.name.name.toLowerCase()!=="input")return;let n=h(g(r,"type")),o=h(g(r,"autocomplete"));(n?.toLowerCase()==="password"||o!==void 0&&["one-time-code","current-password","new-password"].includes(o.toLowerCase()))&&e.report({node:r,messageId:"auth"})},CallExpression(r){if(r.callee.type!=="MemberExpression"||!xe(r.callee.object))return;let n=r.arguments[0],o=n?.type==="Identifier"?n.name:S(n??null);o&&K.test(o)&&e.report({node:r,messageId:"auth"})},AssignmentExpression(r){if(r.left.type==="MemberExpression"&&xe(r.left.object)){let s=Ot(r.left);s&&K.test(s)&&e.report({node:r,messageId:"auth"});return}let n=r.left.type==="MemberExpression"&&r.left.object.type==="Identifier"&&r.left.object.name==="document"&&r.left.property.type==="Identifier"&&r.left.property.name==="cookie",o=S(r.right);n&&o&&K.test(o)&&e.report({node:r,messageId:"auth"})}}}});function At(e){return/checkout\.zappie\.ai|\/checkout(?:\/|$)/i.test(e)?"checkout":/accounts\.zappie\.ai|\/customer\/graphql/i.test(e)?"customer":/\/storefront\/v1/i.test(e)?"storefront":"direct"}var Ie=y({name:"no-direct-api",meta:{type:"problem",docs:{description:"Call Zappie through the SDK."},schema:[],messages:{direct:"Call the matching public @zappie/sdk client to reach this Zappie endpoint.",internal:"Use a public SDK entry. Only Zappie-owned packages can import @zappie/sdk/internal.",storefront:"Use createZappie(config).store or .menu to read storefront data.",checkout:"Use createCheckout().open() from @zappie/sdk/checkout, or checkoutUrl() from @zappie/sdk/services for a link to checkout.",customer:"Use createCustomer() from @zappie/sdk/customer, or accountsUrl() from @zappie/sdk/account for a link to the accounts portal."}},defaultOptions:[],create(e){let t=i=>{if(i.parent.type==="ImportDeclaration")return;let r=S(i);r&&D(r)&&e.report({node:i,messageId:At(r)})};return{Literal:t,TemplateLiteral:t,ImportDeclaration(i){ce(i.source.value)&&e.report({node:i.source,messageId:"internal"})}}}});var ke=["https://checkout.zappie.ai","https://checkout.stg.zappie.ai","https://accounts.zappie.ai","https://accounts.stg.zappie.ai"],we=new Set(["window","globalThis","self","top","parent","frames","opener"]),Pt=new Set([...we,"defaultView","contentWindow"]),Dt=new Set(["document","ownerDocument","contentDocument"]);function z(e,t){let i=t.type==="ChainExpression"?t.expression:t;return b(e,i)==="location"||i.type==="MemberExpression"&&f(i)==="location"}function $(e,t,i){if(i.has(t.name))return;let r=T(e,t,t.name),n=r?.defs[0];if(r?.defs.length!==1||n?.type!=="Variable"||n.node.type!=="VariableDeclarator"||!n.node.init)return;i.add(t.name);let{id:o,init:s}=n.node;if(o.type==="Identifier")return s;if(o.type!=="ObjectPattern")return;let p=o.properties.find(a=>a.type==="Property"&&a.value.type==="Identifier"&&a.value.name===t.name);if(!(!p||p.computed||p.key.type!=="Identifier"))return{...s,type:"MemberExpression",object:s,property:p.key,computed:!1,optional:!1}}function L(e,t){let i=T(e,t,t.name);return!i||i.defs.length===0}function j(e,t,i){if(t.type==="ChainExpression")return j(e,t.expression,i);let r=E(t);if(r.type==="Identifier"){if(L(e,r))return we.has(r.name)?"window":r.name==="document"?"document":r.name==="location"?"location":void 0;let n=$(e,r,i);return n?j(e,n,i):void 0}if(r.type==="MemberExpression"){let n=f(r);if(n==="location"){let o=j(e,r.object,i);return o==="window"||o==="document"?"location":void 0}return n&&Pt.has(n)?"window":n&&Dt.has(n)?"document":void 0}if(r.type==="LogicalExpression")return j(e,r.left,i)??j(e,r.right,i);if(r.type==="ConditionalExpression")return j(e,r.consequent,i)??j(e,r.alternate,i)}function b(e,t){return j(e,t,new Set)}function x(e,t,i=new Set){if(!t||t.type==="SpreadElement")return;let r=E(t);if(r.type==="Literal")return typeof r.value=="string"?r.value:void 0;if(r.type==="TemplateLiteral"){let n=[];for(let[o,s]of r.quasis.entries()){n.push(s.value.cooked??s.value.raw);let p=r.expressions[o];if(p){let a=x(e,p,i);if(a===void 0)return;n.push(a)}}return n.join("")}if(r.type==="BinaryExpression"&&r.operator==="+"){let n=x(e,r.left,i),o=x(e,r.right,i);return n===void 0||o===void 0?void 0:n+o}if(r.type==="Identifier"){let n=$(e,r,i);return n?x(e,n,i):void 0}}function v(e,t,i=new Set){if(!t||t.type==="SpreadElement")return"";let r=x(e,t,new Set(i));if(r!==void 0)return r;let n=E(t);if(n.type==="TemplateLiteral"){let o="";for(let[s,p]of n.quasis.entries()){o+=p.value.cooked??p.value.raw;let a=n.expressions[s];if(!a)break;let c=x(e,a,new Set(i));if(c===void 0)return o+v(e,a,i);o+=c}return o}if(n.type==="BinaryExpression"&&n.operator==="+"){let o=x(e,n.left,new Set(i));return o===void 0?v(e,n.left,i):o+v(e,n.right,i)}if(n.type==="Identifier"){let o=$(e,n,i);return o?v(e,o,i):""}return""}function H(e,t,i=ke){let r=e.replace(/[\t\n\r]/g,"").replaceAll("\\","/");return/^\s/.test(r)?!1:/^(?:[?#]|\/[^/])/.test(r)||/^(?:tel|mailto|sms):/i.test(r)||t&&r==="/"?!0:/^[a-z][a-z\d+.-]*:|^\/\//i.test(r)?i.some(n=>t?r===n||r.toLowerCase().startsWith(`${n}/`):r.toLowerCase().startsWith(`${n}/`)):t&&r.length>0&&!r.includes(":")}function je(e){let t=e.replace(/[\t\n\r]/g,"").replaceAll("\\","/");return/^\s*(?:[a-z][a-z\d+.-]*:|\/\/)/i.test(t)}var Ce=y({name:"no-document-write",meta:{type:"problem",docs:{description:"Render markup with React, not document.write."},schema:[],messages:{write:"Remove document.write. Render the markup with React so it ships in the storefront bundle."}},defaultOptions:[],create(e){return{CallExpression(t){let i=t.callee,r=i.type==="MemberExpression"?f(i):void 0;i.type==="MemberExpression"&&(r==="write"||r==="writeln")&&b(e.sourceCode,i.object)==="document"&&e.report({node:t,messageId:"write"})}}}});function W(e,t){let i=E(t);if(i.type==="Identifier")return i.name;if(i.type==="SequenceExpression"){let r=i.expressions.at(-1);return r?W(e,r):void 0}if(i.type==="MemberExpression"&&b(e,i.object)==="window")return f(i)}function G(e){return!e||e.type==="SpreadElement"?!1:S(e)!==void 0?!0:e.type==="BinaryExpression"&&e.operator==="+"&&(G(e.left)||G(e.right))}var Le=y({name:"no-eval",meta:{type:"problem",docs:{description:"Do not execute strings as code."},schema:[],messages:{eval:"Remove code generated from a string. Ship executable code in the storefront bundle."}},defaultOptions:[],create(e){return{CallExpression(t){let i=W(e.sourceCode,t.callee),r=t.callee.type==="MemberExpression"&&f(t.callee)==="constructor";if(i==="eval"||i==="Function"||r){e.report({node:t,messageId:"eval"});return}["setTimeout","setInterval"].includes(i??"")&&G(t.arguments[0])&&e.report({node:t,messageId:"eval"})},NewExpression(t){let i=t.callee;(W(e.sourceCode,i)==="Function"||i.type==="MemberExpression"&&f(i)==="constructor")&&e.report({node:t,messageId:"eval"})}}}});var Ne=e=>!!(e&&/^\s*(?:[a-z][a-z\d+.-]*:|\/\/|\\\\)/i.test(e.replace(/[\t\n\r]/g,""))),Re=y({name:"no-external-scripts",meta:{type:"problem",docs:{description:"Ship scripts in the storefront bundle."},schema:[],messages:{externalScript:"Remove the external script. Install reviewed code as a package so it ships in the storefront bundle."}},defaultOptions:[],create(e){return{JSXOpeningElement(t){if(t.name.type!=="JSXIdentifier")return;let i=t.name.name.toLowerCase();if(i==="script"){let s=g(t,"src"),p=h(s),a=s?.value?.type==="JSXExpressionContainer"&&!(s.value.expression.type==="Literal"||s.value.expression.type==="TemplateLiteral"&&s.value.expression.expressions.length===0);s&&(a||p===void 0||Ne(p)&&!O(p))&&e.report({node:t,messageId:"externalScript"});return}if(i!=="link")return;let r=h(g(t,"rel"))?.toLowerCase(),n=h(g(t,"as"))?.toLowerCase(),o=h(g(t,"href"));(r==="preload"&&n==="script"||r==="modulepreload")&&Ne(o)&&!O(o??"")&&e.report({node:t,messageId:"externalScript"})},CallExpression(t){if(t.callee.type==="MemberExpression"&&f(t.callee)==="createElement"&&b(e.sourceCode,t.callee.object)==="document"&&S(t.arguments[0]??null)?.toLowerCase()==="script"){e.report({node:t,messageId:"externalScript"});return}t.callee.type==="MemberExpression"&&!t.callee.computed&&t.callee.object.type==="Identifier"&&t.callee.object.name==="React"&&t.callee.property.type==="Identifier"&&t.callee.property.name==="createElement"&&S(t.arguments[0]??null)?.toLowerCase()==="script"&&t.arguments[1]?.type==="ObjectExpression"&&t.arguments[1].properties.find(n=>n.type==="Property"&&(n.key.type==="Identifier"&&n.key.name==="src"||S(n.key)==="src"))&&e.report({node:t,messageId:"externalScript"})}}}});var Me=new Set(["location","href","host","hostname","origin","protocol","port"]);function Ft(e,t){if(t==="defineProperty"){let r=S(e.arguments[1]??null);return r!==void 0&&!Me.has(r)}let i=e.arguments.slice(1);return t==="assign"&&i.length>0&&i.every(r=>r.type==="ObjectExpression"&&r.properties.every(n=>n.type==="Property"&&!n.computed&&n.key.type==="Identifier"&&!Me.has(n.key.name)))}var Xt={Reflect:new Set(["get","set","apply","defineProperty","getOwnPropertyDescriptor"]),Object:new Set(["assign","defineProperty","defineProperties","getOwnPropertyDescriptor","getOwnPropertyDescriptors","setPrototypeOf"])},Oe=y({name:"no-global-indirection",meta:{type:"problem",docs:{description:"Reach window, document and location by name, so every use can be reviewed."},schema:[],messages:{computed:"Name the property with dot access. Computed access to window, document or location hides what the code reaches.",reflection:"Use window, document or location directly. Reflection on them hides what the code reaches."}},defaultOptions:[],create(e){let t=e.sourceCode,i=r=>b(t,r)!==void 0||z(t,r);return{MemberExpression(r){r.computed&&!(r.property.type==="Literal"&&typeof r.property.value=="number")&&i(r.object)&&e.report({node:r,messageId:"computed"})},VariableDeclarator(r){r.id.type==="ObjectPattern"&&r.init&&i(r.init)&&r.id.properties.some(n=>n.type==="Property"&&n.computed)&&e.report({node:r,messageId:"computed"})},CallExpression(r){let n=r.callee;if(n.type!=="MemberExpression"||n.object.type!=="Identifier")return;let o=Xt[n.object.name],s=f(n),p=r.arguments[0];o&&s&&o.has(s)&&p&&p.type!=="SpreadElement"&&i(p)&&!(n.object.name==="Object"&&b(t,p)!=="location"&&!z(t,p)&&Ft(r,s))&&e.report({node:r,messageId:"reflection"})}}}});var Ut=new Set(["react"]),Jt="React",ze=y({name:"no-lazy-overlay",meta:{type:"problem",docs:{description:"Load overlays with deferred() from @zappie/foundations, not React.lazy or Suspense."},schema:[],messages:{lazy:"Load this component with deferred() from @zappie/foundations. React.lazy suspends, and React holds a suspended reveal back for about 300 ms, so the overlay opens late.",suspense:"Remove Suspense and load the component with deferred() from @zappie/foundations. It renders as soon as its code arrives and never suspends."}},defaultOptions:[],create(e){let t=new Set,i=new Set,r=new Set([Jt]),n=(o,s,p)=>o.type==="Identifier"&&r.has(o.name)&&s.type==="Identifier"&&s.name===p;return{ImportDeclaration(o){if(Ut.has(o.source.value))for(let s of o.specifiers){if(s.type!=="ImportSpecifier"){r.add(s.local.name);continue}let p=s.imported.type==="Identifier"?s.imported.name:s.imported.value;p==="lazy"?t.add(s.local.name):p==="Suspense"&&i.add(s.local.name)}},CallExpression(o){let s=o.callee;(s.type==="Identifier"&&t.has(s.name)||s.type==="MemberExpression"&&!s.computed&&n(s.object,s.property,"lazy"))&&e.report({node:o,messageId:"lazy"})},JSXOpeningElement(o){let s=o.name;(s.type==="JSXIdentifier"&&i.has(s.name)||s.type==="JSXMemberExpression"&&s.object.type==="JSXIdentifier"&&r.has(s.object.name)&&s.property.name==="Suspense")&&e.report({node:o,messageId:"suspense"})}}}});import{ESLintUtils as Vt}from"@typescript-eslint/utils";var _t=/[₦€£]\s?\d|\$\s?\d|NGN\s?\d|\d+(?:\.\d{2})?\s?(?:naira|NGN)/i;function X(e){return e.trim()!=="$1"&&_t.test(e)}function I(e){if(e.type==="MemberExpression"){if(!e.computed&&e.property.type==="Identifier")return e.property.name;if(e.computed&&e.property.type==="Literal")return typeof e.property.value=="string"?e.property.value:void 0}}var N=e=>I(e)==="amountMinor";function qt(e){return e.type==="MemberExpression"&&N(e)?e.object:void 0}function k(e){if(!(e.type!=="BinaryExpression"||e.operator!=="/"||e.right.type!=="Literal"||e.right.value!==100))return qt(e.left)}function U(e){try{return Vt.getParserServices(e,!0)}catch{return}}function Bt(e){return e.getName().includes("MoneyBrand")?(e.getDeclarations()??[]).some(t=>{let i=t.getSourceFile().fileName.replaceAll("\\","/");return i.endsWith("/packages/sdk/src/money.ts")||/\/node_modules\/@zappie\/sdk\/.*\.d\.ts$/.test(i)}):!1}function J(e,t){if(!e?.program)return!1;let i=e.program.getTypeChecker(),r=e.esTreeNodeToTSNodeMap.get(t),n=i.getTypeAtLocation(r);return(n.isUnionOrIntersection()?n.types:[n]).some(s=>s.getProperties().some(p=>Bt(p)))}function V(e){return e?.type!=="ObjectExpression"?!1:e.properties.some(t=>t.type==="Property"&&!t.computed&&(t.key.type==="Identifier"&&t.key.name==="style"||t.key.type==="Literal"&&t.key.value==="style")&&t.value.type==="Literal"&&t.value.value==="currency")}var Ae=y({name:"no-money-literals",meta:{type:"problem",docs:{description:"Use SDK prices and totals in your storefront."},schema:[],messages:{arithmetic:"Use cart.subtotal, line.lineSubtotal, quote.subtotal, quote.lines totals or quote.total. Let the SDK calculate amounts.",literal:"Render SDK Money with format.money() or <Money> instead of a hard-coded amount.",scale:"Use format.money() to display amountMinor. Currencies use 0, 2, 3 or 4 minor-unit digits."}},defaultOptions:[],create(e){let t=U(e),i=r=>N(r)||J(t,r);return{Literal(r){typeof r.value=="string"&&r.parent.type!=="ImportDeclaration"&&X(r.value)&&e.report({node:r,messageId:"literal"})},JSXText(r){X(r.value)&&e.report({node:r,messageId:"literal"})},BinaryExpression(r){["+","-","*","/"].includes(r.operator)&&(k(r)&&r.parent.type==="MemberExpression"&&r.parent.object===r&&I(r.parent)==="toFixed"||(i(r.left)||i(r.right))&&e.report({node:r,messageId:"arithmetic"}))},TemplateLiteral(r){for(let n of r.quasis)X(n.value.cooked??n.value.raw)&&e.report({node:n,messageId:"literal"})},CallExpression(r){r.callee.type==="MemberExpression"&&I(r.callee)==="toFixed"&&r.arguments[0]?.type==="Literal"&&r.arguments[0].value===2&&k(r.callee.object)&&e.report({node:r,messageId:"scale"})}}}});var Kt=new Set(["host","hostname","origin","protocol","port"]),$t=new Set(["navigate","redirect","redirectDocument"]),Pe={safeRedirect:"@zappie/sdk/redirect",checkoutUrl:"@zappie/sdk/services",appUrl:"@zappie/sdk/services",accountsUrl:"@zappie/sdk/account"},De=y({name:"no-offsite-navigation",meta:{type:"problem",docs:{description:"Keep shoppers on the site unless they follow a link themselves."},schema:[],messages:{offsite:"Navigate with a router link, navigate() to a path on this site, or an SDK helper such as redirectToCheckout from @zappie/sdk/redirect, checkoutUrl from @zappie/sdk/services, or accountsUrl from @zappie/sdk/account. Use a plain <a href> for a page on another site.",refresh:"Remove the refresh. Send the shopper on with a router redirect to a path on this site.",anchorClick:"Render an <a href> the shopper clicks instead of clicking a link from code."}},defaultOptions:[],create(e){let t=e.sourceCode,i=l=>b(t,l)==="location",r=l=>z(t,l),n=l=>{if(!l||l.type==="SpreadElement")return!1;let m=E(l);if(m.type==="CallExpression"&&o(m))return!0;if(m.type==="ConditionalExpression"||m.type==="LogicalExpression"){let[d,w]=m.type==="ConditionalExpression"?[m.consequent,m.alternate]:[m.left,m.right];return n(d)&&n(w)}let u=x(t,m);return u===void 0?H(v(t,m),!1):H(u,!0)},o=l=>l.callee.type!=="Identifier"?!1:!!T(t,l.callee,l.callee.name)?.defs.some(u=>u.type==="ImportBinding"&&u.node.type==="ImportSpecifier"&&u.node.imported.type==="Identifier"&&u.parent?.type==="ImportDeclaration"&&Object.hasOwn(Pe,u.node.imported.name)&&u.parent.source.value===Pe[u.node.imported.name]),s=l=>{if(!l||l.type==="SpreadElement")return!1;let m=v(t,l);return je(m)&&!n(l)},p=l=>{let m=l.callee;if(m.type==="Identifier"){if($t.has(m.name))return!0;let d=T(t,m,m.name)?.defs[0];return d?.type==="Variable"&&d.node.type==="VariableDeclarator"&&d.node.init?.type==="CallExpression"&&d.node.init.callee.type==="Identifier"&&d.node.init.callee.name==="useNavigate"}return m.type==="MemberExpression"&&f(m)==="redirect"&&m.object.type==="Identifier"&&m.object.name==="Response"},a=new Map,c=(l,m)=>{l.type==="Identifier"&&a.has(l.name)&&a.set(l.name,a.get(l.name)!=="unsafe"&&n(m)?"safe":"unsafe")};return{AssignmentExpression(l){let m=l.left;if(m.type==="MemberExpression"&&f(m)==="href"&&c(m.object,l.right),(m.type==="Identifier"||m.type==="MemberExpression")&&i(m)&&!n(l.right)){e.report({node:l,messageId:"offsite"});return}if(m.type!=="MemberExpression"||!r(m.object))return;let u=f(m);(u===void 0||Kt.has(u)||u==="href"&&!n(l.right))&&e.report({node:l,messageId:"offsite"})},CallExpression(l){let m=l.callee;if(m.type==="MemberExpression"){let u=f(m);if((u==="assign"||u==="replace")&&r(m.object)&&!n(l.arguments[0])){e.report({node:l,messageId:"offsite"});return}if(u==="open"&&b(t,m.object)==="window"&&!n(l.arguments[0])){e.report({node:l,messageId:"offsite"});return}if((u==="set"||u==="append")&&S(l.arguments[0]??null)?.toLowerCase()==="refresh"){e.report({node:l,messageId:"refresh"});return}if(u==="setAttribute"&&S(l.arguments[0]??null)?.toLowerCase()==="href"&&c(m.object,l.arguments[1]),u==="click"&&m.object.type==="Identifier"&&a.has(m.object.name)&&a.get(m.object.name)!=="safe"){e.report({node:l,messageId:"anchorClick"});return}}if(m.type==="Identifier"&&m.name==="open"&&L(t,m)&&!n(l.arguments[0])){e.report({node:l,messageId:"offsite"});return}p(l)&&s(l.arguments[0])&&e.report({node:l,messageId:"offsite"})},VariableDeclarator(l){let m=l.init&&E(l.init);l.id.type==="Identifier"&&m?.type==="CallExpression"&&m.callee.type==="MemberExpression"&&f(m.callee)==="createElement"&&b(t,m.callee.object)==="document"&&S(m.arguments[0]??null)?.toLowerCase()==="a"&&a.set(l.id.name,"none")},JSXOpeningElement(l){if(l.name.type!=="JSXIdentifier")return;let m=l.name.name;if(m.toLowerCase()==="meta"){let u=g(l,"httpEquiv")??g(l,"http-equiv"),d=u&&h(u);u&&(d===void 0||d.toLowerCase()==="refresh")&&e.report({node:l,messageId:"refresh"});return}if(m==="Navigate"){let u=g(l,"to"),d=u?.value?.type==="JSXExpressionContainer"&&u.value.expression.type!=="JSXEmptyExpression"?u.value.expression:u?.value;d&&s(d)&&e.report({node:l,messageId:"offsite"})}},Property(l){let m=l.key.type==="Identifier"&&!l.computed?l.key.name:S(l.key),u=l.value;if(!m)return;let d=m.toLowerCase();if((d==="httpequiv"||d==="http-equiv")&&S(u)?.toLowerCase()==="refresh"){e.report({node:l,messageId:"refresh"});return}d==="refresh"&&/^\s*\d/.test(S(u)??"")&&e.report({node:l,messageId:"refresh"})}}}});var Z=e=>/^\s*(?:https?:|data:|blob:|\/\/|\\\\)/i.test(e.replace(/[\t\n\r]/g,"")),Ht=new Set(["Worker","SharedWorker"]),Fe=e=>e!==void 0&&/^\.\.?\//.test(e);function Xe(e,t){let i=E(t);if(i.type==="MemberExpression"&&f(i)==="href"&&(i=E(i.object)),i.type==="Identifier"){let n=T(e,i,i.name),o=n?.defs[0];return n?.defs.length!==1||o?.type!=="Variable"||o.node.type!=="VariableDeclarator"||o.parent?.type!=="VariableDeclaration"||o.parent.kind!=="const"||!o.node.init?!1:!n.references.some(p=>{let a=p.identifier.parent;return a.type==="MemberExpression"&&a.object===p.identifier&&a.parent.type==="AssignmentExpression"&&a.parent.left===a&&!["search","hash"].includes(f(a)??"")})&&Xe(e,o.node.init)}let r=i.type==="NewExpression"?i.arguments[1]:void 0;return i.type==="NewExpression"&&i.callee.type==="Identifier"&&i.callee.name==="URL"&&Fe(x(e,i.arguments[0]))&&r?.type==="MemberExpression"&&r.object.type==="MetaProperty"&&f(r)==="url"}var Ue=y({name:"no-remote-import",meta:{type:"problem",docs:{description:"Load code from the storefront bundle only."},schema:[],messages:{remote:"Install the code as a package so it ships in the storefront bundle. Code loaded from a URL changes without review.",computed:"Import a file in the project. A computed import must start with ./ or ../ so the bundler can see every file it may load."}},defaultOptions:[],create(e){let t=e.sourceCode,i=(n,o)=>{if(!o||o.type==="SpreadElement")return;let s=x(t,o),p=s??v(t,o);if(Z(p)){e.report({node:n,messageId:"remote"});return}s===void 0&&!Fe(p)&&!Xe(t,o)&&e.report({node:n,messageId:"computed"})},r=n=>{n.source&&Z(n.source.value)&&e.report({node:n,messageId:"remote"})};return{ImportExpression(n){i(n,n.source)},ImportDeclaration:r,ExportAllDeclaration:r,ExportNamedDeclaration:r,NewExpression(n){if(n.callee.type==="Identifier"&&Ht.has(n.callee.name)&&L(t,n.callee)){let o=n.arguments[0];o&&o.type!=="SpreadElement"&&Z(v(t,o))&&e.report({node:n,messageId:"remote"})}},CallExpression(n){n.callee.type==="Identifier"&&n.callee.name==="importScripts"&&L(t,n.callee)&&e.report({node:n,messageId:"remote"})}}}});var Wt=["**/*.server.{js,jsx,ts,tsx,mjs,cjs,mts,cts}","**/app/.server/**","**/app/server.ts","**/test/**","**/tests/**","**/__tests__/**","**/*.{test,spec}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}","**/*.config.{js,ts,mjs,cjs,mts,cts}"],Gt=new Set(["MODE","DEV","PROD","SSR","BASE_URL"]);function Je(e){if(e.type==="FunctionDeclaration")return e.id?.name;if(e.type!=="FunctionExpression"&&e.type!=="ArrowFunctionExpression")return;let t=e.parent;if(t.type==="VariableDeclarator"&&t.id.type==="Identifier")return t.id.name;if(t.type==="Property")return t.key.type==="Identifier"?t.key.name:S(t.key)}function Ve(e){if(e.type==="MemberExpression"&&e.object.type==="Identifier"&&e.object.name==="process"&&f(e)==="env")return"process";if(e.type==="MemberExpression"&&e.object.type==="MetaProperty"&&e.object.meta.name==="import"&&e.object.property.name==="meta"&&f(e)==="env")return"vite"}function _e(e){return e.type!=="MemberExpression"||f(e)!=="cloudflare"?!1:e.object.type==="Identifier"&&e.object.name==="context"||e.object.type==="MemberExpression"&&f(e.object)==="context"}function qe(e,t,i=!1){return e==="process"?t!=="NODE_ENV"&&!(i&&t?.startsWith("NEXT_PUBLIC_ZAPPIE_")):t===void 0||!t.startsWith("VITE_ZAPPIE_")&&!Gt.has(t)}var Be=y({name:"no-server-env-in-client",meta:{type:"problem",docs:{description:"Read server environment values only in server code."},schema:[],messages:{serverEnv:"Move this environment read into a loader, action, *.server.ts file, app/.server/ or app/server.ts so it cannot reach the client bundle."}},defaultOptions:[],create(e){let t=e.filename.replaceAll("\\","/");if(C(t,Wt)||/(?:^|\/)(?:test|tests|__tests__)(?:\/|$)/.test(t)||/\.(?:test|spec|config)\.[cm]?[jt]sx?$/.test(t))return{};let i=new Map,r=new Set,n=a=>e.sourceCode.getAncestors(a).some(c=>["loader","action"].includes(Je(c)??"")),o=a=>{let c=Ve(a);return c||(a.type==="Identifier"?i.get(a.name):void 0)},s=a=>{if(a.type==="ObjectPattern")for(let c of a.properties)c.type==="Property"&&(c.key.type==="Identifier"&&c.key.name==="cloudflare"||S(c.key)==="cloudflare")&&c.value.type==="Identifier"&&r.add(c.value.name),c.type==="Property"&&(c.key.type==="Identifier"&&c.key.name==="context"||S(c.key)==="context")&&s(c.value)},p=a=>{if(!(n(a)||["loader","action"].includes(Je(a)??"")))for(let c of a.params)c.type!=="RestElement"&&s(c)};return{ArrowFunctionExpression:p,FunctionDeclaration:p,FunctionExpression:p,VariableDeclarator(a){if(n(a)||!a.init)return;let c=o(a.init);if(a.id.type==="Identifier"&&c){i.set(a.id.name,c);return}if(a.id.type==="ObjectPattern"&&c){for(let l of a.id.properties){let m=l.type==="Property"?l.key.type==="Identifier"?l.key.name:S(l.key):void 0;qe(c,m)&&e.report({node:l,messageId:"serverEnv"})}return}if(a.id.type==="ObjectPattern"&&_e(a.init))for(let l of a.id.properties)l.type==="Property"&&(l.key.type==="Identifier"&&l.key.name==="env"||S(l.key)==="env")&&e.report({node:l,messageId:"serverEnv"})},MemberExpression(a){if(n(a))return;let c=o(a.object);if(c&&qe(c,f(a),Ve(a.object)===c)){e.report({node:a,messageId:"serverEnv"});return}f(a)==="env"&&(_e(a.object)||a.object.type==="Identifier"&&r.has(a.object.name))&&e.report({node:a,messageId:"serverEnv"})}}}});var Zt=["react-ga4","react-facebook-pixel","@vercel/analytics","posthog-js"];function Yt(e){return Zt.includes(e)||e.startsWith("@segment/")}var Ke=y({name:"no-tracking-scripts",meta:{type:"problem",docs:{description:"Forward analytics through Zappie."},schema:[],messages:{tracking:"Configure analytics.forward in zappie.config.ts to forward analytics. Remove the tracking script."}},defaultOptions:[],create(e){let t=i=>{if(i.parent.type==="ImportDeclaration")return;let r=S(i);r&&O(r)&&e.report({node:i,messageId:"tracking"})};return{Literal:t,TemplateLiteral:t,ImportDeclaration(i){Yt(i.source.value)&&e.report({node:i.source,messageId:"tracking"})},CallExpression(i){let r=i.callee,n=r.type==="Identifier"&&["gtag","fbq"].includes(r.name),o=r.type==="MemberExpression"&&!r.computed&&r.object.type==="Identifier"&&r.object.name==="dataLayer"&&r.property.type==="Identifier"&&r.property.name==="push";(n||o)&&e.report({node:i,messageId:"tracking"})}}}});function $e(e){let t=S(e??null);if(t!==void 0)return t;if(e?.type==="NewExpression"&&e.callee.type==="Identifier"&&e.callee.name==="URL")return $e(e.arguments[0])}function Qt(e){if(!(!/^(?:https?|wss?):\/\//i.test(e)&&!e.startsWith("//")))try{return new URL(e,"https://storefront.invalid").hostname.toLowerCase()}catch{return}}function er(e,t){return t.some(i=>{let r=i.toLowerCase();return r.startsWith("*.")?e.endsWith(r.slice(1))&&e!==r.slice(2):e===r})}var A=y({name:"no-unlisted-fetch",meta:{type:"problem",docs:{description:"List every external request host in outbound.allow."},schema:[{type:"object",properties:{dynamicOnly:{type:"boolean"}},additionalProperties:!1}],messages:{dynamicRequest:"This request URL is computed. Review its possible hosts and list each external host in zappie.config.ts outbound.allow.",unlistedRequest:"Add {{host}} to zappie.config.ts outbound.allow, or remove this external request."}},defaultOptions:[{}],create(e,[t]){let i=e.filename.replaceAll("\\","/");if(C(i,["**/test/**","**/tests/**","**/__tests__/**","**/*.{test,spec}.{js,jsx,ts,tsx,mjs,cjs,mts,cts}"])||/(?:^|\/)(?:test|tests|__tests__)(?:\/|$)/.test(i)||/\.(?:test|spec)\.[cm]?[jt]sx?$/.test(i))return{};let r=e.settings?.zappie?.outboundAllow,n=Array.isArray(r)?r.filter(p=>typeof p=="string"):[],o=new Set,s=(p,a)=>{let c=$e(a);if(c===void 0){t.dynamicOnly&&e.report({node:p,messageId:"dynamicRequest"});return}if(t.dynamicOnly)return;let l=Qt(c);!l||D(c)||er(l,n)||e.report({node:p,messageId:"unlistedRequest",data:{host:l}})};return{VariableDeclarator(p){p.id.type==="Identifier"&&p.init?.type==="NewExpression"&&p.init.callee.type==="Identifier"&&p.init.callee.name==="XMLHttpRequest"&&o.add(p.id.name)},CallExpression(p){if(p.callee.type==="Identifier"&&p.callee.name==="fetch"||p.callee.type==="MemberExpression"&&f(p.callee)==="fetch"&&p.callee.object.type==="Identifier"&&["window","globalThis"].includes(p.callee.object.name)){s(p,p.arguments[0]);return}if(p.callee.type!=="MemberExpression")return;let c=f(p.callee);if(c==="sendBeacon"&&p.callee.object.type==="Identifier"&&p.callee.object.name==="navigator"){s(p,p.arguments[0]);return}c==="open"&&(p.callee.object.type==="Identifier"&&o.has(p.callee.object.name)||p.callee.object.type==="NewExpression"&&p.callee.object.callee.type==="Identifier"&&p.callee.object.callee.name==="XMLHttpRequest")&&s(p,p.arguments[1])},NewExpression(p){p.callee.type==="Identifier"&&["WebSocket","EventSource"].includes(p.callee.name)&&s(p,p.arguments[0])}}}}),He={...A,meta:{...A.meta,docs:{...A.meta.docs,url:"https://docs.zappie.ai/lint/no-unlisted-fetch-dynamic"}}};function tr(e){return e.properties.find(t=>t.type==="Property"&&!t.computed&&(t.key.type==="Identifier"&&t.key.name==="__html"||S(t.key)==="__html"))?.value}var We=y({name:"no-unsafe-html",meta:{type:"problem",docs:{description:"Sanitize rich text before inserting HTML."},schema:[],messages:{unsafeHtml:"Pass the HTML straight through a sanitizer created with createSanitizeRichText from @zappie/foundations/rich-text."}},defaultOptions:[],create(e){let t=e.sourceCode,i=s=>!!T(t,s,s.name)?.defs.some(a=>a.type==="ImportBinding"&&a.node.type==="ImportSpecifier"&&a.node.imported.type==="Identifier"&&a.node.imported.name==="createSanitizeRichText"&&a.parent?.type==="ImportDeclaration"&&a.parent.source.value==="@zappie/foundations/rich-text"),r=s=>!!T(t,s,s.name)?.defs.some(a=>{if(a.type!=="Variable"||a.node.type!=="VariableDeclarator")return!1;let c=a.node.init;return c?.type==="CallExpression"&&c.callee.type==="Identifier"&&i(c.callee)}),n=(s,p=new Set)=>{if(!s||s.type==="SpreadElement")return!1;let a=E(s);if(a.type==="Literal")return a.value==="";if(a.type==="ConditionalExpression")return n(a.consequent,p)&&n(a.alternate,p);if(a.type==="LogicalExpression")return n(a.left,p)&&n(a.right,p);if(a.type==="CallExpression")return a.callee.type==="Identifier"&&r(a.callee)?!0:a.callee.type==="CallExpression"&&a.callee.callee.type==="Identifier"&&i(a.callee.callee);if(a.type!=="Identifier")return!1;let c=T(t,a,a.name);if(!c||p.has(c))return!1;let l=new Set(p).add(c);for(let m of c.defs){if(m.type!=="Variable"||m.node.type!=="VariableDeclarator")continue;if(m.node.id.type==="Identifier")return n(m.node.init,l);if(m.node.id.type!=="ArrayPattern"||m.node.id.elements[0]?.type!=="Identifier"||m.node.id.elements[0].name!==a.name||m.node.init?.type!=="CallExpression"||m.node.init.callee.type!=="Identifier"||m.node.init.callee.name!=="useState")continue;let u=m.node.init.arguments[0],d=m.node.id.elements[1];if(!n(u,l)||d?.type!=="Identifier")return!1;let ae=T(t,d,d.name)?.references.filter(M=>M.identifier.parent.type==="CallExpression"&&M.identifier.parent.callee===M.identifier)??[];return ae.length>0&&ae.every(M=>{let oe=M.identifier.parent;return oe.type==="CallExpression"&&n(oe.arguments[0],l)})}return!1},o=(s,p)=>{(p?.type!=="ObjectExpression"||!n(tr(p)))&&e.report({node:s,messageId:"unsafeHtml"})};return{JSXAttribute(s){if(s.name.type!=="JSXIdentifier")return;let p=s.name.name.toLowerCase();!["dangerouslysetinnerhtml","srcdoc"].includes(p)||s.value?.type!=="JSXExpressionContainer"||(p==="dangerouslysetinnerhtml"?o(s,s.value.expression):n(s.value.expression)||e.report({node:s,messageId:"unsafeHtml"}))},JSXSpreadAttribute(s){if(s.argument.type!=="ObjectExpression")return;let p=s.argument.properties.find(a=>a.type==="Property"&&(a.key.type==="Identifier"&&a.key.name==="dangerouslySetInnerHTML"||S(a.key)==="dangerouslySetInnerHTML"));p&&o(s,p.value)},JSXElement(s){if(s.openingElement.name.type==="JSXIdentifier"&&s.openingElement.name.name.toLowerCase()==="script")for(let p of s.children)p.type==="JSXExpressionContainer"&&p.expression.type!=="JSXEmptyExpression"&&e.report({node:p,messageId:"unsafeHtml"})},AssignmentExpression(s){s.left.type==="MemberExpression"&&["innerHTML","outerHTML","srcdoc"].includes(f(s.left)??"")&&!n(s.right)&&e.report({node:s,messageId:"unsafeHtml"})},CallExpression(s){if(s.callee.type==="MemberExpression"&&f(s.callee)==="insertAdjacentHTML"){n(s.arguments[1])||e.report({node:s,messageId:"unsafeHtml"});return}if(s.callee.type==="MemberExpression"&&["createContextualFragment","setHTMLUnsafe"].includes(f(s.callee)??"")){n(s.arguments[0])||e.report({node:s,messageId:"unsafeHtml"});return}if(!(s.callee.type==="Identifier"&&s.callee.name==="createElement"||s.callee.type==="MemberExpression"&&f(s.callee)==="createElement"&&s.callee.object.type==="Identifier"&&s.callee.object.name==="React"))return;if(S(s.arguments[0]??null)?.toLowerCase()==="script")for(let l of s.arguments.slice(2))l.type!=="SpreadElement"&&e.report({node:l,messageId:"unsafeHtml"});let a=s.arguments[1];if(a?.type!=="ObjectExpression")return;let c=a.properties.find(l=>l.type==="Property"&&(l.key.type==="Identifier"&&l.key.name==="dangerouslySetInnerHTML"||S(l.key)==="dangerouslySetInnerHTML"));c&&o(s,c.value)}}}});var rr=["modal","sheet","drawer","dialog","item","cart","cart_sheet","cart_edit","cart_clear","search","catalogue_search","catalogue_categories","product_note","modal_id"];function Y(e){if(e.type==="Identifier")return e.name;if(e.type==="MemberExpression"&&e.property.type==="Identifier")return e.property.name}function Ge(e,t){return e.type==="Literal"&&typeof e.value=="string"?[...t].some(i=>new RegExp(`[?&]${i}=`).test(e.value)):e.type==="TemplateLiteral"?e.quasis.some(i=>Ge({...i,type:"Literal",value:i.value.raw},t)):e.type==="ObjectExpression"?e.properties.some(i=>i.type==="Property"&&(i.key.type==="Identifier"&&t.has(i.key.name)||i.key.type==="Literal"&&typeof i.key.value=="string"&&t.has(i.key.value))):!1}var Ze=y({name:"overlay-primitive",meta:{type:"problem",docs:{description:"Use Overlay to keep dialogs and sheets in the URL."},schema:[{type:"object",properties:{keys:{type:"array",items:{type:"string"}}},additionalProperties:!1}],messages:{overlay:"Use Overlay or useOverlay for dialogs and sheets in the URL. They handle Back, Forward and focus restoration."}},defaultOptions:[{}],create(e,[t]){let i=new Set([...rr,...t.keys??[]]),r=new Set,n=o=>{let s=e.sourceCode.getText(o);return s.includes("useSearchParams(")||[...r].some(p=>new RegExp(`\\b${p}\\b`).test(s))};return{VariableDeclarator(o){o.init?.type==="CallExpression"&&Y(o.init.callee)==="useSearchParams"?o.id.type==="Identifier"?r.add(o.id.name):o.id.type==="ArrayPattern"&&o.id.elements[0]?.type==="Identifier"&&r.add(o.id.elements[0].name):o.id.type==="Identifier"&&o.init&&n(o.init)&&r.add(o.id.name)},CallExpression(o){let s=Y(o.callee);(s==="setSearchParams"||s==="navigate"||s==="pushState"||s==="replaceState"||o.callee.type==="CallExpression"&&Y(o.callee.callee)==="useNavigate")&&o.arguments.some(a=>a.type!=="SpreadElement"&&Ge(a,i))&&e.report({node:o,messageId:"overlay"})},JSXOpeningElement(o){let s=o.name.type==="JSXIdentifier"&&o.name.name==="dialog",p=o.attributes.some(c=>c.type==="JSXAttribute"&&c.name.name==="role"&&c.value?.type==="Literal"&&c.value.value==="dialog"),a=o.attributes.find(c=>c.type==="JSXAttribute"&&c.name.name==="open");(s||p)&&a?.type==="JSXAttribute"&&a.value?.type==="JSXExpressionContainer"&&n(a.value.expression)&&e.report({node:o,messageId:"overlay"})}}}});function ir(e){return e.callee.type==="Identifier"?e.callee.name:e.callee.type==="MemberExpression"?f(e.callee):void 0}function R(e){return!e||e.type==="JSXEmptyExpression"?!1:e.type==="TSAsExpression"||e.type==="TSTypeAssertion"||e.type==="TSNonNullExpression"?R(e.expression):e.type==="ConditionalExpression"?R(e.consequent)||R(e.alternate):e.type==="LogicalExpression"?R(e.left)||R(e.right):S(e)?.toLowerCase()==="_blank"}var Ye=y({name:"safe-external-links",meta:{type:"problem",docs:{description:"Open links and redirects without exposing the site."},fixable:"code",schema:[],messages:{javascriptUrl:"Remove the javascript: URL. Use an event handler for storefront behavior.",noopener:'Add rel="noopener noreferrer" when target="_blank" opens a new tab.',redirect:"Pass this redirect target through safeRedirect(to, fallback) from @zappie/sdk/redirect."}},defaultOptions:[],create(e){let t=e.sourceCode,i=new Set,r=new Set,n=a=>!!T(t,a,a.name)?.defs.some(l=>l.type==="ImportBinding"&&l.node.type==="ImportSpecifier"&&l.node.imported.type==="Identifier"&&l.node.imported.name==="safeRedirect"&&l.parent?.type==="ImportDeclaration"&&l.parent.source.value==="@zappie/sdk/redirect"),o=a=>{if(!a||a.type==="SpreadElement")return!1;let c=E(a);return c.type==="Identifier"?i.has(c.name)&&!r.has(c.name):c.type==="MemberExpression"?c.object.type==="Identifier"&&c.object.name==="request"&&f(c)==="url"?!0:o(c.object):c.type==="CallExpression"?c.callee.type==="Identifier"&&n(c.callee)?!1:c.callee.type==="Identifier"&&c.callee.name==="safeRedirect"?c.arguments.some(o):!!(c.callee.type==="MemberExpression"&&f(c.callee)==="get"&&(c.callee.object.type==="MemberExpression"&&f(c.callee.object)==="searchParams"||c.callee.object.type==="Identifier"&&/searchParams/i.test(c.callee.object.name)||o(c.callee.object))):c.type==="NewExpression"?c.callee.type==="Identifier"&&c.callee.name==="URL"&&c.arguments.some(o):c.type==="ConditionalExpression"?o(c.consequent)||o(c.alternate):c.type==="LogicalExpression"?o(c.left)||o(c.right):c.type==="BinaryExpression"?o(c.left):c.type==="TemplateLiteral"?c.expressions.some(o):!1},s=(a,c)=>{if(c.type!=="Identifier")return!1;let l=u=>{let d=E(u);return d.type==="MemberExpression"&&f(d)==="origin"&&d.object.type==="Identifier"&&d.object.name===c.name},m=u=>{let d=E(u);return d.type==="MemberExpression"&&f(d)==="origin"&&(d.object.type==="Identifier"&&d.object.name==="location"||o(d.object))};return t.getAncestors(a).some(u=>{if(u.type!=="IfStatement"||!t.getAncestors(a).includes(u.consequent))return!1;let d=E(u.test);return d.type==="BinaryExpression"&&(d.operator==="==="||d.operator==="==")&&(l(d.left)&&m(d.right)||m(d.left)&&l(d.right))})};return{VariableDeclarator(a){a.id.type!=="Identifier"||!a.init||(a.init.type==="CallExpression"&&a.init.callee.type==="Identifier"&&n(a.init.callee)?r.add(a.id.name):o(a.init)&&i.add(a.id.name))},JSXOpeningElement(a){for(let d of["href","src","action","formAction"]){let w=h(g(a,d));/^javascript:/i.test((w??"").replace(/[\u0000-\u0020\u007f\s]/gu,""))&&e.report({node:g(a,d)??a,messageId:"javascriptUrl"})}let c=g(a,"target"),l=c?.value?.type==="JSXExpressionContainer"?c.value.expression:c?.value;if(!R(l))return;let m=g(a,"rel"),u=h(m);u?.toLowerCase().split(/\s+/).includes("noopener")||e.report({node:a,messageId:"noopener",fix(d){if(!m)return d.insertTextAfter(a.name,' rel="noopener noreferrer"');if(!m.value||m.value.type!=="Literal")return null;let w=new Set((u??"").split(/\s+/).filter(Boolean));return w.add("noopener"),w.add("noreferrer"),d.replaceText(m,`rel="${[...w].join(" ")}"`)}})},CallExpression:a=>{let c=ir(a);if(!["redirect","navigate","assign","replace"].includes(c??""))return;let l=a.arguments[0];l&&l.type!=="SpreadElement"&&o(l)&&!s(a,E(l))&&e.report({node:l,messageId:"redirect"})},AssignmentExpression(a){a.left.type==="MemberExpression"&&f(a.left)==="href"&&(a.left.object.type==="Identifier"&&a.left.object.name==="location"||a.left.object.type==="MemberExpression"&&f(a.left.object)==="location")&&o(a.right)&&e.report({node:a.right,messageId:"redirect"})}}}});function Q(e){return e.body.find(t=>t.type==="ImportDeclaration"&&t.source.value==="@zappie/sdk")}function ee(e){return e?.specifiers.find(t=>t.type==="ImportSpecifier"&&t.imported.type==="Identifier"&&t.imported.name==="format")}function nr(e,t,i,r){let n=Q(i);if(ee(n)?.local.name===r)return;let o=r==="format"?"format":`format as ${r}`,s=n?.specifiers.filter(c=>c.type==="ImportSpecifier");if(n&&n.importKind!=="type"&&s?.length){let c=s.at(-1);if(c)return e.insertTextAfter(c,`, ${o}`)}let p=i.body[0],a=`import { ${o} } from "@zappie/sdk";
2
+ `;return p?e.insertTextBefore(p,a):e.insertTextAfter(i,a)}function te(e,t,i,r,n,o){let s=[e.replaceText(r,`${o}.money(${t.getText(n)})`)],p=nr(e,t,i,o);return p&&s.push(p),s}function Qe(e,t,i){if(ee(Q(t)))return"imported";let r=e.getScope(i);for(;r;){if(r.variables.some(n=>n.name==="format"))return"conflict";r=r.upper}return"available"}function et(e){return ee(Q(e))?.local.name}function tt(e,t){let i=new Set,r=e.getScope(t);for(;r;){for(let n of r.variables)i.add(n.name);r=r.upper}for(let n of["zappieFormat","zappieMoneyFormat","formatMoneyValue"])if(!i.has(n))return n;return"zappieSdkFormat"}function rt(e){let t=e.type==="NewExpression"||e.type==="CallExpression"?e.callee:void 0;return t?.type==="MemberExpression"&&t.object.type==="Identifier"&&t.object.name==="Intl"&&I(t)==="NumberFormat"}function sr(e){if(e.callee.type==="MemberExpression"){if(I(e.callee)==="toLocaleString")return k(e.callee.object);if(I(e.callee)==="format")return k(e.arguments[0]??e)}}function ar(e){let t=e.parent,i=t.type==="MemberExpression"?t.parent:void 0;return!!(i?.type==="CallExpression"&&i.callee===t&&I(t)==="format"&&k(i.arguments[0]??i))}var it=y({name:"use-format-money",meta:{type:"problem",docs:{description:"Format SDK Money with format.money() or <Money>."},fixable:"code",hasSuggestions:!0,schema:[],messages:{currency:"Use format.money(). Intl currency defaults can differ from the API minor-unit digits.",direct:"Render SDK Money with format.money(value) or <Money value={value}>.",minor:"Use format.money(value). Dividing by 100 gives the wrong amount for currencies with 0, 3 or 4 minor-unit digits.",useAlias:"Import format with an unused alias and format this Money value."}},defaultOptions:[],create(e){let t=e.sourceCode,i=U(e),r,n=(s,p,a)=>{let c={node:s,messageId:"minor"};if(Qe(t,r,s)==="conflict"){let m=tt(t,s);e.report({...c,suggest:[{messageId:"useAlias",fix:u=>te(u,t,r,p,a,m)}]});return}e.report({...c,fix:m=>{let u=et(r)??"format";return te(m,t,r,p,a,u)}})},o=s=>{let p=sr(s);return p?(n(s,s,p),!0):!1};return{Program(s){r=s},NewExpression(s){rt(s)&&V(s.arguments[1])&&!ar(s)&&e.report({node:s,messageId:"currency"})},CallExpression(s){if(!o(s)){if(rt(s)&&V(s.arguments[1])){e.report({node:s,messageId:"currency"});return}s.callee.type==="MemberExpression"&&I(s.callee)==="toLocaleString"&&s.arguments.some(V)&&e.report({node:s,messageId:"currency"})}},TemplateLiteral(s){for(let p of s.expressions){let a=k(p);a?n(p,p,a):N(p)&&e.report({node:p,messageId:"minor"})}},JSXExpressionContainer(s){s.parent.type==="JSXAttribute"||s.expression.type==="JSXEmptyExpression"||(k(s.expression)||N(s.expression)?e.report({node:s.expression,messageId:"minor"}):J(i,s.expression)&&e.report({node:s.expression,messageId:"direct"}))}}}});var re={add:{name:"data-zappie-action",text:'data-zappie-action="add-to-cart"'},checkout:{name:"data-zappie-checkout",text:"data-zappie-checkout"},signin:{name:"data-zappie-signin",text:"data-zappie-signin"}};function or(e,t){let i=t.value?e.getText(t.value):"";if(/\b(?:cart(?:\.actions)?\.add)\s*\(/.test(i))return"add";if(/\b(?:checkout|createCheckout\([^)]*\))\.open\s*\(/.test(i))return"checkout";if(/\b(?:auth|createCustomer\([^)]*\))\.signIn\s*\(/.test(i))return"signin"}var nt=y({name:"verify-markers",meta:{type:"suggestion",docs:{description:"Mark shopping actions so verify can find them."},fixable:"code",schema:[],messages:{marker:"Add {{marker}} so zappie verify can find this shopping action."}},defaultOptions:[],create(e){return{JSXOpeningElement(t){let i=t.attributes.find(n=>n.type==="JSXAttribute"&&n.name.name==="onClick");if(!i)return;let r=or(e.sourceCode,i);!r||t.attributes.some(n=>n.type==="JSXAttribute"&&n.name.name===re[r].name)||e.report({node:i,messageId:"marker",data:{marker:re[r].text},fix:n=>n.insertTextAfter(t.name,` ${re[r].text}`)})}}}});var ot={"no-direct-api":Ie,"no-tracking-scripts":Ke,"checkout-via-sdk":Ee,"no-custom-auth":ve,"no-money-literals":Ae,"use-format-money":it,"overlay-primitive":Ze,"cart-via-sdk":Se,"verify-markers":nt,"item-link-prefetch":Te,"image-priority":he,"no-lazy-overlay":ze,"no-unsafe-html":We,"no-eval":Le,"no-external-scripts":Re,"safe-external-links":Ye,"no-unlisted-fetch":A,"no-unlisted-fetch-dynamic":He,"no-server-env-in-client":Be,"cacheable-menu-routes":ye,"no-offsite-navigation":De,"no-global-indirection":Oe,"no-document-write":Ce,"no-remote-import":Ue},cr=["no-offsite-navigation","no-global-indirection","no-document-write","no-remote-import","no-eval","no-external-scripts","no-unsafe-html","safe-external-links"],se=Object.fromEntries(Object.keys(ot).map(e=>[`zappie/${e}`,e==="verify-markers"||e==="no-unlisted-fetch-dynamic"||e==="cacheable-menu-routes"?"warn":"error"])),lr={...se,"zappie/verify-markers":"error","zappie/cacheable-menu-routes":"error","zappie/no-unlisted-fetch-dynamic":["error",{dynamicOnly:!0}]};se["zappie/no-unlisted-fetch-dynamic"]=["warn",{dynamicOnly:!0}];var _={meta:{name:"eslint-plugin-zappie",version:"0.0.0"},rules:ot,configs:{}},P={name:"zappie/rules",files:["**/*.{js,jsx,ts,tsx,mjs,cjs,mts,cts}"],languageOptions:{parser:at},plugins:{zappie:_,"jsx-a11y":st,"react-hooks":pr},rules:{...st.flatConfigs.recommended.rules,"react-hooks/rules-of-hooks":"error",...se}},ie={name:"zappie/search-dialogs",files:["**/search/**/*.{jsx,tsx}","**/*search*.{jsx,tsx}"],rules:{"jsx-a11y/no-autofocus":"off"}},ne={name:"zappie/typed",files:["**/*.{ts,tsx,mts,cts}"],languageOptions:{parserOptions:{projectService:!0}}},mr={name:"zappie/security",files:P.files,languageOptions:{parser:at},plugins:{zappie:_},rules:Object.fromEntries(cr.map(e=>[`zappie/${e}`,"error"]))};_.configs={recommended:[P,ne,ie],security:[mr],strict:[{...P,rules:{...P.rules,...lr}},ne,ie],"zappie-internal":[P,ne,ie,{name:"zappie/internal-sdk",files:["packages/sdk/src/**/*.{ts,tsx}"],rules:{"zappie/no-direct-api":"off","zappie/no-unlisted-fetch":"off","zappie/no-unlisted-fetch-dynamic":"off"}},{name:"zappie/internal-map-loader",files:["packages/foundations/src/branch-map/loader.ts"],rules:{"zappie/no-external-scripts":"off","zappie/no-global-indirection":"off"}},{name:"zappie/internal-checkout-redirect",files:["packages/sdk/src/checkout/embed.ts","packages/sdk/src/redirect/index.ts"],rules:{"zappie/no-offsite-navigation":"off"}},{name:"zappie/internal-auth-ui",files:["packages/foundations/src/otp/**/*.{ts,tsx}"],rules:{"zappie/no-custom-auth":"off"}},{name:"zappie/internal-money",files:["packages/sdk/src/money.ts","packages/sdk/src/internal/money-math.ts","packages/sdk/src/cart/branch.ts","packages/sdk/src/pricing/index.ts"],rules:{"zappie/no-money-literals":"off","zappie/use-format-money":"off"}},{name:"zappie/internal-overlay",files:["packages/foundations/src/overlay/**/*.{ts,tsx}"],rules:{"zappie/overlay-primitive":"off"}},{name:"zappie/internal-overlay-tests",files:["themes/base/src/cart/cart-review.test.tsx","themes/base/src/cart/core-cart.test.tsx","themes/base/src/cart/fulfilment.test.tsx","themes/base/src/cart/theme-class.test.tsx"],rules:{"zappie/overlay-primitive":"off"}}]};var fn=_;export{cr as SECURITY_RULES,ke as TRUSTED_NAVIGATION_ORIGINS,ye as cacheableMenuRoutes,Se as cartViaSdk,Ee as checkoutViaSdk,fn as default,he as imagePriority,Te as itemLinkPrefetch,ve as noCustomAuth,Ie as noDirectApi,Ce as noDocumentWrite,Le as noEval,Re as noExternalScripts,Oe as noGlobalIndirection,ze as noLazyOverlay,Ae as noMoneyLiterals,De as noOffsiteNavigation,Ue as noRemoteImport,Be as noServerEnvInClient,Ke as noTrackingScripts,A as noUnlistedFetch,We as noUnsafeHtml,Ze as overlayPrimitive,Ye as safeExternalLinks,it as useFormatMoney,nt as verifyMarkers};
3
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/rules/cacheable-menu-routes.ts","../src/create-rule.ts","../src/matchers.ts","../src/rules/cart-via-sdk.ts","../src/rules/checkout-via-sdk.ts","../src/rules/image-priority.ts","../src/rules/item-link-prefetch.ts","../src/rules/no-custom-auth.ts","../src/rules/no-direct-api.ts","../src/globals.ts","../src/rules/no-document-write.ts","../src/rules/no-eval.ts","../src/rules/no-external-scripts.ts","../src/rules/no-global-indirection.ts","../src/rules/no-lazy-overlay.ts","../src/money-rule-utils.ts","../src/rules/no-money-literals.ts","../src/rules/no-offsite-navigation.ts","../src/rules/no-remote-import.ts","../src/rules/no-server-env-in-client.ts","../src/rules/no-tracking-scripts.ts","../src/rules/no-unlisted-fetch.ts","../src/rules/no-unsafe-html.ts","../src/rules/overlay-primitive.ts","../src/rules/safe-external-links.ts","../src/format-fix.ts","../src/rules/use-format-money.ts","../src/rules/verify-markers.ts"],"mappings":"AAAA,OAAOA,OAAY,4BACnB,OAAOC,OAAa,yBACpB,OAAOC,OAAgB,4BCDvB,OAAS,aAAAC,OAAiB,YCD1B,OAAS,eAAAC,OAAmB,2BAErB,IAAMC,EAAaD,GAAY,YACnCE,GAAS,+BAA+BA,CAAI,EAC/C,ECHA,OAAS,aAAAC,OAAiB,YAE1B,IAAMC,GACJ,mFACIC,GACJ,6JAEWC,GACX,2DAEK,SAASC,EAAWC,EAAgD,CACzE,GAAIA,GAAM,OAAS,WAAa,OAAOA,EAAK,OAAU,SACpD,OAAOA,EAAK,MAEd,GAAIA,GAAM,OAAS,kBACjB,OAAOA,EAAK,OACT,IAAKC,GAASA,EAAK,MAAM,QAAUA,EAAK,MAAM,GAAG,EACjD,KAAK,EAAE,CAGd,CAEO,SAASC,EACdF,EACoB,CACpB,MAAO,CAACA,EAAK,UAAYA,EAAK,SAAS,OAAS,aAC5CA,EAAK,SAAS,KACdD,EAAWC,EAAK,QAAQ,CAC9B,CAEO,SAASG,EACdH,EACqB,CACrB,OAAOA,EAAK,OAAS,kBACnBA,EAAK,OAAS,mBACdA,EAAK,OAAS,sBACZG,EAAiBH,EAAK,UAAU,EAChCA,CACN,CAEO,SAASI,EACdC,EACAL,EACAM,EACqC,CACrC,QACMC,EAAqCF,EAAO,SAASL,CAAI,EAC7DO,EACAA,EAAQA,EAAM,MACd,CACA,IAAMC,EAAQD,EAAM,IAAI,IAAID,CAAI,EAChC,GAAIE,EAAO,OAAOA,CACpB,CACF,CAEO,SAASC,EACdT,EACAM,EACmC,CACnC,OAAON,EAAK,WAAW,KACpBU,GACCA,EAAU,OAAS,gBACnBA,EAAU,KAAK,OAAS,iBACxBA,EAAU,KAAK,KAAK,YAAY,IAAMJ,EAAK,YAAY,CAC3D,CACF,CAEO,SAASK,EAASX,EAAkD,CACzE,GAAKA,GAAM,MAGX,IAAIA,EAAK,MAAM,OAAS,UACtB,OAAO,OAAOA,EAAK,MAAM,OAAU,SAAWA,EAAK,MAAM,MAAQ,OAEnE,GAAIA,EAAK,MAAM,OAAS,yBACtB,OAAOD,EAAWC,EAAK,MAAM,UAAU,EAG3C,CAEO,IAAMY,EAAoBC,GAAkBjB,GAAgB,KAAKiB,CAAK,EAChEC,EAAsBD,GACjChB,GAAgB,KAAKgB,CAAK,EACfE,GAAuBF,GAClCA,IAAU,wBAA0BA,EAAM,WAAW,uBAAuB,EAEvE,SAASG,EAAaC,EAAkBC,EAA6B,CAC1E,IAAMC,EAAOF,EAAS,WAAW,KAAM,GAAG,EAC1C,OAAOC,EAAS,KAAME,GACpBzB,GAAUwB,EAAMC,EAAS,CAAE,UAAW,EAAK,CAAC,CAC9C,CACF,CFvFA,IAAMC,EACJ,4GACIC,EAAa,kBAEbC,GAAa,CACjB,eAAeD,CAAU,GACzB,iBAAiBD,CAAK,IAAIC,CAAU,GACpC,iBAAiBD,CAAK,MAAMC,CAAU,GACtC,iBAAiBD,CAAK,SAASC,CAAU,EAC3C,EACME,GAAgB,IAAI,IAAI,CAC5B,SACA,UACA,aACA,qBACF,CAAC,EACKC,GAAe,IAAI,IAAI,CAC3B,cACA,cACA,aACA,kBACA,iBACF,CAAC,EACKC,GAAmB,WACnBC,GAAiB,IAAI,IAAI,CAAC,SAAU,eAAe,CAAC,EACpDC,GAAgB,+BAIhBC,GAAYC,GAChBA,EAAK,QAAQ,OAAS,WACtBA,EAAK,QAAQ,OAAS,yBAIxB,SAASC,GAAaD,EAAyC,CAC7D,GAAIA,EAAK,OAAS,uBAAyBD,GAASC,CAAI,EACtD,OAAOA,EAAK,IAAI,KAElB,GACEA,EAAK,OAAS,sBACdA,EAAK,GAAG,OAAS,cACjBD,GAASC,EAAK,MAAM,EAEpB,OAAOA,EAAK,GAAG,IAGnB,CAIA,SAASE,GAAaC,EAAgBH,EAA2B,CAC/D,OAAOI,EAAaD,EAAQH,EAAMA,EAAK,IAAI,GAAG,KAAK,CAAC,CACtD,CAIA,SAASK,GAAUF,EAAgBH,EAA8B,CAC/D,GAAIA,EAAK,OAAS,mBAChB,OAAOM,EAAWN,CAAI,IAAM,UAE9B,GAAIA,EAAK,OAAS,aAChB,MAAO,GAET,GAAIA,EAAK,OAAS,UAChB,MAAO,GAET,IAAMO,EAAaL,GAAaC,EAAQH,CAAI,EAC5C,GAAI,CAACO,EACH,MAAO,GAET,IAAIC,EAAyBD,EAAW,KACxC,KAAOC,EAAQ,QAAQ,OAAS,qBAC9BA,EAAUA,EAAQ,OAEpB,OACEA,EAAQ,QAAQ,OAAS,YACzBA,EAAQ,OAAO,QAAUA,GACzB,CAACA,EAAQ,OAAO,UAChBA,EAAQ,OAAO,IAAI,OAAS,cAC5BA,EAAQ,OAAO,IAAI,OAAS,UAErB,GAGPD,EAAW,KAAK,OAAS,sBACzBA,EAAW,KAAK,KAAOA,EAAW,MAClCA,EAAW,KAAK,MAAM,OAAS,oBAC/BD,EAAWC,EAAW,KAAK,IAAI,IAAM,SAEzC,CAEA,IAAME,GAAaC,GACjBA,GAAY,OAAS,mBACrBA,EAAW,SAAS,OAAS,cAC7BA,EAAW,SAAS,KAAK,SAAS,cAAc,EAE5CC,GAAgBX,GACpBA,GAAM,OAAS,kBACfA,EAAK,OAAO,OAAS,cACrB,gBAAgB,KAAKA,EAAK,OAAO,IAAI,EAIvC,SAASY,GAAeT,EAAgBH,EAA8B,CACpE,GAAIW,GAAaX,CAAI,EACnB,MAAO,GAET,GAAIA,EAAK,OAAS,mBAChB,OAAOJ,GAAiB,KAAKU,EAAWN,CAAI,GAAK,EAAE,EAErD,GAAIA,EAAK,OAAS,aAChB,MAAO,GAET,GAAIJ,GAAiB,KAAKI,EAAK,IAAI,EACjC,MAAO,GAET,IAAMO,EAAaL,GAAaC,EAAQH,CAAI,EAC5C,GAAI,CAACO,EACH,MAAO,GAET,IAAMM,EAAWN,EAAW,KAC5B,OACEE,GAAUI,EAAS,gBAAgB,cAAc,GAChDN,EAAW,KAAK,OAAS,sBACxBA,EAAW,KAAK,KAAOM,GACvBF,GAAaJ,EAAW,KAAK,IAAI,CAEvC,CAEA,SAASO,GAAWd,EAAmD,CACrE,OAAIA,EAAK,OAAO,OAAS,aAChBA,EAAK,OAAO,KAEdA,EAAK,OAAO,OAAS,mBACxBM,EAAWN,EAAK,MAAM,EACtB,MACN,CAEO,IAAMe,GAAsBC,EAAmC,CACpE,KAAM,wBACN,KAAM,CACJ,KAAM,aACN,KAAM,CACJ,YACE,8FACJ,EACA,OAAQ,CACN,CACE,KAAM,SACN,WAAY,CACV,OAAQ,CAAE,KAAM,QAAS,MAAO,CAAE,KAAM,QAAS,CAAE,CACrD,EACA,qBAAsB,EACxB,CACF,EACA,SAAU,CACR,YACE,qLACJ,CACF,EACA,eAAgB,CAAC,CAAC,CAAC,EACnB,OAAOC,EAAS,CAACC,CAAO,EAAG,CACzB,IAAMC,EAAWF,EAAQ,SAAS,WAAW,KAAM,GAAG,EAEtD,GACE,EAAEC,EAAQ,QAAUzB,IAAY,KAAM2B,GACpCC,GAAUF,EAAUC,EAAS,CAAE,IAAK,EAAK,CAAC,CAC5C,EAEA,MAAO,CAAC,EAEV,IAAME,EAAkBtB,GACtBiB,EAAQ,WACL,aAAajB,CAAI,EACjB,KAAMuB,GAAa7B,GAAc,IAAIO,GAAasB,CAAQ,GAAK,EAAE,CAAC,EACjEC,EAAUxB,GAAwB,CAClCsB,EAAetB,CAAI,GACrBiB,EAAQ,OAAO,CAAE,KAAAjB,EAAM,UAAW,aAAc,CAAC,CAErD,EACA,MAAO,CACL,eAAeA,EAAM,CACnB,IAAMyB,EAAOX,GAAWd,CAAI,EAC5B,GAAIyB,GAAQ9B,GAAa,IAAI8B,CAAI,EAAG,CAClCD,EAAOxB,CAAI,EACX,MACF,CACA,GAAIyB,IAAS,OAASzB,EAAK,OAAO,OAAS,mBACzC,OAEF,IAAM0B,EAAS1B,EAAK,OAAO,OACrB2B,EAASC,EAAW5B,EAAK,UAAU,CAAC,GAAK,IAAI,GAAG,YAAY,GAE/D2B,IAAW,QACV9B,GAAe,IAAI8B,CAAM,GACzBtB,GAAUY,EAAQ,WAAYS,CAAM,GACtCd,GAAeK,EAAQ,WAAYS,CAAM,IAEzCF,EAAOxB,CAAI,CAEf,EACA,QAAQA,EAAM,CACR,OAAOA,EAAK,OAAU,UAAYF,GAAc,KAAKE,EAAK,KAAK,GACjEwB,EAAOxB,CAAI,CAEf,EACA,gBAAgBA,EAAM,CAChBF,GAAc,KAAK8B,EAAW5B,CAAI,GAAK,EAAE,GAC3CwB,EAAOxB,CAAI,CAEf,CACF,CACF,CACF,CAAC,EGxND,IAAM6B,GAAW,iDACXC,GAAa,mBAEnB,SAASC,EAAWC,EAAyC,CAC3D,GAAIA,EAAK,OAAS,aAChB,OAAOA,EAAK,KAEd,GAAIA,EAAK,OAAS,oBAAsBA,EAAK,SAAS,OAAS,aAC7D,OAAOA,EAAK,SAAS,IAGzB,CAEA,SAASC,GAAaD,EAAgD,CACpE,OAAIA,EAAK,OAAS,aACTA,EAAK,KAEPA,EAAK,OAAS,gBAAkBA,EAAK,SAAS,CAAC,GAAG,OAAS,aAC9DA,EAAK,SAAS,CAAC,EAAE,KACjB,MACN,CAEA,SAASE,GAAYF,EAAwC,CAC3D,IAAMG,EACJJ,EAAWC,EAAK,MAAM,IAAM,aACxBA,EAAK,UAAU,CAAC,EAChBA,EAAK,UAAU,CAAC,EACtB,MAAO,GACLG,GACAA,EAAM,OAAS,kBACdA,EAAM,OAAS,mBACbA,EAAM,OAAS,WAAa,OAAOA,EAAM,OAAU,UAE1D,CAEO,IAAMC,GAAaC,EAAuB,CAC/C,KAAM,eACN,KAAM,CACJ,KAAM,UACN,KAAM,CAAE,YAAa,kCAAmC,EACxD,OAAQ,CAAC,EACT,SAAU,CACR,KAAM,8FACR,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,MAAO,CACL,eAAeN,EAAM,CACnB,IAAMO,EAASR,EAAWC,EAAK,MAAM,EAC/BQ,EAAMR,EAAK,UAAU,CAAC,EAE1B,CAAC,UAAW,UAAW,aAAc,MAAM,EAAE,SAASO,GAAU,EAAE,GAClEC,GAAK,OAAS,WACd,OAAOA,EAAI,OAAU,UACrBV,GAAW,KAAKU,EAAI,KAAK,GAEzBF,EAAQ,OAAO,CAAE,KAAAN,EAAM,UAAW,MAAO,CAAC,CAE9C,EACA,mBAAmBA,EAAM,CACvB,GAAIA,EAAK,MAAM,OAAS,iBACtB,OAEF,IAAMS,EAAKR,GAAaD,EAAK,EAAE,EACzBU,EAAOX,EAAWC,EAAK,KAAK,MAAM,EAEtCS,GACAZ,GAAS,KAAKY,CAAE,GAChB,CAAC,WAAY,aAAc,eAAe,EAAE,SAASC,GAAQ,EAAE,GAC/DR,GAAYF,EAAK,IAAI,GAErBM,EAAQ,OAAO,CAAE,KAAAN,EAAM,UAAW,MAAO,CAAC,EAG1CS,GACA,QAAQ,KAAKA,CAAE,GACf,CAAC,SAAU,cAAe,MAAM,EAAE,SAASC,GAAQ,EAAE,GAErDJ,EAAQ,OAAO,CAAE,KAAAN,EAAM,UAAW,MAAO,CAAC,CAE9C,CACF,CACF,CACF,CAAC,ECpFD,IAAMW,GAAe,IAAI,IAAI,CAAC,YAAa,SAAU,SAAU,SAAS,CAAC,EACnEC,GAAe,+BAErB,SAASC,GAAeC,EAAwB,CAC9C,OACEA,EAAM,WAAW,YAAY,GAC7BA,IAAU,kBACVA,IAAU,wBACVA,EAAM,WAAW,UAAU,CAE/B,CAEO,IAAMC,GAAiBC,EAA2B,CACvD,KAAM,mBACN,KAAM,CACJ,KAAM,UACN,KAAM,CAAE,YAAa,uCAAwC,EAC7D,OAAQ,CAAC,EACT,SAAU,CACR,SACE,8FACJ,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,MAAO,CACL,kBAAkBC,EAAM,CAClBL,GAAeK,EAAK,OAAO,KAAK,GAClCD,EAAQ,OAAO,CAAE,KAAMC,EAAK,OAAQ,UAAW,UAAW,CAAC,CAE/D,EACA,kBAAkBA,EAAM,CACtB,IAAMC,EACJD,EAAK,KAAK,OAAS,gBACfA,EAAK,KAAK,KAAK,YAAY,EAC3B,GACAE,EAAOC,EAASC,EAAaJ,EAAM,cAAc,CAAC,EAClDK,EAAOF,EAASC,EAAaJ,EAAM,MAAM,CAAC,EAC1CM,EAAKH,EAASC,EAAaJ,EAAM,IAAI,CAAC,EACtCO,EAASJ,EACbC,EAAaJ,EAAMC,IAAQ,SAAW,MAAQ,MAAM,CACtD,EACMO,EACJP,IAAQ,UACNC,IAAS,QAAaT,GAAa,IAAIS,EAAK,YAAY,CAAC,GACxDG,IAAS,QAAaX,GAAa,KAAKW,CAAI,GAC5CC,IAAO,QAAaZ,GAAa,KAAKY,CAAE,GACvCG,GACHR,IAAQ,UAAYA,IAAQ,MAC7BM,IAAW,QACXG,GAAmB,KAAKH,CAAM,GAC5BC,GAAaC,IACfV,EAAQ,OAAO,CAAE,KAAAC,EAAM,UAAW,UAAW,CAAC,CAElD,CACF,CACF,CACF,CAAC,ECtDD,SAASW,GAASC,EAAqB,CACrC,IAAIC,EAAqCD,EACzC,KAAOC,GAAS,QAAQ,CACtB,IAAMC,EAAwBD,EAAQ,OACtC,IACGC,EAAO,OAAS,2BACfA,EAAO,OAAS,uBAClBA,EAAO,QAAQ,OAAS,kBACxBA,EAAO,OAAO,OAAO,OAAS,oBAC9BA,EAAO,OAAO,OAAO,SAAS,OAAS,cACvCA,EAAO,OAAO,OAAO,SAAS,OAAS,MAEvC,OAAOA,EAETD,EAAUC,CACZ,CACF,CAEA,SAASC,GAAUC,EAAuCC,EAAoB,CAC5E,IAAMC,EAAOF,EAAO,QAAQC,EAAS,MAAM,EAC3C,GAAI,kCAAkC,KAAKC,CAAI,EAC7C,MAAO,GAET,IAAMC,EAAQF,EAAS,OAAO,CAAC,EAC/B,OAAIE,GAAO,OAAS,aACX,GAEK,IAAI,OAAO,GAAGA,EAAM,IAAI,4BAA4B,EACrD,KAAKH,EAAO,QAAQC,CAAQ,CAAC,CAC5C,CAEO,IAAMG,GAAgBC,EAAwC,CACnE,KAAM,iBACN,KAAM,CACJ,KAAM,UACN,KAAM,CAAE,YAAa,8CAA+C,EACpE,OAAQ,CAAC,EACT,SAAU,CACR,OAAQ,iEACR,WAAY,mDACd,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,IAAMC,EAAuC,CAAC,EAC9C,MAAO,CACL,kBAAkBX,EAAM,CACtB,IAAMY,EAAWC,EAAab,EAAM,UAAU,EACxCc,EACJF,GAAU,OAAO,OAAS,0BAC1BA,EAAS,MAAM,WAAW,OAAS,WACnCA,EAAS,MAAM,WAAW,QAAU,GACtC,GACEZ,EAAK,KAAK,OAAS,iBACnBA,EAAK,KAAK,OAAS,SACnB,CAACY,GACDE,EAEA,OAEFH,EAAO,KAAKX,CAAI,EAChB,IAAMK,EAAWN,GAASC,CAAI,EAC1BK,GAAY,CAACF,GAAUO,EAAQ,WAAYL,CAAQ,GACrDK,EAAQ,OAAO,CAAE,KAAME,EAAU,UAAW,QAAS,CAAC,CAE1D,EACA,gBAAiB,CACf,GACE,kCAAkC,KAChCF,EAAQ,SAAS,WAAW,KAAM,GAAG,CACvC,GACAC,EAAO,OAAS,EAEhB,QAAWX,KAAQW,EAAO,MAAM,CAAC,EAC/BD,EAAQ,OAAO,CAAE,KAAAV,EAAM,UAAW,YAAa,CAAC,CAGtD,CACF,CACF,CACF,CAAC,EClFD,SAASe,GAAYC,EAAmC,CACtD,IAAMC,EACJD,GAAW,OAAO,OAAS,yBACvBA,EAAU,MAAM,WAChB,OACN,GACEC,GAAY,OAAS,kBACrBA,EAAW,OAAO,OAAS,cAC3BA,EAAW,OAAO,OAAS,WAE3B,MAAO,GAET,IAAMC,EAASC,EAASH,CAAS,EACjC,OAAOE,IAAW,QAAa,kBAAkB,KAAKA,CAAM,CAC9D,CAEO,IAAME,GAAmBC,EAA2B,CACzD,KAAM,qBACN,KAAM,CACJ,KAAM,UACN,KAAM,CAAE,YAAa,2CAA4C,EACjE,OAAQ,CAAC,EACT,SAAU,CACR,SAAU,6DACZ,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,IAAMC,EAAQ,IAAI,IAClB,MAAO,CACL,kBAAkBC,EAAM,CACtB,GAAK,CAAC,eAAgB,kBAAkB,EAAE,SAASA,EAAK,OAAO,KAAK,EAGpE,QAAWC,KAAQD,EAAK,WAEpBC,EAAK,OAAS,mBACdA,EAAK,SAAS,OAAS,cACvB,CAAC,OAAQ,SAAS,EAAE,SAASA,EAAK,SAAS,IAAI,GAE/CF,EAAM,IAAIE,EAAK,MAAM,IAAI,CAG/B,EACA,kBAAkBD,EAAM,CAEpBA,EAAK,KAAK,OAAS,iBACnBD,EAAM,IAAIC,EAAK,KAAK,IAAI,GACxBT,GAAYW,EAAaF,EAAM,IAAI,CAAC,GACpC,CAACE,EAAaF,EAAM,UAAU,GAE9BF,EAAQ,OAAO,CAAE,KAAAE,EAAM,UAAW,UAAW,CAAC,CAElD,CACF,CACF,CACF,CAAC,ECvDD,IAAMG,GAAW,CAAC,gBAAiB,cAAc,EAC3CC,EAAY,2DACZC,GAAiB,IAAI,IAAI,CAAC,eAAgB,gBAAgB,CAAC,EAC3DC,GAAU,IAAI,IAAI,CAAC,SAAU,aAAc,MAAM,CAAC,EAExD,SAASC,GAAUC,EAA8B,CAC/C,OAAIA,EAAK,OAAS,aACTH,GAAe,IAAIG,EAAK,IAAI,EAGnCA,EAAK,OAAS,oBACd,CAACA,EAAK,UACNA,EAAK,OAAO,OAAS,cACrBF,GAAQ,IAAIE,EAAK,OAAO,IAAI,GAC5BA,EAAK,SAAS,OAAS,cACvBH,GAAe,IAAIG,EAAK,SAAS,IAAI,CAEzC,CAEA,SAASC,GAAUD,EAAqD,CACtE,MAAI,CAACA,EAAK,UAAYA,EAAK,SAAS,OAAS,aACpCA,EAAK,SAAS,KAEhBE,EAAWF,EAAK,QAAQ,CACjC,CAEA,SAASG,GAAWC,EAA6C,CAC/D,GAAIA,IAAU,QAAUA,IAAU,eAChC,MAAO,SAET,GACEA,IAAU,aACVA,EAAM,WAAW,YAAY,GAC7BA,EAAM,WAAW,QAAQ,GACzBA,IAAU,eACVA,EAAM,WAAW,cAAc,GAC/BA,IAAU,SACVA,EAAM,WAAW,SAAS,GAC1BA,IAAU,iBACVA,EAAM,WAAW,iBAAiB,EAElC,MAAO,KAGX,CAEO,IAAMC,GAAeC,EAA4B,CACtD,KAAM,iBACN,KAAM,CACJ,KAAM,UACN,KAAM,CACJ,YAAa,2CACf,EACA,OAAQ,CACN,CACE,KAAM,SACN,WAAY,CACV,YAAa,CACX,KAAM,QACN,MAAO,CAAE,KAAM,QAAS,EACxB,YAAa,EACf,CACF,EACA,qBAAsB,EACxB,CACF,EACA,SAAU,CACR,KAAM,+EACR,CACF,EACA,eAAgB,CAAC,CAAC,CAAC,EACnB,OAAOC,EAAS,CAACC,CAAO,EAAG,CACzB,IAAMC,EAASC,EACbH,EAAQ,SACRC,EAAQ,aAAeb,EACzB,EACA,MAAO,CACL,kBAAkBK,EAAM,CACtB,IAAMW,EAAOR,GAAWH,EAAK,OAAO,KAAK,GACrCW,IAAS,OAAUA,IAAS,UAAY,CAACF,IAC3CF,EAAQ,OAAO,CAAE,KAAMP,EAAK,OAAQ,UAAW,MAAO,CAAC,CAE3D,EACA,kBAAkBA,EAAM,CACtB,GACEA,EAAK,KAAK,OAAS,iBACnBA,EAAK,KAAK,KAAK,YAAY,IAAM,QAEjC,OAEF,IAAMY,EAAOC,EAASC,EAAad,EAAM,MAAM,CAAC,EAC1Ce,EAAOF,EAASC,EAAad,EAAM,cAAc,CAAC,GAEtDY,GAAM,YAAY,IAAM,YACvBG,IAAS,QACR,CAAC,gBAAiB,mBAAoB,cAAc,EAAE,SACpDA,EAAK,YAAY,CACnB,IAEFR,EAAQ,OAAO,CAAE,KAAAP,EAAM,UAAW,MAAO,CAAC,CAE9C,EACA,eAAeA,EAAM,CACnB,GACEA,EAAK,OAAO,OAAS,oBACrB,CAACD,GAAUC,EAAK,OAAO,MAAM,EAE7B,OAEF,IAAMgB,EAAQhB,EAAK,UAAU,CAAC,EACxBI,EACJY,GAAO,OAAS,aAAeA,EAAM,KAAOd,EAAWc,GAAS,IAAI,EAClEZ,GAASR,EAAU,KAAKQ,CAAK,GAC/BG,EAAQ,OAAO,CAAE,KAAAP,EAAM,UAAW,MAAO,CAAC,CAE9C,EACA,qBAAqBA,EAAM,CACzB,GACEA,EAAK,KAAK,OAAS,oBACnBD,GAAUC,EAAK,KAAK,MAAM,EAC1B,CACA,IAAMiB,EAAMhB,GAAUD,EAAK,IAAI,EAC3BiB,GAAOrB,EAAU,KAAKqB,CAAG,GAC3BV,EAAQ,OAAO,CAAE,KAAAP,EAAM,UAAW,MAAO,CAAC,EAE5C,MACF,CACA,IAAMkB,EACJlB,EAAK,KAAK,OAAS,oBACnBA,EAAK,KAAK,OAAO,OAAS,cAC1BA,EAAK,KAAK,OAAO,OAAS,YAC1BA,EAAK,KAAK,SAAS,OAAS,cAC5BA,EAAK,KAAK,SAAS,OAAS,SACxBI,EAAQF,EAAWF,EAAK,KAAK,EAC/BkB,GAAUd,GAASR,EAAU,KAAKQ,CAAK,GACzCG,EAAQ,OAAO,CAAE,KAAAP,EAAM,UAAW,MAAO,CAAC,CAE9C,CACF,CACF,CACF,CAAC,EC3ID,SAASmB,GAAQC,EAAwB,CACvC,MAAI,2CAA2C,KAAKA,CAAK,EAChD,WAEL,4CAA4C,KAAKA,CAAK,EACjD,WAEL,oBAAoB,KAAKA,CAAK,EACzB,aAEF,QACT,CAEO,IAAMC,GAAcC,EAAwB,CACjD,KAAM,gBACN,KAAM,CACJ,KAAM,UACN,KAAM,CAAE,YAAa,8BAA+B,EACpD,OAAQ,CAAC,EACT,SAAU,CACR,OACE,6EACF,SACE,sFACF,WACE,mEACF,SACE,4HACF,SAAU,iDACZ,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,IAAMC,EAAWC,GAAsD,CACrE,GAAIA,EAAK,OAAO,OAAS,oBACvB,OAEF,IAAML,EAAQM,EAAWD,CAAI,EACzBL,GAASO,EAAiBP,CAAK,GACjCG,EAAQ,OAAO,CAAE,KAAAE,EAAM,UAAWN,GAAQC,CAAK,CAAE,CAAC,CAEtD,EACA,MAAO,CACL,QAASI,EACT,gBAAiBA,EACjB,kBAAkBC,EAAM,CAClBG,GAAoBH,EAAK,OAAO,KAAK,GACvCF,EAAQ,OAAO,CAAE,KAAME,EAAK,OAAQ,UAAW,UAAW,CAAC,CAE/D,CACF,CACF,CACF,CAAC,ECnDM,IAAMI,GAA6B,CACxC,6BACA,iCACA,4BACF,EAEMC,GAAe,IAAI,IAAI,CAC3B,SACA,aACA,OACA,MACA,SACA,SACA,QACF,CAAC,EACKC,GAAiB,IAAI,IAAI,CAC7B,GAAGD,GACH,cACA,eACF,CAAC,EACKE,GAAmB,IAAI,IAAI,CAC/B,WACA,gBACA,iBACF,CAAC,EAKM,SAASC,EAAiBC,EAAgBC,EAAqB,CACpE,IAAMC,EAAQD,EAAK,OAAS,kBAAoBA,EAAK,WAAaA,EAClE,OACEE,EAAWH,EAAQE,CAAK,IAAM,YAC7BA,EAAM,OAAS,oBAAsBE,EAAWF,CAAK,IAAM,UAEhE,CAGA,SAASG,EACPL,EACAC,EACAK,EACiC,CACjC,GAAIA,EAAK,IAAIL,EAAK,IAAI,EACpB,OAEF,IAAMM,EAAWC,EAAaR,EAAQC,EAAMA,EAAK,IAAI,EAC/CQ,EAAaF,GAAU,KAAK,CAAC,EACnC,GACEA,GAAU,KAAK,SAAW,GAC1BE,GAAY,OAAS,YACrBA,EAAW,KAAK,OAAS,sBACzB,CAACA,EAAW,KAAK,KAEjB,OAEFH,EAAK,IAAIL,EAAK,IAAI,EAClB,GAAM,CAAE,GAAAS,EAAI,KAAAC,CAAK,EAAIF,EAAW,KAChC,GAAIC,EAAG,OAAS,aACd,OAAOC,EAET,GAAID,EAAG,OAAS,gBACd,OAGF,IAAME,EAAWF,EAAG,WAAW,KAC5BG,GACCA,EAAM,OAAS,YACfA,EAAM,MAAM,OAAS,cACrBA,EAAM,MAAM,OAASZ,EAAK,IAC9B,EACA,GAAI,GAACW,GAAYA,EAAS,UAAYA,EAAS,IAAI,OAAS,cAG5D,MAAO,CACL,GAAGD,EACH,KAAM,mBACN,OAAQA,EACR,SAAUC,EAAS,IACnB,SAAU,GACV,SAAU,EACZ,CACF,CAGO,SAASE,EACdd,EACAC,EACS,CACT,IAAMM,EAAWC,EAAaR,EAAQC,EAAMA,EAAK,IAAI,EACrD,MAAO,CAACM,GAAYA,EAAS,KAAK,SAAW,CAC/C,CAEA,SAASQ,EACPf,EACAgB,EACAV,EACgD,CAChD,GAAIU,EAAM,OAAS,kBACjB,OAAOD,EAAKf,EAAQgB,EAAM,WAAYV,CAAI,EAE5C,IAAML,EAAOgB,EAAiBD,CAA4B,EAC1D,GAAIf,EAAK,OAAS,aAAc,CAC9B,GAAIa,EAAad,EAAQC,CAAI,EAC3B,OAAIL,GAAa,IAAIK,EAAK,IAAI,EACrB,SAELA,EAAK,OAAS,WACT,WAELA,EAAK,OAAS,WACT,WAET,OAEF,IAAMiB,EAAQb,EAAQL,EAAQC,EAAMK,CAAI,EACxC,OAAOY,EAAQH,EAAKf,EAAQkB,EAAOZ,CAAI,EAAI,MAC7C,CACA,GAAIL,EAAK,OAAS,mBAAoB,CACpC,IAAMkB,EAAOf,EAAWH,CAAI,EAC5B,GAAIkB,IAAS,WAAY,CACvB,IAAMC,EAAQL,EAAKf,EAAQC,EAAK,OAAQK,CAAI,EAC5C,OAAOc,IAAU,UAAYA,IAAU,WACnC,WACA,MACN,CACA,OAAID,GAAQtB,GAAe,IAAIsB,CAAI,EAC1B,SAELA,GAAQrB,GAAiB,IAAIqB,CAAI,EAC5B,WAET,MACF,CACA,GAAIlB,EAAK,OAAS,oBAChB,OAAOc,EAAKf,EAAQC,EAAK,KAAMK,CAAI,GAAKS,EAAKf,EAAQC,EAAK,MAAOK,CAAI,EAEvE,GAAIL,EAAK,OAAS,wBAChB,OACEc,EAAKf,EAAQC,EAAK,WAAYK,CAAI,GAAKS,EAAKf,EAAQC,EAAK,UAAWK,CAAI,CAI9E,CAGO,SAASH,EAAWH,EAAgBC,EAAqB,CAC9D,OAAOc,EAAKf,EAAQC,EAAM,IAAI,GAAK,CACrC,CAGO,SAASoB,EACdrB,EACAgB,EACAV,EAAO,IAAI,IACS,CACpB,GAAI,CAACU,GAASA,EAAM,OAAS,gBAC3B,OAEF,IAAMf,EAAOgB,EAAiBD,CAA4B,EAC1D,GAAIf,EAAK,OAAS,UAChB,OAAO,OAAOA,EAAK,OAAU,SAAWA,EAAK,MAAQ,OAEvD,GAAIA,EAAK,OAAS,kBAAmB,CACnC,IAAMqB,EAAkB,CAAC,EACzB,OAAW,CAACC,EAAOC,CAAK,IAAKvB,EAAK,OAAO,QAAQ,EAAG,CAClDqB,EAAM,KAAKE,EAAM,MAAM,QAAUA,EAAM,MAAM,GAAG,EAChD,IAAMC,EAAaxB,EAAK,YAAYsB,CAAK,EACzC,GAAIE,EAAY,CACd,IAAMC,EAAQL,EAAarB,EAAQyB,EAAYnB,CAAI,EACnD,GAAIoB,IAAU,OACZ,OAEFJ,EAAM,KAAKI,CAAK,CAClB,CACF,CACA,OAAOJ,EAAM,KAAK,EAAE,CACtB,CACA,GAAIrB,EAAK,OAAS,oBAAsBA,EAAK,WAAa,IAAK,CAC7D,IAAM0B,EAAON,EAAarB,EAAQC,EAAK,KAAMK,CAAI,EAC3CsB,EAAQP,EAAarB,EAAQC,EAAK,MAAOK,CAAI,EACnD,OAAOqB,IAAS,QAAaC,IAAU,OAAY,OAAYD,EAAOC,CACxE,CACA,GAAI3B,EAAK,OAAS,aAAc,CAC9B,IAAMiB,EAAQb,EAAQL,EAAQC,EAAMK,CAAI,EACxC,OAAOY,EAAQG,EAAarB,EAAQkB,EAAOZ,CAAI,EAAI,MACrD,CAEF,CAGO,SAASuB,EACd7B,EACAgB,EACAV,EAAO,IAAI,IACH,CACR,GAAI,CAACU,GAASA,EAAM,OAAS,gBAC3B,MAAO,GAET,IAAMc,EAAQT,EAAarB,EAAQgB,EAAO,IAAI,IAAIV,CAAI,CAAC,EACvD,GAAIwB,IAAU,OACZ,OAAOA,EAET,IAAM7B,EAAOgB,EAAiBD,CAA4B,EAC1D,GAAIf,EAAK,OAAS,kBAAmB,CACnC,IAAI8B,EAAO,GACX,OAAW,CAACR,EAAOC,CAAK,IAAKvB,EAAK,OAAO,QAAQ,EAAG,CAClD8B,GAAQP,EAAM,MAAM,QAAUA,EAAM,MAAM,IAC1C,IAAMC,EAAaxB,EAAK,YAAYsB,CAAK,EACzC,GAAI,CAACE,EACH,MAEF,IAAMC,EAAQL,EAAarB,EAAQyB,EAAY,IAAI,IAAInB,CAAI,CAAC,EAC5D,GAAIoB,IAAU,OACZ,OAAOK,EAAOF,EAAY7B,EAAQyB,EAAYnB,CAAI,EAEpDyB,GAAQL,CACV,CACA,OAAOK,CACT,CACA,GAAI9B,EAAK,OAAS,oBAAsBA,EAAK,WAAa,IAAK,CAC7D,IAAM0B,EAAON,EAAarB,EAAQC,EAAK,KAAM,IAAI,IAAIK,CAAI,CAAC,EAC1D,OAAOqB,IAAS,OACZE,EAAY7B,EAAQC,EAAK,KAAMK,CAAI,EACnCqB,EAAOE,EAAY7B,EAAQC,EAAK,MAAOK,CAAI,CACjD,CACA,GAAIL,EAAK,OAAS,aAAc,CAC9B,IAAMiB,EAAQb,EAAQL,EAAQC,EAAMK,CAAI,EACxC,OAAOY,EAAQW,EAAY7B,EAAQkB,EAAOZ,CAAI,EAAI,EACpD,CACA,MAAO,EACT,CAGO,SAAS0B,EACdD,EACAE,EACAC,EAA6BvC,GACpB,CAET,IAAM+B,EAAQK,EAAK,QAAQ,YAAa,EAAE,EAAE,WAAW,KAAM,GAAG,EAChE,MAAI,MAAM,KAAKL,CAAK,EACX,GAIP,mBAAmB,KAAKA,CAAK,GAC7B,wBAAwB,KAAKA,CAAK,GACjCO,GAAYP,IAAU,IAEhB,GAEL,4BAA4B,KAAKA,CAAK,EACjCQ,EAAQ,KAAMC,GACnBF,EACIP,IAAUS,GAAUT,EAAM,YAAY,EAAE,WAAW,GAAGS,CAAM,GAAG,EAC/DT,EAAM,YAAY,EAAE,WAAW,GAAGS,CAAM,GAAG,CACjD,EAGKF,GAAYP,EAAM,OAAS,GAAK,CAACA,EAAM,SAAS,GAAG,CAC5D,CAGO,SAASU,GAAcL,EAAc,CAC1C,IAAML,EAAQK,EAAK,QAAQ,YAAa,EAAE,EAAE,WAAW,KAAM,GAAG,EAChE,MAAO,kCAAkC,KAAKL,CAAK,CACrD,CC9QO,IAAMW,GAAkBC,EAAwB,CACrD,KAAM,oBACN,KAAM,CACJ,KAAM,UACN,KAAM,CAAE,YAAa,+CAAgD,EACrE,OAAQ,CAAC,EACT,SAAU,CACR,MACE,2FACJ,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,MAAO,CACL,eAAeC,EAAM,CACnB,IAAMC,EAASD,EAAK,OACdE,EACJD,EAAO,OAAS,mBAAqBE,EAAWF,CAAM,EAAI,OAE1DA,EAAO,OAAS,qBACfC,IAAS,SAAWA,IAAS,YAC9BE,EAAWL,EAAQ,WAAYE,EAAO,MAAM,IAAM,YAElDF,EAAQ,OAAO,CAAE,KAAAC,EAAM,UAAW,OAAQ,CAAC,CAE/C,CACF,CACF,CACF,CAAC,EC3BD,SAASK,EACPC,EACAC,EACoB,CACpB,IAAMC,EAAOC,EAAiBF,CAAK,EACnC,GAAIC,EAAK,OAAS,aAChB,OAAOA,EAAK,KAEd,GAAIA,EAAK,OAAS,qBAAsB,CACtC,IAAME,EAAOF,EAAK,YAAY,GAAG,EAAE,EACnC,OAAOE,EAAOL,EAAeC,EAAQI,CAAI,EAAI,MAC/C,CACA,GACEF,EAAK,OAAS,oBACdG,EAAWL,EAAQE,EAAK,MAAM,IAAM,SAEpC,OAAOI,EAAWJ,CAAI,CAG1B,CAGA,SAASK,EAAaL,EAA0C,CAC9D,MAAI,CAACA,GAAQA,EAAK,OAAS,gBAClB,GAELM,EAAWN,CAAI,IAAM,OAChB,GAGPA,EAAK,OAAS,oBACdA,EAAK,WAAa,MACjBK,EAAaL,EAAK,IAAI,GAAKK,EAAaL,EAAK,KAAK,EAEvD,CAEO,IAAMO,GAASC,EAAuB,CAC3C,KAAM,UACN,KAAM,CACJ,KAAM,UACN,KAAM,CAAE,YAAa,iCAAkC,EACvD,OAAQ,CAAC,EACT,SAAU,CACR,KAAM,qFACR,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,MAAO,CACL,eAAeT,EAAM,CACnB,IAAMU,EAAOb,EAAeY,EAAQ,WAAYT,EAAK,MAAM,EAErDW,EACJX,EAAK,OAAO,OAAS,oBACrBI,EAAWJ,EAAK,MAAM,IAAM,cAC9B,GAAIU,IAAS,QAAUA,IAAS,YAAcC,EAAiB,CAC7DF,EAAQ,OAAO,CAAE,KAAAT,EAAM,UAAW,MAAO,CAAC,EAC1C,MACF,CAEE,CAAC,aAAc,aAAa,EAAE,SAASU,GAAQ,EAAE,GACjDL,EAAaL,EAAK,UAAU,CAAC,CAAC,GAE9BS,EAAQ,OAAO,CAAE,KAAAT,EAAM,UAAW,MAAO,CAAC,CAE9C,EACA,cAAcA,EAAM,CAClB,IAAMY,EAASZ,EAAK,QAElBH,EAAeY,EAAQ,WAAYG,CAAM,IAAM,YAC9CA,EAAO,OAAS,oBACfR,EAAWQ,CAAM,IAAM,gBAEzBH,EAAQ,OAAO,CAAE,KAAAT,EAAM,UAAW,MAAO,CAAC,CAE9C,CACF,CACF,CACF,CAAC,ECxED,IAAMa,GAAYC,GAChB,GACEA,GACA,uCAAuC,KAAKA,EAAM,QAAQ,YAAa,EAAE,CAAC,GAGjEC,GAAoBC,EAAiC,CAChE,KAAM,sBACN,KAAM,CACJ,KAAM,UACN,KAAM,CAAE,YAAa,wCAAyC,EAC9D,OAAQ,CAAC,EACT,SAAU,CACR,eACE,sGACJ,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,MAAO,CACL,kBAAkBC,EAAM,CACtB,GAAIA,EAAK,KAAK,OAAS,gBACrB,OAEF,IAAMC,EAAUD,EAAK,KAAK,KAAK,YAAY,EAC3C,GAAIC,IAAY,SAAU,CACxB,IAAMC,EAAYC,EAAaH,EAAM,KAAK,EACpCI,EAAMC,EAASH,CAAS,EACxBI,EACJJ,GAAW,OAAO,OAAS,0BAC3B,EACEA,EAAU,MAAM,WAAW,OAAS,WACnCA,EAAU,MAAM,WAAW,OAAS,mBACnCA,EAAU,MAAM,WAAW,YAAY,SAAW,GAGtDA,IACCI,GACCF,IAAQ,QACPT,GAASS,CAAG,GAAK,CAACG,EAAmBH,CAAG,IAE3CL,EAAQ,OAAO,CAAE,KAAAC,EAAM,UAAW,gBAAiB,CAAC,EAEtD,MACF,CACA,GAAIC,IAAY,OACd,OAEF,IAAMO,EAAMH,EAASF,EAAaH,EAAM,KAAK,CAAC,GAAG,YAAY,EACvDS,EAAKJ,EAASF,EAAaH,EAAM,IAAI,CAAC,GAAG,YAAY,EACrDU,EAAOL,EAASF,EAAaH,EAAM,MAAM,CAAC,GAE5CQ,IAAQ,WAAaC,IAAO,UAAaD,IAAQ,kBACnDb,GAASe,CAAI,GACb,CAACH,EAAmBG,GAAQ,EAAE,GAE9BX,EAAQ,OAAO,CAAE,KAAAC,EAAM,UAAW,gBAAiB,CAAC,CAExD,EACA,eAAeA,EAAM,CACnB,GACEA,EAAK,OAAO,OAAS,oBACrBW,EAAWX,EAAK,MAAM,IAAM,iBAC5BY,EAAWb,EAAQ,WAAYC,EAAK,OAAO,MAAM,IAAM,YACvDa,EAAWb,EAAK,UAAU,CAAC,GAAK,IAAI,GAAG,YAAY,IAAM,SACzD,CACAD,EAAQ,OAAO,CAAE,KAAAC,EAAM,UAAW,gBAAiB,CAAC,EACpD,MACF,CAEEA,EAAK,OAAO,OAAS,oBACrB,CAACA,EAAK,OAAO,UACbA,EAAK,OAAO,OAAO,OAAS,cAC5BA,EAAK,OAAO,OAAO,OAAS,SAC5BA,EAAK,OAAO,SAAS,OAAS,cAC9BA,EAAK,OAAO,SAAS,OAAS,iBAG9Ba,EAAWb,EAAK,UAAU,CAAC,GAAK,IAAI,GAAG,YAAY,IAAM,UACzDA,EAAK,UAAU,CAAC,GAAG,OAAS,oBAEhBA,EAAK,UAAU,CAAC,EAAE,WAAW,KACtCc,GACCA,EAAS,OAAS,aAChBA,EAAS,IAAI,OAAS,cACtBA,EAAS,IAAI,OAAS,OACtBD,EAAWC,EAAS,GAAG,IAAM,MACnC,GAEEf,EAAQ,OAAO,CAAE,KAAAC,EAAM,UAAW,gBAAiB,CAAC,CAG1D,CACF,CACF,CACF,CAAC,ECpGD,IAAMe,GAAkB,IAAI,IAAI,CAC9B,WACA,OACA,OACA,WACA,SACA,WACA,MACF,CAAC,EAMD,SAASC,GAAYC,EAA+BC,EAAgB,CAClE,GAAIA,IAAW,iBAAkB,CAC/B,IAAMC,EAAMC,EAAWH,EAAK,UAAU,CAAC,GAAK,IAAI,EAChD,OAAOE,IAAQ,QAAa,CAACJ,GAAgB,IAAII,CAAG,CACtD,CACA,IAAME,EAAQJ,EAAK,UAAU,MAAM,CAAC,EACpC,OACEC,IAAW,UACXG,EAAM,OAAS,GACfA,EAAM,MACHC,GACCA,EAAS,OAAS,oBAClBA,EAAS,WAAW,MACjBC,GACCA,EAAS,OAAS,YAClB,CAACA,EAAS,UACVA,EAAS,IAAI,OAAS,cACtB,CAACR,GAAgB,IAAIQ,EAAS,IAAI,IAAI,CAC1C,CACJ,CAEJ,CAEA,IAAMC,GAA0C,CAC9C,QAAS,IAAI,IAAI,CACf,MACA,MACA,QACA,iBACA,0BACF,CAAC,EACD,OAAQ,IAAI,IAAI,CACd,SACA,iBACA,mBACA,2BACA,4BACA,gBACF,CAAC,CACH,EAEaC,GAAsBC,EAA0C,CAC3E,KAAM,wBACN,KAAM,CACJ,KAAM,UACN,KAAM,CACJ,YACE,4EACJ,EACA,OAAQ,CAAC,EACT,SAAU,CACR,SACE,kHACF,WACE,4FACJ,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,IAAMC,EAASD,EAAQ,WACjBE,EAAWZ,GACfa,EAAWF,EAAQX,CAAI,IAAM,QAAac,EAAiBH,EAAQX,CAAI,EACzE,MAAO,CACL,iBAAiBA,EAAM,CAEnBA,EAAK,UACL,EACEA,EAAK,SAAS,OAAS,WACvB,OAAOA,EAAK,SAAS,OAAU,WAEjCY,EAAQZ,EAAK,MAAM,GAEnBU,EAAQ,OAAO,CAAE,KAAAV,EAAM,UAAW,UAAW,CAAC,CAElD,EACA,mBAAmBA,EAAM,CAErBA,EAAK,GAAG,OAAS,iBACjBA,EAAK,MACLY,EAAQZ,EAAK,IAAI,GACjBA,EAAK,GAAG,WAAW,KAChBM,GAAaA,EAAS,OAAS,YAAcA,EAAS,QACzD,GAEAI,EAAQ,OAAO,CAAE,KAAAV,EAAM,UAAW,UAAW,CAAC,CAElD,EACA,eAAeA,EAAM,CACnB,IAAMe,EAASf,EAAK,OACpB,GACEe,EAAO,OAAS,oBAChBA,EAAO,OAAO,OAAS,aAEvB,OAEF,IAAMC,EAAUT,GAAWQ,EAAO,OAAO,IAAI,EACvCE,EAAOC,EAAWH,CAAM,EACxBI,EAASnB,EAAK,UAAU,CAAC,EAE7BgB,GACAC,GACAD,EAAQ,IAAIC,CAAI,GAChBE,GACAA,EAAO,OAAS,iBAChBP,EAAQO,CAAM,GACd,EACEJ,EAAO,OAAO,OAAS,UACvBF,EAAWF,EAAQQ,CAAM,IAAM,YAC/B,CAACL,EAAiBH,EAAQQ,CAAM,GAChCpB,GAAYC,EAAMiB,CAAI,IAGxBP,EAAQ,OAAO,CAAE,KAAAV,EAAM,UAAW,YAAa,CAAC,CAEpD,CACF,CACF,CACF,CAAC,ECtID,IAAMoB,GAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,EAGzBC,GAAwB,QAEjBC,GAAgBC,EAAoC,CAC/D,KAAM,kBACN,KAAM,CACJ,KAAM,UACN,KAAM,CACJ,YACE,qFACJ,EACA,OAAQ,CAAC,EACT,SAAU,CACR,KAAM,0KACN,SACE,6IACJ,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,IAAMC,EAAY,IAAI,IAChBC,EAAgB,IAAI,IACpBC,EAAa,IAAI,IAAY,CAACN,EAAqB,CAAC,EAEpDO,EAAgB,CACpBC,EACAC,EACAC,IAEAF,EAAO,OAAS,cAChBF,EAAW,IAAIE,EAAO,IAAI,GAC1BC,EAAS,OAAS,cAClBA,EAAS,OAASC,EAEpB,MAAO,CACL,kBAAkBC,EAAM,CACtB,GAAKZ,GAAM,IAAIY,EAAK,OAAO,KAAK,EAGhC,QAAWC,KAAaD,EAAK,WAAY,CACvC,GAAIC,EAAU,OAAS,kBAAmB,CACxCN,EAAW,IAAIM,EAAU,MAAM,IAAI,EACnC,QACF,CACA,IAAMC,EACJD,EAAU,SAAS,OAAS,aACxBA,EAAU,SAAS,KACnBA,EAAU,SAAS,MACrBC,IAAa,OACfT,EAAU,IAAIQ,EAAU,MAAM,IAAI,EACzBC,IAAa,YACtBR,EAAc,IAAIO,EAAU,MAAM,IAAI,CAE1C,CACF,EACA,eAAeD,EAAM,CACnB,IAAMG,EAASH,EAAK,QAEjBG,EAAO,OAAS,cAAgBV,EAAU,IAAIU,EAAO,IAAI,GACzDA,EAAO,OAAS,oBACf,CAACA,EAAO,UACRP,EAAcO,EAAO,OAAQA,EAAO,SAAU,MAAM,IAEtDX,EAAQ,OAAO,CAAE,KAAAQ,EAAM,UAAW,MAAO,CAAC,CAE9C,EACA,kBAAkBA,EAAM,CACtB,IAAMI,EAAOJ,EAAK,MAEfI,EAAK,OAAS,iBAAmBV,EAAc,IAAIU,EAAK,IAAI,GAC5DA,EAAK,OAAS,uBACbA,EAAK,OAAO,OAAS,iBACrBT,EAAW,IAAIS,EAAK,OAAO,IAAI,GAC/BA,EAAK,SAAS,OAAS,aAEzBZ,EAAQ,OAAO,CAAE,KAAAQ,EAAM,UAAW,UAAW,CAAC,CAElD,CACF,CACF,CACF,CAAC,ECrFD,OACE,eAAAK,OAGK,2BAGP,IAAMC,GACJ,+DAEK,SAASC,EAAeC,EAAwB,CACrD,OAAOA,EAAM,KAAK,IAAM,MAAQF,GAAoB,KAAKE,CAAK,CAChE,CAEO,SAASC,EAAWC,EAAyC,CAClE,GAAIA,EAAK,OAAS,mBAGlB,IAAI,CAACA,EAAK,UAAYA,EAAK,SAAS,OAAS,aAC3C,OAAOA,EAAK,SAAS,KAEvB,GAAIA,EAAK,UAAYA,EAAK,SAAS,OAAS,UAC1C,OAAO,OAAOA,EAAK,SAAS,OAAU,SAClCA,EAAK,SAAS,MACd,OAGR,CAEO,IAAMC,EAAiBD,GAC5BD,EAAWC,CAAI,IAAM,cAEhB,SAASE,GACdF,EACiC,CACjC,OAAOA,EAAK,OAAS,oBAAsBC,EAAcD,CAAI,EACzDA,EAAK,OACL,MACN,CAEO,SAASG,EACdH,EACiC,CACjC,GACE,EAAAA,EAAK,OAAS,oBACdA,EAAK,WAAa,KAClBA,EAAK,MAAM,OAAS,WACpBA,EAAK,MAAM,QAAU,KAIvB,OAAOE,GAAYF,EAAK,IAAI,CAC9B,CAIO,SAASI,EAGdC,EAA0E,CAC1E,GAAI,CACF,OAAOV,GAAY,kBAAkBU,EAAS,EAAI,CACpD,MAAQ,CACN,MACF,CACF,CAEA,SAASC,GAAmBC,EAA4B,CACtD,OAAKA,EAAO,QAAQ,EAAE,SAAS,YAAY,GAGnCA,EAAO,gBAAgB,GAAK,CAAC,GAAG,KAAMC,GAAgB,CAC5D,IAAMC,EAAOD,EAAY,cAAc,EAAE,SAAS,WAAW,KAAM,GAAG,EACtE,OACEC,EAAK,SAAS,4BAA4B,GAC1C,2CAA2C,KAAKA,CAAI,CAExD,CAAC,EARQ,EASX,CAEO,SAASC,EACdC,EACAX,EACS,CACT,GAAI,CAACW,GAAU,QACb,MAAO,GAET,IAAMC,EAAUD,EAAS,QAAQ,eAAe,EAC1CE,EAASF,EAAS,sBAAsB,IAAIX,CAAI,EAChDc,EAAOF,EAAQ,kBAAkBC,CAAM,EAE7C,OADcC,EAAK,sBAAsB,EAAIA,EAAK,MAAQ,CAACA,CAAI,GAClD,KAAMC,GACjBA,EAAK,cAAc,EAAE,KAAMC,GAAaV,GAAmBU,CAAQ,CAAC,CACtE,CACF,CAEO,SAASC,EAAcjB,EAA0C,CACtE,OAAIA,GAAM,OAAS,mBACV,GAEFA,EAAK,WAAW,KACpBgB,GACCA,EAAS,OAAS,YAClB,CAACA,EAAS,WACRA,EAAS,IAAI,OAAS,cAAgBA,EAAS,IAAI,OAAS,SAC3DA,EAAS,IAAI,OAAS,WAAaA,EAAS,IAAI,QAAU,UAC7DA,EAAS,MAAM,OAAS,WACxBA,EAAS,MAAM,QAAU,UAC7B,CACF,CClGO,IAAME,GAAkBC,EAG7B,CACA,KAAM,oBACN,KAAM,CACJ,KAAM,UACN,KAAM,CACJ,YAAa,+CACf,EACA,OAAQ,CAAC,EACT,SAAU,CACR,WACE,0HACF,QACE,kFACF,MACE,2FACJ,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,IAAMC,EAAWC,EAAeF,CAAO,EACjCG,EAAcC,GAClBC,EAAcD,CAAI,GAAKE,EAAWL,EAAUG,CAAI,EAClD,MAAO,CACL,QAAQA,EAAM,CAEV,OAAOA,EAAK,OAAU,UACtBA,EAAK,OAAO,OAAS,qBACrBG,EAAeH,EAAK,KAAK,GAEzBJ,EAAQ,OAAO,CAAE,KAAAI,EAAM,UAAW,SAAU,CAAC,CAEjD,EACA,QAAQA,EAAM,CACRG,EAAeH,EAAK,KAAK,GAC3BJ,EAAQ,OAAO,CAAE,KAAAI,EAAM,UAAW,SAAU,CAAC,CAEjD,EACA,iBAAiBA,EAAM,CAChB,CAAC,IAAK,IAAK,IAAK,GAAG,EAAE,SAASA,EAAK,QAAQ,IAI9CI,EAAkBJ,CAAI,GACtBA,EAAK,OAAO,OAAS,oBACrBA,EAAK,OAAO,SAAWA,GACvBK,EAAWL,EAAK,MAAM,IAAM,YAI1BD,EAAWC,EAAK,IAAI,GAAKD,EAAWC,EAAK,KAAK,IAChDJ,EAAQ,OAAO,CAAE,KAAAI,EAAM,UAAW,YAAa,CAAC,EAEpD,EACA,gBAAgBA,EAAM,CACpB,QAAWM,KAASN,EAAK,OACnBG,EAAeG,EAAM,MAAM,QAAUA,EAAM,MAAM,GAAG,GACtDV,EAAQ,OAAO,CAAE,KAAMU,EAAO,UAAW,SAAU,CAAC,CAG1D,EACA,eAAeN,EAAM,CAEjBA,EAAK,OAAO,OAAS,oBACrBK,EAAWL,EAAK,MAAM,IAAM,WAC5BA,EAAK,UAAU,CAAC,GAAG,OAAS,WAC5BA,EAAK,UAAU,CAAC,EAAE,QAAU,GAC5BI,EAAkBJ,EAAK,OAAO,MAAM,GAEpCJ,EAAQ,OAAO,CAAE,KAAAI,EAAM,UAAW,OAAQ,CAAC,CAE/C,CACF,CACF,CACF,CAAC,ECnED,IAAMO,GAAe,IAAI,IAAI,CAC3B,OACA,WACA,SACA,WACA,MACF,CAAC,EACKC,GAAe,IAAI,IAAI,CAAC,WAAY,WAAY,kBAAkB,CAAC,EAEnEC,GAAwD,CAC5D,aAAc,uBACd,YAAa,uBACb,OAAQ,sBACV,EAIaC,GAAsBC,EAA0B,CAC3D,KAAM,wBACN,KAAM,CACJ,KAAM,UACN,KAAM,CACJ,YACE,iEACJ,EACA,OAAQ,CAAC,EACT,SAAU,CACR,QACE,mOACF,QACE,yFACF,YACE,6EACJ,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,IAAMC,EAASD,EAAQ,WACjBE,EAAYC,GAChBC,EAAWH,EAAQE,CAAI,IAAM,WACzBE,EAAkBF,GACtBG,EAAiBL,EAAQE,CAAI,EACzBI,EAAQJ,GAAoD,CAChE,GAAI,CAACA,GAAQA,EAAK,OAAS,gBACzB,MAAO,GAET,IAAMK,EAASC,EAAiBN,CAA2B,EAC3D,GAAIK,EAAO,OAAS,kBAAoBE,EAAeF,CAAM,EAC3D,MAAO,GAET,GACEA,EAAO,OAAS,yBAChBA,EAAO,OAAS,oBAChB,CACA,GAAM,CAACG,EAAMC,CAAK,EAChBJ,EAAO,OAAS,wBACZ,CAACA,EAAO,WAAYA,EAAO,SAAS,EACpC,CAACA,EAAO,KAAMA,EAAO,KAAK,EAChC,OAAOD,EAAKI,CAAI,GAAKJ,EAAKK,CAAK,CACjC,CACA,IAAMC,EAAQC,EAAab,EAAQO,CAAM,EACzC,OAAOK,IAAU,OACbE,EAAaC,EAAYf,EAAQO,CAAM,EAAG,EAAK,EAC/CO,EAAaF,EAAO,EAAI,CAC9B,EACMH,EAAkBP,GAClBA,EAAK,OAAO,OAAS,aAChB,GAGF,EADSc,EAAahB,EAAQE,EAAK,OAAQA,EAAK,OAAO,IAAI,GAEvD,KAAK,KACXe,GACCA,EAAW,OAAS,iBACpBA,EAAW,KAAK,OAAS,mBACzBA,EAAW,KAAK,SAAS,OAAS,cAClCA,EAAW,QAAQ,OAAS,qBAC5B,OAAO,OAAOrB,GAAqBqB,EAAW,KAAK,SAAS,IAAI,GAChEA,EAAW,OAAO,OAAO,QACvBrB,GAAoBqB,EAAW,KAAK,SAAS,IAAI,CACvD,EAIEC,EAAUhB,GAA2C,CACzD,GAAI,CAACA,GAAQA,EAAK,OAAS,gBACzB,MAAO,GAET,IAAMiB,EAAOJ,EAAYf,EAAQE,CAAI,EACrC,OAAOkB,GAAcD,CAAI,GAAK,CAACb,EAAKJ,CAAI,CAC1C,EACMmB,EAAcnB,GAAkC,CACpD,IAAMoB,EAASpB,EAAK,OACpB,GAAIoB,EAAO,OAAS,aAAc,CAChC,GAAI3B,GAAa,IAAI2B,EAAO,IAAI,EAC9B,MAAO,GAGT,IAAML,EADUD,EAAahB,EAAQsB,EAAQA,EAAO,IAAI,GAC5B,KAAK,CAAC,EAClC,OACEL,GAAY,OAAS,YACrBA,EAAW,KAAK,OAAS,sBACzBA,EAAW,KAAK,MAAM,OAAS,kBAC/BA,EAAW,KAAK,KAAK,OAAO,OAAS,cACrCA,EAAW,KAAK,KAAK,OAAO,OAAS,aAEzC,CACA,OACEK,EAAO,OAAS,oBAChBC,EAAWD,CAAM,IAAM,YACvBA,EAAO,OAAO,OAAS,cACvBA,EAAO,OAAO,OAAS,UAE3B,EAEME,EAAU,IAAI,IACdC,EAAa,CACjBC,EACAC,IACG,CACCD,EAAO,OAAS,cAAgBF,EAAQ,IAAIE,EAAO,IAAI,GACzDF,EAAQ,IACNE,EAAO,KACPF,EAAQ,IAAIE,EAAO,IAAI,IAAM,UAAYpB,EAAKqB,CAAK,EAC/C,OACA,QACN,CAEJ,EACA,MAAO,CACL,qBAAqBzB,EAAM,CACzB,IAAMQ,EAAOR,EAAK,KAIlB,GAHIQ,EAAK,OAAS,oBAAsBa,EAAWb,CAAI,IAAM,QAC3De,EAAWf,EAAK,OAAQR,EAAK,KAAK,GAEhCQ,EAAK,OAAS,cAAgBA,EAAK,OAAS,qBAC1CT,EAASS,CAAI,GAAK,CAACJ,EAAKJ,EAAK,KAAK,EAAG,CACvCH,EAAQ,OAAO,CAAE,KAAAG,EAAM,UAAW,SAAU,CAAC,EAC7C,MACF,CAEF,GAAIQ,EAAK,OAAS,oBAAsB,CAACN,EAAeM,EAAK,MAAM,EACjE,OAEF,IAAMkB,EAAOL,EAAWb,CAAI,GAE1BkB,IAAS,QACTlC,GAAa,IAAIkC,CAAI,GACpBA,IAAS,QAAU,CAACtB,EAAKJ,EAAK,KAAK,IAEpCH,EAAQ,OAAO,CAAE,KAAAG,EAAM,UAAW,SAAU,CAAC,CAEjD,EACA,eAAeA,EAAM,CACnB,IAAMoB,EAASpB,EAAK,OACpB,GAAIoB,EAAO,OAAS,mBAAoB,CACtC,IAAMM,EAAOL,EAAWD,CAAM,EAC9B,IACGM,IAAS,UAAYA,IAAS,YAC/BxB,EAAekB,EAAO,MAAM,GAC5B,CAAChB,EAAKJ,EAAK,UAAU,CAAC,CAAC,EACvB,CACAH,EAAQ,OAAO,CAAE,KAAAG,EAAM,UAAW,SAAU,CAAC,EAC7C,MACF,CACA,GACE0B,IAAS,QACTzB,EAAWH,EAAQsB,EAAO,MAAM,IAAM,UACtC,CAAChB,EAAKJ,EAAK,UAAU,CAAC,CAAC,EACvB,CACAH,EAAQ,OAAO,CAAE,KAAAG,EAAM,UAAW,SAAU,CAAC,EAC7C,MACF,CACA,IACG0B,IAAS,OAASA,IAAS,WAC5BC,EAAW3B,EAAK,UAAU,CAAC,GAAK,IAAI,GAAG,YAAY,IAAM,UACzD,CACAH,EAAQ,OAAO,CAAE,KAAAG,EAAM,UAAW,SAAU,CAAC,EAC7C,MACF,CAOA,GALE0B,IAAS,gBACTC,EAAW3B,EAAK,UAAU,CAAC,GAAK,IAAI,GAAG,YAAY,IAAM,QAEzDuB,EAAWH,EAAO,OAAQpB,EAAK,UAAU,CAAC,CAAC,EAG3C0B,IAAS,SACTN,EAAO,OAAO,OAAS,cACvBE,EAAQ,IAAIF,EAAO,OAAO,IAAI,GAC9BE,EAAQ,IAAIF,EAAO,OAAO,IAAI,IAAM,OACpC,CACAvB,EAAQ,OAAO,CAAE,KAAAG,EAAM,UAAW,aAAc,CAAC,EACjD,MACF,CACF,CACA,GACEoB,EAAO,OAAS,cAChBA,EAAO,OAAS,QAChBQ,EAAa9B,EAAQsB,CAAM,GAC3B,CAAChB,EAAKJ,EAAK,UAAU,CAAC,CAAC,EACvB,CACAH,EAAQ,OAAO,CAAE,KAAAG,EAAM,UAAW,SAAU,CAAC,EAC7C,MACF,CACImB,EAAWnB,CAAI,GAAKgB,EAAOhB,EAAK,UAAU,CAAC,CAAC,GAC9CH,EAAQ,OAAO,CAAE,KAAAG,EAAM,UAAW,SAAU,CAAC,CAEjD,EACA,mBAAmBA,EAAM,CACvB,IAAM6B,EAAO7B,EAAK,MAAQM,EAAiBN,EAAK,IAAI,EAElDA,EAAK,GAAG,OAAS,cACjB6B,GAAM,OAAS,kBACfA,EAAK,OAAO,OAAS,oBACrBR,EAAWQ,EAAK,MAAM,IAAM,iBAC5B5B,EAAWH,EAAQ+B,EAAK,OAAO,MAAM,IAAM,YAC3CF,EAAWE,EAAK,UAAU,CAAC,GAAK,IAAI,GAAG,YAAY,IAAM,KAEzDP,EAAQ,IAAItB,EAAK,GAAG,KAAM,MAAM,CAEpC,EACA,kBAAkBA,EAAM,CACtB,GAAIA,EAAK,KAAK,OAAS,gBACrB,OAEF,IAAM8B,EAAU9B,EAAK,KAAK,KAC1B,GAAI8B,EAAQ,YAAY,IAAM,OAAQ,CACpC,IAAMC,EACJC,EAAahC,EAAM,WAAW,GAAKgC,EAAahC,EAAM,YAAY,EAC9DyB,EAAQM,GAAaE,EAASF,CAAS,EAE3CA,IACCN,IAAU,QAAaA,EAAM,YAAY,IAAM,YAEhD5B,EAAQ,OAAO,CAAE,KAAAG,EAAM,UAAW,SAAU,CAAC,EAE/C,MACF,CACA,GAAI8B,IAAY,WAAY,CAC1B,IAAMI,EAAKF,EAAahC,EAAM,IAAI,EAC5ByB,EACJS,GAAI,OAAO,OAAS,0BACpBA,EAAG,MAAM,WAAW,OAAS,qBACzBA,EAAG,MAAM,WACTA,GAAI,MACNT,GAAST,EAAOS,CAAK,GACvB5B,EAAQ,OAAO,CAAE,KAAAG,EAAM,UAAW,SAAU,CAAC,CAEjD,CACF,EACA,SAASA,EAAM,CACb,IAAMmC,EACJnC,EAAK,IAAI,OAAS,cAAgB,CAACA,EAAK,SACpCA,EAAK,IAAI,KACT2B,EAAW3B,EAAK,GAAG,EACnByB,EAAQzB,EAAK,MACnB,GAAI,CAACmC,EACH,OAEF,IAAMC,EAAQD,EAAI,YAAY,EAC9B,IACGC,IAAU,aAAeA,IAAU,eACpCT,EAAWF,CAA4B,GAAG,YAAY,IAAM,UAC5D,CACA5B,EAAQ,OAAO,CAAE,KAAAG,EAAM,UAAW,SAAU,CAAC,EAC7C,MACF,CAEEoC,IAAU,WACV,SAAS,KAAKT,EAAWF,CAA4B,GAAK,EAAE,GAE5D5B,EAAQ,OAAO,CAAE,KAAAG,EAAM,UAAW,SAAU,CAAC,CAEjD,CACF,CACF,CACF,CAAC,ECnSD,IAAMqC,EAAYC,GAChB,yCAAyC,KAAKA,EAAK,QAAQ,YAAa,EAAE,CAAC,EAEvEC,GAAU,IAAI,IAAI,CAAC,SAAU,cAAc,CAAC,EAE5CC,GAAgBF,GACpBA,IAAS,QAAa,WAAW,KAAKA,CAAI,EAG5C,SAASG,GACPC,EACAC,EACS,CACT,IAAIC,EAAOC,EAAiBF,CAA4B,EAIxD,GAHIC,EAAK,OAAS,oBAAsBE,EAAWF,CAAI,IAAM,SAC3DA,EAAOC,EAAiBD,EAAK,MAAM,GAEjCA,EAAK,OAAS,aAAc,CAC9B,IAAMG,EAAWC,EAAaN,EAAQE,EAAMA,EAAK,IAAI,EAC/CK,EAAaF,GAAU,KAAK,CAAC,EACnC,OACEA,GAAU,KAAK,SAAW,GAC1BE,GAAY,OAAS,YACrBA,EAAW,KAAK,OAAS,sBACzBA,EAAW,QAAQ,OAAS,uBAC5BA,EAAW,OAAO,OAAS,SAC3B,CAACA,EAAW,KAAK,KAEV,GAYF,CAVSF,EAAS,WAAW,KAAMG,GAAc,CACtD,IAAMC,EAASD,EAAU,WAAW,OACpC,OACEC,EAAO,OAAS,oBAChBA,EAAO,SAAWD,EAAU,YAC5BC,EAAO,OAAO,OAAS,wBACvBA,EAAO,OAAO,OAASA,GACvB,CAAC,CAAC,SAAU,MAAM,EAAE,SAASL,EAAWK,CAAM,GAAK,EAAE,CAEzD,CAAC,GACkBV,GAAeC,EAAQO,EAAW,KAAK,IAAI,CAChE,CACA,IAAMG,EAAOR,EAAK,OAAS,gBAAkBA,EAAK,UAAU,CAAC,EAAI,OACjE,OACEA,EAAK,OAAS,iBACdA,EAAK,OAAO,OAAS,cACrBA,EAAK,OAAO,OAAS,OACrBJ,GAAaa,EAAaX,EAAQE,EAAK,UAAU,CAAC,CAAC,CAAC,GACpDQ,GAAM,OAAS,oBACfA,EAAK,OAAO,OAAS,gBACrBN,EAAWM,CAAI,IAAM,KAEzB,CAEO,IAAME,GAAiBC,EAAsC,CAClE,KAAM,mBACN,KAAM,CACJ,KAAM,UACN,KAAM,CAAE,YAAa,4CAA6C,EAClE,OAAQ,CAAC,EACT,SAAU,CACR,OACE,qHACF,SACE,0HACJ,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,IAAMd,EAASc,EAAQ,WACjBC,EAAQ,CAACb,EAAqBc,IAAsC,CACxE,GAAI,CAACA,GAAUA,EAAO,OAAS,gBAC7B,OAEF,IAAMC,EAAQN,EAAaX,EAAQgB,CAAM,EACnCpB,EAAOqB,GAASC,EAAYlB,EAAQgB,CAAM,EAChD,GAAIrB,EAASC,CAAI,EAAG,CAClBkB,EAAQ,OAAO,CAAE,KAAAZ,EAAM,UAAW,QAAS,CAAC,EAC5C,MACF,CAEEe,IAAU,QACV,CAACnB,GAAaF,CAAI,GAClB,CAACG,GAAeC,EAAQgB,CAAM,GAE9BF,EAAQ,OAAO,CAAE,KAAAZ,EAAM,UAAW,UAAW,CAAC,CAElD,EACMiB,EACJjB,GAIG,CACCA,EAAK,QAAUP,EAASO,EAAK,OAAO,KAAK,GAC3CY,EAAQ,OAAO,CAAE,KAAAZ,EAAM,UAAW,QAAS,CAAC,CAEhD,EACA,MAAO,CACL,iBAAiBA,EAAM,CACrBa,EAAMb,EAAMA,EAAK,MAAM,CACzB,EACA,kBAAmBiB,EACnB,qBAAsBA,EACtB,uBAAwBA,EACxB,cAAcjB,EAAM,CAClB,GACEA,EAAK,OAAO,OAAS,cACrBL,GAAQ,IAAIK,EAAK,OAAO,IAAI,GAC5BkB,EAAapB,EAAQE,EAAK,MAAM,EAChC,CACA,IAAMc,EAASd,EAAK,UAAU,CAAC,EAE7Bc,GACAA,EAAO,OAAS,iBAChBrB,EAASuB,EAAYlB,EAAQgB,CAAM,CAAC,GAEpCF,EAAQ,OAAO,CAAE,KAAAZ,EAAM,UAAW,QAAS,CAAC,CAEhD,CACF,EACA,eAAeA,EAAM,CAEjBA,EAAK,OAAO,OAAS,cACrBA,EAAK,OAAO,OAAS,iBACrBkB,EAAapB,EAAQE,EAAK,MAAM,GAEhCY,EAAQ,OAAO,CAAE,KAAAZ,EAAM,UAAW,QAAS,CAAC,CAEhD,CACF,CACF,CACF,CAAC,ECtID,IAAMmB,GAAc,CAClB,8CACA,oBACA,mBACA,aACA,cACA,kBACA,mDACA,qCACF,EACMC,GAAa,IAAI,IAAI,CAAC,OAAQ,MAAO,OAAQ,MAAO,UAAU,CAAC,EAGrE,SAASC,GAAcC,EAAyC,CAC9D,GAAIA,EAAK,OAAS,sBAChB,OAAOA,EAAK,IAAI,KAElB,GACEA,EAAK,OAAS,sBACdA,EAAK,OAAS,0BAEd,OAEF,IAAMC,EAASD,EAAK,OACpB,GAAIC,EAAO,OAAS,sBAAwBA,EAAO,GAAG,OAAS,aAC7D,OAAOA,EAAO,GAAG,KAEnB,GAAIA,EAAO,OAAS,WAClB,OAAIA,EAAO,IAAI,OAAS,aACfA,EAAO,IAAI,KAEbC,EAAWD,EAAO,GAAG,CAGhC,CAEA,SAASE,GAAUH,EAA0C,CAC3D,GACEA,EAAK,OAAS,oBACdA,EAAK,OAAO,OAAS,cACrBA,EAAK,OAAO,OAAS,WACrBI,EAAWJ,CAAI,IAAM,MAErB,MAAO,UAET,GACEA,EAAK,OAAS,oBACdA,EAAK,OAAO,OAAS,gBACrBA,EAAK,OAAO,KAAK,OAAS,UAC1BA,EAAK,OAAO,SAAS,OAAS,QAC9BI,EAAWJ,CAAI,IAAM,MAErB,MAAO,MAGX,CAEA,SAASK,GAAkBL,EAA8B,CACvD,OAAIA,EAAK,OAAS,oBAAsBI,EAAWJ,CAAI,IAAM,aACpD,GAGNA,EAAK,OAAO,OAAS,cAAgBA,EAAK,OAAO,OAAS,WAC1DA,EAAK,OAAO,OAAS,oBACpBI,EAAWJ,EAAK,MAAM,IAAM,SAElC,CAIA,SAASM,GACPC,EACAC,EACAC,EAAS,GACA,CACT,OAAIF,IAAS,UAETC,IAAQ,YAAc,EAAEC,GAAUD,GAAK,WAAW,qBAAqB,GAIzEA,IAAQ,QACP,CAACA,EAAI,WAAW,cAAc,GAAK,CAACV,GAAW,IAAIU,CAAG,CAE3D,CAEO,IAAME,GAAsBC,EAA4B,CAC7D,KAAM,0BACN,KAAM,CACJ,KAAM,UACN,KAAM,CACJ,YAAa,qDACf,EACA,OAAQ,CAAC,EACT,SAAU,CACR,UACE,yIACJ,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,IAAMC,EAAWD,EAAQ,SAAS,WAAW,KAAM,GAAG,EACtD,GACEE,EAAaD,EAAUhB,EAAW,GAClC,2CAA2C,KAAKgB,CAAQ,GACxD,wCAAwC,KAAKA,CAAQ,EAErD,MAAO,CAAC,EAEV,IAAME,EAAU,IAAI,IACdC,EAAoB,IAAI,IACxBC,EAAcjB,GAClBY,EAAQ,WACL,aAAaZ,CAAI,EACjB,KAAMkB,GACL,CAAC,SAAU,QAAQ,EAAE,SAASnB,GAAcmB,CAAQ,GAAK,EAAE,CAC7D,EACEC,EAAUnB,GAA6C,CAC3D,IAAMS,EAASN,GAAUH,CAAI,EAC7B,OAAIS,IAGGT,EAAK,OAAS,aAAee,EAAQ,IAAIf,EAAK,IAAI,EAAI,OAC/D,EACMoB,EAA2BC,GAAkC,CACjE,GAAIA,EAAQ,OAAS,gBAGrB,QAAWC,KAAYD,EAAQ,WAE3BC,EAAS,OAAS,aAChBA,EAAS,IAAI,OAAS,cACtBA,EAAS,IAAI,OAAS,cACtBpB,EAAWoB,EAAS,GAAG,IAAM,eAC/BA,EAAS,MAAM,OAAS,cAExBN,EAAkB,IAAIM,EAAS,MAAM,IAAI,EAGzCA,EAAS,OAAS,aAChBA,EAAS,IAAI,OAAS,cACtBA,EAAS,IAAI,OAAS,WACtBpB,EAAWoB,EAAS,GAAG,IAAM,YAE/BF,EAAwBE,EAAS,KAA6B,CAGpE,EACMC,EACJvB,GAIG,CACH,GACE,EAAAiB,EAAWjB,CAAI,GACf,CAAC,SAAU,QAAQ,EAAE,SAASD,GAAcC,CAAI,GAAK,EAAE,GAIzD,QAAWwB,KAAaxB,EAAK,OACvBwB,EAAU,OAAS,eACrBJ,EAAwBI,CAAiC,CAG/D,EACA,MAAO,CACL,wBAAyBD,EACzB,oBAAqBA,EACrB,mBAAoBA,EACpB,mBAAmBvB,EAAM,CACvB,GAAIiB,EAAWjB,CAAI,GAAK,CAACA,EAAK,KAC5B,OAEF,IAAMO,EAAOY,EAAOnB,EAAK,IAAI,EAC7B,GAAIA,EAAK,GAAG,OAAS,cAAgBO,EAAM,CACzCQ,EAAQ,IAAIf,EAAK,GAAG,KAAMO,CAAI,EAC9B,MACF,CACA,GAAIP,EAAK,GAAG,OAAS,iBAAmBO,EAAM,CAC5C,QAAWe,KAAYtB,EAAK,GAAG,WAAY,CACzC,IAAMQ,EACJc,EAAS,OAAS,WACdA,EAAS,IAAI,OAAS,aACpBA,EAAS,IAAI,KACbpB,EAAWoB,EAAS,GAAG,EACzB,OACFhB,GAAUC,EAAMC,CAAG,GACrBI,EAAQ,OAAO,CAAE,KAAMU,EAAU,UAAW,WAAY,CAAC,CAE7D,CACA,MACF,CACA,GAAItB,EAAK,GAAG,OAAS,iBAAmBK,GAAkBL,EAAK,IAAI,EACjE,QAAWsB,KAAYtB,EAAK,GAAG,WAE3BsB,EAAS,OAAS,aAChBA,EAAS,IAAI,OAAS,cACtBA,EAAS,IAAI,OAAS,OACtBpB,EAAWoB,EAAS,GAAG,IAAM,QAE/BV,EAAQ,OAAO,CAAE,KAAMU,EAAU,UAAW,WAAY,CAAC,CAIjE,EACA,iBAAiBtB,EAAM,CACrB,GAAIiB,EAAWjB,CAAI,EACjB,OAEF,IAAMO,EAAOY,EAAOnB,EAAK,MAAM,EAC/B,GACEO,GACAD,GAAUC,EAAMH,EAAWJ,CAAI,EAAGG,GAAUH,EAAK,MAAM,IAAMO,CAAI,EACjE,CACAK,EAAQ,OAAO,CAAE,KAAAZ,EAAM,UAAW,WAAY,CAAC,EAC/C,MACF,CAEEI,EAAWJ,CAAI,IAAM,QACpBK,GAAkBL,EAAK,MAAM,GAC3BA,EAAK,OAAO,OAAS,cACpBgB,EAAkB,IAAIhB,EAAK,OAAO,IAAI,IAE1CY,EAAQ,OAAO,CAAE,KAAAZ,EAAM,UAAW,WAAY,CAAC,CAEnD,CACF,CACF,CACF,CAAC,ECrOD,IAAMyB,GAAU,CACd,YACA,uBACA,oBACA,YACF,EAEA,SAASC,GAASC,EAAwB,CACxC,OAAOF,GAAQ,SAASE,CAAK,GAAKA,EAAM,WAAW,WAAW,CAChE,CAEO,IAAMC,GAAoBC,EAA2B,CAC1D,KAAM,sBACN,KAAM,CACJ,KAAM,UACN,KAAM,CAAE,YAAa,mCAAoC,EACzD,OAAQ,CAAC,EACT,SAAU,CACR,SACE,mGACJ,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,IAAMC,EAAWC,GAAsD,CACrE,GAAIA,EAAK,OAAO,OAAS,oBACvB,OAEF,IAAML,EAAQM,EAAWD,CAAI,EACzBL,GAASO,EAAmBP,CAAK,GACnCG,EAAQ,OAAO,CAAE,KAAAE,EAAM,UAAW,UAAW,CAAC,CAElD,EACA,MAAO,CACL,QAASD,EACT,gBAAiBA,EACjB,kBAAkBC,EAAM,CAClBN,GAASM,EAAK,OAAO,KAAK,GAC5BF,EAAQ,OAAO,CAAE,KAAME,EAAK,OAAQ,UAAW,UAAW,CAAC,CAE/D,EACA,eAAeA,EAAM,CACnB,IAAMG,EAASH,EAAK,OACdI,EACJD,EAAO,OAAS,cAAgB,CAAC,OAAQ,KAAK,EAAE,SAASA,EAAO,IAAI,EAChEE,EACJF,EAAO,OAAS,oBAChB,CAACA,EAAO,UACRA,EAAO,OAAO,OAAS,cACvBA,EAAO,OAAO,OAAS,aACvBA,EAAO,SAAS,OAAS,cACzBA,EAAO,SAAS,OAAS,QACvBC,GAAUC,IACZP,EAAQ,OAAO,CAAE,KAAAE,EAAM,UAAW,UAAW,CAAC,CAElD,CACF,CACF,CACF,CAAC,ECnDD,SAASM,GAAQC,EAA4D,CAC3E,IAAMC,EAAOC,EAAWF,GAAQ,IAAI,EACpC,GAAIC,IAAS,OAAW,OAAOA,EAC/B,GACED,GAAM,OAAS,iBACfA,EAAK,OAAO,OAAS,cACrBA,EAAK,OAAO,OAAS,MAErB,OAAOD,GAAQC,EAAK,UAAU,CAAC,CAAC,CAGpC,CAEA,SAASG,GAASC,EAAmC,CACnD,GAAI,GAAC,yBAAyB,KAAKA,CAAK,GAAK,CAACA,EAAM,WAAW,IAAI,GAGnE,GAAI,CACF,OAAO,IAAI,IAAIA,EAAO,4BAA4B,EAAE,SAAS,YAAY,CAC3E,MAAQ,CACN,MACF,CACF,CAEA,SAASC,GAAQC,EAAcC,EAA4B,CACzD,OAAOA,EAAQ,KAAMC,GAAU,CAC7B,IAAMC,EAAYD,EAAM,YAAY,EACpC,OAAOC,EAAU,WAAW,IAAI,EAC5BH,EAAK,SAASG,EAAU,MAAM,CAAC,CAAC,GAAKH,IAASG,EAAU,MAAM,CAAC,EAC/DH,IAASG,CACf,CAAC,CACH,CAIO,IAAMC,EAAkBC,EAG7B,CACA,KAAM,oBACN,KAAM,CACJ,KAAM,UACN,KAAM,CACJ,YAAa,qDACf,EACA,OAAQ,CACN,CACE,KAAM,SACN,WAAY,CAAE,YAAa,CAAE,KAAM,SAAU,CAAE,EAC/C,qBAAsB,EACxB,CACF,EACA,SAAU,CACR,eACE,0HACF,gBACE,mFACJ,CACF,EACA,eAAgB,CAAC,CAAC,CAAC,EACnB,OAAOC,EAAS,CAACC,CAAO,EAAG,CACzB,IAAMC,EAAWF,EAAQ,SAAS,WAAW,KAAM,GAAG,EACtD,GACEG,EAAaD,EAAU,CACrB,aACA,cACA,kBACA,kDACF,CAAC,GACD,2CAA2C,KAAKA,CAAQ,GACxD,iCAAiC,KAAKA,CAAQ,EAE9C,MAAO,CAAC,EAEV,IAAME,EAAcJ,EAAQ,UAAmC,QAC3D,cACEK,EAAQ,MAAM,QAAQD,CAAU,EAClCA,EAAW,OAAQZ,GAA2B,OAAOA,GAAU,QAAQ,EACvE,CAAC,EACCc,EAAM,IAAI,IACVC,EAAU,CAACnB,EAAqBoB,IAA2B,CAC/D,IAAMhB,EAAQL,GAAQqB,CAAM,EAC5B,GAAIhB,IAAU,OAAW,CACnBS,EAAQ,aACVD,EAAQ,OAAO,CAAE,KAAAZ,EAAM,UAAW,gBAAiB,CAAC,EAEtD,MACF,CACA,GAAIa,EAAQ,YACV,OAEF,IAAMP,EAAOH,GAASC,CAAK,EACvB,CAACE,GAAQe,EAAiBjB,CAAK,GAAKC,GAAQC,EAAMW,CAAK,GAG3DL,EAAQ,OAAO,CAAE,KAAAZ,EAAM,UAAW,kBAAmB,KAAM,CAAE,KAAAM,CAAK,CAAE,CAAC,CACvE,EACA,MAAO,CACL,mBAAmBN,EAAM,CAErBA,EAAK,GAAG,OAAS,cACjBA,EAAK,MAAM,OAAS,iBACpBA,EAAK,KAAK,OAAO,OAAS,cAC1BA,EAAK,KAAK,OAAO,OAAS,kBAE1BkB,EAAI,IAAIlB,EAAK,GAAG,IAAI,CAExB,EACA,eAAeA,EAAM,CAOnB,GALGA,EAAK,OAAO,OAAS,cAAgBA,EAAK,OAAO,OAAS,SAC1DA,EAAK,OAAO,OAAS,oBACpBsB,EAAWtB,EAAK,MAAM,IAAM,SAC5BA,EAAK,OAAO,OAAO,OAAS,cAC5B,CAAC,SAAU,YAAY,EAAE,SAASA,EAAK,OAAO,OAAO,IAAI,EAC9C,CACbmB,EAAQnB,EAAMA,EAAK,UAAU,CAAC,CAAC,EAC/B,MACF,CACA,GAAIA,EAAK,OAAO,OAAS,mBACvB,OAEF,IAAMuB,EAAOD,EAAWtB,EAAK,MAAM,EACnC,GACEuB,IAAS,cACTvB,EAAK,OAAO,OAAO,OAAS,cAC5BA,EAAK,OAAO,OAAO,OAAS,YAC5B,CACAmB,EAAQnB,EAAMA,EAAK,UAAU,CAAC,CAAC,EAC/B,MACF,CAEEuB,IAAS,SACPvB,EAAK,OAAO,OAAO,OAAS,cAC5BkB,EAAI,IAAIlB,EAAK,OAAO,OAAO,IAAI,GAC9BA,EAAK,OAAO,OAAO,OAAS,iBAC3BA,EAAK,OAAO,OAAO,OAAO,OAAS,cACnCA,EAAK,OAAO,OAAO,OAAO,OAAS,mBAEvCmB,EAAQnB,EAAMA,EAAK,UAAU,CAAC,CAAC,CAEnC,EACA,cAAcA,EAAM,CAEhBA,EAAK,OAAO,OAAS,cACrB,CAAC,YAAa,aAAa,EAAE,SAASA,EAAK,OAAO,IAAI,GAEtDmB,EAAQnB,EAAMA,EAAK,UAAU,CAAC,CAAC,CAEnC,CACF,CACF,CACF,CAAC,EAEYwB,GAAyB,CACpC,GAAGd,EACH,KAAM,CACJ,GAAGA,EAAgB,KACnB,KAAM,CACJ,GAAGA,EAAgB,KAAK,KACxB,IAAK,uDACP,CACF,CACF,ECrKA,SAASe,GAAWC,EAAiC,CACnD,OAAOA,EAAK,WAAW,KACpBC,GACCA,EAAS,OAAS,YAClB,CAACA,EAAS,WACRA,EAAS,IAAI,OAAS,cAAgBA,EAAS,IAAI,OAAS,UAC5DC,EAAWD,EAAS,GAAG,IAAM,SACnC,GAAG,KACL,CAEO,IAAME,GAAeC,EAA6B,CACvD,KAAM,iBACN,KAAM,CACJ,KAAM,UACN,KAAM,CAAE,YAAa,2CAA4C,EACjE,OAAQ,CAAC,EACT,SAAU,CACR,WACE,oHACJ,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,IAAMC,EAASD,EAAQ,WACjBE,EAAaP,GAEV,EADSQ,EAAaF,EAAQN,EAAMA,EAAK,IAAI,GAEzC,KAAK,KACXS,GACCA,EAAW,OAAS,iBACpBA,EAAW,KAAK,OAAS,mBACzBA,EAAW,KAAK,SAAS,OAAS,cAClCA,EAAW,KAAK,SAAS,OAAS,0BAClCA,EAAW,QAAQ,OAAS,qBAC5BA,EAAW,OAAO,OAAO,QAAU,+BACvC,EAGEC,EAAeV,GAEZ,EADSQ,EAAaF,EAAQN,EAAMA,EAAK,IAAI,GAEzC,KAAK,KAAMS,GAAe,CACjC,GACEA,EAAW,OAAS,YACpBA,EAAW,KAAK,OAAS,qBAEzB,MAAO,GAET,IAAME,EAAOF,EAAW,KAAK,KAC7B,OACEE,GAAM,OAAS,kBACfA,EAAK,OAAO,OAAS,cACrBJ,EAAUI,EAAK,MAAM,CAEzB,CAAC,EAGCC,EAAY,CAChBC,EACAC,EAAO,IAAI,MACC,CACZ,GAAI,CAACD,GAASA,EAAM,OAAS,gBAC3B,MAAO,GAET,IAAMb,EAAOe,EAAiBF,CAA4B,EAC1D,GAAIb,EAAK,OAAS,UAChB,OAAOA,EAAK,QAAU,GAExB,GAAIA,EAAK,OAAS,wBAChB,OACEY,EAAUZ,EAAK,WAAYc,CAAI,GAAKF,EAAUZ,EAAK,UAAWc,CAAI,EAGtE,GAAId,EAAK,OAAS,oBAChB,OAAOY,EAAUZ,EAAK,KAAMc,CAAI,GAAKF,EAAUZ,EAAK,MAAOc,CAAI,EAEjE,GAAId,EAAK,OAAS,iBAChB,OAAIA,EAAK,OAAO,OAAS,cAAgBU,EAAYV,EAAK,MAAM,EACvD,GAGPA,EAAK,OAAO,OAAS,kBACrBA,EAAK,OAAO,OAAO,OAAS,cAC5BO,EAAUP,EAAK,OAAO,MAAM,EAGhC,GAAIA,EAAK,OAAS,aAChB,MAAO,GAET,IAAMgB,EAAUR,EAAaF,EAAQN,EAAMA,EAAK,IAAI,EACpD,GAAI,CAACgB,GAAWF,EAAK,IAAIE,CAAO,EAC9B,MAAO,GAET,IAAMC,EAAW,IAAI,IAAIH,CAAI,EAAE,IAAIE,CAAO,EAC1C,QAAWP,KAAcO,EAAQ,KAAM,CACrC,GACEP,EAAW,OAAS,YACpBA,EAAW,KAAK,OAAS,qBAEzB,SAEF,GAAIA,EAAW,KAAK,GAAG,OAAS,aAC9B,OAAOG,EAAUH,EAAW,KAAK,KAAMQ,CAAQ,EAEjD,GACER,EAAW,KAAK,GAAG,OAAS,gBAC5BA,EAAW,KAAK,GAAG,SAAS,CAAC,GAAG,OAAS,cACzCA,EAAW,KAAK,GAAG,SAAS,CAAC,EAAE,OAAST,EAAK,MAC7CS,EAAW,KAAK,MAAM,OAAS,kBAC/BA,EAAW,KAAK,KAAK,OAAO,OAAS,cACrCA,EAAW,KAAK,KAAK,OAAO,OAAS,WAErC,SAEF,IAAMS,EAAUT,EAAW,KAAK,KAAK,UAAU,CAAC,EAC1CU,EAASV,EAAW,KAAK,GAAG,SAAS,CAAC,EAC5C,GAAI,CAACG,EAAUM,EAASD,CAAQ,GAAKE,GAAQ,OAAS,aACpD,MAAO,GAGT,IAAMC,GADgBZ,EAAaF,EAAQa,EAAQA,EAAO,IAAI,GAE7C,WAAW,OACvBE,GACCA,EAAU,WAAW,OAAO,OAAS,kBACrCA,EAAU,WAAW,OAAO,SAAWA,EAAU,UACrD,GAAK,CAAC,EACR,OACED,GAAQ,OAAS,GACjBA,GAAQ,MAAOC,GAAc,CAC3B,IAAMC,GAAOD,EAAU,WAAW,OAClC,OACEC,GAAK,OAAS,kBACdV,EAAUU,GAAK,UAAU,CAAC,EAAGL,CAAQ,CAEzC,CAAC,CAEL,CACA,MAAO,EACT,EACMM,EAAmB,CACvBvB,EACAwB,IACG,EACCA,GAAO,OAAS,oBAAsB,CAACZ,EAAUb,GAAWyB,CAAK,CAAC,IACpEnB,EAAQ,OAAO,CAAE,KAAAL,EAAM,UAAW,YAAa,CAAC,CAEpD,EACA,MAAO,CACL,aAAaA,EAAM,CACjB,GAAIA,EAAK,KAAK,OAAS,gBACrB,OAEF,IAAMyB,EAAOzB,EAAK,KAAK,KAAK,YAAY,EAEtC,CAAC,CAAC,0BAA2B,QAAQ,EAAE,SAASyB,CAAI,GACpDzB,EAAK,OAAO,OAAS,2BAInByB,IAAS,0BACXF,EAAiBvB,EAAMA,EAAK,MAAM,UAAU,EAClCY,EAAUZ,EAAK,MAAM,UAAU,GACzCK,EAAQ,OAAO,CAAE,KAAAL,EAAM,UAAW,YAAa,CAAC,EAEpD,EACA,mBAAmBA,EAAM,CACvB,GAAIA,EAAK,SAAS,OAAS,mBACzB,OAEF,IAAM0B,EAAY1B,EAAK,SAAS,WAAW,KACxCC,GACCA,EAAS,OAAS,aAChBA,EAAS,IAAI,OAAS,cACtBA,EAAS,IAAI,OAAS,2BACtBC,EAAWD,EAAS,GAAG,IAAM,0BACnC,EACIyB,GACFH,EAAiBvB,EAAM0B,EAAU,KAAK,CAE1C,EACA,WAAW1B,EAAM,CACf,GACEA,EAAK,eAAe,KAAK,OAAS,iBAClCA,EAAK,eAAe,KAAK,KAAK,YAAY,IAAM,SAEhD,QAAW2B,KAAS3B,EAAK,SAErB2B,EAAM,OAAS,0BACfA,EAAM,WAAW,OAAS,sBAE1BtB,EAAQ,OAAO,CAAE,KAAMsB,EAAO,UAAW,YAAa,CAAC,CAI/D,EACA,qBAAqB3B,EAAM,CAEvBA,EAAK,KAAK,OAAS,oBACnB,CAAC,YAAa,YAAa,QAAQ,EAAE,SACnC4B,EAAW5B,EAAK,IAAI,GAAK,EAC3B,GACA,CAACY,EAAUZ,EAAK,KAAK,GAErBK,EAAQ,OAAO,CAAE,KAAAL,EAAM,UAAW,YAAa,CAAC,CAEpD,EACA,eAAeA,EAAM,CACnB,GACEA,EAAK,OAAO,OAAS,oBACrB4B,EAAW5B,EAAK,MAAM,IAAM,qBAC5B,CACKY,EAAUZ,EAAK,UAAU,CAAC,CAAC,GAC9BK,EAAQ,OAAO,CAAE,KAAAL,EAAM,UAAW,YAAa,CAAC,EAElD,MACF,CAEA,GACEA,EAAK,OAAO,OAAS,oBACrB,CAAC,2BAA4B,eAAe,EAAE,SAC5C4B,EAAW5B,EAAK,MAAM,GAAK,EAC7B,EACA,CACKY,EAAUZ,EAAK,UAAU,CAAC,CAAC,GAC9BK,EAAQ,OAAO,CAAE,KAAAL,EAAM,UAAW,YAAa,CAAC,EAElD,MACF,CAQA,GAAI,EANDA,EAAK,OAAO,OAAS,cACpBA,EAAK,OAAO,OAAS,iBACtBA,EAAK,OAAO,OAAS,oBACpB4B,EAAW5B,EAAK,MAAM,IAAM,iBAC5BA,EAAK,OAAO,OAAO,OAAS,cAC5BA,EAAK,OAAO,OAAO,OAAS,SAE9B,OAEF,GAAIE,EAAWF,EAAK,UAAU,CAAC,GAAK,IAAI,GAAG,YAAY,IAAM,SAC3D,QAAW2B,KAAS3B,EAAK,UAAU,MAAM,CAAC,EACpC2B,EAAM,OAAS,iBACjBtB,EAAQ,OAAO,CAAE,KAAMsB,EAAO,UAAW,YAAa,CAAC,EAI7D,IAAME,EAAQ7B,EAAK,UAAU,CAAC,EAC9B,GAAI6B,GAAO,OAAS,mBAClB,OAEF,IAAMH,EAAYG,EAAM,WAAW,KAChC5B,GACCA,EAAS,OAAS,aAChBA,EAAS,IAAI,OAAS,cACtBA,EAAS,IAAI,OAAS,2BACtBC,EAAWD,EAAS,GAAG,IAAM,0BACnC,EACIyB,GACFH,EAAiBvB,EAAM0B,EAAU,KAAK,CAE1C,CACF,CACF,CACF,CAAC,EC5QD,IAAMI,GAAW,CACf,QACA,QACA,SACA,SACA,OACA,OACA,aACA,YACA,aACA,SACA,mBACA,uBACA,eACA,UACF,EAEA,SAASC,EAAKC,EAAyC,CACrD,GAAIA,EAAK,OAAS,aAChB,OAAOA,EAAK,KAEd,GAAIA,EAAK,OAAS,oBAAsBA,EAAK,SAAS,OAAS,aAC7D,OAAOA,EAAK,SAAS,IAGzB,CAEA,SAASC,GAAWD,EAAqBE,EAA4B,CACnE,OAAIF,EAAK,OAAS,WAAa,OAAOA,EAAK,OAAU,SAC5C,CAAC,GAAGE,CAAI,EAAE,KAAMC,GAAQ,IAAI,OAAO,OAAOA,CAAG,GAAG,EAAE,KAAKH,EAAK,KAAK,CAAC,EAEvEA,EAAK,OAAS,kBACTA,EAAK,OAAO,KAAMI,GACvBH,GACE,CAAE,GAAGG,EAAM,KAAM,UAAW,MAAOA,EAAK,MAAM,GAAI,EAClDF,CACF,CACF,EAEEF,EAAK,OAAS,mBACTA,EAAK,WAAW,KACpBK,GACCA,EAAS,OAAS,aAChBA,EAAS,IAAI,OAAS,cAAgBH,EAAK,IAAIG,EAAS,IAAI,IAAI,GAC/DA,EAAS,IAAI,OAAS,WACrB,OAAOA,EAAS,IAAI,OAAU,UAC9BH,EAAK,IAAIG,EAAS,IAAI,KAAK,EACnC,EAEK,EACT,CAEO,IAAMC,GAAmBC,EAA6C,CAC3E,KAAM,oBACN,KAAM,CACJ,KAAM,UACN,KAAM,CAAE,YAAa,oDAAqD,EAC1E,OAAQ,CACN,CACE,KAAM,SACN,WAAY,CAAE,KAAM,CAAE,KAAM,QAAS,MAAO,CAAE,KAAM,QAAS,CAAE,CAAE,EACjE,qBAAsB,EACxB,CACF,EACA,SAAU,CACR,QACE,+GACJ,CACF,EACA,eAAgB,CAAC,CAAC,CAAC,EACnB,OAAOC,EAAS,CAACC,CAAO,EAAG,CACzB,IAAMP,EAAO,IAAI,IAAI,CAAC,GAAGJ,GAAU,GAAIW,EAAQ,MAAQ,CAAC,CAAE,CAAC,EACrDC,EAAe,IAAI,IACnBC,EAAqBX,GAAwB,CACjD,IAAMY,EAAOJ,EAAQ,WAAW,QAAQR,CAAI,EAC5C,OACEY,EAAK,SAAS,kBAAkB,GAChC,CAAC,GAAGF,CAAY,EAAE,KAAMG,GACtB,IAAI,OAAO,MAAMA,CAAK,KAAK,EAAE,KAAKD,CAAI,CACxC,CAEJ,EACA,MAAO,CACL,mBAAmBZ,EAAM,CAErBA,EAAK,MAAM,OAAS,kBACpBD,EAAKC,EAAK,KAAK,MAAM,IAAM,kBAEvBA,EAAK,GAAG,OAAS,aACnBU,EAAa,IAAIV,EAAK,GAAG,IAAI,EAE7BA,EAAK,GAAG,OAAS,gBACjBA,EAAK,GAAG,SAAS,CAAC,GAAG,OAAS,cAE9BU,EAAa,IAAIV,EAAK,GAAG,SAAS,CAAC,EAAE,IAAI,EAG3CA,EAAK,GAAG,OAAS,cACjBA,EAAK,MACLW,EAAkBX,EAAK,IAAI,GAE3BU,EAAa,IAAIV,EAAK,GAAG,IAAI,CAEjC,EACA,eAAeA,EAAM,CACnB,IAAMc,EAASf,EAAKC,EAAK,MAAM,GAE7Bc,IAAW,mBACXA,IAAW,YACXA,IAAW,aACXA,IAAW,gBACVd,EAAK,OAAO,OAAS,kBACpBD,EAAKC,EAAK,OAAO,MAAM,IAAM,gBAG/BA,EAAK,UAAU,KACZe,GACCA,EAAS,OAAS,iBAAmBd,GAAWc,EAAUb,CAAI,CAClE,GAEAM,EAAQ,OAAO,CAAE,KAAAR,EAAM,UAAW,SAAU,CAAC,CAEjD,EACA,kBAAkBA,EAAM,CACtB,IAAMgB,EACJhB,EAAK,KAAK,OAAS,iBAAmBA,EAAK,KAAK,OAAS,SACrDiB,EAAOjB,EAAK,WAAW,KAC1BkB,GACCA,EAAU,OAAS,gBACnBA,EAAU,KAAK,OAAS,QACxBA,EAAU,OAAO,OAAS,WAC1BA,EAAU,MAAM,QAAU,QAC9B,EACMC,EAAOnB,EAAK,WAAW,KAC1BkB,GACCA,EAAU,OAAS,gBAAkBA,EAAU,KAAK,OAAS,MACjE,GAEGF,GAAUC,IACXE,GAAM,OAAS,gBACfA,EAAK,OAAO,OAAS,0BACrBR,EAAkBQ,EAAK,MAAM,UAAU,GAEvCX,EAAQ,OAAO,CAAE,KAAAR,EAAM,UAAW,SAAU,CAAC,CAEjD,CACF,CACF,CACF,CAAC,EC5ID,SAASoB,GAASC,EAAmD,CACnE,OAAIA,EAAK,OAAO,OAAS,aAChBA,EAAK,OAAO,KAEdA,EAAK,OAAO,OAAS,mBACxBC,EAAWD,EAAK,MAAM,EACtB,MACN,CAEA,SAASE,EAAcF,EAAiD,CACtE,MAAI,CAACA,GAAQA,EAAK,OAAS,qBAClB,GAGPA,EAAK,OAAS,kBACdA,EAAK,OAAS,mBACdA,EAAK,OAAS,sBAEPE,EAAcF,EAAK,UAAU,EAElCA,EAAK,OAAS,wBACTE,EAAcF,EAAK,UAAU,GAAKE,EAAcF,EAAK,SAAS,EAEnEA,EAAK,OAAS,oBACTE,EAAcF,EAAK,IAAI,GAAKE,EAAcF,EAAK,KAAK,EAEtDG,EAAWH,CAAI,GAAG,YAAY,IAAM,QAC7C,CAEO,IAAMI,GAAoBC,EAG/B,CACA,KAAM,sBACN,KAAM,CACJ,KAAM,UACN,KAAM,CACJ,YAAa,qDACf,EACA,QAAS,OACT,OAAQ,CAAC,EACT,SAAU,CACR,cACE,4EACF,SACE,sEACF,SACE,yFACJ,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,IAAMC,EAASD,EAAQ,WACjBE,EAAU,IAAI,IACdC,EAAO,IAAI,IACXC,EAAwBV,GAErB,EADSW,EAAaJ,EAAQP,EAAMA,EAAK,IAAI,GAEzC,KAAK,KACXY,GACCA,EAAW,OAAS,iBACpBA,EAAW,KAAK,OAAS,mBACzBA,EAAW,KAAK,SAAS,OAAS,cAClCA,EAAW,KAAK,SAAS,OAAS,gBAClCA,EAAW,QAAQ,OAAS,qBAC5BA,EAAW,OAAO,OAAO,QAAU,sBACvC,EAGEC,EAAeC,GAAqD,CACxE,GAAI,CAACA,GAASA,EAAM,OAAS,gBAC3B,MAAO,GAET,IAAMd,EAAOe,EAAiBD,CAA4B,EAC1D,OAAId,EAAK,OAAS,aACTQ,EAAQ,IAAIR,EAAK,IAAI,GAAK,CAACS,EAAK,IAAIT,EAAK,IAAI,EAElDA,EAAK,OAAS,mBAEdA,EAAK,OAAO,OAAS,cACrBA,EAAK,OAAO,OAAS,WACrBC,EAAWD,CAAI,IAAM,MAEd,GAEFa,EAAYb,EAAK,MAAM,EAE5BA,EAAK,OAAS,iBAEdA,EAAK,OAAO,OAAS,cACrBU,EAAqBV,EAAK,MAAM,EAEzB,GAGPA,EAAK,OAAO,OAAS,cACrBA,EAAK,OAAO,OAAS,eAEdA,EAAK,UAAU,KAAKa,CAAW,EAGtC,GAAAb,EAAK,OAAO,OAAS,oBACrBC,EAAWD,EAAK,MAAM,IAAM,QAC1BA,EAAK,OAAO,OAAO,OAAS,oBAC5BC,EAAWD,EAAK,OAAO,MAAM,IAAM,gBAClCA,EAAK,OAAO,OAAO,OAAS,cAC3B,gBAAgB,KAAKA,EAAK,OAAO,OAAO,IAAI,GAC9Ca,EAAYb,EAAK,OAAO,MAAM,IAMhCA,EAAK,OAAS,gBAEdA,EAAK,OAAO,OAAS,cACrBA,EAAK,OAAO,OAAS,OACrBA,EAAK,UAAU,KAAKa,CAAW,EAG/Bb,EAAK,OAAS,wBACTa,EAAYb,EAAK,UAAU,GAAKa,EAAYb,EAAK,SAAS,EAE/DA,EAAK,OAAS,oBACTa,EAAYb,EAAK,IAAI,GAAKa,EAAYb,EAAK,KAAK,EAErDA,EAAK,OAAS,mBACTa,EAAYb,EAAK,IAAI,EAE1BA,EAAK,OAAS,kBACTA,EAAK,YAAY,KAAKa,CAAW,EAEnC,EACT,EACMG,EAAkB,CAAChB,EAAqBiB,IAA0B,CACtE,GAAIA,EAAO,OAAS,aAClB,MAAO,GAET,IAAMC,EAAgBJ,GAAyB,CAC7C,IAAMK,EAAaJ,EAAiBD,CAA4B,EAChE,OACEK,EAAW,OAAS,oBACpBlB,EAAWkB,CAAU,IAAM,UAC3BA,EAAW,OAAO,OAAS,cAC3BA,EAAW,OAAO,OAASF,EAAO,IAEtC,EACMG,EAAiBN,GAAyB,CAC9C,IAAMK,EAAaJ,EAAiBD,CAA4B,EAChE,OACEK,EAAW,OAAS,oBACpBlB,EAAWkB,CAAU,IAAM,WACzBA,EAAW,OAAO,OAAS,cAC3BA,EAAW,OAAO,OAAS,YAC3BN,EAAYM,EAAW,MAAM,EAEnC,EACA,OAAOZ,EAAO,aAAaP,CAAI,EAAE,KAAMqB,GAAa,CAClD,GACEA,EAAS,OAAS,eAClB,CAACd,EAAO,aAAaP,CAAI,EAAE,SAASqB,EAAS,UAAU,EAEvD,MAAO,GAET,IAAMC,EAAOP,EAAiBM,EAAS,IAAI,EAC3C,OACEC,EAAK,OAAS,qBACbA,EAAK,WAAa,OAASA,EAAK,WAAa,QAC5CJ,EAAaI,EAAK,IAAI,GAAKF,EAAcE,EAAK,KAAK,GAClDF,EAAcE,EAAK,IAAI,GAAKJ,EAAaI,EAAK,KAAK,EAE1D,CAAC,CACH,EAgBA,MAAO,CACL,mBAAmBtB,EAAM,CACnBA,EAAK,GAAG,OAAS,cAAgB,CAACA,EAAK,OAIzCA,EAAK,KAAK,OAAS,kBACnBA,EAAK,KAAK,OAAO,OAAS,cAC1BU,EAAqBV,EAAK,KAAK,MAAM,EAErCS,EAAK,IAAIT,EAAK,GAAG,IAAI,EACZa,EAAYb,EAAK,IAAI,GAC9BQ,EAAQ,IAAIR,EAAK,GAAG,IAAI,EAE5B,EACA,kBAAkBA,EAAM,CACtB,QAAWuB,IAAQ,CAAC,OAAQ,MAAO,SAAU,YAAY,EAAG,CAC1D,IAAMC,EAAQC,EAASC,EAAa1B,EAAMuB,CAAI,CAAC,EAE7C,gBAAgB,MACbC,GAAS,IAAI,QAAQ,4BAA6B,EAAE,CACvD,GAEAlB,EAAQ,OAAO,CACb,KAAMoB,EAAa1B,EAAMuB,CAAI,GAAKvB,EAClC,UAAW,eACb,CAAC,CAEL,CACA,IAAM2B,EAAkBD,EAAa1B,EAAM,QAAQ,EAC7C4B,EACJD,GAAiB,OAAO,OAAS,yBAC7BA,EAAgB,MAAM,WACtBA,GAAiB,MACvB,GAAI,CAACzB,EAAc0B,CAAgB,EACjC,OAEF,IAAMC,EAAeH,EAAa1B,EAAM,KAAK,EACvC8B,EAAML,EAASI,CAAY,EAC7BC,GAAK,YAAY,EAAE,MAAM,KAAK,EAAE,SAAS,UAAU,GAGvDxB,EAAQ,OAAO,CACb,KAAAN,EACA,UAAW,WACX,IAAI+B,EAAO,CACT,GAAI,CAACF,EACH,OAAOE,EAAM,gBACX/B,EAAK,KACL,4BACF,EAEF,GAAI,CAAC6B,EAAa,OAASA,EAAa,MAAM,OAAS,UACrD,OAAO,KAET,IAAMG,EAAS,IAAI,KAAKF,GAAO,IAAI,MAAM,KAAK,EAAE,OAAO,OAAO,CAAC,EAC/D,OAAAE,EAAO,IAAI,UAAU,EACrBA,EAAO,IAAI,YAAY,EAChBD,EAAM,YACXF,EACA,QAAQ,CAAC,GAAGG,CAAM,EAAE,KAAK,GAAG,CAAC,GAC/B,CACF,CACF,CAAC,CACH,EACA,eAhFsBhC,GAAkC,CACxD,IAAMuB,EAAOxB,GAASC,CAAI,EAC1B,GAAI,CAAC,CAAC,WAAY,WAAY,SAAU,SAAS,EAAE,SAASuB,GAAQ,EAAE,EACpE,OAEF,IAAMN,EAASjB,EAAK,UAAU,CAAC,EAE7BiB,GACAA,EAAO,OAAS,iBAChBJ,EAAYI,CAAM,GAClB,CAACD,EAAgBhB,EAAMe,EAAiBE,CAAM,CAAC,GAE/CX,EAAQ,OAAO,CAAE,KAAMW,EAAQ,UAAW,UAAW,CAAC,CAE1D,EAmEE,qBAAqBjB,EAAM,CAEvBA,EAAK,KAAK,OAAS,oBACnBC,EAAWD,EAAK,IAAI,IAAM,SACxBA,EAAK,KAAK,OAAO,OAAS,cAC1BA,EAAK,KAAK,OAAO,OAAS,YACzBA,EAAK,KAAK,OAAO,OAAS,oBACzBC,EAAWD,EAAK,KAAK,MAAM,IAAM,aACrCa,EAAYb,EAAK,KAAK,GAEtBM,EAAQ,OAAO,CAAE,KAAMN,EAAK,MAAO,UAAW,UAAW,CAAC,CAE9D,CACF,CACF,CACF,CAAC,EClRD,SAASiC,EACPC,EACwC,CACxC,OAAOA,EAAQ,KAAK,KACjBC,GACCA,EAAK,OAAS,qBAAuBA,EAAK,OAAO,QAAU,aAC/D,CACF,CAEA,SAASC,GACPC,EACsC,CACtC,OAAOA,GAAa,WAAW,KAC5BC,GACCA,EAAU,OAAS,mBACnBA,EAAU,SAAS,OAAS,cAC5BA,EAAU,SAAS,OAAS,QAChC,CACF,CAEA,SAASC,GACPC,EACAC,EACAP,EACAQ,EACiB,CACjB,IAAML,EAAcJ,EAAUC,CAAO,EACrC,GAAIE,GAAeC,CAAW,GAAG,MAAM,OAASK,EAC9C,OAEF,IAAMC,EAAeD,IAAU,SAAW,SAAW,aAAaA,CAAK,GACjEE,EAAQP,GAAa,WAAW,OACnCC,GAAcA,EAAU,OAAS,iBACpC,EACA,GAAID,GAAeA,EAAY,aAAe,QAAUO,GAAO,OAAQ,CACrE,IAAMC,EAAOD,EAAM,GAAG,EAAE,EACxB,GAAIC,EACF,OAAOL,EAAM,gBAAgBK,EAAM,KAAKF,CAAY,EAAE,CAE1D,CACA,IAAMG,EAAQZ,EAAQ,KAAK,CAAC,EACtBa,EAAO,YAAYJ,CAAY;AAAA,EACrC,OAAOG,EACHN,EAAM,iBAAiBM,EAAOC,CAAI,EAClCP,EAAM,gBAAgBN,EAASa,CAAI,CACzC,CAEO,SAASC,GACdR,EACAC,EACAP,EACAe,EACAC,EACAR,EACO,CACP,IAAMS,EAAQ,CACZX,EAAM,YAAYS,EAAS,GAAGP,CAAK,UAAUD,EAAO,QAAQS,CAAK,CAAC,GAAG,CACvE,EACME,EAAWb,GAAUC,EAAOC,EAAQP,EAASQ,CAAK,EACxD,OAAIU,GACFD,EAAM,KAAKC,CAAQ,EAEdD,CACT,CAEO,SAASE,GACdZ,EACAP,EACAC,EACuC,CACvC,GAAIC,GAAeH,EAAUC,CAAO,CAAC,EACnC,MAAO,WAET,IAAIoB,EAAqCb,EAAO,SAASN,CAAI,EAC7D,KAAOmB,GAAO,CACZ,GAAIA,EAAM,UAAU,KAAMC,GAAaA,EAAS,OAAS,QAAQ,EAC/D,MAAO,WAETD,EAAQA,EAAM,KAChB,CACA,MAAO,WACT,CAEO,SAASE,GACdtB,EACoB,CACpB,OAAOE,GAAeH,EAAUC,CAAO,CAAC,GAAG,MAAM,IACnD,CAEO,SAASuB,GAAehB,EAAgBN,EAA6B,CAC1E,IAAMuB,EAAQ,IAAI,IACdJ,EAAqCb,EAAO,SAASN,CAAI,EAC7D,KAAOmB,GAAO,CACZ,QAAWC,KAAYD,EAAM,UAC3BI,EAAM,IAAIH,EAAS,IAAI,EAEzBD,EAAQA,EAAM,KAChB,CACA,QAAWK,IAAQ,CACjB,eACA,oBACA,kBACF,EACE,GAAI,CAACD,EAAM,IAAIC,CAAI,EACjB,OAAOA,EAGX,MAAO,iBACT,CC/FA,SAASC,GAAiBC,EAA8B,CACtD,IAAMC,EACJD,EAAK,OAAS,iBAAmBA,EAAK,OAAS,iBAC3CA,EAAK,OACL,OACN,OACEC,GAAQ,OAAS,oBACjBA,EAAO,OAAO,OAAS,cACvBA,EAAO,OAAO,OAAS,QACvBC,EAAWD,CAAM,IAAM,cAE3B,CAEA,SAASE,GAAeH,EAA+B,CACrD,GAAIA,EAAK,OAAO,OAAS,mBAGzB,IAAIE,EAAWF,EAAK,MAAM,IAAM,iBAC9B,OAAOI,EAAkBJ,EAAK,OAAO,MAAM,EAE7C,GAAIE,EAAWF,EAAK,MAAM,IAAM,SAC9B,OAAOI,EAAkBJ,EAAK,UAAU,CAAC,GAAKA,CAAI,EAGtD,CAEA,SAASK,GAAoBL,EAAuC,CAClE,IAAMM,EAASN,EAAK,OACdO,EAAOD,EAAO,OAAS,mBAAqBA,EAAO,OAAS,OAClE,MAAO,GACLC,GAAM,OAAS,kBACfA,EAAK,SAAWD,GAChBJ,EAAWI,CAAM,IAAM,UACvBF,EAAkBG,EAAK,UAAU,CAAC,GAAKA,CAAI,EAE/C,CAEO,IAAMC,GAAiBC,EAAwB,CACpD,KAAM,mBACN,KAAM,CACJ,KAAM,UACN,KAAM,CAAE,YAAa,kDAAmD,EACxE,QAAS,OACT,eAAgB,GAChB,OAAQ,CAAC,EACT,SAAU,CACR,SACE,wFACF,OACE,sEACF,MACE,mHACF,SACE,iEACJ,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,IAAMC,EAASD,EAAQ,WACjBE,EAAWC,EAAeH,CAAO,EACnCI,EACEC,EAAY,CAChBf,EACAgB,EACAC,IACG,CACH,IAAMC,EAAO,CAAE,KAAAlB,EAAM,UAAW,OAAiB,EAEjD,GADgBmB,GAAcR,EAAQG,EAASd,CAAI,IACnC,WAAY,CAC1B,IAAMoB,EAAQC,GAAeV,EAAQX,CAAI,EACzCU,EAAQ,OAAO,CACb,GAAGQ,EACH,QAAS,CACP,CACE,UAAW,WACX,IAAMI,GACJC,GAAYD,EAAOX,EAAQG,EAASE,EAASC,EAAOG,CAAK,CAC7D,CACF,CACF,CAAC,EACD,MACF,CACAV,EAAQ,OAAO,CACb,GAAGQ,EACH,IAAMI,GAAU,CACd,IAAME,EAAQC,GAAoBX,CAAO,GAAK,SAC9C,OAAOS,GAAYD,EAAOX,EAAQG,EAASE,EAASC,EAAOO,CAAK,CAClE,CACF,CAAC,CACH,EACME,EAAoB1B,GAAkC,CAC1D,IAAMiB,EAAQd,GAAeH,CAAI,EACjC,OAAIiB,GACFF,EAAUf,EAAMA,EAAMiB,CAAK,EACpB,IAEF,EACT,EACA,MAAO,CACL,QAAQjB,EAAM,CACZc,EAAUd,CACZ,EACA,cAAcA,EAAM,CAEhBD,GAAiBC,CAAI,GACrB2B,EAAc3B,EAAK,UAAU,CAAC,CAAC,GAC/B,CAACK,GAAoBL,CAAI,GAEzBU,EAAQ,OAAO,CAAE,KAAAV,EAAM,UAAW,UAAW,CAAC,CAElD,EACA,eAAeA,EAAM,CACnB,GAAI,CAAA0B,EAAiB1B,CAAI,EAGzB,IAAID,GAAiBC,CAAI,GAAK2B,EAAc3B,EAAK,UAAU,CAAC,CAAC,EAAG,CAC9DU,EAAQ,OAAO,CAAE,KAAAV,EAAM,UAAW,UAAW,CAAC,EAC9C,MACF,CAEEA,EAAK,OAAO,OAAS,oBACrBE,EAAWF,EAAK,MAAM,IAAM,kBAC5BA,EAAK,UAAU,KAAK2B,CAAa,GAEjCjB,EAAQ,OAAO,CAAE,KAAAV,EAAM,UAAW,UAAW,CAAC,EAElD,EACA,gBAAgBA,EAAM,CACpB,QAAW4B,KAAc5B,EAAK,YAAa,CACzC,IAAMiB,EAAQb,EAAkBwB,CAAU,EACtCX,EACFF,EAAUa,EAAYA,EAAYX,CAAK,EAC9BY,EAAcD,CAAU,GACjClB,EAAQ,OAAO,CAAE,KAAMkB,EAAY,UAAW,OAAQ,CAAC,CAE3D,CACF,EACA,uBAAuB5B,EAAM,CAEzBA,EAAK,OAAO,OAAS,gBACrBA,EAAK,WAAW,OAAS,uBAKzBI,EAAkBJ,EAAK,UAAU,GACjC6B,EAAc7B,EAAK,UAAU,EAE7BU,EAAQ,OAAO,CAAE,KAAMV,EAAK,WAAY,UAAW,OAAQ,CAAC,EACnD8B,EAAWlB,EAAUZ,EAAK,UAAU,GAC7CU,EAAQ,OAAO,CAAE,KAAMV,EAAK,WAAY,UAAW,QAAS,CAAC,EAEjE,CACF,CACF,CACF,CAAC,EC1KD,IAAM+B,GAAuD,CAC3D,IAAK,CAAE,KAAM,qBAAsB,KAAM,kCAAmC,EAC5E,SAAU,CAAE,KAAM,uBAAwB,KAAM,sBAAuB,EACvE,OAAQ,CAAE,KAAM,qBAAsB,KAAM,oBAAqB,CACnE,EAEA,SAASC,GACPC,EACAC,EACkB,CAClB,IAAMC,EAAOD,EAAK,MAAQD,EAAO,QAAQC,EAAK,KAAK,EAAI,GACvD,GAAI,qCAAqC,KAAKC,CAAI,EAChD,MAAO,MAET,GAAI,oDAAoD,KAAKA,CAAI,EAC/D,MAAO,WAET,GAAI,kDAAkD,KAAKA,CAAI,EAC7D,MAAO,QAGX,CAEO,IAAMC,GAAgBC,EAAyB,CACpD,KAAM,iBACN,KAAM,CACJ,KAAM,aACN,KAAM,CAAE,YAAa,gDAAiD,EACtE,QAAS,OACT,OAAQ,CAAC,EACT,SAAU,CACR,OAAQ,gEACV,CACF,EACA,eAAgB,CAAC,EACjB,OAAOC,EAAS,CACd,MAAO,CACL,kBAAkBJ,EAAM,CACtB,IAAMK,EAAQL,EAAK,WAAW,KAC3BM,GACCA,EAAU,OAAS,gBACnBA,EAAU,KAAK,OAAS,SAC5B,EACA,GAAI,CAACD,EACH,OAEF,IAAME,EAAOT,GAAYM,EAAQ,WAAYC,CAAK,EAEhD,CAACE,GACDP,EAAK,WAAW,KACbM,GACCA,EAAU,OAAS,gBACnBA,EAAU,KAAK,OAAST,GAAOU,CAAI,EAAE,IACzC,GAIFH,EAAQ,OAAO,CACb,KAAMC,EACN,UAAW,SACX,KAAM,CAAE,OAAQR,GAAOU,CAAI,EAAE,IAAK,EAClC,IAAMC,GACJA,EAAM,gBAAgBR,EAAK,KAAM,IAAIH,GAAOU,CAAI,EAAE,IAAI,EAAE,CAC5D,CAAC,CACH,CACF,CACF,CACF,CAAC,E5BzCD,IAAME,GAAQ,CACZ,gBAAiBC,GACjB,sBAAuBC,GACvB,mBAAoBC,GACpB,iBAAkBC,GAClB,oBAAqBC,GACrB,mBAAoBC,GACpB,oBAAqBC,GACrB,eAAgBC,GAChB,iBAAkBC,GAClB,qBAAsBC,GACtB,iBAAkBC,GAClB,kBAAmBC,GACnB,iBAAkBC,GAClB,UAAWC,GACX,sBAAuBC,GACvB,sBAAuBC,GACvB,oBAAqBC,EACrB,4BAA6BC,GAC7B,0BAA2BC,GAC3B,wBAAyBC,GACzB,wBAAyBC,GACzB,wBAAyBC,GACzB,oBAAqBC,GACrB,mBAAoBC,EACtB,EAMaC,GAAiB,CAC5B,wBACA,wBACA,oBACA,mBACA,UACA,sBACA,iBACA,qBACF,EAIMC,GAAmC,OAAO,YAC9C,OAAO,KAAK1B,EAAK,EAAE,IAAK2B,GAAS,CAC/B,UAAUA,CAAI,GACdA,IAAS,kBACTA,IAAS,6BACTA,IAAS,wBACL,OACA,OACN,CAAC,CACH,EACMC,GAAc,CAClB,GAAGF,GACH,wBAAyB,QACzB,+BAAgC,QAChC,mCAAoC,CAAC,QAAS,CAAE,YAAa,EAAK,CAAC,CACrE,EACAA,GAAQ,kCAAkC,EAAI,CAAC,OAAQ,CAAE,YAAa,EAAK,CAAC,EAE5E,IAAMG,EAAS,CACb,KAAM,CAAE,KAAM,uBAAwB,QAAS,OAAQ,EACvD,MAAA7B,GACA,QAAS,CAAC,CACZ,EAEM8B,EAAO,CACX,KAAM,eACN,MAAO,CAAC,sCAAsC,EAC9C,gBAAiB,CAAE,OAAAC,EAAO,EAC1B,QAAS,CAAE,OAAQF,EAAQ,WAAYG,GAAS,cAAeC,EAAW,EAC1E,MAAO,CACL,GAAGD,GAAQ,YAAY,YAAY,MACnC,6BAA8B,QAC9B,GAAGN,EACL,CACF,EACMQ,GAAgB,CACpB,KAAM,wBACN,MAAO,CAAC,2BAA4B,uBAAuB,EAC3D,MAAO,CAAE,wBAAyB,KAAM,CAC1C,EAKMC,GAAQ,CACZ,KAAM,eACN,MAAO,CAAC,uBAAuB,EAC/B,gBAAiB,CAAE,cAAe,CAAE,eAAgB,EAAK,CAAE,CAC7D,EAEMC,GAAW,CACf,KAAM,kBACN,MAAON,EAAK,MACZ,gBAAiB,CAAE,OAAAC,EAAO,EAC1B,QAAS,CAAE,OAAQF,CAAO,EAC1B,MAAO,OAAO,YACZJ,GAAe,IAAKE,GAAS,CAAC,UAAUA,CAAI,GAAI,OAAO,CAAC,CAC1D,CACF,EAEAE,EAAO,QAAU,CACf,YAAa,CAACC,EAAMK,GAAOD,EAAa,EACxC,SAAU,CAACE,EAAQ,EACnB,OAAQ,CACN,CAAE,GAAGN,EAAM,MAAO,CAAE,GAAGA,EAAK,MAAO,GAAGF,EAAY,CAAE,EACpDO,GACAD,EACF,EACA,kBAAmB,CACjBJ,EACAK,GACAD,GACA,CACE,KAAM,sBACN,MAAO,CAAC,gCAAgC,EACxC,MAAO,CACL,uBAAwB,MACxB,2BAA4B,MAC5B,mCAAoC,KACtC,CACF,EACA,CACE,KAAM,6BACN,MAAO,CAAC,+CAA+C,EACvD,MAAO,CACL,6BAA8B,MAE9B,+BAAgC,KAClC,CACF,EACA,CAEE,KAAM,oCACN,MAAO,CACL,qCACA,oCACF,EACA,MAAO,CAAE,+BAAgC,KAAM,CACjD,EACA,CACE,KAAM,0BACN,MAAO,CAAC,4CAA4C,EACpD,MAAO,CAAE,wBAAyB,KAAM,CAC1C,EACA,CACE,KAAM,wBACN,MAAO,CACL,4BACA,0CAEA,kCAEA,mCACF,EACA,MAAO,CACL,2BAA4B,MAC5B,0BAA2B,KAC7B,CACF,EACA,CACE,KAAM,0BACN,MAAO,CAAC,gDAAgD,EACxD,MAAO,CAAE,2BAA4B,KAAM,CAC7C,EACA,CACE,KAAM,gCACN,MAAO,CACL,4CACA,0CACA,2CACA,2CACF,EACA,MAAO,CAAE,2BAA4B,KAAM,CAC7C,CACF,CACF,EA4BA,IAAOG,GAAQC","names":["parser","jsxA11y","reactHooks","minimatch","ESLintUtils","createRule","name","minimatch","endpointPattern","trackingPattern","paymentHostPattern","staticText","node","part","memberName","unwrapExpression","findVariable","source","name","scope","found","jsxAttribute","attribute","jsxValue","isZappieEndpoint","value","isTrackingEndpoint","isInternalSdkImport","isServerFile","filename","patterns","path","pattern","pages","extensions","menuRoutes","serverExports","sessionCalls","sessionStoreName","sessionHeaders","sessionRoutes","topLevel","node","exportedName","definitionOf","source","findVariable","isHeaders","memberName","definition","binding","storeType","annotation","createsStore","isSessionStore","declared","calleeName","cacheableMenuRoutes","createRule","context","options","filename","pattern","minimatch","inServerExport","ancestor","report","name","target","header","staticText","cartName","storageKey","calleeName","node","variableName","cartInitial","value","cartViaSdk","createRule","context","method","key","id","call","autocomplete","paymentField","providerImport","value","checkoutViaSdk","createRule","context","node","tag","auto","jsxValue","jsxAttribute","name","id","target","cardInput","providerTarget","paymentHostPattern","mappedBy","node","current","parent","firstOnly","source","callback","text","index","imagePriority","createRule","context","images","priority","jsxAttribute","disabled","targetsItem","attribute","expression","target","jsxValue","itemLinkPrefetch","createRule","context","links","node","item","jsxAttribute","defaults","authValue","browserStorage","globals","isStorage","node","memberKey","staticText","authImport","value","noCustomAuth","createRule","context","options","server","isServerFile","kind","type","jsxValue","jsxAttribute","auto","first","key","cookie","message","value","noDirectApi","createRule","context","inspect","node","staticText","isZappieEndpoint","isInternalSdkImport","TRUSTED_NAVIGATION_ORIGINS","WINDOW_NAMES","WINDOW_MEMBERS","DOCUMENT_MEMBERS","isLocationObject","source","node","inner","globalKind","memberName","aliasOf","seen","variable","findVariable","definition","id","init","property","entry","isGlobalName","kind","input","unwrapExpression","alias","name","owner","constantText","parts","index","quasi","expression","value","left","right","leadingText","whole","text","staysTrusted","complete","trusted","origin","isAbsoluteUrl","noDocumentWrite","createRule","context","node","callee","name","memberName","globalKind","globalCallName","source","input","node","unwrapExpression","last","globalKind","memberName","stringValued","staticText","noEval","createRule","context","name","constructorCall","callee","external","value","noExternalScripts","createRule","context","node","element","attribute","jsxAttribute","src","jsxValue","dynamic","isTrackingEndpoint","rel","as","href","memberName","globalKind","staticText","property","NAVIGATION_KEYS","addsGlobals","node","method","key","staticText","added","argument","property","REFLECTION","noGlobalIndirection","createRule","context","source","guarded","globalKind","isLocationObject","callee","methods","name","memberName","target","react","conventionalNamespace","noLazyOverlay","createRule","context","lazyNames","suspenseNames","namespaces","fromNamespace","object","property","wanted","node","specifier","imported","callee","name","ESLintUtils","moneyLiteralPattern","isMoneyLiteral","value","memberName","node","isAmountMinor","amountOwner","dividedMinorOwner","parserServices","context","declaredBySdkMoney","symbol","declaration","path","isSdkMoney","services","checker","tsNode","type","part","property","currencyStyle","noMoneyLiterals","createRule","context","services","parserServices","arithmetic","node","isAmountMinor","isSdkMoney","isMoneyLiteral","dividedMinorOwner","memberName","quasi","ORIGIN_PARTS","ROUTER_CALLS","SAFE_TARGET_HELPERS","noOffsiteNavigation","createRule","context","source","location","node","globalKind","locationObject","isLocationObject","safe","target","unwrapExpression","isSafeRedirect","left","right","whole","constantText","staysTrusted","leadingText","findVariable","definition","leaves","lead","isAbsoluteUrl","routerCall","callee","memberName","anchors","anchorHref","object","value","name","staticText","isGlobalName","init","element","attribute","jsxAttribute","jsxValue","to","key","lower","isRemote","text","WORKERS","relativePath","projectFileUrl","source","input","node","unwrapExpression","memberName","variable","findVariable","definition","reference","parent","base","constantText","noRemoteImport","createRule","context","check","target","whole","leadingText","declaration","isGlobalName","serverFiles","vitePublic","namedFunction","node","parent","staticText","directEnv","memberName","contextCloudflare","forbidden","kind","key","direct","noServerEnvInClient","createRule","context","filename","isServerFile","aliases","cloudflareAliases","serverBody","ancestor","kindOf","recordCloudflarePattern","pattern","property","inspectParameters","parameter","imports","imported","value","noTrackingScripts","createRule","context","inspect","node","staticText","isTrackingEndpoint","callee","direct","dataLayer","literal","node","text","staticText","hostname","value","allowed","host","entries","entry","candidate","noUnlistedFetch","createRule","context","options","filename","isServerFile","configured","allow","xhr","inspect","target","isZappieEndpoint","memberName","name","noUnlistedFetchDynamic","objectHtml","node","property","staticText","noUnsafeHtml","createRule","context","source","isFactory","findVariable","definition","isSanitizer","init","sanitized","input","seen","unwrapExpression","binding","nextSeen","initial","setter","updates","reference","call","reportHtmlObject","value","name","dangerous","child","memberName","props","defaults","name","node","carriesKey","keys","key","part","property","overlayPrimitive","createRule","context","options","searchValues","derivedFromSearch","text","value","callee","argument","dialog","role","attribute","open","callName","node","memberName","possibleBlank","staticText","safeExternalLinks","createRule","context","source","tainted","safe","importedSafeRedirect","findVariable","definition","fromRequest","input","unwrapExpression","sameOriginGuard","target","targetOrigin","expression","trustedOrigin","ancestor","test","name","value","jsxValue","jsxAttribute","targetAttribute","targetExpression","relAttribute","rel","fixer","tokens","sdkImport","program","node","importedFormat","declaration","specifier","importFix","fixer","source","local","importedName","named","last","first","text","formatFixes","replace","owner","fixes","addition","formatBinding","scope","variable","importedFormatLocal","availableAlias","names","name","intlNumberFormat","node","callee","memberName","formattedMinor","dividedMinorOwner","formatsDividedMinor","member","call","useFormatMoney","createRule","context","source","services","parserServices","program","reportFix","replace","owner","data","formatBinding","alias","availableAlias","fixer","formatFixes","local","importedFormatLocal","inspectFormatter","currencyStyle","expression","isAmountMinor","isSdkMoney","marker","handlerKind","source","node","text","verifyMarkers","createRule","context","click","attribute","kind","fixer","rules","noDirectApi","noTrackingScripts","checkoutViaSdk","noCustomAuth","noMoneyLiterals","useFormatMoney","overlayPrimitive","cartViaSdk","verifyMarkers","itemLinkPrefetch","imagePriority","noLazyOverlay","noUnsafeHtml","noEval","noExternalScripts","safeExternalLinks","noUnlistedFetch","noUnlistedFetchDynamic","noServerEnvInClient","cacheableMenuRoutes","noOffsiteNavigation","noGlobalIndirection","noDocumentWrite","noRemoteImport","SECURITY_RULES","enabled","name","strictRules","plugin","base","parser","jsxA11y","reactHooks","searchDialogs","typed","security","src_default","plugin"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/rules/cacheable-menu-routes.ts","../src/create-rule.ts","../src/matchers.ts","../src/rules/cart-via-sdk.ts","../src/rules/checkout-via-sdk.ts","../src/rules/image-priority.ts","../src/rules/item-link-prefetch.ts","../src/rules/no-custom-auth.ts","../src/rules/no-direct-api.ts","../src/globals.ts","../src/rules/no-document-write.ts","../src/rules/no-eval.ts","../src/rules/no-external-scripts.ts","../src/rules/no-global-indirection.ts","../src/rules/no-lazy-overlay.ts","../src/money-rule-utils.ts","../src/rules/no-money-literals.ts","../src/rules/no-offsite-navigation.ts","../src/rules/no-remote-import.ts","../src/rules/no-server-env-in-client.ts","../src/rules/no-tracking-scripts.ts","../src/rules/no-unlisted-fetch.ts","../src/rules/no-unsafe-html.ts","../src/rules/overlay-primitive.ts","../src/rules/safe-external-links.ts","../src/format-fix.ts","../src/rules/use-format-money.ts","../src/rules/verify-markers.ts"],"mappings":"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","names":["parser","jsxA11y","reactHooks","minimatch","ESLintUtils","createRule","name","minimatch","endpointPattern","trackingPattern","paymentHostPattern","staticText","node","part","memberName","unwrapExpression","findVariable","source","name","scope","found","jsxAttribute","attribute","jsxValue","isZappieEndpoint","value","isTrackingEndpoint","isInternalSdkImport","isServerFile","filename","patterns","path","pattern","pages","extensions","menuRoutes","serverExports","sessionCalls","sessionStoreName","sessionHeaders","sessionRoutes","topLevel","node","exportedName","definitionOf","source","findVariable","isHeaders","memberName","definition","binding","storeType","annotation","createsStore","isSessionStore","declared","calleeName","cacheableMenuRoutes","createRule","context","options","filename","pattern","minimatch","inServerExport","ancestor","report","name","target","header","staticText","cartName","storageKey","calleeName","node","variableName","cartInitial","value","cartViaSdk","createRule","context","method","key","id","call","autocomplete","paymentField","providerImport","value","checkoutViaSdk","createRule","context","node","tag","auto","jsxValue","jsxAttribute","name","id","target","cardInput","providerTarget","paymentHostPattern","mappedBy","node","current","parent","firstOnly","source","callback","text","index","imagePriority","createRule","context","images","priority","jsxAttribute","disabled","targetsItem","attribute","expression","target","jsxValue","itemLinkPrefetch","createRule","context","links","node","item","jsxAttribute","defaults","authValue","browserStorage","globals","isStorage","node","memberKey","staticText","authImport","value","noCustomAuth","createRule","context","options","server","isServerFile","kind","type","jsxValue","jsxAttribute","auto","first","key","cookie","message","value","noDirectApi","createRule","context","inspect","node","staticText","isZappieEndpoint","isInternalSdkImport","TRUSTED_NAVIGATION_ORIGINS","WINDOW_NAMES","WINDOW_MEMBERS","DOCUMENT_MEMBERS","isLocationObject","source","node","inner","globalKind","memberName","aliasOf","seen","variable","findVariable","definition","id","init","property","entry","isGlobalName","kind","input","unwrapExpression","alias","name","owner","constantText","parts","index","quasi","expression","value","left","right","leadingText","whole","text","staysTrusted","complete","trusted","origin","isAbsoluteUrl","noDocumentWrite","createRule","context","node","callee","name","memberName","globalKind","globalCallName","source","input","node","unwrapExpression","last","globalKind","memberName","stringValued","staticText","noEval","createRule","context","name","constructorCall","callee","external","value","noExternalScripts","createRule","context","node","element","attribute","jsxAttribute","src","jsxValue","dynamic","isTrackingEndpoint","rel","as","href","memberName","globalKind","staticText","property","NAVIGATION_KEYS","addsGlobals","node","method","key","staticText","added","argument","property","REFLECTION","noGlobalIndirection","createRule","context","source","guarded","globalKind","isLocationObject","callee","methods","name","memberName","target","react","conventionalNamespace","noLazyOverlay","createRule","context","lazyNames","suspenseNames","namespaces","fromNamespace","object","property","wanted","node","specifier","imported","callee","name","ESLintUtils","moneyLiteralPattern","isMoneyLiteral","value","memberName","node","isAmountMinor","amountOwner","dividedMinorOwner","parserServices","context","declaredBySdkMoney","symbol","declaration","path","isSdkMoney","services","checker","tsNode","type","part","property","currencyStyle","noMoneyLiterals","createRule","context","services","parserServices","arithmetic","node","isAmountMinor","isSdkMoney","isMoneyLiteral","dividedMinorOwner","memberName","quasi","ORIGIN_PARTS","ROUTER_CALLS","SAFE_TARGET_HELPERS","noOffsiteNavigation","createRule","context","source","location","node","globalKind","locationObject","isLocationObject","safe","target","unwrapExpression","isSafeRedirect","left","right","whole","constantText","staysTrusted","leadingText","findVariable","definition","leaves","lead","isAbsoluteUrl","routerCall","callee","memberName","anchors","anchorHref","object","value","name","staticText","isGlobalName","init","element","attribute","jsxAttribute","jsxValue","to","key","lower","isRemote","text","WORKERS","relativePath","projectFileUrl","source","input","node","unwrapExpression","memberName","variable","findVariable","definition","reference","parent","base","constantText","noRemoteImport","createRule","context","check","target","whole","leadingText","declaration","isGlobalName","serverFiles","vitePublic","namedFunction","node","parent","staticText","directEnv","memberName","contextCloudflare","forbidden","kind","key","direct","noServerEnvInClient","createRule","context","filename","isServerFile","aliases","cloudflareAliases","serverBody","ancestor","kindOf","recordCloudflarePattern","pattern","property","inspectParameters","parameter","imports","imported","value","noTrackingScripts","createRule","context","inspect","node","staticText","isTrackingEndpoint","callee","direct","dataLayer","literal","node","text","staticText","hostname","value","allowed","host","entries","entry","candidate","noUnlistedFetch","createRule","context","options","filename","isServerFile","configured","allow","xhr","inspect","target","isZappieEndpoint","memberName","name","noUnlistedFetchDynamic","objectHtml","node","property","staticText","noUnsafeHtml","createRule","context","source","isFactory","findVariable","definition","isSanitizer","init","sanitized","input","seen","unwrapExpression","binding","nextSeen","initial","setter","updates","reference","call","reportHtmlObject","value","name","dangerous","child","memberName","props","defaults","name","node","carriesKey","keys","key","part","property","overlayPrimitive","createRule","context","options","searchValues","derivedFromSearch","text","value","callee","argument","dialog","role","attribute","open","callName","node","memberName","possibleBlank","staticText","safeExternalLinks","createRule","context","source","tainted","safe","importedSafeRedirect","findVariable","definition","fromRequest","input","unwrapExpression","sameOriginGuard","target","targetOrigin","expression","trustedOrigin","ancestor","test","name","value","jsxValue","jsxAttribute","targetAttribute","targetExpression","relAttribute","rel","fixer","tokens","sdkImport","program","node","importedFormat","declaration","specifier","importFix","fixer","source","local","importedName","named","last","first","text","formatFixes","replace","owner","fixes","addition","formatBinding","scope","variable","importedFormatLocal","availableAlias","names","name","intlNumberFormat","node","callee","memberName","formattedMinor","dividedMinorOwner","formatsDividedMinor","member","call","useFormatMoney","createRule","context","source","services","parserServices","program","reportFix","replace","owner","data","formatBinding","alias","availableAlias","fixer","formatFixes","local","importedFormatLocal","inspectFormatter","currencyStyle","expression","isAmountMinor","isSdkMoney","marker","handlerKind","source","node","text","verifyMarkers","createRule","context","click","attribute","kind","fixer","rules","noDirectApi","noTrackingScripts","checkoutViaSdk","noCustomAuth","noMoneyLiterals","useFormatMoney","overlayPrimitive","cartViaSdk","verifyMarkers","itemLinkPrefetch","imagePriority","noLazyOverlay","noUnsafeHtml","noEval","noExternalScripts","safeExternalLinks","noUnlistedFetch","noUnlistedFetchDynamic","noServerEnvInClient","cacheableMenuRoutes","noOffsiteNavigation","noGlobalIndirection","noDocumentWrite","noRemoteImport","SECURITY_RULES","enabled","name","strictRules","plugin","base","parser","jsxA11y","reactHooks","searchDialogs","typed","security","src_default","plugin"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-zappie",
3
- "version": "0.4.1",
3
+ "version": "0.4.2",
4
4
  "description": "Flat ESLint rules for Zappie storefront projects.",
5
5
  "license": "MIT",
6
6
  "repository": {