{"version":3,"file":"SalesProvider.CVkJc0Cd.mjs","names":["React.useState","jetflyDebug","useState","useRef","_Fragment"],"sources":["https:/framerusercontent.com/modules/HqrscEk6hoy0DWYn874i/i4rHoQkW9tAEtiVEVrZE/JetflyApi.js","https:/framer.com/m/JetflyApi-ByUhCq.js","https:/framerusercontent.com/modules/Hv3Qk2pKFKpuOtDxULpB/VvRBtwwxZxPhBoRZ9VqF/SalesProvider.js"],"sourcesContent":["function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import{jsx as _jsx}from\"react/jsx-runtime\";const jetflyDebug=(...args)=>{if(typeof window!==\"undefined\"&&window.__JETFLY_DEBUG){console.log(...args);}};// Sales/JetflyApi.tsx — thin fetch wrapper for\n// https://integrations.jetfly.com/api/sales (spec: Enzo 2026-08-05,\n// see memory `reference_jetfly_integrations_api`).\n//\n// Adds the Bearer <access-token> header from AuthMsal on every request\n// (unless `noAuth` is passed for the renderer/public endpoints). Parses\n// JSON responses, throws JetflyApiError on non-2xx with the parsed body\n// attached so callers can react to 422 validation errors, 429 rate limit,\n// etc.\n//\n// Typed convenience helpers (apiGetMeta, apiCreateProposal, …) are the\n// preferred entry points from feature code — they encode the exact URL\n// paths + query params from the API doc.\n/* AuthMsal exposes its helpers on `window.__jetflyAuth`. We resolve\n   getAccessToken lazily so this file has no cross-import — matches the\n   Sales tool's window.__jetflySales singleton pattern (memory\n   `reference_framer_sales_components`). */async function getAccessToken(){if(typeof window===\"undefined\")return null;const auth=window.__jetflyAuth;if(!auth?.getAccessToken){/* AuthMsal hasn't mounted yet — bail so the caller can retry. */return null;}return auth.getAccessToken();}const BASE_URL=\"https://integrations.jetfly.com/api/sales\";/* Test-mode guard (Maxime 2026-08-05) — Enzo has no staging env, so\n   we test against prod Pipedrive. Every customer/deal created from\n   a non-prod origin is auto-prefixed with `TEST — ` so Yuliia can\n   filter/purge them from Pipedrive at will. Prod origin\n   (jetfly.com) sends names untouched. */const TEST_PREFIX=\"TEST — \";export function isTestEnvironment(){if(typeof window===\"undefined\")return false;const host=window.location.hostname||\"\";/* Explicit override lets us test the un-prefixed flow in staging\n       one day, or force test mode from a canary URL. */if(window.location.search.includes(\"test=1\"))return true;if(window.location.search.includes(\"test=0\"))return false;/* Only the production Jetfly domain is treated as \"real\". */if(host===\"jetfly.com\"||host===\"www.jetfly.com\")return false;return true;/* framer.app previews, framercanvas.com, localhost… */}function applyTestPrefix(name){if(!isTestEnvironment())return name;if(name.startsWith(TEST_PREFIX))return name;return TEST_PREFIX+name;}export class JetflyApiError extends Error{constructor(status,body,message,code){super(message);_define_property(this,\"status\",void 0);_define_property(this,\"body\",void 0);_define_property(this,\"code\",void 0);this.status=status;this.body=body;this.code=code;}}function buildUrl(path,query){const url=new URL(BASE_URL+String(path||\"\"));if(query){for(const[k,v]of Object.entries(query)){if(v===undefined||v===null||v===\"\")continue;url.searchParams.set(k,String(v));}}return url;}const MAX_INFLIGHT=3;let inflightCount=0;let mutateGen=0;const waiters=[];const getMemo=new Map;const getInflight=new Map;function sleepMs(ms){return new Promise(r=>setTimeout(r,ms));}function acquireSlot(signal){return new Promise((resolve,reject)=>{const start=()=>{if(signal?.aborted){reject(new DOMException(\"Aborted\",\"AbortError\"));return;}if(inflightCount<MAX_INFLIGHT){inflightCount++;resolve();return;}waiters.push(start);};if(signal){signal.addEventListener(\"abort\",()=>{const i=waiters.indexOf(start);if(i>=0)waiters.splice(i,1);reject(new DOMException(\"Aborted\",\"AbortError\"));},{once:true});}start();});}function releaseSlot(){inflightCount=Math.max(0,inflightCount-1);const next=waiters.shift();if(next)next();}function getCacheTtlMs(url,method){if(String(method||\"GET\").toUpperCase()!==\"GET\")return 0;let p=\"\";try{const u=url instanceof URL?url:new URL(String(url||BASE_URL));p=String(u.pathname||\"\").replace(/\\/$/,\"\");}catch{p=String(url||\"\");}if(p.endsWith(\"/meta\"))return 5*60*1e3;if(/\\/customers\\/[^/]+\\/deals$/.test(p))return 2*60*1e3;/* Never cache GET /proposals/{id} — autosave PATCH must not be\n       shadowed by a stale read (backend does not merge payloads). */if(/\\/proposals\\/[^/]+$/.test(p))return 0;if(p.endsWith(\"/proposals\"))return 15*1e3;if(p.endsWith(\"/customers/search\"))return 20*1e3;if(p.endsWith(\"/customers\"))return 20*1e3;if(/\\/customers\\/[^/]+\\/leads$/.test(p)||p.endsWith(\"/leads\"))return 20*1e3;if(/\\/customers\\/[^/]+$/.test(p))return 60*1e3;return 0;}export function invalidateJetflyGetCache(){getMemo.clear();}export async function jetflyFetch(path,opts={}){const url=buildUrl(path,opts.query);const method=opts.method||\"GET\";const ttl=opts.skipCache?0:getCacheTtlMs(url,method);const memoKey=ttl>0?`${method} ${url.toString()}`:\"\";if(memoKey){const hit=getMemo.get(memoKey);if(hit&&Date.now()-hit.ts<ttl)return hit.data;const pending=getInflight.get(memoKey);if(pending)return pending;}/* Uncached GETs (e.g. GET /proposals/{id}) are still shared while in\n       flight: the page and the sidebar ask for the same proposals at the same\n       time. No response is kept afterwards, so reads stay fresh. Requests\n       carrying an abort signal are left alone. */const flightKey=memoKey||(String(method).toUpperCase()===\"GET\"&&!opts.skipCache&&!opts.signal?`inflight ${url.toString()}`:\"\");if(flightKey&&!memoKey){const pending=getInflight.get(flightKey);if(pending)return pending;}const run=doJetflyFetch(url,path,opts,memoKey,ttl);if(flightKey){getInflight.set(flightKey,run);void run.finally(()=>getInflight.delete(flightKey)).catch(()=>{});}return run;}async function doJetflyFetch(url,_path,opts,memoKey,ttl){const method=opts.method||\"GET\";const mutateGenAtStart=mutateGen;const headers={Accept:opts.accept||\"application/json\"};if(opts.signal?.aborted){throw new DOMException(\"Aborted\",\"AbortError\");}if(!opts.noAuth){const token=await getAccessToken();if(!token){throw new JetflyApiError(401,null,\"No access token — user not authenticated\");}headers[\"Authorization\"]=`Bearer ${token}`;/* JWT payload debug (2026-08-13) — decodes the middle segment\n           of the access token so we can verify aud/scp/iss/appid\n           without asking the user to paste the token in jwt.io. Fires\n           once per session (guard via window flag) to avoid spamming\n           the console. Remove once Johan confirms the API accepts the\n           token shape. */try{const w=typeof window!==\"undefined\"?window:null;if(w&&!w.__jetflyJwtLogged&&w.__JETFLY_DEBUG){const parts=token.split(\".\");if(parts.length>=2){const b64=parts[1].replace(/-/g,\"+\").replace(/_/g,\"/\").padEnd(parts[1].length+(4-parts[1].length%4)%4,\"=\");const payload=JSON.parse(atob(b64));const ver=payload.ver||(payload.azp?\"2.0\":\"1.0?\");jetflyDebug(`[Jetfly JWT] access token payload (ver ${ver})`,{ver,aud:payload.aud,iss:payload.iss,appid:payload.appid,azp:payload.azp,scp:payload.scp,roles:payload.roles,tid:payload.tid,oid:payload.oid,upn:payload.upn||payload.preferred_username||payload.unique_name,exp:payload.exp?new Date(payload.exp*1e3).toISOString():null});w.__jetflyJwtLogged=true;}}}catch(e){console.warn(\"[Jetfly JWT] decode failed\",e);}}let body=undefined;if(opts.multipart&&opts.body instanceof FormData){body=opts.body;/* Do NOT set Content-Type — browser fills the multipart boundary */}else if(opts.body!==undefined){headers[\"Content-Type\"]=\"application/json\";body=JSON.stringify(opts.body);}/* Mutations skip the GET queue so PATCH /proposals is never\n       stuck behind list/deals hydrations (saves looked like they\n       never landed). */const queued=method===\"GET\";if(queued)await acquireSlot(opts.signal);try{let res=null;let parsed=null;for(let attempt=0;attempt<3;attempt++){if(opts.signal?.aborted){throw new DOMException(\"Aborted\",\"AbortError\");}try{res=await fetch(url,{method,headers,body,signal:opts.signal});}catch(e){if(e?.name===\"AbortError\"||opts.signal?.aborted||/aborted/i.test(String(e?.message||\"\"))){throw new DOMException(\"Aborted\",\"AbortError\");}// Sales/SalesProvider shows a \"Reload\" banner on this event.\ntry{window.dispatchEvent(new CustomEvent(\"jetfly-network-error\",{detail:{path:String(_path||\"\"),method}}));}catch{}throw new JetflyApiError(0,null,`Network error: ${e?.message||e}`);}const contentType=res.headers.get(\"content-type\")||\"\";const isJson=contentType.includes(\"application/json\");parsed=null;if(res.status!==204){try{parsed=isJson?await res.json():await res.text();}catch{parsed=null;}}if(res.status===429&&attempt<2){const ra=res.headers.get(\"Retry-After\");const wait=ra&&/^\\d+$/.test(ra)?Math.min(4e3,Number(ra)*1e3):700*(attempt+1);await sleepMs(wait);continue;}/* Silent-refresh + retry once when the access token was\n               stale (401). Avoids the \"please log out and back in\"\n               dance that Umut hit 2026-08-27 : MSAL cached an expired\n               token, the Pipedrive list dropped to an empty state,\n               and only a manual reco fixed it. `refreshAccessToken`\n               forces MSAL to bypass the cache. If the refresh also\n               fails, fall through and surface the original 401 as\n               a JetflyApiError so the caller can render its state. */if(res.status===401&&attempt<2&&!opts.noAuth){try{const auth=window.__jetflyAuth;const refreshed=await auth?.refreshAccessToken?.();if(refreshed){headers[\"Authorization\"]=`Bearer ${refreshed}`;continue;}}catch{}}break;}if(!res||!res.ok){const msg=parsed&&(parsed.message||parsed.error||parsed.title||JSON.stringify(parsed).slice(0,200))||`HTTP ${res?.status||0}`;throw new JetflyApiError(res?.status||0,parsed,msg,parsed?.code);}if(method!==\"GET\"){mutateGen+=1;getMemo.clear();}else if(memoKey&&ttl>0&&mutateGenAtStart===mutateGen){getMemo.set(memoKey,{ts:Date.now(),data:parsed});}return parsed;}finally{if(queued)releaseSlot();}}/* Meta ------------------------------------------------------------------- */function asStageList(raw){if(Array.isArray(raw))return raw;if(Array.isArray(raw?.data))return raw.data;if(raw&&typeof raw===\"object\")return Object.values(raw);return[];}export function normalizeMeta(raw){const m=raw?.data&&(raw.data.stages||raw.data.pipeline_id)?raw.data:raw||{};const pipeline_id=Number(m.pipeline_id??m.pipelineId??m.pipeline?.id??0);const users=Array.isArray(m.users)?m.users:Array.isArray(m.users?.data)?m.users.data:[];const stages=asStageList(m.stages).map(s=>({id:Number(s?.id??s?.stage_id??0),name:String(s?.name??s?.title??\"\"),pipeline_id:Number(s?.pipeline_id??s?.pipelineId??s?.pipeline?.id??pipeline_id),order:Number(s?.order??s?.order_nr??0)})).filter(s=>s.id>0).sort((a,b)=>a.order-b.order);const pipes=asStageList(m.pipelines);const salesPipe=pipes.find(p=>{const n=String(p?.name||p?.title||\"\");return/sales/i.test(n)&&!/fractional/i.test(n);});const salesId=Number(salesPipe?.id??salesPipe?.pipeline_id??pipeline_id);const fromSalesPipe=asStageList(salesPipe?.stages).map(s=>({id:Number(s?.id??s?.stage_id??0),name:String(s?.name??s?.title??\"\"),pipeline_id:Number(s?.pipeline_id??s?.pipelineId??salesId??pipeline_id),order:Number(s?.order??s?.order_nr??0)})).filter(s=>s.id>0);const preferred=fromSalesPipe.length?fromSalesPipe:stages;const inPipe=salesId?preferred.filter(s=>!s.pipeline_id||s.pipeline_id===salesId):preferred;/* Never fall back to another pipeline's stages (Fractional 14/16/57\n       422 on POST /deals against the configured Sales pipeline). */return{pipeline_id:salesId||pipeline_id,stages:inPipe,users};}export async function apiGetMeta(signal){const raw=await jetflyFetch(\"/meta\",{signal});return normalizeMeta(raw);}/* Customers -------------------------------------------------------------- */export function apiSearchCustomers(q,signal,opts){return jetflyFetch(\"/customers/search\",{query:{q},signal,skipCache:opts?.skipCache});}/* List customers — GET /customers?owner=me|all&limit=1-100&cursor=X\n   (Enzo 2026-08-12). Returns sorted by updated_at desc. Use it to\n   populate the picker before the rep types. Pipedrive uses cursor\n   pagination only (no page number); pass `next_cursor` back as\n   `cursor` to fetch the next page. Dedupe by id when appending\n   pages. `organization_name` is always null on this endpoint — use\n   emails to disambiguate. */export function apiListCustomers(opts){const query={};if(opts?.owner)query.owner=opts.owner;if(opts?.limit!=null)query.limit=String(opts.limit);if(opts?.cursor)query.cursor=opts.cursor;return jetflyFetch(\"/customers\",{query,signal:opts?.signal,skipCache:opts?.skipCache});}export function apiGetCustomer(id,signal){return jetflyFetch(`/customers/${encodeURIComponent(String(id))}`,{signal});}function asDealList(res){if(Array.isArray(res?.data))return res.data;if(Array.isArray(res?.deals))return res.deals;if(Array.isArray(res))return res;return[];}export function apiGetCustomerDeals(id,opts){/* Spec: GET /customers/{person-id}/deals — up to 100 OPEN deals\n       from the configured Sales pipeline. No query params. */return jetflyFetch(`/customers/${encodeURIComponent(String(id))}/deals`,{signal:opts?.signal,skipCache:opts?.skipCache}).then(res=>{/* Archived (or deleted) Pipedrive deals must never surface in the\n           tool: adding a proposal to one fails on PATCH /deals. Filtered here\n           so every page (contact, deal, sidebar, proposal) gets the same list. */if(Array.isArray(res?.data))return{...res,data:res.data.filter(d=>!isArchivedDeal(d))};if(Array.isArray(res?.deals))return{...res,deals:res.deals.filter(d=>!isArchivedDeal(d))};if(Array.isArray(res))return res.filter(d=>!isArchivedDeal(d));return res;});}export function isArchivedDeal(d){if(!d)return false;const status=String(d.status??\"\").toLowerCase();return d.is_archived===true||d.archived===true||!!d.archive_time||d.is_deleted===true||status===\"archived\"||status===\"deleted\";}export async function apiFetchAllCustomerDeals(id,signal){try{return asDealList(await apiGetCustomerDeals(id,{signal,skipCache:true}));}catch(e){if(e?.name===\"AbortError\"||signal?.aborted)return[];throw e;}}export function apiGetCustomerLeads(id,signal){return jetflyFetch(`/customers/${encodeURIComponent(String(id))}/leads`,{signal}).catch(async err=>{if(err?.status!==404)throw err;return jetflyFetch(\"/leads\",{query:{person_id:Number(id)},signal});});}export function apiConvertLead(leadId,payload){return jetflyFetch(`/leads/${encodeURIComponent(String(leadId))}/convert`,{method:\"POST\",body:payload});}export function apiCreateCustomer(payload){return jetflyFetch(\"/customers\",{method:\"POST\",body:payload});}export function apiSearchOrganizations(q,signal,opts){if(!q.trim())return Promise.resolve({data:[]});return jetflyFetch(\"/organizations/search\",{query:{q},signal,skipCache:opts?.skipCache??true});}export function apiUpdateCustomer(id,patch){return jetflyFetch(`/customers/${encodeURIComponent(String(id))}`,{method:\"PATCH\",body:patch});}/* Proposals -------------------------------------------------------------- */export function apiListProposals(opts){return jetflyFetch(\"/proposals\",{query:{owner:opts?.owner,status:opts?.status},signal:opts?.signal});}export function apiCreateProposal(payload){return jetflyFetch(\"/proposals\",{method:\"POST\",body:payload});}export function apiGetProposal(id,signal){return jetflyFetch(`/proposals/${encodeURIComponent(id)}`,{signal});}export function apiUpdateProposal(id,patch){return jetflyFetch(`/proposals/${encodeURIComponent(id)}`,{method:\"PATCH\",body:patch});}export function apiTakeoverProposal(id){return jetflyFetch(`/proposals/${encodeURIComponent(id)}/takeover`,{method:\"POST\"});}export function apiDeleteProposal(id){return jetflyFetch(`/proposals/${encodeURIComponent(id)}`,{method:\"DELETE\"});}/* Share Immat composite --------------------------------------------------\n   Yuliia's Pipedrive Share Immat field is stored as a single string in\n   the format `{CODE full} ({tail} {MMM YYYY})` — example:\n   \"PC-12 (LX-JPB FEB 2026)\". Compose it before sending to POST /deals\n   so the sales rep keeps a clean picker UX (\"LX-JPB\") while Pipedrive\n   receives what Yuliia expects. Maxime 2026-08-13.\n\n   Sources:\n   - `codeFull` : CODE full field on Fleet CMS (fallback: last word of\n     fleetName, so \"Pilatus PC-12\" → \"PC-12\"; hardcode map covers the\n     Cirrus Jet case where the last-word heuristic misses).\n   - `tail`    : Immat picked in step 3 dropdown.\n   - `startDate` : Start Date field on Share Immat CMS (Kim to add).\n     Formatted as \"MMM YYYY\" uppercase.\n\n   Returns \"\" when tail is empty (nothing to send). Returns just the\n   composite prefix when startDate is missing so Yuliia at least sees\n   the fleet + tail. */const HARDCODED_CODE_FULL_BY_FLEET_NAME={\"pilatus pc-12\":\"PC-12\",\"pilatus pc-24\":\"PC-24\",\"cirrus jet\":\"Cirrus Jet\",\"cirrus sf50\":\"Cirrus Jet\"};function guessCodeFull(fleetName){const norm=fleetName.trim().toLowerCase();if(HARDCODED_CODE_FULL_BY_FLEET_NAME[norm]){return HARDCODED_CODE_FULL_BY_FLEET_NAME[norm];}/* Fallback: last whitespace-separated token, uppercased. */const parts=fleetName.trim().split(/\\s+/);return parts.length?parts[parts.length-1]:fleetName;}function formatStartMonth(raw){const now=new Date;const defaultFmt=`${now.toLocaleDateString(\"en-US\",{month:\"short\"}).toUpperCase()} ${now.getFullYear()}`;if(!raw)return defaultFmt;const trimmed=raw.trim();if(!trimmed)return defaultFmt;/* Already in \"FEB 2026\" or \"Feb 2026\" form → uppercase. */if(/^[A-Za-z]{3}\\s+\\d{4}$/.test(trimmed))return trimmed.toUpperCase();/* ISO \"2026-02-01\" or \"2026-02\" → parse then format. */const parsed=new Date(trimmed);if(!Number.isNaN(parsed.getTime())){const mo=parsed.toLocaleDateString(\"en-US\",{month:\"short\"}).toUpperCase();const yr=parsed.getFullYear();return`${mo} ${yr}`;}/* Unknown format — pass through untouched (Yuliia can spot-check). */return trimmed.toUpperCase();}export function formatShareImmatForPipedrive(opts){const tail=String(opts.tail||\"\").trim();if(!tail)return\"\";const codeFull=String(opts.codeFull||guessCodeFull(opts.fleetName||\"\")||\"\").trim();/* formatStartMonth always returns a value — falls back to the\n       current month + year when the CMS Start Date field hasn't been\n       filled yet (Kim can populate it later and it'll auto-override). */const startMonth=formatStartMonth(opts.startDate||\"\");if(codeFull)return`${codeFull} (${tail} ${startMonth})`;return`${tail} ${startMonth}`;}/* Lookup helper reading the Share Immat rows singleton published by\n   AircraftSelector — used when the caller only has the tail number\n   (e.g. proposal.payload.step3_aircraft.preferences.<fleetId>.immat)\n   and wants the composite string. */export function lookupShareImmatComposite(tail,fleetName){if(!tail)return\"\";if(typeof window===\"undefined\")return\"\";const rows=window.__jetflyShareImmatRows||[];const row=rows.find(r=>String(r.immat||\"\").trim().toLowerCase()===tail.trim().toLowerCase());return formatShareImmatForPipedrive({tail,fleetName,startDate:row?.startDate||\"\"});}const DEAL_FIELD_KEYS=[\"proposal_id\",\"title\",\"stage_id\",\"value\",\"currency\",\"organization_id\",\"proposal_language\",\"aircraft_type\",\"share_size\",\"share_size_mode\",\"share_type\",\"share_immat\",\"flight_hours\",\"contract_duration\",\"management_fee\",\"acquisition_cost\",\"proposal_status\",\"proposal_sent_at\",\"proposal_pdf_url\"];function canonicalAircraftType(raw){const s=String(raw||\"\").trim();if(!s)return undefined;const k=s.toLowerCase().replace(/[^a-z0-9]/g,\"\");if(k===\"cms0\"||k.includes(\"pc12\")||k===\"cdhyixl6j\"||s===\"PC-12\")return\"PC-12\";if(k===\"cms1\"||k.includes(\"pc24\")||k===\"kq2zbdj7c\"||s===\"PC-24\")return\"PC-24\";if(k===\"cms2\"||k.includes(\"cirrus\")||k.includes(\"sf50\")||k===\"fbciglxgh\"||/^cirrus$/i.test(s))return\"SF50\";if(s===\"PC-12\"||s===\"PC-24\"||s===\"SF50\")return s;return undefined;}function canonicalShareImmat(raw){const s=String(raw||\"\").trim();if(!s)return undefined;/* Yuliia Share Details: \"PC-12 (LX-JPB FEB 2026)\". Keep composites. */if(/\\([A-Z]{1,2}-[A-Z0-9]+/i.test(s))return s;const m=s.match(/\\b(LX-[A-Z0-9]+)\\b/i)||s.match(/\\b([A-Z]{1,2}-[A-Z0-9]{2,})\\b/i);if(m)return m[1].toUpperCase();if(/^[A-Z0-9-]{3,12}$/i.test(s))return s.toUpperCase();return undefined;}/** Keep only the documented POST/PATCH /deals fields and canonical\n *  option labels. Extra keys 422; \"Standard\" / composite immat 422. */export function sanitizeDealPayload(input,opts={}){const out={};for(const k of DEAL_FIELD_KEYS){if(opts.forPatch&&k===\"proposal_id\")continue;let v=input[k];if(v===undefined||v===null||v===\"\")continue;if(k===\"proposal_language\"){v=String(v).slice(0,2).toLowerCase();}else if(k===\"share_size_mode\"){// Long range is written \"LR\" in Pipedrive (meeting 2026-10-06; the API\n// accepts it — checked on deal 71065). Standard stays \"standard\".\nconst m=String(v).toLowerCase();v=m.includes(\"long\")||m===\"lr\"?\"LR\":\"standard\";}else if(k===\"share_type\"){const st=String(v).toLowerCase();if(st.includes(\"second\")||st.includes(\"sh_\")||st===\"second_hand_share\")v=\"second_hand_share\";else v=\"new_share\";}else if(k===\"aircraft_type\"){v=canonicalAircraftType(String(v));if(!v)continue;}else if(k===\"share_immat\"){v=canonicalShareImmat(String(v));if(!v)continue;}else if(k===\"share_size\"){v=String(v).replace(/\\s+/g,\"\");}else if(k===\"proposal_sent_at\"){const raw=String(v).trim();const d=new Date(raw);if(!isNaN(d.getTime())){const pad=n=>String(n).padStart(2,\"0\");v=`${d.getFullYear()}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;}else if(/^\\d{2}:\\d{2}(:\\d{2})?$/.test(raw)){// Pipedrive \"Proposal Sent Time\" is a time field entered as HH:mm:\n// send hours and minutes only (Umut 2026-10-06 — \"HH:mm:00\" left\n// the field empty).\nv=raw.slice(0,5);}else{continue;}}else if(k===\"proposal_status\"){const s=String(v).toLowerCase();if(![\"draft\",\"review\",\"sent\",\"accepted\"].includes(s))continue;v=s;}else if(k===\"status\"){const s=String(v).toLowerCase();if(![\"open\",\"won\",\"lost\"].includes(s))continue;v=s;}else if(k===\"deal_type\"){const s=String(v).toLowerCase();v=s.includes(\"frac\")?\"fractional\":s||\"other\";}else if(k===\"currency\"){v=String(v).toUpperCase().replace(/[^A-Z]/g,\"\").slice(0,3);if(v.length!==3)continue;}else if(k===\"value\"||k===\"flight_hours\"||k===\"contract_duration\"||k===\"management_fee\"||k===\"acquisition_cost\"||k===\"stage_id\"||k===\"organization_id\"){const n=Number(v);if(!Number.isFinite(n)||n<0)continue;// Money sent to Pipedrive follows the proposal (Umut 2026-10-07): whole\n// numbers untouched, decimals rounded up to the next whole number.\nv=k===\"value\"||k===\"management_fee\"||k===\"acquisition_cost\"?Math.ceil(Math.round(n*100)/100):n;}out[k]=v;}if(out.title){out.title=String(out.title).replace(/^\\s*\\[Test\\]\\s*/i,\"\").replace(/^\\s*TEST\\s*[—–-]\\s*/i,\"\").trim();}return out;}export function apiGetDeal(dealId,signal){return jetflyFetch(`/deals/${dealId}`,{signal});}export function apiCreateDeal(payload){const safe=sanitizeDealPayload({...payload,title:payload.title});return jetflyFetch(\"/deals\",{method:\"POST\",body:safe});}/* Links a proposal to an existing Pipedrive deal (API doc of 2026-10-09). The\n   deal keeps its owner and all its fields; the link is what later allows\n   PATCH /deals/{id} and POST /activities for this caller, including on a\n   colleague's deal or a deal created directly in Pipedrive. Idempotent per\n   proposal. 422 when the deal is not open in the Sales pipeline or belongs to\n   another person than the proposal's. */export function apiLinkDeal(proposalId,dealId){return jetflyFetch(\"/deals\",{method:\"POST\",body:{proposal_id:proposalId,pipedrive_deal_id:dealId}});}export function apiUpdateDeal(dealId,patch){const safe=sanitizeDealPayload(patch,{forPatch:true});return jetflyFetch(`/deals/${dealId}`,{method:\"PATCH\",body:safe});}/* Renderer + PDF --------------------------------------------------------- */export function apiRendererToken(proposalId){return jetflyFetch(`/proposals/${encodeURIComponent(proposalId)}/renderer-token`,{method:\"POST\"});}/* Public-ish endpoint — used by the /print page inside Puppeteer. Auth\n   is the renderer token in the query string; NO Entra token here. */export function apiRenderData(proposalId,token){return jetflyFetch(`/proposals/${encodeURIComponent(proposalId)}/render-data`,{query:{token},noAuth:true});}export function apiUploadPdf(proposalId,blob,filename=\"proposal.pdf\"){const fd=new FormData;fd.append(\"file\",blob,filename);return jetflyFetch(`/proposals/${encodeURIComponent(proposalId)}/pdf`,{method:\"POST\",body:fd,multipart:true});}export function apiCreateActivity(payload){return jetflyFetch(\"/activities\",{method:\"POST\",body:payload});}export function apiUpdateActivity(id,patch){return jetflyFetch(`/activities/${id}`,{method:\"PATCH\",body:patch});}/* Pipedrive UI deep-links per Yuliia DAT-1331 (2026-08-21).\n   The workspace is `jetfly.pipedrive.com`; a Person or Deal opens by ID\n   under /person/{id} or /deal/{id}. Returns empty string for invalid IDs\n   so callers can render conditionally without null-guarding. */export function pipedrivePersonUrl(personId){const n=Number(personId);return Number.isFinite(n)&&n>0?`https://jetfly.pipedrive.com/person/${n}`:\"\";}export function pipedriveDealUrl(dealId){const n=Number(dealId);return Number.isFinite(n)&&n>0?`https://jetfly.pipedrive.com/deal/${n}`:\"\";}/* =========================================================================\n   Payload version wrapper — every payload sent to the API MUST contain\n   `version: 1` (spec requirement). This helper enforces it while\n   preserving the existing wizard payload shape.\n   =========================================================================\n*/export function wrapPayload(payload){return{version:1,...payload};}if(typeof window!==\"undefined\"){window.__jetflyApi={fetch:jetflyFetch,invalidateGetCache:invalidateJetflyGetCache,wrapPayload,isTestEnvironment,getMeta:apiGetMeta,normalizeMeta,searchCustomers:apiSearchCustomers,searchOrganizations:apiSearchOrganizations,listCustomers:apiListCustomers,getCustomer:apiGetCustomer,getCustomerDeals:apiGetCustomerDeals,fetchAllCustomerDeals:apiFetchAllCustomerDeals,getCustomerLeads:apiGetCustomerLeads,convertLead:apiConvertLead,createCustomer:apiCreateCustomer,updateCustomer:apiUpdateCustomer,listProposals:apiListProposals,createProposal:apiCreateProposal,getProposal:apiGetProposal,updateProposal:apiUpdateProposal,takeoverProposal:apiTakeoverProposal,deleteProposal:apiDeleteProposal,getDeal:apiGetDeal,createDeal:apiCreateDeal,updateDeal:apiUpdateDeal,linkDeal:apiLinkDeal,sanitizeDealPayload,rendererToken:apiRendererToken,renderData:apiRenderData,uploadPdf:apiUploadPdf,createActivity:apiCreateActivity,updateActivity:apiUpdateActivity,formatShareImmatForPipedrive,lookupShareImmatComposite,pipedrivePersonUrl,pipedriveDealUrl};}/* Framer requires a default React component export. Render an invisible\n   marker so this file can be dropped on any Sales page (login, home)\n   to guarantee the singleton is mounted early. */import{addPropertyControls}from\"framer\";import*as React from\"react\";export default function JetflyApiMount(){/* Only render the badge on the client (avoid SSR mismatch). */const[test,setTest]=React.useState(false);React.useEffect(()=>{setTest(isTestEnvironment());},[]);if(!test){return /*#__PURE__*/_jsx(\"div\",{\"data-jetfly-api-mount\":\"true\",\"aria-hidden\":true,style:{display:\"none\",width:0,height:0,overflow:\"hidden\"}});}/* Visible TEST MODE ribbon so Maxime never forgets which\n       environment he's writing to. Fixed top-right, ignores clicks. */return /*#__PURE__*/_jsx(\"div\",{\"data-jetfly-api-mount\":\"true\",\"data-jetfly-test-mode\":\"true\",style:{position:\"fixed\",top:12,right:12,zIndex:999999,padding:\"6px 12px\",borderRadius:999,background:\"#B83228\",color:\"#FFF\",fontFamily:\"'Hanken Grotesk', sans-serif\",fontSize:11,fontWeight:700,letterSpacing:\"0.14em\",textTransform:\"uppercase\",boxShadow:\"0 2px 8px rgba(0,0,0,0.25)\",pointerEvents:\"none\",userSelect:\"none\"},children:\"TEST MODE — writes to prod Pipedrive\"});}JetflyApiMount.displayName=\"Sales / Jetfly API\";addPropertyControls(JetflyApiMount,{});\nexport const __FramerMetadata__ = {\"exports\":{\"apiCreateProposal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Meta\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiListProposals\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiUpdateCustomer\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiGetMeta\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiRendererToken\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiTakeoverProposal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiGetCustomer\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiLinkDeal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"JetflyApiError\":{\"type\":\"class\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiUpdateDeal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"normalizeMeta\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiUploadPdf\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"invalidateJetflyGetCache\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CreateDealPayload\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiGetCustomerDeals\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiGetDeal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiUpdateProposal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Organization\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiConvertLead\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiListCustomers\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Customer\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"wrapPayload\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiSearchCustomers\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"jetflyFetch\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiFetchAllCustomerDeals\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"pipedrivePersonUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isTestEnvironment\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiCreateActivity\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiRenderData\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiCreateCustomer\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiCreateDeal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiGetCustomerLeads\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Deal\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiDeleteProposal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ActivityPayload\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiGetProposal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isArchivedDeal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ApiOptions\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"formatShareImmatForPipedrive\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiSearchOrganizations\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"sanitizeDealPayload\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"lookupShareImmatComposite\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"pipedriveDealUrl\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"JetflyApiMount\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"Proposal\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"apiUpdateActivity\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./JetflyApi.map","/*\n * JetflyApi\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/HqrscEk6hoy0DWYn874i/i4rHoQkW9tAEtiVEVrZE/JetflyApi.js\"\nexport { default } from \"https://framerusercontent.com/modules/HqrscEk6hoy0DWYn874i/i4rHoQkW9tAEtiVEVrZE/JetflyApi.js\"\n","// Sales/SalesProvider.tsx — Invisible root component. Place ONCE per /sales/* page.\n// Initializes the global store on window.__jetflySales — all other Sales/* components read from it.\n// Persists to localStorage always, and to the Jetfly integrations API\n// (Pipedrive) on explicit Save / Next.\n//\n// Centralized config:\n// - tokens (colors + fonts)\n// - theme (stepLabels, stepRoutes, contact/language labels)\n// - proposal state — load by ?p=<id> URL param, auto-create if missing\n// - auth guard — MSAL + allowlist, redirect to login if no session\n//\n// Identity (userName / userEmail / avatarUrl / role) comes from the\n// Microsoft Entra account via __jetflyAuth.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/* Side-effect import: pulling JetflyApi at the top of SalesProvider\n   guarantees its module-level `window.__jetflyApi = { ... }` bootstrap\n   runs on every /sales/* page (SalesProvider is the singleton mounted\n   on all Sales pages). Without this, __jetflyApi is only populated on\n   pages that separately drag-dropped Sales/JetflyApi, and any page\n   without it bails with \"__jetflyApi not ready\" (CustomerCardList,\n   ProspectProfile picker, etc.). Maxime 2026-08-12. */import\"https://framer.com/m/JetflyApi-ByUhCq.js\";const jetflyDebug=(...args)=>{if(typeof window!==\"undefined\"&&window.__JETFLY_DEBUG){console.log(...args);}};/* =========================================================================\n   MSAL bootstrap — inlined here so window.__jetflyAuth is available on\n   EVERY /sales/* page (SalesProvider is placed once per page). Without\n   this, only pages that separately drag-dropped the Sales/AuthMsal\n   component would have MSAL init → auth guard below couldn't detect\n   the Entra account → infinite redirect loop /sales/search ↔\n   /sales/login (Maxime 2026-08-12). Same code + config as AuthMsal.tsx.\n   ========================================================================= */if(typeof window!==\"undefined\"&&!window.__jetflyAuth){const MSAL_CLIENT_ID=\"5f0aeabe-a1d3-46ea-a626-09a88a9f022b\";const MSAL_TENANT_ID=\"55d798ff-2803-431e-9e10-d4d4ae45f882\";const MSAL_API_SCOPE=`api://${MSAL_CLIENT_ID}/access`;const MSAL_REDIRECT_PATH=\"/sales/login\";const computeRedirectUri=()=>`${window.location.origin}${MSAL_REDIRECT_PATH}`;let _msal=null;let _initPromise=null;// A login that never came back (adblock, back button, closed tab) leaves\n// MSAL's interaction lock set and every next login throws\n// \"interaction_in_progress\": swept after init and before each login.\n// Taken from Sales/AuthMsal, which is no longer placed on the pages.\nconst clearStuckInteractionLock=()=>{for(const store of[window.localStorage,window.sessionStorage]){try{const keys=[];for(let i=0;i<store.length;i++){const k=store.key(i);if(!k)continue;if(k.endsWith(\".interaction.status\")||k===\"msal.interaction.status\"||k.includes(\"interaction_status\")||k.endsWith(\".request.state\")||k.endsWith(\".nonce.idtoken\")||k.endsWith(\".request.params\"))keys.push(k);}keys.forEach(k=>{try{store.removeItem(k);}catch{}});}catch{}}};const getToken=async forceRefresh=>{const msal=await ensureInit();const account=msal.getActiveAccount()||msal.getAllAccounts()[0];if(!account)return null;try{const res=await msal.acquireTokenSilent({account,scopes:[MSAL_API_SCOPE],forceRefresh});return res.accessToken||null;}catch{try{await msal.acquireTokenRedirect({scopes:[MSAL_API_SCOPE],account});}catch{}return null;}};async function ensureInit(){if(_msal)return _msal;if(!_initPromise){_initPromise=(async()=>{const{PublicClientApplication}=await import(\"https://esm.sh/@azure/msal-browser@3.20.0\");try{const ss=window.sessionStorage;const ls=window.localStorage;for(let i=0;i<ss.length;i++){const k=ss.key(i);if(!k)continue;if(k.includes(MSAL_CLIENT_ID)||/msal/i.test(k)||k.includes(\"login.windows.net\")||k.includes(\"login.microsoftonline\")){if(!ls.getItem(k))ls.setItem(k,ss.getItem(k)||\"\");}}}catch{}const inst=new PublicClientApplication({auth:{clientId:MSAL_CLIENT_ID,authority:`https://login.microsoftonline.com/${MSAL_TENANT_ID}`,redirectUri:computeRedirectUri(),navigateToLoginRequestUrl:false},cache:{cacheLocation:\"localStorage\",storeAuthStateInCookie:false}});await inst.initialize();const result=await inst.handleRedirectPromise().catch(()=>null);clearStuckInteractionLock();if(result?.account){inst.setActiveAccount(result.account);}else{const accounts=inst.getAllAccounts();if(accounts.length>0)inst.setActiveAccount(accounts[0]);}_msal=inst;return inst;})();}return _initPromise;}window.__jetflyAuth={login:async(prompt=\"select_account\")=>{const msal=await ensureInit();clearStuckInteractionLock();try{await msal.loginRedirect({scopes:[MSAL_API_SCOPE],prompt});}catch(e){if(!String(e?.errorCode||e?.name||\"\").includes(\"interaction_in_progress\"))throw e;clearStuckInteractionLock();await msal.loginRedirect({scopes:[MSAL_API_SCOPE],prompt});}},/* Local-only sign-out: clear MSAL cache and navigate to\n           /sales/login ourselves. Avoids the Microsoft account-picker\n           logout page (login.microsoftonline.com/.../logout) which\n           doesn't auto-redirect back. Trade-off: the user stays SSO'd\n           at the Microsoft level, but next login() will show the\n           account picker because we pass prompt:\"select_account\". */logout:async(redirectTo=MSAL_REDIRECT_PATH)=>{try{const msal=await ensureInit();const account=msal.getActiveAccount()||msal.getAllAccounts()[0];if(account){try{msal.setActiveAccount(null);}catch{}await msal.clearCache({account}).catch(()=>{});}}catch(e){console.warn(\"[Jetfly SalesProvider] MSAL logout threw\",e);}window.location.assign(redirectTo);},getAccount:async()=>{const msal=await ensureInit();return msal.getActiveAccount()||msal.getAllAccounts()[0]||null;},getAccessToken:(forceRefresh=false)=>getToken(forceRefresh),// New token from Microsoft, bypassing the cache (Sales/JetflyApi, after a 401).\nrefreshAccessToken:()=>getToken(true),subscribeToAuth:async cb=>{const msal=await ensureInit();const id=msal.addEventCallback(event=>{const t=event?.eventType||\"\";if(t.includes(\"LOGIN_SUCCESS\")||t.includes(\"ACQUIRE_TOKEN_SUCCESS\")||t.includes(\"LOGOUT_SUCCESS\")||t.includes(\"ACCOUNT_ADDED\")||t.includes(\"ACCOUNT_REMOVED\")){cb(msal.getActiveAccount()||msal.getAllAccounts()[0]||null);}});cb(msal.getActiveAccount()||msal.getAllAccounts()[0]||null);return()=>{if(id)msal.removeEventCallback(id);};}};/* Fire init eagerly so first getAccount() call is cheap. */ensureInit().catch(()=>{/* Failures surface on the next explicit call */});jetflyDebug(\"[Jetfly SalesProvider] __jetflyAuth bootstrapped\");}import{startTransition,useEffect,useRef,useState}from\"react\";import{createPortal}from\"react-dom\";const JETFLY_BEGUM_SANS_MEDIUM=\"T1RUTwAMAIAAAwBAQ0ZGIH36/8IAAAxUAABRI0dERUYU8BUjAABdeAAAAPpHUE9TPKhAUAAAXnQAAC70R1NVQskWDRsAAI1oAAAFDk9TLzJYx/EeAAABMAAAAGBjbWFwlbQzOAAABzgAAAT6aGVhZCKGrgEAAADMAAAANmhoZWEJqQZUAAABBAAAACRobXR4SetJvAAAkngAAAZ0bWF4cAGdUAAAAAEoAAAABm5hbWWRPrsNAAABkAAABahwb3N0/9EAIgAADDQAAAAgAAEAAAABAADxE0xjXw889QADA+gAAAAA3kGHMAAAAADfteMp/13/BgYbA78AAAAGAAIAAAAAAAAAAQAAA9T+3gBaBn//Xf9ZBhsAAQAAAAAAAAAAAAAAAAAAAZ0AAFAAAZ0AAAAEAiAB9AAFAAACigJYAAAASwKKAlgAAAFeACIBEAAAAAAAAAAAAAAAAIAAAGcAAAACAAAAAAAAAABJVEZPAMAADfsCA9T+3gBaA9QBIiAAAJMAAAAAAfgCnAAAACAAAwAAABEA0gADAAEECQAAAHoAAAADAAEECQABACIAegADAAEECQACAA4AnAADAAEECQADADYAqgADAAEECQAEACIAegADAAEECQAFABoA4AADAAEECQAGACAA+gADAAEECQAHAGABGgADAAEECQAIACYBegADAAEECQAJABwBoAADAAEECQAKAEABvAADAAEECQALADoB/AADAAEECQAMAFYCNgADAAEECQANAdwCjAADAAEECQAOAE4EaAADAAEECQAQABQEtgADAAEECQARAAwEygBDAG8AcAB5AHIAaQBnAGgAdAAgADIAMAAxADkALQAyADAAMgAyACAASQBuAGQAaQBhAG4AIABUAHkAcABlACAARgBvAHUAbgBkAHIAeQAuACAAQQBsAGwAIAByAGkAZwBoAHQAcwAgAHIAZQBzAGUAcgB2AGUAZAAuAEIAZQBnAHUAbQAgAFMAYQBuAHMAIABNAGUAZABpAHUAbQBSAGUAZwB1AGwAYQByADEALgAwADAAMAA7AEkAVABGAE8AOwBCAGUAZwB1AG0AUwBhAG4AcwAtAE0AZQBkAGkAdQBtAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwADAAQgBlAGcAdQBtAFMAYQBuAHMALQBNAGUAZABpAHUAbQBCAGUAZwB1AG0AIABpAHMAIABhACAAdAByAGEAZABlAG0AYQByAGsAIABvAGYAIAB0AGgAZQAgAEkAbgBkAGkAYQBuACAAVAB5AHAAZQAgAEYAbwB1AG4AZAByAHkALgBJAG4AZABpAGEAbgAgAFQAeQBwAGUAIABGAG8AdQBuAGQAcgB5AE0AYQBuAHUAcwBoAGkAIABQAGEAcgBpAGsAaABGAG8AbgB0ACAAZQBuAGcAaQBuAGUAZQByAGUAZAAgAGIAeQAgAFIAYQBoAHUAbAAgAEcAYQBqAGoAYQByAC4AaAB0AHQAcABzADoALwAvAGkAbgBkAGkAYQBuAHQAeQBwAGUAZgBvAHUAbgBkAHIAeQAuAGMAbwBtAGgAdAB0AHAAcwA6AC8ALwB3AHcAdwAuAGkAbgBkAGkAYQBuAHQAeQBwAGUAZgBvAHUAbgBkAHIAeQAuAGMAbwBtAC8AZABlAHMAaQBnAG4AZQByAHMAVABoAGkAcwAgAEYAbwBuAHQAIABTAG8AZgB0AHcAYQByAGUAIABpAHMAIABwAHIAbwB0AGUAYwB0AGUAZAAgAHUAbgBkAGUAcgAgAGQAbwBtAGUAcwB0AGkAYwAgAGEAbgBkACAAaQBuAHQAZQByAG4AYQB0AGkAbwBuAGEAbAAgAHQAcgBhAGQAZQBtAGEAcgBrACAAYQBuAGQAIABjAG8AcAB5AHIAaQBnAGgAdAAgAGwAYQB3AC4AIABZAG8AdQAgAGEAZwByAGUAZQAgAHQAbwAgAGkAZABlAG4AdABpAGYAeQAgAHQAaABlACAASQBUAEYAIABmAG8AbgB0AHMAIABiAHkAIABuAGEAbQBlACAAYQBuAGQAIABjAHIAZQBkAGkAdAAgAHQAaABlACAASQBUAEYAJwBzACAAbwB3AG4AZQByAHMAaABpAHAAIABvAGYAIAB0AGgAZQAgAHQAcgBhAGQAZQBtAGEAcgBrAHMAIABhAG4AZAAgAGMAbwBwAHkAcgBpAGcAaAB0AHMAIABpAG4AIABhAG4AeQAgAGQAZQBzAGkAZwBuACAAbwByACAAcAByAG8AZAB1AGMAdABpAG8AbgAgAGMAcgBlAGQAaQB0AHMALgBoAHQAdABwAHMAOgAvAC8AaQBuAGQAaQBhAG4AdAB5AHAAZQBmAG8AdQBuAGQAcgB5AC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBpAG4AZwBCAGUAZwB1AG0AIABTAGEAbgBzAE0AZQBkAGkAdQBtAAAAAgAAAAMAAAAUAAMAAQAAABQABATmAAAAjACAAAYADAANAC8AOQB+AQcBEwEbASMBKwExATcBPgFIAU0BWwFrAX4BkgIbArwCxwLdAwQDCAMMAxMDKAOUA6kDvAPAHoUenh69HvMe+SAUIBogHiAiICYgMCA6IEQgcCB0IHggrCC6IL0hEyEiISYhLiFTIVsiAiIGIg8iEiIaIh4iKyJIImAiZSXK+P/7Av//AAAADQAgADAAOgCgAQoBFgEeASYBLgE2ATkBQQFKAVABXgFuAZICGAK7AsYC2AMAAwYDCgMTAyYDlAOpA7wDwB6AHp4evB7yHvggEyAYIBwgICAmIDAgOSBEIHAgdCB4IKwguSC9IRMhIiEmIS4hUyFbIgIiBSIPIhEiGiIeIisiSCJgImQlyvj/+wD//wE5AAAA2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/ugAAAAD+zAAAAAAAAAAA/nb+ZP1w/Vz9Sv1HAADhtwAAAAAAAOEiAAAAAAAA4PzhPOEH4NTgouCi4J/gnwAA4JHgZuBS4D7gTd/H38LfZwAA31cAAN9O30TfON8V3vcAANujCJ0AAAABAAAAigAAAKYBLgH8Ag4CGAIiAiwCMgI0Aj4CTAJSAmgCggAAAqACpgAAAqYCsAK4ArwAAAAAAAAAAAAAAAACtAAAArwCvgLAAAACwALEAsgAAAAAAAAAAAAAAAAAAAAAArwAAAAAAAAAAAAAAAAAAAAAAq4AAAKuAAAAAAAAAAAAAAKmAAAAAAKkAAABRAEjAUIBKgFKAWsBbwFDAS0BLgEpAVIBHwEzAR4BKwEgASEBWQFWAVgBJQFuAAEADAANABIAFgAgACEAJQAnADAAMQAzADgAOQA/AEkASwBMAFAAVgBbAGUAZgBrAGwAcgExASwBMgFgATcBjwB7AIYAhwCMAJAAmgCbAJ8AoQCrAKwArgCzALQAugDEAMYAxwDLANEA1gDgAOEA5gDnAO0BLwF2ATABXgFFASQBSAFQAUkBUQF3AXEBjgFyAQIBPgFfATQBcwGXAXUBXAEUARUBkAFqAXABJwGYARMBAwE/ARsBGQEcASYABgACAAQACgAFAAkACwAQABwAFwAZABoALAAoACkAKgATAD4AQwBAAEEARwBCAVQARgBfAFwAXQBeAG0ASgDQAIAAfAB+AIQAfwCDAIUAigCWAJEAkwCUAKcAowCkAKUAjQC5AL4AuwC8AMIAvQFVAMEA2gDXANgA2QDoAMUA6gAHAIEAAwB9AAgAggAOAIgAEQCLAA8AiQAUAI4AFQCPAB0AlwAbAJUAHgCYABgAkgAiAJwAJACeACMAnQAmAKAALwCqAC0AqAAuAKkAKwCiADIArQA0AK8ANgCxADUAsAA3ALIAOgC1ADwAtwA7ALYAPQC4AEUAwABEAL8ASADDAE0AyABPAMoATgDJAFEAzABTAM4AUgDNAFkA1ABYANMAVwDSAGQA3wBhANwAYwDeAGAA2wBiAN0AaADjAG4A6QBvAHMA7gB1APAAdADvAFQAzwBaANUBfQF8AZQBjQGVAZkBlgGRAYABgQGDAYcBiAGFAX8BfgGGAYIBhABqAOUAZwDiAGkA5AAfAJkAcADrAHEA7AE8AT0BOAE6ATsBOQF4AXoBKAFPAU0BYQFlAWcBUwFbAVoA/QD/AQAAAAADAAAAAAAA/84AIgAAAAAAAAAAAAAAAAAAAAAAAAAAAQAEAgABAQERQmVndW1TYW5zLU1lZGl1bQABAQE/+NEA+NIB+NMMAPjUAvjVA/gXBFkMA60MBPs3+44dAAAGG/pTBR0AABPEDx0AABahEKsdAABJGRIdAAAWoxEAuwIAAQAHAA4AFQAbACEAKwAxADcAPQBHAE4AVQBbAGEAbQB3AHsAhQCMAJMAmQClAKsAsQC9AMMAyQDVANgA5QDsAPIA+AEEAQoBEgEeASgBLAEyAToBRgFTAVoBYQFmAWwBcgF9AYYBjAGXAZ0BowGpAbMBuQHKAdAB2QHfAeUB7AHzAfkB/wIJAg8CFQIbAiUCLAIzAjkCPwJLAlUCWQJjAmoCcQJ3AoMCiQKPApsCoQKnArMCtgLDAsoC0ALWAuIC6ALwAvwDAAMGAw4DGgMnAy4DNQM6A0ADRgNRA1oDYANrA3EDdwN9A4cDjQOYA6kDuAO+A88D1QPgA/AD/gQJBBQEFwQaBB0EIgQnBCkENgRDBFEEWwRiBGQEaQRtBHgEfQSIBJAEnASlBLAEuATABMgEywTUBNsE5ATrBPYE+wUCBQcFEAUdBSsFNwVEBU0FVgVmBXQFfQWGBY4FlwWhBa8FvgXJBdMF5gXvBfIF9QYlBmIGcwZ9QWJyZXZlQW1hY3JvbkFvZ29uZWtDYWN1dGVDY2Fyb25DZG90YWNjZW50RGNhcm9uRGNyb2F0RWNhcm9uRWRvdGFjY2VudEVtYWNyb25Fb2dvbmVrRXRpbGRlR2JyZXZlR2NvbW1hYWNjZW50R2RvdGFjY2VudEhiYXJJZG90YWNjZW50SW1hY3JvbklvZ29uZWtJdGlsZGVLY29tbWFhY2NlbnRMYWN1dGVMY2Fyb25MY29tbWFhY2NlbnROYWN1dGVOY2Fyb25OY29tbWFhY2NlbnRFbmdPaHVuZ2FydW1sYXV0T21hY3JvblJhY3V0ZVJjYXJvblJjb21tYWFjY2VudFNhY3V0ZVNjZWRpbGxhU2NvbW1hYWNjZW50R2VybWFuZGJsc1RiYXJUY2Fyb25UY2VkaWxsYVRjb21tYWFjY2VudFVodW5nYXJ1bWxhdXRVbWFjcm9uVW9nb25la1VyaW5nVXRpbGRlV2FjdXRlV2NpcmN1bWZsZXhXZGllcmVzaXNXZ3JhdmVZY2lyY3VtZmxleFlncmF2ZVl0aWxkZVphY3V0ZVpkb3RhY2NlbnRLLnNzMDJLY29tbWFhY2NlbnQuc3MwMkguc3MwNEhiYXIuc3MwNE0uc3MwNWFicmV2ZWFtYWNyb25hb2dvbmVrY2FjdXRlY2Nhcm9uY2RvdGFjY2VudGRjYXJvbmRjcm9hdGVjYXJvbmVkb3RhY2NlbnRlbWFjcm9uZW9nb25la2V0aWxkZWdicmV2ZWdjb21tYWFjY2VudGdkb3RhY2NlbnRoYmFyaWRvdGFjY2VudGltYWNyb25pb2dvbmVraXRpbGRla2NvbW1hYWNjZW50bGFjdXRlbGNhcm9ubGNvbW1hYWNjZW50bmFjdXRlbmNhcm9ubmNvbW1hYWNjZW50ZW5nb2h1bmdhcnVtbGF1dG9tYWNyb25yYWN1dGVyY2Fyb25yY29tbWFhY2NlbnRzYWN1dGVzY2VkaWxsYXNjb21tYWFjY2VudHRiYXJ0Y2Fyb250Y2VkaWxsYXRjb21tYWFjY2VudHVodW5nYXJ1bWxhdXR1bWFjcm9udW9nb25la3VyaW5ndXRpbGRld2FjdXRld2NpcmN1bWZsZXh3ZGllcmVzaXN3Z3JhdmV5Y2lyY3VtZmxleHlncmF2ZXl0aWxkZXphY3V0ZXpkb3RhY2NlbnRnLnNzMDFnYnJldmUuc3MwMWdjb21tYWFjY2VudC5zczAxZ2RvdGFjY2VudC5zczAxay5zczAya2NvbW1hYWNjZW50LnNzMDJ5LnNzMDN5YWN1dGUuc3MwM3ljaXJjdW1mbGV4LnNzMDN5ZGllcmVzaXMuc3MwM3lncmF2ZS5zczAzeXRpbGRlLnNzMDNmX2ZmX3R0X3REZWx0YU9tZWdhcGl6ZXJvLnN1cGVyaW9yZm91ci5zdXBlcmlvcmVpZ2h0LnN1cGVyaW9yc29mdGh5cGhlbm5ic3BhY2VDUi5udWxsRXVyb3R1cmtpc2hsaXJhcnVibGVpbmRpYW5ydXBlZW5vdGVxdWFsZ3JlYXRlcmVxdWFsbGVzc2VxdWFsYXBwcm94ZXF1YWxlbXB0eXNldGluZmluaXR5aW50ZWdyYWxPaG1pbmNyZW1lbnRwcm9kdWN0c3VtbWF0aW9ucmFkaWNhbHBhcnRpYWxkaWZmbWljcm9sb3plbmdlbGl0cmVlc3RpbWF0ZWRhcG9zdHJvcGhlbW9kY29tbWF0dXJuZWRtb2RkaWVyZXNpc2NvbWJkb3RhY2NlbnRjb21iZ3JhdmVjb21iYWN1dGVjb21iaHVuZ2FydW1sYXV0Y29tYmNpcmN1bWZsZXhjb21iY2Fyb25jb21iYnJldmVjb21icmluZ2NvbWJ0aWxkZWNvbWJtYWNyb25jb21iY29tbWFhYm92ZWNvbWJjb21tYWFjY2VudGNvbWJjZWRpbGxhY29tYm9nb25la2NvbWJjb21tYWFjY2VudGNvbWIuYWx0Y2Fyb24uYWx0SVRGMS4wQmVndW0gaXMgYSB0cmFkZW1hcmsgb2YgdGhlIEluZGlhbiBUeXBlIEZvdW5kcnkuQ29weXJpZ2h0IDIwMTktMjAyMiBJbmRpYW4gVHlwZSBGb3VuZHJ5LiBBbGwgcmlnaHRzIHJlc2VydmVkLkJlZ3VtIFNhbnMgTWVkaXVtQmVndW0gU2FucwCTAgABAA0ANwBRAIEArwDCAM4A1gDnAOwA+QD/ATUBOgE/AY0BngHCAfQB/gISAiUCMAI1Aj4CRAJLAlECXwJmAm4CdQJ+ApAClAK9AtAC0wL4Aw0DEQMnAzgDSANfA2kDfAOQA6sDuQPBA8cDzgPV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AL0ACwC+AAsAvwALAMAACwDBAAsAwgALAMMACwDGAAsA1gABANcAAQDYAAEA2QABANoAAQDbAAEA3AABAN0AAQDeAAEA3wABAOAAAQDhAAEA4gABAOMAAQDkAAEA5QABAOcAAQDoAAEA6QABAOoAAQDrAAEA7AABAPcAAQD4AAEA+QABAPoAAQD7AAEA/AABAR4AFAEfABQBIgAUASX/9gEp/+wBOAAUATkAFAE6//UBO//sATz/9QE9/+wBQv/sAUP/7AFz//IBdP/sAG8AAf/5AAL/+QAD//kABP/5AAX/+QAG//kAB//5AAj/+QAJ//kACv/5AAv/+QB7//wAfP/8AH3//AB+//wAf//8AID//ACB//wAgv/8AIP//ACE//wAhf/8AIf/9wCI//cAif/3AIr/9wCL//cAjP/3AI3/9wCO//cAj//3AJD/9wCR//cAkv/3AJP/9wCU//cAlf/3AJb/9wCX//cAmP/3AJn/9wCb//cAnP/3AJ3/9wCe//cAs//8ALT//AC1//wAtv/8ALf//AC4//wAuf/8ALr/9wC7//cAvP/3AL3/9wC+//cAv//3AMD/9wDB//cAwv/3AMP/9wDE//wAxv/3AMf//ADI//wAyf/8AMr//ADL//wAzP/8AM3//ADO//wAz//8ANb/9wDX//cA2P/3ANn/9wDa//cA2//3ANz/9wDd//cA3v/3AN//9wDg//wA4f/8AOL//ADj//wA5P/8AOX//ADm//wA5//8AOj//ADp//wA6v/8AOv//ADs//wA7f/3AO7/9wDv//cA8P/3APf//AD4//wA+f/8APr//AD7//wA/P/8AR7//AEf//wBIv/8ATj//AE5//wAAgErAAYBdAAEAHUAAf/JAAL/yQAD/8kABP/JAAX/yQAG/8kAB//JAAj/yQAJ/8kACv/JAAv/1gAw/8oAe//xAHz/8QB9//EAfv/xAH//8QCA//EAgf/xAIL/8QCD//EAhP/xAIX/8QCH//EAiP/xAIn/8QCK//EAi//xAIz/8QCN//EAjv/xAI//8QCQ//EAkf/xAJL/8QCT//EAlP/xAJX/8QCW//EAl//xAJj/8QCZ//EAm//xAJz/8QCd//EAnv/xALP/+gC0//oAtf/6ALb/+gC3//oAuP/6ALn/+gC6//EAu//xALz/8QC9//EAvv/xAL//8QDA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//wAQ//8AET//ABF//wARv/8AEf//ABI//wAS//8AIf/9wCI//cAif/3AIr/9wCL//cAjP/3AI3/9wCO//cAj//3AJD/9wCR//cAkv/3AJP/9wCU//cAlf/3AJb/9wCX//cAmP/3AJn/9wCa//wAm//3AJz/9wCd//cAnv/3ALr/9wC7//cAvP/3AL3/9wC+//cAv//3AMD/9wDB//cAwv/3AMP/9wDG//cA0f/zANL/8wDT//MA1P/zANX/8wDW//wA1//8ANj//ADZ//wA2v/8ANv//ADc//wA3f/8AN7//ADf//wA4P/3AOH/9wDi//cA4//3AOT/9wDl//cA5//3AOj/9wDp//cA6v/3AOv/9wDs//cA9//3APj/9wD5//cA+v/3APv/9wD8//cA/f/8AP7//AD///wBAP/8AQH/8wEeAB4BHwAeASIAHgEz/9gBNP/YATX/2AE2/9gBNwAeATgAHgE5AB4BPv/3AT///AFA//cBQf/8AXP/6AAFAOb/9wElAAoBK//fATf/tgF0AB4AAQF0ABQABACr//wBKwAGATcAFAFz//cABQEp/+8BQv/vAUP/7wFz/+YBdP/YAAEBcwAUAAIAqwAEAXT/9gASAOD//ADh//wA4v/8AOP//ADk//wA5f/8AOf//ADo//wA6f/8AOr//ADr//wA7P/8APf//AD4//wA+f/8APr//AD7//wA/P/8AAQBIwAxASUAQAFzABoBdABWAAIBc//sAXT/2AADAOb/9gFz//wBdP/sAAEA5v/2AAEBdP/sAAEBdP/1AAMBK//YATf/6gFzACgAAgFz//wBdP/sACUA0f/2ANL/9gDT//YA1P/2ANX/9gDg//YA4f/2AOL/9gDj//YA5P/2AOX/9gDn//YA6P/2AOn/9gDq//YA6//2AOz/9gD3//YA+P/2APn/9gD6//YA+//2APz/9gEB//YBHgAUAR8AFAEiABQBKf/sATgAFAE5ABQBOv/iATv/4gE8/+IBPf/iAUL/7AFD/+wBc//YAAUBJQAEAS4AGgEwABoBMgAaAXMABAACAXP/5gF0/9gABAEr//cBN//mAXMAFAF0ABQAKQCH//QAiP/0AIn/9ACK//QAi//0AIz/9ACN//QAjv/0AI//9ACQ//QAkf/0AJL/9ACT//QAlP/0AJX/9ACW//QAl//0AJj/9ACZ//QAuv/0ALv/9AC8//QAvf/0AL7/9AC///QAwP/0AMH/9ADC//QAw//0AMb/9AEeAAoBHwAKASIACgEz/8sBNP/LATX/ywE2/8sBOAAKATkACgE+//wBQP/8AAQBK//yATf/4QFzABQBdAAUAAUBIwAPASUAJgEr/+wBcwAiAXQARgACASUABAFzAAQADgEIAAoBCv/2AQ4ACgEP//YBEQAKAR7/7AEf/+wBIv/sATMACgE0AAoBNQAKATYACgE4/+wBOf/sAAYBDP/6AR4ABAEfAAQBIgAEATgABAE5AAQACQEe//ABH//wASL/8AEzAAoBNAAKATUACgE2AAoBOP/wATn/8AAIAQwABAEP//YBEf/2AR4ACQEfAAkBIgAJATgACQE5AAkADAEK/+wBC//2AQ//7AEe//MBH//zASL/8wEzAAoBNAAKATUACgE2AAoBOP/zATn/8wAMAQr/7AEL/+wBD//5AR7/9QEf//UBIv/1ATMACgE0AAoBNQAKATYACgE4//UBOf/1ABoBCP/0AQkACgEM/9QBDv/0ARH/9gEe/6cBH/+nASL/pwEpABQBK//iATP/xAE0/8QBNf/EATb/xAE4/6cBOf+nAToAFAE7ABQBPAAUAT0AFAE+/84BP//iAUD/zgFB/+IBQgAUAUMAFAAGAQ//9gEeAAQBHwAEASIABAE4AAQBOQAEAA4BCAAKAQr/9gEL//YBDgAKAQ//9gEe/+wBH//sASL/7AEzAAoBNAAKATUACgE2AAoBOP/sATn/7AABAGX/8gANAGX/9gBm//YAZ//2AGj/9gBp//YAav/2AGz/9gBt//YAbv/2AG//9gBw//YAcf/2AKsAOwAEAToABAE7AAQBPAAEAT0ABABdAFb/2ABX/9gAWP/YAFn/2ABa/9gAZf/YAGb/2ABn/9gAaP/YAGn/2ABq/9gAbP/YAG3/2ABu/9gAb//YAHD/2ABx/9gAe//2AHz/9gB9//YAfv/2AH//9gCA//YAgf/2AIL/9gCD//YAhP/2AIX/9gCH/+wAiP/sAIn/7ACK/+wAi//sAIz/7ACN/+wAjv/sAI//7ACQ/+wAkf/sAJL/7ACT/+wAlP/sAJX/7ACW/+wAl//sAJj/7ACZ/+wAqwBkALr/7AC7/+wAvP/sAL3/7AC+/+wAv//sAMD/7ADB/+wAwv/sAMP/7ADG/+wA0f/sANL/7ADT/+wA1P/sANX/7ADW/+wA1//sANj/7ADZ/+wA2v/sANv/7ADc/+wA3f/sAN7/7ADf/+wA4P/8AOH//ADi//wA4//8AOT//ADl//wA5//8AOj//ADp//wA6v/8AOv//ADs//wA9//8APj//AD5//wA+v/8APv//AD8//wBAf/sADAADQAJAA4ACQAPAAkAEAAJABEACQAhAAkAIgAJACMACQAkAAkAMP+6AD8ACQBAAAkAQQAJAEIACQBDAAkARAAJAEUACQBGAAkARwAJAEgACQBLAAkAUP/sAFH/7ABS/+wAU//sAFT/7ABW/8UAV//FAFj/xQBZ/8UAWv/FAGX/2QBm/+MAZ//jAGj/4wBp/+MAav/jAGv/4wBs/9kAbf/ZAG7/2QBv/9kAcP/ZAHH/2QBy/9gAc//YAHT/2AB1/9gAcgAB/+wAAv/sAAP/7AAE/+wABf/sAAb/7AAH/+wACP/sAAn/7AAK/+wAC//mADD/zwBWAA4AVwAOAFgADgBZAA4AWgAOAHv/3QB8/90Aff/dAH7/3QB//90AgP/dAIH/3QCC/90Ag//dAIT/3QCF/90Ah//YAIj/2ACJ/9gAiv/YAIv/2ACM/9gAjf/YAI7/2ACP/9gAkP/YAJH/2ACS/9gAk//YAJT/2ACV/9gAlv/YAJf/2ACY/9gAmf/YAJv/2ACc/9gAnf/YAJ7/2ACz/+IAtP/iALX/4gC2/+IAt//iALj/4gC5/+IAuv/YALv/2AC8/9gAvf/YAL7/2AC//9gAwP/YAMH/2ADC/9gAw//YAMT/4gDG/9gAx//iAMj/4gDJ/+IAyv/iAMv/2ADM/9gAzf/YAM7/2ADP/9gA1v/iANf/4gDY/+IA2f/iANr/4gDb/+IA3P/iAN3/4gDe/+IA3//iAOD/9wDh//cA4v/3AOP/9wDk//cA5f/3AOb/2ADn//cA6P/3AOn/9wDq//cA6//3AOz/9wDt/9gA7v/YAO//2ADw/9gA9//3APj/9wD5//cA+v/3APv/9wD8//cBDP/EASv/pgACAGUAGACrAHcACgBl/8sAa//YAOb/ywEIAAoBCf/iAQr/nAEL/84BDAAUAQ4ACgEP/7oATgABABQAAgAUAAMAFAAEABQABQAUAAYAFAAHABQACAAUAAkAFAAKABQACwAUAA3/ugAO/7oAD/+6ABD/ugAR/7oAIf+6ACL/ugAj/7oAJP+6AD//ugBA/7oAQf+6AEL/ugBD/7oARP+6AEX/ugBG/7oAR/+6AEj/ugBL/7oAVv+wAFf/sABY/7AAWf+wAFr/sABb/9gAXP/YAF3/2ABe/9gAX//YAGD/2ABh/9gAYv/YAGP/2ABk/9gAZf+qAGb/wQBn/8EAaP/BAGn/wQBq/8EAawAeAGz/pABt/6QAbv+kAG//pABw/6QAcf+kAKsAKADg/+EA4f/mAOL/5gDj/+YA5P/mAOX/5gDn/+EA6P/hAOn/4QDq/+EA6//hAOz/4QD3/+EA+P/hAPn/4QD6/+EA+//hAPz/4QAOADgAFAA5//wAZf+3AGsAHgDmAAoBCP/sAQn/3gEKAAkBCwAJAQwACQEO/+wBD//uARAABAER//MABAA4/+wAZQAUAQz/pgEPABQABgA4/+wAZQAUAKH/9wCr//cA5v/YAQ8AFAAGAGX/5ABr//cA5v/8AQn/4gEK/9cBD//OAAQAZf/tAGv//AEK/+wBD//XAAYAZf/kAGv/9wDm//wBCf/iAQr/1wEP/9IABAA4/+wAZQAYAQz/ugEPABQACQEI//YBCv/2AQv/9gEM/+wBDf/2AQ7/9gEP//YBEP/2ARH/9gACCYIABAAACi4LrAAnAB8AAAAAAAD/8v/7AAAAAAAAAAAAAP/7AAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/v/+oAAAAAAAAAAAAA//UAAAAA//z//v/3AAAAAAAAAAAAAAAA//wAAP+3AAAAAAAA//z/9f/zAAAAAAAJAB0AEwAA//cAAAAAAAAACgAA//wAAAAAAAAAAAAAAAAACgAAAAAAAAAKAAAAAAAAAAAAAAAAACEAAAAA/+z/+gAAAAoACgAAAAAAAP/5AAD//AAAAAAAAAAAAAAAAAAAAAD//AAAAAAAHgAAAAAAAAAA//n/9gAAAAoACQAEAAAAAAAAAAAABAAAAAoAAP/3//oAAAAAAAAAAAAAAAAAAP/5AAAAAP/2AAAAAAAAAAAAAAAhAAAAAP/s//oAAAAKAAoAAAAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAkADQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAAAA//wAAAAAAAD/5wAAAAAAAAAAAAAAKP/2AAAAAAAOAAAAAAAAAAAAAAAAAAD/9v/tAAAAAAAAAAr//P/2//b/xv/yAAD//AAy/+j/ywAAAAAAAP/2AAAAAP+6/7r/ugAAAAAAAAAYAAAAAAAA//cAAAAAAAAAAAAAAAAAAAAA//kAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+//8P/vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/8AAAAAAAAAAAAHgAAAAAAAAAAAAD/2AAAAAAAAAAJAAkAAP/iAAAAAAAA/9b//P/3AAD/6f/Z/8//5AAA//wAAP/3/+T/9/+7AAAAAAAA//P/1v/KAAAADgAUABQAC//e/9n/8//ZAAD/9wAAAAD//P/+AAAAAAAAAAAAAAAAAAAAAAAA/8UAAAAAAAAAAAAA//MAAAAAAAkAHQATAAD//AAAAAAAAAAAAAD//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/9QAAAAD/9gAAAAAAAAAAAAAAAAAA//b/5/+3AAAAAAAAADL/9v/s/97/u//FAAr/7AAA/8v/uwAAAAoAAAAAABQAAP+6/8T/xAAAAAAAAAAhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAAAAAAAAAA/+IAAAAAABQAIgAJAAr/7AAHAAAAAP/r//z//AAA//L/6//h//IAAAAAAAD//P/rAAD/ywAAAAAAAP/z/+v/3wAAAA4AGAAUAAv/9//3//P/4gAA/8oAAP/eAAD/yv/K/8v/ygAAAAAAAP/e/8oAAP+7AAAACgAA/97/yv+4AAAAHgAYABQAFP/O/8X/7P/PAAAAAAAA//YAAAAAAAAAAAAA//YAAAAA//YAAAAAAAAAAAAAAAAAAAAAABMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/2gAAAAAACgAX//b/7f/o/7j/5AAA//cAKP/L/8AAAAAAAAD/2AAAAAD/uv+6/+4AAP/zAAAAGQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjAAAAAAAAAAAAAP/sAAAAMgAXABgADQAAAAAAAAAAAAD/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAAAAAAAAAA/9gAAAAAAAAAAAAAAAAAAAAAAAAAAP/7AAAADwAAAAD/+wAAAAAAAAAPAAAADwAAAA//ugAAAAAAAAAA//v/3AAAAAAAGwAyABYAAP/iAAcAAAAA//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAAAAAAAAAAP/UAAAAAAAAAAAAAAAA/+gAAAAAAAAAIQAo//MAAAAA//D/9gAAAAD/9//B//MAAP/3AAD/3//C/8j/2AAoAAD/6wAAAAD/zQAAAAAAAAAA/84AAP/8//r//AAAAAAAAAAA//wAAAAAAAD//AAAAAAAFAAAAAAAAAAA//z/xAAAAAAAAAAAAAAAAAAAAAAAAAAA//kAAv/8//b/9v/5AAL/9gAAAAD/9v/8AAAAAAAX//b/9gAAAAD/+f/cAAAAAAAAAAAAAAAAAAAAAAAEAAD/9//v//IAAP/8//wAAP/yAAD/9wAA//IAAP/3AB8AAAAAAAAAAP/3/7AAAAAAAAD//AAAAAD/8wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//YAAAAAAAD/9wAAAAAAAP/k//IAAAAAAAAAAAAoAAAAAAAAAAQAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOAAAAAAAAAAAADgAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAD//AAAAAAACgAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAIQAAAAD/7AAA//UACgAKAAAAAAAA/+wAAAAJAAAAAAAA/7oAAAAAAAAAFAAJ//YAAP+6ABgAGAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAP+wAAD/vP/s/+L//P/V/8b/m//iAAD/8gAU/+L/u//3/8QAFAAY//X/1P+8/5MAAAAAAAAAAAAAAAAAAAAA/6cAAP/hAAAAAAAA//X/7P+6/+wAAAAEABQAAP/hAAD/xAAUABQAAP/o/+EAAAAAAAAAAAAAAAAAAAAAAAD/pwAAAAoAAP/3AAAAAAAAAAAAAAAA/+z/1f/8AAD/7AAA//f/xQAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAAAAAAAAAAAAAAAAAAAAP/ZAAAAAAAAAAD/9//OAAAAAAAKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAACQAA//X/8QAA//AAAAAEAAAACf/zAAT/zgAAAAAAAP/8/+z/4gAAADYAMQBCACf/7P/iAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcABWAFgAFgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/pAAAAAAAAAAD/8v/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAcAAEACwAAAA0AHwALACEAJAAeADEANwAiAD8ASAApAEsAVAAzAFYAZAA9AGYAagBMAGwAdwBRAHsAiwBdAI0AjgBuAJAAmgBwAJ8AoAB7AKwArQB9ALAAsAB/ALMAxQCAAMcAzwCTANEA5QCcAOcA8ACxAPUA/gC7AQEBAQDFAR4BIgDGASkBKQDLAS0BLQDMAS8BLwDNATEBMQDOATMBNgDPATgBQwDTAAIAPwABAAoABwALAAsAAwANABEAEwASABUAHAAWAB8AAwAhACQAGwAxADIAGgAzADcAEgA/AEcABgBIAEgAAwBLAEsABgBMAE8AGQBQAFQAEQBWAFoAEABbAGQABQBmAGoADwBsAHEACgByAHUAGAB2AHcAGgCFAIUAAgCGAIYAHgCHAIsADgCNAI0ABACOAI4AJQCQAJkAAgCaAJoAJACfAKAACACsAK0AFgCwALAAJQCzALkACAC6AMIABADDAMMAAgDEAMUAHgDHAMoAFQDLAM8ADADRANUACQDgAOAAAQDhAOUACwDnAOwAAQDtAPAAFAD1APYAFgD3APwAAQD9AP0AJAD+AP4ACQEBAQEACQEeAR8ADQEgASEAJgEiASIADQEpASkAHwEtAS0AHQEvAS8AHQExATEAHQEzATYAFwE4ATkADQE6AToAIQE7ATsAIAE8ATwAIQE9AT0AIAE+AT4AIwE/AT8AIgFAAUAAIwFBAUEAIgFCAUMAHwACADYAAQALAAcADQARAAIAIQAkAAIAMAAwAB4APwBIAAIASwBLAAIAUABUABIAVgBaABEAWwBkAAkAZgBqABAAbABxAAsAcgB1ABYAewCFAAYAhgCGAAQAhwCZAAEAmgCaAA4AmwCeABQAnwCgAAQArACyAAQAswC5AAUAugDDAAEAxADEAAUAxQDFAAQAxgDGAAEAxwDKAAUAywDPAA0A0QDVAAoA1gDfAAgA4ADgAAMA4QDlAAwA5wDsAAMA7QDwABMA9QD2AAQA9wD8AAMA/QEAAA4BAQEBAAoBHgEfAA8BIAEhAB0BIgEiAA8BKQEpABgBLgEuABcBMAEwABcBMgEyABcBMwE2ABUBOAE5AA8BOgE6ABoBOwE7ABkBPAE8ABoBPQE9ABkBPgE+ABwBPwE/ABsBQAFAABwBQQFBABsBQgFDABgAAQAAAAoA3AGeAANERkxUABRncmVrABRsYXRuABgAIAAAABwABEtBWiAAOk1PTCAAWlJPTSAAelRSSyAAmgAA//8ADAAAAAEAAgADAAgACQAKAAsADAANAA4ADwAA//8ADQAAAAEAAgADAAQACAAJAAoACwAMAA0ADgAPAAD//wANAAAAAQACAAMABQAIAAkACgALAAwADQAOAA8AAP//AA0AAAABAAIAAwAGAAgACQAKAAsADAANAA4ADwAA//8ADQAAAAEAAgADAAcACAAJAAoACwAMAA0ADgAPABBhYWx0AGJkbGlnAGhmcmFjAG5saWdhAHRsb2NsAHpsb2NsAIBsb2NsAIZsb2NsAIxvcmRuAJJzYWx0AJhzczAxAJ5zczAyAKRzczAzAKpzczA0ALBzczA1ALZzdXBzALwAAAABAAAAAAABAA8AAAABAAYAAAABABAAAAABAAEAAAABAAIAAAABAAMAAAABAAQAAAABAAcAAAABAAkAAAABAAoAAAABAAsAAAABAAwAAAABAA0AAAABAA4AAAABAAUAEQAkAMgArgCuAMgA3AEGAYgB0AHyApwCtALWAu4DBAMYAzgAAQAAAAEACAACAEIAHgB4AHkAdgB3AHoAVABaAPEA8gDzAPQApgD1APYAzwDVAPcA+AD5APoA+wD8ARIBEwEUARUBFgEXAZoBmwABAB4AJQAmADEAMgA4AFMAWQCbAJwAnQCeAKEArACtAM4A1ADnAOgA6QDqAOsA7AEIAQkBCgELAQwBEAGKAZMAAQAAAAEACAABAAYAAQABAAQAUwBZAM4A1AABAAAAAQAIAAEABgAFAAEAAQChAAEAAAABAAgAAgASAAYBEgETARQBFQEWARcAAQAGAQgBCQEKAQsBDAEQAAQAAAABAAgAAQByAAIACgBcAAgAEgAaACIAKgAyADoAQgBKAR0AAwEYARABGwADARgBDAEaAAMBGAELARkAAwEYAQoBHQADASsBEAEbAAMBKwEMARoAAwErAQsBGQADASsBCgACAAYADgEcAAMBGAEMARwAAwErAQwAAQACAQkBCwAGAAAAAgAKACQAAwABACwAAQASAAAAAQAAAAgAAQACAAEAewADAAEAEgABABwAAAABAAAACAACAAEBCAERAAAAAQACAD8AugABAAAAAQAIAAIADgAEAQIBAwECAQMAAQAEAAEAPwB7ALoAAwAAAAEACAABAHgAEwAsADAANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AAEAeAABAHkAAQB2AAEAdwABAHoAAQDxAAEA8gABAPMAAQD0AAEA9QABAPYAAQD3AAEA+AABAPkAAQD6AAEA+wABAPwAAQGaAAEBmwABABMAJQAmADEAMgA4AJsAnACdAJ4ArACtAOcA6ADpAOoA6wDsAYoBkwABAAAAAQAIAAEABgBWAAIAAQCbAJ4AAAABAAAAAQAIAAIADgAEAHYAdwD1APYAAQAEADEAMgCsAK0AAQAAAAEACAABAAYAEAACAAEA5wDsAAAAAQAAAAEACAABAAYAUwABAAIAJQAmAAEAAAABAAgAAQAGAEIAAQABADgABAAAAAEACAABABIAAQAIAAEABAEBAAIA0QABAAEA0QAEAAAAAQAIAAEAKgABAAgABAAKABAAFgAcAP0AAgCaAP8AAgChAQAAAgCuAP4AAgDRAAEAAQCaAAAA5gAAAmcABwJnAAcCZwAHAmcABwJnAAcCZwAHAmcABwJoAAcCZwAHAmcABwNFAAACZQBdAlkAKwJZACsCWQArAloAKwJZACsCuQBdAsMACgK5AF0CwwAKAiMAXQIjAF0CIwBdAiMAXQIjAF0CIwBdAiMAXQIjAF0CJABdAiMAXQIIAF0CpQAvAqUALwKlAC8CpQAvAtUAXQLZAAoBIwBdASMANAEjAAEBI//8ASMAWQEjAA4BI//xASMAIwEj//oBigAFAmoAXQJqAF0CBwBdAgcANAIHAF0CBwBdAg8ACgOQAEYCywBdAssAXQLLAF0CywBdAssAXQLLAF0C0QArAtEAKwLRACsC0QArAtEAKwLRACsC0QArAtEAKwLRACsD+gArAkUAXQJFAF0C0QArAmwAXQJsAF0CbABdAmwAXQIPADcCDwA3Ag8ANwIRADcCDwA3AqcAXQIkAAsCJAALAiQACwIkAAsCJAALAqMAUwKjAFMCowBTAqMAUwKjAFMCowBTAqMAUwKjAFMCowBTAqMAUwJWAAcDhwAKA4cACgOHAAoDhwAKA4cACgJnABgCRQANAkUADQJFAA0CRQANAkUADQJFAA0CMwAlAjMAJQIzACUCMwAlAnEAXQJxAF0C1QBdAtkACgMrAF0CFAAuAhQALgIUAC4CFAAuAhQALgIUAC4CFAAuAhYALgIUAC4CFAAuAzIALgI6AEsB1gApAdYAKQHWACkB2wApAdYAKQJNAC4CNwApAk0ALgJMAC4CAwApAgMAKQIDACkCAwApAgMAKQIDACkCAwApAgMAKQIDACkCAwApAWgAGAI5AC4COQAuAjkALgI5AC4CVQBSAlkACQEGAEkBBgBSAQYAJgEG//MBBv/uAQYASwEG//8BBv/jAQYAEgEG/+wBBP+sAhkAUgIZAFIBBgBSAQYAJwEGAFIBBgBEASYACQOhAFECXgBRAl4AUQJeAFECXgBRAl4AUQJeAFECNwApAjcAKQI3ACkCNwApAjcAKQI3ACkCNwApAjcAKQI3ACkDfQApAk4AUQI9AEsCOQAuAX8AUQF/AFEBfwBRAX8ATAHGADYBxgA2AcYANgHBADYBxgA2AlMAUgGZACABmQAgAZkAIAGZACABmQAgAlUASwJVAEsCVQBLAlUASwJVAEsCVQBLAlUASwJXAEsCVQBLAlUASwHbAAcC1gALAtYACwLWAAsC1gALAtYACwIFABkB2wAHAdsABwHbAAcB2wAHAdsABwHbAAcB3wArAd8AKwHfACsB3wArAiYAMwImADMCJgAzAiYAMwIWAFICFgBSAdsABwHbAAcB2wAHAdsABwHbAAcB2wAHAqoAGALUABgCZwAYAmgAGALuACABoQAxAawAJgJnAAgCzQA9AkgAUQLKAAoCTgAzAUcAFgIQACUCEwAlAj8AEAIWADQCNwAzAeQAHgI4ACoCNwAuAYQAKAENACgBWAAoAVsAKAFvABQBcwAoAZsAAAMLAEoDEwBKAvAASgNBAEoDHQBKAMgAJgDIAAQA3AAwAOAADgJIACYBDQBIAQ0ASAHBACEBwQAhAR0AUAFkAFUB1wAmAocAJAFKAA8BSgAoAS0AQgEtAAABQwAaAUMAGgE0AF0BNAAOASoAJgEjACICBAArAw4AKwIIACsAuwALAW4ACwFuACABbgAXALsAIAC7ABcCQwA7AkMASQF1ADsBdQBJAUAAEwCPABMBGAAAARgAAAAAAAAB9AAAAgsAOAJ2AGQCDgA3AqgAHgH8AB8CgAA/Ao4ANQI8ADwCUQBCAoQAOAI0AFACKgBQAiAAZAI8AFkCUgBkAlIAZAInAGQCJwBQAkYAZAJGAGQCSABkAmYAZAI+AFACSgBbAcoAPAJgAFoCogAaAcoABQLNAD0CaAAIAqwAXQIwACECeAAKAlYALgJbAFEDZABCBM8AQgJGAFoDagApAu0AKQKPAEMCTAAzAvEAKwGIACkCswAUAXMAPAEKAHEBCgBxAhAARwH2AAoCDwBHAv0AMgAAADAB9ADMAAD/awAA/8gAAP98AAD/owAA/4gAAP9wAAD/cAAA/2gAAP+JAAD/aAAA/2AAAP/SAAD/wQAA/6MAAP9dAfQAwgH0AGUB9AB2AfQAnQH0AIIB9ABqAfQAagH0AGIB9ACDAfQAYgH0AFoB9ACdAfQAVwH0ALsB8wEqBn8AZA==\";(function injectJetflyBegumSans(){if(typeof document===\"undefined\")return;if(document.getElementById(\"jetfly-begum-sans-medium\"))return;const src=\"url(data:font/otf;base64,\"+JETFLY_BEGUM_SANS_MEDIUM+\") format('opentype')\";const face=(family,weight)=>\"@font-face{font-family:'\"+family+\"';font-style:normal;font-weight:\"+weight+\";font-display:swap;src:\"+src+\"}\";const style=document.createElement(\"style\");style.id=\"jetfly-begum-sans-medium\";style.textContent=face(\"Begum Sans\",\"400\")+face(\"Begum Sans\",\"500\")+face(\"Begum Sans\",\"600\")+face(\"Begum Sans Medium\",\"500\");document.head.appendChild(style);})();const STORE_KEY=\"__jetflySales\";const LOCAL_PREFIX=\"jetfly.proposal.\";const MANUAL_LOGOUT_KEY=\"jetfly.sales.manual-logout\";function wipeAllLocalDrafts(){let n=0;const drop=(store,test)=>{if(!store)return;const keys=[];try{for(let i=0;i<store.length;i++){const k=store.key(i)||\"\";if(test(k))keys.push(k);}for(const k of keys){store.removeItem(k);n++;}}catch{}};drop(typeof localStorage===\"undefined\"?undefined:localStorage,k=>k.startsWith(LOCAL_PREFIX)||k.startsWith(\"jetfly.pending.\")||k===\"jetfly.sales.missing-on-api\");drop(typeof sessionStorage===\"undefined\"?undefined:sessionStorage,k=>k.startsWith(LOCAL_PREFIX)||k.startsWith(\"jetfly.pending.\"));try{const w=window;delete w.__jetflyCustomerListCache;delete w.__jetflyProposalsCache;delete w.__jetflyCustomerOrgCache;delete w.__jetflyCustomerOwnerCache;delete w.__jetflyUserMap;}catch{}return n;}const ALLOWLIST_KEY=\"jetfly.sales.allowlist\";const scrapeAllowlistEmails=root=>{if(!root)return[];const out=new Set;const emailRe=/[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}/gi;try{const text=root.innerText||root.textContent||\"\";const matches=text.match(emailRe)||[];for(const m of matches)out.add(m.trim().toLowerCase());}catch{}return Array.from(out);};/* Admins of the tool: users whose CMS row has \"is Admin\" ticked. In the users\n   feed, each item holds a layer named \"Is Admin\" that only renders for those\n   rows (visibility bound to the CMS boolean). Its presence marks the item;\n   the email is read from the same item. Matched by layer name, never by\n   position. Used by the sidebar (Admin entry) and the admin page. */const ADMINS_KEY=\"jetfly.sales.admins\";const scrapeAdminEmails=root=>{if(!root)return[];const out=new Set;const emailRe=/[a-z0-9._%+-]+@[a-z0-9.-]+\\.[a-z]{2,}/gi;try{const marks=Array.from(root.querySelectorAll('[data-framer-name=\"Is Admin\"]'));for(const mark of marks){// Climb to the item: the first ancestor that contains exactly one email.\nlet el=mark.parentElement;let guard=6;while(el&&el!==root&&guard-- >0){const found=(el.innerText||el.textContent||\"\").match(emailRe)||[];const uniq=Array.from(new Set(found.map(m=>m.trim().toLowerCase())));if(uniq.length===1){out.add(uniq[0]);break;}if(uniq.length>1)break;el=el.parentElement;}}}catch{}return Array.from(out);};const publishAdminEmails=emails=>{try{if(typeof window===\"undefined\")return;window.__jetflySalesAdmins=emails;try{localStorage.setItem(ADMINS_KEY,JSON.stringify({emails,ts:Date.now()}));}catch{}window.dispatchEvent(new CustomEvent(\"jetfly-sales-admins\",{detail:emails}));}catch{}};const readCachedAllowlist=()=>{try{if(typeof localStorage===\"undefined\")return[];const raw=localStorage.getItem(ALLOWLIST_KEY);if(!raw)return[];const parsed=JSON.parse(raw);return Array.isArray(parsed?.emails)?parsed.emails.map(e=>String(e||\"\").trim().toLowerCase()).filter(Boolean):[];}catch{return[];}};const writeCachedAllowlist=emails=>{try{if(typeof localStorage===\"undefined\")return;localStorage.setItem(ALLOWLIST_KEY,JSON.stringify({emails,ts:Date.now()}));}catch{}};const DEFAULT_TOKENS={bgPage:\"rgb(248, 245, 238)\",bgCard:\"rgb(255, 255, 255)\",bgInk:\"rgb(26, 26, 23)\",borderSoft:\"rgb(239, 239, 235)\",inkPrimary:\"rgb(26, 26, 23)\",inkSubtle:\"rgb(137, 129, 126)\",inkMuted:\"rgb(122, 122, 114)\",copper500:\"rgb(196, 148, 90)\",copper600:\"rgb(173, 126, 71)\",copper700:\"rgb(142, 102, 56)\",sand200:\"rgb(243, 235, 219)\",sand300:\"rgb(232, 220, 196)\",redBrand:\"rgb(159, 42, 34)\",success:\"rgb(62, 155, 95)\",titleFont:{fontFamily:\"Begum Sans, 'Hanken Grotesk', sans-serif\",fontSize:36,variant:\"Medium\",lineHeight:\"1.08em\"},bodyFont:{fontFamily:\"Hanken Grotesk, sans-serif\",fontSize:14,variant:\"Regular\"},eyebrowFont:{fontFamily:\"Hanken Grotesk, sans-serif\",fontSize:11,variant:\"Semibold\"}};const DEFAULT_THEME={userName:\"\",userEmail:\"\",avatarUrl:\"\",role:\"sales\",stepLabels:[\"Search\",\"Contact profile\",\"Aircraft & routes\",\"Overview\",\"Offer release\"],stepRoutes:[\"/sales/search\",\"/sales/contacts\",\"/sales/aircraft\",\"/sales/overview\",\"/sales/release\"],contactLabel:\"Contact Us\",languageLabel:\"EN\"};const emptyPayload={version:1,step1_customer:{mode:\"new\"},step2_profile:{},step3_aircraft:{selected:[],routes:[]},step4_overview:{},step5_offer:{}};const CMS_FLEET_ID={pc12:\"CDHyIXL6j\",pc24:\"Kq2zBDj7c\",cirrus:\"FbCiglXgH\"};function fleetToken(raw){const s=String(raw||\"\").trim();const cms=/^cms-?(\\d+)$/i.exec(s);if(cms){if(cms[1]===\"0\")return\"pc12\";if(cms[1]===\"1\")return\"pc24\";if(cms[1]===\"2\")return\"cirrus\";}const k=String(s).toLowerCase().replace(/[^a-z0-9]/g,\"\");if(k===\"cms0\"||k.includes(\"pc12\")||k===\"cdhyixl6j\")return\"pc12\";if(k===\"cms1\"||k.includes(\"pc24\")||k===\"kq2zbdj7c\")return\"pc24\";if(k.includes(\"cirrus\")||k.includes(\"sf50\")||k===\"fbciglxgh\"||k===\"cms2\")return\"cirrus\";return k;}function fleetLabelFromToken(token,fallback){if(token===\"pc12\")return\"PC-12\";if(token===\"pc24\")return\"PC-24\";if(token===\"cirrus\")return\"SF50\";return fallback||token||\"\";}function fleetTitleShort(token){if(token===\"pc12\")return\"PC12\";if(token===\"pc24\")return\"PC24\";if(token===\"cirrus\")return\"SF50\";return fleetLabelFromToken(token).replace(/-/g,\"\");}function classifyPipedriveDeal(d){const type=String(d?.deal_type||d?.type||d?.product||\"\").toLowerCase();if(type.includes(\"frac\"))return\"fractional\";if(d?.proposal_id||d?.proposal_reference)return\"fractional\";if(d?.aircraft_type&&d?.share_size)return\"fractional\";const t=String(d?.title||\"\");if(/(\\d+\\s*\\/\\s*\\d+)/.test(t)&&/(PC-12|PC-24|Cirrus)/i.test(t))return\"fractional\";return\"other\";}function isFractionalPipedriveDeal(d){return classifyPipedriveDeal(d)===\"fractional\";}function parseFractionalDeal(d){if(!isFractionalPipedriveDeal(d))return null;const t=String(d.title||\"\");const shareRaw=String(d.share_size||\"\").replace(/\\s+/g,\"\")||(t.match(/(\\d+\\s*\\/\\s*\\d+)/)?.[1]||\"\").replace(/\\s+/g,\"\");const hoursRaw=d.flight_hours!=null&&Number(d.flight_hours)>0?String(Number(d.flight_hours)):t.match(/(\\d+)\\s*h\\b/i)?.[1]||\"\";const token=fleetToken(d.aircraft_type||t);const status=String(d.status||\"\").toLowerCase();return{share:shareRaw,hours:hoursRaw,immat:String(d.share_immat||\"\"),contract:Number(d.contract_duration)>0?String(Number(d.contract_duration)):\"\",share_type:String(d.share_size_mode||d.share_type||\"\"),token,fleetId:CMS_FLEET_ID[token]||token,outcome:status===\"won\"?\"won\":status===\"lost\"?\"lost\":\"\",dealId:Number(d.id)||0,title:t,value:Number(d.value)||0,currency:String(d.currency||\"USD\")};}function outcomeToPipedriveStatus(outcome){const s=String(outcome||\"\").toLowerCase();if(s===\"won\")return\"won\";if(s===\"lost\")return\"lost\";return\"open\";}function collectStep3Offers(payload){const step3=payload?.step3_aircraft||{};const selected=Array.isArray(step3.selected)?step3.selected:[];const prefs=step3.preferences||{};const ids=[...selected];for(const k of Object.keys(prefs)){if(ids.includes(k))continue;const p=prefs[k];if(Array.isArray(p?.offers)&&p.offers.length)ids.push(k);else if(p?.share)ids.push(k);}const out=[];for(const fleetId of ids){const p=prefs[fleetId]||{};const offers=Array.isArray(p.offers)&&p.offers.length?p.offers:p.share?[p]:[];offers.forEach((o,idx)=>out.push({fleetId,idx,offer:o}));}return out;}function isManualLogout(){if(typeof localStorage===\"undefined\")return false;try{return localStorage.getItem(MANUAL_LOGOUT_KEY)===\"1\";}catch{return false;}}function setManualLogout(on){if(typeof localStorage===\"undefined\")return;try{if(on)localStorage.setItem(MANUAL_LOGOUT_KEY,\"1\");else localStorage.removeItem(MANUAL_LOGOUT_KEY);}catch{}}function getOrCreateStore(){if(typeof window===\"undefined\")return null;const w=window;// A full store only: the PDF controller (and render-pdf) set a minimal one\n// without configure(), and the Framer canvas runs every page in one window.\nif(w[STORE_KEY]&&typeof w[STORE_KEY].configure===\"function\")return w[STORE_KEY];const state={proposal:null,saveState:\"idle\",lastSavedAt:null,isPersisted:false,error:null,devUserId:\"00000000-0000-0000-0000-000000000001\",tokens:{...DEFAULT_TOKENS},theme:{...DEFAULT_THEME},sessionUserId:null,identityHydrated:false,navView:\"search\",selectedPersonId:null,selectedPersonData:null,navSelectedDealId:null,navBuilderMode:null,navDraftProposalId:null,availableFractionalDeals:[]};// Identity stays empty until hydrateFromSession() reads the MSAL account.\n// Prevents flashing a stale name in the sidebar.\nconst listeners=new Set;const notify=()=>{const run=()=>listeners.forEach(l=>l());try{startTransition(run);}catch{run();}};const localKey=id=>`${LOCAL_PREFIX}${id}`;/* Serialize the proposal for localStorage with the current session\n       user stamped into payload.__ownerName / __ownerEmail. Consumed by\n       CustomerCardList when rendering the deals list — so each deal card\n       can show \"Created by Umut\" without touching Pipedrive. */const serializeForLocal=p=>{try{const stamped={...p,payload:{...p?.payload||{},__ownerName:state.theme?.userName||\"\",__ownerEmail:state.theme?.userEmail||\"\"}};return JSON.stringify(stamped);}catch{return JSON.stringify(p);}};const setAtPath=(obj,path,value)=>{const keys=path.split(\".\");const cloned=JSON.parse(JSON.stringify(obj));let cur=cloned;for(let i=0;i<keys.length-1;i++){const k=keys[i];if(typeof cur[k]!==\"object\"||cur[k]===null)cur[k]={};cur=cur[k];}cur[keys[keys.length-1]]=value;return cloned;};const ownerId=()=>state.sessionUserId||state.devUserId;const newProposal=id=>({id,slug:id.slice(0,12),status:\"draft\",current_step:1,sales_user_id:ownerId(),payload:JSON.parse(JSON.stringify(emptyPayload)),created_at:new Date().toISOString(),updated_at:new Date().toISOString()});const ingestPipedriveDeals=deals=>{if(!state.proposal)return;// Umut 2026-09-29: a fresh \"new deal\" workflow must stay fully\n// isolated from the contact's other Pipedrive deals — no injection\n// of PC-12/PC-24/etc. offers into the draft the user is composing.\n// The proposal only becomes \"attached\" once it acquires a\n// pipedrive_deal_id (step 4 creates it). Until then, skip ingest.\nif(!state.proposal.pipedrive_deal_id)return;// Umut 2026-10-05: same isolation for \"add a proposal to an existing\n// deal\". That draft carries the deal's id from its first step, so on\n// reload every deal of the contact was injected into it as extra\n// fleets / options the user never defined. The two wizards own their\n// draft — never ingest there.\nif(typeof window!==\"undefined\"&&/\\/sales\\/(proposal-new|deal-new)\\/?$/.test(window.location.pathname))return;const list=Array.isArray(deals)?deals:[];const parsed=list.map(parseFractionalDeal).filter(Boolean);if(!parsed.length)return;const step3=state.proposal.payload?.step3_aircraft||{};const prefs={...step3.preferences||{}};const selected=Array.isArray(step3.selected)?[...step3.selected]:[];let changed=false;for(const d of parsed){if(!d.dealId)continue;let fleetKey=Object.keys(prefs).find(k=>fleetToken(k)===d.token);if(!fleetKey)fleetKey=d.fleetId;const cur=prefs[fleetKey]||{};const offers=Array.isArray(cur.offers)?[...cur.offers]:[];const idx=offers.findIndex(o=>Number(o?.pipedrive_deal_id)===d.dealId||String(o?.share||\"\").replace(/\\s+/g,\"\")===d.share&&!o?.pipedrive_deal_id);const nextOffer={...idx>=0?offers[idx]:{},share:d.share||(idx>=0?offers[idx].share:\"\"),hours:d.hours||(idx>=0?offers[idx].hours:\"\"),immat:d.immat||(idx>=0?offers[idx]?.immat:\"\")||\"\",contract:d.contract||(idx>=0?offers[idx]?.contract:\"\")||\"\",share_type:d.share_type||(idx>=0?offers[idx]?.share_type:\"\")||\"\",outcome:d.outcome,pipedrive_deal_id:d.dealId,generated:true};if(idx>=0)offers[idx]=nextOffer;else offers.push(nextOffer);prefs[fleetKey]={...cur,...offers[0],offers};if(!selected.includes(fleetKey))selected.push(fleetKey);changed=true;}if(!changed)return;const nextPayload={...state.proposal.payload,step3_aircraft:{...step3,selected,preferences:prefs}};state.proposal={...state.proposal,payload:nextPayload,updated_at:new Date().toISOString()};if(typeof localStorage!==\"undefined\"){try{localStorage.setItem(localKey(state.proposal.id),serializeForLocal(state.proposal));}catch{}}notify();};let debounceTimer=null;const missingOnApi=new Set;const MISSING_API_KEY=\"jetfly.sales.missingOnApi\";const persistMissingOnApi=()=>{try{if(typeof sessionStorage===\"undefined\")return;sessionStorage.setItem(MISSING_API_KEY,JSON.stringify([...missingOnApi]));}catch{}};const markMissingOnApi=id=>{if(!id)return;missingOnApi.add(id);persistMissingOnApi();};try{if(typeof sessionStorage!==\"undefined\"){const raw=sessionStorage.getItem(MISSING_API_KEY);if(raw){const arr=JSON.parse(raw);if(Array.isArray(arr)){for(const x of arr){if(typeof x===\"string\"&&x)missingOnApi.add(x);}}}}}catch{}let loadInFlight=null;/* Set by loadProposal(): the proposal a page explicitly asked for (resume a\n       draft). A load() still in flight for another id — typically the blank id\n       minted on page mount — must not overwrite it. */let pinnedProposalId=null;let syncInFlight=null;const isApiMissingError=e=>{const status=Number(e?.status)||0;const msg=String(e?.message||e||\"\");return status===404||/no query results/i.test(msg)||/not found/i.test(msg);};const walkProposalStatus=async(api,id,fromStatus,toStatus,patchBase)=>{const stages=[\"draft\",\"review\",\"sent\",\"accepted\"];const fromIdx=Math.max(0,stages.indexOf(fromStatus));const toIdx=Math.max(fromIdx,stages.indexOf(toStatus));if(toIdx===fromIdx){return await api.updateProposal(id,patchBase);}let result=null;for(let i=fromIdx+1;i<=toIdx;i++){result=await api.updateProposal(id,{...patchBase,status:stages[i]});}return result;};const adoptServerProposal=(old,apiProposal)=>{if(!apiProposal?.id||!state.proposal)return;const nextId=String(apiProposal.id);state.proposal={...old,...state.proposal,id:nextId,slug:apiProposal.slug||old.slug,pipedrive_person_id:apiProposal.pipedrive_person_id??state.proposal.pipedrive_person_id??old.pipedrive_person_id??null};state.isPersisted=true;markMissingOnApi(old.id);missingOnApi.delete(nextId);persistMissingOnApi();if(typeof localStorage!==\"undefined\"){try{localStorage.setItem(localKey(nextId),serializeForLocal(state.proposal));if(old.id!==nextId)localStorage.removeItem(localKey(old.id));}catch{}}if(typeof window!==\"undefined\"&&old.id!==nextId){try{const url=new URL(window.location.href);if(url.searchParams.get(\"p\")===old.id){url.searchParams.set(\"p\",nextId);window.history.replaceState({},\"\",url.toString());}}catch{}}};// Becomes true on the first setField (real user edit) or when load()\n// finds a local/API row. Gates flush() so empty autoCreate shells\n// never get persisted as blank drafts.\nlet hasUserEdit=false;/* A proposal must have a real contact before it can be persisted.\n       Either the customer_id / pipedrive_person_id is set, or the\n       minimum manually-entered customer fields are present.\n       Prevents \"Draft xxxxxx\" rows from being written on navigation. */const hasContactInfo=()=>{const p=state.proposal;if(!p)return false;if(p.customer_id)return true;if(p.pipedrive_person_id)return true;const c=p.payload?.step2_profile?.customer||{};const s=v=>String(v??\"\").trim().length>0;return s(c.first_name);};let persistInFlight=null;const persistProposalToApi=()=>{if(persistInFlight)return persistInFlight;persistInFlight=(async()=>{const p=state.proposal;if(!p||!hasContactInfo())return;const w=typeof window!==\"undefined\"?window:null;const api=w?.__jetflyApi;if(!api?.updateProposal&&!api?.createProposal)return;const payloadWithVersion={version:1,...p.payload};const personId=p.pipedrive_person_id??(p.customer_id?Number(p.customer_id)||null:null);const patchBase={payload:payloadWithVersion,current_step:p.current_step,pipedrive_person_id:personId};try{const existsOnApi=state.isPersisted&&!missingOnApi.has(p.id);if(existsOnApi&&api.updateProposal){console.log(\"[Jetfly Sales] updateProposal →\",p.id,JSON.parse(JSON.stringify(patchBase)));await api.updateProposal(p.id,patchBase);state.isPersisted=true;missingOnApi.delete(p.id);persistMissingOnApi();return;}if(!api.createProposal)return;console.log(\"[Jetfly Sales] createProposal →\",JSON.parse(JSON.stringify({payload:payloadWithVersion,current_step:p.current_step,pipedrive_person_id:personId})));const created=await api.createProposal({payload:payloadWithVersion,current_step:p.current_step,pipedrive_person_id:personId});if(created?.id)adoptServerProposal(p,created);}catch(e){if(isApiMissingError(e)&&api.createProposal){markMissingOnApi(p.id);state.isPersisted=false;try{const created=await api.createProposal({payload:payloadWithVersion,current_step:p.current_step,pipedrive_person_id:personId});if(created?.id)adoptServerProposal(p,created);}catch(e2){console.warn(\"[Jetfly Sales] persistProposalToApi create failed\",e2);}return;}console.warn(\"[Jetfly Sales] persistProposalToApi failed\",e);}})().finally(()=>{persistInFlight=null;});return persistInFlight;};const flush=async()=>{if(!state.proposal)return;if(!hasUserEdit){// Proposal is still empty — don't mint an orphan draft.\nstate.saveState=\"idle\";notify();return;}if(!hasContactInfo()){/* Same guard as ProspectProfile.hasContactAttribution but\n               applied server-side of the store so any caller (setStep,\n               explicit flush from Save Draft, gotoStep) is bounced\n               back when no contact is attributed. */state.saveState=\"idle\";notify();return;}if(typeof localStorage!==\"undefined\"&&state.proposal){try{localStorage.setItem(localKey(state.proposal.id),serializeForLocal(state.proposal));}catch{}}/* Promote the pending sessionStorage seed into a real draft:\n           the localStorage write above is what makes it show in the\n           search list. Drop the sessionStorage copy so we don't leak\n           stale seeds across reloads. */if(typeof sessionStorage!==\"undefined\"&&state.proposal){try{sessionStorage.removeItem(`jetfly.pending.${state.proposal.id}`);}catch{}}state.saveState=\"saved\";state.lastSavedAt=Date.now();state.error=null;notify();/* Spec: send the complete wizard payload on PATCH /proposals/{id}.\n           Backend stores it as-is (no nested merge). Await so Save in\n           Pipedrive never POST /deals against a client UUID. */await persistProposalToApi();};const api={get state(){return state;},subscribe(l){listeners.add(l);return()=>{listeners.delete(l);};},configure(opts){if(opts.devUserId)state.devUserId=opts.devUserId;if(opts.tokens){const t={...state.tokens,...opts.tokens};t.titleFont={...t.titleFont??{},fontFamily:t.titleFont?.fontFamily??DEFAULT_TOKENS.titleFont.fontFamily};t.bodyFont={...t.bodyFont??{},fontFamily:t.bodyFont?.fontFamily??DEFAULT_TOKENS.bodyFont.fontFamily};t.eyebrowFont={...t.eyebrowFont??{},fontFamily:t.eyebrowFont?.fontFamily??DEFAULT_TOKENS.eyebrowFont.fontFamily};state.tokens=t;}if(opts.theme){// Identity fields (userName, userEmail, avatarUrl, role) are owned by\n// the hydrated session — never overwrite them from props on re-render.\nconst incoming={...opts.theme};if(state.identityHydrated){delete incoming.userName;delete incoming.userEmail;delete incoming.avatarUrl;delete incoming.role;}state.theme={...state.theme,...incoming};}notify();},async hydrateFromSession(){/* Populate the sidebar name/email from the Microsoft Entra\n               account so the user footer never shows a stale stub. */const populateFromMsal=async()=>{try{const auth=window.__jetflyAuth;const acc=auth?.getAccount?await auth.getAccount():null;if(!acc)return false;const email=acc.username||\"\";const fullName=acc.name||(email?email.split(\"@\")[0]:\"\");if(!email&&!fullName)return false;state.theme={...state.theme,userName:fullName||state.theme.userName,userEmail:email||state.theme.userEmail,/* MSAL doesn't expose a photo URL — leave empty\n                           so the Sidebar renders the initials avatar. */avatarUrl:\"\",role:state.theme.role};jetflyDebug(\"[Jetfly Sales] identity from MSAL\",{fullName,email});return true;}catch(e){console.warn(\"[Jetfly Sales] MSAL identity failed\",e);return false;}};await populateFromMsal();state.identityHydrated=true;notify();},async load(id,opts){if(!id)return;/* An id this page just minted cannot exist on the API: remember\n               it as missing so neither this load nor the next page (the id\n               travels in `?p=`) fires a GET that is guaranteed to 404. */if(opts?.skipRemote)markMissingOnApi(id);/* Same proposal already in memory — do not re-GET. Drafts\n               that 404 on the API stay local until the first Save. */if(state.proposal?.id===id)return;if(loadInFlight===id)return;loadInFlight=id;w[STORE_KEY]._loadingId=id;try{state.saveState=\"saving\";notify();let loaded=null;let foundLocal=false;let foundOnApi=false;const prefCount=p=>{const prefs=p?.payload?.step3_aircraft?.preferences;if(!prefs||typeof prefs!==\"object\")return 0;return Object.values(prefs).filter(v=>v&&(v.share||v.hours||v.contract)).length;};if(typeof localStorage!==\"undefined\"){const raw=localStorage.getItem(localKey(id));if(raw){try{loaded=JSON.parse(raw);foundLocal=true;}catch(e){console.warn(\"[Jetfly SalesProvider] load() localStorage JSON parse failed\",e);}}}/* Maxime call 2026-08-24: fresh \"New deal\" seeds land in\n               sessionStorage (per-tab, invisible to the search list)\n               until the rep hits Save Draft / Next. Read as a fallback\n               so step 2 hydrates from the preshot without minting a\n               visible draft. */if(!loaded&&typeof sessionStorage!==\"undefined\"){try{const raw=sessionStorage.getItem(`jetfly.pending.${id}`);if(raw){loaded=JSON.parse(raw);foundLocal=true;}}catch(e){console.warn(\"[Jetfly SalesProvider] load() sessionStorage parse failed\",e);}}const isUnsyncedLocalDraft=p=>{if(!p)return false;/* Only pipedrive_deal_id proves the proposal exists\n                   server-side. pipedrive_person_id just links a\n                   customer — the deal itself is created lazily on\n                   Save Draft / Next, so a fresh \"New deal\" seed with\n                   only a person_id must skip the initial GET or it\n                   404s and pollutes the console. */if(p.pipedrive_deal_id)return false;return String(p.status||\"draft\").toLowerCase()===\"draft\";};const skipRemoteGet=missingOnApi.has(id)||foundLocal&&isUnsyncedLocalDraft(loaded);if(!skipRemoteGet){try{const api=typeof window!==\"undefined\"&&window.__jetflyApi||null;if(api?.getProposal){const remote=await api.getProposal(id);if(remote&&typeof remote===\"object\"){missingOnApi.delete(id);foundOnApi=true;if(!loaded||prefCount(remote)>=prefCount(loaded)){loaded=remote;}else if(loaded){const lp=loaded.payload?.step3_aircraft||{};const rp=remote.payload?.step3_aircraft||{};loaded={...remote,...loaded,payload:{...remote.payload||{},...loaded.payload||{},step3_aircraft:{...rp,...lp,preferences:{...rp.preferences||{},...lp.preferences||{}}}}};}}}}catch(e){if(isApiMissingError(e)){markMissingOnApi(id);}else{console.warn(\"[Jetfly SalesProvider] load() API getProposal failed\",e);}}}if(!loaded){/* One retry cycle after ~250ms — Umut 2026-08-27\n                   reported step 2 → step 3 back button occasionally\n                   ending on a blank form. Root cause was almost always\n                   a race with the localStorage write from the prior\n                   step's flush that landed *just after* this load()\n                   fired. A single tick delay + re-read fixes >90%\n                   of the loss cases without adding user-visible\n                   latency. */if(typeof localStorage!==\"undefined\"){await new Promise(r=>setTimeout(r,250));const raw2=localStorage.getItem(localKey(id));if(raw2){try{loaded=JSON.parse(raw2);foundLocal=true;}catch{}}if(!loaded&&typeof sessionStorage!==\"undefined\"){try{const raw3=sessionStorage.getItem(`jetfly.pending.${id}`);if(raw3){loaded=JSON.parse(raw3);foundLocal=true;}}catch{}}}}if(!loaded){loaded=newProposal(id);jetflyDebug(\"[Jetfly SalesProvider] load() minted blank proposal for\",id,{hadLocal:foundLocal,hadRemote:foundOnApi});}hasUserEdit=foundLocal||hasUserEdit;state.isPersisted=foundOnApi;state.linkedCustomer=null;/* If the caller stored an expected customer in sessionStorage\n               (e.g. CustomerCardList clicked \"Open\" on a Pipedrive deal\n               whose stored proposal has stale/wrong customer data), apply\n               it now so the breadcrumb shows the correct prospect name. */if(loaded&&typeof sessionStorage!==\"undefined\"){try{const raw=sessionStorage.getItem(\"jetfly.loadPatch\");if(raw){const patch=JSON.parse(raw);if(patch.proposalId===id&&patch.customer){loaded={...loaded,payload:{...loaded.payload||{},step2_profile:{...loaded.payload?.step2_profile||{},customer:patch.customer,offer:{date:patch.offerDate||loaded.payload?.step2_profile?.offer?.date||\"\",proposal_language:patch.offerLang||loaded.payload?.step2_profile?.offer?.proposal_language||\"\"}}}};}sessionStorage.removeItem(\"jetfly.loadPatch\");}}catch{}}if(pinnedProposalId&&pinnedProposalId!==id)return;state.proposal=loaded;state.saveState=\"saved\";state.lastSavedAt=Date.now();/* navView stays at its current value — \"deals\" or \"deal-history\".\n               The user selects \"+ New proposal\" from DealHistoryPage to enter builder mode.\n               We never force proposal-builder on load(); that caused the old stepper to appear. */const pid=Number(loaded?.pipedrive_person_id||loaded?.customer_id||loaded?.payload?.step1_customer?.customerId||0);if(pid>0){void(async()=>{try{const apiW=typeof window!==\"undefined\"?window.__jetflyApi:null;if(!apiW?.getCustomerDeals)return;const listed=await apiW.getCustomerDeals(pid,{status:\"all\"});const rows=Array.isArray(listed?.data)?listed.data:Array.isArray(listed)?listed:[];const open=rows.filter(d=>{const s=String(d.status||\"\").toLowerCase();return s!==\"won\"&&s!==\"lost\";});/* Only overwrite the deals list if we got data or if\n                           it is still empty — avoids racing with refreshDeals()\n                           (called by the Sidebar effect) which may have already\n                           populated the list with a correctly-parsed response. */if(open.length>0||state.availableFractionalDeals.length===0){state.availableFractionalDeals=open.map(d=>({id:Number(d.id)||0,title:String(d.title??\"\"),status:String(d.status??\"open\"),aircraft_type:d.aircraft_type!=null?String(d.aircraft_type):null,share_size:d.share_size!=null?String(d.share_size):null,share_size_mode:d.share_size_mode!=null?String(d.share_size_mode):null,share_immat:d.share_immat!=null?String(d.share_immat):null,flight_hours:d.flight_hours!=null?Number(d.flight_hours):null,contract_duration:d.contract_duration!=null?Number(d.contract_duration):null,management_fee:d.management_fee!=null?Number(d.management_fee):null,acquisition_cost:d.acquisition_cost!=null?Number(d.acquisition_cost):null,proposal_language:d.proposal_language!=null?String(d.proposal_language):null,expected_close_date:d.expected_close_date!=null?String(d.expected_close_date):d.close_time!=null?String(d.close_time):null,updated_at:String(d.update_time||d.updated_at||\"\"),created_at:d.add_time!=null?String(d.add_time):null,proposal_status:d.proposal_status!=null?String(d.proposal_status):null,proposal_reference:d.proposal_reference!=null?String(d.proposal_reference):null,currency:d.currency!=null?String(d.currency):null,deal_type:d.deal_type!=null?String(d.deal_type):null,/* Link to an existing Jetfly Proposal — present when this deal\n                               was previously created via the Sales Tool. Use this to load\n                               the full proposal (all options) instead of reconstructing\n                               from Pipedrive fields (option 0 only). */proposal_id:d.proposal_id!=null?String(d.proposal_id):null}));notify();}// end if (open.length > 0 || ...)\ningestPipedriveDeals(rows);}catch(e){console.warn(\"[Jetfly Sales] hydrate deals on load failed\",e);}})();}}finally{if(loadInFlight===id)loadInFlight=null;if(w[STORE_KEY]?._loadingId===id)w[STORE_KEY]._loadingId=null;}},/* Umut 2026-10-06 — ProposalNewPage / DealNewPage have been calling\n           store.loadProposal() and store.setProposal() through optional\n           chaining, but neither existed: resuming a draft never loaded it\n           (the wizard reopened blank on step 1) and language / date edits\n           never reached subscribers. *//* Make `p` THE proposal of this page (resume a draft). */loadProposal(p,opts){if(!p?.id)return;pinnedProposalId=String(p.id);state.proposal={...p};if(typeof opts?.persisted===\"boolean\")state.isPersisted=opts.persisted;hasUserEdit=true;state.saveState=\"saved\";state.lastSavedAt=Date.now();try{const url=new URL(window.location.href);if(url.searchParams.get(\"p\")!==String(p.id)){url.searchParams.set(\"p\",String(p.id));window.history.replaceState({},\"\",url.toString());}}catch{}notify();},/* Push an edited copy of the current proposal (in memory only — the\n           local draft is still written on Save Draft / Next). */setProposal(p){if(!p?.id)return;if(state.proposal?.id&&String(state.proposal.id)!==String(p.id))return;state.proposal={...p};state.saveState=\"idle\";notify();},isOfferLocked(){const status=String(state.proposal?.status||\"\").toLowerCase();return status===\"sent\"||status===\"accepted\";},setField(path,value){if(!state.proposal)return;const status=String(state.proposal.status||\"\").toLowerCase();/* Hard lock: once a proposal is sent (linked to Pipedrive) or\n               accepted, no field can be modified. A new offer requires\n               \"Create new proposal\", not editing the sent one. The only\n               path that bypasses this is setProposalField(), which handles\n               top-level fields (pdf_url, pipedrive_deal_id, etc.) used by\n               internal Save/Update flows. */if(status===\"sent\"||status===\"accepted\")return;/* Maxime call 2026-08-24: \"il ne faut pas faire de brouillon\n               sauf si je click sur save draft ou next click\". Typing\n               only updates in-memory state — no localStorage write.\n               The draft is minted only on Save Draft / Next (flush). */hasUserEdit=true;const nextPayload=setAtPath(state.proposal.payload,path,value);state.proposal={...state.proposal,payload:nextPayload,updated_at:new Date().toISOString()};state.saveState=\"idle\";notify();},setStep(step){if(!state.proposal)return;/* Never downgrade — once the user has generated the PDF /\n               reached step 5, going back to review earlier steps must\n               NOT reset current_step to an earlier value. Keep the max\n               reached so the deal card in the list always reflects the\n               furthest step. */const cur=state.proposal.current_step||1;const nextStep=Math.max(cur,step);state.proposal={...state.proposal,current_step:nextStep,updated_at:new Date().toISOString()};state.saveState=\"saving\";notify();/* Mirror the current in-memory state to sessionStorage so\n               hitting Back after Next always hydrates the latest\n               edits — 2026-08-27 Kim: \"je me retrouve à faire back et\n               tout perdre à chaque fois\". flush() below still gates\n               localStorage / API persistence on hasContactInfo, but\n               the pending seed is our per-tab safety net so a fresh\n               \"New deal\" (no contact attribution yet) doesn't lose\n               everything the user typed just because they went back\n               one step to check something. flush() removes this seed\n               when it promotes the draft to localStorage — no double\n               source of truth. */if(typeof sessionStorage!==\"undefined\"&&state.proposal?.id){try{sessionStorage.setItem(`jetfly.pending.${state.proposal.id}`,serializeForLocal(state.proposal));}catch{}}return flush();},setProposalField(field,value){if(!state.proposal)return;/* Mutate local state. Persist to localStorage so the value\n               survives the full-page navigation done by gotoStep — the\n               store singleton is destroyed on reload and re-hydrated\n               from localStorage. Without this write, top-level fields\n               like customer_id (set from \"+ New deal\" popup preshot)\n               were lost during redirect (Maxime 2026-07-29). */hasUserEdit=true;let nextProposal={...state.proposal,[field]:value,updated_at:new Date().toISOString()};/* Stamp every committed offer as generated when the PDF is\n               saved, so step 3 can lock those deals (Won/Lost stays\n               editable) and still allow new offers. */if(field===\"pdf_url\"&&value){const payload=nextProposal.payload||{};const step3=payload.step3_aircraft||{};const prefs=step3.preferences||{};const nextPrefs={};for(const k of Object.keys(prefs)){const p=prefs[k]||{};nextPrefs[k]={...p,offers:Array.isArray(p.offers)?p.offers.map(o=>({...o,generated:true})):p.offers};}nextProposal={...nextProposal,payload:{...payload,step3_aircraft:{...step3,preferences:nextPrefs}}};}state.proposal=nextProposal;if(typeof localStorage!==\"undefined\"){try{localStorage.setItem(localKey(state.proposal.id),serializeForLocal(state.proposal));}catch{/* localStorage disabled / quota — ignore */}}notify();},async gotoStep(step,opts){if(typeof window===\"undefined\")return;if(RenderTarget.current()===RenderTarget.canvas)return;const from=Number(state.proposal?.current_step)||1;if(from===3&&step>3&&!opts?.skipFlush){const step3=state.proposal?.payload?.step3_aircraft||{};/* New-deal flow: rep hasn't configured aircraft yet — that\n                   happens after the Pipedrive deal is created on the server.\n                   Skip the immat/contract validation entirely. */if(step3.createNewDeal){/* fall through to navigation below */}else{const prefs=step3.preferences||{};const optionComplete=o=>{const immat=String(o?.immat||\"\").trim();const raw=String(o?.contract||\"\").trim();const n=Number(raw.replace(/[^\\d.-]/g,\"\"));const isSecondHand=String(o?.share_type||\"\").trim()===\"second_hand_share\";const acqCostOk=isSecondHand?Number(o?.acquisition_cost)>0:true;return Boolean(immat)&&Boolean(raw)&&Number.isFinite(n)&&n>0&&acqCostOk;};const optionStarted=o=>Boolean(String(o?.immat||\"\").trim()||String(o?.contract||\"\").trim());const fleetOptions=p=>{const rows=Array.isArray(p?.offers)?p.offers:[];const committed=rows.filter(optionStarted);if(committed.length)return committed;if(optionStarted(p))return[p];return[];};let anyComplete=false;const missing=[];for(const id of Object.keys(prefs)){const optsForFleet=fleetOptions(prefs[id]);for(const o of optsForFleet){if(optionComplete(o))anyComplete=true;else missing.push(id);}}if(!anyComplete||missing.length>0){window.dispatchEvent(new CustomEvent(\"jetfly:step3-validate\",{detail:{missing}}));if(!anyComplete){console.warn(\"[Jetfly Sales] gotoStep blocked — need one option with immat + contract\");}return;}}// end else (not createNewDeal)\n}const route=state.theme.stepRoutes[step-1];if(!route){/* Surface the misconfiguration instead of silently\n                   swallowing. Kim recap 2026-08-21 mentioned a \"Back\n                   button error\" — a missing stepRoute would produce\n                   exactly this symptom (click does nothing). */console.warn(\"[Jetfly Sales] gotoStep aborted — no stepRoute configured\",{step,stepRoutes:state.theme.stepRoutes});return;}/* Build the target URL up front so we can (1) show the\n               target's skeleton via a prefetch hint immediately and\n               (2) send the browser off in parallel to the DB write. */const url=new URL(window.location.href);url.pathname=route;if(state.proposal)url.searchParams.set(\"p\",state.proposal.id);const targetHref=url.toString();/* Prefetch — Framer serves the page chunk from\n               framerusercontent.com; tell the browser to warm the\n               cache while we finish the flush. */try{const link=document.createElement(\"link\");link.rel=\"prefetch\";link.href=targetHref;link.as=\"document\";document.head.appendChild(link);}catch{}/* Flush current_step to DB. Awaited so the resume behaves\n               (see setStep comment) but the prefetch above already\n               started downloading the target. */if(state.proposal){if(opts?.skipFlush){/* Programmatic entry navigation (e.g. popup \"+ New\n                       deal\") — update current_step locally + in\n                       localStorage but do not persist to the API yet.\n                       The next explicit save is what creates the deal. */state.proposal={...state.proposal,current_step:step,updated_at:new Date().toISOString()};if(typeof localStorage!==\"undefined\"){try{localStorage.setItem(localKey(state.proposal.id),serializeForLocal(state.proposal));}catch{}}}else{try{await api.setStep(step);}catch(e){console.warn(\"[Jetfly SalesProvider] gotoStep flush failed\",e);}}}window.location.href=targetHref;},/* Called from the \"Leave without saving?\" modal when the user\n           picks Leave. Wipes both the in-memory proposal and its\n           localStorage twin so nothing can be flushed later, then it's\n           safe for the caller to navigate away without triggering a\n           setStep()/flush() side effect. */discardProposal(){const id=state.proposal?.id;state.proposal=null;state.saveState=\"idle\";state.lastSavedAt=null;state.isPersisted=false;hasUserEdit=false;if(id&&typeof localStorage!==\"undefined\"){try{localStorage.removeItem(localKey(id));}catch{/* ignore */}}if(debounceTimer){clearTimeout(debounceTimer);debounceTimer=null;}notify();},/* Clear or refresh the deals list when the linked customer changes.\n           Pass null/0 to clear (customer deselected). Pass a Pipedrive\n           person ID to re-fetch deals for a newly selected customer. */refreshDeals(personId){const pid=Number(personId)||0;if(!pid){state.availableFractionalDeals=[];notify();return;}const apiW=typeof window!==\"undefined\"?window.__jetflyApi:null;if(!apiW?.getCustomerDeals)return;void(async()=>{try{const listed=await apiW.getCustomerDeals(pid,{status:\"all\"});const rows=Array.isArray(listed?.data)?listed.data:Array.isArray(listed)?listed:[];/* Store ALL statuses — DealsPage filters client-side by tab.\n                       Won/lost deals remain visible for history (2026-09-21). */state.availableFractionalDeals=rows.map(d=>({id:Number(d.id)||0,title:String(d.title??\"\"),status:String(d.status??\"open\"),aircraft_type:d.aircraft_type!=null?String(d.aircraft_type):null,share_size:d.share_size!=null?String(d.share_size):null,share_size_mode:d.share_size_mode!=null?String(d.share_size_mode):null,share_immat:d.share_immat!=null?String(d.share_immat):null,flight_hours:d.flight_hours!=null?Number(d.flight_hours):null,contract_duration:d.contract_duration!=null?Number(d.contract_duration):null,management_fee:d.management_fee!=null?Number(d.management_fee):null,acquisition_cost:d.acquisition_cost!=null?Number(d.acquisition_cost):null,proposal_language:d.proposal_language!=null?String(d.proposal_language):null,expected_close_date:d.expected_close_date!=null?String(d.expected_close_date):d.close_time!=null?String(d.close_time):null,updated_at:String(d.update_time||d.updated_at||\"\"),created_at:d.add_time!=null?String(d.add_time):null,proposal_status:d.proposal_status!=null?String(d.proposal_status):null,proposal_reference:d.proposal_reference!=null?String(d.proposal_reference):null,currency:d.currency!=null?String(d.currency):null,deal_type:d.deal_type!=null?String(d.deal_type):null,proposal_id:d.proposal_id!=null?String(d.proposal_id):null}));console.log(\"[Jetfly Sales] refreshDeals →\",state.availableFractionalDeals.map(d=>({id:d.id,title:d.title,aircraft_type:d.aircraft_type,share_size:d.share_size,share_immat:d.share_immat,flight_hours:d.flight_hours,contract_duration:d.contract_duration,proposal_language:d.proposal_language,proposal_status:d.proposal_status,proposal_id:d.proposal_id,updated_at:d.updated_at,_missing:[!d.aircraft_type&&\"aircraft_type\",!d.share_size&&\"share_size\",!d.share_immat&&\"share_immat\",d.flight_hours==null&&\"flight_hours\",!d.proposal_status&&\"proposal_status\",!d.proposal_id&&\"proposal_id\"].filter(Boolean)})));notify();}catch(e){console.warn(\"[Jetfly SalesProvider] refreshDeals failed\",e);}})();},/* ── Nav actions ──────────────────────────────────────────────\n           Central navigation model:\n             \"deals\"            → DealsPage  (list of deals for linked customer)\n             \"deal-history\"     → DealHistoryPage  (proposals for selected deal)\n             \"proposal-builder\" → AircraftSelector + Overview + Release (builder wizard)\n           Never auto-flush() inside these — the caller decides. */setNavView(view){state.navView=view;notify();},selectContact(person){state.selectedPersonId=person?String(person.id):null;state.selectedPersonData=person||null;state.navView=person?\"contact\":\"search\";state.navSelectedDealId=null;state.navBuilderMode=null;state.navDraftProposalId=null;// Sync availableDeals clear — will reload on ContactPage mount\nstate.availableFractionalDeals=[];notify();},selectDeal(dealId){state.navSelectedDealId=dealId!=null?Number(dealId):null;state.navView=dealId!=null?\"deal-history\":\"contact\";notify();},startNewDeal(){state.navView=\"proposal-builder\";state.navBuilderMode=\"new-deal\";state.navSelectedDealId=null;notify();},startNewProposal(dealId){state.navView=\"proposal-builder\";state.navBuilderMode=\"new-proposal\";state.navSelectedDealId=Number(dealId);notify();},backToDeals(){// Stay on \"contact\" view (person remains selected); clear deal context\nstate.navView=state.selectedPersonId?\"contact\":\"search\";state.navSelectedDealId=null;state.navBuilderMode=null;notify();},backToDealHistory(){state.navView=\"deal-history\";state.navBuilderMode=null;notify();},/* ---- API sync (Jetfly integrations + Pipedrive) ----\n           Called explicitly from Save Draft / Send. Ensures the\n           proposal exists on the server (POST /proposals first time,\n           PATCH afterwards), then posts to /deals so Pipedrive links\n           to the existing open Fractional deal (or creates a new one). */async syncToApi(opts){if(syncInFlight)return syncInFlight;const run=(async()=>{const w=typeof window!==\"undefined\"?window:null;const api=w?.__jetflyApi;if(!api){console.warn(\"[Jetfly SalesProvider] syncToApi bail — __jetflyApi missing\");return null;}const p=state.proposal;if(!p)return null;/* Draft-only policy (Maxime 2026-08-14): while the proposal\n               is still `draft`, keep it entirely local (localStorage +\n               in-memory state). Nothing is pushed to the API — no\n               POST /proposals, no POST /deals, no Pipedrive noise. The\n               proposal only reaches the server when the sales rep\n               transitions to `sent` (Print / save as PDF, WhatsApp,\n               email). This keeps the pipeline clean of abandoned\n               drafts. */const cust={...p.payload?.step1_customer||{},...p.payload?.step2_profile?.customer||{}};const linked=state.linkedCustomer||{};const hasContact=[\"first_name\",\"last_name\",\"email\",\"company_name\",\"name\"].some(k=>String(cust[k]||linked[k]||\"\").trim());if(!hasContact&&!p.customer_id&&!p.pipedrive_person_id){console.warn(\"[Jetfly Sales] syncToApi bail — no contact (skip empty shell)\",{customerKeys:Object.keys(cust),customer_id:p.customer_id});return null;}state.saveState=\"saving\";notify();try{/* --- 0. Resolve stage_id + status chain from /meta ---\n                   Per doc: POST /deals requires a stage_id that belongs\n                   to the configured pipeline (Fractional). Status\n                   transitions are forward-only (draft → review → sent\n                   → accepted, skipping = 422). Cache meta once on\n                   window so we don't refetch. */let stageMap={};let firstStageId=0;let configuredPipelineId=0;let salesStageIds=[];try{let meta=null;if(api.getMeta){meta=await api.getMeta();w.__jetflyMeta=meta;}else{meta=w.__jetflyMeta;}if(api.normalizeMeta)meta=api.normalizeMeta(meta);configuredPipelineId=Number(meta?.pipeline_id||0);const stages=meta?.stages||[];for(const s of stages){stageMap[String(s.name||\"\").toLowerCase()]=Number(s.id);}salesStageIds=stages.map(s=>Number(s.id)).filter(id=>id>0);firstStageId=stageMap[\"contact made\"]||stages[0]?.id||0;jetflyDebug(\"[Jetfly Sales] /meta pipeline\",{pipeline_id:configuredPipelineId,stages:stages.map(s=>({id:s.id,name:s.name,pipeline_id:s.pipeline_id,order:s.order}))});}catch(e){console.warn(\"[Jetfly Sales] meta fetch failed for stage resolution\",e);}/* --- 1. Ensure proposal exists on the API ---\n                   isPersisted used to flip on localStorage flush, so\n                   step 5 PATCH'd a client UUID that 404s. Create when\n                   the API has no row; walk draft→review→sent after. */let apiProposal=null;const payloadWithVersion={version:1,...p.payload};const patchBase={payload:payloadWithVersion,current_step:p.current_step,pipedrive_person_id:p.pipedrive_person_id??(p.customer_id?Number(p.customer_id)||null:null)};const shouldPushDeal=opts?.pushDeal===true;const existsOnApi=state.isPersisted&&!missingOnApi.has(p.id);if(existsOnApi){try{jetflyDebug(\"[Jetfly Sales] syncToApi → PATCH /proposals\",p.id);const server=await api.getProposal(p.id);apiProposal=await walkProposalStatus(api,p.id,server?.status||\"draft\",shouldPushDeal?\"sent\":p.status,patchBase);}catch(e){if(!isApiMissingError(e))throw e;markMissingOnApi(p.id);state.isPersisted=false;apiProposal=null;}}if(!apiProposal){jetflyDebug(\"[Jetfly Sales] syncToApi → POST /proposals\");const created=await api.createProposal({payload:payloadWithVersion,current_step:p.current_step,pipedrive_person_id:patchBase.pipedrive_person_id});adoptServerProposal(p,created);apiProposal=created;const newId=state.proposal?.id||created?.id;if(newId&&p.status&&p.status!==\"draft\"){try{apiProposal=await walkProposalStatus(api,newId,created?.status||\"draft\",shouldPushDeal?\"sent\":p.status,patchBase);}catch(e){console.warn(\"[Jetfly Sales] status walk after POST failed\",e);}}}/* --- 2. POST /deals to link (or reuse) the Pipedrive\n                   Fractional deal. Idempotent per doc — the server\n                   returns the existing open deal on the same person\n                   when one is found, else creates a new one. Only fire\n                   when we have at least one selected fleet with a\n                   share_size (step 3 has been touched). */const step3=p.payload?.step3_aircraft||{};const selectedIds=Array.isArray(step3.selected)?step3.selected:[];const allPrefs=step3.preferences||{};const canonKey=s=>String(s||\"\").toLowerCase().replace(/[^a-z0-9]/g,\"\");const fleetToken=raw=>{const s=String(raw||\"\").trim();const cms=/^cms-?(\\d+)$/i.exec(s);if(cms){if(cms[1]===\"0\")return\"pc12\";if(cms[1]===\"1\")return\"pc24\";if(cms[1]===\"2\")return\"cirrus\";}const k=canonKey(s);if(k===\"cms0\")return\"pc12\";if(k===\"cms1\")return\"pc24\";if(k===\"cms2\")return\"cirrus\";if(k.includes(\"pc12\")||k===\"cdhyixl6j\")return\"pc12\";if(k.includes(\"pc24\")||k===\"kq2zbdj7c\")return\"pc24\";if(k.includes(\"cirrus\")||k.includes(\"sf50\")||k===\"fbciglxgh\")return\"cirrus\";return k;};const fleetKwMatch=(a,b)=>{const ka=fleetToken(a),kb=fleetToken(b);if(!ka||!kb)return false;return ka===kb;};let firstFleetId=selectedIds[0]||\"\";let prefs=firstFleetId&&allPrefs[firstFleetId]||{};if(!prefs?.share){for(const id of selectedIds){if(allPrefs[id]?.share){firstFleetId=id;prefs=allPrefs[id];break;}const hit=Object.entries(allPrefs).find(([k,v])=>v?.share&&fleetKwMatch(String(k),id));if(hit){firstFleetId=hit[0];prefs=hit[1];break;}}}if(!prefs?.share){const anyHit=Object.entries(allPrefs).find(([,v])=>v?.share);if(anyHit){firstFleetId=anyHit[0];prefs=anyHit[1];}}const currentStep=state.proposal?.current_step||1;/* Pipedrive push (POST /customers, POST /deals, PATCH stage)\n                   only fires at step 5. Before that, autosave still writes\n                   the proposal payload to the Jetfly API so the rep can\n                   resume the draft later — but nothing lands in Pipedrive\n                   until step 5 is actually reached. Prevents half-baked\n                   Fractional deals from cluttering Yuliia's Kanban.\n                   Maxime 2026-08-21. *//* Deals are created/linked only when the rep clicks\n                   \"Save proposal to Pipedrive\" (DAT-1272). Autosave\n                   still writes the proposal payload. */if(shouldPushDeal){try{const fleets=w?.__jetflyFleetsCache||[];const offerItems=collectStep3Offers(p.payload);const live=state.proposal||p;const asPersonId=v=>{const n=Number(v);return Number.isFinite(n)&&n>0?n:0;};let personId=asPersonId(apiProposal?.pipedrive_person_id)||asPersonId(live.pipedrive_person_id)||asPersonId(live.customer_id)||asPersonId(cust.pipedrive_person_id)||asPersonId(cust.pipedrive_id)||asPersonId(cust.id);if(!personId&&api.searchCustomers){const q=String(cust.email||[cust.first_name,cust.last_name].filter(Boolean).join(\" \")||\"\").trim();if(q.length>=2){try{const found=await api.searchCustomers(q);const rows=found?.data||[];const email=String(cust.email||\"\").trim().toLowerCase();const hit=email?rows.find(r=>(r.emails||[]).some(e=>String(e.value||\"\").toLowerCase()===email)):null;personId=asPersonId(hit?.id);}catch(e){console.warn(\"[Jetfly Sales] customer search failed\",e);}}}if(!personId&&api.createCustomer){const first=String(cust.first_name||\"\").trim();const last=String(cust.last_name||\"\").trim();const email=String(cust.email||\"\").trim();if(first){const cap=s=>s?s.charAt(0).toUpperCase()+s.slice(1):s;// Split full name into first/last for Pipedrive API\nconst nameParts=first.split(/\\s+/);const apiFirst=cap(nameParts[0]??first);const apiLast=cap(last||nameParts.slice(1).join(\" \"));try{const created=await api.createCustomer({first_name:apiFirst,last_name:apiLast,email,company_name:String(cust.company_name||\"\").trim()||undefined,phone:String(cust.phone||\"\").trim()||undefined});personId=asPersonId(created?.id)||asPersonId(created?.data?.id)||asPersonId(created?.pipedrive_person_id);}catch(e){const body=e?.body||e?.data||{};personId=asPersonId(body?.pipedrive_person_id)||asPersonId(body?.person_id)||asPersonId(body?.id)||asPersonId(body?.errors?.email?.[0]?.pipedrive_person_id);}}}if(!personId){throw new Error(\"Could not create the Pipedrive person. First name, last name and email are required.\");}if(personId&&!live.pipedrive_person_id){try{await api.updateProposal(state.proposal.id,{pipedrive_person_id:personId});state.proposal={...state.proposal,pipedrive_person_id:personId,customer_id:String(personId)};}catch(e){console.warn(\"[Jetfly Sales] could not store pipedrive_person_id\",e);}}let personDeals=[];let personDealStages=[];if(personId&&api.getCustomerDeals){try{const listed=await api.getCustomerDeals(personId);personDeals=Array.isArray(listed?.data)?listed.data:Array.isArray(listed)?listed:[];personDealStages=[...new Set(personDeals.map(d=>Number(d.stage_id)).filter(id=>id>0))];}catch(e){console.warn(\"[Jetfly Sales] list person deals failed\",e);}}const patchDeal=async(id,body)=>{let next={...body};for(let attempt=0;attempt<6;attempt++){try{return await api.updateDeal(id,next);}catch(e){if(e?.status!==422)throw e;const errors=e.body&&e.body.errors||{};const keys=Object.keys(errors);let dropped=keys.find(k=>k in next)||\"\";if(!dropped){const optional=[\"share_immat\",\"share_size_mode\",\"proposal_language\",\"aircraft_type\",\"share_size\",\"stage_id\",\"status\"];dropped=optional.find(k=>k in next)||\"\";}if(!dropped)throw e;console.warn(\"[Jetfly Sales] PATCH /deals 422 — drop\",dropped);delete next[dropped];}}throw new Error(\"PATCH /deals 422 after retries\");};const findFleetRow=fleetId=>fleets.find(f=>String(f.id)===fleetId||String(f.slug)===fleetId||fleetKwMatch(String(f.id||\"\"),fleetId)||fleetKwMatch(String(f.slug||\"\"),fleetId)||fleetKwMatch(String(f.name||\"\"),fleetId))||null;const parseMoney=v=>{if(v==null||v===\"\")return undefined;if(typeof v===\"number\"&&Number.isFinite(v)&&v>=0)return v;const n=Number(String(v).replace(/[^\\d.-]/g,\"\"));return Number.isFinite(n)&&n>=0?n:undefined;};const toMoney=(amount,currency)=>amount!=null&&Number.isFinite(amount)&&amount>0?{amount,currency}:undefined;// Format a money pair as a human-readable label (no Pipedrive-style formatting).\nconst fmtMoney=m=>{if(!m)return\"\";const s=new Intl.NumberFormat(\"en-US\",{maximumFractionDigits:0}).format(m.amount);return m.currency===\"USD\"?`$${s}`:`€${s}`;};// Compute annual budget from pricing row: (hourlyEUR + surcharge) × hours + mgmtEUR × 12.\n// All components are EUR — result currency is always EUR.\nconst computeBudgetMoney=(hourlyEur,mgmtEur,hours,fleetSurchargeEur)=>{if(!hourlyEur||!mgmtEur||!hours||hours<=0)return undefined;const amount=(hourlyEur+fleetSurchargeEur)*hours+mgmtEur*12;return Number.isFinite(amount)&&amount>0?{amount:Math.round(amount),currency:\"EUR\"}:undefined;};const lookupPricing=(fleetKey,offer,fleetPref)=>{// Manual overrides (second-hand or user-entered values)\nlet mgmtFeeRaw=parseMoney(offer?.management_fee??offer?.fee??fleetPref?.management_fee??fleetPref?.fee);let acqCostRaw=parseMoney(offer?.acquisition_cost??fleetPref?.acquisition_cost);let hourlyEur;let sameDayEur;let depositEur;try{const rows=w.__jetflyPricing||[];const commercialOffer=Boolean(offer?.commercial_offer);const hours=commercialOffer?Number(offer.hours)||null:null;const mode=offer.mode===\"long\"?\"long\":\"standard\";const canonShare=String(offer.share||\"\").replace(/\\s+/g,\"\");const SHARE_ALIASES={\"1/8\":[\"1/8\",\"2/16\"],\"2/16\":[\"1/8\",\"2/16\"],\"1/4\":[\"1/4\",\"4/16\"],\"4/16\":[\"1/4\",\"4/16\"],\"3/8\":[\"3/8\",\"6/16\"],\"6/16\":[\"3/8\",\"6/16\"],\"1/2\":[\"1/2\",\"8/16\"],\"8/16\":[\"1/2\",\"8/16\"]};const shareMatch=(a,b)=>{const ca=String(a||\"\").replace(/\\s+/g,\"\");const cb=String(b||\"\").replace(/\\s+/g,\"\");if(!ca||!cb)return false;if(ca===cb)return true;return(SHARE_ALIASES[ca]||[ca]).includes(cb);};const matches=rows.filter(r=>fleetToken(fleetKey)===fleetToken(r.fleetSlug)&&shareMatch(String(r.share||\"\"),canonShare));let pick=matches[0]||null;if(matches.length&&hours!=null){pick=matches.find(r=>mode===\"long\"&&r.flightHoursLR!=null?r.flightHoursLR===hours:r.flightHours===hours)||pick;}if(pick){// CMS-authoritative values — override manual only when CMS has a value\nmgmtFeeRaw=parseMoney(pick.managementFeeEurMonth)??mgmtFeeRaw;acqCostRaw=parseMoney(pick.acquisitionUsd)??acqCostRaw;hourlyEur=parseMoney(pick.hourlyOneWay)??undefined;sameDayEur=parseMoney(pick.sameDayReturnEur)??undefined;depositEur=parseMoney(pick.depositAmountEur)??undefined;}else if(typeof window!==\"undefined\"&&window.__JETFLY_DEBUG){console.warn(\"[Jetfly Sales] lookupPricing miss\",{fleet:fleetKey,share:offer?.share,hours:offer?.hours,contract:offer?.contract,share_type:offer?.share_type});}}catch{}return{// Acquisition Cost: USD only in CMS. No EUR equivalent.\nacqCost:toMoney(acqCostRaw,\"USD\"),// Management Fee: EUR only in CMS.\nmgmtFee:toMoney(mgmtFeeRaw,\"EUR\"),// Hourly Rate + Same Day Return: EUR only in CMS.\nhourlyRate:toMoney(hourlyEur,\"EUR\"),sameDayReturn:toMoney(sameDayEur,\"EUR\"),depositAmount:toMoney(depositEur,\"EUR\"),// Raw numbers for budget computation\n_hourlyEur:hourlyEur,_mgmtEur:mgmtFeeRaw};};const offerCust=p.payload?.step2_profile?.customer||{};const offerMeta=p.payload?.step2_profile?.offer||{};const proposalName=String(offerMeta?.proposal_name||\"\").trim();const personNameForTitle=proposalName||[offerCust.first_name,offerCust.last_name].filter(Boolean).join(\" \")||offerCust.company_name||\"\";const lang=String(offerMeta?.proposal_language||\"en\").slice(0,2).toLowerCase();const statusLabel=String(state.proposal.status||\"sent\").toLowerCase();const usedDealIds=new Set;const nextPrefs={...p.payload?.step3_aircraft?.preferences||{}};const linkedIds=[];const items=offerItems.length>0?offerItems:prefs?.share?[{fleetId:firstFleetId,idx:0,offer:prefs}]:[];const routeCreate=opts?.createNewDeal===true||Number(opts?.convertLeadId||0)>0;const routeDealId=asPersonId(opts?.existingDealId);const boundDealId=routeDealId||asPersonId(live.pipedrive_deal_id);const primaryItem=(boundDealId?items.find(it=>asPersonId(it.offer?.pipedrive_deal_id)===boundDealId):null)||items.find(it=>it.offer?.share)||items[0]||(boundDealId||routeCreate?{fleetId:firstFleetId||\"\",idx:0,offer:prefs||{}}:null);// Group offerItems by fleet — Pipedrive gets primaryOffer (offers[0]);\n// PDF/activity/preview get all offers for the fleet.\nconst rawWorkItems=items.length>0?items:primaryItem?[primaryItem]:[];const _fleetGroupMap=new Map;for(const item of rawWorkItems){if(!_fleetGroupMap.has(item.fleetId)){_fleetGroupMap.set(item.fleetId,{fleetId:item.fleetId,offers:[],primaryOffer:null});}_fleetGroupMap.get(item.fleetId).offers.push(item.offer||{});}const workGroups=[];for(const g of _fleetGroupMap.values()){g.primaryOffer=g.offers[0]||{};workGroups.push(g);}const contactMadeId=stageMap[\"contact made\"]||28;let sharedNewDealId=0;const perFleetPreviewEntries=[];for(const group of workGroups){const{fleetId,offers:allOffers,primaryOffer}=group;const fleet=findFleetRow(fleetId);// Pipedrive deal fields use primaryOffer (first option) only\nconst offer=primaryOffer;const token=fleetToken(fleetId)||fleetToken(fleet?.id||\"\")||fleetToken(fleet?.slug||\"\")||fleetToken(fleet?.name||\"\");const fleetLabel=fleetLabelFromToken(token);const _fleetPref=(p.payload?.step3_aircraft?.preferences||{})[fleetId];const _rawPricing=lookupPricing(fleet?.name||fleetId,offer,_fleetPref);// Use structured money pairs — fallback to step2 offer if CMS didn't match\nconst _parseMoney2=v=>{const n=parseFloat(String(v||\"\").replace(/[^0-9.-]/g,\"\"));return Number.isFinite(n)&&n>0?n:undefined;};const acqCost=_rawPricing.acqCost??(_parseMoney2(offerMeta?.acquisition_cost)!=null?toMoney(_parseMoney2(offerMeta?.acquisition_cost),\"USD\"):undefined);const mgmtFee=_rawPricing.mgmtFee??(_parseMoney2(offerMeta?.management_fee)!=null||_parseMoney2(offerMeta?.fee)!=null?toMoney(_parseMoney2(offerMeta?.management_fee)??_parseMoney2(offerMeta?.fee),\"EUR\"):undefined);// Block save if new_share has no acquisition cost at all\nif(String(offer.share_type||\"new_share\")===\"new_share\"&&!acqCost&&_rawPricing.acqCost===undefined){console.warn(\"[Jetfly Sales] Missing Acquisition Cost — continuing without it\",{fleet:fleetId,share:offer.share,hours:offer.hours,contract:offer.contract,share_type:offer.share_type});}// FR proposals: Acquisition Cost only has USD in CMS — flag clearly.\nif(lang===\"fr\"&&acqCost?.currency===\"USD\"&&typeof window!==\"undefined\"&&window.__JETFLY_DEBUG){console.warn(\"[Jetfly Sales] FR proposal: Acquisition Cost is USD-only in CMS. No EUR equivalent. Contact Kim/Yuliia to add 'Acquisition Cost EUR' to Pricing CMS.\");}// Second Hand: manual acquisition_cost is currency-neutral — treat as USD (matching CMS convention)\nconst acqCostSecondHand=String(offer.share_type||\"new_share\")===\"second_hand_share\"&&_parseMoney2(offer.acquisition_cost)!=null?toMoney(_parseMoney2(offer.acquisition_cost),\"USD\"):undefined;const primaryAcqCost=acqCostSecondHand??acqCost;// Surcharge (Second Hand): EUR/h added to hourly rate\nconst _shareType=String(offer.share_type||\"new_share\");const _surchargeEur=(()=>{if(_shareType!==\"second_hand_share\")return 0;const tk=token;const SURCHARGES={...window.__jetflySalesData?.rules?.secondHandSurcharge||{}};return SURCHARGES[tk]??0;})();const shareImmatComposite=api.lookupShareImmatComposite?api.lookupShareImmatComposite(offer.immat||\"\",fleet?.name||\"\"):\"\";const immatTail=String(offer.immat||\"\").trim().replace(/^.*\\b(LX-[A-Z0-9]+)\\b.*$/i,\"$1\");// Preview URL: p= + fleet= are primary (API data); first option params are hints only.\nconst _previewUrlForFleet=(()=>{try{const _pid=state.proposal?.id||p?.id;if(!_pid||!token)return undefined;const _u=new URL(\"https://jetfly.com/sales/template-pdf\");_u.searchParams.set(\"p\",_pid);_u.searchParams.set(\"fleet\",token);const _cName=[offerCust.first_name,offerCust.last_name].filter(Boolean).join(\" \")||offerCust.company_name||\"\";if(_cName)_u.searchParams.set(\"client\",_cName);if(offerMeta.date)_u.searchParams.set(\"date\",String(offerMeta.date));_u.searchParams.set(\"lang\",lang);// Hint params from primaryOffer — not the source of truth for multi-option\nif(offer.share)_u.searchParams.set(\"share\",String(offer.share));if(offer.hours)_u.searchParams.set(\"hours\",String(offer.hours));if(offer.contract)_u.searchParams.set(\"contract\",String(offer.contract));_u.searchParams.set(\"mode\",\"print-preview\");return _u.toString();}catch{return undefined;}})();// Per-offer monetary labels — computed for each option in the fleet\nconst _perOfferMonetary=allOffers.map(o=>{const _op=lookupPricing(fleet?.name||fleetId,o,_fleetPref);const _oacq=String(o.share_type||\"new_share\")===\"second_hand_share\"&&_parseMoney2(o.acquisition_cost)!=null?toMoney(_parseMoney2(o.acquisition_cost),\"USD\"):_op.acqCost;const _omgmt=_op.mgmtFee;const _ohourly=_op.hourlyRate;const _surchargeO=(()=>{if(String(o.share_type||\"new_share\")!==\"second_hand_share\")return 0;const SURCHARGES={...window.__jetflySalesData?.rules?.secondHandSurcharge||{}};return SURCHARGES[token]??0;})();const _obudget=computeBudgetMoney(_op._hourlyEur,_op._mgmtEur,Number(o.hours)||undefined,_surchargeO);return{acqLabel:fmtMoney(_oacq),mgmtLabel:_omgmt?`${fmtMoney(_omgmt)}/month`:\"\",hourlyLabel:_ohourly?`${fmtMoney(_ohourly)}/h`:\"\",budgetLabel:_obudget?`${fmtMoney(_obudget)}/year`:\"\"};});// Comma-joined labels for all options (used in proposal_pdf_url and Activity note)\nconst _allShareLabels=allOffers.map(o=>String(o.share||\"\").trim()).filter(Boolean);const _allHoursLabels=allOffers.map(o=>Number(o.hours)>0?`${Number(o.hours)}h`:\"\").filter(Boolean);const shareStr=_allShareLabels.join(\", \")||String(offer.share||\"\").trim();const hoursStr=_allHoursLabels.join(\", \")||(Number(offer.hours)>0?`${Number(offer.hours)}h`:\"\");const acqCostLabel=_perOfferMonetary.map(m=>m.acqLabel).filter(Boolean).join(\", \");const mgmtFeeLabel=_perOfferMonetary.map(m=>m.mgmtLabel).filter(Boolean).join(\", \");const annualBudgetLabel=_perOfferMonetary.map(m=>m.budgetLabel).filter(Boolean).join(\", \");// Activity note: all options with monetary labels\nconst allOffersNote=allOffers.map((o,i)=>{const mon=_perOfferMonetary[i];const parts=[String(o.share||\"\").trim(),Number(o.hours)>0?`${Number(o.hours)}h`:\"\"].filter(Boolean);return parts.join(\" \\xb7 \");}).filter(Boolean).join(\", \");if(_previewUrlForFleet){perFleetPreviewEntries.push({token,label:fleetLabel,url:_previewUrlForFleet,shareLabel:shareStr,hoursLabel:hoursStr,allOffersNote,acqCostLabel,mgmtFeeLabel,annualBudgetLabel});}const _sharePart=offer.share?` ${offer.share}`:\"\";const _aircraftPart=fleetLabel?` ${fleetLabel}`:\"\";const _hoursPart=Number(offer.hours)>0?` ${Number(offer.hours)}h`:\"\";const _namePart=personNameForTitle||offerCust.company_name||\"\";const dealTitle=_namePart?`${_namePart}${_sharePart}${_aircraftPart}${_hoursPart}`:`Fractional ownership${_sharePart}${_aircraftPart}${_hoursPart}`;const modeRaw=String(offer.mode||\"standard\").toLowerCase();const _fallbackDealId=asPersonId(offer.pipedrive_deal_id);const _fallbackPdDeal=_fallbackDealId?state.availableFractionalDeals?.find(d=>Number(d.id)===_fallbackDealId)??null:null;const _acqFallback=primaryAcqCost?.amount??(_fallbackPdDeal?.acquisition_cost>0?Number(_fallbackPdDeal.acquisition_cost):undefined);const _mgmtFallback=mgmtFee?.amount??(_fallbackPdDeal?.management_fee>0?Number(_fallbackPdDeal.management_fee):undefined);// Pipedrive deal fields use primaryOffer only — never send comma-lists to enum/numeric/monetary fields\nconst dealFields={title:dealTitle,aircraft_type:fleetLabel,share_size:offer.share||undefined,share_size_mode:modeRaw===\"long\"||modeRaw.includes(\"long\")?\"long\":\"standard\",share_immat:shareImmatComposite||immatTail||undefined,contract_duration:Number(offer.contract)||undefined,flight_hours:Number(offer.hours)||undefined,// Pipedrive: send raw numeric amounts, never formatted strings.\n// acqCost = USD (CMS-native); mgmtFee = EUR (CMS-native).\nmanagement_fee:_mgmtFallback,acquisition_cost:_acqFallback,value:_acqFallback??0,currency:primaryAcqCost?.currency??\"USD\",proposal_language:lang||\"en\",proposal_status:\"sent\",proposal_reference:undefined,proposal_sent_at:(()=>{const n=new Date;return String(n.getHours()).padStart(2,\"0\")+\":\"+String(n.getMinutes()).padStart(2,\"0\");})(),status:outcomeToPipedriveStatus(offer.outcome),share_type:String(offer.share_type||\"new_share\"),stage_id:stageMap[\"sent\"]||undefined};console.log(\"[Jetfly Sales] deal fields →\",{title:dealTitle,fleet:fleetLabel,token,share:offer.share,hours:offer.hours,contract:offer.contract,share_type:offer.share_type,acqCost:primaryAcqCost,mgmtFee,personId,cmsRowFound:!!_rawPricing.acqCost||!!_rawPricing.mgmtFee,missingFields:[!primaryAcqCost&&\"acqCost\",!mgmtFee&&\"mgmtFee\",!offer.hours&&\"hours\",!offer.share&&\"share\",!personId&&\"personId\"].filter(Boolean)});jetflyDebug(\"[Jetfly Sales] Pipedrive deal fields (primaryOffer)\",dealFields);/* Spec: PATCH /deals/{id} 404 unless already\n                           linked to a Jetfly proposal. Never match\n                           another open deal on the person. */let existingDealId=routeCreate?0:sharedNewDealId||boundDealId||asPersonId(offer.pipedrive_deal_id);let deal=null;const convertLeadId=Number(opts?.convertLeadId||0);if(convertLeadId>0&&api.convertLead){try{const conv=await api.convertLead(convertLeadId,{stage_id:contactMadeId,title:dealTitle,proposal_id:state.proposal.id});existingDealId=asPersonId(conv?.id)||asPersonId(conv?.deal_id)||asPersonId(conv?.data?.id)||asPersonId(conv?.data?.deal_id)||existingDealId;}catch(e){console.warn(\"[Jetfly Sales] convert lead failed — will POST /deals\",e);}}if(existingDealId){const{title:_noUpdate,...patchWithoutTitle}=dealFields;deal=await patchDeal(existingDealId,patchWithoutTitle);}else{const createBody={proposal_id:state.proposal.id,...dealFields};const sentStageId=stageMap[\"sent\"]||0;const stageIds=[sentStageId,contactMadeId,28,firstStageId,...salesStageIds].filter((id,i,arr)=>Number(id)>0&&arr.indexOf(id)===i);let lastErr=null;for(const sid of stageIds){try{createBody.stage_id=sid;deal=await api.createDeal(createBody);lastErr=null;break;}catch(e){lastErr=e;const stageErr=e?.status===422&&/stage/i.test(String(e?.message||\"\"));if(!stageErr)throw e;}}if(!deal&&lastErr)throw lastErr;const createdId=Number(deal?.id||0);if(createdId){dealFields.proposal_reference=\"#\"+createdId;try{deal=await patchDeal(createdId,dealFields);}catch(e){console.warn(\"[Jetfly Sales] PATCH after POST failed\",e);}}}const stampedId=Number(deal?.id||existingDealId||0);if(stampedId&&!sharedNewDealId){sharedNewDealId=stampedId;}if(stampedId){usedDealIds.add(stampedId);linkedIds.push(stampedId);const fleetPrefs=nextPrefs[fleetId]||{};const offersArr=Array.isArray(fleetPrefs.offers)?[...fleetPrefs.offers]:[];// Stamp pipedrive_deal_id on all offers for this fleet\nconst stamped=offersArr.length>0?offersArr.map(o=>({...o,pipedrive_deal_id:stampedId})):allOffers.map(o=>({...o,pipedrive_deal_id:stampedId}));nextPrefs[fleetId]={...fleetPrefs,...stamped[0],offers:stamped};}}// PATCH deal with combined proposal_pdf_url for all fleets\nconst finalDealId=linkedIds[0]||0;if(finalDealId&&perFleetPreviewEntries.length>0&&api?.updateDeal){try{const _todayLabel=new Date().toLocaleDateString(\"en-GB\",{day:\"numeric\",month:\"short\",year:\"numeric\"});const _newBlocks=perFleetPreviewEntries.map(e=>{const parts=[e.label,e.shareLabel,e.hoursLabel,_todayLabel].filter(Boolean);const moneyLines=[e.acqCostLabel?`Acquisition cost: ${e.acqCostLabel}`:\"\",e.mgmtFeeLabel?`Management fee: ${e.mgmtFeeLabel}`:\"\",e.annualBudgetLabel?`Estimated annual budget: ${e.annualBudgetLabel}`:\"\"].filter(Boolean).join(\"\\n\");return parts.join(\" \\xb7 \")+(moneyLines?\"\\n\"+moneyLines:\"\")+\"\\n\"+e.url;});const combinedPdfUrl=_newBlocks.join(\"\\n\\n\").trim();if(combinedPdfUrl){await api.updateDeal(finalDealId,{proposal_pdf_url:combinedPdfUrl});if(state.proposal){state.proposal={...state.proposal,pdf_url:perFleetPreviewEntries[0]?.url||combinedPdfUrl};}}}catch(e){console.warn(\"[Jetfly Sales] PATCH deal proposal_pdf_url failed\",e);}}const _newLinkedDealId=routeCreate&&linkedIds[0]?linkedIds[0]:null;const nextPayload={...p.payload,step3_aircraft:{...p.payload?.step3_aircraft||{},preferences:nextPrefs,..._newLinkedDealId?{linkedDealId:_newLinkedDealId,createNewDeal:false}:{}}};state.proposal={...state.proposal,payload:nextPayload,pipedrive_deal_id:linkedIds[0]||state.proposal.pipedrive_deal_id,pipedrive_person_id:personId||state.proposal.pipedrive_person_id};// Inject newly created deal into availableFractionalDeals so nav/sidebar update immediately\nif(routeCreate&&linkedIds.length>0){const _injId=linkedIds[0];if(!state.availableFractionalDeals.some(d=>Number(d.id)===_injId)){const _injEntry=perFleetPreviewEntries[0];const _injTitle=[personNameForTitle,_injEntry?.shareLabel,_injEntry?.label,_injEntry?.hoursLabel].filter(Boolean).join(\" \");state.availableFractionalDeals=[{id:_injId,title:_injTitle},...state.availableFractionalDeals];notify();}}/* Activity (DAT-1355): create or update a Pipedrive\n                       \"proposal\" activity linked to the deal + person.\n                       activity_id stored on window state (session-scoped).\n                       Re-save patches the same activity. */// Create one activity per fleet proposal\nif(linkedIds.length>0&&api?.createActivity){const actDealId=linkedIds[0];for(const _entry of perFleetPreviewEntries){try{const actSubject=`Proposal — ${_entry.label}`;const _optionsLine=_entry.allOffersNote?`Options: ${_entry.allOffersNote}`:[_entry.shareLabel,_entry.hoursLabel].filter(Boolean).join(\" \\xb7 \");const _moneyLines=[_entry.acqCostLabel?`Acquisition cost: ${_entry.acqCostLabel}`:\"\",_entry.mgmtFeeLabel?`Management fee: ${_entry.mgmtFeeLabel}`:\"\",_entry.annualBudgetLabel?`Estimated annual budget: ${_entry.annualBudgetLabel}`:\"\"].filter(Boolean).join(\"\\n\");const actNote=`Proposal Sent — ${_entry.label}\n${_optionsLine}`+(_moneyLines?`\n${_moneyLines}`:\"\")+(_entry.url?`\nPreview: ${_entry.url}`:\"\");await api.createActivity({subject:actSubject,type:\"email\",deal_id:actDealId,person_id:personId,done:true,note:actNote});}catch(e){console.warn(\"[Jetfly Sales] activity create failed for\",_entry.label,e);}}}jetflyDebug(\"[Jetfly Sales] deals linked\",linkedIds);/* Mark proposal as \"sent\" locally so all step3 fields\n                       become read-only immediately (setField lock). Also\n                       stamps pipedriveLinkedAt for the OverviewSummary\n                       \"Updated HH:MM\" badge. Persist to localStorage so\n                       the read-only state survives a page reload. */if(linkedIds.length>0&&state.proposal){state.proposal={...state.proposal,status:\"sent\"};state.pipedriveLinkedAt=Date.now();}if(typeof localStorage!==\"undefined\"&&state.proposal){try{localStorage.setItem(localKey(state.proposal.id),serializeForLocal(state.proposal));}catch{}}/* Refresh deals list so the popup on Step 1/3 shows\n                       the updated date immediately after save/update. */if(personId){w?.[STORE_KEY]?.refreshDeals(personId);}/* New deals (B/C) stay in Contact Made (28).\n                       Existing deals (A) keep their current stage. */}catch(e){console.warn(\"[Jetfly Sales] POST /deals failed\",e);state.error=e?.message||\"Could not link the Pipedrive deal.\";state.saveState=\"error\";notify();}}state.saveState=\"saved\";state.lastSavedAt=Date.now();state.error=null;notify();return state.proposal;}catch(e){console.error(\"[Jetfly Sales] syncToApi failed\",e);state.saveState=\"error\";state.error=e?.message||\"API sync failed\";notify();return null;}})();syncInFlight=run;void run.finally(()=>{if(syncInFlight===run)syncInFlight=null;});return run;},/* Builds the preview URLs of the proposal (one per fleet) and stores\n           them on the deal. No server rendering any more: the PDF is produced\n           by the browser print flow of the template page (the Vercel renderer\n           was retired on 2026-10-08). Name kept for its callers. */async generateAndUploadPdf(){const w=typeof window!==\"undefined\"?window:null;const api=w?.__jetflyApi;const p=state.proposal;if(!p?.id)throw new Error(\"No proposal loaded\");const step3=p.payload?.step3_aircraft||{};const selected=Array.isArray(step3.selected)?step3.selected:[];const prefs=step3.preferences||{};const customer=p.payload?.step2_profile?.customer||{};const offerMeta2=p.payload?.step2_profile?.offer||{};const clientName=[String(customer.first_name||\"\").trim(),String(customer.last_name||\"\").trim()].filter(Boolean).join(\" \")||String(customer.company_name||\"\").trim();const canonKey3=s=>String(s||\"\").toLowerCase().replace(/[^a-z0-9]/g,\"\");const fleetTok3=raw=>{const s=String(raw||\"\").trim();const cms=/^cms-?(\\d+)$/i.exec(s);if(cms){if(cms[1]===\"0\")return\"pc12\";if(cms[1]===\"1\")return\"pc24\";if(cms[1]===\"2\")return\"cirrus\";}const k=canonKey3(s);if(k.includes(\"pc12\"))return\"pc12\";if(k.includes(\"pc24\"))return\"pc24\";if(k.includes(\"cirrus\")||k.includes(\"sf50\"))return\"cirrus\";return k;};const fleetLabelMap={pc12:\"PC-12\",pc24:\"PC-24\",cirrus:\"Cirrus SF50\"};const todayLabel=new Date().toLocaleDateString(\"en-GB\",{day:\"numeric\",month:\"short\",year:\"numeric\"});const entries=[];for(const fleetId of selected){const tok=fleetTok3(fleetId);if(!tok)continue;const pref=prefs[fleetId]||{};// URL hint: primary offer (offers[0]) — not the source of truth for multi-option\nconst primaryOffer2=Array.isArray(pref.offers)&&pref.offers[0]||pref;// Label text: all options comma-joined for the proposal_pdf_url block\nconst allOffers2=Array.isArray(pref.offers)&&pref.offers.length?pref.offers:[pref];const allShareLabels2=allOffers2.map(o=>String(o.share||\"\").trim()).filter(Boolean);const allHoursLabels2=allOffers2.map(o=>Number(o.hours)>0?`${Number(o.hours)}h`:\"\").filter(Boolean);try{const u=new URL(\"https://jetfly.com/sales/template-pdf\");u.searchParams.set(\"p\",p.id);u.searchParams.set(\"fleet\",tok);if(clientName)u.searchParams.set(\"client\",clientName);if(offerMeta2.date)u.searchParams.set(\"date\",String(offerMeta2.date));const _langVal2=String(offerMeta2?.proposal_language||\"en\").slice(0,2).toLowerCase();u.searchParams.set(\"lang\",_langVal2);// Hint params from primaryOffer only\nif(primaryOffer2.share)u.searchParams.set(\"share\",String(primaryOffer2.share));if(primaryOffer2.hours)u.searchParams.set(\"hours\",String(primaryOffer2.hours));if(primaryOffer2.contract)u.searchParams.set(\"contract\",String(primaryOffer2.contract));u.searchParams.set(\"mode\",\"print-preview\");entries.push({label:fleetLabelMap[tok]||tok,url:u.toString(),shareLabel:allShareLabels2.join(\", \")||String(primaryOffer2.share||\"\").trim(),hoursLabel:allHoursLabels2.join(\", \")||(Number(primaryOffer2.hours)>0?`${Number(primaryOffer2.hours)}h`:\"\")});}catch{}}if(entries.length===0)throw new Error(\"No fleet selected\");const blocks=entries.map(e=>{const parts=[e.label,e.shareLabel,e.hoursLabel,todayLabel].filter(Boolean);return parts.join(\" \\xb7 \")+\"\\n\"+e.url;});const combinedPdfUrl=blocks.join(\"\\n\\n\").trim();if(state.proposal){state.proposal={...state.proposal,pdf_url:entries[0].url};if(typeof localStorage!==\"undefined\"){try{localStorage.setItem(localKey(state.proposal.id),serializeForLocal(state.proposal));}catch{}}}const dealId2=Number(state.proposal?.pipedrive_deal_id||0);if(dealId2&&api?.updateDeal){void api.updateDeal(dealId2,{proposal_pdf_url:combinedPdfUrl}).catch(e=>console.warn(\"[Jetfly Sales] PATCH deal pdf_url failed\",e));}notify();return combinedPdfUrl;},async signOut(redirectTo){setManualLogout(true);state.sessionUserId=null;state.identityHydrated=false;state.theme={...state.theme,userName:\"\",userEmail:\"\",avatarUrl:\"\",role:DEFAULT_THEME.role};state.proposal=null;notify();/* MSAL logout: since we've migrated to Microsoft Entra,\n               logoutRedirect() will navigate the browser away to\n               https://login.microsoftonline.com/.../logout, then bounce\n               back to postLogoutRedirectUri = /sales/login. So we do\n               NOT need a manual window.location.href after this. If\n               MSAL is not available (canvas, ad blocker), fall back\n               to the manual redirect. Maxime 2026-08-12. */const auth=typeof window!==\"undefined\"?window.__jetflyAuth:null;if(auth?.logout){try{jetflyDebug(\"[Jetfly SalesProvider] signOut → MSAL logoutRedirect\");await auth.logout();return;}catch(e){console.error(\"[Jetfly SalesProvider] __jetflyAuth.logout() threw\",e);}}if(typeof window!==\"undefined\"&&redirectTo){window.location.href=redirectTo;}else{console.warn(\"[Jetfly SalesProvider] signOut done but no redirectTo — user stays on the current URL\");}},async syncDealStatus(dealId,outcome){const id=Number(dealId);if(!id)return null;const w=typeof window!==\"undefined\"?window:null;const api=w?.__jetflyApi;if(!api?.updateDeal)return null;const status=outcomeToPipedriveStatus(outcome);try{jetflyDebug(\"[Jetfly Sales] PATCH /deals status\",{id,status});return await api.updateDeal(id,{status});}catch(e){console.warn(\"[Jetfly Sales] syncDealStatus failed\",e);return null;}},ingestPipedriveDeals,bootstrapFromPipedrive(opts){const customer=opts?.customer||{};const deals=Array.isArray(opts?.deals)?opts.deals:[];const id=typeof crypto!==\"undefined\"&&\"randomUUID\"in crypto?crypto.randomUUID():Math.random().toString(36).slice(2)+Date.now().toString(36);const personId=Number(customer.id)||0;const first=String(customer.first_name||\"\").trim();const last=String(customer.last_name||\"\").trim();const full=String(customer.full_name||\"\").trim();const parts=full.split(/\\s+/).filter(Boolean);/* Pre-fill offer date + language from the focused Pipedrive deal\n               so that the step-2 form is not blank when the rep opens an\n               existing deal from the search popup. */const focusDeal=deals.find(d=>Number(d.id)===Number(opts?.focusDealId||0))||(deals.length===1?deals[0]:null);const seedOfferDate=String(focusDeal?.close_time||focusDeal?.expected_close_date||\"\");const seedOfferLang=String(focusDeal?.proposal_language||\"\");const seedProposalName=String(focusDeal?.title||\"\");const seeded=newProposal(id);seeded.status=\"sent\";seeded.current_step=3;seeded.pipedrive_person_id=personId||null;seeded.customer_id=personId?String(personId):undefined;seeded.payload={...seeded.payload,step1_customer:{mode:\"existing\",customerId:customer.id},step2_profile:{customer:{first_name:first||parts[0]||\"\",last_name:last||parts.slice(1).join(\" \")||\"\",email:customer.email||\"\",company_name:customer.company||customer.company_name||\"\",phone_number:customer.phone||customer.phone_number||\"\"},offer:{date:seedOfferDate,proposal_language:seedOfferLang,...seedProposalName?{proposal_name:seedProposalName}:{}}}};state.proposal=seeded;hasUserEdit=true;// Stamp pipedrive_deal_id BEFORE ingest so ingestPipedriveDeals'\n// \"creation-mode guard\" (skip when !pipedrive_deal_id) does not\n// block this seed-from-focused-deal path.\nconst focus=Number(opts?.focusDealId||0);if(focus&&state.proposal){state.proposal={...state.proposal,pipedrive_deal_id:focus};}ingestPipedriveDeals(deals);if(typeof localStorage!==\"undefined\"&&state.proposal){try{localStorage.setItem(localKey(state.proposal.id),serializeForLocal(state.proposal));}catch{}}notify();return state.proposal?.id;},wipeDrafts(){const n=wipeAllLocalDrafts();state.proposal=null;state.isPersisted=false;hasUserEdit=false;notify();return n;},flush};w[STORE_KEY]=api;return api;}// Bootstrap the store at module load so window.__jetflySales is populated\n// (with cached identity) before any Sidebar/Header render runs. The store is\n// idempotent; SalesProvider will still call configure() once props are known.\nif(typeof window!==\"undefined\"){getOrCreateStore();}// ── Sales data: Pricing, Share Immat, Users ─────────────────────────────────\n// These collections are on no page of the site any more: Framer publishes\n// every collection a page uses as public files (prices and emails leaked,\n// Maxime 2026-10-15). The tool gets them from the Sales API, signed in, and\n// draws them here as the hidden list the scrapers of this file already read\n// (same layer names as the old CMS lists). Inside the PDF preview the data\n// comes from the parent page, in a new tab from the page that opened it, and\n// on the server render it is injected by render-pdf.\nconst JF_DATA_URL=\"https://jetfly-salestool.vercel.app/api/admin-save?salesData=1\";const JF_PRICING_LAYERS=[\"Label\",\"Fleet Name\",\"Share Size\",\"Flight Hours\",\"Management Fee EUR Month\",\"Notes\",\"Contract Class\",\"Mini Invoiced Hours\",\"Deposit Hours\",\"Deposit Amount EUR\",\"Acquisition Cost USD\",\"Effective Year\",\"Contract Type\",\"Flight Hours LR\",\"Hourly Rate\",\"Same Day Return\",\"ETS\",\"Fuel Index\",\"Hours Min\",\"Hours Max\",\"Hours Min LR\"];const JF_IMMAT_LAYERS=[\"Immat\",\"Fleet Name\",\"AircraftSN\",\"ManufactureYear\",\"EndDate\",\"Notes\"];const JF_FEED_DEFS={pricing:{list:\"Pricings\",source:\"pricing\",layers:JF_PRICING_LAYERS},pricingAll:{list:\"Pricings\",source:\"pricing\",layers:[...JF_PRICING_LAYERS,\"Active\"]},immat:{list:\"Immat\",source:\"shareImmat\",layers:JF_IMMAT_LAYERS},immatAll:{list:\"Immat\",source:\"shareImmat\",layers:[...JF_IMMAT_LAYERS,\"Active\"]},users:{list:\"Sales Users Feed\",source:\"users\",layers:[\"Name\",\"Email\",\"Is Admin\"]},usersAll:{list:\"Admin Users Feed\",source:\"users\",layers:[\"Name\",\"Email\",\"Is Admin\",\"Active\"]}};function jfSalesWindows(){const out=[window];try{if(window.parent&&window.parent!==window)out.push(window.parent);}catch{}try{if(window.opener)out.push(window.opener);}catch{}return out;}function jfSalesDataNow(all){const key=all?\"__jetflySalesDataAll\":\"__jetflySalesData\";for(const w of jfSalesWindows()){try{if(w[key])return w[key];}catch{}}return null;}function jfLoadSalesData(all){const w=window;const key=all?\"__jetflySalesDataAll\":\"__jetflySalesData\";const now=jfSalesDataNow(all);if(now)return Promise.resolve(w[key]=now);if(w[key+\"P\"])return w[key+\"P\"];w[key+\"P\"]=(async()=>{// Waits for a signed-in session (the login page loads before it).\nfor(let i=0;i<900;i++){const ready=jfSalesDataNow(all);if(ready)return w[key]=ready;let auth=null;for(const o of jfSalesWindows()){try{if(o.__jetflyAuth?.getAccessToken){auth=o.__jetflyAuth;break;}}catch{}}const token=auth?await Promise.resolve(auth.getAccessToken()).catch(()=>null):null;if(token){try{const r=await fetch(JF_DATA_URL+(all?\"&all=1\":\"\"),{headers:{Authorization:`Bearer ${token}`}});if(r.ok)return w[key]=await r.json();// Not a sales of the tool: empty lists (the login page refuses access).\nif(r.status===403)return w[key]={ok:false,denied:true,pricing:[],shareImmat:[],users:[]};}catch{}}await new Promise(res=>setTimeout(res,i<20?500:2e3));}return null;})();return w[key+\"P\"];}function jfFeedValue(def,kind,row,layer){const all=/All$/.test(kind);if(layer===\"Active\")return row.Active===true?\"Yes\":\"\";// Sales feed: the \"Is Admin\" layer is only there for an admin.\nif(layer===\"Is Admin\")return all?row[\"Is Admin\"]===true?\"Yes\":\"\":row[\"Is Admin\"]===true?\"\":null;const v=row[layer];if(v==null||v===\"\")return\"\";if(layer===\"EndDate\"){const d=new Date(String(v));return isNaN(d.getTime())?String(v):d.toLocaleDateString(\"en-US\",{month:\"short\",day:\"numeric\",year:\"numeric\",timeZone:\"UTC\"});}return String(v);}function JfSalesFeed({kind,ready}){const def=JF_FEED_DEFS[kind];const all=/All$/.test(kind);// \"ready\" lists only mount after hydration, so reading the loaded data\n// right away cannot differ from the server render.\nconst[data,setData]=useState(()=>ready&&typeof window!==\"undefined\"?jfSalesDataNow(all):null);useEffect(()=>{let on=true;jfLoadSalesData(all).then(d=>{if(on&&d)setData(d);});return()=>{on=false;};},[all]);const rows=data&&data[def.source]||[];return /*#__PURE__*/_jsx(\"div\",{\"data-framer-name\":def.list,children:rows.map((r,i)=>/*#__PURE__*/_jsx(\"div\",{\"data-framer-name\":\"Item\",children:def.layers.map(l=>{const v=jfFeedValue(def,kind,r,l);return v===null?null:/*#__PURE__*/_jsx(\"div\",{\"data-framer-name\":l,children:/*#__PURE__*/_jsx(\"p\",{children:v})},l);})},i))});}const JF_FEEDS={pricing:/*#__PURE__*/_jsx(JfSalesFeed,{kind:\"pricing\"}),pricingAll:/*#__PURE__*/_jsx(JfSalesFeed,{kind:\"pricingAll\"}),immat:/*#__PURE__*/_jsx(JfSalesFeed,{kind:\"immat\"}),immatAll:/*#__PURE__*/_jsx(JfSalesFeed,{kind:\"immatAll\"}),users:/*#__PURE__*/_jsx(JfSalesFeed,{kind:\"users\"}),usersAll:/*#__PURE__*/_jsx(JfSalesFeed,{kind:\"usersAll\"})};// Same lists once the data is loaded: a new slot value, so the scrapers of\n// this file run again on their current mount (a mount replaced in between,\n// e.g. behind the sign-in overlay, kept an observer on the old one).\nconst JF_FEEDS_READY={pricing:/*#__PURE__*/_jsx(JfSalesFeed,{kind:\"pricing\",ready:true}),pricingAll:/*#__PURE__*/_jsx(JfSalesFeed,{kind:\"pricingAll\",ready:true}),immat:/*#__PURE__*/_jsx(JfSalesFeed,{kind:\"immat\",ready:true}),immatAll:/*#__PURE__*/_jsx(JfSalesFeed,{kind:\"immatAll\",ready:true}),users:/*#__PURE__*/_jsx(JfSalesFeed,{kind:\"users\",ready:true}),usersAll:/*#__PURE__*/_jsx(JfSalesFeed,{kind:\"usersAll\",ready:true})};function jfUseSalesReady(slots){const kinds=Object.values(slots);const wantBase=kinds.some(k=>!/All$/.test(k));const wantAll=kinds.some(k=>/All$/.test(k));const[ready,setReady]=useState({base:false,all:false});useEffect(()=>{let on=true;if(wantBase)jfLoadSalesData(false).then(d=>{if(on&&d)setReady(r=>({...r,base:true}));});if(wantAll)jfLoadSalesData(true).then(d=>{if(on&&d)setReady(r=>({...r,all:true}));});return()=>{on=false;};},[wantBase,wantAll]);return ready;}// The CMS slots of this component, filled with the lists of the Sales API.\nfunction jfWithSalesFeeds(props,slots,ready){const out={...props};for(const[prop,kind]of Object.entries(slots)){// An unplugged slot comes as an empty array from Framer.\nconst v=out[prop];if(Array.isArray(v)?v.some(Boolean):!!v)continue;const isReady=/All$/.test(kind)?ready?.all:ready?.base;out[prop]=isReady?JF_FEEDS_READY[kind]:JF_FEEDS[kind];}return out;}export default function SalesProvider(props){const jfReady=jfUseSalesReady({\"salesAccessCMS\":\"users\"});// Admins and allowed emails straight from the data as well: the admin page\n// waits for this list (\"Checking access…\").\nuseEffect(()=>{if(!jfReady.base)return;const d=jfSalesDataNow(false);const users=d&&Array.isArray(d.users)?d.users:[];if(!users.length)return;const mail=u=>String(u?.Email||\"\").trim().toLowerCase();try{writeCachedAllowlist(users.map(mail).filter(Boolean));}catch{}publishAdminEmails(users.filter(u=>u?.[\"Is Admin\"]===true).map(mail).filter(Boolean));},[jfReady.base]);return /*#__PURE__*/_jsx(SalesProvider__Data,{...jfWithSalesFeeds(props,{\"salesAccessCMS\":\"users\"},jfReady)});}function SalesProvider__Data(props){const inited=useRef(false);const isCanvas=RenderTarget.current()===RenderTarget.canvas;const accessSlot=props.salesAccessCMS;const allowlistScrapeRef=useRef(null);// A request that never reached the API (offline, VPN, dropped connection):\n// a banner offers to reload the page. Fired by Sales/JetflyApi.\nconst[netError,setNetError]=useState(false);useEffect(()=>{if(isCanvas||typeof window===\"undefined\")return;// Never on the PDF template: the banner would be printed.\nif(/template-pdf/.test(window.location.pathname))return;const onNet=()=>setNetError(true);window.addEventListener(\"jetfly-network-error\",onNet);return()=>window.removeEventListener(\"jetfly-network-error\",onNet);},[isCanvas]);const netBanner=netError&&typeof document!==\"undefined\"?/*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(\"div\",{role:\"alert\",style:{position:\"fixed\",left:\"50%\",bottom:24,transform:\"translateX(-50%)\",zIndex:2147483646,display:\"flex\",alignItems:\"center\",gap:14,maxWidth:\"calc(100vw - 32px)\",padding:\"10px 10px 10px 18px\",borderRadius:14,background:\"#1A1A17\",boxShadow:\"0 14px 40px rgba(15,12,6,0.28)\",fontFamily:\"'Hanken Grotesk', sans-serif\",fontSize:14,lineHeight:\"20px\",color:\"#fff\",boxSizing:\"border-box\"},children:[/*#__PURE__*/_jsx(\"span\",{children:\"Network error. Check your connection, then reload the page.\"}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:()=>{try{window.location.reload();}catch{}},style:{flexShrink:0,height:36,padding:\"0 16px\",borderRadius:10,border:\"none\",background:\"#C4945A\",fontFamily:\"inherit\",fontSize:14,fontWeight:600,color:\"#fff\",cursor:\"pointer\"},children:\"Reload\"}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",\"aria-label\":\"Close\",onClick:()=>setNetError(false),style:{flexShrink:0,width:36,height:36,borderRadius:10,border:\"1px solid rgba(255,255,255,0.25)\",background:\"transparent\",fontFamily:\"inherit\",fontSize:16,lineHeight:\"16px\",color:\"#fff\",cursor:\"pointer\"},children:\"\\xd7\"})]}),document.body):null;const liveAllowlistRef=useRef([]);const msalEmailRef=useRef(\"\");const allowlistWaiters=useRef([]);const publishAllowlist=emails=>{if(!emails.length)return;liveAllowlistRef.current=emails;writeCachedAllowlist(emails);const waiters=allowlistWaiters.current;allowlistWaiters.current=[];for(const w of waiters)w(emails);const email=msalEmailRef.current;const loginPath=props.loginPath||\"/sales/login\";if(email&&emails.length>0&&!emails.includes(email)&&typeof window!==\"undefined\"&&window.location.pathname!==loginPath){try{sessionStorage.removeItem(\"jetflySalesAccess\");}catch{}try{localStorage.removeItem(\"jetflySalesAccess\");}catch{}try{sessionStorage.setItem(\"jetflySalesDenied\",email);}catch{}window.location.href=loginPath;}};const waitForAllowlist=ms=>{if(liveAllowlistRef.current.length)return Promise.resolve(liveAllowlistRef.current);const cached=readCachedAllowlist();if(cached.length)return Promise.resolve(cached);return new Promise(resolve=>{const t=window.setTimeout(()=>{resolve(liveAllowlistRef.current.length?liveAllowlistRef.current:readCachedAllowlist());},ms);allowlistWaiters.current.push(emails=>{window.clearTimeout(t);resolve(emails);});});};useEffect(()=>{if(!accessSlot)return;let mo=null;const parse=()=>{const emails=scrapeAllowlistEmails(allowlistScrapeRef.current);if(emails.length)publishAllowlist(emails);// Admin list from the same feed — only once the feed is filled, so an\n// empty list really means \"nobody is admin\".\nif(emails.length)publishAdminEmails(scrapeAdminEmails(allowlistScrapeRef.current));};parse();if(allowlistScrapeRef.current){mo=new MutationObserver(parse);mo.observe(allowlistScrapeRef.current,{childList:true,subtree:true,characterData:true});}const t=window.setTimeout(parse,400);return()=>{mo?.disconnect();window.clearTimeout(t);};},[accessSlot]);/* Hydrate-safe: first paint must match SSR. Never read\n       window / localStorage here — that produced React #418\n       (server returned null, client portaled an overlay).\n       proceed() in useEffect still gates after mount. */const initialGate=\"ok\";const[gate,setGate]=useState(initialGate);// Page shown only once the session is accepted: the head script of the\n// site keeps /sales/* pages hidden until this attribute is set.\nuseEffect(()=>{if(gate===\"ok\"&&typeof document!==\"undefined\")document.documentElement.setAttribute(\"data-jf-auth\",\"ok\");},[gate]);/* List-level fade — only elements tagged `data-sales-fade` (list\n       swaps, section toggles) animate. No page-level fade: causes too\n       much visual noise on nav + sidebar during route changes. */useEffect(()=>{if(typeof document===\"undefined\")return;const id=\"jetfly-sales-fade-styles\";if(document.getElementById(id))return;const style=document.createElement(\"style\");style.id=id;style.textContent=`\n            @keyframes jetflySectionFadeIn {\n                from { opacity: 0; transform: translateY(4px); }\n                to { opacity: 1; transform: translateY(0); }\n            }\n            [data-sales-fade] {\n                animation: jetflySectionFadeIn 240ms cubic-bezier(0.22, 1, 0.36, 1);\n            }\n            @media (prefers-reduced-motion: reduce) {\n                [data-sales-fade] { animation: none; }\n            }\n            /* Disable trackpad two-finger swipe → browser back/forward\n               on every /sales/* page. Sales reps kept losing wizard\n               progress by accidentally swiping horizontally\n               (Maxime 2026-08-17). */\n            html, body {\n                overscroll-behavior-x: none;\n                overscroll-behavior-y: auto;\n            }\n            /* Hide Framer editor toolbar on all Sales pages. */\n            #__framer-editorbar-container,\n            #__framer-editorbar-label {\n                display: none !important;\n            }\n        `;document.head.appendChild(style);},[]);/* Prefetch the neighbouring step routes on every page mount so\n       clicking Next / Back opens with a warm cache. Very cheap (one\n       <link rel=prefetch> per route, browser dedupes) and shaves the\n       chunk download off the critical path of every step transition. */useEffect(()=>{if(typeof document===\"undefined\")return;if(typeof window===\"undefined\")return;if(RenderTarget.current()===RenderTarget.canvas)return;/* Also skip inside the Framer canvas preview iframe (framercanvas.com):\n           routes like /sales/aircraft don't exist on that origin so the prefetch\n           <link> 404s and floods the console. Only prefetch on the live site. */if(/framercanvas\\.com$/i.test(window.location.hostname))return;const routesCsv=(props.stepRoutes||\"\").split(\",\").map(s=>s.trim()).filter(Boolean);/* Only prefetch pages that exist. The legacy step routes\n           (/sales/contact, /sales/aircraft, /sales/overview, /sales/release)\n           were removed, so each page load fired 4 requests ending in 404. */const LIVE_ROUTES=[\"/sales/search\",\"/sales/contacts\",\"/sales/deal\",\"/sales/deal-new\",\"/sales/proposal\",\"/sales/proposal-new\"];const routes=routesCsv.map(r=>r===\"/sales/prospects/create-profile\"?\"/sales/contacts\":r).filter(r=>LIVE_ROUTES.includes(r)&&r!==window.location.pathname);const proposalId=new URL(window.location.href).searchParams.get(\"p\")||\"\";for(const path of routes){try{const url=new URL(window.location.origin+path);if(proposalId)url.searchParams.set(\"p\",proposalId);const href=url.toString();if(document.querySelector(`link[rel=\"prefetch\"][href=\"${href}\"]`))continue;const link=document.createElement(\"link\");link.rel=\"prefetch\";link.href=href;link.as=\"document\";document.head.appendChild(link);}catch{}}},[props.stepRoutes]);useEffect(()=>{const store=getOrCreateStore();if(!store)return;const splitCsv=s=>(s||\"\").split(\",\").map(x=>x.trim()).filter(Boolean);store.configure({devUserId:props.devUserId,theme:{stepLabels:splitCsv(props.stepLabels),/* Rewrite legacy Step 2 route on the way in so that any\n                   SalesProvider canvas instance still carrying the old\n                   default lands on the current /sales/contacts page.\n                   Guardrail — safe to remove once every deployment has\n                   been rebuilt with the updated defaults. */stepRoutes:splitCsv(props.stepRoutes).map(r=>r===\"/sales/prospects/create-profile\"?\"/sales/contacts\":r),contactLabel:props.contactLabel,languageLabel:props.languageLabel},tokens:{bgPage:props.bgPage,bgCard:props.bgCard,bgInk:props.bgInk,borderSoft:props.borderSoft,inkPrimary:props.inkPrimary,inkSubtle:props.inkSubtle,inkMuted:props.inkMuted,copper500:props.copper500,copper600:props.copper600,copper700:props.copper700,sand200:props.sand200,sand300:props.sand300,redBrand:props.redBrand,success:props.success,titleFont:props.titleFont,bodyFont:props.bodyFont,eyebrowFont:props.eyebrowFont}});if(inited.current)return;inited.current=true;if(isCanvas){setGate(\"ok\");return;}const loginPath=props.loginPath||\"/sales/login\";const onLoginPage=typeof window!==\"undefined\"&&window.location.pathname===loginPath;const proceed=async()=>{// ---- Protected page (MSAL + allowlist) ----\n// Skip auth for Puppeteer server-side export on the dedicated render page ONLY.\n// Scope is strict: /sales/template-pdf + export=server.\n// Data comes from window.__jetflySalesExport (injected by Vercel).\n// Security is enforced at the Vercel endpoint via Bearer token.\nconst isServerExport=(()=>{try{const u=new URL(window.location.href);// also on the French locale route (/fr/sales/template-pdf)\nreturn/^(\\/fr)?\\/sales\\/template-pdf\\/?$/.test(u.pathname)&&u.searchParams.get(\"export\")===\"server\";}catch{return false;}})();if(props.requireAuth&&!onLoginPage&&!isServerExport){let signedIn=false;let msalEmail=\"\";try{const auth=window.__jetflyAuth;const acc=auth?.getAccount?await auth.getAccount():null;const identity=acc?.username||acc?.name||acc?.homeAccountId;msalEmail=String(acc?.username||\"\").trim().toLowerCase();msalEmailRef.current=msalEmail;if(identity){jetflyDebug(\"[Jetfly SalesProvider] MSAL session detected\",{identity});signedIn=true;}}catch(e){console.warn(\"[Jetfly SalesProvider] MSAL check failed\",e);}if(!signedIn){jetflyDebug(\"[Jetfly SalesProvider] no MSAL → redirect to\",loginPath);setGate(\"redirecting\");window.location.href=loginPath;return;}/* Allowlist check on every load. Cache is read first so a\n                   reload of an authorized session stays instant. Live CMS\n                   scrape (slot) runs in parallel with MSAL; we only wait\n                   briefly when the cache is empty. */try{if(msalEmail){let emails=liveAllowlistRef.current.length?liveAllowlistRef.current:readCachedAllowlist();if(!emails.length){emails=await waitForAllowlist(900);}if(emails.length>0&&!emails.includes(msalEmail)){console.warn(\"[Jetfly SalesProvider] email pas dans allowlist → login\",{msalEmail,listSize:emails.length});try{sessionStorage.removeItem(\"jetflySalesAccess\");}catch{}try{localStorage.removeItem(\"jetflySalesAccess\");}catch{}try{sessionStorage.setItem(\"jetflySalesDenied\",msalEmail);}catch{}setGate(\"redirecting\");window.location.href=loginPath;return;}if(emails.length>0){try{localStorage.setItem(\"jetflySalesAccess\",msalEmail);}catch{}try{sessionStorage.setItem(\"jetflySalesAccess\",msalEmail);}catch{}}}}catch(e){console.warn(\"[Jetfly SalesProvider] allowlist check failed\",e);}await store.hydrateFromSession();}startTransition(()=>setGate(\"ok\"));const resetFlag=new URLSearchParams(window.location.search).get(\"reset\");if(resetFlag===\"1\"||resetFlag===\"drafts\"){const n=store.wipeDrafts?.()??wipeAllLocalDrafts();console.warn(\"[Jetfly Sales] wiped local drafts\",{count:n});try{const api=window.__jetflyApi;if(api?.listProposals&&api?.deleteProposal){const res=await api.listProposals({owner:\"me\",status:\"draft\"});const rows=Array.isArray(res?.data)?res.data:[];for(const p of rows){if(!p?.id)continue;const st=String(p.status||\"draft\").toLowerCase();if(st!==\"draft\")continue;try{await api.deleteProposal(p.id);}catch(e){console.warn(\"[Jetfly Sales] delete draft failed\",p.id,e);}}console.warn(\"[Jetfly Sales] API drafts deleted\",{count:rows.length});}}catch(e){console.warn(\"[Jetfly Sales] API draft wipe failed\",e);}const url=new URL(window.location.href);url.searchParams.delete(\"reset\");url.searchParams.delete(\"p\");const home=splitCsv(props.stepRoutes)[0]||\"/sales\";url.pathname=home;window.location.replace(url.toString());return;}/* On the Step 1 search page (`stepRoutes[0]`), a\n               `?p=<proposalId>` in the URL is legacy state from a\n               previous step. The search page is not tied to any\n               proposal — strip it and skip load()/autoCreate so we\n               don't hydrate a stale proposal into the store. */const stepRoutes=splitCsv(props.stepRoutes);const searchPath=stepRoutes[0];const isSearchPage=searchPath&&window.location.pathname===searchPath;if(isSearchPage){const url=new URL(window.location.href);if(url.searchParams.has(\"p\")){url.searchParams.delete(\"p\");window.history.replaceState({},\"\",url.toString());}/* No load() on search page — CustomerCard's Add deal\n                   flow now mints a fresh proposal id + seeds\n                   localStorage under that new key, so nothing stale\n                   in state.proposal can leak into the target page. */return;}const params=new URLSearchParams(window.location.search);let id=params.get(\"p\")||\"\";const onReleasePage=window.location.pathname===\"/sales/release\"||window.location.pathname.endsWith(\"/release\");let minted=false;if(!id&&props.autoCreate&&!onLoginPage&&!onReleasePage){id=typeof crypto!==\"undefined\"&&\"randomUUID\"in crypto?String(crypto.randomUUID()):Math.random().toString(36).slice(2)+Date.now().toString(36);minted=true;const url=new URL(window.location.href);url.searchParams.set(\"p\",id);window.history.replaceState({},\"\",url.toString());}if(id)void store.load(id,{skipRemote:minted});};void proceed();},[props.devUserId,props.autoCreate,props.requireAuth,props.loginPath,props.stepLabels,props.stepRoutes,props.contactLabel,props.languageLabel,props.bgPage,props.bgCard,props.bgInk,props.borderSoft,props.inkPrimary,props.inkSubtle,props.inkMuted,props.copper500,props.copper600,props.copper700,props.sand200,props.sand300,props.redBrand,props.success,props.titleFont,props.bodyFont,props.eyebrowFont]);// ── REDIRECT LEGACY BUILDER PAGES ──────────────────────────────────────────\n// When not in proposal-builder mode, navigating to /sales/overview or\n// /sales/release directly must redirect to /sales/aircraft (DealsPage).\n// Legacy redirect from /sales/overview or /sales/release → removed per V1 spec.\n// These auto-redirects broke context when navigating between pages.\n/* Re-load when ?p= changes (resume a deal from the list without\n       a full remount). inited.current would otherwise skip load(). */useEffect(()=>{if(isCanvas)return;if(typeof window===\"undefined\")return;const store=getOrCreateStore();if(!store?.load)return;const readP=()=>{try{return new URLSearchParams(window.location.search).get(\"p\")||\"\";}catch{return\"\";}};const onSearchPage=()=>{const searchPath=String(props.stepRoutes||\"\").split(\",\").map(s=>s.trim()).filter(Boolean)[0];return!!searchPath&&window.location.pathname===searchPath;};const sync=()=>{if(onSearchPage())return;const id=readP();if(!id)return;if(store.state?.proposal?.id===id)return;if(store._loadingId===id)return;void store.load(id);};sync();window.addEventListener(\"popstate\",sync);const iv=window.setInterval(sync,1200);return()=>{window.removeEventListener(\"popstate\",sync);window.clearInterval(iv);};},[isCanvas,props.stepRoutes]);if(isCanvas){return /*#__PURE__*/_jsxs(\"div\",{style:{padding:12,background:\"#1A1A1A\",color:\"#C4945A\",borderRadius:8,fontFamily:\"ui-monospace, monospace\",fontSize:11,width:\"fit-content\"},children:[\"⚡ Sales Provider \\xb7 MSAL + API\",props.requireAuth?\" \\xb7 Auth required\":\"\"]});}if(gate!==\"ok\"&&typeof document!==\"undefined\"){const overlay=/*#__PURE__*/_jsx(\"div\",{style:{position:\"fixed\",top:0,left:0,right:0,bottom:0,width:\"100vw\",height:\"100vh\",background:props.bgPage||DEFAULT_TOKENS.bgPage,zIndex:2147483647}});return /*#__PURE__*/_jsxs(_Fragment,{children:[accessSlot?/*#__PURE__*/_jsx(\"div\",{ref:allowlistScrapeRef,\"data-jetfly-sales-users\":\"1\",\"aria-hidden\":true,style:{position:\"absolute\",width:1,height:1,overflow:\"hidden\",opacity:0,pointerEvents:\"none\",left:-9999,top:0},children:accessSlot}):null,/*#__PURE__*/createPortal(overlay,document.body)]});}return /*#__PURE__*/_jsxs(_Fragment,{children:[netBanner,accessSlot?/*#__PURE__*/_jsx(\"div\",{ref:allowlistScrapeRef,\"data-jetfly-sales-users\":\"1\",\"aria-hidden\":true,style:{position:\"absolute\",width:1,height:1,overflow:\"hidden\",opacity:0,pointerEvents:\"none\",left:-9999,top:0},children:accessSlot}):null]});}SalesProvider.displayName=\"Sales / Provider\";addPropertyControls(SalesProvider,{// Sales data (Pricing, Share Immat, Users) comes from the Sales API, never\n// from a CMS list on the page: such a list is published in clear.\ndevUserId:{type:ControlType.String,title:\"Dev user ID (fallback)\",defaultValue:\"00000000-0000-0000-0000-000000000001\",description:\"Fallback owner id when MSAL is not available (canvas).\"},autoCreate:{type:ControlType.Boolean,title:\"Auto-create\",defaultValue:true,description:\"Create proposal ID if URL ?p= is missing\"},requireAuth:{type:ControlType.Boolean,title:\"Require auth\",defaultValue:true,description:\"Redirect to login if no Microsoft session.\"},loginPath:{type:ControlType.String,title:\"Login path\",defaultValue:\"/sales/login\",description:\"Page to redirect to when no session (or after sign-out).\"},stepLabels:{type:ControlType.String,title:\"Step labels\",defaultValue:\"Search,Contact profile,Aircraft & routes,Overview,Offer release\",description:\"Comma-separated.\"},stepRoutes:{type:ControlType.String,title:\"Step routes\",defaultValue:\"/sales/search,/sales/contacts,/sales/aircraft,/sales/overview,/sales/release\",description:\"Comma-separated, same order as labels.\"},contactLabel:{type:ControlType.String,title:\"Contact label\",defaultValue:\"Contact Us\"},languageLabel:{type:ControlType.String,title:\"Language label\",defaultValue:\"EN\"},bgPage:{type:ControlType.Color,title:\"BG Page\",defaultValue:\"rgb(248, 245, 238)\"},bgCard:{type:ControlType.Color,title:\"BG Card\",defaultValue:\"rgb(255, 255, 255)\"},bgInk:{type:ControlType.Color,title:\"BG Ink\",defaultValue:\"rgb(26, 26, 23)\"},borderSoft:{type:ControlType.Color,title:\"Border\",defaultValue:\"rgb(239, 239, 235)\"},inkPrimary:{type:ControlType.Color,title:\"Ink\",defaultValue:\"rgb(26, 26, 23)\"},inkSubtle:{type:ControlType.Color,title:\"Ink subtle\",defaultValue:\"rgb(137, 129, 126)\"},inkMuted:{type:ControlType.Color,title:\"Ink muted\",defaultValue:\"rgb(122, 122, 114)\"},copper500:{type:ControlType.Color,title:\"Copper 500\",defaultValue:\"rgb(196, 148, 90)\"},copper600:{type:ControlType.Color,title:\"Copper 600\",defaultValue:\"rgb(173, 126, 71)\"},copper700:{type:ControlType.Color,title:\"Copper 700\",defaultValue:\"rgb(142, 102, 56)\"},sand200:{type:ControlType.Color,title:\"Sand 200\",defaultValue:\"rgb(243, 235, 219)\"},sand300:{type:ControlType.Color,title:\"Sand 300\",defaultValue:\"rgb(232, 220, 196)\"},redBrand:{type:ControlType.Color,title:\"Red Brand\",defaultValue:\"rgb(159, 42, 34)\"},success:{type:ControlType.Color,title:\"Success\",defaultValue:\"rgb(62, 155, 95)\"},titleFont:{type:ControlType.Font,title:\"Title font\",controls:\"extended\",defaultValue:{fontFamily:\"Begum Sans, 'Hanken Grotesk', sans-serif\",fontSize:36,variant:\"Medium\",lineHeight:\"1.08em\"}},bodyFont:{type:ControlType.Font,title:\"Body font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontFamily:\"Hanken Grotesk, sans-serif\",fontSize:14,variant:\"Regular\"}},eyebrowFont:{type:ControlType.Font,title:\"Eyebrow font\",controls:\"extended\",defaultFontType:\"sans-serif\",defaultValue:{fontFamily:\"Hanken Grotesk, sans-serif\",fontSize:11,variant:\"Semibold\"}}});\nexport const __FramerMetadata__ = {\"exports\":{\"SalesTokens\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"SalesProvider\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"SalesTheme\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SalesProvider.map"],"mappings":"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"}