(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(15)(6)},,function(e,t,a){var r=a(53),n=r.combineReducers,i=r.createStore;var o=a(54);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(38);var s=a(1);var c=a(0);var r=a(39),u=r.connect;var n=a(40);var i=a(48);var o=a(49);var d=a(67);var p=a(25);var m=a(68);var g={agents:n,hxbreaks:d,liveChat:i,login:o,splitTests:m};var h=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,g[e].mapStateToProps(a))});return a};var i=function e(a,r){var n={};t.map(function(e,t){n=Object.assign({},n,g[e].mapDispatchToProps(a,r))});return n};r=u(n,i)(r);var o=function(e){"use strict";s(t,e);function t(){return e.apply(this,arguments)||this}var a=t.prototype;a.render=function e(){return c.createElement(r,l({},this.props,{store:p}))};return t}(c.PureComponent);try{Object.defineProperty(o,"name",{value:"".concat(a,"Wrapper")})}catch(e){}return o};e.exports=h},,function(e,t,a){var r=a(0);var n=a(30);var i=a(70);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/fr2757?returnDate=2023-04-02",host:"flight-information.dock-yard.io",port:"443",pageNameField:"pageName"},pageData:{"flightData":{"flight":{"code":"FR2757","number":"2757","icao":["RYR"],"matched":"FR2757/RYR2757","carrier":{"code":"FR","name":"Ryanair"},"distance":"582","elapsed_time":"120","layover_time":"0"},"departure":{"airport_iata":"STN","airport":"London Stansted","country":"United Kingdom","date":"2024-04-27","time":"07:25","city":"London","terminal":"","region":0,"country_iso":"GB","dateFull":"2024-04-27T07:25:00.000Z"},"arrival":{"airport_iata":"MXP","airport":"Milan Malpensa","country":"Italy","date":"2024-04-27","time":"10:25","city":"Milan","terminal":"","region":0,"country_iso":"IT","dateFull":"2024-04-27T10:25:00.000Z"},"futureDepartures":["2024-04-29T08:30:00.000Z","2024-04-30T07:25:00.000Z","2024-05-01T06:35:00.000Z","2024-05-02T09:30:00.000Z","2024-05-03T07:15:00.000Z","2024-05-04T07:25:00.000Z","2024-05-06T08:30:00.000Z","2024-05-07T07:50:00.000Z","2024-05-08T06:35:00.000Z","2024-05-09T09:30:00.000Z","2024-05-10T07:15:00.000Z","2024-05-11T07:25:00.000Z","2024-05-13T08:30:00.000Z","2024-05-14T07:50:00.000Z","2024-05-15T06:35:00.000Z","2024-05-16T09:30:00.000Z","2024-05-17T07:15:00.000Z","2024-05-18T07:25:00.000Z","2024-05-20T08:30:00.000Z","2024-05-21T07:50:00.000Z","2024-05-22T06:35:00.000Z","2024-05-23T09:30:00.000Z","2024-05-24T07:15:00.000Z","2024-05-25T07:25:00.000Z","2024-05-27T08:30:00.000Z","2024-05-28T07:50:00.000Z","2024-05-29T06:35:00.000Z","2024-05-30T09:30:00.000Z","2024-05-31T07:15:00.000Z","2024-06-01T07:25:00.000Z","2024-06-03T08:30:00.000Z","2024-06-04T07:50:00.000Z","2024-06-05T06:35:00.000Z","2024-06-06T09:30:00.000Z","2024-06-07T07:15:00.000Z","2024-06-08T07:25:00.000Z","2024-06-10T08:30:00.000Z","2024-06-11T07:50:00.000Z","2024-06-12T06:35:00.000Z","2024-06-13T09:30:00.000Z","2024-06-14T07:15:00.000Z","2024-06-15T07:25:00.000Z","2024-06-17T08:30:00.000Z","2024-06-18T07:50:00.000Z","2024-06-19T06:35:00.000Z","2024-06-20T09:30:00.000Z","2024-06-21T07:15:00.000Z","2024-06-22T07:25:00.000Z","2024-06-24T08:30:00.000Z","2024-06-25T07:50:00.000Z","2024-06-26T06:35:00.000Z"],"futureArrivals":["2024-04-29T11:30:00.000Z","2024-04-30T10:25:00.000Z","2024-05-01T09:35:00.000Z","2024-05-02T12:30:00.000Z","2024-05-03T10:15:00.000Z","2024-05-04T10:25:00.000Z","2024-05-06T11:30:00.000Z","2024-05-07T10:50:00.000Z","2024-05-08T09:35:00.000Z","2024-05-09T12:30:00.000Z","2024-05-10T10:15:00.000Z","2024-05-11T10:25:00.000Z","2024-05-13T11:30:00.000Z","2024-05-14T10:50:00.000Z","2024-05-15T09:35:00.000Z","2024-05-16T12:30:00.000Z","2024-05-17T10:15:00.000Z","2024-05-18T10:25:00.000Z","2024-05-20T11:30:00.000Z","2024-05-21T10:50:00.000Z","2024-05-22T09:35:00.000Z","2024-05-23T12:30:00.000Z","2024-05-24T10:15:00.000Z","2024-05-25T10:25:00.000Z","2024-05-27T11:30:00.000Z","2024-05-28T10:50:00.000Z","2024-05-29T09:35:00.000Z","2024-05-30T12:30:00.000Z","2024-05-31T10:15:00.000Z","2024-06-01T10:25:00.000Z","2024-06-03T11:30:00.000Z","2024-06-04T10:50:00.000Z","2024-06-05T09:35:00.000Z","2024-06-06T12:30:00.000Z","2024-06-07T10:15:00.000Z","2024-06-08T10:25:00.000Z","2024-06-10T11:30:00.000Z","2024-06-11T10:50:00.000Z","2024-06-12T09:35:00.000Z","2024-06-13T12:30:00.000Z","2024-06-14T10:15:00.000Z","2024-06-15T10:25:00.000Z","2024-06-17T11:30:00.000Z","2024-06-18T10:50:00.000Z","2024-06-19T09:35:00.000Z","2024-06-20T12:30:00.000Z","2024-06-21T10:15:00.000Z","2024-06-22T10:25:00.000Z","2024-06-24T11:30:00.000Z","2024-06-25T10:50:00.000Z","2024-06-26T09:35:00.000Z"]},"flightLinks":{"departures":false,"arrivals":false,"directions":false,"airlineNumbers":false,"contactNumbers":false,"facilities":false,"shopping":false,"restaurants":false,"localArea":false,"destination":false},"airlineInfo":{"name":"Ryanair","checkedLuggageMaxSize":"81cms (height), 119cms (width) and 119cms (depth)","checkedLuggageMaxWeight":"15-20kg","handLuggageMaxPerPerson":"1 + 1 smaller bag","handLuggageMaxSize":"55 x 40 x 20 cms","handLuggageMaxWeight":"10kg","baggageAllowanceDescription":"Every passenger is permitted to check in up to three bags with a maximum combined weight of 15kg, subject to the payment of the applicable checked baggage fees. Ryanair offers a discounted checked baggage fee for those travellers paying online in advance. Passengers who wish to check-in baggage do not qualify for online check-in and must check in at the airport and pay the appropriate airport check-in fee."},"airportInfo":{"airportName":"Stansted"},"weather":{},"arrivalInfo":{"currency_name":"Euro","language":"Italian, German and French"},"pageName":"flight/fr2757",pageTitle:"Flight FR2757 or RYR2757 | Ryanair from London Stansted to Milan Malpensa",description:"Check flight departure and arrival times for Ryanair flight number FR2757 or RYR2757 from London Stansted to Milan Malpensa"},pageName:"flight/fr2757.html",pagename:"flight/fr2757.html",srcFile:"u28601.md",coreBookingTranslations:{hotelLabels:{ho:{startDate:"Hotel check-in",endDate:"Return date",startDateHomepageTest:"Check in (1 night)",endDateHomepageTest:"Collect car"},hcp:{ppts:{startDate:"Parking from",endDate:"Hotel check-in",startDateHomepageTest:"Parking from",endDateHomepageTest:"Hotel check in"},nonPpts:{startDate:"Hotel and Parking check-in",endDate:"Collect car on",startDateHomepageTest:"Hotel check in",endDateHomepageTest:"Collect car"}}},carHire:{places:{city:"City",airport:"Airport",station:"Station",district:"Region",place:"Place"},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"},flightInput:{inputLabel:"Enter flight no.",placeholder:"Eg. VS27",inputAlternativeLabel:"Destination/airport",alternativePlaceholder:"Search"},voucherText:{label:"Voucher code",placeholder:"Enter voucher here",invalid:"Code invalid"},terminalMap:[null,"Terminal 1","Terminal 2","Terminal 3","Terminal 4","Terminal 5"],connectingFlightCheckbox:{text:"Connecting flight?"},transfers:{flightInput:{inputLabel:"Enter flight no.",placeholder:"Eg. VS27",inputAlternativeLabel:"Destination/airport",alternativePlaceholder:"Search",from:"from",at:"at",to:"to"},terminalMap:[null,"Terminal 1","Terminal 2","Terminal 3","Terminal 4","Terminal 5"],errors:{noAgent:"No Agent",noPickUp:"Location not found! Please enter your resort or city, address will be taken later.",noDropOff:"Hotel not found! Please enter your resort or city, address will be taken later.",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."},popupOptions:{connections:"Connections",airports:"Airport",resorts:"Resorts",hotels:"Hotels",places:"Places",ports:"Port",trainStations:"Train Station",busStations:"Bus Stations",amusementParks:"Amusement Parks"},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 (2-11)",infantsLabel:"Infants (0-1)",notFoundText:"No hotel found! Please enter your city or resort - we'll ask for the address later. Need a hand? Call us on 0800 083 3407",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? Call us on 0800 083 3407",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:"Airport, hotel, other",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"},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"},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:"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",loFlightTimeLabel:"Flight time",chooseFlightLabel:"Choose flight",loungeArrivalLabel:"Lounge arrival",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"},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"},"OptGroupNew Zealand":{MLE:"Auckland"},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"},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"},"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"}},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",LGW:"Gatwick",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",ho:"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,default_transfer_loc:50,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:1675243316116,assetVersion:"rww581xp2rybr"},appSettings:{get_app_url:"https://hx.app.link/UNEASZrzQQ",track_name:"app_link_clicked",branch_key:"key_live_dbwczC9jmM6OaQuYESRj6jdcsAeSAX1d",campaign:"hx-direct",channel:"Website",feature:"TextMeTheApp",defaultBtnText:"Get the App",downloadText:"Faster and smarter in the app...",downloadBtnText:"Download now"},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",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",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"},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(15)(15)},,function(e,t){e.exports=ReactRedux},function(e,t,a){var s=a(41);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(16);var i=n(24);var o=n(23);var l=n(10);var s=n(69);var a=n(18),c=a.domainSettings,u=a.settings,d=a.agents,p=a.customerWebSocketService;var m={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)&&!l.getParameterByName("adcode",true)&&!l.getParameterByName("email",true)){return d.search||this.getDefaultAgent(d.main)}},agentFromUrl:function e(){var t=l.getParameterByName("agent",true);var a=new RegExp(/^[0-9a-z]{4,5}$/i);if(t&&a.test(t)){return t}},agentFromCookie:function e(){if(o.load("agent")){return o.load("agent")}},getDefaultAgent:function e(t){return t||d.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){o.remove("agent","/");var a=new Date;var r=u.cookieExpiryDays||90;a.setTime(a.getTime()+r*24*60*60*1e3);var n={expires:a,path:"/"};if(u.cookieDomain)n.domain=u.cookieDomain;o.save("agent",t,n)},agentData:function e(t,a){var r={};if(a){try{r=n(47)("./"+u.pluginsExportDir+"/"+d.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,d){if(this.agentData("DDI")&&this.agentData("DDI")!=="")return d(this.agentData());var t=c.language?c.language.toUpperCase():"UK";if(t!=="UK"&&t!=="DE")t="DE";var a=c.scheme?c.scheme+":":"";try{r.get("".concat(a,"//hapi.holidayextras.co.uk/legacy/agent_lookup/").concat(u,".js?key=foo&country=").concat(t)).use(i).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};d(c)})})}catch(e){console.log(e.message,"ERROR with agent lookup");return d(this.agentData())}},assignAgentsIdentifiedByUrl:function e(t){var a={};if(t&&t.allowedUrlAgentIDs){t.allowedUrlAgentIDs.forEach(function(e){a[e]=l.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 a=this;var t=o.load("owts-tmp-v2");var r=o.load("owts");if(typeof window==="undefined"||!p)return;if(!t)return setTimeout(this.checkForSessionCookie.bind(this),500);var n=s("".concat(p,"?sessionId=").concat(t,"&visitorId=").concat(r),{transports:["websocket"]});n.on("audience_customer_segment_association",function(e){if(a.checkIsLoggedIn()||!window.dataLayer)return;var t={event:"audience_segments",type:e.action};e.segments.forEach(function(e){t[e.key]=e.value});window.dataLayer.push(t)})}};e.exports=m},,,,,,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=47},function(e,t){var a=function e(t){return{liveChatData:t.liveChatData}};var r=function e(a){return{openLiveChat:function e(t){return a({type:"CHAT_OPENED",data:{department:t}})},closeLiveChat:function e(){return a({type:"CHAT_CLOSED"})},minimizeLiveChat:function e(t){return a({type:"CHAT_MINIMIZED",data:{chatMinimized:t}})}}};e.exports={mapStateToProps:a,mapDispatchToProps:r}},function(e,t,a){var L=a(50);var N=a(52);var x=a(9);var A=a(16);var C=a(25);var _=a(62);var O=a(63);var P=a(19);var I=a(10);var B=a(18);var M=a(64);var r=function e(t){return{loggedInData:t.loggedInData}};var n=function e(i,o){var c=function e(){return o.authenticationConfig||_};var u=function e(){return x(o.loginConfig)==="object"?o.loginConfig:O};var n=function e(t){i({type:"LOGIN",data:t})};var t=function e(){var t=c(),a=t.auth;A.get(a.logout).withCredentials().end(r)};var r=function e(){P.track(null,{customer_state:"recognised_with_account"},"customer_state");i({type:"LOGOUT"})};var l=function e(t){var a=t.body.data.getTraveller?d(t.body.data.getTraveller):t.body;if(!a.email)return;P.inline("login_successful","1");a.validUser=true;var r=o.settings||B.settings;if(typeof window!=="undefined"&&window.location.hostname==="localhost")r.cookieDomain="localhost";I.setCookie("Email",a.email,false,r.subCookieDomain);I.setCookie("user_ext_id",a.userExtId,new Date((new Date).setFullYear((new Date).getFullYear()+1)),r.subCookieDomain);if(a.address&&a.address.user_id){I.setCookie("customerID",a.address.user_id,false,r.cookieDomain)}if(a.vehicle&&a.vehicle.user_id){I.setCookie("customerID",a.vehicle.user_id,false,r.cookieDomain)}P.inline("logged_in_status","authenticated");P.track(null,{customer_state:"authenticated"},"customer_state");if(window&&window.$){$(":input[type=email].emailAddress").val(a.email)}n(a)};var a=function(){var n=N(L.mark(function e(a,r,n){var i,o,l;return L.wrap(function e(t){while(1)switch(t.prev=t.next){case 0:if(!(!a||!r)){t.next=2;break}return t.abrupt("return",true);case 2:i=c(),o=i.auth;l=false;if(n==="manual")l=true;t.prev=5;t.next=8;return A.post(o.login,{user:{email:a,password:r},user_email:a}).withCredentials().type("application/json").timeout({response:3e4,deadline:6e4});case 8:h();return t.abrupt("return",false);case 12:t.prev=12;t.t0=t["catch"](5);p(l);return t.abrupt("return",true);case 16:case"end":return t.stop()}},e,null,[[5,12]])}));return function e(t,a,r){return n.apply(this,arguments)}}();var s=function(){var n=N(L.mark(function e(a,r,n){var i,o,l;return L.wrap(function e(t){while(1)switch(t.prev=t.next){case 0:if(!(!a||!r)){t.next=2;break}return t.abrupt("return",true);case 2:i=c(),o=i.auth;l=false;if(n==="manual")l=true;t.prev=5;t.next=8;return A.post(o.login,{user:{email:a,password:r},user_email:a}).withCredentials().type("application/json").timeout({response:3e4,deadline:6e4});case 8:h();return t.abrupt("return",false);case 12:t.prev=12;t.t0=t["catch"](5);p(l);return t.abrupt("return",true);case 16:case"end":return t.stop()}},e,null,[[5,12]])}));return function e(t,a,r){return n.apply(this,arguments)}}();var d=function e(t){var a=function t(e){var a=[];e.forEach(function(e){if(Array.isArray(e))a=a.concat(t(e));else a=a.concat(e)});return a};var r=t||{},n=r.profile,i=n.title,o=n.givenName,l=n.familyName,s=n.email,c=n.telephones.preferred,u=n.vehicles.preferred,d=n.addresses.preferred,p=n.tripappMetadata,m=r.userExtId,g=r.vouchers,h=g===void 0?{}:g,f=r.liveChatHistory,y=r.upcomingTrips;return{title:i,first_name:o,last_name:l,email:s,userExtId:m,contact_number:c&&c.number,vehicle:p&&u&&{car_colour:u.colour,car_make:u.manufacturer,car_model:u.model,id:u.id,registration:u.registration,user_id:p.railsUserID},address:p&&d&&{id:d.id,user_id:p.railsUserID,address_1:d.addressLines[0],address_2:d.addressLines[1],address_3:d.addressLines[2],town:d.locality,county:d.region,postcode:d.postalCode,country:d.country},vouchers:h,liveChatHistory:f,upcomingTrips:y}};var p=function e(t){var a=b();var r=a!==""?"recognised":"new_user";P.inline("logged_in_status",r);y(a);if(t){P.inline("login_failed","1");i({type:"LOGIN_FAILED",data:true})}};var m=function e(t,a){if(t||a.status===404||!a.body||a.body.errors)return p(false);l(a)};var g=function e(t){var a=c(),r=a.auth;try{A.post(r.url).set("Content-Type","application/json").send(JSON.stringify({query:r.query})).withCredentials().end(t)}catch(e){}};var h=function e(){var t=M.getQueryData();if(!t)return g(m);var a=function e(t){if(!t||!t.match(/(.+)(@|%40|%2540)(.+).(.+)/))return;var a=typeof window!=="undefined"?window.location.host.replace("www.",".").replace("local.",".").split(":")[0]:null;I.setCookie("Email",t,null,a);return g(m)};if(t["email"])I.hashToEmail(t["email"],a);else if(t["user_ext_id"])I.hashToEmail(t["user_ext_id"],a);else return g(m)};var f=function e(t,a,r){var n=o.trackingPrefix?o.trackingPrefix:"";if(t||a.status===404||!a.body||!a.body.data||!a.body.data.hasAccount){w(r);P.inline(n+"not_valid_user_email","1");return P.track(null,{customer_state:"recognised_with_email"},"customer_state")}P.inline(n+"valid_user_email","1");P.track(null,{customer_state:"recognised_with_account"},"customer_state");i({type:"VALID_USER",data:r})};var y=function e(a){var t=c(),r=t.userExists,n=r.url,i=r.query;if(!a||!i){P.track(null,{customer_state:"unrecognised"},"customer_state");return}i.variables.email=a.replace("+","%2b");try{A.post(n).set("Content-Type","application/json").send(JSON.stringify({query:i.query,variables:i.variables})).withCredentials().end(function(e,t){return f(e,t,a)})}catch(e){}};var v=function e(r){var t=c(),a=t.userExists,n=a.url,i=a.query;if(!r||!i){P.track(null,{customer_state:"unrecognised"},"customer_state");return}i.variables.email=r.replace("+","%2b");return A.post(n).set("Content-Type","application/json").send(JSON.stringify({query:i.query,variables:i.variables})).withCredentials().then(function(e){var t,a;f(false,e,r);return e===null||e===void 0?void 0:(t=e.body)===null||t===void 0?void 0:(a=t.data)===null||a===void 0?void 0:a.hasAccount})["catch"](function(e){f(true,e,r);console.log("err",e);return false})};var b=function e(){return I.getCookie("email")||I.getCookie("Email")||""};var w=function e(t){i({type:"INVALID_USER",data:t})};var k=function e(){var t=o.trackingPrefix?o.trackingPrefix:"";tracker.inline("auto_capture",{name:t+"sent_magic_link"});if(!C)return;i({type:"SENT_MAGICLINK",data:true})};var T=function e(s){return new Promise(function(t,a){var e=s.replace("+","%2b")||b();if(!e)return a(new Error("undefined email address"));var r=c(),n=r.sendMagicLoginLink;var i=M.getQueryData();var o=i.referrer?i.referrer:window.location.href;var l={email:e,masterBrand:"HX",urlForEmail:encodeURI(o)};A.post(n.url).set("Content-Type","application/json").send(JSON.stringify({query:n.query.query,variables:l})).withCredentials().then(function(e){if(!e||!e.body||!e.body.data||!e.body.data.requestCustomerMagicLoginLinkEmail){return a()}k();t()})["catch"](a)})};var E=function e(t){var a=arguments.length>1&&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")||b();if(!o||!i)return false;var l=M.getQueryData();var s=l.referrer?l.referrer:"https://"+window.location.host+(a?"/".concat(a):"");return A.get("//static1.holidayextras.com/responsysEmailSignUpProxy.php?EMAIL_ADDRESS_="+o+"&ORIGIN="+encodeURI(s)+"&_ri_="+i+"&charset_=ISO-8859-1"+(r?"&autocreate=1":"")).then(function(e){k();return e})["catch"](function(e){console.log("err",e);return false})};var D=function e(){i({type:"TRIGGER_LOGIN"})};var S=function e(){i({type:"TRIGGER_LOGIN_HIDE"})};return{invalidUser:w,userLogout:t,userLogin:h,userLogoutResponse:r,getLoginConfig:u,getLoginAuthConfig:c,loginGetEmailCookie:b,validateTripappUser:y,loginSubmitMagicLink:T,loginTripappUser:a,validatedTripappUser:f,triggerLogin:D,triggerLoginHide:S,validateTripappUserV2:v,loginSubmitMagicLinkV2:E,loginTripappUserV2:s}};e.exports={mapStateToProps:r,mapDispatchToProps:n}},,,,function(e,t){e.exports=Redux},function(e,t,a){var r=a(55);var n=a(56);var i=a(59);var o=a(60);var l=a(61);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(26);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(26);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,chatMinimized:false});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){var n=function e(){return{forceLogin:false,accountStatus:false,validUser:false}};var a=typeof window!=="undefined"?window.loginReduxState||{}:{};var i=Object.assign({},n(),a);if(a.email){i.accountStatus="active";i.validUser=true}var r=function e(){var t=arguments.length>0&&arguments[0]!==undefined?arguments[0]:i;var a=arguments.length>1?arguments[1]:undefined;switch(a.type){case"LOGOUT":{return Object.assign({},n(),{accountStatus:false,validUser:t.validUser})}case"LOGIN":{var r={accountStatus:"active",validUser:true};if(t.email)r.email=t.email;return Object.assign({},n(),i,a.data,r)}case"LOGIN_FAILED":{return Object.assign({},n(),t,{failedLogin:a.data,accountStatus:"checked_failed",email:t.email,forceLogin:false})}case"VALID_USER":{return Object.assign({},n(),t,{validUser:!!a.data,accountStatus:"checked_valid",email:a.data})}case"INVALID_USER":{return Object.assign({},n(),t,{validUser:false,accountStatus:"checked_invalid",email:a.data})}case"SENT_MAGICLINK":{return Object.assign({},n(),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({},i,n(),t)}}};e.exports=r},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;default:return t}};e.exports=a},function(e,t,a){var r=a(18),n=r.settings;var i=n.orionLb?"":"https://staging.holidayextras.com";e.exports={tripapp:{path:"".concat(i,"/static/")},auth:{login:"".concat(i,"/dock-yard/tripapp-rails/users/sign_in.json"),url:"".concat(i,"/dock-yard/traveller-api/graphql"),logout:"".concat(i,"/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 trip on Trip {\n id\n name\n storedAt\n lag\n to\n from\n departureShortName\n destinationShortName\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 recommendations {\n id\n index\n productType\n readableProductType\n context\n readableContext\n variationBasis\n variationProperties {\n roomTypes: arrayOfTextKey(name: "roomTypes")\n ageOfDriver: intKey(name: "ageOfDriver")\n partyType: textKey(name: "partyType")\n holidayType: textKey(name: "holidayType")\n }\n storedAt\n action {\n type\n value\n }\n countdownContent: content(version: TRIP_COUNTDOWN_EMAIL) {\n heading\n image\n summary\n }\n mobappContent: content(version: MOBILE_APP) {\n heading\n image\n summary\n }\n info {\n url\n minPrice\n discountedMinPrice: minPrice(includingDiscount: true)\n }\n allProducts {\n url\n minPrice\n discountedMinPrice: minPrice(includingDiscount: true)\n }\n products {\n code\n price\n discountedPrice: price(includingDiscount: true)\n discount\n url\n content {\n name\n logo: textKey(name: "images[0].src")\n category: textKey(name: "groupingName")\n numberOfVehicles: textKey(name: "numberOfVehicles")\n timeToDestination: textKey(name: "timeToDestination")\n isRefundable: boolKey(name: "isRefundable")\n }\n watched\n bookWith {\n fastPayInitialScope\n fastPayCarRegScope\n }\n isTopProduct\n }\n travelContent {\n heading\n image\n summary\n ... on RecommendationContentLink {\n url\n }\n ... on RecommendationContentVideo {\n url\n videoProvider\n videoId\n }\n }\n expandWith {\n ... on RecommendationExpansionActionEvent {\n name\n datapointPaths\n }\n }\n expiresAt\n }\n currencyExchangeQuote(sellAmount: 1000) {\n sellAmount\n sellCurrency {\n code\n name\n symbol\n }\n buyAmount\n buyCurrency {\n code\n name\n symbol\n }\n rate\n url\n }\n flights {\n outFlight {\n code\n number\n matched\n departure {\n airportIata\n country\n city\n terminal\n time\n }\n arrival {\n airportIata\n country\n city\n terminal\n time\n }\n }\n returnFlight {\n code\n number\n matched\n departure {\n airportIata\n country\n city\n terminal\n time\n }\n arrival {\n airportIata\n country\n city\n terminal\n time\n }\n }\n }\n }\n\n query {\n getTraveller {\n userExtId\n upcomingTrips {\n ...trip\n }\n liveChatHistory {\n id\n startedAt\n messages {\n id\n recipient\n message\n type\n }\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 }'},userExists:{url:"".concat(i,"/dock-yard/traveller-api/graphql"),query:{query:"query UserExists($email: String!){hasAccount(email: $email)}",variables:{email:""}}},sendMagicLoginLink:{url:"".concat(i,"/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 }"}}}},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:"/customer-login.html",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",yourBookings:"Your bookings",vouchers:{url:"/vouchers.html",label:"Your vouchers"},tripsAndBookings:{url:"/static/#/mytrips",label:"Your trips & bookings",loginUrl:"/customer-login.html?destination=https://www.holidayextras.com/static/%23mytrips"},personalDetails:{url:"/static/?#/users/profile?lang=en",label:"Your personal details"},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(65);var i=a(10);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(9);var d=a(10);var r=a(18),p=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||!t.percentage)return false;if(typeof window==="undefined"||t.percentage<100&&d.getParameterByName("ignoreSplitTests",false)&&!d.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=d.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(!p)return 0;return Number(p[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 x=t.n(n);var i=t(13);var s=t.n(i);var o=function(e){r()(t,e);function t(){return e.apply(this,arguments)||this}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 x.a.createElement("nav",{className:n,role:"navigation"},x.a.createElement("a",{className:"navbar-brand",href:"".concat(a,"://").concat(r)},"Holiday Extras"))};return t}(x.a.Component);var A=o;var l=t(27);var c=t.n(l);var u=t(19);var d=t.n(u);var p=t(10);var m=t.n(p);var f=t(3);var g=t.n(f);var h=t(16);var y=t.n(h);var v=t(11);var b=t.n(v);var w=function(a){r()(e,a);function e(e){var t;t=a.call(this,e)||this;t.state={status:"hidden",statusText:""};return t}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 x.a.createElement("span",{className:n},r)};return e}(x.a.Component);var k=w;var T=t(2);var E=function(e){r()(t,e);function t(){return e.apply(this,arguments)||this}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 x.a.createElement("div",{className:l},x.a.createElement("div",{className:"container-fluid"},x.a.createElement("div",{className:"col-lg-6 col-lg-offset-1 col-md-offset-1 col-sm-offset-1 block-sm"},x.a.createElement("h1",null,r.carrier.name," Flight ",r.code),x.a.createElement("p",{className:"lead"},"From ",g.a.displayCity(n),", ",n.country," To ",g.a.displayCity(i),", ",i.country),x.a.createElement(k,{flightData:this.props.flightData,flightStatus:o})),x.a.createElement("div",{className:"col-lg-3 col-lg-offset-1 col-md-offset-1 col-sm-offset-1 departureInfo"},x.a.createElement("div",{className:"col-lg-12 col-sm-4 block-sm"},x.a.createElement("h5",null,"Flying on:"),x.a.createElement("h3",{className:"text-white"},g.a.formatDateToDMY(new Date(n.dateFull))," @ ",n.time)),x.a.createElement("div",{className:"col-lg-6 col-sm-4 col-xs-6 block-sm"},x.a.createElement("h5",null,"From"),x.a.createElement("h3",{className:"text-white"},g.a.displayCity(n))),x.a.createElement("div",{className:"col-lg-6 col-sm-4 col-xs-6 block-sm"},x.a.createElement("h5",null,"To"),x.a.createElement("h3",{className:"text-white"},g.a.displayCity(i))))))};return t}(x.a.Component);E.propTypes={flightStatus:T["object"]};var C=E;var D=function(e){r()(t,e);function t(){return e.apply(this,arguments)||this}var a=t.prototype;a.generateFlightList=function e(){var t=this.props,a=t.allFlightData,r=t.flightCode;var n=0;if(!a.length)return null;return a.map(function(e){var t=g.a.formatDateToDddMMyy(e);var a="/flight/".concat(r,"/").concat(e.split("T")[0],".html");n++;if(n===1||n>6)return;return x.a.createElement("li",{key:n,className:"list-group-item list-group-item-lg"},x.a.createElement("a",{href:a,rel:"nofollow"},t," @ ",e.split("T")[1].split(":00.000")[0]))})};a.render=function e(){var t=this.props.flightCode;if(t==="")return null;return x.a.createElement("div",{className:"col-md-4"},x.a.createElement("ul",{className:"list-group bg-default"},x.a.createElement("li",{className:"list-group-item list-group-item-lg"},x.a.createElement("h3",{className:"list-group-item-heading"},"Upcoming ",t," Flights"),x.a.createElement("p",{className:"list-group-item-text"},"Click below to start tracking your flight.")),this.generateFlightList(),x.a.createElement("li",{className:"list-group-item list-group-item-lg"},x.a.createElement("a",{href:"#",className:"component-button small primary btn-block picker-invoke"},x.a.createElement("i",{className:"icon icon--calendar"})," Future dates"),x.a.createElement("input",{type:"hidden",className:"hidden",name:"hidden-picker"}))))};return t}(x.a.Component);var _=D;var S=function(e){r()(t,e);function t(){return e.apply(this,arguments)||this}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 x.a.createElement("div",{className:"bg-default"},x.a.createElement("div",{className:"container block-lg"},x.a.createElement("div",{className:"col-xs-12"},x.a.createElement("div",{className:"page-header"},a&&x.a.createElement("h3",{className:"h2"},"Baggage allowance for ",a," Limited"),x.a.createElement("div",{className:"sub-heading"},"Always worth checking luggage and baggage allowances before you travel")),x.a.createElement("div",{className:"col-lg-12"},x.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."),x.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."),x.a.createElement("ul",{className:"list-unstyled"},r&&x.a.createElement("li",{className:"block-xs"},x.a.createElement("h4",null,"Luggage max size:")," ",r),n&&x.a.createElement("li",{className:"block-xs"},x.a.createElement("h4",null,"Luggage max weight:")," ",n),i&&x.a.createElement("li",{className:"block-xs"},x.a.createElement("h4",null,"Max hand luggage bags per person:")," ",i),o&&x.a.createElement("li",{className:"block-xs"},x.a.createElement("h4",null,"Hand luggage max size:")," ",o),l&&x.a.createElement("li",{className:"block-xs"},x.a.createElement("h4",null,"Hand luggage max weight:")," ",l)),s&&x.a.createElement("div",null,x.a.createElement("h4",null,"More information:"),x.a.createElement("p",null,s)),x.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}(x.a.Component);var O=S;var R=function(a){r()(e,a);function e(e){var t;t=a.call(this,e)||this;t.state=t.reset();return t}var t=e.prototype;t.componentDidMount=function e(){this.fetchAll(this.props)};t.componentDidUpdate=function e(t){var a=this.props,r=a.agentData,n=r===void 0?{}:r,i=a.flightData,o=i===void 0?{}:i;var l=t.agentData,s=l===void 0?{}:l;if(s.agent!==n.agent)return this.fetchAll(this.props);if(JSON.stringify(o)!==JSON.stringify(t.flightData)){this.setState(this.reset());this.fetchAll(this.props)}};t.reset=function e(){return{products:{cp:{state:"loading",count:0,cheapestPrice:0},ho:{state:"loading",count:0,cheapestPrice:0},hcp:{state:"loading",count:0,cheapestPrice:0},lo:{state:"loading",count:0,cheapestPrice:0}}}};t.fetchAll=function e(t){this.fetchProducts("cp",t);this.fetchProducts("hcp",t);this.fetchProducts("ho",t);this.fetchProducts("lo",t)};t.fetchProducts=function e(a,t){var r=t.flightData,n=r.departure,i=r.arrival,o=r.flight,l=t.agentData,s=l.agent,c=l.typeRID,u=l.groupCode,d=t.locations,p=t.settings;var m={selectProduct:a,startDate:n.date,agent:s,channel:c,agentgroup:u,Location:n.airport_iata,terminal:n.terminal?n.terminal:false,arrivalTime:i.time?i.time:"12:00",departureTime:n.time?n.time:"13:00",flightCode:o.code};if(!d[d.locationsMap[a]].hasOwnProperty(n.airport_iata))return;var g={};var h=Object(f["buildHapiUrl"])(p,m);g.submitUrl=h.submitUrl;g.state="available";this.setState(function(e){var t=e.products;t[a]=g;return{products:t}})};t.render=function e(){var t=this.state.products,a=t.cp,r=t.ho,n=t.hcp,i=t.lo;var o=this.props,l=o.flightData.departure,s=o.locations,c=o.products;return x.a.createElement("div",{className:"col-md-8"},x.a.createElement("ul",{className:"list-group list-group-lg list-unstyled",id:"productList"},s.carParking[l.airport_iata]&&x.a.createElement("li",{className:"list-group-item-container bg-default"},x.a.createElement("div",{className:c.listItemClass[a.state]},x.a.createElement("div",{className:"row flight-product"},x.a.createElement("i",{className:c.iconClass[a.state]}),x.a.createElement("i",{className:"icon fas fa-parking left-icon hidden-xs"}),x.a.createElement("div",{className:"col-lg-6"},x.a.createElement("h3",{className:"list-group-item-heading"},l.airport," Airport Parking")),a.state==="available"&&x.a.createElement("div",{className:"col-lg-4 product-price"},x.a.createElement("a",{href:a.submitUrl,className:"component-button small primary",target:"_blank"},x.a.createElement("i",{className:"icon icon--search"}),"Search car parking"))))),s.lounges.OptGroupAirport[l.airport_iata]&&x.a.createElement("li",{className:"list-group-item-container bg-default"},x.a.createElement("div",{className:c.listItemClass[i.state]},x.a.createElement("div",{className:"row flight-product"},x.a.createElement("i",{className:c.iconClass[i.state]}),x.a.createElement("i",{className:"icon fas fa-couch left-icon hidden-xs"}),x.a.createElement("div",{className:"col-lg-6"},x.a.createElement("h3",{className:"list-group-item-heading"},l.airport," Airport Lounges")),i.state==="available"&&x.a.createElement("div",{className:"col-lg-4 product-price"},x.a.createElement("a",{href:i.submitUrl,className:"component-button small primary",target:"_blank"},x.a.createElement("i",{className:"icon icon--search"}),"Search lounges"))))),s.hotels[l.airport_iata]&&x.a.createElement("li",{className:"list-group-item-container bg-default"},x.a.createElement("div",{className:c.listItemClass[n.state]},x.a.createElement("div",{className:"row flight-product"},x.a.createElement("i",{className:c.iconClass[n.state]}),x.a.createElement("i",{className:"icon fas fa-suitcase left-icon hidden-xs"}),x.a.createElement("div",{className:"col-lg-6"},x.a.createElement("h3",{className:"list-group-item-heading"},l.airport," Airport Hotels with Parking")),n.state==="available"&&x.a.createElement("div",{className:"col-lg-4 product-price"},x.a.createElement("a",{href:n.submitUrl,className:"component-button small primary",target:"_blank"},x.a.createElement("i",{className:"icon icon--search"})," Search hotels with parking"))))),s.hotels[l.airport_iata]&&x.a.createElement("li",{className:"list-group-item-container bg-default"},x.a.createElement("div",{className:c.listItemClass[r.state]},x.a.createElement("div",{className:"row flight-product"},x.a.createElement("i",{className:c.iconClass[r.state]}),x.a.createElement("i",{className:"icon fas fa-suitcase left-icon hidden-xs"}),x.a.createElement("div",{className:"col-lg-6"},x.a.createElement("h3",{className:"list-group-item-heading"},l.airport," Airport Hotels")),r.state==="available"&&x.a.createElement("div",{className:"col-lg-4 product-price"},x.a.createElement("a",{href:r.submitUrl,className:"component-button small primary",target:"_blank"},x.a.createElement("i",{className:"icon icon--search"})," Search hotels")))))))};return e}(x.a.Component);var G=R;var F=function(e){r()(t,e);function t(){return e.apply(this,arguments)||this}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 x.a.createElement("div",{className:"bg-primary"},x.a.createElement("div",{className:"container block-lg"},x.a.createElement("div",{className:"col-xs-12"},x.a.createElement("div",{className:"page-header"},x.a.createElement("h3",{className:"h2"},"Departure and Destination Airport Information"),x.a.createElement("div",null,"Our useful links below should help you at the airport")),x.a.createElement("div",{className:"col-lg-6"},x.a.createElement("h4",null,g.a.displayCity(a.departure)),x.a.createElement("table",{className:"table"},x.a.createElement("thead",null),x.a.createElement("tbody",null,x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Departure"),x.a.createElement("td",null,a.departure.airport_iata)),a.departure.terminal&&x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Terminal"),x.a.createElement("td",null,o.terminal&&l[a.departure.terminal]&&x.a.createElement("a",{href:o.terminal},l[a.departure.terminal]),!o.terminal&&l[a.departure.terminal])),x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Location"),x.a.createElement("td",null,g.a.displayCity(a.departure),", ",a.departure.country," ")),o.directions&&x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Directions"),x.a.createElement("td",null,x.a.createElement("a",{href:o.directions,title:"Directions to "+a.departure.city+" "+a.departure.airport},"Directions to ",a.departure.city," ",a.departure.airport)," ")),x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Date"),x.a.createElement("td",null,g.a.formatDateToDddMMyy(a.departure.dateFull))),x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Departs Local time"),x.a.createElement("td",null,a.departure.time)),o.departures&&x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Departures"),x.a.createElement("td",null,x.a.createElement("a",{href:o.departures,title:a.departure.city+" "+a.departure.airport+" Departure Board"},a.departure.city," ",a.departure.airport," Departures"))),o.arrivals&&x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Arrivals"),x.a.createElement("td",null,x.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)&&x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Contacts"),x.a.createElement("td",null,o.airlineNumbers&&x.a.createElement("a",{href:o.airlineNumbers},"Airlines"),o.contactNumbers&&x.a.createElement("a",{href:o.contactNumbers},", Airport"))),o.facilities&&x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Facilities"),x.a.createElement("td",null,x.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&&x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Shopping"),x.a.createElement("td",null,x.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&&x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Eating"),x.a.createElement("td",null,x.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&&x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Local Area"),x.a.createElement("td",null,x.a.createElement("a",{href:o.localArea,title:"In & Around "+a.departure.city+" "+a.departure.airport},"In & Around ",a.departure.city," ",a.departure.airport)))))),x.a.createElement("div",{className:"col-lg-6"},x.a.createElement("h4",null,g.a.displayCity(a.arrival)),x.a.createElement("table",{className:"table"},x.a.createElement("thead",null),x.a.createElement("tbody",null,x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Destination"),x.a.createElement("td",null,a.arrival.airport_iata)),x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Location"),x.a.createElement("td",null,o.destination&&x.a.createElement("a",{href:o.destination},g.a.displayCity(a.arrival),", "),a.arrival.country)),x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Date"),x.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&&x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Arrives Local Time"),x.a.createElement("td",null,g.a.formatISOStringToDateTime(r.flightStatuses[0].arrivalDate.dateLocal))),n&&n.daily&&x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Weather Today"),x.a.createElement("td",null,"Partly Cloudy Highs ",Math.floor(n.daily.data[0].temperatureMax),"℃, Lows ",Math.floor(n.daily.data[0].temperatureMin),"℃ ")),i&&x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Currency"),x.a.createElement("td",null,i.currency_name," ",x.a.createElement("a",{target:"_blank",href:"http://holidayextras.currencyandmore.com"},"Order Currency"))),i&&x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Language"),x.a.createElement("td",null,i.language)),x.a.createElement("tr",null,x.a.createElement("th",{scope:"row"},"Lonely Planet"),x.a.createElement("td",null,x.a.createElement("a",{href:s,target:"_blank"},"Guide")," "))))))))};return t}(x.a.Component);var Z=F;var U=t(21);var L=t.n(U);var N=t(17);var H=function(a){r()(e,a);function e(e){var t;t=a.call(this,e)||this;t.state={allMarkers:[],markers:[],polyline:[]};t.createMarkersAndPolyline=t.createMarkersAndPolyline.bind(L()(t));t.insertPolyline=t.insertPolyline.bind(L()(t));t.insertMarkers=t.insertMarkers.bind(L()(t));return t}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[x.a.createElement(N["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(x.a.createElement(N["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 x.a.createElement("div",{id:"theMap"},x.a.createElement(N["StaticGoogleMap"],{scale:"2",size:"640x165",apiKey:"AIzaSyBABuXTOM9ZyVExDMrz748ooMMOIfzOlq0",style:{width:"100%"}},x.a.createElement(N["Marker"].Group,{label:"Airports",size:"tiny"},a),r))};return e}(x.a.PureComponent);var j=H;var P=function e(t){return x.a.createElement("div",{className:"bg-default"},x.a.createElement("div",{className:"container block-lg"},x.a.createElement("div",{className:"col-xs-12"},x.a.createElement("div",{className:"page-header"},x.a.createElement("h3",{className:"h2"},t.title),x.a.createElement("div",{className:"sub-heading"},t.description)),x.a.createElement("div",{className:"col-lg-12",dangerouslySetInnerHTML:{__html:t.content}}))))};P.propTypes={title:T["string"],description:T["string"],content:T["string"]};var W=P;var I=function(e){r()(t,e);function t(){return e.apply(this,arguments)||this}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 x.a.createElement("div",{className:"component-weather",key:t.time},x.a.createElement("div",{className:n[t.icon]},x.a.createElement("span",null,t.summary)),x.a.createElement("div",null,b.a.getFullDay(a.getDay())),x.a.createElement("div",null,x.a.createElement("span",null,"High ",Math.floor(t.temperatureMax)),x.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 x.a.createElement("section",{className:"trip-weather"},x.a.createElement("div",{className:"block-md bg-primary"},x.a.createElement("div",{className:"container"},x.a.createElement("div",{className:"col-sm-4 block-sm"},x.a.createElement("div",{className:"page-header"},x.a.createElement("h3",{className:"h1"},"Weather"),x.a.createElement("div",null,"The next six days in ",a,", ",r,"."))),x.a.createElement("div",{className:"col-sm-8 block-sm"},x.a.createElement("div",{className:"weather-components col-xs-12"},i)))))};return t}(x.a.Component);I.getDefaultProps={city:"",country:""};var V=I;var K=function e(){return x.a.createElement("footer",{className:"footer bg-secondary hidden-print"},x.a.createElement("div",{className:"block-md bg-primary"},x.a.createElement("div",{className:"container"},x.a.createElement("div",{className:"row"},x.a.createElement("div",{className:"col-xs-12"},x.a.createElement("h5",null,"Disclaimer"),x.a.createElement("p",{className:"small"},x.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.")))))),x.a.createElement("div",{className:"footer-bottom block-sm small"},x.a.createElement("div",{className:"container"},x.a.createElement("div",{className:"row"},x.a.createElement("div",{className:"col-sm-7"},x.a.createElement("ul",{className:"list-inline footer-links block-xs"},x.a.createElement("li",null,x.a.createElement("a",{href:"/privacy.html"},"Privacy Policy")))),x.a.createElement("div",{className:"col-sm-5 block-xs text-sm-right"},x.a.createElement("span",null,"© ",(new Date).getFullYear()," Holiday Extras Ltd"))))))};var Y=K;var B=function(a){r()(e,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}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";d.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,d=t.terminalConvert;var p=i.flightData,m=p===void 0?{}:p,g=i.flightContent,h=g===void 0?{}:g,f=i.flightStats,y=f===void 0?{}:f,v=i.arrivalInfo,b=v===void 0?{}:v,w=i.flightLinks,k=w===void 0?{}:w,T=i.weather,E=T===void 0?{}:T,D=i.airlineInfo,S=D===void 0?{}:D;var L=!!(Array.isArray(E)||E==="[]");var N=Object.assign({},l,{locationsMap:{cp:"carParking",ho:"hotels",hcp:"hotels",lo:"loungeCodes"}});return x.a.createElement("div",null,x.a.createElement(A,{domainSettings:o,noHeHaButton:true}),x.a.createElement(C,{flightData:m,flightStatus:u}),x.a.createElement("div",{className:"container block-sm"},x.a.createElement(G,{flightData:m,agentData:a,locations:N,products:s,settings:r}),m.flight&&m.flight.code&&x.a.createElement(_,{flightCode:m.flight.code,allFlightData:m.futureDepartures,settings:r})),Object.prototype.hasOwnProperty.call(y,"appendix")&&Object.prototype.hasOwnProperty.call(y.appendix,"appendix")&&x.a.createElement(j,{airports:y.appendix.airports}),x.a.createElement(Z,{flightData:m,flightStats:y,weatherData:E,arrivalInfo:b,flightLinks:k,terminalConvert:d}),S&&x.a.createElement(O,{airlineInformation:S}),!L&&E&&m.arrival&&x.a.createElement(V,{weatherData:E,country:m.arrival.country,city:m.arrival.city,weatherIcons:c}),Object.keys(h).length!==0&&x.a.createElement(W,{title:h.title,description:h.description,content:h.content}),x.a.createElement(Y,null))};return e}(x.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 z=e["default"]=c()(B,["agents","login"])}]);