PageSourceSearch

https://www.hrs.com/_next/static/chunks/36994-87a651249e1016d2.js?dpl=dpl_9iDdr5MT7qwppHi4eF9XC79FtQRt

js hrs.com collected 2026-09-24 17:40:59 UTC 29,463 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[36994],{15102:(e,t,a)=>{a.d(t,{Hw:()=>s,vy:()=>r,zM:()=>i,zs:()=>n}),a(16734);let o=["google","bing","yahoo","baidu","yandex","duckduckgo","ecosia"],r=0x18a3cce5;function n(){return!function(){let e=s();return void 0!==e&&e!==r}()&&o.some(e=>{var t,a;return null==(a=document)||null==(t=a.referrer)?void 0:t.includes(e)})}function i(){return s()||r}function s(){for(let[e,t]of new URLSearchParams(window.location.search).entries())if("customerid"===e.toLowerCase())return parseInt(t,10)}},15521:(e,t,a)=>{a.d(t,{W:()=>o});var o=function(e){return e.NonCancellable="NonCancellable",e.PartiallyCancellable="PartiallyCancellable",e.FullyCancellable="FullyCancellable",e.FullyCanceled="FullyCanceled",e}({})},24247:(e,t,a)=>{a.d(t,{X:()=>r});var o=a(79342);class r{static mapOccupancy(e){var t,a,o,n;return e?{numberOfAdults:null!=(o=null==(t=e.adults)?void 0:t.length)?o:1,children:null!=(n=null==(a=e.children)?void 0:a.map(e=>({age:e.age,type:r.mapChildAccommodationType(e.accommodation)})))?n:[]}:{numberOfAdults:1,children:[]}}static mapChildAccommodationType(e){switch(e){case"EXTRA_BED":default:return o.A.ExtraBed;case"PARENTS_BED":return o.A.ParentsBed;case"SEPARATE_ROOM":return o.A.SeperateRoom}}}},28594:(e,t,a)=>{a.d(t,{o:()=>o});var o=function(e){return e.UNKNOWN="UNKNOWN",e.BREAKFAST="BREAKFAST",e.HALF_BOARD="HALF_BOARD",e.FULL_BOARD="FULL_BOARD",e.ALL_INCLUSIVE="ALL_INCLUSIVE",e}({})},42778:(e,t,a)=>{a.d(t,{D0:()=>i,Fh:()=>n,GP:()=>r,oL:()=>o});var o=function(e){return e.overall="overall",e.pricePerformanceRatio="pricePerformanceRatio",e.hotelAmbiance="hotelAmbiance",e.hotelTidiness="hotelTidiness",e.friendlinessOfReception="friendlinessOfReception",e.serviceOfHotelEmployees="serviceOfHotelEmployees",e.breakfastService="breakfastService",e.restaurantService="restaurantService",e.wellnessRanking="wellnessRanking",e.roomSize="roomSize",e.roomConfiguration="roomConfiguration",e.qualityOfBeds="qualityOfBeds",e.sanitaryFacilities="sanitaryFacilities",e}({});let r=["pricePerformanceRatio","hotelAmbiance","friendlinessOfReception","serviceOfHotelEmployees","hotelTidiness"],n=["breakfastService","restaurantService","wellnessRanking"],i=["roomSize","roomConfiguration","qualityOfBeds","sanitaryFacilities"]},45399:(e,t,a)=>{a.d(t,{x:()=>i});var o=a(28594),r=a(64549),n=a(15521);function i(e){let t,a;if(0===e.length)return;let i=0,s=0,c=0,l=0,u=0,d=0,E=!1,R=!1,g=!1,p=!1,m=0,N=0,{freeCancellation:A,mealAvailability:T,mealType:_,noPrepayment:O,cancelDeadline:I}=e[0].rate,{currency:C}=e[0].rate.totalPrice,h=e.findIndex(e=>e.rate.isBusinessRateAvailable&&e.rate.businessTravellerAveragePrice)>=0,S=!h&&e.findIndex(e=>e.rate.isBusinessRateAvailable)>=0,v=[],L=0,y=0,f=!0,P=!0,b=0,D="";return e.forEach(e=>{let a="bookingStatus"in e?e.bookingStatus:void 0;if("CANCELLED"!==a){var n;s+=e.rate.totalPrice.amount,c+=(null==(n=e.rate.totalWasPrice)?void 0:n.amount)?e.rate.totalWasPrice.amount:0}l+=e.rate.pricePerNight.amount,L+=e.rate.loyaltyPoints,e.rate.isBusinessRateAvailable&&e.rate.businessTravellerAveragePrice&&e.rate.businessTravellerTotalPrice?(u+=e.rate.businessTravellerTotalPrice.amount,d+=e.rate.businessTravellerAveragePrice.amount):(u+=e.rate.totalPrice.amount,d+=e.rate.pricePerNight.amount),e.rate.breakfastPrice&&(m+=e.rate.breakfastPrice.amount),i+=1,e.rate.freeCancellation&&"CANCELLED"!==a||(A=!1),e.rate.freeCancellation&&(P=!1),"CANCELLED"!==a&&(f=!1),!1===e.rate.noPrepayment&&(O=!1),e.rate.creditCardRequired&&(R=!0),e.rate.cvvRequired&&(p=!0),e.rate.guaranteePossible&&(g=!0),e.rate.isBusinessRate&&(E=!0),e.rate.cancelDeadline<I&&(I=e.rate.cancelDeadline),e.rate.cancellationDescription&&(t=e.rate.cancellationDescription),e.rate.mealAvailability!==T&&(T=r.J.Unknown),e.rate.mealType!==_&&(_=o.o.UNKNOWN),e.rate.taxes.forEach(e=>{v.find(t=>t.type===e.type&&t.included===e.included)||v.push(e)}),y+=e.rate.occupancy.numberOfAdults+e.rate.occupancy.children.length,e.rate.cancelFee&&(b+=e.rate.cancelFee.amount,D=e.rate.cancelFee.currency)}),a=f?n.W.FullyCanceled:A?n.W.FullyCancellable:P?n.W.NonCancellable:n.W.PartiallyCancellable,m&&e.length>0&&(N=m/e.length),R&&(g=!1),{totalPrice:{amount:s,currency:C},totalUndiscountedPrice:{amount:c,currency:C},calculatedTotalDiscount:{amount:c-s,currency:C},hiddenUnlockableBusinessRate:S,isBusinessRate:E,totalPriceLockedBusinessRate:h?{amount:u,currency:C}:void 0,breakfastPrice:{amount:N,currency:C},pricePerNightLockedBusinessRate:h?{amount:d/i,currency:C}:void 0,pricePerNight:{amount:l/i,currency:C},vat:{amount:0,currency:"EUR"},mealAvailability:T,mealType:_,cancelDeadline:I,freeCancellation:A,cancelOption:a,cancelFee:b?{amount:b,currency:D}
1:void 0,cancellationDescription:t,noPrepayment:O,creditCardRequired:R,guarantyPossible:g,cvvRequired:p,taxes:v,defaultTaxes:e.findIndex(e=>e.rate.defaultTaxes)>=0,totalBreakfastPrice:{amount:m,currency:C},totalLoyaltyPoints:L,numberOfPersons:y,numberOfRooms:e.length}}},64549:(e,t,a)=>{a.d(t,{J:()=>o});var o=function(e){return e.Unknown="UNKNOWN",e.Inclusive="INCLUSIVE",e.Exclusive="EXCLUSIVE",e.NotAvailable="NOT_AVAILABLE",e}({})},72246:(e,t,a)=>{a.d(t,{A:()=>o});var o=function(e){return e.UNKNOWN="UNKNOWN",e.ALLHRS="ALLHRS",e.BUSINESS="BUSINESS",e.YOUNG_COUPLE="YOUNG_COUPLE",e.CONFERENCE="CONFERENCE",e.MATURE_COUPLE="MATURE_COUPLE",e.FAMILY_SMALL_CHILDREN="FAMILY_SMALL_CHILDREN",e.FAMILY_OLDER_CHILDREN="FAMILY_OLDER_CHILDREN",e.GROUP="GROUP",e.COMPANY="COMPANY",e.PRIVATE="PRIVATE",e}({})},81634:(e,t,a)=>{a.d(t,{V:()=>o});var o=function(e){return e.UP_TO_29="UP_TO_29",e.UP_TO_39="UP_TO_39",e.UP_TO_49="UP_TO_49",e.UP_TO_59="UP_TO_59",e.OVER_59="OVER_59",e.UNKNOWN="UNKNOWN",e}({})},88558:(e,t,a)=>{a.d(t,{s:()=>m});var o=a(16734),r=a.n(o),n=a(16752),i=a(69406),s=a(84713),c=a(42778),l=a(72246);class u{static mapHotelRatings(e){var t,a;let o;if(!e)return{ratings:[],averageRatings:[]};let r=this.mapWebRatings(e.webRatings,e.hotelId),n=this.mapExtAvgRatings(null==(t=e.extAvgRatings)?void 0:t.averageRating);if(null==(a=e.extAvgRatings)?void 0:a.averageRating.valuesByCategory){let t=e.extAvgRatings.averageRating.valuesByCategory;o={valuesByCategory:Object.values(l.A).reduce((e,a)=>(e[a]=Object.values(c.oL).reduce((e,o)=>{var r,n;let i=this.mapVoteType(o);return e[o]=void 0!==i&&null!=(n=null==(r=t[a])?void 0:r[i])?n:0,e},{}),e),{})}}return{ratings:r,averageRatings:n,ratingDetail:o}}static mapRatingsOverview(e){return e&&e.content&&0!==e.content.length?e.content.map(e=>({booking:e.bookingDetails,ratings:e.ratings?e.ratings.map(e=>this.mapRatingsOverviewServiceRating(e)):[]})):[]}static mapRatingsOverviewServiceRating(e){return{bookingId:e.bookingId,locale:e.locale,date:e.ratingDate,guestDisplayName:e.guestDisplayName,guestNegativeComment:e.guestNegativeComment,guestPositiveComment:e.guestPositiveComment,guestPersonType:this.mapBrokenTravellerType(e.ratingPersonGroup),guestAgeType:e.ratingPersonAgeGroup,hotelRecommendation:e.hotelRecommendation,ratio:e.averageRating,votes:this.mapVotes(e.ratingVotes)}}static mapWebRatings(e,t){return e&&0!==e.length?e.filter(e=>void 0!==e.ratingVotes).map(e=>{var a,o,r,n,s;let c=this.mapVotes(e.ratingVotes),u=this.mapBrokenTravellerType(e.ratingPersonGroup);return u===l.A.UNKNOWN&&i.Vy.log({message:"Traveller type is UNKNOWN, this should not happen",source:i._q.HotelRatingsService,hotelId:t}),{travellerName:null!=(a=e.guestDisplayName)?a:"",travellerType:u,date:e.ratingDate,locale:e.locale,guestNegativeComment:null!=(o=e.guestNegativeComment)?o:"",guestPositiveComment:null!=(r=e.guestPositiveComment)?r:"",hotelNegativeComment:null!=(n=e.hotelNegativeComment)?n:"",hotelPositiveComment:null!=(s=e.hotelPositiveComment)?s:"",hotelRecommendation:e.hotelRecommendation,ratio:e.averageRating,filtered:!1,votes:c}}).filter(e=>e.travellerType!==l.A.UNKNOWN):[]}static mapVoteType(e){switch(e){case c.oL.pricePerformanceRatio:return"PRICE_PERFORMANCE_RATIO";case c.oL.hotelAmbiance:return"HOTEL_AMBIANCE";case c.oL.hotelTidiness:return"HOTEL_TIDINESS";case c.oL.friendlinessOfReception:return"FRIENDLINESS_OF_RECEPTION";case c.oL.serviceOfHotelEmployees:return"SERVICE_OF_HOTEL_EMPLOYEES";case c.oL.breakfastService:return"BREAKFAST_SERVICE";case c.oL.restaurantService:return"RESTAURANT_SERVICE";case c.oL.wellnessRanking:return"WELLNESS_RANKING";case c.oL.roomSize:return"ROOM_SIZE";case c.oL.roomConfiguration:return"ROOM_CONFIGURATION";case c.oL.qualityOfBeds:return"QUALITY_OF_BEDS";case c.oL.sanitaryFacilities:return"SANITARY_FACILITIES";case c.oL.overall:default:return}}static mapBrokenTravellerType(e){switch(e.toLocaleUpperCase()){case"UNKNOWN":return l.A.UNKNOWN;case"ALLHRS":return l.A.ALLHRS;case"COMPANY":return l.A.COMPANY;case"CONFERENCE":return l.A.CONFERENCE;case"FAMILY_OLDER_CHILDREN":return l.A.FAMILY_OLDER_CHILDREN;case"FAMILY_SMALL_CHILDREN":return l.A.FAMILY_SMALL_CHILDREN;case"GROUP":return l.A.GROUP;case"MATURE_COUPLE":return l.A.MATURE_COUPLE;case"YOUNG_COUPLE":return l.A.YOUNG_COUPLE;case"PRIVATE":default:return l.A.PRIVATE;case"BUSINESS":return l.A.BUSINESS}}static mapVotes(e){if(!e)return[];let t=[];return e.HOTEL_TIDINESS>=0&&t.push({vote:e.HOTEL_TIDINESS,type:c.oL.hotelTidiness}),e.PRICE_PERFORMANCE_RATIO>=0&&t.push({vote:e.PRICE_PERFORMANCE_RATIO,type:c.oL.pricePerformanceRatio}),e.HOTEL_AMBIANCE>=0&&t.push({vote:e.HOTEL_AMBIANCE,type:c.oL.hotelAmbiance}),e.FRIENDLINESS_OF_RECEPTION>=0&&t.push({vote:e.FRIENDLINESS_OF_RECEPTION,type:c.oL.friendlinessOfReception}),e.BREAKFAST_SERVICE>=0&&t.push({vote:e.BREAKFAST_SERVICE,type:c.oL.breakfastService}),e.QUALITY_OF_BEDS>=0&&t.push({vote:e.QUALITY_OF_BEDS,type:c.oL.qualityOfBeds}),e.RESTAURANT_SERVICE>=0&&t.push({vote:e.RESTAURANT_SERVICE,type:c.oL.restaurantService}),e.ROOM_CONFIGURATION>=0&&t.push({vote:e.ROOM_CONFIGURATION,type:c.oL.roomConfiguration}),e.ROOM_SIZE>=0&&t.push({vote:e.ROOM_SIZE,type:c.oL.roomSize}),e.SANITARY_FACILITIES>=0&&t.push({vote:e.SANITARY_FACILITIES,type:c.oL.sanitaryFacilities}),e.SERVICE_OF_HOTEL_EMPLOYEES>=0&&t.push({vote:e.SERVICE_OF_HOTEL_EMPLOYEES,type:c.oL.serviceOfHotelEmployees}),e.WELLNESS_RANKING>=0&&t.push({vote:e.WELLNESS_RANKING,type:c.oL.wellnessRanking}),t}static mapExtAvgRatings(e){if(!e)return[];let t=[];return Object.keys(l.A).forEach(a=>{var o,r,n,i,s,c,u,d,E,R,g,p,m,N,A,T,_,O,I,C;switch(a){case l.A.ALLHRS:t.push({travellerType:a,rating:null==(o=e.ratings)?void 0:o.ALLHRS,hotelRecommendationRatio:null==(r=e.percentagedRecommendationRates)?void 0:r.ALLHRS});break;case l.A.BUSINESS:t.push({travellerType:a,rating:null==(n=e.ratings)?void 0:n.BUSINESS,hotelRecommendationRatio:null==(i=e.percentagedRecommendationRates)?void 0:i.BUSINESS});break;case l.A.COMPANY:t.push({travellerType:a,rating:null==(s=e.ratings)?void 0:s.COMPANY,hotelRecommendationRatio:null==(c=e.percentagedRecommendationRates)?void 0:c.COMPANY});break;case l.A.CONFERENCE:t.push({travellerType:a,rating:null==(u=e.ratings)?void 0:u.CONFERENCE,hotelRecommendationRatio:null==(d=e.percentagedRecommendationRates)?void 0:d.CONFERENCE});break;case l.A.FAMILY_OLDER_CHILDREN:t.push({travellerType:a,rating:null==(E=e.ratings)?void 0:E.FAMILY_OLDER_CHILDREN,hotelRecommendationRatio:null==(R=e.percentagedRecommendationRates)?void 0:R.FAMILY_OLDER_CHILDREN});break;case l.A.FAMILY_SMALL_CHILDREN:t.push({travellerType:a,rating:null==(g=e.ratings)?void 0:g.FAMILY_SMALL_CHILDREN,hotelRecommendationRatio:null==(p=e.percentagedRecommendationRates)?void 0:p.FAMILY_SMALL_CHILDREN});break;case l.A.GROUP:t.push({travellerType:a,rating:null==(m=e.ratings)?void 0:m.GROUP,hotelRecommendationRatio:null==(N=e.percentagedRecommendationRates)?void 0:N.GROUP});break;case l.A.MATURE_COUPLE:t.push({travellerType:a,rating:null==(A=e.ratings)?void 0:A.MATURE_COUPLE,hotelRecommendationRatio:null==(T=e.percentagedRecommendationRates)?void 0:T.MATURE_COUPLE});break;case l.A.PRIVATE:t.push({travellerType:a,rating:null==(_=e.ratings)?void 0:_.PRIVATE,hotelRecommendationRatio:null==(O=e.percentagedRecommendationRates)?void 0:O.PRIVATE});break;case l.A.YOUNG_COUPLE:t.push({travellerType:a,rating:null==(I=e.ratings)?void 0:I.YOUNG_COUPLE,hotelRecommendationRatio:null==(C=e.percentagedRecommendationRates)?void 0:C.YOUNG_COUPLE});case l.A.UNKNOWN:}}),t}}var d=a(81634),E=function(e){return e.FRIENDLINESS_OF_RECEPTION="FRIENDLINESS_OF_RECEPTION",e.SERVICE_OF_HOTEL_EMPLOYEES="SERVICE_OF_HOTEL_EMPLOYEES",e.HOTEL_AMBIANCE="HOTEL_AMBIANCE",e.HOTEL_CONFIGURATION="HOTEL_CONFIGURATION",e.ROOM_CONFIGURATION="ROOM_CONFIGURATION",e.HOTEL_TIDINESS="HOTEL_TIDINESS",e.SANITARY_FACILITIES="SANITARY_FACILITIES",e.ROOM_SIZE="ROOM_SIZE",e.BREAKFAST_SERVICE="BREAKFAST_SERVICE",e.RESTAURANT_SERVICE="RESTAURANT_SERVICE",e.PRICE_PERFORMANCE_RATIO="PRICE_PERFORMANCE_RATIO",e.COMFORTABLENESS="COMFORTABLENESS",e.RANKING_CLASSIFICATION="RANKING_CLASSIFICATION",e.USER_RANKING="USER_RANKING",e.WELLNESS_RANKING="WELLNESS_RANKING",e.PACKAGE_SERVICE="PACKAG
1E_SERVICE",e.SOUNDPROOFING_OF_ROOMS="SOUNDPROOFING_OF_ROOMS",e.QUALITY_OF_BEDS="QUALITY_OF_BEDS",e.WOULD__YOU__RECOMMEND__THIS__HOTEL="WOULD__YOU__RECOMMEND__THIS__HOTEL",e.DID__THE__HOTEL__MEET__YOUR__EXPECTATIONS="DID__THE__HOTEL__MEET__YOUR__EXPECTATIONS",e}({}),R=function(e){return e.POSITIVE_NOTES="POSITIVE_NOTES",e.NEGATIVE_NOTES="NEGATIVE_NOTES",e.HOTEL_COMMENT_POSITIVE_NOTES="HOTEL_COMMENT_POSITIVE_NOTES",e.HOTEL_COMMENT_NEGATIVE_NOTES="HOTEL_COMMENT_NEGATIVE_NOTES",e}({});class g{static map(e){var t,a;let o=[];e.positiveComment&&o.push({textType:R.POSITIVE_NOTES,value:e.positiveComment}),e.negativeComment&&o.push({textType:R.NEGATIVE_NOTES,value:e.negativeComment});let r=[{type:E.WOULD__YOU__RECOMMEND__THIS__HOTEL,value:+!!e.hotelRecommendation}];return e.votes&&e.votes.map(e=>({type:this.mapToRatingCategory(e.type),value:e.vote})).filter(e=>void 0!==e.type).forEach(e=>{r.push({type:e.type,value:e.value})}),{markBaseTen:r,guestPersonType:null!=(t=e.guestPersonType)?t:l.A.UNKNOWN,guestAgeType:null!=(a=e.guestAgeType)?a:d.V.UNKNOWN,guestDisplayName:e.guestDisplayName,guestComment:o,ratingParameters:{bookingId:isNaN(Number(e.bookingId))?0:Number(e.bookingId),bookingProcessId:isNaN(Number(e.bookingProcessId))?0:Number(e.bookingProcessId),accessCode:e.accessCode}}}static mapToRatingCategory(e){switch(e){case c.oL.pricePerformanceRatio:return E.PRICE_PERFORMANCE_RATIO;case c.oL.hotelAmbiance:return E.HOTEL_AMBIANCE;case c.oL.hotelTidiness:return E.HOTEL_TIDINESS;case c.oL.friendlinessOfReception:return E.FRIENDLINESS_OF_RECEPTION;case c.oL.serviceOfHotelEmployees:return E.SERVICE_OF_HOTEL_EMPLOYEES;case c.oL.breakfastService:return E.BREAKFAST_SERVICE;case c.oL.restaurantService:return E.RESTAURANT_SERVICE;case c.oL.wellnessRanking:return E.WELLNESS_RANKING;case c.oL.roomSize:return E.ROOM_SIZE;case c.oL.roomConfiguration:return E.ROOM_CONFIGURATION;case c.oL.qualityOfBeds:return E.QUALITY_OF_BEDS;case c.oL.sanitaryFacilities:return E.SANITARY_FACILITIES;default:return}}}class p{static map(e){return(null==e?void 0:e.intCategories)?e.intCategories.map(e=>this.mapToHotelRatingVoteType(e.type)).filter(e=>void 0!==e):[]}static mapToHotelRatingVoteType(e){switch(e){case E.PRICE_PERFORMANCE_RATIO:return c.oL.pricePerformanceRatio;case E.HOTEL_AMBIANCE:return c.oL.hotelAmbiance;case E.HOTEL_TIDINESS:return c.oL.hotelTidiness;case E.FRIENDLINESS_OF_RECEPTION:return c.oL.friendlinessOfReception;case E.SERVICE_OF_HOTEL_EMPLOYEES:return c.oL.serviceOfHotelEmployees;case E.BREAKFAST_SERVICE:return c.oL.breakfastService;case E.RESTAURANT_SERVICE:return c.oL.restaurantService;case E.WELLNESS_RANKING:return c.oL.wellnessRanking;case E.ROOM_SIZE:return c.oL.roomSize;case E.ROOM_CONFIGURATION:return c.oL.roomConfiguration;case E.QUALITY_OF_BEDS:return c.oL.qualityOfBeds;case E.SANITARY_FACILITIES:return c.oL.sanitaryFacilities;default:return}}}class m{static async get(e){let t=n.T.apiConfig.hotelRatingEndpoint,a={ratings:[],averageRatings:[]},o="".concat(t,"/v2/ratings/web/extended?hotelIds=").concat(e,"&options.personGroup=ALLHRS"),r=new Headers;return r.append("Content-Type","application/json"),r.append("Accept-Encoding","gzip"),r.append("x-client-id",(0,s.Jf)()),fetch(o,{method:"GET",redirect:"follow",headers:r,signal:AbortSignal.timeout&&AbortSignal.timeout(6e3)}).then(e=>e.ok?e.json():((0,s.YT)(e,o,{source:i._q.HotelRatingsService,method:"get"}),a)).then(e=>e).then(e=>e&&e.length>0?u.mapHotelRatings(e[0]):a).catch(e=>(i.Vy.error(e,{source:i._q.HotelRatingsService,method:"get"}),a))}static async getBookingsWithRatings(e){let t="".concat(n.T.apiConfig.hotelRatingEndpoint,"/v2/ratings/inventory/exist-for-booking?id=").concat(e.join(","));return fetch(t,{method:"GET",redirect:"follow",headers:{"Content-Type":"application/json","Accept-Encoding":"gzip","x-client-id":(0,s.Jf)()},signal:AbortSignal.timeout&&AbortSignal.timeout(6e3)}).then(e=>e.ok?e.json():((0,s.YT)(e,t,{source:i._q.HotelRatingsService,method:"getBookingsWithRatings"}),{})).then(e=>e).catch(e=>(i.Vy.error(e,{endpoint:t,source:i._q.HotelRatingsService,method:"getBookingsWithRatings"}),{}))}static async getCustomerRatings(e){let t=r()().format("YYYY-MM-DD"),a=r()().subtract(1,"year").format("YYYY-MM-DD"),o="".concat(n.T.apiConfig.hotelRatingEndpoint,"/v2/ratings/overview?filterByBrand=true&arrivalDateFrom=").concat(a,"&arrivalDateTo=").concat(t);return fetch(o,{method:"GET",redirect:"follow",headers:{"Content-Type":"application/json","Accept-Encoding":"gzip","x-client-id":(0,s.Jf)(),Authorization:"Bearer ".concat(e)}}).then(async e=>e.ok?e.json():((0,s.YT)(e,o,{source:i._q.HotelRatingsService,method:"getCustomerRatings"}),[])).then(e=>e).then(e=>u.mapRatingsOverview(e)).catch(e=>(i.Vy.error(e,{source:i._q.HotelRatingsService,method:"getCustomerRatings"}),[]))}static async getValidVoteTypes(e,t,a){let o="".concat(n.T.apiConfig.hotelRatingEndpoint,"/v2/ratings/inventory/types?bookingProcessId=").concat(e,"&bookingId=").concat(t,"&accessCode=").concat(a);return fetch(o,{method:"GET",redirect:"follow",headers:{"Content-Type":"application/json","Accept-Encoding":"gzip","x-client-id":(0,s.Jf)()},signal:AbortSignal.timeout&&AbortSignal.timeout(6e3)}).then(e=>{if(!e.ok){404!==e.status&&(0,s.YT)(e,o,{source:i._q.HotelRatingsService,method:"getValidVoteTypes"});return}return e.json()}).then(e=>e).then(e=>p.map(e)).catch(e=>(i.Vy.error(e,{source:i._q.HotelRatingsService,method:"getValidVoteTypes"}),[]))}static async submitCustomerRating(e){let t=g.map(e),a="".concat(n.T.apiConfig.hotelRatingEndpoint,"/v2/ratings/inventory");return fetch(a,{method:"POST",headers:{"Content-Type":"application/json","Accept-Encoding":"gzip","x-client-id":(0,s.Jf)()},body:JSON.stringify(t)}).then(t=>t.ok?(i.Vy.log({source:i._q.HotelRatingsService,method:"submitCustomerRating",message:"Rating submitted successfully",bookingId:e.bookingId,bookingProcessId:e.bookingProcessId}),!0):((0,s.YT)(t,a,{source:i._q.HotelRatingsService,method:"submitCustomerRating",bookingId:e.bookingId,bookingProcessId:e.bookingProcessId}),!1)).catch(t=>(i.Vy.error(t,{source:i._q.HotelRatingsService,method:"submitCustomerRating",bookingId:e.bookingId,bookingProcessId:e.bookingProcessId}),!1))}}},95690:(e,t,a)=>{a.d(t,{f:()=>m});var o=a(69406),r=a(16752),n=a(16734),i=a.n(n),s=a(84713);class c{static async getPaymentMethods(e,t){let a=[],n="".concat(r.T.apiConfig.btcPayEndpoint,"/v1/payment-method?accessCode=").concat(e,"&bookingProcessId=").concat(t);return fetch(n,{method:"GET",redirect:"follow",headers:this.getHeaders()}).then(e=>e.ok?e.json():((0,s.YT)(e,n,{source:o._q.BtcPayService}),a)).then(e=>e).then(e=>this.mapCreditCards(e)).catch(e=>(o.Vy.error(e,{source:o._q.BtcPayService,status:-2,url:n}),a))}static getHeaders(){let e=new Headers;return e.append("Content-Type","application/json"),e.append("Accept-Encoding","gzip"),e.a
1ppend("x-client-id",(0,s.Jf)()),e}static mapCreditCards(e){return e.map(e=>({type:this.mapCardType(e.brand),holder:"",validUntil:"".concat(e.expiredMonth.toString().padStart(2,"0"),"/").concat(e.expiredYear.toString().slice(-2).padStart(2,"0")),creditCardNumber:e.last4})).filter(e=>void 0!==e.type)}static mapCardType(e){switch(e){case"amex":return"AMERICAN_EXPRESS";case"diners":return"DINERS";case"discover":return"DISCOVER";case"jcb":return"JCB";case"mastercard":return"MASTERCARD";case"unionpay":return"CHINA_UNION_PAY";case"visa":return"VISA";default:o.Vy.error("Failed to map brand type: ".concat(e),{source:o._q.BtcPayService});return}}}var l=a(80549),u=a(32384),d=a(64549),E=a(45399),R=a(27560),g=a(24247);class p{static map(e){var t,a,o,r,n;if(!e)return;let i=e.bookingsByRoomRequests.map(e=>this.mapBooking(e)),s=null==(t=e.bookingProcessCustomAttributes)?void 0:t.smartPayType,c=i.some(e=>e.rate.isModifiable)&&i.every(e=>"HRS"===e.rate.crsType),l=(0,E.x)(i),u=e.personId>0;return{arrival:e.aggregatedDateRange.fromDate,departure:e.aggregatedDateRange.toDate,processNumber:e.bookingProcessId,accessCode:e.bookingProcessPassword,bookingState:e.aggregatedBookingState,hotelId:e.hotelId,customer:{firstName:e.orderer.personName.firstName,lastName:e.orderer.personName.lastName,email:e.orderer.email,phoneNumber:{callNumber:null!=(r=null==(a=e.orderer.phoneNumber)?void 0:a.callNumber)?r:"",countryCode:null!=(n=null==(o=e.orderer.phoneNumber)?void 0:o.countryCode)?n:""}},billingAddress:this.mapBillingAddress(e.billingAddress),itemGuestUnits:i,summary:l,smartPayType:s,isBtcPay:"BTC_PAY"===s||"PAPERLESS_BTC_PAY"===s,creditCard:this.mapCreditCard(e.paymentMeans),totalPrice:e.aggregatedTotalPrice,isBookingAnonymous:!u,isModifiable:c}}static mapCreditCard(e){var t,a,o;let r=null==e||null==(t=e.anonymizedCreditCard)?void 0:t.creditCard;if(!r)return;
1let n=null!=(o=null==(a=r.creditCardNumber)?void 0:a.split("*"))?o:[],i=n.length>0?n[n.length-1]:void 0;return{id:e.id,creditCardNumber:null!=i?i:"",holder:r.holder,type:r.type,validUntil:r.validUntil}}static mapBillingAddress(e){var t,a,o;if(e)return{city:e.city,companyName:null==(t=e.companyName)?void 0:t.name,countryCode:e.country,firstName:null==(a=e.personName)?void 0:a.firstName,lastName:null==(o=e.personName)?void 0:o.lastName,postalCode:e.zipCode,street:e.street}}static mapBooking(e){return{id:(0,R.A)(),bookingId:e.booking.bookingId,creationDate:i()(),guests:this.mapGuests(e.booking.guests),rate:this.mapRate(e),room:this.mapRoom(e),wishes:this.mapWishes(e.booking.bookingWish),bookingStatus:e.booking.bookingStatus,cancellationNumber:e.booking.cancellationNumber}}static mapGuests(e){var t,a,o,r;let n=null!=(o=null==(t=e.adults)?void 0:t.map(e=>{var t,a;return{firstName:null==(t=e.name)?void 0:t.firstName,lastName:null==(a=e.name)?void 0:a.lastName,extraBed:e.extraBed}}))?o:[],i=null!=(r=null==(a=e.child)?void 0:a.map(e=>{var t,a;return{firstName:null==(t=e.name)?void 0:t.firstName,lastName:null==(a=e.name)?void 0:a.lastName,age:e.age,accommodation:e.accommodation}}))?r:[];return{adult1:n.length>0?n[0]:void 0,adult2:n.length>1?n[1]:void 0,child1:i.length>0?i[0]:void 0,child2:i.length>1?i[1]:void 0}}static mapWishes(e){var t;if(!e)return;let a=null==(t=e.text)?void 0:t.text;try{let t=JSON.parse(null!=a?a:"");if(!t.customerWishes&&!e.wishes)return;return{freeText:t.customerWishes,wishes:e.wishes}}catch(t){return o.Vy.log({message:"Failed to parse booking wish text.",source:o._q.BookingDetailsMapper,error:t}),{freeText:a,wishes:e.wishes}}}static mapRoom(e){var t,a;let o=e.booking.basicBookingInformation;return{id:null!=(a=null==(t=e.roomRequest.roomNumber)?void 0:t.toString())?a:(0,R.A)(),category:o.roomConfigurationTo.roomConfiguration.roomCategory,roomEnhancements:o.roomConfigurationTo.roomConfiguration.roomEnhancements,type:o.roomType,description:o.roomDescription,descriptionDetails:o.roomDescriptionDetails,exactRoomMatching:!1,roomPictures:[]}}static mapRate(e){var t,a,o,r,n;let s=e.booking.basicBookingInformation,c=e.roomRequest.occupancy,E=e.booking.bookingConfiguration,R=e.booking.rates[0],p=new Date(s.cancelDeadline),m=(0,l.AC)(p,new Date)>0,N=("TRUE"===s.cancellable||"CANCELLED"===e.booking.bookingStatus)&&(m||R.cancelFee<=0),A=null!=(o=({TRUE:!1,FALSE:!0,UNKNOWN:void 0})[s.bookingDepositRequired])?o:void 0,T="STANDARD"!==E.reservationType,_="GUARANT_WITH_CREDIT_CARD_AND_CVV"===E.reservationType,O=!T&&["GUARANT_WITH_CREDIT_CARD_AND_CVV","GUARANT_WITH_CREDIT_CARD"].includes(E.reservationType),I=null!=(r=null==(t=s.meal.meal)?void 0:t.type)?r:"UNKNOWN",C=null!=(n=s.meal.availability)?n:"NOT_AVAILABLE",h=C===d.J.Inclusive,S=[];N&&S.push(u.s.FREECANCELLATION),A&&S.push(u.s.NOPREPAYMENT),h&&S.push(u.s.BREAKFASTINCLUDED);let v=s.offerLabel.corporateDiscountPossible||s.businessTravellerDiscount<100;return{id:s.id,offerId:s.id,totalPrice:s.totalPrice,totalPriceIncludingBreakfast:s.totalPriceIncludingBreakfast,totalUndiscountedPrice:s.totalUndiscountedPrice,pricePerNight:s.pricePerNight,arrival:i()(s.dateRange.fromDate).toDate(),departure:i()(s.dateRange.toDate).toDate(),pricePerNightIncludingBreakfast:s.pricePerNightIncludingBreakfast,description:R.customerDescription,rateType:R.type.rateType,freeCancellation:N,cancellationDescription:s.cancellationDescription,cancelDeadline:p,cancelFee:s.cancelFee,isModifiable:"TRUE"===s.modifiable&&"HRS"===s.crsType,deposit:s.bookingDeposit,noPrepayment:A,creditCardRequired:T,guaranteePossible:O,cvvRequired:_,breakfastPrice:null==(a=s.meal.meal)?void 0:a.price,mealAvailability:C,mealType:I,crsType:s.crsType,showPromoLabel:!1,tariffType:s.tariffType,rateAmenities:S,filtered:!1,availCount:1,totalAvailCount:9,isBusinessRate:s.tariffType.toLocaleLowerCase().startsWith("business"),isBusinessRateAvailable:v,crsDescription:R.description,loyaltyPoints:s.loyaltyPoints,defaultTaxes:"HRS"!==s.crsType,taxes:this.mapTaxes(s.taxAndFeeSettings),occupancy:g.X.mapOccupancy(c),requestLanguage:e.booking.customerLanguage,upgrades:{breakfast:!1,cancellation:!1,creditCardRequired:!1,meal:!1,prepayment:!1},downgrades:{breakfast:!1,cancellation:!1,creditCardRequired:!1,meal:!1,prepayment:!1},breakfastUpgradeIsMoreExpensive:!1,isBasicRoomOffer:!1,forLoggedInCustomers:!1}}static mapTaxes(e){let t=[];return e&&e.length>
10&&e[0]&&e[0].taxesAndFees&&e[0].taxesAndFees.forEach(e=>{var a,o;((null==(a=e.value)?void 0:a.absoluteValue)||(null==(o=e.value)?void 0:o.percentagedValue))&&t.push({type:e.type,chargeUnit:e.chargeUnit,included:"VISITOR_TAX"!==e.type,percentageValue:e.value.percentagedValue,absoluteValue:e.value.absoluteValue,currency:e.value.currency})}),t}}class m{static async getAll(e,t){let a=(null==t?void 0:t.arrivalDateTo)||i()().add(3,"years").format("YYYY-MM-DD"),o=(null==t?void 0:t.arrivalDateFrom)||i()().subtract(1,"year").format("YYYY-MM-DD"),n="".concat(r.T.apiConfig.bookEndpoint,"/v1/bookings?filterByBrand=true&arrivalDateFrom=").concat(o,"&arrivalDateTo=").concat(a),c="getAll";return fetch(n,{method:"GET",redirect:"follow",headers:{"Content-Type":"application/json","Accept-Encoding":"gzip","x-client-id":(0,s.Jf)(),Authorization:"Bearer ".concat(e)}}).then(async e=>{let t=(0,s.df)(e);if(!e.ok)return void m.logFailedToFetchResponse(e,n,c,t.hrsTraceId,t.hrsRequestId);let a=await e.json();return{hrsTraceId:t.hrsTraceId,hrsRequestId:t.hrsRequestId,getBookingsReponse:a}}).then(e=>e).then(e=>{try{return e.getBookingsReponse}catch(t){m.logException(t,n,c,"map",e.hrsTraceId,e.hrsRequestId);return}}).catch(e=>{m.logException(e,n,c,"general")})}static async getDetails(e,t,a,o){let n=1e15*Math.random(),i="".concat(r.T.apiConfig.bookEndpoint,"/v1/bookings/").concat(e,"/details?r=").concat(n);o&&(i="".concat(i,"&accessCode=").concat(o));let c=new Headers;return c.append("Content-Type","application/json"),c.append("Accept-Encoding","gzip"),c.append("x-client-id",(0,s.Jf)()),c.append("x-client-language",(0,s.Op)(t)),a&&c.append("Authorization","Bearer ".concat(a)),fetch(i,{method:"GET",redirect:"follow",headers:c}).then(e=>e.ok?e.json():(m.logFailedToFetchResponse(e,i,"getDetails"),404===e.status)?"NOT_FOUND":void 0).then(e=>e).then(e=>{try{let t=p.map(e);return this.handlePayIssueWorkaround(t)}catch(e){m.logException(e,i,"getDetails","map");return}}).catch(e=>{m.logException(e,i,"getDetails","general")})}static async addToHistory(e,t,a){let o="".concat(r.T.apiConfig.bookEndpoint,"/v1/bookings/add-to-history/").concat(e,"?accessCode=").concat(t);return fetch(o,{method:"PUT",redirect:"follow",headers:{"Content-Type":"application/json","Accept-Encoding":"gzip","x-client-id":(0,s.Jf)(),Authorization:"Bearer ".concat(a)}}).then(async e=>{if(e.ok)return"SUCCESS";let t=(await e.json()).message;return t?t.includes("has already a person id")?"LINKED_TO_ANOTHER_ACCOUNT":t.includes("is not booked")?"CANCELLED":"GENERAL_ERROR":"GENERAL_ERROR"}).catch(e=>(m.logException(e,o,"addToHistory","general"),"GENERAL_ERROR"))}static logFailedToFetchResponse(e,t,a,r,n){e.text().then(i=>{o.Vy.error(i,{source:o._q.BookHistoryService,technicalError:"true",status:e.status,type:e.type,url:t,hrsTraceId:r,hrsRequestId:n,method:a,step:"fetch"})}).catch(e=>o.Vy.error(e,{source:o._q.BookHistoryService,method:a,hrsTraceId:r,hrsRequestId:n,step:"fetch"}))}static logException(e,t,a,r,n,i,s,c,l){o.Vy.error(e,{source:o._q.BookHistoryService,technicalError:"true",status:-2,url:t,method:a,step:r,stepDetail:l,hrsTraceId:n,hrsRequestId:i,bookingTaskId:s,requestCounter:c})}static async handlePayIssueWorkaround(e){if(!e||"BTC_PAY"!==e.smartPayType&&"PAPERLESS_BTC_PAY"!==e.smartPayType)return e;let t=await c.getPaymentMethods(e.accessCode,e.processNumber);
1return e.creditCard=void 0,1!==t.length||(e.creditCard=t[0]),e}}}}]);

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