(function(s){function e(e){var t=e[0];var a=e[1];var r=e[2];var n,i,o=0,l=[];for(;o0||r.offsetHeight>0||r.getClientRects().length>0},setCookie:function e(t,a,r,n,i){var o=90;if(!r){r=new Date;r.setTime(r.getTime()+o*24*60*60*1e3)}var l={expires:r,path:"/"};if(n)l.domain=n;if(i)l.path=i;c.save(t,a,l)},getCookie:function e(t){if(!t)return false;return c.load(t)||false},getParameterByName:function e(t,a){if(typeof window==="undefined")return false;t=t.replace(/[[]/,"\\[").replace(/[/]]/,"\\]");t=a?t.toUpperCase():t;var r=new RegExp("[\\?&]"+t+"=([^&#]*)");var n=r.exec(a?window.location.search.toUpperCase():window.location.search);var i="";if(n&&n.length){i=decodeURIComponent(n[1].replace(/\+/g," ").replace(/%\s/g,"%25").replace(/%$/,"%25"))}return i||false},isSplitTest:function e(t,a,r){var n=false;var i=this.getParameterByName(t,false)||this.getCookie(t);if(s(a)==="object"){i=i||this.multiSplitTest(i,a);n=i}else{i=i||this.singleSplitTest(a);n=i==="show_alternative"}var o="variationTracking"+t;if(typeof window!=="undefined"&&!Object.prototype.hasOwnProperty.call(window,o)){window[o]=true;var l={step:"start",test_name:t,variant:i};u.test(l)}this.setCookie(t,i,r);return n},multiSplitTest:function e(t,a){var r=0;var n=Math.random()*100;Object.keys(a).forEach(function(e){if(!t&&n>=r&&n0&&arguments[0]!==undefined?arguments[0]:{};if(this.hasWindow()){var a={page_type:"landing"};if(t.agent&&typeof t.agent==="string"){a.agent=t.agent;if(!/(?:^| )agent=([^;]{3,6})/.test(document.cookie)){document.cookie="agent=".concat(t.agent)}}window.tracker.initialise({env:t.environment||"production"||"production",service:t.service||"seo",organisation:t.organisation||"Holiday Extras Limited",schemaVersions:t.schemaVersions||{},lb:t.lb||false});if(t.pageOptions)a=Object.assign({},a,t.pageOptions);window.tracker.page(t.eventType||"landing",a);window.tracker.inline("auto_capture",{name:"tech_platform",value:t.techPlatform||"ssg"});if(t.templateGroup)window.tracker.inline("auto_capture",{name:"template_group",value:t.templateGroup})}else console.log("No window, TRACKER NOT LOADED")},test:function e(t){if(!this.hasWindow()||!t)return;window.tracker.track("test",t)},inline:function e(t,a,r){if(!this.hasWindow())return;if(arguments.length===2){r=a;a=t;t="auto_capture"}window.tracker.inline(t,{name:a,value:r})},track:function e(t,a,r){if(!this.hasWindow())return;if(!r){return window.tracker.inline("auto_capture",{name:t,value:a})}if(r==="test"){if(!t)this.test(a);else this.test(t);return}var n={action:{name:t,value:a}};if(!t){n=a}window.tracker.track(r,n)}};e.exports=r},,function(e,t,a){e.exports=a(8)(6)},function(e,t,a){var r=a(39),n=r.combineReducers,i=r.createStore;var o=a(40);var l=n(o);var s=typeof window!=="undefined"&&window.__REDUX_DEVTOOLS_EXTENSION__?window.__REDUX_DEVTOOLS_EXTENSION__():{};e.exports=i(l,s)},function(e,t,a){var l=a(27);var s=a(1);var c=a(0);var r=a(28),u=r.connect;var n=a(29);var i=a(32);var o=a(33);var p=a(51);var d=a(16);var m=a(52);var h={agents:n,hxbreaks:p,liveChat:i,login:o,splitTests:m};var g=function e(r,t){if(!r)return;if(!t)return r;if(t.constructor!==Array)t=[t];var a=r.displayName?r.displayName.replace(/Connect\(/g,"").replace(/\)/g,""):"Component";var n=function e(a){t.map(function(e,t){Object.assign(a,h[e].mapStateToProps(a))});return a};var i=function e(a,r){var n={};t.map(function(e,t){n=Object.assign({},n,h[e].mapDispatchToProps(a,r))});return n};r=u(n,i)(r);var o=function(e){"use strict";function t(){return e.apply(this,arguments)||this}s(t,e);var a=t.prototype;a.render=function e(){return c.createElement(r,l({},this.props,{store:d}))};return t}(c.PureComponent);try{Object.defineProperty(o,"name",{value:"".concat(a,"Wrapper")})}catch(e){}return o};e.exports=g},function(e,t,a){var r=a(0);var n=a(19);var i=a(53);window.ReactRoot=i;if(typeof i["default"]==="function")i=i["default"];var o={template:"content-template.jsx",baseFile:"base-template.jsx",permalink:false,dataSource:{query:"/flight/lm10?returnDate=2025-07-08",host:"flight-information.dock-yard.io",port:"443",pageNameField:"pageName"},pageData:{"flightData":{"flight":{"code":"LM10","number":"10","icao":["LOG"],"matched":"LM10/LOG10","carrier":{"code":"LM","name":"Loganair"},"distance":"343","elapsed_time":"80","layover_time":"0"},"departure":{"airport_iata":"ABZ","airport":"Aberdeen Dyce","country":"UK","date":"2025-12-09","time":"06:45","city":"Aberdeen","terminal":"","region":0,"country_iso":"GB","dateFull":"2025-12-09T06:45:00.000Z"},"arrival":{"airport_iata":"NWI","airport":"Norwich","country":"UK","date":"2025-12-09","time":"08:05","city":"Norwich","terminal":"","region":0,"country_iso":"GB","dateFull":"2025-12-09T08:05:00.000Z"},"futureDepartures":["2025-12-10T06:45:00.000Z","2025-12-12T06:40:00.000Z","2025-12-16T06:45:00.000Z","2025-12-17T06:45:00.000Z","2025-12-19T06:40:00.000Z","2025-12-23T06:45:00.000Z","2025-12-24T14:10:00.000Z","2025-12-29T06:45:00.000Z","2025-12-30T06:45:00.000Z","2025-12-31T06:45:00.000Z","2026-01-05T06:45:00.000Z","2026-01-06T06:45:00.000Z","2026-01-07T06:45:00.000Z","2026-01-08T06:45:00.000Z","2026-01-09T06:45:00.000Z","2026-01-12T06:45:00.000Z","2026-01-13T06:45:00.000Z","2026-01-14T06:45:00.000Z","2026-01-15T06:45:00.000Z","2026-01-16T06:45:00.000Z","2026-01-19T06:45:00.000Z","2026-01-20T06:45:00.000Z","2026-01-21T06:45:00.000Z","2026-01-22T06:45:00.000Z","2026-01-23T06:45:00.000Z","2026-01-26T06:45:00.000Z","2026-01-27T06:45:00.000Z","2026-01-28T06:45:00.000Z","2026-01-29T06:45:00.000Z","2026-01-30T06:45:00.000Z","2026-02-02T06:45:00.000Z","2026-02-03T06:45:00.000Z","2026-02-04T06:45:00.000Z","2026-02-05T06:45:00.000Z"],"futureArrivals":["2025-12-10T08:05:00.000Z","2025-12-12T08:00:00.000Z","2025-12-16T08:05:00.000Z","2025-12-17T08:05:00.000Z","2025-12-19T08:00:00.000Z","2025-12-23T08:05:00.000Z","2025-12-24T15:30:00.000Z","2025-12-29T08:05:00.000Z","2025-12-30T08:05:00.000Z","2025-12-31T08:05:00.000Z","2026-01-05T08:05:00.000Z","2026-01-06T08:05:00.000Z","2026-01-07T08:05:00.000Z","2026-01-08T08:05:00.000Z","2026-01-09T08:05:00.000Z","2026-01-12T08:05:00.000Z","2026-01-13T08:05:00.000Z","2026-01-14T08:05:00.000Z","2026-01-15T08:05:00.000Z","2026-01-16T08:05:00.000Z","2026-01-19T08:05:00.000Z","2026-01-20T08:05:00.000Z","2026-01-21T08:05:00.000Z","2026-01-22T08:05:00.000Z","2026-01-23T08:05:00.000Z","2026-01-26T08:05:00.000Z","2026-01-27T08:05:00.000Z","2026-01-28T08:05:00.000Z","2026-01-29T08:05:00.000Z","2026-01-30T08:05:00.000Z","2026-02-02T08:05:00.000Z","2026-02-03T08:05:00.000Z","2026-02-04T08:05:00.000Z","2026-02-05T08:05:00.000Z"]},"flightLinks":{"departures":false,"arrivals":false,"directions":false,"airlineNumbers":false,"contactNumbers":false,"facilities":false,"shopping":false,"restaurants":false,"localArea":false,"destination":false},"airlineInfo":{},"airportInfo":{"airportName":"Aberdeen"},"weather":{},"arrivalInfo":{"currency_name":"Pound Sterling","language":"English"},"pageName":"flight/lm10",pageTitle:"Flight LM10 or LOG10 | Loganair from Aberdeen Dyce to Norwich",description:"Check flight departure and arrival times for Loganair flight number LM10 or LOG10 from Aberdeen Dyce to Norwich"},pageName:"flight/lm10.html",pagename:"flight/lm10.html",srcFile:"u28601.md",coreBookingTranslations:{currency:"£",from:"From",locationLabel:"Flying from",justMeLabel:"Just me",otherOption:"Other",travellingFromLabel:"Travelling from",travellingWithLabel:"Travelling with",parkingFromLabel:"Parking from",parkingFromUserLabel:"Parking [DATA] on",parkingToLongLabel:"Return to collect car",parkingToShortLabel:"Return to collect car",parkingTimeLabel:"Arrival",parkingToTimeLabel:"Returning",flightTimeLabel:"Departing flight",terminalLabel:"Terminal",terminalLinkText:"I know my terminal",roomLabel:"Staying in",roomSelectionLabel:"Room Selection",addRoomLabel:"Add another room",pptsTurnOnLabel:"Stay on my return",pptsTurnOffLabel:"Stay before I fly",daysParkingLabel:"days parking for 1 car",daysParkingUserLabel:"days parking for [DATA]",carLabel:"car",includePortParkingLabel:'Include parking',includeAirportParkingLabel:'Include parking',includeAirportParkingOptionPleaseSelect:"Please select",includeAirportParkingOptionYes:"Yes please",includeAirportParkingOptionNo:"No thanks",searchButtonText:"Search",searchButtonLoadingText:"Please wait ...",departureDateLabel:"Departure date",loDepartureDateWithoutFlightLabel:"Lounge arrival date",loFlightTimeLabel:"Flight time",chooseFlightLabel:"Choose flight",loungeArrivalLabel:"Arrival time",loungeFlightErrorText:"There are no lounges available prior to your flight.",loungeEntryLabel:"Lounge entry?",loungeThreeHoursText:"You can enter the lounge up to 3 hours before your flight departure time.",adultsLabel:"Adults",childrenLabel:"Children",infantsLabel:"Infants",ageClarificationTitle:"Lounge entry ages",ageClarificationText:"Please note that minimum entry ages for children and infants between lounges may differ.",groupBookingsLabel:"Group Booking?",groupBookingsTitle:"Group bookings",lounge7Plus:"Party of 7 or more people? Group bookings have to be requested with the lounge. Please do not make separate bookings or the lounge will refuse entry.",weCanHelpText:"We can also help you with",singleRoom:"room",multipleRooms:"rooms",noRoomsText:"No rooms available",options:"hotels",to:"to",via:"via",topDestinations:"Top Destinations",azOfDestinations:"A-Z of Destinations",flightDestinationLabel:"Destination airport",destinationNotListedText:"Destination not listed",airportNotListedText:"Airport not listed",airportFirstPlaceholder:"E.g. Tenerife",topDestinationsText:"Top Destinations",azOfDestinationsText:"A-Z of Destinations",flyingOnText:"Flying on",searchButtonTextParkingApp:"Continue",searchButtonTextParkingMobile:"",searchButtonTextHotelApp:"",voucherTextLabel:"Voucher code",voucherTextPlaceholder:"Enter voucher here",voucherTextInvalid:"Code invalid",voucherTextPromoLabel:"Promo Code",voucherTextPromoPlaceholder:"Enter code here",continueLabel:"Continue",additionalRoomLabel:"Room 2",noThankYouLabel:"No thank you",emailLabel:"Email Address (optional)",emailPlaceholder:"Enter your email",emailInfo:"With an email address, we can reserve your space until 11:30pm tonight, without payment",parkingYour:"Parking your",collectCarDetailInfo:"We will collect your new details after you book",addNewCar:"New Car / Add Car",partnerFooterText:"This service is provided solely by Holiday Extras. Booking.com is not responsible for the provision of this service. For full details, please refer to Holiday Extras' Terms and Conditions.",carHire:{pickUpLocation:"Pick up Location",returnToSameLocation:"Return to same location",pickUpDate:"Pick up Date",time:"Time",dropOffDate:"Drop off Date",leadDriversAge:"Lead Driver's Age",driversAgePlaceholder:"Age 17-99",pickUpPlaceholder:"Search",dropOffPlaceholder:"Search",dropOffLocation:"Drop off Location",underLegalAge:"Must be [DATA] or over",outOfAgeRange:"Additional charges may be incurred",invalidPickupLocation:"Invalid pickup location",invalidDropOffLocation:"Invalid Return location",places:{city:"City",airport:"Airport",station:"Station",district:"Region",place:"Place"}},connectingFlightCheckbox:{text:"Connecting flight?"},flightDropdownText:{placeHolder:"Choose flight",searching:"Searching",noFlights:"No flights found",chooseDestination:"Choose a destination",dontKnowFlight:"Don't know my flight",enterAirport:"Enter final destination airport",notListed:"Flight not listed",incorrect:"Flight incorrect"},flightInput:{inputLabel:"Enter flight no.",placeholder:"Eg. VS27",inputAlternativeLabel:"Destination/airport",alternativePlaceholder:"Search"},hotelLabels:{hcp:{nonPpts:{startDate:"Hotel and Parking check-in",endDate:"Collect car on",startDateHomepageTest:"Hotel check in",endDateHomepageTest:"Collect car",durationLabel:":duration days parking for 1 car"},ppts:{startDate:"Parking from",endDate:"Hotel check-in",startDateHomepageTest:"Parking from",endDateHomepageTest:"Hotel check in",durationLabel:":duration days parking for 1 car"}},ho:{startDate:"Hotel check-in",endDate:"Return date",startDateHomepageTest:"Check in (1 night)",endDateHomepageTest:"Collect car"}},insurance:{searchButtonText:"Search",voucherTextPromoPlaceholder:"Enter code here",voucherTextPromoLabel:"Promo Code",cancellationCoverAnnualMultiTrip:"Your cancellation cover will start from this date",cancellationCoverSingleTrip:"Your cancellation cover begins as soon as you purchase your policy"},terminalMap:{1:"Terminal 1",2:"Terminal 2",3:"Terminal 3",4:"Terminal 4",5:"Terminal 5",N:"North Terminal",S:"South Terminal"},transfers:{wantAReturn:"Want a return?",wantResortTransfers:"Want resort transfers?",notReturning:"Not returning?",pickup:"Pick up",dropoff:"Drop off",pleaseSelect:"Please select",journeyLabel:"Journey",locationLabel:"Flying from",returnText:"Return",singleText:"Single",passengersLabel:"Travellers",adultsLabel:"Adults (12+)",childrenLabel:"Children",infantsLabel:"Infants (0-1)",notFoundText:'Please type or select a valid Pick up location. If you need help please click the "Support" button at the top of the page.',airportAndPostCodeNotFound:"No airport or postcode found for this search! Please enter the name of an airport or a full UK postcode - we’ll ask for the full address later. Need a hand? Click “Support” at the top of this page to Live Chat us",hotelNotFoundText:"Hotel not found! Please enter your resort or city, address will be taken later.",pickUpLabel:"Pick up from",taxiPickUpDropOffPlaceholder:"UK Airport or full UK postcode",pickUpPlaceholder:"Type or select from our most popular",dropOffPlaceholder:"Hotel, airport, other",dropOffLabel:"Drop off at",arrivalDateLabel:"Flight arrival date and time",departDateLabel:"Flight depart date and time",arrivalDateLabelNoAirport:"Pick up date and time",returnDateLabel:"Return flight date and time",returnDateLabelNoAirport:"Return pick up time",flightArriveHelpLabel:"What time does your flight arrive?",flightArriveHelpText:"Your pickup time will be calculated based on this.",flightDepartHelpLabel:"What time does your flight depart?",flightDepartHelpText:"Your pickup time will be calculated based on this.",searchButtonText:"Search",searchButtonLoadingText:"Please wait...",flyingOnLabel:"Flying on",flyingBackOnLabel:"Return flight",flightTimeLabel:"Flying at",flightLabel:"Flying to",outboundFlight:"Outbound flight",notFlyingText:"Not flying?",flyingText:"Flying?",flyingDropOffLabel:"Drop off at",returnFlightTimeLabel:"Returning at",returnFlightLabel:"Returning flight",returningFlightDateLabel:" Returning date",flyingDateLabel:"Flying date",flyingFromLabel:"Flying from",departFrom:"Departing from",departingAt:"Departing at",arrivingAt:"Arriving at",searchButtonTextTransfersMobile:"",close:"close",knowMyFlightDetails:"I know my flight details",wantLocalTaxi:"Want a UK airport taxi?",errors:{noAgent:"No Agent",noPickUp:'Please type or select a valid Pick up location. If you need help please click the "Support" button at the top of the page.',noDropOff:'Please type or select a valid Drop off location. If you need help please click the "Support" button at the top of the page.',sameDate:"You cannot book a return transfer for the same time as the outbound transfer.",noReturnFlight:"No return flight selected, please select one from the dropdown.",noFlight:"No flight selected, please select one from the dropdown."},flightInput:{inputLabel:"Enter flight no.",placeholder:"Eg. VS27",inputAlternativeLabel:"Destination/airport",alternativePlaceholder:"Search",from:"from",at:"at",to:"to"},popupOptions:{connections:"Connections",airports:"Airport",resorts:"Resorts",hotels:"Hotels",places:"Places",ports:"Port",trainStations:"Train Station",busStations:"Bus Stations",amusementParks:"Amusement Parks"},terminalMap:{1:"Terminal 1",2:"Terminal 2",3:"Terminal 3",4:"Terminal 4",5:"Terminal 5",N:"North Terminal",S:"South Terminal"}},voucherText:{label:"Voucher code",placeholder:"Enter voucher here",invalid:"Code invalid"}},coreBookingLocations:{carParking:{ABZ:"Aberdeen",BHD:"Belfast City (George Best)",BFS:"Belfast International",BHX:"Birmingham",BOH:"Bournemouth",BRS:"Bristol",CWL:"Cardiff",DSA:"Doncaster-Sheffield (Robin Hood)",DUB:"Dublin",EMA:"East Midlands",EDI:"Edinburgh",EXT:"Exeter",LGW:"Gatwick",GLA:"Glasgow International",PIK:"Glasgow Prestwick",LHR:"Heathrow",HUY:"Humberside",LBA:"Leeds Bradford",LPL:"Liverpool",LCY:"London City",LTN:"Luton",MAN:"Manchester",NCL:"Newcastle",NWI:"Norwich",SNN:"Shannon",SOU:"Southampton",SEN:"Southend",STN:"Stansted",MME:"Teesside International"},hotels:{ABZ:"Aberdeen",BHD:"Belfast City (George Best)",BFS:"Belfast International",BHX:"Birmingham",BOH:"Bournemouth",BRS:"Bristol",CWL:"Cardiff",DSA:"Doncaster-Sheffield (Robin Hood)",DUB:"Dublin",EMA:"East Midlands",EDI:"Edinburgh",EXT:"Exeter",LGW:"Gatwick",GLA:"Glasgow International",PIK:"Glasgow Prestwick",LHR:"Heathrow",HUY:"Humberside",LBA:"Leeds Bradford",LPL:"Liverpool",LCY:"London City",LTN:"Luton",MAN:"Manchester",NCL:"Newcastle",NWI:"Norwich",SOU:"Southampton",SEN:"Southend",STN:"Stansted",MME:"Teesside International"},hotelsWithParking:{ABZ:"Aberdeen",BHD:"Belfast City (George Best)",BFS:"Belfast International",BHX:"Birmingham",BOH:"Bournemouth",BRS:"Bristol",CWL:"Cardiff",DSA:"Doncaster-Sheffield (Robin Hood)",DUB:"Dublin",EMA:"East Midlands",EDI:"Edinburgh",EXT:"Exeter",LGW:"Gatwick",GLA:"Glasgow International",PIK:"Glasgow Prestwick",LHR:"Heathrow",HUY:"Humberside",LBA:"Leeds Bradford",LPL:"Liverpool",LCY:"London City",LTN:"Luton",MAN:"Manchester",NCL:"Newcastle",NWI:"Norwich",SOU:"Southampton",SEN:"Southend",STN:"Stansted",MME:"Teesside International"},lounges:{OptGroupAirport:{ABZ:"Aberdeen",BHD:"Belfast City (George Best)",BFS:"Belfast International",BHX:"Birmingham",BRS:"Bristol",CWL:"Cardiff",DSA:"Doncaster-Sheffield",DUB:"Dublin",EMA:"East Midlands",EDI:"Edinburgh",EXT:"Exeter",LGW:"Gatwick",GLA:"Glasgow International",PIK:"Glasgow Prestwick",LHR:"Heathrow",HUY:"Humberside",INV:"Inverness",LBA:"Leeds Bradford",LPL:"Liverpool",LCY:"London City",LTN:"Luton",MAN:"Manchester",NCL:"Newcastle",NWI:"Norwich",SOU:"Southampton",SEN:"Southend",STN:"Stansted",MME:"Teesside International"},OptGroupAustralia:{BRB:"Brisbane",MLB:"Melbourne",SDN:"Sydney"},OptGroupBarbados:{BGI:"Bridgetown"},OptGroupBelgium:{BRL:"Brussels"},OptGroupBulgaria:{BUL:"Varna"},OptGroupCanada:{YYZ:"Toronto",YVR:"Vancouver"},OptGroupChina:{PVG:"Shanghai Pudong"},OptGroupCyprus:{LCA:"Larnaca",PFO:"Paphos"},"OptGroupCzech Republic":{PRA:"Prague"},OptGroupDenmark:{CPH:"Copenhagen"},"OptGroupDominican Republic":{POP:"Puerto Plata Airport",PUJ:"Punta Cana"},OptGroupEstonia:{EST:"Tallinn"},OptGroupFrance:{NCI:"Nice",PDG:"Paris (Charles Ge Gaulle)",OLY:"Paris (Orly)"},OptGroupGambia:{GAM:"Banjul International "},OptGroupGermany:{BSG:"Berlin Schonefeld",CGL:"Cologne",DUT:"Dusseldorf",FRK:"Frankfurt",HBG:"Hamburg",LIP:"Leipzig Halle",MUN:"Munich",SCN:"Saarbrucken"},OptGroupGreece:{ATH:"Athens",HER:"Heraklion"},OptGroupHolland:{AMT:"Amsterdam"},"OptGroupHong Kong":{HKG:"Hong Kong International"},OptGroupHungary:{BUU:"Budapest"},OptGroupIndia:{DEL:"New Delhi"},OptGroupIndonesia:{BAJ:"Bali",CGK:"Jakarta"},OptGroupIreland:{ORK:"Cork"},OptGroupIsrael:{TLV:"Tel Aviv"},OptGroupItaly:{BLO:"Bologna",FCQ:"Rome Fiumicino",TRU:"Turin"},OptGroupJamaica:{MBJ:"Montego Bay"},OptGroupMalaysia:{BKI:"Kota Kinabalu",KUL:"Kuala Lumpur",PEN:"Penang",JHB:"Senai"},OptGroupMaldives:{MLE:"Male"},OptGroupMalta:{MLA:"Malta International"},OptGroupMexico:{CUN:"Cancun"},OptGroupMorocco:{AGA:"Agadir",RAK:"Marrakech",ICA:"Tangier"},OptGroupOman:{MCT:"Muscat"},OptGroupPoland:{KRA:"Krakow"},OptGroupPortugal:{FAR:"Faro",FNC:"Funchal Madeira",LIB:"Lisbon"},OptGroupSingapore:{SIN:"Changi"},"OptGroupSouth Africa":{CPT:"Cape Town"},OptGroupSpain:{ALI:"Alicante",BCA:"Barcelona",GBR:"Gibraltar",GRN:"Gran Canaria",LZA:"Lanzarote",MAE:"Madrid",AGQ:"Malaga",PMQ:"Palma De Mallorca",TFN:"Tenerife",VLA:"Valencia",FUR:"Fuerteventura"},OptGroupSweden:{STK:"Stockholm"},OptGroupSwitzerland:{BAS:"Basel",GVL:"Geneva",ZRL:"Zurich"},OptGroupThailand:{BKK:"Bangkok",CNX:"Chiang Mai",HKT:"Phuket"},OptGroupTurkey:{ESB:"Ankara",BJV:"Bodrum",DLM:"Dalaman",IST:"Istanbul",IAD:"Izmir",ANT:"Antalya"},"OptGroupUnited Arab Emirates":{AUH:"Abu Dhabi",DXB:"Dubai"},OptGroupUSA:{DFW:"Dallas",EWR:"Newark",JFK:"New York (JFK)",SFB:"Orlando Sanford",SFR:"San Francisco",WDC:"Washington DC"},OptGroupVietnam:{SGN:"Ho Chi Minh City"},"OptGroupNew Zealand":{AKL:"Auckland"}},loungeCodes:{ABZ:"Aberdeen",BFS:"Belfast International",BLK:"Blackpool",BHX:"Birmingham",BRS:"Bristol",CWL:"Cardiff",EMA:"East Midlands",EDI:"Edinburgh",EXT:"Exeter",LGW:"Gatwick",GLA:"Glasgow International",INV:"Inverness",LHR:"Heathrow",HUY:"Humberside",LBA:"Leeds Bradford",LPL:"Liverpool",LTN:"Luton",MAN:"Manchester",NCL:"Newcastle",SEN:"Southend",STN:"Stansted",MME:"Teesside International"},fastTrack:{BOH:"Bournemouth",BRS:"Bristol",EDI:"Edinburgh",EMA:"East Midlands",LPL:"Liverpool",LBA:"Leeds Bradford",MAN:"Manchester",NCL:"Newcastle",STN:"Stansted"},portParking:{DOV:"Dover",SOP:"Southampton"},portHotels:{DOV:"Dover",SOP:"Southampton"},terminals:{LHR:{"Terminal 2":"2","Terminal 3":"3","Terminal 4":"4","Terminal 5":"5"},LGW:{"North Terminal":"N","South Terminal":"S"},MAN:{"Terminal 1":"1","Terminal 2":"2","Terminal 3":"3"}},locationRedirects:{BFS:{cp:"https://www.holidayextras.co.uk/belfast-international-airport.html",hcp:"https://www.holidayextras.co.uk/belfast-international-airport.html",lo:"https://www.holidayextras.co.uk/belfast-international-airport.html"},PIK:{cp:"https://www.holidayextras.co.uk/glasgow-prestwick-airport.html"}}},buildEnv:"production.min",splitTests:{magiclink_popover:0,web_based_trips_form:0,web_based_trips_form_10_90:0,landing_transfers_search_engine:0,recent_searches:0,landing_mobile_location_intent:0,landing_mobile_tripcards_searcheverything_loggedin:50,default_transfer_loc:50,parking_searches_to_heha_hub:0,transfers_search_engine_v2:0,tbsf_parking_search_form:100,sprinklr_chat_widget:100,createaccount_popover:50},domainSettings:{language:"UK",scheme:"https",domainScheme:"https",logoLink:"/",domain:"www.holidayextras.com",siteCode:"HXSEO-LIVE",assets:"https://staticsg.holidayextras.com",assetsLocal:"",assetsLive:"https://staticsg.holidayextras.com",contentStaticServer:"https://static1.holidayextras.com",assetVersionTime:1746777016106,assetVersion:"m9kmi15qxuqcq"},appSettings:{get_app_url:"https://app.holidayextras.com/seo-refer",get_app_url_and:"https://app.holidayextras.com/seo-refer-and",get_app_landing:"https://app.holidayextras.com/seo",track_name:"app_link_clicked",branch_key:"key_live_dbwczC9jmM6OaQuYESRj6jdcsAeSAX1d",campaign:"hx-direct",channel:"Website",feature:"TextMeTheApp",defaultBtnText:"Get the App",tripBtnText:"New Trip",tripBtnUrl:"https://www.holidayextras.com/mfe/search/trip",tripBtnTracking:{id:"new_trip_button",value:"true"},downloadText:"Faster and smarter in the app...",downloadBtnText:"Open app"},insBtnSettings:{show:true,defaultBtnText:"Get Travel Insurance",href:"/travel-insurance.html",trackName:"ins_btn_search"},settings:{engineLang:"uk.com",language:"en",brand:"",priceFormat:"£",decimalNotation:".",cookieExpiryDays:30,orionLb:true,cookieDomain:"www.holidayextras.com",subCookieDomain:"holidayextras.com",pluginsExportDir:"../config/exports",agentLoginPage:"/login.php",bothImageCloudCDNS:["d1u5bw6boilxum","dmy0b9oeprz0f"],destinationLookup:"https://api.holidayextras.co.uk/destination.js",ImageCloudCDNImgix:"https://hximagecloud.imgix.net",imageCloudCDN:"https://dmy0b9oeprz0f.cloudfront.net",imageCloudWebsite:"holidayextras.co.uk",env:"production",flightSearch:"https://flight.dock-yard.io/",imageCloudEndpoint:"https://image-cloud.dock-yard.io/fetch",imageCloudEndpointImage:"https://image-cloud.dock-yard.io/image",rpcGatewayBase:"https://www.holidayextras.com/dock-yard/seo-rpc-gateway/",soapiBase:"//static1.holidayextras.com/datafeeds/soapi/",locationImageBase:"https://dmy0b9oeprz0f.cloudfront.net/holidayextras.co.uk/engine-images/location-landing/locationCode/",locationImageMobileBase:"https://dmy0b9oeprz0f.cloudfront.net/holidayextras.co.uk/mobile-engine-images/",locationTableRoute:"location?prodlibSpecific=latitude,longitude,on_airport,distance_miles,transfer_time,transfer_minutes,transfers_included_in_price,free_transfers,transfer_price,meet_and_greet,name,address,wistia_key,star_rating,openingtime,closingtime,terminal,_prodcode,tripappimages,logo,prodlogo,brand_image,seo_optimised_brand_image_300_200,exclude_from_seo_table,adresse,parkplatzname,videoid",docsAPIEndpoint:"https://static1.holidayextras.com/datafeeds/soapi/hapi-lookup?hapiRoute=info/docs/html",docsAPIEndpointJSON:"https://static1.holidayextras.com/datafeeds/soapi/hapi-lookup?hapiRoute=info/docs",googleSearchRoute:"https://www.googleapis.com/customsearch/v1/siterestrict?",googleSearchKey:"AIzaSyAhOZwwHYtuC72q3OxYsya3Xzf6cI_4xh0",googleSearchEngine:"008447715357275484586:x0ghtkxhxvi",chatEnvironment:"production",videoDataExportDir:"../config/exports/videoData",sprinklrAppId:"65a1902b71530a56b59113cd_app_9048278",hapiBase:"https://hapi.holidayextras.co.uk/",hapiFlightEndpoint:"transport/flights",hapiEndPoints:{cp:"carparks",ho:"hotels",hcp:"hotels",lo:"lounges"},hapiActions:{cp:"/static/",ho:"/static/",hcp:"/static/",lo:"/static/"},hapiToken:"c46c05c7-6fb5-49e4-b0c6-2c37363569f3",hapiSid:"cacheload1234568",hapiOperatorInitials:"APP",flightRoute:"flight",prodlibRoute:"prodlib"},agents:{main:"WEB1",search:"WY992",responsys:"WO298",discount:"WC125",discountLoggedIn:"AZ106",switchboardNumber:"0871 360 2603",switchboardInsuranceNumber:"0800 316 0104",switchboardMedicalInsuranceNumber:"0800 3160 308",fallBackPhoneNumber:"0871 360 2603",fallBackInsurancePhoneNumber:"01303 816144",defaultPhoneNumbers:{WY992:"0871 360 2603"},noBookingFeesAgents:["WY992"]},gtmTag:{id:"GTM-PNJKVKD"},heHaButtonSettings:{show:false,showSvg:false,textWithSVG:"Search",textWithoutSVG:"HEHA! Search",href:"/heha-trip.html",svgFill:"#FFFFFF",svgStroke:"#de4b95",svgHeight:15,neutraliseOtherButtonColours:false,trackName:"heha_search"},voucherButtonSettings:{show:true,href:"/vouchers.html",text:"Vouchers",trackName:"vouchers"},hotelFacilities:[{key:"star_rating",type:"stars",label:"Star rating",schema:false},{key:"address",type:"html",label:"Address",schema:false},{key:"breakfast",type:"html",label:"Breakfast",schema:true},{key:"breakfast_times",type:"html",label:"Breakfast times",schema:true},{key:"breakfast_price",type:"html",label:"Breakfast price",schema:true},{key:"disabled_facilities",type:"html",label:"Disabled facilities",schema:true},{key:"q_internet",type:"yn",label:"Internet",schema:true},{key:"wifi",type:"yn",label:"Wi-Fi",schema:true},{key:"q_restaurant",type:"yn",label:"Restaurant",schema:true},{key:"q_roomservice",type:"yn",label:"Room service",schema:true},{key:"q_swimming",type:"yn",label:"Swimming pool",schema:true},{key:"all_rooms_non_smoking",type:"yn",label:"All rooms non-smoking",schema:true},{key:"ensuite",type:"yn",label:"En-suite bathroom",schema:true},{key:"hairdyer",type:"yn",label:"Hairdryer",schema:true},{key:"iron",type:"yn",label:"Iron",schema:true},{key:"trouser_press",type:"yn",label:"Trouser press",schema:true},{key:"kettle",type:"yn",label:"Kettle",schema:true},{key:"radio",type:"yn",label:"Radio",schema:true},{key:"room_phone",type:"yn",label:"Phone in room",schema:true},{key:"tv",type:"yn",label:"TV",schema:true},{key:"satellite",type:"yn",label:"Satellite TV",schema:true}],group:"flights",flightStatusUrl:"flight-information.dock-yard.io",terminalConvert:{1:"Terminal 1",2:"Terminal 2",3:"Terminal 3",4:"Terminal 4",5:"Terminal 5",N:"North Terminal",n:"North Terminal",S:"South Terminal",s:"South Terminal"},products:{listItemClass:{loading:"list-group-item list-group-item-info",notAvailable:"list-group-item list-group-item-danger",available:"list-group-item list-group-item-success"},iconClass:{loading:"fas fa-check list-group-item-icon",notAvailable:"fas fa-times list-group-item-icon",available:"fas fa-check list-group-item-icon"}},flightStatus:{url:"https://flight-information.dock-yard.io/flight/"},weatherIcons:{"partly-cloudy-day":"partly-cloudy","partly-cloudy-night":"night-partly-cloudy",cloudy:"cloudy","clear-day":"sunny","clear-night":"night-clear",rain:"light-rain",snow:"heavy-snow",sleet:"light-snow",wind:"windy",fog:"fog",hail:"hail",thunderstorm:"storm",tornado:"windy"},airportProducts:{default:{name:"Default",cpUrl:"/airport-parking.html",loUrl:"/airport-lounges.html",hcpUrl:"/airport-hotels.html",hoURL:"/airport-transfers.html"},ABZ:{name:"Aberdeen",cpUrl:"/aberdeen-airport-parking.html",loUrl:"/aberdeen-airport-lounges.html",hcpUrl:"/aberdeen-airport-hotels.html"},BHD:{name:"Belfast City",cpUrl:"/belfast-city-airport-parking.html",hcpUrl:"/belfast-city-airport-hotels.html"},BFS:{name:"Belfast International",cpUrl:"/belfast-airport-parking.html",loUrl:"/belfast-airport-lounges.html",hcpUrl:"/belfast-airport-hotels.html"},BHX:{name:"Birmingham",cpUrl:"/birmingham-airport-parking.html",loUrl:"/birmingham-airport-lounges.html",hcpUrl:"/birmingham-airport-hotels.html"},BOH:{name:"Bournemouth International",cpUrl:"/bournemouth-airport-parking.html",loUrl:"/bournemouth-airport-lounges.html",hcpUrl:"/bournemouth-airport-hotels.html"},BRS:{name:"Bristol",cpUrl:"/bristol-airport-parking.html",loUrl:"/bristol-airport-lounges.html",hcpUrl:"/bristol-airport-hotels.html"},CWL:{name:"Cardiff",cpUrl:"/cardiff-airport-parking.html",loUrl:"/cardiff-airport-lounges.html",hcpUrl:"/cardiff-airport-hotels.html"},DSA:{name:"Doncaster-Sheffield (Robin Hood)",cpUrl:"/doncaster-airport-parking.html",loUrl:"/doncaster-airport-lounges.html",hcpUrl:"/doncaster-airport-hotels.html"},EMA:{name:"East Midlands",cpUrl:"/eastmidlands-airport-parking.html",loUrl:"/eastmidlands-airport-lounges.html",hcpUrl:"/eastmidlands-airport-hotels.html"},EDI:{name:"Edinburgh",cpUrl:"/edinburgh-airport-parking.html",loUrl:"/edinburgh-airport-lounges.html",hcpUrl:"/edinburgh-airport-hotels.html"},EXT:{name:"Exeter",cpUrl:"/exeter-airport-parking.html",loUrl:"/exeter-airport-lounges.html",hcpUrl:"/exeter-airport-hotels.html"},LGW:{name:"Gatwick",cpUrl:"/gatwick-airport-parking.html",loUrl:"/gatwick-airport-lounges.html",hcpUrl:"/gatwick-airport-hotels.html"},GLA:{name:"Glasgow International",cpUrl:"/glasgow-airport-parking.html",loUrl:"/glasgow-airport-lounges.html",hcpUrl:"/glasgow-airport-hotels.html"},LHR:{name:"Heathrow",cpUrl:"/heathrow-airport-parking.html",loUrl:"/heathrow-airport-lounges.html",hcpUrl:"/heathrow-airport-hotels.html"},HUY:{name:"Humberside",cpUrl:"/humberside-airport-parking.html",loUrl:"/humberside-airport-lounges.html",hcpUrl:"/humberside-airport-hotels.html"},INV:{name:"Inverness",cpUrl:"/inverness-airport-parking.html",loUrl:"inverness-airport-lounges.html",hcpUrl:"inverness-airport-hotels.html"},LBA:{name:"Leeds/Bradford",cpUrl:"/leeds-bradford-airport-parking.html",loUrl:"/leeds-bradford-airport-lounges.html",hcpUrl:"/leeds-bradford-airport-hotels.html"},LPL:{name:"Liverpool John Lennon",cpUrl:"/liverpool-airport-parking.html",loUrl:"/liverpool-airport-lounges.html",hcpUrl:"/liverpool-airport-hotels.html"},LCY:{name:"London City",cpUrl:"/london-city-airport-parking.html",hcpUrl:"london-city-airport-hotels.html"},LTN:{name:"Luton",cpUrl:"/luton-airport-parking.html",loUrl:"/luton-airport-lounges.html",hcpUrl:"/luton-airport-hotels.html"},MAN:{name:"Manchester",cpUrl:"/manchester-airport-parking.html",loUrl:"/manchester-airport-lounges.html",hcpUrl:"/manchester-airport-hotels.html"},NCL:{name:"Newcastle International",cpUrl:"/newcastle-airport-parking.html",loUrl:"/newcastle-airport-lounges.html",hcpUrl:"/newcastle-airport-hotels.html"},NWI:{name:"Norwich International",cpUrl:"/norwich-airport-parking.html",hcpUrl:"norwich-airport-hotels.html"},PIK:{name:"Prestwick",cpUrl:"/prestwick-airport-parking.html",hcpUrl:"/prestwick-airport-hotels.html"},SOU:{name:"Southampton",cpUrl:"/southampton-airport-parking.html",hcpUrl:"/southampton-airport-hotels.html"},SEN:{name:"Southend",cpUrl:"/southend-airport-parking.html",loUrl:"/southend-airport-lounges.html",hcpUrl:"/southend-airport-hotels.html"},STN:{name:"Stansted",cpUrl:"/stansted-airport-parking.html",loUrl:"/stansted-airport-lounges.html",hcpUrl:"/stansted-airport-hotels.html"},MME:{name:"Teesside International",cpUrl:"/teesside-airport-parking.html",loUrl:"/teesside-airport-lounges.html",hcpUrl:"/teesside-airport-hotels.html"}},tpl:"template"};window.ReactRootProps=o;window.SSGTemplateGroup="flights";var l=n.render(r.createElement(i,o),document.getElementById("content"))},function(e,t){e.exports=ReactDOM},,,,,,,function(e,t,a){e.exports=a(8)(16)},,function(e,t){e.exports=ReactRedux},function(e,t,a){var s=a(30);var r=function e(t){return{agentData:t.agentData}};var n=function e(a,t){s.props=t;var r=function e(t){a({type:"UPDATE",data:s.updateAgentData(t)})};var n=function e(){return s.getAgent()};var i=function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:n();if(t!==s.getDefaultAgent())return o(t);r(s.getInitialState())};var o=function e(t){s.checkAgent(t,r)};var l=function e(t){s.setAgentCookie(t)};return{updateAgentData:r,agentSetup:i,getAgent:n,updateAgent:o,setAgentCookie:l}};e.exports={mapStateToProps:r,mapDispatchToProps:n}},function(e,t,n){"use strict";var r=n(9);var i=n(15);var o=n(5);var a=n(11),l=a.domainSettings,s=a.settings,c=a.agents,u=a.customerWebSocketService;var p={agentFromReferrer:function e(){var t=typeof window!=="undefined"?window.document.referrer:"";var a=new RegExp(/^[a-z]*:\/\/[^/]*(\.google\.|\.yahoo\.|\.bing\.|\.ask\.|\.aol\.|\.wow\.|\.webcrawler\.|\.mywebsearch\.|\.infospace\.|\.info\.|\.dogpile\.|\.duckduckgo\.|\.blekko\.)[^/]*/i);if(t&&a.test(t)&&!o.getParameterByName("adcode",true)&&!o.getParameterByName("email",true)){return c.search||this.getDefaultAgent(c.main)}},agentFromUrl:function e(){var t=o.getParameterByName("agent",true);var a=new RegExp(/^[0-9a-z]{4,5}$/i);if(t&&a.test(t)){return t}},agentFromCookie:function e(){if(i.load("agent")){return i.load("agent")}},getDefaultAgent:function e(t){return t||c.main||"WT894"},getAgent:function e(){var t=this.agentFromReferrer()||this.agentFromUrl()||this.agentFromCookie()||this.getDefaultAgent();this.setAgentCookie(t);this.checkForSessionCookie();return t},setAgentCookie:function e(t){i.remove("agent","/");var a=new Date;var r=s.cookieExpiryDays||90;a.setTime(a.getTime()+r*24*60*60*1e3);var n={expires:a,path:"/"};if(s.cookieDomain)n.domain=s.cookieDomain;i.save("agent",t,n)},agentData:function e(t,a){var r={};if(a){try{r=n(31)("./"+s.pluginsExportDir+"/"+c.main+".json");r.agent=r.code}catch(e){r={}}}if(!r.agent){r={agent:this.getAgent(),typeRID:"D",groupCode:"X0"};if(t)return Object.prototype.hasOwnProperty.call(r,t)?r[t]:false}return r},checkAgent:function e(u,p){if(this.agentData("DDI")&&this.agentData("DDI")!=="")return p(this.agentData());var t=l.language?l.language.toUpperCase():"UK";if(t!=="UK"&&t!=="DE")t="DE";var a=l.scheme?l.scheme+":":"";try{r.get("".concat(a,"//hapi.holidayextras.co.uk/legacy/agent_lookup/").concat(u,".js?key=foo&country=").concat(t)).end(function(e,t){if(e||!t.text)return;var a={};try{a=JSON.parse(t.text)}catch(e){console.log(e);return}if(!(a.API_Reply.RecordSet&&a.API_Reply.RecordSet.Record))return;a.API_Reply.RecordSet.Record.map(function(e){var t=e.name,a=e.code,r=e.groupCode,n=e.typeRID,i=e.DDI,o=e.promocode,l=e.cashback,s=e.data;if(isNaN(u)&&u.toUpperCase()!==a.toUpperCase())return;var c={name:t,agent:u,typeRID:n,groupCode:r,DDI:i,promocode:o,cashback:l,OptionFlags:s.OptionFlags};p(c)})})}catch(e){console.log(e.message,"ERROR with agent lookup");return p(this.agentData())}},assignAgentsIdentifiedByUrl:function e(t){var a={};if(t&&t.allowedUrlAgentIDs){t.allowedUrlAgentIDs.forEach(function(e){a[e]=o.getParameterByName(e,false)});return a}},componentDidMount:function e(t){if(t.agent!==this.getDefaultAgent())this.checkAgent(t.agent,this.updateAgentData)},getInitialState:function e(){return this.agentData(false,true)},updateAgentData:function e(t){var a=this.assignAgentsIdentifiedByUrl();if(a)t.agentsByUrl=a;t.agent=t.agent.toUpperCase();return t},checkIsLoggedIn:function e(){if(!window.ReactRootStore)return false;if(!window.ReactRootStore.getState)return false;if(typeof window.ReactRootStore.getState!=="function")return false;if(!(window.ReactRootStore.getState().loggedInData||{}).email)return false;return true},checkForSessionCookie:function e(){var t=i.load("owts-tmp-v2");if(typeof window==="undefined"||!u)return;if(!t)return setTimeout(this.checkForSessionCookie.bind(this),500)}};e.exports=p},function(e,t){function a(e){var t=new Error("Cannot find module '"+e+"'");t.code="MODULE_NOT_FOUND";throw t}a.keys=function(){return[]};a.resolve=a;e.exports=a;a.id=31},function(e,t){var a=function e(t){return{liveChatData:t.liveChatData}};var r=function e(n){return{openLiveChat:function e(t,a,r){return n({type:"CHAT_OPENED",data:{department:t,lang:a,brand:r}})},closeLiveChat:function e(){return n({type:"CHAT_CLOSED"})},minimizeLiveChat:function e(t){return n({type:"CHAT_MINIMIZED",data:{chatMinimized:t}})}}};e.exports={mapStateToProps:a,mapDispatchToProps:r}},function(e,t,a){var r=a(12);var I=a(36);var P=a(38);var B=a(4);function n(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),a.push.apply(a,r)}return a}function M(t){for(var e=1;e1&&arguments[1]!==undefined?arguments[1]:"";var r=arguments.length>2&&arguments[2]!==undefined?arguments[2]:false;var n=u(),i=n.magicLinkUrl;var o=t.replace("+","%2b")||T();if(!o||!i)return false;var l=Z.getQueryData();var s=l.referrer?l.referrer:"https://"+window.location.host+(a?"/".concat(a):"");return U.get("//static1.holidayextras.com/responsysEmailSignUpProxy.php?EMAIL_ADDRESS_="+o+"&ORIGIN="+encodeURI(s)+"&_ri_="+i+"&charset_=ISO-8859-1"+(r?"&autocreate=1":"")).then(function(e){x();return e})["catch"](function(e){console.log("err",e);return false})};var L=function e(){i({type:"TRIGGER_LOGIN"})};var N=function e(){i({type:"TRIGGER_LOGIN_HIDE"})};var A=function(){var a=P(I.mark(function e(a){var r;var n,i,o,l,s,c,u,p,d,m,h,g,f,y,v,b;return I.wrap(function e(t){while(1)switch(t.prev=t.next){case 0:n=function e(t){return{success:true,result:t}};i=function e(t){return{success:false,result:t}};o=function(){var a=P(I.mark(function e(a){return I.wrap(function e(t){while(1)switch(t.prev=t.next){case 0:t.next=2;return new Promise(function(e){return setTimeout(e,a)});case 2:throw new Error("voyagerApp message handler timed out");case 3:case"end":return t.stop()}},e)}));return function e(t){return a.apply(this,arguments)}}();l=function e(t,a){var r=t;if(a){try{r=JSON.parse(t)}catch(e){return r}}return r};s=a.handler,c=a.payload,u=c===void 0?{}:c,p=a.timeout,d=p===void 0?1e4:p;if(!(typeof window==="undefined")){t.next=7;break}return t.abrupt("return",i("No window object present"));case 7:m=(r=window.webkit)===null||r===void 0||(r=r.messageHandlers)===null||r===void 0?void 0:r.voyagerApp;h=window.JSBridge;g=m||h;if(g){t.next=12;break}return t.abrupt("return",i("No voyagerApp message handler present"));case 12:if(s){t.next=14;break}return t.abrupt("return",i("Invalid or missing handler name"));case 14:t.prev=14;f={handler:s,payload:u};y=h?JSON.stringify(f):f;v=g.postMessage(y);t.next=20;return Promise.race([v,o(d)]);case 20:b=t.sent;return t.abrupt("return",n(l(b,Boolean(h))));case 24:t.prev=24;t.t0=t["catch"](14);return t.abrupt("return",i(l(t.t0===null||t.t0===void 0?void 0:t.t0.message,Boolean(h))));case 27:case"end":return t.stop()}},e,null,[[14,24]])}));return function e(t){return a.apply(this,arguments)}}();var O;var C=function(){var t=P(I.mark(function e(){var a,r,n;return I.wrap(function e(t){while(1)switch(t.prev=t.next){case 0:if(!O){t.next=2;break}return t.abrupt("return",O);case 2:t.next=4;return A({handler:"getAuthToken"});case 4:a=t.sent;r=a.success;n=a.result;if(r)O=n;return t.abrupt("return",O);case 9:case"end":return t.stop()}},e)}));return function e(){return t.apply(this,arguments)}}();return{invalidUser:E,userLogout:a,userLogin:v,userValidationLoading:t,userLogoutResponse:r,getLoginConfig:u,getLoginAuthConfig:c,loginGetEmailCookie:T,validateTripappUser:w,loginSubmitMagicLink:S,loginTripappUser:s,validatedTripappUser:b,triggerLogin:L,triggerLoginHide:N,validateTripappUserV2:k,loginSubmitMagicLinkV2:_,loginTripappUserV2:p,getAuthTokenFromVoyager:C}};e.exports={mapStateToProps:i,mapDispatchToProps:o}},,,,,,function(e,t){e.exports=Redux},function(e,t,a){var r=a(41);var n=a(42);var i=a(43);var o=a(44);var l=a(45);var s={liveChatData:i,loggedInData:o,hxBreaksData:n,agentData:r,splitTestData:l};e.exports=s},function(e,t){var r={OptionFlags:{}};if(typeof window!=="undefined"){r=Object.assign({},r,window.agentReduxStore||{})}var a=function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:r;var a=arguments.length>1?arguments[1]:undefined;switch(a.type){case"UPDATE":return a.data;default:return t}};e.exports=a},function(e,t,a){var r=a(12);function n(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),a.push.apply(a,r)}return a}function i(t){for(var e=1;e0&&arguments[0]!==undefined?arguments[0]:o;var a=arguments.length>1?arguments[1]:undefined;switch(a.type){case"SET_ATTRACTION":{return i(i({},t),{},{selectedAttraction:a.attraction})}default:{return t}}};e.exports=l},function(e,t,a){var r=a(12);function n(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),a.push.apply(a,r)}return a}function i(t){for(var e=1;e0&&arguments[0]!==undefined?arguments[0]:o;var a=arguments.length>1?arguments[1]:undefined;switch(a.type){case"CHAT_OPENED":return i(i({},t),{},{chatOpen:true,chatDepartment:a.data.department,chatLang:a.data.lang,chatMinimized:false,chatBrand:a.data.brand});case"CHAT_CLOSED":return i(i({},t),{},{chatOpen:false});case"CHAT_MINIMIZED":return i(i({},t),{},{chatMinimized:a.data.chatMinimized});default:return t}};e.exports=l},function(e,t,a){var r=a(12);function n(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),a.push.apply(a,r)}return a}function u(t){for(var e=1;e0&&arguments[0]!==undefined?arguments[0]:m;var a=arguments.length>1?arguments[1]:undefined;switch(a.type){case"LOGOUT":{localStorage.removeItem("customer");return Object.assign({},p(),{accountStatus:false,validUser:t.validUser})}case"LOGIN":{var r,n;var i=(r=a.data)===null||r===void 0?void 0:r.first_name;var o=(n=a.data)===null||n===void 0?void 0:n.last_name;var l="".concat(i.charAt(0).toUpperCase()).concat(o.charAt(0).toUpperCase());localStorage.setItem("customer",JSON.stringify({initials:l,first_name:i}));var s={accountStatus:"active",validUser:true,initials:l};if(t.email)s.email=t.email;return Object.assign({},p(),m,a.data,s)}case"LOGIN_FAILED":{return Object.assign({},p(),t,{failedLogin:a.data,accountStatus:"checked_failed",email:t.email,forceLogin:false})}case"VALIDATION_LOADING":{var c=JSON.parse(localStorage.getItem("customer"))||{};return Object.assign({},t,u(u(u({},typeof c.initials==="string"?{initials:c.initials}:{}),typeof c.first_name==="string"?{first_name:c.first_name}:{}),{},{accountStatus:"loading"}))}case"VALID_USER":{return Object.assign({},p(),t,{validUser:!!a.data,accountStatus:"checked_valid",email:a.data})}case"INVALID_USER":{localStorage.removeItem("customer");return Object.assign({},p(),t,d(),{validUser:false,accountStatus:"checked_invalid",email:a.data})}case"SENT_MAGICLINK":{return Object.assign({},p(),t,{sentMagicLink:a.data,validUser:t.validUser,accountStatus:t.accountStatus,email:t.email})}case"TRIGGER_LOGIN":{return Object.assign({},t,{forceLogin:true})}case"TRIGGER_LOGIN_HIDE":{return Object.assign({},t,{forceLogin:false})}default:{return Object.assign({},m,p(),t)}}};e.exports=o},function(e,t){var r={};var a=function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:r;var a=arguments.length>1?arguments[1]:undefined;switch(a.type){case"INITIALISE_TEST":t[a.data.name]={active:a.data.status};return t;case"INJECT_TEST_DATA":if(!Object.prototype.hasOwnProperty.call(t,a.data.name))return t;Object.assign(t[a.data.name],a.data.newSplitTestData);return t;case"LOGIN":if("landingMobileLocationIntent"in t&&t.landingMobileLocationIntent.active){t.landingMobileLocationIntent.active=false}return t;default:return t}};e.exports=a},function(e,t,a){var r=a(11),n=r.settings;var i=n.orionLb?"":"https://staging.holidayextras.com";e.exports={tripapp:{path:"".concat(i,"/static/")},auth:{login:"/dock-yard/tripapp-rails/users/sign_in.json",url:"/dock-yard/traveller-api/graphql",logout:"/dock-yard/tripapp-rails/users/sign_out.json?_method=delete",query:'fragment vehicle on Vehicle {\n id\n label\n manufacturer\n model\n colour\n registration\n }\n\n fragment telephone on Telephone {\n id\n label\n number\n }\n\n fragment address on Address {\n id\n label\n addressLines\n locality\n region\n postalCode\n country\n }\n\n fragment card on Card {\n id\n label\n paymentRef\n # cardHolderName\n lastFourDigits\n expiryDate\n issuer\n isCredit\n }\n\n fragment debit on DirectDebit {\n id\n label\n paymentRef\n agentCode\n accountHolderName\n lastFourDigits\n }\n\n fragment voucher on Voucher {\n id\n label\n bookingRef\n totalValue\n remainingValue\n currency\n nonFlex\n expires\n created\n productType\n agentCode\n refundValue\n redemptions {\n bookingRef\n }\n refunds {\n value\n }\n cancellationFeeRedeemable\n redemptionConditions {\n agentGroupCode\n productAuthority\n }\n }\n\n fragment recentSearch on RecentSearch {\n id\n title\n subtitle\n caption\n searchFields {\n Location: textKey(name: "Location")\n Arrival: textKey(name: "Arrival")\n ArrivalDate: textKey(name: "ArrivalDate")\n ArrivalTime: textKey(name: "ArrivalTime")\n flight_number: textKey(name: "flight_number")\n arrival_flight_number_dropdown: textKey(name: "arrival_flight_number_dropdown")\n Depart: textKey(name: "Depart")\n DepartDate: textKey(name: "DepartDate")\n DepartTime: textKey(name: "DepartTime")\n agentgroup: textKey(name: "agentgroup")\n channel: textKey(name: "channel")\n agent: textKey(name: "agent")\n product: textKey(name: "product")\n selectProduct: textKey(name: "selectProduct")\n request: textKey(name: "request")\n Referer: textKey(name: "Referer")\n domain: textKey(name: "domain")\n rule_set: textKey(name: "rule_set")\n lang: textKey(name: "lang")\n System: textKey(name: "System")\n car_registration: textKey(name: "car_registration")\n search: textKey(name: "search")\n adcamp: textKey(name: "adcamp")\n flightTime: textKey(name: "flightTime")\n RoomType0: textKey(name: "RoomType[0]")\n RoomType1: textKey(name: "RoomType[0]")\n ppts: textKey(name: "ppts")\n Nights: textKey(name: "Nights")\n numCarParking: textKey(name: "numCarParking")\n getting_to_airport: textKey(name: "getting_to_airport")\n departureTime: textKey(name: "departureTime")\n Adults: textKey(name: "Adults")\n Children: textKey(name: "Children")\n Infants: textKey(name: "Infants")\n typeRID: textKey(name: "typeRID")\n pick_up: textKey(name: "pick_up")\n drop_off: textKey(name: "drop_off")\n pick_up_type: textKey(name: "pick_up_type")\n drop_off_type: textKey(name: "drop_off_type")\n from: textKey(name: "from")\n adults: textKey(name: "adults")\n children: textKey(name: "children")\n infants: textKey(name: "infants")\n Email: textKey(name: "Email")\n to: textKey(name: "to")\n tc: textKey(name: "tc")\n internalLocationSearch: textKey(name: "internalLocationSearch")\n pickup_location: textKey(name: "pickup_location")\n pickupLocation: textKey(name: "pickupLocation")\n dropoff_location: textKey(name: "dropoff_location")\n dropoffLocation: textKey(name: "dropoffLocation")\n sameReturn: textKey(name: "same-return")\n arrivalTrip: textKey(name: "arrivalTrip")\n arrivalTripDate: textKey(name: "arrivalTripDate")\n puTimeCombined: textKey(name: "puTimeCombined")\n departTrip: textKey(name: "departTrip")\n departTripDate: textKey(name: "departTripDate")\n doTimeCombined: textKey(name: "doTimeCombined")\n driversAge: textKey(name: "driversAge")\n driver_age: textKey(name: "driver_age")\n affiliateCode: textKey(name: "affiliateCode")\n preflang: textKey(name: "preflang")\n prefcurrency: textKey(name: "prefcurrency")\n cor: textKey(name: "cor")\n puMinute: textKey(name: "puMinute")\n puHour: textKey(name: "puHour")\n doMinute: textKey(name: "doMinute")\n doHour: textKey(name: "doHour")\n adplat: textKey(name: "adplat")\n supplier_product_id: textKey(name: "supplier_product_id")\n puDay: textKey(name: "puDay")\n puMonth: textKey(name: "puMonth")\n puYear: textKey(name: "puYear")\n doDay: textKey(name: "doDay")\n doMonth: textKey(name: "doMonth")\n doYear: textKey(name: "doYear")\n locationName: textKey(name: "locationName")\n emptySearchResults: textKey(name: "emptySearchResults")\n }\n creationTime\n createdAt\n }\n\n fragment trip on Trip {\n id\n name\n storedAt\n lag\n to\n from\n recommendations {\n allProducts {\n url\n }\n }\n bookings {\n agent\n bookingRef\n unprefixedBookingRef\n bookingStatus\n manageBookingLink\n products {\n primary {\n code\n type\n normalisedType\n content {\n name\n }\n }\n }\n }\n flights {\n outFlight {\n code\n number\n carrier {\n tailfinImage\n icao\n }\n matched\n departure {\n airportIata\n country\n city\n terminal\n time\n }\n departureSchedule {\n date\n time\n }\n departureLocation {\n iata\n name\n }\n departureTerminal\n arrival {\n airportIata\n country\n city\n terminal\n time\n }\n arrivalLocation {\n iata\n name\n }\n }\n returnFlight {\n code\n number\n carrier {\n tailfinImage\n icao\n planeNoseImage\n }\n matched\n departure {\n airportIata\n country\n city\n terminal\n time\n }\n departureSchedule {\n date\n time\n }\n departureLocation {\n iata\n name\n }\n departureTerminal\n arrival {\n airportIata\n country\n city\n terminal\n time\n }\n arrivalLocation {\n iata\n name\n }\n }\n }\n }\n\n query {\n airports (countryCode: "GB", limit: 4, sortOrderPreference: RECOMMENDED) {\n name\n iata\n }\n getTraveller {\n userExtId\n sprinklrUserHash\n upcomingTrips(\n sortBy: MOST_RECENTLY_CREATED\n ) {\n ...trip\n }\n recentSearches {\n ...recentSearch\n }\n vouchers {\n active {\n ...voucher\n }\n expired {\n ...voucher\n }\n redeemed {\n ...voucher\n }\n refunded {\n ...voucher\n }\n }\n profile {\n title\n givenName\n familyName\n email\n telephones {\n preferred {\n ...telephone\n }\n other {\n ...telephone\n }\n }\n vehicles {\n preferred {\n ...vehicle\n }\n other {\n ...vehicle\n }\n }\n addresses {\n preferred {\n ...address\n }\n other {\n ...address\n }\n }\n paymentMethods {\n cards {\n isPreferredPaymentMethod\n preferred {\n ...card\n }\n other {\n ...card\n }\n }\n directDebits {\n isPreferredPaymentMethod\n preferred {\n ...debit\n }\n other {\n ...debit\n }\n }\n }\n tripappMetadata {\n autoGeneratedPassword\n hasCompleteBookings\n railsUserID\n }\n }\n }\n mobileAppDeepLink\n }',getIsVoucherRefundable:{query:"query IsVoucherRefundable($voucherCode: String!) {\n isVoucherRefundable(voucherCode: $voucherCode)\n }",variables:{voucherCode:""}}},userExists:{url:"/dock-yard/traveller-api/graphql",query:{query:"query UserExists($email: String!){hasAccount(email: $email)}",variables:{email:""}}},sendMagicLoginLink:{url:"/dock-yard/traveller-api/graphql",query:{query:"mutation ($email: String!, $masterBrand: String!, $urlForEmail: String!) {\n requestCustomerMagicLoginLinkEmail(email: $email, masterBrand: $masterBrand, urlForEmail: $urlForEmail)\n { success }\n }"}},getEmailByUserExtId:{url:"/dock-yard/traveller-api/graphql",query:{query:"query ($userExtId: String!){lookupEmailAddress(userExtId: $userExtId)}",variables:{userExtId:""}}}}},function(e,t){var a="production"!=="production";e.exports={header:"Log in",headerThankYou:"Thank you",isLoginLink:false,agentTitle:"If you're a travel agent",agentCallToAction:"Agent Login",agentLoginLocation:"/login.php",customerLoginLocation:"/static/?#/users/new_sign_in",loginUnsuccessful:"Login unsuccessful, please try the magic login link",customerTitle:"Customer Login",emailAddress:"Email Address",enterEmail:"Enter your email address",password:"Password",enterPassword:"Enter password",customerCallToAction:function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;return t?"Log me in!":"Log in"},forgottenPassword:"Forgotten password?",noValidUser:"Oh no! We couldn’t find an account registered to that email address. Don’t worry, we can create you an account when you make your first booking.",createAccountLabel:"Create account",createNewAccountLabel:"Create a new account?",magicLink:"Forgotten Password. Email me a magic sign in link.",magicLinkUrl:"X0Gzc2X%3DYQpglLjHJlYQGszei3FqTzgcrWhLC6rgwkGMmzaaUc4ERlbUk9CDRVwjpnpgHlpgneHmgJoXX0Gzc2X%3DYQpglLjHJlYQGkXTumvmw5tFLCtiihzazcPL8zaaUc4ERlbUk9CDR",magicLinkSent:"Please check your inbox, we have sent your magic link login.",createAccountLink:"https://create-account".concat(a?"-staging":"",".holidayextras.co.uk/validate"),customerLogout:"Logout",hello:"Hello",your_account:"View your account",vouchers:{url:"/vouchers.html",label:"Your vouchers"},trips:{url:"/static/#/trip-list",label:"Your trips",loginUrl:"/static/?#/users/new_sign_in?referrer=https://www.holidayextras.com/static/%23trip-list"},bookings:{url:"/static/#/mytrips",label:"Your bookings",loginUrl:"/static/?#/users/new_sign_in?referrer=https://www.holidayextras.com/static/%23mytrips"},insurancePolicies:{url:"/static/#/mytrips",label:"Your insurance policies",loginUrl:"/static/?#/users/new_sign_in?referrer=https://www.holidayextras.com/static/%23mytrips"},personalDetails:{url:"/static/?#/users/profile?lang=en",label:"Your account"},welcomeBackMsg:"Welcome back",welcomeBackMsgText:'If there is anything we can do please hit Help & Support.
We really do value your business.',incorrectEmailPassword:"Incorrect email or password",goodEvening:"Good evening",goodMorning:"Good morning",goodAfternoon:"Good afternoon",heyWelcomeBack:'Hey[NAME]! Welcome back to
Holiday Extras 👋
',loginPopoverSell1:'We exist for one simple purpose: to give you less hassle so you can have more holiday.',loginPopoverSell2:"Quicker and easier booking with your saved details at the ready!",emailSentMsg:"Sent! Please check your email inbox",sendingEmailMsg:"Sending email...",enterEmailErrorMsg:"You must enter an email address first",noAccount:"No account found for this email",heartSVG:'',discountTitle:"Log in for 10% off",discountBody:"If you don't have an an account you can quickly create one and recieve the discount.",unrecognisedMessage:"Your accoiunt unlocks a Members discount! Enter your email to check.",recognisedMessage:"Create an account today to unlock a special Members discount!",accountMessage:"We can see you have account with Holiday Extra. Please enter your password and get 10% off your airport.",welcomeBackWave:"Welcome back! 👋",bookedBeforeGreeting:"Booked with us before?"}},function(e,t,a){"use strict";var o=a(49);var i=a(5);var r={getQueryData:function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:false;if(typeof window==="undefined")return false;var a=window.location.search;if(t){var r=window.location.hash;var n=r.indexOf("?");a=n===-1?"":r.slice(n+1)}a.replace(/\+/g," ").replace(/%\s/g,"%25").replace(/%$/,"%25").replace(/%&/g,"%25&");var i=o.parse(a);if(i.adcode){i.adcode=i.adcode.toUpperCase()}return i},searchQueryStringAndSet:function e(t,a){if(!t)return false;var r=this.getQueryData(a);var n=false;if(Object.keys(r).length){t.map(function(e){if(e.match("email")&&r[e]){if(r[e].match(/(.+)(@|%40|%2540)(.+).(.+)/))return;i.hashToEmail(r[e],function(e){i.setCookie("email",e)})}else{if(r[e])n=r[e]}})}return n},ppcData:function e(){var t=this.getQueryData();if(!t)return false;var a={ppcmsg:t.ppcmsg||"",adcode:t.adcode||"",lgpStyleSplit:t.lgp_style_split||"alternative",keyword:t.keyword||""};return a}};e.exports=r},,,function(e,t){var a=function e(t){return{hxBreaksData:t.hxBreaksData}};var r=function e(a){var t=function e(t){a({attraction:t,type:"SET_ATTRACTION"})};return{setAttraction:t}};e.exports={mapStateToProps:a,mapDispatchToProps:r}},function(e,t,a){var u=a(4);var p=a(5);var r=a(11),d=r.splitTests;var n=function e(t){return{splitTestData:t.splitTestData}};var i=function e(o){var l=arguments.length>1&&arguments[1]!==undefined?arguments[1]:{};var t=function e(t,a){if(!t)return false;if(t.match(/_/))t=s(t);return Boolean(a[t])};var a=function e(t,a){if(!t)return false;if(t.match(/_/))t=s(t);t=a[t]||{};return t.active||false};var r=function e(t,a){if(!t||u(a)!=="object")return false;if(t.match(/_/))t=s(t);o({type:"INJECT_TEST_DATA",data:{name:t,newSplitTestData:a}})};var s=function e(t){return t.replace(/(_\w)/g,function(e){return e[1].toUpperCase()})};var c=function e(){var t=navigator.userAgent.match(/MSIE (\d+\.\d+);/);if(t instanceof Array&&t.length>1)return t[1]/1;return false};var n=function e(t){if(!t||!t.name)return false;if(typeof window==="undefined"||t.percentage<100&&p.getParameterByName("ignoreSplitTests",false)&&!p.getParameterByName(t.name,false))return false;var a=l.pageData,r=a===void 0?{}:a;if(t.pattern&&!r.pageName.match(t.pattern))return false;var n=false;if(t.discludeIE){t.discludeIE.map(function(e){if(c()===e)n=true})}if(n)return false;var i=p.isSplitTest(t.name,t.percentage,t.expiry);o({type:"INITIALISE_TEST",data:{name:s(t.name),status:i}});return i};var i=function e(t){if(!d)return 0;return Number(d[t])||0};return{splitTestInitialised:t,splitTestIsActive:a,injectSplitTestData:r,initialiseSplitTest:n,splitTestsPercentage:i}};e.exports={mapStateToProps:n,mapDispatchToProps:i}},function(M,e,t){"use strict";t.r(e);var a=t(1);var r=t.n(a);var n=t(0);var N=t.n(n);var i=t(7);var s=t.n(i);var o=function(e){function t(){return e.apply(this,arguments)||this}r()(t,e);var a=t.prototype;a.render=function e(){var t=this.props.domainSettings,a=t.scheme,r=t.domain;var n=s()({navbar:true,"navbar-default":true,"navbar-static-top":true,"hidden-print":true});return N.a.createElement("nav",{className:n,role:"navigation"},N.a.createElement("a",{className:"navbar-brand",href:"".concat(a,"://").concat(r)},"Holiday Extras"))};return t}(N.a.Component);var A=o;var l=t(17);var c=t.n(l);var u=t(13);var p=t.n(u);var d=t(5);var m=t.n(d);var h=t(3);var g=t.n(h);var f=t(9);var y=t.n(f);var v=t(6);var b=t.n(v);var w=function(a){function e(e){var t;t=a.call(this,e)||this;t.state={status:"hidden",statusText:""};return t}r()(e,a);var t=e.prototype;t.componentDidMount=function e(){this.updateStatus()};t.shouldComponentUpdate=function e(t,a){if(JSON.stringify(t.flightData)!==JSON.stringify(this.props.flightData))return true;if(JSON.stringify(a.status)!==JSON.stringify(this.state.status))return true;return false};t.componentDidUpdate=function e(){this.updateStatus()};t.updateStatus=function e(){this.getFlightStatus();if(window.flightStatusTimeout)clearInterval(window.flightStatusTimeout);window.flightStatusTimeout=setInterval(this.getFlightStatus,3e5)};t.getFlightStatus=function e(){var a=this;var t=this.props,r=t.flightData.flight,n=t.flightStatus;var i=b.a.alterDateByNumberOfDays(new Date,"+60");var o=new Date;var l="".concat(n.url).concat(r.code.toLowerCase(),"/?status=1&departDate=").concat(b.a.nativeDateToIso(o),"&returnDate=").concat(b.a.nativeDateToIso(i));y.a.get(l).end(function(e,t){if(e)return false;if(!t||t.status===404||!t.body)return false;if(!t.body[0]||!t.body[0].flightStats||!t.body[0].flightStats.flightStatuses)return false;a.setState({status:t.body[0].flightStats.flightStatuses[0].status})})};t.render=function e(){var t=this.state.status,a=t.status,r=t.statusText;if(a==="hidden")return null;var n=s()({label:true,flight:true,"label-success":a==="S"||a==="A"||a==="L","label-info":a==="R","label-danger":a==="U"||a==="C"||a==="NO"});if(!r)return null;return N.a.createElement("span",{className:n},r)};return e}(N.a.Component);var k=w;var T=t(2);var D=function(e){function t(){return e.apply(this,arguments)||this}r()(t,e);var a=t.prototype;a.render=function e(){var t=this.props,a=t.flightData,r=a.flight,n=a.departure,i=a.arrival,o=t.flightStatus;var l=s()({jumbotron:true,"jumbotron-cover":true,"jumbotron-overlay":true});return N.a.createElement("div",{className:l},N.a.createElement("div",{className:"container-fluid"},N.a.createElement("div",{className:"col-lg-6 col-lg-offset-1 col-md-offset-1 col-sm-offset-1 block-sm"},N.a.createElement("h1",null,r.carrier.name," Flight ",r.code),N.a.createElement("p",{className:"lead"},"From ",g.a.displayCity(n),", ",n.country," To ",g.a.displayCity(i),", ",i.country),N.a.createElement(k,{flightData:this.props.flightData,flightStatus:o})),N.a.createElement("div",{className:"col-lg-3 col-lg-offset-1 col-md-offset-1 col-sm-offset-1 departureInfo"},N.a.createElement("div",{className:"col-lg-12 col-sm-4 block-sm"},N.a.createElement("h5",null,"Flying on:"),N.a.createElement("h3",{className:"text-white"},g.a.formatDateToDMY(new Date(n.dateFull))," @ ",n.time)),N.a.createElement("div",{className:"col-lg-6 col-sm-4 col-xs-6 block-sm"},N.a.createElement("h5",null,"From"),N.a.createElement("h3",{className:"text-white"},g.a.displayCity(n))),N.a.createElement("div",{className:"col-lg-6 col-sm-4 col-xs-6 block-sm"},N.a.createElement("h5",null,"To"),N.a.createElement("h3",{className:"text-white"},g.a.displayCity(i))))))};return t}(N.a.Component);D.propTypes={flightStatus:T["object"]};var O=D;var E=function(e){function t(){return e.apply(this,arguments)||this}r()(t,e);var a=t.prototype;a.generateFlightList=function e(){var t=this.props.allFlightData;var a=0;if(!t.length)return null;return t.map(function(e){var t=g.a.formatDateToDddMMyy(e);a++;if(a===1||a>6)return;return N.a.createElement("li",{key:a,className:"list-group-item list-group-item-lg"},N.a.createElement("span",null,t," @ ",e.split("T")[1].split(":00.000")[0]))})};a.render=function e(){var t=this.props.flightCode;if(t==="")return null;return N.a.createElement("div",{className:"col-md-4"},N.a.createElement("ul",{className:"list-group bg-default"},N.a.createElement("li",{className:"list-group-item list-group-item-lg"},N.a.createElement("h3",{className:"list-group-item-heading"},"Upcoming ",t," Flights")),this.generateFlightList()))};return t}(N.a.Component);var C=E;var x=function(e){function t(){return e.apply(this,arguments)||this}r()(t,e);var a=t.prototype;a.render=function e(){var t=this.props.airlineInformation,a=t.name,r=t.checkedLuggageMaxSize,n=t.checkedLuggageMaxWeight,i=t.handLuggageMaxPerPerson,o=t.handLuggageMaxSize,l=t.handLuggageMaxWeight,s=t.baggageAllowanceDescription;return N.a.createElement("div",{className:"bg-default"},N.a.createElement("div",{className:"container block-lg"},N.a.createElement("div",{className:"col-xs-12"},N.a.createElement("div",{className:"page-header"},a&&N.a.createElement("h3",{className:"h2"},"Baggage allowance for ",a," Limited"),N.a.createElement("div",{className:"sub-heading"},"Always worth checking luggage and baggage allowances before you travel")),N.a.createElement("div",{className:"col-lg-12"},N.a.createElement("p",null,"Baggage allowances can be complicated, varying according to routes and class of seat and taking into account the number, weight and dimensions of bags, free allowances, and ever-changing aviation rules. In general, excess baggage and special items can be carried for an additional fee."),N.a.createElement("p",null,"For all airlines flying into and out of the UK, a recent safety requirement has been introduced restricting the weight of each single item of luggage to 32kg. This is not your full baggage allowance, rather a measure to reduce strains and injuries among baggage handling staff."),N.a.createElement("ul",{className:"list-unstyled"},r&&N.a.createElement("li",{className:"block-xs"},N.a.createElement("h4",null,"Luggage max size:")," ",r),n&&N.a.createElement("li",{className:"block-xs"},N.a.createElement("h4",null,"Luggage max weight:")," ",n),i&&N.a.createElement("li",{className:"block-xs"},N.a.createElement("h4",null,"Max hand luggage bags per person:")," ",i),o&&N.a.createElement("li",{className:"block-xs"},N.a.createElement("h4",null,"Hand luggage max size:")," ",o),l&&N.a.createElement("li",{className:"block-xs"},N.a.createElement("h4",null,"Hand luggage max weight:")," ",l)),s&&N.a.createElement("div",null,N.a.createElement("h4",null,"More information:"),N.a.createElement("p",null,s)),N.a.createElement("p",null,"Remember, this information is liable to change so always check on your airline and airport websites before you start packing.")))))};return t}(N.a.Component);var I=x;var S=function(t){function e(e){return t.call(this,e)||this}r()(e,t);var a=e.prototype;a.render=function e(){var t=this.props,a=t.flightData.departure,r=t.products;var n=this.props.airportProducts["default"];var i=this.props.airportProducts[a.airport_iata]||n;return N.a.createElement("div",{className:"col-md-8"},N.a.createElement("ul",{className:"list-group list-group-lg list-unstyled",id:"productList"},N.a.createElement("li",{className:"list-group-item-container bg-default"},N.a.createElement("div",{className:r.listItemClass["available"]},N.a.createElement("div",{className:"row flight-product"},N.a.createElement("i",{className:r.iconClass["available"]}),N.a.createElement("i",{className:"icon fas fa-parking left-icon hidden-xs"}),N.a.createElement("div",{className:"col-lg-6"},N.a.createElement("h3",{className:"list-group-item-heading"},a.airport," Airport Parking")),N.a.createElement("div",{className:"col-lg-4 product-price"},N.a.createElement("a",{href:i.cpUrl||n.cpUrl,className:"component-button small primary",target:"_blank"},N.a.createElement("i",{className:"icon icon--search"}),"Search car parking"))))),N.a.createElement("li",{className:"list-group-item-container bg-default"},N.a.createElement("div",{className:r.listItemClass["available"]},N.a.createElement("div",{className:"row flight-product"},N.a.createElement("i",{className:r.iconClass["available"]}),N.a.createElement("i",{className:"icon fas fa-couch left-icon hidden-xs"}),N.a.createElement("div",{className:"col-lg-6"},N.a.createElement("h3",{className:"list-group-item-heading"},a.airport," Airport Lounges")),N.a.createElement("div",{className:"col-lg-4 product-price"},N.a.createElement("a",{href:i.loUrl||n.loUrl,className:"component-button small primary",target:"_blank"},N.a.createElement("i",{className:"icon icon--search"}),"Search lounges"))))),N.a.createElement("li",{className:"list-group-item-container bg-default"},N.a.createElement("div",{className:r.listItemClass["available"]},N.a.createElement("div",{className:"row flight-product"},N.a.createElement("i",{className:r.iconClass["available"]}),N.a.createElement("i",{className:"icon fas fa-suitcase left-icon hidden-xs"}),N.a.createElement("div",{className:"col-lg-6"},N.a.createElement("h3",{className:"list-group-item-heading"},a.airport," Airport Hotels with Parking")),N.a.createElement("div",{className:"col-lg-4 product-price"},N.a.createElement("a",{href:i.hcpUrl||n.hcpUrl,className:"component-button small primary",target:"_blank"},N.a.createElement("i",{className:"icon icon--search"})," Search hotels with parking"))))),N.a.createElement("li",{className:"list-group-item-container bg-default"},N.a.createElement("div",{className:r.listItemClass["available"]},N.a.createElement("div",{className:"row flight-product"},N.a.createElement("i",{className:r.iconClass["available"]}),N.a.createElement("i",{className:"icon fas fa-bus-alt left-icon hidden-xs"}),N.a.createElement("div",{className:"col-lg-6"},N.a.createElement("h3",{className:"list-group-item-heading"},a.airport," Overseas Airport Transfers")),N.a.createElement("div",{className:"col-lg-4 product-price"},N.a.createElement("a",{href:n.hoURL,className:"component-button small primary",target:"_blank"},N.a.createElement("i",{className:"icon icon--search"})," Search transfers")))))))};return e}(N.a.Component);var U=S;var R=function(e){function t(){return e.apply(this,arguments)||this}r()(t,e);var a=t.prototype;a.render=function e(){var t=this.props,a=t.flightData,r=t.flightStats,n=t.weatherData,i=t.arrivalInfo,o=t.flightLinks,l=t.terminalConvert;var s="http://www.lonelyplanet.com/searchResult?q="+a.arrival.city;return N.a.createElement("div",{className:"bg-primary"},N.a.createElement("div",{className:"container block-lg"},N.a.createElement("div",{className:"col-xs-12"},N.a.createElement("div",{className:"page-header"},N.a.createElement("h3",{className:"h2"},"Departure and Destination Airport Information"),N.a.createElement("div",null,"Our useful links below should help you at the airport")),N.a.createElement("div",{className:"col-lg-6"},N.a.createElement("h4",null,g.a.displayCity(a.departure)),N.a.createElement("table",{className:"table"},N.a.createElement("thead",null),N.a.createElement("tbody",null,N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Departure"),N.a.createElement("td",null,a.departure.airport_iata)),a.departure.terminal&&N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Terminal"),N.a.createElement("td",null,o.terminal&&l[a.departure.terminal]&&N.a.createElement("a",{href:o.terminal},l[a.departure.terminal]),!o.terminal&&l[a.departure.terminal])),N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Location"),N.a.createElement("td",null,g.a.displayCity(a.departure),", ",a.departure.country," ")),o.directions&&N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Directions"),N.a.createElement("td",null,N.a.createElement("a",{href:o.directions,title:"Directions to "+a.departure.city+" "+a.departure.airport},"Directions to ",a.departure.city," ",a.departure.airport)," ")),N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Date"),N.a.createElement("td",null,g.a.formatDateToDddMMyy(a.departure.dateFull))),N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Departs Local time"),N.a.createElement("td",null,a.departure.time)),o.departures&&N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Departures"),N.a.createElement("td",null,N.a.createElement("a",{href:o.departures,title:a.departure.city+" "+a.departure.airport+" Departure Board"},a.departure.city," ",a.departure.airport," Departures"))),o.arrivals&&N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Arrivals"),N.a.createElement("td",null,N.a.createElement("a",{href:o.arrivals,title:a.departure.city+" "+a.departure.airport+" Arrival Board"},a.departure.city," ",a.departure.airport," Arrivals"))),(o.airlineNumbers||o.contactNumbers)&&N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Contacts"),N.a.createElement("td",null,o.airlineNumbers&&N.a.createElement("a",{href:o.airlineNumbers},"Airlines"),o.contactNumbers&&N.a.createElement("a",{href:o.contactNumbers},", Airport"))),o.facilities&&N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Facilities"),N.a.createElement("td",null,N.a.createElement("a",{href:o.facilities,title:a.departure.city+" "+a.departure.airport+"Baggage & Security"},a.departure.city+" "+a.departure.airport+" Baggage & Security"))),o.shopping&&N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Shopping"),N.a.createElement("td",null,N.a.createElement("a",{href:o.shopping,title:"Shopping at "+a.departure.city+" "+a.departure.airport},"Shopping at ",a.departure.city," ",a.departure.airport))),o.restaurants&&N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Eating"),N.a.createElement("td",null,N.a.createElement("a",{href:o.restaurants,title:a.departure.city+" "+a.departure.airport+" Restaurants and Bars"},a.departure.city," ",a.departure.airport," Restaurants & Bars")," ")),o.localArea&&N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Local Area"),N.a.createElement("td",null,N.a.createElement("a",{href:o.localArea,title:"In & Around "+a.departure.city+" "+a.departure.airport},"In & Around ",a.departure.city," ",a.departure.airport)))))),N.a.createElement("div",{className:"col-lg-6"},N.a.createElement("h4",null,g.a.displayCity(a.arrival)),N.a.createElement("table",{className:"table"},N.a.createElement("thead",null),N.a.createElement("tbody",null,N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Destination"),N.a.createElement("td",null,a.arrival.airport_iata)),N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Location"),N.a.createElement("td",null,o.destination&&N.a.createElement("a",{href:o.destination},g.a.displayCity(a.arrival),", "),a.arrival.country)),N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Date"),N.a.createElement("td",null,g.a.formatDateToDddMMyy(a.arrival.dateFull))),r&&r.flightStatuses&&r.flightStatuses[0]&&r.flightStatuses[0].arrivalDate&&r.flightStatuses[0].arrivalDate.dateLocal&&N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Arrives Local Time"),N.a.createElement("td",null,g.a.formatISOStringToDateTime(r.flightStatuses[0].arrivalDate.dateLocal))),n&&n.daily&&N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Weather Today"),N.a.createElement("td",null,"Partly Cloudy Highs ",Math.floor(n.daily.data[0].temperatureMax),"℃, Lows ",Math.floor(n.daily.data[0].temperatureMin),"℃ ")),i&&N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Currency"),N.a.createElement("td",null,i.currency_name," ",N.a.createElement("a",{target:"_blank",href:"http://holidayextras.currencyandmore.com"},"Order Currency"))),i&&N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Language"),N.a.createElement("td",null,i.language)),N.a.createElement("tr",null,N.a.createElement("th",{scope:"row"},"Lonely Planet"),N.a.createElement("td",null,N.a.createElement("a",{href:s,target:"_blank"},"Guide")," "))))))))};return t}(N.a.Component);var F=R;var _=t(10);var G=function(a){function e(e){var t;t=a.call(this,e)||this;t.state={allMarkers:[],markers:[],polyline:[]};t.createMarkersAndPolyline=t.createMarkersAndPolyline.bind(t);t.insertPolyline=t.insertPolyline.bind(t);t.insertMarkers=t.insertMarkers.bind(t);return t}r()(e,a);var t=e.prototype;t.componentDidMount=function e(){this.createMarkersAndPolyline()};t.createMarkersAndPolyline=function e(){this.setState({allMarkers:this.insertMarkers(true),markers:this.insertMarkers(),polyline:this.insertPolyline()})};t.insertPolyline=function e(){var t=this.props.airports;var a=t.reduce(function(e,t){var a=t.latitude,r=t.longitude;e.push({lat:a,lng:r});return e},[]);return[N.a.createElement(_["Path"],{key:"poly_"+Date.now(),points:a,weight:"2",color:"black",geodesic:true})]};t.insertMarkers=function e(a){var t=this.props.airports;var r=t.reduce(function(e,t){if(a){e.push({lat:t.latitude,lng:t.longitude,icao:t.icao});return e}e.push(N.a.createElement(_["Marker"],{key:"pin_"+t.icao+Date.now(),location:{lat:t.latitude,lng:t.longitude}}));return e},[]);return r};t.render=function e(){var t=this.state,a=t.markers,r=t.polyline;if(!a.length||!r.length)return null;return N.a.createElement("div",{id:"theMap"},N.a.createElement(_["StaticGoogleMap"],{scale:"2",size:"640x165",apiKey:"AIzaSyBABuXTOM9ZyVExDMrz748ooMMOIfzOlq0",style:{width:"100%"}},N.a.createElement(_["Marker"].Group,{label:"Airports",size:"tiny"},a),r))};return e}(N.a.PureComponent);var H=G;var L=function e(t){return N.a.createElement("div",{className:"bg-default"},N.a.createElement("div",{className:"container block-lg"},N.a.createElement("div",{className:"col-xs-12"},N.a.createElement("div",{className:"page-header"},N.a.createElement("h3",{className:"h2"},t.title),N.a.createElement("div",{className:"sub-heading"},t.description)),N.a.createElement("div",{className:"col-lg-12",dangerouslySetInnerHTML:{__html:t.content}}))))};L.propTypes={title:T["string"],description:T["string"],content:T["string"]};var j=L;var P=function(e){function t(){return e.apply(this,arguments)||this}r()(t,e);var a=t.prototype;a.renderWeather=function e(){var t=this.props,r=t.weatherData,n=t.weatherIcons;return Object.keys(r.daily.data).map(function(e){var t=r.daily.data[e];if(e>5)return null;var a=new Date(t.time*1e3);return N.a.createElement("div",{className:"component-weather",key:t.time},N.a.createElement("div",{className:n[t.icon]},N.a.createElement("span",null,t.summary)),N.a.createElement("div",null,b.a.getFullDay(a.getDay())),N.a.createElement("div",null,N.a.createElement("span",null,"High ",Math.floor(t.temperatureMax)),N.a.createElement("abbr",{title:"Degrees Celsuis"},"°C")))})};a.render=function e(){var t=this.props,a=t.city,r=t.country,n=t.weatherData;if(a===""||r===""||Object.keys(n).length===0||!n.daily)return null;var i=this.renderWeather();return N.a.createElement("section",{className:"trip-weather"},N.a.createElement("div",{className:"block-md bg-primary"},N.a.createElement("div",{className:"container"},N.a.createElement("div",{className:"col-sm-4 block-sm"},N.a.createElement("div",{className:"page-header"},N.a.createElement("h3",{className:"h1"},"Weather"),N.a.createElement("div",null,"The next six days in ",a,", ",r,"."))),N.a.createElement("div",{className:"col-sm-8 block-sm"},N.a.createElement("div",{className:"weather-components col-xs-12"},i)))))};return t}(N.a.Component);P.getDefaultProps={city:"",country:""};var K=P;var Z=function e(){return N.a.createElement("footer",{className:"footer bg-secondary hidden-print"},N.a.createElement("div",{className:"block-md bg-primary"},N.a.createElement("div",{className:"container"},N.a.createElement("div",{className:"row"},N.a.createElement("div",{className:"col-xs-12"},N.a.createElement("h5",null,"Disclaimer"),N.a.createElement("p",{className:"small"},N.a.createElement("span",null,"The flight information on www.holidayextras.com is provided by external sources outside our control. We strongly recommend that you contact your airline or the relevant airport to confirm any flight information before traveling or making any decisions as Holiday Extras does not take responsibility for this information, offers no guarantees as to its accuracy and does not accept liability for any losses incurred as a result of you relying on this information.")))))),N.a.createElement("div",{className:"footer-bottom block-sm small"},N.a.createElement("div",{className:"container"},N.a.createElement("div",{className:"row"},N.a.createElement("div",{className:"col-sm-7"},N.a.createElement("ul",{className:"list-inline footer-links block-xs"},N.a.createElement("li",null,N.a.createElement("a",{href:"/privacy.html"},"Privacy Policy")))),N.a.createElement("div",{className:"col-sm-5 block-xs text-sm-right"},N.a.createElement("span",null,"© ",(new Date).getFullYear()," Holiday Extras Ltd"))))))};var W=Z;var B=function(a){function e(e){var t;t=a.call(this,e)||this;if(e.agentSetup&&!e.agentData.agent)e.agentSetup();if(e.initialSetup&&!e.agentData.agent)e.initialSetup();return t}r()(e,a);var t=e.prototype;t.componentDidUpdate=function e(t){if(this.props.agentData.agent&&!t.agentData.agent||window.agentReduxStore&&!window.universalJavascriptLoaded)this.initialLoad(this.props)};t.initialLoad=function e(t){var a=t.agentData.agent,r=t.pageData,n=r===void 0?{}:r,i=t.group;var o=n.flightData,l=o===void 0?{}:o;var s=l.futureDepartures,c=s===void 0?[]:s;var u=t.settings.env;if(m.a.getParameterByName("data-pipeline-staging"))u="staging";if(m.a.getParameterByName("data-pipeline-production"))u="production";p.a.init({agent:a,environment:u,templateGroup:i,lb:t.settings.orionLb,schemaVersions:{cache_primer:"v1.0.0",auto_capture:"v4.3.2",capture:"v4.3.2",click:"v4.4.1",load:"v3.5.1",search:"v4.0.1",focus:"v4.2.2",test:"v4.2.2"}});window.futureDepartures=c;window.universalJavascriptLoaded=true;if(t.userLogin&&(!t.loggedInData||!t.loggedInData.email))t.userLogin()};t.render=function e(){var t=this.props,a=t.agentData,r=t.settings,n=t.pageData,i=n===void 0?{}:n,o=t.domainSettings,l=t.coreBookingLocations,s=t.products,c=t.weatherIcons,u=t.flightStatus,p=t.terminalConvert,d=t.airportProducts;var m=i.flightData,h=m===void 0?{}:m,g=i.flightContent,f=g===void 0?{}:g,y=i.flightStats,v=y===void 0?{}:y,b=i.arrivalInfo,w=b===void 0?{}:b,k=i.flightLinks,T=k===void 0?{}:k,D=i.weather,E=D===void 0?{}:D,x=i.airlineInfo,S=x===void 0?{}:x;var _=!!(Array.isArray(E)||E==="[]");var L=Object.assign({},l,{locationsMap:{cp:"carParking",ho:"hotels",hcp:"hotels",lo:"loungeCodes"}});return N.a.createElement("div",null,N.a.createElement(A,{domainSettings:o,noHeHaButton:true}),N.a.createElement(O,{flightData:h,flightStatus:u}),N.a.createElement("div",{className:"container block-sm"},N.a.createElement(U,{flightData:h,products:s,airportProducts:d}),h.flight&&h.flight.code&&N.a.createElement(C,{flightCode:h.flight.code,allFlightData:h.futureDepartures,settings:r})),Object.prototype.hasOwnProperty.call(v,"appendix")&&Object.prototype.hasOwnProperty.call(v.appendix,"appendix")&&N.a.createElement(H,{airports:v.appendix.airports}),N.a.createElement(F,{flightData:h,flightStats:v,weatherData:E,arrivalInfo:w,flightLinks:T,terminalConvert:p}),S&&N.a.createElement(I,{airlineInformation:S}),!_&&E&&h.arrival&&N.a.createElement(K,{weatherData:E,country:h.arrival.country,city:h.arrival.city,weatherIcons:c}),Object.keys(f).length!==0&&N.a.createElement(j,{title:f.title,description:f.description,content:f.content}),N.a.createElement(W,null))};return e}(N.a.Component);B.propTypes={agents:T["object"],dataSource:T["object"],domainSettings:T["object"],coreBookingLocations:T["object"],pageData:T["object"].isRequired,RoomTypes:T["object"],settings:T["object"],sortOptions:T["object"],flightStatus:T["object"],terminalConvert:T["object"]};var V=e["default"]=c()(B,["agents","login"])}]);