{"version":3,"file":"index-C7aFBgAy.js","sources":["../../../app/javascript/src/explore/elements/EventDates/index.tsx","../../../app/assets/images/instructions/apple.png","../../../app/javascript/src/explore/elements/LiveClassDetails/elements/AddToCalendar/elements/Button/index.tsx","../../../app/javascript/src/explore/elements/LiveClassDetails/elements/AddToCalendar/elements/ICalendar/index.tsx","../../../app/javascript/src/explore/elements/LiveClassDetails/elements/AddToCalendar/elements/AppleCalendar/index.tsx","../../../app/assets/images/instructions/google.png","../../../app/javascript/src/explore/elements/LiveClassDetails/elements/AddToCalendar/elements/GoogleCalendar/index.tsx","../../../app/assets/images/instructions/office-365.png","../../../app/javascript/src/explore/elements/LiveClassDetails/elements/AddToCalendar/elements/Office365Calendar/index.tsx","../../../app/assets/images/instructions/outlook.png","../../../app/javascript/src/explore/elements/LiveClassDetails/elements/AddToCalendar/elements/OutlookCalendar/index.tsx","../../../app/assets/images/instructions/yahoo.png","../../../app/javascript/src/explore/elements/LiveClassDetails/elements/AddToCalendar/elements/YahooCalendar/index.tsx","../../../app/javascript/src/explore/elements/LiveClassDetails/elements/AddToCalendar/index.tsx","../../../app/javascript/src/explore/elements/LiveClassDetails/elements/Section/index.tsx","../../../app/javascript/src/explore/elements/LiveClassDetails/services/SumDate/index.ts","../../../app/javascript/src/explore/elements/LiveClassDetails/index.tsx","../../../app/javascript/src/explore/types/shoppe.ts","../../../app/javascript/src/explore/scenes/ProductInstructions/compositions/Live/elements/SectionHeader/index.tsx","../../../app/javascript/src/explore/scenes/ProductInstructions/compositions/Live/elements/SectionList/elements/Section/elements/Columns/index.tsx","../../../app/javascript/src/explore/scenes/ProductInstructions/compositions/Live/elements/SectionList/elements/Section/elements/Markdown/index.tsx","../../../app/javascript/src/explore/scenes/ProductInstructions/compositions/Live/elements/SectionList/elements/Section/elements/Body/index.tsx","../../../app/javascript/src/explore/scenes/ProductInstructions/compositions/Live/elements/SectionList/elements/Section/elements/Header/index.tsx","../../../app/javascript/src/explore/scenes/ProductInstructions/compositions/Live/elements/SectionList/elements/Section/index.tsx","../../../app/javascript/src/explore/scenes/ProductInstructions/compositions/Live/elements/SectionList/index.tsx","../../../app/javascript/src/explore/scenes/ProductInstructions/compositions/Live/elements/BeforeClass/elements/PrepTime/index.tsx","../../../app/javascript/src/explore/scenes/ProductInstructions/compositions/Live/elements/BeforeClass/index.tsx","../../../app/javascript/src/explore/services/MeetingPlatformMapper/index.ts","../../../app/javascript/src/explore/scenes/ProductInstructions/compositions/Live/elements/DuringClass/index.tsx","../../../app/javascript/src/explore/scenes/ProductInstructions/elements/Header/index.tsx","../../../app/javascript/src/explore/scenes/ProductInstructions/compositions/Live/elements/Menu/index.tsx","../../../app/javascript/src/explore/scenes/ProductInstructions/compositions/Live/elements/Tabs/index.tsx","../../../app/javascript/src/explore/scenes/ProductInstructions/compositions/Live/elements/TableOfContents/index.tsx","../../../app/assets/images/app-banner-mobile.jpg","../../../app/assets/images/app-banner-tablet.jpg","../../../app/assets/images/app-banner-desktop.jpg","../../../app/javascript/src/explore/scenes/ProductInstructions/elements/AppBanner/index.tsx","../../../app/javascript/src/explore/scenes/ProductInstructions/compositions/Live/index.tsx","../../../app/javascript/src/explore/scenes/ProductInstructions/compositions/Standard/elements/Menu/index.tsx","../../../app/javascript/src/explore/scenes/ProductInstructions/compositions/Standard/elements/MoreDetails/index.tsx","../../../app/javascript/src/explore/scenes/ProductInstructions/compositions/Standard/index.tsx","../../../app/javascript/src/explore/scenes/ProductInstructions/index.tsx"],"sourcesContent":["import * as React from 'react';\nimport cls from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faBoxOpen } from '@fortawesome/pro-regular-svg-icons';\nimport { faLaptop } from '@fortawesome/pro-solid-svg-icons';\nimport { format, utcToZonedTime } from 'date-fns-tz';\n\nimport styles from './index.module.sass';\n\ninterface Props {\n arrivesOn: string;\n className?: string;\n workshopAt: string;\n}\n\nexport const EventDates = ({ arrivesOn, className, workshopAt }: Props ) => (\n <div className={cls( 'd-flex border rounded pt-6 pb-7 fs-4 text-center', className )}>\n <div className=\"w-50 px-4 border-right\">\n <FontAwesomeIcon className=\"d-block mx-auto mb-1 fs-8\" icon={faBoxOpen} />\n <span>Kit arrives by</span>\n <strong className={`${styles.date} d-block mt-3 fs-5 spec__arrives-by`}>\n {format( utcToZonedTime( new Date( arrivesOn ), 'UTC' ), 'E M/d' )}\n </strong>\n </div>\n\n <div className=\"w-50 px-4\">\n <FontAwesomeIcon className=\"d-block mx-auto mb-1 fs-8\" icon={faLaptop} />\n <span>Event is on</span>\n <strong className={`${styles.date} d-block mt-3 fs-5 spec__event-on`}>\n <span className=\"d-block\">{format( new Date( workshopAt ), 'E M/d' )}</span>\n <span className=\"d-block mt-1\">\n {format( new Date( workshopAt ), 'h:mmaa z' )\n .replace( ':00', '' )\n .replace( /AM|PM/, ( str ) => str.toLowerCase())}\n </span>\n </strong>\n </div>\n </div>\n);\n","export default \"data:image/png;base64,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\"","import React from 'react';\n\nimport styles from './index.module.sass';\n\ninterface ButtonProps {\n children?: React.ReactNode;\n link: string;\n}\n\nexport const Button = ({ children, link }: ButtonProps ) => (\n <a\n className={`${styles.button} btn btn-outline-dark d-flex justify-content-center align-items-center mx-auto font-weight-bold`}\n href={link}\n target=\"_blank\"\n >\n {children}\n </a>\n);\n","import React from 'react';\n\nimport { Button } from '../Button';\n\ninterface ICalendarProps {\n children?: React.ReactNode;\n description?: string;\n end: string;\n location?: string;\n start: string;\n title: string;\n}\n\nexport const ICalendar = ({\n children, description, end, start, title,\n}: ICalendarProps ) => {\n const ics = encodeURI(\n `data:text/calendar;charset=utf8,${[\n 'BEGIN:VCALENDAR',\n 'VERSION:2.0',\n 'BEGIN:VEVENT',\n `URL:${document.URL}`,\n `DTSTART:${start}`,\n `DTEND:${end}`,\n `SUMMARY:${title}`,\n `DESCRIPTION:${description || ''}`,\n `LOCATION:${location || ''}`,\n 'END:VEVENT',\n 'END:VCALENDAR',\n ].join( '\\n' )}`,\n );\n\n return <Button link={ics}>{children}</Button>;\n};\n","import React from 'react';\n\nimport icon from 'images/instructions/apple.png';\nimport { LazyImgix } from 'src/explore/elements/LazyImgix';\n\nimport { ICalendar } from '../ICalendar';\n\ninterface AppleCalendarProps {\n description?: string;\n end: string;\n location?: string;\n start: string;\n title: string;\n}\n\nexport const AppleCalendar = ({ description, end, location, start, title }: AppleCalendarProps ) => (\n <ICalendar description={description} end={end} location={location} start={start} title={title}>\n <LazyImgix\n alt=\"Apple Calendar\"\n className=\"mr-2\"\n imgixParams={{ ar: '1:1' }}\n sizes=\"40px\"\n src={icon}\n />\n <span>Apple Calendar</span>\n </ICalendar>\n);\n","export default \"data:image/png;base64,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\"","import React from 'react';\n\nimport icon from 'images/instructions/google.png';\nimport { LazyImgix } from 'src/explore/elements/LazyImgix';\n\nimport { Button } from '../Button';\n\ninterface GoogleCalendarProps {\n description?: string;\n end: string;\n location?: string;\n start: string;\n title: string;\n}\n\nexport const GoogleCalendar = ({\n description,\n end,\n location,\n start,\n title,\n}: GoogleCalendarProps ) => {\n const link = encodeURI(\n [\n 'https://www.google.com/calendar/render',\n '?action=TEMPLATE',\n `&text=${title}`,\n `&dates=${start}`,\n `/${end}`,\n `&details=${description || ''}`,\n `&location=${location || ''}`,\n '&sprop=&sprop=name:',\n ].join( '' )\n );\n\n return (\n <Button link={link}>\n <LazyImgix\n alt=\"Google Calendar\"\n className=\"mr-2\"\n imgixParams={{ ar: '1:1' }}\n sizes=\"40px\"\n src={icon}\n />\n <span>Google Calendar</span>\n </Button>\n );\n};\n","export default \"data:image/png;base64,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\"","import React from 'react';\n\nimport icon from 'images/instructions/office-365.png';\nimport { LazyImgix } from 'src/explore/elements/LazyImgix';\n\nimport { Button } from '../Button';\n\ninterface Office365CalendarProps {\n description?: string;\n end: string;\n location?: string;\n start: string;\n title: string;\n}\n\nexport const Office365Calendar = ({\n description,\n end,\n location,\n start,\n title,\n}: Office365CalendarProps ) => {\n const link = encodeURI(\n [\n 'https://outlook.office.com/calendar/0/deeplink/compose',\n `?body=${description || ''}`,\n `&enddt=${end}`,\n `&location=${location || ''}`,\n '&path=%2Fcalendar%2Faction%2Fcompose',\n '&rru=addevent',\n `&startdt=${start}`,\n `&subject=${title}`,\n ].join( '' )\n );\n\n return (\n <Button link={link}>\n <LazyImgix\n alt=\"Office 365 Calendar\"\n className=\"mr-2\"\n imgixParams={{ ar: '1:1' }}\n sizes=\"40px\"\n src={icon}\n />\n <span>Office 365 Calendar</span>\n </Button>\n );\n};\n","export default \"data:image/png;base64,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\"","import React from 'react';\n\nimport icon from 'images/instructions/outlook.png';\nimport { LazyImgix } from 'src/explore/elements/LazyImgix';\n\nimport { ICalendar } from '../ICalendar';\n\ninterface OutlookCalendarProps {\n description?: string;\n end: string;\n location?: string;\n start: string;\n title: string;\n}\n\nexport const OutlookCalendar = ({\n description,\n end,\n location,\n start,\n title,\n}: OutlookCalendarProps ) => (\n <ICalendar description={description} end={end} location={location} start={start} title={title}>\n <LazyImgix\n alt=\"Outlook Calendar\"\n className=\"mr-2\"\n imgixParams={{ ar: '1:1' }}\n sizes=\"40px\"\n src={icon}\n />\n <span>Outlook Calendar</span>\n </ICalendar>\n);\n","export default \"data:image/png;base64,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\"","import React from 'react';\n\nimport icon from 'images/instructions/yahoo.png';\nimport { LazyImgix } from 'src/explore/elements/LazyImgix';\n\nimport { ICalendar } from '../ICalendar';\n\ninterface YahooCalendarProps {\n description?: string;\n end: string;\n location?: string;\n start: string;\n title: string;\n}\n\nexport const YahooCalendar = ({ description, end, location, start, title }: YahooCalendarProps ) => (\n <ICalendar description={description} end={end} location={location} start={start} title={title}>\n <LazyImgix\n alt=\"Yahoo Calendar\"\n className=\"mr-2\"\n imgixParams={{ ar: '1:1' }}\n sizes=\"40px\"\n src={icon}\n />\n <span>Yahoo Calendar</span>\n </ICalendar>\n);\n","import React, { useState } from 'react';\nimport { faCalendarCheck } from '@fortawesome/pro-regular-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport { Modal } from 'src/shoppe/elements/Modal';\n\nimport { AppleCalendar } from './elements/AppleCalendar';\nimport { GoogleCalendar } from './elements/GoogleCalendar';\nimport { Office365Calendar } from './elements/Office365Calendar';\nimport { OutlookCalendar } from './elements/OutlookCalendar';\nimport { YahooCalendar } from './elements/YahooCalendar';\n\nimport styles from './index.module.sass';\n\nconst icsDateString = ( date: Date ) => date.toISOString().replace( /-|:|\\.\\d+/g, '' );\n\ninterface AddToCalendarProps {\n description?: string;\n end: Date;\n location?: string;\n start: Date;\n title: string;\n}\n\nexport const AddToCalendar = ({ description, end, location, start, title }: AddToCalendarProps ) => {\n const [ open, setOpen ] = useState<boolean>( false );\n\n return (\n <>\n <button\n className={`${styles.button} btn btn-outline-secondary d-flex justify-content-center align-items-center py-2 px-6 font-weight-bold fs-md-4`}\n type=\"button\"\n onClick={() => setOpen(( open ) => !open )}\n >\n <FontAwesomeIcon icon={faCalendarCheck} className=\"mr-2 fs-8\" />\n Add to Calendar\n </button>\n\n <Modal\n closeBtn\n containerClass={`${styles.modal} w-100 pt-6`}\n open={open}\n onClick={() => setOpen( false )}\n >\n <h3 className=\"pb-6 px-6 border-bottom mx-n6 mb-8 fs-8 text-uppercase\">\n Add This Event to\n <br />\n Your Calendar\n </h3>\n <ul className=\"spec__add_to_calendar_links\">\n <li>\n <AppleCalendar\n description={description}\n end={icsDateString( end )}\n location={location}\n start={icsDateString( start )}\n title={title}\n />\n </li>\n <li className=\"mt-2\">\n <GoogleCalendar\n description={description}\n end={icsDateString( end )}\n location={location}\n start={icsDateString( start )}\n title={title}\n />\n </li>\n <li className=\"mt-2\">\n <Office365Calendar\n description={description}\n end={end.toISOString()}\n location={location}\n start={start.toISOString()}\n title={title}\n />\n </li>\n <li className=\"mt-2\">\n <OutlookCalendar\n description={description}\n end={icsDateString( end )}\n location={location}\n start={icsDateString( start )}\n title={title}\n />\n </li>\n <li className=\"mt-2\">\n <YahooCalendar\n description={description}\n end={icsDateString( end )}\n location={location}\n start={icsDateString( start )}\n title={title}\n />\n </li>\n </ul>\n </Modal>\n </>\n );\n};\n","import * as React from 'react';\nimport cls from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconLookup } from '@fortawesome/fontawesome-common-types';\n\nimport styles from './index.module.sass';\n\ninterface Props {\n body: string;\n className?: string;\n icon: IconLookup;\n title: string;\n}\n\nexport const Section: React.FC<Props> = ({ body, className, icon, title }) => (\n <div className={cls( 'd-flex', className )}>\n <FontAwesomeIcon className=\"mt-1 mr-4 fs-5\" fixedWidth icon={icon} />\n\n <div>\n <p className={`${styles.text} mb-0 fs-5 font-weight-bold`}>{title}</p>\n <p className={`${styles.text} mb-0 fs-5`}>{body}</p>\n </div>\n </div>\n);\n","const MILLISECONDS_IN_MINUTE = 60000;\nconst MILLISECONDS_IN_HOUR = 3600000;\n\nconst addDurationString = ( startTime: Date, durationString: string ): Date => {\n const durationInMilliseconds = ( durationString: string ): number => {\n const hourInput: string[] = durationString.match( /(\\S+)\\s*H\\S*/gi );\n const hourDuration: number = hourInput\n ? parseInt(\n hourInput[0].replace( /(\\S+)\\s*H\\S*/gi, ( _, value ) => value.split( ':' ).reduce(( total: number, additional: string, i: number ) => {\n if ( i === 0 ) {\n return total + parseInt( additional ) * MILLISECONDS_IN_HOUR;\n }\n return total + parseInt( additional ) * MILLISECONDS_IN_MINUTE;\n }, 0 )),\n )\n : 0;\n\n const minuteInput: string[] = durationString.match( /(\\S+)\\s*M\\S*/gi );\n const minuteDuration: number = minuteInput\n ? parseInt(\n minuteInput[0].replace( /(\\S+)\\s*M\\S*/gi, ( _, value ) => String( parseInt( value ) * MILLISECONDS_IN_MINUTE )),\n )\n : 0;\n\n return hourDuration + minuteDuration;\n };\n\n return new Date( startTime.getTime() + durationInMilliseconds( durationString ));\n};\n\nexport const SumDate = {\n addDurationString,\n};\n","import * as React from 'react';\n\nimport cls from 'classnames';\nimport { format } from 'date-fns-tz';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n faCalendarAlt,\n faClock,\n faHatChef,\n faGlobeStand,\n faPhoneLaptop,\n faMicrophoneStand,\n faUsersClass,\n} from '@fortawesome/pro-regular-svg-icons';\n\nimport { ILiveClass } from 'src/explore/types/shoppe';\nimport { useRoutes } from 'src/explore/hooks/useRoutes';\n\nimport { AddToCalendar } from './elements/AddToCalendar';\nimport { Section } from './elements/Section';\nimport { SumDate } from './services/SumDate';\n\nimport styles from './index.module.sass';\n\ninterface Props {\n className?: string;\n liveClass: ILiveClass;\n showCalendarWidget?: boolean;\n showLink?: boolean;\n showQuantityLimit?: boolean;\n}\n\nexport const LiveClassDetails = ({\n className,\n liveClass,\n showCalendarWidget,\n showLink,\n showQuantityLimit,\n}: Props ) => {\n const routes = useRoutes();\n\n const classDuration = liveClass.duration || '1 Hour';\n const eventStart = new Date( liveClass.workshopAt );\n const eventEnd = SumDate.addDurationString( eventStart, classDuration );\n const isNearEvent = eventStart.getTime() - Date.now() <= 172800000;\n\n return (\n <div\n className={cls(\n 'position-relative spec__class-details',\n {\n [styles.withLink]: showLink,\n [styles.nearEvent]: isNearEvent,\n },\n className\n )}\n >\n <h2 className={`${styles.headline} mb-6 fs-5 fs-sm-8 fs-lg-10 text-uppercase`}>\n Your Class Details\n </h2>\n\n <div className=\"row text-dark\">\n <div className={`${styles.detail} col-12 col-md pr-lg-8 mb-md-0`}>\n <div className=\"d-flex\">\n <FontAwesomeIcon className=\"mt-1 mr-4 fs-5\" fixedWidth icon={faCalendarAlt} />\n\n <div className=\"flex-grow-1\">\n <strong className={`${styles.time} d-block fs-8 fs-md-5 fs-lg-8`}>\n {format( eventStart, 'E M/d' )}\n </strong>\n <strong className={`${styles.time} d-block fs-8 fs-md-5 fs-lg-8`}>\n {format( eventStart, 'h:mmaa z' )\n .replace( ':00', '' )\n .replace( /AM|PM/, ( str ) => str.toLowerCase())}\n </strong>\n\n {showCalendarWidget && (\n <div className=\"d-print-none mt-4 mb-3 mb-md-0\">\n <AddToCalendar\n end={eventEnd}\n start={eventStart}\n title={liveClass.effectiveName}\n />\n </div>\n )}\n </div>\n </div>\n </div>\n\n <div className=\"col-12 col-md px-lg-8\">\n <Section\n className={styles.detail}\n body={classDuration}\n icon={faClock}\n title=\"Class Duration\"\n />\n <Section\n className={styles.detail}\n body={liveClass.hostedBy}\n icon={faHatChef}\n title=\"Hosted by\"\n />\n <Section\n body={liveClass.chefLocation}\n icon={faGlobeStand}\n title=\"Chef will be presenting from\"\n className={`${styles.detail} mb-md-0`}\n />\n </div>\n\n <div className=\"col-12 col-md pl-lg-8 position-static\">\n <div className={`${styles.detail} d-flex`}>\n <FontAwesomeIcon className=\"mt-1 mr-4 fs-5\" fixedWidth icon={faPhoneLaptop} />\n <p className={`${styles.text} mb-0 fs-5`}>\n <span className=\"font-weight-bold\">Join from</span>\n {' your computer, tablet or smartphone via Zoom'}\n </p>\n </div>\n\n <Section\n className={styles.detail}\n icon={faMicrophoneStand}\n title=\"Moderated by\"\n body={liveClass.moderatedBy}\n />\n\n {showQuantityLimit && (\n <div className=\"d-flex\">\n <FontAwesomeIcon className=\"mt-1 mr-4 fs-5\" fixedWidth icon={faUsersClass} />\n\n <div>\n <p className={`${styles.text} mb-0 fs-5 font-weight-bold`}>\n {`Up to ${liveClass.classLimit} people so hurry!`}\n </p>\n <p className={`${styles.text} m-0 fs-5`}>\n {'For Private groups or Corporate events reach out to our '}\n <a href={routes.corporate()}>Corporate Gifting Concierge</a>\n </p>\n </div>\n </div>\n )}\n\n {showLink && Date.now() < eventEnd.getTime() + 7200000 && (\n <div className={`${styles.meeting} mt-md-7 mx-auto mx-md-0 text-center`}>\n {isNearEvent ? (\n <>\n {liveClass.meetingUrl && (\n <a\n className=\"btn btn-secondary w-100 py-2 font-weight-bold\"\n href={liveClass.meetingUrl}\n target=\"_blank\"\n >\n {`Enter ${liveClass.meetingPlatform.replace( /_/g, ' ' ).capitalize()} Class`}\n </a>\n )}\n {liveClass.meetingId && (\n <p className=\"mt-2 fs-5\">\n {'Meeting ID: '}\n <strong>{liveClass.meetingId}</strong>\n </p>\n )}\n </>\n ) : (\n <em className={`${styles.upcoming} d-block mt-md-n1 text-dark font-italic`}>\n Please come back in 2 days before the class date to view the Zoom Class link\n </em>\n )}\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n","// The following declaration can't be moved to index.d.ts because we get a compmile error\ndeclare global {\n interface Window {\n jwplayer?: any;\n browserProductViewTrackData?: { product_id: number; version_number: number; search_id: number };\n }\n}\n\nexport type Maybe<T> = T | null;\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: string;\n /** An encoded date */\n Date: any;\n /** An encoded datetime */\n DateTime: any;\n /** Represents untyped JSON */\n JSON: any;\n};\n\nexport type IAccount = {\n // FIXME: camel case\n considered_new_user: boolean;\n display_name: string;\n email: string;\n first_name: string;\n full_name: string;\n hashed_id: string;\n hashedId?: string;\n last_name: string;\n eligible_credits_balance_in_cents: number;\n fod_eligible: boolean;\n reward_points: number;\n meta_store: {\n account_id: number;\n number_of_completed_orders: number;\n number_of_used_states: number;\n number_of_used_products: number;\n number_of_used_merchants: number;\n number_of_sent_gifts: number;\n number_of_sent_cities: number;\n used_state_counts: Array<[string, number]>;\n completed_shipments: IShipment[];\n };\n};\n\nexport type IAccountV2 = {\n loading?: boolean;\n consideredNewUser: boolean;\n displayName: string;\n email: string;\n firstName: string;\n fullName: string;\n hashedId: string;\n lastName: string;\n eligibleCreditsBalanceInCents: number;\n fodEligible: boolean;\n rewardPoints: number;\n metaStore: {\n accountId: number;\n numberOfCompletedOrders: number;\n numberOfUsedStates: number;\n numberOfUsedProducts: number;\n numberOfUsedMerchants: number;\n numberOfSentGifts: number;\n numberOfSentCities: number;\n usedStateCounts: Array<[string, number]>;\n completedShipments: IShipment[];\n };\n};\n\nexport type IAccountMeta = {\n identify_traits: {\n 'Goldbely Visitor Tracking Code': string;\n 'Goldbely Hashed Account Id': string;\n email_identity_id: string;\n first_name: string;\n last_name: string;\n md5_email: string;\n email: string;\n };\n ecommerce_properties: {\n cart_id: string;\n products: Array<IProduct>;\n };\n};\n\nexport type IAdmin = {\n id: number;\n name: string;\n};\n\nexport type IAdminToolsItem = {\n name: string;\n items: Array<{\n dataMethod?: string;\n name: string;\n link: string;\n rel?: string;\n }>;\n};\n\nexport type IAvailableOption = {\n addToCart: boolean;\n gbFormFieldLabel: string;\n gbFormFieldValue: number;\n hasPriceAdj: boolean;\n isDefault: boolean;\n priceAdjInCents: number;\n value: string;\n};\n\nexport type IIdealDeliveryCalendarSetting = {\n id?: number;\n banner?: string;\n body: string;\n bodyBelow?: string; // deprecated\n colorOne: string;\n colorTwo: string;\n endsOn?: string;\n headline: string;\n headlineColor?: string;\n datesHighlighted?: string;\n name?: string;\n preview?: boolean;\n startsOn?: string;\n showGift?: boolean;\n};\n\nexport type ISeoContentSection = {\n title: string;\n subtitle: string;\n body: string;\n};\n\nexport type IAvailableVariance = {\n availableOptions: IAvailableOption[];\n gbLabel: string;\n formField: string;\n hasHardcodedOption: boolean;\n delimiter: string;\n splitForDisplay: boolean;\n displayMode?: 'dropdown' | 'inline';\n};\n\nexport type ITVVideo = {\n id: number;\n active: boolean;\n clipMediaId?: string;\n duration?: string;\n landscapeMediaId: string;\n outroSeconds: number;\n merchantId?: number;\n metaDescription: Maybe<string>;\n metaKeywords: Maybe<string>;\n metaTitle: string;\n portraitClipPlayDuration?: number;\n portraitClipStartTime?: number;\n portraitMediaId?: string;\n preview: boolean;\n productId?: number;\n productCardShowInSeconds: number;\n slug: string;\n title: string;\n};\n\nexport type ITVVideoPlaylist = {\n id: number;\n description: string;\n heroImageUrl: string;\n metaDescription: Maybe<string>;\n metaKeywords: Maybe<string>;\n metaTitle: string;\n slug: string;\n title: string;\n videos: ITVVideo[];\n};\n\nexport type IWebCard = {\n id?: string;\n call_to_action?: string;\n className?: string;\n card_type?: string;\n content?: string;\n image_url?: string;\n mobile_image_url?: string;\n linkable_type?: 'collection' | 'category' | 'merchant';\n linkable_id?: string;\n linkable_subtype?: string;\n linked_entity?: {\n title?: string;\n permalink?: string;\n };\n path?: string;\n permalink?: string;\n styles?: { base?: { [key: string]: string }; title?: { [key: string]: string } };\n title: string;\n video_url?: string | null;\n};\n\nexport type IWebHomepage = {\n customer_reviews: any[];\n hero: any; // FIXME!\n hero_card: IWebCard;\n banner_cards: IWebCard[];\n hero_cards: IWebCard[];\n huge_cards: IWebCard[];\n short_cards: IWebCard[];\n instagram_posts: any[]; // FIXME!\n title: Maybe<string>;\n top_collections: any[]; // FIXME!\n video: any; // FIXME!\n new_hero_card: IWebCard;\n new_categories_cards: IWebCard[];\n new_huge_cards: IWebCard[];\n new_short_one_cards: IWebCard[];\n new_short_two_cards: IWebCard[];\n new_press_cards: IWebCard[];\n new_social_cards: IWebCard[];\n new_best_seller_cards: IWebCard[];\n};\n\nexport type IWebMediaAsset = {\n id: number;\n imageUrl?: string;\n imageAlt?: string;\n videoFullUrl?: string;\n videoPreviewImageUrl?: string;\n};\n\nexport type IMerchantReview = {\n id: string;\n bodyHtml: string;\n createdAt: string;\n customerName: string;\n location: string;\n};\n\nexport type IShipment = {\n from: IShipmentLocation;\n to: IShipmentLocation;\n carrier: string;\n distance: string;\n};\n\ntype IShipmentLocation = {\n latitude: number;\n longitude: number;\n city: string;\n};\n\nexport type IShipper = {\n city: string;\n state: string;\n};\n\nexport type IMerchant = {\n id: number;\n alternateShippingLocationNotice: boolean;\n customerRating?: number;\n defaultProductSorting?: string;\n displayRecommendedOnPdp?: boolean;\n foodMakerImageUrl?: string;\n isShippingIncluded: boolean;\n isSoldOut: boolean;\n location: string;\n loveScore?: number | null;\n mainImageUrl: string;\n marginInPercent: string;\n name: string;\n nps?: number | null;\n npsSampleSize?: number | null;\n permalink: string;\n publishedReviews: IMerchantReview[];\n profile?: string;\n shipper: IShipper;\n shortName?: string;\n showcaseVideo: {\n videoId: string | null;\n };\n starShipper: boolean;\n state: string;\n statePermalink: string;\n swappableProductOptions: boolean;\n tagline?: string;\n videoId: string | null;\n videoPartial: string | null;\n webMediaAsset?: {\n videoPreviewImageUrl?: string;\n videoPreviewUrl?: string;\n };\n whoElseLovesIt?: string;\n};\n\nexport type IBadge = {\n id: number;\n name:\n | 'gb_top_gifts'\n | 'gorgeous_box'\n | 'james_beard'\n | 'michelin_bib_gourmand'\n | 'michelin_star'\n | 'editor_pick';\n displayName?: string;\n};\n\nexport type IPromotionProductPromotion = {\n id: number;\n description: string;\n discountCode: string;\n discountInCents: number | null;\n discountInPercent: number;\n discountInPercentWithDecimal: string;\n expiresAt: Scalars['DateTime'];\n forFlashSale: boolean;\n startsAt: Scalars['DateTime'];\n};\n\nexport type IPromotionProduct = {\n id: number;\n afterPromotionProductPriceInCents: number;\n endsAt: Scalars['DateTime'];\n promotion: IPromotionProductPromotion;\n startsAt: Scalars['DateTime'];\n};\n\nexport type IProduct = {\n id: number;\n acceptsRequestedDeliveryDate: boolean;\n almostSoldOut: boolean;\n availableForPickUp: boolean;\n availableVariances: IAvailableVariance[];\n badges?: IBadge[];\n buyNowEnabled?: boolean;\n canAddToCart: boolean;\n customerInstructionProductUrl?: string;\n defaultQuantity?: number;\n delayed: boolean;\n descriptionHtml: string;\n discountedPriceInCents?: number;\n displayDiscountPricing?: boolean;\n displayPrice: number;\n displayServingLabel?: string;\n displayServingSize?: string;\n displayServingUnit?: string;\n earliestDeliveryDate?: string;\n editorPick?: boolean;\n effectiveMainImageUrl?: string;\n effectiveMainVideoUrl?: string;\n effectiveMetaDescription?: string;\n effectiveName: string;\n effectivePriceInCents: number;\n effectiveQuantityLabel: string;\n freeShipping: boolean;\n hasAvailableOptions?: boolean;\n hasGbTvVideo: boolean;\n hasMultipleSpeeds?: boolean;\n instructionVideoImageUrl?: string;\n instructionVideoUrl?: string;\n isEgiftable?: boolean;\n isEgiftCard?: boolean;\n isNew: boolean;\n isRecurringSubscription?: boolean;\n isSubscribable: boolean;\n liveClass?: ILiveClass;\n liveClassId?: number;\n mediaAssets: IWebMediaAsset[];\n merchant: IMerchant;\n moreDetailsHtml?: string;\n noPromotionsAllowed: boolean;\n numberOfShippingDays: number;\n permalink: string;\n priceInCents: number;\n priceSubheading?: string;\n productIngredientsHtml?: string;\n productType?: string;\n promotionProducts: IPromotionProduct[];\n publishedReviews?: IMerchantReview[];\n saleEndsAt?: string;\n shippingDetailsHtml?: string;\n showGbVideo?: boolean;\n sku: number;\n soldOutReason: string;\n tvVideo?: ITVVideo;\n useAndCareHtml?: string;\n videoId?: string;\n videoPartial?: string;\n};\n\nexport type ICartItem = {\n id?: number;\n customerChoices?: {\n [variant: string]: string;\n };\n dataForAnalytics?: any;\n possibleQuantities: Array<{\n label: string;\n value: number;\n }>;\n product: IProduct;\n productId: number;\n purchaseButtonText: string;\n purchaserEmail?: string;\n quantity: number;\n totalInCents?: number;\n};\n\nexport type GiftCardProduct = {\n description: string;\n id: number;\n priceInCents: number;\n soldOut?: boolean;\n data?: any;\n};\n\nexport type IMegaphone = {\n backgroundColor?: string;\n description?: Maybe<string>;\n expiresAt?: Maybe<string>;\n icon?: Maybe<string>;\n id: number;\n megaphoneType: 'status' | 'marketing';\n regexes: string[];\n textColor?: string;\n title?: Maybe<string>;\n};\n\nexport type INavItem = {\n children?: INavItem[] | null;\n external?: boolean;\n featuredImageUrl?: string;\n id: number;\n title: string;\n turbolinksDisabled?: boolean;\n url?: string;\n};\n\nexport type INextShippingOption = {\n deadlineAt: string;\n estimatedDeliveryOn: string;\n isGround: boolean;\n toShipOn: string;\n};\n\n/** All enums used by types */\nexport enum ILiveClassSectionType {\n Allergens = 'allergens',\n AfterClassNotes = 'after_class_notes',\n ClassInstructions = 'class_instructions',\n ClassPrep = 'class_prep',\n ItemsIncluded = 'items_included',\n ServingSize = 'serving_size',\n ThingsToBuy = 'things_to_buy',\n UnpackingInstructions = 'unpacking_instructions',\n}\n\nexport enum ILiveClassMeetingPlatform {\n Zoom = 'zoom',\n GoogleMeet = 'google_meet',\n}\n\n/** API Types */\nexport type ILiveClass = {\n id: Scalars['ID'];\n chefImageUrl: string;\n chefLocation: string;\n chefName: string;\n classLimit: number;\n deadlineAt: Scalars['Date'];\n duration: string;\n effectiveMainImageUrl?: string;\n effectiveName: string;\n foodArrivesOn: Scalars['Date'];\n hostedBy: string;\n isSoldOut: boolean;\n meetingId: string;\n meetingPlatform: ILiveClassMeetingPlatform;\n meetingUrl: string;\n merchant: IMerchant;\n moderatedBy: string;\n permalink: string;\n prepTime: Maybe<string>;\n product?: IProduct;\n welcomeMessage?: string;\n workshopAt: Scalars['DateTime'];\n // Associations\n sections: ILiveClassSection[];\n};\n\nexport type ILiveClassSection = {\n id: Scalars['ID'];\n body: string;\n sectionType: ILiveClassSectionType;\n};\n\nexport type IAppliedGiftCard = {\n code: string;\n appliedAmmountInCents: number;\n description: string;\n};\n\nexport type IDiscountCode = {\n action: 'add' | 'delete';\n code: string;\n type?: 'discount_code' | 'gift_card';\n};\n\nexport type IDiscountCodes = {\n promoCode: {\n code: string;\n value: number;\n };\n appliedGiftCards: IAppliedGiftCard[];\n};\n\nexport type ICartV2AggregatedTotals = {\n appliedAccountCreditsInCents: number;\n cartItemsSubtotalInCents: number;\n giftCardDiscountInCents: number;\n importShippingSurchargeSubtotalInCents?: number;\n promotionDiscountInCents: number;\n shippingSubtotalInCents: number;\n taxesTotalInCents: number;\n subtotalInCents: number;\n totalInCents: number;\n totalInPoints: number;\n};\n\nexport type StoredPaymentMethod = {\n id: number;\n cardType: string;\n lastFour: string;\n type?: string;\n};\n\nexport type PromoRedemption = {\n id?: number;\n action?: 'add' | 'delete';\n applicable?: boolean;\n discountInCents?: number;\n errors?: string[];\n priceInPoints?: number;\n promotionDescription?: string;\n rewardPromotionId?: number;\n promotionId?: number;\n};\n\nexport type PaymentMethodType =\n | 'card'\n | 'paypal'\n | 'apple_pay'\n | 'cashapp'\n | 'klarna'\n | 'google_pay'\n | 'stored_payment_method';\n\nexport type PaymentMethod = {\n type: PaymentMethodType;\n storedPaymentMethod?: StoredPaymentMethod;\n cvc?: string;\n};\n\nexport type ICartV2 = {\n accountHasBeenPotentiallyCompromised: boolean;\n aggregatedTotals: ICartV2AggregatedTotals;\n allowMultiRecipient: boolean;\n deliveryAddress: ICartDeliveryAddress;\n giftCards: ICartGiftCard[];\n discountCodes?: IDiscountCodes;\n discountCode?: IDiscountCode;\n giftMessage: ICartGiftMessage;\n purchaserAccount?: Purchaser;\n purchaserEmail: string;\n recipient: ICartRecipient;\n subcarts: ISubCart[];\n totalInCents?: number;\n stripePaymentIntentClientSecret?: string;\n paymentMethods?: StoredPaymentMethod[];\n promoRedemption?: PromoRedemption;\n};\n\nexport type SavedAddressesResponse = {\n data: ICartDeliveryAddress[];\n};\n\nexport type OrderMetaInformation = {\n message: string;\n severity: string;\n};\n\nexport type OrderMeta = {\n information: OrderMetaInformation[];\n};\n\nexport type OrderResponse = {\n data: ICartV2;\n meta: OrderMeta;\n};\n\nexport type ICart = {\n aggregatedTotals: {\n appliedAccountCreditsInCents?: number;\n cartItemsSubtotalInCents?: number;\n giftCardDiscountInCents?: number;\n importShippingSurchargeSubtotalInCents?: number;\n promotionDiscountInCents?: number;\n shippingSubtotalInCents?: number;\n subtotalInCents?: number;\n taxesTotalInCents?: number;\n totalInCents?: number;\n totalInPoints?: number;\n };\n delivery_address?: ICartDeliveryAddress;\n deliveryAddress?: ICartDeliveryAddress;\n giftCards: Array<{\n from: string;\n id: number;\n messageToRecipient: string;\n pictureUrl: string;\n recipientEmail: string;\n senderEmail: string;\n title: string;\n to: string;\n valueInCents: number;\n }>;\n cart?: {\n id: number;\n };\n number_of_items: number;\n numberOfItems: number;\n order_total_after_discounts_and_gift_card_before_shipping_in_cents?: number;\n orderTotalAfterDiscountsAndGiftCardBeforeShippingInCents?: number;\n purchased_egift?: IEGift;\n purchasedEgift?: IEGift;\n purchaserEmail?: string;\n purchaserFirstName?: string;\n purchaserLastName?: string;\n purchaserPhone?: string;\n recipient: {\n phone: string;\n };\n requires_billing_info: boolean;\n shippingSubtotalInCents: number;\n subcarts: ISubCart[];\n total_in_cents?: number;\n totalInCents?: number;\n};\n\nexport type ICartDeliveryAddress = {\n id?: number;\n default?: boolean;\n city?: string;\n company?: string;\n country?: 'US' | 'CA';\n email?: string; // TODO Remove this once api/v2/saved_addresses is updated\n emails?: string;\n firstName?: string;\n lastName?: string;\n phone?: string;\n postalCode?: string;\n state?: string;\n street1?: string;\n street2?: string;\n};\n\nexport type ICartGiftCard = {\n id: number;\n title: string;\n pictureUrl: string;\n to: string;\n recipientEmail: string;\n from: string;\n senderEmail: string;\n messageToRecipient: string;\n toSendEmailAt?: string;\n valueInCents: number;\n};\n\nexport type ICartGiftMessage = {\n body?: string;\n email?: string;\n enabled: boolean;\n from?: string;\n giftRecipientEmail?: string;\n};\n\nexport type ICartRecipient = {\n emails: string;\n phone: string;\n};\n\nexport type ISubCart = {\n id: number;\n earliestDeliveryDateAvailable?: string;\n preferredShippingOption?: any;\n productEffectiveName?: string;\n requestedDeliveryOn?: string;\n cartItems: Array<{\n id: number;\n orderId: number;\n name?: string;\n imageUrl?: string;\n quantity?: number;\n product: {\n id: number;\n isEgiftable: boolean;\n almostSoldOut: boolean;\n displayPrice: number;\n effectiveMainImageUrl: string;\n effectiveName: string;\n path: string;\n productType: string;\n };\n }>;\n merchants: Array<{\n id: number;\n name: string;\n path: string;\n }>;\n};\n\nexport type IEGiftCartItem = {\n // TODO: Is this really a cart item or a product?\n id: number;\n effectiveMainImageUrl: string;\n effectiveName: string;\n merchantName: string;\n merchantPath: string;\n productId: number;\n productPath: string;\n customerChoices?: {\n [key: string]: string;\n };\n};\n\nexport type IEGift = {\n egiftCartItems: IEGiftCartItem[];\n messageToRecipient: string;\n notifyOption: string;\n notifyAt: string;\n notifiedAt: string;\n purchaserEmail: string;\n purchaserName: string;\n recipientFirstName: string;\n recipientLastName: string;\n recipientEmail: string;\n};\n\nexport type IEGiftRedemption = {\n deliveryAddress: ICartDeliveryAddress;\n egiftBalanceInCents: number;\n receivedEgift: {\n id: number;\n recipientEmail: string;\n };\n recipient: {\n phone: string;\n };\n};\n\nexport type IDeliveryOption = {\n carrierLabel: string;\n deadlineAt: string;\n estimatedDeliveryDate: string;\n minPurchaseInCents: number;\n rateInCents: number;\n soldOut: boolean;\n};\n\nexport type IDeliveryOptionV2 = {\n carrierLabel: string;\n deadlineAt: string;\n estimatedDeliveryDate: string;\n freeShipping?: boolean;\n label?: string;\n minPurchaseInCents: number;\n rateInCents: number;\n soldOut: boolean;\n standardShipping: boolean;\n};\n\nexport type IDeliveryOptionWithSuborderID = {\n suborderId: number;\n deliveryOptions: IDeliveryOption[];\n};\n\nexport type IDeliveryOptions = {\n deliveryOptions: IDeliveryOption[];\n};\n\nexport type IDeliveryOptionsV2 = {\n deliveryCalendar: IDeliveryOptionV2[];\n standardShipping: IDeliveryOptionV2[];\n};\n\nexport type IEGiftRedemptionShippingSuborder = {\n id: number;\n cartItems: Array<{\n id: number;\n product: {\n id: number;\n isEgiftable: boolean;\n almostSoldOut: boolean;\n displayPrice: number;\n effectiveMainImageUrl: string;\n effectiveName: string;\n path: string;\n productType: string;\n };\n }>;\n merchants: Array<{\n id: number;\n name: string;\n path: string;\n }>;\n productEffectiveName: string;\n requestedDeliveryOn?: string;\n};\n\nexport type IEGiftRedemptionShipping = {\n deliveryOptions: IDeliveryOptionWithSuborderID[];\n order: IEGiftRedemption;\n suborders: IEGiftRedemptionShippingSuborder[];\n};\n\nexport type IConfirmedOrder = {\n id: number;\n accountPhone: any;\n authMode?: 'signup' | 'login';\n atocTotalInCents: number;\n atocTotalInDollars: number;\n atocTotalInPoints: number;\n availableCartItems: any;\n billingPostalCode: string;\n cartItemsSubtotalInCents: number;\n deliveryCity: any;\n deliveryPostalCode: any;\n deliveryStreet2: any;\n deliveryState: any;\n deliveryStreet1: any;\n discountCode: any;\n discountInCents: number;\n email?: string;\n giftCards: any;\n guest?: boolean;\n orderTotalAfterDiscountsBeforeShippingInCents: number;\n orderType?: string;\n previousRewardsPoints: number;\n purchaserFirstName: string;\n purchaserLastName: string;\n purchaserPhone: string;\n secureSlug: string;\n shippingSubtotalInCents: number;\n taxesTotalInCents: number;\n undiscountedCartItemsSubtotalInCents: number;\n};\n\nexport type OrderV3Response = {\n data: OrderV3;\n};\n\nexport type OrderV3 = {\n atocTotalInPoints: number;\n customerCanLogin: boolean;\n purchaser: Purchaser;\n};\n\nexport type Purchaser = {\n purchaserEmail: string;\n purchaserFirstName: string;\n purchaserLastName: string;\n purchaserPhone: string;\n};\n\nexport type EmailAuthRequest = {\n email_auth: {\n email: string;\n password: string;\n };\n};\n\nexport type IRewardPromo = {\n discount_in_cents?: number;\n discount_text?: string;\n id?: number;\n price_in_points?: number;\n promotion_id?: number;\n};\n\nexport type ISearchAggregationBucket = {\n doc_count: number;\n key: string | number;\n};\n\nexport type ISearchAggregations = {\n badges?: {\n buckets: ISearchAggregationBucket[];\n };\n categories?: {\n buckets: ISearchAggregationBucket[];\n };\n cuisine?: {\n buckets: ISearchAggregationBucket[];\n };\n earliest_delivery_date?: {\n value: string;\n };\n earliest_delivery_dates?: {\n buckets: ISearchAggregationBucket[];\n };\n editor_pick?: {\n buckets: ISearchAggregationBucket[];\n };\n free_shipping?: {\n buckets: ISearchAggregationBucket[];\n };\n has_gb_tv_video?: {\n buckets: ISearchAggregationBucket[];\n };\n max_price?: {\n value: number;\n };\n min_price?: {\n value: number;\n };\n nested_categories?: {\n inner?: {\n name?: {\n buckets: ISearchAggregationBucket[];\n };\n };\n };\n on_sale?: {\n buckets: ISearchAggregationBucket[];\n };\n product_tags?: {\n buckets: ISearchAggregationBucket[];\n };\n product_type?: {\n buckets: ISearchAggregationBucket[];\n };\n regions?: {\n buckets?: Array<{\n states?: {\n buckets: ISearchAggregationBucket[];\n };\n }>;\n };\n tags?: {\n buckets: ISearchAggregationBucket[];\n };\n};\n\n/** Shop By Region */\nexport type ICity = {\n id: number;\n categories?: Maybe<string[]>;\n excerpt?: Maybe<string>;\n name: string;\n regionSlug: string;\n slug: string;\n slogan?: Maybe<string>;\n state: IState;\n stateSlug: string;\n};\n\nexport type IState = {\n abbrev: string;\n categories?: Maybe<string[]>;\n excerpt?: Maybe<string>;\n name: string;\n productsCount?: number;\n region: IRegion;\n slug: string;\n slogan?: Maybe<string>;\n topCities?: Maybe<ICity[]>;\n};\n\nexport type IRegion = {\n abbrev: string;\n categories?: Maybe<string[]>;\n excerpt?: Maybe<string>;\n name: string;\n slug: string;\n slogan?: Maybe<string>;\n states?: IState[];\n topCities?: Maybe<ICity[]>;\n};\n\n/** Progress Meter */\nexport type IProgressMeterPhase = {\n name: string;\n label: string;\n date?: string;\n};\n\nexport type IProductsAndVideosTrackingParams = {\n merchant_id: number;\n product_id: number;\n version: number;\n video_displayed?: boolean;\n video_id?: string;\n};\n\nexport type ITrackingParams = {\n products_and_videos:\n | {\n [key: number]: IProductsAndVideosTrackingParams;\n }\n | IProductsAndVideosTrackingParams[];\n};\n\nexport type IPromotion = {\n alt: string;\n image: string;\n link: string;\n position: number;\n};\n","import * as React from 'react';\nimport cls from 'classnames';\n\nimport styles from './index.module.sass';\n\ninterface Props {\n active?: boolean;\n className?: string;\n label: string;\n onClick?: ( event: React.MouseEvent<HTMLButtonElement, MouseEvent> ) => void;\n}\n\nexport const SectionHeader = ({ active, className, label, onClick }: Props ) => (\n <button\n className={cls(\n 'py-md-2 py-3 px-md-6 px-3 fs-5 fs-sm-8 fs-lg-10 text-uppercase bg-transparent border-top-0 border-right-0 border-left-0',\n { 'text-secondary border-secondary': active },\n styles.section_header,\n className\n )}\n onClick={onClick}\n type=\"button\"\n >\n {label}\n </button>\n);\n","/* eslint-disable max-len */\n/* eslint-disable no-use-before-define */\nimport * as React from 'react';\nimport cls from 'classnames';\n\nimport styles from './index.module.sass';\n\ninterface Props {\n className?: string;\n columnBreakHeight?: number;\n}\n\n// we render as one \"column\" first to get the height of children block\n// if the children block is greater than columnBreakHeight we break into multiple columns\nexport const Columns: React.FC<Props> = ({ className, columnBreakHeight = 0, children }) => {\n const [ refCallback, height ] = useRefCallback();\n\n return (\n <div\n ref={refCallback}\n className={cls( className, {\n [styles.singular_column]: !height || height <= columnBreakHeight,\n [styles.multi_columns]: height > columnBreakHeight,\n })}\n >\n {children}\n </div>\n );\n};\n\n// ref function with callback to accurately determine height\nfunction useRefCallback(): [( elem: HTMLDivElement ) => void, number | null] {\n const [ height, setHeight ] = React.useState<number>( null );\n\n const refCallback = ( elem: HTMLDivElement ) => {\n if ( elem ) {\n // The first time the component is rendered into the DOM we want to compute the height\n // We also need to add offset the height by one line because of the way columns handles column breaks\n if ( height === null && elem.offsetHeight ) {\n setHeight( elem.offsetHeight + 22 );\n }\n }\n };\n\n return [ refCallback, height ];\n}\n","/* eslint-disable max-len */\nimport * as React from 'react';\n\nimport { EditorContent } from 'src/shoppe/elements/EditorContent';\n\ninterface Props {\n body: string;\n className?: string;\n}\n\nexport const Markdown = ({ body, className }: Props ) => (\n <EditorContent className={className} standardFormatting>\n {body}\n </EditorContent>\n);\n","import * as React from 'react';\nimport cls from 'classnames';\n\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconLookup } from '@fortawesome/pro-solid-svg-icons';\n\nimport { Columns } from '../Columns';\nimport { Markdown } from '../Markdown';\n\nimport styles from './index.module.sass';\n\nexport interface BodyProps {\n body?: string;\n header?: React.ReactNode;\n subSections?: Array<{ body: string; className?: string; header: string; icon: IconLookup }>;\n}\n\nexport const Body = ({ body, header, subSections = []}: BodyProps ) => (\n <div className=\"pt-6\">\n {header && <div className=\"mb-8 mb-md-9\">{header}</div>}\n\n <Columns columnBreakHeight={600}>\n {body && <Markdown body={body} />}\n\n {subSections.map(( sub ) => (\n <div className={styles.subsection} key={sub.header}>\n <div className={`${styles.header} font-weight-bold`}>\n <FontAwesomeIcon className={cls( styles.icon, 'mr-2 fs-6' )} fixedWidth icon={sub.icon} />\n {sub.header}\n </div>\n\n <Markdown body={sub.body} className={styles.markdown} />\n </div>\n ))}\n </Columns>\n </div>\n);\n","import * as React from 'react';\nimport cls from 'classnames';\n\nimport { IconDefinition } from '@fortawesome/pro-regular-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport styles from './index.module.sass';\n\ninterface Props {\n className?: string;\n icon?: IconDefinition;\n id: string;\n title: string;\n}\n\nexport const Header: React.FC<Props> = ({ className, icon, id, title }) => (\n <div\n className={cls(\n className,\n styles.button,\n 'p-0 d-flex align-items-center justify-content-between'\n )}\n >\n <h2 id={id} className={cls( styles.headline, 'fs-5 fs-sm-8 fs-lg-10 text-uppercase' )}>\n {title}\n </h2>\n\n {icon && <FontAwesomeIcon className=\"fs-8 mx-6 d-print-none\" icon={icon} />}\n </div>\n);\n","/* eslint-disable jsx-a11y/control-has-associated-label */\nimport * as React from 'react';\nimport cls from 'classnames';\n\nimport { faAngleDown, faAngleUp } from '@fortawesome/pro-solid-svg-icons';\n\nimport { Expand } from 'src/explore/elements/Expand';\nimport { Body, BodyProps } from './elements/Body';\nimport { Header } from './elements/Header';\n\nimport styles from './index.module.sass';\n\nexport interface SectionProps {\n body?: string;\n bodyHeader?: React.ReactNode;\n className?: string;\n disclaimer?: string;\n id: string;\n isOpen: boolean;\n title: string;\n subtitle?: string;\n subSections?: BodyProps['subSections'];\n handleToggleOpen: () => void;\n}\n\nexport const Section: React.FC<SectionProps> = ({\n body,\n bodyHeader,\n className,\n disclaimer,\n id,\n isOpen,\n title,\n subtitle,\n subSections = [],\n handleToggleOpen,\n}) => {\n const canExpand = body || !!subSections.length;\n\n const meta = (\n <>\n {disclaimer && (\n <div className={cls( styles.disclaimer, 'fs-4 fs-md-5 pt-2 pt-md-3' )}>\n {`* ${disclaimer}`}\n </div>\n )}\n {subtitle && (\n <div className={cls( styles.subtitle, 'fs-4 fs-md-5 pt-2 pt-md-3' )}>{subtitle}</div>\n )}\n </>\n );\n\n return (\n <div className={cls( styles.section, className, 'position-relative py-md-9 py-5 text-dark' )}>\n {canExpand && (\n <button\n className={cls(\n 'spec__section_expander bg-transparent border-0 position-absolute w-100',\n styles.expandButton,\n {\n [styles.expandButtonOpen]: isOpen,\n }\n )}\n onClick={() => handleToggleOpen()}\n type=\"button\"\n />\n )}\n\n <Header\n id={id}\n icon={canExpand && ( isOpen ? faAngleUp : faAngleDown )}\n title={disclaimer ? `${title}*` : title}\n />\n\n {!canExpand && meta}\n\n {canExpand && (\n <Expand className={styles.expand} isOpen={isOpen} initialHeight={0}>\n {meta}\n <Body body={body} header={bodyHeader} subSections={subSections} />\n </Expand>\n )}\n </div>\n );\n};\n","import * as React from 'react';\nimport cls from 'classnames';\n\nimport { Section, SectionProps } from './elements/Section';\n\nimport styles from './index.module.sass';\n\nexport interface SectionListProps {\n className?: string;\n openSections: { [key: string]: boolean };\n sections: Omit<SectionProps, 'handleToggleOpen' | 'id' | 'isOpen'>[];\n setOpenSections: ( secions: { [key: string]: boolean }) => void;\n}\n\nexport const SectionList = ({\n className,\n openSections,\n sections,\n setOpenSections,\n}: SectionListProps ) => (\n <div className={cls( className, styles.section_list )}>\n {sections.map(( s, index ) => {\n const id = s.title.kebabCase();\n const isOpen = openSections[id];\n const handleToggleOpen = () => {\n setOpenSections({ ...openSections, [id]: !isOpen });\n };\n\n return (\n <Section\n key={s.title}\n body={s.body}\n bodyHeader={s.bodyHeader}\n className={s.className}\n disclaimer={s.disclaimer}\n handleToggleOpen={handleToggleOpen}\n id={id}\n isOpen={isOpen}\n subSections={s.subSections}\n subtitle={s.subtitle}\n title={`${index + 1}. ${s.title}`}\n />\n );\n })}\n </div>\n);\n","import * as React from 'react';\nimport cls from 'classnames';\n\nimport { faTasks } from '@fortawesome/pro-regular-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nimport styles from './index.module.sass';\n\ninterface Props {\n prepTime?: string;\n}\n\nexport const PrepTime = ({ prepTime }: Props ) => (\n <div className=\"row align-items-stretch justify-content-between m-0\">\n {prepTime && (\n <div\n className={cls(\n styles.container,\n styles.col,\n 'd-flex justify-content-center border fs-4 rounded text-center mb-5 mb-md-0 py-4'\n )}\n >\n <div className=\"d-flex flex-column justify-content-center col-5 col-md col-lg-3 px-5\">\n <FontAwesomeIcon\n className={cls( styles.icon, 'd-block mx-auto mb-1 fs-9' )}\n icon={faTasks}\n />\n <div className={cls( styles.content, 'd-block fs-4' )}>Prep Time</div>\n </div>\n\n <div\n className={cls(\n styles.content,\n 'd-flex flex-column justify-content-center col-5 col-md col-lg-3 px-5'\n )}\n >\n <h3>{`${prepTime} Before`}</h3>\n </div>\n </div>\n )}\n\n <div className={cls( styles.content, styles.col, 'fs-5' )}>\n <div>\n {prepTime && (\n <>\n <strong>{`${prepTime} Before the Class`}</strong>\n <br />\n </>\n )}\n Gather the necessary kitchen equipment & ingredients before the cook-along starts.\n </div>\n\n <div className=\"pt-4\">\n <a href=\"https://zoom.us/download\" rel=\"noreferrer\" target=\"_blank\">\n Download the Zoom App\n </a>\n {' on your computer or mobile phone. You do not need to register for an account to join.'}\n </div>\n </div>\n </div>\n);\n","/* eslint-disable no-use-before-define */\n/* eslint-disable max-len */\nimport * as React from 'react';\nimport cls from 'classnames';\nimport { faClipboardListCheck, faWheat, faUtensilSpoon } from '@fortawesome/pro-regular-svg-icons';\n\nimport { ILiveClassSectionType, ILiveClassSection } from 'src/explore/types/shoppe';\n\nimport { SectionHeader } from '../SectionHeader';\nimport { SectionList, SectionListProps } from '../SectionList';\nimport { PrepTime } from './elements/PrepTime';\n\ntype Section = SectionListProps['sections'][number];\n\ninterface Props {\n className?: string;\n prepTime?: string;\n openSections: { [key: string]: boolean };\n sections: ILiveClassSection[];\n setOpenSections: ( sections: any ) => void;\n}\n\nexport const BeforeClass = ({\n className,\n openSections,\n prepTime,\n sections,\n setOpenSections,\n}: Props ) => {\n const orderedSections = useBeforeSections({ prepTime, sections });\n return (\n <>\n <SectionHeader className=\"d-none d-print-block m-auto\" label=\"Prepare Before Class\" />\n <SectionList\n className={cls( 'spec__before-class', className )}\n openSections={openSections}\n sections={orderedSections}\n setOpenSections={setOpenSections}\n />\n </>\n );\n};\n\nexport function useBeforeSections({ prepTime, sections }: Partial<Props> ) {\n return React.useMemo(() => {\n const allergens = sections.find(( elem ) => elem.sectionType === ILiveClassSectionType.Allergens );\n const items = sections.find(( elem ) => elem.sectionType === ILiveClassSectionType.ItemsIncluded );\n const servings = sections.find(\n ( elem ) => elem.sectionType === ILiveClassSectionType.ServingSize\n );\n\n const prep = sections.find(( elem ) => elem.sectionType === ILiveClassSectionType.ClassPrep );\n const purchase = sections.find(\n ( elem ) => elem.sectionType === ILiveClassSectionType.ThingsToBuy\n );\n const unpacking = sections.find(\n ( elem ) => elem.sectionType === ILiveClassSectionType.UnpackingInstructions\n );\n\n const orderedSections: Section[] = [];\n\n if ( allergens || items || servings ) {\n const subSections: Section['subSections'] = [];\n if ( items ) {\n subSections.push({\n body: items.body,\n icon: faClipboardListCheck,\n header: 'Items & ingredients included in your box:',\n });\n }\n if ( allergens ) {\n subSections.push({\n body: allergens.body,\n icon: faWheat,\n header: 'Allergens',\n });\n }\n if ( servings ) {\n subSections.push({\n body: servings.body,\n icon: faUtensilSpoon,\n header: 'Serving Size',\n });\n }\n\n orderedSections.push({\n title: 'This Kit Includes',\n subSections,\n });\n }\n\n if ( purchase ) {\n orderedSections.push({\n body: purchase.body,\n title: \"Gather Items You'll Need To Add\",\n });\n }\n\n if ( unpacking ) {\n orderedSections.push({\n body: unpacking.body,\n title: 'When You Receive Your Box',\n });\n }\n\n if ( prep ) {\n orderedSections.push({\n body: prep.body,\n bodyHeader: <PrepTime prepTime={prepTime} />,\n title: 'Required Pre-Class Prep',\n });\n }\n\n return orderedSections;\n }, [ sections, prepTime ]);\n}\n","import { ILiveClassMeetingPlatform } from 'src/explore/types/shoppe';\n\nconst map = ( method: string | null ): string | undefined => {\n switch ( method ) {\n case ILiveClassMeetingPlatform.Zoom:\n return 'zoom';\n case ILiveClassMeetingPlatform.GoogleMeet:\n return 'google meet';\n default:\n return undefined;\n }\n};\n\nexport const MeetingPlatformMapper = {\n map,\n};\n","/* eslint-disable no-use-before-define */\n/* eslint-disable max-len */\nimport * as React from 'react';\nimport cls from 'classnames';\n\nimport {\n ILiveClassSectionType,\n ILiveClassSection,\n ILiveClassMeetingPlatform,\n} from 'src/explore/types/shoppe';\n\nimport { MeetingPlatformMapper } from 'src/explore/services/MeetingPlatformMapper';\nimport { SectionHeader } from '../SectionHeader';\nimport { SectionList, SectionListProps } from '../SectionList';\n\ninterface Props {\n className?: string;\n meetingPlatform?: string;\n openSections: { [key: string]: boolean };\n sections: ILiveClassSection[];\n setOpenSections: ( sections: any ) => void;\n}\n\nexport const DuringClass = ({\n className,\n meetingPlatform,\n openSections,\n sections,\n setOpenSections,\n}: Props ) => {\n const orderedSections = useDuringSections({ meetingPlatform, sections });\n\n return (\n <>\n <SectionHeader className=\"d-none d-print-block m-auto\" label=\"During Class\" />\n <SectionList\n className={cls( 'spec__during-class', className )}\n openSections={openSections}\n sections={orderedSections}\n setOpenSections={setOpenSections}\n />\n </>\n );\n};\n\nexport function useDuringSections({ sections, meetingPlatform }: Partial<Props> ) {\n return React.useMemo(() => {\n const instructions = sections.find(\n ( elem ) => elem.sectionType === ILiveClassSectionType.ClassInstructions\n );\n const notes = sections.find(\n ( elem ) => elem.sectionType === ILiveClassSectionType.AfterClassNotes\n );\n\n const platform = MeetingPlatformMapper.map( meetingPlatform ) || ILiveClassMeetingPlatform.Zoom;\n\n const orderedSections: SectionListProps['sections'] = [\n {\n title: `Log Into ${platform.capitalize()}`,\n subtitle: 'Feel free to join us a few minutes early to test out your connection!',\n },\n ];\n\n if ( instructions ) {\n orderedSections.push({\n body: instructions.body,\n title: 'Class Instructions',\n disclaimer: 'The chef may change the instructions, ingredients, or order of operations',\n });\n }\n\n if ( notes ) {\n orderedSections.push({\n body: notes.body,\n title: 'After Class Notes',\n });\n }\n\n return orderedSections;\n }, [ sections, meetingPlatform ]);\n}\n","import * as React from 'react';\n\nimport { SvgUse } from 'src/shoppe/elements/SvgUse';\nimport { useRoutes } from 'src/explore/hooks/useRoutes';\n\nimport { isNativeMobileApp } from 'src/explore/services/mobile';\nimport styles from './index.module.sass';\n\ninterface HeaderProps {\n additionalItems?: React.ReactNode;\n text?: React.ReactNode;\n}\n\nexport const Header = ({ additionalItems, text }: HeaderProps ) => {\n const routes = useRoutes();\n\n return (\n <nav\n className={`${styles.menu} d-md-flex justify-content-between align-items-center pt-4 pt-md-7 pb-3 pb-md-5 text-dark font-weight-bold`}\n >\n {!isNativeMobileApp() ? (\n <a className=\"d-inline-block\" href=\"/\">\n <SvgUse\n ariaLabel=\"Goldbelly\"\n className={`${styles.goldbelly} spec__goldbelly-logo-link`}\n name=\"goldbelly-stacked\"\n viewBox=\"0 0 125 77\"\n />\n </a>\n ) : (\n <span className=\"d-inline-block\">\n <SvgUse\n ariaLabel=\"Goldbelly\"\n className={styles.goldbelly}\n name=\"goldbelly-stacked\"\n viewBox=\"0 0 125 77\"\n />\n </span>\n )}\n\n <div className=\"d-md-none d-print-none\">{text}</div>\n\n <div className=\"d-flex d-print-none\">\n <ul className=\"d-none d-md-flex\">\n <li>\n <a className=\"text-decoration-none\" href={routes.about()}>\n About Goldbelly\n </a>\n </li>\n <li className=\"ml-9\">\n <a className=\"text-decoration-none\" href={routes.corporate()}>\n Corporate Gifts\n </a>\n </li>\n <li className=\"ml-9\">\n <a className=\"text-decoration-none\" href={routes.help.root()}>\n Customer Care\n </a>\n </li>\n </ul>\n\n {additionalItems}\n </div>\n </nav>\n );\n};\n","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faPrint } from '@fortawesome/pro-solid-svg-icons';\n\nimport { Header } from '../../../../elements/Header';\n\nimport styles from './index.module.sass';\n\ninterface MenuProps {\n merchant: string;\n}\n\nexport const Menu = ({ merchant }: MenuProps ) => {\n const additionalItems = (\n <ul className=\"d-flex mt-4 mt-md-0\">\n <li className=\"ml-md-9\">\n <button\n className={`${styles.button} position-relative d-flex p-0 border-0 bg-transparent text-dark font-weight-bold fs-5`}\n type=\"button\"\n onClick={() => print()}\n >\n <span>Print</span>\n <FontAwesomeIcon className=\"ml-3 fs-7\" icon={faPrint} />\n </button>\n </li>\n </ul>\n );\n\n const text = (\n <div className={`${styles.mobileHeaderBorder} pb-1 mt-3 mb-8 text-uppercase pt-8`}>\n <div className={`${styles.merchant} mt-1 fs-8`}>{merchant}</div>\n </div>\n );\n\n return <Header additionalItems={additionalItems} text={text} />;\n};\n","import * as React from 'react';\nimport cls from 'classnames';\n\nimport { SectionHeader } from '../SectionHeader';\n\nimport styles from './index.module.sass';\n\ninterface Props {\n activeId?: string;\n className?: string;\n tabs: Array<{ id: string; label: string }>;\n onClick?: ( id: string ) => void;\n}\n\nexport const Tabs = ({ activeId, className, tabs, onClick }: Props ) => {\n const [ sticky, setSticky ] = React.useState( false );\n const ref = React.useRef( null );\n\n React.useEffect(() => {\n const handleScroll = () => {\n const scrollDistance = window.scrollY;\n const contentDistance = ref.current\n ? window.pageYOffset + ref.current.getBoundingClientRect().top\n : null;\n setSticky( scrollDistance >= contentDistance );\n };\n window.addEventListener( 'scroll', handleScroll );\n\n return () => window.removeEventListener( 'scroll', handleScroll );\n });\n\n return (\n <div\n ref={ref}\n className={cls( className, 'spec__tabs d-flex justify-content-center py-4 py-md-9', {\n [styles.sticky]: sticky,\n })}\n >\n {tabs.map(( t ) => (\n <SectionHeader\n key={t.id}\n active={t.id === activeId}\n label={t.label}\n onClick={() => onClick && onClick( t.id )}\n />\n ))}\n </div>\n );\n};\n","import * as React from 'react';\nimport cls from 'classnames';\n\nimport { ILiveClassSection } from 'src/explore/types/shoppe';\nimport { useBeforeSections } from '../BeforeClass';\nimport { useDuringSections } from '../DuringClass';\n\nimport styles from './index.module.sass';\n\ninterface Props {\n sections: ILiveClassSection[];\n}\n\nexport const TableOfContents = ({ sections }: Props ) => {\n const before = useBeforeSections({ sections });\n const during = useDuringSections({ sections });\n\n return (\n <div className={cls( styles.toc, 'spec__toc d-print-block d-none' )}>\n <h4 className=\"fs-3 pb-6 text-uppercase\">GB LIVE OVERVIEW</h4>\n\n <div className=\"d-flex\">\n <div className=\"mr-6 pb-4 w-50\">\n <h2 className={cls( styles.thick_border, 'fs-5 pb-6 text-uppercase' )}>\n Prepare Before Class\n </h2>\n\n {before.map(( section, index ) => (\n <h4 className=\"fs-3 border-bottom py-5 text-uppercase\" key={section.title}>\n {`${index + 1}. ${section.title}`}\n </h4>\n ))}\n </div>\n\n <div className=\"ml-6 pb-4 w-50\">\n <h2 className={cls( styles.thick_border, 'fs-5 pb-6 text-uppercase' )}>During Class</h2>\n\n {during.map(( section, index ) => (\n <h4 className=\"fs-3 border-bottom py-5 text-uppercase\" key={section.title}>\n {`${index + 1}. ${section.title}`}\n </h4>\n ))}\n </div>\n </div>\n </div>\n );\n};\n","export default \"__VITE_ASSET__BUrBxgIf__\"","export default \"__VITE_ASSET__BHikhp1t__\"","export default \"__VITE_ASSET__CCq1MEVz__\"","import React from 'react';\n\nimport mobile from 'images/app-banner-mobile.jpg';\nimport tablet from 'images/app-banner-tablet.jpg';\nimport desktop from 'images/app-banner-desktop.jpg';\n\nimport Breakpoints from 'src/explore/services/breakpoints';\nimport { isNativeMobileApp } from 'src/explore/services/mobile';\n\nimport styles from './index.module.sass';\n\nconst AppBanner: React.FC = () => {\n let imageSrc = desktop;\n if ( Breakpoints.lessThan( 'sm' )) {\n imageSrc = mobile;\n } else if ( Breakpoints.lessThan( 'md' )) {\n imageSrc = tablet;\n }\n\n if ( isNativeMobileApp()) {\n return null;\n }\n\n return (\n <a\n href=\"https://apps.apple.com/app/apple-store/id925911443?pt=95628824&ct=Success&mt=8\"\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n <img className={styles.banner} src={imageSrc} alt=\"Download the mobile app\" />\n </a>\n );\n};\n\nexport default AppBanner;\n","/* eslint-disable camelcase */\nimport React from 'react';\nimport cls from 'classnames';\nimport qs from 'query-string';\n\nimport { ILiveClass } from 'src/explore/types/shoppe';\nimport { useApiObject } from 'src/explore/hooks/useApiObject';\n\nimport { EventDates } from 'src/explore/elements/EventDates';\nimport { LiveClassDetails } from 'src/explore/elements/LiveClassDetails';\nimport { LiveClassSupport } from 'src/explore/elements/LiveClassSupport';\nimport { ProductHeader } from 'src/explore/elements/ProductHeader';\n\nimport { isNativeMobileApp } from 'src/explore/services/mobile';\nimport { BeforeClass } from './elements/BeforeClass';\nimport { DuringClass } from './elements/DuringClass';\nimport { Menu } from './elements/Menu';\nimport { Tabs } from './elements/Tabs';\nimport { TableOfContents } from './elements/TableOfContents';\n\nimport styles from './index.module.sass';\nimport AppBanner from '../../elements/AppBanner';\n\ninterface Props {\n id: number;\n}\n\nexport const Live: React.FC<Props> = ({ id }) => {\n const [ openTab, setOpenTab ] = React.useState( 'before' );\n const [ openSections, setOpenSections ] = React.useState({});\n\n const { data: product } = useApiObject<ILiveClass>( `/live_classes/${id}`, {\n camelCaseKeys: true,\n });\n\n React.useEffect(() => {\n if ( product ) {\n const query = qs.parse( window.location.search );\n const defaultSection = query.section as string;\n const section = document.getElementById( defaultSection );\n const tab = [ 'log-into-zoom', 'class-instructions', 'after-class-notes' ].includes(\n defaultSection\n )\n ? 'during'\n : 'before';\n\n if ( section ) {\n setOpenTab( tab );\n setOpenSections({ ...openSections, [defaultSection]: true });\n // wait for rerender\n setTimeout(() => section.scrollIntoView({ behavior: 'smooth' }), 100 );\n }\n }\n }, [ product ]);\n\n if ( !product ) return null;\n\n const foodMakerImage = product\n ? product.chefImageUrl || product.merchant.foodMakerImageUrl\n : null;\n\n const welcomeMessage =\n product.welcomeMessage ||\n `We are thrilled to welcome you to our exclusive Goldbelly LIVE! Cook-along with ${product.hostedBy} at ${product.merchant.name} in ${product.chefLocation}. Prep your kitchen for a one-of-a-kind opportunity to cook in real time with us from the comfort of your home!`;\n\n return (\n <>\n <Menu merchant={product.merchant.name} />\n\n <div className={`${styles.header} pb-5 py-md-8`}>\n <ProductHeader\n foodMakerImage={foodMakerImage}\n hideMerchantMobile\n linkHeader={!isNativeMobileApp()}\n live\n merchant={product.merchant.name}\n merchantPermalink={product.merchant.permalink}\n productImage={product.effectiveMainImageUrl}\n productName={product.effectiveName}\n productPermalink={product.permalink}\n text={welcomeMessage}\n />\n </div>\n\n <EventDates\n arrivesOn={product.foodArrivesOn}\n className=\"d-md-none d-print-none text-dark\"\n workshopAt={product.workshopAt}\n />\n\n <LiveClassDetails\n className={`${styles.details} border-bottom mt-4 mt-md-0 pb-4 pb-md-9 pt-md-9`}\n liveClass={product}\n showCalendarWidget\n showLink\n />\n\n <TableOfContents sections={product.sections} />\n\n <Tabs\n className=\"d-print-none\"\n activeId={openTab}\n tabs={[\n { id: 'before', label: 'Prepare Before Class' },\n { id: 'during', label: 'During Class' },\n ]}\n onClick={( tabId ) => setOpenTab( tabId )}\n />\n\n <BeforeClass\n className={cls( 'd-print-block', { 'd-none': openTab !== 'before' })}\n openSections={openSections}\n prepTime={product.prepTime}\n sections={product.sections}\n setOpenSections={setOpenSections}\n />\n\n <DuringClass\n className={cls( 'd-print-block', { 'd-none': openTab !== 'during' })}\n meetingPlatform={product.meetingPlatform}\n openSections={openSections}\n sections={product.sections}\n setOpenSections={setOpenSections}\n />\n\n <AppBanner />\n\n <LiveClassSupport className=\"py-md-9 py-8\" />\n </>\n );\n};\n","import React from 'react';\nimport cls from 'classnames';\n\nimport { Header } from '../../../../elements/Header';\n\nimport styles from './index.module.sass';\n\ninterface MenuProps {\n hasVideo: boolean;\n showVideo: boolean;\n onToggleVideo: ( show: boolean ) => void;\n}\n\nexport const Menu = ({ hasVideo, showVideo, onToggleVideo }: MenuProps ) => {\n const text = (\n <div\n className={`${styles.mobileHeaderBorder} d-flex justify-content-center mt-5 pt-3 text-uppercase spec__change-tab`}\n >\n {hasVideo && (\n <>\n <h4\n className={cls( 'pb-2', {\n 'text-secondary border-bottom border-secondary': showVideo,\n 'text-muted': !showVideo,\n })}\n onClick={() => onToggleVideo( true )}\n >\n Video\n </h4>\n <h4\n className={cls( 'pb-2 ml-2', {\n 'text-secondary border-bottom border-secondary': !showVideo,\n 'text-muted': showVideo,\n })}\n onClick={() => onToggleVideo( false )}\n >\n Instructions\n </h4>\n </>\n )}\n\n {!hasVideo && <h4 className=\"d-md-none fs-8\">Instructions</h4>}\n </div>\n );\n\n return <Header text={text} />;\n};\n","import React from 'react';\ninterface MoreDetailsProps {\n className: string;\n text: string;\n}\n\nexport const MoreDetails = ({ className, text }: MoreDetailsProps ) => {\n return (\n <div className={className}>\n <h2>This Product Includes:</h2>\n <div dangerouslySetInnerHTML={{ __html: text }} />\n <br />\n </div>\n );\n};\n","/* eslint-disable jsx-a11y/media-has-caption */\nimport React, { useState } from 'react';\nimport cls from 'classnames';\n\nimport { parse } from 'query-string';\n\nimport { EditorContent } from 'src/shoppe/elements/EditorContent';\nimport { ProductHeader } from 'src/explore/elements/ProductHeader';\n\nimport { isNativeMobileApp } from 'src/explore/services/mobile';\nimport type { IInstructions } from '../../types';\nimport { Menu } from './elements/Menu';\nimport { MoreDetails } from './elements/MoreDetails';\n\nimport styles from './index.module.sass';\nimport AppBanner from '../../elements/AppBanner';\n\ninterface StandardProps {\n instructions: IInstructions;\n}\n\nexport const Standard = ({ instructions }: StandardProps ) => {\n const hasVideo = instructions.instruction_video_url !== null;\n\n const [ showVideo, setShowVideo ] = useState<boolean>( hasVideo );\n\n const { subscription } = parse( window.location.search );\n const showDetails = subscription === 'true';\n\n const instructionClassName = cls( styles.instructions, 'd-print-block d-md-block' );\n\n return (\n <>\n <Menu hasVideo={hasVideo} showVideo={showVideo} onToggleVideo={setShowVideo} />\n\n <div className={`${styles.header} pt-2 pb-5 py-md-8 border-top`}>\n <ProductHeader\n foodMakerImage={instructions.merchant_image}\n hideMerchantMobile\n linkHeader={!isNativeMobileApp()}\n merchant={instructions.merchant_name}\n merchantPermalink={instructions.merchant_permalink}\n productName={instructions.name}\n productPermalink={instructions.product_permalink}\n />\n </div>\n\n <div className={styles.container}>\n <div className={`${styles.contentContainer} row`}>\n {hasVideo && (\n <div className={cls({ 'd-none': !showVideo }, 'col-md-4 d-print-none d-md-block' )}>\n <h4 className=\"text-uppercase d-none d-md-block mb-5\">WATCH GOLDBELLY VIDEO</h4>\n <video\n className={`${styles.video} d-block`}\n controls\n controlsList=\"nodownload\"\n preload=\"auto\"\n poster={instructions.instruction_video_image_url}\n >\n <source src={instructions.instruction_video_url} type=\"video/mp4\" />\n </video>\n </div>\n )}\n\n <div\n className={cls(\n styles.print_col_6,\n hasVideo ? 'col-md-4' : 'col-md-6',\n { 'd-none': showVideo },\n 'd-print-block mb-8 d-md-block'\n )}\n >\n {hasVideo && (\n <>\n <h4 className=\"text-uppercase d-none d-md-block mb-5\">Instructions For</h4>\n </>\n )}\n\n <img\n alt={instructions.name}\n className={cls(\n styles.productImage,\n { [styles.productImageWithVideo]: hasVideo },\n 'd-print-block d-md-block'\n )}\n src={instructions.product_image}\n />\n </div>\n\n <div\n className={cls(\n styles.instructionsWithVideo,\n { 'col-md-6': !hasVideo },\n { 'col-md-4': hasVideo },\n { 'd-none': showVideo },\n 'd-print-block d-md-block'\n )}\n >\n {showDetails && (\n <MoreDetails className={instructionClassName} text={instructions.more_details} />\n )}\n\n <EditorContent className={instructionClassName}>\n <div dangerouslySetInnerHTML={{ __html: instructions.body_html }} />\n </EditorContent>\n </div>\n </div>\n </div>\n\n <AppBanner />\n\n <footer className={`${styles.footer} mb-5 text-center`}>\n For more help, contact us at\n <br />\n <a className={styles.footerLink} href=\"mailto:support@goldbelly.com\">\n support@goldbelly.com\n </a>\n </footer>\n </>\n );\n};\n","import React from 'react';\n\nimport type { IInstructions } from './types';\nimport { Live } from './compositions/Live';\nimport { Standard } from './compositions/Standard';\n\ninterface Props {\n instructions: IInstructions;\n}\n\nconst ProductInstructions: React.FC<Props> = ({ instructions }) => (\n <div className=\"container-xl spec__merchant_customer_instruction\">\n {instructions.live_class_id ? (\n <Live id={instructions.live_class_id} />\n ) : (\n <Standard instructions={instructions} />\n )}\n </div>\n);\n\nexport default ProductInstructions;\n"],"names":["EventDates","arrivesOn","className","workshopAt","React.createElement","cls","FontAwesomeIcon","faBoxOpen","styles","format","utcToZonedTime","faLaptop","str","icon$6","Button","children","link","React","ICalendar","description","end","start","title","ics","AppleCalendar","location","LazyImgix","icon","icon$5","GoogleCalendar","icon$4","Office365Calendar","icon$3","OutlookCalendar","icon$2","YahooCalendar","icsDateString","date","AddToCalendar","open","setOpen","useState","faCalendarCheck","Modal","Section","body","MILLISECONDS_IN_MINUTE","MILLISECONDS_IN_HOUR","addDurationString","startTime","durationString","durationInMilliseconds","hourInput","hourDuration","_","value","total","additional","i","minuteInput","minuteDuration","SumDate","LiveClassDetails","liveClass","showCalendarWidget","showLink","showQuantityLimit","routes","useRoutes","classDuration","eventStart","eventEnd","isNearEvent","faCalendarAlt","faClock","faHatChef","faGlobeStand","faPhoneLaptop","faMicrophoneStand","faUsersClass","React.Fragment","ILiveClassSectionType","ILiveClassMeetingPlatform","SectionHeader","active","label","onClick","Columns","columnBreakHeight","refCallback","height","useRefCallback","setHeight","React.useState","elem","Markdown","EditorContent","Body","header","subSections","sub","Header","id","bodyHeader","disclaimer","isOpen","subtitle","handleToggleOpen","canExpand","meta","faAngleUp","faAngleDown","Expand","SectionList","openSections","sections","setOpenSections","s","index","PrepTime","prepTime","faTasks","BeforeClass","orderedSections","useBeforeSections","React.useMemo","allergens","items","servings","prep","purchase","unpacking","faClipboardListCheck","faWheat","faUtensilSpoon","map","method","MeetingPlatformMapper","DuringClass","meetingPlatform","useDuringSections","instructions","notes","additionalItems","text","isNativeMobileApp","SvgUse","Menu","merchant","faPrint","Tabs","activeId","tabs","sticky","setSticky","ref","React.useRef","React.useEffect","handleScroll","scrollDistance","contentDistance","t","TableOfContents","before","during","section","mobile","tablet","desktop","AppBanner","imageSrc","Breakpoints","Live","openTab","setOpenTab","product","useApiObject","defaultSection","qs","tab","foodMakerImage","welcomeMessage","ProductHeader","tabId","LiveClassSupport","hasVideo","showVideo","onToggleVideo","MoreDetails","Standard","setShowVideo","subscription","parse","showDetails","instructionClassName","ProductInstructions"],"mappings":"2uDAeaA,GAAa,CAAC,CAAE,UAAAC,EAAW,UAAAC,EAAW,WAAAC,CAAW,IAC3DC,gBAAA,MAAA,CAAI,UAAWC,EAAK,mDAAoDH,CAAU,GAChFE,EAAAA,cAAA,MAAA,CAAI,UAAU,wBAAA,kBACZE,EAAgB,CAAA,UAAU,4BAA4B,KAAMC,EAAW,CAAA,kBACvE,OAAK,KAAA,gBAAc,EACpBH,EAAA,cAAC,SAAO,CAAA,UAAW,GAAGI,EAAO,IAAI,qCAC9B,EAAAC,EAAQC,GAAgB,IAAI,KAAMT,CAAU,EAAG,KAAM,EAAG,OAAQ,CACnE,CACF,EAEAG,EAAAA,cAAC,MAAI,CAAA,UAAU,WACb,EAAAA,gBAACE,GAAgB,UAAU,4BAA4B,KAAMK,EAAA,CAAU,EACvEP,EAAAA,cAAC,YAAK,aAAW,EAChBA,EAAAA,cAAA,SAAA,CAAO,UAAW,GAAGI,EAAO,IAAI,mCAAA,EAC9BJ,EAAA,cAAA,OAAA,CAAK,UAAU,SAAA,EAAWK,EAAQ,IAAI,KAAMN,CAAW,EAAG,OAAQ,CAAE,EACpEC,EAAA,cAAA,OAAA,CAAK,UAAU,cAAA,EACbK,EAAQ,IAAI,KAAMN,CAAW,EAAG,UAAW,EACzC,QAAS,MAAO,EAAG,EACnB,QAAS,QAAWS,GAASA,EAAI,aAAa,CACnD,CACF,CACF,CACF,ECrCaC,GAAA,y0ICSFC,EAAS,CAAC,CAAE,SAAAC,EAAU,KAAAC,CACjC,IAAAC,EAAA,cAAC,IAAA,CACC,UAAW,GAAGT,GAAO,MAAM,kGAC3B,KAAMQ,EACN,OAAO,QAAA,EAEND,CACH,ECHWG,EAAY,CAAC,CACxB,SAAAH,EAAU,YAAAI,EAAa,IAAAC,EAAK,MAAAC,EAAO,MAAAC,CACrC,IAAuB,CACrB,MAAMC,EAAM,UACV,mCAAmC,CACjC,kBACA,cACA,eACA,OAAO,SAAS,GAAG,GACnB,WAAWF,CAAK,GAChB,SAASD,CAAG,GACZ,WAAWE,CAAK,GAChB,eAAeH,GAAe,EAAE,GAChC,YAAY,UAAY,EAAE,GAC1B,aACA,eAAA,EACA,KAAM;AAAA,CAAK,CAAC,EAChB,EAEA,OAAQF,EAAA,cAAAH,EAAA,CAAO,KAAMS,CAAA,EAAMR,CAAS,CACtC,EClBaS,GAAgB,CAAC,CAAE,YAAAL,EAAa,IAAAC,EAAK,SAAAK,EAAU,MAAAJ,EAAO,MAAAC,CAAM,oBACtEJ,EAAU,CAAA,YAAAC,EAA0B,IAAAC,EAAU,SAAAK,EAAoB,MAAAJ,EAAc,MAAAC,CAC/E,EAAAL,EAAA,cAACS,EAAA,CACC,IAAI,iBACJ,UAAU,OACV,YAAa,CAAE,GAAI,KAAM,EACzB,MAAM,OACN,IAAKC,EAAA,CACP,EACAV,EAAA,cAAC,OAAK,KAAA,gBAAc,CACtB,ECzBaW,GAAA,y8ICeFC,GAAiB,CAAC,CAC7B,YAAAV,EACA,IAAAC,EACA,SAAAK,EACA,MAAAJ,EACA,MAAAC,CACF,IAA4B,CAC1B,MAAMN,EAAO,UACX,CACE,yCACA,mBACA,SAASM,CAAK,GACd,UAAUD,CAAK,GACf,IAAID,CAAG,GACP,YAAYD,GAAe,EAAE,GAC7B,aAAaM,GAAY,EAAE,GAC3B,qBACF,EAAE,KAAM,EAAG,CACb,EAGE,OAAAR,EAAA,cAACH,GAAO,KAAAE,CACN,EAAAC,EAAA,cAACS,EAAA,CACC,IAAI,kBACJ,UAAU,OACV,YAAa,CAAE,GAAI,KAAM,EACzB,MAAM,OACN,IAAKC,EAAA,CAEP,EAAAV,EAAA,cAAC,OAAK,KAAA,iBAAe,CACvB,CAEJ,EC/Cea,GAAA,i8ICeFC,GAAoB,CAAC,CAChC,YAAAZ,EACA,IAAAC,EACA,SAAAK,EACA,MAAAJ,EACA,MAAAC,CACF,IAA+B,CAC7B,MAAMN,EAAO,UACX,CACE,yDACA,SAASG,GAAe,EAAE,GAC1B,UAAUC,CAAG,GACb,aAAaK,GAAY,EAAE,GAC3B,uCACA,gBACA,YAAYJ,CAAK,GACjB,YAAYC,CAAK,EACnB,EAAE,KAAM,EAAG,CACb,EAGE,OAAAL,EAAA,cAACH,GAAO,KAAAE,CACN,EAAAC,EAAA,cAACS,EAAA,CACC,IAAI,sBACJ,UAAU,OACV,YAAa,CAAE,GAAI,KAAM,EACzB,MAAM,OACN,IAAKC,EAAA,CAEP,EAAAV,EAAA,cAAC,OAAK,KAAA,qBAAmB,CAC3B,CAEJ,EC/Cee,GAAA,qqGCeFC,GAAkB,CAAC,CAC9B,YAAAd,EACA,IAAAC,EACA,SAAAK,EACA,MAAAJ,EACA,MAAAC,CACF,oBACGJ,EAAU,CAAA,YAAAC,EAA0B,IAAAC,EAAU,SAAAK,EAAoB,MAAAJ,EAAc,MAAAC,CAC/E,EAAAL,EAAA,cAACS,EAAA,CACC,IAAI,mBACJ,UAAU,OACV,YAAa,CAAE,GAAI,KAAM,EACzB,MAAM,OACN,IAAKC,EAAA,CACP,EACAV,EAAA,cAAC,OAAK,KAAA,kBAAgB,CACxB,EC/BaiB,GAAA,i9GCeFC,GAAgB,CAAC,CAAE,YAAAhB,EAAa,IAAAC,EAAK,SAAAK,EAAU,MAAAJ,EAAO,MAAAC,CAAM,oBACtEJ,EAAU,CAAA,YAAAC,EAA0B,IAAAC,EAAU,SAAAK,EAAoB,MAAAJ,EAAc,MAAAC,CAC/E,EAAAL,EAAA,cAACS,EAAA,CACC,IAAI,iBACJ,UAAU,OACV,YAAa,CAAE,GAAI,KAAM,EACzB,MAAM,OACN,IAAKC,EAAA,CACP,EACAV,EAAA,cAAC,OAAK,KAAA,gBAAc,CACtB,mECXImB,EAAkBC,GAAgBA,EAAK,cAAc,QAAS,aAAc,EAAG,EAUxEC,GAAgB,CAAC,CAAE,YAAAnB,EAAa,IAAAC,EAAK,SAAAK,EAAU,MAAAJ,EAAO,MAAAC,KAAiC,CAClG,KAAM,CAAEiB,EAAMC,CAAQ,EAAIC,EAAAA,SAAmB,EAAM,EAEnD,OAEIxB,EAAA,cAAAA,EAAA,SAAA,KAAAA,EAAA,cAAC,SAAA,CACC,UAAW,GAAGT,EAAO,MAAM,iHAC3B,KAAK,SACL,QAAS,IAAMgC,EAAUD,GAAU,CAACA,CAAK,CAAA,EAExCtB,EAAA,cAAAX,EAAA,CAAgB,KAAMoC,GAAiB,UAAU,YAAY,EAAE,iBAIlE,EAAAzB,EAAA,cAAC0B,GAAA,CACC,SAAQ,GACR,eAAgB,GAAGnC,EAAO,KAAK,cAC/B,KAAA+B,EACA,QAAS,IAAMC,EAAS,EAAM,CAAA,EAE9BvB,EAAA,cAAC,MAAG,UAAU,wDAAA,EAAyD,oBAEpEA,EAAA,cAAA,KAAA,IAAG,EAAE,eAER,EACCA,EAAA,cAAA,KAAA,CAAG,UAAU,6BAAA,kBACX,KACC,KAAAA,EAAA,cAACO,GAAA,CACC,YAAAL,EACA,IAAKiB,EAAehB,CAAI,EACxB,SAAAK,EACA,MAAOW,EAAef,CAAM,EAC5B,MAAAC,CAAA,CAAA,CAEJ,EACCL,EAAA,cAAA,KAAA,CAAG,UAAU,MACZ,EAAAA,EAAA,cAACY,GAAA,CACC,YAAAV,EACA,IAAKiB,EAAehB,CAAI,EACxB,SAAAK,EACA,MAAOW,EAAef,CAAM,EAC5B,MAAAC,CAAA,CAAA,CAEJ,EACCL,EAAA,cAAA,KAAA,CAAG,UAAU,MACZ,EAAAA,EAAA,cAACc,GAAA,CACC,YAAAZ,EACA,IAAKC,EAAI,YAAY,EACrB,SAAAK,EACA,MAAOJ,EAAM,YAAY,EACzB,MAAAC,CAAA,CAAA,CAEJ,EACCL,EAAA,cAAA,KAAA,CAAG,UAAU,MACZ,EAAAA,EAAA,cAACgB,GAAA,CACC,YAAAd,EACA,IAAKiB,EAAehB,CAAI,EACxB,SAAAK,EACA,MAAOW,EAAef,CAAM,EAC5B,MAAAC,CAAA,CAAA,CAEJ,EACCL,EAAA,cAAA,KAAA,CAAG,UAAU,MACZ,EAAAA,EAAA,cAACkB,GAAA,CACC,YAAAhB,EACA,IAAKiB,EAAehB,CAAI,EACxB,SAAAK,EACA,MAAOW,EAAef,CAAM,EAC5B,MAAAC,CAAA,CAAA,CAEJ,CACF,CAAA,CAEJ,CAEJ,iCCrFasB,EAA2B,CAAC,CAAE,KAAAC,EAAM,UAAA3C,EAAW,KAAAyB,EAAM,MAAAL,KAChElB,EAAA,cAAC,OAAI,UAAWC,EAAK,SAAUH,CAAU,CAAA,kBACtCI,EAAgB,CAAA,UAAU,iBAAiB,WAAU,GAAC,KAAAqB,EAAY,EAEnEvB,gBAAC,WACEA,gBAAA,IAAA,CAAE,UAAW,GAAGI,EAAO,IAAI,+BAAgCc,CAAM,EACjElB,EAAAA,cAAA,IAAA,CAAE,UAAW,GAAGI,EAAO,IAAI,YAAe,EAAAqC,CAAK,CAClD,CACF,ECtBIC,EAAyB,IACzBC,GAAuB,KAEvBC,GAAoB,CAAEC,EAAiBC,IAAkC,CACvE,MAAAC,EAA2BD,GAAoC,CAC7D,MAAAE,EAAsBF,EAAe,MAAO,gBAAiB,EAC7DG,EAAuBD,EACzB,SACAA,EAAU,CAAC,EAAE,QAAS,iBAAkB,CAAEE,EAAGC,IAAWA,EAAM,MAAO,GAAI,EAAE,OAAO,CAAEC,EAAeC,EAAoBC,IAChHA,IAAM,EACFF,EAAQ,SAAUC,CAAW,EAAIV,GAEnCS,EAAQ,SAAUC,CAAW,EAAIX,EACvC,CAAE,CAAC,CAAA,EAEN,EAEEa,EAAwBT,EAAe,MAAO,gBAAiB,EAC/DU,EAAyBD,EAC3B,SACAA,EAAY,CAAC,EAAE,QAAS,iBAAkB,CAAEL,EAAGC,IAAW,OAAQ,SAAUA,CAAM,EAAIT,CAAuB,CAAC,CAAA,EAE9G,EAEJ,OAAOO,EAAeO,CACxB,EAEA,OAAO,IAAI,KAAMX,EAAU,UAAYE,EAAwBD,CAAe,CAAC,CACjF,EAEaW,GAAU,CACrB,kBAAAb,EACF,+QCAac,GAAmB,CAAC,CAC/B,UAAA5D,EACA,UAAA6D,EACA,mBAAAC,EACA,SAAAC,EACA,kBAAAC,CACF,IAAc,CACZ,MAAMC,EAASC,EAAU,EAEnBC,EAAgBN,EAAU,UAAY,SACtCO,EAAa,IAAI,KAAMP,EAAU,UAAW,EAC5CQ,EAAWV,GAAQ,kBAAmBS,EAAYD,CAAc,EAChEG,EAAcF,EAAW,QAAY,EAAA,KAAK,OAAS,OAGvD,OAAAlE,EAAA,cAAC,MAAA,CACC,UAAWC,EACT,wCACA,CACE,CAACG,EAAO,QAAQ,EAAGyD,EACnB,CAACzD,EAAO,SAAS,EAAGgE,CACtB,EACAtE,CAAA,CACF,kBAEC,KAAG,CAAA,UAAW,GAAGM,EAAO,QAAQ,8CAA8C,oBAE/E,EAECJ,EAAA,cAAA,MAAA,CAAI,UAAU,eAAA,kBACZ,MAAI,CAAA,UAAW,GAAGI,EAAO,MAAM,gCAAA,EAC7BJ,EAAAA,cAAA,MAAA,CAAI,UAAU,QACb,EAAAA,EAAAA,cAACE,EAAgB,CAAA,UAAU,iBAAiB,WAAU,GAAC,KAAMmE,EAAe,CAAA,EAE5ErE,EAAAA,cAAC,MAAI,CAAA,UAAU,aACb,EAAAA,gBAAC,SAAO,CAAA,UAAW,GAAGI,EAAO,IAAI,+BAC9B,EAAAC,EAAQ6D,EAAY,OAAQ,CAC/B,kBACC,SAAO,CAAA,UAAW,GAAG9D,EAAO,IAAI,+BAAA,EAC9BC,EAAQ6D,EAAY,UAAW,EAC7B,QAAS,MAAO,EAAG,EACnB,QAAS,QAAW1D,GAASA,EAAI,YAAA,CAAa,CACnD,EAECoD,GACE5D,EAAA,cAAA,MAAA,CAAI,UAAU,gCACb,EAAAA,EAAA,cAACkC,GAAA,CACC,IAAKiC,EACL,MAAOD,EACP,MAAOP,EAAU,aAAA,CAAA,CAErB,CAEJ,CACF,CACF,EAEC3D,EAAA,cAAA,MAAA,CAAI,UAAU,uBACb,EAAAA,EAAA,cAACwC,EAAA,CACC,UAAWpC,EAAO,OAClB,KAAM6D,EACN,KAAMK,GACN,MAAM,gBAAA,CAAA,EAERtE,EAAA,cAACwC,EAAA,CACC,UAAWpC,EAAO,OAClB,KAAMuD,EAAU,SAChB,KAAMY,GACN,MAAM,WAAA,CAAA,EAERvE,EAAA,cAACwC,EAAA,CACC,KAAMmB,EAAU,aAChB,KAAMa,GACN,MAAM,+BACN,UAAW,GAAGpE,EAAO,MAAM,UAAA,CAAA,CAE/B,EAEAJ,EAAAA,cAAC,MAAI,CAAA,UAAU,yCACZA,EAAAA,cAAA,MAAA,CAAI,UAAW,GAAGI,EAAO,MAAM,WAC7BJ,EAAAA,cAAAE,EAAA,CAAgB,UAAU,iBAAiB,WAAU,GAAC,KAAMuE,GAAe,EAC5EzE,gBAAC,IAAE,CAAA,UAAW,GAAGI,EAAO,IAAI,YAC1B,EAAAJ,EAAA,cAAC,QAAK,UAAU,kBAAA,EAAmB,WAAS,EAC3C,+CACH,CACF,EAEAA,EAAA,cAACwC,EAAA,CACC,UAAWpC,EAAO,OAClB,KAAMsE,GACN,MAAM,eACN,KAAMf,EAAU,WAAA,CAAA,EAGjBG,GACE9D,EAAAA,cAAA,MAAA,CAAI,UAAU,QAAA,EACZA,gBAAAE,EAAA,CAAgB,UAAU,iBAAiB,WAAU,GAAC,KAAMyE,EAAc,CAAA,EAE1E3E,gBAAA,MAAA,KACEA,EAAAA,cAAA,IAAA,CAAE,UAAW,GAAGI,EAAO,IAAI,6BAAA,EACzB,SAASuD,EAAU,UAAU,mBAChC,EACA3D,EAAA,cAAC,KAAE,UAAW,GAAGI,EAAO,IAAI,WACzB,EAAA,2DACAJ,EAAA,cAAA,IAAA,CAAE,KAAM+D,EAAO,UAAU,CAAA,EAAG,6BAA2B,CAC1D,CACF,CACF,EAGDF,GAAY,KAAK,IAAI,EAAIM,EAAS,QAAA,EAAY,sBAC5C,MAAI,CAAA,UAAW,GAAG/D,EAAO,OAAO,sCAAA,EAC9BgE,EACCpE,EAAA,cAAA4E,EAAA,SAAA,KACGjB,EAAU,YACT3D,EAAA,cAAC,IAAA,CACC,UAAU,gDACV,KAAM2D,EAAU,WAChB,OAAO,QAAA,EAEN,SAASA,EAAU,gBAAgB,QAAS,KAAM,GAAI,EAAE,YAAY,QACvE,EAEDA,EAAU,WACR3D,EAAA,cAAA,IAAA,CAAE,UAAU,WACV,EAAA,eACAA,EAAAA,cAAA,SAAA,KAAQ2D,EAAU,SAAU,CAC/B,CAEJ,EAEC3D,EAAAA,cAAA,KAAA,CAAG,UAAW,GAAGI,EAAO,QAAQ,2CAA2C,8EAE5E,CAEJ,CAEJ,CACF,CACF,CAEJ,ECgRY,IAAAyE,GAAAA,IACVA,EAAA,UAAY,YACZA,EAAA,gBAAkB,oBAClBA,EAAA,kBAAoB,qBACpBA,EAAA,UAAY,aACZA,EAAA,cAAgB,iBAChBA,EAAA,YAAc,eACdA,EAAA,YAAc,gBACdA,EAAA,sBAAwB,yBARdA,IAAAA,GAAA,CAAA,CAAA,EAWAC,GAAAA,IACVA,EAAA,KAAO,OACPA,EAAA,WAAa,cAFHA,IAAAA,GAAA,CAAA,CAAA,4DC5bCC,EAAgB,CAAC,CAAE,OAAAC,EAAQ,UAAAlF,EAAW,MAAAmF,EAAO,QAAAC,KACxDlF,EAAA,cAAC,SAAA,CACC,UAAWC,EACT,0HACA,CAAE,kCAAmC+E,CAAO,EAC5C5E,GAAO,eACPN,CACF,EACA,QAAAoF,EACA,KAAK,QAAA,EAEJD,CACH,qGCVWE,GAA2B,CAAC,CAAE,UAAArF,EAAW,kBAAAsF,EAAoB,EAAG,SAAAzE,KAAe,CAC1F,KAAM,CAAE0E,EAAaC,CAAO,EAAIC,GAAe,EAG7C,OAAAvF,EAAA,cAAC,MAAA,CACC,IAAKqF,EACL,UAAWpF,EAAKH,EAAW,CACzB,CAACM,EAAO,eAAe,EAAG,CAACkF,GAAUA,GAAUF,EAC/C,CAAChF,EAAO,aAAa,EAAGkF,EAASF,CAClC,CAAA,CAAA,EAEAzE,CACH,CAEJ,EAGA,SAAS4E,IAAoE,CAC3E,KAAM,CAAED,EAAQE,CAAU,EAAIC,EAAAA,SAAwB,IAAK,EAYpD,MAAA,CAVeC,GAA0B,CACzCA,GAGEJ,IAAW,MAAQI,EAAK,cAChBF,EAAAE,EAAK,aAAe,EAAG,CAGxC,EAEsBJ,CAAO,CAC/B,CCnCa,MAAAK,EAAW,CAAC,CAAE,KAAAlD,EAAM,UAAA3C,CAC/B,IAAAE,EAAA,cAAC4F,EAAc,CAAA,UAAA9F,EAAsB,mBAAkB,EAAA,EACpD2C,CACH,mLCIWoD,GAAO,CAAC,CAAE,KAAApD,EAAM,OAAAqD,EAAQ,YAAAC,EAAc,CAAC,CAAA,IAClD/F,EAAAA,cAAC,OAAI,UAAU,MAAA,EACZ8F,GAAU9F,EAAA,cAAC,OAAI,UAAU,cAAA,EAAgB8F,CAAO,kBAEhDX,GAAQ,CAAA,kBAAmB,GACzB,EAAA1C,mBAASkD,EAAS,CAAA,KAAAlD,CAAA,CAAY,EAE9BsD,EAAY,IAAMC,GAChBhG,EAAAA,cAAA,MAAA,CAAI,UAAWI,EAAO,WAAY,IAAK4F,EAAI,QACzChG,gBAAA,MAAA,CAAI,UAAW,GAAGI,EAAO,MAAM,qBAC7BJ,EAAAA,cAAAE,EAAA,CAAgB,UAAWD,EAAKG,EAAO,KAAM,WAAY,EAAG,WAAU,GAAC,KAAM4F,EAAI,KAAM,EACvFA,EAAI,MACP,kBAECL,EAAS,CAAA,KAAMK,EAAI,KAAM,UAAW5F,EAAO,QAAU,CAAA,CACxD,CACD,CACH,CACF,iHCpBW6F,GAA0B,CAAC,CAAE,UAAAnG,EAAW,KAAAyB,EAAM,GAAA2E,EAAI,MAAAhF,KAC7DlB,EAAA,cAAC,MAAA,CACC,UAAWC,EACTH,EACAM,EAAO,OACP,uDAAA,CACF,EAEAJ,EAAAA,cAAC,MAAG,GAAAkG,EAAQ,UAAWjG,EAAKG,EAAO,SAAU,sCAAuC,CAAA,EACjFc,CACH,EAECK,GAAQvB,EAAA,cAACE,EAAgB,CAAA,UAAU,yBAAyB,KAAAqB,CAAY,CAAA,CAC3E,mPCHWiB,GAAkC,CAAC,CAC9C,KAAAC,EACA,WAAA0D,EACA,UAAArG,EACA,WAAAsG,EACA,GAAAF,EACA,OAAAG,EACA,MAAAnF,EACA,SAAAoF,EACA,YAAAP,EAAc,CAAC,EACf,iBAAAQ,CACF,IAAM,CACJ,MAAMC,EAAY/D,GAAQ,CAAC,CAACsD,EAAY,OAElCU,EAEDzG,EAAA,cAAA4E,EAAA,SAAA,KAAAwB,GACEpG,EAAA,cAAA,MAAA,CAAI,UAAWC,EAAKG,EAAO,WAAY,2BAA4B,CACjE,EAAA,KAAKgG,CAAU,EAClB,EAEDE,GACCtG,EAAAA,cAAC,MAAI,CAAA,UAAWC,EAAKG,EAAO,SAAU,2BAA4B,CAAI,EAAAkG,CAAS,CAEnF,EAIA,OAAAtG,gBAAC,OAAI,UAAWC,EAAKG,EAAO,QAASN,EAAW,0CAA2C,CAAA,EACxF0G,GACCxG,EAAA,cAAC,SAAA,CACC,UAAWC,EACT,yEACAG,EAAO,aACP,CACE,CAACA,EAAO,gBAAgB,EAAGiG,CAAA,CAE/B,EACA,QAAS,IAAME,EAAiB,EAChC,KAAK,QAAA,CAAA,EAITvG,EAAA,cAACiG,GAAA,CACC,GAAAC,EACA,KAAMM,IAAeH,EAASK,GAAYC,IAC1C,MAAOP,EAAa,GAAGlF,CAAK,IAAMA,CAAA,CAAA,EAGnC,CAACsF,GAAaC,EAEdD,GACExG,EAAAA,cAAA4G,GAAA,CAAO,UAAWxG,EAAO,OAAQ,OAAAiG,EAAgB,cAAe,GAC9DI,EACAzG,EAAA,cAAA6F,GAAA,CAAK,KAAApD,EAAY,OAAQ0D,EAAY,YAAAJ,CAA0B,CAAA,CAClE,CAEJ,CAEJ,kDCtEac,EAAc,CAAC,CAC1B,UAAA/G,EACA,aAAAgH,EACA,SAAAC,EACA,gBAAAC,CACF,IACGhH,EAAA,cAAA,MAAA,CAAI,UAAWC,EAAKH,EAAWM,GAAO,YAAa,CAAA,EACjD2G,EAAS,IAAI,CAAEE,EAAGC,IAAW,CACtB,MAAAhB,EAAKe,EAAE,MAAM,UAAU,EACvBZ,EAASS,EAAaZ,CAAE,EACxBK,EAAmB,IAAM,CACbS,EAAA,CAAE,GAAGF,EAAc,CAACZ,CAAE,EAAG,CAACG,EAAQ,CACpD,EAGE,OAAArG,EAAA,cAACwC,GAAA,CACC,IAAKyE,EAAE,MACP,KAAMA,EAAE,KACR,WAAYA,EAAE,WACd,UAAWA,EAAE,UACb,WAAYA,EAAE,WACd,iBAAAV,EACA,GAAAL,EACA,OAAAG,EACA,YAAaY,EAAE,YACf,SAAUA,EAAE,SACZ,MAAO,GAAGC,EAAQ,CAAC,KAAKD,EAAE,KAAK,EAAA,CACjC,CAEJ,CAAC,CACH,6FChCWE,GAAW,CAAC,CAAE,SAAAC,CAAA,IACxBpH,EAAA,cAAA,MAAA,CAAI,UAAU,uDACZoH,GACCpH,EAAA,cAAC,MAAA,CACC,UAAWC,EACTG,EAAO,UACPA,EAAO,IACP,iFAAA,CACF,EAEAJ,EAAAA,cAAC,MAAI,CAAA,UAAU,sEACb,EAAAA,EAAA,cAACE,EAAA,CACC,UAAWD,EAAKG,EAAO,KAAM,2BAA4B,EACzD,KAAMiH,EAAA,CACR,EACCrH,gBAAA,MAAA,CAAI,UAAWC,EAAKG,EAAO,QAAS,cAAe,GAAG,WAAS,CAClE,EAEAJ,EAAA,cAAC,MAAA,CACC,UAAWC,EACTG,EAAO,QACP,sEAAA,CACF,EAECJ,EAAAA,cAAA,KAAA,KAAI,GAAGoH,CAAQ,SAAU,CAAA,CAE9B,kBAGD,MAAI,CAAA,UAAWnH,EAAKG,EAAO,QAASA,EAAO,IAAK,MAAO,GACrDJ,gBAAA,MAAA,KACEoH,GAEGpH,EAAAA,cAAA4E,EAAA,SAAA,KAAA5E,EAAAA,cAAC,cAAQ,GAAGoH,CAAQ,mBAAoB,EACxCpH,gBAAC,KAAG,IAAA,CACN,EACA,oFAEJ,kBAEC,MAAI,CAAA,UAAU,QACZA,EAAAA,cAAA,IAAA,CAAE,KAAK,2BAA2B,IAAI,aAAa,OAAO,UAAS,uBAEpE,EACC,wFACH,CACF,CACF,ECrCWsH,GAAc,CAAC,CAC1B,UAAAxH,EACA,aAAAgH,EACA,SAAAM,EACA,SAAAL,EACA,gBAAAC,CACF,IAAc,CACZ,MAAMO,EAAkBC,EAAkB,CAAE,SAAAJ,EAAU,SAAAL,EAAU,EAChE,uCAEK/G,EAAA,cAAA+E,EAAA,CAAc,UAAU,8BAA8B,MAAM,uBAAuB,EACpF/E,EAAA,cAAC6G,EAAA,CACC,UAAW5G,EAAK,qBAAsBH,CAAU,EAChD,aAAAgH,EACA,SAAUS,EACV,gBAAAP,CAAA,CAAA,CAEJ,CAEJ,EAEO,SAASQ,EAAkB,CAAE,SAAAJ,EAAU,SAAAL,GAA6B,CAClE,OAAAU,UAAc,IAAM,CACnB,MAAAC,EAAYX,EAAS,KAAOrB,GAAUA,EAAK,cAAgBb,EAAsB,SAAU,EAC3F8C,EAAQZ,EAAS,KAAOrB,GAAUA,EAAK,cAAgBb,EAAsB,aAAc,EAC3F+C,EAAWb,EAAS,KACtBrB,GAAUA,EAAK,cAAgBb,EAAsB,WACzD,EAEMgD,EAAOd,EAAS,KAAOrB,GAAUA,EAAK,cAAgBb,EAAsB,SAAU,EACtFiD,EAAWf,EAAS,KACtBrB,GAAUA,EAAK,cAAgBb,EAAsB,WACzD,EACMkD,EAAYhB,EAAS,KACvBrB,GAAUA,EAAK,cAAgBb,EAAsB,qBACzD,EAEM0C,EAA6B,CAAC,EAE/B,GAAAG,GAAaC,GAASC,EAAW,CACpC,MAAM7B,EAAsC,CAAC,EACxC4B,GACH5B,EAAY,KAAK,CACf,KAAM4B,EAAM,KACZ,KAAMK,GACN,OAAQ,2CAAA,CACT,EAEEN,GACH3B,EAAY,KAAK,CACf,KAAM2B,EAAU,KAChB,KAAMO,GACN,OAAQ,WAAA,CACT,EAEEL,GACH7B,EAAY,KAAK,CACf,KAAM6B,EAAS,KACf,KAAMM,GACN,OAAQ,cAAA,CACT,EAGHX,EAAgB,KAAK,CACnB,MAAO,oBACP,YAAAxB,CAAA,CACD,CAAA,CAGH,OAAK+B,GACHP,EAAgB,KAAK,CACnB,KAAMO,EAAS,KACf,MAAO,iCAAA,CACR,EAGEC,GACHR,EAAgB,KAAK,CACnB,KAAMQ,EAAU,KAChB,MAAO,2BAAA,CACR,EAGEF,GACHN,EAAgB,KAAK,CACnB,KAAMM,EAAK,KACX,WAAa7H,EAAA,cAAAmH,GAAA,CAAS,SAAAC,CAAoB,CAAA,EAC1C,MAAO,yBAAA,CACR,EAGIG,CAAA,EACN,CAAER,EAAUK,CAAS,CAAC,CAC3B,CCjHA,MAAMe,GAAQC,GAA+C,CAC3D,OAASA,EAAS,CAChB,KAAKtD,EAA0B,KACtB,MAAA,OACT,KAAKA,EAA0B,WACtB,MAAA,cACT,QACS,MAAA,CAEb,EAEauD,GAAwB,CACnC,IAAAF,EACF,ECQaG,GAAc,CAAC,CAC1B,UAAAxI,EACA,gBAAAyI,EACA,aAAAzB,EACA,SAAAC,EACA,gBAAAC,CACF,IAAc,CACZ,MAAMO,EAAkBiB,EAAkB,CAAE,gBAAAD,EAAiB,SAAAxB,EAAU,EAEvE,uCAEK/G,EAAA,cAAA+E,EAAA,CAAc,UAAU,8BAA8B,MAAM,eAAe,EAC5E/E,EAAA,cAAC6G,EAAA,CACC,UAAW5G,EAAK,qBAAsBH,CAAU,EAChD,aAAAgH,EACA,SAAUS,EACV,gBAAAP,CAAA,CAAA,CAEJ,CAEJ,EAEO,SAASwB,EAAkB,CAAE,SAAAzB,EAAU,gBAAAwB,GAAoC,CACzE,OAAAd,UAAc,IAAM,CACzB,MAAMgB,EAAe1B,EAAS,KAC1BrB,GAAUA,EAAK,cAAgBb,EAAsB,iBACzD,EACM6D,EAAQ3B,EAAS,KACnBrB,GAAUA,EAAK,cAAgBb,EAAsB,eACzD,EAIM0C,EAAgD,CACpD,CACE,MAAO,aAJMc,GAAsB,IAAKE,CAAgB,GAAKzD,EAA0B,MAI3D,WAAY,CAAA,GACxC,SAAU,uEAAA,CAEd,EAEA,OAAK2D,GACHlB,EAAgB,KAAK,CACnB,KAAMkB,EAAa,KACnB,MAAO,qBACP,WAAY,2EAAA,CACb,EAGEC,GACHnB,EAAgB,KAAK,CACnB,KAAMmB,EAAM,KACZ,MAAO,mBAAA,CACR,EAGInB,CAAA,EACN,CAAER,EAAUwB,CAAgB,CAAC,CAClC,wGCnEatC,EAAS,CAAC,CAAE,gBAAA0C,EAAiB,KAAAC,KAAyB,CACjE,MAAM7E,EAASC,EAAU,EAGvB,OAAAhE,EAAA,cAAC,MAAA,CACC,UAAW,GAAGI,EAAO,IAAI,4GAAA,EAEvByI,IAUC7I,EAAA,cAAA,OAAA,CAAK,UAAU,gBACd,EAAAA,EAAA,cAAC8I,EAAA,CACC,UAAU,YACV,UAAW1I,EAAO,UAClB,KAAK,oBACL,QAAQ,YAAA,CAAA,CAEZ,EAhBAJ,EAAA,cAAC,KAAE,UAAU,iBAAiB,KAAK,GACjC,EAAAA,EAAA,cAAC8I,EAAA,CACC,UAAU,YACV,UAAW,GAAG1I,EAAO,SAAS,6BAC9B,KAAK,oBACL,QAAQ,YAAA,CAAA,CAEZ,EAYDJ,EAAAA,cAAA,MAAA,CAAI,UAAU,wBAAA,EAA0B4I,CAAK,EAE9C5I,EAAAA,cAAC,MAAI,CAAA,UAAU,qBACb,EAAAA,EAAA,cAAC,MAAG,UAAU,kBAAA,EACXA,EAAAA,cAAA,KAAA,KACEA,EAAAA,cAAA,IAAA,CAAE,UAAU,uBAAuB,KAAM+D,EAAO,MAAA,GAAS,iBAE1D,CACF,EACA/D,EAAAA,cAAC,KAAG,CAAA,UAAU,MACZ,EAAAA,EAAA,cAAC,KAAE,UAAU,uBAAuB,KAAM+D,EAAO,UAAU,CAAA,EAAG,iBAE9D,CACF,EACC/D,EAAAA,cAAA,KAAA,CAAG,UAAU,MAAA,kBACX,IAAE,CAAA,UAAU,uBAAuB,KAAM+D,EAAO,KAAK,KAAK,CAAA,EAAG,eAE9D,CACF,CACF,EAEC4E,CACH,CACF,CAEJ,iICrDaI,GAAO,CAAC,CAAE,SAAAC,KAA2B,CAC1C,MAAAL,kBACH,KAAG,CAAA,UAAU,uBACX9H,EAAA,cAAA,KAAA,CAAG,UAAU,SACZ,EAAAA,EAAA,cAAC,SAAA,CACC,UAAW,GAAGT,EAAO,MAAM,wFAC3B,KAAK,SACL,QAAS,IAAM,MAAM,CAAA,EAErBS,EAAA,cAAC,YAAK,OAAK,EACVA,EAAA,cAAAX,EAAA,CAAgB,UAAU,YAAY,KAAM+I,EAAS,CAAA,CAAA,CAE1D,CACF,EAGIL,EACH/H,EAAA,cAAA,MAAA,CAAI,UAAW,GAAGT,EAAO,kBAAkB,qCAAA,EACzCS,EAAA,cAAA,MAAA,CAAI,UAAW,GAAGT,EAAO,QAAQ,cAAe4I,CAAS,CAC5D,EAGK,OAAAnI,EAAA,cAACoF,EAAO,CAAA,gBAAA0C,EAAkC,KAAAC,CAAY,CAAA,CAC/D,sCCrBaM,GAAO,CAAC,CAAE,SAAAC,EAAU,UAAArJ,EAAW,KAAAsJ,EAAM,QAAAlE,KAAsB,CACtE,KAAM,CAAEmE,EAAQC,CAAU,EAAI7D,EAAAA,SAAgB,EAAM,EAC9C8D,EAAMC,EAAM,OAAQ,IAAK,EAE/BC,OAAAA,EAAAA,UAAgB,IAAM,CACpB,MAAMC,EAAe,IAAM,CACzB,MAAMC,EAAiB,OAAO,QACxBC,EAAkBL,EAAI,QACxB,OAAO,YAAcA,EAAI,QAAQ,wBAAwB,IACzD,KACJD,EAAWK,GAAkBC,CAAgB,CAC/C,EACO,cAAA,iBAAkB,SAAUF,CAAa,EAEzC,IAAM,OAAO,oBAAqB,SAAUA,CAAa,CAAA,CACjE,EAGC1J,EAAA,cAAC,MAAA,CACC,IAAAuJ,EACA,UAAWtJ,EAAKH,EAAW,wDAAyD,CAClF,CAACM,GAAO,MAAM,EAAGiJ,CAClB,CAAA,CAAA,EAEAD,EAAK,IAAMS,GACV7J,EAAA,cAAC+E,EAAA,CACC,IAAK8E,EAAE,GACP,OAAQA,EAAE,KAAOV,EACjB,MAAOU,EAAE,MACT,QAAS,IAAM3E,GAAWA,EAAS2E,EAAE,EAAG,CAAA,CAE3C,CAAA,CACH,CAEJ,0ECnCaC,GAAkB,CAAC,CAAE,SAAA/C,KAAuB,CACvD,MAAMgD,EAASvC,EAAkB,CAAE,SAAAT,EAAU,EACvCiD,EAASxB,EAAkB,CAAE,SAAAzB,EAAU,EAE7C,uBACG,MAAI,CAAA,UAAW9G,EAAKG,EAAO,IAAK,gCAAiC,CAChE,EAAAJ,gBAAC,MAAG,UAAU,0BAAA,EAA2B,kBAAgB,EAEzDA,EAAA,cAAC,OAAI,UAAU,0BACZ,MAAI,CAAA,UAAU,kBACZA,EAAA,cAAA,KAAA,CAAG,UAAWC,EAAKG,EAAO,aAAc,0BAA2B,CAAA,EAAG,sBAEvE,EAEC2J,EAAO,IAAI,CAAEE,EAAS/C,IACpBlH,gBAAA,KAAA,CAAG,UAAU,yCAAyC,IAAKiK,EAAQ,OACjE,GAAG/C,EAAQ,CAAC,KAAK+C,EAAQ,KAAK,EACjC,CACD,CACH,EAECjK,EAAA,cAAA,MAAA,CAAI,UAAU,kBACbA,EAAAA,cAAC,MAAG,UAAWC,EAAKG,EAAO,aAAc,0BAA2B,GAAG,cAAY,EAElF4J,EAAO,IAAI,CAAEC,EAAS/C,IACrBlH,EAAA,cAAC,MAAG,UAAU,yCAAyC,IAAKiK,EAAQ,OACjE,GAAG/C,EAAQ,CAAC,KAAK+C,EAAQ,KAAK,EACjC,CACD,CACH,CACF,CACF,CAEJ,uEC9CeC,GAAA,8CCAAC,GAAA,8CCAAC,GAAA,mFCWTC,EAAsB,IAAM,CAChC,IAAIC,EAAWF,GAOf,OANKG,EAAY,SAAU,IAAK,EACnBD,EAAAJ,GACDK,EAAY,SAAU,IAAK,IAC1BD,EAAAH,IAGRtB,IACI,KAIPhI,EAAA,cAAC,IAAA,CACC,KAAK,iFACL,OAAO,SACP,IAAI,YAAA,EAEJA,EAAA,cAAC,OAAI,UAAWT,GAAO,OAAQ,IAAKkK,EAAU,IAAI,yBAA0B,CAAA,CAC9E,CAEJ,ECLaE,GAAwB,CAAC,CAAE,GAAAtE,KAAS,CAC/C,KAAM,CAAEuE,EAASC,CAAW,EAAI7J,EAAM,SAAU,QAAS,EACnD,CAAEiG,EAAcE,CAAgB,EAAInG,EAAM,SAAS,CAAA,CAAE,EAErD,CAAE,KAAM8J,GAAYC,EAA0B,iBAAiB1E,CAAE,GAAI,CACzE,cAAe,EAAA,CAChB,EAsBI,GApBLrF,EAAM,UAAU,IAAM,CACpB,GAAK8J,EAAU,CAEb,MAAME,EADQC,GAAG,MAAO,OAAO,SAAS,MAAO,EAClB,QACvBb,EAAU,SAAS,eAAgBY,CAAe,EAClDE,EAAM,CAAE,gBAAiB,qBAAsB,mBAAoB,EAAE,SACzEF,GAEE,SACA,SAECZ,IACHS,EAAYK,CAAI,EAChB/D,EAAgB,CAAE,GAAGF,EAAc,CAAC+D,CAAc,EAAG,GAAM,EAEhD,WAAA,IAAMZ,EAAQ,eAAe,CAAE,SAAU,QAAS,CAAC,EAAG,GAAI,EACvE,CACF,EACC,CAAEU,CAAQ,CAAC,EAET,CAACA,EAAiB,OAAA,KAEvB,MAAMK,EAAiBL,EACnBA,EAAQ,cAAgBA,EAAQ,SAAS,kBACzC,KAEEM,EACJN,EAAQ,gBACR,mFAAmFA,EAAQ,QAAQ,OAAOA,EAAQ,SAAS,IAAI,OAAOA,EAAQ,YAAY,kHAE5J,OAEI9J,EAAA,cAAAA,EAAA,SAAA,KAAAA,EAAA,cAACkI,GAAK,CAAA,SAAU4B,EAAQ,SAAS,IAAM,CAAA,EAEvC9J,EAAA,cAAC,MAAI,CAAA,UAAW,GAAGT,EAAO,MAAM,eAC9B,EAAAS,EAAA,cAACqK,EAAA,CACC,eAAAF,EACA,mBAAkB,GAClB,WAAY,CAACnC,EAAkB,EAC/B,KAAI,GACJ,SAAU8B,EAAQ,SAAS,KAC3B,kBAAmBA,EAAQ,SAAS,UACpC,aAAcA,EAAQ,sBACtB,YAAaA,EAAQ,cACrB,iBAAkBA,EAAQ,UAC1B,KAAMM,CAAA,CAAA,CAEV,EAEApK,EAAA,cAACjB,GAAA,CACC,UAAW+K,EAAQ,cACnB,UAAU,mCACV,WAAYA,EAAQ,UAAA,CAGtB,EAAA9J,EAAA,cAAC6C,GAAA,CACC,UAAW,GAAGtD,EAAO,OAAO,mDAC5B,UAAWuK,EACX,mBAAkB,GAClB,SAAQ,EAAA,CAAA,EAGT9J,EAAA,cAAAiJ,GAAA,CAAgB,SAAUa,EAAQ,SAAU,EAE7C9J,EAAA,cAACqI,GAAA,CACC,UAAU,eACV,SAAUuB,EACV,KAAM,CACJ,CAAE,GAAI,SAAU,MAAO,sBAAuB,EAC9C,CAAE,GAAI,SAAU,MAAO,cAAe,CACxC,EACA,QAAWU,GAAWT,EAAYS,CAAM,CAAA,CAG1C,EAAAtK,EAAA,cAACyG,GAAA,CACC,UAAWrH,EAAK,gBAAiB,CAAE,SAAUwK,IAAY,SAAU,EACnE,aAAA3D,EACA,SAAU6D,EAAQ,SAClB,SAAUA,EAAQ,SAClB,gBAAA3D,CAAA,CAGF,EAAAnG,EAAA,cAACyH,GAAA,CACC,UAAWrI,EAAK,gBAAiB,CAAE,SAAUwK,IAAY,SAAU,EACnE,gBAAiBE,EAAQ,gBACzB,aAAA7D,EACA,SAAU6D,EAAQ,SAClB,gBAAA3D,CAAA,CACF,kBAECqD,EAAU,IAAA,kBAEVe,GAAiB,CAAA,UAAU,cAAe,CAAA,CAC7C,CAEJ,8DCrHarC,GAAO,CAAC,CAAE,SAAAsC,EAAU,UAAAC,EAAW,cAAAC,KAAgC,CAC1E,MAAM3C,EACJ/H,EAAA,cAAC,MAAA,CACC,UAAW,GAAGT,GAAO,kBAAkB,0EAAA,EAEtCiL,GAEGxK,EAAA,cAAAA,EAAA,SAAA,KAAAA,EAAA,cAAC,KAAA,CACC,UAAWZ,EAAK,OAAQ,CACtB,gDAAiDqL,EACjD,aAAc,CAACA,CAAA,CAChB,EACD,QAAS,IAAMC,EAAe,EAAK,CAAA,EACpC,OAGD,EAAA1K,EAAA,cAAC,KAAA,CACC,UAAWZ,EAAK,YAAa,CAC3B,gDAAiD,CAACqL,EAClD,aAAcA,CAAA,CACf,EACD,QAAS,IAAMC,EAAe,EAAM,CAAA,EACrC,cAAA,CAGH,EAGD,CAACF,GAAYxK,EAAA,cAAC,KAAG,CAAA,UAAU,kBAAiB,cAAY,CAC3D,EAGK,OAAAA,EAAA,cAACoF,GAAO,KAAA2C,CAAY,CAAA,CAC7B,ECxCa4C,GAAc,CAAC,CAAE,UAAA1L,EAAW,KAAA8I,qBAEpC,MAAI,CAAA,UAAA9I,CAAA,EACFe,EAAA,cAAA,KAAA,KAAG,wBAAsB,EAC1BA,EAAA,cAAC,MAAI,CAAA,wBAAyB,CAAE,OAAQ+H,CAAA,EAAQ,EAChD/H,EAAA,cAAC,SAAG,CACN,qhBCSS4K,GAAW,CAAC,CAAE,aAAAhD,KAAmC,CACtD,MAAA4C,EAAW5C,EAAa,wBAA0B,KAElD,CAAE6C,EAAWI,CAAa,EAAIrJ,EAAAA,SAAmBgJ,CAAS,EAE1D,CAAE,aAAAM,CAAa,EAAIC,GAAAA,MAAO,OAAO,SAAS,MAAO,EACjDC,EAAcF,IAAiB,OAE/BG,EAAuB7L,EAAKG,EAAO,aAAc,0BAA2B,EAElF,OAEIS,EAAA,cAAAA,EAAA,SAAA,KAAAA,EAAA,cAACkI,GAAK,CAAA,SAAAsC,EAAoB,UAAAC,EAAsB,cAAeI,CAAc,CAAA,EAE7E7K,EAAA,cAAC,MAAI,CAAA,UAAW,GAAGT,EAAO,MAAM,+BAC9B,EAAAS,EAAA,cAACqK,EAAA,CACC,eAAgBzC,EAAa,eAC7B,mBAAkB,GAClB,WAAY,CAACI,EAAkB,EAC/B,SAAUJ,EAAa,cACvB,kBAAmBA,EAAa,mBAChC,YAAaA,EAAa,KAC1B,iBAAkBA,EAAa,iBAAA,CAAA,CAEnC,EAEC5H,EAAA,cAAA,MAAA,CAAI,UAAWT,EAAO,SACrB,EAAAS,EAAA,cAAC,MAAI,CAAA,UAAW,GAAGT,EAAO,gBAAgB,MACvC,EAAAiL,GACExK,EAAA,cAAA,MAAA,CAAI,UAAWZ,EAAI,CAAE,SAAU,CAACqL,CAAU,EAAG,kCAAmC,CAAA,EAC9EzK,EAAA,cAAA,KAAA,CAAG,UAAU,uCAAA,EAAwC,uBAAqB,EAC3EA,EAAA,cAAC,QAAA,CACC,UAAW,GAAGT,EAAO,KAAK,WAC1B,SAAQ,GACR,aAAa,aACb,QAAQ,OACR,OAAQqI,EAAa,2BAAA,kBAEpB,SAAO,CAAA,IAAKA,EAAa,sBAAuB,KAAK,WAAY,CAAA,CAAA,CAEtE,EAGF5H,EAAA,cAAC,MAAA,CACC,UAAWZ,EACTG,EAAO,YACPiL,EAAW,WAAa,WACxB,CAAE,SAAUC,CAAU,EACtB,+BAAA,CACF,EAECD,GAEGxK,EAAA,cAAAA,EAAA,SAAA,KAAAA,EAAA,cAAC,MAAG,UAAU,uCAAA,EAAwC,kBAAgB,CACxE,EAGFA,EAAA,cAAC,MAAA,CACC,IAAK4H,EAAa,KAClB,UAAWxI,EACTG,EAAO,aACP,CAAE,CAACA,EAAO,qBAAqB,EAAGiL,CAAS,EAC3C,0BACF,EACA,IAAK5C,EAAa,aAAA,CAAA,CAItB,EAAA5H,EAAA,cAAC,MAAA,CACC,UAAWZ,EACTG,EAAO,sBACP,CAAE,WAAY,CAACiL,CAAS,EACxB,CAAE,WAAYA,CAAS,EACvB,CAAE,SAAUC,CAAU,EACtB,0BAAA,CACF,EAECO,GACEhL,EAAA,cAAA2K,GAAA,CAAY,UAAWM,EAAsB,KAAMrD,EAAa,aAAc,EAGhF5H,EAAA,cAAA+E,EAAA,CAAc,UAAWkG,CAAA,EACvBjL,EAAA,cAAA,MAAA,CAAI,wBAAyB,CAAE,OAAQ4H,EAAa,SAAU,EAAG,CACpE,CAAA,CAEJ,CACF,EAEC5H,EAAA,cAAAwJ,EAAA,IAAU,EAEXxJ,EAAA,cAAC,SAAO,CAAA,UAAW,GAAGT,EAAO,MAAM,mBAAA,EAAqB,+BAErDS,EAAA,cAAA,KAAA,IAAG,EACJA,EAAA,cAAC,IAAE,CAAA,UAAWT,EAAO,WAAY,KAAK,8BAAA,EAA+B,uBAErE,CACF,CACF,CAEJ,EC9GM2L,GAAuC,CAAC,CAAE,aAAAtD,KAC7C5H,EAAA,cAAA,MAAA,CAAI,UAAU,kDACZ,EAAA4H,EAAa,cACX5H,EAAA,cAAA2J,GAAA,CAAK,GAAI/B,EAAa,aAAA,CAAe,EAErC5H,EAAA,cAAA4K,GAAA,CAAS,aAAAhD,EAA4B,CAE1C"}