@tomtom-org/maps-sdk 1.0.0-rc.2 → 1.0.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- import{distance,nearestPointOnLine}from"@turf/turf";import{clamp,isNil,sortedIndex}from"lodash-es";var DEFAULT_COMMON_BASE_URL="https://api.tomtom.com",defaultRetryConfig={initialWaitMs:.447,backoffFactor:1.618,timeoutMs:4e4},defaultConfig={commonBaseURL:"https://api.tomtom.com",apiKey:"",retry:defaultRetryConfig},TomTomConfig=class A{static{this.instance=new A}constructor(){this.config={...defaultConfig}}put(A){this.config={...this.config,...A,...A.retry&&{retry:{...defaultRetryConfig,...A.retry}}}}reset(){this.config={...defaultConfig}}get(){return this.config}},mergeFromGlobal=(A={})=>({...TomTomConfig.instance.get(),...A}),isProxyCredentialsMode=(A=TomTomConfig.instance.get())=>!A.apiKey&&"https://api.tomtom.com"!==(A.commonBaseURL??"https://api.tomtom.com"),LOOPBACK_IPV4=/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,isSecureBaseURL=A=>{let E;try{E=new URL(A)}catch{return!0}if("https:"===E.protocol)return!0;const{hostname:R}=E;return"http:"===E.protocol&&("localhost"===R||R.endsWith(".localhost")||"[::1]"===R||LOOPBACK_IPV4.test(R))},insecureBaseURLMessage=A=>`commonBaseURL ${A} is not https:, so requests to it would carry the API key in the clear; only loopback addresses may use http:.`,geopoliticalViews=["Unified","AE","AR","BN","CL","CN","DZ","IL","IN","KR","MA","MY","PH","PK","RS","RU","TR","TW","US","VN"],chargingPointCapabilities=["ChargingProfileCapable","ChargingPreferencesCapable","ChipCardSupport","ContactlessCardSupport","CreditCardPayable","DebitCardPayable","PedTerminal","RemoteStartStopCapable","Reservable","RfidReader","StartSessionConnectorRequired","TokenGroupCapable","UnlockCapable","PlugAndCharge","Unknown"],chargingPointRestrictions=["EvOnly","Plugged","Disabled","Customers","Motorcycles"],connectorTypes=["StandardHouseholdCountrySpecific","IEC62196Type1","IEC62196Type1CCS","IEC62196Type2CableAttached","IEC62196Type2Outlet","IEC62196Type2CCS","IEC62196Type3","Chademo","GBT20234Part2","GBT20234Part3","IEC60309AC3PhaseRed","IEC60309AC1PhaseBlue","IEC60309DCWhite","Tesla"],currentTypes=["AC1","AC3","DC"],geographyTypes=["Country","CountrySubdivision","CountrySecondarySubdivision","CountryTertiarySubdivision","Municipality","MunicipalitySubdivision","MunicipalitySecondarySubdivision","Neighbourhood","PostalCodeArea"],placeTypes=["POI","Street","Geography","Point Address","Address Range","Cross Street"],poiCategories=["ABORIGINAL_LAND","ADVENTURE_SPORTS_FACILITY","ADVENTURE_VEHICLE_TRAIL","ADVERTISING_COMPANY","AFGHAN_RESTAURANT","AFRICAN_RESTAURANT","AGRICULTURAL_SUPPLIES","AGRICULTURAL_TECHNOLOGY","AGRICULTURE","AIRFIELD","AIRLINE_ACCESS","AIRLINE_COMPANY","AIRPORT","AMBULANCE_UNIT","AMERICAN_RESTAURANT","AMPHITHEATER","AMUSEMENT_PARK","AMUSEMENT_PLACE","ANIMAL_SERVICE","ANIMAL_SHELTER","ANTIQUE_ART_SHOP","APARTMENT_RENTAL","AQUATIC_ZOO","ARABIAN_RESTAURANT","ARBORETA_AND_BOTANICAL_GARDENS","ARCH","ARMENIAN_RESTAURANT","ART_SCHOOL","ASIAN_RESTAURANT","ATHLETICS_TRACK","ATM","ATV_DEALER","AUSTRALIAN_RESTAURANT","AUSTRIAN_RESTAURANT","AUTOMOBILE_COMPANY","AUTOMOBILE_MANUFACTURING","BAGS_LEATHERWEAR","BAKERY","BANDB_OR_GUEST_HOUSE","BANK","BANQUET_ROOMS","BAR","BARBECUE_RESTAURANT","BASEBALL_PARK","BASKETBALL_ARENA","BASQUE_RESTAURANT","BATTLEFIELD","BAY","BEACH","BEACH_CLUB","BEAUTY_SALON","BEAUTY_SUPPLIES","BELGIAN_RESTAURANT","BETTING_STATION","BISTRO","BLOOD_BANK","BOATING_EQUIPMENT_AND_ACCESSORIES","BOAT_DEALER","BOAT_LAUNCHING_RAMP","BODYSHOP","BOLIVIAN_RESTAURANT","BOOK_SHOP","BORDER_CONTROL","BOWLING_CENTER","BRAZILIAN_RESTAURANT","BRIDGE","BRITISH_RESTAURANT","BUFFET_RESTAURANT","BUILDING","BULGARIAN_RESTAURANT","BUNGALOW_RENTAL","BURMESE_RESTAURANT","BUSINESS_PARK","BUSINESS_SERVICES","BUS_CHARTER_COMPANY","BUS_DEALER","BUS_LINES","BUS_STOP","BUTCHER","CABARET_THEATER","CABINS_LODGES","CABLE_AND_TELEPHONE_COMPANY","CAFE","CAFETERIA","CAFE_PUB","CALIFORNIAN_RESTAURANT","CAMBODIAN_RESTAURANT","CAMERAS_AND_PHOTOGRAPHY","CAMPING_GROUND","CANADIAN_RESTAURANT","CANNABIS_SHOP","CAPE","CARAVAN_SITE","CARIBBEAN_RESTAURANT","CARPET_FLOOR_COVERINGS","CAR_DEALER","CAR_GLASS_REPLACEMENT_SHOP","CAR_RENTAL","CAR_REPAIR_AND_SERVICE","CAR_WASH","CASINO_AND_GAMBLING","CATERING_SERVICES","CAVE","CEMETERY","CHALET_RENTAL","CHARGING_LOCATION","CHEMICAL_COMPANY","CHICKEN_RESTAURANT","CHILDCARE","CHILDREN_S_CLOTHES","CHILEAN_RESTAURANT","CHINESE_RESTAURANT","CHRISTMAS_OR_HOLIDAY_SHOP","CHURCH","CINEMA","CLEANING_SERVICES","CLOTHING_SHOP","CLUB_AND_ASSOCIATION","COCKTAIL_BAR","COFFEE_SHOP","COLLEGE_OR_UNIVERSITY","COLOMBIAN_RESTAURANT","COMEDY_CLUB","COMMERCIAL_BUILDING","COMMUNITY_CENTER","COMPANY","COMPUTER_AND_COMPUTER_SUPPLIES","COMPUTER_AND_DATA_SERVICES","CONCERT_HALL","CONSTRUCTION_COMPANY","CONSTRUCTION_MATERIAL_AND_EQUIPMENT","CONSUMER_ELECTRONICS","CONVENIENCE_STORE","CORSICAN_RESTAURANT","COTTAGE_RENTAL","COURIER_DROP_BOX","COURTHOUSE","COVE","CREOLE_RESTAURANT","CREPERIE","CRICKET_GROUND","CUBAN_RESTAURANT","CULTURAL_CENTER","CURTAINS_TEXTILES","CZECH_RESTAURANT","C_DS_DVD_VIDEOS","DAM","DANCE_STUDIO_AND_SCHOOL","DANISH_RESTAURANT","DELICATESSEN","DELIVERY_SERVICE","DENTIST","DEPARTMENT_STORE","DINNER_THEATER","DISCO_CLUB","DIVERSIFIED_FINANCIALS","DOCTOR","DONGBEI_RESTAURANT","DOUGHNUT_RESTAURANT","DO_IT_YOURSELF_CENTERS","DRIVE_IN_MOVIES","DRIVE_THROUGH_BOTTLE_SHOP","DRIVING_SCHOOL","DRUG_STORE","DRY_CLEANER","DUNE","DUTCH_RESTAURANT","EGYPTIAN_RESTAURANT","ELECTRICAL_APPLIANCES_SHOP","ELECTRONICS_COMPANY","EMBASSY","EMERGENCY_MEDICAL_SERVICE","EMERGENCY_ROOM","ENGLISH_RESTAURANT","ENTERTAINMENT","EQUIPMENT_RENTAL","ETHIOPIAN_RESTAURANT","EXCHANGE","EXHIBITION_CONVENTION_CENTER","FACTORY_OUTLET","FAIRGROUND","FARM","FARMERS_MARKET","FAST_FOOD","FERRY_TERMINAL","FINNISH_RESTAURANT","FIRE_STATION","FISHING_AND_HUNTING_AREA","FISHMONGER","FITNESS_CLUB_AND_CENTER","FLATS_OR_APARTMENT_COMPLEX","FLORISTS","FLYING_CLUB","FONDUE_RESTAURANT","FOOD_AND_DRINKS_SHOP","FOOD_MARKET","FOOTBALL_STADIUM","FOOTWEAR_SHOE_REPAIRS","FOREIGN_EXCHANGE","FOREST_AREA","FRENCH_RESTAURANT","FUEL_STATION","FUNERAL_SERVICE_AND_MORTUARIES","FURNITURE_HOME_FURNISHINGS","FUSION_RESTAURANT","GARDEN_CENTERS_SERVICES","GENERAL_HOSPITAL_AND_POLYCLINIC","GENERAL_PRACTITIONER","GERMAN_RESTAURANT","GIFTS_CARDS_NOVELTIES_SOUVENIRS","GLASSWARE_CERAMIC_SHOP","GLASS_WINDOWS_STORE","GOLD_EXCHANGE","GOLF_COURSE","GOVERNMENT_OFFICE","GREEK_RESTAURANT","GREENGROCER","GRILL_RESTAURANT","GROCERY_STORE","GURUDWARA","HAIRDRESSER","HAMBURGER_RESTAURANT","HARBOR","HARDWARE_STORE","HAWAIIAN_RESTAURANT","HEALTHCARE_SERVICE","HELIPORT_OR_HELIPAD","HIGH_SCHOOL","HIKING_TRAIL","HILL","HISTORICAL_PARK","HISTORIC_SITE","HOBBY_SHOP","HOCKEY_CLUB","HOLIDAY_RENTAL","HOME_APPLIANCE_REPAIR","HORSE_RACING_TRACK","HORSE_RIDING","HORSE_RIDING_TRAIL","HORTICULTURE","HOSPITAL","HOSPITAL_FOR_WOMEN_AND_CHILDREN","HOSPITAL_OF_CHINESE_MEDICINE","HOSTEL","HOTEL","HOTEL_OR_MOTEL","HOT_POT_RESTAURANT","HOUSE_AND_GARDEN_FURNITURE_AND_FITTINGS","HUNAN_RESTAURANT","HUNGARIAN_RESTAURANT","ICE_CREAM_PARLOR","ICE_HOCKEY_ARENA","ICE_RINK","IMPORT_OR_EXPORT_AND_DISTRIBUTION","INDIAN_RESTAURANT","INDONESIAN_RESTAURANT","INDUSTRIAL_BUILDING","INFORMAL_MARKET","INSURANCE_COMPANY","INTERNATIONAL_RAILROAD_STATION","INTERNATIONAL_RESTAURANT","INTERNET_CAFE","INVESTMENT_ADVISOR","IRANIAN_RESTAURANT","IRISH_RESTAURANT","ISLAND","ISRAELI_RESTAURANT","ITALIAN_RESTAURANT","JAMAICAN_RESTAURANT","JAPANESE_RESTAURANT","JAZZ_CLUB","JEWELRY_CLOCKS_WATCHES","JEWISH_RESTAURANT","JUICE_BAR","JUNIOR_COLLEGE_OR_COMMUNITY_COLLEGE","KARAOKE_CLUB","KITCHENS_BATHROOMS","KOREAN_RESTAURANT","KOSHER_RESTAURANT","LANGUAGE_SCHOOL","LATIN_AMERICAN_RESTAURANT","LAUNDRY","LEBANESE_RESTAURANT","LEGAL_SERVICES","LEISURE_CENTER","LIGHTING_SHOPS","LOCALE","LOCAL_SPECIALITIES_SHOP","LOTTERY_SHOP","MALL","MANUFACTURING_COMPANY","MANUFACTURING_FACILITY","MARINA","MARKETPLACE","MARSH","MAUSOLEUM_OR_GRAVE","MECHANICAL_ENGINEERING","MEDIA_FACILITY","MEDICAL_SUPPLIES_EQUIPMENT","MEDICINAL_AND_RECREATIONAL_DISPENSARY","MEDICINAL_MARIJUANA_DISPENSARY","MEDITERRANEAN_RESTAURANT","MEMORIAL","MEN_S_CLOTHING","MEXICAN_RESTAURANT","MICROBREWERY","MIDDLE_EASTERN_RESTAURANT","MIDDLE_SCHOOL","MILITARY_AIRPORT","MINERAL_OR_HOT_SPRINGS","MINING_COMPANY","MOBILE_PHONE_SHOP","MONGOLIAN_RESTAURANT","MONUMENT","MOROCCAN_RESTAURANT","MOSQUE","MOTEL","MOTORCYCLE_DEALER","MOTORCYCLE_REPAIR","MOTORING_ORGANIZATION_OFFICE","MOTOR_RACING_STADIUM","MOUNTAIN_BIKE_TRAIL","MOUNTAIN_PASS","MOUNTAIN_PEAK","MOVIE_THEATER","MOVING_AND_STORAGE_COMPANY","MULTI_PURPOSE_STADIUM","MUSEUM","MUSIC_CENTER","MUSIC_INSTRUMENTS_STORE","NAIL_SALON","NATIONAL_RAILROAD_STATION","NATURAL_FEATURE","NATURAL_TOURIST_ATTRACTION","NEPALESE_RESTAURANT","NETBALL_STADIUM","NEWSAGENTS_TOBACCONISTS","NIGHTLIFE","NON_GOVERNMENTAL_ORGANIZATION","NORWEGIAN_RESTAURANT","OASIS","OBSERVATORY","OFFICE_EQUIPMENT","OIL_AND_NATURAL_GAS","OPEN_CAR_PARKING_AREA","OPERA_HOUSE","OPTICIAN","ORGANIC_FOOD_RESTAURANT","ORIENTAL_RESTAURANT","PAGODA","PAINTING_DECORATING","PAKISTANI_RESTAURANT","PAN","PARK","PARKING_GARAGE","PARKWAY","PARK_AND_RECREATION_AREA","PASSENGER_TRANSPORT_TICKET_OFFICE","PAWN_SHOP","PEDESTRIAN_SUBWAY","PERSONAL_CARE_FACILITY","PERSONAL_SERVICE","PERUVIAN_RESTAURANT","PET_SUPPLIES","PHARMACEUTICAL_COMPANY","PHARMACY","PHILIPPINE_RESTAURANT","PHOTOCOPY_SHOP","PHOTO_LAB_OR_DEVELOPMENT","PICNIC_AREA","PIZZERIA","PLAIN_OR_FLAT","PLANETARIUM","PLATEAU","POLICE_STATION","POLISH_RESTAURANT","PORTUGUESE_RESTAURANT","PORT_WAREHOUSE_FACILITY","POST_OFFICE","PRE_SCHOOL","PRIMARY_PRODUCER","PRIMARY_RESOURCE_UTILITY","PRIMARY_SCHOOL","PRISON","PRIVATE_AIRPORT","PROTECTED_LAND","PUB","PUBLIC_AIRPORT","PUBLIC_AMENITY","PUBLIC_BATHROOM","PUBLIC_CALL_BOX","PUBLIC_LIBRARY","PUBLIC_MARKET","PUBLIC_TRANSPORT_STOP","PUBLISHING_TECHNOLOGIES","QUARRY","RACE_TRACK","RAILWAY_STATION","RAPIDS","REAL_ESTATE_AGENT","REAL_ESTATE_COMPANY","RECREATIONAL_CAMPING_GROUND","RECREATIONAL_MARIJUANA_DISPENSARY","RECREATIONAL_VEHICLE_DEALER","RECREATION_AREA","RECYCLING_SHOP","REEF","RELIGIOUS_SITE","RENTAL_CAR_PARKING","RESCUE_SERVICE","RESEARCH_FACILITY","RESERVOIR","RESIDENTIAL_ACCOMMODATION","RESIDENTIAL_ENTRANCE","RESORT","RESTAURANT","RESTAURANT_AREA","REST_AREA","REST_CAMP","RETAIL_OUTLET","RETIREMENT_COMMUNITY","RIDGE","RIVER_CROSSING","ROCKS","ROCK_CLIMBING_TRAIL","RUGBY_GROUND","RUSSIAN_RESTAURANT","SALAD_BAR","SANDWICH_RESTAURANT","SAUNA_SOLARIUM_MASSAGE","SCANDINAVIAN_RESTAURANT","SCHOOL","SCHOOL_BUS_COMPANY","SEAFOOD","SECURED_ENTRANCE","SECURITY_PRODUCTS","SENIOR_HIGH_SCHOOL","SERVICE_COMPANY","SHANDONG_RESTAURANT","SHOPPING_SERVICE","SHOP_OR_STORE","SICHUAN_RESTAURANT","SKI_RESORT","SNACKS_RESTAURANT","SOCCER_STADIUM","SOFTWARE_COMPANY","SOUL_FOOD","SOUP_RESTAURANT","SPANISH_RESTAURANT","SPECIALIST","SPECIALTY_CLOTHING_SHOP","SPECIALTY_FOODS","SPECIAL_HOSPITAL","SPORTS_CENTER","SPORTS_EQUIPMENT_AND_CLOTHING","SQUASH_COURT","STADIUM","STATION_ACCESS","STATUE","STEAK_HOUSE","STOCK_EXCHANGE","STREETCAR_STOP","SUBWAY_ENTRANCE","SUBWAY_STATION","SUPERMARKET","SUSHI_RESTAURANT","SWEDISH_RESTAURANT","SWIMMING_POOL","SWISS_RESTAURANT","SYNAGOG","SYRIAN_RESTAURANT","TAILOR_SHOP","TAIWANESE_RESTAURANT","TAKEOUT_FOOD","TAPAS_RESTAURANT","TAXI_LIMOUSINE_AND_SHUTTLE_SERVICE","TAXI_STAND","TAX_SERVICES","TEA_HOUSE","TELECOMMUNICATIONS","TEMPLE","TENNIS_COURT","TEPPANYAKI_RESTAURANT","THAI_RESTAURANT","THEATER","THEMATIC_SPORT_CENTER","TIBETAN_RESTAURANT","TIRE_SERVICE","TOLL_GATE","TOURIST_ATTRACTION","TOURIST_INFORMATION","TOWER","TOYS_GAMES_SHOP","TRAFFIC_CONTROL_DEPARTMENT","TRAIL_SYSTEM","TRANSPORT_ACCESS","TRANSPORT_AUTHORITY_VEHICLE_REGISTRATION","TRANSPORT_COMPANY","TRAVEL_AGENT","TRUCK_DEALER","TRUCK_REPAIR_AND_SERVICE","TRUCK_STOP","TUNISIAN_RESTAURANT","TUNNEL","TURKISH_RESTAURANT","URBAN_STATION","VALLEY","VAN_DEALER","VARIETY_STORE","VEGETARIAN_RESTAURANT","VEHICLE_DEALER","VEHICLE_REPAIR","VENEZUELAN_RESTAURANT","VETERINARY","VIDEO_RENTAL_SHOP","VIETNAMESE_RESTAURANT","VIEWPOINT","VILLA_RENTAL","VOCATIONAL_SCHOOL","WATER_HOLE","WATER_SPORT","WEDDING_SERVICES","WEIGH_STATION","WELFARE_ORGANIZATION","WELL","WESTERN_RESTAURANT","WHOLESALE_CLUB","WILDERNESS_AREA","WILDLIFE_PARK","WINERY","WINE_SPIRITS","WOMEN_S_CLOTHING","YACHT_BASIN","ZOO","ZOOS_ARBORETA_BOTANICAL_GARDEN"],budgetTypes=["timeMinutes","distanceKM"],budgetUnits={timeMinutes:"min",distanceKM:"km"},avoidableTypes=["tollRoads","motorways","ferries","unpavedRoads","carpools","alreadyUsedRoads","borderCrossings","tunnels","carTrains","lowEmissionZones"],inputSectionTypes=["carpool","carTrain","country","ferry","importantRoadStretch","lowEmissionZone","motorway","pedestrian","roadShields","speedLimit","toll","tollRoad","tollVignette","traffic","tunnel","unpaved","urban","vehicleRestricted"],inputSectionTypesWithGuidance=[...inputSectionTypes,"lanes"],sectionTypes=[...inputSectionTypesWithGuidance,"leg"],sdkErrorCodes=["INVALID_REQUEST","INSECURE_BASE_URL","INVALID_CREDENTIALS","INSUFFICIENT_PERMISSIONS","NOT_FOUND","RATE_LIMITED","LIVE_SERVICE_NOT_AVAILABLE","NETWORK_NOT_AVAILABLE","ABORTED","WEBGL_UNSUPPORTED","WEBGL_CONTEXT_LOST","STYLE_LOAD_FAILED","INTERNAL"],areaAnalyticsMetricKeys=["speed","freeFlowSpeed","congestionLevel","travelTime","networkLength"],trafficIncidentRequestCategories=["accident","broken-down-vehicle","danger","flooding","fog","frost","jam","lane-closed","other","rain","road-closed","roadworks","wind"],fullTrafficIncidentCategories=[...trafficIncidentRequestCategories,"animals-on-road","narrow-lanes"],trafficIncidentTimeValidities=["present","future"],isBBoxWithArea=A=>!!A&&(A.length>=4&&A[3]!==A[1]&&A[2]!==A[0]),bboxOnlyIfWithArea=A=>isBBoxWithArea(A)?A:void 0,bboxExpandedWithPosition=(A,E)=>{if(A&&!(A.length<2))return E?[E[0]>A[0]?A[0]:E[0],E[1]>A[1]?A[1]:E[1],E[2]<A[0]?A[0]:E[2],E[3]<A[1]?A[1]:E[3]]:[A[0],A[1],A[0],A[1]]},bboxFromBBoxes=A=>A?.length?A.reduce((A,E)=>{return R=E,(T=A)&&R?[T[0]>R[0]?R[0]:T[0],T[1]>R[1]?R[1]:T[1],T[2]<R[2]?R[2]:T[2],T[3]<R[3]?R[3]:T[3]]:R||T;var R,T}):void 0,bboxFromCoordsArray=A=>{const E=A?.length;if(!E)return;let R;const T=Math.ceil(E/1e3);for(let I=0;I<E;I+=T)R=bboxExpandedWithPosition(A[I],R);return 1===T?R:bboxExpandedWithPosition(A[E-1],R)},bboxFromGeoJSON=A=>{if(A){if(Array.isArray(A))return"number"==typeof A[0]?A.length>=4?A:void 0:bboxFromBBoxes(A.map(A=>bboxFromGeoJSON(A)));if(A.bbox)return A.bbox;switch(A.type){case"Feature":return bboxFromGeoJSON(A.geometry);case"FeatureCollection":return bboxFromBBoxes(A.features.map(bboxFromGeoJSON));case"GeometryCollection":return bboxFromBBoxes(A.geometries.map(bboxFromGeoJSON));case"Point":return bboxExpandedWithPosition(A.coordinates);case"LineString":case"MultiPoint":return bboxFromCoordsArray(A.coordinates);case"MultiLineString":case"Polygon":return bboxFromBBoxes(A.coordinates.map(bboxFromCoordsArray));case"MultiPolygon":return bboxFromBBoxes(A.coordinates.flatMap(A=>A.map(bboxFromCoordsArray)));default:return}}},bboxCenter=A=>[(A[0]+A[2])/2,(A[1]+A[3])/2],polygonFromBBox=A=>{const[E,R,T,I]=A;return{type:"Feature",geometry:{type:"Polygon",coordinates:[[[E,R],[T,R],[T,I],[E,I],[E,R]]]},properties:{}}},generateId=()=>Date.now().toString(36)+Math.random().toString(36).substring(2),TOMTOM_USER_AGENT_SDK_NAME="MapsSDKJS",generateTomTomHeaders=A=>!1===A.sendUserAgentHeader?{}:{"tomtom-user-agent":A["tomtom-user-agent"]??"MapsSDKJS/1.0.0-rc.2"},getPosition=(A,E)=>{if(A){if(Array.isArray(A))return A;if(A.coordinates)return A.coordinates;if(A.geometry)return"main-when-available"===E?.useEntryPoint?(R=A,R?.properties?.entryPoints?.find(A=>"main"===A.type))?.position??A.geometry.coordinates:A.geometry.coordinates}var R;return null},getPositionStrict=(A,E)=>{const R=getPosition(A,E);if(!R)throw new Error(`The received object does not have lng-lat coordinates: ${JSON.stringify(A)}`);return R},toPointGeometry=A=>({type:"Point",coordinates:A}),poiCategoriesToIDs={TRAFFIC_CONTROL_DEPARTMENT:[7301,7301002],TRAIL_SYSTEM:[7302],MOUNTAIN_BIKE_TRAIL:[7302002],ADVENTURE_VEHICLE_TRAIL:[7302003],HIKING_TRAIL:[7302004],HORSE_RIDING_TRAIL:[7302005],ROCK_CLIMBING_TRAIL:[7302006],RESIDENTIAL_ACCOMMODATION:[7303],RETIREMENT_COMMUNITY:[7303002],FLATS_OR_APARTMENT_COMPLEX:[7303003],HOLIDAY_RENTAL:[7304],COTTAGE_RENTAL:[7304002],VILLA_RENTAL:[7304003],BUNGALOW_RENTAL:[7304004],CHALET_RENTAL:[7304005],APARTMENT_RENTAL:[7304006],ADVENTURE_SPORTS_FACILITY:[7305],HELIPORT_OR_HELIPAD:[7308],CHARGING_LOCATION:[7309],VEHICLE_REPAIR:[7310],BODYSHOP:[7310002],CAR_GLASS_REPLACEMENT_SHOP:[7310003],CAR_REPAIR_AND_SERVICE:[7310004],TIRE_SERVICE:[7310007],MOTORCYCLE_REPAIR:[7310008],TRUCK_REPAIR_AND_SERVICE:[7310009],FUEL_STATION:[7311],CAR_RENTAL:[7312],PARKING_GARAGE:[7313],HOTEL_OR_MOTEL:[7314],BANDB_OR_GUEST_HOUSE:[7314002],HOTEL:[7314003],HOSTEL:[7314004],RESORT:[7314005],MOTEL:[7314006],CABINS_LODGES:[7314007],REST_CAMP:[7314008],RESTAURANT:[7315],AFRICAN_RESTAURANT:[7315002],AMERICAN_RESTAURANT:[7315003],AUSTRIAN_RESTAURANT:[7315004],BARBECUE_RESTAURANT:[7315005],BELGIAN_RESTAURANT:[7315006],BISTRO:[7315007],BRITISH_RESTAURANT:[7315008],CALIFORNIAN_RESTAURANT:[7315009],CANADIAN_RESTAURANT:[7315010],CARIBBEAN_RESTAURANT:[7315011],CHINESE_RESTAURANT:[7315012],CREPERIE:[7315013],DUTCH_RESTAURANT:[7315014],FAST_FOOD:[7315015],PHILIPPINE_RESTAURANT:[7315016],FRENCH_RESTAURANT:[7315017],GERMAN_RESTAURANT:[7315018],GREEK_RESTAURANT:[7315019],GRILL_RESTAURANT:[7315020],HAWAIIAN_RESTAURANT:[7315021],HUNGARIAN_RESTAURANT:[7315022],INDIAN_RESTAURANT:[7315023],INDONESIAN_RESTAURANT:[7315024],ITALIAN_RESTAURANT:[7315025],JAPANESE_RESTAURANT:[7315026],JEWISH_RESTAURANT:[7315027],KOREAN_RESTAURANT:[7315028],LATIN_AMERICAN_RESTAURANT:[7315029],LEBANESE_RESTAURANT:[7315030],MEDITERRANEAN_RESTAURANT:[7315032],MEXICAN_RESTAURANT:[7315033],MIDDLE_EASTERN_RESTAURANT:[7315034],ORIENTAL_RESTAURANT:[7315035],PIZZERIA:[7315036],POLISH_RESTAURANT:[7315037],PORTUGUESE_RESTAURANT:[7315038],RUSSIAN_RESTAURANT:[7315040],SANDWICH_RESTAURANT:[7315042],SEAFOOD:[7315043],SPANISH_RESTAURANT:[7315044],STEAK_HOUSE:[7315045],SWISS_RESTAURANT:[7315047],THAI_RESTAURANT:[7315048],TURKISH_RESTAURANT:[7315049],VEGETARIAN_RESTAURANT:[7315050],VIETNAMESE_RESTAURANT:[7315051],HUNAN_RESTAURANT:[7315052],SHANDONG_RESTAURANT:[7315053],SICHUAN_RESTAURANT:[7315056],DONGBEI_RESTAURANT:[7315057],HOT_POT_RESTAURANT:[7315058],TAIWANESE_RESTAURANT:[7315059],WESTERN_RESTAURANT:[7315060],PERUVIAN_RESTAURANT:[7315061],ASIAN_RESTAURANT:[7315062],CREOLE_RESTAURANT:[7315063],SOUL_FOOD:[7315064],IRISH_RESTAURANT:[7315065],JAMAICAN_RESTAURANT:[7315066],KOSHER_RESTAURANT:[7315067],CZECH_RESTAURANT:[7315068],HAMBURGER_RESTAURANT:[7315069],CHICKEN_RESTAURANT:[7315070],FUSION_RESTAURANT:[7315071],BRAZILIAN_RESTAURANT:[7315072],INTERNATIONAL_RESTAURANT:[7315073],MOROCCAN_RESTAURANT:[7315074],ORGANIC_FOOD_RESTAURANT:[7315075],TAPAS_RESTAURANT:[7315076],ICE_CREAM_PARLOR:[7315078],DOUGHNUT_RESTAURANT:[7315079],AFGHAN_RESTAURANT:[7315081],ARABIAN_RESTAURANT:[7315083],ARMENIAN_RESTAURANT:[7315085],AUSTRALIAN_RESTAURANT:[7315086],BASQUE_RESTAURANT:[7315087],BOLIVIAN_RESTAURANT:[7315088],BULGARIAN_RESTAURANT:[7315090],BURMESE_RESTAURANT:[7315091],CAMBODIAN_RESTAURANT:[7315092],CHILEAN_RESTAURANT:[7315093],COLOMBIAN_RESTAURANT:[7315094],CORSICAN_RESTAURANT:[7315095],CUBAN_RESTAURANT:[7315096],DANISH_RESTAURANT:[7315098],EGYPTIAN_RESTAURANT:[7315100],ENGLISH_RESTAURANT:[7315101],ETHIOPIAN_RESTAURANT:[7315102],FINNISH_RESTAURANT:[7315104],IRANIAN_RESTAURANT:[7315105],ISRAELI_RESTAURANT:[7315106],MONGOLIAN_RESTAURANT:[7315110],NEPALESE_RESTAURANT:[7315111],NORWEGIAN_RESTAURANT:[7315112],SCANDINAVIAN_RESTAURANT:[7315114],SWEDISH_RESTAURANT:[7315119],SYRIAN_RESTAURANT:[7315120],TEPPANYAKI_RESTAURANT:[7315121],TIBETAN_RESTAURANT:[7315122],TUNISIAN_RESTAURANT:[7315123],VENEZUELAN_RESTAURANT:[7315125],PAKISTANI_RESTAURANT:[7315127],FONDUE_RESTAURANT:[7315134],SNACKS_RESTAURANT:[7315139],SOUP_RESTAURANT:[7315140],BUFFET_RESTAURANT:[7315142],SALAD_BAR:[7315143],TAKEOUT_FOOD:[7315145],BANQUET_ROOMS:[7315146],CAFETERIA:[7315147],SUSHI_RESTAURANT:[7315148],JUICE_BAR:[7315149],TOURIST_INFORMATION:[7316],MUSEUM:[7317],THEATER:[7318,7318005],CONCERT_HALL:[7318002],MUSIC_CENTER:[7318003],OPERA_HOUSE:[7318004],CABARET_THEATER:[7318006],AMPHITHEATER:[7318007],DINNER_THEATER:[7318008],CULTURAL_CENTER:[7319],SPORTS_CENTER:[7320,7320004],FITNESS_CLUB_AND_CENTER:[7320002],HORSE_RIDING:[7320003],THEMATIC_SPORT_CENTER:[7320005],SQUASH_COURT:[7320006],HOSPITAL:[7321],GENERAL_HOSPITAL_AND_POLYCLINIC:[7321002],SPECIAL_HOSPITAL:[7321003],HOSPITAL_OF_CHINESE_MEDICINE:[7321004],HOSPITAL_FOR_WOMEN_AND_CHILDREN:[7321005],POLICE_STATION:[7322],POST_OFFICE:[7324],PHARMACY:[7326],DEPARTMENT_STORE:[7327],BANK:[7328],MARKETPLACE:[7332],INFORMAL_MARKET:[7332002],PUBLIC_MARKET:[7332003],FARMERS_MARKET:[7332004],SUPERMARKET:[7332005],AGRICULTURE:[7335],HORTICULTURE:[7335002],PRIMARY_PRODUCER:[7335003],FARM:[7335004],VIEWPOINT:[7337],SWIMMING_POOL:[7338],RELIGIOUS_SITE:[7339],CHURCH:[7339002],MOSQUE:[7339003],SYNAGOG:[7339004],TEMPLE:[7339005],GURUDWARA:[7339006],PAGODA:[7339008],CASINO_AND_GAMBLING:[7341],CINEMA:[7342],MOVIE_THEATER:[7342002],DRIVE_IN_MOVIES:[7342003],MARINA:[7347,7347002],YACHT_BASIN:[7347003],WINERY:[7349],FERRY_TERMINAL:[7352],TRUCK_STOP:[7358],WEIGH_STATION:[7359,7359002],CAMPING_GROUND:[7360],RECREATIONAL_CAMPING_GROUND:[7360002],CARAVAN_SITE:[7360003],COMMUNITY_CENTER:[7363],EMBASSY:[7365],BORDER_CONTROL:[7366],GOVERNMENT_OFFICE:[7367],MOTORING_ORGANIZATION_OFFICE:[7368],OPEN_CAR_PARKING_AREA:[7369,7369002],SCHOOL:[7372,7372002],CHILDCARE:[7372003],PRE_SCHOOL:[7372004],PRIMARY_SCHOOL:[7372005],HIGH_SCHOOL:[7372006],SENIOR_HIGH_SCHOOL:[7372007],VOCATIONAL_SCHOOL:[7372008],LANGUAGE_SCHOOL:[7372010],ART_SCHOOL:[7372012],MIDDLE_SCHOOL:[7372014],DRIVING_SCHOOL:[7372016],MALL:[7373],STADIUM:[7374],ATHLETICS_TRACK:[7374002],CRICKET_GROUND:[7374003],SOCCER_STADIUM:[7374004],HORSE_RACING_TRACK:[7374005],MULTI_PURPOSE_STADIUM:[7374006],RUGBY_GROUND:[7374007],ICE_HOCKEY_ARENA:[7374008],BASEBALL_PARK:[7374009],FOOTBALL_STADIUM:[7374010],MOTOR_RACING_STADIUM:[7374011],BASKETBALL_ARENA:[7374012],RACE_TRACK:[7374013],NETBALL_STADIUM:[7374014],TOLL_GATE:[7375],TOURIST_ATTRACTION:[7376],BUILDING:[7376002],MONUMENT:[7376003],NATURAL_TOURIST_ATTRACTION:[7376004],OBSERVATORY:[7376005],PLANETARIUM:[7376006],DAM:[7376007],TUNNEL:[7376008],TOWER:[7376009],BRIDGE:[7376010],MAUSOLEUM_OR_GRAVE:[7376011],ARCH:[7376012],STATUE:[7376013],WATER_HOLE:[7376014],COLLEGE_OR_UNIVERSITY:[7377,7377002],JUNIOR_COLLEGE_OR_COMMUNITY_COLLEGE:[7377003],BUSINESS_PARK:[7378],RAILWAY_STATION:[7380],INTERNATIONAL_RAILROAD_STATION:[7380002],NATIONAL_RAILROAD_STATION:[7380003],URBAN_STATION:[7380004],SUBWAY_STATION:[7380005],AIRPORT:[7383],PUBLIC_AIRPORT:[7383002],PRIVATE_AIRPORT:[7383003],MILITARY_AIRPORT:[7383004],AIRFIELD:[7383005],COURIER_DROP_BOX:[7388],TRANSPORT_ACCESS:[7389],AIRLINE_ACCESS:[7389002],STATION_ACCESS:[7389003],SECURED_ENTRANCE:[7389004],SUBWAY_ENTRANCE:[7389999],EMERGENCY_MEDICAL_SERVICE:[7391],FIRE_STATION:[7392],REST_AREA:[7395],ATM:[7397],NATURAL_FEATURE:[8099],MOUNTAIN_PEAK:[8099002],CAVE:[8099003],RIDGE:[8099004],DUNE:[8099005],VALLEY:[8099006],PLAIN_OR_FLAT:[8099007],PLATEAU:[8099008],PAN:[8099009],WELL:[8099010],OASIS:[8099011],ROCKS:[8099012],RESERVOIR:[8099013],REEF:[8099014],RAPIDS:[8099015],BAY:[8099016],COVE:[8099017],HARBOR:[8099018],CAPE:[8099020],MINERAL_OR_HOT_SPRINGS:[8099021],ISLAND:[8099022],MARSH:[8099023],RIVER_CROSSING:[8099024],HILL:[8099025],QUARRY:[8099026],LOCALE:[8099027],PRIMARY_RESOURCE_UTILITY:[9150],TRANSPORT_AUTHORITY_VEHICLE_REGISTRATION:[9151],NON_GOVERNMENTAL_ORGANIZATION:[9152],WELFARE_ORGANIZATION:[9153],PRISON:[9154],CAR_WASH:[9155,9155002],MANUFACTURING_FACILITY:[9156],RESEARCH_FACILITY:[9157],MEDIA_FACILITY:[9158],PORT_WAREHOUSE_FACILITY:[9159],EXCHANGE:[9160],STOCK_EXCHANGE:[9160002],GOLD_EXCHANGE:[9160003],FOREIGN_EXCHANGE:[9160004],COMPANY:[9352],SERVICE_COMPANY:[9352002],ADVERTISING_COMPANY:[9352003],COMPUTER_AND_DATA_SERVICES:[9352004],SOFTWARE_COMPANY:[9352005],DIVERSIFIED_FINANCIALS:[9352006],INSURANCE_COMPANY:[9352007],DELIVERY_SERVICE:[9352008],REAL_ESTATE_COMPANY:[9352009],MANUFACTURING_COMPANY:[9352011],AGRICULTURAL_TECHNOLOGY:[9352012],AUTOMOBILE_COMPANY:[9352013],CHEMICAL_COMPANY:[9352014],ELECTRONICS_COMPANY:[9352015],MECHANICAL_ENGINEERING:[9352016],PHARMACEUTICAL_COMPANY:[9352018],PUBLISHING_TECHNOLOGIES:[9352019],TELECOMMUNICATIONS:[9352020],TAX_SERVICES:[9352022],LEGAL_SERVICES:[9352023],TRANSPORT_COMPANY:[9352024],BUS_CHARTER_COMPANY:[9352025],TAXI_LIMOUSINE_AND_SHUTTLE_SERVICE:[9352026],BUS_LINES:[9352027],SCHOOL_BUS_COMPANY:[9352028],CLEANING_SERVICES:[9352029],OIL_AND_NATURAL_GAS:[9352030],MINING_COMPANY:[9352031],CONSTRUCTION_COMPANY:[9352032],MOVING_AND_STORAGE_COMPANY:[9352033],AIRLINE_COMPANY:[9352034],FUNERAL_SERVICE_AND_MORTUARIES:[9352036],INVESTMENT_ADVISOR:[9352037],EQUIPMENT_RENTAL:[9352038],BUSINESS_SERVICES:[9352039],CABLE_AND_TELEPHONE_COMPANY:[9352040],AUTOMOBILE_MANUFACTURING:[9352041],IMPORT_OR_EXPORT_AND_DISTRIBUTION:[9352042],CATERING_SERVICES:[9352043],HOME_APPLIANCE_REPAIR:[9352044],ANIMAL_SHELTER:[9352045],WEDDING_SERVICES:[9352046],BEACH:[9357],RESTAURANT_AREA:[9359],ICE_RINK:[9360],SHOP_OR_STORE:[9361],BOOK_SHOP:[9361002],C_DS_DVD_VIDEOS:[9361003],CHILDREN_S_CLOTHES:[9361004],FOOTWEAR_SHOE_REPAIRS:[9361005],CLOTHING_SHOP:[9361006],MEN_S_CLOTHING:[9361007],WOMEN_S_CLOTHING:[9361008],CONVENIENCE_STORE:[9361009],DRY_CLEANER:[9361010],CAMERAS_AND_PHOTOGRAPHY:[9361011],COMPUTER_AND_COMPUTER_SUPPLIES:[9361012],CONSUMER_ELECTRONICS:[9361013],OFFICE_EQUIPMENT:[9361014],REAL_ESTATE_AGENT:[9361015],FACTORY_OUTLET:[9361016],FLORISTS:[9361017],BAKERY:[9361018],BUTCHER:[9361019],FISHMONGER:[9361020],FOOD_MARKET:[9361021],GREENGROCER:[9361022],GROCERY_STORE:[9361023],FOOD_AND_DRINKS_SHOP:[9361024],WINE_SPIRITS:[9361025],GIFTS_CARDS_NOVELTIES_SOUVENIRS:[9361026],HAIRDRESSER:[9361027],CARPET_FLOOR_COVERINGS:[9361028],CURTAINS_TEXTILES:[9361029],DO_IT_YOURSELF_CENTERS:[9361030],HOUSE_AND_GARDEN_FURNITURE_AND_FITTINGS:[9361031],GARDEN_CENTERS_SERVICES:[9361032],KITCHENS_BATHROOMS:[9361033],LIGHTING_SHOPS:[9361034],PAINTING_DECORATING:[9361035],JEWELRY_CLOCKS_WATCHES:[9361036],NEWSAGENTS_TOBACCONISTS:[9361037],OPTICIAN:[9361038],SPORTS_EQUIPMENT_AND_CLOTHING:[9361039],TOYS_GAMES_SHOP:[9361040],TRAVEL_AGENT:[9361041],CONSTRUCTION_MATERIAL_AND_EQUIPMENT:[9361042],MEDICAL_SUPPLIES_EQUIPMENT:[9361043],VIDEO_RENTAL_SHOP:[9361044],LAUNDRY:[9361045],PHOTO_LAB_OR_DEVELOPMENT:[9361046],PHOTOCOPY_SHOP:[9361047],ANIMAL_SERVICE:[9361048],ANTIQUE_ART_SHOP:[9361049],BEAUTY_SUPPLIES:[9361050],DRUG_STORE:[9361051],ELECTRICAL_APPLIANCES_SHOP:[9361052],HOBBY_SHOP:[9361053],FURNITURE_HOME_FURNISHINGS:[9361054],GLASSWARE_CERAMIC_SHOP:[9361055],LOCAL_SPECIALITIES_SHOP:[9361056],RECYCLING_SHOP:[9361057],BAGS_LEATHERWEAR:[9361058],MUSIC_INSTRUMENTS_STORE:[9361059],DELICATESSEN:[9361060],SPECIALTY_FOODS:[9361061],SHOPPING_SERVICE:[9361062],RETAIL_OUTLET:[9361063],PET_SUPPLIES:[9361064],WHOLESALE_CLUB:[9361066],BEAUTY_SALON:[9361067],NAIL_SALON:[9361068],HARDWARE_STORE:[9361069],PAWN_SHOP:[9361070],LOTTERY_SHOP:[9361071],BETTING_STATION:[9361072],AGRICULTURAL_SUPPLIES:[9361073],MOBILE_PHONE_SHOP:[9361075],DRIVE_THROUGH_BOTTLE_SHOP:[9361076],TAILOR_SHOP:[9361077],SECURITY_PRODUCTS:[9361078],SPECIALTY_CLOTHING_SHOP:[9361079],GLASS_WINDOWS_STORE:[9361080],VARIETY_STORE:[9361081],CHRISTMAS_OR_HOLIDAY_SHOP:[9361082],BOATING_EQUIPMENT_AND_ACCESSORIES:[9361083],PARK_AND_RECREATION_AREA:[9362],BATTLEFIELD:[9362002],CEMETERY:[9362003],HISTORIC_SITE:[9362004],HISTORICAL_PARK:[9362005],MEMORIAL:[9362007],PARK:[9362008],PARKWAY:[9362009],RECREATION_AREA:[9362011],WILDERNESS_AREA:[9362014],FOREST_AREA:[9362015],FISHING_AND_HUNTING_AREA:[9362016],FAIRGROUND:[9362017],SKI_RESORT:[9362026],BOAT_LAUNCHING_RAMP:[9362032],PICNIC_AREA:[9362033],PROTECTED_LAND:[9362037],COURTHOUSE:[9363],CANNABIS_SHOP:[9364],MEDICINAL_MARIJUANA_DISPENSARY:[9364002],RECREATIONAL_MARIJUANA_DISPENSARY:[9364003],MEDICINAL_AND_RECREATIONAL_DISPENSARY:[9364004],TENNIS_COURT:[9369],WATER_SPORT:[9371],DOCTOR:[9373],GENERAL_PRACTITIONER:[9373002],SPECIALIST:[9373003],DENTIST:[9374],VETERINARY:[9375],CAFE_PUB:[9376],CAFE:[9376002],PUB:[9376003],INTERNET_CAFE:[9376004],TEA_HOUSE:[9376005],COFFEE_SHOP:[9376006],MICROBREWERY:[9376007],EXHIBITION_CONVENTION_CENTER:[9377],LEISURE_CENTER:[9378],BOWLING_CENTER:[9378002],DANCE_STUDIO_AND_SCHOOL:[9378003],FLYING_CLUB:[9378004],SAUNA_SOLARIUM_MASSAGE:[9378005],NIGHTLIFE:[9379],DISCO_CLUB:[9379002],BAR:[9379004],COCKTAIL_BAR:[9379006],JAZZ_CLUB:[9379008],COMEDY_CLUB:[9379009],KARAOKE_CLUB:[9379010],COMMERCIAL_BUILDING:[9382],INDUSTRIAL_BUILDING:[9383],ABORIGINAL_LAND:[9389],HEALTHCARE_SERVICE:[9663],PERSONAL_SERVICE:[9663002],PERSONAL_CARE_FACILITY:[9663003],BLOOD_BANK:[9663004],AMBULANCE_UNIT:[9663005],ENTERTAINMENT:[9900],AMUSEMENT_PARK:[9902,9902003],AMUSEMENT_PLACE:[9902004],VEHICLE_DEALER:[9910],CAR_DEALER:[9910002],MOTORCYCLE_DEALER:[9910003],BOAT_DEALER:[9910004],RECREATIONAL_VEHICLE_DEALER:[9910005],TRUCK_DEALER:[9910006],VAN_DEALER:[9910007],BUS_DEALER:[9910008],ATV_DEALER:[9910009],GOLF_COURSE:[9911],PUBLIC_LIBRARY:[9913],ZOOS_ARBORETA_BOTANICAL_GARDEN:[9927],ARBORETA_AND_BOTANICAL_GARDENS:[9927002],ZOO:[9927003],AQUATIC_ZOO:[9927004],WILDLIFE_PARK:[9927005],RENTAL_CAR_PARKING:[9930],PUBLIC_AMENITY:[9932],PASSENGER_TRANSPORT_TICKET_OFFICE:[9932002],PEDESTRIAN_SUBWAY:[9932003],PUBLIC_CALL_BOX:[9932004],PUBLIC_BATHROOM:[9932005],RESCUE_SERVICE:[9932006],MOUNTAIN_PASS:[9935],CLUB_AND_ASSOCIATION:[9937],BEACH_CLUB:[9937002],HOCKEY_CLUB:[9937003],PUBLIC_TRANSPORT_STOP:[9942],BUS_STOP:[9942002],TAXI_STAND:[9942003],STREETCAR_STOP:[9942004],EMERGENCY_ROOM:[9956],RESIDENTIAL_ENTRANCE:[9999]},poiCategoriesToID=Object.fromEntries(Object.entries(poiCategoriesToIDs).map(([A,E])=>[A,E[0]])),poiIDsToCategories=Object.fromEntries(Object.entries(poiCategoriesToIDs).flatMap(([A,E])=>E.map(E=>[E,A]))),projectAlongRouteLocation=(A,E)=>nearestPointOnLine(A,getPositionStrict(E)).properties.location,findInsertionSlot=(A,E)=>{for(let R=0;R<A.length-1;R++)if(E>=A[R]&&E<=A[R+1])return R+1;return E<A[0]?0:A.length},findBestWaypointInsertionIndex=(A,E,R)=>findBestWaypointInsertionIndices(A,E,[R])[0],findBestWaypointInsertionIndices=(A,E,R)=>{if(0===R.length)return[];if(0===A.geometry.coordinates.length||E.length<2)return R.map(()=>0);const T=E.map(E=>projectAlongRouteLocation(A,E)??0);return R.map(E=>{const R=projectAlongRouteLocation(A,E);return void 0===R?0:findInsertionSlot(T,R)})},withInsertedWaypoint=(A,E,R)=>withInsertedWaypoints(A,E,[R]),withInsertedWaypoints=(A,E,R)=>{if(0===R.length)return E.slice();if(0===A.geometry.coordinates.length||E.length<2)return[...R,...E];const T=E.map(E=>projectAlongRouteLocation(A,E)??0),I=Array.from({length:E.length+1},()=>[]);for(let _=0;_<R.length;_++){const E=R[_],N=projectAlongRouteLocation(A,E);I[void 0===N?0:findInsertionSlot(T,N)].push({waypoint:E,location:N??0,inputIndex:_})}for(const _ of I)_.sort((A,E)=>A.location-E.location||A.inputIndex-E.inputIndex);const N=[];for(let _=0;_<E.length;_++){for(const A of I[_])N.push(A.waypoint);N.push(E[_])}for(const _ of I[E.length])N.push(_.waypoint);return N},calculateProgressAtRoutePoint=(A,E)=>{const{progress:R}=A.properties;if(!R||0===R.length)return;const T=A.geometry.coordinates.length;if(E<0||E>=T)return;const I=findBracketingProgressPoints(R,"pointIndex",E);if(!I)return;const{lower:N,lowerVal:_,upper:S,upperVal:e}=I,t=N.distanceInMeters,O=S.distanceInMeters,C=N.travelTimeInSeconds,o=S.travelTimeInSeconds;if(void 0===t||void 0===O||void 0===C||void 0===o)return;if(_===e)return{distanceInMeters:t,travelTimeInSeconds:C};const n=lengthShareOfBracket(A.geometry.coordinates,_,E,e);return{distanceInMeters:t+n*(O-t),travelTimeInSeconds:C+n*(o-C)}},getRouteProgressBetween=(A,E,R)=>{const T=calculateProgressAtRoutePoint(A,E),I=calculateProgressAtRoutePoint(A,R);if(T&&I)return{start:T,end:I,delta:{distanceInMeters:I.distanceInMeters-T.distanceInMeters,travelTimeInSeconds:I.travelTimeInSeconds-T.travelTimeInSeconds}}},getRouteProgressForSection=(A,E)=>getRouteProgressBetween(A,E.startPointIndex,E.endPointIndex),getSectionBBox=(A,E)=>{const R=A.geometry.coordinates;if(!R||0===R.length||E.startPointIndex<0||E.endPointIndex>=R.length||E.startPointIndex>E.endPointIndex)return;const T=R[E.startPointIndex],I=R[E.endPointIndex],N=R[Math.floor((E.startPointIndex+E.endPointIndex)/2)];let _=bboxExpandedWithPosition(T);return _=bboxExpandedWithPosition(N,_),_=bboxExpandedWithPosition(I,_),_},firstProgressIndexPast=(A,E,R)=>{let T=A.length,I=0,N=A.length;for(;I<N;){const _=I+N>>>1;let S=_;for(;S<N&&void 0===A[S][E];)S++;const e=S<N?A[S][E]:void 0;void 0===e?N=_:R(e)?(T=S,N=_):I=S+1}return T},findBracketingProgressPoints=(A,E,R)=>{const T=A[firstProgressIndexPast(A,E,A=>A>=R)];let I=firstProgressIndexPast(A,E,A=>A>R)-1;for(;I>=0&&void 0===A[I][E];)I--;const N=A[I],_=N?.[E],S=T?.[E];return void 0!==_&&void 0!==S?{lower:N,lowerVal:_,upper:T,upperVal:S}:void 0},metersAlongLineCache=/* @__PURE__ */new WeakMap,metersAlongLine=A=>{const E=metersAlongLineCache.get(A);if(E?.length===A.length)return E;const R=new Float64Array(A.length);for(let T=1;T<A.length;T++)R[T]=R[T-1]+distance(A[T-1],A[T],{units:"meters"});return metersAlongLineCache.set(A,R),R},lengthShareOfBracket=(A,E,R,T)=>{const I=metersAlongLine(A),N=I[T]-I[E];return N>0?(I[R]-I[E])/N:(R-E)/(T-E)},interpolateProgressAtPathIndex=(A,E,R)=>{const T=A.geometry.coordinates,I=Math.min(E+1,T.length-1),N=T[E],_=T[I],S=calculateProgressAtRoutePoint(A,E),e=calculateProgressAtRoutePoint(A,I);if(S&&e)return{position:[N[0]+R*(_[0]-N[0]),N[1]+R*(_[1]-N[1])],travelTimeInSeconds:S.travelTimeInSeconds+R*(e.travelTimeInSeconds-S.travelTimeInSeconds),distanceInMeters:S.distanceInMeters+R*(e.distanceInMeters-S.distanceInMeters)}},resolveCoordinateAtProgress=(A,E,R)=>{const{progress:T}=A.properties;if(!T||0===T.length)return;const I=A.geometry.coordinates,N=T[0],_=T.at(-1),S=N[E],e=_[E];if(void 0===S||void 0===e)return;if(R<=S)return{position:I[N.pointIndex],travelTimeInSeconds:N.travelTimeInSeconds??0,distanceInMeters:N.distanceInMeters??0};if(R>=e)return{position:I[_.pointIndex],travelTimeInSeconds:_.travelTimeInSeconds??0,distanceInMeters:_.distanceInMeters??0};const t=((A,E,R,T)=>{const I=findBracketingProgressPoints(A,R,T);if(!I)return;const{lower:N,lowerVal:_,upper:S,upperVal:e}=I,t=_===e?0:(T-_)/(e-_),O=metersAlongLine(E),C=O[S.pointIndex]-O[N.pointIndex];if(0===C){const A=N.pointIndex+t*(S.pointIndex-N.pointIndex),E=Math.floor(A);return{pathIndex:E,progressRatioTowardsNextPathPoint:A-E}}const o=O[N.pointIndex]+t*C,n=clamp(sortedIndex(O,o)-1,N.pointIndex,S.pointIndex-1),r=O[n+1]-O[n];return{pathIndex:n,progressRatioTowardsNextPathPoint:r>0?(o-O[n])/r:0}})(T,I,E,R);return void 0!==t?interpolateProgressAtPathIndex(A,t.pathIndex,t.progressRatioTowardsNextPathPoint):void 0},getCoordinateAtRouteProgress=(A,E)=>{if("traveledTimeInSeconds"in E)return resolveCoordinateAtProgress(A,"travelTimeInSeconds",E.traveledTimeInSeconds);if("traveledDistanceInMeters"in E)return resolveCoordinateAtProgress(A,"distanceInMeters",E.traveledDistanceInMeters);const R=A.properties.summary.departureTime;if(!R)return;const T=(E.clockTime.getTime()-R.getTime())/1e3;return T<0?void 0:resolveCoordinateAtProgress(A,"travelTimeInSeconds",T)},getProgressAtNearestRoutePoint=(A,E)=>{const{progress:R}=A.properties;if(!R?.length)return;const T=A.geometry.coordinates,I=nearestPointOnLine(A,getPositionStrict(E)),N=I.properties.index??0,_=Math.min(N+1,T.length-1),S=T[N],e=T[_],t=((A,E,R)=>{const T=R[0]-A[0],I=R[1]-A[1],N=T*T+I*I;if(0===N)return 0;const _=((E[0]-A[0])*T+(E[1]-A[1])*I)/N;return clamp(_,0,1)})(S,I.geometry.coordinates,e);return interpolateProgressAtPathIndex(A,N,t)},getRoutePlanningLocationType=A=>Array.isArray(A)?Array.isArray(A[0])?"path":"waypoint":"Feature"===A.type&&"LineString"===A.geometry.type?"path":"waypoint",sdkErrorCodeForStatus=A=>401===A?"INVALID_CREDENTIALS":403===A?"INSUFFICIENT_PERMISSIONS":404===A?"NOT_FOUND":429===A?"RATE_LIMITED":A>=500?"LIVE_SERVICE_NOT_AVAILABLE":A>=400?"INVALID_REQUEST":"INTERNAL",retryableCodes=/* @__PURE__ */new Set(["RATE_LIMITED","LIVE_SERVICE_NOT_AVAILABLE","NETWORK_NOT_AVAILABLE"]),canRetrySDKErrorCode=A=>retryableCodes.has(A),indexedMagnitudes=["unknown","minor","moderate","major","indefinite"],iconCategoryMap={1:"accident",2:"fog",3:"danger",4:"rain",5:"frost",6:"jam",7:"lane-closed",8:"road-closed",9:"roadworks",10:"wind",11:"flooding",12:"animals-on-road",13:"narrow-lanes",14:"broken-down-vehicle"},categoryToIconMap=Object.fromEntries(Object.entries(iconCategoryMap).map(([A,E])=>[E,Number(A)])),iconToTrafficIncidentCategory=A=>iconCategoryMap[A]??"other",trafficIncidentToIconCategory=A=>categoryToIconMap[A]??0,minuteUnits=A=>A?.minutes??"min",formatDuration=(A,E)=>{if(A){const T=Math.abs(A)/3600;let I=Math.floor(T),N=Math.round(T%1*60);60===N&&(N=0,I++);const _={...TomTomConfig.instance.get().displayUnits?.time,...E};if(I)return`${I} ${R=_,R?.hours??"hr"} ${N.toString().padStart(2,"0")} ${minuteUnits(_)}`;if(N)return`${N.toString()} ${minuteUnits(_)}`}var R},MILE_IN_METERS=1609.344,meterUnits=A=>A?.meters??"m",kmUnits=A=>A?.kilometers??"km",formatMiles=(A,E,R)=>E<3?((A,E,R)=>{const T=Number.parseInt(E.toString()),I=E-T,N=A<0?"-":"";if(I<.125)return`${N}${T} ${R}`;const _=T>0?T:"";return I<.375?`${N}${_}¼ ${R}`:I<.625?`${N}${_}½ ${R}`:I<.875?`${N}${_}¾ ${R}`:`${N}${T+1} ${R}`})(A,E,R):E<10?((A,E,R)=>{const T=Number.parseInt(E.toString()),I=E-T,N=A<0?"-":"";return I<.25?`${N}${T} ${R}`:I<.75?`${N}${T}½ ${R}`:`${N}${T+1} ${R}`})(A,E,R):`${Math.round(A)} ${R}`,mileUnitsWithDefault=A=>A.miles??"mi",formatUs=(A,E)=>{const R=A/1609.344,T=Math.abs(R);return T<.125?((A,E)=>{const R=Math.round(A/.3048),T=Math.abs(R);return T<30?`${R} ${E}`:T<500?`${10*Math.round(R/10)} ${E}`:`${100*Math.round(R/100)} ${E}`})(A,E.feet??"ft"):formatMiles(R,T,mileUnitsWithDefault(E))},formatUk=(A,E)=>{const R=A/1609.344,T=Math.abs(R);return T<.125?((A,E)=>{const R=Math.round(A/.9144);return Math.abs(R)<10?`${Math.round(R)} ${E}`:`${10*Math.round(R/10)} ${E}`})(A,E.yards??"yd"):formatMiles(R,T,mileUnitsWithDefault(E))},formatDistance=(A,E)=>{if(isNil(A))return"";const R={...TomTomConfig.instance.get().displayUnits?.distance,...E};switch(R?.type??"metric"){case"metric":return((A,E)=>{const R=Math.abs(A);if(R<10)return`${A} ${meterUnits(E)}`;if(R<500)return`${10*Math.round(A/10)} ${meterUnits(E)}`;if(R<1e3){const R=100*Math.round(A/100);return 1e3===R||-1e3===R?`${A<0?"-":""}1 ${kmUnits(E)}`:`${R} ${meterUnits(E)}`}return R<1e4?`${100*Math.round(A/100)/1e3} ${kmUnits(E)}`:`${Math.round(A/1e3)} ${kmUnits(E)}`})(A,R);case"imperial_us":return formatUs(A,R);case"imperial_uk":return formatUk(A,R)}};export{DEFAULT_COMMON_BASE_URL,MILE_IN_METERS,TOMTOM_USER_AGENT_SDK_NAME,TomTomConfig,areaAnalyticsMetricKeys,avoidableTypes,bboxCenter,bboxFromBBoxes,bboxFromCoordsArray,bboxFromGeoJSON,bboxOnlyIfWithArea,budgetTypes,budgetUnits,calculateProgressAtRoutePoint,canRetrySDKErrorCode,chargingPointCapabilities,chargingPointRestrictions,connectorTypes,currentTypes,defaultConfig,findBestWaypointInsertionIndex,findBestWaypointInsertionIndices,formatDistance,formatDuration,fullTrafficIncidentCategories,generateId,generateTomTomHeaders,geographyTypes,geopoliticalViews,getCoordinateAtRouteProgress,getPosition,getPositionStrict,getProgressAtNearestRoutePoint,getRoutePlanningLocationType,getRouteProgressBetween,getRouteProgressForSection,getSectionBBox,iconToTrafficIncidentCategory,indexedMagnitudes,inputSectionTypes,inputSectionTypesWithGuidance,insecureBaseURLMessage,isBBoxWithArea,isProxyCredentialsMode,isSecureBaseURL,mergeFromGlobal,placeTypes,poiCategories,poiCategoriesToID,poiCategoriesToIDs,poiIDsToCategories,polygonFromBBox,sdkErrorCodeForStatus,sdkErrorCodes,sectionTypes,toPointGeometry,trafficIncidentRequestCategories,trafficIncidentTimeValidities,trafficIncidentToIconCategory,withInsertedWaypoint,withInsertedWaypoints};
1
+ import{booleanPointInPolygon,distance,lengthToDegrees,nearestPointOnLine}from"@turf/turf";import{isNil,mean,sum}from"lodash-es";var definedFields=e=>Object.fromEntries(Object.entries(e??{}).filter(([,e])=>void 0!==e)),pickKeys=(e,t)=>Object.fromEntries(t.filter(t=>t in e).map(t=>[t,e[t]])),DEFAULT_COMMON_BASE_URL="https://api.tomtom.com",defaultRetryConfig={initialWaitMs:447,backoffFactor:1.618,timeoutMs:4e4},defaultConfig={commonBaseURL:"https://api.tomtom.com",apiKey:"",retry:defaultRetryConfig},withRetryDefaults=(...e)=>e.reduce((e,t)=>({...e,...definedFields(t)}),{...defaultRetryConfig}),copyOfDefaultConfig=()=>({...defaultConfig,retry:withRetryDefaults()}),TomTomConfig=class TomTomConfig{static{this.instance=new TomTomConfig}constructor(){this.config=copyOfDefaultConfig()}put(e){this.config={...this.config,...e,...e.retry&&{retry:withRetryDefaults(e.retry)}}}reset(){this.config=copyOfDefaultConfig()}get(){return this.config}},mergeFromGlobal=(e={})=>{const t=TomTomConfig.instance.get(),A={...t,...e};return{...A,retry:A.retry&&withRetryDefaults(t.retry,e.retry)}},isProxyCredentialsMode=(e=TomTomConfig.instance.get())=>!e.apiKey&&"https://api.tomtom.com"!==(e.commonBaseURL??"https://api.tomtom.com"),LOOPBACK_IPV4=/^127\.\d{1,3}\.\d{1,3}\.\d{1,3}$/,isSecureBaseURL=e=>{let t;try{t=new URL(e)}catch{return!0}if("https:"===t.protocol)return!0;const{hostname:A}=t;return"http:"===t.protocol&&("localhost"===A||A.endsWith(".localhost")||"[::1]"===A||LOOPBACK_IPV4.test(A))},insecureBaseURLMessage=e=>`commonBaseURL ${e} is not https:, so requests to it would carry the API key in the clear; only loopback addresses may use http:.`,geopoliticalViews=["Unified","AE","AR","BN","CL","CN","DZ","IL","IN","KR","MA","MY","PH","PK","RS","RU","TR","TW","US","VN"],languages=["ngt","ngt-Latn","ar","eu-ES","bg-BG","ca-ES","zh-Hant","zh-Hans","hr-HR","cs-CZ","da-DK","nl-NL","en-AU","en-CA","en-GB","en-NZ","en-US","et-EE","fi-FI","fr-FR","gl-ES","de-DE","el-GR","he-IL","hi-IN","hu-HU","id-ID","it-IT","ja-JP","kk-KZ","ko-KR","ko-Latn-KR","lv-LV","lt-LT","ms-MY","nb-NO","pl-PL","pt-BR","pt-PT","ro-RO","ru-RU","ru-Latn-RU","ru-Cyrl-RU","sr-RS","sk-SK","sl-SI","es-ES","es-MX","sv-SE","th-TH","tr-TR","uk-UA"],chargingPointCapabilities=["ChargingProfileCapable","ChargingPreferencesCapable","ChipCardSupport","ContactlessCardSupport","CreditCardPayable","DebitCardPayable","PedTerminal","RemoteStartStopCapable","Reservable","RfidReader","StartSessionConnectorRequired","TokenGroupCapable","UnlockCapable","PlugAndCharge","Unknown"],chargingPointRestrictions=["EvOnly","Plugged","Disabled","Customers","Motorcycles"],connectorTypes=["StandardHouseholdCountrySpecific","IEC62196Type1","IEC62196Type1CCS","IEC62196Type2CableAttached","IEC62196Type2Outlet","IEC62196Type2CCS","IEC62196Type3","Chademo","GBT20234Part2","GBT20234Part3","IEC60309AC3PhaseRed","IEC60309AC1PhaseBlue","IEC60309DCWhite","Tesla"],currentTypes=["AC1","AC3","DC"],geographyTypes=["Country","CountrySubdivision","CountrySecondarySubdivision","CountryTertiarySubdivision","Municipality","MunicipalitySubdivision","MunicipalitySecondarySubdivision","Neighbourhood","PostalCodeArea"],placeTypes=["POI","Street","Geography","Point Address","Address Range","Cross Street"],poiCategories=["ABORIGINAL_LAND","ADVENTURE_SPORTS_FACILITY","ADVENTURE_VEHICLE_TRAIL","ADVERTISING_COMPANY","AFGHAN_RESTAURANT","AFRICAN_RESTAURANT","AGRICULTURAL_SUPPLIES","AGRICULTURAL_TECHNOLOGY","AGRICULTURE","AIRFIELD","AIRLINE_ACCESS","AIRLINE_COMPANY","AIRPORT","AMBULANCE_UNIT","AMERICAN_RESTAURANT","AMPHITHEATER","AMUSEMENT_PARK","AMUSEMENT_PARK_GENERIC","AMUSEMENT_PLACE","ANIMAL_SERVICE","ANIMAL_SHELTER","ANTIQUE_ART_SHOP","APARTMENT_RENTAL","AQUATIC_ZOO","ARABIAN_RESTAURANT","ARBORETA_AND_BOTANICAL_GARDENS","ARCH","ARMENIAN_RESTAURANT","ART_SCHOOL","ASIAN_RESTAURANT","ATHLETICS_TRACK","ATM","ATV_DEALER","AUSTRALIAN_RESTAURANT","AUSTRIAN_RESTAURANT","AUTOMOBILE_COMPANY","AUTOMOBILE_MANUFACTURING","BAGS_LEATHERWEAR","BAKERY","BANDB_OR_GUEST_HOUSE","BANK","BANQUET_ROOMS","BAR","BARBECUE_RESTAURANT","BASEBALL_PARK","BASKETBALL_ARENA","BASQUE_RESTAURANT","BATTLEFIELD","BAY","BEACH","BEACH_CLUB","BEAUTY_SALON","BEAUTY_SUPPLIES","BELGIAN_RESTAURANT","BETTING_STATION","BISTRO","BLOOD_BANK","BOATING_EQUIPMENT_AND_ACCESSORIES","BOAT_DEALER","BOAT_LAUNCHING_RAMP","BODYSHOP","BOLIVIAN_RESTAURANT","BOOK_SHOP","BORDER_CONTROL","BOWLING_CENTER","BRAZILIAN_RESTAURANT","BRIDGE","BRITISH_RESTAURANT","BUFFET_RESTAURANT","BUILDING","BULGARIAN_RESTAURANT","BUNGALOW_RENTAL","BURMESE_RESTAURANT","BUSINESS_PARK","BUSINESS_SERVICES","BUS_CHARTER_COMPANY","BUS_DEALER","BUS_LINES","BUS_STOP","BUTCHER","CABARET_THEATER","CABINS_LODGES","CABLE_AND_TELEPHONE_COMPANY","CAFE","CAFETERIA","CAFE_PUB","CALIFORNIAN_RESTAURANT","CAMBODIAN_RESTAURANT","CAMERAS_AND_PHOTOGRAPHY","CAMPING_GROUND","CANADIAN_RESTAURANT","CANNABIS_SHOP","CAPE","CARAVAN_SITE","CARIBBEAN_RESTAURANT","CARPET_FLOOR_COVERINGS","CAR_DEALER","CAR_GLASS_REPLACEMENT_SHOP","CAR_RENTAL","CAR_REPAIR_AND_SERVICE","CAR_WASH","CAR_WASH_GENERIC","CASINO_AND_GAMBLING","CATERING_SERVICES","CAVE","CEMETERY","CHALET_RENTAL","CHARGING_LOCATION","CHEMICAL_COMPANY","CHICKEN_RESTAURANT","CHILDCARE","CHILDREN_S_CLOTHES","CHILEAN_RESTAURANT","CHINESE_RESTAURANT","CHRISTMAS_OR_HOLIDAY_SHOP","CHURCH","CINEMA","CLEANING_SERVICES","CLOTHING_SHOP","CLUB_AND_ASSOCIATION","COCKTAIL_BAR","COFFEE_SHOP","COLLEGE_OR_UNIVERSITY","COLLEGE_OR_UNIVERSITY_GENERIC","COLOMBIAN_RESTAURANT","COMEDY_CLUB","COMMERCIAL_BUILDING","COMMUNITY_CENTER","COMPANY","COMPUTER_AND_COMPUTER_SUPPLIES","COMPUTER_AND_DATA_SERVICES","CONCERT_HALL","CONSTRUCTION_COMPANY","CONSTRUCTION_MATERIAL_AND_EQUIPMENT","CONSUMER_ELECTRONICS","CONVENIENCE_STORE","CORSICAN_RESTAURANT","COTTAGE_RENTAL","COURIER_DROP_BOX","COURTHOUSE","COVE","CREOLE_RESTAURANT","CREPERIE","CRICKET_GROUND","CUBAN_RESTAURANT","CULTURAL_CENTER","CURTAINS_TEXTILES","CZECH_RESTAURANT","C_DS_DVD_VIDEOS","DAM","DANCE_STUDIO_AND_SCHOOL","DANISH_RESTAURANT","DELICATESSEN","DELIVERY_SERVICE","DENTIST","DEPARTMENT_STORE","DINNER_THEATER","DISCO_CLUB","DIVERSIFIED_FINANCIALS","DOCTOR","DONGBEI_RESTAURANT","DOUGHNUT_RESTAURANT","DO_IT_YOURSELF_CENTERS","DRIVE_IN_MOVIES","DRIVE_THROUGH_BOTTLE_SHOP","DRIVING_SCHOOL","DRUG_STORE","DRY_CLEANER","DUNE","DUTCH_RESTAURANT","EGYPTIAN_RESTAURANT","ELECTRICAL_APPLIANCES_SHOP","ELECTRONICS_COMPANY","EMBASSY","EMERGENCY_MEDICAL_SERVICE","EMERGENCY_ROOM","ENGLISH_RESTAURANT","ENTERTAINMENT","EQUIPMENT_RENTAL","ETHIOPIAN_RESTAURANT","EXCHANGE","EXHIBITION_CONVENTION_CENTER","FACTORY_OUTLET","FAIRGROUND","FARM","FARMERS_MARKET","FAST_FOOD","FERRY_TERMINAL","FINNISH_RESTAURANT","FIRE_STATION","FISHING_AND_HUNTING_AREA","FISHMONGER","FITNESS_CLUB_AND_CENTER","FLATS_OR_APARTMENT_COMPLEX","FLORISTS","FLYING_CLUB","FONDUE_RESTAURANT","FOOD_AND_DRINKS_SHOP","FOOD_MARKET","FOOTBALL_STADIUM","FOOTWEAR_SHOE_REPAIRS","FOREIGN_EXCHANGE","FOREST_AREA","FRENCH_RESTAURANT","FUEL_STATION","FUNERAL_SERVICE_AND_MORTUARIES","FURNITURE_HOME_FURNISHINGS","FUSION_RESTAURANT","GARDEN_CENTERS_SERVICES","GENERAL_HOSPITAL_AND_POLYCLINIC","GENERAL_PRACTITIONER","GERMAN_RESTAURANT","GIFTS_CARDS_NOVELTIES_SOUVENIRS","GLASSWARE_CERAMIC_SHOP","GLASS_WINDOWS_STORE","GOLD_EXCHANGE","GOLF_COURSE","GOVERNMENT_OFFICE","GREEK_RESTAURANT","GREENGROCER","GRILL_RESTAURANT","GROCERY_STORE","GURUDWARA","HAIRDRESSER","HAMBURGER_RESTAURANT","HARBOR","HARDWARE_STORE","HAWAIIAN_RESTAURANT","HEALTHCARE_SERVICE","HELIPORT_OR_HELIPAD","HIGH_SCHOOL","HIKING_TRAIL","HILL","HISTORICAL_PARK","HISTORIC_SITE","HOBBY_SHOP","HOCKEY_CLUB","HOLIDAY_RENTAL","HOME_APPLIANCE_REPAIR","HORSE_RACING_TRACK","HORSE_RIDING","HORSE_RIDING_TRAIL","HORTICULTURE","HOSPITAL","HOSPITAL_FOR_WOMEN_AND_CHILDREN","HOSPITAL_OF_CHINESE_MEDICINE","HOSTEL","HOTEL","HOTEL_OR_MOTEL","HOT_POT_RESTAURANT","HOUSE_AND_GARDEN_FURNITURE_AND_FITTINGS","HUNAN_RESTAURANT","HUNGARIAN_RESTAURANT","ICE_CREAM_PARLOR","ICE_HOCKEY_ARENA","ICE_RINK","IMPORT_OR_EXPORT_AND_DISTRIBUTION","INDIAN_RESTAURANT","INDONESIAN_RESTAURANT","INDUSTRIAL_BUILDING","INFORMAL_MARKET","INSURANCE_COMPANY","INTERNATIONAL_RAILROAD_STATION","INTERNATIONAL_RESTAURANT","INTERNET_CAFE","INVESTMENT_ADVISOR","IRANIAN_RESTAURANT","IRISH_RESTAURANT","ISLAND","ISRAELI_RESTAURANT","ITALIAN_RESTAURANT","JAMAICAN_RESTAURANT","JAPANESE_RESTAURANT","JAZZ_CLUB","JEWELRY_CLOCKS_WATCHES","JEWISH_RESTAURANT","JUICE_BAR","JUNIOR_COLLEGE_OR_COMMUNITY_COLLEGE","KARAOKE_CLUB","KITCHENS_BATHROOMS","KOREAN_RESTAURANT","KOSHER_RESTAURANT","LANGUAGE_SCHOOL","LATIN_AMERICAN_RESTAURANT","LAUNDRY","LEBANESE_RESTAURANT","LEGAL_SERVICES","LEISURE_CENTER","LIGHTING_SHOPS","LOCALE","LOCAL_SPECIALITIES_SHOP","LOTTERY_SHOP","MALL","MANUFACTURING_COMPANY","MANUFACTURING_FACILITY","MARINA","MARINA_GENERIC","MARKETPLACE","MARSH","MAUSOLEUM_OR_GRAVE","MECHANICAL_ENGINEERING","MEDIA_FACILITY","MEDICAL_SUPPLIES_EQUIPMENT","MEDICINAL_AND_RECREATIONAL_DISPENSARY","MEDICINAL_MARIJUANA_DISPENSARY","MEDITERRANEAN_RESTAURANT","MEMORIAL","MEN_S_CLOTHING","MEXICAN_RESTAURANT","MICROBREWERY","MIDDLE_EASTERN_RESTAURANT","MIDDLE_SCHOOL","MILITARY_AIRPORT","MINERAL_OR_HOT_SPRINGS","MINING_COMPANY","MOBILE_PHONE_SHOP","MONGOLIAN_RESTAURANT","MONUMENT","MOROCCAN_RESTAURANT","MOSQUE","MOTEL","MOTORCYCLE_DEALER","MOTORCYCLE_REPAIR","MOTORING_ORGANIZATION_OFFICE","MOTOR_RACING_STADIUM","MOUNTAIN_BIKE_TRAIL","MOUNTAIN_PASS","MOUNTAIN_PEAK","MOVIE_THEATER","MOVING_AND_STORAGE_COMPANY","MULTI_PURPOSE_STADIUM","MUSEUM","MUSIC_CENTER","MUSIC_INSTRUMENTS_STORE","NAIL_SALON","NATIONAL_RAILROAD_STATION","NATURAL_FEATURE","NATURAL_TOURIST_ATTRACTION","NEPALESE_RESTAURANT","NETBALL_STADIUM","NEWSAGENTS_TOBACCONISTS","NIGHTLIFE","NON_GOVERNMENTAL_ORGANIZATION","NORWEGIAN_RESTAURANT","OASIS","OBSERVATORY","OFFICE_EQUIPMENT","OIL_AND_NATURAL_GAS","OPEN_CAR_PARKING_AREA","OPEN_CAR_PARKING_AREA_GENERIC","OPERA_HOUSE","OPTICIAN","ORGANIC_FOOD_RESTAURANT","ORIENTAL_RESTAURANT","PAGODA","PAINTING_DECORATING","PAKISTANI_RESTAURANT","PAN","PARK","PARKING_GARAGE","PARKWAY","PARK_AND_RECREATION_AREA","PASSENGER_TRANSPORT_TICKET_OFFICE","PAWN_SHOP","PEDESTRIAN_SUBWAY","PERSONAL_CARE_FACILITY","PERSONAL_SERVICE","PERUVIAN_RESTAURANT","PET_SUPPLIES","PHARMACEUTICAL_COMPANY","PHARMACY","PHILIPPINE_RESTAURANT","PHOTOCOPY_SHOP","PHOTO_LAB_OR_DEVELOPMENT","PICNIC_AREA","PIZZERIA","PLAIN_OR_FLAT","PLANETARIUM","PLATEAU","POLICE_STATION","POLISH_RESTAURANT","PORTUGUESE_RESTAURANT","PORT_WAREHOUSE_FACILITY","POST_OFFICE","PRE_SCHOOL","PRIMARY_PRODUCER","PRIMARY_RESOURCE_UTILITY","PRIMARY_SCHOOL","PRISON","PRIVATE_AIRPORT","PROTECTED_LAND","PUB","PUBLIC_AIRPORT","PUBLIC_AMENITY","PUBLIC_BATHROOM","PUBLIC_CALL_BOX","PUBLIC_LIBRARY","PUBLIC_MARKET","PUBLIC_TRANSPORT_STOP","PUBLISHING_TECHNOLOGIES","QUARRY","RACE_TRACK","RAILWAY_STATION","RAPIDS","REAL_ESTATE_AGENT","REAL_ESTATE_COMPANY","RECREATIONAL_CAMPING_GROUND","RECREATIONAL_MARIJUANA_DISPENSARY","RECREATIONAL_VEHICLE_DEALER","RECREATION_AREA","RECYCLING_SHOP","REEF","RELIGIOUS_SITE","RENTAL_CAR_PARKING","RESCUE_SERVICE","RESEARCH_FACILITY","RESERVOIR","RESIDENTIAL_ACCOMMODATION","RESIDENTIAL_ENTRANCE","RESORT","RESTAURANT","RESTAURANT_AREA","REST_AREA","REST_CAMP","RETAIL_OUTLET","RETIREMENT_COMMUNITY","RIDGE","RIVER_CROSSING","ROCKS","ROCK_CLIMBING_TRAIL","RUGBY_GROUND","RUSSIAN_RESTAURANT","SALAD_BAR","SANDWICH_RESTAURANT","SAUNA_SOLARIUM_MASSAGE","SCANDINAVIAN_RESTAURANT","SCHOOL","SCHOOL_BUS_COMPANY","SCHOOL_GENERIC","SEAFOOD","SECURED_ENTRANCE","SECURITY_PRODUCTS","SENIOR_HIGH_SCHOOL","SERVICE_COMPANY","SHANDONG_RESTAURANT","SHOPPING_SERVICE","SHOP_OR_STORE","SICHUAN_RESTAURANT","SKI_RESORT","SNACKS_RESTAURANT","SOCCER_STADIUM","SOFTWARE_COMPANY","SOUL_FOOD","SOUP_RESTAURANT","SPANISH_RESTAURANT","SPECIALIST","SPECIALTY_CLOTHING_SHOP","SPECIALTY_FOODS","SPECIAL_HOSPITAL","SPORTS_CENTER","SPORTS_CENTER_GENERIC","SPORTS_EQUIPMENT_AND_CLOTHING","SQUASH_COURT","STADIUM","STATION_ACCESS","STATUE","STEAK_HOUSE","STOCK_EXCHANGE","STREETCAR_STOP","SUBWAY_ENTRANCE","SUBWAY_STATION","SUPERMARKET","SUSHI_RESTAURANT","SWEDISH_RESTAURANT","SWIMMING_POOL","SWISS_RESTAURANT","SYNAGOG","SYRIAN_RESTAURANT","TAILOR_SHOP","TAIWANESE_RESTAURANT","TAKEOUT_FOOD","TAPAS_RESTAURANT","TAXI_LIMOUSINE_AND_SHUTTLE_SERVICE","TAXI_STAND","TAX_SERVICES","TEA_HOUSE","TELECOMMUNICATIONS","TEMPLE","TENNIS_COURT","TEPPANYAKI_RESTAURANT","THAI_RESTAURANT","THEATER","THEATER_GENERIC","THEMATIC_SPORT_CENTER","TIBETAN_RESTAURANT","TIRE_SERVICE","TOLL_GATE","TOURIST_ATTRACTION","TOURIST_INFORMATION","TOWER","TOYS_GAMES_SHOP","TRAFFIC_CONTROL_DEPARTMENT","TRAFFIC_CONTROL_DEPARTMENT_GENERIC","TRAIL_SYSTEM","TRANSPORT_ACCESS","TRANSPORT_AUTHORITY_VEHICLE_REGISTRATION","TRANSPORT_COMPANY","TRAVEL_AGENT","TRUCK_DEALER","TRUCK_REPAIR_AND_SERVICE","TRUCK_STOP","TUNISIAN_RESTAURANT","TUNNEL","TURKISH_RESTAURANT","URBAN_STATION","VALLEY","VAN_DEALER","VARIETY_STORE","VEGETARIAN_RESTAURANT","VEHICLE_DEALER","VEHICLE_REPAIR","VENEZUELAN_RESTAURANT","VETERINARY","VIDEO_RENTAL_SHOP","VIETNAMESE_RESTAURANT","VIEWPOINT","VILLA_RENTAL","VOCATIONAL_SCHOOL","WATER_HOLE","WATER_SPORT","WEDDING_SERVICES","WEIGH_STATION","WEIGH_STATION_GENERIC","WELFARE_ORGANIZATION","WELL","WESTERN_RESTAURANT","WHOLESALE_CLUB","WILDERNESS_AREA","WILDLIFE_PARK","WINERY","WINE_SPIRITS","WOMEN_S_CLOTHING","YACHT_BASIN","ZOO","ZOOS_ARBORETA_BOTANICAL_GARDEN"],budgetTypes=["timeMinutes","distanceKM"],budgetUnits={timeMinutes:"min",distanceKM:"km"},avoidableTypes=["tollRoads","motorways","ferries","unpavedRoads","carpools","alreadyUsedRoads","borderCrossings","tunnels","carTrains","lowEmissionZones"],geometrySectionTypes=["curve","curvyStretch"],apiSectionTypes=["carpool","carTrain","country","ferry","importantRoadStretch","lowEmissionZone","motorway","pedestrian","roadShields","speedLimit","toll","tollRoad","tollVignette","traffic","tunnel","unpaved","urban","vehicleRestricted"],defaultSectionTypes=/* @__PURE__ */(()=>[...apiSectionTypes,"lanes"])(),inputSectionTypes=/* @__PURE__ */(()=>[...apiSectionTypes,...geometrySectionTypes])(),inputSectionTypesWithGuidance=/* @__PURE__ */(()=>[...inputSectionTypes,"lanes"])(),sectionTypes=/* @__PURE__ */(()=>[...inputSectionTypesWithGuidance,"leg","distinct"])(),sdkErrorCodes=["INVALID_REQUEST","INSECURE_BASE_URL","INVALID_CREDENTIALS","INSUFFICIENT_PERMISSIONS","NOT_FOUND","RATE_LIMITED","LIVE_SERVICE_NOT_AVAILABLE","NETWORK_NOT_AVAILABLE","ABORTED","WEBGL_UNSUPPORTED","WEBGL_CONTEXT_LOST","STYLE_LOAD_FAILED","INTERNAL"],areaAnalyticsMetricKeys=["speed","freeFlowSpeed","congestionLevel","travelTime","networkLength"],trafficIncidentRequestCategories=["accident","broken-down-vehicle","danger","flooding","fog","frost","jam","lane-closed","other","rain","road-closed","roadworks","wind"],fullTrafficIncidentCategories=/* @__PURE__ */(()=>[...trafficIncidentRequestCategories,"animals-on-road","narrow-lanes"])(),trafficIncidentTimeValidities=["present","future"],isBBoxWithArea=e=>!!e&&e.length>=4&&e[3]!==e[1]&&e[2]!==e[0],bboxOnlyIfWithArea=e=>isBBoxWithArea(e)?e:void 0,unwrappedEast=([e,,t])=>e>t?t+360:t,bboxLongitudeSpan=e=>unwrappedEast(e)-e[0],toBBox=(e,t,A,E)=>e>A?[180===e?-180:e,t,-180===A?180:A,E]:[e,t,A,E],wrapLongitude=e=>e>180?e-360:e<-180?e+360:e,longitudeRanges=e=>{if(bboxLongitudeSpan(e)>=360)return[[-180,180]];const t=wrapLongitude(e[0]),A=wrapLongitude(e[2]);return t>A?[[t,180],[-180,A]]:[[t,A]]},bboxFromBBoxes=e=>{const t=e?.filter(e=>!!e)??[];if(t.length<=1)return t[0];let A=Number.POSITIVE_INFINITY,E=Number.NEGATIVE_INFINITY;for(const I of t)A=Math.min(A,I[1]),E=Math.max(E,I[3]);const R=(e=>{const t=[];for(const[A,E]of e.flatMap(longitudeRanges).sort((e,t)=>e[0]-t[0])){const e=t.at(-1);e&&A<=e[1]?e[1]=Math.max(e[1],E):t.push([A,E])}return t})(t);let n=R.length-1,T=R[0][0]+360-R[n][1];for(let I=0;I<R.length-1;I++){const e=R[I+1][0]-R[I][1];e>T&&(T=e,n=I)}return toBBox(R[(n+1)%R.length][0],A,R[n][1],E)},positionsExtent=(e,t)=>{const A=e?.length;if(!A)return;const E={west:Number.POSITIVE_INFINITY,east:Number.NEGATIVE_INFINITY,crossingWest:Number.POSITIVE_INFINITY,crossingEast:Number.NEGATIVE_INFINITY,south:Number.POSITIVE_INFINITY,north:Number.NEGATIVE_INFINITY},R=e=>{if(!e||e.length<2)return;const A=t(e[0]);E.west=Math.min(E.west,A),E.east=Math.max(E.east,A),A<0?E.crossingEast=Math.max(E.crossingEast,A):E.crossingWest=Math.min(E.crossingWest,A),E.south=Math.min(E.south,e[1]),E.north=Math.max(E.north,e[1])},n=Math.ceil(A/1e3);for(let T=0;T<A;T+=n)R(e[T]);return n>1&&R(e[A-1]),E.south===Number.POSITIVE_INFINITY?void 0:E},bboxFromCoordsArray=e=>{const t=positionsExtent(e,wrapLongitude);if(!t)return;const{west:A,south:E,east:R,north:n,crossingWest:T,crossingEast:I}=t,o=R-A,r=I+360-T;return Number.isFinite(r)&&o<360&&r<o?toBBox(T,E,I,n):[A,E,R,n]},bboxFromLine=e=>{const t=positionsExtent(e,e=>e);if(!t)return;const{west:A,south:E,east:R,north:n}=t;if(R-A>=360)return[-180,E,180,n];const T=wrapLongitude(A),I=R+(T-A);return toBBox(T,E,I>180?I-360:I,n)},bboxFromGeoJSON=e=>{if(!e)return;if(Array.isArray(e))return"number"==typeof e[0]?e.length>=4?e:void 0:bboxFromBBoxes(e.map(e=>bboxFromGeoJSON(e)));const{bbox:t}=e;if(t)return 6===t.length?[t[0],t[1],t[3],t[4]]:t;switch(e.type){case"Feature":return bboxFromGeoJSON(e.geometry);case"FeatureCollection":return bboxFromBBoxes(e.features.map(bboxFromGeoJSON));case"GeometryCollection":return bboxFromBBoxes(e.geometries.map(bboxFromGeoJSON));case"Point":return bboxFromCoordsArray([e.coordinates]);case"MultiPoint":return bboxFromCoordsArray(e.coordinates);case"LineString":return bboxFromLine(e.coordinates);case"MultiLineString":case"Polygon":return bboxFromBBoxes(e.coordinates.map(bboxFromLine));case"MultiPolygon":return bboxFromBBoxes(e.coordinates.flatMap(e=>e.map(bboxFromLine)));default:return}},bboxCenter=e=>{const[t,A,,E]=e,R=(t+unwrappedEast(e))/2;return[R>180?R-360:R,(A+E)/2]},polygonFromBBox=e=>{const[t,A,,E]=e,R=unwrappedEast(e);return{type:"Feature",geometry:{type:"Polygon",coordinates:[[[t,A],[R,A],[R,E],[t,E],[t,A]]]},properties:{}}},MAX_MERCATOR_LATITUDE=85.051129,getPosition=(e,t)=>{if(e){if(Array.isArray(e))return e;if(e.coordinates)return e.coordinates;if(e.geometry)return"main-when-available"===t?.useEntryPoint?(e=>{const t=e?.properties?.entryPoints;return t?.find(e=>"main"===e.type)??t?.find(e=>!e.type)})(e)?.position??e.geometry.coordinates:e.geometry.coordinates}return null},getPositionStrict=(e,t)=>{const A=getPosition(e,t);if(!A)throw new Error(`The received object does not have lng-lat coordinates: ${JSON.stringify(e)}`);return A},toPointGeometry=e=>({type:"Point",coordinates:e}),clamp=(e,t,A)=>Math.max(t,Math.min(e,A)),projectAlongRouteLocation=(e,t)=>nearestPointOnLine(e,getPositionStrict(t)).properties.totalDistance,findInsertionSlot=(e,t)=>{for(let A=0;A<e.length-1;A++)if(t>=e[A]&&t<=e[A+1])return A+1;return t<e[0]?0:e.length},slotNewWaypoints=(e,t,A)=>{if(!A.length||e.geometry.coordinates.length<2||t.length<2)return A.map(()=>({slot:0,location:0}));const E=t.map(t=>projectAlongRouteLocation(e,t));return A.map(t=>{const A=projectAlongRouteLocation(e,t);return{slot:findInsertionSlot(E,A),location:A}})},findBestWaypointInsertionIndex=(e,t,A)=>findBestWaypointInsertionIndices(e,t,[A])[0],findBestWaypointInsertionIndices=(e,t,A)=>slotNewWaypoints(e,t,A).map(({slot:e})=>e),withInsertedWaypoint=(e,t,A)=>withInsertedWaypoints(e,t,[A]),withInsertedWaypoints=(e,t,A)=>{const E=Array.from({length:t.length+1},()=>[]),R=slotNewWaypoints(e,t,A);for(const[T,{slot:I,location:o}]of R.entries())E[I].push({waypoint:A[T],location:o,inputIndex:T});for(const T of E)T.sort((e,t)=>e.location-t.location||e.inputIndex-t.inputIndex);const n=[];for(let T=0;T<t.length;T++){for(const e of E[T])n.push(e.waypoint);n.push(t[T])}for(const T of E[t.length])n.push(T.waypoint);return n},progressValuesOf=({distanceInMeters:e,travelTimeInSeconds:t})=>void 0===e||void 0===t?void 0:{distanceInMeters:e,travelTimeInSeconds:t},progressBetween=(e,t,A)=>({distanceInMeters:e.distanceInMeters+A*(t.distanceInMeters-e.distanceInMeters),travelTimeInSeconds:e.travelTimeInSeconds+A*(t.travelTimeInSeconds-e.travelTimeInSeconds)}),calculateProgressAtRoutePoint=(e,t)=>{const{progress:A}=e.properties;if(!A||0===A.length)return;const E=e.geometry.coordinates.length;if(t<0||t>=E)return;const R=findBracketingProgressPoints(A,"pointIndex",t);if(!R)return;const{lower:n,lowerValue:T,upper:I,upperValue:o}=R,r=progressValuesOf(n),N=progressValuesOf(I);if(!r||!N)return;if(T===o)return r;const _=lengthShareOfBracket(e.geometry.coordinates,T,t,o);return progressBetween(r,N,_)},getRouteProgressBetween=(e,t,A)=>{const E=calculateProgressAtRoutePoint(e,t),R=calculateProgressAtRoutePoint(e,A);if(E&&R)return{start:E,end:R,delta:{distanceInMeters:R.distanceInMeters-E.distanceInMeters,travelTimeInSeconds:R.travelTimeInSeconds-E.travelTimeInSeconds}}},getRouteProgressForSection=(e,t)=>getRouteProgressBetween(e,t.startPointIndex,t.endPointIndex),getSectionBBox=(e,t)=>{const A=e.geometry.coordinates;if(!A||0===A.length||t.startPointIndex<0||t.endPointIndex>=A.length||t.startPointIndex>t.endPointIndex)return;const E=Math.floor((t.startPointIndex+t.endPointIndex)/2);return bboxFromCoordsArray([A[t.startPointIndex],A[E],A[t.endPointIndex]])},getSectionOverlap=(e,t)=>{const A=Math.max(e.startPointIndex,t.startPointIndex),E=Math.min(e.endPointIndex,t.endPointIndex);return E>A?{startPointIndex:A,endPointIndex:E}:void 0},metersWithin=(e,t,A=[{startPointIndex:0,endPointIndex:e.length-1}])=>A.reduce((A,E)=>{const R=getSectionOverlap(E,t);return A+(R?e[R.endPointIndex]-e[R.startPointIndex]:0)},0),firstIndexPast=(e,t,A)=>{let E=e,R=0,n=e;for(;R<n;){const e=R+n>>>1;let T=e;for(;T<n&&void 0===t(T);)T++;const I=T<n?t(T):void 0;void 0===I?n=e:A(I)?(E=T,n=e):R=T+1}return E},findBracketingProgressPoints=(e,t,A)=>{const E=A=>e[A][t],R=e[firstIndexPast(e.length,E,e=>e>=A)];let n=firstIndexPast(e.length,E,e=>e>A)-1;for(;n>=0&&void 0===e[n][t];)n--;const T=e[n],I=T?.[t],o=R?.[t];return void 0!==I&&void 0!==o?{lower:T,lowerValue:I,upper:R,upperValue:o}:void 0},metersAlongLineCache=/* @__PURE__ */new WeakMap,EARTH_RADIUS_IN_METERS=6371008.8,RADIANS_PER_DEGREE=Math.PI/180,metersAlongLine=e=>{const t=metersAlongLineCache.get(e);if(t?.length===e.length)return t;const A=new Float64Array(e.length);let[E=0,R=0]=e[0]??[],n=Math.cos(R*RADIANS_PER_DEGREE);for(let T=1;T<e.length;T++){const[t,I]=e[T],o=Math.cos(I*RADIANS_PER_DEGREE),r=Math.sin((I-R)*RADIANS_PER_DEGREE/2),N=Math.sin((t-E)*RADIANS_PER_DEGREE/2),_=r*r+N*N*n*o;A[T]=A[T-1]+12742017.6*Math.atan2(Math.sqrt(_),Math.sqrt(1-_)),E=t,R=I,n=o}return metersAlongLineCache.set(e,A),A},segmentAtMeters=(e,t,A,E)=>{const R=firstIndexPast(e.length,t=>e[t],e=>e>=t),n=clamp(R-1,A,E-1),T=e[n+1]-e[n];return{pathIndex:n,share:T>0?clamp((t-e[n])/T,0,1):0}},positionBetween=(e,t,A)=>[e[0]+A*(t[0]-e[0]),e[1]+A*(t[1]-e[1])],lengthShareOfBracket=(e,t,A,E)=>{const R=metersAlongLine(e),n=R[E]-R[t];return n>0?(R[A]-R[t])/n:(A-t)/(E-t)},interpolateProgressAtPathIndex=(e,t,A)=>{const E=e.geometry.coordinates,R=Math.min(t+1,E.length-1),n=calculateProgressAtRoutePoint(e,t),T=calculateProgressAtRoutePoint(e,R);if(n&&T)return{position:positionBetween(E[t],E[R],A),...progressBetween(n,T,A)}},coordinateAtProgressPoint=(e,t)=>{const A=progressValuesOf(t);return A&&{position:e[t.pointIndex],...A}},resolveCoordinateAtProgress=(e,t,A)=>{const{progress:E}=e.properties,R=E?.at(-1);if(!E||!R)return;const n=e.geometry.coordinates,T=E[0],I=T[t],o=R[t];if(void 0===I||void 0===o)return;if(A<=I)return coordinateAtProgressPoint(n,T);if(A>=o)return coordinateAtProgressPoint(n,R);const r=((e,t,A,E)=>{const R=findBracketingProgressPoints(e,A,E);if(!R)return;const{lower:n,lowerValue:T,upper:I,upperValue:o}=R,r=T===o?0:(E-T)/(o-T),N=metersAlongLine(t),_=N[I.pointIndex]-N[n.pointIndex];if(0===_){const e=n.pointIndex+r*(I.pointIndex-n.pointIndex),t=Math.floor(e);return{pathIndex:t,progressRatioTowardsNextPathPoint:e-t}}const S=N[n.pointIndex]+r*_,i=segmentAtMeters(N,S,n.pointIndex,I.pointIndex);return{pathIndex:i.pathIndex,progressRatioTowardsNextPathPoint:i.share}})(E,n,t,A);return void 0!==r?interpolateProgressAtPathIndex(e,r.pathIndex,r.progressRatioTowardsNextPathPoint):void 0},getCoordinateAtRouteProgress=(e,t)=>{if("traveledTimeInSeconds"in t)return resolveCoordinateAtProgress(e,"travelTimeInSeconds",t.traveledTimeInSeconds);if("traveledDistanceInMeters"in t)return resolveCoordinateAtProgress(e,"distanceInMeters",t.traveledDistanceInMeters);const A=e.properties.summary.departureTime;if(!A)return;const E=(t.clockTime.getTime()-A.getTime())/1e3;return E<0?void 0:resolveCoordinateAtProgress(e,"travelTimeInSeconds",E)},getProgressAtNearestRoutePoint=(e,t)=>{const{progress:A}=e.properties,E=e.geometry.coordinates;if(!A?.length||E.length<2)return;const R=nearestPointOnLine(e,getPositionStrict(t)),n=R.properties.segmentIndex,T=Math.min(n+1,E.length-1),I=((e,t,A)=>{const E=A[0]-e[0],R=A[1]-e[1],n=E*E+R*R;if(0===n)return 0;const T=((t[0]-e[0])*E+(t[1]-e[1])*R)/n;return clamp(T,0,1)})(E[n],R.geometry.coordinates,E[T]);return interpolateProgressAtPathIndex(e,n,I)},SQRT_3=/* @__PURE__ */Math.sqrt(3),HEXAGON_ANGLES=/* @__PURE__ */(()=>[0,1,2,3,4,5].map(e=>2*Math.PI/6*e))(),HEXAGON_COSINES=/* @__PURE__ */(()=>HEXAGON_ANGLES.map(Math.cos))(),HEXAGON_SINES=/* @__PURE__ */(()=>HEXAGON_ANGLES.map(Math.sin))(),hexagonRowHeight=e=>SQRT_3/2*e.height,hexagonColumnOffset=(e,t)=>1&t?hexagonRowHeight(e)/2:0,hexagonCentre=(e,{column:t,row:A})=>[e.origin[0]+t*e.width*.75,e.origin[1]+A*hexagonRowHeight(e)-hexagonColumnOffset(e,t)],hexagonInColumn=(e,t,A)=>({column:t,row:Math.round((A-e.origin[1]+hexagonColumnOffset(e,t))/hexagonRowHeight(e))}),latticeCellOf=(e,t)=>"hex"===e.shape?((e,t)=>{const A=Math.round((t[0]-e.origin[0])/(.75*e.width)),E=A=>((e,t,[A,E])=>{const R=Math.abs(A-t[0])/(e.width/2),n=Math.abs(E-t[1])/(e.height/2);return Math.max(R+n/SQRT_3,2*n/SQRT_3)})(e,hexagonCentre(e,A),t);let R=hexagonInColumn(e,A,t[1]);for(const n of[A-1,A+1]){const A=hexagonInColumn(e,n,t[1]);E(A)<E(R)&&(R=A)}return R})(e,t):{column:Math.floor((t[0]-e.origin[0])/e.width+.5),row:Math.floor((t[1]-e.origin[1])/e.height+.5)},latticeCellPolygon=(e,t)=>{if("hex"===e.shape){const[A,E]=hexagonCentre(e,t),R=HEXAGON_COSINES.map((t,R)=>[A+e.width/2*t,E+e.height/2*HEXAGON_SINES[R]]);return{type:"Polygon",coordinates:[[...R,[...R[0]]]]}}const A=e.origin[0]+(t.column-.5)*e.width,E=e.origin[1]+(t.row-.5)*e.height;return polygonFromBBox([A,E,A+e.width,E+e.height]).geometry},inBBox=([e,t,A,E],[R,n])=>n>=t&&n<=E&&(e>A?R>=e||R<=A:R>=e&&R<=A),inPolygon=(e,t,[A,E])=>booleanPointInPolygon([A,E],e)||t[0]>t[2]&&(booleanPointInPolygon([A+360,E],e)||booleanPointInPolygon([A-360,E],e)),statisticOf={count:e=>e.length,sum:sum,mean:mean,median:e=>{const t=Float64Array.from(e).sort(),A=Math.floor(t.length/2);return t.length%2?t[A]:(t[A-1]+t[A])/2},min:e=>e.reduce((e,t)=>Math.min(e,t),Number.POSITIVE_INFINITY),max:e=>e.reduce((e,t)=>Math.max(e,t),Number.NEGATIVE_INFINITY)},aggregateIntoCells=(e,t)=>{const A=t,E=void 0===(R=A.value)?()=>0:"function"==typeof R?R:e=>e.properties?.[R];var R;const n=[];for(const r of e.features){const e=E(r),t=r.geometry?.coordinates;"number"==typeof e&&Number.isFinite(e)&&Number.isFinite(t?.[0])&&Number.isFinite(t?.[1])&&n.push({position:t,value:e})}const T=(e=>"string"==typeof e.grid)(A)?((e,t)=>{const{cellSizeKM:A}=t;if(!(A>0&&Number.isFinite(A)))throw new Error(`cellSizeKM must be a positive number, got ${A}`);if(!e.length)return[];const E=(({grid:e,cellSizeKM:t,gridOrigin:A},E)=>{const R=bboxFromCoordsArray(E),n=A??(R?bboxCenter(R):E[0]),T=lengthToDegrees(t,"kilometers"),I=clamp(n[1],-85.051129,85.051129),o="hex"===e?2:1;return{shape:e,origin:n,width:T/Math.cos(I*RADIANS_PER_DEGREE)*o,height:T*o}})(t,e.map(({position:e})=>e)),R=E.origin[0],n=/* @__PURE__ */new Map;for(const{position:T,value:I}of e){const e=T[0]-360*Math.round((T[0]-R)/360),t=latticeCellOf(E,[e,T[1]]),A=`${E.shape}:${t.column}:${t.row}`;let o=n.get(A);o||(o={cell:{type:"Feature",id:A,geometry:latticeCellPolygon(E,t),properties:{}},values:[]},n.set(A,o)),o.values.push(I)}return[...n.values()]})(n,A):((e,t)=>{const A=t.features.map(e=>({bbox:bboxFromGeoJSON(e),bin:{cell:e,values:[]}}));for(const{position:E,value:R}of e)for(const{bbox:e,bin:t}of A)e&&inBBox(e,E)&&inPolygon(t.cell,e,E)&&t.values.push(R);return A.map(({bin:e})=>e)})(n,A.grid),I=A.stats??["count"],o=Math.max(A.minCount??1,1);return{type:"FeatureCollection",features:T.filter(({values:e})=>e.length>=o).map(({cell:e,values:t})=>({...e,properties:{...e.properties,...Object.fromEntries(I.map(e=>[e,statisticOf[e](t)]))}}))}},generateId=()=>Date.now().toString(36)+Math.random().toString(36).substring(2),MIN_PROGRESS=5*Math.PI/180,MAX_TURN_BACK=10*Math.PI/180,NO_JUNCTION=/^(DEPART|ARRIVE|WAYPOINT|CROSS_BORDER|TOLLGATE)/,roadNamesOf=e=>[e?.streetName?.text,...(e?.roadShields??[]).map(e=>e.roadNumber.text)].filter(e=>!!e),followsTheRoad=({maneuver:e,maneuverView:t,previousRoadInfo:A,nextRoadInfo:E})=>{if(e.includes("ROUNDABOUT")||e.includes("UTURN"))return!1;if(t&&!t.offRouteAngles.length)return!0;const R=roadNamesOf(A);return roadNamesOf(E).some(e=>R.includes(e))},curvinessWeight=e=>e<30?2:e<60?1.6:e<100?1.3:e<175?1:0,SLOW_JUNCTION=/^(?:TURN|SHARP|MAKE_UTURN|.*ROUNDABOUT)/,severityOf=(e,t,A,E)=>{const R=e+.75/Math.tan(Math.min(Math.abs(t),Math.PI)/4)**2,n=3.6*Math.sqrt(3*R),T=E&&SLOW_JUNCTION.test(E)?Math.min(n,20):n;return Math.max(0,1-(T/A)**2)},turnBetween=(e,t)=>{const A=t-e;return A>Math.PI?A-2*Math.PI:A<=-Math.PI?A+2*Math.PI:A},bearing=(e,t)=>{const A=turnBetween(e[0]*RADIANS_PER_DEGREE,t[0]*RADIANS_PER_DEGREE);return Math.atan2(A*Math.cos((e[1]+t[1])/2*RADIANS_PER_DEGREE),(t[1]-e[1])*RADIANS_PER_DEGREE)},turnsBack=({meters:e,turns:t},A,E,R,n)=>{let T=0;for(let I=A;I>0&&I<t.length-1;I+=E){if(Math.abs(e[I]-e[A])>n)return!1;if(T+=R*t[I],T<-MAX_TURN_BACK)return!0;if(T>MAX_TURN_BACK)return!1}return!1},turnWithin=({along:e},t,A,E,R)=>{const n=bearing(t[A],t[E]);let T=0,I=A;for(let o=A;o<E;o++){for(;I<E&&e[I]-e[o]<5;)I++;if(e[I]-e[o]<5)break;T=Math.max(T,R*turnBetween(n,bearing(t[o],t[I])))}return T},fittedRadius=(e,t,A)=>{if(A-t<2)return;const[E,R]=e[t],n=6371008.8*Math.cos(R*RADIANS_PER_DEGREE),T=e.slice(t,A+1).map(([e,t])=>[turnBetween(E*RADIANS_PER_DEGREE,e*RADIANS_PER_DEGREE)*n,(t-R)*RADIANS_PER_DEGREE*6371008.8]),I=T.reduce((e,[t])=>e+t,0)/T.length,o=T.reduce((e,[,t])=>e+t,0)/T.length;let r=0,N=0,_=0,S=0,i=0;for(const[C,L]of T){const e=C-I,t=L-o;r+=e*e,N+=e*t,_+=t*t,S+=e*(e*e+t*t),i+=t*(e*e+t*t)}const s=r*_-N*N;if(s<=1e-6*(r+_)**2)return;const O=(S*_-i*N)/(2*s),a=(i*r-S*N)/(2*s);return Math.sqrt(O*O+a*a+(r+_)/T.length)},runFrom=(e,t,A,E,R)=>{let n=A,T=A;for(let I=A+1;I<e.length-1;I++){const A=E*e[I];if(A>E*e[n]&&(n=I),A-E*e[T]>=MIN_PROGRESS&&(T=I),E*e[n]-A>MAX_TURN_BACK)return{last:n,next:n+1};if(t[I]-t[T]>R)return{last:n,next:I}}return{last:n,next:e.length-1}},sharpestPart=({meters:e,turns:t},{sign:A,first:E,last:R},n)=>{let T=0,I=Number.POSITIVE_INFINITY,o=E,r=Number.NEGATIVE_INFINITY;const N={first:E,last:E};for(let _=E;_<=R;_++){const E=T-n*e[_];E<I&&(I=E,o=_),T+=A*t[_];const R=T-n*e[_]-I;R>r&&(r=R,N.first=o,N.last=_)}return N},fittedRadiusOf=(e,t,A,E,R)=>{const{indexes:n}=e,T=(({meters:e,turns:t},A,E,R)=>{const n=.8*Math.abs(R),T=Math.sign(R),I={first:A,last:E};let o=A,r=0;for(let N=A;N<=E;N++){for(r+=T*t[N];o<N&&r-T*t[o]>=n;)r-=T*t[o++];r>=n&&e[N]-e[o]<e[I.last]-e[I.first]&&(I.first=o,I.last=N)}return I})(e,A,E,R),I=T.first===T.last,o=I?Math.max(A,T.first-1):T.first,r=I?Math.min(E,T.last+1):T.last;return fittedRadius(t,n[o],n[r])??fittedRadius(t,n[A],n[E])},headingOf=(e,t,{sign:A,first:E,last:R},n)=>{const{indexes:T,turns:I}=e;let o=0;for(let r=E;r<=R;r++)o+=I[r];return turnsBack(e,E-1,-1,A,n)&&(o+=A*turnWithin(e,t,T[E-1],T[E],-A)),turnsBack(e,R+1,1,A,n)&&(o+=A*turnWithin(e,t,T[R],T[R+1],A)),o},getCurveSections=(e,{minHeadingChangeInDegrees:t=40,maxRadiusInMeters:A=250,maxStraightInMeters:E=Math.max(40,.15*A)}={})=>{const R=e.properties.sections.leg.slice(0,-1).flatMap(e=>e.endPointIndex??[]),{coordinates:n}=e.geometry,T=((e,t)=>{const A=metersAlongLine(e),E=new Int32Array(e.length),R=new Float64Array(e.length);let n=0;for(let r=0;r<e.length;r++){const t=n?A[r]-R[n-1]:Number.POSITIVE_INFINITY;(t>=10||r===e.length-1&&t>0)&&(E[n]=r,R[n++]=A[r])}const T=new Float64Array(n);let I=n>1?bearing(e[E[0]],e[E[1]]):0,o=0;for(let r=1;r<n-1;r++){const A=bearing(e[E[r]],e[E[r+1]]);for(;o<t.length&&t[o]<=E[r-1];)o++;const R=o<t.length&&t[o]<E[r+1];T[r]=R?0:turnBetween(I,A),I=A}return{along:A,indexes:E.subarray(0,n),meters:R.subarray(0,n),turns:T}})(n,R),{along:I,indexes:o,meters:r}=T,N=((e,t)=>{let A=0;return E=>{const R=t[E]-150;for(;A<e.length&&t[e[A].endPointIndex]<R;)A++;let n=0;for(let t=A;t<e.length&&e[t].startPointIndex<=E;t++)n=Math.max(n,e[t].maxSpeedLimitInKmh);return n||80}})(e.properties.sections.speedLimit??[],I),_=(e=>{let t=0;return(A,E)=>{for(;t<e.length&&e[t].pathPointIndex<A;)t++;for(let R=t;R<e.length&&e[R].pathPointIndex<=E;R++){const t=e[R];if(!NO_JUNCTION.test(t.maneuver)&&!followsTheRoad(t))return t.maneuver}}})(e.properties.guidance?.instructions??[]);let S=0;const i=[],s=t*RADIANS_PER_DEGREE;for(const O of(({meters:e,turns:t},A,E)=>{const R=new Float64Array(t.length);for(let I=1;I<t.length;I++)R[I]=R[I-1]+t[I];const n=[];let T=1;for(;T<t.length-1;){if(0===t[T]){T++;continue}const I=t[T]>0?1:-1,o=T,{last:r,next:N}=runFrom(R,e,o,I,A);I*(R[r]-R[o-1])>=E&&n.push({sign:I,first:o,last:r}),T=N}return n})(T,E,s/2)){const{first:e,last:t}=sharpestPart(T,O,1/(2*A)),R=headingOf(T,n,{sign:O.sign,first:e,last:t},E),I=r[e]-r[e-1],o=r[t+1]-r[t],N=(Math.min(I,o,E)+(r[t]-r[e]))/Math.abs(R),_=fittedRadiusOf(T,n,e,t,R)??N,a=Math.max(I<=E?e-1:e,S),C=o<=E?t+1:t;Math.abs(R)<s||_>A||a>=C||(S=C,i.push({start:a,end:C,heading:R,radiusInMeters:_}))}return i.map(({start:e,end:t,heading:A,radiusInMeters:E},R)=>{const n=o[e],T=o[t],I=i[R+1]?.start===t,S=_(n,I?T-1:T);return{id:generateId(),startPointIndex:n,endPointIndex:T,headingChangeInDegrees:A/RADIANS_PER_DEGREE,radiusInMeters:E,lengthInMeters:r[t]-r[e],curvinessScore:curvinessWeight(E)*E*Math.abs(A),severity:severityOf(E,A,N(n),S),...S&&{maneuver:S}}})},isHairpin=e=>!e.maneuver&&Math.abs(e.headingChangeInDegrees)>=140&&e.radiusInMeters<=40,getCurvyStretchSections=(e,{curves:t=e.properties.sections.curve??getCurveSections(e),maxGapInMeters:A=500,minCurveCount:E=3}={})=>{const R=metersAlongLine(e.geometry.coordinates),n=[];let T=[];const I=()=>{const e=T.at(-1);if(e&&T.length>=E){const{startPointIndex:t}=T[0],{endPointIndex:A}=e;n.push({id:generateId(),startPointIndex:t,endPointIndex:A,curveCount:T.length,lengthInMeters:R[A]-R[t],hairpinCount:T.filter(isHairpin).length,minRadiusInMeters:Math.min(...T.map(e=>e.radiusInMeters)),curvinessScore:T.reduce((e,t)=>e+t.curvinessScore,0)})}T=[]};for(const o of t){if(o.maneuver){I();continue}const e=T.at(-1);e&&R[o.startPointIndex]-R[e.endPointIndex]>A&&I(),T.push(o)}return I(),n},withCurveSections=(e,{curve:t,curvyStretch:A}={})=>{const E=getCurveSections(e,t),R=getCurvyStretchSections(e,{...A,curves:E}),{curve:n,curvyStretch:T,...I}=e.properties.sections;return{...e,properties:{...e.properties,sections:{...I,...E.length&&{curve:E},...R.length&&{curvyStretch:R}}}}},bucket=e=>Math.round(1e5*e),vertexHash=(e,t)=>Math.imul(Math.imul(e,2654435761)^t,2246822507),holds=(e,t,A,E,R,n)=>e[t]===A&&e[t+1]===E&&e[t+2]===R&&e[t+3]===n,slotOf=(e,t,A,E,R,n,T)=>{const I=vertexHash(E,R)+vertexHash(n,T);let o=6*((I^I>>>15)&e.length/6-1);for(;e[o+4]&&!holds(e,o,E,R,n,T)&&!holds(e,o,n,T,E,R);)o=(o+6)%e.length;return e[o+4]||(e[o]=E,e[o+1]=R,e[o+2]=n,e[o+3]=T,e[o+4]=t+1,e[o+5]=A),o},getDistinctSections=(e,{minLengthInMeters:t=0}={})=>{const A=Array.isArray(e)?e:e.features,{firsts:E,shared:R}=(e=>{const t=new Int32Array(6*2**Math.ceil(Math.log2(1.5*e.reduce((e,t)=>e+t.length,0)+1))),A=e.map(e=>new Int32Array(Math.max(e.length-1,0))),E=A.map(e=>new Uint8Array(e.length)),R=(e,t)=>{E[e][A[e][t]]=1};return e.forEach((E,n)=>{const T=A[n];let I;const[o=0,r=0]=E[0]??[];let N=bucket(o),_=bucket(r);for(let A=0;A<T.length;A++){const o=N,r=_;if(N=bucket(E[A+1][0]),_=bucket(E[A+1][1]),o===N&&r===_){T[A]=-1;continue}T[A]=A;const S=I&&e[I.route][I.vertex+I.step];if(I&&S&&bucket(S[0])===N&&bucket(S[1])===_){R(n,A),R(I.route,Math.min(I.vertex,I.vertex+I.step)),I.vertex+=I.step;continue}const i=slotOf(t,n,A,o,r,N,_),s=t[i+4]-1,O=t[i+5];if(I=void 0,s===n){T[A]=O;continue}R(n,A),R(s,O);const a=t[i]===o&&t[i+1]===r;I={route:s,vertex:a?O+1:O,step:a?1:-1}}}),{firsts:A,shared:E}})(A.map(e=>e.geometry.coordinates));return A.map((e,A)=>{const n=E[A],T=R[A],I=metersAlongLine(e.geometry.coordinates),o=[];let r;for(let E=0;E<=n.length;E++){if(-1===n[E])continue;if(E<n.length&&!T[n[E]]){r??=E;continue}if(void 0===r)continue;const e=I[E]-I[r];e>=t&&o.push({id:generateId(),startPointIndex:r,endPointIndex:E,lengthInMeters:e}),r=void 0}return o})},viewsNotServed={mapTiles:["CN","RU"],search:["KR","US"],placeDetails:["KR","US"],reverseGeocoding:["KR","US"],geocoding:["AE","BN","CL","DZ","KR","MY","PH","US","VN"]},servesGeopoliticalView=(e,t)=>!viewsNotServed[t].includes(e),TOMTOM_USER_AGENT_SDK_NAME="MapsSDKJS",generateTomTomHeaders=e=>!1===e.sendUserAgentHeader?{}:{"tomtom-user-agent":e["tomtom-user-agent"]??"MapsSDKJS/1.0.0-rc.4"},getImportantRoads=(e,{within:t,minLengthInMeters:A=0}={})=>{const E=metersAlongLine(e.geometry.coordinates),R=/* @__PURE__ */new Map,n=[...e.properties.sections.importantRoadStretch??[]].sort((e,t)=>e.startPointIndex-t.startPointIndex);for(const T of n){const e=metersWithin(E,T,t);if(!e)continue;const{index:A,roadNumbers:n=[],streetName:I}=T,o=n[0]??I,r=o??A,N=R.get(r);N?(N.index=Math.min(N.index,A),N.roadNumbers=[.../* @__PURE__ */new Set([...N.roadNumbers,...n])],N.streetName??=I,N.lengthInMeters+=e,N.sections.push(T)):R.set(r,{index:A,...o&&{name:o},roadNumbers:n,...I&&{streetName:I},lengthInMeters:e,sections:[T]})}return[...R.values()].filter(e=>e.lengthInMeters>=A)},getInstructionLanes=(e,t)=>{const A=e.properties.guidance?.instructions??[];if(A.find(e=>e.pathPointIndex===t.pathPointIndex)?.maneuver!==t.maneuver)return;const E=({startPointIndex:t,endPointIndex:E})=>{const R=A.findLast(({pathPointIndex:e})=>t<=e&&e<=E);if(R)return R.pathPointIndex;const n=A.find(({pathPointIndex:e})=>e>E),T=e.geometry.coordinates[E];return n&&T&&distance(T,n.maneuverPoint,{units:"meters"})<=100?n.pathPointIndex:void 0};let R;for(const n of e.properties.sections.lanes??[])(!R||n.endPointIndex>R.endPointIndex)&&E(n)===t.pathPointIndex&&(R=n);return R},serviceLanguageCodes={"zh-Hans":"zh-CN","zh-Hant":"zh-TW"},serviceLanguage=e=>serviceLanguageCodes[e]??e,placesLanguageCodes={ngt:void 0,"en-CA":"en-GB","es-MX":"es-419","hi-IN":void 0,"ja-JP":void 0},placesLanguage=e=>Object.hasOwn(placesLanguageCodes,e)?placesLanguageCodes[e]:serviceLanguage(e),poiCategoriesLanguage=e=>"ngt-Latn"===e?void 0:placesLanguage(e),trafficIncidentLanguages={ngt:void 0,"ngt-Latn":void 0,ar:"ar","bg-BG":void 0,"ca-ES":"ca-ES","zh-Hant":"zh-TW","zh-Hans":void 0,"hr-HR":void 0,"cs-CZ":"cs-CZ","da-DK":"da-DK","nl-NL":"nl-NL","en-AU":"en-GB","en-CA":"en-GB","en-GB":"en-GB","en-NZ":"en-GB","en-US":"en-US","et-EE":"et-EE","eu-ES":void 0,"fi-FI":"fi-FI","fr-FR":"fr-FR","gl-ES":void 0,"de-DE":"de-DE","el-GR":"el-GR","he-IL":"he-IL","hi-IN":void 0,"hu-HU":"hu-HU","id-ID":"id-ID","it-IT":"it-IT","ja-JP":"ja-JP","kk-KZ":void 0,"ko-KR":"ko-KR","ko-Latn-KR":void 0,"lv-LV":"lv-LV","lt-LT":"lt-LT","ms-MY":void 0,"nb-NO":"nb-NO","pl-PL":"pl-PL","pt-BR":"pt-PT","pt-PT":"pt-PT","ro-RO":"ro-RO","ru-RU":"ru-RU","ru-Latn-RU":void 0,"ru-Cyrl-RU":"ru-RU","sr-RS":void 0,"sk-SK":"sk-SK","sl-SI":void 0,"es-ES":"es-ES","es-MX":"es-ES","sv-SE":"sv-SE","th-TH":"th-TH","tr-TR":"tr-TR","uk-UA":void 0},trafficIncidentLanguage=e=>e&&trafficIncidentLanguages[e],poiCategoriesToID={TRAFFIC_CONTROL_DEPARTMENT:7301,TRAFFIC_CONTROL_DEPARTMENT_GENERIC:7301002,TRAIL_SYSTEM:7302,MOUNTAIN_BIKE_TRAIL:7302002,ADVENTURE_VEHICLE_TRAIL:7302003,HIKING_TRAIL:7302004,HORSE_RIDING_TRAIL:7302005,ROCK_CLIMBING_TRAIL:7302006,RESIDENTIAL_ACCOMMODATION:7303,RETIREMENT_COMMUNITY:7303002,FLATS_OR_APARTMENT_COMPLEX:7303003,HOLIDAY_RENTAL:7304,COTTAGE_RENTAL:7304002,VILLA_RENTAL:7304003,BUNGALOW_RENTAL:7304004,CHALET_RENTAL:7304005,APARTMENT_RENTAL:7304006,ADVENTURE_SPORTS_FACILITY:7305,HELIPORT_OR_HELIPAD:7308,CHARGING_LOCATION:7309,VEHICLE_REPAIR:7310,BODYSHOP:7310002,CAR_GLASS_REPLACEMENT_SHOP:7310003,CAR_REPAIR_AND_SERVICE:7310004,TIRE_SERVICE:7310007,MOTORCYCLE_REPAIR:7310008,TRUCK_REPAIR_AND_SERVICE:7310009,FUEL_STATION:7311,CAR_RENTAL:7312,PARKING_GARAGE:7313,HOTEL_OR_MOTEL:7314,BANDB_OR_GUEST_HOUSE:7314002,HOTEL:7314003,HOSTEL:7314004,RESORT:7314005,MOTEL:7314006,CABINS_LODGES:7314007,REST_CAMP:7314008,RESTAURANT:7315,AFRICAN_RESTAURANT:7315002,AMERICAN_RESTAURANT:7315003,AUSTRIAN_RESTAURANT:7315004,BARBECUE_RESTAURANT:7315005,BELGIAN_RESTAURANT:7315006,BISTRO:7315007,BRITISH_RESTAURANT:7315008,CALIFORNIAN_RESTAURANT:7315009,CANADIAN_RESTAURANT:7315010,CARIBBEAN_RESTAURANT:7315011,CHINESE_RESTAURANT:7315012,CREPERIE:7315013,DUTCH_RESTAURANT:7315014,FAST_FOOD:7315015,PHILIPPINE_RESTAURANT:7315016,FRENCH_RESTAURANT:7315017,GERMAN_RESTAURANT:7315018,GREEK_RESTAURANT:7315019,GRILL_RESTAURANT:7315020,HAWAIIAN_RESTAURANT:7315021,HUNGARIAN_RESTAURANT:7315022,INDIAN_RESTAURANT:7315023,INDONESIAN_RESTAURANT:7315024,ITALIAN_RESTAURANT:7315025,JAPANESE_RESTAURANT:7315026,JEWISH_RESTAURANT:7315027,KOREAN_RESTAURANT:7315028,LATIN_AMERICAN_RESTAURANT:7315029,LEBANESE_RESTAURANT:7315030,MEDITERRANEAN_RESTAURANT:7315032,MEXICAN_RESTAURANT:7315033,MIDDLE_EASTERN_RESTAURANT:7315034,ORIENTAL_RESTAURANT:7315035,PIZZERIA:7315036,POLISH_RESTAURANT:7315037,PORTUGUESE_RESTAURANT:7315038,RUSSIAN_RESTAURANT:7315040,SANDWICH_RESTAURANT:7315042,SEAFOOD:7315043,SPANISH_RESTAURANT:7315044,STEAK_HOUSE:7315045,SWISS_RESTAURANT:7315047,THAI_RESTAURANT:7315048,TURKISH_RESTAURANT:7315049,VEGETARIAN_RESTAURANT:7315050,VIETNAMESE_RESTAURANT:7315051,HUNAN_RESTAURANT:7315052,SHANDONG_RESTAURANT:7315053,SICHUAN_RESTAURANT:7315056,DONGBEI_RESTAURANT:7315057,HOT_POT_RESTAURANT:7315058,TAIWANESE_RESTAURANT:7315059,WESTERN_RESTAURANT:7315060,PERUVIAN_RESTAURANT:7315061,ASIAN_RESTAURANT:7315062,CREOLE_RESTAURANT:7315063,SOUL_FOOD:7315064,IRISH_RESTAURANT:7315065,JAMAICAN_RESTAURANT:7315066,KOSHER_RESTAURANT:7315067,CZECH_RESTAURANT:7315068,HAMBURGER_RESTAURANT:7315069,CHICKEN_RESTAURANT:7315070,FUSION_RESTAURANT:7315071,BRAZILIAN_RESTAURANT:7315072,INTERNATIONAL_RESTAURANT:7315073,MOROCCAN_RESTAURANT:7315074,ORGANIC_FOOD_RESTAURANT:7315075,TAPAS_RESTAURANT:7315076,ICE_CREAM_PARLOR:7315078,DOUGHNUT_RESTAURANT:7315079,AFGHAN_RESTAURANT:7315081,ARABIAN_RESTAURANT:7315083,ARMENIAN_RESTAURANT:7315085,AUSTRALIAN_RESTAURANT:7315086,BASQUE_RESTAURANT:7315087,BOLIVIAN_RESTAURANT:7315088,BULGARIAN_RESTAURANT:7315090,BURMESE_RESTAURANT:7315091,CAMBODIAN_RESTAURANT:7315092,CHILEAN_RESTAURANT:7315093,COLOMBIAN_RESTAURANT:7315094,CORSICAN_RESTAURANT:7315095,CUBAN_RESTAURANT:7315096,DANISH_RESTAURANT:7315098,EGYPTIAN_RESTAURANT:7315100,ENGLISH_RESTAURANT:7315101,ETHIOPIAN_RESTAURANT:7315102,FINNISH_RESTAURANT:7315104,IRANIAN_RESTAURANT:7315105,ISRAELI_RESTAURANT:7315106,MONGOLIAN_RESTAURANT:7315110,NEPALESE_RESTAURANT:7315111,NORWEGIAN_RESTAURANT:7315112,SCANDINAVIAN_RESTAURANT:7315114,SWEDISH_RESTAURANT:7315119,SYRIAN_RESTAURANT:7315120,TEPPANYAKI_RESTAURANT:7315121,TIBETAN_RESTAURANT:7315122,TUNISIAN_RESTAURANT:7315123,VENEZUELAN_RESTAURANT:7315125,PAKISTANI_RESTAURANT:7315127,FONDUE_RESTAURANT:7315134,SNACKS_RESTAURANT:7315139,SOUP_RESTAURANT:7315140,BUFFET_RESTAURANT:7315142,SALAD_BAR:7315143,TAKEOUT_FOOD:7315145,BANQUET_ROOMS:7315146,CAFETERIA:7315147,SUSHI_RESTAURANT:7315148,JUICE_BAR:7315149,TOURIST_INFORMATION:7316,MUSEUM:7317,THEATER:7318,CONCERT_HALL:7318002,MUSIC_CENTER:7318003,OPERA_HOUSE:7318004,THEATER_GENERIC:7318005,CABARET_THEATER:7318006,AMPHITHEATER:7318007,DINNER_THEATER:7318008,CULTURAL_CENTER:7319,SPORTS_CENTER:7320,FITNESS_CLUB_AND_CENTER:7320002,HORSE_RIDING:7320003,SPORTS_CENTER_GENERIC:7320004,THEMATIC_SPORT_CENTER:7320005,SQUASH_COURT:7320006,HOSPITAL:7321,GENERAL_HOSPITAL_AND_POLYCLINIC:7321002,SPECIAL_HOSPITAL:7321003,HOSPITAL_OF_CHINESE_MEDICINE:7321004,HOSPITAL_FOR_WOMEN_AND_CHILDREN:7321005,POLICE_STATION:7322,POST_OFFICE:7324,PHARMACY:7326,DEPARTMENT_STORE:7327,BANK:7328,MARKETPLACE:7332,INFORMAL_MARKET:7332002,PUBLIC_MARKET:7332003,FARMERS_MARKET:7332004,SUPERMARKET:7332005,AGRICULTURE:7335,HORTICULTURE:7335002,PRIMARY_PRODUCER:7335003,FARM:7335004,VIEWPOINT:7337,SWIMMING_POOL:7338,RELIGIOUS_SITE:7339,CHURCH:7339002,MOSQUE:7339003,SYNAGOG:7339004,TEMPLE:7339005,GURUDWARA:7339006,PAGODA:7339008,CASINO_AND_GAMBLING:7341,CINEMA:7342,MOVIE_THEATER:7342002,DRIVE_IN_MOVIES:7342003,MARINA:7347,MARINA_GENERIC:7347002,YACHT_BASIN:7347003,WINERY:7349,FERRY_TERMINAL:7352,TRUCK_STOP:7358,WEIGH_STATION:7359,WEIGH_STATION_GENERIC:7359002,CAMPING_GROUND:7360,RECREATIONAL_CAMPING_GROUND:7360002,CARAVAN_SITE:7360003,COMMUNITY_CENTER:7363,EMBASSY:7365,BORDER_CONTROL:7366,GOVERNMENT_OFFICE:7367,MOTORING_ORGANIZATION_OFFICE:7368,OPEN_CAR_PARKING_AREA:7369,OPEN_CAR_PARKING_AREA_GENERIC:7369002,SCHOOL:7372,SCHOOL_GENERIC:7372002,CHILDCARE:7372003,PRE_SCHOOL:7372004,PRIMARY_SCHOOL:7372005,HIGH_SCHOOL:7372006,SENIOR_HIGH_SCHOOL:7372007,VOCATIONAL_SCHOOL:7372008,LANGUAGE_SCHOOL:7372010,ART_SCHOOL:7372012,MIDDLE_SCHOOL:7372014,DRIVING_SCHOOL:7372016,MALL:7373,STADIUM:7374,ATHLETICS_TRACK:7374002,CRICKET_GROUND:7374003,SOCCER_STADIUM:7374004,HORSE_RACING_TRACK:7374005,MULTI_PURPOSE_STADIUM:7374006,RUGBY_GROUND:7374007,ICE_HOCKEY_ARENA:7374008,BASEBALL_PARK:7374009,FOOTBALL_STADIUM:7374010,MOTOR_RACING_STADIUM:7374011,BASKETBALL_ARENA:7374012,RACE_TRACK:7374013,NETBALL_STADIUM:7374014,TOLL_GATE:7375,TOURIST_ATTRACTION:7376,BUILDING:7376002,MONUMENT:7376003,NATURAL_TOURIST_ATTRACTION:7376004,OBSERVATORY:7376005,PLANETARIUM:7376006,DAM:7376007,TUNNEL:7376008,TOWER:7376009,BRIDGE:7376010,MAUSOLEUM_OR_GRAVE:7376011,ARCH:7376012,STATUE:7376013,WATER_HOLE:7376014,COLLEGE_OR_UNIVERSITY:7377,COLLEGE_OR_UNIVERSITY_GENERIC:7377002,JUNIOR_COLLEGE_OR_COMMUNITY_COLLEGE:7377003,BUSINESS_PARK:7378,RAILWAY_STATION:7380,INTERNATIONAL_RAILROAD_STATION:7380002,NATIONAL_RAILROAD_STATION:7380003,URBAN_STATION:7380004,SUBWAY_STATION:7380005,AIRPORT:7383,PUBLIC_AIRPORT:7383002,PRIVATE_AIRPORT:7383003,MILITARY_AIRPORT:7383004,AIRFIELD:7383005,COURIER_DROP_BOX:7388,TRANSPORT_ACCESS:7389,AIRLINE_ACCESS:7389002,STATION_ACCESS:7389003,SECURED_ENTRANCE:7389004,SUBWAY_ENTRANCE:7389999,EMERGENCY_MEDICAL_SERVICE:7391,FIRE_STATION:7392,REST_AREA:7395,ATM:7397,NATURAL_FEATURE:8099,MOUNTAIN_PEAK:8099002,CAVE:8099003,RIDGE:8099004,DUNE:8099005,VALLEY:8099006,PLAIN_OR_FLAT:8099007,PLATEAU:8099008,PAN:8099009,WELL:8099010,OASIS:8099011,ROCKS:8099012,RESERVOIR:8099013,REEF:8099014,RAPIDS:8099015,BAY:8099016,COVE:8099017,HARBOR:8099018,CAPE:8099020,MINERAL_OR_HOT_SPRINGS:8099021,ISLAND:8099022,MARSH:8099023,RIVER_CROSSING:8099024,HILL:8099025,QUARRY:8099026,LOCALE:8099027,PRIMARY_RESOURCE_UTILITY:9150,TRANSPORT_AUTHORITY_VEHICLE_REGISTRATION:9151,NON_GOVERNMENTAL_ORGANIZATION:9152,WELFARE_ORGANIZATION:9153,PRISON:9154,CAR_WASH:9155,CAR_WASH_GENERIC:9155002,MANUFACTURING_FACILITY:9156,RESEARCH_FACILITY:9157,MEDIA_FACILITY:9158,PORT_WAREHOUSE_FACILITY:9159,EXCHANGE:9160,STOCK_EXCHANGE:9160002,GOLD_EXCHANGE:9160003,FOREIGN_EXCHANGE:9160004,COMPANY:9352,SERVICE_COMPANY:9352002,ADVERTISING_COMPANY:9352003,COMPUTER_AND_DATA_SERVICES:9352004,SOFTWARE_COMPANY:9352005,DIVERSIFIED_FINANCIALS:9352006,INSURANCE_COMPANY:9352007,DELIVERY_SERVICE:9352008,REAL_ESTATE_COMPANY:9352009,MANUFACTURING_COMPANY:9352011,AGRICULTURAL_TECHNOLOGY:9352012,AUTOMOBILE_COMPANY:9352013,CHEMICAL_COMPANY:9352014,ELECTRONICS_COMPANY:9352015,MECHANICAL_ENGINEERING:9352016,PHARMACEUTICAL_COMPANY:9352018,PUBLISHING_TECHNOLOGIES:9352019,TELECOMMUNICATIONS:9352020,TAX_SERVICES:9352022,LEGAL_SERVICES:9352023,TRANSPORT_COMPANY:9352024,BUS_CHARTER_COMPANY:9352025,TAXI_LIMOUSINE_AND_SHUTTLE_SERVICE:9352026,BUS_LINES:9352027,SCHOOL_BUS_COMPANY:9352028,CLEANING_SERVICES:9352029,OIL_AND_NATURAL_GAS:9352030,MINING_COMPANY:9352031,CONSTRUCTION_COMPANY:9352032,MOVING_AND_STORAGE_COMPANY:9352033,AIRLINE_COMPANY:9352034,FUNERAL_SERVICE_AND_MORTUARIES:9352036,INVESTMENT_ADVISOR:9352037,EQUIPMENT_RENTAL:9352038,BUSINESS_SERVICES:9352039,CABLE_AND_TELEPHONE_COMPANY:9352040,AUTOMOBILE_MANUFACTURING:9352041,IMPORT_OR_EXPORT_AND_DISTRIBUTION:9352042,CATERING_SERVICES:9352043,HOME_APPLIANCE_REPAIR:9352044,ANIMAL_SHELTER:9352045,WEDDING_SERVICES:9352046,BEACH:9357,RESTAURANT_AREA:9359,ICE_RINK:9360,SHOP_OR_STORE:9361,BOOK_SHOP:9361002,C_DS_DVD_VIDEOS:9361003,CHILDREN_S_CLOTHES:9361004,FOOTWEAR_SHOE_REPAIRS:9361005,CLOTHING_SHOP:9361006,MEN_S_CLOTHING:9361007,WOMEN_S_CLOTHING:9361008,CONVENIENCE_STORE:9361009,DRY_CLEANER:9361010,CAMERAS_AND_PHOTOGRAPHY:9361011,COMPUTER_AND_COMPUTER_SUPPLIES:9361012,CONSUMER_ELECTRONICS:9361013,OFFICE_EQUIPMENT:9361014,REAL_ESTATE_AGENT:9361015,FACTORY_OUTLET:9361016,FLORISTS:9361017,BAKERY:9361018,BUTCHER:9361019,FISHMONGER:9361020,FOOD_MARKET:9361021,GREENGROCER:9361022,GROCERY_STORE:9361023,FOOD_AND_DRINKS_SHOP:9361024,WINE_SPIRITS:9361025,GIFTS_CARDS_NOVELTIES_SOUVENIRS:9361026,HAIRDRESSER:9361027,CARPET_FLOOR_COVERINGS:9361028,CURTAINS_TEXTILES:9361029,DO_IT_YOURSELF_CENTERS:9361030,HOUSE_AND_GARDEN_FURNITURE_AND_FITTINGS:9361031,GARDEN_CENTERS_SERVICES:9361032,KITCHENS_BATHROOMS:9361033,LIGHTING_SHOPS:9361034,PAINTING_DECORATING:9361035,JEWELRY_CLOCKS_WATCHES:9361036,NEWSAGENTS_TOBACCONISTS:9361037,OPTICIAN:9361038,SPORTS_EQUIPMENT_AND_CLOTHING:9361039,TOYS_GAMES_SHOP:9361040,TRAVEL_AGENT:9361041,CONSTRUCTION_MATERIAL_AND_EQUIPMENT:9361042,MEDICAL_SUPPLIES_EQUIPMENT:9361043,VIDEO_RENTAL_SHOP:9361044,LAUNDRY:9361045,PHOTO_LAB_OR_DEVELOPMENT:9361046,PHOTOCOPY_SHOP:9361047,ANIMAL_SERVICE:9361048,ANTIQUE_ART_SHOP:9361049,BEAUTY_SUPPLIES:9361050,DRUG_STORE:9361051,ELECTRICAL_APPLIANCES_SHOP:9361052,HOBBY_SHOP:9361053,FURNITURE_HOME_FURNISHINGS:9361054,GLASSWARE_CERAMIC_SHOP:9361055,LOCAL_SPECIALITIES_SHOP:9361056,RECYCLING_SHOP:9361057,BAGS_LEATHERWEAR:9361058,MUSIC_INSTRUMENTS_STORE:9361059,DELICATESSEN:9361060,SPECIALTY_FOODS:9361061,SHOPPING_SERVICE:9361062,RETAIL_OUTLET:9361063,PET_SUPPLIES:9361064,WHOLESALE_CLUB:9361066,BEAUTY_SALON:9361067,NAIL_SALON:9361068,HARDWARE_STORE:9361069,PAWN_SHOP:9361070,LOTTERY_SHOP:9361071,BETTING_STATION:9361072,AGRICULTURAL_SUPPLIES:9361073,MOBILE_PHONE_SHOP:9361075,DRIVE_THROUGH_BOTTLE_SHOP:9361076,TAILOR_SHOP:9361077,SECURITY_PRODUCTS:9361078,SPECIALTY_CLOTHING_SHOP:9361079,GLASS_WINDOWS_STORE:9361080,VARIETY_STORE:9361081,CHRISTMAS_OR_HOLIDAY_SHOP:9361082,BOATING_EQUIPMENT_AND_ACCESSORIES:9361083,PARK_AND_RECREATION_AREA:9362,BATTLEFIELD:9362002,CEMETERY:9362003,HISTORIC_SITE:9362004,HISTORICAL_PARK:9362005,MEMORIAL:9362007,PARK:9362008,PARKWAY:9362009,RECREATION_AREA:9362011,WILDERNESS_AREA:9362014,FOREST_AREA:9362015,FISHING_AND_HUNTING_AREA:9362016,FAIRGROUND:9362017,SKI_RESORT:9362026,BOAT_LAUNCHING_RAMP:9362032,PICNIC_AREA:9362033,PROTECTED_LAND:9362037,COURTHOUSE:9363,CANNABIS_SHOP:9364,MEDICINAL_MARIJUANA_DISPENSARY:9364002,RECREATIONAL_MARIJUANA_DISPENSARY:9364003,MEDICINAL_AND_RECREATIONAL_DISPENSARY:9364004,TENNIS_COURT:9369,WATER_SPORT:9371,DOCTOR:9373,GENERAL_PRACTITIONER:9373002,SPECIALIST:9373003,DENTIST:9374,VETERINARY:9375,CAFE_PUB:9376,CAFE:9376002,PUB:9376003,INTERNET_CAFE:9376004,TEA_HOUSE:9376005,COFFEE_SHOP:9376006,MICROBREWERY:9376007,EXHIBITION_CONVENTION_CENTER:9377,LEISURE_CENTER:9378,BOWLING_CENTER:9378002,DANCE_STUDIO_AND_SCHOOL:9378003,FLYING_CLUB:9378004,SAUNA_SOLARIUM_MASSAGE:9378005,NIGHTLIFE:9379,DISCO_CLUB:9379002,BAR:9379004,COCKTAIL_BAR:9379006,JAZZ_CLUB:9379008,COMEDY_CLUB:9379009,KARAOKE_CLUB:9379010,COMMERCIAL_BUILDING:9382,INDUSTRIAL_BUILDING:9383,ABORIGINAL_LAND:9389,HEALTHCARE_SERVICE:9663,PERSONAL_SERVICE:9663002,PERSONAL_CARE_FACILITY:9663003,BLOOD_BANK:9663004,AMBULANCE_UNIT:9663005,ENTERTAINMENT:9900,AMUSEMENT_PARK:9902,AMUSEMENT_PARK_GENERIC:9902003,AMUSEMENT_PLACE:9902004,VEHICLE_DEALER:9910,CAR_DEALER:9910002,MOTORCYCLE_DEALER:9910003,BOAT_DEALER:9910004,RECREATIONAL_VEHICLE_DEALER:9910005,TRUCK_DEALER:9910006,VAN_DEALER:9910007,BUS_DEALER:9910008,ATV_DEALER:9910009,GOLF_COURSE:9911,PUBLIC_LIBRARY:9913,ZOOS_ARBORETA_BOTANICAL_GARDEN:9927,ARBORETA_AND_BOTANICAL_GARDENS:9927002,ZOO:9927003,AQUATIC_ZOO:9927004,WILDLIFE_PARK:9927005,RENTAL_CAR_PARKING:9930,PUBLIC_AMENITY:9932,PASSENGER_TRANSPORT_TICKET_OFFICE:9932002,PEDESTRIAN_SUBWAY:9932003,PUBLIC_CALL_BOX:9932004,PUBLIC_BATHROOM:9932005,RESCUE_SERVICE:9932006,MOUNTAIN_PASS:9935,CLUB_AND_ASSOCIATION:9937,BEACH_CLUB:9937002,HOCKEY_CLUB:9937003,PUBLIC_TRANSPORT_STOP:9942,BUS_STOP:9942002,TAXI_STAND:9942003,STREETCAR_STOP:9942004,EMERGENCY_ROOM:9956,RESIDENTIAL_ENTRANCE:9999},poiIDsToCategories=/* @__PURE__ */(()=>Object.fromEntries(Object.entries(poiCategoriesToID).map(([e,t])=>[t,e])))(),getRoutePlanningLocationType=e=>Array.isArray(e)?Array.isArray(e[0])?"path":"waypoint":"Feature"===e.type&&"LineString"===e.geometry.type?"path":"waypoint",sdkErrorCodeForStatus=e=>401===e?"INVALID_CREDENTIALS":403===e?"INSUFFICIENT_PERMISSIONS":404===e?"NOT_FOUND":429===e?"RATE_LIMITED":e>=500?"LIVE_SERVICE_NOT_AVAILABLE":e>=400?"INVALID_REQUEST":"INTERNAL",retryableCodes=/* @__PURE__ */new Set(["RATE_LIMITED","LIVE_SERVICE_NOT_AVAILABLE","NETWORK_NOT_AVAILABLE"]),canRetrySDKErrorCode=e=>retryableCodes.has(e),getSectionsWithin=(e,{within:t,types:A=sectionTypes}={})=>{const E=metersAlongLine(e.geometry.coordinates),R={};for(const n of A){const A=e.properties.sections[n]??[],T=[],I=[];let o=0;for(const e of A){const{startPointIndex:A=0,endPointIndex:R=0}=e,n=metersWithin(E,{startPointIndex:A,endPointIndex:R},t);n>0&&(T.push(e),I.push(n/(E[R]-E[A])),o+=n)}T.length&&(R[n]={sections:T,shares:I,lengthInMeters:o})}return R},compareRoutes=(e,t,{types:A=inputSectionTypesWithGuidance}={})=>{const[E,R]=getDistinctSections([e,t]);return{distinct:E,referenceDistinct:R,adds:getSectionsWithin(e,{within:E,types:A}),avoids:getSectionsWithin(t,{within:R,types:A})}},indexedMagnitudes=["unknown","minor","moderate","major","indefinite"],iconCategoryMap={1:"accident",2:"fog",3:"danger",4:"rain",5:"frost",6:"jam",7:"lane-closed",8:"road-closed",9:"roadworks",10:"wind",11:"flooding",12:"animals-on-road",13:"narrow-lanes",14:"broken-down-vehicle"},categoryToIconMap=/* @__PURE__ */(()=>Object.fromEntries(Object.entries(iconCategoryMap).map(([e,t])=>[t,Number(e)])))(),iconToTrafficIncidentCategory=e=>iconCategoryMap[e]??"other",trafficIncidentToIconCategory=e=>categoryToIconMap[e]??0,minuteUnits=e=>e?.minutes??"min",formatDuration=(e,t)=>{if(e){const E=Math.abs(e)/3600;let R=Math.floor(E),n=Math.round(E%1*60);60===n&&(n=0,R++);const T={...TomTomConfig.instance.get().displayUnits?.time,...t};if(R)return`${R} ${A=T,A?.hours??"hr"} ${n.toString().padStart(2,"0")} ${minuteUnits(T)}`;if(n)return`${n.toString()} ${minuteUnits(T)}`}var A},MILE_IN_METERS=1609.344,meterUnits=e=>e?.meters??"m",kmUnits=e=>e?.kilometers??"km",roundHalfAwayFromZero=e=>Math.sign(e)*Math.round(Math.abs(e)),formatFeet=(e,t)=>{const A=t.feet??"ft",E=e/.3048,R=Math.abs(E);return R<30?`${roundHalfAwayFromZero(E)} ${A}`:R<500?`${10*roundHalfAwayFromZero(E/10)} ${A}`:`${100*roundHalfAwayFromZero(E/100)} ${A}`},formatYards=(e,t)=>{const A=t.yards??"yd",E=e/.9144;return Math.abs(E)<10?`${roundHalfAwayFromZero(E)} ${A}`:`${10*roundHalfAwayFromZero(E/10)} ${A}`},QUARTER_MILE_GLYPHS=["","¼","½","¾"],formatImperial=(e,t,A)=>{const E=e/1609.344;return Math.abs(E)<.125?A(e,t):((e,t)=>{const A=Math.abs(e);if(A>=10)return`${roundHalfAwayFromZero(e)} ${t}`;const E=A<3?1:2,R=Number.parseInt(A.toString()),n=Math.round(4*(A-R)/E)*E,T=e<0?"-":"";return n%4?`${T}${R||""}${QUARTER_MILE_GLYPHS[n]} ${t}`:`${T}${R+n/4} ${t}`})(E,t.miles??"mi")},formatDistance=(e,t)=>{if(isNil(e))return"";const A={...TomTomConfig.instance.get().displayUnits?.distance,...t};switch(A?.type??"metric"){case"metric":return((e,t)=>{const A=Math.abs(e);if(A<10)return`${roundHalfAwayFromZero(10*e)/10} ${meterUnits(t)}`;if(A<500)return`${10*roundHalfAwayFromZero(e/10)} ${meterUnits(t)}`;if(A<1e3){const A=100*roundHalfAwayFromZero(e/100);return 1e3===A||-1e3===A?`${e<0?"-":""}1 ${kmUnits(t)}`:`${A} ${meterUnits(t)}`}return A<1e4?`${100*roundHalfAwayFromZero(e/100)/1e3} ${kmUnits(t)}`:`${roundHalfAwayFromZero(e/1e3)} ${kmUnits(t)}`})(e,A);case"imperial_us":return formatImperial(e,A,formatFeet);case"imperial_uk":return formatImperial(e,A,formatYards)}};export{DEFAULT_COMMON_BASE_URL,EARTH_RADIUS_IN_METERS,MAX_MERCATOR_LATITUDE,MILE_IN_METERS,RADIANS_PER_DEGREE,TOMTOM_USER_AGENT_SDK_NAME,TomTomConfig,aggregateIntoCells,areaAnalyticsMetricKeys,avoidableTypes,bboxCenter,bboxFromBBoxes,bboxFromCoordsArray,bboxFromGeoJSON,bboxLongitudeSpan,bboxOnlyIfWithArea,budgetTypes,budgetUnits,calculateProgressAtRoutePoint,canRetrySDKErrorCode,chargingPointCapabilities,chargingPointRestrictions,clamp,compareRoutes,connectorTypes,currentTypes,defaultConfig,defaultSectionTypes,definedFields,findBestWaypointInsertionIndex,findBestWaypointInsertionIndices,formatDistance,formatDuration,fullTrafficIncidentCategories,generateId,generateTomTomHeaders,geographyTypes,geometrySectionTypes,geopoliticalViews,getCoordinateAtRouteProgress,getCurveSections,getCurvyStretchSections,getDistinctSections,getImportantRoads,getInstructionLanes,getPosition,getPositionStrict,getProgressAtNearestRoutePoint,getRoutePlanningLocationType,getRouteProgressBetween,getRouteProgressForSection,getSectionBBox,getSectionOverlap,getSectionsWithin,iconToTrafficIncidentCategory,indexedMagnitudes,inputSectionTypes,inputSectionTypesWithGuidance,insecureBaseURLMessage,isBBoxWithArea,isHairpin,isProxyCredentialsMode,isSecureBaseURL,languages,latticeCellOf,latticeCellPolygon,mergeFromGlobal,metersAlongLine,metersWithin,pickKeys,placeTypes,placesLanguage,poiCategories,poiCategoriesLanguage,poiCategoriesToID,poiIDsToCategories,polygonFromBBox,positionBetween,sdkErrorCodeForStatus,sdkErrorCodes,sectionTypes,segmentAtMeters,servesGeopoliticalView,serviceLanguage,toPointGeometry,trafficIncidentLanguage,trafficIncidentRequestCategories,trafficIncidentTimeValidities,trafficIncidentToIconCategory,withCurveSections,withInsertedWaypoint,withInsertedWaypoints};