PageSourceSearch

https://horizoncrm.ca/_assets/site.carte._slug-y8VI6WNx.js

js horizoncrm.ca collected 2026-10-02 01:20:45 UTC 18,703 bytes, 1 lines download raw bytes

1import{S as Q,o as ee,k as ne,A as re,r as u,j as e,X as oe,f0 as te,bL as se,s as A,l as X,ap as ie,da as le,g as ce,bs as W,az as de,bt as Y,dc as me}from"./vendor-QOkwwy6v.js";import{g as ue}from"./public_GET.schema-CdXj4oN-.js";import{I as G,B as D,Z as pe,S as g,a as he}from"./index-B5Va5PI-.js";import{u as xe,F as _e,a as C,b as I,d as S,c as T}from"./Form-BXZpHtyo.js";import{u as ye,a as je}from"./useDigitalMenuOrders-Dn9DsgGn.js";import{l as ge}from"./pure-DuGk2X12.js";import{E as ve,u as Ne,a as be,P as fe}from"./react-stripe.esm-DPNeQzwH.js";const Ce=ee({orderId:ne()}),Ie=async(_,p)=>{const c=Ce.parse(_),h=await fetch("/_api/digital-menu/orders/confirm-payment",{method:"POST",body:Q.stringify(c),...p,headers:{"Content-Type":"application/json",...p?.headers??{}}});if(!h.ok){const d=Q.parse(await h.text());throw new Error(d.error)}return Q.parse(await h.text())},Se=()=>re({mutationFn:Ie}),ze="_overlay_1p3sn_1",Be="_backdrop_1p3sn_9",Me="_sheet_1p3sn_16",Pe="_header_1p3sn_30",qe="_closeBtn_1p3sn_44",we="_content_1p3sn_52",ke="_cartList_1p3sn_60",Ee="_cartItem_1p3sn_66",Oe="_cartItemInfo_1p3sn_74",Re="_cartItemName_1p3sn_81",Ae="_cartItemPrice_1p3sn_86",Te="_quantityControl_1p3sn_91",Fe="_qtyBtn_1p3sn_97",Le="_qtySpan_1p3sn_110",De="_form_1p3sn_117",Ge="_sectionTitle_1p3sn_122",$e="_radioGroup_1p3sn_131",Ve="_radioGroupCol_1p3sn_136",He="_radioLabel_1p3sn_142",Ue="_radioSelected_1p3sn_159",Qe="_srOnly_1p3sn_165",We="_textarea_1p3sn_176",Je="_totals_1p3sn_196",Ze="_totalRow_1p3sn_206",Ke="_totalRowGrand_1p3sn_213",Xe="_submitBtn_1p3sn_224",Ye="_minOrderWarning_1p3sn_229",et="_paymentForm_1p3sn_237",tt="_paymentError_1p3sn_244",st="_paymentActions_1p3sn_252",a={overlay:ze,backdrop:Be,sheet:Me,header:Pe,closeBtn:qe,content:we,cartList:ke,cartItem:Ee,cartItemInfo:Oe,cartItemName:Re,cartItemPrice:Ae,quantityControl:Te,qtyBtn:Fe,qtySpan:Le,form:De,sectionTitle:Ge,radioGroup:$e,radioGroupCol:Ve,radioLabel:He,radioSelected:Ue,srOnly:Qe,textarea:We,totals:Je,totalRow:Ze,totalRowGrand:Ke,submitBtn:Xe,minOrderWarning:Ye,paymentForm:et,paymentError:tt,paymentActions:st},at=ee({customerName:A().min(1,"Nom requis"),customerPhone:A().optional().nullable(),customerEmail:A().email("Email invalide").optional().or(ie("")).nullable(),orderMode:X(["dine_in","takeaway","delivery"],{required_error:"Veuillez choisir un mode de retrait"}),paymentMethod:X(["online","onsite"],{required_error:"Veuillez choisir un moyen de paiement"}),tableNumber:A().optional().nullable(),deliveryAddress:A().optional().nullable(),notes:A().optional().nullable()});function nt({orderId:_,totalFormatted:p,onSuccess:c,onBack:h}){const d=Ne(),v=be(),{mutateAsync:q}=Se(),[x,l]=u.useState(null),[z,N]=u.useState(!1),w=async B=>{if(B.preventDefault(),!d||!v)return;N(!0),l(null);const{error:b}=await v.submit();if(b){l(b.message||"Une erreur est survenue"),N(!1);return}const{error:f,paymentIntent:M}=await d.confirmPayment({elements:v,redirect:"if_required"});if(f){l(f.message||"Erreur lors du paiement"),N(!1);return}if(M&&M.status==="succeeded")try{await q({orderId:_}),c()}catch(F){l(F.message||"Erreur lors de la confirmation du paiement"),N(!1)}else N(!1)};return e.jsxs("form",{onSubmit:w,className:a.paymentForm,children:[e.jsxs("h3",{style:{margin:"0 0 1rem 0"},children:["Paiement de ",p]}),e.jsx(fe,{}),x&&e.jsx("div",{className:a.paymentError,children:x}),e.jsxs("div",{className:a.paymentActions,children:[e.jsx(D,{type:"button",variant:"outline",onClick:h,disabled:z,children:"Retour"}),e.jsx(D,{type:"submit",variant:"primary",disabled:!d||z,children:z?"Traitement...":`Payer - ${p}`})]})]})}function rt({cart:_,setCart:p,orderSettings:c,companyId:h,onClose:d,onSuccess:v}){const[q,x]=u.useState("form"),[l,z]=u.useState(null),[N,w]=u.useState(null),[B,b]=u.useState(null),[f,M]=u.useState(null),{mutate:F,isPending:k}=ye(),{mutate:o,isPending:n}=je(),E=k||n,m=[];c.allowDineIn&&m.push({id:"dine_in",label:"Sur place"}),c.allowTakeaway&&m.push({id:"takeaway",label:"À emporter"}),c.allowDelivery&&m.push({id:"delivery",label:"Livraison"});const O=[];(c.paymentMode==="onsite_only"||c.paymentMode==="online_or_onsite")&&O.push({id:"onsite",label:"Paiement sur place"}),(c.paymentMode==="online_only"||c.paymentMode==="online_or_onsite")&&O.push({id:"online",label:"Paiement en ligne"});const i=xe({schema:at,defaultValues:{customerName:"",customerPhone:"",customerEmail:"",orderMode:m.length===1?m[0].id:void 0,paymentMethod:O.length===1&&O[0].id==="onsite"?"onsite":void 0,tableNumber:"",deliveryAddress:"",notes:""}}),$=Object.values(_),P=$.reduce((t,r)=>t+r.price*r.quantity,0),J=Number(c.taxRate)||0,V=P*(J/100),H=i.values.orderMode==="delivery"&&Number(c.deliveryFee)||0,U=P+V+H,R=Number(c.minimumOrderAmount)||0,Z=(t,r)=>{p(j=>{const L={...j},K=(L[t.id]?.quantity||0)+r;return K<=0?(delete L[t.id],Object.keys(L).length===0&&d()):L[t.id]={...t,quantity:K},L})},y=u.useMemo(()=>new Intl.NumberFormat("fr-FR",{style:"currency",currency:"EUR"}),[]),ae=t=>{if(P<R){alert(`Le montant minimum de commande est de ${y.format(R)}`);return}if(t.orderMode==="delivery"&&!t.deliveryAddress){i.setFieldError("deliveryAddress","L'adresse de livraison est requise");return}F({companyId:h,orderMode:t.orderMode,paymentMethod:t.paymentMethod,customerName:t.customerName,customerPhone:t.customerPhone||null,customerEmail:t.customerEmail||null,deliveryAddress:t.deliveryAddress||null,tableNumber:t.tableNumber||null,notes:t.notes||null,items:$.map(r=>({menuItemId:r.id,quantity:r.quantity,notes:null}))},{onSuccess:r=>{t.paymentMethod==="online"?(w(r),z(r.order.id),o({orderId:r.order.id},{onSuccess:j=>{b(j.clientSecret),M(ge(pe,{stripeAccount:j.stripeConnectAccountId})),x("payment")},onError:j=>{alert(j.message)}})):v(r)},onError:r=>{alert(r.message)}})};return e.jsxs("div",{className:a.overlay,children:[e.jsx("div",{className:a.backdrop,onClick:d}),e.jsxs("div",{className:a.sheet,children:[e.jsxs("div",{className:a.header,children:[e.jsx("h2",{children:"Votre Commande"}),e.jsx("button",{className:a.closeBtn,onClick:d,children:e.jsx(oe,{size:24})})]}),e.jsxs("div",{className:a.content,children:[q==="form"&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:a.cartList,children:$.map(t=>e.jsxs("div",{className:a.cartItem,children:[e.jsxs("div",{className:a.cartItemInfo,children:[e.jsx("span",{className:a.cartItemName,children:t.name}),e.jsx("span",{className:a.cartItemPrice,children:y.format(t.price*t.quantity)})]}),e.jsxs("div",{className:a.quantityControl,children:[e.jsx("button",{type:"button",className:a.qt
1yBtn,onClick:()=>Z(t,-1),children:e.jsx(te,{size:16})}),e.jsx("span",{className:a.qtySpan,children:t.quantity}),e.jsx("button",{type:"button",className:a.qtyBtn,onClick:()=>Z(t,1),children:e.jsx(se,{size:16})})]})]},t.id))}),e.jsx(_e,{...i,children:e.jsxs("form",{onSubmit:i.handleSubmit(ae),className:a.form,children:[e.jsxs(C,{name:"orderMode",children:[e.jsx(I,{children:"Mode de retrait"}),e.jsx("div",{className:a.radioGroup,children:m.map(t=>e.jsxs("label",{className:`${a.radioLabel} ${i.values.orderMode===t.id?a.radioSelected:""}`,children:[e.jsx("input",{type:"radio",name:"orderMode",value:t.id,checked:i.values.orderMode===t.id,onChange:r=>i.setValues(j=>({...j,orderMode:r.target.value})),className:a.srOnly}),t.label]},t.id))}),e.jsx(S,{})]}),i.values.orderMode==="dine_in"&&e.jsxs(C,{name:"tableNumber",children:[e.jsx(I,{children:"Numéro de table (optionnel)"}),e.jsx(T,{children:e.jsx(G,{placeholder:"Ex: 12",value:i.values.tableNumber||"",onChange:t=>i.setValues(r=>({...r,tableNumber:t.target.value}))})}),e.jsx(S,{})]}),i.values.orderMode==="delivery"&&e.jsxs(C,{name:"deliveryAddress",children:[e.jsx(I,{children:"Adresse de livraison *"}),e.jsx(T,{children:e.jsx("textarea",{className:a.textarea,placeholder:"Votre adresse complète",value:i.values.deliveryAddress||"",onChange:t=>i.setValues(r=>({...r,deliveryAddress:t.target.value})),rows:3})}),e.jsx(S,{})]}),e.jsx("div",{className:a.sectionTitle,children:"Vos informations"}),e.jsxs(C,{name:"customerName",children:[e.jsx(I,{children:"Nom complet *"}),e.jsx(T,{children:e.jsx(G,{placeholder:"Jean Dupont",value:i.values.customerName,onChange:t=>i.setValues(r=>({...r,customerName:t.target.value}))})}),e.jsx(S,{})]}),e.jsxs(C,{name:"customerPhone",children:[e.jsx(I,{children:"Téléphone (optionnel)"}),e.jsx(T,{children:e.jsx(G,{type:"tel",placeholder:"06 12 34 56 78",value:i.values.customerPhone||"",onChange:t=>i.setValues(r=>({...r,customerPhone:t.target.value}))})}),e.jsx(S,{})]}),e.jsxs(C,{name:"customerEmail",children:[e.jsx(I,{children:"Email (optionnel)"}),e.jsx(T,{children:e.jsx(G,{type:"email",placeholder:"[email protected]",value:i.values.customerEmail||"",onChange:t=>i.setValues(r=>({...r,customerEmail:t.target.value}))})}),e.jsx(S,{})]}),e.jsxs(C,{name:"notes",children:[e.jsx(I,{children:"Notes pour la cuisine (optionnel)"}),e.jsx(T,{children:e.jsx("textarea",{className:a.textarea,placeholder:"Sans oignons, s'il vous plaît...",value:i.values.notes||"",onChange:t=>i.setValues(r=>({...r,notes:t.target.value})),rows:2})}),e.jsx(S,{})]}),e.jsxs(C,{name:"paymentMethod",children:[e.jsx(I,{children:"Moyen de paiement"}),e.jsx("div",{className:a.radioGroupCol,children:O.map(t=>e.jsxs("label",{className:`${a.radioLabel} ${i.values.paymentMethod===t.id?a.radioSelected:""}`,children:[e.jsx("input",{type:"radio",name:"paymentMethod",value:t.id,checked:i.values.paymentMethod===t.id,onChange:r=>i.setValues(j=>({...j,paymentMethod:r.target.value})),className:a.srOnly}),t.label]},t.id))}),e.jsx(S,{})]}),e.jsxs("div",{className:a.totals,children:[e.jsxs("div",{className:a.totalRow,children:[e.jsx("span",{children:"Sous-total"}),e.jsx("span",{children:y.format(P)})]}),V>0&&e.jsxs("div",{className:a.totalRow,children:[e.jsxs("span",{children:["TVA (",J,"%)"]}),e.jsx("span",{children:y.format(V)})]}),i.values.orderMode==="delivery"&&H>0&&e.jsxs("div",{className:a.totalRow,children:[e.jsx("span",{children:"Frais de livraison"}),e.jsx("span",{children:y.format(H)})]}),e.jsxs("div",{className:a.totalRowGrand,children:[e.jsx("span",{children:"Total"}),e.jsx("span",{children:y.format(U)})]})]}),P<R&&e.jsxs("div",{className:a.minOrderWarning,children:["Montant minimum: ",y.format(R),". Il manque ",y.format(R-P),"."]}),e.jsx(D,{type:"submit",variant:"primary",size:"lg",className:a.submitBtn,disabled:E||P<R,children:E?"Envoi en cours...":`Commander - ${y.format(U)}`})]})})]}),q==="payment"&&B&&f&&e.jsx(ve,{stripe:f,options:{clientSecret:B,appearance:{theme:"stripe"}},children:e.jsx(nt,{orderId:l,totalFormatted:y.format(U),onSuccess:()=>v(N),onBack:()=>x("form")})})]})]})]})}const ot="_pageContainer_17ezt_2",it="_header_17ezt_12",lt="_logo_17ezt_21",ct="_companyName_17ezt_28",dt="_stickyNav_17ezt_35",mt="_navChip_17ezt_54",ut="_content_17ezt_75",pt="_categorySection_17ezt_81",ht="_categoryHeader_17ezt_86",xt="_categoryTitle_17ezt_90",_t="_categoryDesc_17ezt_98",yt="_itemGrid_17ezt_104",jt="_itemCard_17ezt_117",gt="_itemCardUnavailable_17ezt_127",vt="_itemImageContainer_17ezt_132",Nt="_itemImage_17ezt_132",bt="_itemContent_17ezt_152",ft="_itemHeaderRow_17ezt_159",Ct="_itemTitle_17ezt_167",It="_featuredIcon_17ezt_177",St="_itemPrice_17ezt_182",zt="_itemDesc_17ezt_188",Bt="_allergensList_17ezt_196",Mt="_itemActions_17ezt_202",Pt="_quantityControl_17ezt_210",qt="_qtyBtn_17ezt_216",wt="_qtySpan_17ezt_229",kt="_allergenBadge_17ezt_236",Et="_skeletonHeader_17ezt_247",Ot="_skeletonCard_17ezt_255",Rt="_errorState_17ezt_262",At="_cartBar_17ezt_272",Tt="_cartBarContent_17ezt_285",Ft="_cartBarBadge_17ezt_305",Lt="_cartBarTitle_17ezt_318",Dt="_cartBarPrice_17ezt_323",Gt="_successScreen_17ezt_328",s={pageContainer:ot,header:it,logo:lt,companyName:ct,stickyNav:dt,navChip:mt,content:ut,categorySection:pt,categoryHeader:ht,categoryTitle:xt,categoryDesc:_t,itemGrid:yt,itemCard:jt,itemCardUnavailable:gt,itemImageContainer:vt,itemImage:Nt,itemContent:bt,itemHeaderRow:ft,itemTitle:Ct,featuredIcon:It,itemPrice:St,itemDesc:zt,allergensList:Bt,itemActions:Mt,quantityControl:Pt,qtyBtn:qt,qtySpan:wt,allergenBadge:kt,skeletonHeader:Et,skeletonCard:Ot,errorState:Rt,cartBar:At,cartBarContent:Tt,cartBarBadge:Ft,cartBarTitle:Lt,cartBarPrice:Dt,successScreen:Gt};function Kt(){const[_,p]=u.useState({}),[c,h]=u.useState(!1),[d,v]=u.useState(null),{slug:q}=le(),x=parseInt(q||"",10),{data:l,isLoading:z,isError:N,error:w}=ce({queryKey:["digital-menu","public",x],queryFn:()=>ue(x),enabled:!isNaN(x)}),B=u.useMemo(()=>new Intl.NumberFormat("fr-FR",{style:"currency",currency:"EUR"}),[]),b=(o,n)=>{p(E=>{const m={...E},i=(m[o.id]?.quantity||0)+n;return i<=0?delete m[o.id]:m[o.id]={id:o.id,name:o.name,price:Number(o.price),quantity:i},m})},f=Object.values(_),M=f.reduce((o,n)=>o+n.quantity,0),F=f.reduce((o,n)=>o+n.price*n.quantity,0);if(isNaN(x))return e.jsx("div",{className:s.pageContainer,children:e.jsxs("div",{className:s.errorState,children:[e.jsx(W,{size:48,className:"text-muted-foreground"}),e.jsx("h1",{className:"text-xl font-bold",children:"Lien Invalide"}),e.jsx("p",{className:"text-muted-foreground",children:"Le menu que vous essayez de consulter n'existe pas."})]})});if(z)return e.jsxs("div",{className:s.pageContainer,children:[e.jsxs("div",{className:s.skeletonHeader,children:[e.jsx(g,{style:{width:"80px",height:"80px",borderRadius:"50%"}}),e.jsx(g,{style:{width:"200px",height:"2rem"}})]}),e.jsxs("div",{className:s.stickyNav,children:[e.jsx(g,{style:{width:"80px",height:"32px",borderRadius:"16px"}}),e.jsx(g,{style:{width:"100px",height:"32px",borderRadius:"16px"}}),e.jsx(g,{style:{width:"90px",height:"32px",borderRadius:"16px"}})]}),e.jsx("div",{className:s.content,children:e.jsxs("div",{className:s.categorySection,children:[e.jsx(g,{style:{width:"150px",height:"24px",marginBottom:"16
1px"}}),e.jsx("div",{className:s.itemGrid,children:[1,2,3,4].map(o=>e.jsxs("div",{className:s.skeletonCard,children:[e.jsx(g,{style:{width:"100px",height:"100%",borderRadius:0}}),e.jsxs("div",{style:{padding:"12px",flexGrow:1,display:"flex",flexDirection:"column",gap:"8px"},children:[e.jsx(g,{style:{width:"70%",height:"16px"}}),e.jsx(g,{style:{width:"100%",height:"12px"}}),e.jsx(g,{style:{width:"50%",height:"12px"}})]})]},o))})]})})]});if(N||!l)return e.jsx("div",{className:s.pageContainer,children:e.jsxs("div",{className:s.errorState,children:[e.jsx(W,{size:48,className:"text-muted-foreground"}),e.jsx("h1",{className:"text-xl font-bold",children:"Menu Indisponible"}),e.jsx("p",{className:"text-muted-foreground",children:w instanceof Error?w.message:"Une erreur est survenue lors du chargement du menu."})]})});const k=l.categories.filter(o=>o.items.length>0);return e.jsxs("div",{className:s.pageContainer,children:[e.jsxs(de,{children:[e.jsxs("title",{children:["Menu - ",l.companyName," | Horizon CRM"]}),e.jsx("meta",{name:"description",content:`Découvrez le menu de ${l.companyName}`}),e.jsx("meta",{name:"theme-color",content:"#ffffff"})]}),e.jsxs("header",{className:s.header,children:[l.companyLogo?e.jsx("img",{src:l.companyLogo,alt:`Logo ${l.companyName}`,className:s.logo}):e.jsx("div",{style:{width:64,height:64,backgroundColor:"var(--muted)",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",marginBottom:16},children:e.jsx(W,{size:32,color:"var(--muted-foreground)"})}),e.jsx("h1",{className:s.companyName,children:l.companyName})]}),k.length>0&&e.jsx("nav",{className:s.stickyNav,children:k.map(o=>e.jsx("a",{href:`#category-${o.id}`,className:s.navChip,children:o.name},o.id))}),e.jsx("main",{className:s.content,children:d?e.jsxs("div",{className:s.successScreen,children:[e.jsx("div",{style:{width:64,height:64,backgroundColor:"var(--success)",borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",marginBottom:16},children:e.jsx(Y,{size:32,color:"var(--success-foreground)"})}),e.jsx("h2",{className:"text-xl font-bold",children:"Votre commande a été envoyée!"}),e.jsxs("p",{className:"text-muted-foreground",children:["Numéro de commande: ",e.jsx("strong",{children:d.order.orderNumber})]}),e.jsx(D,{onClick:()=>v(null),variant:"primary",style:{marginTop:16},children:"Retour au menu"})]}):k.length===0?e.jsxs("div",{className:s.errorState,children:[e.jsx(me,{size:48,className:"text-muted-foreground"}),e.jsx("h2",{className:"text-lg font-semibold",children:"Aucun article disponible"}),e.jsx("p",{className:"text-muted-foreground",children:"Ce menu ne contient actuellement aucun article."})]}):k.map(o=>e.jsxs("section",{id:`category-${o.id}`,className:s.categorySection,children:[e.jsxs("div",{className:s.categoryHeader,children:[e.jsx("h2",{className:s.categoryTitle,children:o.name}),o.description&&e.jsx("p",{className:s.categoryDesc,children:o.description})]}),e.jsx("div",{className:s.itemGrid,children:o.items.map(n=>e.jsxs("article",{className:`${s.itemCard} ${n.isAvailable?"":s.itemCardUnavailable}`,children:[n.photoUrl?e.jsx("div",{className:s.itemImageContainer,children:e.jsx("img",{src:n.photoUrl,alt:n.name,className:s.itemImage,loading:"lazy"})}):null,e.jsxs("div",{className:s.itemContent,children:[e.jsxs("div",{className:s.itemHeaderRow,children:[e.jsxs("h3",{className:s.itemTitle,children:[n.name,n.isFeatured&&n.isAvailable&&e.jsx(Y,{size:16,className:s.featuredIcon})]}),e.jsx("span",{className:s.itemPrice,children:B.format(Number(n.price))})]}),n.description&&e.jsx("p",{className:s.itemDesc,children:n.description}),e.jsxs("div",{className:s.itemActions,children:[e.jsxs("div",{className:s.allergensList,children:[!n.isAvailable&&e.jsx(he,{variant:"secondary",style:{marginRight:"auto"},children:"Indisponible"}),n.allergens&&n.allergens.length>0&&n.allergens.map((E,m)=>e.jsx("span",{className:s.allergenBadge,children:E},m))]}),l.orderSettings?.isOrderingEnabled&&n.isAvailable&&e.jsx("div",{className:s.quantityControl,children:_[n.id]?e.jsxs(e.Fragment,{children:[e.jsx("button",{className:s.qtyBtn,onClick:()=>b(n,-1),children:e.jsx(te,{size:16})}),e.jsx("span",{className:s.qtySpan,children:_[n.id].quantity}),e.jsx("button",{className:s.qtyBtn,onClick:()=>b(n,1),children:e.jsx(se,{size:16})})]}):e.jsx(D,{size:"sm",variant:"outline",onClick:()=>b(n,1),children:"Ajouter"})})]})]})]},n.id))})]},o.id))}),M>
10&&!c&&!d&&e.jsx("div",{className:s.cartBar,onClick:()=>h(!0),children:e.jsxs("div",{className:s.cartBarContent,children:[e.jsx("div",{className:s.cartBarBadge,children:M}),e.jsx("span",{className:s.cartBarTitle,children:"Voir la commande"}),e.jsx("span",{className:s.cartBarPrice,children:B.format(F)})]})}),c&&l.orderSettings&&e.jsx(rt,{cart:_,setCart:p,orderSettings:l.orderSettings,companyId:x,onClose:()=>h(!1),onSuccess:o=>{h(!1),p({}),v(o),window.scrollTo({top:0,behavior:"smooth"})}})]})}export{Kt as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.